如何在MATLAB中将灰度图像转换为二进制

Kay*_*311 0 binary matlab image-processing grayscale

我必须编写一个程序,将强度图像转换为黑白图像.我只是想我可以从原始矩阵中获取一个值,如果它高于平均值,则使另一个数组中的相应单元格等于1,否则等于零:

for x=1:X
    for y=1:Y
        if I(x,y)>mean(I(:))
            bw(x,y)=1;
        elseif I(x,y)<mean(I(:))
            bw(x,y)=0;
        end
    end
end
image(bw)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我得到的图像都是黑色的.为什么?

我在uint8,顺便说一下.2-Lena.tiff图像

Vuw*_*wox 8

用这个 :

bw = im2bw(I, graythresh(I));
Run Code Online (Sandbox Code Playgroud)

这里是im2bw的文档;

使用imshow(I,[]);,不评估0到255之间的图像,但是min(I(:))和之间的图像max(I(:))

编辑

您可以graythresh(I)通过任何其他级别进行更改.您仍然可以使用图像的平均值.(归一化在0和1之间).

maxI = max(I(:));
minI = min(I(:));

bw = im2bw(I,(maxI - mean(I(:)))/(maxI - minI));
Run Code Online (Sandbox Code Playgroud)