单应性(Homography)变换:可以简单的理解为它用来描述物体在世界坐标系和像素坐标系之间的位置映射关系。对应的变换矩阵称为单应性矩阵。
单应性矩阵在 图像校正、图像拼接、相机位姿估计、视觉SLAM等都有应用。
单应性矩阵主要涉及两个函数:
1 findHomography(srcPoints, dstPoints[, method[, ransacReprojThreshold[, mask[, maxIters[, confidence]]]]]) -> H, mask
( M = cv2.getPerspectiveTransform(src,dst) 该函数也可以获取透视变换矩阵)
计算多个二维点对之间的最优单应性矩阵 H(3行x3列) ,使用最小均方误差或者RANSAC方法。函数功能:找到两个平面之间的转换矩阵。
参数说明:
srcpoints: 是源平面中的坐标矩阵,dstpoints: 是目标平面的坐标矩阵,类型是CV_32FC2或者float32型。
method: 是计算单应性矩阵的方法:0 -- 利用所有点的常规方法;RANSAC -- 随机抽样一致性方法;LMEDS -- 最小中指鲁棒算法 ;RHO - PROSAC -- 基于PROSAC的鲁棒算法。
ransacReprojThreshold:将点对视为内点的最大允许重投影错误阈值(仅用于RANSAC和RHO方法),该参数通常设置在1到10的范围内。
mask:可选输出掩码矩阵,通常由鲁棒算法(RANSAC或LMEDS)设置。请注意,输入掩码矩阵是不需要设置的。
maxIters:RANSAC算法的最大迭代次数,默认为2000.
confidence:可信度,取值0-1.
2 warpPerspective(src, H, dsize[, dst[, flags[, borderMode[, borderValue]]]]) -> dst
( dst = cv2.perspectiveTransform(pts,H) 该函数可以根据输入的坐标获取透视变换后的坐标)
通过输入变换矩阵得到透视图片。
参数说明:
src 输入图片;dst 输出图片。
M 输入的透视变换矩阵,大小是3*3
dsize 输出图片的大小
flags 插值方法(INTER_LINEAR或INTER_NEAREST)与可选标志WARP_INVERSE_MAP的组合,将M设置为逆变换(