おぺんcv

画像処理エンジニアのブログ

近況

はじめに

この1年は仕事に没頭してました
去年の4月に初めてPLを務めた案件があって、ようやく一区切りついたところです
ブログを書く気力はなかったのですが、趣味でコードは書いてました(笑)
そこで今回はこの1年で更新or新規に書いたコードを簡単に紹介します
余力があれば個別に記事にしたいと思います…

目次

作ったもの紹介

stixel-world

github.com
視差画像から障害物を検出するアルゴリズム
以前は路面の視差モデルをカメラのピッチとカメラの高さを用いて計算していたのですが
直線フィッティングを用いて視差画像から自動で推定する機能を追加しました
これによって

  • カメラのピッチとカメラの高さがわからない
  • カメラのピッチが移動中に変動する

という状況にも対応できるようになりました
ただ、依然として路面モデルは平面を仮定してるので、曲面には対応できてません
今後曲面モデルにも対応したいですね
自動運転への注目が高まっているのか、外国の研究者の方からの質問がちょくちょくきます
まあ私は論文を読んで「こうかな?」と思って実装しただけなので、
答えられることにも限界があるのですが…

multilayer-stixel-world

github.com
画像の1列から複数の障害物を検出できるstixel-worldの進化版
こちらも視差モデルの自動推定機能を追加しました

semi-global-matching

github.com
有名な視差計算のアルゴリズム
OpenCVではcv::stereo::StereoBinarySGBMで提供されてます
OpenCV版より速いものを作ることをモチベにして実装してたのですが
かなり巧みに実装されていて、シングルスレッドでは勝てない、というか
OpenCVと同じ実装になってしまうので諦めました
そこで本作はマルチスレッドでOpenCVに勝てるように実装されています(笑)
例えば1024x333サイズの画像だと100msecくらい速いです

coarse-to-fine-patchmatch

github.com Denseなオプティカルフローを計算するアルゴリズムです
KITTIのベンチマークで40位前後の精度、かつCPU1コアで3秒くらいなので
高速化すれば実用的になるのでは、と思い興味を持ってます
実装は著者によって公開されていて、本作はOpenCVから呼び出しやすいように
再実装したものになります
patchmatch自体が面白い手法なのでどこかで紹介したいなあ…

CU-DAISY

github.com DAISYという特徴量計算をCUDAで実装したものです
前述のcoarse-to-fine-patchmatchがマッチングの特徴量としてこのDIASYを使用しており
そこそこ処理時間を食っていたのでCUDA化するに至りました
OpenCVのCPU実装より20倍くらい速いです

おわりに

とりあえず今回はこんなところで
見ての通り(?)論文読んで実装したり高速化したりするのが趣味なので
何か面白そうなネタがあったらコメントやメール下さい