# Problem mit exakter Flächen-, Farbmarkierung



## Bobo6 (28. Juli 2009)

Grüße,

sitze gerade an meiner Diplomarbeit und könnte ein wenig Hilfe gebrauchen. Habe erkrankte Baumblätter abfotografiert und versuche jetzt diese erkrankten Stellen zu markieren, um später über die Pixel die Fläche zu erhalten. Meine ersten Versuche mit Photoshop (PS 7.0&) erwiesen sich als nicht sonderlich erfolgreich. Versuchte es zu Beginn mit dem Zauberstab (zu unexakt) und später mit verschiedenen Kontrasten, beides erwies sich als, in meinen Augen, unbrauchbar. Mein zweiter Versuch heißt jetzt ImageJ. Nach meiner Meinung gibt es zwei mögliche Lösung für das Problem, einmal ein exakte Markierung der betroffenen Bereiche oder aber eine Funktion mit der ich ein bestimmtes Farbspektrum Auswählen kann. Falls mir jemand weiterhelfen könnte wäre das hervorragend, ich bin für jeden Vorschlag zu haben egal bei welchem der beiden Programme.

Meinen Dank schon mal im Voraus!


----------



## Suborneur (28. Juli 2009)

Öhm, ich verstehe nich genau...

-Was beudeutet bei dir "_markieren_"?

Ich verstehe darunter jetzt ein Hervorheben, wie es bspw. mit einem Kreis um die besagte Stelle getan wäre.  

Z. B.: So -> siehe Anhang.


Zu der Auswahl über's Farbspektrum kann ich leider nichts sagen.


----------



## Sierb (28. Juli 2009)

Ich glaube, er will die Blätter verändern, die erkrankten Stellen aber beibehalten.
Das machst du mit einer weichen Ebenenmaske:

Ebene duplizieren --> Eine schwarze Maske auf der oberen erstellen --> Mit einem weichen Pinsel die genannten Stellen auf der Maske weiß anmalen --> Die Ebene darunter mit welchem Filter/Einstellungsebene/etc. bearbeiten.

Achtung: Die maskierte Ebene muss immer ganz oben sein.

Das war die Erklärung in Photoshop.

Wenn du das nicht meinst, erkläre mal genau, was du für ein Ergebniss erziehelen willst.


----------



## Bobo6 (28. Juli 2009)

Das Problem ist ein wenig komplizierter. Ich weiß nicht ob du schon einmal den Minenbefall an Kastanien beobachtet hast. Durch diesen entstehen auf dem Blatt Stellen ohne Chlorophyll, erscheinen gelblich, bräunlich. Nun besteht meine Aufgabe darin diese Bereiche zu "markieren", z.B. mit dem Zauberstab aber wie schon gesagt ist dies zu ungenau. Nach dem "markieren" kann man sich anschließend unter Histogramm die Pixel geben lassen und daraus die befallene Fläche berechnen.
Vielleicht beschreibt das mein Problem etwas deutlich.
Danke schon mal!


----------



## Bobo6 (28. Juli 2009)

Ach ja, da gibt es noch eine Kleinigkeit. Da ich das ganze für etwa 800 Blätter machen  muß, sollte die Methode so wenig Zeit wie möglich aufwenden pro Blatt.


----------



## Sierb (28. Juli 2009)

Du willst also von Photoshop berechnen lassen, wieviel % des gesamten Bildes eine bestimmte Farbe bzw. mehrere bestimmte Farben aufweißt?

Ich fürchte, dass Photoshop nicht das geeignete Programm dafür ist. Ich lasse mich aber gerne eines besseren belehren.


----------



## Martin Schaefer (28. Juli 2009)

Da du die Blätter abfotografiert hast, und das auch sicherlich nicht mit 800 Blättern in 10 Minuten, vermute ich fast, dass du auch kein gleichbleibendes Licht hattest. Insofern wird das Automatisieren wohl schwierig werden.

Hast du einen Weg gefunden, die befallenen Stellen zu selektieren, dann kannst du relativ einfach die befallenen Stellen auch quantifizieren. Dazu musst du einmal das gesamte Blatt selektieren und die Selektion als Auswahl speichern, dann die befallenen Stellen selektieren und als Auswahl speichern. Letztlich speicherst du die beiden Alphakanäle als 8bit Graustufen oder sogar nur 1bit Bitmap Dateien.

Jetzt kannst du mit recht simpel zu schreibender Software diese Bilder durchforsten und die Zahl der schwarzen und weißen Pixel zählen. Ich denke, wie man dann mit diesen Zahlen umgeht muss ich dir nicht erklären. 

