Как я могу использовать машинное зрение для нахождения формы в изображении?

У меня есть простая фотография, которая может или не может включать изображение логотипа. Я пытаюсь определить, включает ли изображение форму логотипа или нет. Логотип (прямоугольная форма с несколькими дополнительными функциями) мог иметь различные размеры и мог иметь несколько случаев. Я хотел бы использовать методы Машинного зрения для идентификации местоположения этих случаев логотипа. Кто-то может указать на меня в правильном направлении (алгоритм, техника?), который может использоваться для достижения этой цели?

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

Спасибо!

9
задан Ryan 12 March 2010 в 03:27
поделиться

1 ответ

Практические вопросы

Поскольку вам нужен масштабно-инвариантный метод (это правильный жаргон для «может быть разного размера») SIFT (как упоминалось в Распознавание логотипов на изображениях , спасибо overrider!) - хороший первый выбор, он очень популярен в эти дни стоит попробовать. Вы можете найти здесь код для загрузки. Если вы не можете использовать Matlab, вам, вероятно, следует использовать OpenCV. Даже если вы по какой-то причине откажетесь от SIFT, попытка заставить его работать научит вас нескольким важным вещам о распознавании объектов.

Общее описание и жаргон

Этот раздел в основном предназначен для того, чтобы познакомить вас с несколькими важными модными словами, описывая широкий класс методов обнаружения объектов, чтобы вы могли пойти и поискать эти вещи. Важно: есть много других методов, не попадающих в этот класс. Мы будем называть этот класс «функциональным обнаружением».

Итак, сначала вы найдете функций в своем изображении.Это характерные точки изображения (углы и пересечения линий являются хорошими примерами), которые имеют множество инвариантов : какую бы разумную обработку вы ни производили с вашим изображением (масштабирование, поворот, изменение яркости, добавление немного шум и т. д.) это не изменит того факта, что в определенной точке есть угол. «Значение пикселя» или «вертикальные линии» - плохие характеристики. Иногда функция может включать в себя некоторые числа (например, выступающий угол) в дополнение к позиции.

Затем вы делаете некоторую очистку, например, удаляете недостаточно мощные функции.

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

Поиск . Вы должны взять кучу функций из вашего изображения и попытаться сопоставить их с вашей базой данных: соответствуют ли они объекту, который вы ищете? Это довольно нетривиально, поскольку, на первый взгляд, вы должны учитывать все подмножества множества обнаруженных вами функций, что является экспоненциальным. Таким образом, для этого существуют всевозможные методы интеллектуального хеширования, такие как преобразование Хафа и геометрическое хеширование .

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

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

Вот и все, готово!

14
ответ дан 4 December 2019 в 14:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: