我正在尝试执行此功能以进行图像重建 ra,rh,rv,rd是重建系数。但我在加法和减法方面遇到了问题。
请帮忙。
Xhat = ra2 + rh2 + rv2 + rd2 + rh1 + rv1 + rd1;
sprintf('Reconstruction error (using wrcoef2) = %g', max(max(abs(X-Xhat))))
OR
XXhat = waverec2(wc,s,wname);
sprintf('Reconstruction error (using waverec2) = %g', max(max(abs(X-XXhat)))
我使用以下方法分解图像:
>> a1 = appcoef2(wc,s,wname,1);
>> h1 = detcoef2('h',wc,s,1);
>> v1 = detcoef2('v',wc,s,1);
>> d1 = detcoef2('d',wc,s,1);
>> a2 = appcoef2(wc,s,wname,2);
>> h2 = detcoef2('h',wc,s,2);
>> v2 = detcoef2('v',wc,s,2);
>> d2 = detcoef2('d',wc,s,2);
然后使用上述参数重建。 现在我必须将它们结合起来。
答案 0 :(得分:0)
我猜你的问题几乎肯定是在abs(X-Xhat)
行。
为什么呢?您似乎正在进行某种小波分解/重建,如果您没有通过正确的参数,您的输出可能会比原始图像大。因此,如果X-Xhat
具有不同大小并且您将收到错误消息,则没有任何意义。
解决此问题的最佳方法是重建时(可能使用upcoef2
),将大小作为附加参数传递给截断。来自文档的截断(heh)和调整后的示例:
load woman;
[c,s] = wavedec2(X,2,'db4');
siz = s(size(s,1),:);
ca1 = appcoef2(c,s,'db4',1);
a = upcoef2('a',ca1,'db4',1,siz);
a2 = upcoef2('a',ca1,'db4',1);
您会发现size(X)
和size(a)
都是256 x 256,但size(a2)
更大。因此a-X
很好,a2-X
会给你一个" Matrix尺寸必须同意。"错误。