LabVIEWForum.de - Pixel Auslesen

LabVIEWForum.de

Normale Version: Pixel Auslesen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo liebes Forum,

ich habe eine Frage bezüglich meines Bildverarbeitungsprojektes.

Das Einlesen einer bmp-file, dessen Darstellung, sowie die Kantenerkennung und deren Darstellung habe ich bereits bewältigt (siehe Anhang).
Nun möchte ich die Grauwertdaten des 2D Arrays nach der Kantenerkenung in ein txt-file schreiben. Bisher habe ich es nur geschafft das Array als Matrix darzustellen und dann manuell nach Excel zu exportieren. Dort konnte ich für alle weissen Pixel den Wert "128" erkennen. Die Kanten waren mit Integers ungleich 128 zu erkennen.

Letztendlich soll in der Txt die Binärinformation der Kantenerkennung abgebildet werden (Also 1 für Pixel schwarz, 0 für Pixel weiss). Demnach müssten die Elemente des Arrays wie folgt verändert werden: Wandle alle Werte = 128 zu 0 um, Wandle alle Werte ungleich 128 zu 1 um.

Könnt ihr mir einen Tipp geben wie ich bei diesen beiden Problemen weiterkommen Blush ?

PS: Die Funktion "getPixelValue" habe ich bei meiner Version unter "Pixel Manipulation" nicht gefunden...
Hallo lil,

Zitat:Demnach müssten die Elemente des Arrays wie folgt verändert werden: Wandle alle Werte = 128 zu 0 um, Wandle alle Werte ungleich 128 zu 1 um.
Meinst du so etwas triviales hier?
[attachment=49541]

Zitat:Nun möchte ich die Grauwertdaten des 2D Arrays nach der Kantenerkenung in ein txt-file schreiben. Bisher habe ich es nur geschafft das Array als Matrix darzustellen und dann manuell nach Excel zu exportieren.
Was spricht gegen die Funktion "Write to Spreadsheet file" in der Dateifunktionspalette?
Danke Dir Gerd ! Hab es mittlerweile hinbekommen. Array to Spread Sheet String und Write Text File haben es gebracht.
Leider konnte ich meinen Post nicht editieren, aber ich habe noch eine weitere Frage.

Nun, da ich die Bildinformation binär in einer Tabelle (2D Array I 16) dargestellt habe, möchte ich diese gerne in einem XY-Plot darstellen. Dieser möchte logischerweise keinen 2D Array als Input.

Letztendlich soll der Graph (die abgebildete geschlossene Kontur) durch die Einträge im Array gebildet werden, die eine "1" beinhalten. Später möchte ich noch 4 weitere Arrays in den selben Graph einspeisen, um dann einen Best Fit durch alle 5 Datensätze zu legen.

Habt ihr diesbezüglich noch einen kleinen Denkanstoss für mich?
Besten Dank

liloop
Hi liloop,

Zitat:da ich die Bildinformation binär in einer Tabelle (2D Array I 16) dargestellt habe, möchte ich diese gerne in einem XY-Plot darstellen.
Um Bilder darzustellen, verwendet man entweder den "2D Picture Indicator", den Intensitätsgraph - oder IMAQ (kostenpflichtiges Addon)…

Wenn du wirklich einen XY-Graph verwenden willst, musst du die Daten in deinem Array umwandeln in Koordinaten (XY-Paare), um damit dann einen Plot zu erstellen.

Du darfst dir aussuchen, was einfacher für dich ist… Big Grin
Hm, aber es geht ja nicht mehr um die Bilddarstellung, sondern darum die Binärinformation des Bildes bzw der Bilder zu plotten und dann zu fitten.
Gibt es hierfür noch einen weiteren Ansatz?

IMAQ Addon habe ich nicht zur Verfügung und der Intensity Graph macht für meine Anwendung keinen Sinn, oder?


Habe ein Matlab-Beispiel gefunden, dass genau das beschreibt, was ich meine:

