##1. 均值滤波
####先创建一个 medfilter.m 文件,代码如下:

function [output] = meansfilter(input, radius)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% input: 噪声图像
% r: 图像块半径
%
% Auther: Gao Zheng jie
% Email: 3170601003@cuit.edu.cn
% Date: 2017-12-19
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[m n] = size(input);  % 获取图像的行列维度,并分别赋给m和n
Output = zeros(m, n);  % 定义m*n的零矩阵,用来存放去噪结果图像
input_pad = padarray(input, [radius radius], 'symmetric');  %边界延拓,使得位于图像边缘的像素点也能形成图像块。% symmetric 对边界区域进行对称性重复(也叫镜像镶边),拓展的大小为[r r],f为图像块半径%例如[2 3]表示垂直方向拓展2行,水平方向拓展3列
% 逐行、依次对图像中的每个像素点进行局部均值去噪处理
for i=1:m  % 行for j=1:n  % 列% 在延拓后的图像中确定将要修补点的坐标x = i + radius;y = j + radius;% 确定当前像素点的邻域(或者说当前点所在的图像块)neighbordhood = input_pad(x-radius:x+radius, y-radius:y+radius);output(i,j) = median(neighbordhood(:));  % 先将整个图像块扁平化,然后取中值end
end

####创建文件 test_medfilter.m 代码如下:

clc; %清除命令窗口的内容
clf; %清除图形
clear; %清除原有变量
colormap(gray); %设置色图,色图是一个m*3的矩阵,每一个位置的取值是0或1img = imread('einstein.jpg');
input = imnoise(img, 'salt & pepper');  % 添加椒盐噪声,默认噪声密度0.05(噪声密度是指包含噪声值的图像区域的百分比)
output = medfilter(input, 1);  % 半径为1,即取3*3的图像块
output = uint8(output);%figure %创建新的图形窗口
%colormap(gray) %设置色图,色图是一个m*3的矩阵,每一个位置的取值是0或1
clf %清除图形
subplot(2,3,1),imagesc(img),xlabel('img'); % 原图
subplot(2,3,2),imagesc(input),xlabel('input'); % 加了噪声的图像
subplot(2,3,3),imagesc(input-img),xlabel('real noise'); % 计算并显示所加的噪声
subplot(2,3,4),imagesc(output),xlabel('output'); % 处理后的图像
subplot(2,3,5),imagesc(input-output),xlabel('residuals noise'); % 计算并显示噪声冗余图像,对去噪结果进行定性比较

将这两个文件放在同一个文件夹下,然后在 matlab 中运行 test_medfilter.m 即可。

##2. 中值滤波
####先创建一个 meansfilter.m 文件,代码如下:

function [output] = meansfilter(input, radius)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% input: 噪声图像
% r: 图像块半径
%
% Auther: Gao Zheng jie
% Email: 3170601003@cuit.edu.cn
% Date: 2017-12-19
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[m n] = size(input);  % 获取图像的行列维度,并分别赋给m和n
Output = zeros(m, n);  % 定义m*n的零矩阵,用来存放去噪结果图像
input_pad = padarray(input, [radius radius], 'symmetric');  %边界延拓,使得位于图像边缘的像素点也能形成图像块。% symmetric 对边界区域进行对称性重复(也叫镜像镶边),拓展的大小为[r r],f为图像块半径%例如[2 3]表示垂直方向拓展2行,水平方向拓展3列
weight = (2*radius+1)^2;  % 算术均值滤波中每一个像素点的权重
% 逐行、依次对图像中的每个像素点进行局部均值去噪处理
for i=1:m  % 行for j=1:n  % 列% 在延拓后的图像中确定将要修补点的坐标x = i + radius;y = j + radius;% 确定当前像素点的邻域(或者说当前点所在的图像块)neighbordhood = input_pad(x-radius:x+radius, y-radius:y+radius);output(i,j) = sum(sum(neighbordhood))/weight;end
end

####创建文件 test_medfilter.m 代码如下:

clc; %清除命令窗口的内容
clf; %清除图形
clear; %清除原有变量
colormap(gray); %设置色图,色图是一个m*3的矩阵,每一个位置的取值是0或1img = imread('einstein.jpg');
input = imnoise(img, 'gaussian');  % 添加高斯噪声,默认均值为0,方差为0.01
output = meansfilter(input, 1);  % 半径为1,即取3*3的图像块
output = uint8(output);%figure %创建新的图形窗口
%colormap(gray) %设置色图,色图是一个m*3的矩阵,每一个位置的取值是0或1
clf %清除图形
subplot(2,3,1),imagesc(img),xlabel('img'); % 原图
subplot(2,3,2),imagesc(input),xlabel('input'); % 加了噪声的图像
subplot(2,3,3),imagesc(input-img),xlabel('real noise'); % 计算并显示所加的噪声
subplot(2,3,4),imagesc(output),xlabel('output'); % 处理后的图像
subplot(2,3,5),imagesc(input-output),xlabel('residuals noise'); % 计算并显示噪声冗余图像,对去噪结果进行定性比较

将这两个文件放在同一个文件夹下,然后在 matlab 中运行 test_medfilter.m 即可。

