このQ&Aサイトの一部の人々は、Matlabのbwlabelを模倣するためにfindContourを使用することを提案しました。しかし、輪郭は検出されたエッジの閉じた形状であり、bwlabelの要素は接続された形状であると思うのでわかりません。論理的には同じかもしれません。実際にはどうですか?彼らは本当に同じですか?
3 に答える
bwlabel
画像に接続されたコンポーネント、つまり背景の接続されたオブジェクトごとに異なるラベルが表示されます。
おそらく、im2bwとimcontoursの組み合わせが提供することを意味します。つまり、画像を2値化し、出力で保持されているオブジェクトごとに1つの輪郭(境界)を簡単に見つけることの組み合わせです。
次の例を考えてみましょう。
I = imread('coins.png'); % grayscale
level = graythresh(I); % find thershold
BW = im2bw(I, level); % threshold image
imcontour(BW, 1); % plot single contour
グレースケール画像の場合、 findContours はバイナリ画像で動作しますが、要求される輪郭の数を増やすことができます。
これらの2つのライブラリのいずれかを使用してください.... cvBlobslib またはcvblob ...サイズ、輪郭、楕円率、境界ボックスなど、連結成分に関する多くの機能を取得できます...ブロブをフィルタリングして2つ以上のブロブを追加できます。 ..試してみてください..bwlabelの内部アルゴリズムは2スキャン連結成分ですが、cvblobまたはcvBlobslibは1スキャンアルゴリズムです...
私はこれについての正確な記事を見つけました。簡単な答えは「ええ、彼らの最終的な出力は同じになるでしょう」です。したがって、cvBlobがまだ古いCスタイルのAPIを使用していて、輪郭を見つける独自の実装があることを考慮した後、findContourを使用する可能性があります。