INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Pixel Auslesen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

05.05.2014, 19:27
Beitrag #11

b.p Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 197
Registriert seit: Oct 2010

2009-14
-
DE_EN


Sonstige
RE: Pixel Auslesen
Entweder sind sie da, oder nicht. Die kann man auch leider nicht "besorgen".

Drück mal Strg+Leertaste. Das nennt sich Quickdrop, dauert beim ersten Laden ein bisschen, und damit kannst du jeden Befehl per Tippen raussuchen. Und dann gibt "Golden Template".. ein, oder fang das an, zu tippen. Wenns da was findet, bingo.

Alternativ kannst du auch im sogenannten Lizenzmanager nachschauen.
Da solltest du das Vision Development Module aktiviert haben (Screenshot)

Wir können aber auch theoretisch 30 Tage mit der Probelizenz arbeiten. Mit 30 Tage meine ich eine halbe Stunde, in der du dein Problem gelöst hast, und deinen Chef davon überzeugen kannst, dass sich die Lizenz gegen die Engineering-Zeit auszahlt :-)
(Falls du Uni-nah bist: Bei den meisten Academic-Versionen ist Vision mit dabei, aber nicht standardmäßig installiert, dh du musst es nur runterladen und aktivieren)

Grüße,
Birgit


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
06.05.2014, 11:16 (Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2014 11:23 von lilhoop.)
Beitrag #12

lilhoop Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Apr 2014

LabVIEW 2013
-
kA



RE: Pixel Auslesen
Hier ist alles was meine Vision and Motion Palette hergibt:

Kann ich damit etwas anfangen?

PS: Habe deine Antwort erst nach meinem Post gesehen. Ich schaue mal eben nach bzgl. Lizenzmanager und Trial Version


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.05.2014, 13:02 (Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2014 13:14 von b.p.)
Beitrag #13

b.p Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 197
Registriert seit: Oct 2010

2009-14
-
DE_EN


Sonstige
RE: Pixel Auslesen
Passt schon, du hast, was du brauchst.
So, jetzt lass uns mal langsam und Schritt für Schritt durchgehen.

Damit wir die gleichen Begriffe verwenden:
- ich definiere jetzt mal: Das Idealbild entspricht dem von einem Musterbauteil
- das Prüfbild ist das, was dann später x mal neu daherkommt.

Gehen wir ausserdem zur Vereinfachung davon aus, dass du mit 1 Idealbild arbeitest, und das noch nicht aus 5 Bildern errechnest. Das können wir nachher relativ leicht einfügen.

Wir machen die Reihenfolge so:
1) Das, was du hast, schnell in IMAQ umsetzen
2) Dein Idealbild "lernen" und dann im Prüfbild auffinden (nennt sich Geometric Matching)
3) Das Prüfbild so hin"drehen", dass die beiden übereinanderliegen (Koordinatensystem setzen)
4) Die beiden Bilder vergleichen (Golden Template Matching)
5) Profit!! Cool

Gut.Starte mal ein Programm namens "Vision Assistant", das ist irgendwo bei den NI Sachen drinnen.
Das ist eine interaktive Benutzerfläche, mit der man sehr gut LabVIEW-Algorithmen prototypen kann. Die kann man dann in LabVIEW-Code umwandeln, der zwar nicht optimal ist, aber funktioniert und eine gute Basis für spätere Programme ist.

Da ich keine Probebilder von dir habe, nehme ich mal meine eigenen.
Das heisst, deine Parameter werden anders sein, aber du musst halt Schritt für Schritt die Ergebnisse nachbauen.

Im ersten Schritt laden wir alle Bilder. Das heisst Idealbild und mehrere Prüfbilder.
   
Ich hab RGB-Bilder, dh ich mach noch einen kleinen Zwischenschritt (Color Plane Extraction) um Graubilder zu kriegen, aber der wird dich vermutlich nicht interessieren.

Mit diesen Pfeiltasten (die ganz rechte) kannst du dir dein Idealbild ins Fenster holen (ich hab hier grad ein anderes drinnen).
   

Im Idealbild erkennen wir die Kanten. Die sind bei Grayscale - Filtern drinnen.
   
   

Ich hab bei meinem einen einfachen Sobel genommen, weil er ein sauberes Ergebnis geliefert hat, evtl. nimmst du einen anderen Kernel (weiter unten kannst du deine eigenen definieren). Das Ziel ist auf jeden Fall ein sauberes Kantenbild.






