Ich versuche, mit einem Algorithmus zu kommen, um den Unterschied zwischen Wasser und Land zu unterscheiden. Ich habe ein 2D-Array, das nur Nullen (schwarze Quadrate) und Einser (graue Quadrate) enthält, wodurch dieses Bild erzeugt wird. Ich habe einen der Wasserbereiche blau gefärbt, damit du sehen kannst, was Wasser sein soll. Wasser sind die Bereiche, die groß sind und eine runde Form haben. Ich habe einige Landflächen grün gefärbt. Alle geraden schwarzen Linien sollen Land sowie einige der kleineren runden Formen sein.Algorithmus zur Unterscheidung zwischen Wasser und Land
Im Moment werden alle schwarzen Bereiche als 0 und alle grauen Bereiche als 1 dargestellt. In der Abbildung werden also die grünen und blauen Punkte als die gleichen dargestellt. Ich brauche einige der schwarzen Bereiche (Wasser), die stattdessen als 2 dargestellt werden. Was ist ein guter Weg, dies zu tun? Das Beste, was ich bisher herausgefunden habe, ist, die Fläche jedes schwarzen Flecks zu berechnen und nur Bereiche oberhalb einer bestimmten Schwelle als Wasser zu betrachten. Ich denke, es gibt bessere Wege und ich frage mich, was ihr denkt.
Schritt 1: Legen Sie alle 0 mit nur 0 als Nachbarn zu Wasser. Schritt 2: Setze alle Nullen mit Wasser als Nachbarn auf Wasser. –
Wahrscheinlich können Sie diesen [Flood_fill-Algorithmus] (http://en.wikipedia.org/wiki/Flood_fill) als Startpunkt verwenden. – Bakudan
Joel, ich dachte an den ersten Schritt, den du gesagt hast, aber hast nicht an den 2. gedacht. Das einzige, was daran schlimm ist, ist, dass es kleine Flächen in Wasser verwandelt (grüner Punkt, den ich ausgefüllt habe, oder das kleine 3x3 Quadrat links davon) – theDazzler