图像隐写基于matlab GBT+SVD数字水印嵌入与提取含Matlab源码 1668期
Posted 紫极神光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像隐写基于matlab GBT+SVD数字水印嵌入与提取含Matlab源码 1668期相关的知识,希望对你有一定的参考价值。
一、SVD数字水印简介
理论知识参考文献:基于DWT和SVD的彩色图像数字水印算法研究
一种基于DWT-SVD的图像数字水印算法
二、部分源代码
clc
close all
clear
%% Input images
I=imread('Lena.jpg');
I=imresize(I,[512,512]);
logo=randsrc(8,8,[0,1]);
figure
subplot(1,4,1)
imshow(I)
title('原始图片')
subplot(1,4,2)
B=I(:,:,3); % Blue Channel
imshow(logo)
xlabel('水印图片')
gf=100; % Watermark Strength
n_gt=64; % <=64
zigzag=[1 9 2 3 10 17 25 18 11 4 5 12 19 26 33 41 34 27 20 13 6 7 14 21 28 35 42 49 57 ...
50 43 36 29 22 15 8 16 23 30 37 44 51 58 59 52 45 38 31 24 32 39 46 53 60 61 54 47 40 48 55 62 63 56 64];
gt_idx=zigzag(1:n_gt);
%% key generation:
key=randperm(256*256,64*64);
%% Block Selection (Embedding Step):
c=0;
Watermarked_B=B;
for i=1:64:64*64-63
c=c+1;
block_index=key(i:i+63);
blockB=double(reshape(B(block_index),[8,8]));
% graph-based transform:
gt_blockB=GT2(blockB);
% Singular Value Decomposition:
[U,S,V]=svd(gt_blockB(gt_idx));
sigmaB=S(1); % Biggest Singular Value
% embedding watermark image:
if logo(c)==1
S(1)=sigmaB+gf;
else
S(1)=sigmaB-gf;
end
referencei=S;
coeffs=U*S*V; % inverse svd
rec_gt_block=zeros(8);
rec_gt_block(gt_idx)=coeffs;
rec_block=iGT2(rec_gt_block); % inverse gt
row_block=reshape(rec_block,1,64);
Watermarked_B(block_index)=row_block;
end
Watermarked_image=I;
Watermarked_image(:,:,3)=Watermarked_B;
subplot(1,4,3),
imshow(Watermarked_image);
title('嵌入水印的图片')
%% Extraction Step
Ex_watermark=zeros(8);
Watermarked_B=Watermarked_image(:,:,3);
c=0;
for i=1:64:64*64-63
c=c+1;
block_index=key(i:i+63);
blockB=double(reshape(B(block_index),[8,8]));
% graph transform:
gt_blockB=GT2(blockB);
% Singular Value Decomposition:
[Ub,Sb,Vb]=svd(gt_blockB(gt_idx));
Sbw=referencei;
sigmaB=Sb(1); % Biggest Singular Value - Host
sigmaBW=Sbw(1); % Biggest Singular Value - Watermarked
% Extracting watermark image:
if sigmaBW>sigmaB
Ex_watermark(c)=1;
end
end
subplot(1,4,4),
imshow(Ex_watermark)
xlabel('提取水印');
Bit_Error_Rate=sum(sum(Ex_watermark~=logo))/numel(logo)
Structure_Similarity_Index=ssim(Watermarked_image,I)
Peak_Signal_toNoise_Ratio=psnr(Watermarked_image,I)
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.
[3]宋俊辉,鲁骏.彩色图像数字水印嵌入和提取模型研究——基于DWT和DCT[J].现代商贸工业. 2011,23(17)
以上是关于图像隐写基于matlab GBT+SVD数字水印嵌入与提取含Matlab源码 1668期的主要内容,如果未能解决你的问题,请参考以下文章
图像隐写基于matlab遗传算法的奇异值分解数字水印嵌入提取含Matlab源码 2115期
图像隐写基于matlab遗传算法的奇异值分解数字水印嵌入提取含Matlab源码 2115期
语音隐写基于matlab GUI SVD音频信号数字水印嵌入提取攻击含Matlab源码 2095期
语音隐写基于matlab GUI SVD音频信号数字水印嵌入提取攻击含Matlab源码 2095期