Я получаю ошибку в коде ниже «Размеры матрицы должны совпадать» Это происходит в строке кода (Shw = Sh + a * Sw;) CoverImage, который я использую, представляет собой изображение в оттенках серого , tiff, как и водяной знак. Какие-нибудь предложения могут быть моими проблемами? СпасибоОшибка в сингулярном значении Декомпозиция matlab code
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');
Благодарим вас за подробное объяснение. Да, изображение водяного знака меньше, чем изображение обложки. Любые идеи о том, как я могу изменить код, чтобы скрыть изображение меньшего водяного знака? Спасибо – Hitmanpaddy
Я считаю, что все, что вам нужно сделать, это выгрузить водяной знак с помощью 0s, чтобы добавить его к исходному изображению. Это проблема «добавления матрицы к более крупной матрице», эта страница должна помочь: http://www.mathworks.com/matlabcentral/answers/77743-put-a-small-matrix-in-a-bigger- один – chiliNUT
Благодарим вас за ответ. Я отдам! – Hitmanpaddy