基于MATLAB的图像分割算法研究及实现
2021-09-15迪娜加尔肯
迪娜·加尔肯
(新疆大学信息科学与工程学院,新疆 乌鲁木齐 830046)
图像分割是图像处理与理解、模式识别和人工智能等多个领域中非常关键的问题,是计算机视觉技术中重要步骤,其作用在汽车车型自动识别系统、检查癌细胞、精密零件表面缺陷检测等领域中不可忽视。图像分割是通过将图像中感兴趣的对象与其背景分割,分割出的区域作为特征提取的目标对象,特征可以是像素、颜色、纹理等。最理想的分割结果就是分割出的每一块区域都可以表示其对象的特征,可以通过对其特征的提取进行图像的识别和重建等任务[1]。本文主要介绍了在MATLAB开发环境下,基于边缘检测和阈值的图像分割设计方法。
1 MATLAB开发环境简介
基于矩阵的MATLAB是目前应用广泛的设计编程软件,可将复杂的逻辑算法以简单可靠的函数形式提供给用户,并可同时提供功能性及学术性工具箱,便于用户进行系统建模和仿真分析。MATLAB包含很多模块库,可以方便快捷的实现很多功能,如数据分析、算法开发、图像处理和计算机视觉等,大大提高的编程效率。
2 图像分割算法设计
2.1 基于边缘检测到图像分割算法
灰度或结构等信息的突变称为边缘。根据图像不同区域边界像素灰度值变化比较剧烈的特点,首先检测出图像可能的边缘点,再按照一定策略连接成轮廓,从而实现不同区域的图像分割。边缘检测可借助空域微分算子卷积完成,空间域的微分在离散数字图像可以采用差分来近似。基于一阶导数的边缘检测算子有Roberts算子、Sobel算子、Prewitt算子等,基于二阶导数的边缘检测算子有Laplacian算子、Wallis算子,LOG算子(一种改进的方式),Canny算子等。几种算子模板如表1所示。
表1 不同算子模版
在MATLAB中通过函数BW=edge(I)来实现。该函数用于灰度图像边缘的提取,输入I为灰度图像,输出BW为黑白二值边缘图像,支持多种格式。下面对五组图片分别进行不同边缘检测算法的比较,结果如图1所示。可以通过结果得到对于这五组图片,canny算子的效果比较明显。
图1 基于边缘检测的算法
2.2 基于阈值的图像分割算法
阈值化图像分割的基本原理是选取一个或多个处于图像取值范围之中的灰度阈值,然后将图像中各个像素的灰度值与阈值进行比较,并根据比较结果将图像中的对应像素分成两类或多类,从而把图像划分成互不交叉重叠的区域的集合,达到图像分割的目的。
对于单个目标,则采用单阈值方法的数学模型。对于多个目标(灰度均匀,背景也灰度均匀且不同于目标),则采用多阈值方法的模型。
其中,f(x,y)为原图像,g(x,y)为分割后的图像,Th为选定的分割阈值。常用的阈值计算方法有:直方图峰谷阈值选取方法(双峰法)、迭代阈值选取、均匀性度量法、最大类间类内方差比法、p-参数法等。本文主要运用双峰法和迭代阈值选取来实现。
2.2.1 双峰法
双峰法是先计算原图的直方图,通过观察估计阈值(门限)T,一般取两个峰值间的谷值。
下面通过三组图片进行双峰法算法的图像分割,结果如图2所示。首先根据直方图估计两个阈值,再对图片进行分割,可以看出不同阈值得到的分割效果是不一样的。
图2 双峰法
2.2.2 迭代阈值选取
在双峰法的基础上,为更好的确定阈值,需要根据目标和背景的分布,自动确定分割阈值。主要算法步骤如下:(1)初始化阈值T1;(2)用T分割图像成两个集合:G1和G2,其中G1包含所有灰度值小于T的像素,G2包含所有灰度值大于T的像素;(3)计算G1中像素的平均值m1及G2中像素的平均值m2;(4)计算新的阈值:T2=(m1+m2)/2;(5)如果新阈值跟原阈值之间的差值小于一个预先设定的范围,停止循环,否则继续2-4步。即如果|T2-T1|<=t(t:收敛条件,是一个预先指定的较小的正数,如t=0.5),终止迭代,T2就是所求阈值,否则T1=T2,返回第b步[3]。
下面对一组图片进行迭代法算法的图像分割,结果如图3所示。从直方图中可以看出两个峰值之间的谷值大约在85附近,通过迭代法计算出来的结果为89,两种方法得出的结果相近。其中双峰法更适用于直方图双峰较明显的图,而迭代法更适用于直方图中难以确定谷值的情况。
图3 迭代阈值法
3 结论
本文介绍了图像分割的常用设计算法,给出了基于MATLAB的算法仿真设计方法,有助于从直观上比较不同图像分割算法的优劣,为后续基于MATLAB的数字图像处理方面的教学与科研提供了一定的参考。