一种文档快速扫描方法与流程

文档序号:14396019阅读:393来源:国知局

本发明涉及计算机技术,特别是一种文档快速扫描方法。



背景技术:

随着人工智能和计算机技术的发展,自助服务的多样化和全能性也逐渐体现出来。文本扫描作为自助终端的一个重要模块,在材料的扫描,关键字查找,票据验证等方面有广泛的应用。在自助终端文本材料的审核上,由于拍摄的图片存在不清晰现象,一般不直接采用拍摄的图片审核,而是将图片进一步处理变成清晰的扫描件。

目前已有的文件扫描技术效果虽然很好,但是在速度上仍然存在缺陷。本发明提出了一种快速扫描的技术,可以快速扫描文件并将文件以jpg的格式保存起来。扫描的快速性可以减少客户的操作时间,增加客户的体验感,同时也为客户与后台交互提供了便捷。



技术实现要素:

针对现有技术中的问题,本发明提供一种文档快速扫描方法,实现快速处理图像,简化处理过程,提高了处理效果。

第一方面,本发明提供一种文档快速扫描方法,包括:

针对待处理的文档,采用图像采集装置拍摄所述文档的照片;

针对所述照片,选取最优分割效果的第一阈值;

根据选定的第一阈值,将所述照片的每一像素进行二值化处理;

对二值化处理后的图像进行毛刺去除处理;

将毛刺去除后的图像进行存储,获得扫描后的文档。

可选地,选取最优分割效果的第一阈值,包括:

采用设定的第二阈值,将所述照片中像素的灰度分为两种,得到大于第二阈值的第一类灰度,和小于等于第二阈值的第二类灰度;

获取第一类灰度的第一均值,第二类灰度的第二均值;

获取第一均值与所述照片中所有像素的灰度均值的差值、第二均值与所述照片中所有像素的灰度均值的差值的平方和;

调整所述第二阈值,重复获取调整后第二阈值对应的平方和;

在平方和最大时,将对应的第二阈值作为选取的最优分割效果的第一阈值。

可选地,选取最优分割效果的第一阈值的步骤之前,所述方法还包括:

获取所述照片中灰度的像素数量小于像素总数的第三阈值的所有灰度,将获取的所有灰度作为待删除的灰度。

可选地,选取最优分割效果的第一阈值,包括:

采用设定的第二阈值,将所述照片中像素的灰度分为两种,得到大于第二阈值的第一类灰度,和小于等于第二阈值的第二类灰度;

将所述第一类灰度和第二类灰度中属于待删除的灰度进行删除,得到处理后的第一类灰度和处理后的第二类灰度;

获取处理后的第一类灰度的第一均值,处理后的第二类灰度的第二均值;

获取第一均值与所述照片中所有像素的灰度均值的差值、第二均值与所述照片中所有像素的灰度均值的差值的平方和;

调整所述第二阈值,重复获取调整后第二阈值对应的平方和;

在平方和最大时,将对应的第二阈值作为选取的最优分割效果的第一阈值。

可选地,所述根据选定的第一阈值,将所述照片的每一像素进行二值化处理,包括:

采用公式一对所述照片的每一个像素进行二值化处理;

公式一:

其中,i为所述照片中每一个像素的灰度,t为所述第一阈值,所述i(x,y)为二值化处理后的像素灰度。

可选地,所述对二值化处理后的图像进行毛刺去除处理,包括:

对二值化处理后的图像左上角为起点,以横向和纵向建立坐标,横向以2min个像素为间隔,纵向以3个像素为间隔取离散的点(x,y);

对于每一个离散的点,依据线段选取规则分别计算横向和纵向的线段长度;

从所有线段长度中选取的不在字体范围内的线段长度;

对选取的不在字体范围内的线段长度的所有像素全部采用白色像素替换;

其中,min为大于1的自然数,min的大小是根据字体设定的。

可选地,所述待处理的文档为文字类型的纸质版文件。

可选地,所述将毛刺去除后的图像进行存储,获得扫描后的文档,包括:

将所述毛刺去除后的图像以jpg格式保存,获得扫描后的图像格式的文档;

和/或,

所述第三阈值为0.09-0.11;所述第一阈值为100-200。

可选地,所述对于每一个离散的点,依据线段选取规则分别计算横向和纵向的线段长度,包括:

针对选定的离散点的横向:

将线段长度和线段数量初始化为0,像素位移循环从0开始;

从当前选定的离散点(x,y)的左边min像素(x-min,y)开始,如果(x-min,y)为黑色像素,且(x-min,y)右边邻近像素点也是黑色像素时,线段长度加1;

从所述当前选定的离散点(x,y)的左边min像素(x-min,y)开始,如果相邻像素点为黑色像素,且(x-min,y)的右边邻近像素点是白色像素时,线段断开,保存断开位置,线段数量加1,下一个线段长度也加1;

当线段断开,并且断开的位置离选定的离散点(x,y)的距离大于等于min,则该选定的离散点邻域的线段扫描结束;

针对选定的离散点的纵向:

将线段长度和线段数量初始化为0,像素位移循环从0开始;

从当前选定的离散点(x,y)的上方3个像素(x,y-2+k)开始,如果(x,y-2+k)为黑色像素,且(x,y-2+k)下方邻近像素点也是黑色像素时,线段长度加1;

从所述当前选定的离散点(x,y)的上方3个像素(x,y-2+k)开始,如果相邻像素点为黑色像素,且(x,y-2+k)的下方邻近像素点是白色像素时,线段断开,保存断开位置,线段数量加1,下一个线段长度也加1;

当线段断开,并且断开的位置离选定的离散点(x,y)的距离大于等于3,则该选定的离散点邻域的线段扫描结束;

采用上述方式对每一个选定离散点进行该离散点的邻域线段长度的处理。

可选地,从所有线段长度中选取的不在字体范围内的线段长度,对选取的不在字体范围内的线段长度的所有像素全部采用白色像素替换,包括:

针对选定的离散点的所有邻域的线段长度,选取线段长度小于min或者大于max的线段,

根据选取的每条线段的起始位置和断开位置,获取选取的每条线段对应的像素,将获取的像素置白;

针对所有的离散点采用上述方式处理;

其中,max为预先设定的大于min的自然数。

本发明具有的有益效果:

本发明的文档快速扫描方法,可以快速扫描文件,并将文件以图片格式进行保存,扫描的快速性可以减少客户的操作时间,增加客户的体验感,同时也为客户与后天交互提供了便捷。

另外,本发明的方法处理过程简单,只有二值化和去毛刺两个过程,简化了处理过程,且选取的第一阈值适当,以最佳的方式将灰度分为两类,使得二值化图像效果更佳。

进一步地,去毛刺的步骤,针对文本中的文字设计,对文字边上,以及空白处的黑点处理有较好的效果。

附图说明

图1a和图1b为本发明一实施例提供的文档快速扫描方法的示意图;

图2为本发明另一实施例提供的文档快速扫描方法的示意图;

图3为本发明一实施例提供的选取离散点的示意图;

图4位本发明一实施例提供的文档快速扫描方法的部分示意图。

具体实施方式

为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。

本发明实施例的方法主要应用在纸质版文件扫描上,主要步骤是通过摄像头拍摄,然后经过本发明实施例的方法处理,得到扫描件图片。可以以图片的方式保存起来,也可以打印出来,变成黑白纸质扫描件。

本发明实施例的方法通常默认扫描的文件是文字类型的,如果是其它类型的(商标,图片等)会出现较差的效果。在文字扫描时具有较好效果。

本发明实施例的方法属于计算科学图像处理领域,只能对图片进行处理。本算法虽然可间接处理pdf,word文件,但是由于word,pdf本身是一种清晰文件,使用此算法没有优势。

参见图1a和图1b,图1a和图1b分别示出了本发明一实施例提供的文档快速扫描方法的示意图,本实施例的文档快速扫描方法包括下述步骤:

101、针对待处理的文档,采用图像采集装置拍摄所述文档的照片。

特别说明的是,本实施例中,待处理的文档可包括文字类型的纸质版文件。

本实施例的图像采集装置可为摄像头。

102、针对所述照片,选取最优分割效果的第一阈值。

举例来说,本实施例中采用设定的第二阈值,将所述照片中像素的灰度分为两种,得到大于第二阈值的第一类灰度,和小于等于第二阈值的第二类灰度;

获取第一类灰度的第一均值,第二类灰度的第二均值;

获取第一均值与所述照片中所有像素的灰度均值的差值、第二均值与所述照片中所有像素的灰度均值的差值的平方和;

调整所述第二阈值,重复获取调整后第二阈值对应的平方和;

在平方和最大时,将对应的第二阈值作为选取的最优分割效果的第一阈值。

103、根据选定的第一阈值,将所述照片的每一像素进行二值化处理。

举例来说,采用公式一对所述照片的每一个像素进行二值化处理;

