clear all; %清除所有變數
close all; %關閉所有開啟的檔案
clc; %清除命令列內容
img = mat2gray(rgb2gray(imread('lena.jpg'))); %讀取檔案
[m n] = size(img);
img = imnoise(img,'salt & pepper',0.25);%加入椒鹽雜訊
subplot(1,2,1);imshow(img),title('0.25椒鹽雜訊圖');
smax = 3;%設定最大模板半徑
img1 = zeros(m+2*smax,n+2*smax);%擴充套件影象邊界
img1(smax+1:smax+m,smax+1:smax+n) = img;
img1(1:smax,smax+1:smax+n) = img(1:smax,1:n);
img1(1:smax+m,smax+n+1:2*smax+n) = img1(1:smax+m,n+1:n+smax);
img1(smax+m+1:2*smax+m,smax+1:2*smax+n) = img1(m+1:smax+m,smax+1:2*smax+n);
img1(1:2*smax+m,1:smax) = img1(1:2*smax+m,smax+1:2*smax);
img2 = img1;
for i = smax+1:smax+m%ramf濾波
for j = smax+1:smax+n
r = 1;
while r <= smax
mask = img1(i-r:i+r,j-r:j+r);
imax = max(mask(:));
imin = min(mask(:));
imed = median(mask(:));
if imedimin
break
else
r = r+1;
continue
endend
if img1(i,j)==imax || img1(i,j)==imin
img2(i,j) = imed;
endend
endsubplot(1,2,2);imshow(img2(smax+1:smax+m,smax+1:smax+n)),title('濾波後圖象');
自適應中值濾波
演算法 自適應中值濾波 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 ...
自適應中值濾波及matlab實現
常規的中值濾波器,在雜訊的密度不是很大的情況下 根據經驗,雜訊的出現的概率小於0.2 效果不錯。但是當概率出現的概率較高時,常規的中值濾波處理後,仍然具有雜訊點,並丟失了細節和邊緣,效果不是很好。在模板視窗sxy定義的濾波器區域內定義如下變數 zmin min sxy 模板視窗sxy中的最小灰度值 ...
matlab練習程式(自適應中值濾波RAMF)
中值濾波是很經典的演算法了。今天看 又知道還有一種叫自適應中值濾波的演算法ramf。原 在這裡。ramf主要通過以下兩步來處理影象。1.首先確定最大的濾波半徑,然後用乙個合適的半徑r對影象進行濾波。計算當前濾波半徑畫素灰度的imin,imax,imed,然後判斷imed是否在 imin,imax 中...