這篇也是老師留的乙個小作業,如何濾除椒鹽雜訊。首先椒鹽雜訊是很簡單的一種雜訊,椒雜訊(黑點)灰度為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中的最小灰度值 ...