【发布时间】:2015-06-29 00:10:35
【问题描述】:
假设我有一个灰度图像 S,我希望忽略所有高于 250 的值,如果不使用 NaN,我该怎么做?我不想使用 NaN 的原因是因为我希望从结果图像中获取统计信息,例如平均值等。
【问题讨论】:
标签: image matlab image-processing histogram nan
假设我有一个灰度图像 S,我希望忽略所有高于 250 的值,如果不使用 NaN,我该怎么做?我不想使用 NaN 的原因是因为我希望从结果图像中获取统计信息,例如平均值等。
【问题讨论】:
标签: image matlab image-processing histogram nan
您可以收集小于 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);
【讨论】:
您可以使用逻辑索引来仅使用指定范围内的值构建直方图。例如,您可能会执行以下操作:
histogram(imgData(imgData < 250))
【讨论】: