图像变形(Image Warping)
图像变形(Image Warping)
现实世界中捕获的图像具有某些缺陷,包括:
- 几何畸变(和其他光学像差)
- 噪声
- 渐晕
- 颜色不平衡
本节介绍了纠正几何变形的可用资源。
大多数计算机视觉算法对渐晕和色彩平衡不敏感。它们被设计为在噪声方面很鲁棒,但是它们倾向于依赖于理想的透视图像,也就是所谓的针孔图像,它们不会表现出失真。
以下是几何变形或扭曲图像的示例,然后是校正示例。
扭曲:
图1 IACHR大楼。信用:OAS
已更正:
几何变形
几何变形通常分为两种形式:径向变形和切向变形。
径向畸变本质上是径向对称的,并且在简单的镜头中很常见,以最小化其他光学像差,例如像散,色差,彗形像差,场曲和球面像差。复合透镜的畸变要小得多,因为它们可以同时最小化所有这些像差,但由于它们又大又贵,因此在诸如机器人技术的嵌入式应用中很少见到。可以使用单变量多项式对几何失真进行建模,并且在采集后可以通过软件轻松对其进行校正。
切向畸变不是径向对称的,尽管它相对于从投影中心辐射的线是对称的。切向畸变是由复合透镜中未对准的元件引起的,因此在嵌入式应用中发现的简单透镜中可以忽略不计。它使用双变量多项式建模,并且在软件中也易于校正。
影像投影
典型的相机和镜头有两种基本类型的投影:透视/直线/平面和鱼眼/等距/球形。透视镜头的实际最大视场(FOV)为120°,而鱼眼镜头可以获取大于180°的角度,有些甚至超过220°。
径向畸变可用于表示带有透视镜的鱼眼镜头,反之亦然-达到一定的FOV。理想的透镜与切线(或反正切)函数相关,该函数可以通过靠近投影中心的多项式很好地近似,但在更远的地方会迅速发散。最好使用最接近镜头的投影模型。根据经验,对于FOV <90°,应将透视图用作基本投影,对于FOV> 120°,应将鱼眼用作基本投影。
Isaac SDK既适用于透视镜片的径向和切向畸变校正,也适用于鱼眼镜头的径向畸变校正。
透视失真校正
几何变形被实现为径向和切向变形校正之和。Isaac SDK使用Brown模型,OpenCV也使用该模型。但是,径向和切向系数有不同的顺序。艾萨克SDK使用 {k0,k1,k2,k3,k4},其中的OpenCV使用{k0,k1,k3,k4,k2}。OpenCV可用于校准摄像机的固有参数,包括这些系数。
径向畸变校正
用以下公式校正径向变形:
哪里:
image.png切向失真校正
切向畸变用以下公式校正:
image.png鱼眼失真校正
在鱼眼畸变校正中,我们仅适应径向畸变,但使用更高阶的多项式:
image.png这也是OpenCV使用的模型。
其他相机固有参数
相机除变形以外的其他固有参数包括焦距和主点。
焦距
数码相机的焦距以像素为单位,尽管可以将其视为像素/弧度。理想透视镜的投影方程为:
image.png而理想的鱼眼镜头是:
image.png其中,r是距投影中心的距离,θ是距光轴的倾斜角。从这些方程式可以明显看出,焦距等于投影中心处的角像素密度,因此可以解释为像素/弧度。
重点(投影中心)
镜头光轴与成像平面相交的点称为投影的主要点或中心。理想情况下,它应位于获取的图像的中心,但是在商用相机中,这相差多达100个像素。
无失真输出的光学特性
变形功能是通用的,并且包括所得输出图像的参数,包括焦距,主点和方向以及图像尺寸。
输出主要点
失真校正会更改输入矩形的形状,使其弯曲成凸形或凹形。这种弯曲是相对于主点发生的,因此,最好将输出和输入主点相对于其中心保持在相同的位置,以产生对称的修剪或透明的透明胶片。
输出焦距
为了在输出端上保持与输入端相同的分辨率,它们的焦距应大致相同。Warp API具有单独的水平和垂直焦距,并且在输出中也可以保留不同的焦距。另一种选择是将两个输入焦距的几何平均值用于两个输出焦距。第三种选择是将输出焦距减小到70%,以消除在使用拜耳传感器获取彩色图像时发生的插值,从而以更少的像素产生相同的细节以增强吞吐量。
输出图像尺寸
校正畸变和改变焦距将影响投影图像的尺寸。合理的选择是使输出的图像大小,焦距和主点与输入相同。
输出方向
在单眼视觉的情况下,将输出投影定向在与输入相同的方向即可。但是,对于立体视觉,如果两个摄像机都指向相同的方向并具有相同的焦距,则可以使用明显更快且更鲁棒的算法。旋转矩阵或一组欧拉角都可以指定旋转校正。
艾萨克无失真码
艾萨克(Isaac)不失真小码将获取彩色摄像机原型,并生成另一个彩色摄像机原型。这些原型中的每一个都包括相机固有参数和图像。输入和输出固有参数之间的唯一区别是输出失真为0。此外,如果源图像是鱼眼,则将其转换为透视图像。