二值化(Binarization)是最简单的图像分割方法。
图像二值化( Image Binarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。二值图像每个像素只有两种取值:要么纯黑,要么纯白。
而对于单通道的灰度图像来说,这个元素就是一个数字。这个数字代表了图像在这个点的亮度,数字越大像素点也就越亮,在常见的八位单通道色彩空间中,0代表全黑,255代表全白。
实现数字图像二值化处理一个重要的方法就是阈值法。也就是选取一个数字,大于它就视为全白,小于它就视为全黑,该数字便是阈值。类似声控灯,当我们声音的大小超过某个分贝,就能使灯亮。不同的阈值对数字图像二值化的结果也有区别。
这里我们用MATLAB实现。在MATLAB中十分简单,只需使用两个函数便可实现:
thresh=graythresh(img);%自动确定图像阈值
img = im2bw(img,thresh); %自动对图像进行二值化处理
使用该函数求得的阈值为全局阈值。
当然我们也可以自己编程实现二值化处理,可以任意指定阈值。
例如:要求二值化后0和255值像素点数目约各占一半。此时使用全局阈值便无法满足要求。
关键在于如何求图像的阈值,此种情况求图像像素点的中位数即可满足要求。
以刘德华图像为例:
代码实现如下:
img=imread('Andy Law.jpg');
%求二值化阈值
temp=reshape(img,1,644*800);
thresh=median(temp); %要保证 0,255 的像素点各占一半,求像素灰度值的中位数即为阈值
X=['二值化阈值=',num2str(thresh)];
disp(X)
运行结果为:
二值化阈值=14
[m,n]=size(img);
%二值化处理
for i=1:m
for j=1:n
if img(i,j)>thresh
img(i,j)=255;
else
img(i,j)=0;
end
end
end
imshow(img)
title('二值化处理结果')
运行结果为:
二值化处理是图像分割中一个非常重要的方法,图像二值化的目的是简化图像,使其易于计算机处理。例如,在文本识别、边缘检测、图像分割等应用中,二值化图像可以帮助算法更准确地识别图像中的边缘和特征。
此外,图像二值化还可以帮助减小图像的文件大小,这对于存储和传输图像是很有帮助的。
总的来说,图像二值化是一种非常有用的图像处理技术,它可以简化图像,使其更容易被计算机处理,并且可以帮助减小图像的文件大小。