matlab圖像處理-中值濾波原理

中值濾波原理

  中值濾波本質上是一種統計排序濾波器。對於原圖像中某點(i,j),中值濾波以該點爲中心的鄰域內的所有像素的統計排序中值作爲(i,j)點的響應。

  中值不同於均值,是指排序隊列中位於中間位置的元素的值,例如,採用3x3中值濾波器,某點(i,j)的8個鄰域的一系列像素值爲12,18,25,11、118,17、35,29,23,統計排序結果爲11、12,17,18,23,25,29,35,118。排在中間位置(第5位)的23即作爲(i,j)點中值濾波的響應g(i,j)。顯然,中值濾波並非線性濾波器。

原理圖解:選定圖像中的某個像素,採用3*3的濾波窗口進行濾波,將周圍的8個像素連同選定的像素進行排序,然後選擇排好序的中心像素值代替原來的像素值。即將圖中的23代替原來的118。

在這裏插入圖片描述

圖中可以知道,當像素點太大或者太小時都不同意被選中,所以中值濾波對像素值比較大或者比較小的噪聲濾除的效果比較好,如:椒鹽噪聲,對比較均勻的噪聲濾除的效果一般,如:高斯噪聲。

中值濾波的優點:

  中值濾波對於某些類型的隨機噪聲具有非常理想的降噪能力,對於線性平滑濾波而言,在處理的像素鄰域之內包含噪聲點時,噪聲的存在總會或多或少地影響該點的像素值的計算,(對於高斯平滑影響程度同噪聲點到中心點的距離成正比),但在中值濾波中噪聲點則常常是直接被忽略掉的;而且同線性平滑濾波器相比,中值濾波在降噪同時引起的模糊效應較低。

使用MATLAB展示中值濾波效果:

在matlab中中值濾波的函數是medfilt2函數,示例1,中值濾波對椒鹽噪聲和高斯噪聲的濾波效果展示。

1、採用的原圖是:
在這裏插入圖片描述

2、濾除椒鹽噪聲和高斯噪聲的對比代碼如下:

%% 濾波效果展示
clear; clc; close all;
rawimg = imread('..\picture\1.jpg');
[~,~,index] = size(rawimg);
if index ~= 1
   rawimg = rgb2gray(rawimg);  % 轉化爲灰度圖 
end
% 顯示原圖
figure;imshow(rawimg);title('原圖');

% 添加噪聲
salt_img=imnoise(rawimg,'salt & pepper',0.04);     % 疊加密度爲0.04的椒鹽噪聲
guas_img = imnoise(rawimg,'gaussian',0.04);
figure;subplot(1,2,1);imshow(salt_img);title('添加椒鹽噪聲');
subplot(1,2,2);imshow(guas_img);title('添加高斯噪聲');

% 進行濾波
salt_fit = medfilt2(salt_img,[3 3]);   % 採用二維中值濾波函數對圖像濾波,濾波窗口是3*3
guas_fit = medfilt2(guas_img,[3,3]);  % 濾除高斯噪聲

% 濾波效果:
figure;subplot(1,2,1);imshow(salt_fit);title('椒鹽噪聲濾波效果');
subplot(1,2,2);imshow(guas_fit);title('高斯噪聲濾波效果');

添加噪聲效果示例:

在這裏插入圖片描述

使用中值濾波濾除的效果示例:

在這裏插入圖片描述

分析:可以很明顯的看到,中值濾波對椒鹽噪聲的濾除效果比高斯噪聲要好,邊緣部分的細節有部分的保留。

3、選擇不同的窗口對椒鹽噪聲的濾除效果對比示例代碼:

%% 濾波窗口選擇展示
clear; clc; close all;
rawimg = imread('..\picture\1.jpg');
[~,~,index] = size(rawimg);
if index ~= 1
   rawimg = rgb2gray(rawimg);  % 轉化爲灰度圖 
end

% 添加噪聲
salt_img=imnoise(rawimg,'salt & pepper',0.04);     % 疊加密度爲0.04的椒鹽噪聲
figure;subplot(1,2,1);imshow(rawimg);title('原圖');
subplot(1,2,2);imshow(salt_img);title('添加椒鹽噪聲');

% 進行濾波
min_fit = medfilt2(salt_img,[3 3]);   % 採用二維中值濾波函數對圖像濾波,濾波窗口是3*3
max_fit = medfilt2(salt_img,[9,9]);  % 濾除高斯噪聲

% 濾波效果:
figure;subplot(1,2,1);imshow(min_fit);title('3*3濾波窗口效果');
subplot(1,2,2);imshow(max_fit);title('9*9濾波窗口效果');

添加椒鹽噪聲的效果示例:

在這裏插入圖片描述

分別選擇[3,3]濾波窗口和[9,9]濾波窗口對噪聲圖像進行濾波效果對比示例:

在這裏插入圖片描述

分析:可以很明顯看到,當中值濾波的窗口選擇越大的時候濾波的效果比較明顯,但是窗口選擇越大則對原圖的邊緣,細節部分濾除的部分就會越多,這個特性可以根據自己的需要進行調節。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章