视差图转换为深度图
网上关于视差图转换为深度图的博客较多,但缺少具体实现。我根据原理和网上的一些参考自己实现了一个版本,做个记录,也希望能供大家参考
1 原理
根据视差图得到深度的原理很简单,示意如下:
图中b为双目相机的基线,一般需要自己测量(如果只需要相对深度的话可以自己取值)。f表示相机焦距(通常相机焦距有fx,fy,但由于视差只在x方向,因此直接取fx为f即可)。可以得到深度Z与视差d的关系为:
式1
具体推导可以参考推导过程。需要注意的是,d的单位是像素pixel,而其他几个变量的单位是mm,这看似单位不匹配(也是我一开始的困惑所在),但实际上是没有问题的。可以参考《视觉slam十四讲》的相机模型构建,相机成像过程如下:
主要分为:
(1)实际空间点到物理成像平面上的投影;
(2)物理成像平面转换到像素平面
这两个过程。(1)中物理成像平面上对应实际空间点(X,Y,Z)的点(X’,Y’)是具有物理尺度的,只不过进行了缩放:
X ′ = f ∗ X / Z X' = f*X/Z X′=f∗X/Z |
---|
Y ′ = f ∗ Y / Z Y' = f*Y/Z Y′= |