Camera Calibration 相机标定:原理简介(三)

3 绝对圆锥曲线

在进一步了解相机标定前,有必要了解绝对圆锥曲线(Absolute Conic)这一概念。

Conic


对于一个3D空间的点x,其投影空间的坐标为:x~=[x1,x2,x3,x4]T。我们定义无穷远处的平面用符号Π表示,该平面内的投影空间点坐标满足x4=0,则位于圆锥曲线Ω上的点满足:

{x21+x22+x23=0x4=0.(1)

x=[x1,x2,x3]T是绝对圆锥曲线Ω上的点,如上图所示。由定义可知xTx=0,同时也有x~=[x1,x2,x3,0]T满足x~Tx~=0。读至此处,我们发现不管是ΠΩ,还是xx~都是存粹想象出来的,很难在实际生活里找到实例,但是科学就是这么迷人,给定一个起始点,想象和求知探索的渴求却不受其限制,直至永无止境。

让我们再看公式(1),如果我们令:x=x1/x3y=x2/x3,显而易见,位于曲线Ω上的点方程就可以写成:x2+y2=1,这就是一个圆方程,只不过我们所想象出来的这个虚拟圆的半径为1,当然对于了解复数(Complex number)概念的我们,这并没什么不可。

此时,或许我们会困惑,为什么要费尽心机想象出绝对圆锥曲线呢?原因在于绝对圆锥曲线所具有的一条重要特性:对于刚体变换具有不变性,这么说是不是有点不明觉厉,那就继续往下看。

首先简单讲一下刚体变换:只有物体的位置(平移变换)和朝向(旋转变换)发生改变,而形状不变,得到的变换称为刚体变换。以三维刚体变换为例:

x=[R  t]X(2)

或者表述为:

x=RX+t   or   x=R(X+C)(3)

H=[R0t1],对于位于绝对圆锥曲线Ω上的点x~=[x0],刚体变换后的点x~可表示为:

x~=Hx~=[Rx0](4)

x很明显也是位于无穷远平面上的点,而且是位于同一绝对圆锥曲线Ω上点:

xTx=(Rx)T(Rx)=xT(RTR)x=0(5)

令绝对圆锥曲线Ω对应的图像称为ω,也被简记为IAC(Image of the absolute conic),当然这也是想象出来的~于是对于Ω上的任一点x,其像点m满足:

m~=sA[R  t][x0]=sARx(6)

m~ATA1m~=s2xTRTRx=s2xTx=0(7)

因此,绝对圆锥曲线成像构成一个虚构曲线,并且由公式(7)可以看出,这个虚拟曲线由ATA1决定,这与相机的外参完全无关,而仅仅由相机内参决定。可以设想,如果我们找到了绝对圆锥曲线通过相机所成的图像,那就可以求解出相机内参。至此,我想大家也就明白为什么会提出Absolute Conic这一概念了吧。事实上,这一理论在相机自检校标定法(Self-calibration)中作为基础理论,十分重要。

后续文章将会为大家介绍几种确定绝对圆锥曲线Ω对应的图像ω的方法。

转载于:https://www.cnblogs.com/hehehaha/p/6332230.html

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

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

相关文章

C语言判断两字符串同构,c语言实现判断两颗树是否同构

在本题中认为如果两个树左右子树交换可以相同,也被认为是同构树。对应输入格式为:4(总结点数)A - 1B 2 3C - -D - -#include #define Tree int#define Null -1#define MAXSIZE 10struct Node{char Element;Tree Left;Tree Right;}T1[MAXSIZE], T2[MAXSIZ…

C语言常量类型及名称,菜鸟带你入门C语言|基本数据类型之常量

常量在程序中,有些数据是不需要改变的,也是不能改变的,因此,我们把这些不能改变的固定值称为常量。如下图中的“5”、“A”、“Good”,这些在程序执行过程中是一直保持不变的,他们就是常量。printf的作用是…

Android TabHost中实现标签的滚动以及一些TabHost开发的奇怪问题

最近在使用TabHost的时候遇到了一些奇怪的问题,在这里总结分享备忘一下。 首先说一点TabActivity将会被FragmentActivity所替代,但是本文中却是使用的TabActivity。 下面说说本程序能够实现的功能: 实现TabHost中的标题栏能够横向滚动&#x…

tl wn322g linux驱动下载,怎样才能装好tl_wn322G+V2.0版USB无线网卡的Linux驱动

怎样才能装好tl_wn322GV2.0版USB无线网卡的Linux驱动tl_wn322G 2.0版无线网卡采用的是Atheros 的AR9271方案,我尝试了用ndiswrapper-1.55在linux下安装该无线网卡的Windows驱动,安装windows版的驱动时,用ndiswrapper -l ,显示为错…

20151022作业

中级学员:2015年10月22日作业一、采购管理1、采购管理的主要过程;答:采购管理包括如下几个过程。(1)编制采购计划。决定采购什么,何时采购,如何采购。(2)编制询价计划。记录项目对于产品、服务或成果的需求&#xff0c…

editplus 快捷键

shift i 减少缩进 tab 增加缩进 ctrl shift f 使用代码折叠功能转载于:https://www.cnblogs.com/zztinglan/p/4277616.html

Spring + Dubbo + zookeeper (linux) 框架搭建

2019独角兽企业重金招聘Python工程师标准>>> dubbo简介 节点角色说明: Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的注册中心。 Monitor: 统计服务的调用次调和调用时间的监控中心。 Container: …

c语言 函数编程四个数相加,C语言第四章课后编程题

1.编写程序,从键盘上输入4个整数,输出最小值。此题较为简单,只需定义一个桥梁最小值min就可以来着次比较他们的大小。2.编写一个程序,从键盘输入一个四位整数n,输出它的各位数字之和。例如n1308,则输出12&a…

[raywenderlich教程]

非常详细的图文入门教程http://www.raywenderlich.com/81879/storyboards-tutorial-swift-part-1 因为太长了 所以只放一些我觉得很有用的内容的翻译 The single View Controller you defined was set as the Initial View Controller – but how did the app load it? Take a…

iOS开发-XMPP

介绍一下XMPP?有什么优缺点吗?
XMPP:基于XML的点对点的即时通讯协议.XMPP协议是公开的,XMPP具有良好的拓展性,安全性.缺点是丢包率比较高.

c语言scanf附加格式*,C语言的scanf语句格式

满意答案pihiac2014.09.05采纳率:45% 等级:7已帮助:460人scanf语句的一般格式如下:scanf("格式字符串", 地址,…);scanf语句用"格式字符串"控制键盘读入的方式。"格式字符串"中一般只…

分析器错误

--提示 行 1: <% Application Codebehind"Global.asax.cs" Inherits"SDX.HR.RMS.MvcApplication" Language"C#" %> 说明&#xff1a;添加了的东西还原之后问题就没有了 --提示其他信息: 在向服务器发送请求时发生传输级错误。 (provider: …

YUV格式像素

转自&#xff1a;http://blog.csdn.net/grow_mature/article/details/9004548 一幅彩色图像的基本要素是什么&#xff1f; 说白了&#xff0c;一幅图像包括的基本东西就是二进制数据&#xff0c;其容量大小实质即为二进制数据的多少。一幅1920x1080像素的YUV422的图像&#xff…

mysql c语言教程,C语言调用mysql快速教程(精华篇).pdf

C语言调用mysql快速教程(精华篇).pdf&#xff0c;使用 语言操作 之前&#xff0c;先在 里头创建一个数据库&#xff0c;一个表&#xff0c;在表里头添加1 c mysql mysql数据如下&#xff1a;创建数据库&#xff0c;库名为 cusemysql:mysql create database cusemysql;创建表 表…

perl学习之:编译、执行与内存关系(转)

1、所谓在编译期间分配空间指的是静态分配空间&#xff08;相对于用new动态申请空间&#xff09;&#xff0c;如全局变量或静态变量&#xff08;包括一些复杂类型的 常量&#xff09;&#xff0c;它们所需要的空间大小可以明确计算出来&#xff0c;并且不会再改变&#xff0c;因…

生命游戏c语言代码easy,c++生命游戏源码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼glViewport( 0, 0, width, height );glMatrixMode( GL_PROJECTION );glLoadIdentity( );}//程序入口int main(int argc, char *argv[]){//随机生成细胞的状态MapRand();std::cout<//SDL初始化const SDL_VideoInfo* info NULL;i…

