数字图像处理学习笔记(五)下

文章目录

  • 第10章 图像分割
    • 10.1 基础知识
    • 10.2 点、线和边缘检测
      • 边缘检测
      • 点检测
      • 线检测
      • 边缘模型
      • Marr-H ildreth 边缘检测器
        • 高斯拉普拉斯(LoG) :
        • 坎尼边缘检测器
      • 边缘连接和边界检测
    • 10.3 阂值处理
      • 多阈值处理
      • 可变阈值处理
      • 多变量阈值处理
    • 10.4 基于区域的分割
      • 区域生长
    • 10.5 用形态学分水岭的分割
    • 10.6 分割中运动的应用
    • 10.6小结

第10章 图像分割

从输入和输出都是图像的图像处理方法,转到了输入为图像而输出为从这些图像中提取出来的属性的图像处理方法。

分割将图像细分为构成它的子区域或物体。

本章中的多数分割算法均基于灰度值的两个基本性质之一:不连续性和相似性。

10.1 基础知识

图像分割条件:

  1. 分割必顿是完全的 。也就是说,每个像素都必须在一个区域内 。
  2. 要求一个区域中的点以某些预定义的方式来连接(即这些点必须是4连接的或8 连接的) 。
  3. 各个区域必须是不相交的。
  4. 涉及分割后的区域中的像素必须满足的属性一一例如,如果 R i R_i Ri中的所有像素都有相同的灰度级,则 Q( R i R_i Ri) = TRUE 。
  5. 两个邻接区域 R i R_i Ri R j R_j Rj在属性Q的意义上必须是不同的。

分割中的基本问题就是把一幅图像分成满足前述条件的多个区域。

10.2 点、线和边缘检测

边缘检测

边缘像素是图像中灰度突变的那些像素,而边缘(或边缘线段)是连接的边缘像素的集合。

对于灰度的突变,局部变化可以用微分来检测。

数字函数的导数可用差分来近似。

一阶导数的近似的基本要求:

  1. 在恒定灰度区域必须为零;
  2. 在灰度台阶或斜坡开始处必须不为零
  3. 在沿灰度斜披点处也必须不为零。

二阶导数的近似的基本要求:

  1. 在恒定灰度区域必须为零;
  2. 在灰度台阶或斜坡的开始处和结束处必须不为零;
  3. 沿灰度斜坡必须为零。

一维函数 f(x)在点 x 处的导数的近似 :

∂ f ∂ x = f ′ ( x ) = f ( x + 1 ) − f ( x ) \frac{\partial f}{\partial x} = f\prime(x) = f(x+1)-f(x) xf=f(x)=f(x+1)f(x)

二阶导数表达式:

∂ 2 f ∂ x 2 = f ′ ′ ( x ) = f ( x + 1 ) + f ( x − 1 ) − 2 f ( x ) \frac{\partial^2 f}{\partial x^2} = f\prime\prime(x) = f(x+1)+f(x-1)-2f(x) x22f=f(x)=f(x+1)+f(x1)2f(x)

有关导数结论:
一阶导数通常在图像中产生较粗的边缘;
二阶导数对精细细节,如细线、孤立点和噪声有较强的响应;
二阶导数在灰度斜坡和灰度台阶过渡处会产生双边缘响应;
二阶导数的符号可用于确定边缘的过搜是从亮到暗还是从暗到亮;

使用空间滤波器可以计算图像中每个像素位置处的一阶导数和二阶导数。

基于空间模板的导数的计算是用这些模板对一幅图像进行空间滤波。

点检测

