画像応用数学特論 12/13課題  浜岡裕之

アドレス:hamaoka@ime.info.hiroshima-cu.ac.jp

提出日20131216

 

階層グラフカットによるステレオ

階層グラフカットによる視差画像を生成するプログラムを作成し,α拡張によるステレオと階層グラフカットによるステレオの結果を比較する.

 

ソースファイル

α拡張

stereobygcalpha.cpp

階層グラフカット

stereobyhgc.cpp

 

アルゴリズム(階層グラフカット)

For p=全てのピクセル

=初期値

end for

A={{0}…{3…63}}

E=とても大きな値

for ループ=0からとても大きな値

success=0

for i=011

グラフの初期化

全てのノードの追加

for p=全てのピクセル

              A[i]のうちに最も近い値をに設定

              ノードのソース側に,シンク側にを設定

end for

for (p,q)=すべての隣接点

              A[i]のうちに最も近い値をに設定

              A[i]のうちに最も近い値をに設定

              ノードaのソース側に,シンク側にに設定

              もし,の場合

                            ノードaからノードpへのエッジの重みを10000

                            ノードaからノードqへのエッジの重みを10000

                            ノードpからノードaへのエッジの重みに

0のうち大きい方を設定

                            ノードqからノードaへのエッジの重みに

0のうち大きい方を設定

              もし,の場合

                            ノードpからノードqへのエッジの重みを10000

                            ノードqからノードaへのエッジの重みを10000

                            ノードaからノードqへのエッジの重みに

0のうち大きい方を設定

                            ノードaからノードqへのエッジの重みに

0のうち大きい方を設定

end for

                            最大流・最小カットアルゴリズムの適用

                            E’=求まったラベルで計算した総コスト関数

                            E’<Eなら現在のラベルを求まったラベルにし、E=E’にし、success=1 

                            グラフの消去

              end for

              もしsuccess==0ならループを脱出する

end for

 

 

データコスト

SAD

または

・相関

 

スムーズコスト

cは定数または

 

環境

OS:windows7

開発環境:visual studio 2010 Express

CPU:Intel Core i5  2.60GHz

メモリ:4GB

使用ライブラリ:maxflow  openCV 2.4

 

 

 

 

 

 

実験結果

今回の入力画像は以下のサイト内の2001 datasetsTsukubaを使用した.

http://vision.middlebury.edu/stereo/data/

 

この画像を入力画像とし,

・α拡張(SAD ペナルティ:c=1)

・階層グラフカット(SAD ペナルティ:c=1)

・階層グラフカット(相関 ペナルティ:c=1)

・階層グラフカット(SAD ペナルティ: T=80 c0=1 c1=10)

この4つのパラメータで実験を行った.

以下に結果を示す.なお,視差画像は値を定数倍することで見やすくしている.

 

 

scene1.row3.col3

scene1.row3.col4

scene1.row3.col3()

scene1.row3.col4()

1 入力画像

 

サイズ3×3

サイズ7×7

サイズ11×11

2 α拡張 SAD ペナルティ:c=1

 

サイズ3×3

サイズ7×7

サイズ11×11

3 階層グラフカットSAD ペナルティ:c=1

 

 

サイズ3×3

サイズ7×7

サイズ11×11

4 階層グラフカット 相関 ペナルティ:c=1

 

 

 

1 処理時間

 

サイズ3×3

処理時間()

サイズ7×7

処理時間()

サイズ11×11

処理時間()

α拡張 SAD ペナルティ:c=1

27(13)

45(22)

84(41)

階層グラフカットSAD ペナルティ:c=1

50(16)

66(21)

90(30)

階層グラフカット 相関 ペナルティ:c=1

68(16)

60(20)

86(28)

(かっこ内は1ループの平均時間)

 

 

 

 

 

(処理時間: 108秒 平均17)

サイズ3×3

5階層グラフカットSAD スムーズコスト T=80 c0=1 c1=10

 

 

 

考察

2と図3より,α拡張と比べて階層グラフカットはすべての値と比較しているわけではないので精度が落ちている.また,表1より1ループ平均の処理時間は階層グラフカットのほうが良いが,収束するまでのループ回数が増えてしまったので全体の処理時間は悪くなった.

次に階層グラフカットにおけるSADと相関を使った場合を比較する.図3と図4より,サイズ7×7サイズ11×11の場合,相関はSADに比べ前景の像とライトの部分にノイズが多い.これらは輝度が滑らかに変化する場所である.相関は平均値との輝度の差でコストを計算するので,場所が変化してもコストに影響を与えにくく,ノイズが増加したと考えられる.

5のエッジを考慮したスムーズコストを使用した場合,ノイズが残っているものの,ペナルティが定数の場合に比べて精度は上昇した.tukubaのデータでは物体の端とエッジが一致していない場所が多いのでノイズを取りきれなかったと考えられる.