OpenCV相机标定与3D重建(2)鱼眼相机模型

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

鱼眼相机是一种具有非常宽视野的相机,通常会产生强烈的径向畸变。鱼眼相机模型旨在捕捉这种畸变,以便能够准确地处理和校正图像。鱼眼相机模型通常使用多项式函数来描述径向畸变。

定义:设P是世界参考系中的一个3D点,其坐标为X(存储在矩阵X中)。点P在相机参考系中的坐标向量为:
X c = R X + T X_c = R X + T Xc=RX+T

其中R是对应于旋转向量ω的旋转矩阵: R = r o d r i g u e s ( ω ) R=rodrigues(ω) R=rodrigues(ω);称 x , y , z x,y,z x,y,z 为 X c Xc Xc的三个坐标:
x = X c 1 y = X c 2 z = X c 3 x = X_{c1} \\ y = X_{c2} \\ z = X_{c3} x=Xc1y=Xc2z=Xc3

针孔投影坐标P为a;b,其中
a = x z 和 b = y z a = \frac{x}{z} \quad \text{和} \quad b = \frac{y}{z} a=zx和b=zy
r 2 = a 2 + b 2 和 θ = arctan ⁡ ( r ) r^2 = a^2 + b^2 \quad \text{和} \quad \theta = \arctan(r) r2=a2+b2和θ=arctan(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′;y′ x′;y′,其中
x ′ = ( θ d r ) a 和 y ′ = ( θ d r ) b x' = \left(\frac{\theta_d}{r}\right) a \quad \text{和} \quad y' = \left(\frac{\theta_d}{r}\right) b x′=(rθd)a和y′=(rθd)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
总结

通用相机模型 139包括透视投影,但没有畸变校正。

相关推荐
学术小李4 小时前
3D Gaussian Splatting中梯度反传求偏导的推导
3d
PHOSKEY4 小时前
具身机器人行星滚柱丝杠核心尺寸测量与光子精密QM系列闪测仪应用
数码相机
蓝鲨硬科技5 小时前
任利锋的“造物”野心,让AI 3D进入“可制造”时代
人工智能·3d·制造
就是个名称17 小时前
cesium 地球地固转地惯
数码相机
sali-tec1 天前
C# 基于OpenCv的视觉工作流-章98-频域滤波
图像处理·人工智能·opencv·计算机视觉
AttosTek1 天前
-80℃深度制冷短波红外相机选型指南
数码相机
落苜蓿蓝1 天前
多张覆盖视场的平面棋盘图片; 、对每张图片用 OpenCV 的 findChessboardCorners 检测内角点并用 corn ...
数码相机·opencv·平面
明如正午1 天前
【python】Python + OpenCV 实现视频关键帧提取与智能去重
python·opencv·音视频
取个名字太难了~1 天前
最新手机外接相机实时传输 + 动态美颜完整项目源码
android·数码相机·智能手机·美颜·相机连接·demu
cxoptics1 天前
3D电影用的偏振眼镜原理是什么?
3d