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

相关推荐
hllqkbb1 小时前
Ubuntu22.04轻松安装Qt与OpenCV库
开发语言·qt·opencv
wuicer2 小时前
ZED 2i相机调试
数码相机
二川bro9 小时前
第十篇:3D模型性能优化:从入门到实践
3d·性能优化
柠檬甜不甜呀16 小时前
工业相机镜头选型
数码相机
坐在地上想成仙20 小时前
计算机视觉(4)-相机基础知识恶补
人工智能·数码相机·计算机视觉
新启航光学频率梳1 天前
【新启航】飞机起落架外筒深孔型腔的测量方法 - 激光频率梳 3D 轮廓检测
科技·3d·制造
向宇it1 天前
【unity实战】在Unity中实现不规则模型的网格建造系统(附项目源码)
游戏·3d·unity·c#·游戏引擎
%KT%1 天前
基于AutoDL平台的3D_Gaussian_Splatting初体验
3d
心一信息1 天前
修复图像、视频和3D场景的AI工具–Inpaint Anything
人工智能·3d
top_designer1 天前
游戏美术总监级工作流:Firefly AI赋能概念设计,从2D到3D重塑开发管线!
人工智能·游戏·3d·游戏开发·设计师·游戏美术·概念设计