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