matlab怎么转换广角照片,广角相机非规则畸变全域校正方法与流程

7e884dbd33fe1623ff93aee7019b59ec.gif

本发明属于视觉测量领域,涉及广角相机非规则畸变全域校正方法。

背景技术:

随着计算机行业和芯片行业的飞速发展和不断更新,智能驾驶、智能监控等技术不断成熟。相机的作用和应用有了很大的发展,相机不仅仅是获取图像,我们希望通过计算机处理所得的图片,并从中提取需要的信息,以完成后续的计算和应用。我们知道三维世界中的点在二维图像上存在唯一的对应点,为了更准确的得到图像中的信息,我们需要建立相机成像模型,这些模型的参数就是相机参数,求解这些相机参数的过程称为相机的标定。依据相机焦距的长短可以将相机镜头分为三类,长焦镜头、标准镜头和广角镜头。长焦镜头可以拍摄很远的目标,远处景物如同在眼前一样,但拍摄视角比较小,不便拍摄近处景物。标准镜头是日常生活中最常见的,可以拍摄出比较符合人眼的观察习惯的图像。广角镜头的最大特点是拍摄视角大,得到的图像信息量比较多,但图像畸变比较大,一般需要对图像进行校正,目前多用于监控系统。

现有的相机标定方法分为传统标定方法和自主标定方法。目前多采用张正友相机模型和畸变模型,来进行相机内外参和畸变标定。但仍然面临一些需要解决的问题:

一方面,现有张正友标定方法的畸变模型,对于广角相机或者广角镜头的的广角方向的畸变校正精度仍然存在一定的误差,所以现有的立体视觉多考虑无畸变的90°,或者更小角度的相机进行,有效三角测量角度范围受到相机角度的限制较大。因此设计一个广角相机畸变校正算法是十分有必要的。

另一方面,对于某些特殊场景(大角度),作为广角相机,不需要消耗额外的系统资源来做标准相机的拼接。因为对于实时拼接而言,在线计算拼接每次拼接之前,都需要计算特征点,匹配,滤波,计算矩阵需要占用较多的系统资源;而离线计算拼接矩阵,则又涉及到相机抖动之后,产生有较大的,无法预测的拼接误差。处理好广角相机的广角方向上的畸变,广角相机所具有的优势能更好的体现出来。

其次,对于不规则的图像畸变或不对称的畸变,使用张正友标定方法无法得到解决。

最后,原有的TPS(薄板样条插值)算法进行畸变校正,由于受控制点的影响,对于边沿(最外一层控制点之外的区域),会存在较大的未处理的畸变,从而影响可视性。

而本文的改进TPS(薄板样条插值)算法能够改进这种边沿畸变的可读性,增加广角方向上的畸变校正精度和有效范围,并且能够处理一些成像的不规则畸变。

技术实现要素:

有鉴于此,本发明的目的在于提供一种广角相机非规则畸变全域校正方法,改进广角相机以及非规则畸变的校正问题,提高广角相机广角方向的校正精度,以及成像的边沿区域可视性。

为达到上述目的,本发明提供如下技术方案:

广角相机非规则畸变全域校正方法,该方法包括以下步骤:

S1图片采集:使用相关软件,对采集的图像作辅助线,并实时显示;将辅助线对齐棋盘格中心区域,拍摄照片;

S2角点检测:

S3棋盘格检测:对检测到的角点,通过生长法检测出棋盘格;

S4数据初始化:检测中心区域的棋盘格,并以中心点为基准,图像左上角为像素坐标系原点,向右为u轴,向下为v轴正方向;根据检测到的棋盘格,获取期望棋盘格的位置数据;

S5拟合曲面:使用改进后的薄板样条插值TPS方法拟合出插值曲面;

S6生成插值地图:使用得到的插值曲面反向求出插值地图;

S7实时畸变校正:载入插值地图,实时采集图片,并实时进行畸变校正。

进一步,所述步骤S2具体为:

S21使用Prewitt算子计算出两个方向的梯度,并计算图片梯度的方向和幅值;

S22归一化梯度方向,初始化角点模板,使用角点模板对原图片进行滤波处理,获得初始角点;

S23对得到角点进行非极大值抑制;

S24对角点进行亚像素化,使角点更加准确;

S25剔除边沿点,即非角点,和角点评分低于阈值的角点。

进一步,所述步骤S2具体为:所述步骤S3具体为:

S31与图像最中心点的欧氏距离从近到远循环每一个角点;

S32初始化一个棋盘格,通过寻找该点周围8个方向上的匹配点作为初始棋盘格;

S33通过向上下左右四个方向上生长,计算生长后棋盘格的能量,当能量函数小于阈值时,生长成功;

S34进行棋盘格方向校正,重复部分全部通过,则进行拼接,得到新的棋盘格。

进一步,所述步骤S2具体为:所述改进后的薄板样条插值TPS方法为:

TPS函数的趋势函数部分,用于提高畸变校正后的图像的边沿的可读性;

改进后的趋势函数为:

f(x,y)趋势函数=a0+x+x[a1r2+a2r4]

