• Hallo zusammen,

    ich wollte mich mit Bildverarbeitung beschäftigen und wollte dazu Gesichter im einem Bild suchen. Dies gestaltet sich jedoch schwieriger als gedacht (wäre ja auch zu schön) - hat jemand eine Idee, wie man an soetwas bewerkstelligt, oder hat sich jemand schonmal mit soetwas beschäftigt?

    Ich hatte mir bisher überlegt, dem Bild erstmal die Farben zu nehmen und anschließend mit den Grauwerten zu arbeiten. Dann hatte ich mir überlegt Kanten(Übergänge von einem zum anderen Farbton) herrauszustellen.
    Diese Schritte funktionen auch jedoch entstehen dadurch keine brauchbaren Ergebnisse.

    Hat jemand eine Idee wie man da vorgeht? Ich habe auch bereits gegoogelt jedoch ohne hate ich nur fertig programme gefunden oder halbe erklärungen die nicht umzusetzen sind.

    grüße Moritz

  • Verschiedene Hautfarbtypen durch ein grelles Grün ersetzen und eine punktfixierte Auswertung machen, wo diese Punkte z.B. häufig vorkommen. Dann haste ein Gesicht :) Das halt aufs originale Bild übertragen.

  • Also als erstes die Teile des Bildes wegscheiden, die keine "Hauptfarbe" enthalten. Welchen Farbwert nehme ich für Hautfarbe am besten?. Und wie fahre ich dann weiter fort, ich möchte auch die Augen herrausstellen und denn Mund.

  • Ich weiß nicht in wie weit du im Thema "Computer Vision" gut im Saft stehst.
    Es ist zugegebenermaßen nicht ganz mein Fachgebiet aber ich was ich noch im Hinterkopf habe ist dass der Haar-Klassifizierer da noch der vernünftigste Ansatz ist.
    Prinzipiell kurz zusammengefasst werden viele Beispielbilder (Gesichter) genommen und aus ihrer Grauwertverteilung eine mittlere typische Grauwertverteilung berechnet. (genauer gesagt wird das Bild in rechteckige Bereiche mit einer gewissen Grauwertintensität unterteilt)
    Dann wird das Bild in dem ein Gesicht erkannt werden soll abgefahren und für die einzelnen Bereiche die mittlere Grauwertdifferenz des momentanen Bereiches mit dem Template verglichen.
    Wenn ein gewisser Grenzwert unterschritten wird bzw. der niedrigste Wert in einem Bereich erreicht wird, wird die Region als Gesicht erkannt.
    Prinzipiell ein abgewandeltes Template-Matching.

    Solche Berechnungen sind aber alles andere als trivial und wenn du nicht wirklich aus diesem Fachgebiet stammst wirst du eher weniger Erfolge zu erwarten haben.
    Um die Wahrscheinlichkeit zu erhöhen empfehle ich dir das ganze mit C++ in Verbindung mit der OpenCV-Bibliothek zu bewerkstelligen.
    Da ist zwar schon eine fertige Gesichtserkennung implementiert aber auch für den manuellen Weg hast du dort alles implementiert was du brauchst - und das noch sehr performant.
    Auch ich als Photogrammeter, welcher noch sehr viele Berührungspunkte mit der Computer Vision hat, müsste auch erst einige Bücher wälzen um so etwas von Anfang an selbst umzusetzen. Das ganze mal schnell in einem Forum zu erklären ist da schon eher unwahrscheinlich hinzubekommen.

    Wüsste ich allerdings nicht das es andere Herangehensweisen gibt würde meine erste Herangehensweise eine Ellipsen-Hough-Transformation sein mit der ich Gesichtsumrandung, Augen und Mund analytisch beschreiben könnte und Anhand ihrer Beziehung zueinander versuchen würde ein Aussage zu treffen ob es sich dabei um ein Gesicht handelt.
    In wie weit das umsetzbar ist - keine Ahnung.
    Das wär auch nur mein allererster spontaner Einfall dazu gewesen wenn es nicht andere Algorithmen gäbe.

  • Danke für die ausführliche antwork zu so später stunde ;) Das mit dem Tamplates hatte ich acuh schon gelesen jedoch sehe ich darin einen enormen rechenaufwand. Weiterhin ist template matching anfällig für Neigung des Gesichtes. Mmh ich denke ich verbessere zunächst mal die Hautfarbenerkennnung und werde dann die Kanten mal darüberlegen. Werde dann morgen mal meine Ergebnisse posten.

  • Logitechs Webcam programne arbeiten auf Basis der Augen, sie gehen von den Augen bis zu den rändern des gesichts...
    Also denke ich dass die einfachste Methode die von Logitech oder Aspirin ist ...

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • So ich habe jetzt die Hautfarben erkennung verbessert, indem ich nicht die Farbe direkt genommen habe, sonder das verhältnis von rot zu grün, grün zu blau und blau zu rot. dadurch wird die Helligkeit der Farbe unwichtig.
    [Blockierte Grafik: http://img221.imageshack.us/img221/2504/bild2s.jpg]So sieht es aus wenn man das ganze bild mit dem filter bearteiitet: (unten rechts)
    [Blockierte Grafik: http://img703.imageshack.us/img703/6717/bild3f.jpg]

    Einmal editiert, zuletzt von moritz1243 (6. Januar 2011 um 13:32)