Реализовать функцию определения лица

Я хочу знать, как шаг за шагом работает "обнаружение и извлечение функций". Я ссылаюсь на этот журнал, вы можете скачать его здесь: http:// Dynamics.org/~altenber/UH_ICS/EC_REFS/GP_REFS/CEC/2002/GP_WCCI_2002/7074.PDF

Например, конвертировать RGB в оттенки серого. Мы знаем, что это можно сделать, просто манипулируя значением пикселя. Возьмите пример: пиксель изображения

Предположим, что пиксель имеет значение RGB, поэтому нам нужно манипулировать этим значением, используя формулу: = (++)/3

Но в моем случае (обнаружение черт лица на основе этого журнала: Определение черт лица с использованием этого шаблона Шаблон для обнаружения черт лица)

сначала найдите область левого глаза, а затем область правого глаза, область рта, затем нос между носом и ртом. Я не знаю, как моя программа знает, что это была область глаз, рта и носа.

Не могли бы вы помочь мне объяснить это или отослать меня куда-нибудь?

Спасибо.

PS: я хочу реализовать этот журнал, используя алгоритм поиска Harmony

1 ответ

Решение

Тема обнаружения лиц очень широка, и проблема довольно сложна, но в нескольких словах я попытаюсь описать ее.

При цифровой обработке изображений вы должны рассматривать изображение как двумерный массив пикселей. Если вы продолжаете RGB-изображение, каждый пиксель содержит 3 значения (из каналов r, g, b).

Для простого решения вы можете предположить, что грани всегда имеют одинаковый размер (но рассматривайте это как первый шаг вашей разработки или прототипа). После этого шага рассмотрите обнаружение в нескольких масштабах.

Вы должны выбрать размер кадра для распознавания лица и подсчитать некоторые элементы внутри каждого кадра (если форма имеет форму эллипса в этом случае) и классифицировать, является ли это лицом или нет. Затем вы должны настроить ваши глаза, губы и области носа и восстановить его). Вы должны сделать несколько предположений (размер кадра, положение регионов), о которых вам нужно подумать (или провести некоторое исследование). Нет только одного способа сделать это.

Я сделал статью об обнаружении лиц (в оборудовании fpga, но есть некоторые ссылки на другие статьи, и алгоритм описан довольно хорошо). Вы можете проверить это, чтобы получить общее представление об обнаружении лица и обработке изображений.

Есть также некоторые уже реализованные методы (например, в openCV), если вы не хотите писать это самостоятельно.


Установка регионов должна основываться на ваших предположениях. Например. у вас есть рамка с лицом, так что вы знаете, что нос будет более или менее в центре кадра и будет принимать, например. 10х20 пикселей. Чем правый (левый) глаз будет справа (слева) от носа, чуть выше и будет иметь размер 25x20 пикселей. И рот будет 30x15 пикселей на 20 пикселей за нос.

После установки вашего предположения вы должны проверить его, и, возможно, немного изменить или добавить еще несколько параметров, чтобы найти такие области, как количество ребер, углов. Вы можете найти некоторые формы, например. для глаз.

Вы знаете, что носовые отверстия будут темными на изображении в градациях серого. Используйте эту информацию. Вы знаете, что губы ниже носа и шире носа. Используйте это.

Это то, что вы должны исследовать на основе некоторых изображений, которые будут вашими тестовыми изображениями. Этот набор представляет целевые изображения.

Я думаю, что никто не скажет вам точно, как написать это, потому что есть много переменных. Вы должны сделать это самостоятельно, потому что вы знаете, где будет использоваться ваше приложение. Вы знаете условия, по которым приложение будет работать. Многие вещи могут повлиять на производительность вашего алгоритма, например. условия освещения, угол обзора камеры.

Проведите исследование.

Другие вопросы по тегам