链接:http://www.zhihu.com/question/29885222/answer/100043031

首先一切建立在相机模型 x = kPX 上

 
  x,X分别代表图片和空间中的二维三维齐次坐标,
  k为相机内参矩阵
  P = [R | t] 为空间坐标系到相机坐标系的 orientation- R 和 transformation- t
 

1, 首先对某一场景多角度多位置得到很多初始数据,选择其中的某两个来初始化,选定其中一个为空间原点
<img src="https://pic4.zhimg.com/2533dbf20dfcf38e3cc82830eef13d1b_b.png" data-rawwidth="773" data-rawheight="485" class="origin_image zh-lightbox-thumb" width="773" data-original="https://pic4.zhimg.com/2533dbf20dfcf38e3cc82830eef13d1b_r.png">
 

2. 通过SIFT ,SURF等特征点查找匹配之后,用 8点法 和 RANSAC,多次计算两张图之间的Fundamental Matrix,选择其中最好的一个。
 
<img src="https://pic2.zhimg.com/5f44b0abdf9065b747aa7424895c3c61_b.png" data-rawwidth="789" data-rawheight="472" class="origin_image zh-lightbox-thumb" width="789" data-original="https://pic2.zhimg.com/5f44b0abdf9065b747aa7424895c3c61_r.png">
 
 

3.F-matrix 计算 Essential-matrix

<img src="https://pic3.zhimg.com/ce0c15835abe5cd520d8c70945ce0232_b.png" data-rawwidth="809" data-rawheight="468" class="origin_image zh-lightbox-thumb" width="809" data-original="https://pic3.zhimg.com/ce0c15835abe5cd520d8c70945ce0232_r.png">4, 用E-matrix计算相机的R和T,需要用SVD分解,因为orientation R是一个正交阵。
 
 
 
4, 用 E-matrix 计算相机的 R 和 T,需要用SVD分解,因为orientation R是一个正交阵。

<img src="https://pic1.zhimg.com/6bf0b539b963550054d874f9697524f8_b.png" data-rawwidth="742" data-rawheight="504" class="origin_image zh-lightbox-thumb" width="742" data-original="https://pic1.zhimg.com/6bf0b539b963550054d874f9697524f8_r.png">5, 得到两个相机之间的P矩阵之后,通过对应点,用Triangulation计算对应点的空间坐标。
 
 
 
 
5, 得到两个相机之间的P矩阵之后,通过对应点,用 Triangulation 计算对应点的空间坐标

<img src="https://pic4.zhimg.com/e0b6757903e37599abf74fa0f30f7d0f_b.png" data-rawwidth="762" data-rawheight="489" class="origin_image zh-lightbox-thumb" width="762" data-original="https://pic4.zhimg.com/e0b6757903e37599abf74fa0f30f7d0f_r.png">6. 第三个位置的照片,直接根据已有的上步计算的点,与第三个位置图片上点的对应关系,计算P矩阵。
 
 
 
 
6. 第三个位置的照片,直接根据已有的上步计算的点,与第三个位置图片上点的对应关系,计算P矩阵
 
<img src="https://pic3.zhimg.com/c9d5b486f24b982d26fe5692899ff95a_b.png" data-rawwidth="707" data-rawheight="499" class="origin_image zh-lightbox-thumb" width="707" data-original="https://pic3.zhimg.com/c9d5b486f24b982d26fe5692899ff95a_r.png">
 
 
 
 
7. 最后全局优化,Bundle Adjustment
 
<img src="https://pic2.zhimg.com/0ae3f9a9a8b77b289bd7af6c749442c5_b.png" data-rawwidth="763" data-rawheight="523" class="origin_image zh-lightbox-thumb" width="763" data-original="https://pic2.zhimg.com/0ae3f9a9a8b77b289bd7af6c749442c5_r.png">
 

 
 
 
8, Bundle Adjustment所有的艺术就是优化 hessian matrix的逆矩阵。

<img src="https://pic3.zhimg.com/08a972d34f7fa4f69bc6730324362b3e_b.png" data-rawwidth="631" data-rawheight="503" class="origin_image zh-lightbox-thumb" width="631" data-original="https://pic3.zhimg.com/08a972d34f7fa4f69bc6730324362b3e_r.png">

------------------------------------------------------------------------------------------------------------
推荐宾大Shi Jianbo教授在Coursera上的公开课 Robotics:Perception
上面所有的截图都来自他最后一次课的视频讲义截图
https://www.coursera.org/learn/robotics-perception/home/welcome
配合视觉圣经 Multiple View Geometry来看简直完美。Ransac, Bundle-adjustment, 2-View, Homography全部都有。一共四周,有线性代数基础(主要是SVD用来解线性方程),作业用Matlab.

