理论参考资料 —— 《数字图像处理第四版》

实践参考资料 —— 《数字图像处理 matlab 版第三版》

实践

理论

跳过

  1. 10.2.6,1 中的 DoG 算子,DoG 和 LoG。10.32 - 10.33 + 图 10.23
  2. 10.3.4 - 10.3.7
  3. 10.5 - 10.8

不太了解

基本了解

10.1 基础知识

图像分割的基本问题,是满足 a ~ e 五个条件的区域。其中谓词是自定义的一个逻辑,如在区域内为黑色。

而对单色图像,分割算法依据两个灰度值的性质:不连续性和相似性。

衍生出基于边缘和基于区域的两种分割

图 10.1

边缘、区域分割。

同时结合 a ~ e 五个空间子区域条件理解。

10.2 点、线和边缘检测

边缘像素在这里,认为是基于图像中灰度突变的像素。

10.2.1 背景知识

要检测灰度突变的像素,自然想到之前学到的一二阶导数。

用差分计算导数从而得到梯度算子的算法(后头会提到)的基础推导:利用在 x 点出展开的泰勒级数,当 $\vartriangle x = \pm 1$ 时,通过两式加减得到 n 阶导数。(所以在第三章的锐化滤波的一些细节在本章才讲清楚)

式 10.1 ~ 10.7

一阶和二阶导数的差分形式推导

斜坡,孤立点,线,台阶这些概念。

图 10.2

理解斜坡,孤立点,线,台阶。

通过观察一阶导数和二阶导数得出一些结论

一阶导数和二阶导数的一些结论

  1. 一阶粗边缘
  2. 二阶对精细敏感,包括噪声
  3. 二阶符号反映亮到暗(正)或相反
  4. 二阶双边缘

计算某个点位置的一二阶导数利用空间卷积。

10.2.2 孤立点的检测

利用拉普拉斯算子,通过空间卷积核实现,依据设置的阈值来判断是否要标记为孤立点。

式 10.15
例 10.1 利用拉普拉斯算子检测孤立点

10.2.3 线检测

拉普拉斯核的方向与检测的线的方向垂直。

例 10.2 + 图 10.5 拉普拉斯核线检测
图 10.6 线检测核以及角度方向

10.2.4 边缘模型

基于灰度剖面进行理解,分为三种,台阶,斜坡,屋顶。

图 10.8

边缘的二阶导数性质:对噪声更敏感,对图像边缘生成两个正负值,它们中间有个过零点,可确定边缘的中心位置。

图 10.10

图 10.11 带噪边缘区域中一阶导数二阶导数的性质

可以发现,二阶导数最噪声敏感。

引出边缘检测步骤

  1. 平滑处理降噪
  2. 检测边缘点
  3. 边缘定位

10.2.5 基本边缘检测

1. 图像梯度和性质

图像梯度的计算,从而得到了梯度图像。注意两个方向 $G_x(x, y), G_y(x, y)$。

图像梯度的性质:和边缘方向正交。

例 10.5 计算梯度

证明梯度向量方向和

2. 梯度算子

通过差分方式来计算梯度 $[\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}]$

式 10.19 - 20

图 10.13

计算水平,垂直方向梯度的算子,虽然图中是一维,但是可以用二维核做,注意中心点在左上角。

图 10.14 b~c 罗伯特算子

对对角线边缘感兴趣,中心点在左上角

图 10.14 d-e prewitt 算子

中心对称 3 * 3 核,把两侧的数据都考虑进来。

图10.14 f-g sobel 算子

prewitt 基础上考虑了距离权重。

图 10.15 罗盘核

检测罗盘方向的边缘幅度和方向。

利用以上核进行空间卷积算出 $g_x, g_y$ 后,可以计算偏导,边缘强度(幅度)和方向。

例 10.6 二维梯度幅值和角度的说明

$|g_x|, |g_y|$ 对sobel 算子的响应,分别对水平和垂直边缘响应。

图 10.18 - 19

但存在过于精细的细节也响应,所以要先平滑 + 阈值处理。

10.2.6 更先进的边缘检测

1. marr-hildreth 边缘算子

此算子要求计算微分和平滑图像。

首先是 LoG 算子需要了解。将二维高斯代入拉普拉斯变换得到。

式 10.27 - 10.29

具体算法,从而得到一个大概步骤

