matlab实现图像阈值分割(人工选择、自动阈值、分水岭算法)
图像阈值分割是一种简单但有效的图像分割方法,其基本思想是将图像中的像素根据其灰度值与预定的阈值进行分类。这个过程可以将图像分成两个部分:前景和背景。
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