Алгоритм для выравнивания и сравнения двух наборов векторов, которые могут быть неполными и игнорирующие масштабирование? - PullRequest
2 голосов
/ 09 декабря 2011

Вот проблема:

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

Я пытаюсь найти хороший способ сделать это, и мне интересно, есть ли какие-нибудь хорошо известные алгоритмы, которые могут справиться с этим типом проблемы?Просто название чего-то было бы потрясающим!У меня нет формального CSCI или математического образования, и я делаю все возможное, чтобы учить себя.

Несколько вещей, которые я попробовал

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

Лучший способ, который я могу придумать, - это оценить начальную точку путем перевода в соответствие их центроидам, масштабируя таким образом, чтобы самые большие расстояния от центроида наборов совпадали.Затем выполните поиск A *, масштабирование, поворот и перевод, пока я не достигну максимума, а затем сравните два набора.(Я надеюсь, что я правильно использую термин A *, я имею в виду попытки небольших переводов и масштабирования и выбора хода, дающего наилучшее совпадение). Я думаю, что это найдет глобальный максимум большую часть времени, но это не гарантировано.Я ищу лучший способ, который всегда будет правильным.

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

Ответы [ 2 ]

4 голосов
/ 09 декабря 2011

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

Это описано в статье и презентации на http://astrometry.net/.

1 голос
/ 09 декабря 2011

Этот документ может быть полезен: Сопоставление фигур и распознавание объектов с использованием контекстов фигур

Редактировать:

Существует несколько относительно простыхМетоды решения проблемы:

  1. Чтобы объединить все возможные пары точек (по одной на каждый набор) с узлами, соедините эти узлы в случае совпадения расстояний в обоих наборах, а затем решите задачу максимальной клики для этого графика.Поскольку задача максимальной клики является NP-полной, сложность, вероятно, равна O (exp (n ^ 2)), поэтому, если у вас слишком много точек, не используйте этот алгоритм напрямую, используйте некоторое приближение.
  2. Используйте Обобщенное преобразование Хафа , чтобы сопоставить два набора точек.Этот подход имеет меньшую сложность (O (n ^ 4)).Но это более сложно, поэтому я не могу объяснить это здесь.

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

...