公式一:

其中,i为所述照片中每一个像素的灰度,t为所述第一阈值,所述i(x,y)为二值化处理后的像素灰度。

104、对二值化处理后的图像进行毛刺去除处理。

举例来说,该步骤104可包括:

对二值化处理后的图像左上角为起点,以横向和纵向建立坐标,横向以2min个像素为间隔,纵向以2个像素或3个像素为间隔取离散的点(x,y);

对于每一个离散的点,依据线段选取规则分别计算横向和纵向的线段长度;

从所有线段长度中选取的不在字体范围内的线段长度;

对选取的不在字体范围内的线段长度的所有像素全部采用白色像素替换;

其中,min为大于1的自然数,其大小根据字体设定。

105、将毛刺去除后的图像进行存储,获得扫描后的文档。

通常,可将毛刺去除后的图像进行图片格式存储,获得扫描后的图像格式的文档。

例如,可将所述毛刺去除后的图像以jpg格式保存,获得扫描后的图像格式的文档。

本实施例的方法,可以快速扫描文件,并将文件以图片格式进行保存,扫描的快速性可以减少客户的操作时间,增加客户的体验感,同时也为客户与后天交互提供了便捷。

另外,本实施例的方法处理过程简单,只有二值化和去毛刺两个过程,简化了处理过程,且选取的第一阈值适当,以最佳的方式将灰度分为两类,使得二值化图像效果更佳。

进一步地,去毛刺的步骤,针对文本中的文字设计,对文字边上,以及空白处的黑点处理有较好的效果。

参见图2,图2示出了本发明一实施例提供的文档快速扫描方法的示意图,本实施例的文档快速扫描方法包括下述步骤:

201、针对待处理的文档,采用图像采集装置拍摄所述文档的照片;

202、获取所述照片中灰度的像素数量小于像素总数的第三阈值的所有灰度,将获取的所有灰度作为待删除的灰度。

本实施例中,该步骤的第三阈值为0.09-0.11;例如优选0.1。

203、根据所述照片中所有像素的灰度和待删除的灰度,选取最优分割效果的第一阈值。

举例来说,该步骤可包括:

采用设定的第二阈值,将所述照片中像素的灰度分为两种,得到大于第二阈值的第一类灰度,和小于等于第二阈值的第二类灰度;

将所述第一类灰度和第二类灰度中属于待删除的灰度中的灰度全部删除,得到处理后的第一类灰度和处理后的第二类灰度;

获取处理后的第一类灰度的第一均值,处理后的第二类灰度的第二均值;

获取第一均值与所述照片中所有像素的灰度均值的差值、第二均值与所述照片中所有像素的灰度均值的差值的平方和;

调整所述第二阈值,重复获取调整后第二阈值对应的平方和;

在平方和最大时,将对应的第二阈值作为选取的最优分割效果的第一阈值。

本实施例中,第一阈值优选在100-200之间。

该步骤中删除小于0.1权重的灰度,主要是减少处理中的灰度数量,进而提高运算速率。

204、根据选定的第一阈值,将所述照片的每一像素进行二值化处理。

举例来说,采用公式一对所述照片的每一个像素进行二值化处理;

公式一:

其中,i为所述照片中每一个像素的灰度,t为所述第一阈值,所述i(x,y)为二值化处理后的像素灰度/灰度值。

205、对二值化处理后的图像进行毛刺去除处理。

举例来说,该步骤205可包括下述的图中未示出的子步骤:

2051、对二值化处理后的图像左上角为起点,以横向和纵向建立坐标,横向以2min个像素为间隔,纵向以2或3个像素为间隔取离散的点(x,y);

2052、对于每一个离散的点,依据线段选取规则分别计算横向和纵向的线段长度;

2053、从所有线段长度中选取的不在字体范围内的线段长度;

2054、对选取的不在字体范围内的线段长度的所有像素全部采用白色像素替换;

其中,min为大于1的自然数,根据字体大小设定。

206、将毛刺去除后的图像进行图片格式存储,获得扫描后的图像格式的文档。

例如,可将所述毛刺去除后的图像以jpg格式保存,获得扫描后的图像格式的文档。

本实施例的方法,可以快速扫描文件,并将文件以图片格式进行保存,扫描的快速性可以减少客户的操作时间,增加客户的体验感,同时也为客户与后天交互提供了便捷。

针对上述的步骤2052,可举例说明如下:

针对选定的离散点的横向举例来说:

