私はthis paperのようなコンポーネントラベリングアルゴリズムをpythonとopencvを使って実装しています。入力画像をピクセル単位でチェックし、バイナリ画像のブロブにラベルを割り当てるために、いわゆる輪郭追跡サブルーチンを実行する必要があります。pythonとopencvでの高速コンポーネントラベリング
私はそれを稼働させることができますが、それは非常に遅いようです。コードをプロファイリングすると、ピクセルにアクセスするforループがボトルネックに見えることがわかります。 256px * 256pxの画像で約200msかかる。おおよそ次のようになります。
for i in image.height:
for j in image.width:
p = image[i, j]
pa = image[i - 1, j]
pb = image[i + 1, j]
# etc...
ここで、「image」はバイナリのopencv画像です。
ビデオアプリケーションでも使用できるように、より速い方法があるのだろうかと思います。私は20〜25fpsを得るために同じ問題のサイズに対して40〜50msの実行時間を目標にしています。 10-15fpsもおそらく許容されます(66-100msの稼働時間)。
私ができることは、何かヒントやアイデアは大変ありがたいです。
Pythonは正確には高性能言語ではありません... Java、C/C++などでもう一度やり直してください。 –