常见的水印嵌入算法:
1.基于空间域,通过改变载体图像的像素值对水印进行嵌入,方法简单,计算快,且嵌入信息大,但是抗攻击能力弱,比如LSB算法
2、基于变换域,通过将原始图像变换到不同域,然后改变变换域的系数值嵌入水印。常用的变换域系数有DCT,DWT,SVD。
DCT被广泛用于MPEG和JPEG图像压缩,通过DCT变换对低频分量嵌入水印具有较好的鲁棒性,但是抗几何攻击能力较弱,有文献提出了一种DWT-DCT混合方案,先对载体图像进行8*8块分块DWT变换,再对HL子带和LH子带进行DCT变换,水印嵌入到对应的子带DCT系数上,该方法鲁棒性强,但是不可感知性差,也有文章提出利用DWT和SVD来平衡水印图像的不可感知性,但是效果不佳,其中的ll为低频,lh,hl,hh,水平,垂直和对角高频分量。
为了改善水印的不可感知性和鲁棒性问题,根据图像哈希不可篡改的特点,提出了一种基于DCT和SVD的图像哈希水印算法。
在离散小波变换域提取载体图像的低频系数矩阵构造哈希序列,再以哈希序列以水印的方式载入载体图像?
我们可以看到将LL1分解为LH2,HL2,HH2,LL2,再将LL2分解为LL3,LH3,HL3,HH3
通过低频子带提取特征构造图像哈希水印,其过程如下,
1、令x1,x2,x3分别表示中频子带HL3,LH3,和HH3的系数集合,让n表示每个中频子带系数的个数,则
x1’,x2’,x3’分别表示由x1,x2,x3生成的哈希序列集合,
2、将每个中频系数值得绝对值与阈值T相比较生成哈希值
其中std(.)表示xi的标准差,设置不同的k值,若k足够大,会丢失更多细节。
3、将哈希序列集合xi’存放在mm的矩阵中,其中mm=n,分别得到x1’.x2’,x3’构成的矩阵h1,h2,h3
4、将h1,h2,h3进行逻辑或者操作得到哈希水印h,h=h1|h2|h3
用哈希生成水印之后,就要将水印嵌入到载体图像中了。为了达到鲁棒性和不可感知性的平衡,我们选区哈希值作为水印信息在频域中进行嵌入,载体图像需要经过DCT和SVD变换,水印图像经过SVD变换,
1、将载体图像分块8*8,对每个子块进行DCT变换,
2、提取每个DCT子块的DC系数,得到矩阵DC_block,
https://blog.csdn.net/xiaojun111111/article/details/65443800
https://zhidao.baidu.com/question/13952366.html
3、对DC系数矩阵进行SVD变换,得到奇异值矩阵S_img,
4、进行水印嵌入,嵌入方式如下
5、对new_S_img进行奇异值分解,即
6、取矩阵U_img,V_img与矩阵S做SVD逆变换得到新的DC系数矩阵
7、将new_DC_block和DCT子块进行重构,再进行DCT逆变换得到含水印的图像
1、将含有水印的图像进行8*8分块,对每个子块进行DCT变换,
2、从每个DCT子块中搜集DC系数,得到矩阵watermarked_block.
3、对watermarked_block进行SVD变换,得到对角矩阵,记为S_watermarked
4、提取水印嵌入算法中的U和V与S_watermarked做SVD逆变换,即
5、提取水印嵌入算法中的S_img,根据以下公式提取水印信息
采用PSNR(峰值信噪比)和结构相似性SSIM评价水印的不可感知性,用归一化系数NC评价水印的鲁棒性。
从上图看出嵌入水印的图像在未受攻击之前有较好的不可感知性,因为NC=1,说明提取的水印和原始水印几乎没有差异。所以也满足鲁棒性,
可以看到受不同的攻击PSNR云达到28dB,SSIM 大于0.98,NC 大于0.98,所以有较好的不可感知性和鲁棒性。
通过各种攻击对该方案的鲁棒性和安全性进行研究,结果表明,提出的图像哈希算法在抵抗各种常规攻击的能力上具有更好的鲁棒性,主要是因为该算法将载体图像进行DCT变换,然后将低频系数的组合进行SVD变换,最后将二值水印嵌入到奇异值对应的矩阵上。