将线段长度和线段数量初始化为0,像素位移循环从0开始;

从当前选定的离散点(x,y)的左边min像素(x-min,y)开始,如果(x-min,y)为黑色像素,且(x-min,y)右边邻近点也是黑色像素时,线段长度加1;

从所述当前选定的离散点(x,y)左边min像素(x-min,y)开始,如果相邻像素点为黑色像素,且(x-min,y)的右边像素点是白色像素时,线段断开,保存断开位置,线段数量加1,下一个线段长度也加1;

当线段断开,并且断开的位置离选定的离散点(x,y)的距离大于等于min,则该离散点邻域的线段扫描结束,选择下一个离散点按照以上方法计算新离散点的横向方向的所有邻域的线段。

针对选定的离散点的纵向:

将线段长度和线段数量初始化为0,像素位移循环从0开始;

从当前选定的离散点(x,y)的上方3个像素(x,y-2+k)开始,如果(x,y-2+k)为黑色像素,且(x,y-2+k)下方邻近像素点也是黑色像素时,线段长度加1;

从所述当前选定的离散点(x,y)的上方3个像素(x,y-2+k)开始,如果相邻像素点为黑色像素,且(x,y-2+k)的下方邻近像素点是白色像素时,线段断开,保存断开位置,线段数量加1,下一个线段长度也加1;

当线段断开,并且断开的位置离选定的离散点(x,y)的距离大于等于3,则该选定的离散点邻域的线段扫描结束;

采用上述方式对每一个选定离散点进行该离散点的邻域线段长度的处理,即以此方式循环遍历所有离散点的横向和纵向的线段长度。

针对上述的步骤2053和步骤2054,可举例说明如下:

计算线段的长度之后,进行去毛刺处理:

处理方法为从原点这个离散点开始,处理方法为根据以上计算线段的长度,找出长度小于min或者大于max的线段,然后根据每条线段断开的位置,可以找出符合条件线段的组成像素(即组成这些线段的像素),然后将这些像素置白。按照这种方法遍历所有的离散点,进行去毛刺处理。

也就是说,针对选定的离散点的所有邻域的线段长度,选取线段长度小于min或者大于max的线段,根据选取的每条线段的起始位置和断开位置,获取选取的每条线段对应的像素,将获取的像素置白;针对所有的离散点采用上述方式处理。

本实施例的min根据字体大小设定,max为预先设定的大于min的自然数。

为更好的理解本发明实施例的内容,以下结合部分代码进行说明。

本发明实施例提出了一种文档快速扫描算法,算法步骤如下:

1.计算各灰度值权重

其中,i表示待处理照片/图像中像素的灰度值,ni表示待处理照片/图像中灰度为i的个数,pi表示灰度值为i的概率,mn表示图像总像素数量。

也就是说,如果某一灰度的像素数量大于像素总数的0.1倍(即第三阈值),才去计算它的权重,这样做的目的是减少权重的计算量,以及后续的计算量。第三阈值为预先设定的数值。

2.图像二值化

2.1.阈值选取

其中:pi为灰度值为i的像素权重,m1(k),m2(k)表示以为阈值将灰度分为两类时各自的灰度平均值。σ2为两个类的灰度均值与整幅图像的灰度均值差的平方和。k为计算得到的最佳阈值。

这里在一种经典算法otsu阈值分割算法的基础上进行改进,其思想是首先假定一种阈值k,将图像的灰度分成两类,一类是小于等于k的灰度,一类是大于k的灰度。

公式(2)中,求出了第一类的灰度均值,第二类的灰度均值,然后分别与整幅图像均值做差,计算两个差的平方和,otsu阈值分割算法的目的是找到一个最佳的阈值k,使得两个差的平方和最大,此时为最佳的分割效果。

公式(2)的改进之处一是由于文本字体部分灰度小于100,空白部分灰度大于200,因此最佳阈值k在100~200之间;二是,在计算类别中均值的时候不考虑某一灰度数量小于0.1mn的灰度值,提高运算速度。

2.2.二值化

图像二值化可以用公式表示为:

其中,i为原图像像素灰度值,t为2.1中计算得到的最佳阈值,i(x,y)为二值图像的像素灰度值。

3.去毛刺

图像经过二值化之后会出现空白处小黑点和文字上有毛刺现象,为了解决这一问题,需要进一步处理得到清晰的文本信息,参照图3和图4所示。

3.1、选点

以二值化后的图像左上角为起点,在以横向和纵向建立坐标,横向以2min个像素为间隔,纵向以2或3个像素为间隔取离散的点,如图3所示。

