当前位置:   article > 正文

嵌入式常用的算法 - 简易滤波_嵌入式视频降噪算法有哪些

嵌入式视频降噪算法有哪些

简易滤波是一种数字信号处理技术,用于对数字信号进行预处理。它的主要目的是减少信号中的噪声并增加信号的信噪比。简易滤波的方式有很多种,我这里只是抛砖引玉介绍其中一种组合。

简单滤波主要有两种类型,分别是线性滤波和非线性滤波。线性滤波是基于线性运算的,主要有平均滤波和卷积滤波。平均滤波是通过将一段信号平均分割成若干部分来减少噪声。而卷积滤波是通过将信号和一个卷积核进行卷积来减少噪声。

非线性滤波则是基于非线性运算的,主要有中值滤波和滤波器滤波。中值滤波是通过将一段信号排序并取中间值来减少噪声。而滤波器滤波则是通过将信号与一个滤波器进行卷积来减少噪声。

/**
 * @brief			简单滤波
 * @param[out]		lpf : 滤波结构数据指针
 * @param[in]		rawData : 原始数据
 */
void SimpleFilter(LpfSimple_t* lpf, int16_t rawData)
{
	int16_t FilterBuffSort[SimpleFilterDepth] = {0};	// 暂存排序值

    lpf->OriginData = rawData;
    // 滑动递推更新旧值
    for (uint16_t i = 1; i < SimpleFilterDepth; i ++ ) {
    	lpf->FilterBuff[i] = lpf->FilterBuff[i - 1];
    }
	// 简单强制消抖 加权存入新值
    if ((fabs(lpf->OriginData - lpf->FilterBuff[0])) < 2.0f) {
    	lpf->FilterBuff[0] = lpf->OriginData * 0.70f + lpf->FilterBuff[0] * 0.30f;
    } else {
    	lpf->FilterBuff[0] = lpf->OriginData;
    }
	// 存储待排序值
	memcpy(FilterBuffSort, lpf->FilterBuff, sizeof(lpf->FilterBuff));
	// 升序排序
	Quick_Sort(FilterBuffSort, 0, sizeof(lpf->FilterBuff) - 1, 0);
	// 中值滤波
	lpf->FilterBuff[0] = 0;    // 先清零
	for (uint16_t i = 2; i < (SimpleFilterDepth - 2); i ++ ) {
		lpf->FilterBuff[0] += FilterBuffSort[i];
	}
	lpf->FilterBuff[0] = lpf->FilterBuff[0] / (SimpleFilterDepth - 4);	// 去除四个极值再计算均值
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

这是一种简单易懂,实现简单的信号预处理技术,它主要用于去除噪声并增加信噪比。但是在处理复杂噪声和对信号时域性能要求较高的场合中,简单滤波的效果会变得不如其他复杂的滤波算法,需要根据具体应用场景进行权衡。

其中,中位滤波是通过将信号排序并取中间值来减少噪声。而滤波器滤波则是通过将信号与一个滤波器进行卷积来减少噪声。

上面代码对应的.h文件的结构体的内容如下

#define SimpleFilterDepth 10
typedef struct {
	int16_t OriginData;
	int16_t FilterBuff[SimpleFilterDepth];
} LpfSimple_t;
  • 1
  • 2
  • 3
  • 4
  • 5

简单滤波的优点是简单易懂,实现简单。但是它的缺点是对于复杂噪声的消除效果较差。而且它可能会导致信号的时域性能变差。

在实际应用中,简单滤波算法可能并不能完全满足需求,需要结合其他的滤波算法来提高信号处理的效果。例如,在信号处理中,可以先使用简单滤波算法进行噪声消除,再使用其他复杂滤波算法进行信号增强。

滤波是信号处理中重要的一环,它可以有效减少噪声并提高信噪比,但是在处理复杂噪声和对信号时域性能要求较高的场合中,需要结合其他的滤波算法来获得更好的处理效果。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/1013013
推荐阅读
相关标签
  

闽ICP备14008679号