我在下面的代码中遇到错误"矩阵维度必须同意"它出现在代码行中(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');
答案 0 :(得分:0)
[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;
你正在加两个矩阵。添加矩阵要求您添加的矩阵具有相同的尺寸(rows
的相同数量,cols
的相同数量)
http://en.wikipedia.org/wiki/Matrix_addition
所以,这似乎意味着:您的代码希望水印与输入图像的尺寸相同。我不知道您在哪种情况下使用的图像,但它似乎这是一个错误的期望。我猜你正在使用的水印通常比你嵌入它的输入图像更小,可能要小得多。
所以看来你需要