画像応用数学特論
最終課題
提出期限 2013年 1月15日18時
知能工学専攻 画像メディア工学研究室
学籍番号
名前 谷 一眞
Mail:kazuma@ime.info.hiroshima-cu.ac.jp
課題
階層グラフカットを用いたステレオマッチング
対象画像
以下の図1に入力画像を示す.
左画像
右画像
図1 入力画像
理論
データコスト:
スムースコスト:
アルゴリズム
1.
入力画像の読み込み(2枚)
@
縦横の画素数を記憶
A
最大視差の計算
B
出力画像の初期化
2.
3.
グラフのノード数とエッジ数を決定
4.
ループ1開始(最小コスト判定用)
5.
ループ2開始(出力画像作成用)
6.
グラフの初期化
7.
ノードの連結
@
全画素に対しノードを追加,ソースとシンクと連結
A
横に隣り合う画素間にノードを追加,ソースとシンクと連結
B
縦に隣り合う画素間にノードを追加,ソースとシンクと連結
8.
maxflow を実行
@
最小コストになるまでループし,なった時ループ1を抜ける
A
出力画像の画素を書き換えループ2を抜ける
9.
画素値の正規化
10.
ファイル名決定後出力
実験方法
プログラムリンク
・コンパイルと実行方法
-階層グラフカットプログラム
・実行ファイルrealの作製
cv graph.cpp maxflow.cpp graph.h real.cpp –o real
・realの実行
./real 左画像ファイル名 右画像ファイル名
-α拡張プログラム
・実行ファイルalpha_realの作製
cv graph.cpp maxflow.cpp graph.h alpha_real.cpp –o alpha_real
・realの実行
./alpha_real
左画像ファイル名 右画像ファイル名
開発環境
-VMware PlayerによりCentOS release 5.5(ProBook4730s OS:Windows
7 )
-コンパイラ:g++ ver.4.1.2
-
C++により実装 makefile使用
-メモリ:4GB
-使用ライブラリ
-MAXFLOW
-OpenCV 1.1
実験結果
実験では,最大視差を4と32,ブロックマッチングのマスクサイズを5と8,スムーズコストのcは5,10,15で実験を行った.図2に結果の1例を示す.
図2 実行結果(最大視差4 サイズ8 c=10)
今回行った実験の結果を以下にまとめる.
結果画像については枚数が多いためすべては張らない.
表1 階層グラフカットによる実行時間
|
サイズ |
定数c |
計算時間[秒] |
5 |
8 |
15 |
32 |
5 |
8 |
10 |
36 |
5 |
8 |
5 |
35 |
5 |
5 |
15 |
32 |
5 |
5 |
10 |
29 |
5 |
5 |
5 |
40 |
2 |
8 |
15 |
9 |
2 |
8 |
10 |
9 |
2 |
5 |
5 |
9 |
2 |
5 |
15 |
6 |
2 |
5 |
10 |
5 |
2 |
5 |
5 |
7 |
考察
階層グラフカットによる視差の結果画像について背景の部分であまりうまくできていないが,プログラム自体は正常に動いていることが確認できる.
また,以下の様に定数cを大きくすれば,滑らかな画像になる.
図3 実行結果(最大視差4 サイズ5 c=5)
図4 実行結果(最大視差4 サイズ5 c=15)
今回は,差の定数倍でスムーズコストを計算し,妥当な結果が得られたと考えられる.差が大きいところでは,この定数cを小さく,小さいところでは,大きくできれば,さらにエッジのはっきりした画像が得られると考えられる.
最大視差を変えると以下の画像が得られる.
図5 実行結果(最大視差4 サイズ5 c=10)
図6 実行結果(最大視差32 サイズ5 c=10)
画像の正規化の部分で,最大視差が大きいとき暗い画像が出ている.つまり,この入力画像の視差は小さいということになる.
さらに,α拡張プログラムとの比較も行った.以下にその結果を示す.階層グラフカットで実行した条件の中で,一番時間がかかりそうなものと,一番時間が短そうなもので試した.
表2 各条件でのアルゴリズム別実行時間
アルゴリズム |
最大視差4 サイズ5 c=15 |
最大視差32 サイズ8 c=15 |
α拡張 |
5 |
36 |
階層グラフカット |
5 |
90 |
図7 階層グラフカット(最大視差4 サイズ5 c=15)
図8 α拡張(最大視差4 サイズ5 c=15)
この結果から,実行時間では,最大視差が大きいほど階層グラフカットが早いことが証明された.また,最大視差を小さく設定すると時間はあまり変わらなかった.
出力画像では,大きな差は見受けられなかった.この原因として,入力画像の視差が小さいこと,プログラムのコスト関数が簡易的なものを使っていることが考えられる.このプログラムで明確な差を出す場合は,視差の大きい画像を入力とするとよい結果が得られるだろう.
最後に,プログラム作成,レポート作成に時間がかかり,提出期限を過ぎてしまったことに関し,本当に申し訳ありませんでした.
授業を通じ,自分の研究分野以外の内容を理解でき,知見が広がったように思います.今後の学会や,研究室の他の研究を理解するのに役立てたいと思います.ありがとうございました.