1. 程式人生 > >數字影象處理——中值濾波

數字影象處理——中值濾波

原理:模板中心對準待處理畫素,對模板下的對應畫素進行灰度值排序,將中值賦給當前畫素

Matlab程式碼:

clear,clc;
car = imread('sport car.pgm');
noise_car = imnoise(car,'salt & pepper',0.02);
[h,w] = size(car);
% zeros padding
new_car1 = zeros(h+2,w+2);
new_car1(2:h+1,2:w+1) = noise_car;
copy_car = double(new_car1);
% 滑動視窗,進行中值濾波
for i = 2:h+1
    for j = 2:w+1
        mask = copy_car(i-1:i+1,j-1:j+1);   % 獲得當前mask
        new_car1(i,j) = median(mask(:));
    end
end
new_car1 = new_car1(2:h+1,2:w+1);
new_car1 = uint8(new_car1);
new_car2 = medfilt2(noise_car,[3,3]);   % 呼叫medfilt2()函式

figure;
subplot(121),imshow(car),title('原影象');
subplot(122),imshow(noise_car),title('椒鹽噪聲影象');
figure;
subplot(121),imshow(new_car1),title('中值濾波影象');
subplot(122),imshow(new_car2),title('中值濾波影象(medfilt2)')

執行結果:

測試結果: