几何变换和图像特征单应性变换
【摘要】 单应性变换就是一个平面到另一个平面的映射关系。如图,两张图片中相同颜色的点叫做corresponding Points,比如两个红点就是一对corresponding points。单应性矩阵(Homography)就是一个从一张图像到另一张图像映射关系的转换矩阵(3*3)。可以由下面的公式来表示:以图像中的红点为例,可以将单应性变换写成如下形式:Python实现:[python] vie...
单应性变换就是一个平面到另一个平面的映射关系。
如图,两张图片中相同颜色的点叫做corresponding Points,比如两个红点就是一对corresponding points。单应性矩阵(Homography)就是一个从一张图像到另一张图像映射关系的转换矩阵(3*3)。可以由下面的公式来表示:
以图像中的红点为例,可以将单应性变换写成如下形式:
Python实现:
- import cv2
- import numpy as np
- import pylab as pl
- if __name__ == '__main__' :
- # Read source image.
- im_src = cv2.imread('book2.jpg')
- # Four corners of the book in source image
- pts_src = np.array([[167.0, 264.0], [482.0, 798.0], [1079.0, 403.0],[613.0, 84.0]])
- # Read destination image.
- im_dst = cv2.imread('book1.jpg')
- # Four corners of the book in destination image.
- pts_dst = np.array([[193.0, 742.0],[996.0, 874.0],[1059.0, 157.0],[266.0, 145.0]])
- # Calculate Homography
- h, status = cv2.findHomography(pts_src, pts_dst)
- # Warp source image to destination based on homography
- im_out = cv2.warpPerspective(im_src, h, (im_dst.shape[1],im_dst.shape[0]))
- pl.figure(), pl.imshow(im_src[:, :, ::-1]), pl.title('src'),
- pl.figure(), pl.imshow(im_dst[:, :, ::-1]), pl.title('dst')
- pl.figure(), pl.imshow(im_out[:, :, ::-1]), pl.title('out'), pl.show() #show dst
结果:
说明:
先通过src、dst两张图像,计算homography,表示为H,然后通过H将src图像 旋转处理为根dst相同的角度,这样第三张图像就是输出out图像,可以看出角度和第二张dst是一样的,但是封面的反光可以看出是 第一张图像src处理得来的
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)