視差マップ
読み: しさまっぷ
ステレオ画像ペアの対応点間の水平方向のずれ (視差) を画素ごとに記録した画像。視差値から三角測量により奥行きを算出でき、3D 復元の中間表現として用いられる。
視差マップ (Disparity Map) は、ステレオマッチングの出力として得られる画像であり、各画素に左右画像間の水平方向のずれ (視差、disparity) をピクセル単位で格納する。視差 d と奥行き Z の関係は Z = f * B / d で表される (f: 焦点距離、B: 基線長)。
視差マップはグレースケール画像として可視化されることが多く、明るい画素ほど視差が大きい (カメラに近い) ことを示す。16 ビット整数やサブピクセル精度の浮動小数点で格納され、OpenCV の StereoBM/StereoSGBM は 16 倍された固定小数点値を返すため、実際の視差は出力値を 16 で割る必要がある。
- 視差と奥行きの非線形関係: 視差は奥行きに反比例するため、近距離では高い奥行き分解能を持つが、遠距離では分解能が急激に低下する。基線長 12cm、焦点距離 700px の場合、視差 1px の変化は 1m 先で約 2mm、10m 先で約 14cm の奥行き差に相当する
- オクルージョン領域: 左画像で見えて右画像で隠れる領域には正しい視差を割り当てられない。左右整合性チェック (LR consistency check) で無効画素を検出し、周囲の値で補間する
- 後処理: WLS フィルタ (Weighted Least Squares) やメディアンフィルタで視差マップのノイズ除去とエッジ保存を行う。OpenCV の
cv2.ximgproc.createDisparityWLSFilter()が利用可能
視差マップは自動運転の障害物検出、AR/VR でのシーン理解、ロボットの把持計画など、奥行き情報が必要なあらゆる場面で活用される。深度カメラ (RealSense、ZED) も内部でステレオマッチングにより視差マップを生成している。