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

这篇具有很好参考价值的文章主要介绍了colmap多相机重建多场景及数据库数据快速修改方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 colmap流程

1.1 新建项目

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

1.2 特征提取

  点击Processing - Feature extraction,打开如下界面:
colmap多相机重建多场景及数据库数据快速修改方法,SfM,colmap,数据库,数码相机,opencv
  
  主要修改的内容包括:

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

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

1.3 特征匹配

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

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

到了这里,关于colmap多相机重建多场景及数据库数据快速修改方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Jetpack】Room 中的销毁重建策略 ( 创建临时数据库表 | 拷贝数据库表数据 | 删除旧表 | 临时数据库表重命名 )

    在 Android 中使用 Room 操作 SQLite 数据库 , 如果 SQLite 数据库表 修改比较繁琐 , 如 : 涉及到 修改 数据库表字段的数据类型 , 需要逐个修改数据库值 ; 该环境下 使用 销毁 和 重建策略 是 最佳的方案 ; 销毁 和 重建策略 执行步骤 : 以 Table 表为例 , 要对 Table 表中的数据进行繁琐的

    2024年02月08日
    浏览(55)
  • openGauss学习笔记-204 openGauss 数据库运维-常见故障定位案例-重建索引失败

    204.1 重建索引失败 204.1.1 问题现象 当Desc表的索引出现损坏时,无法进行一系列操作,可能的报错信息如下。 204.1.2 原因分析 在实际操作中,索引会由于软件或者硬件问题引起崩溃。例如,当索引分裂完发生磁盘空间不足、出现页面损坏等问题时,会导致索引损坏。 204.1.3 处

    2024年01月24日
    浏览(48)
  • 【数据库】如何利用Python中的petl将PostgreSQL中所有表的外键删除,迁移数据,再重建外键

    在数据库管理中,外键是一种重要的约束,用于确保数据的一致性和完整性。然而,在某些情况下,我们可能需要删除或修改外键。本文将介绍如何使用Python中的petl库将PostgreSQL中所有表的外键删除,迁移数据,并重新建立外键。 首先,我们需要安装petl和psycopg2库。在命令行

    2024年02月10日
    浏览(49)
  • 三维重建-colmap基本原理

    源码: colmap中的pose是 world to camera,满足: Pc = R * Pw + T colmap坐标系: 补充代码实现: colmap主要相机模型: 径向畸变:一般是有镜头的形变误差导致的。一般分为 枕形畸变和桶形畸变。 切向畸变:又称为偏心畸变。 一般无人机视频选择径向畸变模型(simple Radial)就可以了

    2024年02月13日
    浏览(63)
  • NoSQL数据库使用场景以及架构介绍

    其它相关推荐: 系统架构之微服务架构 系统架构设计之微内核架构 鸿蒙操作系统架构 架构设计之大数据架构(Lambda架构、Kappa架构) 所属专栏:系统架构设计师 NoSQL(Not-onlySQL):不仅仅只是SQL,泛指非关系型的数据库。 是对关系型数据库的补充和完善,它不使用传统的表格

    2024年02月06日
    浏览(63)
  • Spring Boot应用中如何动态指定数据库,实现不同用户不同数据库的场景

    当在 Spring Boot 应用程序中使用Spring Data JPA 进行数据库操作时,配置Schema名称是一种常见的做法。然而,在某些情况下,模式名称需要是动态的,可能会在应用程序运行时发生变化。比如:需要做数据隔离的SaaS应用。 所以,这篇博文将帮助您解决了在 Spring Boot 应用程序中如

    2024年04月26日
    浏览(48)
  • java批量修改数据库数据

    批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: 代码如下: UPDATE mytable SET myfield = ‘value’ WHERE other_field = ‘other_value’; 如果更新同一字段为同一个值,mysql也很简单,修改下where即可: 代码如下: UPDATE mytable SET myfield = ‘value’ WHERE other_field in (‘oth

    2024年02月16日
    浏览(46)
  • Apache Doris 数据库有哪些应用场景?

    首先声明,本人无意叛变,依然是ClickHouse的忠实信徒。 对于Doris,一直听圈内的人在说,吹得神乎其神,但到底有多强,从来没有真正的去尝试一把。 直到这次,被人狠狠上了一课。 在一次全文检索的模糊查询的场景PK中,ClickHouse一败涂地,让本人很是没面子,咳咳,大哥

    2024年01月22日
    浏览(53)
  • 大数据技术8:StarRocks极速全场景MPP数据库

    前言:StarRocks原名DorisDB,是新一代极速全场景MPP数据库。StarRocks 是 Apache Doris 的 Fork 版本。StarRocks 连接的多种源。一是通过这个 CDC 或者说通过这个 ETL 的方式去灌到这个 StarRocks 里面;二是还可以去直接的和这些老的 kafka 或者是这种 TP 的数据库或者这种 log 的话,直接可以

    2024年02月04日
    浏览(40)
  • 《向量数据库指南》——腾讯云向量数据库Tencent Cloud VectorDB产品特性,架构和应用场景

    腾讯云向量数据库(Tencent Cloud VectorDB)是一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库支持多种索引类型和相似度计算方法,单索引支持 10 亿级向量规模,可支持百万级 QPS 及毫秒级查询延迟。腾讯云向量数据库不仅能为大模

    2024年02月14日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包