3D 视觉基础:点云、深度估计、立体视觉

📂 所属阶段:第四阶段 — 视觉新范式(Transformer 篇)
🔗 相关章节:Vision-Language 多模态 · 模型轻量化


1. 3D 视觉概述

3D 视觉 = 从 2D 图像重建 3D 世界

应用:
- 自动驾驶:3D 目标检测
- 机器人:抓取规划
- AR/VR:虚拟现实
- 医学:3D 重建

2. 点云处理

import numpy as np
import open3d as o3d

# 创建点云
points = np.random.randn(1000, 3)
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(points)

# 可视化
o3d.visualization.draw_geometries([pcd])

# 下采样
downsampled = pcd.voxel_down_sample(voxel_size=0.05)

# 法向量估计
downsampled.estimate_normals()

# 保存
o3d.io.write_point_cloud("output.pcd", downsampled)

3. 深度估计

import torch
from torchvision.models import midas_v2

# 加载预训练深度估计模型
model = midas_v2.MiDaS_large(pretrained=True)
model.eval()

# 推理
image = torch.randn(1, 3, 384, 384)
with torch.no_grad():
    depth = model(image)

print(depth.shape)  # (1, 384, 384)

4. 立体视觉

import cv2
import numpy as np

# 立体匹配
stereo = cv2.StereoBM_create(numDisparities=16*5, blockSize=15)

# 读取左右图像
left = cv2.imread("left.jpg", 0)
right = cv2.imread("right.jpg", 0)

# 计算视差图
disparity = stereo.compute(left, right)

# 转换为深度图
depth = cv2.reprojectImageTo3D(disparity, Q)

cv2.imshow("Depth", depth)
cv2.waitKey(0)

5. 小结

3D 视觉三大方向:

1. 点云处理:处理 3D 数据
2. 深度估计:从单张图像估计深度
3. 立体视觉:从多张图像重建 3D

2026 年趋势:
- 深度学习深度估计
- 神经辐射场(NeRF)
- 3D 目标检测

💡 记住:3D 视觉是计算机视觉的前沿方向。掌握它,你就走在行业最前沿。


🔗 扩展阅读