• COLMAP生成MVSNet数据集


    一. colmap2mvsnet.py

    COLMAP可以给图像数据集标定一套相机外参及视图选择。如果想用COLMAP导出的结果输入MVSNet测试,需要把数据集(图片、相机参数等)转化为MVSNet的输入格式。MVSNet的作者yaoyao在Github上提供了colmap2mvsnet.py代码,可以实现以上格式转化的需求,原README如下:

    1. MVSNet input from SfM output
    2. We provide a script to convert COLMAP SfM result to R/MVSNet input. After recovering SfM result and undistorting all images, COLMAP should generate a dense folder COLMAP/dense/ containing an undistorted image folder COLMAP/dense/images/ and an undistorted camera folder COLMAP/dense/sparse/. Then, you can apply the following script to generate the R/MVSNet input:
    3. python colmap2mvsnet.py --dense_folder COLMAP/dense
    4. The depth sample number will be automatically computed using the inverse depth setting. If you want to generate the MVSNet input with a fixed depth sample number (e.g., 256), you could specified the depth number via --max_d 256.

    在得到fM结果和未失真的所有图像后,COLMAP会生成一个文件夹COLMAP/dense/,包含未失真的图像文件夹COLMAP/dense/images/和未失真的相机文件夹COLMAP/dense/sparse/。然后,可以用以下脚本生成MVSNet输入:

    python colmap2mvnet .py——dense_folder COLMAP/dense

    python colmap2mvsnet.py --dense_folder COLMAP/dense
    

    深度样本数将使用逆深度设置自动计算。如果想生成具有固定深度样本数字(例如,256)的输入,可以通过指定深度数字。

    ——max_d 256

    我的具体实现过程如下:

    二. 实现流程

    1. COLMAP下载

    网上有很安装COLMAP教程,我是直接在官网下载的window版本,链接如下:

    COLMAP - Structure-From-Motion and Multi-View Stereo (demuc.de)https://demuc.de/colmap/2. 准备图片集

    创建image文件夹,存放自己的图片。

    3. COLMAP稀疏重建

    创建数据库文件

    首先创建一个文件夹,暂且叫colmap2mvsnet ,里面放刚创建的image文件夹。接着,打开COLMAP文件夹双击colmap.bat运行gui界面,点击new project创建新的工程。

    • 在colmap2mvsnet目录下新建一个数据库文件colmap2mvsnet.db
    • 指定图像文件夹为image

    特征提取

    点击Feature extraction ,设置相机模型跟参数。有给定参数就设置,没有就默认。

    特征匹配

    点击Feature matching,设置相匹配方式和参数。有给定参数就设置,没有就默认。

    稀疏重建

    同上,有给定参数就设置,没有就默认。

    图像去畸变

    在colmap2mvsnet目录下新建一个文件夹 dense 存放去畸变的图片文件夹、相机参数等。

    • 点击Dense reconstruction
    • select刚刚创建的dense文件夹
    • 点击左上角undistortion 
    • 运行结束后直接关闭

    导出模型txt文件

    点击Export model as text,保存路径为colmap2mvsnet/dense/sparse/文件夹。

    4. colmap2mvsnet

    把colmap2mvsnet.py文件复制到colmap2mvsnet文件夹中,并在终端下运行以下命令:

    (我是在服务器上运行的)

    python colmap2mvsnet.py --dense_folder colmap2mvsnet/dense --max_d 192  --interval_scale 1.06
    

    --max_d:最大估计的离散深度采样区间数,因为MVSNet是按照平面扫描原理进行深度估计的,所以深度是离散采样的,一般我们设定为192个深度采样区间。
    --interval_scale:每个深度区间的大小,默认为1.06(mm)。

    注:我们需要估计自采数据的深度范围,已保证在深度采样区间内,能对目标场景进行有效的深度估计,举个例子,如果自采数据的深度范围为450mm – 800mm,那么我们用于深度估计的区间范围应该是350mm。此时如果我们设定的深度区间为0 – 350mm,那么估计出来的深度图肯定是错误的。所以对于自采数据,大家需要尝试不同的深度区间,以找到合适的取值范围。

    输出会保存在dense文件夹中,包括:

    • 去畸变后的图片的images文件夹
    • 相机参数cam文件夹
    • pair.txt

    以上文件就是MVSNet需要的文件格式,至此自建数据集用流程结束!

  • 相关阅读:
    密码学系列之:PKI的证书格式表示X.509
    网站接公网+配置域名访问宝宝级教程
    归并排序算法
    “Softing工业技术”微信视频号开通啦!
    小迪安全34WEB 攻防-通用漏洞&文件上传&黑白盒审计&逻辑&中间件&外部引用
    Javaweb之javascript的详细解析
    IMAU鸿蒙北向开发-2023年9月5日学习日志
    关于 axios 是什么?以及怎么用?
    ICMP协议及其在编程中的应用
    【java学习】特殊流程控制语句(8)
  • 原文地址:https://blog.csdn.net/qq_43307074/article/details/128062508