Also nochmal die Kurzform:
Deine Aufgabe ist es, die Blätter bzw. die Befallstellen in eine simple Schwarz/Weiß Form zu bringen. Der Rest ist dann außerhalb von Photoshop recht einfach gemacht.

Und jetzt kommen wir zu dem üblichen Punkt:
Ein Bild sagt mehr als tausend Worte. Und mehrere Bilder sagen noch mehr.
Also wäre es schön, wenn du vielleicht mal 2 beliebig ausgesuchte Bilder hier posten könntest, damit man sich das mal anschauen kann.

Gruß
Martin


----------



## Bobo6 (30. Juli 2009)

Vielen Dank erstmal.

Zu der Frage ob die Blätter alle bei gleichbleibenden Lichtverhältnissen abfotografiert worden, kann ich nur sagen ja. Die Blätter waren eingefroren und mit etwas Mühe habe ich eine Apperatur gebaut, welche vier Lichtquellen besitzt, um Spiegelreflxen aus dem Weg zu gehen. 

"Du willst also von Photoshop berechnen lassen, wieviel % des gesamten Bildes eine bestimmte Farbe bzw. mehrere bestimmte Farben aufweißt?"

Ja, das ist mein Begehren. Nochmal kurz zur Erklärung: Die Blätter wurden immer mit einem kleinen Quadrat 1x1cm abfotografiert. Im Foto habe ich dann den Hintergrund geweißt und mir per Histogramme die Pixel des kleinen Quadrates ausgeben lassen. Das Blatt wurde dann über eine Änderung des Schwellenwertes geschwärzt und danach wurden auch davon die Pixel bestimmt. Somit kann ich mir die Größe des Blattes aus den Pixeln berechnen.
Meine Aufgabe jetzt ist die erkrankten Bereiche des Blattes zu "Markieren", wie schon erwähnt, um dann daraus die Pixel zu berechnen und den Anteil zum Gesammtblatt zu bestimmen. 

Im Anhang finden sich zwei Beispiele.


----------



## Zinken (30. Juli 2009)

Du könntest es mal mit "Auswahl - Farbbereich auswählen" versuchen und das Blattgrün auswählen.
Wenn die Grundfarbe der Blätter einigermaßen gleichmäßig ist, sollte das funktionieren.
Eventuell kannst Du Dir daraus dann eine Aktion bauen und mit Hilfe der Stapelverarbeitung das Ganze sehr beschleunigen.


----------



## chmee (31. Juli 2009)

Die Gesamtfläche ergibt sich aus der Auswahl des Hintergrundes, welche Du dann invertierst (alles, was nicht weiß ist). Dann solltest Du wohl per Tonwertkorrektur die Tiefen und Lichter noch extremer machen, so dass Hauptfarbe des Blattes (dunkel) und befallene Stellen (heller) sich noch eindeutiger unterscheiden.

Vollautomatisiert wird es schwierig, da die gezeigten Bilder den Unterschied zwischen 2 Fotos aufzeigen, aber ein Halbautomatismus sollte gehen.

1. Auswahltool auf Hintergrund (oder rechteckige Auswahl auf Hintergrund -> dann Similar/Ähnliches Auswählen)
2. diese Auswahl beschreibt Fläche des ganzen Blattes
3. Diese Auswahl zur Ebenenmaske umwandeln
4. Per Tonwertkorrektur Schwarzwertpipette auf gesunde Farbe und Weisswert auf kranke Stelle
5. Gesunde Fläche ist dunkel, kranke im Optimalfall weiss
6. Nochmalige Auswahl der weissen Stellen und invertieren
7. Jetzt hast Du die Fläche der gesunden Teile

Scriptingbeispiel zB http://www.phreekz.de/wordpress/2009/07/photoshop-scripting-ii-getcolor/ 
Das könnte man mit dem Scripting erledigen, uU sind auch die Durchschnittswerte der Tonwertkorrektur für die Weiterverarbeitung essentiell.

Gesamtfläche aus (2.) Minus Fläche aus (7.) ergibt die kranke Fläche
Beispiel Bild 2 von Dir mal in 5 Minuten manuell durchgespielt.


Auch noch Bild 1 durchgespielt:



**EDIT** Mein Gedanke wäre nun, bei 800 Blättern mittels des Halbautomatischen Durchgangs einen Nachmittag lang alle Blätter durchzugehen und sich per Scripting die Daten in eine Datei schreiben zu lassen, in einer Form, die im Nachhinein einfach weiterzuverarbeiten ist, wie zB komma- oder Doppelpunktsepariert. Dann kann man nach der Durcharbeitungsorgie die Daten als CSV-Tabelle in Excel laden und Werte ausgeben lassen und weitere Berechnungen anstellen.
zB in der Form
Dateiname : Pixel komplettes Blatt : Pixel gesunde Stellen : Pixel kranke Stellen


