このような画像が与えられた場合:
画像内のオブジェクトの色がわからない場合、オブジェクト自体のしきい値を設定するための最適な H、S、および V 範囲を自動的に見つけて、次のような結果を取得できるようにしたいと考えています。この
例では、手動で値を見つけ、cv::inRange を使用して画像のしきい値を設定しました。
私が探している出力は、オブジェクトの色を事前に知らなくても、画像内の特定のオブジェクトをしきい値処理するための最適な H、S、および V 範囲 (それぞれ最小値と最大値、合計 6 つの整数値) です。後でコードでこれらの値を使用する必要があります。
覚えておくべきキーポイント:
- 指定されたすべての画像は同じサイズになります。
- 指定されたすべての画像は、同じ暗い背景になります。
- 画像に入れるオブジェクトはすべてフルカラーになります。
6 つの HSV 範囲の値のすべての可能な順列に対してブルート フォースを適用し、それぞれにしきい値を設定して、最適なブロブがいつ見つかったかを判断する賢い方法を見つけることができます (ブロブ サイズでしょうか?)。ただし、これは非常に面倒で、長く、非常に効果のないソリューションのように思えます。
これにアプローチする良い方法は何ですか?いくつかの調査を行ったところ、OpenCV には機械学習機能があることがわかりましたが、プロセスの最後には、しきい値処理された画像だけでなく、実際の 6 つの値が必要です。