-
-
Erfahrener Benutzer
Roboter Genie
Bildverarbeitung Hough-Transformation Alternativen
Hallo... Habe ein Bild aus einem Interferometer das bestimmte streifen / ringmuster ergibt.
wenn ich das jetz Fouriertransformiere bekomme ich bei nem streifenmuster ein maximum in der mitte, sowie 2 kleiner maxima links und rechst bzw oben und unten davon, (zb link oben, rechts unten).
Um zu sehe in welchem Winkel die Streifen verlaufen kann ich jetz einfach schauen in welchem winkel die gedacht linie durch die 3 maxima verläuft .
(das macht bis jetz die hough-transformation)
Is aber irgdnwie suboptimal, wiel sehr rechenaufwändig...
Hat irgdnwer ne idee, wie ich das rechentechnisch günstiger lösen kann?
Bei so linenfolgerobotern könnte man das ja auch so ähnlich lösen oder?
(wens intressiert: geht drum ein Objekt ganz supigenau zu vermessen, dazu muss es aber erst positioniert werden, mit dem streifenmuster kann man dann erkenne wohin das geschoben werden muss.. so ungefähr)
bin für alle tipps dankbar...
-
Erfahrener Benutzer
Roboter-Spezialist
goara,
ich nehme an, Du arbeitest mit einer zweidimensionalen FFT? Das Endergebnis, dass Dich interessiert, ist der Neigungswinkel des "Streifenmusters"? Welche Verarbeitungsschritte machst Du zwischen FFT und Hough-Filter?
Ciao,
mare_crisium
-
Erfahrener Benutzer
Roboter Genie
hallo mare_crisum...
genau is ne 2d fft
als erstes habe ich das gemessene bild überlagert mit dem sollbild:
Bild hier
wenn es nicht genu positioniert ist also verschoben gibt es dieses linienmuster..
daraus will ich jetzt die verschiebung bekommen.. erst fft -->
Bild hier
dann die maxima suchen :
Bild hier
und dann die hough
Bild hier
das funktioinert so auch.. aber es ist ein wenig übertireben mit der hough finde ich, das kann man doch sicher auch einfacher lösen oder ??
-
Erfahrener Benutzer
Roboter-Spezialist
Tachchen goara,
sieht sehr interessant aus . Darf man wissen, wie das Bild entsteht?
Ich glaube auch, dass es einfacher geht. Guck' Dir doch mal die angehängte Datei an. Den Algorithmus, den ich da beschreibe, kannst Du auf die Fouriertransformierte loslassen. Er liefert Dir dann unter anderem die Steigung einer Geraden, die mitten durch die hellsten Bereiche verläuft. Man kann das auch noch weiter ausbauen, so dass das Ding auch eine Genauigkeitsschätzung für die Steigung und den Aufpunkt liefert.
Sag' mal, ob's funktioniert.
Ciao,
mare_crisium
Edit_1: Du wendest die FFT auf das "gemessene bild überlagert mit dem sollbild" an. Kannst Du die beiden Bilder hier mal einzeln (vor der Überlagerung) einstellen? Vielleicht kann man ja auch den Überlagerungsschritt einsparen.
Übrigens gibt es für diese hübsche schwarze Figur mit den vier Schleifchen an den Ecken (ein Hypozykloid) auch eine mathematische Beschreibung.
mare_
-
Erfahrener Benutzer
Roboter Genie
hallo mare..
erst mal danke fuer die antwort.. war grad ne woche im urlaub, desswegen hab ich nix geschrieben...
das bild entsteht in einem interferrometer, allerdings werden mehrere kleine bereiche (diese schleifen) gemessen, und nicht alles auf einmal, damit es überall scharf ist.
das originalbild kann ich mal suchen, dann poste ich das hier.. da sieht man aber nicht wirklich was interessantes.
wo ist denn die angehängte datei ?? kann die hier nirgends entdecken ???
mfg
goaran
-
Erfahrener Benutzer
Roboter-Spezialist
Guten Abend, goara,
ich hatte die Datei wieder gelöscht, weil ich nichts von Dir gehört hatte und ich immer Schwierigkeiten mit der upload-quota habe. Die Datei ist hier wieder angehängt. Meine Methode ist eine Abwandlung des bekannten Algorithmus, mit dem man nach dem Prinzip der minimalen Summe der Abweichungsquadrate (vulgo "Methode der kleinsten Fehlerquadrate") eine Ausgleichsgerade durch eine "Punktwolke" legt. Im Prinzip bieten auch fast alle Tabellen-Kalkulationsprogramme so eine Funktion an (z.B. Openoffice.calc oder MS-Excel). Wenn Du den Schwellwert für die Maximums-Suche etwas heruntersetzt, bekommst Du mehr als nur 4 Punkte - eben eine grössere "Punktwolke". Mit einer grösseren Anzahl von Datenpunkten kannst Du den Einfluss des "Rauschens" auf die Auswertungsergebnisse verkleinern.
Die 4 Maxima im vorletzten Bild gehören meiner Meinung nach zu dem schwach geneigten Streifenmuster, das man im Originalbild sieht. Wenn man dieses Muster ohne die überlagerten "Schleifen" bekommen könnte, dann lieferte die Auswertung genauere Ergebnisse.
Die Überlagerung, die Du erwähnst, ist auch aus folgendem Grund für die Auswahl der Auswertungsmethode interessant: Wenn Du zwei Originalfunktionen durch Faltung überlagerst und dann fourier-transformierst, kommt dasselbe heraus, als wenn Du beide Funktionen separat fourier-transformierst und die Fouriertransformierten dann miteinander multiplizierst. Dasselbe gilt auch umgekehrt: Eine Faltung der Fouriertransformierten führt bei der Fourier-Rücktransformation zu multiplikativer Überlagerung im Raum der Originalfunktionen. - Will sagen: Wenn man die einzelnen Originalfunktionen separat fourier-transformieren könnte, oder die Überlagerung ganz weglassen könnte, wäre die Auswertung vllt noch stärker zu vereinfachen.
Na, es gibt eben einige Möglichkeiten, aus Deinen Daten was zu machen .
Ciao,
mare_crisium
Edit: Anhang gelöscht wg. Upload-Quota
-
Erfahrener Benutzer
Roboter Genie
hallo mare.. nochmal danke fuer die datei.. habe sie mir gezogen, kannst du also wieder löschen..
werde mir das mal anschauen, aber das hört sich ganz brauchbar an..
ja die maxima kommen von den streifen, und die streifen sind ja auch das messergebnis das ich haben will (zumindest beim ersten schritt für die ausrichtug)
Die Schleifen kann man leider nicht wegbekommen, das liegt an der Messmethode.
Werde mal versuchen das anzuwenden und dann mal die Ergebnisse (falls was brauchbares rauskommt hier reinstellen)
-
Neuer Benutzer
Öfters hier
hallo mare
Hab mir dein pdf gründlich durchgelesen und bin echt beeindruckt. Habe mir selbst ein ähnliches Verfahren überlegt, jedoch hab ich eine ganz andere Problemstellung. Ich wollte endlich mal eine brauchbare alternative zum hough algorithmus programmieren, der ebenfalls auf der methode der kleinsten quadrate beruht, jedoch auch mehrere Linien in einem Bild finden kann und am besten noch anfangs und endpunkt findet. Hast du dir zu dem Thema schonmal gedancken gemacht?
Bei der Methode der kleinsten quadrate kann man ja z.B. diesen Faktor r bestimmen, der den Grad der liniaren Abhängigkeit angibt (wertebereich -1;1). Damit bestimmt man mit welcher wahrscheinlichkeit eine Ansamlung von Punkten zu einer Linie gehören. Ich möchte also irgendwie eine Ansamlung von Punkte anschauen und gucken, ob das hinzufügen des nähsten Punktes dazu führt dass r unter dem Threshold liegt. Wenn das der fall ist darf der Punkt zu der Ansammlung hinzugefügt werden, sonst nicht. Nachdem man dann mehrere ansamlungen hat kann man für jede einzelne mit linearer regression eine Linie berechenen und so hoffentlich bessere ergebnisse als die hough transformation erreichen.
Mir fehlt vor allem die zündende Idee, in welcher Rheienfolge man die Punkte im Bild durchlaufen soll, wie man an die erste ansammlung von Punkten kommen soll und wie man das programm laufzeittechnisch gut designen kann.
-
Erfahrener Benutzer
Roboter-Spezialist
Hi, tompcat,
danke für die alogrithmischen Blumen !
Interessante Idee, die Du da vorschlägst. Ich melde mich, wenn ich meine Lösungsidee besser formulieren kann.
Ciao,
mare_crisium
-
Neuer Benutzer
Öfters hier
hi mare crisisum
Würde mich echt interesieren, was du für lösungsansätze hast. Ich stecke momentan woanders fest. Annahme wir hätte ein binarisiertes Bild, aus dem wir die Linien bestimmen wollen. Dann könnte man das Kartesische Produkt zu all den Punkten ausrechnen die weiß sind (vectoriell). Und trotz diesem Aufwand O(2^n) wird es schwer daraus die wahrscheinlichen linien zu bestimmen. Der Faktor der linearen abhängikeit, wird dann groß, wenn zufälligerweise 3 Punkte genau in einer Linie stehen. Wenn man aber eine Linie aus 40 Punkten erkennen möchte ist die wahrscheinlichkeit, dass man sie findeted sehr gering mit dem Faktor der linearen abhängikeit. Man könnte natürlich auch irgendwie die anzahl der Punkte irgendwie mit in die rechnung aufnehmen, aber irgendwie erscheint mir das nicht als eine schöne lösung / hab noch keine formel gefunden, die die anzahl und die Lineare abhängigkeit in ein schönes Verhältniss zueinander legt.
Hab mich mal mit einem Mathematiker unterhalten, der die idee hatte das karthesische produkt auf sagen wir mal 7 elemente zu beschränken, aus allen Tupeln die lineare Abhängigkeit zu berechen, dann die Regresionsgerade zu ziehen, gucken welche punkte sonst noch gut passen, indem man sich den Abstand zur geraden ansieht, neue regressionsgerade berechnen.... und den Vorgang solange wiederholen, bis keine Punkte mehr dazukommen. Hier könnte man probleme erhalten, wenn eine linie stark verauscht ist und die andere nicht, jedoch ist das ein fall, der nicht alzuwahrscheinlich vorkommt, also eventuell brauchbar. Was hast du dir überlegt?
schöne Grüße
Tompcat
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen