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

背景技术:

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

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

一方面,现有张正友标定方法的畸变模型,对于广角相机或者广角镜头的的广角方向的畸变校正精度仍然存在一定的误差,所以现有的立体视觉多考虑无畸变的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.实时畸变校正:载入插值地图,实时采集图片,并实时进行畸变映射校正。

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

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

  1. Matlab应变片仿真,一种基于Matlab/Adams联合仿真的真实路谱再现系统和方法与流程...

    本发明属于汽车系统动力学仿真技术领域,特别是一种基于Matlab/Adams联合仿真的真实路谱再现系统和方法. 背景技术: 汽车系统动力学仿真技术是汽车设计制造中一项不可或缺的技术,尤其是在汽车操纵稳 ...

  2. matlab 多重比较,谈一谈两种常用的多重比较校正方法(附Matlab程序)

    作者:kervin 微信号:kervin_zhao 在科学研究的统计分析中,我们往往会遇到多重比较校正问题.多重比较校正的方法很多,如Bonferroni.False Discovery Rate(F ...

  3. matlab 功率分配,一种基于遗传算法的NOMA功率分配方法与流程

    本发明涉及一种基于遗传算法的NOMA功率分配方法,属于无线通信技术领域. 背景技术: 随着移动互联网应用的发展,移动数据流量和终端连接数也呈爆炸式增长,未来全球移动通信网络连接的设备总量将达到千亿规模 ...

  4. matlab与逆透视变换,基于逆透视变换的车道线检测方法与流程

    本发明属计算机视觉.图形处理技术领域,具体涉及一种通过照度不变及逆透视变换进行车道线快速鲁棒检测的方法. 背景技术: 车道线检测作为自动驾驶技术的第一个环节,能够有效感知车辆周围世界,并获取可行驶区域 ...

  5. matlab吸波材料源程序,针状四氧化三铁包覆铁镍合金/石墨片吸波材料制备方法与流程...

    本发明属于水热反应制备复合材料领域,涉及一种制备针状Fe3O4包覆铁镍合金/石墨片新型吸波材料方法. 背景技术: 随着科技和电子科学技术的发展,越来越多的电子设备在给我们生活带来便利之外,电磁波所造成 ...

  6. 验证matlab设计的滤波器,一种数字滤波器的设计及验证方法与流程

    本发明涉及一种数字滤波器的设计及验证方法,属于数字信号处理技术领域. 背景技术: 当今,数字信号处理技术正飞速的发展,它不但成为一门学科,更是以不同的形式影响和渗透到其他的学科,因此受到人们普遍的关注 ...

  7. 湍流退化图像复原如何使用matlab,一种基于相关最大性的湍流退化图像复原方法与流程...

    本发明涉及退化图像复原方法,特别涉及一种大气湍流图像复原问题,属于多帧湍流图像复原领域. 背景技术: 在中远距离成像系统中,由于风速.温度等影响造成的大气湍流现象,使得传播介质折射率不规则变化,导致光 ...

  8. 光纤受激拉曼散射matlab程序,一种抑制光纤激光器中受激拉曼散射现象的方法与流程...

    本发明属于光纤激光器领域,具体涉及一种抑制光纤激光器中受激拉曼散射现象的方法. 背景技术: 光纤激光器诞生于20世纪60年代初,已经有五十多年的发展史.随着光纤通信技术.光纤制造工艺以及与激光器技术的 ...

  9. 局部放电相位分布 3d matlab,基于局部放电信号特征的诊断图谱相位开窗参数调整方法与流程...

    本发明属于局部放电检测领域,具体涉及一种基于局部放电信号特征的诊断图谱相位开窗参数调整方法. 背景技术: 相位开窗数:将局部放电的脉冲时域信号转换为局部放电的脉冲序列相位分布(Phase Resolv ...

最新文章

  1. 014_CSS伪类选择器
  2. 项目范围管理:项目范围管理的概念
  3. python安装pyinstaller出现错误_pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)...
  4. java web 配置教程,javaWeb实战教程0-环境配置,javaweb实战教程0-
  5. DIV+CSS:页脚永远保持在页面底部
  6. 利用python进行数据分析书籍_利用Python进行数据分析 (O'Reilly精品图书系列) 内省...
  7. Python入门到精通(一):入门必备知识
  8. java 换行规范_JAVA代码规范(一)
  9. 史密斯圆图串并联口诀_最近终于把阻抗匹配和史密斯圆图搞懂了,总结了一下!...
  10. STC 18B20温度传感器读写程序
  11. 资深HR告诉你到底怎么写一份好的简历(非常全面)
  12. 修改webstorm的运行内存避免卡顿
  13. 泥瓦匠聊并发编程:线程与多线程必知必会(基础篇)
  14. Excel收纳箱:如何通过VBA获A列数据的最大行数
  15. 基于python的opencv相机标定(采用黑白棋盘格标定板)
  16. wpf MessageBox 消息框
  17. 【TensorFlow学习之路】一--TensorFlow基本概念
  18. 02 数学软件与建模---MATLAB入门
  19. Android 概述
  20. Matlab转置transpose, .‘与复共轭转置ctranspose, ‘

热门文章

  1. [微语 21.01.06] 一刻
  2. [USACO5.1]Starry Night
  3. Rejecting re-init Communications link failure
  4. thickbox的使用
  5. HCIP---第十七天笔记
  6. opencv透视变换
  7. 手机木马网站服务器,快速查找网站木马
  8. Qt 学习(四) —— QButtonGroup抽象容器
  9. 淘宝的商品主图视频如何批量下载、抓取的?
  10. 2017年7月30日13:43:01