透视变换(Perspective Transform)

article/2025/10/3 20:42:11

**透视变换(Perspective Transform)**是将图片投影到一个新的视角或平面,变换公式如下。
在这里插入图片描述
在之前的章节中我们学习过仿射变换(affine transform) 可以看到,而射变换的变换矩阵是3x2的变换矩阵。和仿射变换不同的是,透视变换的变换矩阵是一个3x3的矩阵。透视变换的作用域是一个三维坐标系(x,y,z), 而仿射变换则是二维(x,y)平面变换。从另一个角度来说,仿射变换也可以看做是一种特殊的透视变换(z轴方向不变)。

透视变换和仿射变换的一个重要区别是,两条平行的线在经过仿射变换之后依然保持平行,但透视变换并不保证这一点。
在这里插入图片描述
OpenCV提供了透视变换的函数warpPerspective(). 下面我们来尝试使用warpPerspective()函数将下面的卡片透视变换为鸟瞰图(俯视视角)。原图片的分辨率是320x240,我们在图片中找到卡片四个角的坐标,分别为(0,0),(240,21),(0,240),(240,216)。在最终的鸟瞰图中,我们需要这四个点的坐标分别转换为(0,0),(320,0),(0,240),(320,240)。因此利用这四个点的对应关系,我们可以构建变换矩阵。

在这里插入图片描述

    Point2f srcTri[4];Point2f dstTri[4];Mat warpPerspective_mat( 3, 3, CV_32FC1 );Mat src, warpPerspective_dst;src = imread( "card2.jpeg", IMREAD_COLOR );warpPerspective_dst = Mat::zeros( src.rows, src.cols, src.type() );/// 设置4组点,求出变换矩阵srcTri[0] = Point2f( 0,0 );srcTri[1] = Point2f( 240, 21 );srcTri[2] = Point2f( 0,src.rows - 1);srcTri[3] = Point2f( 240, 216);dstTri[0] = Point2f( 0, 0 );dstTri[1] = Point2f( src.cols, 0 );dstTri[2] = Point2f( 0, src.rows );dstTri[3] = Point2f( src.cols, src.rows );//计算透视变换矩阵warpPerspective_mat = getPerspectiveTransform( srcTri, dstTri );//应用透视变换warpPerspective( src, warpPerspective_dst, warpPerspective_mat, src.size() );//显示原图和变换后结果namedWindow( source_window, WINDOW_AUTOSIZE );imshow( source_window, src );namedWindow( warpPerspective_window, WINDOW_AUTOSIZE );imshow( warpPerspective_window, warpPerspective_dst );waitKey(0);

最终得到的结果如下。图片被成功转换到了鸟瞰图的视角。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/uAarXxfc.shtml

相关文章

仿射变换与透视变换区别

仿射变换 1) 用途 旋转 (线性变换),平移 (向量加).缩放(线性变换),错切,反转 2) 方法 仿射变换是一种二维坐标到二维坐标之间的线性变换,它保持了二维图形的“平直性”(直线经过变换之后依然是直线&…

用OpenCV进行透视变换

1. 引言 欢迎回来!今天我们将焦点聚焦在我在图像处理中最喜欢的话题之一——透视变换。使用该技术,可以灵活方便的实现各种各样好玩的特效。 闲话少说,我们直接开始吧! 2. 单应矩阵 我们首先展开对单应矩阵的深入研究。作为图…

透视变换矩阵详解

原文: OpenGLProjection Matrix (songho.ca) 看这篇文章主要是因为对learnopengl深度测试这一章的些许疑惑, 为什么在片段着色器中,存储的每一个fragment的深度值并不是线性分布?体现在想要显示出场景里面所有物体的深度值&#x…

【图像处理】透视变换 Perspective Transformation

透视变换(Perspective Transformation)是将图片投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping)。通用的变换公式为: u,v是原始图片左边,对应得到变换后的图片坐标x,y,其中。变换矩阵可以拆成4部分,表示…

Opencv中的透视变换

唐宇迪视频学习笔记 def four_point_transform(image, pts):# 获取输入坐标点rect order_points(pts)(tl, tr, br, bl) rect# 计算输入的w和h值widthA np.sqrt(((br[0] - bl[0]) ** 2) ((br[1] - bl[1]) ** 2))widthB np.sqrt(((tr[0] - tl[0]) ** 2) ((tr[1] - tl[1])…

