首页 / 专利库 / 图形技术 / 图像互换格式 / 一种新型的数字提取和识别的方法及系统

一种新型的数字提取和识别的方法及系统

阅读:995发布:2020-06-05

专利汇可以提供一种新型的数字提取和识别的方法及系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种新型的数字提取和识别的方法及系统,包括:移动 电子 设备通过扫描识别与处理手写数字;通过OSTU 算法 将扫描结果变为黑白色;通过垂直投影分割算法将一系列的数字分割为一个个独立的个体;通过Hilditch算法或ZS算法将数字细化;通过双线性或双立方插值算法对细化后的数字图像进行缩放;通过粗网格特征提取法对归一化后的数字图像进行结构特征的提取,生成 特征向量 并输入到识别器中;通过已经过训练的SVM识别器对输入的特征向量进行分类识别,得到数字图像的识别结果;将单个的识别结果组合起来形成一个字符串并输出到 用户界面 。本发明通过扫描将手写数字录入电子设备,以便于下一步的操作,更加方便快捷。,下面是一种新型的数字提取和识别的方法及系统专利的具体信息内容。

1.一种新型的数字提取和识别的方法,其特征在于,所述新型的数字提取和识别的方法包括以下步骤:
移动电子设备通过扫描识别与处理手写数字;
通过OSTU算法将扫描结果变为黑白色;
通过垂直投影分割算法将一系列的数字分割为一个个独立的个体;
通过Hilditch算法或ZS算法将数字细化;
通过双线性或双立方插值算法对细化后的数字图像进行缩放,使其与训练样本的格式统一;
通过粗网格特征提取法对归一化后的数字图像进行结构特征的提取,生成特征向量并输入到识别器中;
通过已经过训练的SVM识别器对输入的特征向量进行分类识别,得到数字图像的识别结果;
将单个的识别结果组合起来形成一个字符串并输出到用户界面,对于每个子图片,predict(img)函数返回一个只包含一个数字的字符串,建立一个字符串缓冲区StringBuilder sb=new StringBuilder(),然后将每个子图片预测得到的结果添加到缓冲区sb(即sb.append(result)),最后再执行sb.toString()就达到了组合的效果。
2.如权利要求1所述的新型的数字提取和识别的方法,其特征在于,所述通过OSTU算法将扫描结果变为黑白色具体包括:
首先将彩色图片灰度化,即取图片中每个像素点的RGB值,分别取得Red、Green、Blue的亮度值,根据灰度化公式算出该点的灰度值,像素点亮度值及灰度值获取方式如下:
Red=(RGB>>16)&0xff;
Green=(RGB>>8)&0xff;
Blue=RGB&0xff;
Gray=(int)((Red*29+Green*150+Blue*77+128)>>8);
其次经过获得源图像的灰度值矩阵gray[][],灰度值就是histData[]中的索引或标,求出图像中所有灰度值及出现次数的乘积的总和sum;
然后对于t从0到255,计算出由t得到的两类间的距离,并且保留当前状态下使两类距离最大的t值,计算两类的距离公式如下:
disBF=(flaot)wB*(float)*wF*(mB–mF)*(mB–mF);
其中,wB和wF分别为背景类于前景类的权重,mB和mF分别为背景类和前景类的灰度值平均值,wB、wF、mB、mF的计算如下:
wB+=histData[t];//要满足wB!=0
wF=total–wB;//total=图像像素点个数,并且要满足wF!=0
sumB+=(float)(t*histData[t]);
mB=sumB/wB;
mF=(sum–sumB)/wF;
最后新建一张源图像大小的图像,用于保存源图像经过二值化后的各像素点的值,通过选取到值t后,再遍历图像灰度值gray[][],让其中值大于阀值t的置为白色的RGB值
0xffffffff,值小于等于阀值t的置为黑色的RGB值0xff000000,最后返回新建的图像,即源图像的二值化图像。
3.如权利要求1所述的新型的数字提取和识别的方法,其特征在于,所述通过垂直投影分割算法将一系列的数字分割为一个个独立的个体具体包括:
首先以图像的宽度建立一个影子数组vertical_shadow[],从左到右(x),从上到下(y)扫描图像中的像素点值,若该像素点是黑色像素点,则vertical_shadow[x]++,得到一个保存图像影子信息的数组vertical_shadow[],如:vertical_shadow[1]=10表示源图像中在x=1的这条光线垂直照射下,图像在该位置的黑色像素点个数为10;
其次遍历vertical_shadow[]数组,当其值由0变到!0时记录下点的横坐标记为x_left,当其值由!0变到0时再次记录下点的横坐标记为x_right,那么[x_left,x_right]这个范围就是一个子图片的范围,直接调用获取子图片的方法来得到这个数字子图片;同理,获得整张图像的一系列数字子图片;
然后去除图像不必要的高度,即目标像素的上面和下面会有较大的空白区域,对于所得到的子图片,从上到下遍历图像的像素点,直到碰到下一个像素点为黑色像素点时,记录下此时点的纵坐标记为y_up,然后再从下到上遍历图像的像素点,同理会得到另一个纵坐标记为y_down,根据这两个参赛,切除子图片中不必要的空白区域;
最后对于整张图片进行数字子图片处理,而对于得到的每张子图片再进行除图像不必要的高度处理,得到满足需求的一系列子图片,然后将子图片保存在一个ArrayList<>中进行返回。
4.如权利要求1所述的新型的数字提取和识别的方法,其特征在于,所述通过Hilditch算法或ZS算法将数字细化具体包括:
首先获取图像的RGB代表值数组rgbs[][],即遍历图像中的像素点,当其值为黑色像素时,在rgbs[x][y]中相应位置的值为1,当其值为白色像素时,rgbs[x][y]的值为0;
然后遍历rgbs[][],对满足以下条件的所有点p进行标记,即将其值变为-1:
a)p为前景色像素;
b)x1、x3、x5、x7不全部为1;
c)x1~x8中至少有2个为1;
d)点p的8连通联结数为1;
e)假设x3已经标记为删除,那么当x3被删除后,p的8连通联结数为1;
f)假设x5已经标记为删除,那么当x5被删除后,p的8连通联结数为1;
点p的8连通联结数计算公式如下:
其中 代表x取非,比如x=0,那么 (前景色与背景色互换)
最后遍历rgbs[][],此时将经过②标记后的像素点置为背景色像素,即将源图像相应的位置(x,y)的像素点值改为0xffffffff,然后将经过细化后的图像返回。
5.如权利要求1所述的新型的数字提取和识别的方法,其特征在于,所述通过双线性或双立方插值算法对细化后的数字图像进行缩放具体包括:
首先新建目标规模的图像,然后遍历该图像中每个像素点,对于像素点D(x,y),将其映射到源图像S(i+t,j+u)上,映射公式为:
x’=x*(srcW/destW);y’=y*(srcH/destH);
其中x’=i+t,y’=j+u,通过从x’和y’中分别提取出i、t、j、u;
然后点p的4个最邻近点分别为:S(i,j)、S(i+1,j)、S(i,j+1)、S(i+1,j+1),令它们的权值分别为W(i,j)、W(i+1,j)、W(i,j+1)、W(i+1,j+1),其中:
W(i,j)=(1-t)*(1-u);
W(i+1,j)=t*(1–u);
W(i,j+1)=(1–t)*u;
W(i+1,j+1)=t*u;
最后根据公式求得目标像素D(x,y)的像素值,如下:
D(x,y)=S(i,j)*W(i,j)+S(i+1,j)*W(i+1,j)+s(i,j+1)*W(i,j+1)+S(i+1,j+1)*W(i+
1,j+1)
双立方插值算法中16个邻近点的权值是由R(x)函数求出的,在本函数库我实现了5个插值核函数供开发者选择,而使用下面这两个插值核函数:
基于sin(x*pi)/x函数逼近的插值核函数
基于catmull-Rom样条曲线的插值核函数;
对于目标图像的每个像素点都进行这些操作后,图像的缩放就完成,将缩放后的图像返回。
6.如权利要求1所述的新型的数字提取和识别的方法,其特征在于,所述通过粗网格特征提取法对归一化后的数字图像进行结构特征的提取具体包括:
初始化一个特征向量feaVector[],向量的长度等于切片的个数;
遍历图像中所有的切片,统计切片中目标像素点的个数,并以此作为特征值存入feaVector[]相应的位置中;
将存有特征值的特征向量feaVector[]返回。
7.一种如权利要求1所述新型的数字提取和识别的方法的数字提取和识别系统,其特征在于,所述数字提取和识别系统包括:
主模,用于接收安卓平台传递的各类消息以及扫描出来的数字信息;
图像扫描模块,用于手写数字图片;
二值化处理模块,基于0STU算法将图片的背景色经过二值化处理变为白底,去掉更多的干扰色或者干扰因素;
图像分割模块,基于垂直投影算法将包含一系列的数字图片分割成小块数字图片;
数字细化模块,基于ZS算法将图片中的数字变得更具特征性或者清晰;
图像缩放模块,基于双线性插值算法将图片转化为符合图片识别器规模大小的图片;
图像特征提取模块,基于粗网格特征提取算法将归一化后的图片进行结构特征的提取,用于生成该数字图片的特征向量;
图像识别模块,基于SVM模型对输入的数字图片特征向量与训练时产生的模型文件进行匹配,获得于图片数字对应的字符串数字。
8.一种包含权利要求1-6所述新型的数字提取和识别的方法的金融控制系统。
9.一种包含权利要求1-6所述新型的数字提取和识别的方法的快递控制体系。

