Получение преобразования искажения из точек - PullRequest
2 голосов
/ 04 сентября 2011

Возможно ли получить искажение прямоугольника от нескольких фиксированных точек?

Этот пример лучше объяснит, что я имею в виду:

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

enter image description here

Как я могу воспроизвести искажение, зная положение двух (или, возможно, трех) предыдущих точек??

Моя цель - получить искаженную рамку прямоугольника.Это не простое изображение, как в примере, поэтому я не могу просто фильтровать цвета, мне нужно найти способ получить искаженную границу изображения.

Ответы [ 2 ]

1 голос
/ 04 сентября 2011

Я считаю, что то, что вы ищете, можно описать как аффинное преобразование. Если вы хотите общее преобразование плоской поверхности, вы можете вместо этого использовать перспективное преобразование.

Вы можете найти реализацию OpenCV здесь . Соответствующими функциями являются cv :: getAffineTransform, для которых требуется 3 пары точек, или cv :: getPerspectiveTransform, для которых требуется 4 пары точек.

Примечание: если вы используете автоматический детектор / сопоставление объектов, было бы лучше использовать гораздо больше пар точек, чем минимум, и использовать надежный алгоритм отклонения выбросов, такой как RANSAC.

0 голосов
/ 31 июля 2012

необходимость смены и вращения - 2 балла

Необходимость аффинного преобразования - 3 балла

Перспектива трансформации - 4 балла

...