如何忽略A柱状图中的某些值?没有在Matlab中使用NaN?

时间:2015-04-21 17:10:33

标签: image matlab image-processing histogram nan

假设我有一个灰度图像S,我想忽略250以上的所有值,如何使用NaN进行操作?我不想使用NaN的原因是因为我希望从结果图像中获取统计信息,例如平均值等。

2 个答案:

答案 0 :(得分:2)

您可以收集 超过250的所有图像像素强度。这有效地执行相同的操作。如果您的图片存储在A中,则可以执行以下操作:

pix = A(A < 250);

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

使用您的帖子标题,我们可以使用图像处理工具箱的imhist非常轻松地计算图像的直方图,所以:

out = imhist(pix);

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

out = histc(pix, 0:249);

这里的区别在于我们将获得精确250个区间的直方图,而imhist默认情况下将为您提供256个区间。但是,histc很快就会被弃用,建议使用histcounts。语法仍然相同:

out = histcounts(pix, 0:249);

答案 1 :(得分:0)

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

histogram(imgData(imgData < 250))