美文网首页
opencv cv2.findHomography sift、s

opencv cv2.findHomography sift、s

作者: blair_liu | 来源:发表于2020-12-23 13:15 被阅读0次

opencv cv2.findHomography 单应性矩阵理解

单应性矩阵H获得

单应性矩阵是一个3*3的矩阵,可以从cv2.findHomography获得
例如:
H, status = cv2.findHomography(ptsA, ptsB, cv2.RANSAC, 5)
ptsA, ptsB对应两幅图获得的sift或者surf特征点,这里不细讲
参考:https://www.cnblogs.com/lzq116/p/11836657.html

单应性矩阵分析

cv2.findHomography得到的H是图一到图二的单应性矩阵
如果需要图二到图一的单应性矩阵,则求逆:np.linalg.inv(H)


image.png

上图仅作参考,得到得的H和上面图中得不太一样
(原因:opencv坐标原点是左上角,上图坐标原点是左下角)
以下图为例介绍


image.png
下面介绍一下opencv坐标系下应该是这样的
image.png
然后H矩阵的所有变换操作都是基于上图opencv坐标
image.png

其中theta顺时针为正
上面的H矩阵可以看成先旋转再平移

坐标单应性变换计算

计算不用人工算,仿着下面写就行

h = np.array([[1.0, 0.0, 0.0],
              [0.0, 1.0, 0.0],
              [0.0, 0.0, 1.0]])
coordinate = np.array([[[0, 0]],[[100,100]]).astype('float64')
new_coordinate = cv2.perspectiveTransform(coordinate, h).astype(np.int)
print(new_coordinate)

注意:每个坐标外面两层中括号,不然会报错。
上面是图一到图二的坐标变换
如果需要图二到图一的单应性矩阵,则求逆:np.linalg.inv(h)

相关文章

网友评论

      本文标题:opencv cv2.findHomography sift、s

      本文链接:https://www.haomeiwen.com/subject/utpynktx.html