COLMAP项目输出文件格式详解
概述
COLMAP作为一款强大的多视图三维重建工具,其输出文件格式设计既考虑了高效性又兼顾了可读性。本文将深入解析COLMAP的输出文件格式,帮助用户更好地理解和使用重建结果。
二进制与文本格式对比
COLMAP提供了两种输出格式选择:
-
二进制格式(.bin文件)
- 机器可读
- 读写速度快
- 存储效率高
- 推荐用于大规模重建项目
-
文本格式(.txt文件)
- 人类可读
- 便于调试和检查
- 适合小规模数据集
当目录中同时存在两种格式时,COLMAP会优先加载二进制格式。
索引与标识符规范
在COLMAP的文件格式中,变量命名遵循特定约定:
-
以
*_idx结尾的变量:- 表示有序的、连续的索引
- 从0开始计数
- 例如关键点在图像中的索引
-
以
*_id结尾的变量:- 表示无序的、非连续的标识符
- 可能包含空缺值
- 例如相机ID、图像ID和3D点ID
稀疏重建文件结构
稀疏重建结果通常包含以下核心文件:
1. rigs.txt文件
记录相机组的配置信息,格式如下:
# 注释行说明格式
RIG_ID NUM_SENSORS REF_SENSOR_TYPE REF_SENSOR_ID SENSORS[]...
示例解析:
- 每个传感器包含类型、ID、是否有位姿标志
- 位姿数据采用四元数(QW,QX,QY,QZ)和平移向量(TX,TY,TZ)表示
2. cameras.txt文件
存储相机内参信息,每行对应一个相机:
CAMERA_ID MODEL WIDTH HEIGHT PARAMS[]...
常见相机模型参数:
- SIMPLE_PINHOLE:焦距,cx,cy
- PINHOLE:fx,fy,cx,cy
- SIMPLE_RADIAL:焦距,cx,cy,径向畸变系数k1
3. frames.txt文件
定义相机组的实例:
FRAME_ID RIG_ID RIG_FROM_WORLD[] NUM_DATA_IDS DATA_IDS[]...
- RIG_FROM_WORLD:从世界坐标系到相机组坐标系的变换
- DATA_IDS:关联的传感器和数据ID
4. images.txt文件
每幅图像占用两行:
# 第一行:位姿和元数据
IMAGE_ID QW QX QY QZ TX TY TZ CAMERA_ID NAME
# 第二行:关键点信息
X Y POINT3D_ID...
关键说明:
- 位姿采用四元数表示旋转,遵循Hamilton约定
- 相机坐标系定义:X向右,Y向下,Z向前
- POINT3D_ID为-1表示该关键点未关联到3D点
5. points3D.txt文件
存储重建的3D点:
POINT3D_ID X Y Z R G B ERROR TRACK[]...
- TRACK字段格式:(IMAGE_ID, POINT2D_IDX)
- ERROR表示重投影误差(像素单位)
- RGB值为0-255范围的整数
密集重建文件结构
密集重建的工作区通常包含以下目录:
workspace/
├── images/ # 去畸变后的图像
├── sparse/ # 稀疏重建结果
├── stereo/
│ ├── consistency_graphs/ # 一致性图
│ ├── depth_maps/ # 深度图
│ ├── normal_maps/ # 法线图
│ ├── *.cfg # 配置文件
├── fused.ply # 融合后的点云
├── meshed-*.ply # 网格化结果
└── run-*.sh # 示例脚本
深度图与法线图格式
采用混合文本头+二进制数据格式:
- 文本头:
width&height&channels& - 二进制数据:float32类型,行优先存储
- 深度图:1通道
- 法线图:3通道(XYZ分量)
一致性图格式
存储每个像素的一致性信息:
<row><col><N><image_idx1>...<image_idxN>
- 表示(row,col)位置的像素与N个图像一致
- 图像索引参照images.txt中的顺序
格式转换与导出
COLMAP提供了多种导出选项:
-
通过GUI界面导出:
- 二进制格式:File > Export model
- 文本格式:File > Export model as text
- 其他格式:File > Export as...
-
通过命令行工具:
- 使用model_converter进行格式转换
最佳实践建议
- 对于生产环境,推荐使用二进制格式以提升性能
- 调试时可以使用文本格式便于检查数据
- 定期备份重建结果,特别是关键步骤的输出
- 注意坐标系定义,确保后续处理正确理解数据
通过深入理解这些文件格式,用户可以更灵活地处理COLMAP的输出结果,并将其集成到自己的三维重建流程中。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



