colmap笔记

colmap重建一般步骤:

1. 找到关键点和特征

这里有很多匹配方式,如果超过1k张,尽量使colmap输入的图片有序号。这样确保查询重合度时,只需要查询相近的场景,不需要遍历全部图片。

2. 关键点匹配

3. 稀疏重建

注意事项:

输入的图片要尽可能满足:

1、纹理要多

2、相似光照

3、不同视角

4、重叠度高

colmap支持已存在的特征,需要通过txt等方法输入。

colmap提取文件存储到SQLite数据库中。所有信息都存在.db文件中。colmap的坐标系是左上角点为(0,0),中心点是(0.5,0.5)。

database.db的数据表

cameras:每个相机的参数
  •  - camera_id(一般只有一个相机),model(模型类型)
  •  - width,height(摄像机的高宽,也就是图片像素是widthX height)
  •  - params(相机参数)包括焦距信息,
  •  - prior_focal_length 事前焦距


 

images:相机和图片的关系是1对N
  •  - image_id(唯一,无序)
  •  - name 对应文件名
  •  - camera_id 摄像机id
     
keypoints:得到的特征点
  •  - image_id:图片id
  •  - rows:每个图片特征点点数
  •  - cols:点维度,默认6维
  •  - data:如果有6列
  •     - x,y:二维图片中坐标,左上为原点
  •     - a11=scale_x * cos(orientation)
  •     - a12=-scale_y * sin(orientation + shear)
  •     - a21=scale_x * sin(orientation)
  •     - a22=scale_y * cos(orientation + shear)
  • 注:x_scaling,y_scaling(x,y方向上的高斯的模糊的系数,也就是尺度信息),orientation(关键点主方向),shear(倾斜参数,一个角度参数,描述与主方向偏差) )
  •  - data:如果有4列
  •     - x,y:二维图片中坐标,左上为原点
  •     - scale:放缩系数
  •     - orientation:主方向。


 

descriptors:特征描述子
  •  - image_id 描述子的id
  •  - rows 描述子数目
  •  - cols 描述子维度 默认128。使用了sift算法
  •  - data:描述子的二进制表示。


 

matches:特征匹配关系
  •  - pair_id 每个匹配的id,等于img2*2147483647+img1
  •  - rows 匹配的特征个数
  •  - cols 匹配点的数,默认为2
  •  - data 每对图片出现匹配的点对,每个点对格式 (point2D_idx1,point2D_idx2),总计rows个点对。


 

two_view_geometries:(几何关系)
  •  - pair_id 每个匹配的id,等于img2*2147483647+img1
  •  - rows:内部配置的匹配,少于matches里的配置。
  •  - cols:默认2
  •  - data:每对图片出现匹配的点对,每个点对格式 (point2D_idx1,point2D_idx2),总计rows个点对。
  •  - F:Fundamental matrix.基础矩阵是描述两个视图之间几何关系的重要工具。它可以通过对应点的坐标计算得到,表示了两个视图之间的投影关系。3*3 FLOAT64
  •  - E:Essential matrix.3*3 FLOAT64
  •  - H:Homography matrix.3*3  FLOAT64
  •  - config:0-8,不同配置 (一般0(无匹配点),3,6((只有F和H,E为0))
    •  - UNDEFINED = 0:默认,
    •  - DEGENERATE = 1:Degenerate configuration (e.g., no overlap or not enough inliers). Essential matrix.
    •  - CALIBRATED = 2:Essential matrix.
    •  - UNCALIBRATED = 3: Fundamental matrix.
    •  - PLANAR = 4:Homography, planar scene with baseline.
    •  - PANORAMIC = 5:Homography, pure rotation without baseline.
    •  - PLANAR_OR_PANORAMIC = 6:Homography, planar or panoramic
    •  - WATERMARK = 7: Watermark, pure 2D translation in image borders.
    •  - MULTIPLE = 8: Multi-model configuration, i.e. the inlier matches result from multiple individual, non-degenerate configurations.


 

输出的文件

(有两个文件后缀,其中.bin是二进制文件,.txt是文本文件)

  • cameras
  • images
  • point3D
  • project.ini(项目配置文件,记录设置)

     

cameras.bin/.txt: 得到相机模型的配置信息

Camera list with one line of data per camera:每行每相机,下面是每行中的元素

  •    - CAMERA_ID
  •    - MODEL:模型,默认针孔相机模型
  •    - WIDTH, HEIGHT:相机宽高。
  •    - PARAMS[]:补充信息,如果是针孔,那么是焦距+主点位置(x,y)
image.bin/.txt:得到图片的信息

图像的本地相机坐标系是这样定义的:从图像上看,X轴指向右,Y轴指向下,Z轴指向前

Image list with two lines of data per image:(一张图片的信息占两行)

  1.    第一行 IMAGE_ID, QW, QX, QY, QZ, TX, TY, TZ, CAMERA_ID, NAME,tu[1] :(QW, QX, QY, QZ)是world坐标系到camera坐标系的旋转,一个四元组。(TX, TY, TZ)是移动向量,
  2.    第二行 POINTS2D[] as (X, Y, POINT3D_ID):这一行可能有很多点,图像中每个点的格式是2d坐标加3d坐标点的id,如果没有对应的3d点,那么标为-1
point3D:得到的三维空间中点的信息

3D point list with one line of data per point:数据集中所有重建的3D点的信息

        - POINT3D_ID, X, Y, Z, R, G, B, ERROR, TRACK[] as (IMAGE_ID, POINT2D_IDX):点id,(x,y,z)重建后的三维坐标,R,G,B,点的颜色信息。error是重投影之后的误差,(IMAGE_ID, POINT2D_IDX)这是表示点的来源,有哪些图片中有,它是这个图片中那个关键点,比如(1,5)表示第一张图的第五个关键点与这个空间中的点匹配。


 

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值