第一周作业: Dolly Zoom
第二周作业: 平面摄影几何,广告牌在视频中的投影,类似2D增强现实
第三周作业: 在平面Barcode上通过sift检测特征点,通过H矩阵计算相机位置,做3D增强现实
第四周作业: 3D重建

[SLAM] 02 Some algorithms of 3D reconstruction的更多相关文章

  1. [SLAM] 02. Some basic algorithms of 3D reconstruction

    链接:http://www.zhihu.com/question/29885222/answer/100043031 三维重建 3D reconstruction的一个算法思路介绍,帮助理解 首先一切 ...

  2. Camera Calibration and 3D Reconstruction

    3D RECONSTRUCTION WITH OPENCV AND POINT CLOUD LIBRARY http://stackoverflow.com/questions/19205557/op ...

  3. Multi-View 3D Reconstruction with Geometry and Shading——Part-2

    From PhDTheses Multi-View 3D Reconstruction with Geometry and Shading 我们的主要目标是只利用图像中的信息而没有额外的限制或假设来得 ...

  4. Multi-View 3D Reconstruction with Geometry and Shading——Part-1

    From PhDTheses Multi-View 3D Reconstruction with Geometry and Shading 计算机视觉的主要任务就是利用图像信息能智能理解周围的世界. ...

  5. Real-time 3D Reconstruction using Kinect

    http://jiakaizhang.com/project/real-time-3d-reconstruction/ Real-time 3D Reconstruction using Kinect ...

  6. 视觉SLAM的数学基础 第一篇 3D空间的位置表示

    视觉SLAM中的数学基础 第一篇 3D空间的位置表示 前言 转眼间一个学期又将过去,距离我上次写<一起做RGBD SLAM>已经半年之久.<一起做>系列反响很不错,主要由于它为 ...

  7. 本人AI知识体系导航 - AI menu

    Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯   徐亦达老板 Dirichlet Process 学习 ...

  8. AI资源对接需求汇总:第3期

    更好的阅读体验,请查看首发原文链接:AI资源对接需求汇总:第3期 平台介绍 平台由人工智能领域几个知名原创公众号发起,总读者约25万. 主要面向人工智能领域的从业者,涵盖图像处理.三维计算机视觉.机器 ...

  9. [SLAM] 01 "Simultaneous Localization and Mapping" basic knowledge

    发信人: leecty (Terry), 信区: ParttimeJobPost标 题: 创业公司招SLAM 算法工程师发信站: 水木社区 (Thu Jun 16 19:18:24 2016), 站内 ...

随机推荐

  1. Python3 字符串

    Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (Intel)] on win32Type & ...

  2. Entity Framework 6.x Code Frist For Oracle 实践与注意点

    Entity Framework 6.x Code Frist For Oracle 实践与注意点 开发环境 Visual Studio.net 2015/2017 Oracle 11g/12c 数据 ...

  3. memcpy memmove区别和实现

    memcpy与memmove的目的都是将N个字节的源内存地址的内容拷贝到目标内存地址中. 但当源内存和目标内存存在重叠时,memcpy会出现错误,而memmove能正确地实施拷贝,但这也增加了一点点开 ...

  4. Linux--Ubuntu12.04安装NDK

    前言 本篇博客将介绍如何在Ubuntu12.04下安装Android NDK,在其他版本的Ubuntu下,方法也类似.由于Android NDK不能单独作为Android应用程序来运行,因此,使用An ...

  5. ip校验方法:判断ip是否位于指定的范围内

    import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.reg ...

  6. javascript - encodeURI和encodeURIComponent的区别

    这两个函数功能上面比较接近,但是有一些区别. encodeURI:不会进行编码的字符有82个 :!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z, ...

  7. vlc android 移植版编译

    同步发表于http://avenwu.net/2015/07/27/vlc-android-compiling 安装必备工具/解决环境问题 环境准备什么的如果没配置过需要一步步配置,主要是sdk/nd ...

  8. [转载] Redis 起步

    转载地址:http://www.cnblogs.com/shanyou/archive/2012/01/28/2330451.html Rdis和JQuery一样是纯粹为应用而产生的,这里记录的是在C ...

  9. 使用cocos2d-x v3.1开发小游戏(基本框架)

    小游戏的组成 欢迎界面 在游戏资源未全部加载完之前就需要载入,避免进入游戏会有一段黑屏时间. 可以用来展示游戏名称或者开发者logo. 开始菜单界面 一般用于显示游戏名称和关卡选择(或者称游戏难度选择 ...

  10. 2. MongoDB基本操作 —— 用Mongo.exe操作数据库增删改查

    一.开篇 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象 ...