从普通相机模型到鱼眼畸变模型--标定与去畸变

2024-06-18 14:58

本文主要是介绍从普通相机模型到鱼眼畸变模型--标定与去畸变,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 普通相机模型
    • 普通成像模型
      • 针孔模型与透镜组:
      • 径向畸变
      • 切向畸变
      • 现代手机摄像头的基本组成
      • 内参矩阵
    • 畸变模型
    • 张氏标定法
  • 鱼眼模型
    • 透镜组
    • r和f的进一步说明
    • 等距投影模型(OpenCV::fisheye)
    • 鱼眼图像去畸变过程

普通相机模型

普通成像模型

普通相机模型一般通过pin-hole model+径向畸变+切向畸变进行建。

针孔模型与透镜组:

针孔模型即小孔成像模型,近代的摄影术和现代照相机技术即起源于此。早在2400多年前左右的墨子和亚里士多德就发现了小孔成像原理,见图1,中世纪的画家们开始把这种小孔成像的原理应用在了绘画当中见图2。
在这里插入图片描述
图2

但是真实的针孔如果设计的过大,会导致成像重影,过小的话不能为快速曝光收集足够的光线。因此人们在小孔成像的基础上对照相暗盒进行改进,在暗盒上加装了固定焦距的镜头来收集更多的光线,这其实也是现代摄像机的雏形,在人们未发现如何将影像固定在底片的技术之前,画师们使用这种设备进行辅助绘画,如图3所示。
图 2 左:暗盒设备;右:暗盒内的景象
图3
理论上说是可能定义一种透镜而不引入任何畸变的,然而在制作工艺上,制作一个“球形”透镜比制作一个数学上理想的透镜更容易,所以实际中透镜的引入其代价就是带来图像的畸变。主要分为两类:

径向畸变

径向畸变主要来源于透镜的形状,沿着透镜半径方向产生畸变,原因是光线在远离透镜中心的地方比靠近中心的地方更加弯曲,主要包括桶形畸变和枕形畸变两种。

切向畸变

来自于整个摄像机的组装过程,主要由于透镜本身与感光芯片平面不平行而产生的。

现代手机摄像头的基本组成

该部分主要结合现代手机摄像头的基本原理进一步说明透镜组和焦距等概念。
在这里插入图片描述
(1) 镜座:支撑整个镜头模组
(2) 透镜组:凸透镜+凹透镜组成的复杂系统,作用是先汇聚光线,再发散光线,使得光线均匀分布在感光芯片上;另外凸透镜和凹透镜的距离确定了透镜组的焦距:
a) 短焦镜头:广角镜头,看到的范围更广;
b) 长焦镜头:望远镜头,看到的范围更窄,更远。
(3) 光圈:控制进光量,F值=焦距/光圈开口直径,如f=50mm,d=30mm,则光圈表示为F1.8或F/1.8,光圈越大对暗处图像的捕捉能力越强,同时光圈越大,物体景深效果越近。
(4) 对焦马达:当物体在远景和近景的时候,控制镜头组与感光芯片的距离,保持感光芯片上始终可以获得清晰的成像效果。

内参矩阵

不考虑畸变情况下点投影过程:其中相机物理坐标系到成像平面(感光芯片)为透视投影,成像平面到像素坐标系为一个仿射变换(考虑到感光版的横纵向不完全正交的影响;如果确定为90度时,退化为刚体变换;放射变换和刚体变换的区别在于R部分是否为正交矩阵,若是正交矩阵则为刚体变换,若是一般旋转矩阵则表示一般线性变换,线性变换+平移=放射变换)。
在这里插入图片描述
其中,f为焦距,单位为m;dX,dY分别为在X、Y方向上的一个像素在相机感光版上的物理长度(即一个像素在感光版上是多少毫米),因此f/dX,f/dY单位为像素,这也是OpenCV库标定函数的内参输出结果;dX,dY,f均不能在标定过程中直接测量(可以查阅camera设计手册得到设计值),只有组合量f/dX,f/dY可被直接标定出来[OpenCV白皮书]。θ角度表示感光板的横边和纵边之间的角度(90度表示无误差)。
OpenCV中内参矩阵中f/dX,f/dY作为整体被标定出来,那么OpenCV中标定得到的内参矩阵的本质特征是什么呢。对公式4-1中内参数矩阵变形,有:
在这里插入图片描述

(u,v)为像素坐标,(Xc/Zc, Yc/Zc)是将相机坐标系下的坐标进行归一化,即将3D空间中的点投影到Zc=1的2D平面上,同时也等价于f=1时的感光平面上的坐标,从另一个角度看,内参矩阵也反映了图像像素平面和成像归一化平面之间的单应性关系,该原理在普通摄像头和鱼眼摄像头去畸变的过程中会经常出现。

畸变模型

径向畸变模型
在这里插入图片描述
切向畸变模型
在这里插入图片描述
其中 (x,y)是理想的无畸变的归一化图像坐标(zc=1时对应的像平面);+hat 为畸变后的归一化图像坐标;r为图像成像点到像平面中心点的距离: r2=x2+y^2,xy分别为像平面下的坐标。二者效果如图所示。
在这里插入图片描述
在这里插入图片描述
影响较大的为径向畸变,张正友标定法仅仅考虑了该畸变。对于该畸变,光学中心畸变为0,随着向边缘移动,畸变越来越严重,可以用r=0附近泰勒级数展开的前几项定量描述(即在r=0附近使用多项式表示x与x hat比例这个复杂函数),因为函数必须是关于r径向对称,所以只使用泰勒展开的偶次幂项。原因如下图所示。
在这里插入图片描述图 x=1时,横轴为r,纵轴为x_hat。在这里插入图片描述
随着向图像边缘移动,x_hat同x偏离越来越大
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

张氏标定法

张正友标定法,相比较于使用昂贵设备(如两个或者三个正交平面)的经典技术相比,供了一种相对较为灵活方面的相机校准方法。只需要使用平面标靶物即可完成相机内参标定、畸变系数标定、标靶物与相机坐标系的外参估计三个任务。
张正友标定法主要应用在普通相机(FOV<120度,相比较鱼眼镜头无明显畸变)标定。基本思想是:首先假设畸变不存在,进行内参矩阵和外参矩阵求解;然后假设内参矩阵和外参矩阵无误差,根据点的投影结果和实际检测结果建立约束关系求解畸变参数,至此求解到内参数、畸变和外参数的closed-form solution;最后根据内参、畸变、外参的初始值,建立重投影误差优化目标,使用L-M方法迭代优化。
未完待续。。

鱼眼模型

基于针孔相机模型的镜头存在一个缺陷,光线始终沿直线传播使得镜头难以捕捉位于边缘的物体。如图4.2-1左边所示,对于同样长度的红色箭头,越靠近边缘的经过镜头成像后就变得越长,而实际上我们底片的尺寸是有限的,所以极端接近边缘的物体普通的镜头就无法成像记录了。然而当人们在水中向上看时,能一眼看到整个水面上的半球形空间,整个空间的影像都背扭曲、压缩到了一个半顶角约为48°的锥形内(由光线空气-水中的折射角度确定),如图4.2-2所示。在这个锥形空间内部,是来自水面上的空间的光线,在这个锥形外部,是来自水面下景色的反射。也就是说,在水中向上看时,一个圈之外,只能看到水底的景色;所有水面上的景色,都被压缩在一个圈内。鱼眼镜头也是人们根据这种特性发明的,鱼眼镜头的前镜片直径很短,且呈抛物状向前部凸出,与鱼的眼睛十分相似。因此鱼眼镜头的名称不应当理解为鱼眼看到的世界景象,而是因为外形和鱼眼相似而得名,同时鱼眼图片和人眼在水里仰视天空看到的景象比较一致,网上用一些“鱼在水中观察水面事物”的图片来说明鱼眼成像,笔者认为是不准确的。
在这里插入图片描述
在这里插入图片描述
在水里仰视看到的景象

透镜组

鱼眼镜头一般是由十几个不同的透镜组合而成的,在成像的过程中,入射光线经过不同程度的折射,投影到尺寸有限的成像平面上,使得鱼眼镜头与普通镜头相比起来拥有了更大的视野范围。
在这里插入图片描述
为了将尽可能大的场景投影到有限的图像平面内,鱼眼相机会按照一定的投影函数来设计。根据投影函数的不同,鱼眼相机的设计模型大致能被分为五种:透视投影(即针孔相机模型)、等积投影、等距投影、体视投影、正交投影[参考论文]。图4.2-4左图为各种投影模型的像点r同入射角度的关系,右图为等距投影示意图。
在这里插入图片描述
在这里插入图片描述左:对于(1)透视投影,当入射角接近90度时,像点r的值接近于+∞;2345的投影方式可保证r在一定范围内,在感光芯片制作上也是合理的

右图描述了鱼眼镜头成像和小孔成像的区别。O1XcYcZc为相机坐标系,O2-xy为像平面坐标系。对于现实中的一点P,入射角度为θ,如果按照针孔模型,则成像点为p^’,但是对于鱼眼相机,入射光线PO1经过镜头后会发生折射,因此P的成像点为p。

r和f的进一步说明

图2-4中的图取自论文,是一种通用描述,r和f的含义取决于所分析的投影平面是哪个,按照前述内参矩阵的说明,当投影平面为f=1时的归一化平面时,内参矩阵可直接建立图片像素和投影平面坐标的关系,因此,下文分析中,均设f=1,这与内参矩阵的含义是自洽的。
鱼眼相机标定中使用较多的是等距投影模型(OpenCV中使用的也是),下面以等距投影模型为例分析投影及去畸变过程。

等距投影模型(OpenCV::fisheye)

等距投影模型和去畸变算法过程,参考了很多博客发现很多都是错误的,没有讲清楚θ_d和θ角度的关系,成像平面和像素平面的关系以及推导过程中焦距f如何处理,最终笔者参考论文[][]和OpenCV去畸变的源码,整理如下。

在这里插入图片描述

在这里插入图片描述

鱼眼图像去畸变过程

去畸变过程为已知畸变图的像素坐标,反求无畸变(假设透视投影)情况下的物体点像素坐标, 基本思想为根据畸变像素点归一化平面成像点rdθ_dθra,b至此得到了无畸变情况下归一化平面像点坐标,根据内参矩阵的单应性关系映射至像素平面即完成去畸变图像的求解。
去畸变核心为已知θ_d求θ,是一个一元高次方程求解问题,常用二分法、不动点迭代、牛顿迭代法,本文不再详细介绍。图中蓝色部分为去畸变过程。源码参考OpenCV xx.cpp
在这里插入图片描述

这篇关于从普通相机模型到鱼眼畸变模型--标定与去畸变的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072314

相关文章

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU