[数字图像处理笔记] 第八章 图像分割

发布时间 2023-12-13 02:06:57作者: Amαdeus

1. 概述

图像分割 是图像识别和图像理解的 前提 步骤,图像分割质量的好坏直接影响图像处理的结果。

图像分割是将一幅图像分解为若干互不相交、有意义的、具有 相同性质 的区域。

  • 分割出来的各区域在灰度、纹理等方面具有相似性,区域内部是连通的

  • 区域边界是明确的

  • 相邻区域对分割所依据的性质有明显的差异


图像分割算法一般是基于灰度值 不连续性相似性 的。

  • 基于亮度的 不连续性变化 分割图像,比如 图像的边缘

  • 基于事先预定的准则将图像分割为 相似区域


2. 边缘检测和连接

2.1 边缘检测

2.1.1 边缘

边缘图 可以用 表示边缘点位置二值图像 来表示。

边缘图通过 边缘点连接 完成物体的检测,勾画出各个物体的轮廓。

边缘的一些特性:

  • 根据人类视觉特性,首先感受到的是边缘

  • 在边缘处,灰度和结构等信息发生 突变

  • 边缘可以是一个区域的结束,也可以是一个区域的开始。利用这个特性来分割图像。

边缘上的突变,可以用 微分算子 进行检测。



2.1.2 梯度算子

  • 一阶导数算子

    \[\nabla f(x, y) = \begin{bmatrix} G_x \\\\ G_y \end{bmatrix} = \begin{bmatrix} \frac{\partial f}{\partial x} \\\\ \frac{\partial f}{\partial y} \end{bmatrix} \]

  • \(\text{Roberts}\) 算子

  • \(\text{Prewitt}\) 算子

  • \(\text{Sobel}\) 算子


2.1.3 Kirsch算子

图像中的每个点均与这8个模板进行卷积,每个掩模对某个特定边缘方向作出最大响应。

所有8个方向中的 最大值 作为边缘幅度图像的输出。

最大响应掩模的序号构成了对边缘方向的编码。

\[G(x, y) = \max(|M_1|, |M_2|, ... , |M_8|) \]

(一个模板,8个角度)


2.1.4 拉普拉斯算子

2.1.5 算子性能检测

相关代码:

I = imread('1.png');
I = rgb2gray(I);

figure;
imshow(I), title('initial img');

figure;
I1 = edge(I, 'roberts');
subplot(2, 2, 1);
imshow(I1), title('roberts');

I2 = edge(I, 'prewitt');
subplot(2, 2, 2);
imshow(I2), title('prewitt');

I3 = edge(I, 'sobel');
subplot(2, 2, 3);
imshow(I3), title('sobel');

I4 = edge(I, 'log');
subplot(2, 2, 4);
imshow(I4), title('log');
  • \(\text{Roberts}\) 算子:

    \(\text{Roberts}\) 算子利用 局部差分 算子寻找边缘,边缘定位精度较高,但容易丢失一部分边缘,不具备抑制噪声的能力

    该算子对 具有陡峭边缘含噪声少 的图像 效果较好

  • \(\text{Sobel}\) 算子和 \(\text{Prewitt}\) 算子

    都是对图像 先做加权平滑 处理,然后再做 微分 运算,所不同的是平滑部分的权值有些差异,因此 对噪声具有一定的抑制 能力,但不能完全排除检测结果中出现的虚假边缘。

    虽然这两个算子边缘定位效果不错,但 检测出的边缘容易出现多像素宽度

  • \(\text{Laplacian}\) 算子

    是不依赖于边缘方向的 二阶微分 算子,对图像中的阶跃型边缘点定位准确,该算子 对噪声非常敏感,它使噪声成分得到加强,这两个特性使得该算子容易丢失一部分边缘的方向信息,造成一些不连续的检测边缘,同时 抗噪声能力比较差

  • \(\text{LOG}\) 算子

    该算子首先用 高斯函数 对图像作 平滑滤波 处理,然后才使用 Laplacian算子 检测 边缘,因此克服了Laplacian算子抗噪声能力比较差的缺点,但是在抑制噪声的同时也可能将原有的比较尖锐的边缘也平滑掉了,造成这些尖锐边缘无法被检测到。


2.2 边缘连接

利用前面的方法检测出边缘点,但由于 噪声、光照不均等因素 的影响,获得边缘点有 可能是不连续 的,必须使用连接过程将边缘像素组合成有意义的边缘信息,以备后续处理。

在邻域中找出其它端点并填充上必要的边界像素,从而将它们连接起来。

这种方法可能会对图像过度分割。为了避免过度的分割,可以规定:两个端点只有在边缘强度和走向相近的情况下才能连接

...


3. 阈值分割

将所有灰度值 大于或等于 某阈值的像素都判为物体;

将所有灰度值 小于 该阈值的像素排除在物体之外。

...


4. 区域分割

阈值分割法由于没有或很少考虑空间关系,该方法应用受到限制。

区域分割法 可以弥补这点不足,它利用的是图像的空间性质,该方法认为分割出来的属于同一区域的像素应具有相似的性质,其概念是相当直观的。

传统的区域分割算法有 区域生长法区域分裂合并法。该类方法在没有先验知识可以利用时,对含有复杂场景或自然景物等先验知识不足的图像进行分割,也可以取得较好的性能。但是,空间和时间开销都比较大。

  • 区域生长法

区域生长法是一种根据事先定义的准则将像素或子区域聚合成更大区域的过程,该方法主要考虑像素及其 空间邻域 像素之间的关系。

  • 开始时确定 一个或多个像素点 作为 种子

  • 然后按某种相似性准则增长区域,逐步生成具有某种均匀性的空间区域,将 相邻的具有相似性质 的像素或区域归并从而逐步增长区域,直至没有可以归并的点 或其它 小区域为止。

  • 区域内像素的相似性度量可以包括平均 灰度值、纹理、颜色 等信息。

就是 \(bfs\) 求连通块

...


5. 二值图像处理

二值图像 是只具有两个灰度级的图像,它是数字图像的一个重要子集。

  • 一个二值图像通常是由一个图像分割操作产生的。

  • 如果初始的分割不够令人满意,对二值图像的某些形式的处理通常能提高其质量。

\(bfs\) 求连通块


5.1 数学形态学图像处理

  • 腐蚀

  • 膨胀


5.2 开运算和闭运算


5.3 一些基本形态学算法

  • 边界提取

  • 区域填充

...

后续再补充