數字圖像處理中濾波和卷積操作詳細說明


線性濾波與卷積的基本概念 

 線性濾波可以說是圖像處理最基本的方法,它可以允許我們對圖像進行處理,產生很多不同的效果。做法很簡單。首先,我們有一個二維的濾波器矩陣(有個高大上的名字叫卷積核)和一個要處理的二維圖像。然后,對於圖像的每一個像素點,計算它的鄰域像素和濾波器矩陣的對應元素的乘積,然后加起來,作為該像素位置的值。這樣就完成了濾波過程。

 對圖像和濾波矩陣進行逐個元素相乘再求和的操作就相當於將一個二維的函數移動到另一個二維函數的所有位置,這個操作就叫卷積或者協相關。卷積和協相關的差別是,卷積需要先對濾波矩陣進行180的翻轉,但如果矩陣是對稱的,那么兩者就沒有什么差別了。

 Correlation 和 Convolution可以說是圖像處理最基本的操作,但卻非常有用。這兩個操作有兩個非常關鍵的特點:它們是線性的,而且具有平移不變性shift-invariant。平移不變性指我們在圖像的每個位置都執行相同的操作。線性指這個操作是線性的,也就是我們用每個像素的鄰域的線性組合來代替這個像素。這兩個屬性使得這個操作非常簡單,因為線性操作是最簡單的,然后在所有地方都做同樣的操作就更簡單了。

      實際上,在信號處理領域,卷積有廣泛的意義,而且有其嚴格的數學定義,但在這里不關注這個。

      2D卷積需要4個嵌套循環4-double loop,所以它並不快,除非我們使用很小的卷積核。這里一般使用3x3或者5x5。而且,對於濾波器,也有一定的規則要求:

      1)濾波器的大小應該是奇數,這樣它才有一個中心,例如3x3,5x5或者7x7。有中心了,也有了半徑的稱呼,例如5x5大小的核的半徑就是2。

      2)濾波器矩陣所有的元素之和應該要等於1,這是為了保證濾波前后圖像的亮度保持不變。當然了,這不是硬性要求了。

      3)如果濾波器矩陣所有元素之和大於1,那么濾波后的圖像就會比原圖像更亮,反之,如果小於1,那么得到的圖像就會變暗。如果和為0,圖像不會變黑,但也會非常暗。

      4)對於濾波后的結構,可能會出現負數或者大於255的數值。對這種情況,我們將他們直接截斷到0和255之間即可。對於負數,也可以取絕對值。

邊界補充方法

上面的圖片說明了圖像的卷積操作,但是他也反映出一個問題,如上圖,原始圖片尺寸為7*7,卷積核的大小為3*3,當卷積核沿着圖片滑動后只能滑動出一個5*5的圖片出來,這就造成了卷積后的圖片和卷積前的圖片尺寸不一致,這顯然不是我們想要的結果,所以為了避免這種情況,需要先對原始圖片做邊界填充處理。

原始圖像:

這里寫圖片描述

 填充后的圖像:

常用卷積核及其意義

一個沒有任何作用的卷積核

卷積核: 
這里寫圖片描述 
將原像素中間像素值乘1,其余全部乘0,顯然像素值不會發生任何變化。

平滑均值濾波

卷積核: 
這里寫圖片描述 
該卷積核的作用在於取九個值的平均值代替中間像素值,所以起到的平滑的效果:。

高斯平滑

卷積核: 
這里寫圖片描述 
高斯平滑水平和垂直方向呈現高斯分布,更突出了中心點在像素平滑后的權重,相比於均值濾波而言,有着更好的平滑效果。 

圖像銳化 

卷積核: 
 
該卷積利用的其實是圖像中的邊緣信息有着比周圍像素更高的對比度,而經過卷積之后進一步增強了這種對比度,從而使圖像顯得棱角分明、畫面清晰,起到銳化圖像的效果。 

梯度Prewitt

梯度Prewitt卷積核與Soble卷積核的選定是類似的,都是對水平邊緣或垂直邊緣有比較好的檢測效果。

Soble邊緣檢測:

Soble與上述卷積核不同之處在於,Soble更強調了和邊緣相鄰的像素點對邊緣的影響。 

梯度Laplacian

卷積核: 
這里寫圖片描述

Laplacian也是一種銳化方法,同時也可以做邊緣檢測,而且邊緣檢測的應用中並不局限於水平方向或垂直方向,這是Laplacian與soble的區別。

卷積的計算

對圖像處理而言,存在兩大類的方法:空域處理和頻域處理!空域處理是指直接對原始的像素空間進行計算,頻率處理是指先對圖像變換到頻域,再做濾波等處理。 

空域計算-直接2D卷積 

直接2D卷積就是一開始說的那樣,對於圖像的每一個像素點,計算它的鄰域像素和濾波器矩陣的對應元素的乘積,然后加起來,作為該像素位置的值。

直接的實現也稱為暴力實現brute force,因為它嚴格按照定義來實現,沒有任何優化。當然了,在並行實現里面,它也是比較靈活的。另外,也存在一個優化版本,如果我們的kernel是separable可分的。

頻域計算-快速傅里葉變換FFT卷積

 這個快速實現得益於卷積定理:時域上的卷積等於頻域上的乘積。所以將我們的圖像和濾波器通過算法變換到頻域后,直接將他們相乘,然后再變換回時域(也就是圖像的空域)就可以了。

o表示矩陣逐元素相乘。那用什么方法將空域的圖像和濾波器變換到頻域了。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM