逆透视变换详解 及 代码实现(一)

逆透视变换详解 及 代码实现(一) 中主要是原理的说明:


一、世界坐标轴和摄像机坐标轴

从下图中可以看到,世界坐标为(X,Y,Z)  相机坐标为(Xc,Yc,Zc)

而世界坐标变换到相机坐标存在一个旋转矩阵变换R以及一个位移变换T。



根据上图可以得到世界坐标到相机坐标的公式变换!!

                       世界坐标到相机坐标的公式


如果假设没有坐标的平移存在即t在这里不起作用,可以简化公式为:



接下来我们来说下不同坐标轴变换的旋转矩阵

从二维图像入手,坐标变换如下图所示

如果假设不存在位移变换,那么x0 和y0 将变为0。


现在从二维图像变到三维图像上的变换,假设固定一个(X,Y,Z)轴 旋转其他两个轴组成的平面。

1、绕X轴旋转 theta 

                                

2、绕Y轴旋转

                             

3、绕Z轴旋转

                              

-------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------

下面为相机坐标和平面坐标系(成像投影关系)


根据上述的关系我们可以推得:

      

    矩阵形式为:  

  


---------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------

3、从平面坐标得到的我们看到的(照片)图像坐标系

数字图像在计算机内为MXN数组,M行N列的图像中每一个元素(pixel)数值就是图像点的亮度(灰度)。

如图,在图像上定义直角坐标系U,V,每一个像素为单位的图像坐标系坐标,

由于(u,v)只能表示像素位于数组中的列数与行数,并没有使用物理单位表示该像素在图像中位置,

所以需要再建立以物理单位(mm)表示的图像坐标系,该图像坐标系以图像内某一点uv(0,0)为原点,x轴和y轴分别平行于u、v。



如图中,(u、v)表示以像素为单位的图像坐标系的坐标,(X、Y)表示以mm为单位的图像坐标系的坐标。

假设每一个像素在X轴与Y轴方向上的物理尺寸为dx、dy,则图像任意一个像素在两个坐标系下的坐标有如下关系,

 其中(u0 ,v0) = xy(0,0)

进而得到如下的矩阵表达:


---------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------

到此 逆透视变换就全部完成了!!!!


下面要说下 逆透视变换需要注意的问题,   因为有消失点的存在,也就是说当我们看火车轨道的时候总在某个距离上看到两条轨道重合到一起后消失。

对于空间中任一点(XW,YW,ZWT,投影之后的对应像点为(u,v,1)T,写成矩阵形式:


其中AR为变换矩阵,假设M = AR


将矩阵展开,这里去Zc = 1 可以得到如下关系式。



消失点可以认为是空间直线上无穷远处的点投影在图像上所成的像点。对于空间中某一直线L,方向为(dx,dy,dz),给定直线上坐标(ax,ay,az),所以直线上任一点A可以表示为:



 

当趋于无穷时可以得到



从而得到消失点的坐标。


注:逆透视变换的范围不能到达消失点,否则不能还原。


整体变换的示意图:


逆透视变换详解 及 代码实现(二)

根据上述原理,结合应用场景,列出代码的实现!!



        </div><link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css" rel="stylesheet"></div>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549353.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C调用C++链接库

C调用C链接库&#xff1a; 1.编写C代码&#xff0c;编写函数的时候&#xff0c;需要加入对C的接口&#xff0c;也就是extern “c" 2.由于C不能直接用"class.function”的形式调用函数&#xff0c;所以C中需要为C写一个接口函数。例如本来要调用student类的talk函数&a…

逆透视变换详解 及 代码实现(二)

根据 逆透视变换详解 及 代码实现(一)的原理 下面我用车上拍摄的车道图像&#xff0c;采用逆透视变换得到的图像&#xff0c;给出代码前我们先看下处理结果。 首先是原始图像&#xff1a; 下图为逆透视变换图像&#xff1a; 下面说具体的实现吧&#xff01;&#xff01; 一、…

[赵星理]《简单男人》--歌曲温暖你的心,激励你前进

简单的男人&#xff0c;简单的歌曲&#xff0c;赵星理《简单男人》送给所有身负家庭责任的人&#xff0c;要让家越来越美&#xff0c;再苦再累也不能后退。加油&#xff01;简单男人词曲&#xff1a;赵星理演唱&#xff1a;赵星理累不累也不许落泪醉不醉苦辣都值得回味要让家越…

SCVMM

通过SCVMM实现并管理虚拟机高可用性 1、 添加群集主机2、 创建虚拟网络3、 创建虚拟机并实现高可用性接着上一篇文章&#xff0c;这次我们来看一下&#xff0c;如果通过SCVMM R2来实现虚拟机的高可用性。首先将群集主机添加到SCVMM 1、 登陆到计算机Win2008R2&#xff0c;打开S…

序列化包含多种不明类型的集合

序列化包含多种不明类型的集合 代码&#xff1a;/Files/zhuqil/Kirin.rar 导言: 你是否曾经想过序列化构造对象&#xff0c;它里面有一个集合&#xff0c;这个集合包含接口或者抽象类&#xff1f;你是否不知道所有的你要序列化的类型&#xff1f;好吧&#xff0c;如果这样&…

修改EIGRP 路径cost 值,以及分析和实现等价与非等价负载均衡

一、拓扑图&#xff1a;二、配置各路由器的IP和EIGRP 协议&#xff0c;并保证邻接关系的形成。1、我要达到的目的是要让R2到192.168.14.0/24这个网段能在R2和R1断开之后&#xff0c;形成网网络的快速收敛。因为根据EIGRP 的次优路径进拓扑关系的形成条件是要满足FC&#xff08;…

Ubuntu 9.10 升级到ext4

最近一直在使用ubuntu系统&#xff0c;当时升级到9&#xff0c;04的时候&#xff0c;也没有在意系统的文件系统变了&#xff1b;当使用一段时间之后&#xff0c;发现系统没有8.10时使用的顺畅&#xff0c;这时才发现9.04之后心内核都支持ext4文件系统&#xff0c;该文件系统要比…

史上最简单的软件破解——5行脚本代码完美破解99%的过期软件

如果你看到了这篇博文&#xff0c;绝对保证不虚此行。仅仅5行脚本代码&#xff0c;即可破解99%的过期软件。 这件事的背景&#xff1a;最近在找了一些学习资料&#xff0c;其中有Rational Rose画的图&#xff0c;好久没用过它了。今天安装好&#xff0c;导入许可文件&#xff…

数据在链路层传播相关时间计算

本来很懵逼的 看到这篇文章基本全懂了 一般这种题目会让我感觉很是煎熬&#xff0c;不知道怎么算。终于打通这类题目&#xff0c;总结到这里。 先看这类题目的常见表述&#xff1a;如图所示&#xff0c;图中路由器采用存储–转发的方式&#xff0c;所有链路的传播速率均为100…

高等数学的函数连续,可导,可微和偏导数连续的关系(多元)

最近在自学机器学习 顺便把高数捡回来 结论&#xff08;一元函数范畴内&#xff09; 可导与连续的关系&#xff1a;可导必连续&#xff0c;连续不一定可导&#xff1b; 可微与连续的关系&#xff1a;可微与可导是一样的&#xff1b; 可积与连续的关系&#xff1a;可积不一定连续…

在控制台中实现“单词竞猜”游戏 C# 猜词游戏

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/u011528448/article/details/24670471 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_v…

byvoid 神牛的tarjan算法讲解!

[有向图强连通分量] 在有向图G中&#xff0c;如果两个顶点间至少存在一条路径&#xff0c;称两个顶点强连通 (strongly connected)。如果有向图G的每两个顶点都强连通&#xff0c;称G是一个强连通图 。非强连通图有向图的极大强连通子图&#xff0c;称为强连通分量 (strongly …

关于NLP你还不会却必须要学会的事儿—NLP实践教程指南第一编

作者 | Dipanjan (DJ) Sarkar 编译 | 姗姗 出品 | 人工智能头条&#xff08;公众号ID&#xff1a;AI_Thinker&#xff09; 【人工智能头条导读】在研究和处理自然语言处理的很多问题时&#xff0c;除了关注各种各样基础的数据&#xff0c;高级的深度学习模型、算法外&#x…

ORACLE中表死锁的处理

在进行数据库管理的过程中,经常会出现数据表被用户的一些不合理操作而导致表被锁定的情况,以下主要介绍如何查找哪些表被哪个用户所锁定,以及如何解除锁定: 1.查找被锁定的表: select object_name,session_id,os_user_name,oracle_username,process,locked_mode,status from v$…

asp.net文件上传进度条控件(破解版~没有时间限制) 多项自定义

原版只能用30天&#xff0c;这个破解版可以长期用了&#xff08;设置了时间2010-2110&#xff09;. 注册控件&#xff1a;<% Register TagPrefix"fup" Namespace"OboutInc.FileUpload" Assembly"FileUpload" %>调用控件&#xff1a;<fo…

矩阵连乘问题的算法分析

问题描述&#xff1a;给定n个矩阵&#xff1a;A1,A2,...,An&#xff0c;其中Ai与Ai1是可乘的&#xff0c;i1&#xff0c;2...&#xff0c;n-1。确定计算矩阵连乘积的计算次序&#xff0c;使得依此次序计算矩阵连乘积需要的数乘次数最少。输入数据为矩阵个数和每个矩阵规模&…

等一分钟看了会流泪

转载于:https://blog.51cto.com/hljheiwangwei/269127

Silverlight 解谜游戏 之十六 消失的蒙娜丽莎

在《Silverlight 解谜游戏 之三 消除名单》中我们通过在物品轮廓画出Path 来达到消除物品的效果&#xff0c;由于游戏中的物品都是Office 图片的一部分所以无法使其真正消失&#xff0c;本篇我们将添加一个独立于Office 图片的物品&#xff0c;使其能动态消失。 看看题板上多出…

明令禁止工作“996”,是对“生而为人”的基本尊重

离GitHub上996.ICU项目的发布时间已过去好一段时间了&#xff0c;作为一名计算机专业的在读生&#xff0c;对996有一点体会&#xff0c;最直观的体会就是为了提升技术&#xff0c;连续一个学期在实验室工作超过10个小时。 人民日报发文《被“996”围困的年轻人&#xff0c;像是…

让sky Driver成为你的可见硬盘

网盘就不用多说了&#xff0c;国内国外的都很多&#xff0c;但是sky Driver以25G的大容量还是吸引着我&#xff0c;看来还是盖茨比较称钱&#xff08;sorry&#xff0c;方言&#xff0c;意思就是nb的意思&#xff09;&#xff0c;但是一向以用户体验非常不错著称的microsoft在这…