Duanxx的图像处理学习: 透视变换(二)

在《Duanxx的图像处理学习:透视变换(一)》中简要的说明了透视变化的算法,这里再进一步的对透视变换做说明。

基于前面的说明,可以很容易发现, 一个变换矩阵有如下你的分区特性:

一般来说,我有一个三维变换矩阵如下:

矩阵中的元素(p , q , r)取非全0时,能产生透视效果

一、一点透视

来看下面一张图:

现在是以z轴上的一点(0,0,d,1)为投影中心,计算P(x,y,z,1)点在XOY平面上的透视投影。

那么,现在很容易知道:

即:

这里取:

那么变换矩阵T,就为:

结果的其次坐标表示为:

现在对z的取值进行分析:

1、 如果z=0,那么, [x’ y’ z’1]=[x y 0 1]

2、 如果z是无穷大,那么[x’ y’z’ 1]=[0 0 1/r 1]

由上面的分析很容易看到,z值取无限大的时候,所有的点经过变换后均集中在Z轴的1/r 处,这个点就被称为灭点

在x轴和y轴上同样存在这种点。

二、两点透视

如果在 p , q , r 中有两个非0元素,这时将会产生两个灭点,得到的透视图称为两点透视,或称成角透视。

例如:设p不等于0, r不等于0, q= 0, 看透视变换的效果。

取极限后,很容易知道,这里,一个灭点在X轴上的 1/p 处;另一个灭点在Z轴上的 1/r 处。

三、三点透视

由上面的一点透视和连点透视,以此类推,当p、q、r三个元素全为非 0 时,变换的结果将形成三点透视。产生的三个灭点将分别位于X轴上的 1/p 处、Y轴上的 1/q 处和Z轴上的 1/r 处。

此时,投影面和三坐标轴均不平行

其公式依照以前的公式很容易推导出来。

这里我就可以简单的推断:

1、与一个坐标轴垂直的平面作为投影平面的话,该平面上的投影一定是一点投影。

2、与两个坐标轴相交且与第三个坐标轴不相交的平面作为投影平面的话,即,投影面平行于一个轴,该平面上的投影一定是两点投影。

3、与三个坐标轴都相交且不含有任何坐标轴的平面作为投影平面的话,该平面上的投影一定是三点投影。

四、一点透视投影的变换矩阵

这里仍然以Y轴为例子,要生成一个透视投影,需要两个步骤

Step1:利用上面的透视变换矩阵,对视界中的立体图进行透视变换

Step2:对XOZ坐标做正投影

由于在生成一点透视图时,为了避免特殊位置透视,使产生的透视图立体感较好,通常要在进行透视变换前先将立体平移到一个合适的位置(例如离开坐标系中心),然后再进行透视变换

所以其最终的透视变换矩阵为:

五、两点透视变换矩阵

要形成两点透视变化,也需要两个步骤:

Step1:先使立体绕Z轴旋转一个角度q,以使得立体上原平行于坐标平面XOZ和YOZ的表
面与投影面XOZ产生一定的倾斜角(成角透视),这里的计算可以参考《Duanxx
的图像处理学习:图像变换 三维变换及其齐次坐标表示》

Step2:向XOZ投影面作透视投影(这里的操作就是上面的第四条了)

这里有点像是在降维的操作。

由于在上面的变换矩阵中,有两个非0参数:(qsinq , qcosq),故生成的透视图为两点透视。

在两点透视图中,只有原来与Z轴平行的立体上的棱线仍旧保持与Z轴平行,其余的棱线(例如原来与X轴及Y轴平行的棱线)将倾斜(成角)。

六、三点透视投影的变换矩阵

由两点透视变换方法,我们可以很容易的知道,三点透视变换的方法为:

Step1:先使立体绕Z轴旋转一个角度q

Step2:再绕X轴旋转一个角度f(类似于轴测变换),这样使得立体上原平行于三

  个坐标平面的表面均与投影面XOZ产生一定的倾斜角

Step3:向XOZ投影面作透视投影。

时间: 2024-10-11 16:57:33

Duanxx的图像处理学习: 透视变换(二)的相关文章

Duanxx的图像处理学习: 透视变换(三)

我们常见的坐标系是笛卡尔坐标系,也就是在<Duanxx的图像处理学习:透视变换(一)>中提到的世界坐标系. 而从观察这的角度来看的话,就是<Duanxx的图像处理学习:透视变换(一)>中提到的摄像头坐标系. 在观察者坐标系(摄像头坐标系)中,我们一般以观察者(或者叫做视点)为观察者坐标系的原点,以观察点到物体的方向为z轴,以向左且与z轴垂直的方向为x轴,与x轴和y轴垂直向上的方向作为y轴,构成观察者坐标系. 因为本文所有的操作都是基于<Duanxx的图像处理学习:图像变换 三

