Вот проблема:
У меня много наборов точек, и я хочу придумать функцию, которая может принимать один набор и ранжировать совпадения на основе их сходства с первым.Масштабирование, перемещение и вращение не имеют значения, и некоторые точки могут отсутствовать в любом из наборов точек.Наилучшее совпадение - это то, что при оптимальном масштабировании и переводе имеет наименьшую среднеквадратичную ошибку между точками (возможно, с ограничением штрафа или рассмотрением только лучшей доли точек для обработки пропущенных точек).
Я пытаюсь найти хороший способ сделать это, и мне интересно, есть ли какие-нибудь хорошо известные алгоритмы, которые могут справиться с этим типом проблемы?Просто название чего-то было бы потрясающим!У меня нет формального CSCI или математического образования, и я делаю все возможное, чтобы учить себя.
Несколько вещей, которые я попробовал
Первое, что приходит на ум, - как-то нормализовать баллы,но я не думаю, что это полезно, потому что недостающие очки могут скинуть вещи.
Лучший способ, который я могу придумать, - это оценить начальную точку путем перевода в соответствие их центроидам, масштабируя таким образом, чтобы самые большие расстояния от центроида наборов совпадали.Затем выполните поиск A *, масштабирование, поворот и перевод, пока я не достигну максимума, а затем сравните два набора.(Я надеюсь, что я правильно использую термин A *, я имею в виду попытки небольших переводов и масштабирования и выбора хода, дающего наилучшее совпадение). Я думаю, что это найдет глобальный максимум большую часть времени, но это не гарантировано.Я ищу лучший способ, который всегда будет правильным.
Большое спасибо за помощь!Попытка выяснить это до сих пор была забавной и интересной, поэтому я надеюсь, что это также и для вас.