Gesichtserkennung

  • Hallo. Ich möchte mir ein Skript bauen, dass auf Fotos gesichter erkennt, diese ausschneidet und dann das ausgeschnittene Bild in einer .jpg speichert. Dabei sollte wirklich nur das Gesicht und die Haare später ausgegeben werden, also sämtliche Dinge die vll. noch ansatzweise im Hintergrund zu sehen sind, sollten weiß sein. Ich bin mir dessen bewusst, dass das nicht ganz einfach zu bewerkstelligen ist. Ein paar Ansätze von anderen Usern habe ich bereits hier gefunden. Die sind aber nicht wirklich zuende geführt wurden.

    Welches wäre der einfachste Weg den ich dafür einschlagen sollte?

    OT: Gibs evt. andere Programme die mein Vorhaben schon von haus aus so umsetzen können?

    • Offizieller Beitrag

    Das nicht ganz billige Photoshop mit einigen nicht ganz billigen Plugins kann das ganz gut halbautomatisch :D.
    Im Ernst: Automatische Gesichtsfindung ist schon nicht einfach, das saubere Loslösen von beliebigem Hintergrund erst recht nicht…

    So richtig Hoffnung machen kann ich dir also nicht ;).

    Johannes

  • Danke für deine Antwort. Stimmt, an so Profisoftware habe ich gar nicht gedacht. Nunja, habe gerade mal geschaut, aber ich dachte Photoshop wäre teurer. Kostet ja "nur" um und bei 80€. Was für Plugins wären da denn noch nötig? Und was meinst du mit halbautomatisch? Halbautomatisch kann ich das auch mit Paint, die gesichter mit der Ausschneidenfunktion ausschneiden :D
    Solche semiprofessionellen, kostenlosen Programme wie Gimp haben das nicht drauf? Mir geht es halt darum, dass ich nicht jedes Gesicht einzelnd ausschneide möchte. Ist es ausserdem möglich gesichtserkennung zu machen bei Gesichtern auf Fotos, die nur von der Seite zu erkennen sind?

    Ich glaube das entwickelt sich doch eher in Richtung Offtopic hier. Mag den Thread ein Mod mal bitte verschieben?

  • Zitat

    Solche semiprofessionellen, kostenlosen Programme wie Gimp haben das nicht drauf?


    Das bezweifle ich.. Gute Gesichtserkennungssoftware kriegst du vermutlich nur für Geld.

    Zitat

    Und was meinst du mit halbautomatisch?


    Wahrscheinlich, dass du immer noch die Bilder selbst laden und das Plugin starten musst.

  • Zitat

    Wahrscheinlich, dass du immer noch die Bilder selbst laden und das Plugin starten musst.


    Selbst das ist nichtmal nötig, da es die sogenannten Actions gibt, mit denen man Photoshop ganz leicht automatisieren kann.
    Wenn selbst das nich ausreicht, kann man auch noch mit AutoIt über Objects sehr gut auf Photoshop zugreifen.
    Ich hab mir schon lang überlegt mal eine Photoshop UDF zu schreiben, da ich bis jetzt noch nichts in die Richtung gefunden hab, ich denke nur das die Nachfrage sehr gering ist...
    Aber ehrlich gesagt ist mir jetzt kein Plugin bekannt, das Gesichter ausschneidet und ich finde jetzt auf Anhieb auch keins im Internet.
    Aber eigentlich ist das auch unnötig, da man das von Hand relativ schnell und um einiges sauberer hinbekommt...

  • Das bezweifle ich nicht, dass das von hand auch zügig "von der Hand" geht. Sicherlich ist das für 10, 20, 30 Fotos auch kein Aufwand, wenn man erstmal den Ablauf dafür drauf hat. Wenn es nachher aber doch einge Bilder mehr werden (genaue Zahl kann ich nicht sagen), wäre es doch schön, wenn man einen Automatismus drin hätte.
    Das ganze mit AutoIt zu ergänzen wäre natürlich auch eine feine Sache!

  • Servous, mit dem PS CS5 Sollte es machbar sein, im Bezug auf automatische Erkennungen etc hat sich viel getan zur vorgängerversion, ich weiß leider nicht in wie weit sich PS als Objekt behandeln lässt, und die Auswahlen im Programm selber benötigen auch zu jedem Bild immer andere Feinheitseinstellungen damit die auswahl auch einigermasen zu gebrauchen ist.. kann mir nicht vorstellen das so einfach wird das ganze Programmiertechnisch umzusetzen..

    Gruß Marvin

  • Also die Gesichtserkennung ansich könnte man vllt irgendwie halb- oder vollautomatisch bewerkstelligen.
    Das automatische Freistellen dürfte danach allerdings definitiv nichts werden, da sowas m.M.n. nur manuell zu machen ist. Es gibts zig Workshops übers Haare-Freistellen, das ist selbst manuell bei entsprechend schwierigem Hintergrund eine Kunst für sich.

    Wie wäre es sich die Bilder einzeln nacheinander anzeigen zu lassen und pro Bild zwei Eckpunkte selbstständig auszuwählen?

  • Hi!

    Es gibt unter C++ die Bibliothek OpenCV wo "ObjectDetection" und somit Gesichtserkennung schon implementiert ist! Man könnte sich die Funktionen mithilfe der OpenCV .dll´s zunuze machen!

    Hier mal ein Link!

  • Hi,
    u.a. über die Verfahren der Kantendetektion ist es möglich, Konturen auf einem Bild zu analysieren.
    Man kann dann z.B. "Kreise" auf einem Bild suchen, was sogar ziemlich einfach ist, ich hatte für TheShadowAE auch eine kleine Assemblerfunktion geschrieben, um die Mittelpunkte dieser "Kreise" (Augen) auf einem Bild zu erkennen.
    Augen sind daher recht einfach zu finden, meist bestehen sie aus mehreren konzentrischen Kreisen (Iris). Mit zusätzlichen Farbinformationen aus dem Bild lassen sich Augen eigendlich sehr schnell und einfach erkennen.

    Ein Gesicht besteht aber nicht nur aus Augen, die Position von Mund und Nase sind auch vorhanden und können über die Kantendetektion gefunden und analysiert werden. Auch die Farbinformationen spielen dann eine Rolle.
    Im Prinzip ist es die sinnvolle Aneinanderreihung verschiedener (Standard)-Filter und einiger eigener Funktionen.

    Zitat

    Ich möchte mir ein Skript bauen, dass auf Fotos gesichter erkennt, diese ausschneidet und dann das ausgeschnittene Bild in einer .jpg speichert. Dabei sollte wirklich nur das Gesicht und die Haare später ausgegeben werden, also sämtliche Dinge die vll. noch ansatzweise im Hintergrund zu sehen sind, sollten weiß sein.

    Du hast definitiv NIEMALS auch nur ansatzweise Haare/Frisuren "von Hand" freigestellt, DAS steht fest. Ansonsten hättest du längst nach dementsprechenden Funktionen gegoogelt. Sämtliche "Tutorials" zu "Haare einfach freistellen" benutzen Bilder, auf denen die Kantenerkennung (hihi, s.o.) sehr gute Ergebnisse liefert, also gleichmässiger Hintergrund mit hohem Kontrast zu den Haaren.
    Nimm einfach mal ein Bild einer Schulklasse, und stell dort sämtliche Haare frei :rofl: