【三维重建】【深度学习】【数据集】基于COLMAP制作个人Gen6D测试数据集

news2025/1/12 22:57:26

【三维重建】【深度学习】【数据集】基于COLMAP制作个人Gen6D测试数据集

提示:最近开始在【三维重建】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。


文章目录

  • 【三维重建】【深度学习】【数据集】基于COLMAP制作个人Gen6D测试数据集
  • 前言
  • 下载安装colmap软件
  • 拍摄视频采集图像
  • 恢复相机姿势
  • 手动指定对象区域
    • 安装CloudCompare
    • 保存目标对象点云
    • 指定目标对象的X正方向和Z正方向
  • 总结


前言

Gen6D不需要CAD模型或者可渲染模型就可以泛化到新物体的位姿估计算法,本文基于COLMAP用手机拍摄的视频制作成个人的测试数据集。官方参考


下载安装colmap软件

下载COLMAP软件【下载地址】,本文使用的是Windows下的CUDA版本:

解压后双击打开COLMAP.bat,出现如下界面软件安装成功:

将COLMAP工程放在合适的位置,可以重命名,然后加入到环境变量里:


拍摄视频采集图像

将拍摄好的视频存放在Gen6D/data\custom\video路径下:

拍摄视频的目标对象一定是要静止的,假如目标对象没有纹理,那背景的纹理必须要足够丰富。

将拍摄视频分割成图像:

# 激活虚拟环境
conda activate gen6d
# 进入Gen6D工程目录下
cd XXX
# 分割视频
# --transpose 解决图片颠倒
python prepare.py --action video2image --input data/custom/video/people.mp4 --output data/custom/people/images --frame_inter 10 --image_size 960 --transpose

在Gen6D\data\custom\people\images路径下查看分割完成的图片:

图像尺寸进行了缩放,如果图像的尺寸太大,后面会有一系列存储不够等问题。


恢复相机姿势

# colmap假如没有添加环境变量就需要colmap.exe的完整路径
python prepare.py --action sfm --database_name custom/people --colmap colmap.exe


手动指定对象区域

安装CloudCompare

安装CloudCompare,点击Next–>自定义安装路径–>一路默认选择

保存目标对象点云

使用CloudCompar打开Gen6D/data/custom/people/colmap/pointcloud.ply:

手动指定目标区域:裁剪目标对象点云。

将裁剪后的目标对象点云导出:需要取消remaining部分,只选择segmented,用binary格式保存在Gen6D/data/custom/people/目录下,命名为object_point_cloud.ply。

指定目标对象的X正方向和Z正方向

使用CloudCompar打开刚保存的Gen6D/data/custom/people/object_point_cloud.ply。

  1. Z正方向的向量:拟合一个平面,其法线作为Z正方向的向量。
    同样先裁剪一片区域:只选择segmented—>Tools—>Fit—>Plane拟合一个目标物体放置(平行)的水平面,使用其法线作为Z正方向的向量。
    拟合平面是根据所有选中点云拟合的,因此点云的选取十分关键,下图这种就很糟糕,完全不是目标物体所放置的平面。
  2. X正方向的向量:通过选择俩个点计算出X正方向的向量。

    在Gen6D/data/custom/people/目录下创建meta_info.txt将X正方向和Z正方向记录下来(好像不能复制粘贴要手打)。
    0.090675 -1.660917 -0.227757
    0.560382 -0.0676446 0.825467
    

总结

尽可能简单、详细的讲解了基于COLMAP将手机拍摄的视频制作成个人Gen6D测试数据集的流程。

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

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

相关文章

龙迅LT86102UX HDMI一进二出,支持分辨率4K60HZ

龙迅LT86102UXE 1. 描述 龙迅LT86102UX HDMI2.0 分路器具有符合 HDMI2.0/1.4 规范的 1:2 分路器、最大 6Gbps 高速数据速率、自适应均衡 RX 输入和预强调的 TX 输出,支持长电缆应用,板载无 XTAL,可节省 BOM 成本。 LT86102UX HDM…

海保人寿:开源治理保障科技与保险融合,助力保险业务数字化改革创新

海保人寿保险股份有限公司(简称“海保人寿”)是第一家在海南筹建开业的全国性保险机构。从成立之初,便深耕于数字化创新,在自身多业务环节中实现数字化转型,依托优秀的研发体系与数智融合的业务系统,不断推…

MAYA材质学习(各种好看的)

例子2 例子3 例子4 例子5 例子6 例子7

如何解决GitHub 访问不了?小白教程

GitHub 是全球最大的代码开源平台,小伙伴们平时都喜欢在那里找一些优质的开源项目来学习,以提升自己的编程技能。 但是很多小白初探GitHub 发现访问不了,不能访问 通过一下方法绕过这堵墙,成功下载 GitHub 上的项目。过程非常简单…

Ukey连接虚拟前置机,浦银安盛基金用USB Server解决

浦银安盛基金一直使用物理前置机来连接Ukey,物理前置机维护管理不便,严重影响金融交易效率。因此,浦银安盛基金想要推进企业虚拟化,通过在虚拟机中部署前置机程序的方式,将前置机部署到虚拟机中。但虚拟机中的前置机&a…

SpringCloud整体架构概述

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! SpringCloud整体架构概述 SpringCloud对常见的分布式系统模式提供了简单易用的编程模型,帮助开发者构建弹性、可靠、协调的应用程序。 SpringCloud是在Spr…

在线升级之ICAP,ISP,BIN,HEX,MCS

学到了ICAP,做做笔记。 具体可参考:FPGA中ICAP原语的使用——Multiboot功能的实现_朽月的博客-CSDN博客 ICAP是管理内部配置访问端口的原语,于是我学习的第一个原语。对于原语的概念简而言之就是类似IP核的存在,是既成的电路结构&…

使用Puppeteer爬取地图上的用户评价和评论

导语 在互联网时代,获取用户的反馈和意见是非常重要的,它可以帮助我们了解用户的需求和喜好,提高我们的产品和服务质量。有时候,我们需要从地图上爬取用户对某些地点或商家的评价和评论,这样我们就可以分析用户对不同…

C++内存管理(2)new、delete详解

目录 new operator(new操作) new类对象时加不加括号的差别 new工作任务 delete工作任务 new和delete 堆区空间操作(对比malloc和free) new和delete操作基本类型的空间 new和delete操作基本类型的数组 new和delete操作类的…

Layui快速入门之第二节布局容器(固定宽度与完整宽度)

目录 一&#xff1a;固定宽度 二&#xff1a; 完整宽度 一&#xff1a;固定宽度 将栅格放入一个带有 class"layui-container" 的特定容器中&#xff0c;以便在小屏幕以上的设备中固定宽度&#xff0c;让列可控(两侧有留白效果) <!--固定宽度(两侧有留白效果)--&…

Layui快速入门之第三节栅格布局

目录 一&#xff1a;栅格布局的基本概念 二&#xff1a;栅格布局规则 三&#xff1a;始终等比例水平排列案例 四&#xff1a;响应式规则 五&#xff1a;移动设备、桌面端的组合响应式展现案例 六&#xff1a;移动设备、平板、桌面端的复杂组合响应式展现案例 七&#xf…

Yalmip使用教程(6)-将约束条件写成矩阵形式

博客中所有内容均来源于自己学习过程中积累的经验以及对yalmip官方文档的翻译&#xff1a;https://yalmip.github.io/tutorials/ 这篇博客将详细介绍如何借助yalmip工具箱将约束条件写成矩阵形式。 1.相关函数介绍 1.1 depends和getvariables函数 depends和getvariables函数都…

C# Winform 简单排期实现(DevExpress TreeList)

排期的需求在很多任务安排的系统中都有相应的需求&#xff0c;原生的Winform控件并未提供相应的控件&#xff0c;一般都是利用DataGridViewTreeView组合完成相应的需求&#xff0c;实现起来比较麻烦。用过DevExpress控件集的开发者应该知道&#xff0c;DevExpress WinForm提供了…

数学建模--K-means聚类的Python实现

目录 1.算法流程简介 2.1.K-mean算法核心代码 2.2.K-mean算法效果展示 3.1.肘部法算法核心代码 3.2.肘部法算法效果展示 1.算法流程简介 #k-means聚类方法 """ k-means聚类算法流程: 1.K-mean均值聚类的方法就是先随机选择k个对象作为初始聚类中心. 2.这…

http实现文件分片下载

文章目录 检测是否支持HTTP Range 语法Range请求cURL示例单一范围多重范围条件式分片请求 Range分片请求的响应文件整体下载文件分片下载文本下载图片下载封装下载方法 HTTP分片异步下载是一种下载文件的技术&#xff0c;它允许将一个大文件分成多个小块&#xff08;分片&#…

一个新工具 nolyfill

名字的意思&#xff0c; 我自己的理解 no(po)lyfill 正如它的名字, 不要再用补丁了, 当然这里说的是过时的补丁。 polyfill 是补丁的意思 为什么要用这个插件 文档原文: 当您通过安装最新的 Node.js LTS 来接受最新的功能和安全修复时&#xff0c;像eslint-plugin-import、…

架构师如何做好需求分析

架构师如何做好需求分析 目录概述需求&#xff1a; 设计思路实现思路分析1.主要步骤 2.主要步骤2操作步骤 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,…

Android笔记(二十八):在雷电模拟器安卓7.0+上使用Charles抓包详细教程

背景 由于手头没有合适的真机,所有经常使用雷神模拟器来跑项目,模拟器也需要能够抓包看看接口返回的数据,以便自测调试。本文记录了如何在雷电模拟器安卓7.0+上使用Charles抓包,其他模拟器没试过。 最终效果 浏览器打开百度网页,能抓到百度页面数据 具体步骤 模拟器…

xinput1_3.dll丢失的解决方法,快速修复xinput1_3.dll文件

在使用电脑时&#xff0c;我们可能会遇到各种各样的问题&#xff0c;其中之一就是xinput1_3.dll文件丢失的情况。这个文件是DirectX的一部分&#xff0c;它对于许多游戏和其他应用程序的正常运行至关重要。当xinput1_3.dll文件丢失时&#xff0c;我们无法启动或运行依赖该文件的…

LeetCode刷题笔记【28】:贪心算法专题-6(单调递增的数字、监控二叉树)

文章目录 前置知识738.单调递增的数字题目描述解题思路代码 968.监控二叉树题目描述解题思路代码 总结 前置知识 参考前文 参考文章&#xff1a; LeetCode刷题笔记【23】&#xff1a;贪心算法专题-1&#xff08;分发饼干、摆动序列、最大子序和&#xff09; LeetCode刷题笔记【…