Duanxx的图像处理学习: 透视变换

当人用眼睛看事物的时候,会感觉到近处的东西是比远处的东西要大一些的,通俗的说,这就是透视. 总的来说,透视变换是将3D的世界转换到2D图像上的一种手段,人的视觉系统和摄像头视觉系统也是基于这一工作原理. 对透视变化的研究,就是要搞明白,为什么我们看到的东西会近处大而远处的小. 一 参考系 透视变换最主要是用于测量,因此在说明透视变换之前,有必要说明一下参考系的问题. 为了有效的分析3D世界,下面五种参考系是必要的: 1.        对象参考系(Object) 有时候也叫做本地参考系(Loca

Duanxx的图像处理学习: 图像变换 三维变换及其齐次坐标表示

遥感图像处理学习笔记二——遥感图像的分类处理

1. 基本概念 地物的类:具有同种特性的地物集合称为一类. 一类地物具有同一标志,不同种类地物具有不同的光谱特性(地物反射和发射电磁波能量的能力) 分类:根据各类样本内在的相似性,采用某种判决准则,将特征空间分割成若干集合 的过程. 2. 基本思想 区分不同地物的理论依据:不同的地物类型具有不同的光谱信息和空间信息.   3. 多光谱图像的表示方法: 假设某个多光谱图像包括n个波段,则对于任一位置(i , j)的像素的亮度值,可以用矢量x=(x1, x2, …, xn)来表示,其中每个分量xi代

Nani_xiao的图像处理学习笔记:透视变换(二):X,Y方向校正原理

接着上一篇进行,上一篇为: Nani_xiao的图像处理学习笔记:透视变换(一) 这里采用一点透视投影 X 方向校正 图2 是透视投影的灭点原理图.在不考虑其他畸变的情况下,边ab 和边cd 平行于X 轴, 而边ac 和边bd 则和X 轴成一定的夹角.根据a .b .c .d 点的图像坐标,可以求出透视投影的灭点e 的坐标(mx , my)(在图像坐标系下). 然后根据透视缩小效应, 对其进行反运算, 进行X 方向的校正.在X 方向的校正中, 可以选择图像高度(0- H - 1)任意一条水平线的

Nani_xiao的图像处理学习笔记:透视变换(三):校正步骤

接着上两篇进行: Nani_xiao的图像处理学习笔记:透视变换(一) Nani_xiao的图像处理学习笔记:透视变换(二):X,Y方向校正原理 图像透视变换校正步骤为: 1.      选取控制点的坐标: 2.      如果控制点存在倾斜现象, 则进行Y方向和X 方向错切: 3.      计算灭点的坐标(mx ,my ): 4.      进行X 方向的校正, 并输出校正后的图像: 5.      进行Y方向的校正, 并输出校正后的图像. 这里先把步骤列出,以后再根据实际效果补图

Duanxx的神经网络学习: 自己动手写神经网络(二) 前馈网络的实现

本文是继续Duanxx的神经网络学习: 自己动手写神经网络(一) 搭建一个简单的网络框架 写的第二篇文章,将神经网络的前馈网络实现并测试. 本文的代码下载地址 1 为神经元Neuron添加权Weight 在上一篇文章中,我已经搭起了一个神经网络的框架. 但是那只是一个框架而已,什么都没有是实现,而这个框架的最基本的东西就是神经元Nenron,这里就考虑将Neuron实现一下. 对于一个神经元而言,它的输入是上一层神经元的输出,可以不用太关心,它也有自己的输出outputvalue,同时,它还要控

ASP.NET MVC学习系列(二)-WebAPI请求

继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax({type:"get"}) 来实现: 请求的后台Action方法仍为上篇文章中的GetU

Windows API 编程学习记录&lt;二&gt;

恩,开始写Windows API编程第二节吧. 上次介绍了几个关于Windows API编程最基本的概念,但是如果只是看这些概念,估计还是对Windows API不是很了解.这节我们就使用Windows API 让大家来了解下Windows API的用法. 第一个介绍的Windows API 当然是最经典的MessageBox,这个API 的作用就是在电脑上显示一个对话框,我们先来看看这个API的定义吧: int WINAPI MessageBox(HWND hWnd, LPCTSTR lpTe