拍摄要求

  • 拍摄尽可能同一时间段拍完,避免巨变的光照条件变化、曝光失常、焦点失焦等问题;
  • 可以选择拍摄图片,但需保证不同图片的相机焦距一定,避免手机滤镜、美颜等磨去纹理等;建议拍摄视频,可以保证相邻图片直接连续性;
  • 小物件,可以物品为球心,在半球式多视角拍摄图片;对于较大物品,无法做到半球式拍摄顶部,可以柱面或部分球面的形式拍摄,但重建效果对于未采集区域必然是不好的;

预处理

(此处我提供了一些 python 脚本处理,例如抽帧、降分辨率等,具体请见:脚本积累)

  • 拍摄为视频时:保持镜头的连续性,以一定间隔进行抽帧(保证相邻图片特征匹配良好),并剔除失焦模糊、曝光失常等无效图片;
  • 必要时可以将图片同比例的缩小;
  • (可选)如果只想单独重建物体,可以进行图像分割,将想要重建的物品抠图出来(PS、MiVOS-STCN等方法);

相机内外参

我们利用 colmap) 图形界面获取相机内外参:

  • 最好这里保证如下文件结构:

    1
    2
    3
    4
    5
    6
    7
    + --- scene               # 待合成场景
    | + --- image # 图片文件夹
    | + --- mask # 如果进行了语义分割,mask文件夹
    | + --- database.db # 从此开始,下述文件为位姿获取时生成
    | + --- sparse # 相机位姿的二进制文件
    | + --- text # 相机外参的.txt格式文件
    | + --- project.ini
  • 菜单栏 File->New project,第一栏创建 database.db 二进制进程文件,第二栏添加 image 图片文件夹路径;

  • 菜单栏 Processing->Feature extraction,将 camera model 调整为 PINHOLE,选中下面的 Shared for all images(这也就是为什么我们要求不要改变内参,避免不必要的麻烦)。(如果有 mask,可以导入对应文件夹路径;如果有多个 GPU,可以在下面选择 gpu_index 参数)最后点击 Extract 提取特征;

  • 菜单栏 Processing->Feature matching->Exhaustive->Run

  • 菜单栏 Reconstruction->Automatic reconstructionWorkspace 导入 scene 文件夹,Image folder 导入image 文件夹,选中 Shared intrinsics取消 Dense model,然后 Run

  • 直观的,你可以导出看看相机内外参,File->Export model as text

  • 关闭前会让你保存一个 project.ini 文件。