java 中值滤波_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。

828e7404ab5461791597f8a88a2d12b5.png

图中可以知道,当像素点太大或者太小时都不同意被选中,所以中值滤波对像素值比较大或者比较小的噪声滤除的效果比较好,如:椒盐噪声,对比较均匀的噪声滤除的效果一般,如:高斯噪声。

中值滤波的优点:

??中值滤波对于某些类型的随机噪声具有非常理想的降噪能力,对于线性平滑滤波而言,在处理的像素邻域之内包含噪声点时,噪声的存在总会或多或少地影响该点的像素值的计算,(对于高斯平滑影响程度同噪声点到中心点的距离成正比),但在中值滤波中噪声点则常常是直接被忽略掉的;而且同线性平滑滤波器相比,中值滤波在降噪同时引起的模糊效应较低。

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

在matlab中中值滤波的函数是medfilt2函数,示例1,中值滤波对椒盐噪声和高斯噪声的滤波效果展示。

1、采用的原图是:

5017124b6864b3b0dab2d32681d45cde.png

2、滤除椒盐噪声和高斯噪声的对比代码如下:

%% 滤波效果展示

clear; clc; close all;

rawimg = imread(‘..picture1.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(‘高斯噪声滤波效果‘);

添加噪声效果示例:

200e53a0b3d04f0af4736281b6656e05.png

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

dc9e6be7aa1115eac3fca61f008d9ec3.png

分析:可以很明显的看到,中值滤波对椒盐噪声的滤除效果比高斯噪声要好,边缘部分的细节有部分的保留。

3、选择不同的窗口对椒盐噪声的滤除效果对比示例代码:

%% 滤波窗口选择展示

clear; clc; close all;

rawimg = imread(‘..picture1.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滤波窗口效果‘);

添加椒盐噪声的效果示例:

7ee2bc09df4c4b99b4d0d81f94bf2174.png

分别选择[3,3]滤波窗口和[9,9]滤波窗口对噪声图像进行滤波效果对比示例:

46df09b1b46beb47f94aece03ce11e73.png

分析:可以很明显看到,当中值滤波的窗口选择越大的时候滤波的效果比较明显,但是窗口选择越大则对原图的边缘,细节部分滤除的部分就会越多,这个特性可以根据自己的需要进行调节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值