colmap简易教程(命令行模式)

author author     2023-04-04     748

关键词:

参考技术A 完整的 multi view stereo pipeline 会有以下步骤

1. structure from motion(SfM)==> camera parameters, sparse point cloud

2. multi view stereo(MVS)==>depth map, dense point cloud

3. surface reconstruction(SR)==>poisson or delauny reconstruction, mesh

4. texture mapping(TM)==>get mesh with texture

COLMAP整体流程如下图所示

COLMAP 兼容好几种不同的相机模型,我们在使用时可以对相机模型进行限制以获得最好的效果。如果提前不知道相机内参,最好使用包含畸变系数的模型,默认为  SIMPLE_RAIDIAL  。

如果已知相机没有畸变或畸变影响很小,建议使用  SIMPLE_PINHOLE  模型。

可供选择的模型分别为

不同模型含义及参数如下表所示,详见 Camera Models

Pinhole_camera_model

camera_calibration_and_3d_reconstruction

运动恢复结构流程如下图所示

运动恢复结构的目的是求解相机参数,需要把所有输入图片放到一个文件夹下。按如下步骤依次进行。

相机内参已知的情况下我们可以直接通过命令行参数 ImageReader.camera_params 传给COLMAP。

a. 相机内参已知

其中  camera_params  为 std::string 类型,不同的模型有对应的表示方式。参数及含义参考上面表格中的各种相机模型。

b. 相机内参未知

其中  database_path  设置工程数据文件的保存路径

image_path  设置输入图像所在文件夹路径

camera_model  设置相机模型

max_image_size  设置为大于图像最大边所对应的分辨率的值

其中  database_path  设置为特征点检测时工程数据文件保存的路径。

模型转换与参数读取

在进行稀疏重建之后,model 默认会被导出到 bin 文件中,因为这样比较紧凑,节省空间,可以使用 COLMAP 的模型转换功能将其转换成 txt 文件。注意下面的指令中  input_path  和  output_path  是文件所在文件夹的路径,而不是单个文件路径。

a. 相机内参 cameras.txt  格式如下

b. 相机外参,包含旋转和平移,以及每张图片中特征点在图像中的二维坐标及其对应的三维稀疏点索引 images.txt  格式如下,注意这里的旋转保存为单位四元数形式,与 Eigen::Quaterniond 格式相同

c. 稀疏三维点云中三维空间点的信息  points3D.txt 格式如下

如果需要进一步 rectify, 可以把参数输入到 OpenCV 的  stereoRectify()  函数中,之后 initUndistortRectifyMap() , 最后使用 remap()  函数进行重映射 从而得到矫正的结果。

利用前面的步骤求得的相机参数进行稠密重建,由 PatchMatch 求解单视角对应的深度图和法向图,同时根据需要对深度图和法相图进行滤波。

对于纹理不是特别丰富的场景,建议增加 windows_radius 以及降低 filter_min_ncc 来提升深度值求解的准确度。

lua简易教程

首先,我们须要知道,Lua是类C的,所以,他是大写和小写字符敏感的。以下是Lua的HelloWorld。注意:Lua脚本的语句的分号是可选的,这个和GO语言非常类似。复制代码代码例如以下:print("HelloWorld")你能够像python一样。在... 查看详情

jmeter(非gui模式)教程

前言使用非GUI模式,即命令行模式运行JMeter测试脚本能够大大缩减所需要的系统资源。优点如下:1、节约系统资源:无需启动界面,节约系统资源2、便捷快速:仅需启动命令行,输入命令便可执行,是为命令达人最爱3、易于持... 查看详情

三维重建:colmap安装与使用(代码片段)

Image-based3DReconstructionfromScratch(usingCOLMAP)本文将介绍COLMAP的安装与使用,重点介绍3D重建过程中每个步骤的输入输出。一、安装在GitHub上下载COLMAP源代码(我用的是3.5版本),下载后进入colmap目录编译cd./colmap-3.5#进入colmap目录mkdirbu... 查看详情

windows命令行简易入门(代码片段)

文章目录Windows命令行简介​启动命令行基本命令dir:查看当前目录下的内容md与cd命令:创建目录与改变当前目录copy命令与type命令:拷贝文件与显示文本文件内容del命令:删除命令其他常用命令与小技巧其他资料... 查看详情

命令行显示的简易进度条

