【问题标题】:How can I set the value of border pixels after applying a sliding window operation?应用滑动窗口操作后如何设置边框像素值?
【发布时间】:2012-10-31 10:16:24
【问题描述】:

在 MATLAB 中对图像应用 stdfilt(i, ones(5, 5)) 之类的滑动窗口操作后,我想将边框像素(使用填充计算的像素)设置为 NaN 以将它们标记为无意义。在此示例中,我会将最外面的两行和两列设置为 NaN。给定一个 M * M 窗口,如何将 (M - 1) / 2 像素宽的边框设置为特定值?

【问题讨论】:

    标签: matlab image-processing sliding-window


    【解决方案1】:

    假设,r 是矩阵(stdfilt 的结果)。这是一个如何将 NaN 分配给边界的示例。 一般来说,您需要指定正确的索引。

    >> r = rand(4)
    
    r =
    
        0.8147    0.6324    0.9575    0.9572
        0.9058    0.0975    0.9649    0.4854
        0.1270    0.2785    0.1576    0.8003
        0.9134    0.5469    0.9706    0.1419
    
    >> r([1, end], :) = nan
    
    r =
    
           NaN       NaN       NaN       NaN
        0.9058    0.0975    0.9649    0.4854
        0.1270    0.2785    0.1576    0.8003
           NaN       NaN       NaN       NaN
    
    >> r(:, [1, end]) = nan
    
    r =
    
           NaN       NaN       NaN       NaN
           NaN    0.0975    0.9649       NaN
           NaN    0.2785    0.1576       NaN
           NaN       NaN       NaN       NaN
    

    更新: 一般来说,由于图像是一个矩阵,你的问题是“如何设置某些矩阵值?”。答案是:“使用矩阵的索引”。有很多方法可以做到这一点(例如,通过构建索引矩阵、逻辑掩码或使用行/列坐标)。使用哪种方法的决定通常取决于此特定任务的操作速度。例如,如果您需要用 NaN 替换零,则使用逻辑掩码会更快:r(r == 0) = nan,等等。

    【讨论】:

      【解决方案2】:

      首先找到NaN 在您的矩阵中的位置。假设您的图像名称是 A。

      a = isnan(A);
      

      这将创建矩阵a,0 在数字位置,1 在NaN 位置。然后找到Nan元素的位置为:

      [x,y]=find(a==1);
      

      然后将它们替换为值V 为:

      for i=1:length(x)
         A(x(i),y(i)) = V;
      end
      

      【讨论】:

      • 我不是在问如何用某些东西替换 NaN,而是在问如何用特定值替换图像的边界(从假像素值计算 stdfilt 的像素)。
      【解决方案3】:

      这将完成这项工作,但这似乎是图像处理工具箱中的那种功能。

      mask = logical(ones(size(i)));
      width = (m - 1) / 2;
      mask(width + 1:size(i, 1) - width, width + 1:size(i, 2) - width) = 0;
      i(mask) = NaN;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-28
        • 1970-01-01
        • 2012-10-11
        • 2018-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-19
        相关资源
        最近更新 更多