高レベルの画像処理のプロセスでは、オブジェクトの数をカウントするタスクが非常に頻繁に発生します。 もちろん、領域の再帰的なラベル付けアルゴリズム(スタンプ方式)を使用して解決できます。
マーク(ドット、ラベル)
始まり
(ポイントが背景に属さず、マークされていない場合)
始まり
ポイントにラベルを割り当てます(ドット、ラベル) 。
マーク(上記のドット、ラベル) ;
マーク(下のドット、ラベル) ;
マーク(左を指す、マーク) ;
マーク(右を指す、マーク) ;
終わり
終わり
上記のアルゴリズムを元の画像の各ピクセルに適用し、見つかったオブジェクトごとにラベルを変更する必要があります。 アルゴリズムの実行後、オブジェクトの数は使用されるラベルの数と等しくなります。
このアルゴリズムにより、オブジェクトの数をカウントできるだけでなく、オブジェクトを互いに分離することもできます。 このアルゴリズムが再帰を使用していることに気付くのは簡単です。つまり、2つの潜在的な問題があります。 第一に、アルゴリズムの速度がリアルタイムのデータ処理に十分でない可能性があります。第二に、特にこのアルゴリズムをハードウェア(FPGA)で実装することについて話している場合、十分なスタックサイズがない可能性があります。
オブジェクトをカウントする2番目の方法は、外角と内角の数の差を計算することに基づいています。 外側の角は、背景の3ピクセルとオブジェクトの1ピクセルを含む2 * 2ピクセルの近傍であり、内側の角は、オブジェクトの3ピクセルと1つの背景ピクセルを含む2 * 2ピクセルの近傍です。
外部コーナーパターン:

内部コーナーテンプレート:

画像内のオブジェクトの数は、外角と内角の数の差の4分の1として計算されます。
このアルゴリズムの実行に必要なリソースは最小限です。 ソフトウェアの実装では、イメージ全体を1回パスする必要があり、ハードウェアの実装では、あと2つのカウンターのみが必要です。
このアルゴリズムは、オブジェクト内に背景ピクセルがない場合にのみ正しく機能することを理解することが重要です。 このようなピクセルは「ペッパー」ノイズと呼ばれ、数学的モルフォロジー手法によって簡単に除去されます。
そしていつものように、説明されたアルゴリズムを実装するプログラムをダウンロードできます :

PSトピックが興味深い場合、FPGAでの画像処理アルゴリズムの実装に関するトピックを書くことができます。