图像分割(image segmentation)是指把图像分割成各个具有特性的区域并提取出感兴趣目标的技术和过程。
现有的图像分割方法主要分以下几类:基于阈值(threshold)的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。
基于阈值的分割方法是一种应用十分广泛的图像分割技术,其实质是利用图像的灰度直方图信息获取用于分割的阈值,一个或几个阈值将图像的灰度级分为几个部分,认为属于同一部分的像素是同一个物体。
一、灰度阈值法介绍
1.原理
图像阈值化处理的变换函数表达式为:
2.阈值的选取
•双峰法
•迭代法
•大津法
•判别分析法
•最佳熵自动阈值法
二、最大类间方差确定阈值(大津法)
大津法又叫最大类间方差法、最大类间阈值法(OTSU)。
它的基本思想是,用一个阈值将图像中的数据分为两类,一类中图像的像素点的灰度均小于这个阈值,另一类中的图像的像素点的灰度均大于或者等于该阈值。
如果这两个类中像素点的灰度的方差越大,说明获取到的阈值就是最佳的阈值(方差是灰度分布均匀性的一种度量,背景和前景之间的类间方差越大,说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。
因此,使类间方差最大的分割意味着错分概率最小。)则利用该阈值可以将图像分为前景和背景两个部分。
而我们所感兴趣的部分一般为前景。
具体的分析可以参考我的另一篇博文:大津法(最大类间方差法OTSU)
(https://blog.csdn.net/m0_53966219/article/details/126621122?spm=1001.2014.3001.5501)
三、双峰法阈值分割
双峰法阈值分割I=imread('test2.jpg'); I=rgb2gray(I); subplot(1,2,1);imhist(I);title('直方图');thread=130/255;subplot(1,2,2); I3=im2bw(I,thread);imshow(I3);title('双峰法分割图');
四、迭代法阈值分割
1.步骤
1.选取初始分割阈值,通常可选图像灰度平均值 T。
2.根据阈值 TT 将图像像素分割为背景和前景,分别求出两者的平均灰度 T_0 和 T_1。
3.计算新的阈值 T′=(T0+T1)/2。
4.若 T==T′,则迭代结束,T 即为最终阈值。否则令 T=T′,转第 (2) 步。
2.实现
A = imread('text.png');figure;subplot(121);imshow(A);title('原始图像')T = mean2(A); %取均值作为初始阈值done = false; %定义跳出循环的量i = 0;% while循环进行迭代while ~done r1 = find(A<=T); %小于阈值的部分 r2 = find(A>T); %大于阈值的部分 Tnew = (mean(A(r1)) + mean(A(r2))) / 2; %计算分割后两部分的阈值均值的均值 done = abs(Tnew - T) < 1; %判断迭代是否收敛 T = Tnew; %若不收敛,则将分割后的均值的均值作为新的阈值进行循环计算 i = i+1;endA(r1) = 0; %将小于阈值的部分赋值为0A(r2) = 1; %将大于阈值的部分赋值为1 这两步是将图像转换成二值图像 subplot(122);imshow(A,[]);title('迭代处理后')