1 简介
随着计算机网络的日益普及和通信技术的飞速发展,作为版权保护的有效手段,数字水印技术已成为多媒体信号处理领域的一个研究热点,也是信息安全技术领域的一个重要分支。而小波分析又称多分辨分析,是在傅立叶分析的基础上发展起来的新兴学科,具有深刻的理论意义和广泛的应用范围,是目前国际上科技界高度关注的前沿领域。本文以静止图像为研究对象,首先详细分析总结了数字水印技术的特点、分类及一般模型,对目前典型的数字图像水印算法进行了归纳和探讨,深入研究了小波理论及小波域的数字水印实现技术,接着将Hilbert扫描、人类视觉模型和混沌加密技术引入到数字水印技术中来,提出了几种比较有效的基于小波变换的数字水印算法: 本文所提到的算法及实验都是在 MATLAB环境下进行的,所有实验结果表明:本文提出的算法能够经受住噪声、滤波、图像压缩、剪切、旋转等常见的图像处理,具有较强的鲁棒性和不可见性。
2 部分代码
clc;clear;close all; % 水印提取程序 % 读取原始音频信号3.wav存到变量A中 [A,fs,nbits] = wavread('3.wav'); % 读取含水印的音频信号test.wav存到变量T中 [T,fs,nbits] = wavread('test.wav'); % 用变量L存储音频A的长度 L = size(A); % 读取图像h.bmp存入变量M做水印信号。 M = imread('h.bmp'); % 将图像h.bmp转化为二值图并存入变量BW BW = im2bw(M); subplot(121); imshow(BW);title('原始的水印'); % 计算水印矩阵大小 % 计算BW的长度 [r,c] = size(BW); M1 = r; M2 = c; N = 10; % M12为中间变量,避免每次都计算M1*M2 M12 = M1*M2; n = M12*2; length = n*10; % 将原始音频信号分解为Ae和Ar两部分 i = 1 : length; j = [1]; % 取矩阵A的l到length行构建矩阵Ae Ae = A(i,j); % 取矩阵T的l到length行构建矩阵Te Te = T(i,j); i = length+1 : L; % 取矩阵A、T的length到L行第一列构建矩阵Ar、Tr Ar = A(i,j); Tr = T(i,j); % 建立元胞B,每个音频数据段Ae(m)是B的一个元素 k = 1; % 建立M1 x M2行l列的元胞 B = cell(n,1); Bt = cell(n,1); th = n*N; % 当k小于Ae的长度时,矩阵Ae每10行作为一个音频数据段存入元胞B中 while ( k < th ) i = k : k+9; m = (k+9)/10; B{m,1} = Ae(i,j); Bt{m,1} = Te(i,j); k = k+10; end % 建立元胞D D = cell(n,1); Dt = cell(n,1); for i = 1 : n % 将元胞B中离散余弦变换了的元素存入元胞D中 D{i,1} = dct(B{i,1}); Dt{i,1} = dct(Bt{i,1}); end % 建立一维序列C,用于储存提取的水印信息 C = zeros(1,n); for i = 1 : n th1 = abs(Dt{i,1}(3)/D{i,1}(3)); if th1 < 2.0 C(i) = 0; else C(i) = 1; end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 对水印信号进行解扩频处理 % 扩频系数为2 M = zeros(n,1); % 产生与嵌入式相同的密钥序列M for k = 1 : n if mod(k,4) == 0 M(k) = 1; else M(k) = 0; end % 提取出来的水印信号序列分别按位与密钥异或 l = ceil(k/2); S(l) = bitxor(C(k),M(k)); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 对水印信息进行升维,构建二维图像 for j = 1 : M2 for i = 1 : M1 n = (j-1)*M1+i; Im(i,j) = S(n); end end subplot(122);imshow(Im);title('提取的水印');
3 仿真结果
4 参考文献
[1]盛潭. 基于小波变换的数字水印的研究与实现[D]. 天津科技大学, 2012.