1
距離を調べる
画像の距離(奥行き)の知覚
1枚の画像中に写っている物体の奥行き・前後関係について,人間は見ればすぐに分かる.
→物の見方についての知識があるため.
機械(コンピュータ)では,1枚の画像のみから奥行きを認識することは難しい.
しかし,人間でも,片目のみでは,両目の場合よりも奥行きを認識することは難しくなる.
2
人間の目が2つある理由左右の目では,物の見え方が異なる.•右目では,より左側に,左目では,より右側に物が見える.(そのずれを,「視差」と呼ぶ)
•遠くの物の視差は小さく,近くの物の視差は大きい.
→これにより,人間は物体の奥行き・前後関係を,より正確に把握することができる.(物体の奥行き知覚は,これ以外のこと(目のピント調節機構等)も関係している)
機械の場合も,2台以上のカメラで画像を撮影することで,(人間よりも正確に)奥行き・距離を検出することができる.
右目の画像左目の画像
3
画像と空間の関係
透視変換
焦点(ピンホール)
撮像面
レンズ 撮像面 (CCD)
焦点
単一凸レンズモデルピンホールカメラモデル
X
YZ x
y
O
P(X,Y,Z)
p(x, y)
焦点距離 f視点(焦点)
光軸
fZ
Yy
fZ
Xx
• 距離 Zが大きく(遠く)なる程,(x, y)は小さくなり,Z が小さく(近く) なる程,(x, y) は大きくなる.
• 画像1枚だけでは,(x, y) から,(X,Y,Z) を求めることは不可能.
4
ステレオ画像(両眼ステレオ法)2台のカメラを左右に並べて画像を撮影.3次元空間中の点 P(X,Y,Z) は,左カメラ画像上 ,右カメラ画像 に投影されているとする.(左右のカメラの光軸が平行で,焦点距離が同じであれば,投影点の y座標は同じになる.)
3次元座標P(X,Y,Z) の算出
),( yxp ll
),( yxp rr
bxx
yY
bb
xx
xX
bxx
fZ
rl
rl
l
rl
2
X
Y
ZOl
fOr
),( yxp ll
),( yxp rr
P(X,Y,Z)
lx rx
b/2 b/2
P(X,Z)
b: 基線長(2つの視点間の距離)
: 視差rl xx
視差を求める左の画像中の各点について,右の画像中での対応する点を求めれば,写っている物体までの距離や形状を求めることができる.
実は,左右の画像間での対応点を正確に求めることが最も難しい.
対応点の算出方法→ブロックマッチング(テンプレートマッチング)1. 左画像のある対象画素を中心としたブロックを決める.2. そのブロックを右画像上で左右に動かしてマッチングを行う(ブロック同士の類似度を求める)
3. 最もマッチする(類似度が高い)位置を対応点とする.4. 上記の操作を左画像上の全ての点について行う.
rxlx lx
を探索左画像 右画像
6
類似度の計算方法
•差の絶対値の和 (SAD (Sum of Absolute Difference))
0 に近くなる程,類似度は高く,大きくなる程,類似度は低い.計算は速いが,左右の画像間で明るさが異なると間違った結果になる.
•相関係数
1 になる程,類似度は高く,-1 になる程,低い.計算に時間がかかるが,左右の画像間で明るさが多少異なってもマッチングが可能.
i j
jirjil ydxxfyxf ),(),(
i j
rjir
i j
ljil
i j
rjirljil
fydxxffyxf
fydxxffyxf
22
),(),(
),(),(
距離画像
求められた距離の値を,明るさで表わした画像
距離と視差は反比例の関係があるので,視差の分布を求めても,ほぼ同じ結果.
距離(視差)の算出結果とパラメータの関係
•マッチングを行う時のブロックの移動量大きくすると,間違ったマッチング結果になりやすい.小さくすると,正しい結果になりやすいが,時間がかかる.
•ブロックの大きさ小さくすると,間違ったマッチング結果になりやすい.大きくすると精度は向上するが,時間がかかる.
8
ステレオ法の問題点と解決策視差(対応点)が求められない場合•模様がない領域類似度が高い部分が多く出るため,マッチング箇所を誤りやすい.
•周期的な模様この場合も,類似度が高い部分が多く出るため,マッチング箇所を誤りやすい.
•オクルージョン(隠れ,隠蔽)物体の端の部分等は,一方の画像では写っていても,他方では写っていない場合がある.そのような場合では対応点を見つけることができない.
解決策•カメラの配置を増やす左右と上下に配置(三眼視),より多くの位置に配置(マルチベースラインステレオ)
•カメラ間の位置や焦点距離の算出,レンズ歪みの補正も必要
その他の距離・形状計測方法(1)
9
近赤外線プロジェクタ 近赤外線カメラRGB カメラ
• Kinect, Xtion, 3D Sense
赤外線プロジェクタから,特定のパターンを物体表面に投影し,それを赤外線カメラで撮影.その画像中のパターンと投影パターンとの対応を求め,距離を計測.色を得るためには,通常のカメラも必要.
Kinect
Xtionhttp://cubify.com/en/Products/Sense
その他の距離・形状計測方法(2)
10
•レーザーレンジファインダレーザー光線を物体表面に当て,反射して戻ってくるまでの時間を計測し,装置から物体表面までの距離を求める.レーザー光線を様々な方向に向ける必要があるが,現在は,高速な計測が可能.色を得るためには,通常のカメラも必要.
• Shape from Shading, Photometric stereo法物体表面に対し,様々な方向から光源を当てて画像を撮影し,物体表面の明るさの変化から形状を求める.色や光沢も同時に求めることが可能.
11
ステレオ法と3Dテレビ
•ステレオ法:2台(以上)のカメラで撮影した画像から,3次元情報(X,Y,Z)を求める.
• 3Dテレビ:何らかの方法で,人間に右目用の画像と左目用の画像を提示する.(それを見た人間が頭の中で奥行き感,立体感を感じる.3次元情報を求めたり,表示したりしている訳ではない.)
※ステレオ法での撮影方法は,3Dテレビで表示する画像の撮影方法と同じ.
右目画像左目画像
3Dテレビでの映像提示方法
専用眼鏡を用いる場合
•偏光フィルター方式左右の画像を偏光が異なる光で投影する.眼鏡の左右は異なる向きの偏光板を取り付けており,それぞれ対応する画像のみ通過させる.眼鏡は軽く安価.映画館向け.
•アクティブシャッター方式左右の画像は,テレビから交互に表示される.一方,眼鏡は液晶パネルでできており,テレビからの表示に同期して,左右の一方を透明に,もう一方を暗くすることで,対応する画像のみを見せるようにする.眼鏡はやや大掛かりで高価になりやすい.現在の3Dテレビは,この方式が多い.
13
眼鏡無し(裸眼)の場合•レンチキュラー方式•パララックスバリア方式いずれも,まず,左右の画像を,細長い縦長の短冊上に分割し,左右交互に配置した画像を表示する.レンチキュラー方式では,レンチキュラーシートと呼ばれる,細長いかまぼこ状のレンズを並べたようなシートを画像の前に配置し,分割された画像を左右それぞれの特定の位置で結像させる.パララックスバリア方式では,左右交互に配置した画像を,スリットを通して見ることで,右の画像のみ,左の画像のみをそれぞれの目で見る.(スリット自身を,画像と重ねた別の液晶パネルで実現することで,3D,2Dの両方に対応した表示パネルにすることができる)いずれも,裸眼で可能であるが,特定の位置に両目が配置されないと,立体的に見えない.また,横方向の解像度が,通常の半分またはそれ以下になるという問題もある.
関数とサンプルプログラムの説明
ip.cpp
• ipStereoDispCor():視差画像の算出:モノクロ画像, 相関係数による類似度
• ip13-1_main.cpp:ステレオ法による視差画像の算出画像データ:st-l1.bmp(左画像), st-r1.bmp(右画像)を使用.• ipStereoDispSAD():視差画像の算出:モノクロ画像,差の絶対値の和による類似度(問題用)
• ipStereoDispColorSAD():視差画像の算出:カラー画像,差の絶対値の和
による類似度(問題用)
14
問題
15
•問題13-2ipStereoDispColorSAD()の類似度計算部分を作成し,カラーのステレオ画像について,視差を求められるようにしなさい.なお,main()関数では,画像読み込み時にカラーで読み込むように変更しておくこと.
•問題13-1ipStereoDispSAD() の類似度計算部分を作成し,視差を求められるようにしなさい.( ipStereoDispCor()よりも計算時間が短くなっていることも確認しておくこと)