PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ellipsenerkennung durch Hough-Transformation (darstellen?)



troede
05.09.2006, 20:13
Hey!

Wenn ich eine Ellipsenerkennung durch die Hough machen will hab ich ja die unbekannten X + Y + a (Breite der Ellipse) + b (Höhe der Ellipse).

Habt ihr ne Idee wie man das grafisch darstellen kann dann? Bei der Linienerkennung sind es ja nur m (Steigung) und t (Y-Achse) die man dann in einem m-t-Diagramm darstellen kann, aber wie mein oberes Bsp?

Noch etwas, wie würdet ihr eine gewisse unschärfe in die Erkennung hineinbringen? An einem Punkt die Breite/Höhe variieren, oder einfach die "Nachbarellipse" mit einbringen?


P.S.: Ich mach für einzelne Themen immer einzelne Threads auf, hoffe das ist OK, dient bei der Suche der Übersichtlichkeit.

mirage
05.09.2006, 23:34
Du hast also im Prinzip 4 Dimensionen, die du darstellen willst. 8-[ Eine Möglichkeit wäre, das ganze im 3D-Raum darzustellen, und als vierte Dimension noch Farben hinzu zu nehmen.

Habe das ganze übrigens kürzlich auch gemacht, aber mit Kreisen. Läuft mittlerweile mit der Gameboy-Cam auf einem AVR-Mikrocontroller.

troede
05.09.2006, 23:44
Hey!

Die Darstellung ist eigentlich mehr für mein persönliches Verständnis...ist nicht das wichtigste. Hier auf dem Screenshot sieht man wie weit ich bis jetzt bin. (links das Ausgangsbild mit eingezeichneter gefundener Ellipse)

Das Problem wird jetzt noch sein die Unschärfe reinzubringen, die verschiedenen Radiusgrößen. Denn die größe eines Gesichts is ja nich immer bekannt und auch nicht immer "elliptisch".


Noch ne Frage, dass dort auf dem Screeni ein Maximum ist erkenn ich ja, aber wie kann ich dass denn mit dem PC rausfinden? Was ich im Moment mach ist einfach nur Pixel für Pixel eine neue Testellipse zu fahren und beim größten Wert weiß er dass eine Ellipse da is.

Wo speicher ich denn die Ergebnisse am besten hinein? In ein Array (wie?), in ne Matrix?
Ich progge übrigens in VB.

Grüße!

p.s.:
Wenn das funktioniert werd ich mich nochmal dran machen, die Farbtrennung zu verbessern, anscheinend gibt es ja gut Farbfilter die die Hautfarbe filtern aber erstmal der Rest ;)

scales
06.09.2006, 00:54
Noch ne Frage, dass dort auf dem Screeni ein Maximum ist erkenn ich ja, aber wie kann ich dass denn mit dem PC rausfinden?

das versteh ich nicht ganz, was willst du mit dem PC rausfinden?
wenn das Gesicht nicht ganz auf dem Bild sein muss gibt es theoretisch kein Maximum, ansonsten ist es die Bildgröße



Wo speicher ich denn die Ergebnisse am besten hinein?

welche Ergebnisse?


ach und was für Gesichter?
ich seh auf den Bildern nur rote unförmige Sachen :-s

sorry für die Fragen aber ich versteh nicht ganz worauf du hinaus willst

troede
06.09.2006, 09:02
Tach!

Ich will rausfinden, wo eine Ansammlung von Maxima liegt.

Auf der linken-Seite siehst du jeweils das Ausgangsbild, dass in HSV umgewandelt wurde, danach der Sobel-Operator, auf der rechten Seite meine "Hough-Transformation" (ich weiß nicht ob die wirklich genau so funktioniert wie ichs gemacht hab...), auf jeden Fall untersucht er für jeden Pixel im Bild um sich rum wieviele Punkte auf einer Gedachten Ellipse (a/b unten in den Textfeldern angegeben) schwarz sind. Je mehr, desto wahrscheinlicher dass es eine Ellipse ist. (wenn bekannt ist dass es eine Ellipse gibt, ist natürlich das Maximum die Ellipse)

Nur wie man jetzt sieht ist eben noch viel "Müll" in der Umgebung, was sich auch nie ganz vermeiden lassen wird wenn man nur den H-Kanal nimmt (deswegen muss ich das auch noch verbessern später).

Was ich jetzt mit dem PC erkennen will lässt sich vllt am besten am untersten Bild zeigen. Gefunden wird eigentlich nicht wirklich der Mittelpunkt der dicken Ellipse (die aus mehreren dünnen besteht), sondern die erste gefundene Ellipse. Auf der rechten Seite sieht man jedoch einen roten Punkt, die Anhäufung der Maxima...
(d.h. nachher hab ich ein Array Akkumulator (X,Y,a,b) = wieviele Pixel sind um den Punkt X/Y auf einer Ellipse a/b schwarz)

Also wenn ihr ne Idee habt wär gut, ansonsten werd ich mal weiter ausprobiern ;)

Gruß

P.S.: Sorry wenn ich mich nich so verständlich ausdrücken kann, war noch nie meine Stärke ;)

Torr Samaho 2
06.09.2006, 09:17
Hallo!
Wie wärs mit einer Schwellenerkennung? -> Der ganze "schwache" Mist im Ergebniss deiner Transformation fliegt dadurch raus. Danach so'ne Art Schwerpunktberechnung bzw. Median in 2D.
Gruß

troede
06.09.2006, 22:27
Hey!

Braucht man für eine Schwerpunktberechnung nicht Vektoren oder sowas in der Art?

Grüße!

Torr Samaho 2
07.09.2006, 12:35
Malzeit
Ne!
Du ermitteltst die Randverteilung. Dann für jede Achse separat den µ-wert berechen. Siehe 2-D-Wahrscheinlichkeitsverteilung.
Gruß

Torr Samaho 2
08.09.2006, 08:47
Guten Morgen!
_
f1(x)= \ a(x, y)
/_
y

_
f2(y)= \ a(x, y)
/_
x

Und dann über f1 und f2 jeweils den Mittelwert bilden. Oder du suchst nur die Maximas, dann kannst du auch mehrere Elipsen auf dem Bild erkennen.
mfg Torr Samaho 2