奇异值分解matlab代码错误
Error in Singular Value Decomposition matlab code
我在下面的代码中遇到错误 "matrix dimensions must agree" 它出现在代码行 (Shw=Sh+a*Sw;) 我使用的 coverImage 是灰度图像,tiff 格式水印。任何建议我的问题可能是什么?谢谢
filename='107_3.tif';
coverImage = imread(filename);
Mc=size(coverImage,1);
Nc=size(coverImage,2);
a=10;
watermark = imread('dmg1.tif');
watermark=im2bw(watermark,0.05);
Mn=size(watermark,1);
Nn=size(watermark,2);
[LL,LH,HL,HH] = dwt2(coverImage,'haar');
%[LL1,LH1,HL1,HH1] = dwt2(HH,'haar');
Ih=idwt2([],[],[],HH,'haar');
[Uh,Sh,Vh]=svd(Ih);
[Uw,Sw,Vw]=svd(double(watermark));
Shw=Sh+a*Sw;**%%%%%ERROR OCCURRING HERE%%%%%**
VhT=transpose(Vh);
Ihw=Uh*Shw*VhT;
[LL2,LH2,HL2,HH2]=dwt2(Ihw,'haar');
watermarked_image=idwt2(LL,LH,LH,HH,'haar');
figure;
imshow(watermarked_image,[]);
title('Watermarked Image');
[Uh,Sh,Vh]=svd(Ih);
[Uw,Sw,Vw]=svd(double(watermark));
当您 运行 svd
时,结果矩阵 Sh
的维度与 Ih
相同,结果矩阵 Sw
的维度与 watermark
.
http://www.mathworks.com/help/matlab/ref/svd.html
现在,
Shw=Sh+a*Sw;
您正在将 2 个矩阵相加。矩阵加法要求你加在一起的矩阵具有相同的维度(相同数量的rows
,相同数量的cols
)
http://en.wikipedia.org/wiki/Matrix_addition
所以,这似乎意味着:您的代码要求水印与输入图像的尺寸相同。我不知道您使用的是什么图像你的情况,但这似乎是一个错误的期望。我猜你使用的水印通常比你嵌入的输入图像小,可能小得多。
看来你要么需要
- 使用与输入尺寸相同的水印或
- 修改您的代码,使水印的尺寸不
取决于输入图像的尺寸。
我在下面的代码中遇到错误 "matrix dimensions must agree" 它出现在代码行 (Shw=Sh+a*Sw;) 我使用的 coverImage 是灰度图像,tiff 格式水印。任何建议我的问题可能是什么?谢谢
filename='107_3.tif';
coverImage = imread(filename);
Mc=size(coverImage,1);
Nc=size(coverImage,2);
a=10;
watermark = imread('dmg1.tif');
watermark=im2bw(watermark,0.05);
Mn=size(watermark,1);
Nn=size(watermark,2);
[LL,LH,HL,HH] = dwt2(coverImage,'haar');
%[LL1,LH1,HL1,HH1] = dwt2(HH,'haar');
Ih=idwt2([],[],[],HH,'haar');
[Uh,Sh,Vh]=svd(Ih);
[Uw,Sw,Vw]=svd(double(watermark));
Shw=Sh+a*Sw;**%%%%%ERROR OCCURRING HERE%%%%%**
VhT=transpose(Vh);
Ihw=Uh*Shw*VhT;
[LL2,LH2,HL2,HH2]=dwt2(Ihw,'haar');
watermarked_image=idwt2(LL,LH,LH,HH,'haar');
figure;
imshow(watermarked_image,[]);
title('Watermarked Image');
[Uh,Sh,Vh]=svd(Ih);
[Uw,Sw,Vw]=svd(double(watermark));
当您 运行 svd
时,结果矩阵 Sh
的维度与 Ih
相同,结果矩阵 Sw
的维度与 watermark
.
http://www.mathworks.com/help/matlab/ref/svd.html
现在,
Shw=Sh+a*Sw;
您正在将 2 个矩阵相加。矩阵加法要求你加在一起的矩阵具有相同的维度(相同数量的rows
,相同数量的cols
)
http://en.wikipedia.org/wiki/Matrix_addition
所以,这似乎意味着:您的代码要求水印与输入图像的尺寸相同。我不知道您使用的是什么图像你的情况,但这似乎是一个错误的期望。我猜你使用的水印通常比你嵌入的输入图像小,可能小得多。
看来你要么需要
- 使用与输入尺寸相同的水印或
- 修改您的代码,使水印的尺寸不 取决于输入图像的尺寸。