发明内容
本发明的实施例提供一种嵌入、提取数字水印的方法和装置,能够提高数字水印的稳定性。
为达到上述目的,本发明的实施例采用如下技术方案:
一种嵌入数字水印的方法,包括:在所要嵌入数字水印的文本中加入预先设置的底纹,获取带底纹的文本;将所述带底纹的文本划分成一个以上文本块;获取所述一个以上文本块中每个文本块的连通域个数,所述连通域由所述底纹中一个以上相邻的像素组合而成;根据所述每个文本块的连通域个数和预先获取的数字水印信息嵌入数字水印。
一种提取数字水印的方法,包括:将所要提取数字水印的文本按照预定规则划分成一个以上文本块,所述预定规则为嵌入所述数字水印时的文本划分规则;获取所述一个以上文本块中每个文本块的连通域个数;根据所述每个文本块的连通域个数提取数字水印信息;根据所述数字水印信息获取所述数字水印。
一种嵌入数字水印的装置,包括:
加入底纹单元,用于在所要嵌入数字水印的文本中加入预先设置的底纹,获取带底纹的文本;
第一划分单元,用于将由所述加入底纹单元获取的带底纹的文本划分成一个以上文本块;
第一获取单元,用于获取由所述第一划分单元获得的一个以上文本块中每个文本块的连通域个数,所述连通域由所述底纹中一个以上相邻的像素组合而成;
嵌入单元,用于根据由所述第一获取单元获取的每个文本块的连通域个数和预先获取的数字水印信息嵌入数字水印。
一种提取数字水印的装置,包括:
第二划分单元,用于将所要提取数字水印的文本按照预定规则划分成一个以上文本块,所述预定规则为嵌入所述数字水印时的文本划分规则;
第二获取单元,用于获取由所述第二划分单元获得的一个以上文本块中每个文本块的连通域个数;
提取单元,用于根据由所述第二获取单元获取的每个文本块的连通域个数提取数字水印信息;
第三获取单元,用于根据由所述提取单元提取的数字水印信息获取所述数字水印。
本发明实施例提供的嵌入、提取数字水印的方法和装置,通过获取划分后的文本中每个文本块的连通域个数,根据所述连通域的个数嵌入或者提取数字水印信息。由于在对文本进行打印扫描等操作时,连通域的个数基本不会改变,解决了现有技术中由于将具有特定颜色像素的数目或比例作为嵌入、提取数字水印信息的特征,打印扫描时所述像素的数目或比例会产生较大变化,从而使数字水印的稳定性较差的问题。本发明实施例提供的嵌入、提取数字水印的方法和装置,能够提高数字水印的稳定性。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术中数字水印的稳定性较差的问题,本发明实施例提供一种嵌入、提取数字水印的方法和装置。
如图3所示,本发明实施例提供的嵌入数字水印的方法,包括:
步骤101,在所要嵌入数字水印的文本中加入预先设置的底纹,获取带底纹的文本;
在本实施例中,所述底纹为均匀、随机分布的预定颜色像素,优选地,所述底纹设置为在白色背景上均匀、随机分布的黑色像素。所述文本可以为图片格式的文本,也可以为其它格式的文本。优选地,首先将所要嵌入数字水印的文本转化成黑白图片,再在所述黑白图片的空白背景处随机地生成黑色像素,并且此黑色像素不能被文本中其它的黑色像素(如文字)所掩盖。具体生成黑色像素的方法可以采用改变背景像素值的方式,即将某一处白色像素的像素值0转变成黑色像素值1,当然,也可以采用其它方法生成黑色像素,此处不再一一列举。加入底纹前后的文本片断可以参见图11和图12所示。
步骤102,将所述带底纹的文本划分成一个以上文本块;
在本实施例中,利用图片分割工具将加入黑色像素底纹的文本平均分割成若干块。具体分割的块数可以根据数字水印信息的长度来确定。例如,可以将所述文本在列方向上平均分割为6份,每一份中嵌入数字水印信息对应的二进制位。进一步地,还可以适当地考虑数字水印信息的冗余,即还可以将所述文本的行平均分割为奇数份(例如分割成5份),以便减小嵌入、提取数字水印信息时的出错率。当然,也可以不平均分割文本,而按照预先设定的文本划分规则来划分,此处不再赘述。
步骤103,获取所述一个以上文本块中每个文本块的连通域个数,所述连通域由所述底纹中一个以上相邻的像素组合而成;
所述连通域由所述均匀分布的预定颜色像素中一个以上相邻的预定颜色像素组合而成。在本实施例中,所述连通域由相邻的黑色像素组合而成。如图2所示,与图1相比,图2中的黑色像素明显增多,但连通域的个数没有改变。因此,选用连通域的个数作为嵌入、提取数字水印的特征,可以保证数字水印的稳定性。具体获取每个文本块中连通域的方法可以参见图5所示,包括:
步骤301,计算所述每个文本块中每一行的连通域个数之和,获取行连通域个数;
本实施例中,在每个文本块中,由于黑色像素均匀分布,可以将黑色像素的分布划分为行和列。可以首先统计每一行的连通域个数,将每一行连通域个数相加,得到总的行连通域个数。具体统计连通域个数的方法可采用在一个黑色像素周围查找相邻黑色像素的方式,如果一个黑色像素周围存在另一个相邻的黑色像素,则把这两个黑色像素作为一个连通域。当然,也可以采用其它的方式统计,此处不再一一列举。
步骤302,计算所述每个文本块中每相邻两行连通域相交的个数之和,获取重复连通域个数;
由于在步骤301中只考虑了行方向的连通域,没有考虑列方向,因此,有些连通域是重复计算的。在本实施例中,先统计第二行与第一行相交的连通域个数,再统计第三行与第二行相交的连通域个数,依此类推,直到最后一行;将以上每相邻两行连通域相交的个数相加,即可获取此文本块中重复连通域的个数
步骤303,计算所述行连通域个数与所述重复连通域个数之差,获取所述每个文本块的连通域个数。
本实施例中,将在步骤301中获取的总的行连通域个数减去在步骤302中获取的重复连通域的个数,即可获得此文本块中实际连通域的个数。
步骤104,根据所述每个文本块的连通域个数和预先获取的数字水印信息嵌入数字水印。
在本实施例中,所述数字水印即为要嵌入文本的信息,所述数字水印信息为转化后的二进制的位串信息流。例如,将所有要嵌入的信息组合在一起得到一个新的字符串,然后读取每个字符在计算机内存中的数据代码,即可转化为一个用二进制0或1表示的数据。进一步地,还可以在所述二进制数据前面插入一定数目的字节流,用于记录字符串的长度;考虑到安全性,还可以对所述二进制数据进行加密处理,密钥作为明码插入到密文字节流的前面。上述一系列操作所获得的位串信息流即为所述数字水印信息。假设该数字水印信息为:100101,将此信息嵌入到步骤102划分的文本块中。下面描述具体的嵌入方法:
将数字水印信息的第一位“1”嵌入到步骤102中划分的第一行第一列的文本块中,首先需要获取第一行第一列文本块中的连通域个数,当所述连通域个数的十位上为奇数时,连通域个数不变;当所述连通域个数的十位上是偶数时,增加连通域个数,并且使增加的连通域个数最少,使得所述连通域个数的十位上为奇数。因此,连通域个数十位上的奇数就代表嵌入的值是“1”。当然,也可以不从第一行第一列的文本块开始嵌入数字水印信息的第一位,具体的顺序可以根据自己制定的规则来嵌入。
将数字水印信息的第二位“0”嵌入到步骤102中划分的第一行第二列的文本块中,首先需要获取第一行第二列文本块中的连通域个数,当所述连通域个数的十位上为偶数时,连通域个数不变;当所述连通域个数的十位上是奇数时,增加连通域个数,并且使增加的连通域个数最少,使得所述连通域个数的十位上为偶数。因此,连通域个数十位上的偶数就代表嵌入的值是“0”。
其它位的嵌入方法与上述方法相同,此处不再赘述。需要说明的是,上述方法中选用数值的十位作为奇偶性判断依据是为了避免个位数微小的变动所带来的误差,十位上的数值比较稳定。另外,上述方法中也可以采用减少连通域的方式来改变连通域个数的奇偶性,为了避免连通域个数较少而将连通域减为0的情况发生,一般采用增加的方式。
嵌入数字水印信息的文本片断如图13所示,在图12的基础上增加了连通域的个数。图14所示的是打印扫描后含数字水印信息的文本片断,与图13相比,像素个数增加,但连通域个数基本没有变化。
本发明实施例提供的嵌入数字水印的方法,通过获取划分后的文本中每个文本块的连通域个数,根据所述连通域的个数嵌入数字水印信息。由于在对文本进行打印扫描等操作时,连通域的个数基本不会改变,解决了现有技术中由于将具有特定颜色像素的数目或比例作为嵌入数字水印信息的特征,打印扫描时所述像素的数目或比例会产生较大变化,从而使数字水印的稳定性较差的问题。
如图4所示,本发明实施例还提供一种提取数字水印的方法,包括:
步骤201,将所要提取数字水印的文本按照预定规则划分成一个以上文本块,所述预定规则为嵌入所述数字水印时的文本划分规则;
提取数字水印时的文本划分规则必须与嵌入该数字水印时的文本划分规则相同。在本实施例中,与嵌入数字水印的方法类似,首先将所要提取数字水印的文本转化成图片格式,并将所述图片格式的文本进行归一化处理,使其大小与嵌入数字水印时的图片大小相同,再将所述图片格式的文本平均划分成若干份。与步骤102相对应地,将所述文本在列方向上平均分割为6份,在行方向上平均分割为5份。
步骤202,获取所述一个以上文本块中每个文本块的连通域个数;
在本实施例中,获取每个文本块中连通域个数的具体方法与步骤103中所述的方法相同,此处不再赘述。
步骤203,根据所述每个文本块的连通域个数提取数字水印信息;
在本实施例中,当文本块对应的连通域个数的十位上为偶数时,表明嵌入该文本块的二进制位为“0”;当文本块对应的连通域个数的十位上为奇数时,表明嵌入该文本块的二进制位为“1”。与嵌入数字水印信息的顺序相同,从所划分的文本块的第一行第一列开始提取二进制数据,获得位串信息流,即为数字水印信息。
步骤204,根据所述数字水印信息获取所述数字水印。
本实施例中,将步骤203中所获取的位串信息流还原为普通文本信息,即获得所嵌入的数字水印。
本发明实施例提供的提取数字水印的方法,通过获取划分后的文本中每个文本块的连通域个数,根据所述连通域的个数提取数字水印信息。由于在对文本进行打印扫描等操作时,连通域的个数基本不会改变,解决了现有技术中由于将具有特定颜色像素的数目或比例作为提取数字水印信息的特征,打印扫描时所述像素的数目或比例会产生较大变化,从而使数字水印的稳定性较差的问题。
如图6所示,本发明实施例还提供一种嵌入数字水印的装置,包括:
加入底纹单元401,用于在所要嵌入数字水印的文本中加入预先设置的底纹,获取带底纹的文本;
在本实施例中,所述底纹设置为在白色背景上均匀、随机分布的黑色像素。
第一划分单元402,用于将由所述加入底纹单元401获取的带底纹的文本划分成一个以上文本块;
第一获取单元403,用于获取由所述第一划分单元402获得的一个以上文本块中每个文本块的连通域个数,所述连通域由所述底纹中一个以上相邻的像素组合而成;
本实施例中,所述连通域由相邻的黑色像素组合而成。选用连通域的个数作为嵌入数字水印的特征,可以保证数字水印的稳定性。
嵌入单元404,用于根据由所述第一获取单元403获取的每个文本块的连通域个数和预先获取的数字水印信息嵌入数字水印。
进一步地,如图7所示,所述第一获取单元403包括:
第一计算单元4031,用于计算由所述第一划分单元402获得的每个文本块中每一行的连通域个数之和,获取行连通域个数;
第二计算单元4032,用于计算由所述第一划分单元402获得的每个文本块中每相邻两行连通域相交的个数之和,获取重复连通域个数;
第三计算单元4033,用于计算由所述第一计算单元4031获取的行连通域个数与由所述第二计算单元4032获取的重复连通域个数之差,获取所述每个文本块的连通域个数。
进一步地,如图8所示,所述嵌入单元404包括:
第一调整单元4041,用于当需要在所述文本块中嵌入“0”时,调整该文本块对应的连通域个数,使所述连通域个数的预定数位上为偶数;
第二调整单元4042,用于当需要在所述文本块中嵌入“1”时,调整该文本块对应的连通域个数,使所述连通域个数的预定数位上为奇数。
上述嵌入数字水印装置的具体实现方法可以参见如图3和图5所示的步骤101~104和步骤301~304所述,此处不再赘述。
本发明实施例提供的嵌入数字水印的装置,通过获取划分后的文本中每个文本块的连通域个数,根据所述连通域的个数嵌入数字水印信息。由于在对文本进行打印扫描等操作时,连通域的个数基本不会改变,解决了现有技术中由于将具有特定颜色像素的数目或比例作为嵌入数字水印信息的特征,打印扫描时所述像素的数目或比例会产生较大变化,从而使数字水印的稳定性较差的问题。
如图9所示,本发明实施例还提供一种提取数字水印的装置,包括:
第二划分单元501,用于将所要提取数字水印的文本按照预定规则划分成一个以上文本块,所述预定规则为嵌入所述数字水印时的文本划分规则;
第二获取单元502,用于获取由所述第二划分单元501获得的一个以上文本块中每个文本块的连通域个数;
提取单元503,用于根据由所述第二获取单元502获取的每个文本块的连通域个数提取数字水印信息;
第三获取单元504,用于根据由所述提取单元503提取的数字水印信息获取所述数字水印。
进一步地,如图10所示,所述提取单元503包括:
第一提取子单元5031,用于当所述文本块对应的连通域个数的预定数位上为偶数时,提取“0”;
第二提取子单元5032,用于当所述文本块对应的连通域个数的预定数位上为奇数时,提取“1”。
上述提取数字水印信息装置的具体实现方法可以参见如图4所示的步骤201~204所述,此处不再赘述。
本发明实施例提供的提取数字水印的装置,通过获取划分后的文本中每个文本块的连通域个数,根据所述连通域的个数提取数字水印信息。由于在对文本进行打印扫描等操作时,连通域的个数基本不会改变,解决了现有技术中由于将具有特定颜色像素的数目或比例作为提取数字水印信息的特征,打印扫描时所述像素的数目或比例会产生较大变化,从而使数字水印的稳定性较差的问题。
本发明适用于数字产品的版权保护、内容验证与防伪、防止非法拷贝、操作跟踪、秘密数据通信等众多领域。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。