1 简介 文章对DCT(离散余弦变换)域图像数字水印算法进行了研究,并用matlab工具进行实验,结果表明该算法使水印的嵌入达到了较好的鲁棒性和不可见性.对原始信号做DCT的算法:Cox和Piva等
1 简介
文章对DCT(离散余弦变换)域图像数字水印算法进行了研究,并用matlab工具进行实验,结果表明该算法使水印的嵌入达到了较好的鲁棒性和不可见性.对原始信号做 DCT 的算法:Cox 和 Piva 等人提出的 DCT 技术的经典之作。Cox 利用随机数发生器产生标准正态序列作为水印信息对图像进行整体 DCT 变换后,选取除去 DC 系数之外部分较低频率系数叠加水印信息;Piva 则修改整幅图像的中频部分。对原始信号分块后,再作 DCT 的算法:Hsu 和 Wu 把图像进行 8*8 分块,将一个二进制序列作为水印放入 DCT 的中频区;有些学者则计算整个图像的 DCT,把一个实数序列嵌入DCT 的中频系数上。选择中频区的好处是一方面尽量减少嵌入信息对图像主观视觉的影响;同时,尽量避免有损压缩对水印信息可能带来的损失。
2 部分代码
clear,clc%{
%------------------------------------------------------------------
%加入水印
%------------------------------------------------------------------
Watermarking='./Test picture/test_1.jpg';
WM=imread(Watermarking); %水印图像
figure,imshow(WM),title('Watermarking');
%-----------------------------------------------
Image_name ='./Test picture/test_2.jpg';
IM=imread(Image_name); %原始载体
figure,imshow(IM),title('Original drawing');
%-----------------------------------------------
Add_Watermarking(Watermarking,Image_name); %添加水印
%-----------------------------------------------
At_Watermarking_picture='./Watermarking picture/At Watermarking picture.png';
AWM=imread(At_Watermarking_picture); %添加水印后的图片
figure,imshow(AWM),title('After watermarking picture');
%------------------------------------------------------------------
%加密
%------------------------------------------------------------------
Modulation_Key=0.362000000001; %加密密钥
Image_name='./Watermarking picture/At Watermarking picture.png';
W_encryption_picture=imread(Image_name); %将加密的图像
figure,imshow(W_encryption_picture),title('Before the encryption');
%-----------------------------------------------
Image_Encryption(Modulation_Key,Image_name); %混沌加密函数
%-----------------------------------------------
encryption_picture='./Encryption picture/encryption picture.png';
image_encryption=imread(encryption_picture); %加密后图像
figure,imshow(image_encryption),title('After encrypted');
%------------------------------------------------------------------
%解密
%------------------------------------------------------------------
Modulation_Key; %解密密钥
Image_name='./Encryption picture/encryption picture.png';
image_encryption=imread(Image_name); %被加密的图像
figure,imshow(image_encryption),title('Before the decryption');
%-----------------------------------------------
Image_Decryption(Modulation_Key,Image_name) %解密函数
%-----------------------------------------------
decryption_picture='./Decryption picture/decryption picture.png';
image_Decryption=imread(decryption_picture); %解密后的图像
figure,imshow(image_Decryption),title('After decrypted');
%}
%------------------------------------------------------------------
%提取水印
%------------------------------------------------------------------
Image_name='./Decryption picture/decryption picture.png';
A_Watermarking_Picture=imread(Image_name); %提取水印前的图像
figure,imshow(A_Watermarking_Picture),title('Before extract Watermarking');
%-----------------------------------------------
Extract_Watermarking(Image_name)
%-----------------------------------------------
Watermarking_picture='./Watermarking picture/Watermarking picture.png';
A_Watermarking_Picture=imread(Watermarking_picture); %提取的水印图像
figure,imshow(A_Watermarking_Picture),title('Watermarked image');
%------------------------------------------------------------------
3 仿真结果
4 参考文献
[1]吴和静, 闵昆龙, 刘芳,等. 基于DCT域的图像数字水印算法及matlab实现[J]. 中国科技信息, 2014(9):2.