图像处理理论(二)——形态学、边缘检测、图像金字塔
2016-08-29 10:05
211 查看
http://antkillerfarm.github.io/
具体方法如下:
1.膨胀。
g(i,j)=maxk,lf(i,j)
2.腐蚀。
g(i,j)=mink,lf(i,j)
这里仿照C语言的记法,将膨胀操作记为dilate(src),其中src表示源图像。同理,将腐蚀操作记为erode(src)。
效果如下:
膨胀和腐蚀不仅是基本的形态学操作,而且也是一种滤波器。它们和中值滤波一样,都是百分比(percentile)滤波的特例。当百分比为100%时,为最大值滤波,即膨胀操作;当百分比为0%时,为最小值滤波,即腐蚀操作;当百分比为50%时,即为中值滤波。
open(src)=dilate(erode(src))
开运算可以用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。
2.闭运算(Closing Operation)
close(src)=erode(dilate(src))
闭运算能够排除小型黑洞(黑色区域)。
3.形态学梯度(Morphological Gradient)
morphgrad(src)=dilate(src)−erode(src)
对二值图像进行这一操作可以将团块(blob)的边缘突出出来。我们可以用形态学梯度来保留物体的边缘轮廓。
4.顶帽(Top Hat)
tophat(src)=src−open(src)
顶帽运算往往用来分离比邻近点亮一些的斑块。当一幅图像具有大幅的背景的时候,而微小物品比较有规律的情况下,可以使用顶帽运算进行背景提取。
5.黑帽(Black Hat)
blackhat(src)=close(src)−src
黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域。
效果如下:
梯度向量求模的常见方法有:
G=|Gx|+|Gy|(模1)
G=G2x+G2y−−−−−−−√(模2)
G=max(|Gx|,|Gy|)(模∞)
显然,梯度的模大的点,有很大可能是边缘点。常用的梯度算子有Roberts算子、Sobel算子和Prewitt算子。
G(i,j)=|sx⊗f|+|sy⊗f|
=|f(i,j)−f(i+1,j+1)|+|f(i+1,j)−f(i,j−1)|
以下将sx⊗f简记做Gx。
G=G2x+G2y−−−−−−−√
梯度方向θ=arctan(GyGx)
其他与Sobel算子相同。
h1=⎡⎣⎢0−10−14−10−10⎤⎦⎥,h2=⎡⎣⎢−1−1−1−18−1−1−1−1⎤⎦⎥
从中可以看出,拉普拉斯算子的相关核有以下特点:
1.各元素中心对称。
2.中心元素为正值。(在有些课本中,中心元素也可为负值,但相关公式就需要做相应的符号上的修改。在本教程中,中心元素一律为正值。)
3.所有元素的和为0。
拉普拉斯算子和正态分布有很大关联,也有标准差σ的概念。一般来说,中心元素的值越大,σ越小。算子对图像的模糊(或锐化)程度与σ成正比。
可以看出Sobel算子(d=2)和Prewitt算子(d=1),都是对称梯度算子的特例。d的常用值还有2√。
对称梯度算子和波纹算子都属于边缘子空间基。
直线算子和拉普拉斯算子都属于直线子空间基。
|G(s,t)−G(x,y)|≤幅度阀值T
|θ(s,t)−θ(x,y)|≤角度阀值A
则可将像素(s,t)和像素(x,y)连接起来。
1.应用高斯滤波来平滑图像,目的是去除噪声。
2.找寻图像的强度梯度(intensity gradients)
3.应用非最大抑制(non-maximum suppression)技术来消除边误检(本来不是但检测出来是)。
4.应用双阈值的方法来决定可能的(潜在的)边界。
5.利用滞后技术来跟踪边界。
1、2的基本原理,上面已经讨论过了,这里不再赘述。
图中的数字代表了像素点的梯度强度,箭头方向代表了梯度方向。以第二排第三个像素点为例,由于梯度方向向上,则将这一点的强度(7)与其上下两个像素点的强度(5和4)比较,由于这一点强度最大,则保留。
参考:
http://www.cse.iitd.ernet.in/~pkalra/csl783/canny.pdf
方法:
首先对图像进行二值化处理(这里的二值化通常是边缘检测后的结果),然后给每个像素赋值为离它最近的边界像素点与其的距离(Manhattan距离或欧氏距离),以得到distance metric(距离矩阵),那么离边界越远的点越亮。
效果图:
这种效果通常叫做羽化效果。
常用的距离公式有:
ρ(r)=r22
ρ(r)=r
ρ(r)=2(1+r22−−−−−−√−1)
ρ(r)=C2(rC−log(1+rC)),C=1.3998
ρ(r)=C22[1−exp(−(rC)2)],C=2.9846
注:Prasanta Chandra Mahalanobis,1893~1972,印度统计学家,剑桥大学博士,印度统计研究所创始人。
印度的重点研究所一般叫做Institute of National Importance,共92所。Indian Statistical Institute是其中唯一一所和统计相关的研究所。教师255,学生375,这得是多精英的教育啊。其计算机科学专业排名印度第2。
p维空间的两点(两个p维向量x,y)的欧氏距离定义为:
dE(x,y)=(x1−y1)2+⋯+(xp−yp)2−−−−−−−−−−−−−−−−−−−−−−√=(x−y)T(x−y)−−−−−−−−−−−−√(公式1)
因此,x到原点的距离为:
∥x∥=dE(x,0)=(x1)2+⋯+(xp)2−−−−−−−−−−−−−−−√(公式2)
也就是:
x21+⋯+x2p=∥x∥2(公式3)
这实际上是个正球体的方程,也就是说观测数据x的各个分量对x至中心的欧氏距离贡献是相等的。然而在统计学中我们希望寻求这样一种距离,它的各个分量的作用程度是不同的。差别较大的分量应该接受较小的权重。
于是,公式3可变形为椭球体方程:
(x1s1)2+⋯+(xpsp)2=∥x∥2(公式4)
其中的si表示i分量的权重。
公式4进一步整理,并扩展到两个p维向量x,y,可得马氏距离定义:
dM(x,y)=(x1−y1s1)2+⋯+(xp−ypsp)2−−−−−−−−−−−−−−−−−−−−−−−√=(x−y)TD−1(x−y)−−−−−−−−−−−−−−−√(公式5)
其中,D=diag(s21,…,s2p)。
注意:这里p维向量是正交基,否则的话,D将不是主对角线矩阵,而是一个普通的协方差矩阵。显然如果D为单位矩阵的话,马氏距离就变成了欧氏距离。
Minkowski distance的定义:
d(x,y)=∑i=1n∣xi−yi∣λ−−−−−−−−−−√λ
显然,当λ=2时,该距离为欧氏距离。当λ=1时,也被称为CityBlock Distance或Manhattan Distance(曼哈顿距离)。
当像素(x,y)的梯度G大于阀值T时,在旧的像素值f上加上常数C,否则,保持原值。
其中∇2f表示f的二阶导数。
图像金字塔在机器视觉和图像压缩领域使用的比较多,比如OpenGL中的纹理处理。
图像金字塔有两种基本操作:
1.对图像向上采样:PyrUp——图像尺寸加倍。
2.对图像向下采样:PyrDown——图像尺寸减半。
这两种操作由于是针对图像尺寸而言的,因此,其方向和上图所示的金字塔的方向相反。
Gi≠PyrUp(PyrDown(Gi))
为了使PyrUp和PyrDown可逆,这里引入拉普拉斯金字塔的概念。其定义如下:
Li=Gi−PyrUp(Gi+1)=Gi−Up(Gi+1)⊗H5x5
其中UP操作是将源图像中位置为(x,y)的像素映射到目标图像的(2x+1,2y+1)位置,H5x5表示5x5的高斯核。
整个拉普拉斯金字塔运算过程可以通过下图来概括:
图中最左列和最右列都是高斯金字塔,中间一列是拉普拉斯金字塔。
膨胀与腐蚀(Dilation & Erosion)
腐蚀和膨胀是对白色部分(高亮部分)而言的,不是黑色部分。膨胀就是图像中的高亮部分进行膨胀,“领域扩张”,效果图拥有比原图更大的高亮区域。腐蚀就是原图中的高亮部分被腐蚀,“领域被蚕食”,效果图拥有比原图更小的高亮区域。具体方法如下:
1.膨胀。
g(i,j)=maxk,lf(i,j)
2.腐蚀。
g(i,j)=mink,lf(i,j)
这里仿照C语言的记法,将膨胀操作记为dilate(src),其中src表示源图像。同理,将腐蚀操作记为erode(src)。
效果如下:
膨胀和腐蚀不仅是基本的形态学操作,而且也是一种滤波器。它们和中值滤波一样,都是百分比(percentile)滤波的特例。当百分比为100%时,为最大值滤波,即膨胀操作;当百分比为0%时,为最小值滤波,即腐蚀操作;当百分比为50%时,即为中值滤波。
高级形态学操作
1.开运算(Opening Operation)open(src)=dilate(erode(src))
开运算可以用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。
2.闭运算(Closing Operation)
close(src)=erode(dilate(src))
闭运算能够排除小型黑洞(黑色区域)。
3.形态学梯度(Morphological Gradient)
morphgrad(src)=dilate(src)−erode(src)
对二值图像进行这一操作可以将团块(blob)的边缘突出出来。我们可以用形态学梯度来保留物体的边缘轮廓。
4.顶帽(Top Hat)
tophat(src)=src−open(src)
顶帽运算往往用来分离比邻近点亮一些的斑块。当一幅图像具有大幅的背景的时候,而微小物品比较有规律的情况下,可以使用顶帽运算进行背景提取。
5.黑帽(Black Hat)
blackhat(src)=close(src)−src
黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域。
效果如下:
边缘检测
梯度
从数学概念上来说,一维梯度G,实际上就是函数的斜率,也就是一阶导数。二维梯度G是个向量,一般用两个维度上的偏导数Gx和Gy来刻画,即G=[Gx,Gy]。显然,沿梯度向量方向,函数值增加最快。梯度向量求模的常见方法有:
G=|Gx|+|Gy|(模1)
G=G2x+G2y−−−−−−−√(模2)
G=max(|Gx|,|Gy|)(模∞)
显然,梯度的模大的点,有很大可能是边缘点。常用的梯度算子有Roberts算子、Sobel算子和Prewitt算子。
Roberts算子
sx=[100−1],sy=[01−10]G(i,j)=|sx⊗f|+|sy⊗f|
=|f(i,j)−f(i+1,j+1)|+|f(i+1,j)−f(i,j−1)|
以下将sx⊗f简记做Gx。
Sobel算子
sx=⎡⎣⎢−1−2−1000121⎤⎦⎥,sy=⎡⎣⎢10−120−210−1⎤⎦⎥G=G2x+G2y−−−−−−−√
梯度方向θ=arctan(GyGx)
Prewitt算子
sx=⎡⎣⎢−1−1−1000111⎤⎦⎥,sy=⎡⎣⎢10−110−110−1⎤⎦⎥其他与Sobel算子相同。
拉普拉斯算子
拉普拉斯算子是一种二阶微分算子,因此,它一般用二阶微分符号∇2f来表示。其常用的相关核有:h1=⎡⎣⎢0−10−14−10−10⎤⎦⎥,h2=⎡⎣⎢−1−1−1−18−1−1−1−1⎤⎦⎥
从中可以看出,拉普拉斯算子的相关核有以下特点:
1.各元素中心对称。
2.中心元素为正值。(在有些课本中,中心元素也可为负值,但相关公式就需要做相应的符号上的修改。在本教程中,中心元素一律为正值。)
3.所有元素的和为0。
拉普拉斯算子和正态分布有很大关联,也有标准差σ的概念。一般来说,中心元素的值越大,σ越小。算子对图像的模糊(或锐化)程度与σ成正比。
对称梯度算子
sx=⎡⎣⎢−1−d−10001d1⎤⎦⎥,sy=⎡⎣⎢10−1d0−d10−1⎤⎦⎥可以看出Sobel算子(d=2)和Prewitt算子(d=1),都是对称梯度算子的特例。d的常用值还有2√。
波纹算子
sx=⎡⎣⎢01−d−101d−10⎤⎦⎥,sy=⎡⎣⎢d−10−10101−d⎤⎦⎥对称梯度算子和波纹算子都属于边缘子空间基。
直线算子
sx=⎡⎣⎢0−101010−10⎤⎦⎥,sy=⎡⎣⎢−10100010−1⎤⎦⎥直线算子和拉普拉斯算子都属于直线子空间基。
边界闭合
如果像素(s,t)在像素(x,y)的领域,且满足以下条件:|G(s,t)−G(x,y)|≤幅度阀值T
|θ(s,t)−θ(x,y)|≤角度阀值A
则可将像素(s,t)和像素(x,y)连接起来。
canny算法
Canny边缘检测算子是John F.Canny于1986年开发出来的一个多级边缘检测算法。1.应用高斯滤波来平滑图像,目的是去除噪声。
2.找寻图像的强度梯度(intensity gradients)
3.应用非最大抑制(non-maximum suppression)技术来消除边误检(本来不是但检测出来是)。
4.应用双阈值的方法来决定可能的(潜在的)边界。
5.利用滞后技术来跟踪边界。
1、2的基本原理,上面已经讨论过了,这里不再赘述。
非最大抑制
图中的数字代表了像素点的梯度强度,箭头方向代表了梯度方向。以第二排第三个像素点为例,由于梯度方向向上,则将这一点的强度(7)与其上下两个像素点的强度(5和4)比较,由于这一点强度最大,则保留。
双阈值(Double Thresholding)
设定一个阈值上界和阈值下界,图像中的像素点如果大于阈值上界,则认为必然是边界(称为强边界,strong edge),小于阈值下界则认为必然不是边界,两者之间的,被认为是候选项(称为弱边界,weak edge)。滞后的边界跟踪
和强边界相连的弱边界认为是边界,其他的弱边界则被抑制。参考:
http://www.cse.iitd.ernet.in/~pkalra/csl783/canny.pdf
距离变换
距离变换(distance transform)是一种将二值图像灰度化的变换。方法:
首先对图像进行二值化处理(这里的二值化通常是边缘检测后的结果),然后给每个像素赋值为离它最近的边界像素点与其的距离(Manhattan距离或欧氏距离),以得到distance metric(距离矩阵),那么离边界越远的点越亮。
效果图:
这种效果通常叫做羽化效果。
常用的距离公式有:
ρ(r)=r22
ρ(r)=r
ρ(r)=2(1+r22−−−−−−√−1)
ρ(r)=C2(rC−log(1+rC)),C=1.3998
ρ(r)=C22[1−exp(−(rC)2)],C=2.9846
马氏距离
Mahalanobis Distance是印度现代统计学之父Prasanta Chandra Mahalanobis于1936年提出的概念。注:Prasanta Chandra Mahalanobis,1893~1972,印度统计学家,剑桥大学博士,印度统计研究所创始人。
印度的重点研究所一般叫做Institute of National Importance,共92所。Indian Statistical Institute是其中唯一一所和统计相关的研究所。教师255,学生375,这得是多精英的教育啊。其计算机科学专业排名印度第2。
p维空间的两点(两个p维向量x,y)的欧氏距离定义为:
dE(x,y)=(x1−y1)2+⋯+(xp−yp)2−−−−−−−−−−−−−−−−−−−−−−√=(x−y)T(x−y)−−−−−−−−−−−−√(公式1)
因此,x到原点的距离为:
∥x∥=dE(x,0)=(x1)2+⋯+(xp)2−−−−−−−−−−−−−−−√(公式2)
也就是:
x21+⋯+x2p=∥x∥2(公式3)
这实际上是个正球体的方程,也就是说观测数据x的各个分量对x至中心的欧氏距离贡献是相等的。然而在统计学中我们希望寻求这样一种距离,它的各个分量的作用程度是不同的。差别较大的分量应该接受较小的权重。
于是,公式3可变形为椭球体方程:
(x1s1)2+⋯+(xpsp)2=∥x∥2(公式4)
其中的si表示i分量的权重。
公式4进一步整理,并扩展到两个p维向量x,y,可得马氏距离定义:
dM(x,y)=(x1−y1s1)2+⋯+(xp−ypsp)2−−−−−−−−−−−−−−−−−−−−−−−√=(x−y)TD−1(x−y)−−−−−−−−−−−−−−−√(公式5)
其中,D=diag(s21,…,s2p)。
注意:这里p维向量是正交基,否则的话,D将不是主对角线矩阵,而是一个普通的协方差矩阵。显然如果D为单位矩阵的话,马氏距离就变成了欧氏距离。
闵可夫斯基距离
Hermann Minkowski(1864-1909),德国数学家,哥廷根大学数学教授,爱因斯坦的老师。Minkowski distance的定义:
d(x,y)=∑i=1n∣xi−yi∣λ−−−−−−−−−−√λ
显然,当λ=2时,该距离为欧氏距离。当λ=1时,也被称为CityBlock Distance或Manhattan Distance(曼哈顿距离)。
锐化
锐化是与模糊相反的图像操作,它的主要思想是增大图像色彩(或灰度)的对比度,简单的说就是:让亮的更亮,让暗的更暗。因此,锐化操作和边缘检测有很大的共同点,常用的锐化算法有梯度锐化和拉普拉斯锐化。梯度锐化
g={f+C,f,G>TG≤T当像素(x,y)的梯度G大于阀值T时,在旧的像素值f上加上常数C,否则,保持原值。
拉普拉斯锐化
g=f+∇2f其中∇2f表示f的二阶导数。
图像金字塔
一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。图像金字塔在机器视觉和图像压缩领域使用的比较多,比如OpenGL中的纹理处理。
图像金字塔有两种基本操作:
1.对图像向上采样:PyrUp——图像尺寸加倍。
2.对图像向下采样:PyrDown——图像尺寸减半。
这两种操作由于是针对图像尺寸而言的,因此,其方向和上图所示的金字塔的方向相反。
高斯金字塔
高斯金字塔是通过高斯平滑和亚采样获得一些列下采样图像,也就是说第K层高斯金字塔通过平滑、亚采样就可以获得K+1层高斯图像,高斯金字塔包含了一系列低通滤波器,其截至频率从上一层到下一层是以因子2逐渐增加,所以高斯金字塔可以跨越很大的频率范围。拉普拉斯金字塔
一般来说,由于PyrDown的过程会损失部分图像信息,因此通常情况下:Gi≠PyrUp(PyrDown(Gi))
为了使PyrUp和PyrDown可逆,这里引入拉普拉斯金字塔的概念。其定义如下:
Li=Gi−PyrUp(Gi+1)=Gi−Up(Gi+1)⊗H5x5
其中UP操作是将源图像中位置为(x,y)的像素映射到目标图像的(2x+1,2y+1)位置,H5x5表示5x5的高斯核。
整个拉普拉斯金字塔运算过程可以通过下图来概括:
图中最左列和最右列都是高斯金字塔,中间一列是拉普拉斯金字塔。
Steerable金字塔
将拉普拉斯金字塔中的高斯滤波函数,换成Steerable滤波函数即可。相关文章推荐
- opencv 图像处理 形态学操作 腐蚀 膨胀 开闭运算 阈值二值化 图像卷积 图像金字塔 Sobel算子 Laplacian 算子 candy边缘检测 霍夫变换 直方图
- 图像处理中各种边缘检测的微分算子
- 数字图像处理 边缘检测
- 图像处理(十)边缘检测(二)
- dsp图像处理Prewitt算子边缘检测
- 数字图像处理-边缘检测-Sobel算子及cvSobel
- 本文介绍一个 iPhone 图像处理库,提供了边缘检测、直方图均衡等功能。
- Android图像处理系统1.4图像的锐化-边缘检测
- 图像处理——边缘检测(1)
- 图像处理常用算法GPU实现二:基于微分的边缘检测
- opencv图像边缘检测使用,先做平滑处理在进行边缘检测
- 【数字图像处理】Canny边缘检测详解及编程实现
- 图像处理之应用卷积– 轧花与边缘检测
- 【图像处理】图像边缘检测
- [转载]图像处理中各种边缘检测的微分算子简单比较
- 【数字图像处理】Canny边缘检测详解及编程实现
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)
- c#图像处理-边缘检测
- 图像处理常用边缘检测算子总结
- 图像处理常用边缘检测算子总结