对于Colmap的三个文件讲解

Posted 行码阁119

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于Colmap的三个文件讲解相关的知识,希望对你有一定的参考价值。

当使用Colmap进行稀疏重建时,会生成一下三个文件。

依次对每个文件进行介绍:

1、points3D.txt

# 3D point list with one line of data per point:
#   POINT3D_ID, X, Y, Z, R, G, B, ERROR, TRACK[] as (IMAGE_ID, POINT2D_IDX)
# Number of points: 750, mean track length: 2.9506666666666668
1 2.4828681030642312 -5.0682527653218825 29.777528391988987 99 117 90 0.28006835886839493 1 85 3 58 2 64
393 -5.1319171487367123 2.8186788299391412 15.199595828661161 162 158 157 0.82049755044180017 1 2109 3 4269 2 4818

 POINT3D_ID:三维点的id (二维点可以根据此id找到图片对应的三维点) 

X, Y, Z:三维点坐标

R, G, B:三维点颜色信息

ERROR:投影误差(基于像素)

TRACK[] as (IMAGE_ID, POINT2D_IDX):对应images.txt里的图像id,以及每张图你对应特征点的id。比如说上面:1 85 3 58 2 64,意思是图片ID为1的对应images.txt里面的第85个点,ID为3的对应images.txt里面的第58个点,ID为2的对应images.txt里面的第64个点,这三个点是对应三张图的特征点,这三个点都映射到这个三维点。

 

看上图黑色是二维图片的数据,通过代码遍历出来,,第一列是对应点的ID ,第二列,第三列对应的是图像二维坐标,第四列对应的是三维点的ID。白色部分是points3D.txt里的数据,通过对比,查看白色倒数第二行数据,发现750对应的图片ID为1的二维点ID为11012,刚好对应上,那么此时二维点(4282.31 2555.35)对应的三维点是(4.4189599276293423 4.2638932551533149 16.150506265050332 )。

2、images.txt

# Image list with two lines of data per image:
#   IMAGE_ID, QW, QX, QY, QZ, TX, TY, TZ, CAMERA_ID, NAME
#   POINTS2D[] as (X, Y, POINT3D_ID)

IMAGE_ID:图像ID

QW, QX, QY, QZ:四元素

TX, TY, TZ:平移向量

CAMERA_ID:相机的ID

NAME:图片的名字

 四元素转换为旋转矩阵课参考:(3条消息) Cesium中的相机—四元素_云上飞47636962的博客-CSDN博客

3.cameras.txt 

# Camera list with one line of data per camera:
# CAMERA_ID, MODEL, WIDTH, HEIGHT, PARAMS[]
# Number of cameras: 1
1 PINHOLE 5472 3078 3606.6260092760231 3554.1046035895465 2736 1539

CAMERA_ID:相机ID

 MODEL:相机名字

WIDTH:图像宽度

HEIGHT:图像高度

PARAMS[]:对应相机内参依次:(fx=fy),cx,cy;

以上是关于对于Colmap的三个文件讲解的主要内容,如果未能解决你的问题,请参考以下文章

对于Colmap的三个文件讲解

colmap利用已知的相机内外参数重建场景

colmap稀疏重建转为MVSNet格式输入

Ubuntu20.04安装三维重建的openMVGopenMVS和colmap环境

如何在搅拌机中可视化 colmap 导出 [images.txt]?

colmap已知相机位姿情况下进行三维重建