【问题标题】:How to ignore certain values in A histogram? without using NaN in Matlab?如何忽略直方图中的某些值?在 Matlab 中不使用 NaN?
【发布时间】:2015-06-29 00:10:35
【问题描述】:

假设我有一个灰度图像 S,我希望忽略所有高于 250 的值,如果不使用 NaN,我该怎么做?我不想使用 NaN 的原因是因为我希望从结果图像中获取统计信息,例如平均值等。

【问题讨论】:

    标签: image matlab image-processing histogram nan


    【解决方案1】:

    您可以收集小于 250 的所有图像像素强度。这实际上是在执行相同的操作。如果您的图片存储在A,您可以这样做:

    pix = A(A < 250);
    

    pix 将是A 中强度为 249 或更低的所有图像像素的单个向量。从那里,您可以执行任何您想要的操作,例如平均值、标准差、计算上述的直方图等。

    根据您的帖子标题,我们可以使用图像处理工具箱中的imhist 轻松计算图像的直方图,因此:

    out = imhist(pix);
    

    这将为您提供一个 256 元素向量,其中每个值表示特定强度的强度计数。如果我们正确执行此操作,您应该只会看到强度为 249(向量中的位置 250)的 bin 计数,并且您应该看到。如果您没有图像处理工具箱,您可以使用 histc 重复相同的操作并手动指定 bin 截止值从 0 到 249:

    out = histc(pix, 0:249);
    

    这里的区别是我们将得到一个正好有 250 个 bin 的直方图,而 imhist 默认情况下会给你 256 个 bin。但是,histc 很快就会被弃用,而建议使用 histcounts。还是一样的语法:

    out = histcounts(pix, 0:249);
    

    【讨论】:

      【解决方案2】:

      您可以使用逻辑索引来仅使用指定范围内的值构建直方图。例如,您可能会执行以下操作:

      histogram(imgData(imgData < 250))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-05
        • 2021-10-12
        • 2011-09-24
        • 2015-03-29
        • 1970-01-01
        • 2010-10-19
        • 2014-11-03
        • 2020-10-08
        相关资源
        最近更新 更多