嵌入式ARM下的中值滤波


前言

滤波是将信号中特定波段频率滤除的操作,是抑制和防止干扰的一项重要措施。是根据观察某一随机过程的结果,对另一与之有关的随机过程进行估计的概率理论与方法。


一、滤波的意义

关于滤波的理解。滤波是一个物理概念,表示对输入量的一个处理,那么可以理解为对输入 信号 的一个处理,处理之后得到了结果表示滤波完毕。那么对于数学本质是什么呢,其实数学本质就是 对输入信号进行加权处理,这个加权就是乘以权系数,如果信号是时域的那么可以幅度加权也可以相位加权等,如果信号是频域的自然也可以进行相应的加权得到想要的效果,总之,滤波就是对原来的信号进行加权处理(这个加权的操作可能不简简单单是个相乘的操作,可能还有其他运算),造成原信号的某个特性的改变,得到想要的结果的这些操作运算,那么往往我们要根据理想的结果和已知先验信息的输入信号设计那些权系数,其实也就是我们的滤波器冲击响应,这个冲击响应就是我们的权系数,这是 广义的滤波,比如卷积就可以看成是一种滤波。对于一般意义上的滤波其实就是去除信号当中不需要的频率成分,利用滤波器(高低通)加权去除信号中的带外成分。

二、keil下中值滤波的实现

1、流程框图

在这里插入图片描述

2、中值滤波相关代码

AREA SORT,CODE,READONLY
 	ENTRY
 	EXPORT __main
__main
 	MOV R0 ,#9
 	LDR R2,=0x40000000
 	SUB R1,R0,#1
 	MOV R4,#4
 	MLA R3,R1,R4,R2
 	SUB R4,R3,#4
LOOP1	ADD R5,R2,#4
LOOP2	LDR R6,[R2]   
 	LDR R7,[R5]
 	CMP R6,R7
 	STRHI R6,[R5]
 	STRHI R7,[R2]
 	ADD R5,R5,#4
 	CMP R5,R3
 	BLS LOOP2
 	ADD R2,R2,#4
 	CMP R2,R4
 	BLS LOOP1
 	LDR R2,=0X40000000
 	MOV R0,R0,LSR #1
 	MOV R4,#4
 	MLA R3,R0,R4,R2
 	LDR R1,[R3]
 	MOV R0,#100
 	END

在这里插入图片描述


总结

通过学习keil下汇编指令实现中值滤波,大概了解了滤波的意义及作用,更加熟悉了keil环境下的操作,在学习过程中也有遇到许多的问题,比如说对汇编指令的不熟悉、不了解,让我在编写程序实现功能的过程中挺痛苦的,不过这些通过查阅资料都得到了解决,加油!

猜你喜欢

转载自blog.csdn.net/wer4567/article/details/127214284