提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、滤波的概念及种类
    • 1、经典滤波
    • 2、现代滤波
  • 二、中值滤波及程序设计内容
    • 1、中值滤波
    • 2、中值滤波程序设计
    • 3、程序编写
  • 总结

前言

提示:在嵌入式系统的数据采样应用中,采集数据收到噪声影响会出现起伏变化,采取中值滤波算法将干扰数据去除掉。本文目的是主要介绍如何写一段 ARM 汇编程序,演示中值滤波算法。


一、滤波的概念及种类

1、经典滤波

经典滤波是基于傅里叶分析和变换提出的一个工程概念。根据高等数学理论,任何一个满足一定条件的信号,都可以被看成由无限个正弦波叠加而成。换句话说,工程信号就是由不同频率的正弦波叠加而成的,组成信号的不同频率的正弦波叫信号的“频率成分”或“谐波成分”。

2、现代滤波

现代滤波是指用模拟电子电路对模拟信号进行滤波操作,其基本原理就是利用电路的频率特性实现对信号中频率成分的选择。滤波时,把信号看成由不同频率正弦波叠加而成的模拟信号,通过选择不同的频率成分来实现信号滤波。在计算机实际应用中,需要将模拟量转换为数字量(即进行A/D转换),为解决干扰问题,常用的方法主要有中值滤波和均值滤波。

二、中值滤波及程序设计内容

1、中值滤波

中值滤波对脉冲噪声有良好的滤除作用,特别是在滤除噪声的同时,能够保护信号的边缘,使之不模糊。此外,中值滤波的算法比较简单,也易于用硬件实现。这些优良特性是线性滤波方法所不具有的。所以,中值滤波方法一经提出后,便在数字信号处理领域得到广泛应用。
中值滤波方法如下:对一个数字信号序列x(-co<i<co)进行滤n外H时)首出典定义一个长度为奇数的/长窗口,l=2n+1,n为正整教。设左其_个时刻空口,的信县样本为x(i-n),…, x(1),…, x(i+n),其中 x(i)为位干窗口中八的信县样大估 团H 已本值按从时到大的顺序排列后,其中值在i处的样值,便定义为中值滤波的输出值。
在嵌入式的实际应用中,如AD采样时,如果有瞬间干扰信号,那么采样回来的数据就有明显的变化,如明显偏大或偏小。如果把这些数据拿来显示,那显示数据就是跳跃式的,看起来明显有问题。因为模拟信号是连续变化的,并且其变化一般都是相对缓慢的,这时就可以采用中值滤波(也叫“算数中值滤波”),把这些干扰数据去除掉,其原理如下:在采样时连续采样奇数个数(2n+1),并把这些数排序,中间位置那个数(nt+1位置)作为本次采样的值。

2、中值滤波程序设计

为了保证程序的通用性,对任意N(N为奇数)个数都能找出中间值,N值放在RO中,原始数据放在内存0X40000000 开始的地址空间,每个数占32位(即4个字节),中值滤波的结果放在寄存器R1中,此处假设R0=9。
中值滤波程序的流程图如图5-16所示。中值滤波的程序如下。

 AREA SORT,CODE, READONLY  ;定义一个代码段ENTRYMOV R0,#9  ;需要排序数的个数,为奇数LDR R2,=ox408e8e8e  ;R2为原始数据的起始地址SUB R1,Re, #1MOV R4,#4MLA R3,R1,R4,R2 ;R3为原始数据的结束地址SUB R4,R3,#4  ;R4为原始数据的倒数第二个数的地址LOOP1 ADD R5,R2,#4 ;R5为内循环的起始地址LO0P2 LDR R6,[R2]LDR R7,[R5]CMP R6,R7  ;比较交换,从小到大排序STRHI R6,[R5]STRHI R7,[R2]ADD RS,R5,#4  ;修改内循环地址CMP R5,R3  ;内循环结束比较BLS LO0P2ADD R2,R2,#4  ;修改外循环地址CMP R2,R4  ;外循环结束比较BLS LOOP1LDR R2,=0x40000000MOV RO,RO,LSR #1MOV R4,#4MLA R3,RO,R4,R2LDR R1,[R3]  ;找到中间那个数并赋给R1MOV RO,#100MOV R5, #05END

3、程序编写

总结

本文介绍了如何在嵌入式系统的数据采样应用中,采集数据收到噪声影响会出现起伏变化,采取中值滤波算法将干扰数据去除掉。再写一段 ARM 汇编程序,演示中值滤波算法。

