Das Zuschneiden von Passbildern klingt automatisch machbar. Feste Lichtverhältnisse, immer nach vorne gerichtet, konsistentes Bildformat ... Ich glaube nicht, dass man nach günstigeren Bedingungen für die Gesichtserkennung fragen könnte.
Ich habe versucht, Facedetect zu verwenden, um die Ergebnisse auf Ihrem Beispielbild zu sehen:
Reisepässe gibt es in verschiedenen Formaten und Größen, daher werden sie unregelmäßig auf dem Flachbett des Scanners verpackt. Ich gehe jedoch davon aus, dass Sie die Bilder immer aufrecht stellen. facedetect
wird uns die Zentren und Größe aller Gesichter geben. Insbesondere können wir die Größe des Gesichts verwenden und den Bereich um ihn herum proportional beschneiden. Da Passbilder dazu neigen, einen festen Bereich des Fotos abzudecken, scheint dies eine relativ sichere Annahme zu sein.
Das Beschneiden von Unterbereichen eines Bildes ist mit ImageMagick sehr einfach . Ich habe ein kleines (und grobes) Shell-Skript geschrieben, um den Prozess 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 "$x$+$x+$y" "$_$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. Das sind die vier Bilder, die ich bekomme:
das ist schon ziemlich gut. Es gibt immer etwas Leerzeichen an der Spitze, das ich entfernen konnte, indem Sie einfach "-fuzz 10% -trim" beim convert
Aufruf hinzufügen . Hier ist das Ergebnis des ersten Bildes danach:
Nicht zu schäbig für ein schnelles Skript, und es gibt viel Raum für Verbesserungen. Zum Beispiel verwenden die meisten Pässe eine Hochformatausrichtung, dh sie haben einen anderen vertikalen / horizontalen Faktor (normalerweise 1,3). Gesichter neigen dazu, leicht nach oben verschoben zu werden (wahrscheinlich um 1,3). Wenn Sie diese korrigieren, wird ein besserer Ausschnitt erzielt, sodass der weiße Bereich oben nicht vollständig abgeschnitten werden muss.
Es wäre schön, wenn Sie (auch privat) einen Beispiel-Flachbettscan posten könnten, um dieses Skript mit einer echten Ausgabe zu testen.
Dieser Vorschlag erfordert natürlich eine Linux-Installation. Wenn ich es richtig verstanden habe, ist es nicht völlig unvernünftig, eine dedizierte Installation oder sogar eine virtuelle Maschine einzurichten, um diese langwierige Aufgabe zu automatisieren.
Wenn Datenschutz kein Thema ist (bezweifle ich jedoch), wäre ich tatsächlich daran interessiert, eine vernünftige Lösung zu schreiben, die gegen die abgeschnittenen Gesichter ausgetauscht wird, die ich zur Verbesserung des Gesichtserkennungsmodells verwenden würde.