【数字图像处理+MATLAB】将图像转换为二值图像(Binary Image):使用 imbinarize 函数进行二值化运算(Binarize)
引言
二值图像是一种特殊类型的数字图像,其中每个像素只有两种可能的强度值或颜色值。这两种值通常表示为黑色和白色,或者0和1。
二值化是一个常见的图像处理步骤,它将灰度或彩色图像转换为二值图像。在二值化过程中,会设定一个阈值,所有大于这个阈值的像素会被设置为1(通常表示白色),所有小于或等于这个阈值的像素会被设置为0(通常表示黑色)。这个阈值可以是手动设定的,也可以通过各种算法(例如Otsu方法)自动计算得出。
语法详解
imbinarize
是MATLAB中的一个函数,用于将灰度图像或者彩色图像转换为二值图像。
基本语法:
BW = imbinarize(I);
BW = imbinarize(I, level);
BW = imbinarize(I, 'adaptive', Name, Value);
参数详解:
I
:输入的图像,应为灰度图像。level
:一个介于0和1之间的数值,用来确定阈值。所有小于level
的像素值都会被设置为0,所有大于或等于level
的像素值都会被设置为1。如果不指定level
,imbinarize
函数会默认使用Otsu方法来自动计算阈值。'adaptive'
:指定使用自适应阈值化方法。在这种模式下,imbinarize
会对图像的每个局部区域分别计算阈值,而不是使用一个全局阈值。Name, Value
:用于指定额外的参数,例如'Sensitivity'
。
返回值详解:
BW
:输出的二值图像。它和输入图像I
有相同的大小。所有像素值都是逻辑值,即0(表示黑色)或1(表示白色)。
应用案例
用Otsu方法自动计算阈值
I = imread("Fig0304(a)(breast_digital_Xray).tif");
figure;
subplot(1, 3, 1);
imshow(I);
title("Original image");
negI = imcomplement(I);
subplot(1, 3, 2);
imshow(negI);
title("Negative image");
binI = imbinarize(I);
subplot(1, 3, 3);
imshow(binI);
title("Binary image");
以平均亮度作为阈值
I = imread("Fig0304(a)(breast_digital_Xray).tif");
figure;
subplot(1, 3, 1);
imshow(I);
title("Original image");
negI = imcomplement(I);
subplot(1, 3, 2);
imshow(negI);
title("Negative image");
mean = mean(I, "all");
binI = imbinarize(I, mean / 255);
subplot(1, 3, 3);
imshow(binI);
title("Binary image");