数字图像处理总结2
卷积运算和图像滤波
文末有代码链接。
卷积运算
对图像的操纵分为点操作,代数操作,几何操作和领域操作。
卷积运算就是领域操作中的一个,而提到卷积,就不得不说他的姊妹correlation。
话不多说,先看公式:
convolution : f ∗ w = ∑ ( a , b ) ∈ w f ( x − a , y − b ) w ( a , b ) f*w=\sum_{(a,b)\in w}f(x-a,y-b)w(a,b) f∗w=∑(a,b)∈wf(x−a,y−b)w(a,b)
correlation : f ∘ w = ∑ ( a , b ) ∈ w f ( x + a , y + b ) w ( a , b ) f \circ w=\sum _{(a, b) \in w}f(x+a, y+b)w(a, b) f∘w=∑(a,b)∈wf(x+a,y+b)w(a,b)
f是原图,k是kernel。a, b是kernel中的点坐标,默认kernel的中心坐标为(0,0)。
可以看出两者的区别主要是原图的坐标变换是+ or -
而且因为convolution是 - ,在代码中具体运算时,需要将kernel旋转 18 0 ∘ 180^\circ 180∘。
一句话描述卷积的过程:对一个以某点为中心,kernel大小的原图区域,对应乘上旋转过的kernel的元素并求和,结果来作为kernel中心那个像素的新的灰度值,对图中所有点作该操作,就是一个卷积。
图像滤波
图像滤波就是用不同的kernel进行卷积操作。
根据kernel的不同,又分为很多目的不同的操作,如边缘检测、图像平滑等。
下面就举几个常见的例子:
Edge Detection
典型算子:
Roberts:
∣ − 1 0 0 1 ∣ \left | \begin{matrix} -1 & 0 \\ 0 & 1 \\ \end{matrix} \right | ∣∣∣∣<