如何忽略直方图中的某些值?不在 Matlab 中使用 NaN?
How to ignore certain values in A histogram? without using NaN in Matlab?
假设我有一个灰度图像 S 并且我希望忽略所有高于 250 的值,我如何在不使用 NaN 的情况下做到这一点?我不想使用 NaN 的原因是因为我希望从结果图像中获取统计信息,例如平均值等。
您可以收集所有小于 250 的图像像素强度。这实际上是在执行相同的操作。如果您的图像存储在 A
中,您只需执行以下操作:
pix = A(A < 250);
pix
将是 A
中强度为 249 或更小的所有图像像素的单个向量。从那里,你可以进行任何你想要的操作,比如平均值,标准差,计算上面的直方图等等
根据您的 post 标题,我们可以使用图像处理工具箱中的 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))
假设我有一个灰度图像 S 并且我希望忽略所有高于 250 的值,我如何在不使用 NaN 的情况下做到这一点?我不想使用 NaN 的原因是因为我希望从结果图像中获取统计信息,例如平均值等。
您可以收集所有小于 250 的图像像素强度。这实际上是在执行相同的操作。如果您的图像存储在 A
中,您只需执行以下操作:
pix = A(A < 250);
pix
将是 A
中强度为 249 或更小的所有图像像素的单个向量。从那里,你可以进行任何你想要的操作,比如平均值,标准差,计算上面的直方图等等
根据您的 post 标题,我们可以使用图像处理工具箱中的 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))