发明内容
本发明的目的是提供一种面向大数据的彩色图像水印的嵌入与提取方法,以提升数据版权的保护效果。
为实现上述目的,本发明提供了如下方案:
一种面向大数据的彩色图像水印的嵌入方法,包括:
获取待嵌入的彩色图像;
采用JPEG压缩算法对所述彩色图像进行有损压缩编码,生成水印比特串;
获取水印嵌入密钥和水印嵌入参数;
根据所述水印嵌入密钥计算数据集中每一行数据的行标识号;所述数据集包括n行m列数据,每一行对应一个主键值;
对于所述数据集的每个数据,根据所述数据的数值和所述数据对应的行标识号,计算所述数据对应的数据标识号;
根据所述水印嵌入参数、所述数据标识号和所述水印比特串的长度,确定水印比特位置;所述水印比特位置为所述数据对应的待嵌入水印在所述水印比特串中的位置;
根据所述水印嵌入参数和所述数据标识号确定所述数据中待嵌入水印的比特位;
将所述水印比特串中水印比特位置的水印比特值嵌入所述数据中待嵌入水印的比特位,得到带有水印比特信息的数据;
依次得到所有带有水印比特信息的数据,得到带有彩色图像水印的数据集。
可选的,所述采用JPEG压缩算法对所述彩色图像进行有损压缩编码,生成水印比特串,具体包括:
将所述彩色图像进行颜色空间转换,得到所述彩色图像对应的YCrCb颜色空间的三个像素矩阵;所述彩色图像对应的YCrCb颜色空间的三个像素矩阵分别为:Y矩阵、Cr矩阵和Cb矩阵;
对每个像素矩阵依次进行分块处理、DCT变换和量化处理,得到每个像素矩阵对应的多个量化子矩阵;
对每个像素矩阵的所有量化子矩阵进行DC系数编码和非零AC系数编码,得到每个像素矩阵对应的多个DC系数二进制比特串和多个AC系数二进制比特串;一个量化子矩阵对应一个DC系数二进制比特串和一个AC系数二进制比特串;
按照分块处理的顺序,将每个像素矩阵对应的所有DC系数二进制比特串合并,得到每个像素矩阵对应的第一二进制比特串;
按照分块处理的顺序,将每个像素矩阵对应的所有AC系数二进制比特串进行合并,得到每个像素矩阵对应的第二二进制比特串;
将所有像素矩阵的第一二进制比特串和所有像素矩阵的第二二进制比特串合并,得到水印比特串。
可选的,所述对每个像素矩阵依次进行分块处理、DCT变换和量化处理,得到每个像素矩阵对应的多个量化子矩阵,具体包括:
对于第i个像素矩阵,按照由左向右和由上至下的顺序将所述第i个像素矩阵分解为多个子矩阵;每个子矩阵的大小均为8×8;
对所述第i个像素矩阵的每个子矩阵进行DCT变换,得到每个子矩阵对应的新子矩阵;
使用量化表对所述第i个像素矩阵的每个新子矩阵进行量化,得到每个新子矩阵对应的量化子矩阵;
依次得到每个像素矩阵对应的多个量化子矩阵。
可选的,所述对每个像素矩阵的所有量化子矩阵进行DC系数编码和非零AC系数编码,得到每个像素矩阵对应的多个DC系数二进制比特串和多个AC系数二进制比特串,具体包括:
对于第i个像素矩阵中的第j个量化子矩阵,采用定长编码方法对所述第j个量化子矩阵的DC系数进行编码,得到所述第j个量化子矩阵的DC系数二进制比特串;所述DC系数为所述量化子矩阵中第1行第1列的元素;
采用定长编码方法对所述第j个量化子矩阵的每个非零AC系数进行编码,得到每个非零AC系数对应的二进制比特串;AC系数为所述量化子矩阵中除DC系数之外的其他元素;
将所述第j个量化子矩阵每个非零AC系数对应的二进制比特串按照先行后列的顺序合并,得到所述第j个量化子矩阵对应的AC系数二进制比特串;
依次得到每个像素矩阵的每个量化子矩阵对应的DC系数二进制比特串和AC系数二进制比特串。
可选的,所述对每个像素矩阵的所有量化子矩阵进行DC系数编码和非零AC系数编码,得到每个像素矩阵对应的多个DC系数二进制比特串和多个AC系数二进制比特串,之后还包括:
对每个像素矩阵的每个量化子矩阵按照元素位置建立比特索引矩阵,得到每个量化子矩阵对应的比特索引矩阵;所述比特索引矩阵中第i行第j列的元素为对应的量化子矩阵第i行第j列的元素的索引值,索引值为1表示量化子矩阵的元素被编码,索引值为0表示量化子矩阵的元素未编码;
将每个量化子矩阵对应的比特索引矩阵保存至配置文件中。
本发明还提供一种面向大数据的彩色图像水印的提取方法,包括:
获取版权验证数据集;所述版权验证数据集为嵌入彩色图像水印的数据集;
获取水印嵌入密钥和水印嵌入参数;
根据所述水印嵌入密钥,计算所述版权验证数据集中每一行数据的行标识号;
对于所述版权验证数据集的每个数据,根据所述数据的数值和所述数据对应的行标识号,计算所述数据对应的数据标识号;
根据所述水印嵌入参数、所述数据标识号和所述水印比特串的长度,确定水印比特位置;所述水印比特位置为所述数据对应的嵌入水印在水印比特串中的位置;
根据所述水印嵌入参数和所述数据标识号确定数据比特位置;所述数据比特位置为所述数据中嵌入水印的位置;
提取所述数据中所述数据比特位置的比特数值,得到所述水印比特串中所述水印比特位置的比特数值;
依次得到所有水印比特位置的比特数值,得到所述水印比特串;
对所述水印比特串进行解码,得到嵌入的彩色图像。
可选的,依次得到所有水印比特位置的比特数值,得到所述水印比特串,具体包括:
初始化第一数组和第二数组;所述第一数组和第二数组的长度与所述水印比特串的长度一致;
当第i个数据对应的第j个水印比特位置的比特数值为1时,将所述第一数组中的第j个位置的数值加1;
当第i个数据对应的第j个水印比特位置的比特数值为0时,将所述第二数组中的第j个位置的数值加1;
依次遍历所述版权验证数据集中每个数据后,根据每个数据对应的所有水印比特位置的比特数值对所述第一数组和所述第二数据进行更新,得到更新后的第一数组和更新后的第二数组;
对于所述水印比特串中第k个比特位,比较所述更新后的第一数组中第k个位置的数值与所述更新后的第二数组中第k个位置的数值大小;
当所述更新后的第一数组中第k个位置的数值大于所述更新后的第二数组中第k个位置的数值时,确定所述水印比特串中第k个比特位的比特数值为1;
当所述更新后的第一数组中第k个位置的数值不大于所述更新后的第二数组中第k个位置的数值时,确定所述水印比特串中第k个比特位的比特数值为0;
依次得到所述水印比特串中每个比特位的比特数值,得到所述水印比特串。
可选的,所述对所述水印比特串进行解码,得到嵌入的彩色图像,具体包括:
对所述水印比特串进行拆分,得到每个像素矩阵对应的第一二进制比特串和第二二进制比特串;所述第一二进制比特串为所述像素矩阵对应的所有DC系数二进制比特串合并后的比特串,所述第二二进制比特串为所述像素矩阵对应的所有AC系数二进制比特串合并后的比特串;
对每个像素矩阵对应的第一二进制比特串按照分块处理顺序进行拆分,得到每个像素矩阵对应的多个DC系数二进制比特串;
对每个像素矩阵对应的第二二进制比特串按照分块处理顺序进行拆分,得到每个像素矩阵对应的多个AC系数二进制比特串;多个AC系数二进制比特串与多个DC系数二进制比特串一一对应;
将每个DC系数二进制比特串与对应的AC系数二进制比特串进行解码,得到对应的量化子矩阵;一个量化子矩阵对应一个DC系数二进制比特串和一个AC系数二进制比特串;所述DC系数二进制比特串解码得到的DC系数为所述量化子矩阵中第1行第1列的元素,所述AC系数二进制比特串解码得到的AC系数为所述量化子矩阵中除DC系数之外的其他元素;
对多个量化子矩阵依次进行反量化处理、DCT逆变换和组合处理,得到彩色图像对应的YCrCb颜色空间的三个像素矩阵;所述YCrCb颜色空间的三个像素矩阵分别为:Y矩阵、Cr矩阵和Cb矩阵;
对所述彩色图像进行颜色空间转换,得到RGB颜色空间的彩色图像。
可选的,所述对所述水印比特串进行拆分,得到每个像素矩阵对应的第一二进制比特串和第二二进制比特串,之前还包括:
获取配置文件中存储的比特索引矩阵;所述比特索引矩阵中第i行第j列的元素为对应的量化子矩阵第i行第j列的元素的索引值,索引值为1表示量化子矩阵的元素被编码,索引值为0表示量化子矩阵的元素未编码;
根据DC系数编码长度、AC系数编码长度和所述比特索引矩阵,确定每个像素矩阵的每个量化子矩阵的DC系数二进制比特串长度和AC系数二进制比特串长度;
根据每个像素矩阵的每个量化子矩阵的DC系数二进制比特串长度和AC系数二进制比特串长度,确定每个像素矩阵对应的第一二进制比特串长度和第二二进制比特串长度。
可选的,所述对多个量化子矩阵依次进行反量化处理、DCT逆变换和组合处理,得到彩色图像对应的YCrCb颜色空间的三个像素矩阵,具体包括:
对于第i个像素矩阵,使用量化表对所述第i个像素矩阵的每个量化子矩阵进行反量化,得到每个量化子矩阵对应的新子矩阵;
对所述第i个像素矩阵的每个新子矩阵进行DCT逆变换,得到每个新子矩阵对应的子矩阵;
按照分块处理顺序将所述第i个像素矩阵的所有子矩阵组合,得到第i个像素矩阵。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明彩色图像嵌入过程,利用图像的冗余性特点,对彩色图像进行压缩,降低在大数据中嵌入的水印信息量,实现彩色图像水印的嵌入,解决在大数据中嵌入彩色图像困难的问题。同时,通过在数据行和属性列上嵌入水印,提高大数据的水印容量,进而也提高了彩色图像水印的鲁棒性。此外,本发明提供了对应的彩色图像提取过程,通过水印提取实现大数据的彩色图像版权归属与验证。因此,本发明在水印嵌入和版权验证方面均达到了较好的效果,数据水印的综合效果优于已有的方法。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明面向大数据的彩色图像水印的嵌入方法的流程示意图。如图1所示,本发明面向大数据的彩色图像水印的嵌入方法包括以下步骤:
步骤101:获取待嵌入的彩色图像。彩色图像通常为RGB颜色空间的图像。
步骤102:采用JPEG压缩算法对彩色图像进行有损压缩编码,生成水印比特串。采用JPEG压缩编码思想,在不影响图像质量的前提下,对彩色图像进行有损压缩编码,可以降低图像的冗余信息。具体过程如下:
(1)将所述彩色图像进行颜色空间转换,得到所述彩色图像对应的YCrCb颜色空间的三个像素矩阵。将彩色图像的RGB颜色空间对应的像素矩阵按照下列转换关系转换为YCrCb颜色空间对应的矩阵。RGB和YCrCb之间的转换关系为:
y=0.299r+0.587g+0.114b (1)
cb=-0.1687r-0.3313g+0.5b+128 (2)
cr=0.5r-0.418g-0.0813b+128 (3)
其中,r,g,b分别为RGB像素矩阵对应的像素值,y,cr,cb为转换后的数值。经过颜色空间转换后,得到彩色图像对应的YCrCb颜色空间的三个像素矩阵,分别为:Y矩阵、Cr矩阵和Cb矩阵。
(2)对每个像素矩阵依次进行分块处理、DCT变换和量化处理,得到每个像素矩阵对应的多个量化子矩阵。对于每个像素矩阵均进行下列的操作:
首先,按照由左向右和由上至下的顺序将像素矩阵分解为多个子矩阵。由于DCT变换是对8×8矩阵进行处理,因此每个子矩阵的大小均为8×8。
然后,对该像素矩阵的每个子矩阵进行DCT变换,得到每个子矩阵对应的新子矩阵。
最后,使用量化表对该像素矩阵的每个新子矩阵进行量化,得到每个新子矩阵对应的量化子矩阵。量化过程为:将8×8新子矩阵元素值除以量化表对应位置的元素值,得到64个数值,对每个数值取整后得到8×8的量化子矩阵。
在进行量化处理时,分别对Y矩阵、Cr矩阵和Cb矩阵采用不同的量化表,其中Y矩阵的量化表为:
Cr矩阵和Cb矩阵采用相同的量化表,Cr矩阵和Cb矩阵的量化表为:
(3)对每个像素矩阵的所有量化子矩阵进行DC系数编码和非零AC系数编码,得到每个像素矩阵对应的多个DC系数二进制比特串和多个AC系数二进制比特串。一个量化子矩阵对应一个DC系数二进制比特串和一个AC系数二进制比特串。对于每个像素矩阵均进行下列操作:
首先,对于第i个像素矩阵中的每个量化子矩阵,采用定长编码方法对该量化子矩阵的DC系数进行编码,按照DC系数编码长度将其转换为二进制数据,得到该量化子矩阵的DC系数二进制比特串。所述DC系数为所述量化子矩阵中第1行第1列的元素。
然后,采用定长编码方法对该量化子矩阵的每个非零AC系数进行编码,按照AC系数编码长度将其转换为二进制数据,得到每个非零AC系数对应的二进制比特串。AC系数为所述量化子矩阵中除DC系数之外的其他元素。
最后,将该量化子矩阵每个非零AC系数对应的二进制比特串按照先行后列的顺序合并,得到该量化子矩阵对应的AC系数二进制比特串。
完成DC系数编码和AC系数编码后,对每个像素矩阵的每个量化子矩阵按照元素位置建立比特索引矩阵,得到每个量化子矩阵对应的比特索引矩阵;所述比特索引矩阵中第i行第j列的元素为对应的量化子矩阵第i行第j列的元素的索引值,索引值为1表示量化子矩阵的元素被编码,索引值为0表示量化子矩阵的元素未编码。并将每个量化子矩阵对应的比特索引矩阵保存至配置文件中。
(4)按照分块处理的顺序,将每个像素矩阵对应的所有DC系数二进制比特串合并,得到每个像素矩阵对应的第一二进制比特串。分块顺序即由左向右和由上至下,将每个像素矩阵对应的所有DC系数二进制比特串按照对应的量化子矩阵的位置进行合并,得到第一二进制比特串。
(5)按照分块处理的顺序,将每个像素矩阵对应的所有AC系数二进制比特串进行合并,得到每个像素矩阵对应的第二二进制比特串。将每个像素矩阵对应的所有AC系数二进制比特串按照对应的量化子矩阵的位置进行合并,得到第二二进制比特串。
(6)将所有像素矩阵的第一二进制比特串和所有像素矩阵的第二二进制比特串合并,得到水印比特串。例如,首先将所有像素矩阵的第一二进制比特串按照Y、Cr、Cb的顺序合并,然后将所有像素矩阵的第二二进制比特串按照Y、Cr、Cb的顺序合并,最后两个合并后的比特串合并得到水印比特串。
步骤103:获取水印嵌入密钥和水印嵌入参数。水印嵌入参数包括所述数据集中每个数据的最高有效位数msb和每个数据比特可更改范围值lsb。
步骤104:根据水印嵌入密钥计算数据集中每一行数据的行标识号。数据集包括n行m列数据,每一行对应一个主键值。设数据集为BD,数据表记为BD(P,A1,A2,…,Am)。其中,P为主键属性列,Aj为嵌入水印属性列(1≤j≤m)。设BD包含n行数据,记为{R1,R2,…,Rn}。
对第i行数据Ri(1≤i≤n),行标识号计算公式为:
RIDi=H(key∥H(Ri.P∥key)) (6)
其中key为水印嵌入密钥,Ri.P为Ri对应的主键值,H为安全哈希函数,符号∥为连接操作符。
步骤105:对于数据集的每个数据,根据数据的数值和数据对应的行标识号,计算数据对应的数据标识号。第i行第j列的数据Ri.Aj,数据标识号计算公式为:
AIDij=H(key∥H(RIDi∥msb(Ri.Aj))) (7)
其中,Ri.Aj为Ri对应属性列Aj的值即数据集中第i行第j列的数据,msb为水印嵌入参数,表示数据Ri.Aj最高有效位数,msb(Ri.Aj)为Ri.Aj最高有效位数对应的值。
步骤106:根据水印嵌入参数、数据标识号和水印比特串的长度,确定水印比特位置。水印比特位置为数据对应的待嵌入水印在水印比特串中的位置,即确定将水印比特串中的哪个位置的水印比特值嵌入该数据中。对于数据Ri.Aj,水印比特位置pos计算公式为:
pos=AIDij mod s (8)
步骤107:根据水印嵌入参数和数据标识号确定数据中待嵌入水印的比特位。即确定在数据中的哪个比特位嵌入水印比特值。对于数据Ri.Aj,待嵌入水印的比特位index计算公式为:
index=AIDijmod lsb (9)
其中,lsb为水印嵌入参数,表示在Ri.Aj中数据比特可更改范围。
步骤108:将水印比特串中水印比特位置的水印比特值嵌入数据中待嵌入水印的比特位,得到带有水印比特信息的数据。
为了保证带有水印比特信息的数据是可用的,得到带有水印比特信息的数据之后还需要进一步的验证。具体的,计算带有水印比特信息的数据相比于初始的数据的变化值是否在数据可用性范围内。如果在数据可用性范围内,则将带有水印比特信息的数据更新到数据集BD中,完成水印比特信息的嵌入。否则,该数据中不嵌入水印比特信息,在数据集中保留原始不带水印比特信息的数据。
步骤109:依次得到所有带有水印比特信息的数据,得到带有彩色图像水印的数据集。当遍历所有数据后,将水印比特串信息嵌入到数据集BD,此时数据集即为带有彩色图像水印的数据集BDW。
对应图1所示的面向大数据的彩色图像水印的嵌入方法,本发明还提供一种面向大数据的彩色图像水印的提取方法。设版权验证数据集为BDW*,版权验证数据集BDW*包含n′行数据,记为{R1*,R1*,…,Rn′*}。当从数据集BDW*中验证数据所有者版权信息时,需要从BDW*中提取出嵌入的水印比特串,并将水印比特串还原为彩色图像信息。在水印提取过程中,需要使用水印密钥参数提取水印,密钥参数包括水印嵌入密钥key、msb、lsb和水印图像比特串长度s,这些参数只有水印嵌入方即数据拥有者知道,水印攻击者则无法获得。由于图像信息已经嵌入到大数据中,因此水印提取时不需要原始的数据,只需要数据集BDW*即可提取出水印信息。图2为本发明面向大数据的彩色图像水印的提取方法的流程示意图。如图2所示,本发明面向大数据的彩色图像水印的提取方法包括以下步骤:
步骤201:获取版权验证数据集。所述版权验证数据集为嵌入彩色图像水印的数据集。
步骤202:获取水印嵌入密钥和水印嵌入参数。此处的水印嵌入密钥和水印嵌入参数即为数据拥有者在图像嵌入过程中使用的参数。
步骤203:根据所述水印嵌入密钥,计算所述版权验证数据集中每一行数据的行标识号。计算方式与图像嵌入过程一致,采用公式(6)进行计算。
步骤204:对于所述版权验证数据集的每个数据,根据所述数据的数值和所述数据对应的行标识号,计算所述数据对应的数据标识号。计算方式与图像嵌入过程一致,采用公式(7)进行计算。
步骤205:根据所述水印嵌入参数、所述数据标识号和所述水印比特串的长度,确定水印比特位置。所述水印比特位置为所述数据对应的嵌入水印在水印比特串中的位置。计算方式与图像嵌入过程一致,采用公式(8)进行计算。
步骤206:根据所述水印嵌入参数和所述数据标识号确定数据比特位置。所述数据比特位置为所述数据中嵌入水印的位置。计算方式与图像嵌入过程一致,采用公式(9)进行计算。
步骤207:提取所述数据中所述数据比特位置的比特数值,得到所述水印比特串中所述水印比特位置的比特数值。
步骤208:依次得到所有水印比特位置的比特数值,得到所述水印比特串。由于水印比特串的长度小于数据的个数,因此水印比特串中每个比特数值会重复嵌入多个数据中,即存在多个不同数据之间嵌入相同的比特数值。为了降低提取水印比特的误码率,采用多数选举策略确定水印比特串。具体过程为:
(1)初始化第一数组和第二数组,第一数组和第二数组中初始数值均为0。所述第一数组和第二数组的长度与所述水印比特串的长度一致,均为s。第一数组用于记录数据中提取的水印比特值为1的个数,第二数组用于记录数据中提取的水印比特值为0的个数。
(2)对于每个数据来说,当第j个水印比特位置的比特数值为1时,将所述第一数组中的第j个位置的数值加1。当第j个水印比特位置的比特数值为0时,将所述第二数组中的第j个位置的数值加1。
(3)依次遍历所述版权验证数据集中每个数据后,根据每个数据对应的所有水印比特位置的比特数值对所述第一数组和所述第二数据进行更新,得到更新后的第一数组和更新后的第二数组。
(4)对于所述水印比特串中第k个比特位,比较所述更新后的第一数组中第k个位置的数值与所述更新后的第二数组中第k个位置的数值大小。
(5)当所述更新后的第一数组中第k个位置的数值大于所述更新后的第二数组中第k个位置的数值时,确定所述水印比特串中第k个比特位的比特数值为1。当所述更新后的第一数组中第k个位置的数值不大于所述更新后的第二数组中第k个位置的数值时,确定所述水印比特串中第k个比特位的比特数值为0。
(6)按照上述方法依次得到所述水印比特串中每个比特位的比特数值,得到所述水印比特串。
步骤209:对所述水印比特串进行解码,得到嵌入的彩色图像。具体过程如下:
(1)对所述水印比特串进行拆分,得到每个像素矩阵对应的第一二进制比特串和第二二进制比特串。所述第一二进制比特串为所述像素矩阵对应的所有DC系数二进制比特串合并后的比特串,所述第二二进制比特串为所述像素矩阵对应的所有AC系数二进制比特串合并后的比特串。
(2)对每个像素矩阵对应的第一二进制比特串按照分块处理顺序进行拆分,得到每个像素矩阵对应的多个DC系数二进制比特串。
(3)对每个像素矩阵对应的第二二进制比特串按照分块处理顺序进行拆分,得到每个像素矩阵对应的多个AC系数二进制比特串。多个AC系数二进制比特串与多个DC系数二进制比特串一一对应。
(4)将每个DC系数二进制比特串与对应的AC系数二进制比特串进行解码,得到对应的量化子矩阵。一个量化子矩阵对应一个DC系数二进制比特串和一个AC系数二进制比特串;所述DC系数二进制比特串解码得到的DC系数为所述量化子矩阵中第1行第1列的元素,所述AC系数二进制比特串解码得到的AC系数为所述量化子矩阵中除DC系数之外的其他元素。
(5)对多个量化子矩阵依次进行反量化处理、DCT逆变换和组合处理,得到彩色图像对应的YCrCb颜色空间的三个像素矩阵。首先,对于每个像素矩阵,使用量化表对该像素矩阵的每个量化子矩阵进行反量化,得到每个量化子矩阵对应的新子矩阵。然后,对该像素矩阵的每个新子矩阵进行DCT逆变换,得到每个新子矩阵对应的子矩阵。最后,按照分块处理顺序将该像素矩阵的所有子矩阵组合,得到该像素矩阵。进而得到YCrCb颜色空间的三个像素矩阵:Y矩阵、Cr矩阵和Cb矩阵。
(6)对所述彩色图像进行颜色空间转换,得到RGB颜色空间的彩色图像。
对所述水印比特串进行拆分之前,需要确定拆分的节点,具体过程如下:
获取配置文件中存储的比特索引矩阵。所述比特索引矩阵中第i行第j列的元素为对应的量化子矩阵第i行第j列的元素的索引值,索引值为1表示量化子矩阵的元素被编码,索引值为0表示量化子矩阵的元素未编码。
根据DC系数编码长度、AC系数编码长度和所述比特索引矩阵,确定每个像素矩阵的每个量化子矩阵的DC系数二进制比特串长度和AC系数二进制比特串长度。
根据每个像素矩阵的每个量化子矩阵的DC系数二进制比特串长度和AC系数二进制比特串长度,确定每个像素矩阵对应的第一二进制比特串长度和第二二进制比特串长度。
下面提供一个具体实施案例进一步说明本发明的方案。
图3为本发明具体实施案例的系统组成示意图。如图3所示,本实施案例分为水印嵌入和水印提取两部分,水印嵌入服务将表示数据拥有者的版权信息嵌入到数据中,水印提取服务从数据中提取出嵌入的水印信息,并进行版权归属验证。系统运行的物理载体为MySQL和MongoDB数据库,水印嵌入和提取服务运行在数据库之上,并为系统操作用户提供最终的水印嵌入/提取服务。
图4为本发明具体实施案例的流程示意图。如图4所示,本实施案例利用彩色图像的冗余性特点,对彩色图像进行压缩处理,降低在大数据中嵌入的水印信息量,实现对彩色图像水印的嵌入。在水印嵌入过程中,同时在数据行的多个属性列上嵌入水印信息,提高大数据的水印容量,进而提高大数据中嵌入彩色图像水印的鲁棒性。水印提取与版权验证过程是水印嵌入的逆过程,从大数据中提取出嵌入的彩色图像信息,实现大数据的版权归属与验证。
彩色图像嵌入过程:首先采用JPEG压缩编码思想,降低图像的冗余信息。在不影响图像质量的前提下,对彩色图像进行有损的压缩后,生成对应的水印比特串。然后使用水印密钥,对数据的嵌入水印属性列值进行唯一标识,并建立数据标识与水印比特串中的水印比特位之间的映射关系。最后计算出水印在数据中的嵌入位置,依此进行数据更改后,完成水印的嵌入,若更改后的数据不满足可用性约束条件,则将数据回滚,表示该数据无法嵌入水印。当遍历所有数据后,此时彩色图像嵌入到数据库,更改后的数据库即为水印数据库。
图5为本发明具体实施案例中彩色图像编码的流程示意图。如图5所示,包括以下步骤:
步骤1:颜色空间转换:彩色图像采用RGB颜色空间,JPEG算法采用YCrCb颜色空间。因此,首先读取彩色图像的RGB颜色空间对应的像素矩阵,然后将像素矩阵转换为YCrCb颜色空间对应的矩阵。
步骤2:分块,DCT变换和量化,得到Y、Cr、Cb矩阵对应的8×8量化子矩阵集合。
步骤3:DC系数编码和AC系数编码。对于8×8的量化矩阵,称矩阵左上角的元素为DC(直流系数),其他63个元素为AC(交流系数)。遍历Y、Cr和Cb对应的量化子矩阵集合,对量化子矩阵分别采用DC系数和非零AC系数编码的方法。首先采用定长编码的方法对DC系数进行编码,将系数转换为二进制比特串。当遍历所有量化子矩阵的DC系数后,将转换后的二进制比特串按照矩阵的行列顺序排列后生成DC系数比特串。然后定长编码的方法对非零AC系数进行编码,将非零AC系数转换为二进制比特串。当遍历量化子矩阵中的非零AC系数后,将转换后的二进制比特串按照矩阵的行列顺序排列后生成AC系数比特串。由于非零AC系数值远小于DC系数值,故非零AC系数所占用的编码长度小于DC系数,采用此方法可以大大降低图像编码后的水印比特串长度。
在DC系数和非零AC系数的编码过程中,对每个量化子矩阵元素按照所在矩阵的行列位置建立比特索引矩阵,索引值为1表示已对该元素编码,索引值为0表示未对该元素编码。对所有量化子矩阵中的DC系数和非零AC系数编码后,将对应的比特索引矩阵保存在配置文件中。
步骤4:水印比特串生成。将所有DC系数二进制比特串和所有AC系数二进制比特串合并为一个二进制比特串,即为彩色图像编码后的水印比特串。
图6为本发明具体实施案例中水印嵌入时序图。如图6所示,彩色图像水印嵌入时,由系统用户触发水印嵌入操作,并调用水印嵌入服务,水印嵌入服务首先将彩色图像进行压缩,生成水印比特串。然后访问数据库,对数据库中的数据进行水印嵌入处理,最后将嵌入水印的数据更新到数据库,并将水印嵌入结果返回到系统用户界面。
彩色图像水印提取过程:使用与水印嵌入相同的密钥对数据的嵌入水印属性列值进行唯一标识,并根据数据可用性约束条件提取出嵌入的水印比特值。当对所有数据完成水印提取后,采用多数选举策略确定嵌入的水印比特。最后使用与彩色图像编码相逆的算法,将水印比特串解码为彩色图像。
图7为本发明具体实施案例中彩色图像解码的流程示意图。如图7所示,包括以下步骤:
步骤1:非零系数解码:首先读取配置文件中比特索引矩阵,根据DC系数和非零AC系数的编码长度,从水印比特串中顺序解析出DC系数和非零AC系数对应的二进制数值,并解码为量化系数。当解析水印比特串中所有的系数后,此时得到Y、Cr、Cb矩阵对应的8×8量化子矩阵集合。
步骤2:根据图像嵌入过程的量化表,对集合中的8×8子矩阵进行反量化后,得到Y、Cr、Cb对应的DCT系数矩阵。
步骤3:对DCT系数矩阵进行DCT逆变换,变换后的DCT系数矩阵为YCrCb颜色空间子块矩阵。当对左右DCT系数矩阵变换后,得到YCrCb颜色空间子块矩阵集合。
步骤4:将集合中的子块矩阵按照由左向右,由上到下的顺序组合为Y、Cr、Cb颜色空间矩阵。
步骤5:采用公式(1)、(2)、(3)的逆变换,将Y、Cr、Cb颜色空间矩阵变换为R、G、B颜色空间矩阵,最终恢复出彩色图像信息。
图8为本发明具体实施案例中水印提取时序图。如图8所示,彩色图像水印提取时,由系统用户触发水印提取操作,并调用水印提取服务,水印提取服务首先查询数据库中数据,并依次从数据中提取水印比特值,组合为水印比特串信息。然后将水印比特串恢复为彩色图像,同时计算出提取的彩色图像与原始图像的PSNR(峰值信噪比)和SSIM(结构相似度)值,最后将彩色图像和计算结果返回到系统用户界面。
本发明基于彩色图像压缩的思想,在不影响图像质量的前提下,采用JPEG压缩算法对彩色图像进行压缩,有效降低了嵌入的水印比特信息量,在大数据中嵌入真实的彩色图像信息。
同时,在数据行和属性列两个维度上同时嵌入水印信息,提高了大数据的水印容量,进而也提高了水印的鲁棒性。在水印嵌入的过程中,根据数据行的标记属性和属性列数据值计算出嵌入水印的比特位,并依此对比特位数值进行数据更改,完成水印信息的嵌入。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。