聚焦型光场相机可以看作是主透镜将物面成了一个放大或者缩小的虚像,然后每个微透镜阵列对这个经过放大或者缩小的虚像进行二次成像后投影在了ccd平面,其中二次成像的过程可以比拟为一个虚拟阵列相机,利用MLA和主透镜的相关参数就可以以立体视觉的原理实现对像面点的深度估计。
原理介绍:
下图介绍了两个不同的微透镜阵列对同一个虚拟像面的点进行成像的原理图
其中 P 为物点的一次成像点,P'' 为 P 点在微透镜面的投影点,B 为微透镜阵列到CCD面间的距离,D 为微透镜直径,V 为 P 点到微透镜镜面的距离。Δx0为P在微透镜下的二次成像点到微透镜中心的距离。O 为微透镜的中心点。
其中 OP'' 为一次成像点 P 在微透镜面的投影点到微透镜中心 O 的距离,v = V/B 为点 P 的虚深度,所以可以得到P点的虚深度数值:
总的来讲对应的深度估计流程如下:
1. 计算所有MLA的中心点坐标
2. 寻找待测深度的点并找到所有MLA子图像中与之匹配的像点,为每一个像点构建二次成像点的数据集
3. 确定物点在MLA阵列面的投影坐标 P'',计算得到Δx0
4. 根据上图的虚深度计算公式确定物体的虚深度,由于MLA和CCD的距离已知,所以很方便的可以得到对应的像距,根据主透镜的高斯成像公式进而得到主透镜的物距。
代码及讲解
接下来将简单的介绍一种可以实现深度估计的算法以及对应的算法测量效果。
1. 计算得到所有的MLA中心坐标(此处仅提供一种方式,霍夫变换圆形中心检测)
后续正在更新。。。