CN106127836B - 验证码图片生成方法及装置 - Google Patents
验证码图片生成方法及装置 Download PDFInfo
- Publication number
- CN106127836B CN106127836B CN201610509508.3A CN201610509508A CN106127836B CN 106127836 B CN106127836 B CN 106127836B CN 201610509508 A CN201610509508 A CN 201610509508A CN 106127836 B CN106127836 B CN 106127836B
- Authority
- CN
- China
- Prior art keywords
- color
- pixel
- component
- target area
- identifying code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/0007—Image acquisition
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
Abstract
本申请提供了一种验证码图片生成方法,该方法确定前景字符待显示在背景图片中的区域后,将该区域中每个像素的颜色与前景字符中对应像素的颜色进行合成,合成后的颜色填充到该区域的对应像素中,从而生成验证码图片。本方法生成的验证码图片中,验证码的颜色与背景图片的颜色有关,因此,验证码的颜色并非固定的,从而提高了将验证码从背景图片中提取出来的难度,验证码的安全性较高。另外,背景图片丰富的内容也干扰了对字符的提取和识别,也在一定程度上提高了验证码的安全性。另外,本申请还提供了一种验证码图片生成装置,用以保证上述方法在实际中的应用及实现。
Description
技术领域
本申请涉及验证码生成技术领域,更具体地,是验证码图片生成方法及装置。
背景技术
验证码,应用在各种公共系统中,用来判断访问公共系统的用户是人还是机器人程序。机器人程序通过自动执行,恶意破坏公共系统,如票务系统中,机器人程序可以恶意刷票;论坛系统中,机器人程序可以论坛灌水等等。而验证码的应用,可以有效识别出机器人程序,从而保护合法用户对公共系统的正常访问。
目前,验证码图片中的验证码颜色为固定的颜色如黑色。此种验证码图片容易被恶意程序破解,即容易从验证码图片中提取出验证码,验证码图片的安全性较低。
发明内容
有鉴于此,本申请提供了一种验证码图片的生成方法,用以提高生成的验证码图片的安全性。另外,本申请还提供了一种验证码图片的生成装置,用以保证所述方法在实际中的应用及实现。
为实现所述目的,本申请提供的技术方案如下:
本申请的第一方面提供了一种验证码图片生成方法,包括:
获取背景图片及前景字符;
根据所述前景字符待显示在所述背景图片中的位置,确定所述背景图片中与所述前景字符重叠的目标区域;
将所述目标区域中的像素的原始颜色与所述前景字符中相重叠的像素的颜色进行合成,获得所述目标区域中的像素的目标颜色;
将所述目标区域中的像素的原始颜色替换为所述目标颜色,获得验证码图片。
可选地,所述将所述目标区域中的像素的原始颜色与所述前景字符中相重叠的像素的颜色进行合成,获得所述目标区域中的像素的目标颜色,包括:
将所述目标区域中的像素的原始颜色偏置后,获得偏置颜色;其中,所述偏置颜色与所述原始颜色的差值属于人眼可辨别色差范围;
将所述目标区域中的像素的偏置颜色与所述前景字符中相重叠的像素的颜色进行线性加权,获得所述目标区域中的像素的目标颜色。
可选地,所述目标区域中的像素的颜色是由多个颜色分量合成的,且不同的颜色分量对应不同的颜色空间;
相应地,所述将所述目标区域中的像素的原始颜色偏置后,获得偏置颜色,包括:
针对所述目标区域中的像素,获得所述像素的每个颜色空间的偏置分量;
将所述像素的各个所述偏置分量合成后获得所述像素的偏置颜色;
其中,获得所述像素的任一颜色空间的偏置分量的具体步骤包括:
根据该颜色空间的不同颜色分量的分布情况,对该颜色空间的颜色分量进行分组;
为不同的分组生成不同的偏置值;其中,所述偏置值为预设偏置范围内的数值,所述预设偏置范围反映人眼可辨别色差的范围;
将所述分组内的颜色分量与对应的偏置值相加,获得所述像素在该颜色空间的偏置分量。
可选地,所述根据该颜色空间的不同颜色分量的分布情况,对该颜色空间的颜色分量进行分组,包括:
针对所述目标区域的所述颜色空间,生成该颜色空间的颜色分量的分布直方图;其中,所述分布直方图中的横坐标表示颜色分量,纵坐标表示颜色分量的个数;
确定各个所述颜色分量的个数的和值的平均值;
根据所述平均值,将所述分布直方图中横坐标表示的颜色分量划分为多组,其中,每个分组内的颜色分量的个数的和值与所述平均值的差值低于预设值。
可选地,所述将所述目标区域中的像素的偏置颜色与所述前景字符中相重叠的像素的颜色进行线性加权,获得所述目标区域中的像素的目标颜色,包括:
对所述目标区域中的每个像素的每个颜色空间,均执行下述步骤:
在所述前景字符中,获取像素的颜色强度;
确定所述目标区域中与所述像素相重叠的像素的所述颜色空间的原始分量及偏置分量;其中,所述原始分量为该像素在背景图片中的颜色分量;
使用预设线性加权算法((256-m)*a+m*b)/256,确定所述像素的目标分量,目标分量;其中,m为像素的颜色强度,a为像素的偏置分量,b为像素的原始分量;
各个颜色空间的目标分量用来组合像素的目标颜色。
本申请的第二方面提供了一种验证码图片生成装置,包括:
图片及字符获取模块,用于获取背景图片及前景字符;
重叠区域确定模块,用于根据所述前景字符待显示在所述背景图片中的位置,确定所述背景图片中与所述前景字符重叠的目标区域;
重叠区域颜色合成模块,用于将所述目标区域中的像素的原始颜色与所述前景字符中相重叠的像素的颜色进行合成,获得所述目标区域中的像素的目标颜色;
重叠区域颜色替换模块,用于将所述目标区域中的像素的原始颜色替换为所述目标颜色,获得验证码图片。
可选地,在将所述目标区域中的像素的原始颜色与所述前景字符中相重叠的像素的颜色进行合成,获得所述目标区域中的像素的目标颜色方面,所述重叠区域颜色合成模块用于:
将所述目标区域中的像素的原始颜色偏置后,获得偏置颜色;其中,所述偏置颜色与所述原始颜色的差值属于人眼可辨别色差范围;
将所述目标区域中的像素的偏置颜色与所述前景字符中相重叠的像素的颜色进行线性加权,获得所述目标区域中的像素的目标颜色。
可选地,所述目标区域中的像素的颜色是由多个颜色分量合成的,且不同的颜色分量对应不同的颜色空间;
相应地,所述将所述目标区域中的像素的原始颜色偏置后,获得偏置颜色方面,所述重叠区域颜色合成模块用于:
针对所述目标区域中的像素,获得所述像素的每个颜色空间的偏置分量;
将所述像素的各个所述偏置分量合成后获得所述像素的偏置颜色;
其中,获得所述像素的任一颜色空间的偏置分量的具体步骤包括:
根据该颜色空间的不同颜色分量的分布情况,对该颜色空间的颜色分量进行分组;
为不同的分组生成不同的偏置值;其中,所述偏置值为预设偏置范围内的数值,所述预设偏置范围反映人眼可辨别色差的范围;
将所述分组内的颜色分量与对应的偏置值相加,获得所述像素在该颜色空间的偏置分量。
可选地,在根据该颜色空间的不同颜色分量的分布情况,对该颜色空间的颜色分量进行分组的方面,所述重叠区域颜色合成模块用于:
针对所述目标区域的所述颜色空间,生成该颜色空间的颜色分量的分布直方图;其中,所述分布直方图中的横坐标表示颜色分量,纵坐标表示颜色分量的个数;
确定各个所述颜色分量的个数的和值的平均值;
根据所述平均值,将所述分布直方图中横坐标表示的颜色分量划分为多组,其中,每个分组内的颜色分量的个数的和值与所述平均值的差值低于预设值。
可选地,在所述将所述目标区域中的像素的偏置颜色与所述前景字符中相重叠的像素的颜色进行线性加权,获得所述目标区域中的像素的目标颜色方面,所述重叠区域颜色合成模块用于:
对所述目标区域中的每个像素的每个颜色空间,均执行下述步骤:
在所述前景字符中,获取像素的颜色强度;
确定所述目标区域中与所述像素相重叠的像素的所述颜色空间的原始分量及偏置分量;其中,所述原始分量为该像素在背景图片中的颜色分量;
使用预设线性加权算法((256-m)*a+m*b)/256,确定所述像素的目标分量,目标分量;其中,m为像素的颜色强度,a为像素的偏置分量,b为像素的原始分量;
各个颜色空间的目标分量用来组合像素的目标颜色。
由以上技术方案可知,本申请提供了一种验证码图片生成方法,该方法确定前景字符待显示在背景图片中的区域后,将该区域中每个像素的颜色与前景字符中对应像素的颜色进行合成,合成后的颜色填充到该区域的对应像素中,从而生成验证码图片。本方法生成的验证码图片中,验证码的颜色与背景图片的颜色有关,不同的背景图片生成的验证码的颜色可能不同,同一背景图片中不同的验证码的颜色可能不同,同一验证码中不同的像素的颜色也可能不同,因此,验证码的颜色并非固定的,从而提高了将验证码从背景图片中提取出来的难度,验证码的安全性较高。另外,背景图片丰富的内容也干扰了对字符的提取和识别,也在一定程度上提高了验证码的安全性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的验证码图片生成方法实施例1的流程图;
图2为本申请提供的前景字符的一个示例;
图3为本申请提供的对颜色分量进行偏置的流程图;
图4为本申请提供的对偏置颜色及前景颜色进行线性加权的流程图;
图5为本申请提供的验证码图片生成装置实施例1的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1,其示出了本申请提供的验证码图片生成方法实施例1的流程。如图1所示,本实施例可以具体包括步骤S101~步骤S104。
步骤S101:获取背景图片及前景字符。
在实施前,可以设置背景图片库,背景图片库中存储有大量的背景图片。较佳地,背景图片包含丰富的内容,这样,根据背景图片生成的验证码才不容易被提取出来,验证码的安全性较高。背景图片可以是从真实的照片或图片中截取的,包含多种的背景颜色,且背景颜色非规则排列的。
同样,为了获得前景字符,可以预先设置前景图片库。前景图片库中包含大量的前景图片,前景字符可以包含在前景图片中,前景字符与前景图片的底色是相反的两种颜色,例如,前景字符为黑色,前景图片的底色为白色,或者,前景字符为白色,前景图片的底色为黑色。如图2所示的前景图片,前景图片中包含四个前景字符,分别为ABCD。当然,前景字符可以并非字母,还可以是汉字、符号等其他任意若干种的组合,或字母与其他任意若干种字符的组合。
步骤S102:根据前景字符待显示在背景图片中的位置,确定背景图片中与前景字符重叠的目标区域。
前景字符需要显示在背景图片中,以生成验证码图片。因此,前景字符在背景图片中占据一定的位置,前景字符在背景图片中的位置,可以是随机生成的。另外,前景字符还可以经过角度变换后,摆放在背景图片的任意位置处。根据前景字符待显示在背景图片中的位置,确定出背景图片与前景字符相重叠的区域,为了便于描述,可以将该区域称为目标区域。
步骤S103:将目标区域中的像素的原始颜色与前景字符中相重叠的像素的颜色进行合成,获得目标区域中的像素的目标颜色。
目标区域为背景图片中的区域,该区域中的像素具有颜色,该颜色称为原始颜色。同时,前景字符上的像素也具有颜色,如白色或黑色。前景字符与目标区域重叠,则将目标区域与前景字符对应重叠的两个像素的颜色进行合成,从而获得像素的目标颜色。
步骤S104:将目标区域中的像素的原始颜色替换为目标颜色,获得验证码图片。
以上生成的目标颜色用来填充在目标区域中的该像素上,也就是说,目标区域中每个像素的颜色均替换为使用该像素合成后的目标颜色。需要说明的是,目标区域为前景字符待显示的区域,替换目标区域的颜色后,变换颜色的区域即前景字符,换句话说,前景字符便被嵌入到背景图片中。这样处理后的背景图片即验证码图片,其中包含的前景字符即验证码内容。
由以上技术方案可知,本实施例提供了一种验证码图片生成方法,该方法确定前景字符待显示在背景图片中的区域后,将该区域中每个像素的颜色与前景字符中对应像素的颜色进行合成,合成后的颜色填充到该区域的对应像素中,从而生成验证码图片。本方法生成的验证码图片中,验证码的颜色与背景图片的颜色有关,不同的背景图片生成的验证码的颜色可能不同,同一背景图片中不同的验证码的颜色可能不同,同一验证码中不同的像素的颜色也可能不同,因此,验证码的颜色并非固定的,从而提高了将验证码从背景图片中提取出来的难度,验证码的安全性较高。另外,背景图片丰富的内容也干扰了对字符的提取和识别,也在一定程度上提高了验证码的安全性。
在实际应用中,以上步骤S103(将目标区域中的像素的原始颜色与前景字符中相重叠的像素的颜色进行合成,获得目标区域中的像素的目标颜色)的具体实现方式可以包括以下步骤A1~步骤A2。
步骤A1:将目标区域中的像素的原始颜色偏置后,获得偏置颜色;其中,偏置颜色与原始颜色的差值属于人眼可辨别色差范围。
首先,转换目标区域中像素的原始颜色,转换后的颜色与原始颜色要有一定的区别,且该区别为人眼可以辨别的色差范围。否则,生成的验证码可能与背景图片的颜色一致,不容易被人眼识别出来。转换颜色的过程也可以称为偏置过程。
偏置的方式可以是,在原始颜色上添加一种颜色值,或者,根据原始颜色的颜色格式,将原始颜色分解为各个颜色分量,在每个颜色分量上添加一个分量值,添加分量值后的各个颜色分量合成的颜色为偏置颜色。其中,添加分量值后的颜色分量可以称为偏置分量。
第二种偏置方式的具体实现过程如下。
具体来讲,目标区域中的像素颜色具有一定的颜色格式,如RGB格式或YUV格式。不同的颜色格式,颜色空间的类型是不同的,如RGB格式的像素,其颜色空间分别为R、G及B,YUV格式的像素,其颜色空间分别为Y、U及V。对于某一种颜色格式,该颜色格式的多个颜色空间的值称为颜色分量。
若从像素的角度来讲,像素具有多个颜色分量,该些颜色分量对应同一颜色格式的不同的颜色空间。例如,像素P,其具有三个颜色分量,分别为39、45及67,分别属于颜色空间Y、U及V。
可以理解的是,目标区域中包括多个像素,像素对应多个颜色空间。针对目标区域中的每个像素,且该像素的每个颜色,均执行如图3所示的偏置过程。
如图3所示,该偏置过程可以具体包括步骤S301~步骤S303。以下以目标区域中任意一个像素点的颜色空间Y为例,说明颜色空间的颜色分量的偏置过程。
步骤S301:根据该颜色空间的不同颜色分量的分布情况,对该颜色空间的颜色分量进行分组。
目标区域中包括多个像素,每个像素均具有该颜色空间的颜色分量,因此,该颜色空间的不同的颜色分量也对应相同或不同的像素。例如,像素P1在颜色空间Y上的颜色分量为22,像素P2在颜色空间Y上的颜色分量为55,像素P3在颜色空间Y上的颜色分量为22,因此,颜色分量22对应的像素为P1及P3,颜色分量55对应的像素为P2。
颜色分量的分布情况反映的是颜色分量对应的像素的个数。例如,颜色分量22对应的像素个数为188,颜色分量55对应的像素个数为253。
分组的具体过程可以如下步骤B1~步骤B3。
步骤B1:针对目标区域的颜色空间,生成该颜色空间的颜色分量的分布直方图;其中,分布直方图中的横坐标表示颜色分量,纵坐标表示颜色分量的个数。
颜色分量的分布直方图表示的是不同的颜色分量所对应的像素的个数。分布直方图中颜色分量是依次从0~255,颜色分量对应的像素个数(或者称为颜色分量的个数)是根据实际情况统计出来的。
分布直方图在计算机内的存储方式可以是数组,即使用长度为256的数组表示分布直方图,数组的下标为0~255,分别表示分布直方图的各个颜色分量,数组元素的值即该下标所对应的颜色分量的个数。
分布直方图的一种生成方式是,生成长度为256的数组,且初始化各个数组元素的值为0,依次获取目标区域中各个像素的颜色空间Y的颜色分量,将该颜色分量所对应的数组元素的值加1。例如,获取到像素P1的颜色空间Y的颜色分量为22,则将数组下标为22的数组元素的值加1,又如,获取到像素P2的颜色空间Y的颜色分量为55,则将数组下标为55的数组元素的值加1,如此循环,直至遍历完毕目标区域中所有的像素。
生成的数组,可以用来生成分布直方图,分布直方图可以直观地表示出各个颜色分量在目标区域中的分布情况。可以理解的是,分布直方图中,所有颜色分量的个数的和值(即所有纵坐标的和值)为目标区域中所有像素的总数。然后,根据总值确定平均值。
步骤B2:确定各个颜色分量的个数的和值的平均值。
在实施前,可以根据实际需要,预先设置将颜色分量划分为多少组。需要说明的是,在一个合适的范围内,颜色分量所分的组的个数越多,则生成的验证码被识别的难度越高。当然,分组的个数也不能过多,因此,过多可能会提高根据像素变化强度提取出验证码的可能性。
根据数组,将各个颜色分量相加后求平均值,或者,统计目标区域中像素的总数求平均值。例如,像素总数为3000,预设的组数为3组,则平均值为1000。
步骤B3:根据平均值,将分布直方图中横坐标表示的颜色分量划分为多组,其中,每个分组内的颜色分量的个数的和值与平均值的差值低于预设值。
根据上述平均值,对颜色分量进行分组。分组的标准是,每个分组内的颜色分量的个数是相同的,或者是接近的。实际应用中,可以按照分布直方图中各个横坐标的顺序,从第一个横坐标开始,依次将横坐标对应的纵坐标相加,直至加上某个横坐标对应的纵坐标后,该分组符合上述标准,则将第一个横坐标及该某个横坐标所形成的区间作为一个分组。然后,继续从该某个横坐标的下一横坐标开始,生成第二个分组。如此反复,直至最后一个横坐标。
上述判断分组是否符合分组标准的具体方式可以是,将分组内颜色分量的个数与平均值的差值与某个预设值进行比较,判断分组是否符合该标准。
例如,分组内颜色分量的个数为1000,与平均值1000的差值为0,符合分组的标准。又如,分组内颜色分量的个数为1500,与平均值1000的差值为500,预设值为100,远远超过预设值,因此,这个分组是不符合分组标准的。
当然,可能会出现,加上或者不加某个横坐标的纵坐标后,该分组内的颜色分量均不接近平均值的情况,则需要判断哪种情况最接近预设值,从而执行最接近预设值的情况。更特殊的情况下,若两种情况同样接近预设值,则加上或者不加该横坐标均可。
以上步骤B1~步骤B3可以对颜色空间进行分组。例如,将颜色空间Y的颜色分量分为3组,分别为颜色分量0~51、颜色分量52~175、颜色分量176~255。
步骤S302:为不同的分组生成不同的偏置值;其中,偏置值为预设偏置范围内的数值,预设偏置范围反映人眼可辨别色差的范围。
以上生成多个分组,则为每个分组生成一个偏置值,可选地,不同的分组生成不同的偏置值,偏置值可以是随机生成的。需要说明的是,偏执的目的是,想让验证码与背景图片的颜色可以区分开,因此,生成的偏置值足够大,以使偏置后的颜色与原始颜色的色差在人眼可辨别的色差范围内。
例如,生成的偏置值为128-32、128+32构成的区间(即[96,160])范围内的一个值。当然,该区间仅仅是一个示例说明,本申请并不局限于此。
步骤S303:将分组内的颜色分量与对应的偏置值相加,获得像素在该颜色空间的偏置分量。
将分组内的颜色分量与该偏置值相加后,便得到了每个颜色分量所对应的偏置的颜色分量(以下简称为偏置分量)。例如,第一组[0~51]对应的偏置分量为100,则该组内的各个颜色分量均与偏置分量相加后为[100,151],第二组[52~175]对应的偏置分量为120,则该组内的各个颜色分量均与偏置分量相加后为[172,295]。
在实际情况中,会出现加上颜色分量后的值超过255的情况,在这种情况下,可以对该值进行取模运算,即除以256,将余数作为最终的偏置分量。例如,295除以256后余数为39,因此将39作为偏置分量。
以上步骤301~303为获得目标区域内任一像素的任一颜色空间的偏置分量的流程,按照该流程计算该像素的每个颜色空间的偏置分量。将该像素的每个颜色空间的偏置分量进行合成操作,便可以获得该像素的偏置颜色。
获得偏置颜色后,便可以按照步骤A2将偏置颜色与前景字符中的颜色进行合成,从而得到用来替换目标区域的目标颜色。
步骤A2:将目标区域中的像素的偏置颜色与前景字符中相重叠的像素的颜色进行线性加权,获得目标区域中的像素的目标颜色。
目标区域中的像素进行上述步骤A1的偏置后的颜色称为偏置颜色,将该偏置颜色与该同一像素在前景字符中的颜色进行线性加权,从而获得该像素在目标区域中的目标颜色。
如上,像素的颜色具有不同的颜色空间上的颜色分量,分别对不同
参见图4,对偏置颜色及前景颜色进行线性加权的具体实现流程。因此,对目标区域中的每个像素的每个颜色空间,均执行图4所示的步骤S401~步骤S403。
步骤S401:在前景字符中,获取像素的颜色强度。
具体地,前景字符中的像素具有一定的颜色格式。若颜色格式为YUV,则颜色空间Y的值即颜色强度。若颜色格式为RGB,则将该颜色格式转化为YUV格式,然后获取颜色空间Y的值即颜色强度。需要说明的是,确定像素其他颜色空间如U或者V对应的目标分量时,前景字符的颜色强度均取前景字符在颜色空间Y的颜色分量。
前已述及,前景字符可以包含在前景图片中,前景字符在前景图片的颜色是相反的,前景字符的边界可以是光滑的,或者说,前景字符的边界包含过渡像素,这样,边界像素便具有颜色强度,即颜色强度不为0。
或者,进一步地,在步骤S401之前,还可以对前景字符进行高斯滤波处理,这样,前景字符的边界像素的颜色强度便不为0。
步骤S402:确定目标区域中与像素相重叠的像素的颜色空间的原始分量及偏置分量。
其中,原始分量(原始的颜色分量)指的是像素在背景图片中的颜色分量,换句话说,原始分量为步骤S303中用来与偏置值相加的颜色分量。
可见,本步骤获取的是像素在偏置前的颜色分量及偏置后的颜色分量。
步骤S403:使用预设线性加权算法((256-m)*a+m*b)/256,确定像素的目标分量;其中,m为像素的颜色强度,a为像素的偏置分量,b为像素的原始分量。
以某个像素的颜色空间Y为例,该像素的颜色空间Y的颜色强度m为255,偏置分量a为178,原始分量b为55,则该像素的目标分量为((256-255)*a+m*b)/256,即56(近似取整数)。如此,便可以获取该像素的颜色空间Y的目标分量。
可以理解的是,每个颜色空间均可以按照上述方法获得对应的目标分量。例如,颜色空间Y的目标分量为56,颜色空间U的目标分量为39,颜色空间V的目标分量为154,则三个目标分量组合后的颜色即为目标颜色。
按照上述方式可以获得目标区域的每个像素的目标颜色,从而,将目标区域中每个像素的颜色替换为该目标颜色,便可以在背景图片中添加前景字符,也就是说,前景字符与背景图片合成了验证码图片。
以下对本申请提供的验证码图片生成装置进行介绍,需要说明的是,下文有关验证码图片生成装置的说明可以参见上文提供的验证码图片生成方法,以下并不赘述。
与上述验证码图片生成方法实施例1相对应,本申请提供了一种验证码图片生成装置实施例1。如图5所示,该装置实施例1可以具体包括:图片及字符获取模块501、重叠区域确定模块502、重叠区域颜色合成模块503及重叠区域颜色替换模块504。其中:
图片及字符获取模块501,用于获取背景图片及前景字符;
重叠区域确定模块502,用于根据前景字符待显示在背景图片中的位置,确定背景图片中与前景字符重叠的目标区域;
重叠区域颜色合成模块503,用于将目标区域中的像素的原始颜色与前景字符中相重叠的像素的颜色进行合成,获得目标区域中的像素的目标颜色;
重叠区域颜色替换模块504,用于将目标区域中的像素的原始颜色替换为目标颜色,获得验证码图片。
由以上技术方案可知,本实施例提供了一种验证码图片生成装置,该装置确定前景字符待显示在背景图片中的区域后,将该区域中每个像素的颜色与前景字符中对应像素的颜色进行合成,合成后的颜色填充到该区域的对应像素中,从而生成验证码图片。本装置生成的验证码图片中,验证码的颜色与背景图片的颜色有关,不同的背景图片生成的验证码的颜色可能不同,同一背景图片中不同的验证码的颜色可能不同,同一验证码中不同的像素的颜色也可能不同,因此,验证码的颜色并非固定的,从而提高了将验证码从背景图片中提取出来的难度,验证码的安全性较高。另外,背景图片丰富的内容也干扰了对字符的提取和识别,也在一定程度上提高了验证码的安全性。
其中,图片及字符获取模块501可用于执行上述步骤A1~步骤A2。
更具体地,图片及字符获取模块501在执行步骤A1时,可以通过执行图3所示的步骤S301~步骤S303实现。
更具体地,图片及字符获取模块501在执行步骤S301时,可以通过执行步骤B1~步骤B2实现。
图片及字符获取模块501在执行步骤A2时,可以通过执行图4所示的步骤S401~步骤S403实现。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种验证码图片生成方法,其特征在于,包括:
获取背景图片及前景字符;
根据所述前景字符待显示在所述背景图片中的位置,确定所述背景图片中与所述前景字符重叠的目标区域;
将所述目标区域中的像素的原始颜色与所述前景字符中相重叠的像素的颜色进行合成,获得所述目标区域中的像素的目标颜色;
将所述目标区域中的像素的原始颜色替换为所述目标颜色,获得验证码图片。
2.根据权利要求1所述的验证码图片生成方法,其特征在于,所述将所述目标区域中的像素的原始颜色与所述前景字符中相重叠的像素的颜色进行合成,获得所述目标区域中的像素的目标颜色,包括:
将所述目标区域中的像素的原始颜色偏置后,获得偏置颜色;其中,所述偏置颜色与所述原始颜色的差值属于人眼可辨别色差范围;将原始颜色偏置表示的是,将原始颜色转换为其他不同的颜色;
将所述目标区域中的像素的偏置颜色与所述前景字符中相重叠的像素的颜色进行线性加权,获得所述目标区域中的像素的目标颜色。
3.根据权利要求2所述的验证码图片生成方法,其特征在于,所述目标区域中的像素的颜色是由多个颜色分量合成的,且不同的颜色分量对应不同的颜色空间;
相应地,所述将所述目标区域中的像素的原始颜色偏置后,获得偏置颜色,包括:
针对所述目标区域中的像素,获得所述像素的每个颜色空间的偏置分量;
将所述像素的各个所述偏置分量合成后获得所述像素的偏置颜色;
其中,获得所述像素的任一颜色空间的偏置分量的具体步骤包括:
根据该颜色空间的不同颜色分量的分布情况,对该颜色空间的颜色分量进行分组;
为不同的分组生成不同的偏置值;其中,所述偏置值为预设偏置范围内的数值,所述预设偏置范围反映人眼可辨别色差的范围;
将所述分组内的颜色分量与对应的偏置值相加,获得所述像素在该颜色空间的偏置分量。
4.根据权利要求3所述的验证码图片生成方法,其特征在于,所述根据该颜色空间的不同颜色分量的分布情况,对该颜色空间的颜色分量进行分组,包括:
针对所述目标区域的所述颜色空间,生成该颜色空间的颜色分量的分布直方图;其中,所述分布直方图中的横坐标表示颜色分量,纵坐标表示颜色分量的个数;
确定各个所述颜色分量的个数的和值的平均值;
根据所述平均值,将所述分布直方图中横坐标表示的颜色分量划分为多组,其中,每个分组内的颜色分量的个数的和值与所述平均值的差值低于预设值。
5.根据权利要求3所述的验证码图片生成方法,其特征在于,所述将所述目标区域中的像素的偏置颜色与所述前景字符中相重叠的像素的颜色进行线性加权,获得所述目标区域中的像素的目标颜色,包括:
对所述目标区域中的每个像素的每个颜色空间,均执行下述步骤:
在所述前景字符中,获取像素的颜色强度;
确定所述目标区域中与所述像素相重叠的像素的所述颜色空间的原始分量及偏置分量;其中,所述原始分量为该像素在背景图片中的颜色分量;
使用预设线性加权算法((256-m)*a+m*b)/256,确定所述像素的目标分量,目标分量;其中,m为像素的颜色强度,a为像素的偏置分量,b为像素的原始分量;
各个颜色空间的目标分量用来组合像素的目标颜色。
6.一种验证码图片生成装置,其特征在于,包括:
图片及字符获取模块,用于获取背景图片及前景字符;
重叠区域确定模块,用于根据所述前景字符待显示在所述背景图片中的位置,确定所述背景图片中与所述前景字符重叠的目标区域;
重叠区域颜色合成模块,用于将所述目标区域中的像素的原始颜色与所述前景字符中相重叠的像素的颜色进行合成,获得所述目标区域中的像素的目标颜色;
重叠区域颜色替换模块,用于将所述目标区域中的像素的原始颜色替换为所述目标颜色,获得验证码图片。
7.根据权利要求6所述的验证码图片生成装置,其特征在于,在将所述目标区域中的像素的原始颜色与所述前景字符中相重叠的像素的颜色进行合成,获得所述目标区域中的像素的目标颜色方面,所述重叠区域颜色合成模块用于:
将所述目标区域中的像素的原始颜色偏置后,获得偏置颜色;其中,所述偏置颜色与所述原始颜色的差值属于人眼可辨别色差范围;将原始颜色偏置表示的是,将原始颜色转换为其他不同的颜色;
将所述目标区域中的像素的偏置颜色与所述前景字符中相重叠的像素的颜色进行线性加权,获得所述目标区域中的像素的目标颜色。
8.根据权利要求7所述的验证码图片生成装置,其特征在于,所述目标区域中的像素的颜色是由多个颜色分量合成的,且不同的颜色分量对应不同的颜色空间;
相应地,所述将所述目标区域中的像素的原始颜色偏置后,获得偏置颜色方面,所述重叠区域颜色合成模块用于:
针对所述目标区域中的像素,获得所述像素的每个颜色空间的偏置分量;
将所述像素的各个所述偏置分量合成后获得所述像素的偏置颜色;
其中,获得所述像素的任一颜色空间的偏置分量的具体步骤包括:
根据该颜色空间的不同颜色分量的分布情况,对该颜色空间的颜色分量进行分组;
为不同的分组生成不同的偏置值;其中,所述偏置值为预设偏置范围内的数值,所述预设偏置范围反映人眼可辨别色差的范围;
将所述分组内的颜色分量与对应的偏置值相加,获得所述像素在该颜色空间的偏置分量。
9.根据权利要求8所述的验证码图片生成装置,其特征在于,在根据该颜色空间的不同颜色分量的分布情况,对该颜色空间的颜色分量进行分组的方面,所述重叠区域颜色合成模块用于:
针对所述目标区域的所述颜色空间,生成该颜色空间的颜色分量的分布直方图;其中,所述分布直方图中的横坐标表示颜色分量,纵坐标表示颜色分量的个数;
确定各个所述颜色分量的个数的和值的平均值;
根据所述平均值,将所述分布直方图中横坐标表示的颜色分量划分为多组,其中,每个分组内的颜色分量的个数的和值与所述平均值的差值低于预设值。
10.根据权利要求8所述的验证码图片生成装置,其特征在于,在所述将所述目标区域中的像素的偏置颜色与所述前景字符中相重叠的像素的颜色进行线性加权,获得所述目标区域中的像素的目标颜色方面,所述重叠区域颜色合成模块用于:
对所述目标区域中的每个像素的每个颜色空间,均执行下述步骤:
在所述前景字符中,获取像素的颜色强度;
确定所述目标区域中与所述像素相重叠的像素的所述颜色空间的原始分量及偏置分量;其中,所述原始分量为该像素在背景图片中的颜色分量;
使用预设线性加权算法((256-m)*a+m*b)/256,确定所述像素的目标分量,目标分量;其中,m为像素的颜色强度,a为像素的偏置分量,b为像素的原始分量;
各个颜色空间的目标分量用来组合像素的目标颜色。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610509508.3A CN106127836B (zh) | 2016-06-30 | 2016-06-30 | 验证码图片生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610509508.3A CN106127836B (zh) | 2016-06-30 | 2016-06-30 | 验证码图片生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106127836A CN106127836A (zh) | 2016-11-16 |
CN106127836B true CN106127836B (zh) | 2019-11-19 |
Family
ID=57468913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610509508.3A Active CN106127836B (zh) | 2016-06-30 | 2016-06-30 | 验证码图片生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106127836B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107169340A (zh) * | 2017-05-12 | 2017-09-15 | 北京高地信息技术有限公司 | 一种行为式验证码处理方法及装置 |
CN109257168A (zh) * | 2018-09-21 | 2019-01-22 | 深圳市元征科技股份有限公司 | 一种图片验证码的生成方法、装置、设备及介质 |
CN109977649A (zh) * | 2019-02-13 | 2019-07-05 | 平安科技(深圳)有限公司 | 图片验证码生成方法、装置、存储介质和计算机设备 |
CN111723356B (zh) * | 2019-03-18 | 2024-04-05 | 京东科技控股股份有限公司 | 一种验证码的验证方法、装置和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102768754A (zh) * | 2012-08-03 | 2012-11-07 | 网易(杭州)网络有限公司 | 一种图片验证码的实现方法和装置 |
CN104200150A (zh) * | 2014-09-01 | 2014-12-10 | 湖北盛天网络技术股份有限公司 | 验证码处理方法和装置 |
CN104298912A (zh) * | 2013-07-15 | 2015-01-21 | 深圳市腾讯计算机系统有限公司 | 抗破解的验证码实现方法、生成方法及装置 |
CN104852889A (zh) * | 2014-02-18 | 2015-08-19 | 腾讯科技(深圳)有限公司 | 图片验证码生成方法和系统、验证方法和客户端及服务器 |
CN105701391A (zh) * | 2014-11-27 | 2016-06-22 | 阿里巴巴集团控股有限公司 | 动态验证码图片生成方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923702B (zh) * | 2010-08-25 | 2012-02-01 | 郝红卫 | 一种图片验证码的生成方法 |
CN102831568B (zh) * | 2012-08-03 | 2014-07-09 | 网易(杭州)网络有限公司 | 一种生成验证码图片的方法和装置 |
-
2016
- 2016-06-30 CN CN201610509508.3A patent/CN106127836B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102768754A (zh) * | 2012-08-03 | 2012-11-07 | 网易(杭州)网络有限公司 | 一种图片验证码的实现方法和装置 |
CN104298912A (zh) * | 2013-07-15 | 2015-01-21 | 深圳市腾讯计算机系统有限公司 | 抗破解的验证码实现方法、生成方法及装置 |
CN104852889A (zh) * | 2014-02-18 | 2015-08-19 | 腾讯科技(深圳)有限公司 | 图片验证码生成方法和系统、验证方法和客户端及服务器 |
CN104200150A (zh) * | 2014-09-01 | 2014-12-10 | 湖北盛天网络技术股份有限公司 | 验证码处理方法和装置 |
CN105701391A (zh) * | 2014-11-27 | 2016-06-22 | 阿里巴巴集团控股有限公司 | 动态验证码图片生成方法及装置 |
Non-Patent Citations (4)
Title |
---|
基于Java的中文验证码生成器的设计与实现;杨俊峰;《电子技术设计与应用》;20130926;第70-72页 * |
基于多图层的图形验证码生成技术研究;胡征兵 等;《计算机与现代化》;20111231(第2期);第1-4页 * |
验证码的模糊识别;贾磊磊 等;《西昌学院学报·自然科学版》;20100331;第24卷(第1期);第60-62页 * |
高效的验证码识别技术与验证码分类思想;文晓阳 等;《计算机工程》;20090430;第35卷(第8期);第186-188、191页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106127836A (zh) | 2016-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106127836B (zh) | 验证码图片生成方法及装置 | |
CN105095936B (zh) | 一种基于信息隐藏的图像二维码及其生成方法和系统 | |
CN104182927B (zh) | 图片水印添加方法及装置 | |
EP3410685B1 (en) | Image processing device, image processing method, and program | |
CN104486481B (zh) | 一种操作设置的共享方法、用户设备以及共享系统 | |
CN104636764B (zh) | 一种图像隐写分析方法以及其装置 | |
CN109767378A (zh) | 图像处理方法和装置 | |
CN103426014A (zh) | 一种基于ccd检测的印刷品图像防伪的方法 | |
CN111680704B (zh) | 海洋红线新增人类活动斑块自动化快速提取方法和装置 | |
CN106530311B (zh) | 切片图像处理方法及装置 | |
CN110796586A (zh) | 一种基于数字点阵的盲水印方法、系统及可读存储介质 | |
CN110264413A (zh) | 一种图像处理方法、装置、电子设备及存储介质 | |
CN109886856A (zh) | 对屏幕拍摄过程鲁棒的数字水印方法 | |
CN107578362A (zh) | 基于纹理合成在图像中嵌入秘密信息的方法 | |
CN100370481C (zh) | 一种脆弱型水印技术应用于数字图象保真的方法 | |
CN106203058B (zh) | 验证码生成方法及装置 | |
CN107798649A (zh) | 图片的识别方法和装置 | |
CN104063832A (zh) | 一种水印嵌入和提取方法及装置 | |
CN115695988A (zh) | 一种智能设备真随机密钥生成方法、装置、终端及介质 | |
CN105654017A (zh) | 二维码传输方法和系统 | |
CN106126214A (zh) | 一种界面上文字颜色的确定方法及装置 | |
CN105956503A (zh) | 一种基于产品隐藏信息防伪认证的方法和系统 | |
Park et al. | Applying enhanced confusion line color transform using color segmentation for mobile applications | |
CN108364256A (zh) | 一种基于四元数小波变换的图像拼接检测方法 | |
CN105095938B (zh) | 一种彩色多阶隐形图像码的生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |