自适应中值滤波及MATLAB实现
2016-12-29 22:45
996 查看
自适应中值滤波器是以m*n的矩形窗口Sxy定义的滤波器区域内图像的统计特性为基础的,可以处理具有更大概率的脉冲噪声如椒盐噪声,在平滑非脉冲噪声时能保留细节。
在Sxy定义的滤波器区域内定义如下变量:
Zmin=Sxy中的最小灰度值
Zmax=Sxy中的最大灰度值
Zmed=Sxy中的灰度值的中值
Zxy=坐标(x,y)处的灰度值
Smax=Sxy允许的最大尺寸
自适应中值滤波算法以两个进程工作,表示为进程A和进程B,如下所示:
进程A:
A1=Zmed-Zmin
A2=Zmed-Zmax
如果A1>0且A2<0,则转至进程B
否则增大窗口尺寸
如果窗口尺寸<=Smax,则重复进程A
否则输出Zmed
进程B:
B1=Zxy-Zmin
B2=Zxy-Zmax
如果B1>0且B2<0,则输出Zxy
否则输出Zmed
其matlab实现如下,并与中值滤波作比较。
处理效果如下图
在Sxy定义的滤波器区域内定义如下变量:
Zmin=Sxy中的最小灰度值
Zmax=Sxy中的最大灰度值
Zmed=Sxy中的灰度值的中值
Zxy=坐标(x,y)处的灰度值
Smax=Sxy允许的最大尺寸
自适应中值滤波算法以两个进程工作,表示为进程A和进程B,如下所示:
进程A:
A1=Zmed-Zmin
A2=Zmed-Zmax
如果A1>0且A2<0,则转至进程B
否则增大窗口尺寸
如果窗口尺寸<=Smax,则重复进程A
否则输出Zmed
进程B:
B1=Zxy-Zmin
B2=Zxy-Zmax
如果B1>0且B2<0,则输出Zxy
否则输出Zmed
其matlab实现如下,并与中值滤波作比较。
clc; clear; f=imread('C:\Program Files\MATLAB\R2013a\bin\work\图像复原\Penguins.jpg'); image_gray=rgb2gray(f);%得到灰度图像 ff =image_gray; ff(:) = 0; alreadyProcessed = false(size(image_gray));%生成逻辑非的矩阵 % 迭代. Smax=7; for k = 3:2:Smax zmin = ordfilt2(image_gray, 1, ones(k, k), 'symmetric'); zmax = ordfilt2(image_gray, k * k, ones(k, k), 'symmetric'); zmed = medfilt2(image_gray, [k k], 'symmetric'); processUsingLevelB = (zmed > zmin) & (zmax > zmed) & ... ~alreadyProcessed; zB = (image_gray > zmin) & (zmax > image_gray); outputZxy = processUsingLevelB & zB; outputZmed = processUsingLevelB & ~zB; ff(outputZxy) = image_gray(outputZxy); ff(outputZmed) = zmed(outputZmed); alreadyProcessed = alreadyProcessed | processUsingLevelB; if all(alreadyProcessed(:)) break; end end ff(~alreadyProcessed) = zmed(~alreadyProcessed); f1=imnoise(image_gray,'salt & pepper',0.3);%添加椒盐噪声后的图像 f2=medfilt2(f1,[3,3]);%中值滤波后的图像 subplot(2,2,1); imshow(image_gray); title('原图'); subplot(2,2,2); imshow(f1); title('椒盐噪声污染后的图像'); subplot(2,2,3); imshow(f2); title('中值滤波'); subplot(2,2,4); imshow(ff); title('自适应中值滤波');
处理效果如下图
相关文章推荐
- PHP GD 图像处理组件的常用函数总结
- PHP图像处理之imagecreate、imagedestroy函数介绍
- 解析在main函数之前调用函数以及对设计的作用详解
- C++如何调用matlab函数
- 详解Matlab中 sort 函数用法
- WPF调用Matlab函数的方法
- jsvascript图像处理―(计算机视觉应用)图像金字塔
- Javascript图像处理思路及实现代码
- java和matlab画多边形闭合折线图示例讲解
- PHP图像处理之使用imagecolorallocate()函数设置颜色例子
- java数字图像处理基础使用imageio写图像文件示例
- C#调用Matlab生成的dll方法的详细说明
- 使用Java进行图像处理的一些基础操作
- javascript图像处理―边缘梯度计算函数
- Javascript图像处理―阈值函数实例应用
- Javascript图像处理―虚拟边缘介绍及使用方法
- Android图像处理之霓虹滤镜效果
- PHP图像处理类库及演示分享
- CI框架文件上传类及图像处理类用法分析
- php图像处理函数大全(推荐收藏)