So.
Nächster Schritt.
Geometric Matching.
Findest du ebenfalls links - bei Machine Vision - Geometric Matching. Wenn du das doppelt anklickst, kriegst du erst mal einen gekreuzten Mauszeuger, mit dem du ein Reckteck markieren kannst, in dem du suchen willst (sogenannten ROI). Im Zweifelsfall ziehst du den über das gesamte Bild.

Für Geometric Matching musst du erst mal ein Template erstellen, nach dem LabVIEW suchen soll.
   

Wenn du das klickst, kriegst du ein Fenster, in dem das aktuelle Bild angezeigt wird. Das ist dein momentanes Idealbild (das mit den 5 Bildern machen wir später.. falls nötig).

Du hast so ein Rechteckwerkzeug, und malst jetzt einfach um dein Template rum.
   
Dann klickst du auf "Next".
In diesem Fenster siehst du, was Vision als Kanten erkennt. Bei mir schaut das, bis auf ein paar Kanten ganz vernünftig aus. Das sind oft so kleine, fisselige Details - und da sage ich Vision, dass er diese Stellen ignorieren soll. Wir können gretrost einiges ignorieren, weil wir vergleichen ja nicht, wir suchen nur eine Position.
   

Gut.
Jetzt klickst du ein paar mal auf next oder Finish, und dann speicherst du dein Template unter einem sinnvollen Namen: zB geometric_template_01.png ab.
Das ist keine normale png-Datei (die darfst also nicht mit Photoshop verändern), da ist versteckt sogenannte Vision-Info drinnen.

Jetzt sollte das mit dem Suchen auch schon klappen.
Das heisst, wenn du jetzt ein Prüfbild lädts (oben links, Pfeiltasten), dann findet er Drehung und ein Rechteck.
   

OK, soweit?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.05.2014, 13:32 (Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2014 13:36 von b.p.)
Beitrag #14

b.p Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 197
Registriert seit: Oct 2010

2009-14
-
DE_EN


Sonstige
RE: Pixel Auslesen
So, wieder ein Schritt.

Die gefundene Drehung / Verschiebung umsetzen. Also als Basis für ein Koordinatensystem verwenden.
Die findest du bei den allgemeinen Processing Functions - Set Coordinate System.

Da muss man eigentlich nur aufpassen, dass man den richtigen Modus nimmt, nämlich den, der alle 3 Parameter (Verschiebung x,y,Drehung) berücksichtigt.

   

Gut.

Nächster Schritt.
Golden Template Comparison.

Dazu musst du wieder dein Idealbild in das Fenster laden.
Die Funktion findest du bei Machine Vision - Golden Template Comparison.
Klick auf New Template, und du kommst in ein bekanntes Fenster.
Dieses Mal ist es wichtig, dass du deinen ROI (das Rechteck) etwas grösser machst, als dein Objekt. Das ist nämlich der Rahmen, innerhalb dem er vergleicht, und wenn dein Idealobjekt kleiner ist..

Anyway. Nächstes Fenster.
Da musst du jetzt deine eigenen Parameter setzen.
Hier gehst um Kanten, die du ignorieren willst. Weil typischerweise ist ein Rand relativ unsauber.. und man sagt dann, ok, ignoriere 1-2 Pixel.
Bei mir ist das jetzt auch so. Ich habs so eingestellt, dass meine eigentliche Kante (wenn da Risse sind oder so) nicht als Fehler erkannt wird. Du musst diese Funktionalität aber nicht nehmen, die kann man später ausblenden.
   
Speichers als GoldenTemplate.png ab.

Der letzte Schritt ist, dass wir das Koordinatensystem dem Template zuordnen müssen.
Lade jetzt mal ein Prüfbild und nicht das Idealbild und vergleiche.. Die beiden liegen nicht übereinander.
Das heisst,
aus so was
   
machen wir
   
so dass es perfekt übereinanderliegt.
Evtl. kannst du bei den "Settings" Ignore Edges danach noch einstellen.

So. Teste das mit allen deinen Prüfbildern.
   

Und dann machen wir LabVIEW-Code daraus.

edit: achja, mitlesende Kollegen, ich weiss, dass man für sowas nicht wirklich Edge Detection braucht - aber wenn der OP da was stabiles hat, geh ich gern mit. :-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.05.2014, 11:32 (Dieser Beitrag wurde zuletzt bearbeitet: 11.05.2014 11:32 von lilhoop.)
Beitrag #15

