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。

     
  • 相关阅读:
    50多条mysql数据库优化建议
    反向代理|与正向代理区别区别
    CDN技术
    mysql存储过程对900w数据进行操作测试
    Navicat For Mysql快捷键
    Linux下目标文件分析
    Linux下的两个经典宏定义 转
    debuginfo-install glibc-2.17-157.el7.x86_64
    index merge 引起的死锁分析
    linux内核源码中常见宏定义
  • 原文地址:https://www.cnblogs.com/fengbing/p/3596182.html
Copyright © 2011-2022 走看看