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 ,显示为错…

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…

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

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

YUV格式像素

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

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

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

Thread详解

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

linux 欢迎语,一日一技 | 如何让你的终端欢迎语好看又有趣

原标题:一日一技 | 如何让你的终端欢迎语好看又有趣Matrix 精选Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。文章代…

springmvc 1

springmvc的model是实体类,可以理解为把数据库里的一张表变成了一个对象 /*** */ package com.test.model;/*** ClassName: User.java* Description: TODO(用一句话描述该文件做什么) * * author JerryZhou* Date 2014-7-15 上午10:24:04 *…

android java adb命令大全,Android adb命令备份恢复手机信息

假设你已经在Windows下安装了Android SDK,并且更新到最新版步骤:1.通过USB连接你的设备,打开命令行2.一般地,输入”adb devices“检测设备是否连接正常有个命令“ adb backup”(简化写法)可以使你备份整个系统。这个命令的参数如下…

【HDOJ】【3037】Saving Beans

排列组合 啊……这题是要求c(n-1,0)c(n,1)c(n1,2)......c(nm-1,m) 这个玩意……其实就等于c(nm,m) 好吧然后就是模P……Lucas大法好 我SB地去预处理<P的所有fac和inv了……果断TLE 事实上Lucas时对于<P的部分直接暴力算就好了 1 //HDOJ 30372 #include<cstdio>3 #…

miui12 android系统耗电,miui12耗电严重怎么办,miui12续航优化方法

很多小米用户反馈升级到miui12稳定版后耗电大大增加&#xff01;再大的电池也经不住miui12的耗电&#xff01;那么miui12耗电严重怎么办&#xff1f;miui12续航优化的方法呢&#xff1f;一起和XDA小编看看吧&#xff01;近日&#xff0c;有网友对此提供了优化miui12耗电的方法&…

r6400 usb android,网件R6400路由器USB接口速率测试与总结

网件R6400路由器USB接口速率测试测试中使用的是浦科特M6V 256GB固态硬盘搭配USB3.0硬盘盒进行测试&#xff0c;此外由于无线网络速率有一定的波动&#xff0c;对最终测试成绩测试成绩有较大的影响&#xff0c;因此我们使用网速相对稳定的千兆有线网络连接路由器进行测试。首先我…

只用2000行代码实现google protocol buffer c++版的功能

2019独角兽企业重金招聘Python工程师标准>>> google protocol buffer (下面简称gpb)功能强大&#xff0c;应用广泛&#xff0c;但在实际应用中&#xff0c;gpb需要写.proto脚本文件&#xff0c;需要依赖.lib库&#xff0c;还需要为每个消息体生成一大堆难以阅读的C代…

流控思路——多消费者定量生产(第100篇)

为什么80%的码农都做不了架构师&#xff1f;>>> 多线程消费队列到指定个数时触发一个生产线程往队列中补充元素&#xff0c;保证队列中有足够的数据供消费&#xff0c;不至于使消费线程等待&#xff0c;也不至于在队列中堆得过多。假设10人消费&#xff0c;先放2个…

使用JetBrains dotMemory 4.0分析内存

安装下载地址&#xff1a;http://www.jetbrains.com/profiler/ 1.在本地启动web应用后&#xff0c;打开dotMemory,附加进程 2.附加后会看到集中颜色得粗条&#xff0c;不断往左边走动&#xff0c;这是内存运行情况&#xff0c; 3.Get snapshot,抓取两次快照&#xff0c;等自动信…