图像阈值分割是一种简单但有效的图像分割方法,其基本思想是将图像中的像素根据其灰度值与预定的阈值进行分类。这个过程可以将图像分成两个部分:前景和背景。

1.人工选择法

        图像阈值分割的人工选择法是最基础的方法之一,它需要手动选择一个阈值来将图像分成前景和背景。

        具体步骤如下:

选择一张要进行分割的图像,并将其转化为灰度图像。 确定要分割的区域,并观察图像中前景和背景的灰度特点。 手动选择一个阈值,通常是在前景和背景的灰度值之间进行选择。 将图像中所有大于阈值的像素设为前景,将小于或等于阈值的像素设为背景。 对分割结果进行检查和优化。如果分割效果不理想,可以通过修改阈值或者采用其他阈值寻找方法来改进分割效果。

        需要注意的是,使用人工选择法进行图像阈值分割时,阈值的选择往往是主观的,并且难以适应各种不同类型的图像。因此,在实际应用中,人工选择法并不是最优方法,还需要结合其他自适应的方法,如OTSU阈值和自适应阈值等,来提高分割效果。

clear all;

close all;

clc;

I=imread('rice.png');

I=rgb2gray(I);

% 全阈值,利用直方图人工选择阈值

J=I>125;

figure;

subplot(131),imshow(I);

subplot(132),imhist(I);

subplot(133),imshow(J),title('人工选择阈值');

 2.自动阈值法

        图像阈值分割的自动阈值法是一种可以自动选择最佳阈值进行分割的方法,其中包括OTSU阈值和自适应阈值等方法。这些方法不需要人为干预,可以根据图像特征自动选择合适的阈值。

        1.OTSU阈值

        OTSU阈值法是利用图像像素值的方差作为分类标准来确定最佳阈值的方法。它将图像划分为两个部分:背景和前景。具体步骤如下:

将图像转换成灰度图像计算所有像素强度值的直方图对每个像素强度值,计算其对应的类内方差和类间方差在所有像素强度值中找到最大的类间方差对应的像素强度值,即为OTSU阈值

        2.自适应阈值

        自适应阈值法是一种基于局部灰度值的统计特性动态地确定阈值的方法。其主要思想是根据图像的局部特征来确定每个像素的阈值。主要步骤如下:

选择一个合适的邻域大小遍历图像,对于每个像素使用该像素周围的邻域灰度信息来计算阈值调整阈值并将图像分割为前景和背景

        需要注意的是,自适应阈值法通常在有噪声或者对比度较低的图像中表现出色,但是计算量较大,不适用于实时的图像处理。

clear all;

close all;

clc;

I=imread('rice.png');

I=rgb2gray(I);

I=im2double(I);

T0=0.01;

T1=(min(I(:))+max(I(:)))/2;%选取最大和最小像素的中间值作为T1

r1=find(I>T1);

r2=find(I<=T1);

T2=(mean(I(r1))+mean(I(r2)))/2;%新的阈值T2

while abs(T2-T1)

T1=T2;

r1=find(I>T1);

r2=find(I<=T1);

T2=(mean(I(r1))+mean(I(r2)))/2;

end

J=im2bw(I,T2);

T=graythresh(I);%获取阈值,采用Otsu算法获取最佳阈值

J2=im2bw(I,T);

figure;

subplot(131),imshow(I);

subplot(132),imshow(J),title('迭代阈值');

subplot(133),imshow(J2),title('Otsu算法');

 

 3.分水岭算法

        分水岭算法是一种基于数学形态学的图像分割方法,它通常用于对复杂图像进行分割。分水岭是指将图像看作一个地形图,其中图像中的亮度值表示海拔高度,然后从高处向低处模拟水流流向,最终水汇聚的地方就是分割的边界。

        具体来说,分水岭算法可以分为以下几个步骤:

对原始图像进行灰度化、滤波等预处理操作。 计算梯度图像,找到局部极大值点,这些极大值点代表了图像中的物体轮廓。 将局部极大值点标记为种子点,并进行漫水填充操作。这个过程中,每个种子点被视为一个“水滴”,并向周围像素扩张,直到不再有满足条件的像素。 对标记过的像素进行联通性分析,得到物体的分割结果。

        需要注意的是,分水岭算法对图像前景和背景之间存在高差和断层的情况下表现出色,但对于噪声等干扰因素较为敏感,容易产生过分割或欠分割现象,因此,在实际应用中需要结合其他算法进行处理。

clear all;

close all;

clc;

I=imread('coin.png');

J=rgb2gray(I);

I=double(J);

hv=fspecial('prewitt');

hh=hv.';

gv=abs(imfilter(I,hv,'replicate'));

gh=abs(imfilter(I,hh,'replicate'));

g=sqrt(gv.^2+gh.^2);

df=bwdist(I);

L=watershed(df);

em=L==0;

im=imextendedmax(I,20);

g2=imimposemin(g,im|em);

L2=watershed(g2);

wr2=L2==0;

[m,n]=size(wr2);

f=zeros(m,n);

figure;

subplot(231),imshow(J),title('原图像');

subplot(232),imshow(uint8(df*8)),title('原图像的距离变换');

subplot(233),imshow(em),title('标记外部约束');

subplot(234),imshow(im),title('标记内部约束');

subplot(235),imshow(g2),title('由标记内外约束重构的梯度图');

subplot(236),imshow(wr2),title('分割结果');

 

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: