技术领域
本发明涉及数字图像水印技术,尤其涉及带隐形水印的数字图像篡改检测方法,属于图像处理技术领域。
背景技术
随着多媒体技术的发展,人们使用以图像、视频等数字产品变得愈加频繁,对这些数字产品的运用领域也越来越广泛,所以对于图片的原创认定、篡改检测成为一个突出的问题。
发明内容
本发明的目的在于提供一种带隐形水印的数字图像篡改检测方法,能有效检测宿主图像是否发生篡改。
本发明所采用的技术方案是:带隐形水印的数字图像篡改检测方法,其特征在于,包括如下步骤:
步骤一:对数字图像进行隐形水印加密:将宿主图像和加密水印图像分别以像素矩阵形式表示,将加密水印图像的像素矩阵经水印加密算法嵌入到宿主图像中;
步骤二:对带隐形水印的数字图像进行解码:从宿主图像的像素矩阵中经过水印解码算法提取还原水印图像的像素矩阵;
步骤三:比较加密水印图像和还原水印图像:若加密水印图像的像素矩阵与还原水印图像的像素矩阵相等,则说明宿主图像未被篡改,否则,说明宿主图像被篡改。
所述水印加密算法包括如下步骤:
1)将宿主图像和加密水印图像分别以像素矩阵形式表示:
设宿主图像的像素矩阵由N行×M列个子像素排列构成,记为ANM,ANM中第i行、第j列的子像素记为aij;其中,1≤i≤N,1≤j≤M,0≤aij≤255;
设加密水印图像的像素矩阵由n行×m列个子像素排列构成,记为Bnm,Bnm中第s行、第t列的子像素记为bst;其中,1≤s≤n,1≤t≤m,0≤bst≤255;
其中,N≥n,M≥3m;
2)提取Bnm子像素的百位、十位、个位:设子像素bst的百位、十位、个位分别记为x、y、z;
3)将ANM中待加密的子像素的个位归零:选定ANM中所在行值不大于n,且所在列值不大于3m的子像素为待加密子像素,将待加密子像素的个位归零,第i行、第j列归零后的子像素用a''ij表示;
4)将加密水印图像嵌入宿主图像:将ANM中第i行、第j列加密后的子像素记为
将子像素bst的百位x与a''s(3t-2)相加,则
将子像素bst的十位y与a''s(3t-1)相加,则
将子像素bst的个位z与a''s(3t)相加,则
依此类推,直至将Bnm中所有子像素嵌入到ANM中,ANM中未进行加密处理的子像素保持不变,由此得到加密后的图像像素矩阵CNM。
所述水印解码算法包括如下步骤:
1)选定CNM中所在行值不大于n,且所在列值不大于3m的区域为待解码区域;
2)在待解码区域中,以行为单位,从左至右依次在CNM中取三个子像素,并提取三个子像素的个位数:设从CNM中第p行所取的三个子像素分别为其中,
的个位数记为x’,
的个位数记为y’,
的个位数记为z’;
3)将三个子像素的个位数分别乘以100、10、1,并求和,还原得出还原水印图像的像素矩阵中的子像素:
表示
中第p行,第
列的子像素。
与现有技术相比,本发明所达到的有益效果:提供了一种带隐形水印的数字图像篡改检测方法,其算法简单,操作简便易行,能够快速判断图像是否发生篡改检测,利于版权保护;通过调整不重要的数据,对原始图像的视觉效果影响较小;并且,该方法计算量小,满足实时性要求。
附图说明
图1是本发明的操作流程图。
具体实施方式
以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
如图1所示,带隐形水印的数字图像篡改检测方法,包括如下步骤:
步骤一:对数字图像进行隐形水印加密:将宿主图像和加密水印图像分别以像素矩阵形式表示,将加密水印图像的像素矩阵经水印加密算法嵌入到宿主图像中。
水印加密算法包括如下步骤:
1)将宿主图像和加密水印图像分别以像素矩阵形式表示:
设宿主图像的像素矩阵由N行×M列个子像素排列构成,记为ANM,ANM中第i行、第j列的子像素记为aij;其中,1≤i≤N,1≤j≤M,0≤aij≤255;
设加密水印图像的像素矩阵由n行×m列个子像素排列构成,记为Bnm,Bnm中第s行、第t列的子像素记为bst;其中,1≤s≤n,1≤t≤m,0≤bst≤255;
其中,N≥n,M≥3m;
2)提取Bnm子像素的百位、十位、个位:设子像素bst的百位、十位、个位分别记为x、y、z;
3)将ANM中待加密的子像素的个位归零:选定ANM中所在行值不大于n,且所在列值不大于3m的子像素为待加密子像素,将待加密子像素的个位归零,第i行、第j列归零后的子像素用a''ij表示;
4)将加密水印图像嵌入宿主图像:将ANM中第i行、第j列加密后的子像素记为
将子像素bst的百位x与a''s(3t-2)相加,则
将子像素bst的十位y与a''s(3t-1)相加,则
将子像素bst的个位z与a''s(3t)相加,则
依此类推,直至将Bnm中所有子像素嵌入到ANM中,ANM中未进行加密处理的子像素保持不变,由此得到加密后的图像像素矩阵CNM。
现举例对上述水印加密算法作进一步解释说明:将宿主图像以像素矩阵形式表示,假设为假设ANM为8行8列矩阵:
同样,将加密水印图像以像素矩阵形式表示,假设Bnm为2行2列矩阵:
假设a11=207,a12=143,a13=89,b11=120,提取b11的百位、十位、个位分别记为x、y、z,则x=1,y=2,z=0,与b11相对应的待加密子像素是a11,a12,a13,将a11,a12,a13的个位归零,得到a''11,a''12,a''13,则a''11=200,a''12=140,a''13=80,然后将x与a''11相加,得到将y与a''12相加,得到
将z与a''13相加,得到
相同的,若a14=137,a15=123,a16=29,b12=13,则
步骤二:对带隐形水印的数字图像进行解码:从宿主图像的像素矩阵中经过水印解码算法提取还原水印图像的像素矩阵;
水印解码算法包括如下步骤:
1)选定CNM中所在行值不大于n,且所在列值不大于3m的区域为待解码区域;
2)在待解码区域中,以行为单位,从左至右依次在CNM中取三个子像素,并提取三个子像素的个位数:设从CNM中第p行所取的三个子像素分别为其中,
的个位数记为x’,
的个位数记为y’,
的个位数记为z’;
3)将三个子像素的个位数分别乘以100、10、1,并求和,还原得出还原水印图像的像素矩阵中的子像素:
表示
中第p行,第
列的子像素。
现以加密后的图像像素矩阵C8×8为例:
对C8×8进行解码运算,已知加密水印图像的像素矩阵Bnm为2行2列矩阵,即n=m=2,C8×8中行值不大于2,列值不大于6的区域为待解码区域,从C8×8第一行开始,从左至右3个为一组取子像素,第一组为:的个位数记为x’=1,
的个位数记为y’=2,
的个位数记为z’=0;
的个位数记为x’=0,
的个位数记为y’=1,
的个位数记为z’=3;
第一行解码完成后,继续第二行解码,得出
步骤三:比较加密水印图像和还原水印图像:若加密水印图像的像素矩阵与还原水印图像的像素矩阵相等,则说明宿主图像未被篡改,否则,说明宿主图像被篡改。即若B2×2与相等,则说明宿主图像未被篡改,否则,说明宿主图像被篡改。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。