Какой в ​​настоящее время считается лучшим алгоритмом для двумерного сопоставления точек?

У меня есть два списка, содержащие координаты xy (звезд). Я также мог бы привязать величины (яркости) к каждой звезде. Теперь у каждой звезды есть случайные колебания положения, и на каждом изображении может быть несколько лишних или отсутствующих точек. Мой вопрос: «Каков наилучший алгоритм сопоставления 2D-точек для такого набора данных?» Я предполагаю как для простого линейного (перенос, поворот, масштаб), так и для нелинейного (скажем, полиномы n-й степени в координатах). Говоря языком области сопоставления точек, я ищу алгоритмы, которые одержат победу в перестрелке между программами двумерного сопоставления точек с шумом и ложными точками. Могут быть разные «победители» в зависимости от того, используется ли информация о маркировке (величины) и / или преобразование ограничено линейностью.

Я знаю, что существует много классов алгоритмов сопоставления 2D-точек и множество алгоритмов в каждом классе (буквально, вероятно, всего сотни), но я не знаю, какой из них считать «лучшим» или «самым стандартным». людьми в области компьютерного зрения. К сожалению, у многих статей и статей, которые я хочу прочитать, нет онлайн-версий, и я могу читать только аннотации. Прежде чем я остановлюсь на конкретном алгоритме для реализации, было бы неплохо услышать от нескольких экспертов, чтобы отделить зерна от плевел.

У меня есть работающая программа сопоставления, которая использует треугольники, но она довольно часто дает сбой (~ 5% времени), так что преобразование решения имеет очевидные искажения, но без очевидной причины. Эта программа была написана не мной и взята из статьи, написанной почти 20 лет назад. Я хочу написать новую реализацию, которая работает наиболее надежно. Я предполагаю (надеюсь), что в этой области были достигнуты некоторые успехи, которые делают это правдоподобным.


person SO Stinks    schedule 02.04.2009    source источник
comment
Я тоже заинтересован в этом.   -  person fulmicoton    schedule 03.04.2009
comment
Этот вопрос был бы идеальным для предстоящего обмена стеками информатики. Итак, если вы хотите иметь место для вопросов, подобных этому, пожалуйста, помогите этому предложению взлететь!   -  person Raphael    schedule 03.12.2011


Ответы (6)


Если вас интересует сопоставление звезд, ознакомьтесь с решателем слепой астрометрии Astrometry.net и здесь. Они используют четырехточечные квадроциклы для определения звездных конфигураций на фотографиях ночного неба Flickr. Посмотрите это интервью.

person Paul    schedule 03.04.2009
comment
Это интересный проект. Я обязательно проверю это и посмотрю, что он может предложить. - person SO Stinks; 03.04.2009
comment
+1 Очень интересные и крутые слайды. Может быть излишним для этой проблемы. - person Mike Dunlavey; 03.04.2009

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

Я бы порекомендовал вам прочитать это введение в регистрацию изображений из учебные пособия по Insight Toolkit. ITK поддерживает МНОГИЕ типы регистрации изображений (именно это похоже на то, что вы пытаетесь сделать), и во многих случаях очень надежен. Большинство их пользователей работают в сфере медицины, поэтому вам придется разбираться в большом количестве медицинского жаргона, но алгоритмы и код работают с любым типом изображения (включая 1-, 2-, 3- и n-мерные изображения разных размеров). виды и др.).

person Reed Copsey    schedule 02.04.2009

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

Использование RANSAC для устойчивости к дополнительным баллам также очень распространено.

person fa.    schedule 03.04.2009

Я не уверен, что это сработает, но стоит попробовать:

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

person David Lehavi    schedule 07.04.2009

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

person dan gibson    schedule 02.04.2009

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

person rlbond    schedule 02.04.2009
comment
Плакат говорит о сопоставлении списка точек со случайным смещением. Это не простая параметрическая регистрация изображения. - person fulmicoton; 03.04.2009
comment
Вы также можете выполнить 2d FFT для числовых данных. Он замечательно работает с 1 и 0. - person rlbond; 03.04.2009
comment
+1 Рибонд прав, если два изображения отличаются общим преобразованием, таким как смещение, масштабирование и поворот. Это было бы хорошим первым шагом перед подбором звезд за звездой. - person Mike Dunlavey; 03.04.2009