0

私のアプリケーションは、カメラから取得した12ビットのバイナリ画像を処理します。同じ画像が以下のjpegで表示されています。

タスクは、各白く光る領域を識別することです。
これらの4つの領域は、各画像にランダムに表示されます。4つの白い領域は常に1つの画像から別の画像に一緒に移動すると想定できます。各ポイントは、黒または黒に近い背景と比較して非常に高い強度になります。各ポイントは実際には単一のピクセルではなく、14x14のROIです。また、画像の高さは200ピクセルです。
各白い領域間の距離は常に固定されています。

CVMinMaxLoc();を適用した場合 最も明るい場所を1つだけ取得します。

各地域を特定するにはどうすればよいですか?

ここに画像の説明を入力してください

4

1 に答える 1

1

できることは次のとおりです。

  1. threshold()白い領域ごとに少なくとも 1 つの白いドットがある白黒画像を取得するために使用します。

  2. しきい値処理された画像: を適用minMaxLoc()して最初の白い領域を取得しますが、 を使用floodFill()して、その白い領域を黒くペイントして取り除きます。

  3. 白い領域がすべて得られるまで、手順 2 を繰り返します。(それぞれを黒く塗りつぶすので、それぞれの白の連結成分を 1 回見つけることができます。)

の後に白い領域が接続されていない場合threshold()は、 を使用dilate()して接続することができます。

白い領域の中心を検出したい場合は、erode()ステップ 1 の後に使用することもできます。

于 2012-11-22T17:04:15.380 に答える