说明书全文

一种新型的数字提取和识别的方法及系统

技术领域

[0001] 本发明属于计算机应用技术领域,尤其涉及一种新型的数字提取和识别的方法及系统。

背景技术

[0002] 阿拉伯基本数字只有十位,但不同认得书写方法也不同,作为全世界各个国家各个地区都在使用的数字,其书写上具有地域特征,很难完全兼顾世界的各种写法。
[0003] 在读取手写数字信息时,可能会由于书写潦草,难以辨认;并且数字串过长时,还需要重复读取来确保信息的正确性,比较费时。

发明内容

[0004] 本发明的目的在于提供一种新型的数字提取和识别的方法及系统,旨在解决在读取手写数字信息时,可能会由于书写潦草,难以辨认;并且数字串过长时,还需要重复读取来确保信息的正确性,比较费时的问题。
[0005] 本发明是这样实现的,一种新型的数字提取和识别的方法,所述新型的数字提取和识别的方法包括以下步骤:
[0006] 移动电子设备通过扫描识别与处理手写数字;
[0007] 通过OSTU算法将扫描结果变为黑白色;
[0008] 通过垂直投影分割算法将一系列的数字分割为一个个独立的个体;
[0009] 通过Hilditch算法或ZS算法将数字细化;
[0010] 通过双线性或双立方插值算法对细化后的数字图像进行缩放,使其与训练样本的格式统一;
[0011] 通过粗网格特征提取法对归一化后的数字图像进行结构特征的提取,生成特征向量并输入到识别器中;
[0012] 通过已经过训练的SVM识别器对输入的特征向量进行分类识别,得到数字图像的识别结果;
[0013] 将单个的识别结果组合起来形成一个字符串并输出到用户界面,对于每个子图片,predict(img)函数返回一个只包含一个数字的字符串,建立一个字符串缓冲区StringBuilder sb=new StringBuilder(),然后将每个子图片预测得到的结果添加到缓冲区sb(即sb.append(result)),最后再执行sb.toString()就达到了组合的效果。
[0014] 进一步,通过OSTU算法将扫描结果变为黑白色具体包括:
[0015] 首先将彩色图片灰度化,即取图片中每个像素点的RGB值,分别取得Red、Green、Blue的亮度值,根据灰度化公式算出该点的灰度值,像素点亮度值及灰度值获取方式如下:
[0016] Red=(RGB>>16)&0xff;
[0017] Green=(RGB>>8)&0xff;
[0018] Blue=RGB&0xff;
[0019] Gray=(int)((Red*29+Green*150+Blue*77+128)>>8);
[0020] 其次经过获得源图像的灰度值矩阵gray[][],灰度值就是histData[]中的索引或标,求出图像中所有灰度值及出现次数的乘积的总和sum;
[0021] 然后对于t从0到255,计算出由t得到的两类间的距离,并且保留当前状态下使两类距离最大的t值,计算两类的距离公式如下:
[0022] disBF=(flaot)wB*(float)*wF*(mB–mF)*(mB–mF);
[0023] 其中,wB和wF分别为背景类于前景类的权重,mB和mF分别为背景类和前景类的灰度值平均值,wB、wF、mB、mF的计算如下:
[0024] wB+=histData[t];//要满足wB!=0
[0025] wF=total–wB;//total=图像像素点个数,并且要满足wF!=0
[0026] sumB+=(float)(t*histData[t]);
[0027] mB=sumB/wB;
[0028] mF=(sum–sumB)/wF;
[0029] 最后新建一张源图像大小的图像,用于保存源图像经过二值化后的各像素点的值,通过选取到值t后,再遍历图像灰度值gray[][],让其中值大于阀值t的置为白色的RGB值0xffffffff,值小于等于阀值t的置为黑色的RGB值0xff000000。最后返回新建的图像,即源图像的二值化图像。
[0030] 进一步,通过垂直投影分割算法将一系列的数字分割为一个个独立的个体具体包括:
[0031] 首先以图像的宽度建立一个影子数组vertical_shadow[],从左到右(x),从上到下(y)扫描图像中的像素点值,若该像素点是黑色像素点,则vertical_shadow[x]++,得到一个保存图像影子信息的数组vertical_shadow[],如:vertical_shadow[1]=10表示源图像中在x=1的这条光线垂直照射下,图像在该位置的黑色像素点个数为10;
[0032] 其次遍历vertical_shadow[]数组,当其值由0变到!0时记录下点的横坐标记为x_left,当其值由!0变到0时再次记录下点的横坐标记为x_right,那么[x_left,x_right]这个范围就是一个子图片的范围,直接调用获取子图片的方法来得到这个数字子图片;同理,获得整张图像的一系列数字子图片;
[0033] 然后去除图像不必要的高度,即目标像素的上面和下面会有较大的空白区域,对于所得到的子图片,从上到下遍历图像的像素点,直到碰到下一个像素点为黑色像素点时,记录下此时点的纵坐标记为y_up,然后再从下到上遍历图像的像素点,同理会得到另一个纵坐标记为y_down,根据这两个参赛,切除子图片中不必要的空白区域;
[0034] 最后对于整张图片进行数字子图片处理,而对于得到的每张子图片再进行除图像不必要的高度处理,得到满足需求的一系列子图片,然后将子图片保存在一个ArrayList<>中进行返回。
[0035] 进一步,通过Hilditch算法或ZS算法将数字细化具体包括:
[0036] 首先获取图像的RGB代表值数组rgbs[][],即遍历图像中的像素点,当其值为黑色像素时,在rgbs[x][y]中相应位置的值为1,当其值为白色像素时,rgbs[x][y]的值为0;
[0037] 然后遍历rgbs[][],对满足以下条件的所有点p进行标记,即将其值变为-1:
[0038] a)p为前景色像素;
[0039] b)x1、x3、x5、x7不全部为1;
[0040] c)x1~x8中至少有2个为1;
[0041] d)点p的8连通联结数为1;
[0042] e)假设x3已经标记为删除,那么当x3被删除后,p的8连通联结数为1;
[0043] f)假设x5已经标记为删除,那么当x5被删除后,p的8连通联结数为1;
[0044] 点p的8连通联结数计算公式如下:
[0045]
[0046] 其中 代表x取非,比如x=0,那么 (前景色与背景色互换)
[0047] 最后遍历rgbs[][],此时将经过②标记后的像素点置为背景色像素,即将源图像相应的位置(x,y)的像素点值改为0xffffffff,然后将经过细化后的图像返回。
[0048] 进一步,通过双线性或双立方插值算法对细化后的数字图像进行缩放具体包括:
[0049] 首先新建目标规模的图像,然后遍历该图像中每个像素点,对于像素点D(x,y),将其映射到源图像S(i+t,j+u)上,映射公式为:
[0050] x’=x*(srcW/destW);y’=y*(srcH/destH);
[0051] 其中x’=i+t,y’=j+u,通过从x’和y’中分别提取出i、t、j、u;
[0052] 然后点p的4个最邻近点分别为:S(i,j)、S(i+1,j)、S(i,j+1)、S(i+1,j+1),令它们的权值分别为W(i,j)、W(i+1,j)、W(i,j+1)、W(i+1,j+1),其中:
[0053] W(i,j)=(1-t)*(1-u);
[0054] W(i+1,j)=t*(1–u);
[0055] W(i,j+1)=(1–t)*u;
[0056] W(i+1,j+1)=t*u;
[0057] 最后根据公式求得目标像素D(x,y)的像素值,如下:
[0058] D(x,y)=S(i,j)*W(i,j)+S(i+1,j)*W(i+1,j)+S(i,j+1)*W(i,j+1)+S(i+1,j+1)*W(i+1,j+1)
[0059] 双立方插值算法中16个邻近点的权值是由R(x)函数求出的,在本函数库我实现了5个插值核函数供开发者选择,而使用下面这两个插值核函数:
[0060]
[0061] 基于sin(x*pi)/x函数逼近的插值核函数
[0062]
[0063] 基于catmull-Rom样条曲线的插值核函数;
[0064] 对于目标图像的每个像素点都进行这些操作后,图像的缩放就完成,将缩放后的图像返回。
[0065] 进一步,通过粗网格特征提取法对归一化后的数字图像进行结构特征的提取具体包括:
[0066] 初始化一个特征向量feaVector[],向量的长度等于切片的个数;
[0067] 遍历图像中所有的切片,统计切片中目标像素点的个数,并以此作为特征值存入feaVector[]相应的位置中;
[0068] 将存有特征值的特征向量feaVector[]返回。
[0069] 本发明的另一目的在于提供一种所述新型的数字提取和识别的方法的数字提取和识别系统,所述数字提取和识别系统包括:
[0070] 主模,用于接收安卓平台传递的各类消息以及扫描出来的数字信息;
[0071] 图像扫描模块,用于手写数字图片;
[0072] 二值化处理模块,基于0STU算法将图片的背景色经过二值化处理变为白底,去掉更多的干扰色或者干扰因素;
[0073] 图像分割模块,基于垂直投影算法将包含一系列的数字图片分割成小块数字图片;
[0074] 数字细化模块,基于ZS算法将图片中的数字变得更具特征性或者清晰;
[0075] 图像缩放模块,基于双线性插值算法将图片转化为符合图片识别器规模大小的图片;
[0076] 图像特征提取模块,基于粗网格特征提取算法将归一化后的图片进行结构特征的提取,用于生成该数字图片的特征向量;
[0077] 图像识别模块,基于SVM模型对输入的数字图片特征向量与训练时产生的模型文件进行匹配,获得于图片数字对应的字符串数字。
[0078] 本发明的另一目的在于提供一种包含所述新型的数字提取和识别的方法的金融控制系统。
[0079] 本发明的另一目的在于提供一种包含所述新型的数字提取和识别的方法的快递控制体系。
[0080] 本发明提供的新型的数字提取和识别的方法及系统,通过扫描将手写数字录入电子设备,以便于下一步的操作,更加方便快捷;为需要通过扫描将手写数字录入电子设备,方便对数字的录入,手机上识别一张398x55px的图片需要花4秒左右的时间,而使用本发明测试同样的图片只花了2秒左右,节省了用户的时间。本发明可以实现对不同手写体的数字进行识别;在图片光照均匀、无噪声、数字非粘连并且图片大小不超过400x60px的情况下,可以达到96.67%的识别率;对于图片光照不均或者有较多干扰噪声的情况下,对图片的识别率极低;对于粘连的手写数字,难以正确识别。附图说明
[0081] 图1是本发明实施例提供的新型的数字提取和识别的方法流程图

