LabVIEWForum.de - IMAQ Extract Curves ungenau?!?!?

LabVIEWForum.de

Normale Version: IMAQ Extract Curves ungenau?!?!?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo

Ich habe an meinem Projekt mit den Gangprofilen ordentlich weiter gearbeitet. Inzwischen bin ich soweit, dass das Sekellet ordentlich angezeigt wird.
Nun will ich einen Startpunkt auf diesem Skellet per Hand festlegen, von dem aus im Urzeigersinn über den Kreis gelaufen wird, um auf ihm Punkte zu setzten. Die Koordinaten der Punkte sollen dann später in eine Textdatei gespeichert werden.
Ich benutze, um die Punkte zu bekommen, die Funktion IMAQ Extract Curves. Allerdings kommen nicht die exakten Werte raus, sondern die zurückgegebenen Punkte liegen meisten ein bis zwei Pixel inner- oder außerhalb des eigentlichen ROIs.
Ich komme an dieser Stelle leider nicht weiter. Vielleicht hat ja jemand von euch noch eine Idee, wie ich möglichst einfach an die x und y Koordinaten des ROIs komme, und diese am besten in Urzeigersinn (oder von mir aus auch gegen den Urzeigersinn, hauptsache zusammenhängend).

Im Anhang habe ich mal das Programm hinzugefügt und das Bild mit dem ich rumteste.

Grüße
caveman
Hmm,

ich werde noch nicht ganz schlau aus dem VI. Du möchtest einen Punkt auf dem Gangprofil auswählen. Wenn ich diesen Punkt ausgewählt habe, werden sozusagen "Stützpunkte" auf dem Skelett/Gangprofil gelegt (im Uhrzeigersinn) und diese Stützpunkte im Array ausgegeben.

Ist das so richtig?


Gruß
' schrieb:Hmm,

ich werde noch nicht ganz schlau aus dem VI. Du möchtest einen Punkt auf dem Gangprofil auswählen. Wenn ich diesen Punkt ausgewählt habe, werden sozusagen "Stützpunkte" auf dem Skelett/Gangprofil gelegt (im Uhrzeigersinn) und diese Stützpunkte im Array ausgegeben.

Ist das so richtig?
Gruß

Hallo

Also es soll ein Startpunkt auf dem Skelett angegeben werden. Von diesem Startpunkt aus sollen, im oder gegen der uhrzeigersinn, auf der Linie des Skeletts gesetzt werden. Ich möchte 25 Punkte über das Skelett verteilen. Dabei soll vom Startpunkt ausgegangen werden. Die X und Y Koordinaten sollen dann erstmal in ein Array geschrieben werden, welches später in eine Textdatei gespeichert werden soll.
Ich hoffe ich konnte deine FRage beantworten.

Gruß
Meine Fragen gehen jetzt wieder weiter:

Möchtest Du immer 25 Punkte oder auch mal mehr / weniger? Und wie sollen diese Punkte verteilt sein - vom Schwerpunkt des skelets aus z.B. alle 15°, oder ist das Ganze Umfangsabhängig und entlang gleicher (Umfangs-) Strecken des Skelets soll dann ein Punkt gespeichert werden?

Ich frage deshalb, weil ich evtl. einen Alternativweg einschlagen würde. Da das Image ja im Prinzip schon alle Koordinaten enthält, könntest Du ja das ganze mathematischer lösen:
Ich sage nur: Undverknüpfung einer Geraden (Punkt/Richtungsform oder "Overay - gemergete" Linienschaar siehe Bild) mit dem Skelett.

[attachment=3378]

Das Schreiben in eine Datei sehe ich jetzt nicht so als Problem - dazu gint es hier im Forum dann ja auch schon etliche Beiträge.

Gruß
Hallo

