【转】visualSFM生成的bundle.rd.out文件的格式
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文件的格式的更多相关文章
- 使用Mavne生成可以执行的jar文件
到目前为之,还没有运行HelloWorld的项目,不要忘了HelloWorld类可是有一个main方法的.使用mvn clean install命令默认生成的jar 包是不能直接运行的.因为带有mai ...
- Visual Studio 不生成.vshost.exe和.pdb文件的方法【转】
Visual Studio 不生成.vshost.exe和.pdb文件的方法[转] 使用Visual Studio编译工程时,默认设置下,即使选择了「Release」时也会生成扩展名为「.vshost ...
- java中如何生成可执行的jar文件
java中如何生成可执行的jar文件 最简单的方法就是: jar -cfe Card.jar CardLayoutDemo CardLayoutDemo$1.class CardLayoutDemo$ ...
- 根据backup-my.cnf来生成新的事务日志文件
使用rpm包安装xtrabackup ## 安装依赖包yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-D ...
- java 压缩文件 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件
/** * 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件 * * @param files * 文件数组 * @param strZipName * 压缩文件路径及文件名 * @thr ...
- [转]powerDesigner生成excel版本的数据库文件
powerDesigner生成excel版本的数据库文件 出处:http://ray-allen.iteye.com/blog/1893347 脚本 excel 今天收到一个需求,要把数据库设计给一 ...
- ios创建bundle的图片资源文件(转)
在ios开发中为了方便管理资源文件,可以使用bundle的方式来进行管理,比如kkgridview里就是把所需的图片文件全部放在一个bundle来管理的 . 切记目前iOS中只允许使用bundle管理 ...
- 生成并返回 json 结果文件
#region 生成并返回 json 结果文件 /// <summary> /// 生成并返回 json 结果文件 /// </summary> /// <param n ...
- 获取IOS bundle中的文件
在xcode中选择bundle中的文件,右键Show in Finder即可拷贝或删除文件.
随机推荐
- windows7时间同步设置
1. 设置同步源 服务器修改为本车的104的ip地址,例如23车,手动输入 96.3.123.104 2. 设置同步周期. 注册表法 在“运行”框输入“Regedit”进入注册表编辑器 这种方法是通过 ...
- 在springboot中用redis实现消息队列
环境依赖 创建一个新的springboot工程,在其pom文件,加入spring-boot-starter-data-redis依赖: <dependency> <groupId&g ...
- axios API速查表
原来jq自带ajax方法,但是近期项目用vue,在vue项目中发送ajax请求原来用vue resource,现在更推荐使用axios,因为axios和vue更配! GET 请求 // Make a ...
- Oracle如何解决日期格式“01-3月 -18”的显示问题(3种处理方式)
今天查询表数据还是出现上次那种问题,但是每次都要去调用转化函数,比较麻烦,所以找一下资料,得到几种方式解决oralce的日期数据显示格式 问题描述: 解决方法 1)方法1:调用Oracle函数转化成日 ...
- Java Web(十一) 文件上传与下载
文件上传 上传的准备工作 表单method必须为post 提供file组件 设置form标签的enctype属性为multipart/form-data,如果没有设置enctype属性,浏览器是无法将 ...
- NiXi.DAY06东软实训.:面向对象思想~抽象~static~final~构造方法及其重载
本章技能目标: 使用类图描述设计 掌握面向对象设计的基本步骤 掌握类和对象的概念 掌握构造方法及其重载 掌握封装的概念及其使用 本章单词: class:类 object:对象 static: fina ...
- learning ddr init power-up initialization sequence
- U帮忙U盘启动盘制作
第一步:制作U盘启动盘前的软.硬件准备 1.准备一个U盘或内存卡(尽量使用2G以上的) 2.进入 U帮忙官网 下载最新版U盘启动盘制作工具! 3.搜索并下载ghost版系统文件存放到电脑中. 第二步: ...
- 十九. Python基础(19)--异常
十九. Python基础(19)--异常 1 ● 捕获异常 if VS异常处理: if是预防异常出现, 异常处理是处理异常出现 异常处理一般格式: try: <............. ...
- 7.2 C++模板类实例化
参考:http://www.weixueyuan.net/view/6399.html 总结: array < int >表明用int类型来代替模板类中的类参数“T”,编译器会将模板类ar ...