其中,r2为欧氏距离的平方。

本发明的有益效果在于:

现有的相机标定方法分为传统标定方法和自主标定方法。目前多采用张正友相机模型和畸变模型,来进行相机内外参和畸变标定。但仍然面临一些需要解决的问题:

一方面,现有张正友标定方法的畸变模型,对于广角相机或者广角镜头的的广角方向的畸变校正精度仍然存在一定的误差,所以现有的立体视觉多考虑无畸变的90°,或者更小角度的相机进行,有效三角测量角度范围受到相机角度的限制较大。因此设计一个广角相机畸变校正算法是十分有必要的。

另一方面,对于某些特殊场景(大角度),作为广角相机,不需要消耗额外的系统资源来做标准相机的拼接。因为对于实时拼接而言,在线计算拼接每次拼接之前,都需要计算特征点,匹配,滤波,计算矩阵需要占用较多的系统资源;而离线计算拼接矩阵,则又涉及到相机抖动之后,产生有较大的,无法预测的拼接误差。处理好广角相机的广角方向上的畸变,广角相机所具有的优势能更好的体现出来。

其次,对于不规则的图像畸变或不对称的畸变,使用张正友标定方法无法得到解决。

最后,原有的TPS(薄板样条插值)算法进行畸变校正,由于受控制点的影响,对于边沿(最外一层控制点之外的区域),会存在较大的未处理的畸变,从而影响可视性。

而本文的改进TPS(薄板样条插值)算法能够改进这种边沿畸变的可读性,增加广角方向上的畸变校正精度和有效范围,并且能够处理一些成像的不规则畸变。

附图说明

为了使本发明的目的、技术方案和有益效果更加清楚,本发明提供如下附图进行说明:

图1为程序流程图;

图2为图像采集实时显示图;

图3为拟合曲面图;(a)为u的拟合曲面,(b)为v的拟合曲面;

图4为算法比较图;(a)为opencv,(b)为TPS,(c)为改进TPS;

图5为初始棋盘格的8个基本模型;

图6为使用方向双线性插值算法进行畸变校正示意图。

具体实施方式

下面将结合附图,对本发明的优选实施例进行详细的描述。

如图1所示,为程序流程图。TPS(薄板样条插值)是一种最小曲率插值方法,该函数分为两部分:基函数和趋势函数。基函数也是离散部分,通过对每个数据点附近的曲面进行弯曲拉伸,使其通过数据点,并使其能量函数最小;趋势函数也是仿射部分,根据所有数据点拟合的一个平面,反映数据点外的薄板的曲面趋势。通过对函数中的参数的计算,得到拟合后的曲面。

其中,|·|表示欧几里德范数,ci是系数,U为TPS的核函数

改进TPS(薄板样条插值)函数的趋势函数部分,提高畸变校正后的图像的边沿的可读性。改进后的趋势函数如下:

f(x,y)趋势函数=a0+x+x[a1r2+a2r4]

其中,r2为欧氏距离的平方。

软件方面:离线标定部分和实时校正部分。

硬件方面:主要针对广角相机(大于等于90°,小于等于180°)

软件结构组成:

Step1.图片采集:使用相关软件,对采集的图像作辅助线,并实时显示。将辅助线对齐棋盘格中心区域,拍摄照片,如图2所示。

Step2.角点检测:①使用Prewitt算子计算出两个方向的梯度,并计算图片梯度的方向和幅值。②归一化梯度方向,初始化角点模板,使用角点模板对原图片进行滤波处理,获得初始角点。③并对得到角点进行非极大值抑制。④对角点进行亚像素化,使角点更加准确。⑤剔除边沿点(非角点)和角点评分低于阈值的角点。

Step 3.棋盘格检测:对检测到的角点,通过生长法检测出棋盘格。①与图像最中心点的欧氏距离从近到远循环每一个角点。②初始化一个棋盘格,通过寻找该点周围8个方向上的匹配点作为初始棋盘格。③通过向上下左右四个方向上生长,计算生长后棋盘格的能量,当能量函数小于阈值时,生长成功。④进行棋盘格方向校正,重复部分全部通过,则进行拼接,得到新的棋盘格。

Step 4.数据初始化:检测中心区域的棋盘格,并以中心点为基准,图像左上角为像素坐标系原点,向右为u轴,向下为v轴正方向。根据检测到的棋盘格,获取期望棋盘格的位置数据。

Step 5.拟合曲面:使用改进后的TPS方法拟合出插值曲面。

Step 6.生成插值地图:使用得到的插值曲面反向求出插值地图。

Step 7.实时畸变校正:载入插值地图,实时采集图片,并实时进行畸变校正。

进一步的,所述的step 2中的角点检测,初始棋盘格的8个基本模型如图5所示。将原来的三种尺度(4、8、16)增加为四种尺度(根据图像中的棋盘格像素大小进行修改,当前增加了尺度30)。

使用下列方法,进行棋盘内角点匹配:

亚像素角和方向细化:对检测出的内角点,去除边沿点和低得分点。然后亚像素化角点,即寻找满足下式的c值:

