基于铅垂线的相机畸变标定算法
相机的径向畸变有两种方法来做标定,一种是标定板,一种是铅垂线法,本文主要是介绍关于铅垂线法来标定相机畸变。铅锤线法是指将相机画面中为弯曲的线段但是真实世界却是直线的线段通过一定的方法估计畸变方程的参数从而实现"拉"直。本文主要分为两小结,第一小结为介绍相机畸变产生的原因和畸变矫正模型,第二小结为基于铅垂线法相机畸变矫正的相关论文导读。
1. 相机畸变的原因和畸变矫正模型
相机畸变
相机的径向畸变是指光学系统对物体所成的像相对于物体本身而言是失真的,是光学透镜的固有特性,其原因是因为透镜边缘部分和中心部分的放大倍率不一致导致的。
径向畸变
许多广角镜头又很明显的径向畸变,对此不可能对他们做高精确度的图像重建。
摄像头的径向畸变(radial distortion) 分为三种类型: 桶形(barrel)、枕形(pincushion)以及鱼眼(fisheye)。
它导致一个圆形的畸变。
偏心畸变
偏心畸变(decentering distortion) 是指相机镜头中心轴与成像平面不共线,导致图像中心位置的偏移,它通常出现在广角镜头中,因为广角镜头具有更大的视场角,需要更强的镜头弯曲来实现。
切向畸变
切向畸变(tangential distortion) 是指相机镜头和相机成像平面不完全平行,这回导致相机镜头的中心投影位置发生偏移,进而使得图像中的物体在图像边缘的位置发生形变产生切向畸变,这在网络相机上比较常见。
它会导致让图像径向畸变的圆形畸变转为椭圆型的畸变
畸变矫正模型
径向畸变矫正模型
解决相机径向畸变的方式有两种模型,一种是多项式乘法模型,一种是多项式除法模型。它们实现的原理就是以原画面中心点为圆心的不同半径上的圆上的像素点重新映射到新的一幅图片上不同的位置中。由于鱼眼的变化幅度很大,通常鱼眼相机的畸变矫正是单独采用另外的方式处理的。
多项式乘法模型
多项式除法模型
其中:
上式中表示的是原图片的像素位置,表示的是畸变矫正吼的像素点,表示的是点到原图片中心点的距离。经过验证可知除法模型的有事在于用更小的阶数就能达到更高阶数多项式模型的矫正效果。
切向畸变矫正模型
如果相机有切向畸变的话则会添加一个切向畸变矫正模型。仅作了解,本文忽视这个畸变。
2. 畸变矫正文献摘要
本节内容前面3篇会介绍乘法模型在相机畸变矫正中的应用,后面2篇主要介绍的是除法模型在相机畸变的应用。这些畸变矫正算法的共性都是分为三个部分,第一部分是直线提取;第二部分是构造损失函数;第三部分是进行参数求解。有些文献的直线提取是手工提取,有的是用一些算法来取得弯曲的直线,参数求解部分以非线性解法较为流行。
2.1 Differential Methods for Nonmetric Calibration of Camera Lens Distortion
Moumen T. Ahmed and Aly A. Farag/University of Louisville/CVPR/2000
Motivation
摄像机的镜头畸变在中广角镜头上很明显,不同于之前的非度量(nonmetric)方法,本文针对畸变图片中直线的分析提出一种快速的封闭解(close-form solution)来得到畸变的参数。
Method
A. 曲线拉直
假设直线是没有畸变图片上的直线,其上面的点为,他们满足以下的方程
其中都是的常量,并且的系数为。在畸变图片中也都在直线上,因此上面的方程可以改写为:
对上式求导可得
又斜率要等于正切值,联立可得在畸变图片中,直线在点的斜率:
令是畸变图像曲线上的点,他们在矫正后得图像应属于同一直线,所以求解每个点间斜率得最小误差来求得畸变方程的参数
B. 畸变标定
上面的损失方程可以使用非线性(non-linear)的解法去求最终的结果来得到更准确的结果,但是它会花费更长的时间以及如果遇到一个比较差的初始值可能会得到错误的结果或是局部最优。封闭解(closed-form)会比非线性解更精确且速度更快。
a. 求根解法
当畸变矫正方程的未知变量大于2的时候没有解析解;当中只有一个K1和P1的未知数的时候有封闭解。
在求解过程中一般将点分割成个groups,计算每个group的畸变系数,然后针对这一系列的根然后寻找到一个根使得所有根能最小化
b. 线性解法
当的时候封闭解,形如,是一个的矩阵,是曲线数量,则是每段线段用来计算的点数量。是未知的畸变参数未知参数的数量。通过奇异矩阵分解就可以得到特征根。
c. 畸变中心的不确定性
线性解需要确定好畸变中心,所以作者提出两个引理,引理的具体证明在附录上
引理1: 畸变中心在图像中心处偏移了等于在式子中添加了中心偏移的式子和
引理2:在镜头偏心畸变的影响下,偏移了对系数的影响不大。
Experiments
实验的图片大小为320x242。
由上可知,非线性的解法得到的参数会更加接近合成图片的畸变参数。
在真实图片中,可见是都把弯曲的线段拉直了。
Conclusion
本篇文章提出两种标定相机畸变参数的方法。在古早时代,非线性解在SGI-02的机器上需要运行3.2s但是封闭解只需要0.05s,但是这点算力在今天的机器上不差那么点。
2.2 Nonmetric Lens Distortion Calibration: Closed-form Solutions, Robust Estimation and Model Selection
Moumen T. Ahmed and Aly A. Farag/University of Louisville/ICCV/2003
Motivate
之前的相机标定方法需要使用者参与标定的过程,本文提出一种基于最小中值二乘法(the-least-median-of-squares (LMedS) estimator)的自动标定方法,基于此方法有三个优点:
(1). 通过LMedS的方法,不需要人工介入选取真实世界是直线但是畸变图片上曲线的线段。
(2). 通过线性的方法求得closed-form solution后作为非线性解的初始值,能更好解决畸变参数卡在局部最优值的问题。
(3). 通过几何推断来选取较优的模型。
Method
参数优化
本文的参数优化是[1]中的非线性解和线性解的结合,具体可参考[1]。
边缘点的筛选
要实现自动标定需要提取图片上的曲线,但是提取图片上的曲线会遇到两个问题,一、提取的曲线在现实世界不是直线;二、一条长曲线断成多截的线段导致有用信息偏少。基于上述的原因本文通过最小中值平方法来去除错误的外点。
算法流程
(1). 提取边缘线段,连成直线并用最小中值平方法过滤点。
(2). 使用bucketing techniques来将图片分成b*b的区域,在每个bucket区域采样一半的点。
(3). 多次采样计算每次的畸变模型参数。
(4). 通过Akaike’s AIC 和 Rissanen’s MDL方法来选取其中比较好的畸变矫正模型。
Experiments
不同噪声情况下下算法矫正后几何推断的指标。
论文示例图线段提取算法以及矫正的效果都看着还不错,c图是封闭解的优化结果,d图是与非线性解的结果。
Conclusion
对曲线拉直的畸变矫正方法没什么改进,只是基于作者在2000的ICCV文章上增加了一些提取直线和增加模型矫正效果的评判指标,意义不是很大。
2.3 Line-Based Correction of Radial Lens Distortion
B. PRESCOTT AND G. F. MCLEAN/University of Victoria/GRAPHICAL MODELS AND IMAGE PROCESSING/1995
Motivation
在此之前对相机的标定需要使用标定板来标定许多参数(内参、外参、畸变参数)来解决径向畸变的问题。作者提出了一种不需要标定板就可以做好畸变矫正的方法。
相机的标定可以分为三个部分,1. 外参(相机的朝向、位置等);2. 内参(焦距等);3. 畸变参数(径向畸变和偏心畸变),本文在不适用标定板的情况下只对相机的畸变参数进行标定。
Method
直线提取算法
作者使用了[4]中的Line Support Region(LSR)直线提取算法,该算法对局部梯度方向的边缘进行了连接,从而得到真实世界的直线在畸变图片中为曲线的线段。
参数优化与更新
令为真实世界中的直线上的点,满足
令直线提取算法提取的第条线段,相应的点经过畸变矫正后为满足
对于算法提取的直线都能满足上面的方程时,此时的畸变参数就是最优解
作者将的初始值都设置为0,设置为图像的中心点。
Experiments
由于畸变矫正的评价指标不明,作者使用了合成和真是的图片来测。为了体现算法的有效性,作者定义了一个曲面指标,计算原始图片上像素点与欧氏距离。
以下是作者合成的图片与经过算法畸变矫正后的图片
未矫正和矫正后的指标可视化的结果如下:
由上可知,经过矫正后的图片在改指标上有很大的改进。
Conclusion
本文的实验图片偏简单一些,实验的图片也比较少。由于代码没开源,具体的计算细节无从得知。
2.4 Automatic Lens Distortion Correction Using One-Parameter Division Models
Miguel Alem´an-Flores1/Universidad de Las Palmas de Gran Canaria/IPOL/2013 17页好多
Introduction
作者使用了添加了畸变参数的霍夫变换方法来更好抽取直线,然后解一项式的除法模型参数来做畸变矫正。
a. 使用Canny来做边缘检测
b. 通过使用改进的霍夫变换方法来得到畸变的初始值以及投票数最多的直线。
c. 畸变参数优化
d. 图像畸变矫正
Method
A. 使用canny算法获取边缘点以及边缘点的角度
就是原本的canny算法改了一些超参。
B. 改进式霍夫变换(Improved Hough Transform)
a. 畸变参数变换为分辨率无关
畸变方程中的的值和相关,以至于当图片的大小变化的时候的值也要跟着变换。
作者提出一个新的参数,其中为畸变校正的距离中心点最远端的值,是畸变图像中最远端的值。因此,将上式子带入到畸变方程中,可得:
对畸变方程求导倒数,由于随着的增加也会增加,可知畸变方程是一个单调递增的函数。
因此:
b. 3D霍夫变换
(1). 对于上式中得,作者选取一个间隔其中 对于区间内得所有值可表示为:
因此作者将霍夫变换的空间变换成三维空间。
(2). 针对不同的值作者会重新计算边缘点的位置以及方向。
(3). 对于变换后边缘点要与其相符的直线角度小于度。
(4). 对于所有满足c步条件的点,求得平均距离,剔除与与绝对值相差2的点,设置投票的权重设置为
最终p与投票分数的关系如图
有图可知,p的值比较小的时候能有比较多的点在直线上。
C. 畸变参数优化
a. 作者移除小于5个点的直线,并且选取最长的条线段。因为小直线不能提供比较有用的相关信息,并且更大的直线更有可能在真实世界中是直线,选取的直线数量是30条。
b. 对于 和集合中的直线的点和对应的经过矫正的点,每条直线的损失函数如下
对于所有的直线得到的损失方程为:
其中p的初始值为p0,求导更新优化。
Experiments
作者演示了两张图片,一张是标定板,一张是建筑。由下图可知,作者的直线提取算法还是挺不错的效果,图上的指向基本上都被拉直了。
Conclusion
比较遗憾的是也是没有一个指标来表明该算法的效果以及和同类型的算法进行对比。
2.5 An Iterative Optimization Algorithm for Lens Distortion Correction Using Two-Parameter Models
Miguel Alem´an-Flores1/Universidad de Las Palmas de Gran Canaria/IPOL/2016 39页好多
Introduction
本文是[5]的作者出的改进版。作者在本文的工作中做了以下的改进:
a. 增加了求解的畸变模型参数。优化了[5]中的基于除法模型的一个参数的自动畸变矫正算法为两个畸变参数和畸变中心点。
b. 对canny算法提出来的边缘点做了筛选,去除了一部分非直线的边缘点。
c. 作者对改进式霍夫变换提取出来的直线做了后处理,让一些小线段可以连接起来。
d. 作者通过增加一些边缘点的策略多次迭代求解最优参数。
e. 图像畸变矫正
Method
A. 使用Canny算法做边缘检测
使用canny算法改些超参数得到边缘点。对提取得边缘点做进一步处理来尽量去除非直线的边缘点。
作者通过定义一个的指标来衡量边缘点与其周边相邻的边缘点方向上差异,两点间角度差异越大的值越小
首先移除小于一定阈值的点,之后为了加速后面的步骤的运算量,作者去除邻域中最小的点来减少点的数量。
(插入图片)
B. 3D霍夫变换
前一部分和[5]的步骤相同。作者在这片文章中增加一个后处理的步骤。闭合相邻的小线段以及最后去除孤立很小的线段。这部分繁琐又复杂,具体细节得看看代码。
C. 迭代式参数更新
作者将第一个参数的初始值设置为霍夫变换得到得最佳参数。
a. 参数更新
令为要优化的参数,为直线的数量,表示为第条直线的点,表示为经过畸变矫正模型后的的第条线,则要优化的目标(能量)函数为:
在处的泰勒展开式为:
因为要最小值这个损失函数,所以前面泰勒展开式部分要等于0
通过Gauss method可求得
其中是为了保证随着参数的优化减小(学习率的作用).最终和与的关系如下
完整的参数求解过程详见作者的另外一篇论文[8]
b. 迭代
在参数优化的过程中,作者还将霍夫变换后处理中剔除的点经过新参数校验后加入计算的点集中,这个做法可以检测出更多的直线以及直线上又更多的点在畸变很严重的时候又很好的效果。
Expirements
由于没有一个比较指标,实验表明在图片上,两个参数的除法模型(Div2pIO)比一个参数的除法模型(Div1p)掉落在直线上的点会更多。作者的实验图片,相对于之前的那一篇使用了更大的焦距使得图片形变更大,在d图上,可以知道,提取的直线也基本上被拉直了。
Conclusion
这篇文章在判断点是否在直线上下了很大的功夫。作者的实验也表明了,同样参数的除法模型畸变纠正的效果比乘法模型好。
参考文献
[1] Differential Methods for Nonmetric Calibration of Camera Lens Distortion
[2] Nonmetric Lens Distortion Calibration: Closed-form Solutions, Robust Estimation and Model Selection
[3] Line-Based Correction of Radial Lens Distortion
[4] Extracting straight lines
[5] Automatic Lens Distortion Correction Using One-Parameter Division Models
[6] An Iterative Optimization Algorithm for Lens Distortion Correction Using Two-Parameter Models
[7] Computer Vision: Algorithms and Applications 2nd Edition
[8] Invertibility and Estimation of Two-Parameter Polynomial and Division Lens Distortion Models