看到好的东西就想转载和大家一起分享一起学习!!!
来源:http://blog.csdn.net/tiemaxiaosu/article/details/51734667
一、三维重建概述
三维重建主要是研究如何从得到的匹配点中计算出相机的投影矩阵(如果是外部标定的话,就是求出相机的外部参数)以及如何计算出匹配点的三维坐标。
目前研究的进展与之还相差较远。研究人员为了能够表达三维空间信息,目前较多地采用三维矢量图形来替代三维位图。主要的重构方法有如下几种:
(1)、空间点的重建
这是三维重构中的最基本的方法。空间任一点在两个摄像机中分别成像,得到该点在两个图像中的对应坐标,在知道两摄像机的参数矩阵的条件下,通过建立以该点的世界坐标为未知数的 4 个线性方程,可以用最小二乘法求解得该点的世界坐标。有一种简化计算的办法,选取两个内部参数完全相同的摄像机,将他们平行配置,使他们的光轴相互平行。这种方法计算相当简单,不需要进行外部参数标定。但一般情况下,两个摄像机的内部参数完全相同(包括两摄像机的拍摄状态也相同)是很难选到。摄像机安装时无法看到光轴和成像平面,故难以实施。
(2)、空间直线、空间二次曲线的重建
空间直线和空间曲线也是组成空间图形的主要基元。根据空间直线射影变换前后仍是直线的性质,以此来分析空间直线与图像中的直线之间的关系。空间直线在CCD上的成像可以这样认为,空间直线与摄像机光心构成的平面与成像平面的交线,两台摄像机有两个这样的平面,这两个平面的交线就是空间直线。空间二次曲线是空间二次曲面与平面的交线,因此二次曲线的平面曲线,在CCD上的成像可以认为是由空间二次曲线与光心组成的锥面与成像平面的交线。两台摄像机有两个这样的锥面,求这两个空间锥面的交线,就是空间曲线。
(3)、全像素的三维重建
对图像中的每个像素都进行三维重建,这当然是最理想的情况,目前要实施这种重构,需要相当严格的测量条件,且仅限于对某一具体对象,但效果并不理想。对此人们正在进行大量的研究,还有待于进一步的努力。
二、空间点的三维重建
1、基本模型
空间点三维重建的基本模型如图(4.1)所示,对于空间物体表面任意一点P,如果用C1摄像机观察,看到它在C1摄像机的图像点位于p1,但他们无法由p1得知P的三维位置,事实上,在O1P(O1为C1摄像机的光心)连线上任意一点P’的图像点都是p1,因此,由p1点的位置,我们只知道空间点位于O1P1与O2P2两条直线的交点,即它们的三维位置是唯一确定的。
假如我们能够得到物体表面上所有点的三维坐标,则三维物体的形状与位置就是唯一确定的,在某些简单场合,例如三维物体时一个多面体,我们只需要知道它的各个顶点的三维坐标与相邻关系,则该多面体的形状与位置是唯一确定的。因此,用立体视觉的方法获取三维点的坐标是十分基础的。
2、最小二乘法求解三维坐标值
下面我们来具体介绍求解三维点坐标的算法。在进行讨论之前,我们要明确一下几点基本假设:空间任意点P在两个摄像机C1与C2上的图像点平p1与p2已经从两个图像中分别检测出来。即已知p1与p2为空间同一点P的对应点。至于对应点是如何找到的,这属于图像配准问题。还有一个假设就是,摄像机C1与C2已标定,他们的投影矩阵分别为M1与M2,于是有:
其中,(u1,v1,1)与(u2,v2,1)分别为P1与P2点在各自图像中的图像齐次坐标;(X,y,Z,1)为P点在世界坐标系下的齐次坐标;mijk为Mk的第i行第j列元素。式(4.1)与式(4.2)消去Zc1与Zc2得到关于X,Y,Z的四个线性方程:
由于空间点P是O1p1与O2p2的交点,它必然同时满足式(4.3),式(4.4),我们可以联立这四个式子,从而求出P点的坐标(X,Y,Z)。四个方程,三个未知数,也就是说这个方程组只有三个独立的方程,这是因为我们已经假设P1与P2点是空间同一点P的对应点,因此已经假设了直线O1p1与O2p2一定相交,或者说,这四个方程必定有解,而且解是唯一的。而实际应用中,由于数据总是有噪声的,我们可以用最小二乘法求出P的三维点坐标(X,Y,Z)。
3、视差测距法
以上我们介绍了空间点三维重建的一般方法,为了更清楚的了解上述过程的物理意义,下面我们讨论在一种简单的摄像机配置下的空间点重建方法,视差测距法。此方法要求选用两个内部参数完全相同的摄像机,将它们平行放置,使它们的光轴相互平行,另有一对坐标轴共线,两个成像平面共面,两摄像机的光心有一个固定的距离d,这样求解图像点的世界坐标时只涉及摄像机内参数。原理如图(4.2)所示:
在上述特殊摄像机配置下,假设C1坐标系为O1x1y1z1,C2坐标系为O2x2y2z2,焦距为f,摄像机间距为d,任何空间点P的坐标在C1下为(x1,y1,z1),在C2坐标系下为(x2,y2,z2),在左摄像机中的图像点左边为(u1,v1),在右摄像机中的图像点坐标为(u2,v2)。
根据式(4.5),式(4.6)的摄影比例关系,对于左右摄像机有如下关系:
世界坐标系与摄像机坐标系的关系可表述如下:
        
联立上两式可得:
进而可得:
由式(4.5)和式(4.8)可计算的空间点的三维坐标:

式(4.9)即为双目立体视觉重构三维空间点的方法,可见,通过图像对视差和像点坐标就可以恢复出物体的三维坐标。但是由于对设备配置的要求比较苛刻,只是被应用在一些简单的视觉系统。本文采用的还是针对一般摄像机参数的三维重建方法,这样大大扩展了带云台的摄像机的视野范围,从而增强了移动机器人视觉系统的灵活性。

双目视觉测距离(三维重建)相关推荐

  1. 双目视觉测距原理,数学推导及三维重建资源

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:Naruto_Q 来源:CSDN 先说一下单/双目的测距原理 ...

  2. 双目视觉焦距_一种基于可变焦相机的双目视觉测距方法与流程

    本发明属于双目视觉技术领域,具体涉及一种基于可变焦相机的双目视觉测距方法. 背景技术: 在这个计算机视觉技术发展迅速的时代,获取深度信息成为了一个热门的课题,因其所诞生的方法也各式各样,但是绝大部分的 ...

  3. opencv实现双目视觉测距

    有个群193369905,相关毕设也可找群主,最近一直在研究双目视觉测距,资料真的特别多网上,有matlab 的,python的,C++的,但个人感觉都不详细,对于小白,特别不容易上手,在这里我提供一 ...

  4. OpenCV学习笔记(16)双目测距与三维重建的OpenCV实现问题集锦(一)图像获取与单目定标

    转载地址:http://blog.csdn.net/chenyusiyuan/article/details/5961769 一:双目测距的基本原理 如上图所示,双目测距主要是利用了目标点在左右两幅视 ...

  5. 双目测距python_python、opencv 双目视觉测距代码

    傻瓜版,拿个双目摄像头,标定,得到数据,填进去,调调参数. 两个部分,一个是相机的参数设置,一个是测距 运用matlab里面的stereo Camera Calibrator APP进行拍照 拍个30 ...

  6. 机器人学习--双目视觉测距

    检测三维物体?一篇文章认识<双目立体视觉>https://mp.weixin.qq.com/s?__biz=MzA3ODA3MzMyNQ==&mid=2669166425& ...

  7. 结构光双目视觉测距原理

    结构光视觉技术是一种主动投影式的三维测量技术,通过使用投影仪和相机组成的系统来对物体进行三维测量 系统结构: 硬件系统: 常见编码方法: 结构光图案编码 常用的是格雷码和传统的二进制码相比,格雷码的编 ...

  8. 双目立体视觉源代码 双目立体视觉匹配程序 双目视觉3d成像(三维重构图像处理) 基于双目视觉的深度计算和三维重建 opencv写的双目视觉摄像机标定和三维重建代码

    双目视觉/双目标定源码/图片集标定匹配三维重建坐标计算OpenCV 1.双目立体视觉源代码(包括标定,匹配,三维重建) 2.双目视觉实验图片集(双目立体视觉中使用的标准实验图,适合初学者进 行实验使用 ...

  9. opencv matlab测距,基于MATLAB和OpenCV的双目视觉测距系统的实现

    基于计算机视觉理论的双目视觉测距技术在板料成形动态测量.极限曲线检测.零部件检测等上具有较大的应用前景并将成为今后研究中的重点和难点.目前的测距方法主要有主动测距和被动测距2种方法.本研究采用被动测距 ...

  10. Android双目三维重建:Android双目摄像头实现双目测距

    Android双目三维重建:Android双目摄像头实现双目测距 目录 Android双目三维重建:Android双目摄像头实现双目测距 1.开发版本 2.Android双目摄像头 3.双目相机标定 ...

最新文章

  1. android用户界面设计:基本按钮,Android用戶界面設計:基本按鈕
  2. 尚硅谷学习笔记-节点的常用属性和方法
  3. 值得mark的11个开源机器学习项目 .
  4. 悬浮截图软件_Windows最好用截图工具,QQ第一,它第二
  5. mysql删除一条记录
  6. 转载:JAVA日期处理
  7. Redis分布锁原理简介和实现过程
  8. TensorFlow 深度学习中文第二版·翻译完成
  9. 结构模式--之--享元模式
  10. [译] JavaScript 的函数式编程是一种反模式
  11. 使用IntelliJ IDEA开发Spring MVC HelloWorld
  12. ios android 自动化测试工具,AndroidIOS自动化测试框架整合升级方案
  13. vmware 安装报错:failed to install hcmon drivers 完美解决(含VMware15激活码)
  14. 从 0 到 1,开发一个智能问答机器人
  15. 对比分析偏差率的五个常见疑问
  16. Lua学习笔记-OOP面向对象
  17. PC版微信如何输入换行符
  18. android adc,Android配置ADC接口
  19. 线下沙龙 | EOS入门及最新技术解读
  20. 【微机原理与接口 7】—— 常用指令分析4 (串操作指令剖析)

热门文章

  1. 小观matlab插值函数
  2. git 找到冲突_git 冲突解决方法 - 卡饭网
  3. 隐马尔可夫链模型的训练与预测
  4. 【机器人学习】平台并联机构matlab逆解
  5. solidworks2016安装教程
  6. 等保三级核心-网络安全
  7. html怎么置顶图像,css怎么固定图片位置不变?
  8. i7 9750h和i7 8750h参数对比差多少
  9. docker安装speedtest和宝塔面板
  10. 调用Windows远程桌面应用