RAMF自適應中值濾波

2021-07-25 11:50:57 字數 1167 閱讀 8953

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 中...