1、bundle.out

文件包含了一些经过估算得到的场景和相机几何信息。文件的格式如下:  

//----------------------------------------------------开始------------------------------------------
# Bundle file v0.3

<num_cameras> <num_points> //[相机个数]  [点个数]   [2个整数]

<camera1> [相机1]
<camera2> [相机2]
       ...
<cameraN> [相机N]
<point1> [点1]
<point2> [点2]
...
<pointM> [点M]

//每一个相机实体<camera> 的值是估算得到的相机内部和外部参数,形式为:

//每个相机的排序根据其在图片列表中的出现顺序来指定。

//每个相机参数占据5行

<f> <k1> <k2>   [焦距,后面跟着两个径向畸变多项式系数]

<R>             [一个3X3矩阵:代表相机旋转]

<t>             [一个3维向量:描述摄像机平移]
    
//每个点实体<pointI>格式为:

//每个点占据3行
<position>      [3向量描述该点的三维位置]
 <color>         [ 3向量描述该点的RGB颜色]
<view list>

接着就是对应的图像索引信息、该SIFT关键点在该幅图像的索引信息、该关键点在该幅图像的二维像素坐标(相对于图像中心)//对应四个参数

再第二、第三...图像的(与第一相同)

//---------------------------------------------------------------------------------------------------------------------结束

  根据这些bundle.out文件内容以及小孔成像模型,我们就可以大致得到每台相机的参数:
  焦距 (f),
  两个径向畸变参数(K1和K2),
  旋转矩阵 (R),
  平移矩阵 (t)。

  按照下面的法则我们可以将一个3D点X 投影到参数为(R,t,f)的相机中:

P = R * X + t       (从世界到相机坐标转换)

p = -P / P.z        ( 透视除法)