Alsi ich will nicht immer 25 Punkte haben. Das habe ich aber inzwischen auch schon implementiert. Mit einer Linienchar ist es leider nicht getan, da es Profile gibt, für die man keinen Sinnvollen Mittelpunkt finden kann. Ich habe heute auch wieder ein ganzes Stück geschafft. Inzwischen sieht das Programm wesentlich übersichtlicher aus und bietet auch mehr Funktionen. Ich stelle es dir später mal rein. Ich denke mit der jetztigen Version wirst du auch ehr verstehn um was es geht.
Ich hänge grade noch an einer Kleinigkeit und ein wenig Dokumentation und dann ist es bereit um nochmals hoch geladen zu werden. dann beschreibe ich auch noch mal genau meine Problemstellung.

Gruß
So, hier jetzt das von mir soweit fertige kleine Programm.
Und dazu eins der Bilder mit denen ich Testweise gearbeitet habe.

Das Problem mit Extract Curves ist folgendes:
Er findet zwar die Linie des Skeletts und setzte alle gefundenen Punkte in ein Array, aber die Punkte die er findet, liegen nicht immer genau auf dem Skelett, sondern teilweise innerhalb, teilweise außerhalb des Skeletts. Die Punkte liegen nicht weit weg von der Curve, sie liegen meistens nur ein Pixel neben der Linie. Ist Extract Curves ungenau oder habe ich die Funktion einfach falsch verstanden/angewendet?


Grüße
caveman

[attachment=3409]
' schrieb:Die Punkte liegen nicht weit weg von der Curve, sie liegen meistens nur ein Pixel neben der Linie. Ist Extract Curves ungenau oder habe ich die Funktion einfach falsch verstanden/angewendet?
Grüße
caveman

Hallo.

Ich habe mir jetzt mal auf die schnelle ein VI gebastelt. Ist nicht schön, aber es reicht zum erklären.

Es wird ein exakter Kreis eingefügt. Dieser wird dann mit dem Extract Curves ausgewertet. Und siehe da: es stimmt: es wird nicht das Skelett als Array ausgegeben, sondern immer etwas daneben.

Meine Vermutung:

Wenn Dir die Theorie hinter den erweitereten Pixeloperationen etwas sagen, kannst Du mir vielleicht folgen.

Es scheint mir ganz so zu sein, dass hir nicht das "1" Pixel als Ergebnis gezeigt wird, sondern das Pix davor (hier: Linksseitig bzw. von Oben) also der Übergang. Da diese Operation mathematisch mit einem Feld, wie es z.B. auch für den Threshold verwendet wird (3x3, gefüllt mit "1", UND-Verknüpft) erfolgt, entsteht dieser Effekt. Ist jetzt sehr theoretisch - ich weiß.

Hier wird kein 3x3 Feld mit "1" benutzt, sondern (ich weiß es nicht sicher) z.B. eines der folgenden:

(1) ----------- (2)

0 0 0 ----------- 0 0 0
0 0 0 ----------- 0 0 0
0 1 0 ----------- 0 1 1

Wenn dieses Feld (1) über das Image "läuft" und mit den Pixelwerten "Verundet" wird, entsteht also ein versatz von ziemlich genau einem Pixel nach unten. Feld (2) ist da schon komplizierter - das trete ich jetzt nicht breit hier. Du musst also damit leben - oder gegenrechnen. Brauchst Du diese Genauigkeit von einem Pixel unbedingt?

Wenn Du mehr darüber wissen möchtest sag bescheid, ich habe da noch Theorie rumfliegen...

Gruß!
Hallo Mr.T

Ich konnte deine Erklärung nachvollziehen.
Eine aufwengige mathematische Gegegenrechnung werde ich auf jeden Fall nicht einbaun, so wichtig ist der eine Pixel dann doch nicht. Mir ging es hauptsächlich nur darum zu wissen, ob es an der Funktion selber oder an einem programmiertechnischen Fehler meinerseits gelegen hat. Da es nicht an mir liegt bin ich jetzt beruhigt Smile

Danke für deine Mühen.

mfg
caveman
Referenz-URLs