visualSFM用法

添加图片

  • "File->Open Multi Images". 一次添加多幅图片
  • "SfM->Load NView Match". 可以把之前保存的.nvm文件添加进来

特征检测&全图像对匹配

  • 点击2或选择"SfM->Pairwise Matching->Compute Missing Match",执行完后可以回到第一步再添加一些图片,再次计算缺失的匹配。
  • 这个过程会比较慢,耐心等待就好^_^

稀疏重建

  • 点击3或者选择"SfM->Reconstruct Sparse"

稠密重建

  • 点击4
  • 该过程会让保存文件,CMVS过程在[name].nvm.cmvs文件夹下会进行。结束后文件夹下包含各种文件如相机信息、点云信息及meshlab使用的文件。[name].i.ply是第i个模型的信息。

相机模型和坐标系统

  • 相机模型有8个参数,如果忽略径向畸变的话,有7个参数。
  • 给定相机K[R T],K=[f 0 0;0 f 0;0 0 1],径向畸变r,三维点X
  • 则X在图像的投影是[x,y,z]=K(RX+T)->(x/z,y/z)
  • 假设X在图像的真实位置是mx,my(相对于主点即图像中心)
  • 畸变因子r2=r*(mx*mx+my*my),未畸变的测量是(1+r2)*(mx,my)
  • 投影误差是:(x/z - (1 + r2) mx, y /z - (1 + r2) my)

当在以图像左上角为原点的坐标系时:

  • K = [fx 0 0; 0 fx 0; 0 0 1],  Kc = [1 0 cx; 0 fy/fx cy; 1],
  • 则Kc * K = [fx 0 cx; 0 fy cy; 0 0 1](u, v, 1)' 表示在像素坐标系下的坐标 (相对于图像左上角
  • (u, v, 1)'= Kc*(mx, my, 1)' 
  • 在进行特征提取和匹配时,会在图像同一目录自动生成[name].sift和[name].mat文件。[name].sift保存提取的图像特征点,[name].mat保存图像间的匹配信息。若想要改变特征检测的参数重新重建模型的话,需要先删除.sift,.mat文件。
  • 若想要读回匹配的信息,需要先"SfM->Pairwise Matching->Export F-Matrix Matches"使匹配信息保存到txt文件里。

SFM(structure from motion)学习记录(一)的更多相关文章

  1. Structure From Motion(二维运动图像中的三维重建)

    SfM(Structure from Motion)简介 Structure from motion (SfM) is a photogrammetric range imaging techniqu ...

  2. Structure From Motion(SFM,从运动恢复结构)

    Structure From Motion(SFM,从运动恢复结构) 阅读相关文献: Wu et al. Multicore Bundle Adjustment Agarwal et. al. Bun ...

  3. [转]第四章 使用OpenCV探测来至运动的结构——Chapter 4:Exploring Structure from Motion Using OpenCV

    仅供参考,还未运行程序,理解部分有误,请参考英文原版. 绿色部分非文章内容,是个人理解. 转载请注明:http://blog.csdn.net/raby_gyl/article/details/174 ...

  4. Matlab 进阶学习记录

    最近在看 Faster RCNN的Matlab code,发现很多matlab技巧,在此记录: 1. conf_proposal  =  proposal_config('image_means', ...

  5. VisualSFM for Structure from Motion

    VisualSFM是Changchang Wu编写的使用 Structure from Motion (SfM)进行3D重建的交互界面,具体内容详见http://homes.cs.washington ...

  6. leveldb 学习记录(四) skiplist补与变长数字

    在leveldb 学习记录(一) skiplist 已经将skiplist的插入 查找等操作流程用图示说明 这里在介绍 下skiplist的代码 里面有几个模块 template<typenam ...

  7. V4L2学习记录【转】

    转自:http://blog.chinaunix.net/uid-30254565-id-5637600.html V4L2学习记录 这个还没有分析完,先在这放着,防止电脑坏掉丢了,以后再完善 V4L ...

  8. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  9. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

随机推荐

  1. 在springboot中用redis实现消息队列

    环境依赖 创建一个新的springboot工程,在其pom文件,加入spring-boot-starter-data-redis依赖: <dependency> <groupId&g ...

  2. oracle 如何查看当前用户的表空间名称

    如何查询当前用户的表空间名称?因为oracle建立索引,需要知道当前用户的表空间,查找了一下资料 --查询语法-- select default_tablespace from dba_users w ...

  3. POJ 2243 Knight Moves(BFS)

    POJ 2243 Knight Moves A friend of you is doing research on the Traveling Knight Problem (TKP) where ...

  4. Weka中数据挖掘与机器学习系列之数据格式ARFF和CSV文件格式之间的转换(五)

    不多说,直接上干货! Weka介绍: Weka是一个用Java编写的数据挖掘工具,能够运行在各种平台上.它不仅提供了可以直接用于数据挖掘的软件,还提供了src代码,使用者可以修改源代码,进行二次开发. ...

  5. SQL 常用判断语句

    我们在做sql更新时,为防止sql重复执行报错,需要对所需要执行的对象进行判断是否存在: 常用判断脚本如下: 判断视图是否存在 IF object_id('viewname') IS not NULL ...

  6. uitableviewcell textlabel detailtextLabel 换行的位置及尺寸问题

    我们在使用uitableView的时候,一些简单的cell样式其实是不需要自定义的,但是系统的方法又似乎又无法满足需要,这时候我们就需要在系统上做一些改变来达到我们的需求: 像这种cell,简单分析下 ...

  7. Java数值类型之间转换

    Java之间的数值转换如图所示,实心箭头代表无数据丢失,虚线箭头代表可能丢失 例如:123456789是一个大的整数,包含的位数比float类型能够表达的位数多,但这个数转换为float类型时,将会得 ...

  8. 无法获取 vmci 驱动程序版本: 句柄无效

    https://jingyan.baidu.com/article/a3a3f811ea5d2a8da2eb8aa1.html 将 vmci0.present = "TURE" 改 ...

  9. 玩转X-CTR100 l STM32F4 l DSP指令集性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 DSP库的 ...

  10. asp.net mvc 实现简单的实时消息推送

    因为项目需要,需要在网页上实现消息的推送.在百度上搜索了一下,发现实现网页上的消息推送,可以使用asp.net 中的SignalR类库,当然也可以使用H5的WebSocket  Ajax的轮回.当然此 ...