2016-09-26 17 views
0

閉領域の黒でないピクセルの数を計算するのに最高のC#アルゴリズムは何ですか? 私は例えばこのイメージを持っています。赤いボタンの位置でマウスをクリックします。私は黒ピクセル(この例では白ピクセル)が閉領域(四角形と四角形は計算してはならない)にどれくらいあるのか知りたいですか?閉領域の黒でないピクセルの数を計算する最適なアルゴリズムは何ですか?

pixel count

+0

「領域」を定義します。それは修正されていますか?正方形と三角形が計算されないのはなぜですか? – ThePerplexedOne

+3

[flood fill](https://en.wikipedia.org/wiki/Flood_fill)アルゴリズムを使用してピクセル数をカウントすることができます – samgak

答えて

1

あなたのイメージに輪郭(ブロブ)を見つけるためにemguCV/C#のが必要になります。あなたがイメージ上のすべての輪郭を取得することができ、そのライブラリが提供する機能:

var contours = YourImage.FindContours(CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE, RETR_TYPE.CV_RETR_EXTERNAL); 

その後、あなたは、マウスの座標がに落ちていた輪郭をチェックするために、独自のアルゴリズムを構築する必要がありますあなたのサンプル画像、。 3つの輪郭(正方形、長方形、残りの部分)しかありません。これらの3つを繰り返し、マウスの座標をそれぞれの座標、形状、面積などを考慮してテストする必要があります。

+0

彼は主観的な「最高」を求めていましたが、これは大規模な過度の提示されるような簡単な質問。 –

+0

@AndrewHanlon私はEmguCVを使って、画像の最大の輪郭を見つけるのはかなり簡単だと思います。 –

+0

彼の質問では輪郭や最大のものを探すことはありませんでした。選択された領域にいくつのピクセルがあるかを尋ねます。ネイティブCVライブラリへのラッパーを必要とせず、CVの観点から考えることもできる多くの古典的アルゴリズムを実装することができます。 –

1

必要なのは、塗りつぶしアルゴリズムに非常に似ていますが、唯一の違いはピクセルの色を変更すると、それらは数えられます。塗りつぶしアルゴリズムの実装を検索します。

+0

これは間違いなく正しいアプローチです。注意すべきことは、多くの塗りつぶしアルゴリズムでピクセルを複数回「タッチ」することができることだけです。これはカウントには問題ありません。 –

関連する問題