2

水と土地の違いを見分けるアルゴリズムを考え出そうとしています。0(黒い四角)と1(灰色の四角)だけを保持する2D配列があり、この画像が生成されます。水域の1つを青に着色したので、水と思われるものがわかります。水は大きくて丸い形をした領域です。一部の陸地を緑色にしました。真っ直ぐな黒い線はすべて陸地であると想定されており、いくつかの小さな丸い形も同様です。

現在、すべての黒い領域は0として表され、すべての灰色の領域は1として表されています。したがって、図では、緑と青のスポットは両方とも同じものとして表されています。代わりに、いくつかの黒い領域(水)を2として表す必要があります。これを行うための良い方法は何ですか?私がこれまでに思いついた最良のことは、各ブラックスポットの面積を計算し、特定のしきい値を超える領域のみを水にすることです。私はもっ​​と良い方法があると思います、そしてあなたたちがどう思うか疑問に思っています。

ここに画像の説明を入力してください

4

2 に答える 2

1

おそらく、面積とエッジの長さを比較すると、真円はエッジに対する面積の比率が最も高くなりますが、通り(私は通りだと思います)の比率は小さいため、これは丸みの尺度を与える可能性があります。

おそらく、これらの両方の測定値もしきい値に設定します。

于 2012-04-10T06:47:00.520 に答える
0

最初の2つの提案を組み合わせることで、解決策を見つけることができました。まず、任意の数の水タイル(つまり、各方向に4つ)で囲まれている水タイルを探し、次にフラッドフィルアルゴリズムを使用して、水域全体を実際に水に設定します。これが結果の写真です。見た目も海岸線を追加しました。ご覧のとおり、小さい丸いボディはまだ陸地です。これはまさに私が望んでいたことです。 ここに画像の説明を入力してください

于 2012-04-10T07:01:06.270 に答える