ZR300鱼眼镜头使用

ZR300鱼眼镜头使用

ZR300鱼眼镜头模型

在博客Ubuntu 14.04 ZR300驱动安装中,通过example的代码读取得到的相机模型为FTHETA,但是经过大量的搜索,都没找到该模型对应的公式。最后,在librealsense的github的issue里面找到了官方的解释,该模型就是PTAM中使用的ATAN模型。(ROS驱动给出的/camera/fisheye/camera_info中给出的是plomb bob相机模型,这个应该是不对的)
ZR300鱼眼镜头使用
ATAN模型中认为成像点m和光轴CZ的距离cm与直线CM和光轴Cz的角度近似成正比(如下图所示)。该模型只有一个参数,即理想鱼眼相机的视场角ω,因此也将该模型叫做FOV模型。该模型的畸变函数为:

rd=1ωarctan(2rutanω2)

以及它的反函数
ru=tan(rdω)2tanω2


ZR300鱼眼镜头使用

对于图像中的某个有畸变的像素点xy,该点到相机中心的坐标(单位为mm)为

{X=(xcx)/fxY=(ycy)/fy

该点(X,Y)到光轴的距离为rd=X2+Y2。根据公式ru=tan(rdω)2tanω2得到去畸变后的距离ru,从而未畸变的坐标(Xu,Yu)(单位为mm)为
{Xu=ruXrdYu=ruYrd

从而去畸变后的像素坐标(xu,yu)
{xu=Xufx+cxyu=Yufy+cy

实验结果

基于上面的分析,我动手做了下实验,发现该标定结果还可以,原始图像如下所示
ZR300鱼眼镜头使用
使用上面的原理编写代码,标定结果如下图
ZR300鱼眼镜头使用
上面图像中的纹理是由于没有对图像进行插值造成的,但是可以看到里面的直线还是很直的。