計算機視覺、圖像處理中常見的濾波操作

前言:計算機視覺是讓計算機理解圖像與視頻,本系列博客的目的在於加深自己在學習計算機視覺過程中對相關知識理解與回顧。其中很多內容參照:教材《ComputerVision: Algorithms and Applications》,教材Learning Image Processing with OpenCV》工具書《LearningOpenCV》,國外大學的課程《Computer Vision》和課程《ComputerVision》。

        圖像濾波既可以在實域進行,也可以在頻域進行。圖像濾波可以更改或者增強圖像。通過濾波,可以強調一些特徵或者去除圖像中一些不需要的部分。濾波是一個鄰域操作算子,利用給定像素周圍的像素的值決定此像素的最終的輸出值。(個人認爲《LearningImage Processing with OpenCV》中這一段寫的很好:Image filtering is a process to modify or enhance images.Emphasizing certain features or removing others in an image are examples ofimage filtering. Filtering is a neighborhood operation. The neighborhood is aset of pixels around a selected one. Image filtering determines the outputvalue of a certain pixel located at a position (x,y) by performing someoperations with the values of the pixels in its neighborhood.)

圖像濾波可以通過公式:


進行計算,其中K爲濾波器,在很多文獻中也稱之爲核(kernel)。常見的應用包括去噪、圖像增強、檢測邊緣、檢測角點、模板匹配等。其中用於平滑圖像的常見濾波算子包括(Code:https://github.com/opencv/opencv/blob/master/samples/cpp/tutorial_code/ImgProc/Smoothing.cpp):

1.      均值濾波(normalized box filter):用其像素點周圍像素的平均值代替元像素值,在濾除噪聲的同時也會濾掉圖像的邊緣信息。在OpenCV中,可以使用boxFilter和blur函數進行均值濾波。均值濾波的核爲:

 

2.      高斯濾波(Gaussian filter):高斯濾波爲最常用的濾波器,具有可分離性質,可以把二維高斯運算轉換爲一維高斯運算,其本質上爲一個低通濾波器。在OpenCV中可通過函數GaussianBlur進行操作。


3.      中值濾波(median filter):中值濾波用測試像素周圍鄰域像素集中的中值代替原像素。中值濾波去除椒鹽噪聲和斑塊噪聲時,效果非常明顯。在OpenCV中,可以使用函數medianBlur進行操作。

4.      雙邊濾波(bilateral filter):雙邊濾波在平滑圖像時能夠很好的保留邊緣特性,但是其運算速度比較慢。在OpenCV中,可以使用函數bilateralFilter進行操作。

 

除了平滑去噪,圖像銳化,求邊緣等也是常見的圖像濾波應用。這類濾波器常常使用一節或者二階差分(或微分,對於數字圖像而言,其爲離散信號,長用差分代替導數)覈算子對圖像進行濾波。一節差分常用於求取圖像邊緣。二階差分常用於圖像增強。常用的這類算子包括:

 

1.      Sobel operator:Sobel算子通過計算水平和垂直方向上的一節差分來進行計算。在OpenCV函數中,可通過使用Sobel函數進行計算。

    

2.      Laplacian operator:Laplacian算子通過計算二階差分(微分)來進行計算。在OpenCV函數中,可通過使用Laplacian函數進行計算。


除了上面列舉的較爲經典的濾波器(或者說是覈算子)外,在OpenCV中也可以自己定義自己的濾波器,然後使用filter2D函數進行運算。

 

對於以上在實域進行濾波的濾波器來說,邊界問題是一個不得不考慮的事情。通常有以下幾種辦法來進行處理:

   

(black)          (wrap around)          (copy edge)   (reflectacross edge)

 

除了在實域進行濾波之外,在頻域也可以進行濾波。傅里葉變換保存每個頻率對於的幅度和相位信息,其中幅度表示在某個特定的頻率信號有多少信號。相位則表示信號的空間信息,主要指方向信息。

 

在頻域中濾波主要就是設計相應的低通、高通或者帶通等濾波器以實現保留某些頻率,濾除其餘頻率的目的。此外在實域中的卷積運算可以放到頻域中做乘積運算,可以降低運算複雜度。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章