残差图像中的双边滤波

时间:2015-02-06 13:35:45

标签: image matlab matrix filter

我开始在残差图像中应用双边滤波器(residel image =图像origianle-image with weavlet transform) 错误的是

  

使用bfilter2时出错(第35行)   输入图像A必须是大小为NxMx1的双精度矩阵   或闭合区间[0,1]上的NxMx3。

     

我尝试使用以下方式标准化我的数据:

 f = rand(256,256)
normf = max(f) - min(f);               % this is a vector
normf = repmat(normf, [length(f) 1]);  % this makes it a matrix
                                       % of the same size as A
normalizedf = f./normf;

矩阵中的值变为[0,1],但误差仍然相同 注意:我使用的双边滤波器是B = bfilter2(A,W,SIGMA)对灰度或彩色图像A执行二维双边滤波.A应该是大小为NxMx1或NxMx3的双精度矩阵(即灰度或分别在封闭区间[0,1]中具有归一化值的彩色图像。高斯双边滤波器窗口的半尺寸由W定义。双边滤波器的标准偏差由SIGMA给出,其中空间域标准偏差由SIGMA(1)给出,并给出强度域标准偏差。由SIGMA(2)。 注意:我的图片大小为< 256x256 double>

1 个答案:

答案 0 :(得分:0)

由于您没有显示太多代码,因此很难知道最新情况,但如果您转到bwfilter2,您可以看到下一段代码:

if ~isfloat(A) || ~sum([1,3] == size(A,3)) || ...
      min(A(:)) < 0 || max(A(:)) > 1
   error(['Input image A must be a double precision ',...
          'matrix of size NxMx1 or NxMx3 on the closed ',...
          'interval [0,1].']);      
end

这就是你得到错误的地方。我建议您测试数据中if(即~isfloat(A)min(A(:)) < 0,...)的每个条件,并查看哪些条件变为1并抛出错误。< / p>