SfM执行流程
整个过程根据脚本执行过程来分析。
首先我们看到RunBundler.sh,这个shell脚本。
1、定义参数
BASE_PATH="/cygdrive/e/ProjectBefore/LearnCUDA/bundler_sfm-master"; if [ $BASE_PATH == "TODO" ]
then
echo "Please modify this script (RunBundler.sh) with the base path of your bundler installation.";
exit;
fi EXTRACT_FOCAL=$BASE_PATH/bin/extract_focal.pl OS=`uname -o` if [ $OS == "Cygwin" ]
then
MATCHKEYS=$BASE_PATH/bin/KeyMatchFull.exe
BUNDLER=$BASE_PATH/bin/Bundler.exe
else
MATCHKEYS=$BASE_PATH/bin/KeyMatchFull
BUNDLER=$BASE_PATH/bin/bundler
fi TO_SIFT=$BASE_PATH/bin/ToSift.sh IMAGE_DIR="."
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
2、Rename ".JPG" to ".jpg"
用到了正则表达式egrep跟替换sed
3、Create the list of images
这样这个就执行到了perl脚本,脚本中给出了常见相机的ccd尺寸。
这个ccd的尺寸也就是感光器件的面积大小。目前主要尺寸有2/3英寸、1/1.8英寸、1/2.7英寸、1/3.2英寸等
举一个例子,标称1/2.7英寸的感光器件,实际上是把感光器件的全部面积(包括有效和无效的部分),连同其固定支架、电子快门、辅助输出接口等等一股脑都“用一个圆包起来”,这个
圆的直径才是1/2.7英寸,即9.407mm! 而实际参与成像的“CCD感光区”尺寸,只有5.27mm×3.96mm!
其它常见的小CCD实际尺寸如下: 1/2.5英寸:5.38x4.39mm; 1/1.8英寸:7.178x5.319mm; 2/3英寸:8.8x6.6mm;
作者将ccd的尺寸转换成了CCD的感光区域的宽。如果相机的中心点在感光区域的中心的话,这样我们就可以得到相机的内参的中心点。
然后通过jhead来获取照片的exif信息,如下:

另外并不是所有的相机照片都会有上述信息,如下:

这个脚本的目的也就是为了获得可以通过jhead获得的相机参数
4、接下来在看RunBundler.sh,就是特征提取执行ToSift.sh脚本
Run the ToSift script to generate a list of SIFT commands
5、Execute the SIFT commands
sift使用了siftWin32.exe
6、Match images (can take a while)
7、Generate the options file for running bundler
8、Run Bundler
主要流程如上,对于下面重点分析Run Bundler。
SfM执行流程的更多相关文章
- 步步深入:MySQL架构总览->查询执行流程->SQL解析顺序
		前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来 ... 
- 第二天  ci执行流程
		第二天 ci执行流程 welcome 页面 this this->load 单入口框架index.php 两个文件夹 system application定义 定义常亮路径 载入 codeign ... 
- 轻量级前端MVVM框架avalon - 执行流程2
		接上一章 执行流程1 在这一大堆扫描绑定方法中应该会哪些实现? 首先我们看avalon能帮你做什么? 数据填充,比如表单的一些初始值,切换卡的各个面板的内容({{xxx}},{{xxx|html}}, ... 
- [Java编程思想-学习笔记]第4章  控制执行流程
		4.1 return 关键字return有两方面的用途:一方面指定一个方法结束时返回一个值:一方面强行在return位置结束整个方法,如下所示: char test(int score) { if ... 
- ThinkPHP2.2框架执行流程图,ThinkPHP控制器的执行流程
		ThinkPHP2.2框架执行原理.流程图在线手册 ThinkPHP控制器的执行流程 对用户的第一次URL访问 http://<serverIp>/My/index.php/Index/s ... 
- 深入浅出Mybatis系列(十)---SQL执行流程分析(源码篇)
		最近太忙了,一直没时间继续更新博客,今天忙里偷闲继续我的Mybatis学习之旅.在前九篇中,介绍了mybatis的配置以及使用, 那么本篇将走进mybatis的源码,分析mybatis 的执行流程, ... 
- Servlet执行流程和生命周期【慕课网搬】
		Servlet执行流程(GET方式为例) 首先用户客户端浏览器发出Get方式(点击超链接方式)向浏览器发出请求. 服务器接收到客户端点击超链接,接收到GET请求之后,服务器到WEB.xml中<s ... 
- javascript事件执行流程分析
		我一直想搞清楚事件在DOM中的传播方式,今天经高人指点终于明白一二.首先扒了一张图: 事件捕获过程:当我们点击TEXT时,首先是window->document->body->div ... 
- asp.net MVC4的执行流程
		MVC在底层和传统的asp.net是一致的,在底层之上,相关流程如下: 1)Global.asax里,MvcApplication对象的Application_Start()事件中,调用 RouteC ... 
随机推荐
- 03—AOP基本配置
- js计算每月的天数
			function getDaysOfMonth(year, month) { month = parseInt(month); switch (month) { case 1: case 3: cas ... 
- CSS + radius 五环
			使用CSS的外链方式,写了一个五环 CSS的布局 附加radius的使用 思路: 一个大盒子里放两个子盒子: 两个子盒子上下排列,分别放3个和2个盒子用来制作圆环: 大盒子给相对定位,连个子盒子设为绝 ... 
- MVC之参数验证(三)
			在实际开发中,项目经理会一直强调一句话,永远不要相信客户端的数据(前端可以不用验证,但是后端必须验证).大家同意这样的说法吧..新端验证毋庸质疑JS验证,提高用户体验我们不得不添加一些与后端一致的验证 ... 
- poj2240 Arbitrage
			思路: 有向图判负环. 实现: (1)spfa #include <iostream> #include <map> #include <string> #incl ... 
- Appium Python API 汇总(中文版)
			网络搜集而来,留着备用,方便自己也方便他人.感谢总结的人! 1.contexts contexts(self): Returns the contexts within the current ses ... 
- DIV自动居中
			<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ... 
- 世界上最受欢迎的10个Linux发行版
			帮助新的Linux用户在越来越多的Linux发行版中选择最合适的操作系统,是创建这个网页的原因.它列出了迄今为止最流行的10个Linux发行版(另外增加的是FreeBSD,到目前为止最为流行的BSD系 ... 
- 基于 CentOS 搭建Seafile个人网盘
			一.安装 Seafile 安装依赖环境使用 yum 安装 Python 及 MySQL: yum install python python-setuptools python-imaging pyt ... 
- 并发编程学习笔记(11)----FutureTask的使用及实现
			1. Future的使用 Future模式解决的问题是.在实际的运用场景中,可能某一个任务执行起来非常耗时,如果我们线程一直等着该任务执行完成再去执行其他的代码,就会损耗很大的性能,而Future接口 ... 
