Das Problem mit -threshold Y%
ist dies: es wird alle Pixel, die dunkel genug sind, in schwarz zu übersetzen!
Sollten Sie eine andere dunkle Farbe (dunkelbraun, dunkelblau, dunkelrot, dunkelgrau oder schwarz) in Ihrem Bild haben, werden Sie es fälschlicherweise als "Holz" identifizieren.
Wenn ich Sie richtig verstehe, suchen Sie nur diejenigen Pixel für, die von einer Art von grün oder dunkelgrün.
Dafür würde ich zu Benchmark Ihren eigenen Ansatz mit einem gewissen Variante des folgenden Befehls vorschlagen:
compare \
-size 600x600 \
-fuzz 30% \
http://i.stack.imgur.com/kqMtt.png \
xc:'darkgreen' \
output-1.png
Statt ‚dunkelgrün‘ Sie den jeweiligen Farbwert von ‚# 006400‘ verwenden könnten, ist es das gleiche:
compare \
-size 600x600 \
-fuzz 30% \
http://i.stack.imgur.com/kqMtt.png \
xc:'#006400' \
output-2.png
Der obige compare
Befehl erzeugt eine output-1.png
aus den beiden Eingangsbildern mit folgenden Merkmalen:
- ein Vergleich des Originalbildes mit einem dynamisch erzeugten (
xc:
) 600x600 Pixel-Patch mit einheitlicher Farbe "dunkelgrün";
- Die Ausgabe zeigt das Originalbild als blassen Hintergrund;
- Die Ausgabe zeigt rote Pixel, wobei die entsprechenden Pixel des Originalbildes nach einem 'Fuzz - Faktor' von 30% vom Farbwert 'dunkelgrün' abweichen (wobei '0%' genau entspricht Farbwert);
- der Ausgabe zeigt, weiß/halbtransparenten Pixel, wo die jeweiligen Pixel des Originalbildes auf die Farbe ähnlich ‚dunkelgrün‘ (innerhalb eines Fuzz-Faktor von 30%).Hier
ist das Ergebnis in einer Side-by-Side-Vergleich:
Sie natürlich mit dem Flaum Faktor sowie mit der genauen Definition des Begriffs ‚dunkelgrün‘ Farbe spielen Wert. Hier ist das Ergebnis für -fuzz 25%
:
Wenn Sie den Vergleich der Farben invers zeigen (rote Pixel gezeigt, wo das Originalbild hatte grünliche Farben, transparent/weiß sind, wo Pixel waren nicht-grün) die umgekehrte Farbe ‚dunkelgrün‘, wie ein Vergleich Patch zu verwenden (das ist eine Art von rosa, BTW), und ein anderer Fuzz Faktor:
compare \
-size 600x600 \
-fuzz 70% \
http://i.stack.imgur.com/kqMtt.png \
xc:'#ff9bff' \
output-3.png
Das Ergebnis ist jetzt:
Wenn Sie die Ausgabe auf NICHT das Originalbild als blassen Hintergrund zeigen, dann -compose src
auf Ihren Befehl (e):
compare \
-size 600x600 \
-fuzz 70% \
http://i.stack.imgur.com/kqMtt.png \
xc:'#ff9bff' \
-compose src \
output-4.png
Sie können auch Ändere die Farbe Rot, die die "Delta" -Pixel in eine andere Farbe hebt. So verwenden Sie Schwarz:
compare \
-highlight-color black \
-size 600x600 \
-fuzz 60% \
http://i.stack.imgur.com/kqMtt.png \
xc:'#ff9bff' \
-compose src \
output-5.png
Sie könnten jetzt das Ergebnis des letzten Befehls als "Maske" verwenden. Überlagern Sie diese Maske mit dem Originalbild und erstellen Sie sie so, dass die "Nur-Baum" -Teile des Bildes im Ergebnis erscheinen und alle anderen Teile entfernt werden.
Die anspruchsvolleren Methoden neigen dazu, einen Infrarotkanal zu verwenden, in dem Biomasse stark emittiert - Google NDVI (Normalisierter Unterschiedsvegetationsindex), aber leider haben Sie nicht diese zur Verfügung. Eine andere Option ist Texturanalyse. –
@MarkSetchell: Sind qualitativ hochwertige Infrarotkarten kostenlos online verfügbar? Ich könnte dann google maps alle zusammen abgraben. –
Google Map Engine unterstützt Baumfilterung (ich erinnere mich). – wf9a5m75