Гомография|Гомография

компьютерное зрение

Тип геометрического преобразования

  • Сохранение трансформационной изометрии
  • преобразование подобия
  • аффинное преобразование
  • Проективное преобразование проективное -> гомография

What is Homography?

A Homography is a transformation ( a 3×3 matrix ) that maps the points in one image to the corresponding points in the other image.

  • гомография только для одной плоскости

How to calculate a Homography ?

Степень свободы фотографического преобразования равна 8, пара точек может порождать два уравнения, а всего для получения H-матрицы необходимо 4 пары соответствующих точек, если пар больше 4, то оптимальные параметры могут быть получены методом метод наименьших квадратов или RANSAC

теоретический вывод

Вывод гомографического преобразования - flyinsky518 - Blog ParkПредположим, что пара соответствующих точекa=(x,y,1)a = (x,y,1)иa,=(x,,y,,1)a^,=(x^,, y^,,1)

имеютAh=0Ah=0

A=[xy1000xx1yx1x1000xy1xy1yy1y1]A=\left[\begin{array}{ccccccccc}-x & -y & -1 & 0 & 0 & 0 & x x_{1} & y x_{1} & x_{1} \\ 0 & 0 & 0 & -x & -y & -1 & x y_{1} & y y_{1} & y_{1}\end{array}\right]

h=[h11,h12,h13,h21,h22,h23,h31,h32,h33]Th=\left[h_{11}, h_{12}, h_{13}, h_{21}, h_{22}, h_{23}, h_{31}, h_{32}, h_{33}\right]^{T}

Когда есть n пар точек,AеR2n×9A \in R^{2n\times9}, выполнить SVD-разложение на A, т.е.U**VTU * \sum * V^T,ВыбиратьVVРешите для h в последнем столбце , а затем преобразуйте в3*33*3матрица для полученияHH

[U,S,V]=svd(A);
h=V(:,9);
H= reshape(h,3,3);

Инженерная практика

If you have more than 4 corresponding points, it is even better. OpenCV will robustly estimate a homography that best fits all corresponding points. Usually, these point correspondences are found automatically by matching features like SIFT or SURF between the images.

'''
pts_src and pts_dst are numpy arrays of points
in source and destination images. We need at least
4 corresponding points.
'''
h, status = cv2.findHomography(pts_src, pts_dst)
'''
The calculated homography can be used to warp
the source image to destination. Size is the
size (width,height) of im_dst
'''
im_dst = cv2.warpPerspective(im_src, h, size)

Application

  • коррекция изображения
  • сканирование изображения
  • виртуальный рекламный щит

Reference