ARM 汇编程序,演示中值滤波算法相关推荐

  1. Python扩展库scipy中值滤波算法的应用

    中值滤波是数字信号处理.数字图像处理中常用的预处理技术,特点是将信号中每个值都替换为其邻域内的中值,即邻域内所有值排序后中间位置上的值.下面的代码演示了scipy库中signal模块的中值滤波算法的用 ...

  2. python中值滤波算法_Python扩展库scipy中值滤波算法的应用

    中值滤波是数字信号处理.数字图像处理中常用的预处理技术,特点是将信号中每个值都替换为其邻域内的中值,即邻域内所有值排序后中间位置上的值.下面的代码演示了scipy库中signal模块的中值滤波算法的用 ...

  3. 关于中值滤波算法,以及C语言实现(转)

    源:关于中值滤波算法,以及C语言实现 1.什么是中值滤波? 中值滤波是对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心象素的原来灰度值,它是一种非线性的图像平滑法,它对脉冲干扰级椒盐噪声的抑制 ...

  4. verilog中值滤波算法实现及仿真

    使用verilog语言实现中值滤波算法,并编写testbench进行仿真,产生波形图. 可以使用vivado.ISE.quartusII等软件均可. 对代码.测试代码.仿真结果分别进行截图,如下所示: ...

  5. 高效快速中值滤波算法c语言,快速中值滤波及c语言实现.docx

    . .. 快速中值滤波及c语言实现 学生姓名: 刘 勇 学 号: 6100410218 专业班级: 数媒101 [摘要]本文讨论了用c语言在微机上实现中值滤波及快速算法,在程序设计的过程中充分考虑到程 ...

  6. matlab中基于十字形窗口的滤波算法,#215;字形滤波窗口在Matlab自适应中值滤波算法中的应用 - 21ic中国电子网...

    由于种种原因,图像在生成.传输.变换等过程中往往会受到各种噪声的污染,从而导致图像质量退化.噪声信号的滤波是图像处理的基本任务之一,主要有线性滤波和非线性滤波两种方法.线性滤波方法一般具有低通特性,而 ...

  7. 实时高速实现改进型中值滤波算法_爱学术_免费下载

    [摘要]在图像采集和处理过程中会引入噪声,必须先对图像进行预处理.本文介绍一种快速中值滤波算法,该算法在硬件平台上实现实时处理功能.综合考虑,选择现场可编程门阵列(FPGA)作为硬件平台,采用硬件描述 ...

  8. MATLAB自编自适应中值滤波算法

    代码原理: 在噪声密度不是很大的情况下(根据经验,噪声的出现的概率小于0.2),使用中值滤波的效果不错.但是当噪声出现的概率比较高时,原来的中值滤波算法就不是很有效了.只有增大滤波器窗口尺寸,尽管会使 ...

  9. OpenCV图像处理专栏九 | 基于直方图的快速中值滤波算法

    转载自:https://zhuanlan.zhihu.com/p/98092747  侵删 前言 这是OpenCV图像处理专栏的第9篇文章,主要介绍一个基于直方图的快速中值滤波算法,希望对大家有帮助. ...

最新文章

  1. 比特币现金锚定货币交易所越来越多
  2. [C#] Delegate, Multicase delegate, Event
  3. android api接口封装,生成App接口
  4. 16-1 Redis分布式缓存引入与保存缓存功能实现
  5. mybaties总结+hibernate总结
  6. Kafka精华问答 | Kafka的主要应用场景有哪些?​
  7. Python timedelta total_seconds()方法与示例
  8. C/C++日志写入系统log(/var/log/syslog)
  9. ElasticSearch的filter原理深度剖析
  10. 腾讯广告算法大赛 | 萌新粉丝投稿讲述数据竞赛小白观赛心得
  11. C++中函数指针数组的使用
  12. linux菜鸟要飞-根目录
  13. 计算机组成原理概述篇
  14. wps中论文标题编号的设置
  15. 旋转屏幕时数据的保存与恢复
  16. 基于网易云信WebRTC的Web音视频实现
  17. 人工智能公司排名百度,持续更新~
  18. 恩布企业即时通讯软件,协同办公平台发布V1.23版本
  19. Flutter 自定义UI控件并设置交互能力
  20. PB反编译专家 PB Decompiler V2020.01.21 支持PB5.0到2019全部版本

热门文章

  1. 从天龙八部论嵌入式行业中个人与企业的核心竞争力
  2. James+intouch
  3. 使用Unity5开发手游,使用FMOD或wwise音频插件而不是自带的声音系统有哪些好处?
  4. window+CUDA+CUDNN 下载和安装
  5. 为什么我们需要使用或执行技术标准规范
  6. Android开发——RadioButton控件
  7. SQLyog不能连接数据库mysql8.0+
  8. 安卓版蝌蚪播放器客户端应用源码完整版
  9. 【第十一届“泰迪杯”数据挖掘挑战赛】泰迪杯c题爬虫采集数据(源码+数据)
  10. MySQL图形界面软件-Navicat