アーカイブ

‘edge detection’ タグのついている投稿

Snakesによるfeature extractionの説明

2009 年 2 月 14 日 コメントはありません

都市域マッピングとは別件でSnakesによる線形オブジェクトの抽出を扱っている。パラメータの調整に関して調べているのだが,OpenCVの説明書は無学の私には意味不明。エネルギーってなんなんだよ!

研究室の人に相談したら,Snakesによる線形オブジェクトの抽出の解説として,下記論文を教えてくれた。

Road Extraction Based on Line Extraction and Snakes”, Master thesis, Computational Vision and Active Perception

Chapter 4 Theory of Snakesに解説がある。

またSnakesの大元は下記。こっちのほうがわかりやすいかも。

Snakes: Active contour models

とりあえず自分の理解した範囲でOpenCVの関数のパラメータを解釈すると,

alpha: 外部エネルギー。desired local minimumの意味がよくわかっていないが,画素値が谷になっているところ(極小点)に近づける度合いをコントロールするのだと思う
beta: 内部エネルギー。滑らかさをコントロールする。大きいと抽出結果が滑らかになる
gamma: 画像エネルギー。エッジへの近接具合をコントロールする。大きいとコントロールポイントが画像のエッジに近づく

カテゴリー: 研究 タグ: ,

OpenCVでエッジ検出するときの注意

2009 年 1 月 21 日 コメントはありません

OpenCVに実装されているCannyエッジ検出で衛星画像を処理しているとエラーが出ることがある。いろいろと検討した結果、画像サイズの素因数分解に大きな素数を持つとき、エラーになる傾向があるようだ。なお、CannyのアルゴリズムにはSobelフィルタが使われているようなので、Sobelでのエラーにも適用できると思う。

エラーが出る画像サイズ

画像1: x : 4986: 2 3 3 277; y : 4776: 2 2 2 3 199;
画像2: x: 5034: 2 3 839; y : 4836: 2 2 3 13 31;

エラーが出ない画像サイズ

画像1: x : 4968: 2 2 2 3 3 3 23; y : 4752: 2 2 2 2 3 3 3 11;
画像2: x : 5016: 2 2 2 3 11 19; y : 4794: 2 3 17 47;
画像3: x : 5052: 2 2 3 421; y: 4806: 2 3 3 3 89;
画像4: x : 5064: 2 2 2 3 211; y : 4764: 2 2 3 397;
画像5: x : 5040: 2 2 2 2 3 3 5 7; y : 4824: 2 2 2 3 3 67;
画像6: x : 5388: 2 2 3 449; y : 5112: 2 2 2 3 3 71;
画像7: x : 5064: 2 2 2 3 211; y : 4866: 2 3 811;

上記を見てみると、エラーが出ない画像サイズにも大きな素数が含まれる場合があって、正直のところ線引きがよくわからん。とりあえず僕の場合、結果が出てくれりゃそれでいいので、あまり深く考えない。

エラーが出た場合、元の画像をほんの少しサブセットしてあげればうまくいく。このとき、画像サイズが奇数よりも偶数のほうがうまくいきやすいようなので、縦横2ピクセルずつ切り詰めればOK。gdal_translateのsrcwinオプションを活用すると楽。