自適應閾值中值濾波去除大密度椒鹽雜訊

2021-08-18 01:58:01 字數 2226 閱讀 1485

這篇也是老師留的乙個小作業,如何濾除椒鹽雜訊。首先椒鹽雜訊是很簡單的一種雜訊,椒雜訊(黑點)灰度為0,鹽雜訊(白點)灰度為255,去除椒鹽雜訊比較有效的方法是採用中值濾波,但是,在雜訊密度較大時,標準中值濾波(smf)的效果就不太好了,因為smf採用3*3模板,當雜訊密度較大時,所得的中值很可能還為雜訊,因此,有很多改進的中值濾波方法被提出。

1.對於非邊緣部分,採取自適應中值濾波方法,即先判斷當前畫素點灰度值是否為0/255,如果不是,則不進行處理,如果是,則進行smf,取得中值,再進行判斷中值是否為0/255,如果是,則增大模板,直至中值不為0/255;

2.對於邊緣部分,採取區域性均值的方法。

matlab程式如下:

%*******************************************

%———自適應中值濾波法去除大密度椒鹽雜訊———

% 主要思想

% 判斷當前畫素是否為雜訊點

% 1) no ->不處理

% 2) yes->自適應中值濾波

% 3) 邊緣處理

% 04/01/2018

%******************************************

close all;clc;

%讀取影象

%變為灰度圖

i=rgb2gray(i);

%加椒鹽雜訊

in=imnoise(i,'salt & pepper',0.7);

%求影象最大最小值

max=max(max(in));

min=min(min(in));

%建立一幅影象

size=size(in);

j=zeros(size);

%自適應中值濾波

for i=2:size(1)-1

for j=2:size(2)-1

if(in(i,j)min)

j(i,j)=i(i,j);

else

for k=1

a=in(i-k:i+k,j-k:j+k);

b=median(median(a));

if(bmin)

j(i,j)=b;

break;

endend

endend

end%邊緣處理

%第一行

for i=2:size(2)-1

a=round((in(1,i-1)+in(1,i)+in(1,i+1))/3);

j(1,i)=a;

end%最後一行

for i=2:size(2)-1

a=round((in(size(1),i-1)+in(size(1),i)+in(size(1),i+1))/3);

j(size(1),i)=a;

end%第一列

for i=2:size(1)-1

a=round((in(i-1,1)+in(i,1)+in(i+1,1))/3);

j(i,1)=a;

end%最後一列

for i=2:size(1)-1

a=round((in(i-1,size(2))+in(i,size(2))+in(i+1,size(2)))/3);

j(i,size(2))=a;

end%左上角

j(1,1)=round((j(1,2)+j(2,1))/2);

%左下角

j(size(1),1)=round((j(size(1),2)+j(size(1)-1,1))/2);

%右上角

j(1,size(2))=round((j(1,size(2)-1)+j(2,size(2)))/2);

%右下角

j(size(1),size(2))=round((j(size(1),size(2)-1)+j(size(1)-1,size(2)))/2);

j=uint8(j);

%figure,imshow(i);

%用評價函式評價smf處理結果

k=medfilt2(in);

snr_1=snr(i,k);

%用評價函式評價本演算法處理結果

snr_2=snr(i,j);

%顯示處理結果

subplot(121),imshow(in);

subplot(122),imshow(j);

自適應中值濾波

演算法 自適應中值濾波 layer a a1 zmed zmin a2 zmax zmed if a1 0 and a2 0,goto layer b else enlarge sxy,goto layer a if sxy exceeds the boundary,out zxy layer b ...

RAMF自適應中值濾波

clear all 清除所有變數 close all 關閉所有開啟的檔案 clc 清除命令列內容 img mat2gray rgb2gray imread lena.jpg 讀取檔案 m n size img img imnoise img,salt pepper 0.25 加入椒鹽雜訊 subpl...

自適應中值濾波及matlab實現

常規的中值濾波器,在雜訊的密度不是很大的情況下 根據經驗,雜訊的出現的概率小於0.2 效果不錯。但是當概率出現的概率較高時,常規的中值濾波處理後,仍然具有雜訊點,並丟失了細節和邊緣,效果不是很好。在模板視窗sxy定義的濾波器區域內定義如下變數 zmin min sxy 模板視窗sxy中的最小灰度值 ...