式子 10.30 - 10.31

  1. n * n 高斯核滤波
  2. 对滤波后的图像做拉普拉斯
  3. 找到过零点(最重要的问题

同时,高斯核的大小是 $6\delta$ 的最小奇整数。

找过零点的一个方法:对点 p 处的 3 * 3 邻域,上下、左右、主/副对角的各对像素值检测。起码其中一对像素符号要相反,同时对 p 处像素的差值的绝对值要超过一个阈值。(回想上文图中的零交叉点的两侧,像素值的差值

例 10.7 marr-hildreth 检测方法说明

对于阈值的选取通常不是 0,否则会有通心粉效应。

同时会得到一个 1 像素宽的边缘。

2. canny 边缘算子

具体算法步骤:

  1. 高斯滤波平滑图像
  2. 计算梯度幅度图像和角度图像
  3. 对梯度幅度图像进行非极大值抑制
  4. 双阈值处理 + 连通性分析检测与连接边缘

非极大值抑制,先确定四个基本方向:水平,垂直,+45,-45。以点 $(x, y)$ 为中心的 3 * 3 邻域中,找最接近的方向;在此方向上会有一对像素点,若 g(x, y) 最大,则保留,否则置零。

图 10.24

边缘发现。

方向的角度范围。

双阈值处理概念:高阈值和低阈值,在概念上生成两个图像 $G_H, G_L$。

$$ G_H(x,y) := G(x,y) \geq T_H \\ G_L(x,y) := G(x,y) \geq T_L $$

式 10.39 - 10.41

注意 $G_L = G_L - G_H$

边缘连接步骤:

P527

a - d 步骤。在高阈值图像找未访问的边缘像素,在低阈值图像对应处 8 连通。

例 10.8 canny 边缘检测说明和比较

例 10.9

10.2.7 连接边缘点

需要连接边缘点的原因:存在边缘断裂,灰度值不连续。边缘点可能在边缘中的一个区域内孤立。

连接算法分类:局部,全局。

1. 局部处理

对某个边缘点 $(x, y)$ 为中心的邻域分析所谓的相似点。

相似点的定义:邻域中某个点 $(s,t)$ 的梯度强度和梯度方向都满足式 10.42 和 10.43。

如果都满足,则 $(s, t)$ 的像素连接到 $(x, y)$

同时还有如上算法的简化版本:

P 530

1 - 4

主要转化为矩阵行操作,同时关于旋转 $\theta$,就是不断旋转图像来实现。

以寻找水平和垂直边缘为例,水平边缘找完,图像旋转 90° 即可。

例 10.101 局部处理链接边缘
2. 使用霍夫变换的全局处理

这个技术,真的是让我觉得数学太帅了。

其实书上讲的非常地快,个人推荐山东科技大学的数字图像处理课程中的讲解,浅显易懂。

首先需要理解对偶关系,简单来说,以 xy 坐标系的图像空间来说,共线的两个点,对应的参数空间上是共点的两条线。

而存在对偶关系的空间,如在 pq 参数空间内的操作,对于 xy 空间中是等价的,所以可以转而研究 pq 参数空间。

那么 xy 中的点对偶 pq 中的线。

霍夫变换的原理如图所示:

那么一般算法就是找若干个斜率 $[p_1, p_2, ... p_m]$ 和截距 $[q_1, q_2, ..., q_n]$,计算每种组合的线在对偶参数空间中的交点数,用 $A(p, q)$ 记录。最后找到最多交点数的 pq。

但是 xy 空间有个问题,如果线是垂直的,无法表示,所以才引入极坐标参数空间 $xcos\theta + ysin\theta = \rho$。xy 对偶极坐标参数空间。

PS:关于怎么对偶的,不要局限于 $y = px + q$ 这种。

在极坐标上,共线的两个点在对应参数空间是两条正弦曲线。(极坐标公式可以推为 $\rho = sin(\theta + \phi)$,这个很关键,用于理解对偶)

图 10.29

那么只要统计正弦曲线的交点数即可。因为同样的,xy 中共线的点,对偶于极坐标空间中多个直线的交点。

例 10.11 基本性质

例 10.12 链接边缘

10.3 阈值处理

提取的目标物与其背景在灰度特性上的差异。

阈值类型适用情况
全局阈值图像中目标和背景有明显差别,而且这种差别在图像中的任何位置都几乎相同。
局部阈值目标和背景的对比度随着位置的不同可能有较大变化(比如光照不均)
单阈值图像中只有单个目标和单个背景的情况,或者只对图像进行简单的划分。
多阈值图像中存在多个目标或多个背景的情形,或者对图像进行多个层次的划分。
直接阈值对比度较大的图像,也就是图像中在区域内部灰度基本一致,而不同区域之间灰度有较大的差异。
间接阈值图像中的目标和背景差别不是很大,如果不作处理直接选取阈值的话,用这个阈值不能很好地分割图像。

10.3.1 基础知识

1. 灰度阈值基础

理解式 10.46 - 10.47 即可,利用阈值来区分目标点和背景点。

当阈值适用于整个图像,那就是全局阈值;若在一幅图像种变化,就是可变阈值处理。

分割可以转换为对直方图的分割,那么对于波谷的宽度和深度会有要求。

图 10.32 可分割直方图

影响波谷特性的关键因素有什么。

P 535 图 10.32 下方
2. 噪声对阈值分割影响

噪声污染会导致找不到波谷,无法分割。

图 10.33
3. 光照和反射对直方图处理的作用

解决的三种办法是什么。

  1. 矫正阴影模式
  2. 顶帽变换
  3. 可变阈值

10.3.2 基本的全局阈值

主要是一个迭代算法不断地计算新阈值,直到迭代间两个阈值的差小于一个预定义 $\vartriangle T$

P 537 1-5
例 10.13 全局阈值处理

10.3.3 Otsu 方法的最优全局阈值处理

全篇主要是推导,具体步骤如下:

P 541

1 - 7 点

注意,k 是灰度分级,如 8 bit 灰度图像分级为 0 - 255

式 10.62 - 63

这是最重点的思想,最大化类间方差。自变量就是 k

当然,这些也可以去 PPT 里头看 6.3 最大类间方差法。(课件可以找我要 hhhhh。

例 10.14 使用 Otsu 方法的最优全局阈值处理

10.4 区域生长、区域分离与聚合进行分割

10.4.1 区域生长

引自书上的话,挺好理解的。

找一个具有代表性的种子,以种子为聚类中心不断地把图像中与之特性相同的相邻像素合并入该区域中,直到不能合并为止,最后形成特征不同的各个区域

可以看出,区域生长是基于相似性的算法。

书中提供了 8 连接的生长算法,他是十分概括性的, 其实概括的很好,但一开始可能不好懂。

P 551 - 552, 1 - 4 点

建议用一个例子来理解(但是以后还是可以回头再看看。

例 10.20 区域生长分割图像

对于区域生长有一些关键问题

  1. 种子点选择。直方图极大值等。
  2. 相似性准则判定。区间灰度差等。

10.4.2 区域分离和聚合

对区域进行一定的四等分,同时进行合并,从而得到结果。

而被分割的图像可以使用四叉树来表示。

图 10.47

P 554 1-4 点,步骤小结

但是可以再优化,分裂后可以先考虑相邻区域是否可以合并,同时已经合并的区域可以不用再考虑分裂(比如做个标记来区分。

优先和同一层级的区域进行合并,再向父级合并

R1 R2 可以合并,并且不用再分裂,R4 不用分裂。然后 R3 需要再分裂,R31 R33 R34 合并。R32 同级无法合并,于是和父级的 R4 合并。

例 10.21 区域分离和聚合分割图像

笔记

  1. 边缘产生,定义。
  2. 边缘检测的意义。重要的特征之一,集中了很多信息。边缘对图像变化不敏感。(集合,灰度,光照等。是预处理的典型过程
  3. 边缘模型。台阶,斜坡,屋顶。
  4. 导数边缘关系。暗到亮,存在斜坡,起点和斜坡处,导数为正。二阶导,起点处为正,终点处为负,恒定灰度区为零,导数为正时,导数恒定,所以二阶导数也为零。一阶微分定位在峰值点,二阶在零交叉点为边缘。
  5. 边缘检测中存在漏检,误检。
  6. 梯度。边缘方向与该点处梯度方向相互垂直
  7. 梯度算子。直接差分(只能检测水平、垂直)。注意,垂直方向梯度,检测水平方向边缘。robert 算子,检测对角线方向边缘。prewitt 算子,但是不同距离的像素权重是一样的,但距离近权重更大才对。sobel 算子,考虑了prewitt 缺点。检测对角线的 pre、sobel 算子。模板的系数之和一定要为 0:保证在灰度恒定区域输出为 0,因为恒定区域梯度为0.
  8. 利用拉普拉斯算子,可以利用零交叉点定位边缘。但对噪声敏感,产生双边缘。
  9. 马儿希尔德雷斯边缘检测器。如何找零交叉点(后头的讨论都是经过梯度算子的图像,这样才能说直接再图像上找正负值相反。
  10. canny 边缘检测器
  11. 区域生长,区域分离聚合进行分割。生长法的算法步骤。分裂合并的思想。分裂结果可以用多叉树表示。
  12. 霍夫变换。对偶关系。霍夫变换的原理就是基于对偶关系,找到那个直线。极坐标的引入为了克服 90 ° 的问题。微分放大噪声

    ,积分滤除噪声。霍夫变换的扩展:对圆的检测(对圆方程的求导别忘了。),对椭圆检测。

  13. 阈值分割。是根据相似性。

添加新评论