中值滤波原理及MATLAB算法实现
来源:互联网 发布:python擅长做什么知乎 编辑:程序博客网 时间:2024/05/23 00:30
中值滤波是一种非线性滤波方式,它依靠模板来实现。
对于一维中值滤波,设模板的尺寸为 M ,M=2*r+1,r为模板半径,给定一维信号f(i),i = 1,2,3……N,则中值滤波输出为:
g(i) = median[ f(j-r),f(j-r+1),…………,f(j),f(j+r)]。
对于二维的中值滤波情况,g(x,y) = median[ f(s, t)],对于一个模板尺寸为N*N的中值滤波器,其输出值应大于等于模板中(N*N-1)/ 2,同时也应小于等于模板中(N*N-1)/ 2,(N一般取奇数)。
中值滤波器可用一下步骤来完成:
(1)将模板在图中漫游,并将模板中心与图中某个像素位置重合;
(2)读取模板下各对应像素的灰度值;
(3)将这些灰度值从小到大排列;
(4)找出这些灰度值里面排在中间的那个;
(5)将这个中间值赋给对应模板中心位置的像素。
一下将给出MATLAB程序:
x = imread('C:\Users\Administrator\Desktop\im7.jpg');
x = rgb2gray(x);
[m, n] = size(x); %m表示行数(即高度);n表示列数(即宽度)
x = imnoise(x,'salt & pepper',0.02);
subplot(1,2,1)
imshow(x);
x1 = double(x);
x2 = x1;
%% --------------------------------%
% 此处的算法缺点是未对边界值做出改变
for i = 1:m-3+1
for j = 1:n-3+1
mb = x1( i:(i+3-1), j:(j+3-1) ); %取出模板元素
mb = mb(:); %矩阵中的元素以一列输出
mm = median(mb);%取向量的中值
x2( i+(3-1)/2, j+(3-1)/2 ) = mm; %对中心元素赋值
end
end
%% --------------------------------%
dstImage = uint8(x2);
subplot(1,2,2)
imshow(dstImage);
其结果如图:
- 中值滤波原理及MATLAB算法实现
- MATLAB实现中值滤波算法
- 自适应中值滤波及MATLAB实现
- 自适应中值滤波及matlab实现
- 中值滤波 matlab实现
- [图像]中值滤波(Matlab实现)
- 均值滤波、中值滤波的matlab实现
- 均值滤波、中值滤波的matlab实现
- 均值滤波、中值滤波的matlab实现
- 均值滤波、中值滤波的matlab实现
- 均值滤波、中值滤波的matlab实现
- 均值滤波、中值滤波的matlab实现
- 均值滤波、中值滤波的matlab实现
- 均值滤波、中值滤波的matlab实现
- 基于OPENCV的视频中值滤波原理及实现
- 任意半径中值滤波(扩展至百分比滤波器)O(1)时间复杂度算法的原理、实现及效果
- 任意半径中值滤波(扩展至百分比滤波器)O(1)时间复杂度算法的原理、实现及效果。
- 任意半径中值滤波(扩展至百分比滤波器)O(1)时间复杂度算法的原理、实现及效果。
- dubbo 请求调用过程分析
- SpringBoot学习-第四章 SpringMVC基础-<Spring Boot 实战>
- 描述应用程序开发者为什么可能选择在UDP上运行应用程序而不是在TCP上运行的原因
- c/c++代码 No.1 按位取反
- 死锁的四个必要条件
- 中值滤波原理及MATLAB算法实现
- 颠覆想象,一盏夜灯的变革
- android 透明度颜色
- 系统编程中的文件大小修改truncate/lseek
- c语言中语句srand(time(NULL))什么意思。
- Spring boot发布成war包,可部署到tomcat
- Rxjava简单理解
- 【1096】[ZJOI2007]仓库建设
- navicat如何让datetime类型自动获取当前时间