Соответствие как изображения на основе шаблона - PullRequest
4 голосов
/ 04 января 2011

Мне не удалось найти способ описать проблемную область, которую я хочу лучше понять, поэтому я настроил следующий сценарий, чтобы проиллюстрировать

Учитывая следующее изображение, как бы я запрограммировал что-то, что могло бы найти все счастливые лица, которые соответствуют изображению в положении 1 (назовите это изображением шаблона), и игнорировать грустные изображения лица, подобные изображениям в положении 2 и 5.

alt text ...

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

Как бы это назвать? Зачем мне запрашивать Google и переполнение стека, чтобы найти полезную информацию? У кого-нибудь есть библиотека или фрагмент кода, которые могут помочь мне начать?

Кроме того, я по профессии программист .NET / C #, поэтому все, что происходит на моем родном языке, особенно ценится, но не нарушает договоренности.

Заранее спасибо ... Mike

Ответы [ 4 ]

1 голос
/ 04 января 2011

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

Мои предложения:

Если ваш сценарий похож на лица, повернутые на известные углы с известными размерами, ищите более простые методы, такие как корреляция двух изображений. Сделайте это для каждого угла, и вы получите это.

Если вы знаете, что единственным изменением между изображениями является вращение, то есть вращение только счастливых и грустных лиц без других искажений, вы можете искать методы сопоставления, инвариантные к вращению. Здесь вам может помочь теория Фурье, а также сопоставления с полярными координатами, связанные с корреляциями.

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

1 голос
/ 06 января 2011

Возможный алгоритм:

  1. Вычисление градиента изображения
  2. Для каждого вектора градиента вычисление направления градиента
  3. Вычисление гистограммы ориентации (угол противчастота) векторов градиента

Эта гистограмма ориентации будет отлична для "счастливых" и "грустных" смайликов.

весело.

1 голос
/ 04 января 2011

Самым простым методом, вероятно, будет сопоставление с шаблоном .Разница в изображениях вашего примера довольно небольшая, поэтому может быть трудно различить, например, изображения 1 и 5 в вашем примере.

0 голосов
/ 07 января 2011

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

  1. Определите ограничивающую рамку изображения и предположите, что центром этого является круг.
  2. В круге найдите два глаза как BLOB. т.е. объекты, которые содержат 20 или всего пикселей, которые помещаются в небольшой определенный прямоугольник.
  3. Как только вы определите местоположение двух глаз, вы можете определить наклон пересекающейся линии между двумя линиями и, следовательно, ориентацию лица.
  4. Расстояние от точки в середине двух глаз прямо вниз, хотя центр круга и рот возвращают 1 из 2 возможных расстояний. то есть грустный или счастливый.

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

Опция AForge, вероятно, является более обобщенным подходом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...