基于MATLAB的图像分割算法分析

2021-12-15 11:28王慧琴
中国新技术新产品 2021年19期
关键词:算子灰度边缘

王慧琴

(银川能源学院,宁夏 银川 750100)

0 引言

图像分割是完成所有图像分析的基础,也是数字图像处理的核心技术。分割是把图像细分成组成图像的区域或者物体,分割出来的每个区域的某些特征有一定的相似性。分割的最终结果就是将具有相似特征的区域提取出来,得到想要研究的部分。经过多年的发展,现有的分割方法主要分4种:基于阈值的分割方法、基于区域的分割方法、基于特定理论的分割方法和基于边缘的分割方法,它们属于最基本同样也是最重要的方法,所有的研究(包括衍生的新技术)都需要使用上述方法[1]。图像处理对构成图像的元素进行分解,从分解的元素中提取研究所需要的信息。图像的边缘所携带的信息能够在图像处理过程中发挥识别的作用,这也正是它作为图像基本特征的重要原因。因为能够从不同区域的边缘得到各种各样的信息,所以这也是边缘检测得以实现的原因。在边缘上得到的最有用的信息就是不连续的像素灰度的变化,这些灰度的变化就是实现分割的依据,然后利用一阶和二阶导数进行边缘检测。边缘检测总是随着图像处理的发展而进步的,发展至今,已经出现了许多边缘检测方法,它们适用于不同的环境[2]。因此,边缘检测也是该文所研究的一个重要内容。

1 图像分割理论

1.1 基于阈值的分割方法

阈值分割方法是一种常见的区域并行技术,原理上利用1个或者多个阈值对像素点的灰度直方图进行区分,将其分成几个不同的类,得到的像素灰度值在同一类的属于同一个物体。由于直接利用灰度直方图可以简化计算的部分,因此,选取一个适合的阈值就显得尤为重要。想要找到合适的阈值就离不开一个准则函数[3]。而在实际的研究中,选择合适的阈值并不容易,影响阈值设定的主要因素有光的亮度以及噪声。随着研究的进步,逐步发展了几种解决上述问题的办法,应用比较广泛的有自适应阈值法、最大熵法、类间阈值法以及模糊阈值法等。并且为了保证准确性,至少会采用2种或者更多方法来确定阈值。

首先把想要处理的原始 图像假设为f(x,y),阈值分割的主要任务就是将原始的输入函数转 化成输出函数g(x,y),如公式(1)所示。

式中:p为阈值;t0为0;t1为1。

1.2 基于边缘的分割方法

边缘分割算法的表面意思是指基于边缘处的分割算法,对图像的不同区域进行搜索,其目的是识别区域之间的边界,从而完成分割。具体方法就是运用边缘检测算子找出不同区域中的边缘像素,把这些边缘像素连接起来并对其进行标注,连接在一起的边界就是区域边界[4]。

图像的边缘实际上就是一些像素,不过像素发生了空间突变,这些变化在空间形状上表现为阶跃状和屋顶状。阶跃状边缘位于其两边的像素灰度值有突出变化的地方;屋顶状边缘位于灰度值从增加到减少的地方。

边缘检测的实质就是计算图像上发生变化的像素的导数。一阶导数通常用来检测原图像中的一个点是否在斜波上。然后通过二阶导数得出过零点的位置,边缘的正确位置对应一阶导数的最大值或者二阶导数的过零点。常用的边缘检测算子有一阶微分算子(例如Roberts算子、Prewitt算子和Sobel算子)、二阶微分算子(例如Laplacian算子)、Kirsch算子、Frei-Chen综合正交算子、Canny算子以及LOG算子[5]。该文主要对Roberts算子、Prewitt算子、Sobel算子和LOG算子进行详细介绍。

1.2.1 Roberts 边缘检测算子

Roberts是最早的边缘检测算子,是一种能够通过局部差分完成检测的算子,能够精准地对边缘进行定位,经常用于噪声较小且边缘陡峭的图像分割中[6]。

函数的梯度定义如公式(2)所示。

为了给照片增加冲击力并定格画面,建议使用一至两个外置闪光灯。Dina用的是尼康SB-910。打光时要注意均匀,以免出现醒目的阴影。

图像的梯度如公式(3)所示。

1.2.2 Sobel 边缘检测算子

如果利用Sobel算子提取边缘信息,就可以用Sobel检测算子对像素点的灰度进行一阶求导,从而得到梯度值,进而可以得到图像的边缘。

Sobel算子使用的卷积核大小为 3×3 的矩阵。这种矩阵包括水平模板和垂直模板[7]。检测时,它们分别在水平方向和垂直方向上有作用,如公式(5)所示。

1.2.3 Prewitt 边缘检测算子

Prewitt 边缘检测算子属于一阶微分算子,进行边缘检测时,在图像空间上利用水平 方向的模板和垂直方向的模版与图像进行卷积,水平模板检测水平边缘,垂直模板检测垂直边缘[8]。

Prewitt算子模板,如公式(6)所示。

1.2.4 高斯-拉普拉斯算子(LOG)

高斯-拉普拉斯算子是高斯和拉普拉斯2个算子的双结合,因此,LOG算子具有两者的优势,通过高斯算子能够很平滑地处理目标,在开始真正的检测时,可以充分地提高目标自身 的品质和质量,相当于为目标镀了一层金,最后用拉普拉斯算子求取边缘,可以将其看作是二阶导函数[9]。

拉普拉斯算子如公式(7)所示。

拉普拉斯算子的卷积模板如公式(8)所示。

2 基于MATLAB的图像分割算法仿真

2.1 基于MATLAB的阈值分割算法仿真

首先采用基于阈值分割算法对图像进行分割,并且采用2种方式选择阈值,第一个仿真是采用人工选择的阈值,笔者选择了2个阈值。先得到该图像的灰度直方图,根据观察选取的阈值为150和200,仿真结果分别如图1、图2所示。可以看出选择的阈值不同,实验结果也不同,阈值为150的仿真结果更佳。

图1 阈值150的分割图像

图2 阈值200的分割图像

这2个阈值的选择是根据灰度直方图来判断的,灰度直方图符合双峰分布的特征,阈值是在峰谷的位置,由结果可知,阈值的选取会影响图像分割的效果。第二个仿真是采用经典的Otsu算法自动选取的阈值,这种算法最大的特点就是根据图像本身的特点自动选择阈值,原理上与统计中的方差分析有关系。Otsu算法自动选取阈值的仿真结果如图3所示。

图3 Otsu阈值分割

为了实验的严谨性,选择2个阈值进行观察,由上述仿真结果可知,阈值为150的图像分割与Otus自动选取法的结果还是较为相近的,但是另一个结果相差较远。由此可见,选择阈值为150是合理的。

2.2 基于MATLAB的边缘分割算法仿真

检测算子的仿真是在灰度图的基础上完成的,仿真结果如图4~图7所示。4张图分别为Roberts、Sobel、Prewitt和LOG算子的分割结果图像,对分割后的结果进行比较分析。

图4 Roberts算子分割结果

图7 LOG算子分割结果

观察仿真结果,Roberts算子分割后的边缘比其他边缘的连续性好,但是漏检的内容较多,而且得到的边缘较粗。Sobel和 Prewitt算子的仿真结果较为相似,但是比较分散(不连续)。而LOG算子漏检的内容是最少的,分割之后图像呈现的内容也较多。

3 结论

该文主要研究图像处理技术中的几种比较基础且重要的检测算法,并对阈值分割算法和边缘检测算法的仿真结果进行详细分析。在进行阈值分割时,根据灰度直方图选择的阈值只能通过经验来判断,因此人为因素会干扰仿真结果,在目前的研究中,人们也采取了新的方法避免外部因素的影响。而利用Otsu方法自动选取阈值的方法非常方便且应用较为广泛,但是Otsu算法也不是万能的,当分割的目标与背景的大小比例较大时,所呈现的效果并不理想。

图5 Sobel算子分割结果

图6 Prewitt算子分割结果

基于边缘的分割方法在进行分割仿真时都有自己明显的缺点,但这并不影响它在研究中的地位,它凭借操作简单、超高效率、计算量小以及运行稳定等优点被广泛应用于相关研究中,在某些情况下稍加改善,结果也较为理想。未来图像分割技术会有广阔的应用前景,并会不断进步出现新的理论。

猜你喜欢
算子灰度边缘
采用改进导重法的拓扑结构灰度单元过滤技术
拟微分算子在Hp(ω)上的有界性
基于灰度拉伸的图像水位识别方法研究
各向异性次Laplace算子和拟p-次Laplace算子的Picone恒等式及其应用
一类Markov模算子半群与相应的算子值Dirichlet型刻画
基于最大加权投影求解的彩色图像灰度化对比度保留算法
一张图看懂边缘计算
Roper-Suffridge延拓算子与Loewner链
基于灰度线性建模的亚像素图像抖动量计算
在边缘寻找自我