【问题标题】:bilateral filter in residuel image残差图像中的双边滤波器
【发布时间】:2015-02-06 13:35:44
【问题描述】:

我在残差图像中应用双边滤波器(residel image=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)。 注意:我的图片尺寸是

【问题讨论】:

    标签: image matlab matrix filter


    【解决方案1】:

    由于您没有显示太多代码,很难知道发生了什么,但是如果您转到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(:)) &lt; 0 ,...),看看哪些条件变为 1 并引发错误。

    【讨论】:

    • 我测试了你的提议,错误是'interval [0,1]。']所以我怎样才能标准化我的值,我使用了这个代码,但我不知道为什么它是错误的 f = rand(256,256) normf = max(f) - min(f); % 这是一个向量 normf = repmat(normf, [length(f) 1]); % 这使它成为与 A normalizedf = f./normf; 大小相同的矩阵 %;
    • 您忘记在除法之前从 f 中减去 min(f)。那是你的问题@هاجرجمعة
    • 非常感谢 :) 我这样做了,它有效,但我不知道你的前导是否正确,你能给我你的意见吗,再次感谢@ander biguri,f = rand(256,256) normf = 最大值(f) - 最小值(f); % 这是一个向量 normf = repmat(normf, [length(f) 1]); j = repmat(min(f), [长度(f) 1]); k = f-j; normalizedff = k./normf;
    • @هاجرجمعة 是的,应该是对的 ;)。如果您喜欢,请不要忘记接受答案;)
    • 觉得收获很大 :)
    猜你喜欢
    • 2017-04-15
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    相关资源
    最近更新 更多