在matlab中使用静态阈值屏蔽图像

时间:2013-03-26 19:59:44

标签: image matlab video image-processing morphological-analysis

我需要在matlab中对图像进行二值化,静态阈值为平均强度的10%。我使用mean2(Image)找到平均强度,这会在其中一个图片中返回一个平均值15.10。因此,我的平均阈值为1.51im2bw(image,level)的阈值介于0到1之间。如何在matlab中将我的图像二值化?

4 个答案:

答案 0 :(得分:3)

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

2)如果您不想将图像转换为双倍,那么您可以这样做。假设阈值是平均值的10%,比如threshold = 1.51。我们用im表示你的图像。然后是im(im<threshold) = 0; im(im>=threshold)=1。完成这两项操作后,im将成为二进制图像。

答案 1 :(得分:2)

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

threshold = mean(Image(:));

binaryMask = Image > 0.1 * threshold;

答案 2 :(得分:2)

如果你想使用im2bw(你提到的其他解决方案当然是正确的和有效的),你需要规范化平均值与图像最大强度的结果:

ImageN=Image./max(Image(:))
t = mean2(ImageN) * 0.1 % Find your threshold value 
im2bw(Image,t)

答案 3 :(得分: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