使用matlab从图像系数重建图像

时间:2014-04-28 06:25:29

标签: matlab 3d-reconstruction

我正在尝试执行此功能以进行图像重建 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);

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

1 个答案:

答案 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尺寸必须同意。"错误。