Автоматично визначати обличчя на зображенні


1

На моєму робочому місці фотографії паспорта розміром скануються разом, потім розрізаються на окремі фотографії та зберігаються з унікальними номерами файлів. В даний час ми використовуємо Paint.net для ручного вибору, вирізання та збереження зображень.

Я бачив, як Cybershot Camera від Sony виявляє обличчя. Google також дає мені щось про iphoto під час пошуку особи. Picasa також зіткнулася з виявленням. Чи існують способи автовизначення облич у документі, які б поліпшили продуктивність на моєму робочому місці за рахунок скорочення часу, необхідного для вирізання окремих зображень.

Зразок сканованого документа (реальний документ має 5 рядків по 4 зображення кожне = 20 фото): (від: http://www.memorykeeperphoto.com/images/passport_photo.jpg , fairuse)

sample image

Для напр. У Picasa 3.8 натисніть кнопку Переглянути & gt; Люди, всі обличчя показуються, і мене просять назвати їх, я можу автоматично зберегти ці окремі зображення з іменами як різні картинки.


Чи потрібне виявлення обличчя (потрібно зафіксувати обличчя) або поділити ціле зображення на те, що вам дійсно потрібно зробити ... Більшість сканерів підтримують це поза коробкою, а простий скрипт може розділятися на координати CONSISTENT ... думка. До речі, це буде на Linux. Не на 100% на вікнах
RobotHumans

виявлення обличчя не є необхідним, але їх розщеплення є. Проблема полягає в тому, що фотографії не розміщені рівномірно, як на зображенні вище. ручне розміщення в сканерах створює випадкові заходи, а зображення паспортного розміру мають різні розміри, 4х4, 5х4, 4х3 тощо
abel

@ aking1012 що ви мали на увазі більшість сканерів підтримати це з коробки, у мене є hp scanjet 2400 і сканер panasonic
abel

якщо у вас немає накладених зображень, більшість сканерів, які я використовую, постачаються з програмним забезпеченням, яке розділиться на "ідеальний білий" фон
RobotHumans

Я не маю жодного з цих сканерів, але я би подивився на надане програмне забезпечення - я зробив це на іншому планшеті HP.
RobotHumans

Відповіді:


1

Обтинання паспортних зображень автоматично звучить безсумнівно. Виправлені умови освітлення, завжди стоять вперед, узгоджується формат зображення ... Не думаю, що можна було б запропонувати більш сприятливі умови для виявлення обличчя.

Я намагався використовувати зустрічаються щоб побачити результати на вашому зразку зображення:

raw facedetect output

Паспорти приходять у різних форматах і розмірах, тому вони будуть упаковані на планшет сканера нерегулярно, але я припускаю, що ви будете розміщувати фотографії завжди вертикально. 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% (у другому рядку сценарію) ширини виявленого обличчя. Це чотири зображення, які я отримую:

1_1 1_2 1_3 1_4

що вже дуже добре. У верхній частині завжди є пробіл, який я зміг видалити, просто додавши "-fuzz 10% -trim" у convert виклик. Ось результат першого зображення після цього:

1_1 trimmed

Не надто пошарпаний для швидкого сценарію, і є багато місця для вдосконалення. Наприклад, більшість паспортів використовують портретну орієнтацію, тому мають інший вертикальний / горизонтальний фактор (зазвичай 1,3). Крім того, обличчя, як правило, злегка піднімаються вгору (на 1,3, ймовірно). Виправлення цих результатів призведе до кращого врожаю, уникаючи необхідності обрізання білого простору зверху.

Було б непогано, якщо б ви могли розмістити (навіть приватно) зразок планшетного сканування, щоб перевірити цей скрипт на деякий реальний вихід.

Звичайно, ця пропозиція вимагає установки Linux. Але якщо я розумію правильно, це не зовсім нерозумно налаштувати спеціальну установку або навіть віртуальну машину для автоматизації цієї стомлюючої задачі.

Якщо конфіденційність не є проблемою (але я сумніваюся), я б насправді зацікавився, допомагаючи писати гідне рішення в обмін на обрізані обличчя, які я б використав для поліпшення моделі виявлення облич.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.