OpenCV中的透视变换介绍

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达本文转自:opencv学堂 透视变换原理 透视变换是将图像从一个视平面投影到另外一个视平面的过程,所以透视变换也被称为投影映射(Project…

仿射变换和透视变换

透视变换 1. 欧式变换2. 相似变换3. 仿射变换4. 射影变换/透视变换概念OpenCV 实现 3D 空间存在集中变换方式。 1. 欧式变换 欧式变换保持了向量的长度和夹角,相当于我们把一个刚体原封不动地进行了移动或旋转,不改变它自身的样子,其矩阵表…

基于OpenCV的图像透视变换详解(从理论到实现再到实践)

一、仿射变换与透视变换 一直无法理解两种仿射变换与透视变换的区别,因此详细学习了两种变换的具体细节,重新书写了公式,并给出自己的一些看法。 1.仿射变换 可以认为,仿射变换是透视变换的一种特例。 仿射变换是一种二维坐标到二…

透视变换(perspective transformation)

透视变换(Perspective Transformation)是将图片投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping)。如下图所示 透视变换 透视变换的原理和公式推导见如下博客 【图像处理】透视变换 Perspective Transformation 【OpenCV】透视变换 Perspe…

OpenCV 透视变换

OpenCV 透视变换 1. 简介2. 仿射变换2.1. 平移2.2. 旋转2.3. 放缩2.4. 错切2.5. 仿射变换 3. 透视变换 1. 简介 汽车的360度全景影像,从拍照视角变成鸟瞰图 这种变换常常用到透视变换 在了解透视变换前,需要了解一下其他的变换,包括 平移&am…

深入探索透视投影变换

深入探索透视投影变换 最近更新:2013年11月22日 -Twinsen编写 -本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教 -email: popyynetease.com -B站专栏: https://b23.tv/oWsl6PD 透视投影是3D固定流水线的重要组…

图像透视变换原理及实现

上篇博客讲解了图像的仿射变换原理及实现,这篇博客讲讲透视变换的原理和实现,透视变换也叫投影变换,仿射变换是透视变换的特例。主要是透视变换能保持“直线性”,即原图像里面的直线,经透视变换后仍为直线。下面给出数…

(十四)透视变换

透视变换(Perspective Transformation) 一 图像变换与平面坐标系的关系 1、旋转: 2、平移: 3、刚体变换 4、仿射变换 5、投影变换(单应性变换) 6 总结一下: 1、刚体变换:平移旋转,只改变物体…

图像畸变矫正——透视变换

图像畸变矫正——透视变换 由于相机制造精度以及组装工艺的偏差引入的畸变,或者由于照片拍摄时的角度、旋转、缩放等问题, 可能会导致原始图像的失真,如果要修复这些失真,我们可以通过透视变换,对图像进行畸变矫正。 …

透视变换原理实例代码详解

导读 在上篇文章中,我们介绍了仿射变换,我们只需要通过一个两行三列的变换矩阵M就能够对图像实现平移、缩放、翻转、旋转操作。我们发现这些变换其实都属于平面变换,如果我们想要进行空间变换呢? 将上图的扑克牌单独提取出来&am…

[解疑]图像、矩阵的二维空间变换

本文经过参考多个文章整理而成,感谢各位博主的无私分享。 综述 图像(2维平面)到图像(2维平面)的四种变换包括:等距变换,相似变换,仿射变换,投影变换。对图像的几何变换…

数字图像处理(入门篇)十四 透视变换

目录 一 透视变换 二 实践 (1)代码 (2)结果图 一 透视变换 现实生活中的空间是三维的,图像中的物体存在近大远小的特征,这种畸变仿射变换不能矫正。因此,我们需要使用到三维空间的变化&…

【图像理论】透视变换

透视变换: 定义:本质是将图像投影到一个新的视平面。仿射变换可以理解为透视变换的特殊形式。利用透视中心、像点、目标点三点共线的条件,按透视旋转定律使承影面(透视面)绕迹线(透视轴)旋转某…

Python图像处理之透视变换

1 引言 如果你想对图像进行校准,那么透视变换是非常有效的变换手段。透视变换的定义为将图像投影到一个新的视平面,通常也被称之为投影映射。 2 公式 一般来说,通用的图像变换公式如下所示: 上述公式中,u,v代表原…

维特比算法 python_维特比算法理解与实现(Python)

前言 写这篇文章就是想以通俗易懂的方式解析维特比算法,最后给出Python代码的实现。下面的公式和原理均出自《统计学习方法》。 算法的原理 算法的原理1.PNG 算法的原理2.PNG 上面写了一大堆,意思就是:每个时刻选择出概率最大的路径&#xf…