图像处理之空域内的滤波复原[均值滤波、顺序统计滤波和自适应滤波复原]
一、均值滤波
1、算术均值滤波器
算数均值滤波器即用周围灰度值的平均值代替滤波中心像素的灰度值,其表达式为:
其中m,n为滤波模板大小,f为需要处理的图像,g为滤波后的图像。
2、几何均值滤波器
几何滤波器与算数均值滤波器相比,丢失的图像细节较少,其表达式为:
实现代码:
close all;
clear all;
clc;
I=imread('cameraman.tif');
I=im2double(I);
I=imnoise(I,'gaussian',0.05); % 添加高斯噪声
PSF=fspecial('average',3); % fspecial('average',n)产生n*n矩阵的均值滤波
J=imfilter(I,PSF); % 算术均值滤波,imfilter函数用于对图像进行滤波,调用格式为J=imfilter(I,H)其中I为输入图像,H为滤波器
K=exp(imfilter(log(I),PSF)); % 几何均值滤波subplot(131),imshow(I);
title('添加高斯噪声后的图像');
subplot(132),imshow(J);
title('算术均值滤波后的图像');
subplot(133),imshow(K);
title('几何均值滤波后的图像');
实现效果:
3、逆谐波均值滤波器
逆谐波均值滤波器的表达式为:
其中,Q为滤波器的阶数。当Q=0时,变为算数均值滤波器。当Q=-1时,变为谐波均值滤波器。当Q为正时,可以去除胡椒噪声。当Q为负时,可以去除盐粒噪声。
实现代码:
close all;
clear all;
clc;
I=imread('cameraman.tif');
I=im2double(I);
I=imnoise(I,'salt & pepper',0.01); % 添加椒盐噪声
PSF=fspecial('average',3); % fspecial('average',n)产生n*n矩阵的均值滤波
Q1=1.5; % Q为逆谐波均值滤波器的阶数,当Q为正时可去除椒噪声;当Q为负时可去除盐噪声(但不能同时去除椒和盐噪声)
Q2=-1.5;
j1=imfilter(I.^(Q1+1),PSF); % 根据逆谐波均值滤波器的表达式
j2=imfilter(I.^Q1,PSF);
J=j1./j2; % 逆谐波滤波,Q为正,注意.的用法,表示I中的每个元素都要进行相应操作(注意矩阵的维度相同)
k1=imfilter(I.^(Q2+1),PSF);
k2=imfilter(I.^Q2,PSF);
K=k1./k2; % 逆谐波滤波,Q为负subplot(131),imshow(I);
title('添加椒盐噪声后的图像');
subplot(132),imshow(J);
title('Q为正数时的逆谐波均值滤波后的图像');% 去除椒噪声(黑色),显示盐噪声
subplot(133),imshow(K);
title('Q为负数时的逆谐波均值滤波后的图像');% 去除盐噪声(白色),显示椒噪声
实现效果:
4、谐波均值滤波器
谐波均值滤波器对处理高斯噪声较好,其表达式为:
实现代码:
close all;
clear all;
clc;
I=imread('cameraman.tif');
I=im2double(I);
I=imnoise(I,'gaussian',0,0.01); % 添加高斯噪声
PSF=fspecial('average',3); % fspecial('average',n)产生n*n矩阵的均值滤波
Q=1;
j1=imfilter(I.^(Q+1),PSF); % 根据谐波均值滤波器的表达式
j2=imfilter(I.^Q,PSF);
J=j1./j2; % 注意.的用法,表示I中的每个元素都要进行相应操作(注意矩阵的维度相同) subplot(121),imshow(I);
title('添加高斯噪声后的图像');
subplot(122),imshow(J);
title('谐波均值滤波后的图像');
实现效果:
二、顺序统计滤波
1、中值滤波器
中值滤波器即将邻域像素灰度的中值作为中心点的灰度值。中值滤波能够很好地保留图像的边缘,非常适合去除椒盐噪声,效果优于均值滤波(注意窗口不能过大,会使图像的边缘变得模糊)。
实现代码:
close all;
clear all;
clc;
I=imread('cameraman.tif');
J=im2double(I);
J=imnoise(J,'salt & pepper',0.05); % 添加椒盐噪声
K=medfilt2(J,[3,3]); % 使用函数medfilt2()进行图像的二维中值滤波,调用格式为J=medfilt2(I)/J=medfilt2(I,[m,n]),默认窗口大小为3*3(可以设置窗口大小为m*n)subplot(131),imshow(I);
title('原始图像');
subplot(132),imshow(J);
title('添加椒盐噪声后的图像');
subplot(133),imshow(K);
title('中值均值滤波后的图像');
实现效果:
2、最大值和最小值滤波器
最大值和最小值滤波器即以滤波窗口中排序最后一位或第一位代替窗口中心灰度值。
实现代码:
% 使用ordfilt2()函数对图像进行最大值和最小值滤波,通过设置参数order为实现
close all;
clear all;
clc;
I=imread('cameraman.tif');
I=im2double(I);
J=imnoise(I,'salt & pepper',0.01); % 添加椒盐噪声
K=ordfilt2(I,1,ones(4,4)); % 窗口模板4*4,取排序后最大值输出即第一个值(排序为降序)
M=ordfilt2(I,9,ones(3)); % 窗口模板3*3,取排序后最小值输出即最后一个值subplot(221),imshow(I);
title('原始图像');
subplot(222),imshow(J);
title('添加椒盐噪声后的图像');
subplot(223),imshow(K);
title('最大值滤波后的图像');
subplot(224),imshow(M);
title('最小值滤波后的图像');
实现效果:
补充:二维排序滤波器
实现代码:
% 在进行排序滤波时,可以任意选择窗口的形状及排序后输出的像素位置,非常灵活
close all;
clear all;
clc;
I=imread('cameraman.tif');
I=im2double(I);
J=imnoise(I,'salt & pepper',0.1); % 添加椒盐噪声
domain=[0 1 1 0;1 1 1 1;1 1 1 1;0 1 1 0]; % 窗口模板4*4
K=ordfilt2(I,6,domain); % 使用函数ordfilt2()进行二维排序滤波,在进行滤波时,可以选择排序后的任意一个值作为输出,调用格式为J=ordfilt2(I,order,domain)其中order为选择的像素位置subplot(131),imshow(I);
title('原始图像');
subplot(132),imshow(J);
title('添加椒盐噪声后的图像');
subplot(133),imshow(K);
title('二维排序滤波后的图像');
实现效果:
三、自适应滤波
实现代码:
close all;
clear all;
clc;
RGB=imread('saturn.png');
I=rgb2gray(RGB); % 将RGB图像转为灰度图像
% imcrop为图像裁剪函数,调用的一般格式为I=imcrop(I,[a b c d])
% 其中(a,b)表示裁剪后左上角像素在原图像中的位置
% c表示裁剪后图像的宽,d表示裁剪后图像的高
I=imcrop(I,[100,100,1024,1024]);
J=imnoise(I,'gaussian',0,0.03); % 添加高斯噪声
% wiener2函数可以根据图像中噪声进行自适应维纳滤波
% 调用格式为[J,noise]=wiener2(I,[m,n]),对图像I进行自适应维纳滤波,窗口大小为m*n(默认情况3*3)
% noise为噪声的能量,J为滤波后的图像
[K,noise]=wiener2(J,[5,5]);subplot(221),imshow(RGB);
title('原始图像');
subplot(222),imshow(I);
title('裁剪后的图像');
subplot(223),imshow(J);
title('添加高斯噪声后的图像');
subplot(224),imshow(K);
title('自适应滤波后的图像');
实现效果:
以上滤波器均可以用于去除图像中噪声!!!
参考博客:
(1)基于MATLAB的常见图像处理技术–图像复原技术
(2)matlab数字图像处理:图像复原及重建–常见的噪声模型以及滤波方法
由于刚刚开始学习图像处理,对于很多知识理解不到位。如有错误,恳请指正,任重而道远,慢慢加油!
图像处理之空域内的滤波复原[均值滤波、顺序统计滤波和自适应滤波复原]相关推荐
- 回声消除中的自适应滤波算法综述
作者:凌逆战 博客园地址:https://www.cnblogs.com/LXP-Never/p/11773190.html 自适应回声消除原理 声学回声是指扬声器播出的声音在接受者听到的同时,也通过 ...
- 自适应滤波C语言实现
这里写目录标题 原理 代码 结果 原理 自适应滤波是近年以来发展起来的一种最佳滤波方法.它是在维纳滤波,Kalman滤波等线性滤波基础上发展起来的一种最佳滤波方法.由于它具有更强的适应性和更优的滤波性 ...
- 自适应滤波(LMS,RLS)
1.背景及相关知识介绍 自适应滤波存在于信号处理.控制.图像处理等许多不同领域,它是一种智能更有针对性的滤波方法,通常用于去噪. 图中x(j)表示 j 时刻的输入信号值,y(j)表示 j 时刻的输出信 ...
- 【语音去噪】基于最小二乘自适应滤波LMS和RLS实现语音去噪含Matlab源码
1 简介 自适应信号处理的理论和技术已经成为人们常用滤波和去噪技术.文中讲述了自适应滤波的原理以及LMS算法和RLS算法两种基本自适应算法的原理及步骤.并用MATLAB分别对两种算法进行了自适应滤波仿 ...
- Python语音基础操作--5.1自适应滤波
<语音信号处理试验教程>(梁瑞宇等)的代码主要是Matlab实现的,现在Python比较热门,所以把这个项目大部分内容写成了Python实现,大部分是手动写的.使用CSDN博客查看帮助文件 ...
- 【语音去噪】低通+自适应滤波去噪【含Matlab源码 352期】
⛄一.自适应滤波简介 自适应滤波是近30年以来发展起来的关于信号处理技术的方法.它是在维纳滤波.Kalman滤波等线性滤波基础上发展起来的一种最佳滤波方法.由于它具有更强的适应性和更优的滤波性能,从而 ...
- 【数字图像处理】图像直方图均衡化、空域滤波(均值滤波、中值滤波)、图像锐化(Laplace算子)、图像傅里叶变换实验
图像直方图均衡化.空域滤波.图像锐化.图像傅里叶变换 一.图像直方图均衡化 二.图像空域滤波 1.均值滤波(滤波次数n→3) 2.中值滤波(滤波次数n→3) 3.图像锐化(Laplace算子) 三.图 ...
- 《OpenCV3编程入门》学习笔记6 图像处理(一)线性滤波:方框滤波、均值滤波、高斯滤波
第6章 图像处理 6.1 线性滤波:方框滤波.均值滤波.高斯滤波 6.1.1 图像滤波与滤波器 1.图像滤波:在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制 目的: (1)抽出对象的特征作为图 ...
- 【图像处理】【计算机视觉】线性邻域滤波专场:方框滤波、均值滤波与高斯滤波...
首先注意点:关于OpenCV中的函数,有老的数据结构,还有新的opencv2的数据结构,一般地区别就是IplImage*与Mat的区别,两者大致分别对应着C和C++内的两个功能一样,但是函数名称有别. ...
最新文章
- 卧槽!华为工程师总结的5000页Java、LeetCode刷题笔记提供下载,太优秀了!
- 【BZOJ5102】[POI2018]Prawnicy 堆
- ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践
- 机器学习笔记:Transformer
- Serverless 在大规模数据处理的实践
- python练习题:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度
- 网络编程——第一篇 基础之进程线程
- java导出mysql数据库失败_利用Java进行MySql数据库的导入和导出
- 自定义广播增加权限控制
- 自制Dede网站地图的秘诀
- [UWP]了解模板化控件(6):使用附加属性
- 尚硅谷WebService技术精讲教程
- CDH运维常见问题-cloudera-scm-agent 已死,但 pid 文件存在
- 系统补丁不适用计算机,无法安装IE11 安装补丁“此更新不适用于你的计算机”解决办法...
- 保姆级解决办法使用企业版MyEclipse出现MyEclipse Trial Expired解决方法及激活
- 用typhon制作嵌入式Chromium浏览器
- 利用 echarts 绘制江苏省的地图之三
- 双拼输入法的原理及上手方法
- SpringBoot启动代表出现Process finished with exit code 0
- CSP 2017-12