zoukankan      html  css  js  c++  java
  • 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="."

    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信息,如下:

    image

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

    image

    这个脚本的目的也就是为了获得可以通过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。

     
  • 相关阅读:
    纯JS.CSS编写的可拖拽并左右分栏的插件(复制代码就能用)
    jquery on()方法重复绑定解决方法
    在PHP语言中使用JSON和将json还原成数组
    Flex 布局教程:语法篇
    在线生成大全(这里真的什么都有)
    css3(border-radius)边框圆角详解
    css常用鼠标指针形状代码
    input 正则限制输入内容
    html中input标签的tabindex属性
    CSS gradient渐变之webkit核心浏览器下的使用
  • 原文地址:https://www.cnblogs.com/fengbing/p/3596182.html
Copyright © 2011-2022 走看看