一种基于手机平台的图像实时校正改进方法与流程

文档序号:16902523发布日期:2019-02-19 18:09阅读:207来源:国知局
一种基于手机平台的图像实时校正改进方法与流程

本发明属于计算机图像处理领域,尤其涉及一种基于手机平台的图像实时校正改进方法。



背景技术:

随着移动互联网技术的发展,智能手机已经成为人们工作生活中不可或缺的一部分。它不仅极大地丰富了人们的生活,带来了诸多便利,也导致了一些不可忽视的问题。许多人过度依赖手机,随时随地低头观看智能手机,社会上把这些人称之为“手机低头族”。经常这样做会影响视力、损伤颈椎,有损健康;另一方面这些“低头族”常会忽视身边潜在的安全隐患,引发各类事故,造成人身伤害。基于这类现象,开发一款基于智能手机平台的步行安全防护软件尤为重要。该软件的核心是要在“低头族”一边步行一边使用手机时,智能手机的前摄像头能实时采集步行前方的路面图像,并在后台对该图像的路面特征进行识别,发现危险时发出警报提示。

由于手机摄像头在一定的俯仰角下拍摄到的图像存在畸变。使用者在步行状态下使用手机的时候,手机在横向和纵向都会有一定的倾斜角度,这会导致拍摄的图像(如图1所示)存在比较复杂的梯形失真,从而会影响到后续图像特征识别的准确性,如图2a所示。



技术实现要素:

本发明针对现有的应用需求和技术问题,对现有的图像实时校正方法进行了改进,能够实现控制点的自动提取和roi(regionofinterest,感兴趣区域)区域的自适应放大,本发明公开了一种基于手机平台的图像实时校正改进方法,包括如下步骤:

步骤1,调整摄像头的高度和角度,拍摄标准小正方形方格图板的测试图像;

步骤2,对步骤1中的测试图像进行角点提取;

步骤3,对步骤2中提取出的角点进行筛选,得到图像上最大畸变正方形的四个顶点坐标,并算出标准正方形的四个顶点坐标;

步骤4,根据步骤4中得到的四组顶点坐标,进行空间变换,计算得出校正系数,根据校正系数对手机实时拍摄的图像进行校正;

步骤5,对步骤4校正得到的图像进行roi区域自适应放大和灰度插值计算,得到前方2m的校正图像。

本发明步骤1包括如下步骤:

步骤1-1:准备一张1.5m(米)*3m,且画满标准小正方形方格的图板,用于拍摄标准测试图像;

步骤1-2:手机摄像头的高度和角度调整范围:以手机机身左下角为坐标系原点,以机身长边为y轴,短边为x轴,手机平放时垂直于屏幕且向上为z轴方向;俯仰角为手机y轴绕x轴旋转的角度,即机身与拍摄平面之间的夹角,也就是摄像头光轴与拍摄平面的垂线之间的夹角,所在的范围主要分布在10度到45度。倾斜角为x轴绕y轴旋转的角度,即右手持手机时x轴绕y轴旋转的角度主要分布在0到10度,左手持手机时x轴绕y轴旋转的角度主要分布在-10度到0度;手机摄像头的高度范围为1.1m到1.4m;

步骤1-3:手机摄像头的高度和角度调整规则:将手机固定在三角支架上,调整摄像头至1.1m,以1cm为调整间隔,同时以1度为间隔调整x轴和y轴的旋转角度,确定手机摄像头所处的高度、手机y轴绕x轴的旋转角和x轴绕y轴的旋转角;

步骤1-4:实时采集一帧标准测试图像。

本发明步骤2包括如下步骤:

步骤2-1:图像预处理:对采集到的标准测试图像灰度化后,进行高斯平滑滤波;

步骤2-2:将标准测试图像上每个点的灰度值与其8领域内的点的灰度值进行比较,灰度值之差在20以内的判定为相似点,如果一个中心点周围8个点中有7个或8个点灰度值与之相似,判定该中心点处于平坦区域,不是角点,排除该中心点;如果一个中心点周围只有1个点或者没有点与之相似,判定该中心点不是角点,排除该中心点;

步骤2-3:使用横向prewitt差分模板计算图像每个像素i(x,y)在x方向的梯度ix和y方向的梯度iy;

步骤2-4:通过如下公式计算梯度方向的乘积:

ixy=x·y,

其中,表示x方向的梯度乘积,表示y方向的梯度乘积,ixy表示x方向和y方向的梯度乘积;

步骤2-5:使用高斯窗口对ixy进行滤波,并构造自相关矩阵m,高斯核函数为ω(x,y)=exp(-(x2+y2)/σ2),则自相关矩阵m中的元素m1,m2,m3为:

自相关矩阵m为:

