(七)立体标定与立体校正 【计算机视觉学习笔记--双目视觉几何框架系列】

七、立体标定与立体校正

        这篇博文中,让玉米和大家一起了解一下,张氏标定是怎样过渡到立体标定的?在这里主要以双目立体视觉进行分析。对于双目立体视觉,我们有两个摄像头。它们就像人的一双眼睛一样,从不同的方向看世界。两只眼睛中的图像的视差,让我们对世界有了三维的认识。

        那么,想要知道视差,首先应该知道双目视觉系统中两个摄像头之间的相对位置关系。我们可以通过同时对两个摄像头进行标定,分别得到二者相对同一坐标系的旋转矩阵和平移矩阵。获得这两个矩阵的过程,就是立体标定的过程。也即是:从张氏标定走向立体标定!

       两摄像头之间的旋转矩阵和平移矩阵可以由下式求出:


       其中,R为两摄像头间的旋转矩阵,T为两摄像头间的平移矩阵。Rr为右摄像头经过张氏标定得到的相对标定物的旋转矩阵,Tr为右摄像头通过张氏标定得到的相对标定物的平移向量。Rl为左摄像头经过张氏标定得到的相对相同标定物的旋转矩阵,Tl为左摄像头经过张氏标定得到的相对相同标定物的平移向量。

      两个式子是可以通过数学代换推导来的。但玉米觉得对这样有明显物理意义并且空间过程简单的计算式。物理上的空间想象,比纯代数代换,要生动的多。并且有利于大家揣摩整个物理过程。

      在玉米眼里,这两个式子是这样的:

      对于R,首先用T把左摄像机坐标系平移到右摄像机坐标系上(即两坐标系远点重合)。然后在同一参考系下的两个旋转矩阵相乘,表示世界坐标先向右旋转到Rr ,再向左旋转Rl。那么两次旋转后得到的旋转,就是有摄像机旋转到左摄像机所需的旋转矩阵R。

      对于T,那就更容易理解了,先用R对左坐标系旋转一下,把左右两摄像机调成平行,然后直接平移向量相减,即得到。两摄像机之间的平移向量T。

      上面求得的R和T就是立体标定得到的参数了。

      那么运用的立体标定所得的参数了,下一步我们该做什么呢?答案是:立体校正。

      在介绍立体校正的具体方法之前,让我们来看一下,为什么要进行立体校正?

      因为当两个图像平面是完全共面行对准时,计算立体视差是最简单的。但是,在现实的双目立体视觉系统中,是不存在完全的共面行对准的两个摄像机图像平面的。所以我们要进行立体校正。立体校正的目的就是,把实际中非共面行对准的两幅图像,校正成共面行对准。如下面示意图所示。(共面行对准是指:两摄像机图像平面在同一平面上,且同一点投影到两个摄像机图像平面时,应该在两个像素坐标系的同一行)


有了上述铺垫,下面让玉米给大家陈述一下基于立体标定所获参数的立体校正的数学原理,或者说是几何原理。但玉米在这里,主要和大家分享一下,如此校正的物理意义。

         立体校正应该分两步走:

         1、 将两个图像平面拉回同一平面。

         这一步,该怎么做呢?玉米相信,经过这么多铺垫,大家应该早就心里有数了。这一步很简单。可以这样:两个平面在方向上            之间不是相差一个旋转矩阵R吗,那么我们让两个相机个旋转一半,但需注意二者的旋转,应该是反向的。如下式所示:


         上面的这个公式是玉米根据物理意义自己总结的。rl 、rr 分别代表左摄像机和右摄像机为达到共面所需的旋转矩阵。rl、rr程度             相同,但旋转方向相反。左右相机分别经历了这样的旋转之后,二者就已经共面了。大家应该明白了吧?

          2、 旋转图像使得同行对准

         玉米在这里先为大家展示一个,校正成功的图吧。

                  大家可以像小学时候写看图说话作文一样,观察一下图中校正前和校正后左右两摄像机的图像到底发生了什么本质的变                化。

                  玉米的答案是:左右两图分别绕光轴作了旋转,旋转过后两摄像机的主点连线平行像素坐标的行线。

                  玉米的答案也是自己对行对准的理解,比较通俗。这与很多书上用极几何术语描述的有些不同,大家可以思考一下,玉米           说的有没有道理。

                   好,既然已经明确了,要达到行对准,图像所需发生的变化。那么就让我们用数学表达式来表达它们吧。

          玉米画了一个简单的示意图,画的丑大家不要见笑。

          红色的线表示的是校正后的行线,其是左右对准的。大家可以看到,从原图像的行线转到校正后图像的行线,左图像转动了α,右图像转动了θ。那么怎样来确定两个旋转角度呢?

           大家可以回忆一下,我们在本系列博文中的第二篇中讲述刚体变换时,把旋转矩阵按不同轴分解的方法。可以看做是沿光轴旋转,旋转目的是与主点连线平行。先以左图像为例:

          那么我们设旋转矩阵为R h


          则Rh可以表示为以归一化T(平移向量):e1为旋转的指针,则随之e2为e1与光轴的叉积,e3为e2与e1的叉积:


          大家可以进一步算一下:

          我们发现,其实行对准就是绕e3方向,转了α。同样的,对右图就是转了θ。

          通过上面的推导,我们就把立体标定与立体校正中的数学思想理清楚了。其实,立体匹配是有很多种方法的,玉米在里只是介绍了立体校正的基本原理。其他方法中,有一些可以不依赖标定参数,如果大家想要对立体校正进行深入研究,大家可以搜索一些经典论文进行深入学习。如:A. Fusiello, E. Trucco, and A. Verri.写的 Acompact algorithm for rectification of stereo pairs.等等

         截止目前对于三维重建的所有准备工作,都已完成。几何框架也仅剩下最后一步:立体成像。(因为本系列博文只介绍双目视觉的几何架构,所以跳过匹配不谈)玉米在下一篇博文中将与大家分享一下,几何脉络的最终果实:立体成像。这也是我们对于双目视觉几何框架推导和理解的最终目标。

 

         玉米才疏学浅,文中如有纰漏,请大家批评指正!

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

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

