ZR300鱼眼镜头使用

ZR300鱼眼镜头使用

ZR300鱼眼镜头模型

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

rd=1ωarctan(2rutanω2) r d = 1 ω arctan ⁡ ( 2 r u tan ⁡ ω 2 )

以及它的反函数
ru=tan(rdω)2tanω2 r u = tan ⁡ ( r d ω ) 2 tan ⁡ ω 2


ZR300鱼眼镜头使用_第2张图片

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

{X=(xcx)/fxY=(ycy)/fy { X = ( x − c x ) / f x Y = ( y − c y ) / f y

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

从而去畸变后的像素坐标 (xu,yu) ( x u , y u )
{xu=Xufx+cxyu=Yufy+cy { x u = X u f x + c x y u = Y u f y + c y

实验结果

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

你可能感兴趣的:(ZR300鱼眼镜头使用)