Гомография и проективное преобразование

Я пытаюсь написать код, который будет выполнять проективное преобразование, но с более чем 4 ключевыми моментами. я нашел это полезное руководство, но в нем используются 4 точки отсчета https://math.stackexchange.com/questions/296794/finding-the-transform-matrix-from-4-projected-points-with-javascript

Я знаю, что Matlab использует функцию tcp2form, которая обрабатывает это, но я пока не нашел способа.

кто-нибудь может дать мне совет, как это сделать? Я могу решить уравнения, используя метод наименьших квадратов, но я застрял, так как у меня матрица больше 3 * 3, и я не могу умножить однородные координаты.

Спасибо


person Kozolovska    schedule 10.03.2015    source источник
comment
Добро пожаловать в StackOverflow. Боюсь, просить совета - это слишком широкий вопрос. У вас будет больше шансов получить полезный ответ, если вы включите конкретный пример с кодом, который демонстрирует, как далеко вы продвинулись (например, mcve, а затем задавайте вопросы о разделах, в которых вы застряли. Также полезно прочитать How-To-Ask .   -  person kkuilla    schedule 10.03.2015


Ответы (1)


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

Или не все ваши точки совместимы с одним проективным преобразованием. В этом случае все, на что можно надеяться, - это приближение. Если вы хотите получить наилучшее приближение, вам нужно будет более конкретно указать, что означает «лучший», то есть какую-то меру погрешности. Измерение объектов в проективной установке по своей сути сложно, поскольку обычно требуется множество произвольных решений.

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

person MvG    schedule 28.08.2015