lilhoop Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Apr 2014

LabVIEW 2013
-
kA



RE: Pixel Auslesen
Hallo liebe Birgit,

vielen Dank für deine ausführliche Erklärung. Ich musste mir erstmal alle Lizenzen zusammenbetteln und kann jetzt mit der eigentlichen Arbeit fortfahren. Meine Ergebnisse folgen asap Smile

Grüsse
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.05.2014, 12:49
Beitrag #16

lilhoop Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Apr 2014

LabVIEW 2013
-
kA



RE: Pixel Auslesen
So,

ich habe mich soweit durch den Vision Assistant gekämpft. Das Ergbnis meiner Edge Detection habe ich unten angehängt. Ein Originalbild ist leider zu gross, um es hier hochzuladen. Das Programm erkennt die Kante zwar in ihren groben Zügen, allerdings weiss ich nicht, ob das für eine Erkennung der gesamten Kante mit einer Genauigkeit von 0,5 mm ausreicht.

Müsste es bei der Erstellung des Templates nicht noch eine Funktion geben, welche "fortlaufende" Kanten erkennt und daraus eine geschlossene Kontur ermittelt (z.B. durch Interpolation o.Ä.)

Es werden auch viele Kanten erkannt die nicht zum Bauteil gehören. Allerdings kann ich keine "besseren" Bilder verwenden, da solche Störeinflüsse natürlich auch in der Industrie auftreten können.Construction

Eventuell könnte es auch ausreichen nur 4 Punkte auf der Kontur zu vergleichen. Denn an einigen Stellen funktioniert die Erkennung ja hervorragend.

Nochmals vielen Dank an Birgit für ihre super Erklärung!!

Grüsse


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.05.2014, 13:57
Beitrag #17

lilhoop Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Apr 2014

LabVIEW 2013
-
kA



RE: Pixel Auslesen
Sorry, dass ich nochmal Posten muss. Bekomme beim Editieren jedes Mal eine Fehlermeldung. Könnte das am Internet Explorer liegen?

Hab auf dem angehängten Bild mal dargestellt, was ich mit einer Überprüfung der Kontur an nur 4 Stellen meine.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.05.2014, 21:03
Beitrag #18

b.p Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 197
Registriert seit: Oct 2010

2009-14
-
DE_EN


Sonstige
RE: Pixel Auslesen
Hi..
ist mir nicht 100% klar, was du suchst, aber..

Funktioniert dein Golden Template so, dass es dir die gewünschten Differenzen anzeigt - du sie aber nur an bestimmten Stellen anschauen willst, weil auch sonstiger Kram drinnen ist? Sh 1.paint-Skizze - das innerhalb vom Schwarzen ist interessant.
   
Wenn ja, dann kannst du dein Bild ganz einfach maskieren.
Dazu erstellst du dir eine sogenannte Maske. (verzeih meine Paint-Skills Smile)

   
   
Beide Bilder (Maske und Ergebnisild) müssen Grauwert sein. Das geht innerhalb des Vision Assistant (mit den Funktionen Buffer - damit speicherst du das Ergebnisbild ab, Get Image - damit holst du die Maske und den arithm. Operationen bei den Graubildern). Aber schöner und eleganter ist es, wenn du es direkt in LabVIEW (ohne Buffer) machst.

Oder schwebt dir was anderes vor?

Grüße,
Birgit
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.05.2014, 11:12
Beitrag #19

lilhoop Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Apr 2014

LabVIEW 2013
-
kA



RE: Pixel Auslesen
Hi Birgit,

Wieso, deine Paint Skills sind doch hervorragend Big Grin

Genau, das hast du richtig verstanden. Das Idealziel ist natürlich: Erkennung der gesamten geschlossenen Kontur, um ein Template zu erstellen. Dieses Template soll dann an theoretisch jeder "infinitesimalen" Stelle des Umfangs der gesamten Kontur mit dem Prüfbild abgeglichen werden, um die maximale Differenz zwischen den beiden Linien zu ermitteln.

