形状の特徴 (例: 面積、輪郭の長さなど) に基づいて、ビデオ ソースで暗い (ほぼ黒い) オブジェクト検出を実行しようとしていますが、バイナリ マスクでの輪郭の検出に問題があります。
オブジェクトの形状が変化せず、輪郭が 1 つのコンパクトなブロブのみを含む単純なマスクから派生している場合でも、輪郭が閉じていない場合があります (CV_FILLED オプションで表示しているため、多くのフレームで輪郭がそのため、計算された領域は実際には信頼できません (値は数ピクセルまで低下します)。
また、オブジェクトの輪郭が閉じていない場合、長さが想定の約 2 倍になることにも気付きました (これは理にかなっています)。
単純なブロブの輪郭が開いたり閉じたりするのはなぜですか? また、それらを常に閉じるようにするにはどうすればよいですか? 私はすでに凸包を試し、輪郭の最初の点をその最後にコピーしましたが、うまくいきませんでした。
私のアプローチの手順は次のとおりです。
- 画像をグレースケールに変換
- しきい値処理、侵食、膨張を実行してノイズを除去し、「形状」を改善します
- Canny エッジ検出器を使用してエッジのみを取得する
- 等高線とその領域を取得するには、findContours を使用します。
- arcLength を使用して、等高線およびその他のフィーチャの長さを計算します。