本公开涉及图像处理技术领域,尤其涉及一种卡片图像模糊检测方法和装置。
背景技术:
在人们的日常生活中,经常需要从证件等卡片式文件中获取相关信息。随着计算机、图像处理等技术的飞速发展,使用计算机自动识别和录入相关信息已经越来越普及。
相关技术中,通常会采用拍摄或扫描的方式采集卡片式文件的图像,然后对采集到的图像进行处理、分析,自动识别和提取图像中的相关信息。然而,若获取到的图像模糊,将会导致信息无法识别或是识别结果出错,最终可能导致相关信息录入失败。因此,对图像是否模糊的检测尤为重要。
技术实现要素:
为克服相关技术中存在的问题,本公开提供一种卡片图像模糊检测方法和装置。
根据本公开实施例的第一方面,提供一种卡片图像模糊检测方法,所述方法包括:
获取卡片图像;
确定所述卡片图像中的各行字符区域;
计算每行所述字符区域中各像素点的梯度,所述梯度包括至少两个方向的梯度;
根据计算出的所述梯度,生成所述卡片图像的至少两张梯度分布图,每张所述梯度分布图对应所述至少两个方向中的一个方向;
基于所述至少两张梯度分布图,确定所述卡片图像是否模糊。
在第一方面的一种可能的实现方式中,所述确定卡片图像中的各行字符区域,包括:
对所述卡片图像进行边缘检测,得到边缘图;
将所述边缘图进行水平投影,得到投影直方图;
根据所述投影直方图确定所述卡片图像中的各行字符区域。
在本公开实施例的另一种可能的实现方式中,所述计算每行所述字符区域中各像素点的梯度,包括:
以设定大小的滑动窗口在每行字符区域中滑动,得到多个窗口图像;
计算每个所述窗口图像中每个像素点的梯度,得到每个所述窗口图像的至少两张梯度图,每张梯度对应所述至少两个方向中的一个方向;
对每张所述梯度图分别进行归一化处理。
进一步地,所述对每个所述滑动窗口对应的每张梯度图分别进行归一化处理,包括:
分别确定每张所述梯度图的归一化因子,所述归一化因子等于梯度图内的最大灰度值与最小灰度值的差值;
采用确定出的归一化因子对对应的梯度图进行归一化处理。
更进一步地,所述采用确定出的归一化因子对对应的梯度图进行归一化处理,可以采用如下方式:
将每张所述梯度图中各像素点的原梯度值除以所述归一化因子,得到每个像素点的新的梯度值。
在第一方面的又一种可能的实施方式中,所述根据计算出的所述梯度,生成所述卡片图像的至少两张梯度分布图,包括:
按照像素点的位置,将各个所述滑动窗口的同一方向的梯度图合并;
将所述卡片图像中的非字符区域的像素点的梯度值置0,得到所述梯度分布图。
优选地,所述根据计算出的所述梯度,生成所述卡片图像的至少两张梯度分布图,还包括:
对每张所述梯度分布图分别进行中值滤波,滤波半径大于字符宽度。
在第一方面的又一种可能的实施方式中,所述基于所述至少两张梯度分布图,确定所述卡片图像是否模糊,包括:
将每张所述梯度分布图中梯度值大于阈值的区域确定为清晰区域并将所述清晰区域中的像素点标记为1,将每张所述梯度分布图中梯度值小于或等于阈值的区域确定为模糊区域,并将所述模糊区域中的像素点标记为0,得到多张二值图;
对每张所述二值图进行连通域分析,删除包含像素点数量小于设定值的连通域;
合并所述多张二值图中的模糊区域,得到清晰度分布图;
采用所述清晰度分布图,确定所述卡片图像是否模糊。
进一步地,所述采用所述清晰度分布图,确定所述卡片图像是否模糊,包括:
若所述清晰度分布图满足以下条件中的至少一种,则确定所述卡片图像模糊:
所述清晰度分布图中,模糊区域包含的像素点的数量大于设定值;
所述清晰度分布图中,模糊区域和清晰区域的分布符合设定的分布模式。
可选地,所述方法还包括:
当检测出所述卡片图像模糊时,输出提示信息。
可选地,所述卡片图像包括身份证图像、有价文件图像、居住证图像、信用卡图像、护照图像或驾驶证图像。
根据本公开实施例的第二方面,提供一种卡片图像模糊检测装置,所述装置包括:
图像获取模块,用于获取卡片图像;
字符区域确定模块,用于确定所述图像获取模块获取到的所述卡片图像中的各行字符区域;
梯度计算模块,用于计算每行所述字符区域中各像素点的梯度,所述梯度包括至少两个方向的梯度;
生成模块,用于根据所述梯度计算模块计算出的所述梯度,生成所述卡片图像的至少两张梯度分布图,每张所述梯度分布图对应所述至少两个方向中的一个方向;
模糊确定模块,用于基于所述生成模块生成的所述至少两张梯度分布图,确定所述卡片图像是否模糊。
在第二方面的一种可能的实现方式中,所述字符区域确定模块,包括:
边缘检测子模块,用于对所述卡片图像进行边缘检测,得到边缘图;
投影子模块,用于对所述边缘检测子模块得到的所述边缘图进行水平投影,得到投影直方图;
区域确定子模块,用于根据所述投影子模块得到的所述投影直方图,确定所述卡片图像中的各行字符区域。
在第二方面的另一种可能的实现方式中,所述梯度计算模块,包括:
滑动子模块,用于以设定大小的滑动窗口在所述字符区域确定模块确定出的每行字符区域中滑动,得到多个窗口图像;
梯度图生成子模块,用于计算每个所述窗口图像中每个像素点的梯度,得到每个所述窗口图像的至少两张梯度图,每张梯度对应所述至少两个方向中的一个方向;
归一化子模块,用于对所述梯度图生成子模块得到的每张所述梯度图分别进行归一化处理。
进一步地,所述归一化子模块,用于分别确定每张所述梯度图的归一化因子,所述归一化因子等于梯度图内的最大灰度值与最小灰度值的差值;采用确定出的归一化因子对对应的梯度图进行归一化处理。
更进一步地,所述归一化子模块,用于将每张所述梯度图中各像素点的原梯度值除以所述归一化因子,得到每个像素点的新的梯度值。
在第二方面的又一种可能的实现方式中,所述生成模块,用于按照像素点的位置,将各个所述滑动窗口的同一方向的梯度图合并;将所述卡片图像中的非字符区域的像素点的梯度值置0,得到所述梯度分布图。
优选地,所述装置还包括:
滤波模块,用于对所述生成模块得到的每张所述梯度分布图分别进行中值滤波,滤波半径大于字符宽度。
在第二方面的又一种可能的实施方式中,所述模糊确定模块,包括:
二值化子模块,用于将每张所述梯度分布图中梯度值大于阈值的区域确定为清晰区域并将所述清晰区域中的像素点标记为1,将每张所述梯度分布图中梯度值小于或等于阈值的区域确定为模糊区域,并将所述模糊区域中的像素点标记为0,得到多张二值图;
连通域分析子模块,用于对每张所述二值图进行连通域分析,删除包含像素点数量小于设定值的连通域;
合并子模块,用于合并所述连通域分析子模块处理后的所述多张二值图中的模糊区域,得到清晰度分布图;
模糊确定子模块,用于采用所述合并子模块得到的所述清晰度分布图,确定所述卡片图像是否模糊。
进一步地,所述模糊确定子模块,用于当所述合并子模块得到的所述清晰度分布图满足以下条件中的至少一种时,确定所述卡片图像模糊:
所述清晰度分布图中,模糊区域包含的像素点的数量大于设定值;
所述清晰度分布图中,模糊区域和清晰区域的分布符合设定的分布模式。
可选地,所述装置还包括:
输出模块,用于当检测出所述卡片图像模糊时,输出提示信息。
可选地,所述卡片图像包括身份证图像、有价文件图像、居住证图像、信用卡图像、护照图像或驾驶证图像。
根据本公开实施例的第三方面,提供一种卡片图像模糊检测装置,所述装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取卡片图像;
确定所述卡片图像中的各行字符区域;
计算每行所述字符区域中各像素点的梯度,所述梯度包括至少两个方向的梯度;
根据计算出的所述梯度,生成所述卡片图像的至少两张梯度分布图,每张所述梯度分布图对应所述至少两个方向中的一个方向;
基于所述至少两张梯度分布图,确定所述卡片图像是否模糊。
本公开的实施例提供的技术方案可以包括以下有益效果:
由于在进行卡片图像信息自动识别时,通常只需要识别出一些设定信息,因此,其只需要关注设定信息对应的区域是否能够检测出字符等,也就是说,在进行模糊检测时,只需要关注设定信息对应的区域是否模糊,因此,在本公开实施例中,通过计算卡片图像的字符区域中的每个像素点的至少两个方向的梯度,并根据计算出的梯度,生成该卡片图像的至少两张梯度分布图,基于这两张梯度分布图来确定卡片图像是否模糊,可以准确识别出所有的模糊图像,检测准确度高。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种卡片图像模糊检测方法的流程图;
图2是根据一示例性实施例示出的另一种卡片图像模糊检测方法的流程图;
图3是根据一示例性实施例示出的一种卡片图像检模糊检测装置的框图;
图4是根据一示例性实施例示出的另一种卡片图像模糊检测装置的框图;
图5是根据一示例性实施例示出的又一种卡片图像模糊检测装置的框图;
图6是根据一示例性实施例示出的再一种卡片图像模糊检测装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
本公开实施例可以适用于证件等卡片式文件拍照后上传验证信息的场景,尤其适用于手持证件拍照或是手持终端设备给证件拍照的场景,这是因为这两种情况下,手的抖动都可能导致拍摄得到的卡片图像模糊,即运动模糊。当然,被公开实施例同样适用于在证件拍照时,由于其他因素造成卡片图像模糊的情况,例如虚焦等,本公开对此不做限制。本公开尤其适用于图像信息自动识别技术,通过预先检测卡片图像是否模糊,并根据结果确定是否放弃本次识别。
需要说明的是,在本公开实施例中,卡片图像指卡片式文件拍摄得到的图像。
图1是根据一示例性实施例示出的一种卡片图像模糊检测方法,该方法可以用于终端设备中,终端设备包括但不限于手机、平板电脑、笔记本电脑等,该方法还可以用于服务器中,如图1所示,该方法包括以下步骤。
在步骤S101中,获取卡片图像。
其中,卡片图像的获取方式包括但不限于以下方式:
采用图像采集设备(例如摄像头、数码相机、扫描仪等)采集卡片图像;
从存储介质或存储设备中获取卡片图像。
其中,卡片图像包括但不限于身份证图像、居住证图像、信用卡图像、有价文件(例如支票等)图像、护照图像或驾驶证图像等。
该步骤S101中获取到的卡片图像可以为灰度图像,也可以为彩色图像(例如RGB(Red、Green、Blue,红绿蓝)格式的彩色图像)。
容易知道,若卡片图像是灰度图像,则可以直接执行后续步骤,若卡片图像是彩色图像,则需要先将其转换为灰度图像。
在步骤S102中,确定卡片图像中的各行字符区域。
在本公开实施例中,字符包括但不限于汉字、数字、英文等各种形式的字符。字符区域是指包含有字符的区域。
由于卡片图像中,字符通常按行分布,因此,该步骤12中,以行为单位确定卡片图像中的字符区域。例如,以身份证为例,其中的字符区域可以包括姓名行、出生日期行、住址行、身份证编号行等,当然,前述住址行等可以是一行也可以是多行。
在步骤S103中,计算每行所述字符区域中各像素点的梯度,该梯度包括至少两个方向的梯度。
其中,至少两个方向均匀分布在0~180°范围内,优选为4~8个方向,更优选为4个方向,例如,0°、45°、90°和135°。
在步骤S104中,根据计算出的梯度,生成卡片图像的至少两张梯度分布图。
其中,每张梯度分布图对应步骤S103中的至少两个方向中的一个方向。例如,若在步骤S103中在每个像素点,均计算了四个方向的梯度,且这四个方向分别为0°、45°、90°和135°,则在该步骤S104中,会生成四张梯度分布图,这四张梯度分布图分别对应0°、45°、90°和135°这四个方向,即每张梯度分布图中像素点的梯度的方向相同,不同梯度分布图中的像素点的梯度的方向不同。
在步骤S105中,基于生成的至少两张梯度分布图,确定卡片图像是否模糊。
可选地,检测出卡片图像模糊后,该方法还可以包括:输出提示信息,以提醒用户卡片图像模糊。
由于在进行卡片图像信息自动识别时,通常只需要识别出一些设定信息,因此,其只需要关注设定信息对应的区域是否能够检测出字符等,也就是说,在进行模糊检测时,只需要关注设定信息对应的区域是否模糊,因此,在本公开实施例中,通过计算卡片图像的字符区域中的每个像素点的至少两个方向的梯度,并根据计算出的梯度,生成该卡片图像的至少两张梯度分布图,基于这两张梯度分布图来确定卡片图像是否模糊,可以准确识别出所有的模糊图像,检测准确度高。
图2是根据一示例性实施例示出的另一种卡片图像模糊检测方法,该卡片图像模糊检测方法可以用于终端设备中,终端设备包括但不限于手机、平板电脑、笔记本电脑等;该方法还可以用于服务器中。本实施例将以身份证图像为例进行详细说明,容易知道,除了身份证图像以外,卡片图像还可以为有价文件(例如支票等)图像、居住证图像、信用卡图像、护照图像或驾驶证图像等。如图2所示,该方法包括以下步骤。
在步骤S201中,获取卡片图像。
其中,卡片图像的获取方式包括但不限于以下方式:
采用图像采集设备(例如摄像头、数码相机、扫描仪等)采集卡片图像;
从存储介质或存储设备中获取卡片图像。
该步骤S201中获取到的卡片图像可以为灰度图像,也可以为彩色图像(例如RGB格式的彩色图像)。
容易知道,若卡片图像是灰度图像,则可以直接执行后续步骤,若卡片图像是彩色图像,则需要先将其转换为灰度图像。
在步骤S202中,对该卡片图像进行边缘检测,得到边缘图。
其中,边缘检测可以采用Canny边缘检测算法或Sobel算法等算法。
在步骤S203中,将边缘图进行水平投影,得到投影直方图。
在步骤S204中,基于该投影直方图,确定卡片图像中的各行字符区域。
对边缘图进行水平投影后,字符所在行响应高,空白区域响应低,通过在投影直方图上确定局部最小点,即可确定每行字符的上下边界,进而确定出各行字符区域。
在本公开实施例中,字符包括但不限于汉字、数字、英文等各种形式的字符。
通过步骤S202~S204,即可确定出卡片图像中的各行字符区域。
在步骤S205中,以设定大小的滑动窗口在每行字符区域中滑动,得到多个窗口图像,并为每个窗口图像生成至少两张梯度图,每张梯度图对应不同的方向。
实现时,该滑动窗口的大小可以为字符的外接矩形的大小。
该至少两个方向均匀分布在0~180°范围内,优选为4~8个方向,更优选为4个方向,例如,0°、45°、90°和135°。
对于每个窗口图像而言,都会计算出其中每个像素点的至少两个方向的梯度值,从而得到至少两张大小相同的梯度图。在滑动窗口遍历完成之后,即可得到以行为单位的所有字符区域的梯度图。
在步骤S206中,对每一张梯度图分别进行归一化处理。
该步骤S206可以包括:
分别确定每张梯度图的归一化因子,该归一化因子等于梯度图内的最大灰度值与最小灰度值的差值;
采用确定出的归一化因子对对应的梯度图进行归一化处理。
进一步地,采用确定出的归一化因子对对应的梯度图进行归一化处理,采用如下方式:
将每张梯度图中各像素点的原梯度值除以所述归一化因子,得到每个像素点的新的梯度值,从而得到新的梯度图。
在步骤S207中,按照像素点的位置,将各个窗口图像的同一方向的梯度图合并。
按照像素点在卡片图像中的位置,将各个窗口图像的同一方向的梯度图合并之后,就可以得到字符区域的梯度图。
容易知道,在本实施例中,该步骤S206中合并的是进行归一化处理后得到的新的梯度图。
在步骤S208中,将卡片图像中的非字符区域的像素点的梯度值置0,得到至少两张梯度分布图。
其中,每张梯度分布图对应一个方向。
在步骤S209中,对每张梯度分布图分别进行中值滤波。
在该步骤S209中,滤波半径可以大于字符宽度,例如可以为字符宽度的2倍~4倍,优选为2倍。
中值滤波是指将每一像素点的灰度值设置为以该像素点为中心,滤波半径范围内的所有像素点的灰度值的中值,以去除因为字符线条简单引起的计算误差。
由于一般情况下,字符的线条比较复杂,因此梯度值会有多个方向的响应。如果梯度值在所有方向响应都很小,则可能出现了虚焦模糊;如果只在某一个方向上响应很小,则可能是运动模糊或者该字符线条太简单,例如汉字“一”,但相邻几个字符同时属于简单字符的概率较低,所以通过中值滤波即可去除字符线条过于简单带来的计算误差。
在步骤S210中,对每张梯度分布图分别进行二值化处理,得到多张二值图。
对于某个方向的梯度分布图而言,该步骤S210可以包括:
将梯度分布图中梯度值大于阈值的区域确定为清晰区域,梯度值小于或等于阈值的区域确定为模糊区域;其中,清晰区域可以标记为1,模糊区域可以标记为0。该阈值为经验值,可以根据实际需要设定,例如,可以设置为50。
在步骤S211中,对每张二值图进行连通域分析,删除包含像素点数量小于设定值的连通域。
删除包含像素点数量小于设定值的连通域,即将该连通域对应的像素点标记为0。
在步骤S212中,合并多张二值图中的模糊区域,得到清晰度分布图。
对该梯度分布图进行连通域分析,删除面积小于设定值的连通域并将删除后的连通域对应的区域标记为0。
其中,设定值为经验值,可以根据实际需要设置,例如,设置为证件图像的面积的1/16。
在本实施例中,该步骤S212可以包括:
按像素点对各二值图进行求最小值操作,也就是说,在多个方向的二值图中,某个像素点只要有一个方向是模糊的,则在清晰度分布图中,该像素点也是模糊的。
在步骤S213中,采用所述清晰度分布图,确定所述卡片图像是否模糊。
若清晰度分布图满足以下条件中的至少一种,则确定卡片图像模糊:
第一、清晰度分布图中,模糊区域包含的像素点的数量大于设定值(即值为0的像素点的数量大于设定值);
第二、清晰度分布图中,模糊区域和清晰区域的分布符合设定的分布模式。
该设定的分布模式可以通过对多张模糊图片进行统计得到。实现时,可以将各种原因导致的模糊图片按照类型进行分析,比如虚焦、运动模糊、整体模糊等,总结出模糊区域的各种分布模式。例如,该设定的分布模式包括中心清晰周围模糊、左边清晰右边模糊、右边清晰左边模糊、上边清晰下边模糊或者下边清晰上边模糊。
实现时,可以采用这两种条件中的任意一种来判断卡片图像是否模糊,而为了提高判断结果的准确度,可以采用两个条件的结合来判断卡片图像是否模糊。
进一步地,当采用的条件包含第二个条件时,该方法还可以包括:
根据模糊区域和清晰区域的分布模式,确定卡片图像的模糊原因。
模糊原因包括但不限于虚焦模糊、运动模糊等。
可选地,该方法还可以包括:
当确定出卡片图像模糊时,输出提示信息。
当本实施例的方法应用于终端设备时,输出提示信息的方式包括但不限于语音提示、灯光提示、文本提示等,以提示用户卡片图像被遮挡。
当本实施例的方法应用于服务器时,输出提示信息包括:向终端设备发送提示消息,该提示消息用于触发终端设备输出提示信息;或者,直接输出提示信息,该提示信息用于提示用户卡片图像模糊。同样地,直接输出提示信息时,输出方式包括但不限于语音提示、灯光提示、文本提示等。
通过输出提示信息,可以使得用户快速了解到该卡片图像模糊,可能无法通过验证,以便用户即时更换,为用户节省时间。
由于在进行卡片图像信息自动识别时,通常只需要识别出一些设定信息,因此,其只需要关注设定信息对应的区域是否能够检测出字符等,也就是说,在进行模糊检测时,只需要关注设定信息对应的区域是否模糊,因此,在本公开实施例中,通过计算卡片图像的字符区域中的每个像素点的至少两个方向的梯度,并根据计算出的梯度,生成该卡片图像的至少两张梯度分布图,基于这两张梯度分布图来确定卡片图像是否模糊,可以准确识别出所有的模糊图像,检测准确度高。
图3是根据一示例性实施例示出的一种卡片图像模糊检测装置的框图,参照图3,该装置包括:图像获取模块410、字符区域确定模块420、梯度计算模块430、生成模块440和模糊确定模块450。
其中,图像获取模块410用于获取卡片图像。字符区域确定模块420用于确定图像获取模块410获取到的卡片图像中的各行字符区域。梯度计算模块430用于计算每行字符区域中各像素点的梯度,梯度包括至少两个方向的梯度。生成模块440用于根据梯度计算模块430计算出的梯度,生成卡片图像的至少两张梯度分布图,每张梯度分布图对应至少两个方向中的一个方向。模糊确定模块450用于基于生成模块440生成的至少两张梯度分布图,确定卡片图像是否模糊。
其中,卡片图像包括但不限于身份证图像、居住证图像、信用卡图像、有价文件(例如支票等)图像、护照图像或驾驶证图像等。
进一步地,图像获取模块410获取卡片图像的方式可以参见步骤S101;字符区域确定模块420进行字符区域确定的方式可以参见步骤S102;梯度计算模块430计算梯度的方式可以参见步骤S103;生成模块440生成梯度分布图的方式可以参见步骤S104;模糊确定模块450确定卡片图像是否模糊的方式可以参见步骤S105,在此省略详细描述。
由于在进行卡片图像信息自动识别时,通常只需要识别出一些设定信息,因此,其只需要关注设定信息对应的区域是否能够检测出字符等,也就是说,在进行模糊检测时,只需要关注设定信息对应的区域是否模糊,因此,在本公开实施例中,通过计算卡片图像的字符区域中的每个像素点的至少两个方向的梯度,并根据计算出的梯度,生成该卡片图像的至少两张梯度分布图,基于这两张梯度分布图来确定卡片图像是否模糊,可以准确识别出所有的模糊图像,检测准确度高。
图4是根据一示例性实施例示出的一种卡片图像模糊检测的装置的框图,参照图4,该装置包括:图像获取模块510、字符区域确定模块520、梯度计算模块530、生成模块540和模糊确定模块550。
其中,图像获取模块510用于获取卡片图像。字符区域确定模块520用于对图像获取模块510获取到的卡片图像进行证件边界检测。梯度计算模块530用于在字符区域确定模块520检测到的证件边界的范围内进行字符检测,得到字符区域。生成模块540用于将梯度计算模块530检测出的字符区域与卡片图像对应的证件字符模板中的字符区域进行对比,确定未被检测出的字符区域。模糊确定模块550用于根据生成模块540确定出的未被检测出的字符区域,生成检测结果,该检测结果用于表示卡片图像是否可能被遮挡。
其中,卡片图像包括但不限于身份证图像、居住证图像、信用卡图像、有价文件(例如支票等)图像、护照图像或驾驶证图像等。
在本公开实施例的一种可能的实现方式中,字符区域确定模块520,包括:
边缘检测子模块521,用于对卡片图像进行边缘检测,得到边缘图;
投影子模块522,用于对边缘检测子模块得到的边缘图进行水平投影,得到投影直方图;
区域确定子模块523,用于根据投影子模块得到的投影直方图,确定卡片图像中的各行字符区域。。
在一种可能的实现方式中,梯度计算模块530,包括:
滑动子模块531,用于以设定大小的滑动窗口在字符区域确定模块确定出的每行字符区域中滑动,得到多个窗口图像;
梯度图生成子模块532,用于计算每个窗口图像中每个像素点的梯度,得到每个窗口图像的至少两张梯度图,每张梯度对应至少两个方向中的一个方向;
归一化子模块533,用于对梯度图生成子模块得到的每张梯度图分别进行归一化处理。
在一种可能的实现方式中,归一化子模块533,用于分别确定每张梯度图的归一化因子,归一化因子等于梯度图内的最大灰度值与最小灰度值的差值;采用确定出的归一化因子对对应的梯度图进行归一化处理。
进一步地,归一化子模块533,用于将每张梯度图中各像素点的原梯度值除以归一化因子,得到每个像素点的新的梯度值。
在一种可能的实现方式中,生成模块540,用于按照像素点的位置,将各个滑动窗口的同一方向的梯度图合并;将卡片图像中的非字符区域的像素点的梯度值置0,得到梯度分布图。
可选地,装置还包括:
滤波模块560,用于对生成模块540得到的每张梯度分布图分别进行中值滤波,滤波半径大于字符宽度。
在一种可能的实现方式中,模糊确定模块550,包括:
二值化子模块551,用于将每张梯度分布图中梯度值大于阈值的区域确定为清晰区域并将清晰区域中的像素点标记为1,将每张梯度分布图中梯度值小于或等于阈值的区域确定为模糊区域,并将模糊区域中的像素点标记为0,得到多张二值图;
连通域分析子模块552,用于对每张二值图进行连通域分析,删除包含像素点数量小于设定值的连通域;
合并子模块553,用于合并连通域分析子模块处理后的多张二值图中的模糊区域,得到清晰度分布图;
模糊确定子模块554,用于采用合并子模块得到的清晰度分布图,确定卡片图像是否模糊。
其中,模糊确定子模块554,用于当合并子模块得到的清晰度分布图满足以下条件中的至少一种时,确定卡片图像模糊:
清晰度分布图中,模糊区域包含的像素点的数量大于设定值;
清晰度分布图中,模糊区域和清晰区域的分布符合设定的分布模式。
可选地,装置还包括:
输出模块570,用于当检测出卡片图像模糊时,输出提示信息。
需要说明的是,图像获取模块510获取卡片图像的方式可以参见步骤S201;字符区域确定模块520进行字符区域确定的方式可以参见步骤S202-S204;梯度计算模块530计算梯度的方式可以参见步骤S205-S206;生成模块540生成梯度分布图的方式可以参见步骤S208;滤波模块560进行中值滤波的方式可以参见步骤S209;模糊确定模块550确定卡片图像是否模糊的方式可以参见步骤S210-S213,在此省略详细描述。
由于在进行卡片图像信息自动识别时,通常只需要识别出一些设定信息,因此,其只需要关注设定信息对应的区域是否能够检测出字符等,也就是说,在进行模糊检测时,只需要关注设定信息对应的区域是否模糊,因此,在本公开实施例中,通过计算卡片图像的字符区域中的每个像素点的至少两个方向的梯度,并根据计算出的梯度,生成该卡片图像的至少两张梯度分布图,基于这两张梯度分布图来确定卡片图像是否模糊,可以准确识别出所有的模糊图像,检测准确度高。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图5是根据一示例性实施例示出的一种卡片图像模糊检测的装置600的框图。例如,装置600可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图5,装置600可以包括以下一个或多个组件:处理组件602,存储器604,电力组件606,多媒体组件608,音频组件610,输入/输出(I/O)的接口612,传感器组件614,以及通信组件616。
处理组件602通常控制装置600的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件602可以包括一个或多个处理器620来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件602可以包括一个或多个模块,便于处理组件602和其他组件之间的交互。例如,处理组件602可以包括多媒体模块,以方便多媒体组件608和处理组件602之间的交互。
存储器604被配置为存储各种类型的数据以支持在装置600的操作。这些数据的示例包括用于在装置600上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器604可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件606为装置600的各种组件提供电力。电力组件606可以包括电源管理系统,一个或多个电源,及其他与为装置600生成、管理和分配电力相关联的组件。
多媒体组件608包括在所述装置600和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件608包括一个前置摄像头和/或后置摄像头。当装置600处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件610被配置为输出和/或输入音频信号。例如,音频组件610包括一个麦克风(MIC),当装置600处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器604或经由通信组件616发送。在一些实施例中,音频组件610还包括一个扬声器,用于输出音频信号。
I/O接口612为处理组件602和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件614包括一个或多个传感器,用于为装置600提供各个方面的状态评估。例如,传感器组件614可以检测到设备600的打开/关闭状态,组件的相对定位,例如所述组件为装置600的显示器和小键盘,传感器组件614还可以检测装置600或装置600一个组件的位置改变,用户与装置600接触的存在或不存在,装置600方位或加速/减速和装置600的温度变化。传感器组件614可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件614还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件614还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件616被配置为便于装置600和其他设备之间有线或无线方式的通信。装置600可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件616经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件616还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置600可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器604,上述指令可由装置600的处理器620执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行一种卡片图像模糊检测的方法,所述方法包括:
获取卡片图像;
确定卡片图像中的各行字符区域;
计算每行字符区域中各像素点的梯度,梯度包括至少两个方向的梯度;
根据计算出的梯度,生成卡片图像的至少两张梯度分布图,每张梯度分布图对应至少两个方向中的一个方向;
基于至少两张梯度分布图,确定卡片图像是否模糊。
在一种可能的实现方式中,确定卡片图像中的各行字符区域,包括:
对卡片图像进行边缘检测,得到边缘图;
将边缘图进行水平投影,得到投影直方图;
根据投影直方图确定卡片图像中的各行字符区域。
在本公开实施例的另一种可能的实现方式中,计算每行字符区域中各像素点的梯度,包括:
以设定大小的滑动窗口在每行字符区域中滑动,得到多个窗口图像;
计算每个窗口图像中每个像素点的梯度,得到每个窗口图像的至少两张梯度图,每张梯度对应至少两个方向中的一个方向;
对每张梯度图分别进行归一化处理。
进一步地,对每个滑动窗口对应的每张梯度图分别进行归一化处理,包括:
分别确定每张梯度图的归一化因子,归一化因子等于梯度图内的最大灰度值与最小灰度值的差值;
采用确定出的归一化因子对对应的梯度图进行归一化处理。
更进一步地,采用确定出的归一化因子对对应的梯度图进行归一化处理,可以采用如下方式:
将每张梯度图中各像素点的原梯度值除以归一化因子,得到每个像素点的新的梯度值。
在又一种可能的实施方式中,根据计算出的梯度,生成卡片图像的至少两张梯度分布图,包括:
按照像素点的位置,将各个滑动窗口的同一方向的梯度图合并;
将卡片图像中的非字符区域的像素点的梯度值置0,得到梯度分布图。
优选地,根据计算出的梯度,生成卡片图像的至少两张梯度分布图,还包括:
对每张梯度分布图分别进行中值滤波,滤波半径大于字符宽度。
在又一种可能的实施方式中,基于至少两张梯度分布图,确定卡片图像是否模糊,包括:
将每张梯度分布图中梯度值大于阈值的区域确定为清晰区域并将清晰区域中的像素点标记为1,将每张梯度分布图中梯度值小于或等于阈值的区域确定为模糊区域,并将模糊区域中的像素点标记为0,得到多张二值图;
对每张二值图进行连通域分析,删除包含像素点数量小于设定值的连通域;
合并多张二值图中的模糊区域,得到清晰度分布图;
采用清晰度分布图,确定卡片图像是否模糊。
进一步地,采用清晰度分布图,确定卡片图像是否模糊,包括:
若清晰度分布图满足以下条件中的至少一种,则确定卡片图像模糊:
清晰度分布图中,模糊区域包含的像素点的数量大于设定值;
清晰度分布图中,模糊区域和清晰区域的分布符合设定的分布模式。
可选地,方法还包括:
当检测出卡片图像模糊时,输出提示信息。
可选地,卡片图像包括身份证图像、有价文件图像、居住证图像、信用卡图像、护照图像或驾驶证图像。
图6是根据一示例性实施例示出的一种卡片图像模糊检测的装置700的框图。例如,装置700可以被提供为一服务器。参照图6,装置700包括处理组件722,其进一步包括一个或多个处理器,以及由存储器732所代表的存储器资源,用于存储可由处理组件722的执行的指令,例如应用程序。存储器732中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件722被配置为执行指令,以执行上述方法。
装置700还可以包括一个电源组件726被配置为执行装置700的电源管理,一个有线或无线网络接口750被配置为将装置700连接到网络,和一个输入输出(I/O)接口758。装置700可以操作基于存储在存储器732的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。