colmap多相机重建多场景及数据库数据快速修改方法

news2024/9/24 23:26:17

1 colmap流程

1.1 新建项目

  首先打开colmap,然后创建新的project,其中数据库目录和名称自己选定,注意不要将它放到图像目录下即可。然后images选择的是图像目录(比如我这里是guangxi/section1),这个目录下应该包含有不同的文件夹,每个文件夹存放同一个相机拍摄的图像。注意,图像目录下除了待重建的图像之外,不要有别的文件。比如我这里有五个相机,每个相机拍摄有5527张图像,下图是guangxi/section1目录下的文件结构:
在这里插入图片描述
  
  选好之后点击save,如下图所示:
在这里插入图片描述
  

1.2 特征提取

  点击Processing - Feature extraction,打开如下界面:
在这里插入图片描述
  
  主要修改的内容包括:

  • Camera model:相机模型,根据实际需要进行选择,我这里选择OPENCV模型,它包括k1/k2/p1/p2四个畸变参数。
  • 勾选Shared per sub-folder复选框

  一般来说,其余选项保持默认设置即可,修改后的设置如下图所示:
在这里插入图片描述
  
  然后点击Extract,进行特征提取。在数据量很大的情况下,特征提取的速度是不稳定的,可能会一开始很快,一秒钟可以完成好几张,后面就有可能十几秒钟完成一张。这个现象我感觉可能跟数据库的数据写入速度有关,当提取数据缓存过多的时候,就会自动降低提取速度,先将缓存都写入数据库中。但是十几秒一张实在是太慢了,要是一直这个速度,两万多张图像得提取到猴年马月。因此,在速度比较慢的情况下,我就先将提取进程给中断了,这时候界面会一直卡着没法操作(因为colmap还在进行数据库数据写入),但是等一段时间后就能继续操作了,然后再次进行特征提取,速度就又会很快了。我这将近三万张图像的特征提取总共花了两三天时间吧。
  

1.3 特征匹配

  点击Processing - Feature matching,打开如下界面:
在这里插入图片描述
  
  这里有不同的提取方式,其中Exhaustive是穷举匹配,速度比较慢,在数据量很大的情况下是行不通的。因为我使用的是倾斜摄影测量影像数据,所以图像是带有GPS信息的,可以通过它来指导匹配。这种方式是Spatial,然后可以修改一下max_num_neighbors选项,意思是每张图像最多可以和邻近的多少张图像存在匹配关系。默认是50,我这里修改为200,可以根据实际情况进行修改。修改后如下图所示,然后点击Run运行即可。
在这里插入图片描述
  特征匹配也比较耗时,不过速度相对于特征提取是比较稳定的,所以我中途也没有手动将它断掉,总共花费的时间也是两天那样,跟特征提取差不多。
  

1.4 增量式重建

  首先需要进行一些设置。点击Reconstruction - Reconstruction options,可能需要修改的项目包括:

  • multiple models:是否生成多个模型,默认是勾选的,如果不需要colmap重建多个模型,记得将这个勾去掉!!!否则你可能会在漫长等待后突然发现,怎么突然只重建了这么几张影像然后就停止了?于是一脸懵逼地保存然后关闭colmap。千万别这么干!!!(血泪教训,我一开始就是不知道,然后只是将当前的小模型输出就把colmap关闭了,后来发现,是因为colmap已经把最大那个模型重建好了,然后因为默认勾了这个,它会继续从未加入的图像开始新一轮重建,而那个之前重建完毕的大模型,可以通过在右侧模型下拉框中选择获得,然后进行保存。我是第二次遇到这个问题后才知道的,一开始也踩坑了,相当于白跑大半天)。
  • max_num_models:最大模型数量,默认为50,也就是colmap最多会从这份数据中创建50个不同的模型出来。
  • min_model_size:最小模型包含的图像数量,默认为10。看需求进行修改,默认的话,也许你在获得一个大模型后,还会喜提一大堆没什么用的小模型。

  设置完成后,关闭该选项页,然后点击Reconstruction - Start reconstruction开始重建。

  

2 数据库修改

  colmap的数据库是可以直接通过ui界面的database management进行修改的,但是通过这种方式,每次只能修改一个单元格的数据,在需要修改的数据量很大的情况下,这将会是一件非常耗时的重复性劳动,且很有可能发生错漏。比如,我在跑数据的时候,就遇到这么一个问题,原本只是有五个不同镜头的倾斜摄影图像,且每个镜头拍摄的图像都放置在图像目录下的不同文件夹里了,按理说应该只会有五个相机模型,但是在提取特征点的时候,colmap给我创建了18个相机模型,这显然是不对的。因此,我需要自己去修改它的数据库文件。要修改的地方包括两个,一个是将cameras表里的多余相机模型删除,另一个是将images表里的camera_id进行正确对应。但是我的数据总共包含将近三万张照片,一张一张照片手动修改不太现实。
