1. 程式人生 > >關於數字影象處理中不同的低通濾波器的區別以及cut-off frequency 對於影象的影響

關於數字影象處理中不同的低通濾波器的區別以及cut-off frequency 對於影象的影響

最近做課設的時候遇到了低通濾波器的問題。翻閱了下書籍,得到了一些收穫,想來分享下。如有不對的地方,請大神斧正。

首先要清楚的概念是,影象(假設是灰度圖,便於描述,或者是單個channel的圖)在時域和頻域中的分別是什麼含義。在時域中,很顯然,對應的是每個畫素,每個畫素上的點的灰度值。 如果該影象用matlab顯示的話,(x,y)代表圖中的每個畫素,每個畫素對應Z的值就是該影象在這個畫素點的灰度。那麼在頻域中,也就是如果我對這個矩陣進行傅立葉變換,我們得到的該影象在頻域中的表達。 影象在頻域中,是該影象的顏色變化的劇烈程度。低頻部分表示那些顏色變化不是很劇烈的部分,而高頻部分則是那些顏色變化劇烈的部分。舉個例子,如果我們有一副海洋和沙灘的圖,沙灘上可能有些人以及其他的東西。 那麼,我們可以發現,影象中,低頻部分所關聯的就是顏色變化平滑的,或者說不太變化的,如大片的沙灘以及海洋。而高頻部分則關聯的是顏色變化劇烈的部分,如海洋和沙灘交接的部分,或者其他顏色變化劇烈的東西,一般高頻部分所關聯的是兩個顏色的相交接的部分,而這一般都發生在兩個不同物體的輪廓上,所以,如果我們只取特定高頻的部分,那我們就能得到物體的輪廓了(本文主要講解低通濾波器,所以涉及的基本都是低頻部分,高頻部分會在其他博文中闡述)。

好了,現在我們對於影象的傅立葉變化有了一個大概的認識。那麼我們來說說為什麼在影象處理時,要使用低通濾波器呢。出於某些目的,我們希望我們的影象不那麼清晰,即去除噪點或者不要有那麼多的細節(比如,美圖秀秀中磨皮。。。 我們不希望面板上的毛孔都出現在影象上,但現在的手機畫素都很高,所以如果不做處理,那麼臉上就會有很多細節都展現在圖片上,如痘印啊,粗大的毛孔等)。那麼這個時候,我們就需要使用低通濾波器了,即把那些高頻的細節都過濾掉,留下的就只有平滑的面板了。

接下來,在來看看低通濾波器的種類。低通濾波器的種類有很多,比較常接觸的大概是以下幾類:

(1)理想的低通濾波器

   以上是二維中,低通濾波器的公式。其實很好理解,一維中的低通濾波器就是一個視窗函式,在D0的時候,直接從1變成0. 那麼二維中的低通濾波器就是講一維中的低通濾波器繞著y軸旋轉一週,所得到的圓柱就是二維中低通濾波器的樣子。而繞的點一般是影象的中心(P,Q代表了影象的橫縱畫素點的個數)。而D0 代表了截止頻率。matlab中自己構造理想低通濾波器的話,程式碼應該如下所示:

lowPF = zeros(p,Q);

for i = 1:P
    for j =1:Q
        if((i-P/2)^2+(j-Q/2)^2 <=D0^2)
            lowPF(i,j) = 1;
        end
            
    end
end

figure;
title('low_pass_filter_cf=D0');
imshow(lowPF,[]);
而得到的影象應該是這樣的:


由於理想濾波器的傅立葉反變換的是二維的sinc函式,即將一維的sinc函式繞著y軸旋轉一週(就像水波浪漾開那樣),所以當用這種濾波器處理影象時,在邊緣變化劇烈的地方會產生ringing。

然而正如它的名字一樣,它是理想低通濾波器,在實際使用中,我們不會使用這種濾波器,原因有二:首先是在實際上來說,不可能產生瞬時的階躍,即在D0位置,我們不可能能馬上從1跳到0.二是因為理想濾波器所得到的圖片ringing現象很嚴重(後文會有詳細說明)

(2)Butterworth 低通濾波器


以上是Butterworth濾波器的公式,相比於理想濾波器,它的階躍部分更加圓滑,而冪係數n可以改變濾波器的形狀,n越大,則該濾波器越接近於理想濾波器。以下為該濾波器的側面圖,以及用影象顯示的圖。


上圖為n取1-4所得到的butterworth函式傅立葉反變換所得到的函式的側檢視,我們可以看到n越小,暈越少。

與理想濾波器相比,Butterworth函式的傅立葉反變換所產生的暈比理想濾波器更平滑,所以該濾波器形成的圖片的ringing更少,且容易實現。以下是該濾波器的matlab程式碼

lowPF = zeros(P,Q);
n=1;

for i = 1:P
    for j =1:Q
      
            lowPF(i,j) = 1/(1+((i-P/2)^2+(j-Q/2)^2)^0.5/D0)^(2*n);
  
            
    end
end

figure;

imshow(lowPF,[]);


(3).高斯低通濾波器


以上為高斯低通濾波器的公式,我們可以看到因為高斯濾波器是e的冪函式,所以該濾波器的傅立葉反變換應該也是e的冪函式,所以不會有暈的現象,相比以上兩種濾波器,ringing現象幾乎沒有。以下為高斯濾波器的側檢視以及影象顯示的圖

高斯濾波器的matlab程式碼

lowPF3 = zeros(P,Q);

for i = 1:P
    for j =1:Q
        lowPF3(i,j) = exp(-((i-P/2)^2+(j-Q/2)^2)/(2*D0^2));
            
    end
end


(4)濾波器截止頻率對於影象的影響

就像我們前面所說的,高頻的部分是影象的細節,那麼如果截止頻率越大,則保留的細節越多,相反截止頻率越小,那麼就會有更多的細節被過濾了,所以影象會更模糊,且ringing現象會更明顯。

以下上圖分別為截止頻率為460、160、60、30得到的圖


可以發現當截止頻率變為160時,字母a周圍的暈變得十分明顯,當截止頻率變為30時,影象整個變得十分模糊。

(5)相同截止頻率下選擇不同濾波器的效果


以上我們可以看到相同的截止頻率下,理想濾波器的ringing效果十分明顯,Butterworth的有點朦朧,但是ringing效果比較弱,而高斯濾波器效果很不錯。