测试。。。 进度条类:packagecom.test;publicclassProcessBar/***显示一个进度条*/privatestaticintcount=1;privatestaticbooleanisStart=false;publicstaticvoidprocessbarshow(intnum,inttotal)/***总共显示30个*_________________ 查看详情

git简易实操教程

 一、Git简介 1、分布式版本代码控制工具 2、多个开发人员协调工作 3、有效监听谁做出的修改 4、本地及远程操作二、Git下载 Git下载地址:https://git-scm.com/downloads 检验git是否安装成功:在终端输入指令... 查看详情

golang命令行库cobra的使用(代码片段)

...件的程序。下面是Cobra使用的一个演示:Cobra提供的功能简易的子命令行模式,如appserver,appfetch等等完全兼容posix命令行模式嵌套子命令subcommand支持全局,局部,串联flags使用Cobra很容易的生成应用程序和命令,使用cobracreateappnam... 查看详情

vim简明教程

在shell中新建一个文件#vima.txtvim有三种模式:一般模式、插入模式、底行模式三种工作模式1.命令模式 移动光标 hjkl yy复制 nyy从光标向下复制n行 0移动光标到行首 $移动光标到行尾 快速移动光标 gg到文件首行首列 nG移动到第n行 G... 查看详情

ubuntu20.04防火墙设置(简易教程)(代码片段)

文章目录1.安装2.启用3.开启/禁用4.开启/关闭防火墙5.示例LInux原始的防火墙工具iptables由于过于繁琐,所以ubuntu系统默认提供了一个基于iptable之上的防火墙工具ufw。而UFW支持图形界面操作,只需在命令行运行ufw命令即能看... 查看详情

colmap简介及通过2d序列图像进行3d重建操作流程(代码片段)

   COLMAP是一种通用的运动结构(Structure-from-Motion(SfM))和多视图立体(Multi-ViewStereo(MVS))管道(pipeline),具有图形和命令行界面.它为重建有序和无序图像集合提供了广泛的功能。源码地址为https://github.com/colmap/colmap,最新发布... 查看详情

命令行通配符教程(代码片段)

转自:http://www.ruanyifeng.com/blog/2018/09/bash-wildcards.html一次性操作多个文件时,命令行提供通配符(wildcards),用一种很短的文本模式(通常只有一个字符),简洁地代表一组路径。通配符又叫做globbingpatterns。因为Unix早期有一个/et... 查看详情

简易命令行聊天室程序

最近学习完网络编程,决定写一个简单的聊天服务器。主要用到的技术是socket,I/O复用(epoll),非阻塞IO,进程等知识。下面主要叙述其中的关键技术点以及编写过程中遇到的问题。0、该程序实现的基本功能编写了一个简单的... 查看详情

mac电脑的终端命令行设置代理

...下,终端里输入csrutilenable--withoutdebug来部分关闭SIP,完整教程点击这里查看。恢复模式重启进入系统后,终端里输入csrutilstatus,结果中如果有DebuggingRestrictions:disabled则说明关闭成功。安装好Homebrew后,终端中输入brewinstallproxychain... 查看详情

vi/vim的使用简单介绍

...式是不能直接转换的。2.常用的按键说明:我直接贴菜鸟教程的图:http://www.runoob.com/linux/linux-vim.html一般模式:编辑模式:命令行模式 查看详情

git可视化极简易教程——gitgui使用方法

前言之前一直想一篇这样的东西,因为最初接触时,我也认真看了廖雪峰的教程,但是似乎我觉得讲得有点多,而且还是会给我带来很多多余且重复的操作负担,所以我希望能压缩一下它在我工作中的成本,但是搜索了一下并没... 查看详情

vi操作

vi3种模式:1命令行模式,2插入模式,3末行模式Vim启动后直接进入的是命令行模式,命令行模式顾名思义就是可以输入各种命令的意思,1.命令行下按i键进入“插入模式”,命令行下按:键进入“末行模式”,这两种模式要切回... 查看详情

golang:cobra包简介(代码片段)

...主要功能cobra的主要功能如下,可以说每一项都很实用:简易的子命令行模式,如appserver,appfetch等等完全兼容posix命令行模式嵌套子命令subcommand支持全局,局 查看详情

vim编辑命令

...建修改文件vim文本编辑器格式vim[[/目录/]文件名]三种模式命令模式输入模式(插入模式)输入内容末行模式保存并退出要在相应的模式敲相应的命令命令模式按i进入输入模式(按Esc返回命令模式)按:从命令模式到末行模式(按E... 查看详情