Antworten:
Für diese Art der Verarbeitung wurden die morphologischen Operationen Expand und Shrink erstellt. Verwenden Sie ArcGIS (oder GRASS oder Mathematica ), weil R
die "Raster" -Bibliothek zu langsam ist.
Oft ist es hilfreich, ein wenig mit den Parametern zu experimentieren: Sie müssen entscheiden, wie viel Vergrößern und Verkleinern erforderlich ist, um ein Bild zu bereinigen. und normalerweise möchten Sie so wenig wie möglich tun, da bei jeder Operation einige der scharfen Details ausgeglichen werden. Hier ist eine Sequenz, die gut funktioniert, um einen Großteil des scheinbaren "Rauschens" zu beseitigen, während die meisten Details in den "Entitäten" beibehalten werden. "Erweitern" und "Verkleinern" beziehen sich beide auf die weißen Zellen, sodass beim Erweitern diese nach außen wachsen und beim Verkleinern die schwarzen Zellen in weiße Bereiche eindringen.
In der Spalte "Unterschied" werden in jedem Schritt Unterschiede zwischen Start- und Endbild farblich hervorgehoben: Blau für Schwarz, das zu Weiß wurde, und Orange für Weiß, das zu Schwarz wurde.
Wenn die größeren verbleibenden Teile entfernt werden müssen, kann dies am besten mit RegionGroup erfolgen , um sie zu identifizieren. Anschließend können sie durch Neuklassifizierung gelöscht werden. Dies war zu Beginn eine Option, jedoch ein wenig Vorreinigung mit Expand
und Shrink
reduziert den Arbeitsaufwand und sorgt für die gewünschte Glättung.
Im Übrigen habe ich mich entschieden, die acht Bilder in dieser Abbildung mit Mathematica- Befehlen zu erstellen, da sie so einfach, leicht und schnell auszuführen sind:
i = Import["http://i.stack.imgur.com/umDg7.png"];
l = Dilation[k = Erosion[j = Dilation[i, 2], 3], 1]; (* This does all the work *)
delta = ColorCombine /@ {{i, j}, {j, k}, {k, l}, {i, l}}; (* Compares images *)
Der Workflow in ArcGIS ist identisch, die Syntax ist jedoch länger. Wenn Sie wirklich verwenden möchten R
, laden Sie die "Raster" -Bibliothek und focalFilter
erstellen Sie Funktionen zum Erweitern und Verkleinern. Warten Sie dann jeweils ungefähr eine Minute, um die Vorgänge auszuführen ....
Mit der Spatial Analyst-Erweiterung können Sie einige der Generalisierungstools verwenden. Einige von ihnen führen ähnliche Aufgaben aus, daher müssen Sie möglicherweise mit einigen herumspielen, um die gewünschten Ergebnisse zu erzielen. Ich würde mir jedoch das Mehrheitsfilter- Tool und das Boundary Clean- Tool ansehen .
Hier finden Sie eine Seite mit den Konzepten dieser beiden Tools.
Ich bin nicht sicher, wie ich diese Aufgaben in R ausführen soll, aber hier ist ein Beitrag zum Ausführen eines Mehrheitsfilters mit GRASS GIS.
Dies ist im Grunde eine Variante der Antwort von @ whuber und verwendet den Euklidischen Abstand, um die Rastergrenzen zu erweitern und zu verkleinern, um die scharfen Ecken des Rasters zu glätten, das durch den Erweiterungs- / Verkleinerungsprozess, der die Anzahl der zu vergrößernden / zu übergreifenden Zellen nutzt, übertrieben wird. Obwohl Euklidische Entfernung Expand imitiert, ist es nicht möglich, einen negativen Wert für das Eingreifen / Schrumpfen einzuführen. Der Trick besteht darin, einen iterativen Prozess zu entwickeln, mit dem das Negativ des Rasters "Euklidische Entfernung" aufgenommen und vergrößert wird. Nachfolgend sind die Schritte für die angegebenen Beispielbilder und die Schnappschüsse zur Verdeutlichung aufgeführt.
Raster neu klassifizieren, um nur 1s zu behalten (weiße Zellen)
Wenden Sie den euklidischen Abstand für einen Abstand von zwei Zellen (in diesem Fall 60 Meter) auf das umklassifizierte Raster an
Nehmen Sie das Negativ des erweiterten Rasters mit der Option "Neu klassifizieren" (die Zellen mit dem Wert erhalten NODATA und NODATA werden auf 1 gesetzt) oder den Operatoren "Con" und "IsNull" von Raster Calculator
Wenden Sie Euklidische Entfernung erneut auf dieses negative Raster mit derselben Entfernung (60 m) an.
Machen Sie das Negative daraus, indem Sie den oben beschriebenen Vorgang ausführen
Verwenden Sie Raster Calculator oder Reclassify, um NODATA-Zellen in diesem Raster 0 zuzuweisen und zu den ursprünglichen Werten des Beispielrasters zurückzukehren
Erweitern Sie "Verkleinern vs. Euklidische Entfernung"
Hinweis: Grün zeigt die verarbeiteten Zellen (weiße Zellen in den Fragen)
Der Vorteil von Euklidianabstand ist, dass er den richtigen Abstand von jeder Zelle durch die Ausdehnung der Hypotenuse nimmt, wodurch ansonsten scharfe Kanten geglättet werden. Die Anzahl der Zellenparameter von Erweiterungs- und Verkleinerungswerkzeugen verarbeitet andererseits die gleiche Anzahl von Zellen für alle Richtungen, was zu kastenähnlichen Kanten führt, wodurch die Kanten / Ecken zu stark verallgemeinert werden.
Das Hauptproblem ist jedoch, dass es das Rauschen nicht so erfolgreich entfernt wie das Erweitern / Verkleinern und etwas länger ist als die Antwort.