Как сделать деформацию изображения без перспективы в OpenCV?


У меня есть изображение, на котором пользователь выбирает произвольный многоугольник с четырьмя углами.
Я хочу растянуть этот многоугольник на все изображение.
Я пытался сделать это с помощью гомографии и cvWarpPerspective,
но результатом стало преобразование перспективы, а это не то, что мне нужно.
Есть идеи, как это сделать с помощью OpenCV/EMGU?

Спасибо,
SW


person Shachar Weis    schedule 14.02.2011    source источник
comment
Какую трансформацию вы хотите? А аффинную проекцию можно подогнать только по 3 точкам (параллелограмм).   -  person Niki    schedule 15.02.2011
comment
Можете ли вы опубликовать входное изображение и ожидаемый результат?   -  person Dat Chu    schedule 15.02.2011


Ответы (2)


То, что вы пытаетесь, должно сработать. Рассчитайте гомографию, сделав 4 угла многоугольника соответствующими (0,0) (0,высота) (ширина,0) и (ширина,высота).

Взгляните на GetPerspectiveTransform.

person Utkarsh Sinha    schedule 15.02.2011

Я думаю, что вы хотите, это изменение перспективы преобразования.

Вот что вы должны рассмотреть. Предположим, что у вас изначально был многоугольник в точках (x1,y1)....(x4,y4) на вашем экране (0,0) ....(w,h). Применяя преобразование перспективы с помощью cvWarpPerspective/getPerspectiveTransform, вы сможете получить исходные координаты до известных координат. Таким образом, вы должны в основном умножить известные координаты на обратную матрицу преобразования перспективы (если это не является необратимым, и в этом случае вы должны добавить дельта-термин к однородному -координатному члену)

person Egon    schedule 15.02.2011