对本书、视频等任何 MATLAB 问题,作者做到有问必答! 你买的不仅仅是书,更是一种 “ 有问必答 ” 的服务!
投稿请联系: 视频版权归作者所有,请勿翻录
» 第一步:购买该书(当当、亚马逊等均有销售) » 第二步:拿到书籍以后,封面上有卡,如下图 所示: » 根据封面提示,验证密码,即可享受作者 “ 有 问必答 ” 服务! » 有问必答网址 : 刮开即可看到密码
图像分割就是把图像分成各具特性的区域,并提取出感兴趣目标的技术。 图像分割在很多领域都有着非常广泛的应用,并涉及各种不同类型的图像。 本章将详细的介绍图像分割技术,主要包括边缘分割技术、阈值分割技术 和区域分割技术等。
图像分割的研究最早可以追溯到 20 世纪 60 年代,目前国内外学者已经提出 上千种图像分割算法,但目前还没有一种适合于所有图像的通用分割算法, 绝大多数算法都是针对具体问题而提出的。由于缺少通用的理论指导,常 常需要反复的进行实验。在已提出的这些算法中,较为经典的算法有边缘 检测方法、阈值分割法和区域分割技术。随着近十年来一些特殊理论的出 现及其成熟,如数学形态学、小波分析和模糊数学等,大量学者致力于将 新的理论和方法用于图像分割,有效地改善了分割效果。
边缘检测是利用物体和背景在某种图像特性上的差异来实现的。常见的边 缘检测方法有:微分算子、 Canny 算子和 LOG 算子等。常用的微分算子有 Sobel 算子、 Roberts 算子 Prewit 算子等。下面分别进行介绍。
将图像点某个邻域中每个像素值都与模板中对应的系数相乘,然后将结果 进行累加,从而得到该点的新像素值。如果邻域的大小为 m×n ,则总共有 mn 个系数。这些系数组成的矩阵,称为模板或算子。通常采用的最小模 板是 3×3 。 对于图像中的间断点,常用的检测模板为: 对于图像中的线段,常用的检测模板为:
常用的微分算子有 Sobel 算子、 Prewitt 算子和 Roberts 算子。通过这些算子对图像进 行滤波,就可以得到图像的边缘。下面分别进行介绍。 1 、 Roberts 算子 首先介绍 Roberts 算子。对于离散的图像,边缘检测算子就是用图像的垂直和水平 差分来逼近梯度算子,即: 2 、 Prewitt 算子 下面介绍 Prewitt 算子。 Prewitt 算子的大小为 3×3 ,如下所示: 这两个算子分别代表图像的水平梯度和垂直梯度。 3 、 Sobel 算子 Sobel 算子的大小和 Prewitt 算子的大小相同,都是 3×3 。 Soble 算子的模板如下所示: 在 MATLAB 中,函数 edge( ) 可以采用 Sobel 算子进行边缘检测。
Canny 算子的具有低误码率、高定位精度和抑制虚假边缘等优点。 在 MATLAB 中,函数 edge( ) 可以采用 Canny 算子进行边缘检测。该函数的 调用格式为: BW=edge(I, ‘canny’) :该函数采用 Canny 算子对图像 I 进行边缘检测,并采 用自动计算的低阈值和高阈值进行图像分割,函数的返回值 BW 为二值图 像。 BW=edge(I, ‘canny’, thresh) :该函数中对分割阈值 thresh 进行设置, thresh 为包含 2 个元素的向量,分别是低阈值和高阈值。如果 thresh 为单个数值的 标量,则 thresh 为高阈值, 0.4×thresh 作为低阈值。 BW=edge(I, ‘canny’, thresh, sigma) :该函数中对高斯滤波器的标准差 sigma 进行设置,默认值为 1 。 [BW, thresh]=edge(I, ‘canny’, …) :该函数返回分割时所采用的阈值 thresh 。
拉普拉斯( Laplacian )算子是一种不依赖于边缘方向的二阶微分算子,它 是标量而不是矢量,而且具有旋转不变的性质,在图像处理中经常被用来 提取图像的边缘,表达式为: 数字图像的近似公式为:
阈值分割技术是最简单的一种图像分割方法,关键在于寻找合适的阈值, 通常根据图像的直方图来选取。下面对阈值分割技术进行详细的介绍。
可以通过全局的信息,例如整个图像的灰度直方图。如果在整个图像中只 使用一个阈值,则这种方法叫做全局阈值法,整个图象分成两个区域,即 目标对象(黑色)和背景对象(白色)。全局阈值将整个图像的灰度阈值 设置为常数。 对于物体和背景对比比较明显的图像,其灰度直方图为双峰形状,可以选 择两峰之间的波谷对应的像素值做为全局阈值,将图像分割为目标对象和 背景。其公式如下: 其中为点的像素值,为分割后的图像,为全局阈值,通常通过直方图来获 取全局阈值。
最大类间方差法,又称为 Otsu 算法,该算法是在灰度直方图的基础上采用 最小二乘法原理推导出来的,具有统计意义上的最佳分割。它的基本原理 是以最佳阈值将图像的灰度值分割成两部分,使两部分之间的方差最大, 即具有最大的分离性。 设为图像的位置处的灰度值,灰度级为,则。若灰度级的所有像素个数为, 则第级灰度出现的概率为: 其中 ,并且 。
迭代阈值法是阈值法图像分割中比较有效的方法,通过迭代的方法来求出 分割的最佳阈值,具有一定的自适应性。迭代法阈值分割的步骤如下: ( 1 )设定参数,并选择一个初始的估计阈值。 ( 2 )用阈值分割图像。将图像分成两部分:是由灰度值大于的像素组成, 是由灰度值小于或等于的像素组成。 ( 3 )计算和中所有像素的平均灰度值和,以及新的阈值。 ( 4 )如果,则推出,即为最优阈值;否则,将赋值给,并重复步骤 ( 2 )~( 4 ),直到获取最优阈值。
图像分割的方法很多,除了边缘分割和阈值分割等方法以外,还可以采用 区域分割。区域分割主要包括区域生长法和分水岭分割法,下面分别进行 介绍。
区域生长是一种串行区域分割的图像分割方法。区域生长的基本思想是将 具有相似性质的像素集合起来构成区域。区域增长方法根据同一物体区域 内像素的相似性质来聚集象素点的方法,从初始区域(如小邻域或单个象 素)开始,将相邻的具有同样性质的象素或其它区域归并到目前的区域中 从而逐步增长区域,直至没有可以归并的点或其它小区域为止。区域内象 素的相似性度量可以包括平均灰度值、纹理、颜色等信息。
分水岭算法借鉴了形态学理论,是一种较新的基于区域的图像分割算法。 在该方法中,将一幅图像看成一个地形图,灰度值对应地形的高度值,高 灰度值对应着山峰,低灰度值对应着山谷。水总是朝地势低的地方流动, 直到某个局部低洼处,这个低洼处就是盆地。最终所有的水都会处于不同 的盆地,盆地之间的山脊称为分水岭。
本章详细的介绍了利用 MATLAB 进行图像的分割。首先详细的介绍了边缘 分割技术,主要包括图像中的线段、微分算子、 Canny 算子和 LOG 算子等。 接着介绍了阈值分割技术,通过阈值来进行图像的分割,主要包括全局阈 值、 Otsu 阈值和迭代法求最优阈值。最后介绍了区域分割技术,主要包括 区域增长法和分水岭算法。
7.1 任意选择一幅灰度图像,采用 Roberts 算子进行分割,阈值为图像灰度 的均值,试编程实现。 。 7.2 任意选择一幅灰度图像,采用分水岭算法进行图像的分割,采用的连 通域为 4 连通,试编程实现。