10

图像处理理论(二)——滤波基础, 形态学, 边缘检测

 2 years ago
source link: http://antkillerfarm.github.io/graphics/2016/06/30/graphics_2.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

二值化(续)

一维交叉熵值法

对于两个分布R和Q,定义其信息交叉熵D如下:

R={r1,r2,…,rn},Q={q1,q2,…,qn}D(Q,R)=∑k=1nqklog2qkrk

注:严格来说,这里定义的是相对熵(relative entropy),又称为KL散度(Kullback-Leibler divergence)或KL距离,是两个随机分布间距离的度量。从公式可以看出,KL距离和经典概率论中的二项分布有很密切的关系。

交叉熵的严格定义参见:

https://en.wikipedia.org/wiki/Cross_entropy

http://www.voidcn.com/blog/rtygbwwwerr/article/p-5047519.html

交叉熵(Cross-Entropy)

二值化过程实际上就是从分布R={r1,r2,…,rL}到分布Q={qA,qB}的过程。

D(t)=∑i=0tipilog2(piωA)+∑i=t+1L−1ipilog2(piωB)

其中,使得D最小的t即为最小交叉熵意义下的最优阈值。

二维Otsu法

Otsu法对噪音和目标大小十分敏感,它仅对类间方差为单峰的图像产生较好的分割效果。

当目标与背景的大小比例悬殊时,类间方差准则函数可能呈现双峰或多峰,此时效果不好,但是Otsu法是用时最少的。

二维Otsu法,在考虑像素点灰度级p的基础上,增加了对像素点邻域平均像素值s的考虑。

如果p比s大很多,说明像素的灰度值远远大于其临域的灰度均值,故而该点很可能是噪声点,反之如果p比s小很多,即该点的像素值比其临域均值小很多,则说明是一个边缘点。这两种点在后续的计算中,都要去除掉。

二维Otsu法的推导过程极为复杂,可参见:

http://blog.csdn.net/likezhaobin/article/details/6915755

灰度图像阈值化分割常见方法总结及VC实现

https://mp.weixin.qq.com/s/xCmagMDmcPRf3xAkOMT4rw

视觉与图像:阈值分割

https://mp.weixin.qq.com/s/Us7K5SBLltJIKzaJZQqltw

简单粗暴二分类分割方法Riddler-Calvard详解

https://mp.weixin.qq.com/s/gylWAKk4q0UNlhxIXrFHkQ

基于OpenCV的图像阈值分割处理

方框滤波(Box Filter)

g=f⊗h,h=α[111⋯1111⋯1⋯⋯⋯⋯⋯111⋯1],α={1SUM(h),normalize=true1,normalize=false

当normalize=true时的方框滤波,也被称为均值滤波(Mean filter)。

高斯滤波(Gauss filter)

高斯平滑滤波器对于抑制服从正态分布的噪声非常有效。

正态分布的概率密度函数为:

f(x)=12πσe−(x−μ)22σ2

其标准化后的概率密度函数为:

f(x)=12πe−x22

标准二维正态分布的概率密度函数为:

f(x,y)=12πe−x2+y22=f(x)f(y)

这个公式表明标准二维正态分布,可以分解为两个正交方向上的标准一维正态分布。也就是说标准二维正态分布不仅是中心对称,也是轴对称的。

正态分布的性质:

1.两个正态分布密度的乘积、卷积,还是正态分布。

2.正态分布的傅立叶变换、共轭分布,还是正态分布。

3.正态分布和其它具有相同均值、方差的概率分布相比,具有最大熵。

4.二项分布、泊松分布、χ2分布、t分布等在样本增大的情况下,都趋向于正态分布。

正态分布的相关内容可参考:

正态分布的前世今生

标准正态分布的最佳逼近符合杨辉三角,比如一个具有5个点的一维标准正态分布的最佳逼近为:

[14641]

同理,最常用的3*3高斯滤波h矩阵为:

[121]×[121]=[121242121]

其归一化形式为:

[0.06250.1250.06250.1250.250.1250.06250.1250.0625]

从效果来说,高斯滤波可产生类似毛玻璃的效果。

https://mp.weixin.qq.com/s/pJhfdLZxcKTI30xzbU2UoA

5分钟让你看懂高斯模糊算法

https://mp.weixin.qq.com/s/V8zMnADGHW_owfMPDtXvgQ

如何让8岁表妹学会正态分布

https://mp.weixin.qq.com/s/q252Lc0Wl5uNc8-tw9nlgw

高中就开始学的正态分布,原来如此重要

https://mp.weixin.qq.com/s/KYxUoaz4dlheFLz3ZinB2w

十种图像模糊算法的总结与实现

https://mp.weixin.qq.com/s/6PQt-XcxdYJwIItf2RNuBg

图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

https://mp.weixin.qq.com/s/6-JK8HA40Q0FQNUkB62Fug

一个简单方法识别毛玻璃、高斯模糊

二维高斯滤波

由标准二维正态分布的正交性,可知二维高斯滤波实际上可以分解为x、y两个方向上的一维高斯滤波。当然,这时候的kernel的尺寸不再是方形的,而是1*n的长条形。

这是一项有用的特性,因为这样只需要O(n×M×N)+O(m×M×N)次运算,而直接使用二维高斯滤波的计算量为O(m×n×M×N)。其中m,n,M,N分别是kernel和图像的长、宽。

∫−∞∞e−x2dx=π

中值滤波(Median filter)

中值滤波是一种典型的非线性滤波技术,对于斑点噪声(speckle noise)和椒盐噪声(salt-and-pepper noise)来说尤其有用,对滤除脉冲干扰及图像扫描噪声非常有效,也常用于保护边缘信息。

以3*3的滤波窗口为例,计算以点[i,j]为中心的像素中值步骤如下:

1)对U+(A,1)的9个像素点a0∼a8,按强度值大小排列像素点,得到有序数组A0∼A8

2)选择排序像素集的中间值A4作为点[i,j]的新值。

从效果来说,中值滤波可产生类似油彩画的效果。

上面这些滤波的效果如图所示:

膨胀与腐蚀(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=Gx2+Gy2(模2)模G=max(∣Gx∣,∣Gy∣)(模∞)

显然,梯度的模大的点,有很大可能是边缘点。常用的梯度算子有Roberts算子、Sobel算子和Prewitt算子。

Roberts算子

sx=[100−1],sy=[0−110]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=[−101−202−101],sy=[121000−1−2−1]G=Gx2+Gy2梯度方向梯度方向θ=arctan(GyGx)

Prewitt算子

sx=[−101−101−101],sy=[111000−1−1−1]

其他与Sobel算子相同。

拉普拉斯算子

拉普拉斯算子是一种二阶微分算子,因此,它一般用二阶微分符号∇2f来表示。其常用的相关核有:

h1=[0−10−14−10−10],h2=[−1−1−1−18−1−1−1−1]

从中可以看出,拉普拉斯算子的相关核有以下特点:

1.各元素中心对称。

2.中心元素为正值。(在有些课本中,中心元素也可为负值,但相关公式就需要做相应的符号上的修改。在本教程中,中心元素一律为正值。)

3.所有元素的和为0。

拉普拉斯算子和正态分布有很大关联,也有标准差σ的概念。一般来说,中心元素的值越大,σ越小。算子对图像的模糊(或锐化)程度与σ成正比。

对称梯度算子

sx=[−101−d0d−101],sy=[1d1000−1−d−1]

可以看出Sobel算子(d=2)和Prewitt算子(d=1),都是对称梯度算子的特例。d的常用值还有2。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK