1. 程式人生 > >濾波演算法、中值和均值濾波區別

濾波演算法、中值和均值濾波區別

濾波演算法: 
這裡所講的演算法都是針對影象空間的濾波演算法,其中模板,可以理解為影象形態學中的結構元素,是用來選取影象中的那些畫素點被用來操作的。空間濾波根據其功能劃分為平滑濾波和銳化濾波。平滑濾波:能減弱或者消除影象中高頻率分量,但不影響低頻率分量,在實際應用中可用來消除噪聲。銳化濾波:與平滑濾波相反,能減弱或者消除影象中低頻率分量,但不影響高頻率分量,可使影象反差增加,邊緣明顯。實際應用可用於增強被模糊的細節或者目標的邊緣。

空間增強濾波技術分類: 


1、線性平滑濾波

(1)方框濾波:用一個畫素的領域畫素值之和作為濾波結果,鄰域即模板所覆蓋的影象區域,此時模板的所有係數都為1. 


(2)鄰域平均:是特殊大方框濾波,用一個畫素的領域平均畫素值作為濾波結果,即a為第一種情。 


其中N(x,y)為模板歲覆蓋的影象的區域,n為模板的尺寸。

(3)加權平均:此時的模板係數不是1,而是具體的係數。一般認為距離模板中心的畫素應對濾波結果有較大的貢獻,所以可將接近模板中心的係數取得比模板周邊的係數。 


(4)高斯平均:是一種特殊的加權平均,只不過模板中的係數由高斯分佈來確定的。

2、線性銳化濾波

(1)拉普拉斯運算元 
拉普拉斯運算元是一種各向同性的二階微分運算元,利用微分系數來確定模板係數,然後再與影象進行卷積運算,從而實現銳化濾波。

根據拉普拉斯定義: 
 
兩個分別沿X和Y方向的二階偏導均可藉助差分計算: 
 
合併為: 


當模板為4-鄰域時 當模板為8-鄰域時

  

  以上兩種模板的係數之和為0,這是為了使經過模板運算的影象的均值不變。拉普拉斯運算元增強了影象中的灰度不連續區域,而減弱了影象中灰度值緩慢變化區域對比度,將這樣的結果疊加到原始影象中,就可以得到銳化後的額影象。

(2)高頻提升濾波 
影象的銳化效果可以通過疊加影象的微分結果得到,也可以通過減除影象積分結果得到。 
設原始影象為f(x,y),平滑後的影象為g(x,y):

非銳化掩模:h(x,y) = f(x,y)-g(x,y)

銳化影象:{ f(x,y)- g(x,y) } + f(x,y)

高頻提升濾波:把圖形乘以一個放大係數A,再減去平滑影象

 
可轉化為: 
 
當A=1時,為非銳化掩模; 
當A=2時,為非銳化掩模化。

3、非線性平滑濾波

(1)中值濾波:對模板下對應的畫素值進行升序排序,選取中間值作為結果。 
 
(2)與中值濾波類似的,還有最大值、最小值、中點濾波 
以上四種濾波也稱之為百分比濾波,百分比濾波基於模板的排序來工作,又叫作序統計濾波。

參考:https://blog.csdn.net/swj110119/article/details/51321109 

 

均值濾波及中值濾波的區別

均值濾波和和中值濾波都可以起到平滑影象,慮去噪聲的功能。均值濾波採用線性的方法,平均整個視窗範圍內的畫素值,均值濾波本身存在著固有的缺陷,即它不能很好地保護影象細節,在影象去噪的同時也破壞了影象的細節部分,從而使影象變得模糊,不能很好地去除噪聲點。均值濾波對高斯噪聲表現較好,對椒鹽噪聲表現較差。中值濾波採用非線性的方法,它在平滑脈衝噪聲方面非常有效,同時它可以保護影象尖銳的邊緣,選擇適當的點來替代汙染點的值,所以處理效果好,對椒鹽噪聲表現較好,對高斯噪聲表現較差。

填充問題

在對影象應用濾波器進行過濾時,邊界問題是一個需要處理的問題。一般來說,有3種處理的方法。

1. 不做邊界處理
不對影象的邊界作任何處理,在對影象進行濾波時,濾波器沒有作用到影象的四周,因此影象的四周沒有發生改變。

2. 填充0
對影象的邊界做擴充套件,在擴充套件邊界中填充0,對於邊長為2k+1的方形濾波器,擴充套件的邊界大小為k,若原來的影象為[m, n],則擴充套件後圖像變為[m+2k, n+2k]。進行濾波之後,影象會出現一條黑色的邊框。

3. 填充最近畫素值
擴充套件與 填充0 的擴充套件類似,只不過填充0的擴充套件是在擴充套件部分填充0,而這個方法是填充距離最近的畫素的值。

matlab程式碼實現

1.  均值濾波函式如下
該函式為spacelFilter,輸入為需要進行濾波的影象(L = 256,畫素值為0-255的灰度影象),方形濾波器(大小為2k+1,值型別為uint8),輸出為經過濾波器濾波之後的影象。該函式濾波採用填充最近畫素值的方法,結果影象不會出現黑邊。

function [image_out] = spacelFilter(image_in, filter)
% (線性)均值濾波函式
% 輸入為需要進行空間濾波的灰度影象,線性方形濾波器
% 輸出為經過濾波之後的影象
% 影象邊緣的填充為最近的畫素值,目的是消除填充0時會出現的黑框
% 濾波器的大小為 n * n, n = 2 * k + 1, k為整數
% 輸入影象大小為 m * n, 灰度影象,畫素值範圍為0-255,L = 256
[m, n] = size(image_in);
[mf, nf] = size(filter);
k = (mf - 1) / 2;
image2 = zeros(m+2*k, n+2*k, 'double');
image_out = zeros(m, n, 'uint8');
coeff = sum(filter(:));
% 填充部分
% 內部直接複製
for i = 1+k : m+k
    for j = 1+k : n+k
        image2(i, j) = image_in(i-k, j-k);
    end
end
% 填充上下邊緣
for i = 1 : k
    for j = 1 : n
        image2(i, j+k) = image_in(1, j);
        image2(m+k+i, j+k) = image_in(m, j);
    end
end
% 填充左右邊緣
for i = 1 : m
    for j = 1 : k
        image2(i+k, j) = image_in(i, 1);
        image2(i+k, n+k+j) = image_in(i, n);
    end
end
% 填充四個角
for i = 1 : k
    for j = 1 : k
        image2(i, j) = image_in(1, 1); %填充左上角
        image2(i, j+n+k) = image_in(1, n); %填充右上角
        image2(i+n+k, j) = image_in(m, 1); %填充左下角
        image2(i+n+k, j+n+k) = image_in(m, n); %填充右下角
    end
end
 
% 濾波部分
for i = 1+k : m+k
    for j = 1+k : n+k
        sub_image = image2(i-k:i+k, j-k:j+k);
        temp1 = double(filter') .* double(sub_image);
        temp2 = sum(temp1(:)) / coeff;
        image_out(i-k, j-k) = uint8(temp2);
    end
end
 
end
2. 中值濾波器
實現與均值濾波器類似,只不過在濾波部分的實現有所不同。
% 濾波部分
for i = 1+k : m+k
    for j = 1+k : n+k
        sub_image = image2(i-k:i+k, j-k:j+k);
        temp = median(sub_image(:));
        image_out(i-k, j-k) = uint8(temp);
    end
end
3.  測試程式碼如下
為了方便,我在spacelFilter函式中增加了中值濾波部分,增加了一個返回值,這樣spacelFilter函式的返回值為[image1,image2],image1為均值濾波影象,image2為中值濾波影象。

close all;
clear all;
clc;
 
image = imread('2.tif');
[m, n] = size(image);
%模板大小
k = 3;
myFilter = zeros(k, k, 'uint8');
 
for i = 1 : k
    for j = 1 : k
        myFilter(i, j) = 1;
    end
end
[image2, image3] = spacelFilter(image, myFilter);
image4 = medfilt2(image, [3 3]);
figure;
subplot(2, 2, 1), imshow(image), title('原影象');
subplot(2, 2, 2), imshow(image2), title('3*3均值濾波影象');
subplot(2, 2, 3), imshow(image3), title('3*3中值濾波影象');
subplot(2, 2, 4), imshow(image4), title('matlab自帶的中值濾波影象');
4. 程式碼執行結果如下(測試影象為被椒鹽噪聲汙染的影象):


原文:https://blog.csdn.net/cjsh_123456/article/details/79261271