1

我需要在 matlab 中以平均强度的 10% 的静态阈值对图像进行二值化。我发现使用平均强度mean2(Image),这会在其中一个图像中返回一个平均值15.10。因此我的平均阈值是1.51im2bw(image,level)在 0 到 1 之间取阈值。在这种情况下,如何在 matlab 中对我的图像进行二值化?

4

4 回答 4

3

1) 您可以先使用 . 将原始图像转换为双格式im2double()。然后所有像素值都将在 0 和 1 之间。然后你可以使用im2bw(im,level).

2)如果您不想将图像转换为double,那么您可以这样做。假设阈值是平均值的 10%,例如threshold = 1.51。让我们表示您拥有的图像是im. 然后im(im<threshold) = 0; im(im>=threshold)=1。经过这两次操作,im就会变成二值图像。

于 2013-03-26T20:07:27.603 回答
2

如果要使用,您需要对图像的平均值与最大强度的结果进行归一化im2bw(提到的其他解决方案当然是正确且有效的):

ImageN=Image./max(Image(:))
t = mean2(ImageN) * 0.1 % Find your threshold value 
im2bw(Image,t)
于 2013-03-26T20:13:25.553 回答
2

您可以使用简单的逻辑语句对图像进行二值化。为了完整起见,我还添加了阈值确定。

threshold = mean(Image(:));

binaryMask = Image > 0.1 * threshold;
于 2013-03-26T20:04:17.860 回答
1

假设您的图像是一个矩阵img,您可以执行以下操作:

t = mean2(img) * 0.1 % Find your threshold value
img(img < t) = 0 % Set everything below the treshold value to 0
img(img ̃= 0) = 1 % Set the rest to 1
于 2013-03-26T20:09:30.167 回答