derzeit versuche ich mich an einer Bildauswertung bei der eine durch einen Laserdiode erzeugte rote Linie erkannt werden soll, bzw. deren Position im Bild bestimmt werden soll.
Die Linie ist dabei nur schwer zu erkennen/herauszufiltern, da sie von einer unebenen, spiegelnden Fläche reflektiert wird und es eine starke Umgebungsbeleuchtung gibt.
Derzeit versuche ich das Ganze im RGB-Farbraum zu "filtern".
Mein derzeitiger "Filter" sieht folgendermaßen aus:
% "Filter" um die Pixel mit hohem Rotanteil und wenig anderen Farbe zu verstärken % gleichzeitig werden weiße Bereiche (hoher Wert bei allen Farben) herausgefiltert
img(:,:,1) = img(:,:,1) - (0.5.*img_b(:,:,3)) - (0.5.*img_g(:,:,2));
% Schwelle um Pixel unterhalb eines bestimmten Wertes zu schwärzen
img(img<75) = 0;
Um einen guten Filter zu erstellen, muss man die Natur der Störsignale analysieren. Wie unterscheiden sich die gewünschten von den unerwünschten Punkten?
Suchst Du nur nach irgendwelchen Rot-Tönen, oder hat der Laser nicht eine ganz bestimmte Farbe? Im HSV-Raum zu suchen könnte deshalb effizienter sein.
im RGB Farbraum in dem ich arbeite ist es so, dass die gesuchten Pixel einen hohen Rotwert haben und wenig grün und blau. Die größten Probleme habe ich damit weiße Bildbereiche bzw. sehr helle Bereiche zu filtern. Für reines Weiß, RGB jeweils 255, funktioniert der Filter sehr gut, dafür sorgt:
Allerdings funktioniert das logischerweise weniger gut wenn der Grün- und Blauwert kleiner sind.
Was den Laser betrifft, der hat eine feste Wellenlänge, was einer bestimmten Farbe entspricht. Aber, leider, ergibt das im Foto nicht unbedingt einen konstanten RGB Wert. Denn der Laser wird nicht direkt aufgenommen sondern von einer Oberfläche reflektiert. Die Oberfläche ist sehr uneben wodurch das Licht gebrochen und zerstreut wird. Außerdem wirken auf die RGB Werte ja auch das Umgebungslicht usw...
Mit dem HSV Raum habe ich mich noch nicht wirklich auseinander gesetzt. Gibt es hier irgendwelche Vorschläge wo man sich darin einlesen kann?
Mit dem HSV Raum habe ich mich noch nicht wirklich auseinander gesetzt. Gibt es hier irgendwelche Vorschläge wo man sich darin einlesen kann?
:-) Wie wäre es mal WikiPedia danach zu fragen? Auch Google weiß ganz sicher einiges dazu.
Ich muss ein wenig grinsen: Die Antwort ist naheliegend, oder?
Du beschäftigst Dich mit Bildbearbeitung und möchtest Farbtöne erkennen. Da sind solide Kenntnisse zu einem Farbraum, der Farbtöne verwendet ganz wichtig.
Wikipedia und Google habe ich seit heute morgen auch schon bemüht .
Habe seitdem auch schon mit Matlab im HSV-Farbraum herumgespielt. Von einem sinnvollen Filter für meine Anwendung bin ich zwar noch etwas entfernt aber wenn es soweit ist werde ich den Code für Anregungen und Verbesserungsvorschläge hier posten.
Allgemein finde ich den HSV-Farbraum ...sagen wir mal nicht ganz so selbsterklärend wie den RGB-Farbraum aber ich glaube das bekomm ich hin.
Zitat:
Da sind solide Kenntnisse zu einem Farbraum, der Farbtöne verwendet ganz wichtig.
Was das betrifft bin ich erstaunt, dass ich in der kurzen Zeit in der ich mich mit dem Thema beschäftige überhaupt einen brauchbaren RGB-Filter zustande bekommen habe.
Gruß
captaincaos
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.