-
【Matlab/CV系列】数字图像滤波去噪算法总结
2019-03-29 23:38:11Date: 2019.04.03【Tag:算法总结】 前言 图像滤波是图像去噪的经典方法,滤波过程本质就是卷积过程,...本文主要是对常用数字图像滤波去噪算法进行总结,并给出常用滤波算法的matlab实现(不调用函数)。Date: 2019.04.03
前言
图像滤波是图像去噪的经典方法,滤波过程本质就是卷积过程,包括线性滤波和非线性滤波两种类型。线性滤波比如均值滤波、高斯滤波、双边滤波等;非线性滤波比如中值滤波、最大值滤波和最小值滤波等。本文主要是对常用数字图像滤波去噪算法进行总结,并给出常用滤波算法的matlab实现(不调用函数)。
1、参考
https://blog.csdn.net/horseinch/article/details/50545362
http://www.ilovematlab.cn/thread-34535-1-1.html
https://blog.csdn.net/timidsmile/article/details/6904381
https://blog.csdn.net/blustcoder/article/details/511699102、常用图像滤波去噪算法
图像算法之十一:双边滤波
简单的图像频域滤波和频域锐化的matlab实现
【CV】图像去模糊(逆滤波)
【CV系列】图像算法之十二:非局部均值滤波及其Matlab实现
【CV系列】图像算法之十三:邻域自适应滤波3、维纳滤波分析
Wiener维纳滤波基本原理及其算法实现
维纳滤波原理(Wiener Filter)4、基本滤波算法自己实现matlab(不调用函数)
4.1、均值滤波
%% 均值滤波函数的Matlab实现 % 均值滤波基本原理:均值滤波是一种线性滤波方法。主要思想为邻域平均法,即用几个像素灰度 % 的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊。 % Img是需要滤波的图像,n是模板大小(即n×n) function d=avg_filter(Img,n) a(1:n,1:n)=1; %a即n×n模板,元素全是1 [height, width]=size(Img); %输入图像是hightxwidth的,且hight>n,width>n x1=double(Img); %浮点化,提高运算精度 x2=x1; %针对图像中每个像素点求均值 for i=1:height-n+1 for j=1:width-n+1 c=x1(i:i+(n-1),j:j+(n-1)).*a; %取出x1中从(i,j)开始的n行n列元素与模板相乘 s=sum(sum(c)); %求c矩阵中各元素之和 x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %将与模板运算后的各元素的均值赋给模板中心位置的元素 end end d=uint8(x2); %将均值赋给d
4.2 中值滤波:
%% 中值滤波函数的Matlab实现 % 中值滤波基本原理:中值滤波是一种基于统计排序的非线性滤波方法。主要思想为 %首先确定一个以某个像素为中心点的邻域,一般为方形邻域,然后将邻域中各像素的灰度 %值排序,取其中间值作为中心像素灰度的新值。 % Img是需要滤波的图像,n是模板大小(即n×n) function d=med_filter(Img,n) [height, width]=size(Img); % 输入图像是height×width的,且p>n,q>n x1=double(Img); % 浮点化,提高运算精度 x2=x1; %针对图像中每个像素点求中值 for i=1:height-n+1 for j=1:width-n+1 c=x1(i:i+(n-1), j:j+(n-1)); % 取出x1中从(i,j)开始的n行n列元素,即模板(n×n的) e=c(1,:); % 取出c矩阵的第一行 for u=2:n e=[e,c(u,:)]; % 将c矩阵变为一个行矩阵 end mm=median(e); % mm是中值 x2(i+(n-1)/2,j+(n-1)/2)=mm; % 将模板各元素的中值赋给模板中心位置的元素 end end d=uint8(x2); %将中值赋给d
4.3 高斯滤波:
%% 高斯滤波函数的Matlab实现 % 高斯滤波基本原理:高斯滤波是一种线性平滑滤波,适用于消除高斯噪声。 % 高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。 % 高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。 %Img是需要滤波的图象,n是均值,k是方差 function d=gaus_filter(k,n,Img) Img = double(Img); % 浮点化,提高运算精度 n1=floor((n+1)/2); % 计算图象中心 %针对图像中每个像素点求高斯均值 for i=1:n for j=1:n b(i,j) =exp(-((i-n1)^2+(j-n1)^2)/(4*k))/(4*pi*k); end end %生成高斯序列b。 Img1=conv2(Img,b,'same'); %用生成的高斯序列卷积运算,进行高斯滤波 d=uint8(Img1); %将高斯均值赋给d
4.4 维纳滤波:
%% 维纳滤波函数的Matlab实现 % 维纳滤波基本原理:信号滤波的实质为从观测信号中提取有效信号,随着数学理论的发展与实际应用的需求, %基于不同原理的滤波方法被不断地提出来,虽然依据的准则,推导的过程各有差异, %但最终的目的均是减小信号估计的误差,使滤波系统的输出信号尽可能地接近实际信号。 % Img是需要滤波的图像,k是维纳滤波参数 function d = wiener_filter(Img, k) blur=Img;%需要滤波图像 bf = fftshift(fft2(blur)); %FFT变换 [M,N]=size(blur); H=zeros(M,N); rad= 5; length = 2*rad+1; psf=zeros(length,length); %求解PSF for i=1:length for j=1:length if(( (i-rad-1)*(i-rad-1) + (j-rad-1)*(j-rad-1) ) < rad*rad ) H(i,j) =1.0/(rad*rad*3.14159); psf(i,j) =1.0/(rad*rad*3.14159); end end end %根据公式进行计算 H= fftshift(fft2(H));%FFT变换 Hg = conj(H); spec = Hg.*H; spectt = spec +k; can = spec./spectt; jk = can./H; Gg=bf.*jk; Gg=ifftshift(Gg); %FFT变换 d=im2uint8(mat2gray(real(ifft2(Gg))));%退化后的图像
THE END!
-
基于Matlab的FIR滤波器的优化设计方法
2020-10-21 23:30:44数字滤波包括FIR和IIR两种滤波方式,其中FIR滤波具有很多优点,可以在幅度特性随意设计的同时,保证精确、严格的线性相位,滤波稳定,不会出现递归型结构中的极限振荡等不稳定现象,且误差较小,可采用FFT算法实现,... -
数字图像处理车牌定位开题报告
2012-04-25 13:33:412、深入研究预处理中的灰度化、二值化、背景削弱、中值滤波等原理,以及图像的灰度变换空间滤波处理等,探索车牌定位常用的方法,研究现在流行的一些算法,总结出其优点和缺点,能够继承传统方法的优点,并加以改进... -
MFC数字图像处理(BMP格式读取 保存 DFT FFT 直方图 色调均化 缩放 模糊 锐化 滤镜 形态学处理 曲线 裁剪 ...
2014-07-23 10:40:38【中值】中值滤波和平均滤波的操作差不多,也不一一说明了。 【锐化】个人觉得除了拉普拉斯的锐化方式之外的锐化都很难看所以就只保留了这两种锐化方式了,将就着用把- -。 【自定义滤波器】为了能够灵活地使用... -
MATLAB的数据采集与分析系统源代码
2013-11-18 14:50:06然后详细的介绍了数字图像处理的一些常用技术,这些技术和方法在系统中大都很好的实现了。 本系统实现了图像处理技术中比较实用的若干功能,而且操作简单,容易上手。该系统支持索引图像、灰度图像、二值图像、RGB... -
单片微机测控系统设计大全(推荐)
2009-01-15 09:39:116 数字滤波 12. 7 数字PID控制基本算法 12. 8 PID算法积分项的改进 12. 9 PID控制的微分项的改进 12. 10 其它PID控制算法 12. 11 PID控制器的参数整定 12. 12 纯滞后补偿算法——Smith预估器 第13章 计算机控制系统... -
图像处理基础(第2版).[美]Maria Petrou(带详细书签).pdf
2019-01-05 02:38:43全书译成中文约合100万字(也包括图片、绘图、表格、公式等)。本书可作为已具有初步图像技术知识的相关专业高年级本科生和低年级研究生的专业基础课教材,也可供从事图像应用相关领域的科研技术人员参考。 译者... -
c语言编写单片机技巧
2009-04-19 12:15:17在数字滤波、FFT(Fast Fourier Transform)、频谱分析、图像处理的分析等领域,DSP正在大量进入嵌入式市场。 18. MCU在射频控制时,MCU的时钟(晶振)、数据线会辐射基频或基频的倍频,被低噪放LNA放大后... -
ADI模拟对话杂志的合订本2013-2014.zip
2020-07-16 15:57:10然而在现代收发器设计中,差分接口常用在中频电路中以获得更好的性能,但实际设计过程中,工程师需要处理几个常见问题,包括阻抗匹配、共模电压匹配以及复杂的增益计算。了解发射机和接收机中的差分电路对优化增益匹配和... -
vc++ 应用源码包_1
2012-09-15 14:22:12代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的... -
vc++ 应用源码包_2
2012-09-15 14:27:40代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的... -
vc++ 应用源码包_6
2012-09-15 14:59:46代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的... -
vc++ 应用源码包_5
2012-09-15 14:45:16代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的... -
vc++ 应用源码包_4
2012-09-15 14:38:35代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的... -
vc++ 应用源码包_3
2012-09-15 14:33:15代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的... -
现代交换原理与通信网技术 (卞佳丽
2021-01-20 06:00:26数宁交换:这是对数字信号进行交换的交换方式,首最常用的数字信号为脉冲编码调制 〔P)的信号和对P信号行交换的数宁交换设备 布控交溴:即布线逻辑控制交换(简称布控交换)这种父换方式中,交换系统的控制 部分是用凱械... -
基于AT89S52 单片的频率计
2010-01-04 08:47:37一般说来,数字系统中运行的电信号,其大小往往并不改变,但在实践分布上 却有着严格的要求,这是数字电路的一个特点。 2 系统的总体设计: 2.1 原理设计 本频率计的设计以AT89S52 单片机为核心,利用它内部的定时/... -
主要研究在不同的细分场景下的控制策略,比如在十字路口如何控制,转线如何控制,在感知数据不可靠时如何尽量安全的控制等等。 7. 车辆检测与跟踪(VehicleDetection and Tracking): 主要关注如何通过激光雷达...
-
程控交换实验、用户模块电路 主要完成BORSCHT七种功能,它由下列电路组成:
2008-12-24 18:17:59如久不拔号、久不应答、位间不拔号的延时,缺省值为10秒,可选择的时间值有10秒、30秒、1分钟。按一次该键则显示下一个时间值,三个值循环显示,当按下“确认”键时,就选定当前显示值供系统使用,按“复位”键则... -
计算机图形学的算法基础(原书第2版)--详细书签版
2012-10-17 03:40:535.17.10 半立方体方法的不精确性 451 5.17.11 半立方体方法外的其他方法 454 5.17.12 层次辐射度和聚集 456 5.17.13 镜面环境的辐射度 457 5.17.14 绘制方程 458 5.18 光线跟踪和辐射度的结合 458 5.19 颜色 ...
收藏数
20
精华内容
8
-
19年实务真题下午.pdf
-
2016 年中级通信工程师考试综合能力真题.pdf
-
mysql-8.0.21-winx64.zip
-
Codeforces Global Round 13 ABC题解
-
golang 拷贝文件 练习
-
ansys electronic 19
-
零基础一小时极简以太坊智能合约开发环境搭建并开发部署
-
捋一捋二分类和多分类中的交叉熵损失函数
-
协程的意义
-
request+response学习笔记
-
第一章 工作原理、语言标准和规范(1.4~1.6)
-
深究字符编码的奥秘,与乱码说再见
-
一天学完MySQL数据库
-
用Go语言来写区块链(一)
-
MyBatisSelf.rar
-
jdk8u281.zip
-
redis-6.0.6-windows.zip
-
MATLAB最邻近插值算法的实现
-
【布道者】Linux极速入门
-
SSH LINUX 免密码登录失败原因踩坑