Gesichter in einem Bild automatisch erkennen

Gesichter in einem Bild automatisch erkennen

An meinem Arbeitsplatz werden Passfotos zusammen gescannt, dann in Einzelbilder zerschnitten und mit eindeutigen Dateinummern gespeichert. Derzeit verwenden wir Paint.net, um die Bilder manuell auszuwählen, zuzuschneiden und zu speichern.

Ich habe gesehen, dass die Cybershot-Kamera von Sony eine Gesichtserkennung hat. Google gibt mir auch etwas über iPhoto aus, wenn ich nach Gesichtserkennung suche. Picasa hat auch Gesichtserkennung. Gibt es Möglichkeiten, die Gesichter in einem Dokument automatisch zu erkennen, was die Produktivität an meinem Arbeitsplatz verbessern würde, da weniger Zeit zum Zuschneiden einzelner Bilder benötigt wird?

Beispiel eines gescannten Dokuments (Ein echtes Dokument hat 5 Zeilen mit jeweils 4 Bildern = 20 Bilder): (von:http://www.memorykeeperphoto.com/images/passport_photo.jpg, faire Nutzung)

Beispielbild

Wenn ich beispielsweise in Picasa 3.8 auf „Ansicht > Personen“ klicke, werden alle Gesichter angezeigt und ich werde aufgefordert, ihnen Namen zu geben. Kann ich diese einzelnen Bilder automatisch mit den Namen als separate Bilder speichern?

Antwort1

Passbilder automatisch zuschneiden klingt durchaus machbar. Feste Lichtverhältnisse, immer nach vorne schauen, gleichbleibendes Bildformat... Ich glaube, günstigere Voraussetzungen für die Gesichtserkennung kann man sich kaum wünschen.

Ich habe versucht,Gesichtserkennungum die Ergebnisse auf Ihrem Beispielbild anzuzeigen:

Rohausgabe der Facettenerkennung

Reisepässe gibt es in verschiedenen Formaten und Größen, daher werden sie unregelmäßig auf der Flachbettfläche des Scanners gepackt, aber ich gehe davon aus, dass Sie die Bilder immer aufrecht platzieren. facedetectgibt uns die Mitte und Größe aller Gesichter. Insbesondere können wir die Größe des Gesichts verwenden und den Bereich darum herum proportional zuschneiden. Da Passbilder dazu neigen, einen festen Bereich des Fotos abzudecken, scheint dies eine relativ sichere Annahme zu sein.

Das Zuschneiden von Teilbereichen eines Bildes ist ganz einfach mitBildMagick. Ich habe ein kleines (und grobes) Shell-Skript geschrieben, um den Vorgang zu automatisieren:

#!/bin/sh
pc=60
files="P1Xb8.jpg"

fileno=1
for file in $files; do
  n=1
  facedetect $file | while read x y w h; do
    border=$(($w * $pc / 100))
    x=$(($x - $border))
    y=$(($y - $border))
    w=$(($w + $border * 2))
    h=$(($h + $border * 2))
    echo $x $y $w $h
    convert "$file" -gravity NorthWest -crop "${w}x${h}+$x+$y" "${fileno}_$n.jpg"
    n=$(($n + 1))
  done
  fileno=$(($fileno + 1))
done

Ich habe empirisch einen Randbereich von 60 % (in der zweiten Zeile des Skripts) der Breite des erkannten Gesichts definiert. Dies sind die vier Bilder, die ich erhalte:

1_1 1_2 1_3 1_4

was schon ziemlich gut ist. Oben bleibt immer etwas weißer Raum, den ich entfernen konnte, indem ich beim convertAufruf einfach "-fuzz 10% -trim" hinzufügte. Hier ist das Ergebnis des ersten Bildes danach:

1_1 getrimmt

Nicht schlecht für ein schnelles Skript, und es gibt jede Menge Raum für Verbesserungen. Die meisten Reisepässe sind beispielsweise im Hochformat und haben daher einen anderen vertikalen/horizontalen Faktor (normalerweise 1,3). Außerdem werden Gesichter tendenziell leicht nach oben verschoben (wahrscheinlich um 1,3). Eine Korrektur dieser Punkte würde zu einem besseren Ausschnitt führen und die Notwendigkeit vermeiden, den weißen Bereich oben vollständig zu entfernen.

Es wäre schön, wenn Sie (auch privat) ein Beispiel für einen Flachbettscan posten könnten, um dieses Skript anhand einer echten Ausgabe zu testen.

Natürlich erfordert dieser Vorschlag eine Linux-Installation. Aber wenn ich das richtig verstehe, ist es nicht völlig unvernünftig, eine dedizierte Installation oder sogar eine virtuelle Maschine einzurichten, um diese mühsame Aufgabe zu automatisieren.

Wenn Datenschutz kein Problem ist (was ich aber bezweifle), wäre ich tatsächlich daran interessiert, beim Schreiben einer vernünftigen Lösung mitzuhelfen, im Austausch gegen die zugeschnittenen Gesichter, die ich zur Verbesserung des Gesichtserkennungsmodells verwenden würde.

verwandte Informationen