其中,min表示字体最小宽度,少于这个宽度认为不是字体部分。以及下面max为字体最大宽度,大于这个宽度,就认为不是字体的内容。

每一幅二值化后的图像都可以看成是一个多维矩阵,记录每一个像素点的位置可以方便存在出每一个像素的信息。在图像中选取离散的点为后续去除毛刺做准备,避免所有像素点判断周围判断是否存在毛刺,提高运算速度。

3.2、计算连续线段长度

对于图3中每一个离散点(x,y),分别计算横向和纵向的线段长度

①横向

下述的i=0可理解为线段长度和线段数量初始化为0.

fork=0;;k++可理解为像素位移量循环;

从该离散点左边开始如果离散点(x-min+k,y)为黑色,且这个离散点(x-min+k,y)的右边临近离散点也是黑色,则线段长度加1;

另外,如果从该离散点左边开始如果离散点(x-min+k,y)位黑色,且这个离散点(x-min+k,y)的右边邻近离散点是白色,则线段断开,保存断开位置,线段数量加1,新的线段长度也加1.

如果线段到了点(x-min+k,y),且这个为白色,则终止对点(x,y)邻域的计算。

i=0

fork=0;;k++

ifi(x-min+k,y)==0&&i(x-min+k+1,y)==0

ni++=0

elseifi(x-min+k,y)==0&&i(x-min+k+1,y)==255

kri=x-min+k

ni++++=0

elseifx-min+k>=x-min&&i(x-min+k,y)==255

break

endif

endfor

其中:i(x,y)表示图像中,坐标为(x,y)的像素灰度值/灰度,k为坐标的位移量。

②纵向

i=0

fork=0;;k++

ifi(x,y-2+k)==0&&i(x,y-2+k+1)==0

mi++=0

elseifi(x,y-2+k)==0&&i(x,y-2+k+1)==255

kci=y-3+k

mi++++=0

elseify-2+k>=y+min&&i(x-2+k,y)==255

break

endif

endfor

其中,i(x,y)表示二值图像中点(x,y)的灰度值,n表示连续黑点的个数。

其中,线段数量初始化为i=0;像素位移量循环fork=0;;k++

从选定的离散点上方开始,如果离散点(x,y-2+k)为黑色,且这个离散点(x,y-2+k)的下方邻近离散点也是黑色,则线段长度加1;

从选定的离散点上方开始,如果离散点(x,y-2+k)为黑色,且这个离散点(x,y-2+k)的下方邻近点是白色,则线段断开,保存断开位置,线段数量加1,新线段的长度也加1;

如果线段到了点(x,y-2+k),且这个为白色,则终止对点(x,y)邻域的计算。

3.3、去除毛刺

fori=1;i<=[min/2+1];i++

ifni<min||ni>max

i((kri+1-ni):kri+1,y)=255

endif

endfor

fori=1;i<=2;i++

ifmi<min||mi>max

i((kci+1-ni):kci+1,y)=255

endif

endfor

即,在b的基础上找到各离散点附近不在字体范围内的线段长度,然后进行置白处理。

上述的伪代码,通过文字解释如下:

像素位移量循环:fori=1;i<=min;i++

判断线段长度是否在文字大小范围内:ifni<min||ni>max

如果不是则置白:i((kri+1-ni):kri+1,y)=255

endif

endfor

像素位移量循环:fori=1;i<=2;i++

判断线段长度是否在文字大小范围内:ifmi<min||mi>max

如果不是则置白:i((kci+1-ni):kci+1,y)=255

endif

endfor

本实施例中,min,max的取值可根据文件字体的大小以及扫描的距离确定,kri表示第i段线段终止时的横坐标。kci表示第i段线段终止时的纵坐标。

本实施例中灰度指的是灰度值,部分地方使用灰度,部分地方使用灰度值,本实施例不对其限定。另外,本实施例的方法是对拍摄图片的进一步处理,处理后的图片即为扫描件,后台工作人员使用扫描件更方便,扫描件打印出来的纸质文件更清晰。

综上所述,本发明的方法上有如下有优点:

①处理简单,只有二值化和去毛刺两个过程,简化了处理过程。

②阈值的选取适当,以最佳的方式将灰度分为两类,使得二值化图像效果更佳。

③去毛刺步骤,针对文本中的文字设计,对文字边上,以及空白处的黑点处理有较好的效果。

最后应说明的是:以上所述的各实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或全部技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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