奇异值分解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,相同数量的colshttp://en.wikipedia.org/wiki/Matrix_addition

所以,这似乎意味着:您的代码要求水印与输入图像的尺寸相同。我不知道您使用的是什么图像你的情况,但这似乎是一个错误的期望。我猜你使用的水印通常比你嵌入的输入图像小,可能小得多。

看来你要么需要

  1. 使用与输入尺寸相同的水印或
  2. 修改您的代码,使水印的尺寸不 取决于输入图像的尺寸。