步骤2-6:构造角点响应函数r=detm-k(tracem)^2,k为常数系数,tracem为矩阵m的主对角线上各个元素的总和,对步骤2-2中筛选出的每一点,计算出其r值,选出其中的最大值r_max,设定阈值为q*r_max,q为常数系数,当一个点的r值大于阈值时,判定该点是候选角点,k和q取值一般为0.1;

步骤2-7:对候选角点进行局部极大值抑制,通过一个3*3的窗口来进行筛选,判定在8邻域内角点响应值r是最大值的点是角点。

本发明步骤3包括如下步骤:

步骤3-1:在步骤2提取出的角点中,有一些点的距离很近,可以认为是相似点,为了提高校正的速度和准确性,再次进行筛选。将距离在10个像素以内的点判断为相似点,对它们取平均值作为角点坐标保存在h数组中;

步骤3-2:从h数组中选出纵坐标最大横坐标最小的那个点,即图像中左下角的角点a,其坐标为(xa,ya),将与其纵坐标相差30以内的角点全部提取出来,视为在同一水平直线上,最右侧的点为d,其坐标为(xd,yd),直线ad长为l,其上共n个角点;

步骤3-3:在余下的角点中提取纵坐标最大的点,再次将与其纵坐标相差30以内的点全部提取出来,视为在同一水平直线上。计算其中每个点与a点的斜率为负且最大的那条直线,即为畸变正方形左边的边所在的直线,与a点构成这条直线的那个点记为a’。

步骤3-4:重复步骤3-3,一直在图像上方寻找满足步骤3-3中所述条件的点,直到畸变正方形左边的边所在的直线上的角点数目为n,将最上方的点记为b;

步骤3-5:在与b点纵坐标相差30以内的点中提取横坐标大于b点的n-1个点,横坐标最大的那个点记为c,则直线bc上也具有n个角点,此时abcd即为畸变正方形的四个顶点,将四个顶点保存在d数组中;

步骤3-6:直线ad同时为标准正方形的底边,标准正方形另外2个顶点分别是b′和c′,b′坐标为(xa,ya-l),c′坐标为(xd,yd-l),将b′和c′保存在n数组中,如图5所示。

本发明步骤4包括如下步骤:

步骤4-1:使用matlab的maketform函数创建变换结构体tform,参数为希望执行变换的类型'projective'和步骤3中得到的2个数组d和n,结构体会输出一个变换系数,即校正系数;

步骤4-2执行变换:将要变换的图像和校正系数传递给matlab自带的imtransform函数实现变换,imtransform函数将返回变换后的图像,此函数将在输入图像上插值计算输出图像的像素值;

步骤4-3:指定填充值:填充值默认像素为0,显示为黑色。当执行一个变换时,输出图像上有很多像素不在位于原输入图像的位置,这些像素必须被赋予一些值,这就是填充值。默认情况下,imtransform函数设置这些像素为0,显示为黑色。

本发明步骤5包括如下步骤:

步骤5-1:手机需要识别的是前方2m以内路面的信息。校正完成后,在校正后图像中测量手机拍摄者正前方2m距离内路面占整体图像的长度比例。该比例与拍摄的高度hd(与身高相关)和角度都有关系,而与倾斜角无关,计算它们之间的数学关系很复杂,手机难以实时运行。因此使用索引的办法来处理。建立一张数据表,数据表中每条记录存储手机拍摄高度和俯仰角的角度信息以及对应情况下的有效区域占整体图像的比例t,以高度和俯仰角的大小作为数据表中每条记录的索引。

步骤5-2:以图像最下方中间点为中心,对图像进行放大,放大倍数为1/t,使图像后续处理的是前方2m以内的路面信息;

步骤5-3:放大完成后,超出图像范围的区域被删除,再对图像插值运算,得到拍摄前方2m以内路面的校正图像。

有益效果

(一)本发明提出的对于校正方法的改进解决了人机交互方式选取控制点导致的误差问题。人机交互方式是通过使用鼠标点击进行选取,所选择点的坐标值有较大的随意性,与理想的控制点之间存在误差,进而会导致校正矩阵系数出现误差,最终导致失真图像的校正效果和恢复质量下降。且人工选取每幅图像的控制点坐标的实时性比较差。本发明实现了对于控制点的自动提取。

(二)本发明中提出对校正后图像进行roi区域自适应放大的方法,实现了对步行前方有效区域的实时校正。由于手机摄像时有俯仰角,所摄图像完成校正后,图像需要进行识别的有效区域(即roi)会被压缩,影响后续识别的效果。

本发明针对上述的问题,创新地提出了:

