Подтвердить что ты не робот

Каковы ключевые точки в обработке изображений?

Например, при использовании OpenCV такие алгоритмы, как SIFT или SURF, часто используются для обнаружения ключевых точек. Мой вопрос в том, что на самом деле эти ключевые точки?

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

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

4b9b3361

Ответ 1

Это очень хорошие вопросы. Давайте рассмотрим каждую точку один за другим:

Мой вопрос в том, что на самом деле эти ключевые точки?

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

Источник: модуль 'У объекта нет атрибута' drawMatches 'opencv python

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

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

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

Ты прав. Инвариант масштабирования означает, что независимо от того, как вы масштабируете изображение, вы все равно сможете найти эти точки.


Теперь мы углубимся в дескрипторную часть. Что делает различные ключевые точки между рамками путем вы охарактеризовали эти ключевые точки. Это то, что известно как дескрипторы. Каждая обнаруженная вами ключевая точка имеет связанный с ней дескриптор. Некоторые платформы только обнаруживают ключевые точки, в то время как другие платформы являются просто структурой описания, и они не обнаруживают точки. Есть также некоторые, которые делают оба - они обнаруживают и описывают ключевые точки. SIFT и SURF являются примерами структур, которые как обнаруживают, так и описывают ключевые точки.

Дескрипторы в первую очередь касаются как масштаба, так и ориентации ключевой точки. Ключевыми точками мы утвердили эту концепцию, но нам нужна часть дескриптора, если наша цель - попытаться сопоставить ключевые точки на разных изображениях. Теперь, что вы подразумеваете под "круговой"... это соответствует шкале, в которой была обнаружена точка. Возьмем, к примеру, это изображение, взятое из учебника по VLFeat Toolbox:

VLFeat example

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

Также я узнал, что у них есть ориентация, но я не мог понять, что это на самом деле. Это угол, но между радиусом и чем-то?

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

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


Надеюсь это поможет!

Ответ 2

Я не так хорошо знаком с SURF, но могу рассказать вам о SIFT, на котором основан SURF. В конце я представил несколько заметок о SURF, но я не знаю всех подробностей.


SIFT направлен на то, чтобы найти изображения с высокой четкостью (или ключевые точки) в изображении. Места местоположения - это не просто двумерные местоположения на изображении, а места в пространстве масштабирования изображения, то есть они имеют три координаты: x, y и шкала. Процесс поиска ключевых точек SIFT:

  • размытие и повторная выборка изображения с разной шириной размытия и частотой дискретизации для создания шкалы.
  • используйте метод gaussians для обнаружения капель в разных масштабах; центры blob становятся нашими ключевыми точками при заданных x, y и масштабах
  • назначьте каждую ключевую точку ориентацию, вычислив гистограмму ориентации градиента для каждого пикселя в своей окрестности и выбрав ячейку ориентации с наибольшим количеством отсчетов
  • назначить каждой ключевой точке 128-мерный вектор функций на основе ориентации градиента пикселей в 16 локальных окрестностях

Шаг 2 дает нам масштабную инвариантность, шаг 3 дает нам инвариантность вращения, а шаг 4 дает нам "отпечаток пальца", который можно использовать для идентификации ключевой точки. Вместе они могут использоваться для сопоставления вхождений одной и той же функции с любой ориентацией и масштабом в нескольких изображениях.


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

Для обнаружения блоба он использует определитель метода Hessian. Доминирующую ориентацию можно найти, исследуя горизонтальные и вертикальные ответы на вестерны харра. Дескриптор функции похож на SIFT, рассматривая ориентацию пикселей в 16 локальных окрестностях, но приводит к 64-мерному вектору.

Функции SURF могут быть рассчитаны в 3 раза быстрее, чем функции SIFT, но в большинстве случаев такие же надежные.


Для справки:

Хороший учебник SIFT

Введение в SURF