【CV】鱼眼相机模型与畸变矫正(Fisheye Camera Model & Calibration)

文章目录

  • 鱼眼镜头
  • 鱼眼名称的由来
  • 鱼眼镜头的实现
  • 鱼眼相机的成像模型
  • 鱼眼图像的矫正
  • Ref

鱼眼镜头

鱼眼镜头长这样
【CV】鱼眼相机模型与畸变矫正(Fisheye Camera Model & Calibration)_第1张图片

#鱼眼镜头成像样张
拍出来的照片长这样
【CV】鱼眼相机模型与畸变矫正(Fisheye Camera Model & Calibration)_第2张图片

鱼眼名称的由来

之所以叫鱼眼,是因为仿生的鱼眼

【CV】鱼眼相机模型与畸变矫正(Fisheye Camera Model & Calibration)_第3张图片

鱼眼镜头的实现

实际的实现,是分层的

【CV】鱼眼相机模型与畸变矫正(Fisheye Camera Model & Calibration)_第4张图片

鱼眼相机的成像模型

成像模型是这样的

【CV】鱼眼相机模型与畸变矫正(Fisheye Camera Model & Calibration)_第5张图片

【CV】鱼眼相机模型与畸变矫正(Fisheye Camera Model & Calibration)_第6张图片

正向成像过程基本分三步:

  1. 针孔成像,得到理想坐标
  2. 鱼眼畸变
  3. 调整图像坐标

3D世界中一点 P, 坐标为 X,首先针孔投影到相平面坐标是[a; b]: s [ a   b   1 ] T = R X + T s[a \, b \, 1]^T = RX + T s[ab1]T=RX+T, 且有 r 2 = a 2 + b 2 θ = a t a n ( r ) r^2 = a^2 + b^2 \\ \theta = atan(r) r2=a2+b2θ=atan(r)

之后施加鱼眼畸变 θ d = θ ( 1 + k 1 θ 2 + k 2 θ 4 + k 3 θ 6 + k 4 θ 8 ) \theta_d = \theta (1 + k_1 \theta^2 + k_2 \theta^4 + k_3 \theta^6 + k_4 \theta^8) θd=θ(1+k1θ2+k2θ4+k3θ6+k4θ8)
畸变后坐标为[x’; y’],满足 x ′ = ( θ d / r ) a y ′ = ( θ d / r ) b x' = (\theta_d / r) a \\ y' = (\theta_d / r) b x=(θd/r)ay=(θd/r)b

最后调整到像素坐标系[u; v] u = f x ( x ′ + α y ′ ) + c x v = f y y ′ + c y u = f_x (x' + \alpha y') + c_x \\ v = f_y y' + c_y u=fx(x+αy)+cxv=fyy+cy

鱼眼图像的矫正

【CV】鱼眼相机模型与畸变矫正(Fisheye Camera Model & Calibration)_第7张图片

Ref

  • 鱼眼镜头的发展概况及应用
  • 基于鱼眼镜头的全方位视觉参数标定与畸变矫正
  • Fisheye Calibration Basics – MATLAB
  • Fisheye camera model-OpenCV
  • 鱼眼镜头的选型

你可能感兴趣的:(CV)