ABER: In meinem angehängten Bild wird nochmal deutlich, dass das Programm einige Stellen der Kontur auf Grund unzureichendem Kontrast zur Umgebung einfach nicht erkennt (siehe lila Rechtecke im Bild). Weiterhin fällt auf, dass die Kantenerkennung am markantesten an eben diesen vier gennannten Stellen funktioniert (deine schwarzen Kreis bzw meine roten Pfeile).

Dies wäre, im Sinne meines Projekts, immer noch eine sinnvolle Näherungslösung. Also möchte ich, doof gesagt, die vertikale Distanz (siehe Anhang) zwischen der Kontur des Templates und des Prüfbildes ermitteln an den vier besagten Stellen und in der GUI ausgeben.


Ich fasse nochmal zusammen, wie ich glaube, wie es weitergehen könnte: Blush

1. Ermittlung eines Golden Templates aus 5 Bildern durch Mittelung der Kontur (Du sagtest, dass man das am besten direkt in LV macht, oder?)

2. Erstellen eines Algorithmus, welcher die Differenz der Konturen von Template aus 1. mit einem neuen Prüfbild abgleicht und die ermittelte Differenz in den 4 schwarzen Kreisen auf dem Display ausgibt. (Wie legt man diese Stellen am besten fest?)


Hast du eine Idee für diese beiden Punkte Blush

Liebe Grüsse aus der Schweiz
lilhoop


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.05.2014, 12:11 (Dieser Beitrag wurde zuletzt bearbeitet: 12.05.2014 12:12 von b.p.)
Beitrag #20

b.p Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 197
Registriert seit: Oct 2010

2009-14
-
DE_EN


Sonstige
RE: Pixel Auslesen
Hi,

zu Punkt 1:
Ja, das macht man am besten in LabVIEW selbst.
Dazu musst du sie übereinanderlegen, und trivialerweise alle Bilder aufeinander addieren und mitteln. Persönlich würde ich allerdings eher in eine RIchtung Median gehen.. - und vor allem, noch einiges an der Vorverarbeitung verbessern. Mir scheint, da kann man noch viel rausholen.

zu Punkt 2:
Bei einer Golden-Template-Vergleich ist das rote eine "positive" und das grüne eine "negative" Abweichung von deinem Template, also bin ich mir nicht sicher, ob deine Fehlerdefinition korrekt ist.
Anyway. Ich würde an dieser Stelle ohnehin das Contour-Analysis VI verwenden - zusammen mit Compare Contours. Dem kann man genauso ein Template erstellen, kriegt dann aber Distance-Funktion zwischen Template und Prüfobjekt.

Das wichtigste ist aber, dass du deine Ausgangsdaten verbesserst. Keine guten Ausgangsdaten = keine guten Ergebnisse.
1) Kannst du noch minimal was an der Bildgebung ändern?
- schaut nach was Metallischen aus - schon mal einen Polfilter (im Zweifel zum Testen Sonnenbrille :-)) davor gehalten?
- das einzige wirkliche Problem ist das Objekt unten rechts (in den einem Bild, das ich sehe) - das ist kaum vom Prüfobjekt zu unterscheiden..
- Falls du eine Farbkamera hast (hoffentlich nicht).. ist es möglich einen anderen Farbraum zu nehmen..?
2) Fortgeschrittenere Kantendetektions-Methoden. Mit einem Kernel wirfst du quasi alles bis auf die Gradienteninformation weg.. du hast aber real mehr Information.

Grüße
Birgit
Hab noch ein paar mehr Ideen, aber schauen wir mal, wie wir so weiterkommen :-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Mittelwert der Helligkeit über alle Pixel im ROI London 24 13.823 11.03.2021 10:25
Letzter Beitrag: Martin.Henz
  Umrechnung pixel in mm GSP2014 6 8.303 20.03.2014 15:18
Letzter Beitrag: GSP2014
  Auswertung einzelner Pixel aus einer AVI-Datei tobi.rohde 1 3.891 20.02.2014 16:20
Letzter Beitrag: tobi.rohde
  Pixel aus Bild auslesen lv-laie 9 9.514 07.06.2011 11:29
Letzter Beitrag: sh81
  Anzahl der Pixel in ROI (Oval) bestimmen Peter Schulze 6 8.838 23.05.2011 19:13
Letzter Beitrag: unicorn
  Anzahl der Pixel von Partikeln in einem Grauwertbild bestimmen Peter Schulze 5 13.813 01.08.2010 21:45
Letzter Beitrag: wolfmichael

Gehe zu: