图像坐标:我想和世界坐标谈谈(A) 【计算机视觉学习笔记--双目视觉几何框架系列】

 玉米竭力用轻松具体的描述来讲述双目三维重建中的一些数学问题。希望这样的方式让大家以一个轻松的心态阅读玉米的《计算机视觉学习笔记》双目视觉数学架构系列博客。这个系列博客旨在捋顺一下已标定的双目视觉中的数学主线。数学推导是有着几分枯燥的,但奇妙的计算机视觉世界是建立在严密的数学架构之上的。所以对数学框架的理解是理解双目视觉的必由之路。不过请大家放心,接下来玉米会以尽量有趣,尽量更接地气儿的方式,阐释一下自己对双目视觉数学或者说是投影几何的理解。

       先来张《计算机视觉:算法与应用》中的3D重建示例图镇楼!


         好吧,现在言归正传,来看看几何学上世界是怎样投影进摄相机里的吧!接下来让我们来看一下本系列博客的第一“搏”:


图像坐标:我想和世界坐标谈谈(A)

         首先,我先解释一下这个题目吧。题目的字面意义是说:图像坐标系想和世界坐标系谈谈。这里面包含着两个问题:

         A、谈话对象:视觉系统的三大坐标系:世界坐标系,摄像机坐标系和图像坐标系。这是玉米在本文《我想和世界坐标谈谈                       (A)》中想要和大家分享的内容。其中主要包含:三大坐标系的位置、作用和应用场景。

         B、谈话方式:两个不同的坐标系之间该如何沟通呢?玉米将在《我想和世界坐标谈谈(B)》中和大家分享一下刚体变换和透视                 投影变换。连起两个坐标系之间这不在一个参考系的“世界上最远的距离”。

                 好吧,下面让我们来揭开三大坐标系的庐山真面目。


 

         上图是三个坐标的示意简图,通过它大家可以对三个坐标有一个直观的认识。下面来看看三个坐标系的骨子里藏了什么。

         世界坐标系(XW,YW,ZW):其是目标物体位置的参考系。除了无穷远,世界坐标可以根据运算方便与否自由放置。在双目视觉中世界坐标系主要有三个用途:1、标定时确定标定物的位置2、作为双目视觉的系统参考系,给出两个摄像机相对世界坐标系的关系,从而求出相机之间的相对关系3、作为重建得到三维坐标的容器,盛放重建后的物体的三维坐标。世界坐标系是将看见中物体纳入运算的第一站。

        摄像机坐标系(XC,YC,ZC):其是摄像机站在自己角度上衡量的物体的坐标系。摄像机坐标系的原点在摄像机的光心上,z轴与摄像机光轴平行。它是与拍摄物体发生联系的桥头堡,世界坐标系下的物体需先经历刚体变化转到摄像机坐标系,然后在和图像坐标系发生关系。它是图像坐标与世界坐标之间发生关系的纽带,沟通了世界上最远的距离。哈哈

         图像坐标系(x,y)/(u,v) :其是以摄像机拍摄的二维照片为基准建立的坐标系。用于指定物体在照片中的位置。玉米更倾向将(x,y)称为连续图像坐标或空间图像坐标,将(u,v)称为离散图像坐标系或者是像素图像坐标系(虽然这样的称呼未经考证,但更能传达二者的物理意义)。

          (x,y)坐标系的原点位于摄像机光轴与成像平面的焦点O’(u0,v0)上,单位为长度单位(米)。(u,v)坐标系的原点在图片的左上角(其实是存储器的首地址)如上图所示,单位为数量单位(个)。(x,y)主要用于表征物体从摄像机坐标系向图像坐标系的透视投影关系。而(u,v)则是实实在在的,我们能从摄像机中得到的真实信息。

