发明内容
本发明的目的是提供一种基于边缘提取的图像识别方法,降低图像的识别成本,提高了图像识别精度。
为实现上述目的,本发明提供了如下方案:
一种基于边缘提取的图像识别方法,包括:
对待识别图像进行灰度化处理,获得第一灰度图;
对所述第一灰度图进行降噪和平滑处理,获得第二灰度图;
对所述第二灰度图进行边缘检测,获得边缘信息图;
对所述边缘信息图进行二值化处理,获得二值化图像;
通过遍历所述二值化图像确定目标区域的边界框,获得带有边界框的二值化图像;
根据所述带有边界框的二值化图像中边界框对所述待识别图像进行裁剪,获得裁剪后的图像;
利用所述裁剪后的图像进行图像识别。
可选地,所述通过遍历所述二值化图像确定目标区域的边界框,获得带有边界框的二值化图像,具体包括:
从第一行开始,按照从左到右,从上到下的顺序,逐行遍历所述二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为所述边界框左上角的横坐标;
从第一列开始,按照从上到下,从左到右的顺序,逐列遍历所述二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为所述边界框左上角的纵坐标;
从最后一行开始,按照从右到左,从下到上的顺序,逐行遍历所述二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为所述边界框右下角的横坐标;
从最后一列开始,按照从下到上,从右到左的顺序,逐列遍历所述二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为所述边界框右下角的纵坐标。
可选地,所述对所述第二灰度图进行边缘检测,获得边缘信息图,具体包括:
采用prewitt算子对所述第二灰度图进行边缘检测,获得边缘信息图。
可选地,所述利用所述裁剪后的图像进行图像识别,具体包括:
将所述裁剪后的图像缩放至设定尺寸,获得设定尺寸的图像;
将所述设定尺寸的图像输入图像识别模型进行目标识别。
可选地,所述将所述裁剪后的图像缩放至设定尺寸,获得设定尺寸的图像,具体包括:
采用双线性插值法将所述裁剪后的图像缩放至设定尺寸,获得设定尺寸的图像。
本发明还公开了一种基于边缘提取的图像识别系统,包括:
灰度化处理模块,用于对待识别图像进行灰度化处理,获得第一灰度图;
降噪和平滑处理模块,用于对所述第一灰度图进行降噪和平滑处理,获得第二灰度图;
边缘检测模块,用于对所述第二灰度图进行边缘检测,获得边缘信息图;
二值化处理模块,用于对所述边缘信息图进行二值化处理,获得二值化图像;
边界框确定模块,用于通过遍历所述二值化图像确定目标区域的边界框,获得带有边界框的二值化图像;
裁剪模块,用于根据所述带有边界框的二值化图像中边界框对所述待识别图像进行裁剪,获得裁剪后的图像;
图像识别模块,用于利用所述裁剪后的图像进行图像识别。
可选地,所述边界框确定模块,具体包括:
左上角的横坐标确定单元,用于从第一行开始,按照从左到右,从上到下的顺序,逐行遍历所述二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为所述边界框左上角的横坐标;
左上角的纵坐标确定单元,用于从第一列开始,按照从上到下,从左到右的顺序,逐列遍历所述二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为所述边界框左上角的纵坐标;
右下角的横坐标确定单元,用于从最后一行开始,按照从右到左,从下到上的顺序,逐行遍历所述二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为所述边界框右下角的横坐标;
右下角的纵坐标确定单元,用于从最后一列开始,按照从下到上,从右到左的顺序,逐列遍历所述二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为所述边界框右下角的纵坐标。
可选地,所述边缘检测模块,具体包括:
边缘检测单元,用于采用prewitt算子对所述第二灰度图进行边缘检测,获得边缘信息图。
可选地,所述图像识别模块,具体包括:
图像缩放单元,用于将所述裁剪后的图像缩放至设定尺寸,获得设定尺寸的图像;
图像识别单元,用于将所述设定尺寸的图像输入图像识别模型进行目标识别。
可选地,所述图像缩放单元,具体包括:
图像缩放子单元,用于采用双线性插值法将所述裁剪后的图像缩放至设定尺寸,获得设定尺寸的图像。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明通过边缘检测,获得边缘信息图,通过对边缘信息图进行二值化处理,通过遍历二值化图像确定目标区域的边界框,根据边界框对待识别图像进行裁剪,从而实现低成本、高效率地对感兴趣区域的提取,解决了背景信息过多对图像识别算法性能的不良影响,有助于提高图像识别的精度。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种基于边缘提取的图像识别方法,降低图像的识别成本。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明一种基于边缘提取的图像识别方法流程示意图,如图1所示,一种基于边缘提取的图像识别方法,包括:
步骤101:对待识别图像进行灰度化处理,获得第一灰度图。
其中步骤101之前,具体还包括:利用图像采集设备获取待识别图像。
本发明公开的技术方案的应用场景为街道,待识别图像为在街道上采集的图像,对待识别图像进行识别的目标为行人和车辆。
对待识别图像I 0进行灰度化处理,得到灰度图I 1(第一灰度图)。灰度化处理是指通过对待识别图像I 0的Red、Green、Blue三通道的像素值进行加权求和。具体地,对于灰度图I 1,在像素位置(x,y)处的值I 1(x,y)为:
I 1(x,y)=0.299·I 0,R(x,y)+0.587·I 0,G(x,y)+0.114·I 0,B(x,y);
其中,I 0,R(x,y)、I 0,G(x,y)和I 0,B(x,y)分别为待识别图像I 0的Red、Green、Blue三通道在像素位置(x,y)处的值。
步骤102:对第一灰度图进行降噪和平滑处理,获得第二灰度图。
其中,步骤102具体包括:对灰度图I 1进行降噪与平滑,得到灰度图I 2(第二灰度图)。
降噪处理:对于灰度图I 1,如果图像中存在椒盐噪声(椒盐噪声是灰度图像中一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有),当灰度图中存在这种随机噪声时,认为该图像中存在椒盐噪声),使用中值滤波进行降噪处理。具体地,对于图像中的每一像素点,以该点为中心,取3×3的方形区域,超出图像区域部分不予考虑,以该区域全部像素点的中值代替该像素点的原有像素值。
平滑处理:在完成降噪处理后,连续两次使用kernel(核函数)大小为(5,5)的均值滤波对图像进行平滑,去除图像中细小边缘的干扰。具体地,在每一次均值滤波过程中,对于图像中的每一像素点,以该点为中心,取5×5的方形区域,超出图像区域部分不予考虑,以该区域全部像素点的平均值代替该像素点的原有像素值。
步骤103:对第二灰度图进行边缘检测,获得边缘信息图。
其中,步骤103具体包括:
采用prewitt算子对第二灰度图进行边缘检测,获得边缘信息图。
使用prewitt算子对灰度图I 2进行边缘检测,包括如下过程:
1)prewitt算子包含两个方向模板,分别为用于检测水平边缘的模板f x和用于检测垂直边缘的模板f y,如图2所示,图2中(a)表示模板f x,图2中(b)表示模板f y。分别使用模板f x和模板f y与灰度图I 2做卷积运算,得到水平方向边缘信息图G x和垂直方向边缘信息图G y,数学公式表示如下:
G x=f x*I 2,G y=f y*I 2;
其中,*表示二维卷积操作。
2)对水平方向边缘信息图G x和垂直方向边缘信息图G y进行数值转换,具体包括:将取值范围映射到[0,255]之间,并求取绝对值,数学公式表示如下:
其中,round表示取整操作,对数值进行四舍五入;
G x,min表示
G x中的最小值,
G x,max表示
G x中的最大值;
G y,min表示
G y中的最小值,
G y,max表示
G y中的最大值;| |表示求绝对值,
表示
G x进行数值转换后的值,
表示
G y进行数值转换后的值。
3)对
和
进行按位或运算,得到边缘信息图
G,数据公式表示如下:
其中,bitwise_or表示按位或运算。
或者,对
和
求加权和,并取整,得到边缘信息图
G,数据公式表示如下:
又或者,计算
和
平方和的算数平方根,并取整,得到边缘信息图
G,数学公式表示如下:
步骤104:对边缘信息图进行二值化处理,获得二值化图像。
二值化处理,即将边缘信息图G中低于阈值的值设为0,高于阈值的值设为255,利用这一操作,去除图像中背景区域的边缘信息,获取感兴趣区域的轮廓。实际使用过程中,通常将阈值设为110,也可根据拍摄环境的变化进行调整。
步骤105:通过遍历二值化图像确定目标区域的边界框,获得带有边界框的二值化图像。
其中,步骤105具体包括:
从第一行开始,按照从左到右,从上到下的顺序,逐行遍历二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为边界框左上角的横坐标。
从第一列开始,按照从上到下,从左到右的顺序,逐列遍历二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为边界框左上角的纵坐标。
从最后一行开始,按照从右到左,从下到上的顺序,逐行遍历二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为边界框右下角的横坐标。
从最后一列开始,按照从下到上,从右到左的顺序,逐列遍历二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为边界框右下角的纵坐标。
步骤105中确定目标区域的边界框即为获取感兴趣区域的边界框,查找二值化图像中感兴趣区域的上、下、左、右四个边界,确定感兴趣区域的边界框。具体过程可以表示为:
1)使用边界框左上角、右下角坐标信息表示感兴趣区域的边界框,记左上角坐标为(x 1,y 1),右下角坐标为(x 2,y 2)。初始化边界框左上角坐标为(0,0),边界框右下角坐标为(H-1, W-1),H, W分别为二值图像的高与宽,即初始化边界框为整个图像的边界框。
2)从第一行开始,从左往右,从上往下,逐行遍历二值化图像,当查找到非零像素点时,结束遍历,并以该点的横坐标更新x 1,;
3)从第一列开始,从上往下,从左往右,逐列遍历二值化图像,当查找到非零像素点时,结束遍历,并以该点的纵坐标更新y 1;
4)从最后一行开始,从右往左,从下往上,逐行遍历二值化图像,当查找到非零像素点时,结束遍历,并以该点的横坐标更新x 2;
5)从最后一列开始,从下往上,从右往左,逐列遍历二值化图像,当查找到非零像素点时,结束遍历,并以该点的纵坐标更新y 2。至此,边界框的左上角坐标信息与右下角坐标信息得到确定,即感兴趣区域的边界框得到确定。
步骤106:根据带有边界框的二值化图像中边界框对待识别图像进行裁剪,获得裁剪后的图像。
步骤107:利用裁剪后的图像进行图像识别。
其中,步骤107具体包括:
将裁剪后的图像缩放至设定尺寸,获得设定尺寸的图像。设定尺寸为图像识别模型所需要的尺寸大小。
将设定尺寸的图像输入图像识别模型进行目标识别。
将裁剪后的图像缩放至设定尺寸,获得设定尺寸的图像,具体包括:采用双线性插值法将裁剪后的图像缩放至设定尺寸,获得设定尺寸的图像。
图像识别模型经由预先训练得到,用于对输入到模型中的图像进行识别,判断图像中是否存在行人或是车辆。
本发明能够通过边缘检测去除图像中的背景信息,提取图像中的感兴趣区域,减少了背景信息对图像识别模型的干扰,与不使用感兴趣区域提取的图像识别方法相比,本发明提出的利用边缘检测提取感兴趣区域的图像识别方法具有更高的识别率与更好的泛化性。
另一方面,本发明结合使用了一系列计算量低的算子,通过这些算子的有机结合,使得本方法能够以较低的计算量获得较好的效果。从而使本发明提出的利用边缘检测提取感兴趣区域的图像识别方法具有轻量化、计算量低的特点,不会过多增加图像识别算法的计算量。由于计算量低,可以基于本发明构建轻量化图像识别系统,使用图像采集设备采集图像,使用处理器运行本发明提供的图像识别方法,处理器可以选择运算能力较弱的微控制单元(MCU, Microcontroller Unit)。
图9为本发明一种基于边缘提取的图像识别系统结构示意图,如图9所示,一种基于边缘提取的图像识别系统,包括:
灰度化处理模块201,用于对待识别图像进行灰度化处理,获得第一灰度图。
降噪和平滑处理模块202,用于对第一灰度图进行降噪和平滑处理,获得第二灰度图。
边缘检测模块203,用于对第二灰度图进行边缘检测,获得边缘信息图。
二值化处理模块204,用于对边缘信息图进行二值化处理,获得二值化图像。
边界框确定模块205,用于通过遍历二值化图像确定目标区域的边界框,获得带有边界框的二值化图像。
裁剪模块206,用于根据带有边界框的二值化图像中边界框对待识别图像进行裁剪,获得裁剪后的图像。
图像识别模块207,用于利用裁剪后的图像进行图像识别。
边界框确定模块205,具体包括:
左上角的横坐标确定单元,用于从第一行开始,按照从左到右,从上到下的顺序,逐行遍历二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为边界框左上角的横坐标。
左上角的纵坐标确定单元,用于从第一列开始,按照从上到下,从左到右的顺序,逐列遍历二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为边界框左上角的纵坐标。
右下角的横坐标确定单元,用于从最后一行开始,按照从右到左,从下到上的顺序,逐行遍历二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为边界框右下角的横坐标。
右下角的纵坐标确定单元,用于从最后一列开始,按照从下到上,从右到左的顺序,逐列遍历二值化图像的像素点,当查找到非零像素点时,结束当前遍历,将当前非零像素点作为边界框右下角的纵坐标。
边缘检测模块203,具体包括:
边缘检测单元,用于采用prewitt算子对第二灰度图进行边缘检测,获得边缘信息图。
图像识别模块207,具体包括:
图像缩放单元,用于将裁剪后的图像缩放至设定尺寸,获得设定尺寸的图像。
图像识别单元,用于将设定尺寸的图像输入图像识别模型进行目标识别。
图像缩放单元,具体包括:
图像缩放子单元,用于采用双线性插值法将裁剪后的图像缩放至设定尺寸,获得设定尺寸的图像。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。