虽然我也不太熟悉数据库的操作,不过还好,这个需求比较简单,稍微搜一下sql语句的使用就可以了。首先,我们需要安装数据库管理软件sqlitebrowser(colmap使用的数据库也是sqlite)。ubuntu(windows系统下应该可以直接去官网下载即可)下的安装命令为:

sudo apt-get install sqlitebrowser

  安装完成后,在命令行继续执行:

sqlitebrowser

  即可打开sqlitebrowser界面。点击打开数据库,打开colmap的db文件,如下图所示:
在这里插入图片描述
  
  打开浏览数据界面,就可以选择查看每个表的数据了,如下图所示:
在这里插入图片描述
  
  双击表中的每个单元格,即可进行数据修改:
在这里插入图片描述
  
  但是这种方式效率太过低下,我们可以进入执行SQL标签页,在里面输入SQL语句,让系统帮忙修改:
在这里插入图片描述
  
  上图所示命令的含义是,更新images表格里image_id字段的值小于5527的数据中的camera_id字段的值为1。因为我每个相机都拍摄了5527张图像,所以这样就可以实现将第一个相机拍摄的图像对应的相机模型设置为同一个(camera_id=1)。同理,可以继续进行其他相机图像的相机模型id修改操作。执行SQL语句的速度非常快,修改上万条数据的耗时也只需要几毫秒,这不比手动一个一个修改香太多了。
  
  而删除cameras表里的多余相机模型,直接在浏览数据界面打开对应的表,选中记录并点击右上角删除记录即可。
在这里插入图片描述
  数据库修改完成后,点击写入修改按钮,或者按快捷键ctrl+s进行保存即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/488151.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聊天机器人简要理解

聊天机器人 身边的同事或多或少都在聊ChatGPT,这又使得学生时代训练模型的恐惧感开始支配我。说起聊天机器人,我们先熟悉一下不同对话系统的概念。 一、对话系统分类 1、单轮对话 单轮与传统的问答系统相类似,是智能对话系统的初级应用。…

时代变迁的缩影:从天涯BBS的沦落,到媲美EXCEL的WPS后辈的腾达

昔日王者,今朝黯然 “无法访问此网站” 陪伴我们青春的天涯论坛就此真的与我们相忘于天涯。 江湖路远,不知何日才能重逢? 这是第几个了? 那个人人自由创造的时代是否真的已经逝去? 近年来网易、凤凰等论坛相继关闭。…

Docker Harbor

目录 一、Docker Harbor概述 1、Harbor的优势 2、Harbor知识点 3、Docker私有仓库架构 二、Harbor构建Docker私有仓库 1、环境配置 2、案例需求 3、部署docker-compose服务 4、部署harbor服务 5、启动harbor ① 访问 ② 添加项目并填写项目名称 ③ 通过127.0.0.1来…

大江南北十三省,蓬门今始为君开,数字政府建设“实在”必行

引言: 推动数字中国建设是实现中国式数字化进程、抢占未来发展制高点的关键。为全面推动数字化转型在政府领域的纵深发展,各地领导不断进行数字化探索。其中,数字员工凭借流动的数据、流畅的体验,百姓少跑腿、数据多跑路特点&…

零基础也能轻松搭建Python环境和pycharm

目录:导读 引言 python环境安装 pycharm安装 设置 字体的大小: 关闭警告: 代码风格: 代码层级: ide与版本控制的整合: 插件安装:(3个) 介绍: 控制台&…

HJTB-9222跳闸闭锁继电器导轨安装 约瑟JOSEF

名称:跳闸闭锁继电器品牌:JOSEF约瑟型号:HJTB-9222额定电压:110、220V触点容量:250V/5A动作时间:≤10mS HJTB系列跳闸闭锁继电器 系列型号 HJTB-9222跳闸闭锁继电器 概述和应用 HJTB系列跳闸闭锁继电器…

NLP模型(四)——seq2seq模型与Attention机制介绍

文章目录 1. seq2seq模型介绍2. 模型计算2.1 LSTM结构单元2.2 seq2seq计算流程 3. Attention机制3.1 引入Attention3.2 计算全局对齐权重 4. seq2seq加入Attention机制5. 模型理解6. 模型细节6.1 解码器结构6.2 加入信息方式 参考文章 1. seq2seq模型介绍 传统的RNN只能处理 1…

