はじめに 1年ちょっとぶりにブログ更新しました、お久しぶりです さて、去年12月にOpenCVの最新バージョンであるOpenCV 4.2.0がリリースされました そのChange Logをみると嬉しい更新が DNN module: Integrated GSoC project with CUDA backend: #14827 DNN…
はじめに OpenCVのサンプルコードを使って、Enet(Semantic Segmentationのモデル)を試してみました はじめに Enetとは ビルド 学習済みモデルのダウンロード 実行 結果 おわりに Enetとは [1]で提案されている、Semantic Segmentationのネットワークです リ…
はじめに C++における実装の隠蔽やインクルード依存削減についての話です おそらく過去に何度も議論されていて何番煎じのネタかわかりませんが、自分にとっての気づきだったので書いておきます Pimplイディオムといえば… クラスに「Impl」という実装担当クラ…
はじめに この1年は仕事に没頭してました 去年の4月に初めてPLを務めた案件があって、ようやく一区切りついたところです ブログを書く気力はなかったのですが、趣味でコードは書いてました(笑) そこで今回はこの1年で更新or新規に書いたコードを簡単に紹介し…
Halideという画像処理向けのプログラミング言語を始めるべく Visual Studio 2015でHalideの環境構築をしてみました 今回はその手順について紹介します はじめに やること 事前に必要なもの ソースの入手 Halid LLVMとClang ビルド LLVMのビルド Clangのビル…
はじめに 以前Stixel Computationを実装してみたで紹介したStixelですが 今回はその発展形である、Multi-Layered Stixelを実装してみました 概要 Stixelとは、Daimlerが研究しているステレオカメラによる障害物検出の手法です 画像を幅5~10ピクセル程度の細…
はじめに 小ネタです cv::Matが多次元に対応しているのを知ったのでメモ 作り方 多次元Matのコンストラクタがこちら(mat.hppより抜粋) ndimsで次元数を、sizesで各次元の長さを、typeで要素の型を指定します /** @overload @param ndims Array dimensionalit…
はじめに kd-treeを実装してみました 最近仕事でよく使うので勉強がてら kd-treeとは 最近傍探索を効率的にできるデータ構造です kd木 - Wikipediakd-treeが使えるライブラリとしてはFLANNやPCLが有名どころでしょうか ソースコード 以下に公開してあります …
四則演算ラスト! 今回は除算編です アーキテクチャによる違い 32bit ARM 32bit ARMには除算を直接行うSIMD命令がないため a/bという除算を行う場合、まず逆数を計算するSIMD命令によってbの逆数を計算し これをaと掛け算することによって除算を表現します 6…
6D-Visionについて調べてみたで紹介したStixelですが ちまちまと実装を重ね、ようやくひと段落したので公開することにしました ソースコード github.com デモ 物体上に出てる棒のようなものがStixelです 入力の視差はOpenCVのStereo SGBMで計算していますyou…
今回は乗算編です 特に変わった内容はありません 乗算 vmul[q]_<type>(va, vb) 64bit(qが付く場合は128bit)のベクタvaとvbの乗算 サンプル 符号付き16bit整数ベクタの乗算をしてみます #include <stdio.h> #include <stdint.h> #include <arm_neon.h> int main() { int16_t a[4] = { 1, 2, 3, 4 };</arm_neon.h></stdint.h></stdio.h></type>…
年内に終わるかな? 今回は減算編です 減算 (通常の減算、符号拡張付き減算、飽和付き減算) 加算編で紹介したものとほぼ変わらないので、まとめて紹介 vsub[q]_<type>(va, vb) 64bit(qが付く場合は128bit)のベクタvaとvbの引き算 vsubl_<type>(va, vb) 64bitのベクタvaとv</type></type>…
以前の記事で紹介したFree Space Computationですが 実装がひと段落したので公開することにしました ソースコード github.com デモ free space(走行可能領域)の推定結果を赤で塗ってます まあなんとなく計算できてるような…? なお、実際の処理時間は動画ほ…
四則演算編の予定でしたが、量が多いので分割することにしました 今回は加算編です 加算 vadd[q]_<type>(va, vb) 64bit(qが付く場合は128bit)のベクタvaとvbを足します 戻り値のサイズは入力のサイズと同じです サンプル 符号付き16bit整数のベクタvaとvbをvadd_s1</type>…
ロード vld1[q]_<type>(ptr)はptrから64bit(qが付く場合は128bit)のベクタをロードします サンプル 符号付き16bit整数のベクタをロードしてみます ロードしたベクタの各レーンをvget_lane_s16()で取得し、表示してみます #include <stdio.h> #include <stdint.h> #include <arm_neon.h> int main()</arm_neon.h></stdint.h></stdio.h></type>…
今年の6月頃からCUDA 8.0 RC(Release Candidate)は出てたのですが このたび正式なCUDA 8.0がリリースされたようです CUDA Toolkit | NVIDIA DeveloperParallel Forall Blog - Nvidiaでも紹介されていて 個人的に嬉しかったのがVisual Studio 2015 Update 2以…
組み込み関数一覧 こちらのページにNEONの組み込み関数一覧が載ってます 慣れてきたらここから必要な演算を探すと良いでしょう infocenter.arm.com 命名規則 NEONの組み込み関数は大抵のものが以下の規則で名前が付けられています <opname>[q]_<type><opname>はvaddやvmul等、演算</opname></type></opname>…
NEONデータ型の概要 NEONのデータ型は以下の規則で名前が付けられています <type><size>x<number of lanes>_t例えば、 int16x4_t は符号付き16bit整数を4個保持する型となります それぞれの要素を「レーン」と呼びますNEONのデータ型は64bitのものと128bitのものがあります NEONデータ型一</number></size></type>…
はじめに ここ最近、NEON(ARMのSIMD命令)を使ったプログラムを初めて書きました NEONについて調べていて思ったのが、NEONの使い方を初心者向けに 日本語で説明したページがあまり見当たらないということ そんなわけで、自分なりにNEONの使い方をまとめておこ…
最近の私はIDE(Visual Studio、Eclipse)を中心に開発することが多かったのですが 休日は久々にvimで遊びました というわけで(?)、現在私が使っているvimプラグインをご紹介します 私は普段c++を使うことが多いので、c++向けの設定も入ってます 目次 目次 プ…
以前の記事で紹介したStixelのアルゴリズムに登場する Free Space Computationを実装しようと頑張ってます Free Space Computationとは 視差画像をもとにシーンのFree Space(移動可能な領域、路面)を推定する手法です 推定結果のイメージです(赤く塗った領域…
EISATS | Reinhard Klette: CCVというコンピュータビジョン向けのデータセットがありまして EISATS The .enpeda.. Image Sequence Analysis Test Site (EISATS) offers sets of image sequences for the purpose of comparative performance evaluation of s…
車載ステレオカメラによる画像認識技術「6D-Vision」について調べてみました 6D-Visionとは 6D-Visionとは自動車メーカーのダイムラー(Daimler AG)が開発している 自動運転のための画像認識技術です メルセデス・ベンツの資料に 2012 年からは、メルセデス・ …
勉強のためにMean-shift Trackingを実装してみました ソースコード 以下に公開してあります github.com 参考 実装の際に参考にしたのはOpenCVのCamShiftのサンプルコードと こちらのintelの論文です http://opencv.jp/opencv-1.0.0_org/docs/papers/camshift…
WindowsにOpenCVとVisual Studioをインストールして画像処理を始めましょう OpenCVとVisual Studioのバージョンは2016年7月時点で最新のものを選びました やること OpenCV 3.1のインストール・設定 Visual Studio 2015のインストール・設定 CMake 3.5.2のイ…
Googleが開催するプログラミングコンテスト「Google Code Jam」の予選ラウンドに参加しました 全4問のうち、正解率の高かった2問は何とか解くことができたのですが 3問目で解答が思いつかず降参 プログラミングコンテスト、興味はあって取り組むようにし…
「字下げスタイル?コーディング作法って何?」 って感じで学生の頃はこんなコードを書いてました void func(float *a,float *b,int n){ for(int i=0; i
OpenCVで使える、色ベースのトラッキング「meanShift」と「CamShift」を紹介します! 何ができるの? 追跡したい対象の領域をはじめに指定することで、 その色情報(ヒストグラム)をもとに、対象を追跡できます 探索窓が固定なMeanShiftに対し、CamShiftは物…
わかったのはコンピュータの世界が果てしないということ たまに勉強すべきことが多すぎて呆然とする