从零开始学android开发-布局中 layout_gravity、gravity、orientation、layout_weight

线性布局中&#xff0c;有 4 个及其重要的参数&#xff0c;直接决定元素的布局和位置&#xff0c;这四个参数是 android:layout_gravity ( 是本元素相对于父元素的重力方向 ) android:gravity &#xff08;是本元素所有子元素的重力方向&#xff09; android:orientation &…

Thread详解

具体可参考&#xff1a;Java并发编程&#xff1a;Thread类的使用&#xff0c;这里对线程状态的转换及主要函数做一下补充。 一. 线程状态转换图 注意&#xff1a; 调用obj.wait()的线程需要先获取obj的monitor&#xff0c;wait()会释放obj的monitor并进入等待态。所以wait()/no…

mac怎么用终端编写c语言视频,【新手提问】有知道用mac终端编c语言的网络编程的人吗?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#include#include#include#include#define ECHOMAX 255int main(int argc,char *argv[]){ int sock;struct sockaddr_in echoServAddr;struct sockaddr_in echoClntAddr;unsigned short echoServPort;unsigned int…

Net框架下-ORM框架LLBLGen的简介(转载)

Net框架下-ORM框架LLBLGen的简介 http://www.cnblogs.com/huashanlin/archive/2015/02/12/4288522.html 官方网址&#xff1a;http://www.llblgen.com/转载于:https://www.cnblogs.com/wangjunwei/p/4290896.html