This commit is contained in:
i
2026-04-21 20:26:21 +08:00
parent 70b2023546
commit 428dbbab72
4 changed files with 302 additions and 63 deletions
+28
View File
@@ -20,6 +20,22 @@
多个深度点映射到同一彩色像素时,保留最近点(小 Z 值覆盖大 Z 值)。
### 前向映射的间隙问题与 3×3 Splat 修复
前向映射(forward scatter)存在固有缺陷:每个深度像素只写入 color 平面的**一个像素**。由于深度相机与彩色相机的视角差异,经外参变换 + 透视投影后,相邻深度像素在 color 平面上的落点会出现跳跃,中间留下空洞,输出图像呈现**离散小方块**而非连续深度面。
**修复方案:3×3 邻域扩散(splat)**
对每个投影后的深度像素,同时写入以其为中心的 3×3 邻域,而不是单个像素。遍历顺序仍保持**远→近**,因此当多个 splat 重叠时,Z 值较小(较近)的深度最后写入并覆盖,遮挡关系依然正确:
```
for dv in -1, 0, +1:
for du in -1, 0, +1:
aligned[v + dv, u + du] = z # 远→近顺序,近处覆盖远处
```
如果局部仍有残留空洞(如深度图有效范围边缘),可将 3×3 扩大为 5×5(`range(-2, 3)`)。
---
## 环境依赖
@@ -124,6 +140,18 @@ python d2c_batch.py --convert
使用已有的 `camera_params.json`,直接输入深度图目录开始转换。适合相机参数已获取、需要反复处理不同数据集的场景。
### 关闭 3×3 Splat 填充
```bash
python d2c_batch.py --no-splat
```
默认开启 splat(前向映射后用 3×3 邻域扩散填补间隙)。加 `--no-splat` 可关闭,每个深度像素仅写入 color 平面的单个像素,适合对原始投影结果做对比分析。可与其他参数组合使用:
```bash
python d2c_batch.py --convert --no-splat
```
---
## 交互示例