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