进一步的,所述的step 3中棋盘格生长法。恢复结构(优化能量函数,生长棋盘格):初始化6个点构成4个方格(最小棋盘)的棋盘格,然后通过寻找四个方向中能量最小的方向生长棋盘,直到没有新的棋盘格阵列。其中棋盘能量定义为:

E(x,y)=Ecorners(y)+Estruct(x,y)

Ecorners(y)=-size(chessboard,1)*size(chessboard,2)

其中corners部分为当前棋盘格的大小的负值,struct为预测和实际棋盘的匹配程度,当四个方向上的总能量都大于零时结束生长。

进一步的,所述的step 3中的棋盘格方向校正,重复部分全部通过,则进行拼接,得到新的棋盘格。首先进行棋盘格方向校正,如下列公式所示:

acha(i)=Pa(i+1)-Pa(i),i=1…n-1

direction.ab=direction.a-direction.b\*MERGEFORMAT

其中Pa(i)表示两个棋盘的相同点在棋盘a的位置;direction.a表示棋盘a的相对角度(可以在表格1中查到,□:a或者b,*:任意取值);direction.ab表示棋盘格b相对于棋盘a的角度;Cb表示棋盘b;表示校正方向后的棋盘b。

表格1相对角度查值表

然后,通过匹配来进行棋盘格的扩张。

C(m+max(a1,b1)-a1,n+max(a2,b2)-a2)=a(m,n)

C(m+max(a1,b1)-b1,n+max(a2,b2)-b2)=b(m,n)\*MERGEFORMAT

其中,(a1,a2)=(pa(1)x,pa(1)y),表示两个棋盘第一个相同点在棋盘a的位置。(b1,b2)=(pb(1)x,pb(1)y),表示两个棋盘第一个相同点在棋盘b的位置。C表示匹配后的棋盘格。

进一步的,所述的step5中TPS(Thin Plate Splines)算法。当径向函数为二次的时候被称为薄板样条插值,是一种求取经过所有数据点的,具有最小曲率的平滑金属薄板的方法。

在数据具有二次连续导数的前提下,具有能量函数为:

对于具体的离散的数据点,其最小能量函数为:

该能量函数包含两部分,仿射部分a0+axx+ayy,表示无穷远处的薄板的曲面趋势,剩余离散部分,弯曲数据点附近的曲面,以使其通过该数据点。||·||表示欧几里德范数,ci是系数,U为TPS的核函数,表达式为

U(r)=r2log(r),r2=(x-xi)2+(y-yi)2\*MERGEFORMAT

通过对函数中的参数的计算,得到拟合后的曲面。

进一步的,对于step 7中的实时校正中的运用插值地图,进行畸变校正。使用方向双线性插值算法进行畸变校正,如图6所示,寻找已知权重的四个点中间的任意一点的权重。

然后在x方向进行线性插值,得到

然后在y方向进行线性插值,得到

综合起来就是双线性插值最后的结果:

在最终结果如图4所示,(a)为opencv,(b)为TPS,(c)为改进TPS。

实施例:

硬件软件基础:摄像头(锐尔威视140°)、A4纸打印的棋盘格、win7(x64)、matlab2015、opencv3.2、visual studio2015等器材。

原理及步骤:

Step1.图片采集:使用相关软件,对采集的图像作辅助线,并实时显示。将辅助线对齐棋盘格中心区域,拍摄照片,如图2所示。

Step 2.角点检测:①使用Prewitt算子计算出两个方向的梯度,并计算图片梯度的方向和幅值。②归一化梯度方向到[0,pi],初始化角点模板,使用角点模板对原图片进行滤波处理,获得初始角点。③并对得到角点进行非极大值抑制(阈值=0.045)。④对角点进行亚像素化,使角点更加准确。⑤剔除边沿点(非角点)和角点评分低于阈值的角点。

Step 3.棋盘格检测:对检测到的角点,通过生长法检测出棋盘格。①与图像最中心点的欧氏距离从近到远循环每一个角点。②初始化一个3x3的棋盘格,通过寻找该点周围8个方向上的匹配点作为初始棋盘格。③通过向上下左右四个方向上生长,计算生长后棋盘格的能量,当能量函数小于阈值时,生长成功。④进行棋盘格方向校正,重复部分全部通过,则进行拼接,得到新的棋盘格。

Step 4.数据初始化:检测中心区域的棋盘格,并以中心点为基准,图像左上角为像素坐标系原点,向右为u轴,向下为v轴正方向。根据检测到的棋盘格,获取期望棋盘格的位置数据。

Step 5.拟合曲面:使用改进后的TPS(薄板样条插值)方法拟合出插值曲面,如图3所示,(a)为u的拟合曲面,(b)为v的拟合曲面。

Step 6.生成插值地图:使用得到的插值曲面反向求出插值地图。

Step 7.实时畸变校正:载入插值地图,实时采集图片,并实时进行畸变映射校正。

最后说明的是,以上优选实施例仅用以说明本发明的技术方案而非限制,尽管通过上述优选实施例已经对本发明进行了详细的描述,但本领域技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离本发明权利要求书所限定的范围。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值