あなたの問題を解決するためにOpenCVのwatershedアルゴリズムの実装を使用しました。 this great tutorialを読んで使用する方法を知ることができますので、私はこれについて多くの詳細を説明しません。
4点(マーカー)を選択しました。 1つは抽出したい領域にあり、1つは外側にあり、もう1つは興味のないインテリアの下部/上部にあります。私はその後、空の整数配列(いわゆるマーカイメージ)を作成し、ゼロで埋めました。次に、マーカ位置のピクセルに一意の値を割り当てました。以下
画像が原画像上に描画され、マーカーの位置とマーカー値を示す:
Iは、同じエリア内の複数のマーカーの領域に属している(例えば、いくつかのマーカーを選択することができますその場合はすべて同じ値(この場合は255)を持つ必要があります。
私は流域を使用しました。最初の入力は入力した画像で、2番目の入力はマーカー画像です(マーカ位置を除くすべての場所でゼロ)。アルゴリズムは結果をマーカー画像に格納します。興味のある領域が(この場合は255で)領域マーカーの値が付いている:
私はゼロに255価値を持っていなかったすべてのピクセルを設定します。得られた画像を3x3カーネルで3回膨張させた。それから私は、元の画像のためのマスクとして膨張画像を使用(私はゼロにマスクの外側の全ての画素を設定する)、これは私が得た結果である:あなたは、おそらく方法のいくつかの種類が必要になります
こと自動的にマーカーが見つかります。この作業の難しさは、入力画像のセットに大きく依存します。場合によっては、上記のリンク先のチュートリアルのように、このメソッドを単純明快にすることができますが、時にはこれを解読するのが難しい場合もあります。しかし、あなたのイメージがどのように一般的に見えるかわからないので(私はあなたが提供しているだけです)、何もお勧めできません。 :)
非常に有望ですね。すべての画像は非常に似ているので、データセット全体の平均または標準偏差からマスクを作ることができます。私はそれを今日か明日にしようとします、そして、私はあなたにそれがどのように行ったかを知らせます。良い仕事、ありがとう! – TasosGlrs