我去将双边滤波器应用于残差图像(残差图像=带有weavlet变换的图像原始图像),错误是
使用bfilter2时出错(第35行)输入图像A在关闭间隔[0,1]上必须为大小为NxMx1或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],但误差仍然相同NB:我使用的双边过滤器为B = bfilter2(A,W,SIGMA)对灰度或彩色图像A执行2D双边过滤。 A应该是大小为NxMx1或NxMx3的双精度矩阵(即分别为灰度或彩色图像),并且在闭区间[0,1]中具有归一化的值。高斯双边滤波器窗口的一半大小由W定义。双边滤波器的标准偏差由SIGMA给出,其中空间域标准偏差由SIGMA(1)给出,而强度域标准偏差则由SIGMA(1)给出由SIGMA(2)。注意:我的图片大小为<256x256 double>
由于您没有显示太多代码,所以很难知道发生了什么,但是如果您继续进行下去,则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
那就是您得到错误的地方。我建议你测试的每一个的条件下,如果(即~isfloat(A)
,min(A(:)) < 0
...)在您的数据,并了解哪些变1
与引发错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句