Menu

图像分割

定义

分割可以看作将全图$R$划分为子区域$R_1,R_2,\dots,R_n$的过程(其中,$P(R)$为定义在集合$R$的点上的逻辑谓词):

  1. $\bigcup_{i=1}^nR_i=R$
  2. $R_i$是连通块
  3. $\forall i \ne j,R_i\cap R_j=\emptyset$
  4. $\forall i \ne j,P(R_i\cup R_j)$为假
  5. $P(R_i)$为真

图像分割一般基于亮度值的两种基本特性(不连续性相似性)。

间断检测

寻找间断最一般方法是对整幅图像使用模板(滤波器)进行检测。

点检测

1 1 1
1 -8 1
1 1 1

如果作用算子后的图像$\vert R(x,y)\vert >T$,其中阈值$T>0$,则模板中心位置的点为所求的点。

线检测

线检测通常采用如下 4 种摸板:

  • 水平:

    -1 -1 -1
    2 2 2
    -1 -1 -1
  • $+45\degree$:

    2 -1 -1
    -1 2 -1
    -1 -1 2
  • 垂直:

    -1 2 -1
    -1 2 -1
    -1 2 -1
  • $-45\degree$:

    -1 -1 2
    -1 2 -1
    2 -1 -1

如果上述 4 种模板产生的响应分别为:$R_1,R_2,R_3,R_4$,并且$\exist i\forall j\ne i \vert R_i\vert > \vert R_j \vert$,则认为此点与模板$i$方向的线有关。

边缘检测

傅里叶变换无法刻画边缘,只知道高频成分,不知道高频在哪里。一种方法是局部傅里叶变换,衍生出小波变换(就是要构造一种高通滤波器):有震荡信号的位置(小范围震荡且积分为 0),可以刻画边缘。

三种边缘模型

主要使用一阶导数和二阶导数检测图像中的边缘。如下图所示,二阶导数会增大噪声,因此做边缘检测之前应该先抑制噪声(平滑)。

通常通过阈值确定边缘位置。

  • 常用方法:
    • Canny 边缘检测器:低错误率(边缘一个不落,一个不多);边缘点应该被很好定位(标记的边缘点与真实边缘中心之间的距离最小);单一边缘点响应(对于真实的边缘点,检测器仅返回一个点,即真实边缘周围的局部最大数应该最小)
    • 算法步骤:用一个高斯滤波器平滑输入图像;计算梯度幅值图像和角度图像(Canny 为二阶梯度算子)$M(x,y)=\sqrt{g_x^2+g_y^2},\quad\alpha(x,y)=\arctan \frac{g_y}{g_x}$;梯度幅值图像应用非最大抑制;用双阈值处理和连接分析来检测并连接边缘
    • 双阈值法:高阈值$T_H$和低阈值$T_L$,比率为$2:1$或$3:1$ \(\begin{aligned} g_{NN}(x,y) &= g_N(x,y)\geq T_H & \text{强边缘}\\ g_{NL}(x,y) &= g_N(x,y)\geq T_L & \text{弱边缘(可能是边缘也可能不是)+强边缘}\\ g_{NL}(x,y) &= g_{NL}(x,y)-g_{NH}(x,y) & \text{弱边缘} \end{aligned}\)
    • 用弱边缘补齐强边缘来获得完整边缘
    • 在$g_{NN}(x,y)$中定位下一个未被访问的边缘像素$p$
    • 在$g_{NL}(x,y)$中用 8 连通方法连接到$p$
    • 如果$g_{NN}(x,y)$中所有非零标记都已经访问过,则跳到(d),否则(a)
    • 将$g_{NL}(x,y)$中未被标记为有效边缘的像素的所有像素置零。
    • 将$g_{NL}(x,y)$中非零像素附加到$g_{NN}(x,y)$
    • 边缘连接:边界是封闭的边缘。$\text{边界检测}=\text{边缘检测}+\text{边缘连接}$
    • 区域处理:用多边形拟合算法
    • 边界检测
      • 用 Hough(霍夫)变换进行边界检测:通过边界点找已知形状的目标。
      • 直线检测问题:已知一组边缘点,找一条直线,使它通过最多边缘点。直线方程用极坐标表示$\rho=x\cos\theta+y\sin\theta$通过辅助角变换可得$\rho=A_0\sin(\theta+\phi_0)$故可映射到$\rho O\theta$空间,其中每一个点是$xOy$平面上的通过同一个点的一条线。如果有一组位于由参数$\rho_0$和$\theta_0$决定的直线上的边缘点,则每个边缘点对应了$\rho,\theta$空间的一条正弦曲线。所有这些曲线必然会交于点$(\rho_0,\theta_0)$,因为这是它们共享的一条直线的参数。故对于边缘点的直线拟合问题,即找一个使边缘点确定的正弦曲线相交最多的点$(\rho,\theta)$。