提取水印svd matlab

时间:2016-02-16 13:34:13

标签: matlab watermark extraction svd

我在使用SVD提取水印时遇到问题。

这是我的代码:

clc
close all;
a=0.0010
I=imread('citra.jpg'); %Image Host
I=rgb2gray(I);
II=im2double(I);
[U,S,V]=svd(II);
M=imread('logoUPN.jpg'); %Image Watermark
M=rgb2gray(M)
W=im2double(M);
%Embedding St = S + a * W;
AW = U * St * V';
imwrite(AW,'watermarked.jpg');
%Extract IW =imread('watermarked.jpg'); WW = im2double(IW);
ST=U' * WW * V;
Ww=(ST-Siga)/a;
figure,imshow(AW);
figure,imshow(Ww);

提取图像模糊不清晰。我想制作两个菜单嵌入和提取。

2 个答案:

答案 0 :(得分:0)

用于提取水印使用[UT ST VT] = svd(WW)而不是ST = U' * WW * V然后使用此ST值提取水印。

答案 1 :(得分:0)

这里S是一个对角矩阵,另外两个分别是遵循规则U S V'的左右奇异向量。 要获得S值,我们不能应用反乘法。因此需要写[U S V] = SVD(WW)代替表达式。