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. 关于RabbitMQ服务器整合(二)

    准备工作 15min IDEA maven 3.0 在开始构建项目之前,机器需要安装rabbitmq,你可以去官网下载,http://www.rabbitmq.com/download.html ,如 ...

  2. Java Web(十) 分页功能

    分页 分页的使用非常普遍,现在一步步的把分页功能实现出来,先看看已经写好的效果: 该页面的所有数据都存放在一个javaBean对象(PageBean)里,每次访问该页面时,Serlvet就会把page ...

  3. laravel创建新的提交数据

    public function store() { $this->validate(request(),[ 'title'=>'required|string|max:100|min:10 ...

  4. ubuntu下修改MYSQL数据库密码

    在介绍修改密码之前,先介绍一个文件/etc/MySQL/debian.cnf.其主要内容如下图: 里面有一个debian-sys-maint用户,这个用户只有Debian或Ubuntu服务器才有,所以 ...

  5. asp.net core json返回的时间格式出现T 如何解决

    可以在sturap里面 修改配置日期返回的格式 // services.AddMvc(); services.AddMvc().AddJsonOptions(options => { optio ...

  6. Mysql找回丢失密码

    (先进入root权限):# /etc/init.d/mysql stop# mysqld_safe --user=mysql --skip-grant-tables --skip-networking ...

  7. 传统应用迁移到kubernetes(Hadoop YARN)

    spark-on-yarn-with-kubernetes 该例子仅用来说明具体的步骤划分和复杂性,在生产环境应用还有待验证,请谨慎使用. 过程中可能用到的概念和术语初步整理如下: 整个迁移过程分为如 ...

  8. codeforce949A(顺带vector详细使用介绍)

    A. Zebras time limit per test1 second memory limit per test512 megabytes inputstandard input outputs ...

  9. <顺序访问><随机访问><HDFS>

    Overview 如果你了解过HDFS,至少看过这句话吧: HDFS is a filesystem designed for storing very large files with stream ...

  10. L267 How to save money

    When it comes to saving money, the struggle is all too real. It's like your bank account and your 20 ...