发明内容
1.要解决的技术问题
针对现有技术中对数码管识别准确率不高、易受干扰、所需运算量大的问题,本发明提供了一种数码管数字识别方法及装置,它可以实现提高识别准确率与鲁棒性,同时所需运算量较小。
2.技术方案
本发明的目的通过以下技术方案实现。
一种数码管数字识别方法,包括以下步骤:
获取样本图像,对样本图像进行预处理,得到处理后的数据;
对预处理后的数据进行密度聚类,并对聚类后的结果进行过滤,得到若干个分组;
对密度聚类的分组进行排序,按照排序结果对样本图像进行数字分割,得到若干个分割后的图像;
对分割后的图像进行大小统一转化,将转化后的图像转化为样本数组;
获取待识别图像,对待识别图像进行与样本图像相同的处理,得到待识别数组,将待识别数组与样本数组进行相似度匹配,得到实际数值。
进一步的,对样本图像进行预处理,包括以下步骤:
对样本图像进行灰度化处理,得到灰度图像;
对灰度图像进行二值化处理,判断图像中像素点值是否大于第一预设阈值,若大于,将该点的像素点值置为1,否则置为0,得到二值图像;
对二值图像进行过滤,去除无效数据,并将过滤后的二值图像转化为二维数组。
更进一步的,对预处理后的数据进行密度聚类,并对聚类后的结果进行过滤,包括以下步骤:
对二维数组中的元素进行密度聚类,得到若干个分组;
根据每个分组的像素坐标最大值、最小值以及图像高度,计算得到每个分组的高度占比;
判断分组的高度占比是否符合第二预设阈值,若符合,则保留该分组数据,否则丢弃该分组数据。
更进一步的,将转化后图像转化为样本数组,包括以下步骤:
对转化后的图像进行预处理;
初始化若干个样本数组;
遍历预处理后的图像中所有的像素点,判断像素点灰度值是否为0,若为0,则将样本数组中对应的值加1,最终得到样本数组;
保存样本数组。
更进一步的,将待识别数组分别与若干个样本数组进行相似度匹配,包括以下步骤:
计算待识别数组与样本数组之间的距离;
选取计算结果中的距离最小值,根据最小值对应的样本数组,得到待识别数组的实际数值。
一种数码管数字识别装置,用于执行上述数码管数字识别方法,包括:
预处理单元,用于对样本图像进行预处理,得到处理后的数据;
聚类单元,用于对预处理后的数据进行密度聚类,并对聚类后的结果进行过滤,得到若干个分组;
图像分割单元,用于对密度聚类的分组进行排序,按照排序结果对样本图像进行数字分割,得到若干个分割后的图像;
图像转化单元,用于对分割后的图像进行大小统一转化,将转化后的图像转化为样本数组;
相似度匹配单元,用于获取待识别图像,对待识别图像进行与样本图像相同的处理,得到待识别数组,将待识别数组与样本数组进行相似度匹配,得到实际数值。
进一步的,预处理单元包括:
灰度化处理模块,用于对样本图像进行灰度化处理,得到灰度图像;
二值化处理模块,用于对灰度图像进行二值化处理,判断图像中像素点值是否大于第一预设阈值,若大于,将该点的像素点值置为1,否则置为0,得到二值图像;
数据过滤模块,用于对二值图像进行过滤,去除无效数据,并将过滤后的二值图像转化为二维数组。
更进一步的,密度聚类单元包括:
密度聚类模块,用于对二维数组中的元素进行密度聚类,得到若干个分组;
高度占比计算模块,用于根据每个分组的像素坐标最大值、最小值以及图像高度,计算得到每个分组的高度占比;
判断模块,用于判断分组的高度占比是否符合第二预设阈值,若符合,则保留该分组数据,否则丢弃该分组数据。
更进一步的,图像转化单元包括:
预处理模块,用于对转化后的图像进行预处理,得到处理后的数据;
数组初始化模块,用于初始化若干个样本数组;
数组填充模块,遍历预处理后的图像中所有的像素点,判断像素点灰度值是否为0,若为0,则将样本数组中对应的值加1,最终得到样本数组;
存储模块,用于保存样本数组。
更进一步的,相似度匹配单元包括:
距离计算模块,用于计算待识别数组与样本数组之间的距离;
距离匹配模块,用于选取计算结果中的距离最小值,根据最小值对应的样本数组,得到待识别数组的实际数值。
3.有益效果
相比于现有技术,本发明的优点在于:
本发明通过对样本图像进行预处理,减少了数据计算量;对样本图像进行密度聚类,得到了代表数字的分组,并对分组进行过滤,去除掉干扰项,提高了数字分割和识别的准确率;对分割后的图像进行大小统一,并转化为数组,使得图像可以通过统一的数字识别算法进行识别;保存样本数组作为识别模型,对后续待识别图像进行与样本图像相同的处理,将结果与样本数组的距离作对比,所需运算量小,对硬件的处理能力要求不高,从而减少了成本;由于样本图像与待识别图像是来自于同一个数码管,因此不论数码管的识别显示效果如何,都不会影响最后的识别结果,从而提高了算法的正确率和鲁棒性。
具体实施方式
下面结合说明书附图和具体的实施例,对本发明作详细描述。
如图1所示,本实施例提供了一种数码管数字识别方法,应用于一种数码管数字识别系统,该系统包括终端101和服务器102,终端101和服务器102通过网络连接,终端101可以是具有拍摄和连接网络功能的设备,如电脑、手机等设备,服务器102可以是独立的服务器,也可以是多个服务器组成的服务器集群。终端101可通过网络将数据发送至服务器102上,所述数据可以是图片或者视频流,如果服务器获取的数据为视频流,首先对获取到的视频流进行拆分,本实施例可设定为每秒抓取一次,即每秒获取一张图片,拆分得到若干帧图片;如果服务器获取的数据为图片,则无需进行上述拆分处理。
本实施例主要以该数码管数字识别方法应用于上述图1中的终端101和服务器102来举例说明,如图2所示,本方法具体包括以下步骤:
步骤S100、获取样本图像,对样本图像进行预处理,得到处理后的数据;
具体的,在本实施例提供的数码管数字识别方法中,在对一个待识别图片进行识别之前,需要先获取一个样本图像,所述样本图像应当包括数码管的0-9共10个数字,并且对其按照顺序进行人为标识,如样本图像中数字显示的顺序为9876543210,则人为标识该样本图像显示的值为9876543210,样本图像中的数字不要求按从大到小或从小到大的顺序显示,只需将实际显示值与样本图像的数字对应即可。所述人为标识用于将图像中识别出的数字与其所对应的实际数值相关联,为后续的数码管数字图像识别提供识别基础.
如图3所示,对样本图像进行预处理具体包括以下步骤:
步骤S101、对样本图像进行灰度化处理,得到灰度图像。
具体的,RGB色彩模式使用RGB模型为图像中每一个像素的RGB分量分配一个0~255范围内的强度值,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值,灰度范围为0-255。图像的灰度化处理有分量法、最大值法、平均值法和加权平均法,本实施例使用加权平均法对图像进行处理,加权平均法根据重要性及其它指标,将三个分量以不同的权值进行加权平均。由于人眼对绿色的敏感最高,对蓝色敏感最低,因此,按下式对RGB三分量进行加权平均得到较合理的灰度图像。灰度化后的图像将由三通道变为单通道,从而减小了后续数字识别的运算量。
Gray(i,j)=0.299*R(i,j)+0.578*G(i,j)+0.114*B(i,j)
本实施例对一个含有0-9数字的图像进行灰度化处理,得到如图4所示的灰度图像,灰度图像的大小为(h,w),其中h为图像的像素高度,w为图像的像素宽度,本实施例的图像大小(h,w)=(98,416)。
步骤S102、对灰度图像进行二值化处理,判断图像中像素点值是否大于第一预设阈值,若大于,将该点的像素点灰度值置为1,否则置为0,最后得到二值图像。
具体的,灰度图像二值化利用图像中目标与背景的差异,通过所述第一预设阈值,将图像的数据分为大于和小于第一预设阈值的像素群,将大于第一预设阈值的像素群的像素点设定为白色,小于第一预设阈值的像素群的像素点设定为黑色,以确定某像素是目标还是背景,从而获得二值化的图像。
本实施例中,经过多次实验,得到效果最佳的第一预设阈值为130,遍历灰度图片中所有像素点,判断像素点值是否大于130,如果大于,将该点的像素点灰度值置为1,否则置为0,得到如图5所示的98*416的二值图像。
灰度图像种包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,需要先对灰度图进行二值化处理,得到二值图像,二值图像指每个像素非黑即白,其灰度值没有中间过渡的图像,一般用来描述文字或者图形,二值图像通过将灰度值转化为0和1,将原来需要8位编码存储减小为只需1位编码存储,减小了占用空间,方便提取图像中的信息,在进行数字识别时可以提高识别效率。
步骤S103、对二值图像进行过滤,去除无效数据,并将过滤后的二值图像转化为二维数组。
具体的,由于本发明所用的数字识别方法只是对有灰度值的区域进行识别,因此灰度值为0的数据为无效数据,同时这些数据占据了大量的存储空间,需要剔除。本实施例中,对步骤S102中的二值图像进行过滤,遍历图像中的所有像素点,提取图像中灰度值为0的像素点,将该像素点的横纵坐标值保存到二维数组[x,y]中,其中x对应图像像素点的横坐标值,y对应图像像素点的纵坐标值,得到一个如表1所示的二维数组,通过提取二值图像中灰度值为0的像素点,可以减少所需计算的数据量。
表1
x |
y |
9 |
14 |
9 |
15 |
9 |
16 |
9 |
17 |
… |
… |
415 |
94 |
415 |
95 |
415 |
96 |
415 |
97 |
步骤S200、对预处理后的数据进行密度聚类,并对聚类后的结果进行过滤,得到若干个分组。
如图6所示,对预处理后的数据进行密度聚类,并对聚类后的结果进行过滤,具体包括以下步骤:
步骤S201、对二维数组中的元素进行密度聚类,得到若干个分组。
具体的,对图片进行预处理后,得到了预处理后的数据,即一个二维数组,对该二维数组进行密度聚类,聚类的目的就是把不同的像素点按照它们的相似与相异度分割成不同的簇,得到的簇为数据划分后的子集,所得到的若干个簇即为上述的若干个分组,聚类确保每个簇中的数据都是尽可能相似,而不同的簇里的数据尽可能的相异,因此,通过聚类的方法可以将图像中的数字进行分割,而相比其他的聚类方法,基于密度的聚类方法(DBSCAN)可以在有噪音的数据中发现各种形状和各种大小的簇(Label)。DBSCAN算法主由两个参数控制,分别为邻域的最大半径(EPS)和邻域中的最少点数(MinPts)。
本实施例中,对步骤S103的数组进行密度聚类时,设置距离参数EPS为2,最小簇中元素个数MinPts为3,聚类结果得到如表2所述的14个簇,簇中包括若干个元素,元素数量为图像的像素点数量,一个簇对应一个有灰度的区域,该区域可以是数字或其他干扰因素。
表2
x |
y |
Label |
9 |
14 |
0 |
9 |
15 |
0 |
9 |
16 |
0 |
9 |
17 |
0 |
… |
… |
|
415 |
94 |
13 |
415 |
95 |
13 |
415 |
96 |
13 |
415 |
97 |
13 |
步骤S202、根据每个分组的像素坐标最大值、最小值以及图像高度,计算得到每个分组的高度占比。
具体的,所述像素坐标包括像素横坐标x和像素纵坐标y,每个分组中有若干个元素,元素数量为图像的像素点数量,选取这些元素中x坐标最小值作为数组的像素坐标最小值x_min,选取这些元素中x坐标最大值作为数组的像素坐标最大值x_max,y坐标的最大值y_max和最小值y_min同理可得,上述四个像素值分别对应每个区域的左右上下四个边界,所述分组的高度占比为分组所代表的区域高度占整个图像高度h的比例,将分组区域的像素高度与图像高度h相除即可得到高度占比,计算公式为高度占比=(y_max-y_min)/h,本实施例的计算结果如表3所示:
表3
Label |
(y_max-y_min)/h |
x_min |
0 |
0.88 |
9 |
1 |
0.88 |
48 |
2 |
0.84 |
88 |
3 |
0.07 |
121 |
4 |
0.88 |
127 |
5 |
0.88 |
167 |
6 |
0.80 |
206 |
7 |
0.07 |
240 |
8 |
0.88 |
249 |
9 |
0.88 |
285 |
10 |
0.80 |
348 |
11 |
0.04 |
357 |
12 |
0.88 |
365 |
13 |
1.00 |
411 |
步骤S203、判断分组的高度占比是否符合第二预设阈值,若符合,则保留该分组数据,否则丢弃该分组数据。
具体的,第二预设阈值用于对密度聚类得到的分组数据进行过滤,在步骤S103中,对图像进行了初步处理,去除了空白区域,但由于图像中除了数字和空白区域外,还有其他的干扰项,如边缘区域、噪声点等,为了避免干扰因素对后续数字分割的影响,需要过滤掉这些干扰项。根据这些干扰项的特点,如边缘区域的像素高度一般与整个图像高度相同,而噪声点的像素高度很小,因此计算干扰项区域的高度占比。
第二预设阈值可以根据图像中数字的大小来设置,例如,如果图片中的数字高度占整个图像高度的比例较低,那么可以调低第二预设阈值的数值,防止图片中的数字被错误的丢弃,如果图片中的数字高度占整个图像高度的比例较高,那么可以调高第二预设阈值的数值,从而提高对噪声点的过滤程度,进而提高后续对数字分割的准确率。
本实施例中,设定第二预设阈值为大于0.5且小于1,如果分组的高度占比小于或等于0.5,说明该分组为噪声区域,如果分组的高度占比为1,说明该分组为数码管的边缘部分,删除不符合第二预设阈值的分组,得到符合条件的分组分别为0、1、2、4、5、6、8、9、10、12,共10个分组。
步骤S300、对密度聚类的分组进行排序,按照排序结果对样本图像进行数字分割,得到若干个分割后的图像。
具体的,本实施例中,对每个分组按照分组的像素点坐标大小进行排序,这里选取像素横坐标最小值x_min,对每个分组中的x_min进行从小到大排序,得到每个分组的排序结果sort。对排序后的分组进行处理,依据每个分组的x_min、x_max、y_min和y_max在最初的样本图像中进行裁剪,即按照分组区域的四个边界值裁剪出若干个图像作为数字待选区域图像,得到的图像数量为样本图像中数字的数量,裁剪结果如图7所示。
步骤S400、将分割得到的图像进行大小统一转化,将转化后的图像转化为样本数组。
具体的,如图7所示,可以看出,在根据分组区域的边界值进行裁剪时,由于数码管数字显示方式的特殊性,如数字7、4、1,数字上端或下端的数码管LED段不显示,因此所得到的边界值会略小于其他数字,为了后续能够进行统一的计算,需要对分割到的图像进行大小统一转化,本实施例中,将每个图像统一转化成规格为(h1,w1)=(45,24)的图像,其中h1为图像的像素高度,w1为图像的像素宽度。
如图8所示,将转化后的图像转化为样本数组,具体包括以下步骤:
步骤S401、对图像进行预处理。
所述预处理与步骤S100中的预处理相同,对转换后的图片进行灰度化、二值化处理和过滤处理。
步骤S402、初始化若干个样本数组。
本实施例中,初始化若干个元素值全部为0、数组长度为24的数组ai[24],ai[24]=[0,0,0,0,…,0],样本数组的数量对应分割出的图像数量。
步骤S403、遍历预处理后的图像中所有的像素点,判断像素点灰度值是否为0,若为0,则将数组中对应的值加1,最终得到样本数组,存储样本数组。
具体的,本实施例中,遍历图像的所有像素点,像素点值为0则代表有一个像素点,数组中的一个元素对应图像的一列,元素值为图像对应列具有的像素点个数,在遍历时,如果像素点灰度值为0,则将该像素点所在列对应的元素值加1,例如,第一个样本数组的第一个元素a0[0]对应图像的第一列,第一个样本数组的元素a0[1]对应图像的第二列,如果图像第一列共有45个像素点,其中36个像素点的灰度值为0,则对应数组的第一个元素值为36。在本实施例中依次遍历分割出的10个图像,得到10个样本数组,根据步骤S100中样本图像的人为标识,将10个样本数组与数组各自对应的实际数值相关联,用于对待识别图片进行匹配识别,如表4所示:
表4
步骤S500、获取待识别图像,对待识别图像进行如步骤S100-S400中样本图像的处理,得到待识别数组,将待识别数组与样本数组进行相似度匹配,得到实际数值。
具体的,本实施例中,首先对样本图像进行如步骤S100-S400的识别处理,得到若干个样本数组,将该样本数组存储,用于对后续待识别图像进行数字识别。之后获取待识别图像,与样本图像相同,对待识别图像进行上述步骤S100-S400的处理,得到若干个待识别数组,待识别数组的数量与待识别图像中的数字数量相对应,不同的是,待识别图像识别得到的待识别数组不会被存储。现有技术中对数码管进行数字识别时,通常根据每个笔画段的亮度,判断对应的LED段是否点亮,进而确定对应的数字,然而在实际使用时,不同的数码管的显示效果不尽相同,当数码管的显示亮度不佳,或者数码管的显示亮度过高时,可能会识别错误为其他的数字,而本发明首先对一个数码管所显示的数字进行识别,得到样本后保存,之后以该样本作为识别基础,对同一数码管所显示的数字进行对比,不论该数码管的显示亮度如何,最终的到的都是该数码管图像所对应的实际数值。
如图9所示,将待识别数组分别与若干个样本数组进行相似度匹配,具体包括以下步骤:
步骤S501、计算待识别数组与样本数组之间的距离。
具体的,在对样本数组和待识别数组进行相似度匹配时,需要评估两个数组之间的相似度指标,通常采用的评估方法就是计算两个个体在空间上存在的距离,距离越远说明个体间的差异越大,距离度量通常有计算欧氏距离、曼哈顿距离、马氏距离等,本实施例中,计算待识别数组与样本数组之间的距离为欧式距离,欧氏距离是最常见的距离度量,衡量的是多维空间中各个点之间的绝对距离,对于两个n维向量a(x11,x12,…,x1n)与b(x21,x22,…,x2n),两个向量之间的欧氏距离d12为:
对于若干个待识别数组与若干个样本数组,首先选取一个待识别数组,分别计算该数组与若干个样本数组的欧氏距离,得到若干个结果。
步骤S502、选取计算结果中的距离最小值,根据最小值对应的样本数组,得到待识别数组的实际数值。
具体的,步骤S501中计算得到了若干个距离结果,当两个数组计算得到的距离结果最小时,说明待识别数组与样本数组所代表的实际数值相同,此时根据该样本数组,查找到其对应的实际数组,得到待识别数组的实际数值。如果待识别数组有若干个,则将每个待识别数组依次对比与查找,最终得到待识别图像的完整数值。
需要说明的是,实施例中所述的第一预设阈值、第二预设阈值通常是根据一系列经验数据确定的一个值,既可以是人为设定的,也可以是设备自动生成的,此处不作限定。
与上述几种实施例提供的数码管数字识别方法相对应,本发明实施例还提供一种数码管数字识别装置,由于本发明实施例提供的数码管数字识别装置与上述实施例提供的数码管数字识别方法相对应,因此上述数码管数字识别方法的实施方式也适用于本实施例提供数码管数字识别装置,在本实施例中不再详细描述。
如图10所示,一种数码管数字识别装置,包括:
预处理单元1010,用于对样本图像进行预处理,得到处理后的数据;
聚类单元1020,用于对预处理后的数据进行密度聚类,并对聚类后的结果进行过滤,得到若干个分组;
图像分割单元1030,用于对密度聚类的分组进行排序,按照排序结果对样本图像进行数字分割,得到若干个分割后的图像;
图像转化单元1040,用于对分割后的图像进行大小统一转化,将转化后的图像转化为样本数组;
相似度匹配单元1050,用于获取待识别图像,对待识别图像进行与样本图像相同的处理,得到待识别数组,将待识别数组与样本数组进行相似度匹配,得到实际数值。
如图11所示,预处理单元1010包括:
灰度化处理模块1011,用于对样本图像进行灰度化处理,得到灰度图像;
二值化处理模块1012,用于对灰度图像进行二值化处理,判断图像中像素点值是否大于第一预设阈值,若大于,将该点的像素点值置为1,否则置为0,得到二值图像;
数据过滤模块1013,用于对二值图像进行过滤,去除无效数据,并将过滤后的二值图像转化为二维数组。
如图12所示,密度聚类单元1020包括:
密度聚类模块1021,用于对二维数组中的元素进行密度聚类,得到若干个分组;
高度占比计算模块1022,用于根据每个分组的像素坐标最大值、最小值以及图像高度,计算得到每个分组的高度占比;
判断模块1023,用于判断分组的高度占比是否符合第二预设阈值,若符合,则保留该分组数据,否则丢弃该分组数据。
如图13所示,图像转化单元1040包括:
预处理模块1041,用于对转化后的图像进行预处理,得到处理后的数据;
数组初始化模块1042,用于初始化若干个样本数组;
数组填充模块1043,遍历预处理后的图像中所有的像素点,判断像素点灰度值是否为0,若为0,则将样本数组中对应的值加1,最终得到样本数组;
存储模块1044,用于保存样本数组。
如图14所示,相似度匹配单元1050包括:
距离计算模块1051,用于计算待识别数组与样本数组之间的距离;
距离匹配模块1052,用于选取计算结果中的距离最小值,根据最小值对应的样本数组,得到待识别数组的实际数值。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上示意性地对本发明创造及其实施方式进行了描述,该描述没有限制性,在不背离本发明的精神或者基本特征的情况下,能够以其他的具体形式实现本发明。附图中所示的也只是本发明创造的实施方式之一,实际的结构并不局限于此,权利要求中的任何附图标记不应限制所涉及的权利要求。所以,如果本领域的普通技术人员受其启示,在不脱离本创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本专利的保护范围。此外,“包括”一词不排除其他元件或步骤,在元件前的“一个”一词不排除包括“多个”该元件。产品权利要求中陈述的多个元件也可以由一个元件通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。