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包括透视投影,但没有畸变校正。

相关推荐
林恒smileZAZ1 天前
Three.js实现更真实的3D地球[特殊字符]动态昼夜交替
开发语言·javascript·3d
三维频道1 天前
不止于精度:汽车精密锻铸件质检的“数据降维”与方案重构
3d·重构·汽车·工业数字化·蓝光三维扫描仪·汽车供应链·汽车智能制造
yeflx1 天前
正射模块-odm_orthophoto
3d
Hali_Botebie1 天前
【3D 生成技术】3D Gaussian Splatting 的基础理解
3d
梵高的向日葵�2391 天前
OpenCV+MySQL+Qt构建智能视觉系统(msvc)
qt·opencv·mysql
RoboWizard1 天前
移动固态硬盘摔了一下后无法识别,数据还能恢复吗?
大数据·人工智能·数码相机·智能手机·性能优化·无人机
3DVisionary1 天前
【深度实测】从三坐标到全场扫描:汽车精密锻铸件 3D 质检的数字化进阶
3d·汽车·质量检测·精密制造·三维扫描仪·汽车工业·xtop3d
GIS数据转换器2 天前
基于AI+无人机的城市巡检系统
人工智能·3d·无人机·知识图谱·旅游
ccut 第一混2 天前
python opencv 计算 色坐标(CIE 1931 )
opencv·计算机视觉
CG_MAGIC2 天前
零基础学 UV:简单解决贴图拉伸
3d·贴图·uv·效果图·建模教程·渲云渲染