depth from sequence

22
iPhoneで奥行き推定する プログラムを作りました 第25回CV勉強会@関東 Yuichi Takeda / @ginrou799

Upload: yuichi-takeda

Post on 05-Dec-2014

1.869 views

Category:

Engineering


2 download

DESCRIPTION

第25回コンピュータビジョン勉強会@関東での発表資料です。 http://connpass.com/event/8082/

TRANSCRIPT

Page 1: Depth From Sequence

iPhoneで奥行き推定するプログラムを作りました

第25回CV勉強会@関東 Yuichi Takeda / @ginrou799

Page 2: Depth From Sequence

iPhoneで奥行き推定するプログラムを作りました

第25回CV勉強会@関東 Yuichi Takeda / @ginrou799

iPhoneのカメラだけで動く

デプスセンサ作りました

Page 3: Depth From Sequence

自己紹介• Yuichi Takeda / @ginrou799

• CV

• コンピュテーショナルフォトグラフィ

• MIRU 2012 優秀賞

• iOS

• ミクシィでiPhoneアプリの開発

• 本も出してますhttp://goo.gl/OaLUDc

Page 4: Depth From Sequence

AndroidのLensBlur ご存知ですか?

Page 5: Depth From Sequence

LensBlur

• Android に搭載されているカメラの機能 • シーンの奥行きを推定してリフォーカス

出典 http://googleresearch.blogspot.jp/2014/04/lens-blur-in-new-google-camera-app.html

Page 6: Depth From Sequence

そのiPhone版を 作りました。

Page 7: Depth From Sequence

Depth From Sequence

iPhoneを手に持って撮影した画像シーケンスから奥行きを推定します

Page 8: Depth From Sequence

Depth From Sequence• ソースコードは公開しています。

• https://github.com/ginrou/DepthFromSequence

• C++

• 動作環境

• CMake OpenCVの動く環境

• Mac, Linux(多分)

• iOS

Page 9: Depth From Sequence

元ネタ

• 元ネタはLensBlurの元になった論文

• 3D Reconstruction from Accidental Motion (Fisher Yu et al. CVPR 2014)

• この論文をベースに実際に使えるように少し改良

Page 10: Depth From Sequence

アルゴリズム・入力画像

• 1280x720で撮影して 640x320 に縮小して処理 • 実際のデプスを計測するのは中央の320x320の領域 • 10 ~ 15枚ほどが安定している

Page 11: Depth From Sequence

アルゴリズムFeature Tracking

Bundle Adjustment

Plane Sweep

• KLT Trackerを使って特徴点追跡

最初のフレームでは150個の特徴点を追跡し、 最終フレームで70個まで減ったら失敗

Page 12: Depth From Sequence

アルゴリズムFeature Tracking

Bundle Adjustment

Plane Sweep

• Feature Trackingの結果からカメラの位置と姿勢を推定 • Bundle Adjustment • 便利ライブラリなかったので実装しました

Page 13: Depth From Sequence

アルゴリズムFeature Tracking

Bundle Adjustment

Plane Sweep

• パラメータ • 最大反復回数は 5 回 • 反復終了時に再投影エラーが 1.0 未満だと失敗とみなす

Page 14: Depth From Sequence

アルゴリズムFeature Tracking

Bundle Adjustment

Plane Sweep

•入力画像がある奥行き上にあると仮定してワーピング •ワーピング画像を積み重ね、輝度一致度で奥行きを推定

Page 15: Depth From Sequence

アルゴリズムFeature Tracking

Bundle Adjustment

Plane Sweep

•輝度一致度だけで奥行きを求めると精度が悪い •テクスチャのない箇所に弱い •グラフカットを利用して精度向上 •http://graphics.stanford.edu/projects/densecrf/ を利用

Page 16: Depth From Sequence

アルゴリズムFeature Tracking

Bundle Adjustment

Plane Sweep

•輝度一致度だけで奥行きを求めると精度が悪い •テクスチャのない箇所に弱い •グラフカットを利用して精度向上 •http://graphics.stanford.edu/projects/densecrf/ を利用

Page 17: Depth From Sequence

アルゴリズムFeature Tracking

Bundle Adjustment

Plane Sweep

•奥行き分解能は奥行きに反比例 •近いものは細かく計れるが、遠いものは粗くなる

•奥行き分解能は20~32段階くらい •分解能を上げるとメモリを圧迫する

•100MBくらい食うのでスマートフォンにはキツイ

Page 18: Depth From Sequence

iPhoneへ移植

• iOSはC++をそのまま使える

• ただそのままだと扱いづらい

• C++ / Objective-C / Objective-C++ を使い分ける

Page 19: Depth From Sequence

Objective-C/ Objective-C++ / C++

Objective-C Objective-C++ C++

• Obj-C C++ の橋渡し • UIImage と cv::Matの変換

• 非同期処理

• カメラのバッファ • UI

どう使い分けるか?

• 画像処理のコア

まずはコア部分を独立して開発

Page 20: Depth From Sequence

Objective-C/ Objective-C++ / C++

Objective-C Objective-C++ C++

• Obj-C C++ の橋渡し • UIImage と cv::Matの変換

• 非同期処理

• カメラのバッファ • UI

どう使い分けるか?

• 画像処理のコア

うまく行ったらiPhoneの部分を作るうまく行ったらiPhoneの部分を作る

Page 21: Depth From Sequence

残りの課題

• パラメータチューニング (もう少しよく出来そう)

• ステレオ法だけで挑んでみる

• CocoaPods化

• 実スケール単位での計測(1m, 2m とか実測)

Page 22: Depth From Sequence

ご静聴ありがとうございました