本文主要内容围绕西交大的舒远、谈正和丁礼如所提出的一种利用空间正交约束的相机自标定方法进行归纳概述,谨做学习用。文章提出了一种用 2 幅存在正交约束的场景图像进行三维重建的方法,该方法不需要事先标定相机的参数,就可以实现从 2 幅手持数码相机拍摄的人造规则景物图像中恢复三维结构。


1  空间正交约束的消失成像

同一平面中相互平行和垂直的直线构成了线状纹理表面,当相机在不同角度拍摄时,纹理梯度方向将发生变换,但可以根据其消失点位置信息来恢复纹理表面朝向。图 1 所示的平面纹理和立体结构经透视成像后分别在图像上得到 2 个和 3 个消失点。

1.1  相机空间映射变换

空间直线  可表示为: ,其中  定义了直线  的方向, 为  上的一点,空间直线  经相机透视投影在成像平面所得到的直线方程为:

其中, 为相机的焦距。

图像上的消失点, 可定义为:

根据上面的等式可知:当空间中 2 条平行直线所在的平面与相机的成像平面不平行时,经透视投影后这 2 条直线将在像平面相较于一点,称之为消失点。移动相机使得视角发生变化,消失点位置也随之发生变化,因此可由消失点的位置变化计算出相机的参数。

1.2  消失点位置测算

正确测算消失点的位置使相机标定的前提。常用的 Hough 变换直线提取算法,适合轮廓分明的几何结构,采用 Burns 相位编组的改进算法,在不同方向采用不同阈值的线段长度进行过滤,去除哪些由大纹理造成的短直线。

在提取的直线束中,以直线的倾角  为  轴,相同倾角的直线条数为  轴作直方图,找到 3 个局部最大角度  ,去除其他方向的直线段,得到对应 3 个空间正交方向的 3 组直线束,这些提取出的直线束就是空间景物中需要找到的平行直线。

假设在空间中的某个方向经过聚类后有  条直线,两两相交共得到  个交点,其几何中心为:

考虑到图像的噪声、纹理干扰、成像畸变等对消失点位置测量的影响,采用切尾均值修正的数据优化算法对消失点位置进行修正,按各消失点样本的方差对样本数据进行排序,切尾均值定义为:

其中, 为样本数; 为切尾百分比,选为 5% 。

要想得到空间某个方向在成像平面上的消失点,一般只需要找到 2 条管线的直线求其相交点即可。

2  相机参数标定

三维空间点用齐次笛卡尔坐标可以表示为 ,根据射影几何定理,二次曲线可以用一个 3X3 的对称矩阵  来表示,如果点  在二次曲线  上,则满足:

 和  确定的一条直线  称为  关于二次曲线  的极线, 称为  关于二次曲线  的极点。如果  是二次曲线  在成像平面上的投影, 是图像上互相垂直的 3 个方向的消失点,则它们形成了一个自极三角形,如图 2 所示,且满足下列条件:

上式为关于  的 3 个线性方程组,因此可由空间中 3 个相互垂直的方向在成像平面的消失点位置来计算相机内参数。

2.1  相机内参数标定

常用的相机模型为线性针孔模型,从欧式三维空间点  到二维成像点  的透视投影变换可以用一个 3X4 的投影矩阵  描述:

其中, 为非 0 尺度因子; 是 3X3 的旋转矩阵; 是 3X1 的平移向量; 描述的是相机在世界坐标系的面向和位置参数; 是相机的内参数,为 5 参数的上三角矩阵:

其中, 表示光轴与成像面的交点坐标; 为成像平面像素和空间物理长度单位之间的转换因子; 为倾斜因子,当  时,可认为像素为矩形,此时 

假设  为空间中 3 个相互正交的单位矢量,在成像平面上检测出的 3 个消失点分别为 ,由于  相互正交,则满足 ,即:

代入消失点公式,可得:

图像采样后,空间坐标  与图像坐标  变换为:

带入上述消失点公式可得:

上述方程是空间 3 个正交方向经过相机投影后得到的约束方程,包括了相机的  参数。

定义 ,对上面的方程进行化简可得:

从上面的推到中可知,从 1 幅成像图的 3 个消失点只能得到相机参数的 3 个约束方程。假定 保持不变,通过相机在不同视角拍摄同一场景的 2 幅图像,则可建立 6 个方程,该 6 个方程组合后消去  可得:

上述方程组是关于  的线性超定方程组,使用最小二乘法可求解出参数  再带入前面的方程组可以求出  ,据此可以线性求解出相机的内参矩阵 

2.2  相机运动参数估计

在得出相机的内参后,还需要计算相机在 2 个不同视角的运动参数,这样才能进行场景图像的三维重建,如果采用 2 幅图像的匹配特征点和已知的内参,计算相机在 2 个视角的运动参数,其结果受噪声和图像畸变的影响很大。因此,采用从提取出的线段信息中恢复相机运动参数的方法。

用归一化处理后的单位矢量  表示消失点  和  对应的空间直线的方向,由于相机平移并不改变消失点的位置,则旋转矩阵  可由相机在 2 个不同视角成像得到的 3 对消失点位置求出:

考虑到空间一条直线在不同视角的成像位置与相机的平移存在着对应关系,在相机内参数和旋转矩阵已知的前提下,利用关联线段来计算相机在 2 个视角的平移量  。