具体实施方式

[0082] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0083] 下面结合附图对本发明的应用原理作详细的描述。
[0084] 如图1所示,本发明实施例的新型的数字提取和识别的方法包括以下步骤:
[0085] S101:移动电子设备通过扫描识别与处理手写数字;
[0086] S102:通过二值化将扫描结果变为黑白色,再将一系列的数字分割为一个个独立的个体,进行数字细化和提取特征;
[0087] S103:进行图像缩放,并匹配大小,根据特征进行识别,将匹配结果输出到用户界面。
[0088] 本发明实施例的新型的数字提取和识别系统主要包括:
[0089] 主模块,用于接收安卓平台传递的各类消息以及扫描出来的数字信息;
[0090] 图像扫描模块,用于手写数字图片;
[0091] 二值化处理模块,用于将图片的背景色经过二值化处理变为白底,去掉更多的干扰色或者干扰因素;
[0092] 图像分割模块,用于经过分割后的小块数字图片;
[0093] 数字细化模块,用于将图片中的数字变得更具特征性或者清晰;
[0094] 图像缩放模块,用于将图片转化为符合图片识别器规模大小的图片;
[0095] 图像识别模块,用于经过与识别器中的数字进行匹对,数字对应的数字。
[0096] 在本发明实施例的系统中:
[0097] 手写识别函数库需要提供的主要接口函数如下:
[0098] 图像二值化接口函数:public Bitmap binaryzation(Bitmap img);
[0099] 字符图像分割接口函数:public ArrayListsegment(Bitmap img);
[0100] 图像细化接口函数:public Bitmap skeleton(Bitmap img);
[0101] 图像缩放接口函数:public Bitmap zoom(Bitmap img,int destW,int destH);
[0102] 特征提取接口函数:public double[]extract(Bitmap img);
[0103] 图像数值预测接口函数:public String predict(Bitmap img);该函数是将分割后并且进行了归一化的单个子图片进行识别(预测),返回只有一个数字的字符串,而下面的toString()方法是包含了上面所有操作的接口函数,是对外提供的一个总的接口函数,其中包含了对于每个子图片的predict()值的合并操作。
[0104] 图像识别接口函数:public String toString(Bitmap img);
[0105] public String toString(String picture_name);
[0106] 整个识别流程:
[0107] ①用户手机照相,程序获取到照片的Bitmap对象img,然后程序内部调用toString(img)方法;
[0108] ②toString(img)方法中先是调用了二值化器的图像二值化方法binaryzation(img),将源图像变为只有黑白色的二值化图像bin_img;
[0109] ③在图像经过二值化后,toString(img)方法中会调用分割器中的字符图像分割方法segment(img),将二值化后得到的图像bin_img分割成若干个子图像,并保存在一个sub_imgs数组中;
[0110] ④在进行字符图像分割后,toString(img)方法会继续调用细化器中的字符图像细化方法skeleton(img),将sub_imgs中的所用子图片细化,保留它们的骨架特征;
[0111] ⑤在进行字符图像细化后,toString(img)方法会调用缩放器中的缩放方法zoom(img,destW,destH),将经过细化后的sub_imgs中的所有子图片进行缩放,使它们的格式于训练样本格式统一;
[0112] ⑥最后,toString(img)方法会对经过缩放后的sub_imgs中的每个子图片进行特征提取,然后调用识别器中的预测方法predict(img)进行预测,之后再将所有子图片的预测结果组合起来形成一个最终结果字符串,并将其返回给调用者程序;
[0113] ⑦调用者程序将字符串结果显示到手机UI上,等待用户的其他操作。
[0114] 本发明包括二值化处理、图像分割处理、数字细化处理、图像缩放处理、图像特征提取处理、图像识别处理等。其中:
[0115] 二值化处理,是基于0STU算法将图片的背景色经过二值化处理变为白底,去掉更多的干扰色或者干扰因素;
[0116] 图像分割处理,是基于垂直投影算法将包含一系列的数字图片分割成小块数字图片;
[0117] 数字细化处理,是基于ZS算法将图片中的数字变得更具特征性或者清晰;
[0118] 图像缩放处理,是基于双线性插值算法将图片转化为符合图片识别器规模大小的图片;
[0119] 图像特征提取处理,是基于粗网格特征提取算法将归一化后的图片进行结构特征的提取,用于生成该数字图片的特征向量;
[0120] 图像识别处理,是基于SVM模型对输入的数字图片特征向量与训练时产生的模型文件进行匹配,获得与图片数字对应的字符串数字。
[0121] 进一步,通过OSTU算法将扫描结果变为黑白色具体包括:
[0122] 首先将彩色图片灰度化,即取图片中每个像素点的RGB值,分别取得Red、Green、Blue的亮度值,根据灰度化公式算出该点的灰度值,像素点亮度值及灰度值获取方式如下:
[0123] Red=(RGB>>16)&0xff;
[0124] Green=(RGB>>8)&0xff;
[0125] Blue=RGB&0xff;
[0126] Gray=(int)((Red*29+Green*150+Blue*77+128)>>8);
[0127] 其次经过获得源图像的灰度值矩阵gray[][],灰度值就是histData[]中的索引或角标,求出图像中所有灰度值及出现次数的乘积的总和sum;
[0128] 然后对于t从0到255,计算出由t得到的两类间的距离,并且保留当前状态下使两类距离最大的t值,计算两类的距离公式如下:
[0129] disBF=(flaot)wB*(float)*wF*(mB–mF)*(mB–mF);
[0130] 其中,wB和wF分别为背景类于前景类的权重,mB和mF分别为背景类和前景类的灰度值平均值,wB、wF、mB、mF的计算如下:
[0131] wB+=histData[t];//要满足wB!=0
[0132] wF=total–wB;//total=图像像素点个数,并且要满足wF!=0
[0133] sumB+=(float)(t*histData[t]);
[0134] mB=sumB/wB;
[0135] mF=(sum–sumB)/wF;
[0136] 最后新建一张源图像大小的图像,用于保存源图像经过二值化后的各像素点的值,通过选取到阀值t后,再遍历图像灰度值gray[][],让其中值大于阀值t的置为白色的RGB值0xffffffff,值小于等于阀值t的置为黑色的RGB值0xff000000。最后返回新建的图像,即源图像的二值化图像。
[0137] 进一步,通过垂直投影分割算法将一系列的数字分割为一个个独立的个体具体包括:
[0138] 首先以图像的宽度建立一个影子数组vertical_shadow[],从左到右(x),从上到下(y)扫描图像中的像素点值,若该像素点是黑色像素点,则vertical_shadow[x]++,得到一个保存图像影子信息的数组vertical_shadow[],如:vertical_shadow[1]=10表示源图像中在x=1的这条光线垂直照射下,图像在该位置的黑色像素点个数为10;
[0139] 其次遍历vertical_shadow[]数组,当其值由0变到!0时记录下点的横坐标记为x_left,当其值由!0变到0时再次记录下点的横坐标记为x_right,那么[x_left,x_right]这个范围就是一个子图片的范围,直接调用获取子图片的方法来得到这个数字子图片;同理,获得整张图像的一系列数字子图片;
[0140] 然后去除图像不必要的高度,即目标像素的上面和下面会有较大的空白区域,对于所得到的子图片,从上到下遍历图像的像素点,直到碰到下一个像素点为黑色像素点时,记录下此时点的纵坐标记为y_up,然后再从下到上遍历图像的像素点,同理会得到另一个纵坐标记为y_down,根据这两个参赛,切除子图片中不必要的空白区域;
[0141] 最后对于整张图片进行数字子图片处理,而对于得到的每张子图片再进行除图像不必要的高度处理,得到满足需求的一系列子图片,然后将子图片保存在一个ArrayList<>中进行返回。
[0142] 进一步,通过Hilditch算法或ZS算法将数字细化具体包括:
[0143] 首先获取图像的RGB代表值数组rgbs[][],即遍历图像中的像素点,当其值为黑色像素时,在rgbs[x][y]中相应位置的值为1,当其值为白色像素时,rgbs[x][y]的值为0;
[0144] 然后遍历rgbs[][],对满足以下条件的所有点p进行标记,即将其值变为-1:
[0145] a)p为前景色像素;
[0146] b)x1、x3、x5、x7不全部为1;
[0147] c)x1~x8中至少有2个为1;
[0148] d)点p的8连通联结数为1;
[0149] e)假设x3已经标记为删除,那么当x3被删除后,p的8连通联结数为1;
[0150] f)假设x5已经标记为删除,那么当x5被删除后,p的8连通联结数为1;
[0151] 点p的8连通联结数计算公式如下:
[0152]
[0153] 其中 代表x取非,比如x=0,那么 (前景色与背景色互换)
[0154] 最后遍历rgbs[][],此时将经过②标记后的像素点置为背景色像素,即将源图像相应的位置(x,y)的像素点值改为0xffffffff,然后将经过细化后的图像返回。
[0155] 进一步,通过双线性或双立方插值算法对细化后的数字图像进行缩放具体包括:
[0156] 首先新建目标规模的图像,然后遍历该图像中每个像素点,对于像素点D(x,y),将其映射到源图像S(i+t,j+u)上,映射公式为:
[0157] x’=x*(srcW/destW);y’=y*(srcH/destH);
[0158] 其中x’=i+t,y’=j+u,通过从x’和y’中分别提取出i、t、j、u;
[0159] 然后点p的4个最邻近点分别为:S(i,j)、S(i+1,j)、S(i,j+1)、S(i+1,j+1),令它们的权值分别为W(i,j)、W(i+1,j)、W(i,j+1)、W(i+1,j+1),其中:
[0160] W(i,j)=(1-t)*(1-u);
[0161] W(i+1,j)=t*(1–u);
[0162] W(i,j+1)=(1–t)*u;
[0163] W(i+1,j+1)=t*u;
[0164] 最后根据公式求得目标像素D(x,y)的像素值,如下:
[0165] D(x,y)=S(i,j)*W(i,j)+S(i+1,j)*W(i+1,j)+S(i,j+1)*W(i,j+1)+S(i+1,j+1)*W(i+1,j+1)
[0166] 双立方插值算法中16个邻近点的权值是由R(x)函数求出的,在本函数库我实现了5个插值核函数供开发者选择,而使用下面这两个插值核函数:
[0167]
[0168] 基于sin(x*pi)/x函数逼近的插值核函数
[0169]
[0170] 基于catmull-Rom样条曲线的插值核函数;
[0171] 对于目标图像的每个像素点都进行这些操作后,图像的缩放就完成,将缩放后的图像返回。
[0172] 进一步,通过粗网格特征提取法对归一化后的数字图像进行结构特征的提取具体包括:
[0173] 初始化一个特征向量feaVector[],向量的长度等于切片的个数;
[0174] 遍历图像中所有的切片,统计切片中目标像素点的个数,并以此作为特征值存入feaVector[]相应的位置中;
[0175] 将存有特征值的特征向量feaVector[]返回。
[0176] 本发明是以生活中的数字图像为主要识别对象,对于打印、手写的数字都有一定的处理能,其中主要针对于手写阿拉伯数字的识别与处理。本发明根据需要将灰度图像采用全局阈值化、自适应阈值化等二值化方法将图片处理为白底黑字;通过分割处理将每个阿拉伯数字分为一个相对独立的模块;使用数字细化操作将数字的特征提取出来,即去除书写质量、笔记粗细等原因产生的噪声;将去除噪声的数字进行缩放,使之与模板尺寸相对应并与预先储存的模板进行匹配,识别出相应的数字。
[0177] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