-1

我正在尝试执行此函数以进行图像重建,其中 ra、rh、rv、rd 是重建系数。但我面临加法和减法的问题。

请帮忙。

Xhat = ra2 + rh2 + rv2 + rd2 + rh1 + rv1 + rd1;
sprintf('Reconstruction error (using wrcoef2) = %g', max(max(abs(X-Xhat))))

或者

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);

然后使用上述参数重建。现在我必须将它们结合起来。

4

1 回答 1

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会给你一个“矩阵尺寸必须一致”。错误。

于 2014-04-29T10:35:29.863 回答