OpenCV中的「透视变换 / 投影变换 / 单应性」—cv.warpPerspective、cv.findHomography

本文详细介绍了计算机视觉中的透视变换和单应性矩阵,包括它们的数学原理、OpenCV中的函数应用,如`cv::findHomography`、`cv::warpPerspective`等。通过实例展示了如何使用这些工具将前置摄像头的图像转换为鸟瞰图,同时讨论了不同的计算方法,如RANSAC和LMeDS。

引言

图像的几何变换通常包括拉伸、缩放、扭曲和旋转等操作。

对于平面区域来说,分为两类几何转换:1

  • ⭐️仿射变换(affine transform),基于2x3矩阵进行变换。指图像可以通过一系列的几何变换来实现平移、旋转等多种操作。该变换能够保持图像的平直性和平行性。平直性是指图像经过仿射变换后,直线仍然是直线;平行性是指图像在完成仿射变换后,平行线仍然是平行线。
  • ⭐️透视变换(projective transform),基于3x3矩阵进行变换。透视变换将视锥体转换为长方体形状,视锥体的近端比远端小,具有扩大相机附近物体的效果。透视变换可以改变平行关系,将矩形映射为任意四边形。

透视变换通常被用于当作从特定角度观察三维平面的计算方法(非垂直观测),在三维视觉领域具有广泛的应用。

本文主要介绍opencv中的透视变换(projective transform)原理和代码。

透视变换(projective transform)

透视变换,又称为投影变换,是指将坐标为 ( X , Y , Z ) (X,Y,Z) (X,Y,Z)的物理点 Q Q Q映射到投影平面上坐标为 ( x , y ) (x,y) (x,y)的点 q q q的过程1

在这里插入图片描述
基本投影几何

将定义摄像机参数的矩阵(包含 f x , f y , c x , c y f_x,f_y,c_x,c_y fx,fy,cx,cy)称为摄像机的内参数矩阵(camera intrinsics matrix)。

物理世界中的点 Q Q Q投影到摄像机上的点 q q q的过程,可以用下式表示:

q = M ⋅ Q , 其 中 q = [ x y w ] , M = [ f x 0 c x 0 f y c y 0 0 1 ] , Q = [ X Y Z ] q=M\cdot{Q},其中q= \begin{bmatrix} x \\ y \\ w \end{bmatrix} , M=\begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} ,Q=\begin{bmatrix} X \\ Y \\ Z \end{bmatrix} q=MQ,q=xyw,M=fx000fy0cxcy1Q=XYZ

单应性(Homography)

计算机视觉中,平面的单应性被定义为从一个平面到另一个平面的投影映射。(注:“单应性”在不同学科有不同含义,在数学上有更通用的意思。这里仅说明计算机视觉中的单应性。1

二维平面上的点映射到摄像机成像画面上的映射,就是平面单应性的典型例子。

在这里插入图片描述

利用齐次坐标,可以对物理世界的点Q到成像画面上的点q的映射进行表示:

q = s ⋅ M ⋅ W ⋅ Q q =s \cdot{M}\cdot{W} \cdot{Q} q=sMWQ
其中,参数s表示尺度比例, M = [ f x 0 c x 0 f y c y 0 0 1 ] M=\begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} M=

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值