点的检测应以二阶导数为基础。
使用拉普拉斯模版进行点检测:
数字图像处理学习笔记(五)下_第1张图片
上图为拉普拉斯模板,如果在某点处该模板的响应的绝对值超过了一个指定的阈值,那么我们说在模板中心位置(x,y)处该点已被检测到了。在输出图像中,这样的点被标注为 1,而所有其他点则被标注为 0,从而产生一幅二值图像。表达式如下:
g ( x , y ) = { 1 , ∣ R ( x , y ) ∣ ≥ T 0 , 其 他 g(x,y) = \begin{cases} 1, &\mid R(x,y)\mid \geq T \\ 0, &其他 \end{cases} g(x,y)={1,0,R(x,y)T

g 是输出图像, T是一个非负的阔值,R为滤波后的输出值。

线检测

对于线检测,可以使用拉普拉斯模板。

谈论线检测时,我们假设这些线要细于检测子的尺寸。不满足这一假设的线最好当做区域,并使用边缘检测方法来处理。

数字图像处理学习笔记(五)下_第2张图片
实际使用时,根据我们的实际需要,选择合适的模板进行处理。

边缘模型

边缘检测是基于灰度突变来分割图像的最常用的方法。

边缘模型根据它们的灰度剖面来分类。
台阶边缘是指在1个像索的距离上发生两个灰度级间理想的过渡。
数字图像处理学习笔记(五)下_第3张图片

实际中,数字图像都存在被模糊且带有噪声的边缘,模糊的程度主要取决于聚焦机理(如光学成像中的镜头)中的限制,而噪声水平主要取决于成像系统的电子元件。

一阶导数的幅度可用于检测图像中的某个点处是有存在一个边缘。二阶导数的符号可用于确定一个边缘像素位于该边缘的暗的一侧还是亮的一侧。

围绕一条边缘的二阶导数的两个附加性质:( 1)对图像中的每条边缘, 二阶导数生成两个值(一条不希望的特点) ; (2)二阶导数的零交叉点可用于定位租边缘的中心。
数字图像处理学习笔记(五)下_第4张图片
微弱的可见噪声对检测边缘所用的两个关键导数的严重影响。使用导数之前的图像平滑处理是应该认真考虑的问题。

执行边缘检测的三个基本步骤:

  1. 为降噪对图像进行平滑处理。
  2. 边缘点的检测 。这是一个局部操作,从一幅图像中提取所有的点 ,这些点是变为边缘点的潜在候选者。
  3. 边缘定位。 这一步的目的是从候选边缘,但中选择组成边缘点集合中的真实成员 。

为了在一幅图像 f f f的(x,y)位置处寻找边缘的强度和方向,所选择的工具就是梯度.向量定义为

∇ ≡ g r a d ( f ) ≡ [ g x g y ] ≡ [ ∂ f ∂ x ∂ f ∂ y ] \nabla \equiv grad(f) \equiv\left[ \begin{array}{c} g_x\\ g_y \end{array} \right]\equiv \left[ \begin{array}{c} \frac{\partial f}{\partial x} \\\\ \frac{\partial f}{\partial y} \end{array} \right] grad(f)[gxgy]xfyf

梯度向量的方向由下列对于 x轴度量的角度给出:
α ( x , y ) = a r c t a n [ g y g x ] \alpha (x,y) = arctan \left[ \frac{g_y}{g_x} \right] α(x,y)=arctan[gxgy]

要得到一幅图像的梯度,则要求在图像的每个像素位置处计算偏导数 ∂ f \partial f f/ ∂ x \partial x x ∂ f \partial f f/ ∂ y \partial y y.我们处理的是数字量,因此要求关于一点的邻域上的偏导数的数字近似。

g x = ∂ f ( x , y ) ∂ x = f ( x + 1 , y ) − f ( x , y ) g x = ∂ f ( x , y ) ∂ x = f ( x , y + 1 ) − f ( x , y ) g_x = \frac{\partial f(x,y)}{\partial x} = f(x+1,y) - f(x,y)\\ g_x = \frac{\partial f(x,y)}{\partial x} = f(x,y+1) - f(x,y) gx=xf(x,y)=f(x+1,y)f(x,y)gx=xf(x,y)=f(x,y+1)f(x,y)
数字图像处理学习笔记(五)下_第5张图片

上图为实现上式的一维模板。

3x3 的模板来近似偏导数的最简单的数字近似公式如下;

g x = ∂ f ∂ x = ( z 7 + z 8 + z 9 ) − ( z 1 + z 2 + z 3 ) g y = ∂ f ∂ x = ( z 3 + z 6 + z 9 ) − ( z 1 + z 4 + z 7 ) g_x = \frac{\partial f}{\partial x} = (z_7+z_8+z_9) - (z_1+z_2+z_3)\\ \\ g_y = \frac{\partial f}{\partial x} = (z_3+z_6+z_9) - (z_1+z_4+z_7) gx=xf=(z7+z8+z9)(z1+z2+z3)gy=xf=(z3+z6+z9)(z1+z4+z7)数字图像处理学习笔记(五)下_第6张图片

Prewitt 模板实现起来比 Sobel 模板更为简单,Sobel 模板能较好地抑制(平滑)噪声的特性这一事实使得它们更可取。

Marr-H ildreth 边缘检测器

灰度变化与图像尺寸无关,因此他们的检测要求使用不同尺寸的算子 ;
灰度的突然变化会在一阶导数中引起波峰或波谷,或在二阶导数中等效地引起零交叉

高斯拉普拉斯(LoG) :

∇ 2 G ( x , y ) = [ x 2 + y 2 − 2 σ 2 σ 4 ] e − x 2 + y 2 2 σ 2 \nabla^2G (x,y) = \left[\frac{x^2+y^2-2\sigma^2}{\sigma^4} \right]e^{-\frac{x^2+y^2}{2\sigma^2}} 2G(x,y)=[σ4x2+y22σ2]e2σ2x2+y2

数字图像处理学习笔记(五)下_第7张图片
任意尺寸的模板可以通过该式取样并标定系数以使系数之和为零来生成。
Marr-Hildreth 算法由 LOG 滤波器与一幅输入图像 f ( x , y ) f(x, y) f(x,y卷积组成,即 g ( x , y ) = [ ∇ 2 G ( x , y ) ] ★ f ( x , y ) g(x, y) = [\nabla^2 G(x,y)]★f(x, y) g(x,y)=[2G(x,y)]f(x,y)

然后寻找 g(x, y)的零交叉来确定 f ( x , y ) f(x, y) f(x,y中边缘的位置。

坎尼边缘检测器

迄今为止讨论过的边缘检测器中最为优秀的。

坎尼方法基于三个基本目标:

  1. 低错误率。 所有边缘都应被找到.并且应该没有伪响应。 也就是检测到的边缘必须尽可能是真实的边缘。
  2. 边缘点应被很好地定位。已定位边缘必须尽可能接近真实边缘。 也就是由检测器标记为边缘的点和真实边缘的中心之间的距离应该最小。
  3. 单一的边缘点响应。对于真实的边缘点,检测器仅应返回一个点。也就是真实边缘周围的局部最大数应该是最小的。这意味着在仅存一个单一边缘点的位置,检测器不应指出多个边缘像素。

坎尼的工作的本质是从数学上表达了前面的三个准则,并试图找到这些表达式的最佳解。

坎尼边缘检测算法是由下列基本步骤组成的:

  1. 用一个高斯滤波器平滑输入图像。
  2. 计算梯度幅值图像和角度图像。
  3. 对梯度幅值图像应用非最大抑制。
  4. 用双阈值处理和连接分析来检测并连接边缘。

平滑是用指定的大小为 nxn 的高斯模板与输入图像进行卷和中来完成的

坎尼算法改进性能所付出的代价是比早些时候讨论的两种方法实现起来更复杂 , 同时执行时间会更长。

实时工业图像处理,成本和速度需求通常要求我们使用更简单的技术,主要是阈值梯度方法。
当关注的主要是边缘质量时,通常会使用 Marr-Hildreth 算法和坎尼算法,特别是坎尼算法。

边缘连接和边界检测

理想情况下,边缘检测应该仅产生位于边缘上的像素集合。实际上,由于噪声、不均匀照明引起的边缘间断,以及其他引入灰度值虚假的不连续的影响,这些像素并不能完全描述边缘特性。因此,一般是在边缘检测后紧跟着连接算法,所设计的算法将边缘像素组合成有意义的边缘或区域边界。

局部处理:

  1. 计算输入图像 f(x,y)的梯度幅度阵列M(x,y)和梯度角度阵列α(x,y) 。
  2. 形成一幅二值图像 g,任何坐标对(x,y)处的值由下式给出:
    g ( x , y ) = { 1 , M ( x , y ) > T 且 α ( x , y ) = A ± T A 0 , 其 他 g(x,y) = \begin{cases} 1, &M(x,y) > T且α(x, y)= A± T_A \\ 0, &其他 \end{cases} g(x,y)={1,0,M(x,y)>Tαx,y)=A±TA
  3. 扫描 g 的行,并在不起过指定长度 K 的每一行中填充(置 1 )所有缝隙(0的集合)。注意,按照定义,缝隙一定要限制在一个1或多个1 的两端。分别地处理各行,它们之间没有记忆。
  4. 为在任何其他方向 θ \theta θ上检测缝隙,以该角度旋转g,并应用步骤3中的水平扫描过程。 然后,将结果以 θ \theta θ旋转回来。

区域处理
在图像中感兴趣区域的位置已知或可以确定的情况下,我们可以使用在区域的基础上连接像素的技术。

使用霍夫变换的全局处理

  1. 使用本节中先前讨论的任何技术得到一幅二值图像。
  2. 指定 ρ \rho ρθ 平面中的细分。
  3. 对像素高度集中的地方检验其累加单元的数量。
  4. 检验选中单元中像素间的关系(主要针对连续性) 。

10.3 阂值处理

由于阈值处理直观、实现简单且计算速度快,因此图像阈值处理在图像分割应用中处于核心地位。

灰度阈值处理
灰度阐值的成功与否直接关系到可区分的直方图模式的谷的宽度和深度。 而影响波谷特性的关键因素是:

  1. 波峰间的间隔(波峰离得越远,分离这些模式的机会越好) ;
  2. 图像中的噪声内容(模式随噪声的增加而展宽)
  3. 物体和背景的相对尺寸 ;
  4. 光源的均匀性;
  5. 图像反射特性的均匀性。

全局阈值处理

  1. 为全局阈值T选择一个初始估计值。
  2. 用 T分割该图像 。这将产生两组像素: G 1 G_1 G1由灰度值大于T的所有像素组成, G 2 G_2 G2由所有小于等于T的像素组成。
  3. G 1 G_1 G1 G 2 G_2 G2的像萦分别计算平均灰度值(均值) m 1 m_1 m1 m 2 m_2 m2
  4. 计算一个新的阈值 : T = 1 2 ( m 1 + m 2 ) T = \frac{1}{2}(m_1+m_2) T=21(m1+m2)
  5. 重复步骤2到步骤4,直到连续迭代中的T值间的差小于一个预定义的参数 ∇ T \nabla T T 为止。

阈值处理可视为一种统计决策理论问题,其目的是在把像素分配给两个或多个组(也称为分类)的过程中引人的平均误差最小。

如果直方图的波峰是高、窄、对称的,且被深的波谷分开,则选取一个“较好”阈值的机会是相当大的。 改进直方图形状的一种方法是仅考虑那些位于或靠近物体和背景间的边缘的像素。 一种直接且明显的改进是直方图很少依赖物体和背最的相对大小。

多阈值处理

实际中.当我们有理由相信使用两个阈值可以有效地解决问题时,那么使用多个全局阈值处理就被视为一种可行的方法。 要求两个以上阈值的应用,通常使用更多的灰度值来解决。

可变阈值处理

可变阈值处理最简单的方法之一是把一幅图像分成不重叠的距形。这种方法用于补偿光照和/或反射的不均匀性。 选择的矩形要足够小,以便每个矩形的光照都近似是均匀的。

与图像细分方法相比更为一般的方法是在一幅图像中的每一点。(x, y)计算阈值,该阈值是以一个或多个在(x, y)邻域计算的特性为基
础的。

多变量阈值处理

多变量阈值处理可视为一种距离计算。

10.4 基于区域的分割

区域生长

区域生长是根据预先定义的生长准则将像素或子区域组合为更大区域的过程。 基本方法是从一组“种子”点开始,将与种子预先定义的性质相似的那些邻域像素添加到每个种子上来形成这些生长区域(如特定范围的灰度或颜色) 。

f ( x , y ) f(x,y) f(x,y表示一个输入图像阵列; S ( x , y ) S(x, y) S(x,y表示一个种子阵列。阵列中种子点位置处为1,其他位置处为0; Q 表示在每个位置(x,y)处所用的属性。 假设阵列 f f f和 S 的尺寸’相同。基于 8 连接的一个基
本区域生长算法可说明如下:

  1. S ( x , y ) S(x, y) S(x,y中寻找所有连通分量,并把每个连通分量腐蚀为一个像素;把找到的所有这种像素标记为1,把 S 中的所有其他像素标记为 0。
  2. 在坐标对 (x, y)处形成图像 f Q f_Q fQ:如果输入图像在该坐标处满足给定的属性Q, 则令 f Q ( x , y ) = 1 f_Q(x,y)=1 fQ(x,y)=1 ,否则令 f Q ( x , y ) = 0 f_Q(x,y)=0 fQ(x,y)=0
  3. 令 g 是这样形成的图像:即把 f Q f_Q fQ中为 8 连通种子点的所有 1 值点,添加到 S 中的每个种子点。
  4. 用不同的区域标记(如1, 2, 3,…)标出g中的每个连通分量。这就是由区域生长得到的分割图像。

10.5 用形态学分水岭的分割

汇水盆地或分水岭:
对于一个特定的区域最小值,满足把一个点看成是一个水滴,如果把这些点放在任意位置上,水滴一定会下落到一个单一的最小值点的集合。

分割线或分水线:
满足处在该点的水会等可能性地流向不止一个这样的最小值点形成的地表面的峰线。

常见到分水岭分割方法用于一幅图像的梯度,而不是图像本身。

构建分离二元点集的水坝的最简方法是使用形态学膨胀。

分水岭分割算法通常会由于噪声和梯度的其他局部不规则性造成过度分割,令算法得到的结果变得毫无用处。

10.6 分割中运动的应用

在时刻 t i t_i ti t j t_j tj获取的两幅图像间的差值图像可以定义为:
d i j = { 1 , ∣ f ( x , y , t i ) − f ( x , y , t j ) ∣ > T 0 , 其 他 d_{ij}=\begin{cases} 1, & \mid f(x,y,t_i) - f(x,y,t_j)\mid > T \\ 0, &其他 \end{cases} dij={1,0,f(x,y,ti)f(x,y,tj)>T

T 是一个指定的阔值
在动态图像处理中, d i j ( x , y ) d_{ij}(x,y) dij(x,y) 中值为1的所有像素被认为是物体运动的结果。 这种方法只有在两幅图像都做了空间配准且在 T值设定的范围内光照相对恒定的情况下才是可用的。

累积差值图像(ADI)
通过将参考图像与序列中每幅后续图像进行比较形成的 。

10.6小结

本章主要介绍了图像分割相关的知识。我理解图像分割是对图像进行二值化,不同的二值化方式,代表了不同的分割方式,得到的分割效果自然不相同。关键在于程序如何实现这些对图片的数据变换。

你可能感兴趣的:(学习,计算机视觉,人工智能)