**EDIT2** Achja, vielleicht sind in einer Farbkomponente (zB Grün) die erheblichen Informationen stärker sichtbar als im RGB-Gesamtbild, uU lohnt auch der Wechsel in einen anderen Farbmodus.

mfg chmee


----------



## Bobo6 (5. August 2009)

Vielen Dank für die Mühe. 

Ich habe jetzt einige Zeit rumprobiert aber so schöne saubere Kontraste wie du sie in den beiden Bildern erzielt hast, bekomme ich nicht hin. Falls du noch ein paar Ratschläge hast wäre ich äußerst Dankbar.

Das einzige was bei mir bis jetzt richtig gut funktioniert hat, ist mit dem Auswahl-Tool Zauberstab die gesunden Bereiche auswählen Weiche Auswahlkanten benutzen und mir die Pixel ausgeben lassen.

Die Pixel hast du dir auch über ein Auswahl-Werkzeug und Histogramm geben lassen, oder?

Das mit dem Halbautomatisieren wird wahrscheinlich schwierig, da ich noch nie ein Script geschrieben habe und bevor ich die Kontraste nicht einigermaßen gleichmäßig detailiert für alle Bilder erziele, bräuchte ich damit nicht anfangen und die Sache mit dem Zauberstab kann man nicht Halbautomatisieren, denn es sind ja jedesmal verschiedene Bereiche die Ausgewählt werden müssen.

Grüße


----------



## chmee (5. August 2009)

Moin, Der Zauberstab ist dafür die falsche Wahl. Das wäre ja vollmanuell. Bei "Auswahl" hast Du zwei mächtige Tools dazu. Einmal die Farbselektion und dann die genannte Similar/Gleiches Auswählen-Funktion. Während die Farbselektion ein eigenes Fenster hat, gibst Du der Similar-Funktion eine ausgewählte Fläche vor, danach klickst Du Similar.

mfg chmee


----------



## Bobo6 (5. August 2009)

Die beiden Funktionen hab ich schon begriffen und gerade Ähnliches Auswählen kann äußerst hilfreich sein aber wenn ich deinen sieben Schritten Folge stoße ich auf einige Probleme. Der Dritte Punkt, den ausgewählten Hintergrund zur Ebenmaske umzuwandeln funktioniert nur wenn ich vorher eine Kopie der Ebene angefertigt habe (wozu die Ebenenmaske?) Und im Punkt Sechs die Farbumkehr ist diese notwendig, da ja auch der Hintergrund geschwärzt wird.


----------



## chmee (5. August 2009)

Die Beschreibung war ne Schnellschrift, in der Praxis hab ichs dann doch noch n bissel anders gemacht.

Aber mal der Reihe nach :
A - Wenn der Backgroundlayer verriegelt ist, kann man keine Ebenenmaske anlegen.
B - mit Invertieren meinte ich die Ebenenmaske, nicht den Bildinhalt.

Also, hier nochmal meine Reihenfolge:
1 - Backgroundlayer duplizieren [STRG+J]
2 - Weiss mit Similar auswählen
3 - Auswahl ummehren
4 - zur Ebenenmaske von Ebene 1 machen
5 - Autokontrast&AutoTonwert auf Ebene 1 anwenden

Jetzt haben wir das Blatt kontrastreich
und die Ebenenmaske beschreibt nur das Blatt -> Fläche Gesamt

6 - Dupliziere diese Ebene 1 und lösche Ebenenmaske
7 - Mit Auswahl ein wenig von den gesunden Flächen auswählen
8 - Similar anwenden
9 - Ebenenmaske draus machen

Jetzt haben wir in der Ebenenmaske Ebene 2 die gesunde Fläche markiert

10 - Ebene 2 duplizieren und Maske löschen
11 - Ebene1-Maske mit STRG anklicken
12 - Ebene2-Maske mit STRG+SHIFT anklicken
13 - Sollte jetzt die Differenz sein, also die kranke Fläche -> Ebenenmaske Ebene 3

14 - Um die Ebenen 2 und 3 für die Hervorhebung der Unterschiede zu nutzen, einfach STRG+A und Del drücken, danach jeweils die Farben Grün (Ebene 2) und Rot (Ebene3) reinfüllen. Die Ebenenmodi dieser 2 Ebenen auf Color, Overlay oderoderoder stellen.

Lässt sich alles (bis auf 7) mit einer Aktion automatisieren. Somit hast Du nur einen manuellen Eingriff, den man auch in der Aktion als Manuell speichern kann.

mfg chmee


----------

