実行環境
OS | Windows XP SP3 (Cygwin利用) |
コンパイラ | g++ (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) |
プロセッサ | Intel(R) Core(TM)2 Duo CPU E8600@3.33GHz (2 CPU) |
メモリ | 2 GB |
1.コンパイルと実行方法
1.必要なファイルのダウンロード
1.1.OpenCV ver1.0をインストール.
1.2.cv_cygwin.shをここからダウンロードして実行.
1.3.最大流最小カットのライブラリ(maxflow-v3.0.src.tar.gz)をダウンロード.(ここから)
1.4.コンパイル用のシェルスクリプトopencv.shとソースファイル(後述)をダウンロード.
2.解凍したmaxflow-v3.0.srcのフォルダにソースとopencv.shをコピー.
3.以下のコマンドを実行
$ opencv.sh [sourcename.cpp]
$ a.exe [imagefile]
ステレオの場合はコマンドは以下
$ opencv.sh [sourcename.cpp]
$ a.exe [leftimagefile] [rightimagefile]
対象画像はpng,jpg,bmpなど(詳細はOpenCVリファレンスを参照)
また、ステレオマッチングの場合最大視差等の変数の設定を変える必要がある。
2.α拡張アルゴリズム
◆ アルゴリズム
・変数宣言
・(出力用配列の)初期値の入力
・var E=INT_MAX(大きな数)
・0からEまでのループ
・var success=0
・var alpha を0〜255までループ
・グラフの初期化
・すべての画素ノードの追加
(エッジははらないがデータコストとスムースコストは振っておく)
・すべての隣接ノードの追加(このときに同時にエッジも足しておく)
・最大流最小カット(このときのフローをE'とする)
・E'<EならばE=E'に更新し、success=1とする
・グラフの消去
・出力用配列を出力
|
◆ 実行結果
原画像にはSIDBA標準画像からLenna,Tiffany,Mandrillを用いた
|
|
|
Lenna (512x512) | Tiffany (512x512) | Mandrill (512x512) |
実行結果(グレースケール)
2.3 ステレオマッチング
α拡張アルゴリズムを用いたステレオマッチングの結果についてはこちら。
3.階層グラフカットアルゴリズム
◆ アルゴリズム
・変数宣言
・(出力用配列の)初期値の入力
・var E=INT_MAX(大きな数)
・0からEまでのループ
・var success=0
・(推定する値が2^6未満の場合)var alpha を0〜11までループ
・グラフの初期化
・すべての画素ノードの追加
(エッジははらないがデータコストとスムースコストは振っておく)
・すべての隣接ノードの追加(このときに同時にエッジも足しておく)
・最大流最小カット(このときのフローをE'とする)
・E'<EならばE=E'に更新し、success=1とする
・グラフの消去
・出力用配列を出力
|
◆ 実行結果
実行結果(グレースケール)
◆ ステレオマッチング
階層グラフカットアルゴリズムを用いたステレオマッチングの結果についてはこちら。
|