画像応用数学特論第6回レポート
知能工学専攻画像メディア工学研究室
高木勇一郎
実験環境
OS
CentOS 5.2
CPU
intel Core 2 Duo
プログラミング言語
C言語
コンパイル方法と実行方法
コンパイルにはLinuxのターミナル上で,以下のコマンドによりコンパイルする.
g++ kaisou_graphcut.cpp graph.cpp maxflow.cpp -o kaisou_graphcut
作成されたプログラムkaisou_graphcutの実行方法は以下のコマンドを入力する.
./kaisou_graphcut
画像形式はppm形式でそれぞれのファイル名は左から撮影した画像は"left.ppm", 右から撮影された画像は"right.ppm"で固定され,変更するとプログラムが正常 に動作しない.
課題内容
階層グラフカットによるステレオマッチングを行い,通常のステレオマッチング より,精度の向上を目指す.
アルゴリズム
1.2つの視点から撮影した画像を2枚読み込む.
2.画像をグレースケールに変換する.
3.通常のステレオマッチングにより,ラベル(視差)の初期値を決める.
4.階層的に繰り返す回数を2log_2(最大視差)より求める.
5.階層ごとに調査するラベル(視差)を計算する.
6.グラフを作成し初期化する.
7.各画素に対してノードを作成し,データコストを設定する.
8.各画素間にノードを作成し,データコストとスムーズコストを設定する.
9.最大流,最小カットアルゴリズムを適用する.
10.階層ごとに計算されたラベルの中で,最大流最小カットより求められた視差 に最も近い値を新しいラベル(視差)を新しいラベルとして設定する.
11.総コストを計算し,ユーザーが与えた値より小さければループを抜ける.
12.グラフを削除する.
13.5〜12を繰り返す.
14.視差を画素値とした視差画像を出力する.
結果
図 に入力する二つの視点から撮影した画像を示す.図 2枚の入力画像から階層グ ラフカットによるステレオマッチングを行い,作成した視差画像を示す
図1.1 入力画像1
図1.2 入力画像2
図2 通常のステレオマッチングによる視差画像
図3 階層グラフカットによるステレオマッチングの視差画像
考察
図2の通常のステレオマッチングが階層グラフカットによるステレオマッチング を行うことで,物体と物体の堺目の部分をより詳細にマッチングできていること が図3より分かる.