(1)将标准测试图像上所有的角点全部提取出来,将距离在10个像素以内的点判断为相似点,对它们取平均值作为角点坐标保存,在保存的角点中首先找到纵坐标最大横坐标最小的那个点,即图像中左下角的角点a(xa,ya),将与其纵坐标相差30以内的角点全部提取出来,视为在同一水平直线上。最右侧的点为d(xd,yd)。ad长为l,其上共n个角点;在余下的角点中提取纵坐标最大的点,再次将与其纵坐标相差30以内的点全部提取出来,视为在同一水平直线上。计算其中每个点与a点的斜率为负且最大的那条直线,即为畸变正方形左边的边所在的直线,与a点构成这条直线的那个点记为a’;一直向图像上方寻找这样的点,直到这条倾斜直线上的角点数目为n,将最上方的点记为b;在与b点纵坐标相差30以内的点中提取横坐标大于b点的n-1个点,横坐标最大的那个点记为c,这样bc上也具有n个角点,此时abcd即为畸变正方形的四个顶点,将其保存;同时ad也是标准正方形的底边,其另外2个顶点分别是b′(xa,ya-l),c′=(xd,yd-l)。将其保存。

(2)校正完成后,在校正后图像中测量手机拍摄者正前方2m距离内路面占整体图像的长度比例t;以图像最下方中间点为中心,对图像进行放大,放大倍数为1/t,使图像后续处理的是前方2m以内的路面信息;放大完成后,超出图像范围的区域被删除,再对图像插值运算,可以得到拍摄前方2m以内路面的校正图像。从而使得本发明中的校正方法能够实现对步行前方2m有效区域的实时校正功能,提升对于手机低头族的步行安全防护功能。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。

图1为手机拍摄图像发生梯形状畸变示意图。

图2a为手机拍摄前方窨井盖图像。

图2b为窨井盖校正图像。

图2c为窨井盖放大后图像。

图3为画满间距合适的标准小正方形方格图板。

图4为手机拍摄的标准测试图像。

图5为畸变轮廓顶点的坐标与校正后图像轮廓顶点坐标的对应关系示意图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

本发明公开了一种基于手机平台的图像实时校正改进方法,能够实现控制和roi区域的自动提取,包括如下步骤:

步骤1,调整摄像头的高度和角度,拍摄标准小正方形方格图板的测试图像;

步骤2,对步骤1中的测试图像进行角点提取;

步骤3,对步骤2中提取出的角点进行筛选,得到图像上最大畸变正方形的四个顶点坐标,并算出标准正方形的四个顶点坐标;

步骤4,根据步骤3中得到的四组顶点坐标,进行空间变换,计算得出校正系数,根据校正系数对手机实时拍摄的图像进行校正;

步骤5,对步骤4校正得到的图像进行roi区域自适应放大和灰度插值计算,得到前方2m的校正图像

本发明步骤1包括如下步骤:

步骤1-1:准备一张1.5m*3m,且画满标准小正方形方格的图板,用于拍摄标准测试图像,如图3所示;

步骤1-2:手机摄像头的高度和角度调整范围:以手机机身左下角为坐标系原点,以机身长边为y轴,短边为x轴,手机平放时垂直于屏幕且向上为z轴方向;俯仰角为手机y轴绕x轴旋转的角度,即机身与拍摄平面之间的夹角,也就是摄像头光轴与拍摄平面的垂线之间的夹角,所在的范围主要分布在10度到45度。倾斜角为x轴绕y轴旋转的角度,即右手持手机时x轴绕y轴旋转的角度主要分布在0到10度,左手持手机时x轴绕y轴旋转的角度主要分布在-10度到0度;高度范围为1.1m到1.4m;

步骤1-3:手机摄像头的高度和角度调整规则:将手机固定在三角支架上,,调整摄像头至1.1m,以1cm为调整间隔,同时以1度为间隔调整x轴和y轴的旋转角度,确定手机摄像头所处的高度、手机y轴绕x轴的旋转角和x轴绕y轴的旋转角;

步骤1-4:实时采集一帧标准测试图像,如图4所示。

本发明步骤2包括如下步骤:

步骤2-1:图像预处理:对采集到的图像灰度化后,进行高斯平滑滤波,目的是减少噪声提高角点提取的精度。

步骤2-2:将图像上每个点的灰度值与其8领域内的点的灰度值进行比较,灰度值之差在20以内视为相似点。如果一个点周围8个点中有7、8个点灰度值与之相似,那么该中心点应该处于平坦区域,不可能为角点。如果只有1个点或者没有点与之相似,那么该中心点也不可能为角点。通过初次筛选,缩小角点的查询范围,加快计算速度。

步骤2-3:使用横向prewitt差分模板计算图像i(x,y)在x和y两个方向的梯度ix和iy;

步骤2-4:通过如下公式计算梯度方向的乘积:

ixy=x·y

步骤2-5:使用高斯窗口对ixy进行滤波,并构造自相关矩阵m。高斯核函数为ω(x,y)=exp(-(x2+y2)/σ2),那么矩阵m中的元素m1,m2,m3为:

自相关矩阵为:

