6

私は実際に頭側の輪郭検出に取り組んでいます。写真は白い壁の前で撮影されるため、しきい値で処理された写真に対してスネーク(アクティブな輪郭モデル アルゴリズム) を実行することにしました。

問題は、ヘビが鼻、口、口の下の周りにうまくフィットしないことです (下の写真でわかるように)。

//load file from disk and apply threshold
IplImage* img = cvLoadImage (file.c_str (), 0);
cvThreshold(img, img, 170, 255, CV_THRESH_BINARY);

float alpha = 0.1; // Weight of continuity energy
float beta = 0.5; // Weight of curvature energy
float gamma = 0.4; // Weight of image energy

CvSize size; // Size of neighborhood of every point used to search the minimumm have to be odd
size.width = 5;
size.height = 5;

CvTermCriteria criteria;
criteria.type = CV_TERMCRIT_ITER;  // terminate processing after X iteration
criteria.max_iter = 10000; 
criteria.epsilon = 0.1;

// snake is an array of cpt=40 points, read from a file, set by hand
cvSnakeImage(img, snake, cpt, &alpha, &beta, &gamma, CV_VALUE, size, criteria, 0);

アルファ/ベータ/ガンマ パラメータまたは反復回数を変更しようとしましたが、以下の出力ショーよりも良い結果が見つかりませんでした。なぜ鼻がカットされ、顔が口の周りにフィットしないのか理解できません。曲率には十分なポイントがあると思いますが、いくつかの (>2) ポイントで構成された線がまだいくつかあります。

入力画像: 入力画像 - しきい値

出力スネーク :

  • 青:手動で設定したポイント

  • 緑 : 出力スネーク

出力スネーク

どんな助けやアイデアも大歓迎です。ありがとう !

4

4 に答える 4

5

自分で実装したい場合は、ジム・アイヴィンズとジョン・ポリルによる「あなたがいつもヘビについて知りたいと思っていたすべて(しかし尋ねるのが怖かった)」という論文をお勧めします。

OpenCV の実装については、よくわかりませんが、次のことをお勧めします。

  • 曲率が強くなるように、ベータを減らします

  • 画像エネルギーを確認します。関数 (スキーム) の最後のパラメーターが間違っている可能性があります。可能な値は、_CV_SNAKE_IMAGE と _CV_SNAKE_GRAD の 2 つです。私が間違っていなければ、0 に設定します。0 は _CV_SNAKE_IMAGE を意味すると思います。そのため、関数は入力画像がエネルギー画像であると想定します。繰り返しますが、OpenCV がこの関数をどのように実装しているかはわかりませんが、_CV_SNAKE_IMAGE を使用すると、関数は入力画像が勾配モジュール画像であると想定していると思います。あなたの場合、ヘビは黒い領域を避け(低勾配モジュールとして解釈されます)、明るい領域を探すことができます。したがって、_CV_SNAKE_GRAD を最後のパラメーターとして使用してみてください。

お役に立てば幸いです。幸運を!

于 2013-08-26T06:40:40.113 に答える
-2

アクティブな輪郭はただ悪いです-期間。max flow min cut は、この画像セグメンテーションの問題を簡単に解決できるようです。

私はこれがいつか前に尋ねられたことを知っていますが、私は一般的にアクティブな輪郭に激怒しています. このページは Google でトップ ヒットの 1 つです。pdes を介した等高線進化で誰かが何か役に立つことを期待して、多くの人がこの投稿を読むと思います。

真実は、アクティブな輪郭にはかなりの人間の介入が必要であり、不自然なエッジ強度または非常に高いコントラストがある場合にのみ機能するということです.

興味のある博士号またはポスドクの場合は、何か他のものを見つけてください。衝撃的な結果でハードビバを保証します。一見優れた等高線モデルは存在しますが、ソース コードが利用可能になることはありません。たとえば、レベル セット内の一般化された gvf です。

すべての (バイナリ) セグメンテーションの問題は、有向グラフに分解できます。将来の雇用主と試験官は私に感謝します。アクティブな輪郭に時間を無駄にしないことをお勧めします.

于 2015-05-11T22:35:18.010 に答える