经过之先提取后,找到如图 3 所示空间中 3 条相互垂直且教育一点的 Y 型结构,如建筑物最常见的一个屋顶角,假设空间点 A 的三维坐标为  ,则对应的左右 2 幅图像的像点为:左 ,右 ,剩下的 B、C、O点类似。

由空间直线 AO、BO、CO 相互垂直可得:

在相机内参和旋转矩阵都求出后,将投影矩阵  和  展开,带入上面的方程组,可得到关于  的 3 个未知量的方程组,求解后即可得到相机的平移量。至此,通过充分利用空间中的正交信息和对应线段求出了相机的内外参数。

标定学习笔记(九)-- 利用空间正交约束的相机自标定和三维重建相关推荐

  1. at24c16如何划分出多个读写区_AVR学习笔记九、基于AT24C16的数据存储实验

    Ema{@AVR 学习笔记九.基于 AT24C16 的数据存储实验 ------- 基于 LT_Mini_M16 9.1 用 I/O 口模拟 I2C 总线实现 AT24C16 的读写 9.1.1 .实 ...

  2. C语言学习笔记——堆区空间申请(一)

    C语言学习笔记 堆区空间申请(一) 栈区变量分析 所有程序/软件的运行,都是由操作系统统一调配的,操作系统是程序的运行环境 运行中的多个程序之间,内存是不交叉的 程序结束后,操作系统还要释放其使用的资 ...

  3. OpenCV学习笔记(九)——图像轮廓(下)

    <OpenCV轻松入门:面向Python>学习笔记(九) 1-3 查找并绘制轮廓.矩特性及Hu矩 4-5 轮廓拟合及凸包 6. 利用形状场景算法比较轮廓 6.1 计算形状场景距离 6.2 ...

  4. IOS学习笔记(九)之UIAlertView(警告视图)和UIActionSheet(操作表视图)基本概念和使用方法...

    IOS学习笔记(九)之UIAlertView(警告视图)和UIActionSheet(操作表视图)基本概念和使用方法 Author:hmjiangqq Email:jiangqqlmj@163.com ...

  5. python3.4学习笔记(九) Python GUI桌面应用开发工具选择

    python3.4学习笔记(九) Python GUI桌面应用开发工具选择 Python GUI开发工具选择 - WEB开发者 http://www.admin10000.com/document/9 ...

  6. 吴恩达《机器学习》学习笔记九——神经网络相关(1)

    吴恩达<机器学习>学习笔记九--神经网络相关(1) 一. 非线性假设的问题 二. 神经网络相关知识 1.神经网络的大致历史 2.神经网络的表示 3.前向传播:向量化表示 三. 例子与直觉理 ...

  7. 数据结构学习笔记:利用栈实现进制转换

    数据结构学习笔记:利用栈实现进制转换 一.除基倒取余法示意图 二.编写十进制转换成二进制Python程序 1.源代码 2.运行结果 其实Python提供了一

  8. 数据结构学习笔记:利用Python列表实现栈结构

    数据结构学习笔记:利用Python列表实现栈结构 利用Python列表实现栈结构.有两种实现方式: 1.将列表的末尾(rear)作为栈顶(top) 2.将列表的前端(front)作为栈顶(top) 一 ...

  9. Python学习笔记:利用timeit计算函数调用耗时

    Python学习笔记:利用timeit计算函数调用耗时 一.timeit模块简介 Timer对象包含两个参数:第一个参数是你想要计时的Python语句,第二个参数运行一次来建立测试. 默认情况time ...

最新文章

  1. wingide 显示中文 及 配色方案
  2. rust腐蚀 木制窗户怎么修_冬天装修后怎么去除甲醛?紧闭门窗和准备一盆水,轻松教你解决!...
  3. 论文,范围管理(2017上)
  4. 职场上,比尽力更重要的,是要学会“借力”
  5. acm java 类库_ACM java入门和基本技巧
  6. 《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.40. Expat-2.1.0...
  7. ei指什么_SCI、EI、SSCI、CSSCI分别是指什么
  8. java水彩画效果滤镜,教你巧用PS滤镜实现水彩画效果
  9. 华为搜索引擎Petal与Google的区别
  10. 上海交大计算机系分数线2019,2019年上海部分高校各专业录取分数线汇总|附2019上海交通大学上海生源情况!...
  11. WIN10重置网络后网络适配器不见了并且适配器驱动感叹号
  12. 怎么将excel表格转换成word文档
  13. digitalpersona 开发(系统托盘,监听指纹扫描)
  14. mac无法使用80端口问题
  15. C++使用Clipper库
  16. Spring bean是什么?
  17. 【DockerFile构建自定义镜像实操出现问题解决方案Failed to download metadata for repo ‘appstream‘: IPv4 forwarding disa】
  18. Android登陆界面设计demo
  19. Oracle与plsqldev,oracle与PLSQLDev的链接問題
  20. 公司无线局域网安全解决方案

热门文章

  1. 指针,引用及内存基础认识
  2. html5通用兄第选择器,css 通用兄弟选择器( ~ )
  3. Matlab中 .‘ 的作用
  4. win10/win11 + WSL + gui 配置教程
  5. 前端必须要懂的浏览器缓存机制
  6. 特斯拉Powerwall网关可能受到黑客攻击
  7. Wparam与Lparam的区别(转)
  8. 学习记录贴:上班摸鱼做一个看lol文字直播的小工具
  9. C语言的语句与程序的基本结构
  10. [青少年CTF]Misc—Easy by 周末