post on
02 Jan 2020
about
1812words
require
7min
CC BY 4.0
(除特别声明或转载文章外)
如果这篇博客帮助到你,可以请我喝一杯咖啡~
定义
分割可以看作将全图R划分为子区域R1,R2,…,Rn的过程(其中,P(R)为定义在集合R的点上的逻辑谓词):
- ⋃i=1nRi=R
- Ri是连通块
- ∀i=j,Ri∩Rj=∅
- ∀i=j,P(Ri∪Rj)为假
- P(Ri)为真
图像分割一般基于亮度值的两种基本特性(不连续性和相似性)。
间断检测
寻找间断最一般方法是对整幅图像使用模板(滤波器)进行检测。
点检测
如果作用算子后的图像∣R(x,y)∣>T,其中阈值T>0,则模板中心位置的点为所求的点。
线检测
线检测通常采用如下 4 种摸板:
-
水平:
-
+45°:
-
垂直:
-
−45°:
如果上述 4 种模板产生的响应分别为:R1,R2,R3,R4,并且∃i∀j=i∣Ri∣>∣Rj∣,则认为此点与模板i方向的线有关。
边缘检测
傅里叶变换无法刻画边缘,只知道高频成分,不知道高频在哪里。一种方法是局部傅里叶变换,衍生出小波变换(就是要构造一种高通滤波器):有震荡信号的位置(小范围震荡且积分为 0),可以刻画边缘。
主要使用一阶导数和二阶导数检测图像中的边缘。如下图所示,二阶导数会增大噪声,因此做边缘检测之前应该先抑制噪声(平滑)。
通常通过阈值确定边缘位置。
- 常用方法:
- Canny 边缘检测器:低错误率(边缘一个不落,一个不多);边缘点应该被很好定位(标记的边缘点与真实边缘中心之间的距离最小);单一边缘点响应(对于真实的边缘点,检测器仅返回一个点,即真实边缘周围的局部最大数应该最小)
- 算法步骤:用一个高斯滤波器平滑输入图像;计算梯度幅值图像和角度图像(Canny 为二阶梯度算子)M(x,y)=gx2+gy2,α(x,y)=arctangxgy;梯度幅值图像应用非最大抑制;用双阈值处理和连接分析来检测并连接边缘
- 双阈值法:高阈值TH和低阈值TL,比率为2:1或3:1
gNN(x,y)gNL(x,y)gNL(x,y)=gN(x,y)≥TH=gN(x,y)≥TL=gNL(x,y)−gNH(x,y)强边缘弱边缘(可能是边缘也可能不是)+强边缘弱边缘
- 用弱边缘补齐强边缘来获得完整边缘
- 在gNN(x,y)中定位下一个未被访问的边缘像素p
- 在gNL(x,y)中用 8 连通方法连接到p
- 如果gNN(x,y)中所有非零标记都已经访问过,则跳到(d),否则(a)
- 将gNL(x,y)中未被标记为有效边缘的像素的所有像素置零。
- 将gNL(x,y)中非零像素附加到gNN(x,y)
- 边缘连接:边界是封闭的边缘。边界检测=边缘检测+边缘连接
- 区域处理:用多边形拟合算法
- 边界检测
- 用 Hough(霍夫)变换进行边界检测:通过边界点找已知形状的目标。
- 直线检测问题:已知一组边缘点,找一条直线,使它通过最多边缘点。直线方程用极坐标表示ρ=xcosθ+ysinθ通过辅助角变换可得ρ=A0sin(θ+ϕ0)故可映射到ρOθ空间,其中每一个点是xOy平面上的通过同一个点的一条线。如果有一组位于由参数ρ0和θ0决定的直线上的边缘点,则每个边缘点对应了ρ,θ空间的一条正弦曲线。所有这些曲线必然会交于点(ρ0,θ0),因为这是它们共享的一条直线的参数。故对于边缘点的直线拟合问题,即找一个使边缘点确定的正弦曲线相交最多的点(ρ,θ)。