步骤2-6:构造角点响应函数r=detm-k(tracem)^2,k为常数系数,定为0.1。对步骤2-2中筛选出的每一点,计算出其r值。选出其中的最大值r_max。设定阈值为q*r_max,q为常数系数,定为0.1。当一个点的r值大于阈值时,该点是候选角点

步骤2-7:对候选角点进行局部极大值抑制,通过一个3*3的窗口来进行筛选,只有在8邻域内角点响应值r是最大值的点才会被最终认为是角点。

本发明步骤3包括如下步骤:

步骤3-1:在步骤2提取出的角点中,有一些点的距离很近,可以认为是相似点,为了提高校正的速度和准确性,再次进行筛选。将距离在10个像素以内的点判断为相似点,对它们取平均值作为角点坐标保存在h数组中。

步骤3-2:从h数组中选出纵坐标最大横坐标最小的那个点,即图像中左下角的角点a(xa,ya),将与其纵坐标相差30以内的角点全部提取出来,视为在同一水平直线上。最右侧的点为d(xd,yd)。ad长为l,其上共n个角点。

步骤3-3:在余下的角点中提取纵坐标最大的点,再次将与其纵坐标相差30以内的点全部提取出来,视为在同一水平直线上。计算其中每个点与a点的斜率为负且最大的那条直线,即为畸变正方形左边的边所在的直线,与a点构成这条直线的那个点记为a’。

步骤3-4:重复步骤3-3,一直向图像上方寻找这样的点,直到这条倾斜直线上的角点数目为n,将最上方的点记为b

步骤3-5:在与b点纵坐标相差30以内的点中提取横坐标大于b点的n-1个点,横坐标最大的那个点记为c,这样bc上也具有n个角点,此时abcd即为畸变正方形的四个顶点。将其保存在d数组中

步骤3-6:ad也是标准正方形的底边,另外2个顶点分别是b′(xa,ya-l),c′=(xd,yd-l)。将其保存在n数组中,如图5所示。

本发明步骤4包括如下步骤:

步骤4-1:使用matlab的maketform函数创建变换结构体tform,参数为希望执行变换的类型'projective'和步骤3中得到的2个数组d和n,结构体会输出一个变换系数,它就是我们需要的校正系数:

步骤4-2执行变换:通过将要变换的图像和校正系数传递给matlab自带的imtransform函数即可实现变换,函数将返回变换后的图像,此函数将在输入图像上插值计算输出图像的像素值。

步骤4-3:指定填充值:当执行一个变换时,输出图像上有很多像素不在位于原输入图像的位置,这些像素必须被赋予一些值,这就是填充值。默认情况下,imtransform函数设置这些像素为0,显示为黑色。

本发明步骤5包括如下步骤:

步骤5-1:手机需要识别的是前方2m以内路面的信息。校正完成后,在校正后图像中测量手机拍摄者正前方2m距离内路面占整体图像的长度比例。该比例与拍摄的高度hd(与身高相关)和角度都有关系,而与倾斜角无关,计算它们之间的数学关系很复杂,手机难以实时运行。因此使用索引的办法来处理。数据表中每条记录存储手机拍摄高度和俯仰角的角度信息以及对应情况下的有效区域占整体图像的比例t,以高度和俯仰角的大小作为每条记录的索引,如表1(表1为正前方2m距离内路面占整体图像的长度比例与高度和俯仰角之间关系的索引表。)所示:

表1

步骤5-2:以图像最下方中间点为中心,对图像进行放大,放大倍数为1/t,使图像后续处理的是前方2m以内的路面信息;

步骤5-3:放大完成后,超出图像范围的区域被删除,再对图像插值运算,可以得到拍摄前方2m以内路面的校正图像,如图2c所示。

智能手机中如何实时校正图像的失真,已有相关技术申请发明——“一种基于手机平台的图像实时校正改进方法”,其专利申请号为:2017101649484。这一基于控制点的图像梯形失真校正方法是通过选取标准测试图像上最大畸变正方形的四个顶点,计算得出四组控制点的坐标,将其带入坐标转换方程求出校正系数。它存在以下2个问题:

1、控制点是通过人机交互的方式使用鼠标点击进行选取,所选择点的坐标值有较大的随意性,与理想的控制点之间存在误差,进而会导致校正矩阵系数出现误差,最终导致失真图像的校正效果和恢复质量下降。且人工选取每幅图像的控制点坐标的实时性比较差。所以需要设计出一种能够自动提取测试图像控制点坐标的方法。

2、由于手机摄像时有俯仰角,所摄图像完成校正后,图像需要进行识别的有效区域(即roi)会被压缩,影响后续识别的效果,如图2b所示。因此需要对其进行适当的自适应比例放大,效果如图2c所示。

本发明提供了一种基于手机平台的图像实时校正改进方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1