數字影象處理——中值濾波
阿新 • • 發佈:2018-11-21
原理:模板中心對準待處理畫素,對模板下的對應畫素進行灰度值排序,將中值賦給當前畫素
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)')
執行結果:
測試結果: