中值濾波器

中值濾波器

中值濾波是一種非線性數字濾波器技術,經常用於去除圖像或者其它信號中的噪聲。這個設計思想就是檢查輸入信號中的採樣並判斷它是否代表了信號,使用奇數個採樣組成的觀察窗實現這項功能。觀察視窗中的數值進行排序,位於觀察窗中間的中值作為輸出。然後,丟棄最早的值,取得新的採樣,重複上面的計算過程。

基本介紹

  • 中文名:中值濾波器
  • 外文名:Median filter
  • 領域:信號處理
概述,例子,算法描述,邊界問題,二維中值過濾偽代碼,算法實現問題,邊緣保存屬性,在GIMP中進行中值濾波,

概述

在圖像處理中,在進行如邊緣檢測這樣的進一步處理之前,通常需要首先進行一定程度的降噪。中值濾波是圖像處理中的一個常用步驟,它對於斑點噪聲(speckle noise)和椒鹽噪聲(salt-and-pepper noise)來說尤其有用。保存邊緣的特性使它在不希望出現邊緣模糊的場合也很有用。

例子

為了演示中值濾波器的工作過程,我們給下面的數組加上觀察窗3,重複邊界的數值:
x=[28063]。
所以,中值濾波輸出信號y將是:
y[1]=Median[2280]=2,
y[2]=Median[2806]=Median[2680]=6,
y[3]=Median[8063]=Median[3680]=6,
y[4]=Median[633]=Median[336]=3,
於是y=[2663],其中y是x的中值濾波輸出。

算法描述

中值濾波器的主要思想是通過入口來遍歷信號入口,用鄰居入口的中值替換每個入口。鄰居的模式被稱為“視窗”,它通過入口滑動,覆蓋整個信號。對於一維信號,最明顯的視窗只是前後幾項,而2D(或更高維)信號(如圖像)則可能有更複雜的視窗模式(如“盒子”或“十字”模式)。請注意,如果視窗中有奇數個條目,則中位數很容易定義:在視窗中的所有條目都按數字排序之後,這只是中間值。對於偶數的條目,有不止一個可能的中位數。

邊界問題

請注意,在上面的例子中,因為第一個值之前沒有條目,所以第一個值和最後一個值一樣重複,以獲得足夠的條目來填充視窗。這是在信號邊界處理丟失的視窗條目的一種方法,但是還有其他的方案具有不同的屬性,在特定情況下可能是優選的:
  • 避免處理邊界,之後有或沒有裁剪信號或圖像邊界,
  • 從信號中的其他地方獲取條目。以圖像為例,可以選擇來自遠水平或垂直邊界的條目,
  • 縮小邊界附近的視窗,使每個視窗都滿了。

二維中值過濾偽代碼

簡單的二維中值濾波算法代碼可能如下所示:
allocateoutput PixelValue[imagewidth][imageheight]
allocatewindow[windowwidth*windowheight]
edgex:=(windowwidth/2)roundeddown
edgey:=(windowheight/2)roundeddown
forxfromedgextoimagewidth-edgex
foryfromedgeytoimageheight-edgey
i=0
forfxfrom0towindowwidth
forfyfrom0towindowheight
window[i]:=input PixelValue[x+fx-edgex][y+fy-edgey]
i:=i+1
sortentriesinwindow[]
output PixelValue[x][y]:=window[windowwidth*windowheight/2]
請注意,這個算法:
  • 僅處理一個顏色通道,
  • 採取“不處理邊界”的方法(參見上面有關邊界問題的討論)。

算法實現問題

通常,到目前為止,大部分的計算工作和時間花費在計算每個視窗的中值上。由於濾波器必須處理信號中的每個條目,對於像圖像這樣的大信號,這箇中值計算的效率是確定算法運行速度的關鍵因素。上面描述的天真的實現將視窗中的每個條目進行排序以找到中間值;然而,由於只需要列表中的中間值,所以選擇算法可以更有效。此外,某些類型的信號(通常是圖像的情況)使用整數表示:在這些情況下,直方圖因為從視窗到視窗更新直方圖是簡單的,並且找到直方圖的中值並不特別繁瑣,所以中值可以更有效得多。

邊緣保存屬性

中值濾波是一種平滑技術,與線性高斯濾波一樣。所有的平滑技術都能有效去除信號光滑區域或平滑區域的噪聲,但對邊緣產生不利影響。通常,在減少信號中的噪聲的同時,保持邊緣是重要的。例如,邊緣對於圖像的視覺外觀是至關重要的。對於(高斯)噪聲的小至中等水平,中值濾波器在消除噪聲方面明顯好於高斯模糊,同時為給定的固定視窗大小保留邊緣。然而,對於高噪聲,其性能並不比高斯模糊好,而對於散斑噪聲和椒鹽噪聲(衝動噪音),這是特別有效的。因此,中值濾波在數字圖像處理中被廣泛使用。

在GIMP中進行中值濾波

在GIMP2.8.2中操作如下:
濾鏡->增強->去除斑點。
不要勾選適應和遞歸,設定黑色水平為-1,白色水平為256。根據需要調節半徑。半徑越大,細節越少。

相關詞條

熱門詞條

聯絡我們