数字水印算法:基于GBT和SVD的数字水印嵌入与提取
数字水印技术是一种用于保护数据安全性、版权保护等方面的技术。由于水印的存在,即使在数据传输过程中被盗窃或篡改,通过提取水印可以判断出数据是否被篡改,从而保证数据的安全性。本文将介绍一种基于GBT和SVD的数字水印嵌入与提取算法,并给出相应的Matlab代码实现。
- 数字水印嵌入算法
(1) 首先将要嵌入水印的原图进行DCT变换,得到其频域系数矩阵。
(2) 对得到的频域系数矩阵进行GBT变换,得到一个与原系数矩阵大小相同的矩阵。
(3) 对使用随机数生成的二进制串进行SVD分解,得到S矩阵。
(4) 将得到的S矩阵嵌入到GBT系数矩阵的最高频率位置上。
(5) 对嵌入了水印的GBT系数矩阵进行逆GBT变换,得到新的系数矩阵。
(6) 对新的系数矩阵进行IDCT逆变换,得到被嵌入了数字水印的图像。
- 数字水印提取算法
(1) 对嵌入了数字水印的图像进行DCT变换,得到其频域系数矩阵。
(2) 对得到的系数矩阵进行GBT变换,得到一个与原系数矩阵大小相同的矩阵。
(3) 提取GBT系数矩阵最高频率位置上的值,得到S矩阵。
(4) 对得到的S矩阵进行SVD分解,即可得到嵌入的水印信息。
以下是采用Matlab实现的数字水印嵌入和提取算法代码:
% 数