单应性变换(Homography)

本文详细介绍了单应性变换的概念及其实现过程。利用OpenCV和Python,文章演示了如何找到两幅图像间的对应点,并计算单应性矩阵。通过实际代码示例,展示了如何使用该矩阵将一幅图像转换到另一幅图像的空间中。
部署运行你感兴趣的模型镜像

来源:http://www.learnopencv.com/homography-examples-using-opencv-python-c/

 

单应性变换就是一个平面到另一个平面的映射关系。


如图,两张图片中相同颜色的点叫做corresponding Points,比如两个红点就是一对corresponding points。单应性矩阵(Homography)就是一个从一张图像到另一张图像映射关系的转换矩阵(3*3)。可以由下面的公式来表示:


以图像中的红点为例,可以将单应性变换写成如下形式:



Python实现:


[python]  view plain  copy
  1. import cv2  
  2. import numpy as np  
  3. import pylab as pl  
  4.    
  5. if __name__ == '__main__' :  
  6.       
  7.    
  8.     # Read source image.  
  9.     im_src = cv2.imread('book2.jpg')  
  10.     # Four corners of the book in source image  
  11.     pts_src = np.array([[167.0264.0], [482.0798.0], [1079.0403.0],[613.084.0]])  
  12.    
  13.    
  14.     # Read destination image.  
  15.     im_dst = cv2.imread('book1.jpg')  
  16.     # Four corners of the book in destination image.  
  17.     pts_dst = np.array([[193.0742.0],[996.0874.0],[1059.0157.0],[266.0145.0]])  
  18.    
  19.     # Calculate Homography  
  20.     h, status = cv2.findHomography(pts_src, pts_dst)  
  21.        
  22.     # Warp source image to destination based on homography  
  23.     im_out = cv2.warpPerspective(im_src, h, (im_dst.shape[1],im_dst.shape[0]))  
  24.        
  25.     pl.figure(), pl.imshow(im_src[:, :, ::-1]), pl.title('src'),  
  26.     pl.figure(), pl.imshow(im_dst[:, :, ::-1]), pl.title('dst')  
  27.     pl.figure(), pl.imshow(im_out[:, :, ::-1]), pl.title('out'), pl.show()  #show dst   
结果:


说明:

先通过src、dst两张图像,计算homography,表示为H,然后通过H将src图像 旋转处理为根dst相同的角度,这样第三张图像就是输出out图像,可以看出角度和第二张dst是一样的,但是封面的反光可以看出是 第一张图像src处理得来的


您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值