2015-02-06 121 views
0

我去,便可立即在residuel图像的双边滤波器(Résidel酒店图像=图像origianle图像与weavlet变换) 的errer是(线35) 输入图像双边滤波器

错误使用bfilter2 A必须是在关闭区间[0,1]上的大小为NxMx1 或NxMx3的双精度矩阵。

我试图以normalizate我的数据:

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; 

的valuue矩阵成为悫[0,1],但错误还是一样 NB:双边滤波器taht我使用是B = bfilter2(A,W,SIGMA)对灰度或彩色图像A执行二维双边滤波.A应该是尺寸为NxMx1或NxMx3(即,分别为灰度或彩色图像)的双精度矩阵,其归一化值在闭区间[0,1]。高斯双边滤波窗口的一半尺寸由W定义。双边滤波器的标准偏差由SIGMA给出,其中空间域标准偏差由SIGMA(1)给出,并给出强度域标准偏差由SIGMA(2)提供。 注:我的图像的大小是< 256×256双>

回答

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并引发错误。

+0

我测试了你的命题,错误是'interval [0,1]。']我怎样才能规范化我的值,我用这个代码但我不知道为什么它错了f = rand(256,256) normf = max(f) - min(f); %这是一个矢量 normf = repmat(normf,[length(f)1]); %这使其成为与A 相同大小的矩阵 %normalizedf = f./normf; – 2015-02-06 14:37:36

+0

你忘记在分裂之前从f中减去min(f)。这就是你的问题@هاجرجمعة – 2015-02-06 15:35:39

+0

非常感谢:)我这样做,它的工作原理,但我不知道如果preincipe是正确的,你可以给我你的意见,再次感谢@ander biguri,f = rand(256,256) normf = max(f) - min(f); %这是一个矢量 normf = repmat(normf,[length(f)1]); j = repmat(min(f),[length(f)1]); k = f-j; normalizedff = k./normf; – 2015-02-06 17:51:49