Как преобразовать 2D точки обратно после применения гомографии ко всему изображению? - PullRequest
1 голос
/ 10 апреля 2020

Я новичок в opencv и геометрии, связанной с изображениями. Но сейчас я работаю над некоторыми задачами обработки изображений. Вот что я сделал: учитывая pts_sr c, pts_dst, я деформировал все изображение с помощью cv2.findHomograpy () и cv2.warpPerspective ()

cv2.findHomography предоставил мне матрицу гомографии 3x3. cv2.warpPerspective () предоставил мне искаженное изображение, и я могу обнаружить некоторые характерные точки из этого деформированного изображения.

Однако мне нужно сопоставить координаты характерной точки с исходным входным изображением. Может кто-нибудь сказать, пожалуйста, как этого добиться?

Спасибо

1 Ответ

2 голосов
/ 11 апреля 2020

Я думаю, что обратная матрица гомографии будет новой матрицей для отображения с pts_dst обратно на pts_src.

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

(x, y) → (x′/w, y′/w)
, где (x′, y′, w′) = mat ⋅ [x y 1]
(...) В случае двумерного векторного преобразования, компонент z опущен.

Так что вы можете изменить его масштаб, выполнив (V[0]/V[2], V[1]/V[2]), как вы упомянули в своем комментарии.

Также, Я думаю, что этот коэффициент масштабирования как-то связан с тем, как генерируется матрица, поэтому, пожалуйста, проверьте также детали матрицы, так как в официальной документации из cv2.findHomography() сказано:

Гомографическая матрица определяется с точностью до шкалы. Таким образом, оно нормализуется так, что h33 = 1.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...