文章目录1. 引言2. 从视差到深度3. 从深度到三维点云4. 点云存储与可视化5. 点云后处理6. 深度精度分析7. 多视角配准概述8. 总结1. 引言经过标定、校正、匹配、后处理我们终于得到了一张高质量的视差图。这是双目视觉的成品数据但要真正还原三维世界还需最后一步——把二维视差转换为三维坐标生成三维点云3D Point Cloud。这一步是从图像到三维的最后一跃完成它整个双目流水线才算闭环。本篇介绍视差到深度的转换、深度到点云的投影、点云的存储与可视化、后处理以及深度精度分析。2. 从视差到深度三角测量的一般原理空间一点P PP在左右两幅图像中各有一个像点从左、右相机光心分别向对应像点作投影射线两条射线在空间中的交点即恢复出的三维点——这就是一般意义上的三角测量Triangulation对任意双相机构型都成立。本篇处理的校正后平行光轴双目是它的特例两条射线共面且水平对齐交点的求解退化为一个简洁的公式Z f B / d Z fB/dZfB/d。下面从视差出发推导它。图 1从视差图到三维点云的转换链。视差d dd经Z f B / d ZfB/dZfB/d转为深度再经内参反投影为三维坐标最后做点云后处理。核心公式第 1 篇已推导Z f B d \boxed{Z \frac{fB}{d}}ZdfB​​其中f ff为焦距像素、B BB为基线、d dd为视差。由Z f B / d Z fB/dZfB/d可见视差 d深度 Z含义大小物体近小大物体远0∞无穷远无有效深度⚠️异常值处理视差为 0 或负值无物理意义需置为无效过小视差对应极远距离误差被放大常设深度上界截断。3. 从深度到三维点云已知深度Z ZZ和像素坐标( u , v ) (u, v)(u,v)结合内参K KK反投影为相机坐标系下的三维点X ( u − c x ) Z f x , Y ( v − c y ) Z f y , Z f B d X \frac{(u - c_x)\,Z}{f_x}, \quad Y \frac{(v - c_y)\,Z}{f_y}, \quad Z \frac{f B}{d}Xfx​(u−cx​)Z​,Yfy​(v−cy​)Z​,ZdfB​其中( f x , f y , c x , c y ) (f_x, f_y, c_x, c_y)(fx​,fy​,cx​,cy​)为内参立体校正后左右相机焦距一致且f x f y f f_x f_y ffx​fy​f故深度公式统一记Z f B / d Z fB/dZfB/d。这组公式本质是针孔投影u f x X / Z c x u f_x X/Z c_xufx​X/Zcx​的逆解。OpenCV 提供重投影矩阵Q QQ由stereoRectify输出一步完成# 视差图 (float32) → 三维点云 (N×3)pointscv2.reprojectImageTo3D(disp,Q)# Q 是 stereoRectify 返回的 4×4 重投影矩阵Q QQ矩阵封装了f ff、c x c_xcx​、c y c_ycy​、T x T_xTx​基线等参数reprojectImageTo3D对每个像素应用[ X Y Z W ] Q [ u v d 1 ] , ( X , Y , Z ) ( X / W , Y / W , Z / W ) \begin{bmatrix} X \\ Y \\ Z \\ W \end{bmatrix} Q \begin{bmatrix} u \\ v \\ d \\ 1 \end{bmatrix}, \quad (X,Y,Z) (X/W, Y/W, Z/W)​XYZW​​Q​uvd1​​,(X,Y,Z)(X/W,Y/W,Z/W)转换公式工具视差→深度Z f B / d Z fB/dZfB/d手算或Z Q [ 2 ] [ 3 ] / ( Q [ 3 ] [ 2 ] d Q [ 3 ] [ 3 ] ) ZQ[2][3]/(Q[3][2]dQ[3][3])ZQ[2][3]/(Q[3][2]dQ[3][3])像素深度→3D点X ( u − c x ) Z / f x X(u-c_x)Z/f_xX(u−cx​)Z/fx​等reprojectImageTo3D4. 点云存储与可视化图 2常见点云存储格式对比与三维点云散点示意。PLY 最通用Open3D/MeshLab/CloudCompare 均支持。点云数据结构为N × 3 N \times 3N×3或N × 6 N \times 6N×6含颜色的浮点数组存储格式多样格式全称存储工具备注PLYPolygon File FormatASCII/二进制Open3D/MeshLab★最常用PCDPoint Cloud DataASCII/二进制PCL 库PCL 生态XYZ纯坐标文本ASCII通用简单LASASPRS LASLASer 数据格式二进制LAS 工具/LiDAR 处理软件大地测量可视化工具Open3DPython交互式、CloudCompareGUI专业、MeshLab网格点云。Open3D 示例importopen3daso3dimportnumpyasnp# 构造点云pcdo3d.geometry.PointCloud()pcd.pointso3d.utility.Vector3dVector(points[:,:3])# N×3ifpoints.shape[1]6:pcd.colorso3d.utility.Vector3dVector(points[:,3:6]/255.0)o3d.io.write_point_cloud(output.ply,pcd)o3d.visualization.draw_geometries([pcd])# 交互式查看5. 点云后处理图 3点云后处理。原始点云含离群点左统计滤波剔除离群中体素下采样均匀化密度右。原始点云仍有离群点和密度不均需后处理步骤方法作用Open3D/OpenCV统计滤波剔除邻域距离异常的点去离群点remove_statistical_outlier半径滤波剔除邻域点数过少的点去孤立点remove_radius_outlier体素下采样按体素栅格均匀采样降密度、均匀化voxel_down_sample表面重建Poisson / Ball Pivoting点云→网格create_from_point_cloud_poisson# Open3D 后处理示例pcd,_pcd.remove_statistical_outlier(nb_neighbors20,std_ratio2.0)pcdpcd.voxel_down_sample(voxel_size0.005)# 5mm 体素pcd.estimate_normals()# Poisson 重建前需先估计点云法线mesh,densitieso3d.geometry.TriangleMesh.create_from_point_cloud_poisson(pcd,depth9)实践要点统计滤波参数邻域数、标准差倍数需根据点云密度调整体素尺寸应略小于最小要保留的细节尺度。6. 深度精度分析图 4深度精度分析。左固定基线 6cm 下深度分辨率随距离二次方增长右不同基线对比基线越大远距离精度越高。示意图实际数值见下表。对Z f B / d Z fB/dZfB/d求导深度分辨率视差量化 1 像素带来的深度变化Δ Z ∣ d Z d d ∣ Δ d f B d 2 Δ d Z 2 f B Δ d \Delta Z \left|\frac{dZ}{dd}\right| \Delta d \frac{fB}{d^2} \Delta d \frac{Z^2}{fB} \Delta dΔZ​dddZ​​Δdd2fB​ΔdfBZ2​Δd关键结论含义误差与Z 2 Z^2Z2成正比距离越远深度精度急剧下降误差与f B fBfB成反比焦距、基线越大精度越高亚像素Δ d 1 \Delta d 1Δd1亚像素精化可显著提升精度以f 800 f800f800px、B 6 B6B6cm、Δ d 0.25 \Delta d0.25Δd0.25px亚像素为例Δ Z Z 2 Δ d / ( f B ) Z 2 / 192 \Delta Z Z^2\Delta d/(fB) Z^2/192ΔZZ2Δd/(fB)Z2/192深度 Z深度分辨率 ΔZ评价1 m约 5.2 mm高精度毫米级5 m约 130 mm厘米~分米级10 m约 520 mm误差达分米量级20 m约 2080 mm精度差米级工程启示双目在近距离几米内精度可达毫米~厘米级10m 处误差已达分米量级远距离急剧恶化。这也是自动驾驶远距感知多配 LiDAR 的原因——双目在 50m 外精度通常不足。7. 多视角配准概述单对双目只能恢复一个视角的点云。要重建完整物体/场景需从多个视角拍摄经**配准Registration**拼接。核心算法是ICPIterative Closest Point在两片点云间找最近点对计算最优旋转平移使点对距离最小迭代直到收敛Open3Do3d.pipelines.registration.registration_icp。配准可结合特征描述子FPFH做全局粗配再用 ICP 精配最终融合为完整点云或表面网格。8. 总结本篇完成了从视差到三维的最后一跃视差→深度Z f B / d Z fB/dZfB/d深度与视差反比深度→点云X ( u − c x ) Z / f x X(u-c_x)Z/f_xX(u−cx​)Z/fx​等或reprojectImageTo3D一键完成点云存储PLY 通用PCD 服务 PCLOpen3D 读写点云后处理统计/半径滤波去离群体素下采样均匀化Poisson 重建网格精度规律Δ Z ∝ Z 2 / ( f B ) \Delta Z \propto Z^2/(fB)ΔZ∝Z2/(fB)远距离精度急剧下降多视角ICP 配准拼接多视角点云至此双目立体视觉的理论链路已全部走通成像→标定→畸变→极线→校正→匹配→后处理→三维重建。在下一篇中我们将用 OpenCV 把整条链路串成端到端可运行的完整工程并讨论 SGBM 调参与实时优化。思考题深度分辨率Δ Z ∝ Z 2 \Delta Z \propto Z^2ΔZ∝Z2意味着远距离精度极差。除了增大基线和焦距还有什么方法能提升远距离精度提示亚像素精化、多帧时序融合、或结合单目/先验深度。