matlab 图像分割_图像分割之阈值分割(matlab)


图像分割是一种重要的图像处理的技术。
在数字图像中,我们通常会对其中的一部分产生兴趣,这一部分被称为前景或目标,其余部分则被称为背景.为了从图像中识别并分析出其目标部分,我们需要将其提取出来,在此基础上进行进一步的处理与应用.而图像是用来完成这一任务的一种重要手段.

一. 阈值分割法0 1 灰度阈值法分割
灰度阈值分割即为将图像的灰度划分为不同等级, 进而确定门限灰度的方法. gray thresholding 实际上等同于二元化处理, 即选取一个阈值, 将图像转换为黑白二元图, 并用于图像分割及边缘检测.
显然, 图像阈值化处理被称作一种阶跃函数, 它归类于图像灰度级的非线性处理. 从图中可见, 该变换曲线的作用机制是: 用户设定一个阈值; 当图像中某像素的亮度高于此数值时, 会将其亮度设置为255; 否则, 将其亮度设置为0.

输入一张图像,并用imhist函数显示他的直方图。

从理论上讲,在直方图双峰之间的谷底处选取灰度值作为阈值进行图像的阈值化分割处理后,则可实现目标与背景的有效分离。
下面对他们进行图像分割
运行-如下代码
f=imread('ll.png');f1=im2bw(f,91/255);f2=im2bw(f,140/255);f3=im2bw(f,120/255);f4=im2bw(f,56/255);subplot(2,2,1);imshow(f1);subplot(2,2,2);imshow(f2);subplot(2,2,3);imshow(f3);subplot(2,2,4);imshow(f4);

观察得知,在图像分割的过程中,选择合适的阈值既不能过高也不能过低。因为如果选得过高或过低的话,则会对分割效果产生明显影响。因此,在应用阈值分割方法时,请特别注意选择合适的数值范围。由于仅靠直方图难以准确确定最佳阈值大小,在这种情况下就需要采用科学的方法来确定具体的数值范围了。通常我们有以下几种方法可以采用:
-
最小误差阈值
-
最大方差阈值
-
最佳阈值法
-
差别分析法
对于科学计算的相关知识, 建议大家自行查阅资料以获得掌握. 在本节中, 我们将重点介绍全局阈值法与局部阈值法的分割方法. 其中, 全局阈值法作为一种更为先进的算法, 在理论上能够直接计算出相应的阈值, 进而完成图像的分割过程.
02 全局阈值分割
运行如下代码
I=imread('coins.png'); subplot(1,2,1); imshow(I); Level = graythresh(I); %求取二值化的阈值 BW = im2bw(I, level); %按阈值进行二值化 subplot(1,2,2); imshow(BW);

03 局部阈值分割
这里采用一张我自己用手机拍的图片为例,对它进行局部阈值处理
n = imread('renjiancihua.jpg');f=rgb2gray(n);T = graythresh(f); % 自动获取阈值T = T*255; % 阈值在区间[0,1],需调整至[0,255]g = f<=T;subplot(1,2,1);imshow(f);title('原图像');subplot(1,2,2);imshow(g);title(['阈值处理,阈值为' num2str(T)]);

今天的分享就此结束。后续在图像分割领域会更新边缘检测、区域生长以及区域分割相关内容。

推荐阅读

MATLAB与图像处理领域
(汇总版)


文章好看就点这里