(x,y)与(u,v)存在如下转换关系:


          dx代表x轴方向一个像素的宽度,dy代表y轴方向上一个像素的宽度。dx、dy为摄像机的内参数。(u0,v0)称为图像平面的主点,也是摄像机的内参数。其实相当于对x轴和y轴的离散化。其可以运用齐次坐标,将上式写成矩阵形式,如下:

                                                                                                           

      (1)式运用了齐次坐标,初学者可能会感到有些迷惑。大家会问:怎样将普通坐标转换为齐次坐标呢齐次坐标能带来什么好处呢

         玉米在这里对齐次坐标做一个通俗的解释。此处只讲怎么将普通坐标改写为齐次坐标及为什么引入齐次坐标。这里只做一个通俗但不太严谨的表述。力求简单明了。针对齐次坐标的严谨的纯数学推导,可参见“周兴和版的《高等几何》---1.3拓广平面上的齐次坐标”。玉米曾详细读过《高等几何》这本书,但觉得离计算机视觉有点远,是讲纯数学的投影关系的,较为生涩难懂。

        齐次坐标可以理解为在原有坐标后面加一个“小尾巴”。将普通坐标转换为齐次坐标,通常就是在增加一个维度,这个维度上的数值为1。如图像坐标系(u,v)转换为(u,v,1)一样。对于无穷远点,小尾巴为0。注意,给零向量增加小尾巴,数学上无意义。

那么,为什么计算机视觉在坐标运算时要加上这个“小尾巴”呢?

        玉米看来有两点原因

         1、 将投影平面扩展到无穷远点。如对消隐点(vanishing point)的描述。

          2、 使得计算更加规整

         如式(1)如果用普通坐标来表达的话,会是下面的样子:

          这样的运算形式会给后与运算带来一定的麻烦,所以齐次坐标是一个更好的选择。

          齐次坐标还有一个重要的性质,伸缩不变性。即:设齐次坐标M,则αM=M。

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

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

相关文章

冲刺总结博客

项目预期计划 完美的完成我们的耿丹师生基本信息管理系统,可以实现增删改查等功能,能运用到我们学校里去。 实际进展 实现了增删改查功能,但是要是真的运用到学校中去,功能还是太单一。 过程体会 这个项目是我们小组成立之后&…

img

转载于:https://www.cnblogs.com/SoulCode/p/6508720.html

HALCON示例程序clip.hdev曲别针方向识别

HALCON示例程序clip.hdev曲别针方向识别 示例程序源码(加注释) 关于显示类函数解释 dev_update_window (‘off’) 读入图片 read_image (Clip, ‘clip’) 获得图片尺寸大小 get_image_size (Clip, Width, Height) dev_close_window () dev_open_windo…

图像坐标:我想和世界坐标谈谈(B)

二、图像坐标:我想和世界坐标谈谈(B) 玉米将在这篇博文中,对图像坐标与世界坐标的这场对话中涉及的第二个问题:谈话方式,进行总结。世界坐标是怎样变换进摄像机,投影成图像坐标的呢? 玉米做了一个简单的图示…

c#基础 函数

函数 就是方法 独立完成某项功能的一个个体 函数的的三个好处:1、提高代码的重用性。2、提高功能开发的效率,3.提高代码的可维护性。 函数也分为 固定功能函数, 高度抽象函数。高度抽象函数应用比较广泛, 函数的四要素&#…

【Android】Fragment的简单笔记

被虐了,做某公司笔试时,发现自己连个Fragment的生命周期都写不详细。平时敲代码,有开发工具的便利,有网上各大神的文章,就算忘了也很容易的可以查到,但当要自己不借助外界,却发现自己似乎对该知…

HALCON示例程序color_fuses.hdev通过颜色对保险丝进行分类

