我开始在残差图像中应用双边滤波器(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>
答案 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>