均值滤波和中值滤波的MATLAB实现相关推荐

  1. 第七周作业:matlab分别对图片加入高斯噪音和椒盐噪音,然而利用均值滤波和中值滤波分别对上述两种噪音进行去噪。

    文章目录 题目 原图 1.添加椒盐噪声 2.添加高斯噪声 3.均值滤波处理椒盐噪声 4.中值滤波处理椒盐噪声 5.均值滤波处理高斯噪声 6.中值滤波处理高斯噪声 题目 利用MATLAB编程,制作一张照 ...

  2. 关于平滑滤波,中值滤波,KNN滤波的图像处理(附matlab代码)

    前些天小编上了数字图像的课程,里面提到了均值平滑滤波操作,中值滤波操作,和KNN平滑滤波操作. 1.何为均值平滑滤波呢? 均值滤波的核心就是在一定的小范围内,给这个小范围的像素取平均值(此操作是在原图 ...

  3. 图像处理(三) 均值滤波与中值滤波的对比

    均值滤波与中值滤波的对比 均值滤波与中值滤波 实验对比 matlab 代码 均值滤波与中值滤波 均值滤波是典型的线性滤波算法,均值滤波是对目标像素及周边像素取平均值后再填回目标像素来实现滤波目的的方法 ...

  4. 【数字图像处理】图像直方图均衡化、空域滤波(均值滤波、中值滤波)、图像锐化(Laplace算子)、图像傅里叶变换实验

    图像直方图均衡化.空域滤波.图像锐化.图像傅里叶变换 一.图像直方图均衡化 二.图像空域滤波 1.均值滤波(滤波次数n→3) 2.中值滤波(滤波次数n→3) 3.图像锐化(Laplace算子) 三.图 ...

  5. Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

    作者 | 杨秀璋,责编 | 夕颜 题图  | 视觉中国 出品 | CSDN博客 本篇文章主要讲解Python调用OpenCV实现图像平滑,包括四个算法:均值滤波.方框滤波.高斯滤波和中值滤波.全文均是 ...

  6. 均值滤波java_均值滤波,中值滤波,最大最小值滤波

    http://blog.csdn.net/fastbox/article/details/7984721 讨论如何使用卷积作为数学工具来处理图像,实现图像的滤波,其方法包含以下几种,均值 滤波,中值滤 ...

  7. [Python图像处理] 四十一.Python图像平滑万字详解(均值滤波、方框滤波、高斯滤波、中值滤波、双边滤波)

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  8. [Python图像处理] 四.图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  9. 【图像处理】——图像滤波(Python+opencv实现三种方法:均值滤波、中值滤波、高斯滤波等)

    目录 一.什么是滤波以及滤波的目的? 二.均值滤波(cv2.blur()) 1.原理 2.关键代码 3.封装代码 二.中值滤波(cv2.medianBlur()) 1.原理 2.关键代码 3.封装代码 ...

  10. Python实现图像的椒盐噪声添加和基础的平滑处理(均值滤波与中值滤波)

    均值滤波与中值滤波是最常见的两种平滑的方式,尤其是中值滤波能起到强大的降噪效果. 本文内容分为三部分: 1.实现添加图片的椒盐噪声 2.实现调用内置函数进行均值和中值滤波 3.自编函数深刻理解均值和中 ...

最新文章

  1. 我的Android进阶之旅------gt;Android字符串资源中的单引號问题error: Apostrophe not preceded by 的解决的方法...
  2. 包装严重的 IT 行业,作为面试官,我是如何甄别应聘者的包装程度
  3. 使用清华开源镜像安装tensorflow
  4. 北京活动预告丨来ACOUG 年会过个温暖的冬天吧!
  5. BZOJ2801/洛谷P3544 [POI2012]BEZ-Minimalist Security(题目性质发掘+图的遍历+解不等式组)...
  6. 淘宝获得淘宝商品类目 API
  7. 十问组态软件:开源的组态软件
  8. 计算机组成原理-作业三
  9. 瑞芯微Rockchips RK3368对比晶晨Amlogic S905
  10. 小程序跳转到其他小程序
  11. 关于Mac升级系统后,出现 xcrun: error: invalid active developer path 问题的解决方案【已解决】
  12. 698. 划分为k个相等的子集:给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。
  13. React Native开发之动画(Animations)
  14. 苹果iPhone 12系列发布会:四款新机亮相均支持5G
  15. ILog项目开发流程【一】
  16. try中的return和finally中的return
  17. 【语义分割】综述——一文搞定语义分割
  18. c语言----移动n根火柴使等式成立
  19. FQ队列detached流管理
  20. 关于路由器当无线交换机用

热门文章

  1. 使用ICGC数据库进行肿瘤组织突变分析,绘制瀑布图等
  2. 计算机领域cip是什么意思,版权页上的CIP数据是什么意思?
  3. 元宇宙直播,不再是概念
  4. 《机器学习算法》SVM进行多分类及代码实现
  5. 基于51单片机的红外体温计的设计
  6. FL Studio21新版终于有内置的强大混响插件了
  7. 如何用几何画板绘制立体圆锥体
  8. json解析工具之jackson的常用实例
  9. figure字体 latex_Matlab的figure中输入上标、下标、特殊符号或字体 (转)
  10. PMP续证有新的证书吗?