只讲 录视频 这条路线,每一步都给出可以照抄的操作。完整端到端流程见 GS_DATA_COLLECTION.md,这份文档是它的拍摄章节细化版。
Last Updated: 2026-05-09
用手机以 1080p / 30fps,手动锁定曝光对焦白平衡,匀速绕场景走 三圈(高、中、低),全程 60~120 秒。回到电脑用 ffmpeg 抽出 100~200 张图,扔进 COLMAP + 3DGS 训练。
不管 iPhone 还是安卓,目标是 三件事都不变:
| 要锁定的参数 | iPhone 操作 | 安卓 (大多数) |
|---|---|---|
| 对焦 AF | 长按画面任一点 → 出现 "AE/AF 锁定" 黄框 | 切到"专业模式",把对焦拨到 MF(手动),调到中等距离 |
| 曝光 AE | 长按之后亮度条会出现,不再自动变 | 专业模式手动设 ISO(100~400)+ 快门(1/100s 起) |
| 白平衡 WB | 自带不太好锁,建议用第三方 App | 专业模式选定一个色温(比如 5500K)后不变 |
强烈推荐 App(任选其一,免费版都够用):
- iPhone:Blackmagic Camera / FiLMiC Pro / ProMovie
- 安卓:Open Camera(开源)/ 手机自带的"专业"模式
打开 App 后这样设:
分辨率: 1920x1080 (1080p)
帧率: 30 fps (不要选 60fps,文件太大没意义)
ISO: 200~400 之间,固定
快门: 1/100s 起步,光线弱可以到 1/60s,不要更慢
对焦: MF 手动,调到 1~2 米
白平衡: 5000~5500K 固定
HDR: 关掉
防抖: 开(光学防抖 OIS / 电子防抖 EIS 都可以)
如果只用自带相机也行,最关键的是 长按锁定对焦曝光(黄框出现)。
开拍前 30 秒走一圈,确认:
- 风扇 / 空调出风口 → 关掉(防窗帘/纸张飘)
- 屏幕 / 电视 → 关掉或换静态壁纸(动画破坏 SfM)
- 地面玩具 / 散落电线 → 收一收
- 椅子 → 推到不挡路的地方
- 窗帘 / 灯光 → 保持现在这样直到拍完,中间不要开关灯
- 手机 → 静音、勿扰、电量 ≥ 50%
- 拍摄期间 不让人或宠物走过
正式开拍前先录 30 秒 demo,回放看一下:
- 画面有没有抖到糊
- 暗处有没有过黑/亮处有没有过曝
- 有没有镜头沾灰、起雾
不行就调整再录。正式拍只录一次,不要拍两段拼接(曝光会跳)。
60~120 秒。慢就慢,但不能快。
- 走得太快 → 动态模糊、相邻帧重叠不够 → COLMAP 注册失败
- 走得太慢 → 视频太长抽出 200+ 张冗余帧
一个简单参考:从场景一头走到另一头大概用 5~8 秒。
想象场景中心是个圆心,你绕着它走三圈:
俯视图 (你的视角,从天花板往下看场景)
╭─────────────────────╮
│ │
│ ╭───────╮ │
│ │ │ │ 绕 3 圈
│ │ ★ │ │ ★ = 你想拍的核心区域 / 桌面 / 物体
│ │ │ │
│ ╰───────╯ │
│ │
╰─────────────────────╯
侧视图
圈 1 ─ 高位(把手机举到额头高度,相机略向下)
圈 2 ─ 中位(手机端到胸口高度,相机水平)
圈 3 ─ 低位(蹲下,相机略向上)
每圈大约 20~40 秒,三圈合起来 60~120 秒。
- 手机举到 眉毛 / 额头 高度
- 相机 略向下倾 15~25°(看到地面 + 物体顶部)
- 围绕场景顺时针走一圈,走得慢,每两步停 0.5 秒(不是真的停下来,是放慢)
- 走到最关键的角度(比如桌面正面)时 再放慢
- 手机举到 胸口 高度
- 相机 水平(既不仰也不俯)
- 走的时候 稍微靠近场景中心 —— 圈半径比上一圈小一点
- 经过想重点拍的物体 / 桌面时,可以 侧身略微贴近 拍 1~2 秒,再退回正常半径继续走
- 半蹲或全蹲,手机放到 肚脐 高度
- 相机 略向上仰 10~20°(看到桌面下方 / 物体底部 / 天花板边缘)
- 走得可以再慢一点,因为蹲着累,但稳
如果场景里有 特别想拍清楚的东西(比如桌上的实验设备、机器人工作区),三圈之外 再加一段 10~20 秒的特写:
- 距离 0.5~1 米
- 围绕这个东西小幅度移动(左右各走 1 步、上下小幅度起伏)
- 不要原地转手机!平移很重要,纯旋转 SfM 很难恢复深度
✗ 不要原地旋转手机(pan)—— 必须有平移
✗ 不要快速摇晃 —— 模糊一帧 = 浪费一帧
✗ 不要中途停下来又开始 —— 一气呵成
离开现场之前,回放一遍视频,检查:
- 视频长度 60~150 秒之间
- 没有任何一段画面糊到看不清物体边缘
- 整段亮度一致(没有忽暗忽亮)
- 没有人或宠物入镜
- 三个高度都拍到了
任何一项不对就重拍。回家后才发现就太晚了 —— 现场光线/物体位置回不去。
把视频用 AirDrop / 数据线 / 微信传文件助手 传到电脑,命名成
比如 lab_20260509.mp4。
# 假设视频在 ~/Downloads/lab_20260509.mp4
SCENE=lab
WORKDIR=/home/ununtu/metabot-workspace/mugs/data/custom/$SCENE
mkdir -p $WORKDIR/input
ffmpeg -i ~/Downloads/lab_20260509.mp4 \
-qscale:v 2 \
-vf "fps=2" \
$WORKDIR/input/frame_%04d.jpg参数解释:
-qscale:v 2JPEG 高质量(数字越小越好,2 是上限附近)-vf "fps=2"每秒抽 2 帧- 60s 视频 → 120 张
- 90s 视频 → 180 张
- 120s 视频 → 240 张
- 文件名
frame_0001.jpg,frame_0002.jpg, ...
ls $WORKDIR/input | wc -l # 应该在 100~300 之间
ls $WORKDIR/input | head -5 # 文件名连续随便打开几张看一眼:
- ✅ 清晰、不模糊
- ✅ 亮度一致
- ✅ 视角覆盖整个场景
如果数量不在 100~300 之间,改 fps:
| 视频长度 | 想要 ~150 张 | 命令 |
|---|---|---|
| 60s | 抽 2.5 帧/秒 | -vf "fps=2.5" |
| 90s | 抽 1.7 帧/秒 | -vf "fps=1.7" |
| 120s | 抽 1.25 帧/秒 | -vf "fps=1.25" |
| 180s | 抽 0.83 帧/秒 | -vf "fps=0.83" |
也可以 直接选总张数:
# 不管视频多长,强制抽出 150 张
ffmpeg -i input.mp4 -vf "select='not(mod(n\,N))'" -vsync vfr ...但简单起见 fps= 就够了。
抽完 100~300 张图后,剩下的全自动:
# COLMAP 求相机位姿(10~60 分钟)
git clone https://github.com/graphdeco-inria/gaussian-splatting ~/gs
cd ~/gs
python convert.py -s $WORKDIR
# 训练 3DGS(30~90 分钟)
python train.py -s $WORKDIR -m $WORKDIR/output --iterations 30000
# 拷到 MuGS 期望的位置
mkdir -p $WORKDIR/point_cloud/iteration_30000
cp $WORKDIR/output/point_cloud/iteration_30000/point_cloud.ply \
$WORKDIR/point_cloud/iteration_30000/
cp $WORKDIR/output/cameras.json $WORKDIR/完整命令、训练参数、出错怎么办看 GS_DATA_COLLECTION.md Part 3~5。
| 现象 | 原因 | 下次怎么避免 |
|---|---|---|
| COLMAP 注册率 < 50% | 走太快、相邻帧没重叠 | 走慢一倍,或视频拍长一点 |
| COLMAP reproj err > 2px | 整段视频模糊 / 手抖 | 用三脚架 / 稳定器,或锁高 ISO 用快快门 |
| 训出来一片浮云 | 视角太单一(只拍了一个角度) | 三圈 必须走完,别偷懒 |
| 训出来一面墙是空的 | 那一面没拍到 | 检查圈是否真的绕了一周(360°) |
| 训完渲染颜色诡异 | 白平衡飘了(比如经过窗户时被自动调整) | 用专业模式 App 锁死 WB |
| 桌面物体边缘糊 | 那部分拍得太快 / 距离太远 | 给关键物体加 10~20s 特写贴近拍 |
如果你之前完全没拍过,建议第一次就先在 自己工位 试一下,因为:
- 场景小,三圈很快走完(≤ 1 分钟)
- 失败了立刻能再拍
- 训练 1080p 大概只要 30 分钟,能快速看效果
具体步骤:
Step 1 (5 min) 装一个 Open Camera (安卓) 或 Blackmagic Camera (iPhone)
Step 2 (2 min) 设置 1080p / 30fps / 手动模式(按上面 1.1)
Step 3 (1 min) 关空调风扇、屏幕静态、把椅子推开
Step 4 (1 min) 录 90 秒视频:高、中、低 各 30 秒绕桌一圈
Step 5 (3 min) 传电脑 → ffmpeg 抽帧 → 看一下图片质量
Step 6 (待机) COLMAP + 训练(晚上挂着跑)
Step 7 (10 min) 检查渲染结果,不行就回到 Step 4 重拍
第一次预期 不会一次成功。多数人第二次或第三次能拍出可用的场景。
- 完整 pipeline:GS_DATA_COLLECTION.md
- 公开数据集(如果不想自己拍):3DGS_ROOM_DATASETS.md
- MuGS 上手:QUICK_START.md
- 拍完发我看一眼也行,我可以帮你看视频质量