相关文章

让 jQuery UI draggable 适配移动端

背景: 在移动端,本人要实现对某个元素的拖动,想到使用 jQuery UI 的 draggable 功能。但是发现此插件的拖动只支持PC端,不支持移动端。 原因: 原始的 jQuery UI 里,都是mousedown、mousemove、mouseup来描述…

LAMP(7限定某个目录禁止解析php、 限制user_agent、 PHP相关配置、PHP扩展模块

限定某个目录禁止解析php防止***上传一个目录文件php&#xff0c;网站会从而解析php,对我们的网站有很大的危险。因此&#xff0c;我们需要在能上传文件的目录直接禁止解析PHP代码禁止步骤1.编辑虚拟主机配置文件&#xff1a;增添内容核心配置文件内容<Directory /data/wwwr…

编译器的功能是什么

1、编译器就是将“一种语言&#xff08;通常为高级语言&#xff09;”翻译为“另一种语言&#xff08;通常为低级语言&#xff09;”的程序。一个现代编译器的主要工作流程&#xff1a;源代码 (source code) → 预处理器(preprocessor) → 编译器 (compiler) → 目标代码 (obje…

八、走向三维

八、走向三维 我们前面花了七篇博文做铺垫&#xff0c;我们所做的一切努力都是为了最后的这一击——立体成像。因为玉米的这个系列文章是对双目视觉几何框架的总结。此处跳过匹配&#xff0c;假设左右图像点的完美匹配的。只看在几何上&#xff0c;三维坐标是如何被还原的。相对…

L~M方法

L~M方法&#xff1a; L~M&#xff08;Levenberg-Marquardt&#xff09;方法有些让人摸不清头脑。玉米觉得L~M让人困扰的主要原因有两点&#xff1a;一是L~M从何而来、二是L~M怎么样用&#xff1f;因为玉米也不是研究最优化理论的&#xff0c;所以玉米在这里用较为通俗的观点&a…

IDEA将项目上传至码云/GitHub托管

前言 好久都没有写博客了&#xff0c;由于博主之前一直都在上班处于加班的阶段&#xff0c;所以根本就没有时间去学习。现在请假回到学校写论文&#xff0c;有时间来学习了。 所以会不断的进行博客的更新&#xff0c;以及分享我在公司学到的一些新的技术&#xff0c;希望大家多…

cocos2dx游戏--欢欢英雄传说--添加攻击按钮

接下来添加攻击按钮用于执行攻击动作。同时修复了上一版移动时的bug。修复后的Player::walkTo()函数&#xff1a; void Player::walkTo(Vec2 dest) {if (_seq)this->stopAction(_seq);auto curPos this->getPosition();if (curPos.x > dest.x)this->setFlippedX(t…

Ceph分布式存储系统-性能测试与优化

测试环境 部署方案&#xff1a;整个Ceph Cluster使用4台ECS&#xff0c;均在同一VPC中&#xff0c;结构如图&#xff1a; 以下是 Ceph 的测试环境&#xff0c;说明如下&#xff1a; Ceph 采用 10.2.10 版本&#xff0c;安装于 CentOS 7.4 版本中&#xff1b;系统为初始安装&…

阅读好书依然是提升自己的高效方法:兼以作者的身份告诉大家如何选择书,以及高效学习的方法...

国内技术网站多如牛毛&#xff0c;质量高的网站也不少&#xff0c;博客园也算一个&#xff0c;各类文章数以百万计&#xff0c;我随便输入一个关键字&#xff0c;比如Spring Cloud&#xff0c;都能看到大量的技术文章和教学视频&#xff0c;我无意贬低技术文章和教学视频的作用…

TCP/IP 协议簇的逐层封装

在使用 TCP 协议的网络程序中&#xff0c;用户数据从产生到从网卡发出去一般要经过如下的逐层封装过程&#xff1a; 从下往上看&#xff1a; 1&#xff09;链路层通过加固定长度的首部、尾部来封装 IP 数据报(Datagram) 产生以太网帧(Frame)。 其中首部存在对封装数据的…

【开源程序(C++)】获取bing图片并自动设置为电脑桌面背景

众所周知&#xff0c;bing搜索网站首页每日会更新一张图片&#xff0c;张张漂亮&#xff08;额&#xff0c;也有一些不合我口味的&#xff09;&#xff0c;特别适合用来做电脑壁纸。 我们想要将bing网站背景图片设置为电脑桌面背景的通常做法是&#xff1a; 上网&#xff0c;搜…

UIProgressView 圆角

里面外面都变成圆角 不用图片 直接改变layer 重点是里面外面都是圆角哦 for (UIImageView * imageview in self.progress.subviews) { imageview.layer.cornerRadius 5; imageview.clipsToBounds YES; } 转载于:https://www.cnblogs.com/huoran1120/p/5563991.html

DataTables warning: Requested unknown parameter '0' from the data source for row '0'

问题&#xff1a;DataTables warning: Requested unknown parameter 0 from the data source for row 0 代码&#xff1a; <script type"text/javascript">var data [{"Name":"UpdateBootProfile","Result":"PASS",&…

我与Linux系统的交集

2019独角兽企业重金招聘Python工程师标准>>> 一、初识Linux 第一次知道Linux还是在我刚进大学的时候&#xff0c;从开始聊QQ、玩斗地主的时候起我就是用的Windows&#xff0c;从Windows2000一直到Windows7&#xff0c;当时我已经完全习惯了使用Windows&#xff0c;而…

IP头、TCP头、UDP头详解以及定义

一、MAC帧头定义 /*数据帧定义&#xff0c;头14个字节&#xff0c;尾4个字节*/ typedef struct _MAC_FRAME_HEADER { char m_cDstMacAddress[6]; //目的mac地址 char m_cSrcMacAddress[6]; //源mac地址 short m_cType;      //上一层协议类型&#xff0c;如…

基本 TCP 套接字编程讲解

基于 TCP 的套接字编程的所有客户端和服务器端都是从调用socket 开始&#xff0c;它返回一个套接字描述符。客户端随后调用connect 函数&#xff0c;服务器端则调用 bind、listen 和accept 函数。 使用套接口客户机服务器的的例子 sever.c #include <stdio.h> #include &…

怎样屏蔽微信朋友圈视频?局域网如何禁止员工看朋友圈视频?

上班时间刷刷朋友圈&#xff0c;一眨眼半小时就过去了。不但会影响工作效率&#xff0c;而且朋友圈的视频会占用大量的带宽。所以对企业管理人员来说&#xff0c;很多时候需要禁止员工在工作时段刷朋友圈。但是行政手段要和技术手段配合&#xff0c;才可以发挥真正的作用。本文…

cf414B(dp)

题目链接&#xff1a;http://codeforces.com/problemset/problem/414/B 题意&#xff1a;定义所有元素是其前一个元素的倍数的数列为good sequence&#xff0c;给出 n, 和 k&#xff0c;求1....n组成的长度为k的good sequence 的数目&#xff1b; 思路&#xff1a;dp 用dp[i][j…

增量值编码器、单圈绝对值编码器、多圈绝对值编码器

主流的伺服电机位置反馈元件包括增量值编码器&#xff0c;单圈绝对值编码器&#xff0c;多圈绝对值编码器&#xff0c;旋转变压器等。下面分别介绍&#xff1a; 增量值编码器增量式编码器是将位移转换成周期性的电信号&#xff0c;再把这个电信号转变成计数脉冲&#xff0c;用…

永磁交流伺服电机的工作原理与更换新编码器后的常规零位校正方法

http://wuhuotun.blog.163.com/blog/static/73085450200910655748516/ 永磁交流伺服电机的编码器相位为何要与转子磁极相位对齐 其唯一目的就是要达成矢量控制的目标&#xff0c;使d轴励磁分量和q轴出力分量解耦&#xff0c;令永磁交流伺服电机定子绕组产生的电磁场始终正交于…