画像応用数学特論

武田 涼平

2013/12/13課題:階層グラフカットでステレオ
〆切:1月15日18:00
1.以下のサイトから画像をダウンロードし、好きな画像ファイルフォーマットに変換する.
  http://vision.middlebury.edu/stereo/data/
2.対応する2枚のステレオペア画像ファイルを読み込み、
 α拡張アルゴリズムを使ってステレオマッチングを行い、
 視差を画像ファイルにして出力するプログラムを作成せよ.
3.対応する2枚のステレオペア画像を読み込み、
 階層グラフカットアルゴリズムを使ってステレオマッチングを行い、
 視差を画像ファイルにして出力するプログラムを作成せよ.
4.α拡張でのステレオと階層グラフカットでのステレオとの速度・制度を比較せよ.

開発環境
OS Windows7
コンパイラ VisualStudio2012 for Desktop
CPU intel corei7
ソースコード source.zip

α拡張アルゴリズム
1.左視点画像と右視点画像を入力画像とする.
2.左視点画像の視差を求めることにし、視差の初期値をブロックマッチングにより求める.
3.視差が更新されなくなるまで以下を繰り返す.
  4.αを0〜最大視差まで以下を繰り返す.
  5.グラフを以下のように作成する.
  

  6.データコストを以下のように設定する.
  

  7.スムーズコストを以下のように設定する.
  

  8.最小カットアルゴリズムを適用する.
  9.グラフカットの結果より、視差の更新を行う.
10.求まった視差を結果とする.


階層グラフカットアルゴリズム
1.左視点画像と右視点画像を入力画像とする.
2.左視点画像の視差を求めることにし、視差の初期値をブロックマッチングにより求める.
3.各階層のαを以下のように決める.

4.視差が更新されなくなるまで以下を繰り返す.
  5.階層を0〜log2(最大視差)まで以下を繰り返す.
  6.グラフを以下のように作成する.
  

  7.データコストを設定する.
  α拡張と同様だが、各画素におけるα値を現在の階層の中で一番近いα値とする.
  8.スムーズコストを設定する.
  α拡張と同様だが、各画素におけるα値を現在の階層の中で一番近いα値とする.
  9.最小カットアルゴリズムを適用する.
  10.グラフカットの結果より、視差の更新を行う.
10.求まった視差を結果とする.

実験結果

図1:左視点画像                            図2:右視点画像


図3:ブロックマッチング                  図4:α拡張アルゴリズム                 図5:階層グラフカットアルゴリズム


図6:左視点画像                            図7:右視点画像


図8:ブロックマッチング                  図9:α拡張アルゴリズム                 図10:階層グラフカットアルゴリズム


図11:左視点画像                           図12:右視点画像


図13:ブロックマッチング                  図14:α拡張アルゴリズム                 図15:階層グラフカットアルゴリズム


図16:左視点画像                           図17:右視点画像


図18:ブロックマッチング                  図19:α拡張アルゴリズム                 図20:階層グラフカットアルゴリズム


計算時間
画像 α拡張[min] 階層的グラフカット[min]
Cloth 17 2
Bowl 17 2
Tedy 33 4
Aloe 30 4

比較
精度について、α拡張アルゴリズムと階層的グラフカットはほぼ同様な結果となった.
また、初期値として与えたブロックマッチングよりもなめらかな結果になり精度がよくなっった.
速度については、α拡張アルゴリズムに比べ、階層的グラフカットの方が早い結果となった.