⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dwt.m

📁 代码利用DWT算法实现了电子水印技术。 其中包括了水印的插入
💻 M
字号:
clc; clear

CoverImage = imread('E:\Phd\My Paper\Second paper -- Experiment\Experiment\Cover and Secret Image\lena.bmp');
cv_d = double(CoverImage);

WatermarkImage = imread('E:\Phd\My Paper\Second paper -- Experiment\Experiment\Cover and Secret Image\hat.bmp');
wm_d = double(WatermarkImage);

[lena_ca, lena_ch, lena_cv, lena_cd] = dwt2(cv_d, 'haar');
[hat_ca, hat_ch, hat_cv, hat_cd] = dwt2(wm_d, 'haar');

alpha = 0.2;

wm_ca = lena_ca + alpha*hat_ca;
wm_ch = lena_ch + alpha*hat_ch;
wm_cv = lena_cv + alpha*hat_cv;
wm_cd = lena_cd + alpha*hat_cd;

wm_image = idwt2(wm_ca, wm_ch, wm_cv, wm_cd, 'haar');

wm_imagec = uint8(wm_image);

figure(1)
imshow(CoverImage)
title('CoverImage')

figure(2)
imshow(WatermarkImage)
title('WatermarkImage')

figure(3)
imshow(wm_imagec)
title('watermarked')


%===================Extraction================================
[extraction_wma, extraction_wmh, extraction_wmv, extraction_wmd] = dwt2(wm_imagec,'haar');

sub_wma = (extraction_wma-lena_ca)/alpha;
sub_wmh = (extraction_wmh-lena_ch)/alpha;
sub_wmv = (extraction_wmv-lena_cv)/alpha;
sub_wmd = (extraction_wmd-lena_cd)/alpha;

sub_im = idwt2(sub_wma, sub_wmh, sub_wmv, sub_wmd,'haar');

sub_imc = uint8(sub_im);
figure(4)
imshow(sub_imc)
title('extracte watermarked image');
%==============================================================

%=======================Sharpen============================
SharpedWatermarkImage = wm_imagec;
H = fspecial('unsharp',0.005);          %the alpha from 0.005 to 0.1 20 numbers
sharpImage = imfilter(SharpedWatermarkImage,H,'replicate');
figure(5);
imshow(sharpImage);
colormap(gray(256));
title('sharp Image');
imwrite(sharpImage, gray(256), 'sharpImage.bmp');

[sharpen_wma, sharpen_wmh, sharpen_wmv, sharpen_wmd] = dwt2(sharpImage,'haar');

sub_sharpen_wma = (sharpen_wma-lena_ca)/alpha;
sub_sharpen_wmh = (sharpen_wmh-lena_ch)/alpha;
sub_sharpen_wmv = (sharpen_wmv-lena_cv)/alpha;
sub_sharpen_wmd = (sharpen_wmd-lena_cd)/alpha;

sub_sharpen_im = idwt2(sub_sharpen_wma, sub_sharpen_wmh, sub_sharpen_wmv, sub_sharpen_wmd,'haar');

sub_sharpen_im = uint8(sub_sharpen_im);
figure(6)
imshow(sub_sharpen_im)
title('extracte sharpen watermarked image');

psnrSharp = psnr(wm_imagec, sub_sharpen_im)

%===============================================================

%===========================Gaussian Blur=================
GaussianBlurWatermarkedImage = wm_imagec;
H = fspecial('gaussian',size(GaussianBlurWatermarkedImage),0.035); %the alpha from 0.005 to 0.1 20 numbers 
GaussianBlurImage = imfilter(GaussianBlurWatermarkedImage,H,'replicate');
figure(8);
colormap(gray(256));
imshow(GaussianBlurImage,[])
title('Gaussian Blur Image');
imwrite(GaussianBlurImage, gray(256), 'GaussianBlurImage.bmp');

[GB_wma, GB_wmh, GB_wmv, GB_wmd] = dwt2(GaussianBlurImage,'haar');

sub_GB_wma = (GB_wma-lena_ca)/alpha;
sub_GB_wmh = (GB_wmh-lena_ch)/alpha;
sub_GB_wmv = (GB_wmv-lena_cv)/alpha;
sub_GB_wmd = (GB_wmd-lena_cd)/alpha;

sub_GB_im = idwt2(sub_GB_wma, sub_GB_wmh, sub_GB_wmv, sub_GB_wmd,'haar');

sub_GB_im = uint8(sub_GB_im);
figure(7)
imshow(sub_GB_im)
title('extracte Guassian Blur watermarked image');


psnrBlur = psnr(wm_imagec, sub_GB_im)

% 
% % % %===========================================================
% 
% 
% 
% %=======================Histogram===================================
histogramWatermarkedImage = wm_imagec;
histogramImage = histeq(histogramWatermarkedImage,10); % from 10 to 200
figure(10);
colormap(gray(256));
image(histogramImage); 
title('histogramImage Image');
imwrite(histogramImage, gray(256), 'histogramImage.bmp');

[his_wma, his_wmh, his_wmv, his_wmd] = dwt2(histogramImage,'haar');

sub_his_wma = (his_wma-lena_ca)/alpha;
sub_his_wmh = (his_wmh-lena_ch)/alpha;
sub_his_wmv = (his_wmv-lena_cv)/alpha;
sub_his_wmd = (his_wmd-lena_cd)/alpha;

sub_his_im = idwt2(sub_his_wma, sub_his_wmh, sub_his_wmv, sub_his_wmd,'haar');

sub_his_im = uint8(sub_his_im);
figure(11)
imshow(sub_his_im)
title('extracte histogram watermarked image');

 
% scale the recovered watermark  
psnrHistorgram = psnr(wm_imagec, sub_his_im)
% 
% %=======================================================================


%====================Noise==========================
NoiseWatermarked = wm_imagec;
NoiseImage = imnoise(NoiseWatermarked,'gaussian',0.005);
figure(12);
colormap(gray(256));
imshow(NoiseImage);
title('noiseImage');
imwrite(NoiseImage, gray(256), 'noiseImage.bmp');

[noise_wma, noise_wmh, noise_wmv,noise_wmd] = dwt2(NoiseImage,'haar');

sub_noise_wma = (noise_wma-lena_ca)/alpha;
sub_noise_wmh = (noise_wmh-lena_ch)/alpha;
sub_noise_wmv = (noise_wmv-lena_cv)/alpha;
sub_noise_wmd = (noise_wmd-lena_cd)/alpha;

sub_noise_im = idwt2(sub_noise_wma, sub_noise_wmh, sub_noise_wmv, sub_noise_wmd,'haar');

sub_noise_im = uint8(sub_noise_im);
figure(13)
imshow(sub_noise_im)
title('extracte noise watermarked image');

 
% scale the recovered watermark  
psnrNoise = psnr(wm_imagec, sub_noise_im)
%=============================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -