処理手順
- Undistortionする(画像の歪みを消す)
- Stereo Rectificationする(右と左の画像が高さが同じになるように調整)
- 平滑化する(Noiseのフィルタリングや輝度値を左右で合わせるなど)
- costの計算方法
- matching方法
4.costの計算方法
[SAD(Sum of Absolute Difference)
]( https://algorithm.joho.info/image-processing/template-matching-sad-ssd-ncc/')1pixel毎のintensityの差を画像全体で足し合わせたもの
SSIM(Structure Similarity)
intensityの平均値と標準編が右の画像と左の画像が同じであれば、SSIMは1になる。もし平均値または標準偏差が左右で近くなければ、SSIMは0に近づく。
Cost = α*SSIM + (1-α)SAD
*α(0~1)
5.matching方法
ある右の画像のblock(WxH)を抜き取る。0からMaxDisparity(任意の値)まで1pixelずつblockをずらしながら、左の画像の対応箇所と比べてマッチングコストを計算する(SAD,SSIMなど)。一番コストの低かったDisparityを最終的なDisparityとして用いる。
-
pixel毎のコストを計算する
右の画像と左の画像の対応するwindow(block)のマッチングコスト(SAD,SSMI,ハミング距離etc)を計算する。
右の画像を横にshiftさせながら同じくマッチングコストを計算する。これを画像全体で行う。出力はWxHxDの3
次元になる(すべてのpixelはMaxDisparity個の値を保持している)
*ここで最小のマッチングコストを出力した場合Block Matchingと同じ結果になる -
smoothing
一つ前(隣)のpixelとのdisparityは同じであると仮定する。
d=d => Penalty=0
d=d+1 => Penalty=P1
d=d-1 => Penalty=P1
d=i => Penalty=P2
基本的に周辺(隣り合う)pixelのDisparityは同じはず。 -
動的計画法により8方向からスキャンする
2を8方向から行い足すことによってsmoothingしながら、WxHxDのコストマップが完成する -
Disparityを求める
コストが一番小さいDisparityを最終結果として用いる(winner-takes-all)