http://stackoverflow.com/questions/32807...white-plot
Darf ich fragen, warum du genau einen xy-Graphen verwenden willst und ein normaler 2D-Indikator nicht reicht?

Brauchst du Konturinformation (also ein 1D-Array mit Punkten) anstelle von Kanteninformation?
Wenn nein, dann würde ich das ganz dringend bleiben lassen - und das hat dann nicht mehr viel mit LabVIEW zu tun, sondern ganz einfach mit der Reimplementierung von IMAQ-Funktionen.
Hallo b.p,

danke für deinen Beitrag.
Meinst du damit, dass eine Kante eine Gerade ist und eine Kontur vielmehr eine Kurve? Smile

Letztendlich geht es bei meiner Anwendung dann um einen Kontur, im besten Fall eine Ellipse, aber eher eine unstrukturierte Geometrie.
Dessen "Kante" soll für 5 ähnliche Bauteile mittels Kameraaufnahme von oben ermittelt werden. In einem zweiten Schritt soll diese 5 Konturen übereinandergelegt und gefitted werden. Die hierdurch ermittelte Kontur gilt später als Referenz für weitere Messungen.

Würdest du vorschlagen das IMAQ Addon zu beziehen oder gibt es noch andere Möglichkeiten? Mein Programm funktioniert einwandfrei bis einschliesslich zu dem Punkt, an dem ich die Kanteninformation der 5 Bauteile binär in einem Text-File speichere. (Ich weiss, das Programm sieht etwas unstrukturiert aus, aber ich bin ein LabVIEW-Beginner Blush )

Viele Grüsse
Hi,
nein, ich mein was anderes, aber lassen wir mal Begriffsdefinitionen, das bringt dich in diesem Fall nicht weiter.

Lass mich mal reiterieren, was ich in deine Frage reininterpretiere:
Du hast n Bilder von irgendwelchen Objekten, die im Grunde gleich ausschauen. Das sind deine "goldenen" Muster, das heisst, die sind ok. Daraus willst du per Mittelwert eine Idealkontur ableiten, mit der du dann jede deiner neuen Konturen vergleichst. zB 01.png, 02.png

Im Moment hast du Bilder von deinen Bauteilen, und die sind gut genug, dass du saubere Kanten extrahieren kannst? (Konzepthaftes Beispielbild im Anhang).
Sind wir auf dem gleichen Stand?

Wenn ja - wie schwierig ist es für dich, NI Vision zu organisieren? (letztes Bild im Anhang - übereinanderlegen mit "geometric matching"- programmiert in 2 Minuten (also für mich :-))
Weil deine nächste Aufgabe wird sonst ein spannender kleiner Ausflug in die Welt der Image-Registrierung.. und mit spannend meine ich eher aufwändig.

Grüsse
Birgit
Hi Birgit,

danke dir für deine Antwort

(05.05.2014 12:47 )b.p schrieb: [ -> ]Lass mich mal reiterieren, was ich in deine Frage reininterpretiere:
Du hast n Bilder von irgendwelchen Objekten, die im Grunde gleich ausschauen. Das sind deine "goldenen" Muster, das heisst, die sind ok. Daraus willst du per Mittelwert eine Idealkontur ableiten, mit der du dann jede deiner neuen Konturen vergleichst. zB 01.png, 02.png

Im Moment hast du Bilder von deinen Bauteilen, und die sind gut genug, dass du saubere Kanten extrahieren kannst? (Konzepthaftes Beispielbild im Anhang).
Sind wir auf dem gleichen Stand?

Genauso ist es! Kantendetektion klappt einwandfrei. Jetzt muss ich, wie du sagst, die Idealkontur aus den Mittelwerten bilden.

Ich habe mal etwas durch die VI Tabs geklickt und dort Vision and Motion entdeckt. Allerdings scheinen nicht alle VIs vorhanden zu sein. Welche wären denn die, die ich benötige? Helfen dir hier Screenshots von den Paletten?

Viele Grüße
lilhoop
Seiten: 1 2 3
Referenz-URLs