HALCON示例程序color_fuses.hdev通过颜色对保险丝进行分类 示例程序源码(加注释) 关于显示类函数解释 dev_update_window (‘off’)定义字符串变量并初始化 FuseColors : [‘Orange’,‘Red’,‘Blue’,‘Yellow’,‘Green’] FuseTypes : [5,10,15,20…

三、致敬“张正友标定”

三、致敬“张正友标定” 此处“张正友标定”又称“张氏标定”,是指张正友教授于1998年提出的单平面棋盘格的摄像机标定方法。张氏标定法已经作为工具箱或封装好的函数被广泛应用。张氏标定的原文为“A Flexible New Technique forCamera Calibration”。此文中所提到…

Using KernelShark to analyze the real-time scheduler【转】

转自:https://lwn.net/Articles/425583/ This article brought to you by LWN subscribers Subscribers to LWN.net made this article — and everything that surrounds it — possible. If you appreciate our content, please buy a subscription and make the …

无缝滚动的算法

一早上的时间做了一个简单的无缝滚动,遇到的问题特别的多,而且对无缝滚动的算法也不是特别的清楚。 无缝滚动效果的原理:就是几个图片 浮动成为一排;然后让图片滚动,正常情况下图片滚完,就留下了后面的空白…

ACM题目————一笔画问题

描述 zyc从小就比较喜欢玩一些小游戏&#xff0c;其中就包括画一笔画&#xff0c;他想请你帮他写一个程序&#xff0c;判断一个图是否能够用一笔画下来。 规定&#xff0c;所有的边都只能画一次&#xff0c;不能重复画。 输入第一行只有一个正整数N(N<10)表示测试数据的组数…

HALCON示例程序color_fuses_lut_trans.hdev通过颜色对保险丝进行分类

HALCON示例程序color_fuses_lut_trans.hdev通过颜色对保险丝进行分类 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_off ()定义变量并初始化&#xff0c;这些变量都是下边识别要用到的 FuseColors : [‘Orange’,‘Red’,‘Blue’,‘Yellow’,…

上海电驱动

从行业前景上来说还可以&#xff0c;但这个公司不行&#xff0c;公司各种坑&#xff0c;从上到下各种腐败&#xff0c;打酱油的人比较多&#xff0c;在薪资方面除了技术部稍好一点&#xff0c;其他部门我建议你最好别去了&#xff0c;整体上这个公司员工没幸福感&#xff01;只…

1056. 组合数的和(15)

1056. 组合数的和(15) 时间限制400 ms内存限制65536 kB乙级练习题解目录给定N个非0的个位数字&#xff0c;用其中任意2个数字都可以组合成1个2位的数字。要求所有可能组合出来的2位数字的和。例如给定2、5、8&#xff0c;则可以组合出&#xff1a;25、28、52、58、82、85&#…

3、时间和随机数

一、时间 1.1 使用Calendar/[ˈkləndɚ]/类获取时间 1.1.1 常用方法 (1)public static Calendar getInstance&#xff08;&#xff09;: 使用默认时区和语言环境获取一个基于当前时间的Calendar对象。 (2)public int get(int field) 返回给定日历字段表示的日历部分的数字…

哥尼斯堡的“七桥问题” (欧拉回路,并查集)

哥尼斯堡的“七桥问题” (25分) 哥尼斯堡是位于普累格河上的一座城市&#xff0c;它包含两个岛屿及连接它们的七座桥&#xff0c;如下图所示。 可否走过这样的七座桥&#xff0c;而且每桥只走过一次&#xff1f;瑞士数学家欧拉(Leonhard Euler&#xff0c;1707—1783)最终解决…

HALCON示例程序color_pieces.hdev通过MLP训练器对彩色棋子进行分类识别

HALCON示例程序color_pieces.hdev通过MLP训练器对彩色棋子进行分类识别&#xff1b;分别在彩色图像下与灰度图像下进行&#xff0c;从而产生对比。 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_off () dev_close_window () dev_open_window (…

无人驾驶汽车之争本田为何未战先败

摘要 : 本田汽车的研发部门对于汽车虽然理解深刻&#xff0c;但从整体而言&#xff0c;本田的造车理念还停留在上个时代&#xff0c;在未来的无人驾驶竞争中&#xff0c;本田已经有未战先啊败的苗头。 百度百家The BIG Talk硅谷站连续5小时的高密度头脑风暴&#xff0c;果然让人…

理解git结构与简单操作(四)合并分支的方法与策略

接上节&#xff0c;此时的dev分支与master分支的进度就不一样了&#xff0c;所以需要将dev分支与master分支同步。这里需要的就是合并分支的操作&#xff0c;大家应该都知道用git merge或者git rebase。 git merge merge&#xff0c;即「合并」。 fast-forward 当出现我们上面图…

HALCON示例程序color_segmentation_pizza.hdev披萨肉饼识别。

HALCON示例程序color_segmentation_pizza.hdev披萨肉饼识别。 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_off () dev_close_window () read_image (Image, ‘color/pizza_01’) get_image_size (Image, Width, Height) dev_open_window (0,…