诺派克ROPEX热封控制器维修RES-407/RES-406

德国ROPEX热封控制器维修型号包括:RES-401,RES-402,RES-403,RES-406,RES-407,RES-408,RES-409,RES-420,RES-440,MSW-2,PEX-W3,PEX-W4&…

Android 源码浅析:Leakcanary 内存泄漏检测的好帮手

我们一起来分析一下大名鼎鼎的 Leakcanary, 想必作为 Android 开发都多多少少接触过,新版本的 Leakcanary 也用 Kotlin 重写了一遍,最近详细查看了下源码,分享一下。 tips:本来是只想分析下内存泄漏检测部分&#xff…

c语言Have Fun with Numbers

题目 Have Fun with Numbers Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happens to be another 9-digit number consisting exactly the numbers …

2016年iOS公开可利用漏洞总结

0x00 序 iOS的安全性远比大家的想象中脆弱,除了没有公开的漏洞以外,还有很多已经公开并且可被利用的漏洞,本报告总结了2016年比较严重的iOS漏洞(可用于远程代码执行或越狱),希望能够对大家移动安全方面的工…

【LeetCode】139. 单词拆分

139. 单词拆分(中等) 思路 首先将大问题分解成小问题: 前 i 个字符的子串,能否分解成单词;剩余子串,是否为单个单词; 动态规划的四个步骤: 确定 dp 数组以及下标的含义 dp[i] 表示 s…

Zero-ETL、大模型和数据工程的未来

编者按:本文探讨了数据工程领域的未来趋势和挑战,以及其不断变化、甚至经常出现“重塑”的特点。在数据工程领域,大数据的性能、容量提升总是有一定的上限,每一次进步都会带来一定的技术提升,从而提高上限。但是很快我…

解锁采购系统数字升级?来看看云时通SRM!

疫情影响下,全球经济一体化使得企业在供应商的管理上面临着巨大挑战,传统采购方法已经不足以支持企业管理和竞争,企业采购管理急需数字化转型。 相较于传统采购方法,目前成功的供应商系统管理,还需要具有更多的市场要…

IT圈最近比较火热的技术都是哪些?

前言 如果现在要问什么行业最火,毋庸置疑,会有很多人第一反应回答是IT行业。众所周知,近些年互联网行业的高速发展,IT技术不断推陈出新,各种技术更新迭代周期越来越快,涌入IT技术开发的人员也是成倍增长&am…

QT基础铺垫

1.qt定位 qt在整个课程体系中起到以下作用 1.c理论的实践课 2.图形用户界面GUI开发 3.一个独立的就业方向 3.qt特性 qt经常被当作是一个基于c语言的gui开发框架,但是这并不是qt的全部,除了开发界面外,qt还包含了很多其他功能&#xff1…

C++最后一个数组元素后加不加逗号,的问题(C++11 及以上的标准中,最后一个元素后面可以加逗号,也可以不加)

这代码看得我有点疑惑,最后一个元素后咋有个逗号呢?也没报错? 原因: 在 C11 及以上的标准中,最后一个元素后面可以加逗号,也可以不加。因此,上述代码可以写成以下两种形式: std::v…

零基础学SQL(十三、事务)

目录 前置建表 ​编辑 一、什么是事务 二、事务特性ACID 1、原子性(Atomicity) 2、一致性(Consistency) 3、隔离性(Isolation) 4、持久性(Durability) 三、事务控制 1、ROLLBACK 2、COMMIT 使用 set autocommit0;命令修改默认提交方式为FALSE 前置建表 CREATE TABLE…

无距离障碍:远程桌面Ubuntu实现全球办公

目录 前言 视频教程 1. ubuntu安装XRDP 2.局域网测试连接 3. Ubuntu安装cpolar内网穿透 4.cpolar公网地址测试访问 5.固定域名公网地址 [TOC] 转载自远程穿透文章:Windows通过RDP异地远程桌面Ubuntu【内网穿透】 前言 XRDP是一种开源工具,它允许…

Android开发中的前五个代码异味:Jetpack Compose UI和MVVM

Android开发中的前五个代码异味:Jetpack Compose UI和MVVM 代码异味是指软件代码中潜在问题的指标,可能并不一定是错误,但可能会导致问题,如增加维护复杂性、降低性能或降低可读性。我们将探讨Android开发中的前五个代码异味&…