LabVIEWForum.de
Pixel aus Bild auslesen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Module (/Forum-LabVIEW-Module)
+---- Forum: LabVIEW Vision (/Forum-LabVIEW-Vision)
+---- Thema: Pixel aus Bild auslesen (/Thread-Pixel-aus-Bild-auslesen)



Pixel aus Bild auslesen - lv-laie - 02.06.2011 14:32

Hallo Leute!

Ich habe folgendes Problem. Ich habe eine Kamera, die aus Labview angesteuert wird und ein Livebild erzeugt. Dieses Bild besteht aus einem Laserstrahl und einem Körper, der einen Teil des Linien-Laserstrahls unterbricht. Jetzt möchte ich die Anzahl der Pixel bestimmen, die durch die Verschattung entsteht. Das Bild sollte zuerst in ein Schwarz-Weiß-Bild umgewandelt werden. Kann mir jemand helfen?

Die Ansteuerung der Kamera funktioniert, nur das auslesen der Pixel nicht. Ich hab ein Beispielbild und das verwendete Sub-Vi, falls es hilfreich ist.
Falls jemand ein besseres Sub-Vi hat, wäre ich ihm sehr dankbar.


RE: Pixel aus Bild auslesen - Robert85 - 02.06.2011 18:11

Oha. Erstmal: Schön "breit" dein VI. Das aber kein schöner Programmierstil. Warum machst du es denn so? Das ist ja in dem Sinne immer wieder das selbe was du da hintereinander abarbeitest ...


RE: Pixel aus Bild auslesen - b.p - 02.06.2011 18:20

Hallo,
zum Binarisieren gibt es verschiedene Funktionen, je nachdem welche Bedürfnisse man hat (habe mich mit dem Thema mal längere Zeit beschäftigt, und selber eine Reihe programmiert).
Die ganz einfache Variante ist ein Threshold, also einfach nur eine Schwelle. Dazu verwandelt man erst das Bild in Graubilder (ebenfalls viele Algorithmen, oft kann man auch einfach nur eine Farbebene nehmen - für Bild mit rotem Licht evtl. Grün). Dann legt man einen Wert für die Schwelle fest, notfalls dynamisch.
Ich hab das Ganze für dich im IMAQ Vision Assistant gemacht und in LV-Code umgewandelt.
Gruß,
Birgit

PS: Die Breite und der Code kommt ziemlich sicher vom Vision Assistant. :-)


RE: Pixel aus Bild auslesen - Robert85 - 02.06.2011 18:25

Zum schwarz/weiß: Wähle doch einfach am Anfang "Grayscale (U8)" und das "Extract Single Color" weg.


RE: Pixel aus Bild auslesen - b.p - 02.06.2011 18:35

Ich hab die grüne Plane gewählt, wegen Kontrast mit Rot/Artefakten. Aber du hast recht.


RE: Pixel aus Bild auslesen - lv-laie - 02.06.2011 19:09

Gibt es denn kein fertiges VI dafür? Ich habe den Code dafür nicht geschrieben. Hat jemand anderes gemacht. Ich verstehe das auch nicht ganz. Vor allem, was hinten der Caliper macht.
Ich denke auch, dass das vom Vision Assistant kommt.

Mein Hauptproblem ist ja: Der Laserstrahl ist nicht unbedingt immer derselbe, wenn das Bild erzeugt wird. Das muss ich berücksichtigen. (Deswegen waren auch vermutlich so viele Blöcke hintereinandergeschaltet). Ich muss ja die Höhe der Abschattung bzw. die Pixel messen. und das möglichst genau).
Das Bild wird ja hinten ausgegeben, jedoch kriege ich keine Werte raus. geht das irgendwie einfacher und besser?


RE: Pixel aus Bild auslesen - b.p - 02.06.2011 19:44

Wir haben dir gezeigt, wie man ein Bild binarisiert.
Was dann passiert, musst du dir selber ausdenken - und kannst ja gerne konkrete Fragen stellen. Bildverarbeitung ist so - da kommen komische Variationen raus, und man muss nachdenken, wie man sie in den Griff kriegt. Das Programmieren ist in der Regel schneller, als das Nachdenken.

So würde ich an deiner Stelle vorgehen, wenn du nicht einmal versuchen willst, "richtig" zu programmieren: Es gibt einen halbwegs funktionierenden Kantendetektor im Vision Assistant. Edge Detector, Simple. Da du nur 2 ausgeprägte Linien hast, kannst du einfach einen horizontalen Strich in der Mitte (an Stelle des Lasers?) als ROI machen. Dann wählst du "erste und letzte" oder "alle" oder so, und bekommst ein Clusterarray mit 2 Kanten. Du greifst mit "Array indizieren" auf Teil 0 und 1 des Clusterarrays zu, und schlüsselst dann den Cluster nach Namen auf. Dann hast du zwei y-Koordinaten, die du subtrahierst und ausgibst.
Ich weiß nicht, wie deine Bilder sich variieren, ich weiß nicht, wo genau man bei deinen Bildern messen muss, aber mit den gegebenen Informationen ist das die einfachste Lösung, die du hinkriegst.

Aber nein, es gibt kein magisches vi, dem man die Probleme füttern kann, wenn man selber nicht einmal klar definieren kann, was sie sind. Und fremder, undokumentierter, und nicht funktionierender Code ist so gut wie wertlos.

Gruß,
Birgit


RE: Pixel aus Bild auslesen - Robert85 - 02.06.2011 20:24

Wenn man es übersichtlicher machen will, vielleicht mal eine gestapelte Sequenzstruktur nehmen (wenn die Daten aufeinander aufbauen und eine Abhängigkeit untereinander haben, was hier der Fall ist, soweit ich das richtig gesehen habe, evtl. mit lokalen Sequenzvariablen arbeiten).
Bei sich wiederholenden Sachen: Evtl. eine Schleife durchlaufen lassen und die Werte dynamisch anpassen. Für die verschiedenen ROI-Cluster's ein Array anlegen und bei entsprechenden Schleifen-Index an die "Edge-Tool"-Blöcke legen ...!?
Die "Edge-Options" sind jedesmal gleich. Da reicht dann ein Konstanten-Block.


RE: Pixel aus Bild auslesen - lv-laie - 02.06.2011 21:44

Ich werde es morgen ausprobieren.

Danke vielmals für eure Hilfe bis jetzt!!!


RE: Pixel aus Bild auslesen - sh81 - 07.06.2011 11:29

*Hust* ok da kommt man hier ins Forum und dann das =)

Studienarbeit beim Harzer ... schön wenn man sein "Werk" ( wenn man es so bezeichnen kann ) mal wiedersieht ^^

Ja das VI ist mit dem Vision Assistant erstellt ... schick mir mal deine Email-Add per Pm ... müsste noch ein paar Daten für den Assistant rumliegen haben ... da siehst du am besten was das Programm macht Wink

Wenn sonst noch Fragen sind ... wie gesagt schick mir ne Pm =)

MfG
S.H