LabVIEWForum.de - Edgde detection

LabVIEWForum.de

Normale Version: Edgde detection
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute,

das hier ist mein erster Beitrag in diesem Forum und ich hoffe ihr könnt mir mit meinem Problem weiterhelfen:
Ich bin ein blutiger Anänger was Labview angeht und versuche ein Programm zu basteln, das bei einer Kameraaufnahme erkennt, wenn ein quadratisches Objekt in das Bild gelegt wird.
Ich habe bei meinen Recherchen rausgefunden, dass es einige SubVIs gibt die das direkt erledigen können. Allerdings sind diese alle beim Vision development module und nicht beim Image acquisition module erhältlich. Leider steht mir nur das letztere zur verfügung. Hat jemand eine Idee wie ich das bewerkstelligen kann bzw. ob das überhaupt möglich ist? Leider ist es mir nicht möglich meine Programme anzuhängen. Ich hoffe das ist jetzt und in Zukunft kein Problem.

Grüße Jolle
Hallo Jolle,

Willkommen im LVF ...

Also ich würde das Bild wahrscheinlich mit einer geeigneten Schwelle binarisieren und dann die Bool-Übergänge als X/Y-Werte extrahieren. Dann müsste man irgendwie die Eckpunkte extrahieren. Da ist es sicher wichtig zu wissen, ob das Quadrat in einer Vorzugsrichtung unter der Kamera liegt, wenn es denn eins ist, oder ob es irgendwie dort liegen kann.
Im letzteren Fall ist hier sicher die größte Schwierigkeit. Wenn man die Eckpunkte aber hat, kann man die Punkte dazwischen in eine Linear-fit Funktion geben und prüfen, ob eine Gerade herauskommt. Wenn das gegeben ist, würde ich prüfen, ob die gegenüberliegenden Streckenabschnitte parallel zueinander sind, und ob alle 4 nahezu gleich lang sind.


Gruß, Marko
Cool vielen Dank für deine Antwort. Ich versuche die Sachen mal umzusetzen, aber das wird ein bisschen Zeit beanspruchen.
Ich melde mich dann nochmal, ob das so geklappt hat.

Gruß Jolle
Such mal bei Google nach OpenCV und LabVIEW, da gibt es einige Fertige Bibliotheken. Die machen genau das was du willst.
Servus, also ich hab jetzt mein Bild binärisiert, gebe mir dann ein Array mit der Pixelzahl aus und kann mein Objekt nach einigen Arrayoperationen mit roten Punkten umranden.
Allerdings lass ich zur Zeit vier for-loops über die Anzahl der Pixel laufen (um dann die Differenz benachbarter Pixel zu berechnen und ab einer gewissen Schwelle eben mit einen roten Punkt zu markieren).
Anscheinend ist das aber zu viel Rechenarbeit für Labview denn das Programm bricht immer zusammen (obwohl es mir das gewünschte Bild davor ausgibt).
Habt Ihr da irgendwelche Vorschläge wie ich dass optimieren kann?
Außerdem möchte ich immer noch die Eckpunkte detektieren, da fehlt mir aber noch die Idee wie ich mit Arrayoperationen an die Koordinaten komme.
Wäre cool wenn mir da jemand auf die Sprünge helfen könnte.
Liebe Grüße 2hands
(13.10.2019 18:14 )Jolle schrieb: [ -> ]...
Anscheinend ist das aber zu viel Rechenarbeit für Labview denn das Programm bricht immer zusammen (obwohl es mir das gewünschte Bild davor ausgibt).
Habt Ihr da irgendwelche Vorschläge wie ich dass optimieren kann?
...

Hallo Jolle,

zum einen müsstest du mal erklären, was du mit dem Zusammenbruch meinst und zum anderen: Warum hängst du nicht das von dir erstellte VI an?
So ist es etwas viel gerate...

Gruß, Marko
Hallo Marko,

also das Programm stoppt nicht nachdem es mir das Bild ausgibt. Sobald ich irgendetwas anklicke kommt eine Fehlermeldung und das Programm schließt sich.
Du hast recht. Ich versuche mal das Programm anzuhängen. Vielleicht kann man mir dann bessere Tips geben Smile
Wie gesagt vermute ich, dass die for-loops das Problem darstellen.

Liebe Grüße
Jolle
(15.10.2019 17:43 )Jolle schrieb: [ -> ]Wie gesagt vermute ich, dass die for-loops das Problem darstellen.

Hallo Jolle,

ich denke , wenn sich dein Programm bzw. LabVIEW einfach schließt, dann liegt das sicher nicht an den For-Loops. Wenn Forloops ein Problem haben, weil die Datenmenge zu groß ist, dann gibt es i.d.R. eine Speicherüberlaufmeldung.
Ich habe dir dein VI aber mal etwas modifiziert - die Vision-VIs kann ich nicht öffnen, da ich hier kein Vision installiert habe. Nach deiner Beschreibung denke ich aber, dass es da irgendwo haken wird.

Bei den For-Loops musst du dir angewöhnen, die Autoindizierung zu nutzen und ansonsten die Polymorphie von LabView, die deine ersten Doppelschleifen obsolet macht, zu nutzen.

Gruß, Marko
Hallo Marko,

vielen Dank schonmal für deine Verbesserungsvorschläge. Mir ist noch eine bessere Beschreibung meines Problems eingefallen:
Mein Programm bricht nicht wirklich zusammen, nachdem es mir mein Bild ausgibt hängt es eher und ich kann Labview nicht nutzen ohne es vorher zu schließen und wieder neu zu öffnen.
Wenn ich deine letzte Nachricht richtig verstehe denkst du, dass das Problem bei den Vision-VIs liegt oder?
Leider hab ich nicht wirklich eine Idee wie ich das Problem angehen soll. Falls du, oder irgendjemand sonst hier irgendwelche Ratschläge hat, wäre ich super dankbar.

Cheers.
Referenz-URLs