Обтинання паспортних зображень автоматично звучить безсумнівно. Виправлені умови освітлення, завжди стоять вперед, узгоджується формат зображення ... Не думаю, що можна було б запропонувати більш сприятливі умови для виявлення обличчя.
Я намагався використовувати зустрічаються щоб побачити результати на вашому зразку зображення:
Паспорти приходять у різних форматах і розмірах, тому вони будуть упаковані на планшет сканера нерегулярно, але я припускаю, що ви будете розміщувати фотографії завжди вертикально. facedetect
дасть нам центри і розміри всіх облич. Зокрема, ми можемо використовувати розмір обличчя і пропорційно обрізати область навколо нього. Оскільки фотографії паспорта мають тенденцію покривати фіксовану область фотографії, це здається відносно безпечним припущенням.
Обтинання субрегіонів зображення дуже просто ImageMagick . Я написав невеликий (і грубий) сценарій оболонки для автоматизації процесу:
#!/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
Я емпірично визначив межу 60% (у другому рядку сценарію) ширини виявленого обличчя. Це чотири зображення, які я отримую:
що вже дуже добре. У верхній частині завжди є пробіл, який я зміг видалити, просто додавши "-fuzz 10% -trim" у convert
виклик. Ось результат першого зображення після цього:
Не надто пошарпаний для швидкого сценарію, і є багато місця для вдосконалення. Наприклад, більшість паспортів використовують портретну орієнтацію, тому мають інший вертикальний / горизонтальний фактор (зазвичай 1,3). Крім того, обличчя, як правило, злегка піднімаються вгору (на 1,3, ймовірно). Виправлення цих результатів призведе до кращого врожаю, уникаючи необхідності обрізання білого простору зверху.
Було б непогано, якщо б ви могли розмістити (навіть приватно) зразок планшетного сканування, щоб перевірити цей скрипт на деякий реальний вихід.
Звичайно, ця пропозиція вимагає установки Linux. Але якщо я розумію правильно, це не зовсім нерозумно налаштувати спеціальну установку або навіть віртуальну машину для автоматизації цієї стомлюючої задачі.
Якщо конфіденційність не є проблемою (але я сумніваюся), я б насправді зацікавився, допомагаючи писати гідне рішення в обмін на обрізані обличчя, які я б використав для поліпшення моделі виявлення облич.