p' = f * r(p) * p   (转换到像素坐标)

  其中,P.z是P的z坐标值。r(p)是一个用来计算出径向畸变校正的尺度变量值的函数:
   r(p) = 1.0 + k1 * ||p||^2 + k2 * ||p||^4.
  最后,利用上面的公式还可以得到相机的方向为:
    R' * [0 0 -1]'    (其中,' 表示一个矩阵或者向量的转置)

而相机的空间位置就为:
    -R' * t .

//-----------------------------------------------------------------------------------------------------------------

2、0000xxx.txt

//---------------------开始----------------------
CONTOUR
P[0][0] P[0][1] P[0][2] P[0][3]
P[1][0] P[1][1] P[1][2] P[1][3]
P[2][0] P[2][1] P[2][2] P[2][3]
//---------------------结束----------------------

"CONTOUR" (轮廓)只是一个标题。P[3][4]表示一个3x4投影矩阵,其定义如下:

假设(x y z 1)表示一个点的齐次三维坐标,(u v 1)表示其图像投影的齐次二维坐标,

然后( x y z 1 )和( u v1 )与以下等式相关:

其中d是关于照相机的点的深度。

(注意,图像坐标系统的原点位于图像的左上角(严格地说,原点位于图像左上角的像素的中心)。

x轴指向右边,y轴指向底部。

因此,左上角像素的2d图像坐标是( 0,0 ),并且右下角像素的2d图像坐标是( w,h),

其中w和h分别是图像的宽度和高度。)

【转】visualSFM生成的bundle.rd.out文件的格式的更多相关文章

  1. 使用Mavne生成可以执行的jar文件

    到目前为之,还没有运行HelloWorld的项目,不要忘了HelloWorld类可是有一个main方法的.使用mvn clean install命令默认生成的jar 包是不能直接运行的.因为带有mai ...

  2. Visual Studio 不生成.vshost.exe和.pdb文件的方法【转】

    Visual Studio 不生成.vshost.exe和.pdb文件的方法[转] 使用Visual Studio编译工程时,默认设置下,即使选择了「Release」时也会生成扩展名为「.vshost ...

  3. java中如何生成可执行的jar文件

    java中如何生成可执行的jar文件 最简单的方法就是: jar -cfe Card.jar CardLayoutDemo CardLayoutDemo$1.class CardLayoutDemo$ ...

  4. 根据backup-my.cnf来生成新的事务日志文件

    使用rpm包安装xtrabackup ## 安装依赖包yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-D ...

  5. java 压缩文件 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件

    /** * 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件 * * @param files * 文件数组 * @param strZipName * 压缩文件路径及文件名 * @thr ...

  6. [转]powerDesigner生成excel版本的数据库文件

    powerDesigner生成excel版本的数据库文件 出处:http://ray-allen.iteye.com/blog/1893347 脚本 excel  今天收到一个需求,要把数据库设计给一 ...

  7. ios创建bundle的图片资源文件(转)

    在ios开发中为了方便管理资源文件,可以使用bundle的方式来进行管理,比如kkgridview里就是把所需的图片文件全部放在一个bundle来管理的 . 切记目前iOS中只允许使用bundle管理 ...

  8. 生成并返回 json 结果文件

    #region 生成并返回 json 结果文件 /// <summary> /// 生成并返回 json 结果文件 /// </summary> /// <param n ...

  9. 获取IOS bundle中的文件

    在xcode中选择bundle中的文件,右键Show in Finder即可拷贝或删除文件.

随机推荐

  1. Linux pwn入门教程——CTF比赛

    Linux pwn入门教程(1)——栈溢出基础 from:https://zhuanlan.zhihu.com/p/38985585   0x00 函数的进入与返回 要想理解栈溢出,首先必须理解在汇编 ...

  2. Weblogic domain扩展教程

    weblogic扩展domain有两种扩展,一是机器上已有要扩展的domain只是在其内增加受管服务器,二是机器上没有domain要新建domain然后增加受管服务器 一.机器上已有要扩展的domai ...

  3. Java数组,导入包,foreach控制循环

    总见流星过,火花转瞬逝.何时见春雨,润物细无声. 导入包,例使用Scanner工具类,需要导入包: import  java.util.Scanner; ************ ********** ...

  4. 用WebStorm进行Angularjs 2的开发

    环境准备: WebStorm开发工具  https://pan.baidu.com/s/1o8maQLG  提取密码(加群获取599606903) nodejs  https://nodejs.org ...

  5. Zookeeper面试题

    Zookeeper是什么框架 分布式的.开源的分布式应用程序协调服务,原本是Hadoop.HBase的一个重要组件.它为分布式应用提供一致性服务的软件,包括:配置维护.域名服务.分布式同步.组服务等. ...

  6. 机器学习---笔记----Python基础

    一. python简介 1. python 具有丰富强大的库,常被称为胶水语言,能够把用其他语言制作的各种模块很轻松地联结在一起 2. python强制使用空白符(white space)作为语句缩进 ...

  7. uImage是什么

    vmlinux是内核文件,zImage是一般情况下默认的压缩内核映像文件,压缩vmlinux,加上一段解压启动代码得到.而uImage则是使用工具mkimage对普通的压缩内核映像文件(zImage) ...

  8. [Leetcode 100]判断二叉树相同 Same Tree

    [题目] 判断二叉树是否相同. [思路] check函数. p==null并且q==null,返回true;(两边完全匹配) p==null或q==null,返回false;(p.q其中一方更短) p ...

  9. python 高级语言特性

    装饰器decorator的使用 在某公司的一次笔试中面试官出了一道题,使用python 的decorator实现一个函数的执行时间的计算. 分析:关于函数执行时间的计算,那么肯定是执行之前得到一个时间 ...

  10. Linux文件系统命令 mkdir/rmdir

    命令名:mkdir 功能:创建一个文件夹,和touch的区别是,touch是创建一个文件,后面可以跟绝对路径和相对路径 eg: mkdir ren 命令名:rmdir 功能:删除一个文件夹