平滑滤波笔记

叠加在有用数据上的随机噪声在很多情况下可以近似地认为是白噪声。白噪声具有一个很重要的统计特性,即它的统计平均值为零。因此可以求平均值的办法来消除随机误差,这就是所谓平滑滤波。平滑滤波有以下几种:
#####1. 算术平均滤波法
算术平均滤波法适用于对一般的具有随机干扰的信号进行滤波。这种信号的特点是信号本身在某一数值范围附近上下波动,如测量流量、液位时经常遇到这种情况。
算术平均滤波是要按输入的N个采样数据xi,寻找这样一个y,使y与各采样值之间的偏差的平方和最小,即使
1
由一元函数求极值的原理,可得
2算术平均滤波的算式
设第i次测量的测量值包含信号成分Si和噪声成分ni,则进行N次测量的信号成分之和
3
噪声的强度是用均方根来衡量的,当噪声为随机信号时,进行次测量的噪声强度之和
4
式中,S、n分别为进行N次测量后信号和噪声的平均幅度。

对N次测量进行算术平均后的信噪比
5
式中,S/n是求算术平均值前的信噪比,因此采用算术平均值后,信噪比提高了√N倍。
由上式可知,算术平均值法对信号的平滑滤波程度完全取决于N。
当N较大时:
平滑度高,但灵敏度低,外界信号的变化对测量计算结果的影响小;
当N较小时:
平滑度低,但灵敏度高。应按具体情况选取N。
如对一般流量测量,可取N=8~12;对压力等测量,可取N=4。

#####2. 递推平均滤波法
算术平均滤波方法每计算一次数据,需测量N次,对于测量速度较慢或要求数据计算速率较高的实时系统,则无法使用。
递推平均滤波法:在存储器中,开辟一个区域作为暂存队列使用,队列的长度固定为N,每进行一次新的测量,把测量结果放入队尾,而扔掉原来队首的那个数据,这样在队列中始终有个“最新”的数据。
6
式中,y(k)为第k次滤波后的输出值,x(k-i)为依次向前递推i次的采样值,N为递推平均项数。
递推平均项数的选取是比较重要的环节,N选得过大,平均效果好,但是,对参数变化的反应不灵敏;N选得过小,滤波效果不显著。关于N的选择与算术平均滤波法相同。

#####3. 加权移动平均滤波法
递推平均滤波法最大的问题是随着随机误差的消除,有用信号的灵敏度也降低了。因为我们假设对于N次内的所有采样值,在结果中所占比重是均等的。用这样的滤波算法,对于时变信号会引入滞后。N越大,滞后越严重。为了增加新的采样数据在滑动平均中的比重,以提高系统对当前采样值中所受干扰的灵敏度,可以对不同时刻的采样值加以不同的权,通常越接近现时刻的数据,权取得越大。然后再相加求平均,这种方法就是加权移动平均法。
N项加权移动平均滤波算法为
7
式中,y为第N次采样值经滤波后的输出;x(N-i)为未经滤波的第N-i次采样值;8为常数,且满足以下条件:
9
常系数的选取有多种方法,其中最常用的是加权系数法。
设τ为被测对象的纯滞后时间,且
10
因为τ越大,δ越小,则给予新的采样值的权系数就越大,而给先前采样值的权系数就越小,从而提高了新的采样值在平均过程中的比重。
所以,加权移动平均滤波适用于有较大纯滞后时间常数的被测对象和采样周期较短的测量系统,而对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号,则不能迅速反映系统当前所受干扰的严重程度,滤波效果较差。

参考:《传感器与检测技术(第4版)》 徐科军主编。

  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在数字图像处理中,图像滤波是非常常见的一种操作。而均值滤波和高斯滤波是最常见的滤波算法之一。下面我们就来介绍一下均值滤波和高斯滤波的原理和实现。 ## 1. 均值滤波 均值滤波是最简单的一种线性滤波算法。其原理是对图像中每个像素点的邻域像素进行平均值操作,以达到去除噪声的目的。均值滤波的模板可以是任意大小的,通常使用 3×3 或 5×5 的模板。 ### 1.1 均值滤波原理 均值滤波的原理是将图像中每个像素点的邻域像素值进行平均,然后将该平均值作为当前像素点的像素值。均值滤波可以消除图像中的噪声,但是也会导致图像的模糊。 ### 1.2 均值滤波实现 均值滤波的实现非常简单,只需要对每个像素点的邻域像素值进行求和,然后再除以邻域像素的数量即可。具体步骤如下: 1. 定义一个与原图像大小相同的新图像。 2. 对每个像素点的邻域像素进行求和,然后求平均值。 3. 将平均值作为当前像素点的像素值,赋值给新图像。 代码实现如下: ```java public static BufferedImage meanFilter(BufferedImage img, int size) { int width = img.getWidth(); int height = img.getHeight(); int half = size / 2; BufferedImage result = new BufferedImage(width, height, img.getType()); for (int i = half; i < height - half; i++) { for (int j = half; j < width - half; j++) { int sum = 0; for (int k = -half; k <= half; k++) { for (int l = -half; l <= half; l++) { sum += new Color(img.getRGB(j + l, i + k)).getRed(); } } int value = sum / (size * size); result.setRGB(j, i, new Color(value, value, value).getRGB()); } } return result; } ``` 其中,size 为模板大小。 ## 2. 高斯滤波 高斯滤波是一种线性平滑滤波算法,与均值滤波不同的是,它使用的是高斯核函数。高斯核函数可以减小图像中噪声的影响,同时也不会使图像过度模糊。 ### 2.1 高斯滤波原理 高斯滤波的原理是利用高斯函数的特性,对图像中每个像素点的邻域像素值进行加权平均,以达到去除噪声的目的。高斯滤波也可以消除图像中的噪声,同时保留更多的图像细节。 ### 2.2 高斯滤波实现 高斯滤波的实现需要先生成一个高斯核,然后对每个像素点的邻域像素进行加权平均。具体步骤如下: 1. 定义一个与原图像大小相同的新图像。 2. 生成一个高斯核。 3. 对每个像素点的邻域像素进行加权平均,然后将加权平均值作为当前像素点的像素值,赋值给新图像。 代码实现如下: ```java public static BufferedImage gaussianFilter(BufferedImage img, int size, double sigma) { int width = img.getWidth(); int height = img.getHeight(); int half = size / 2; double[][] kernel = gaussianKernel(size, sigma); BufferedImage result = new BufferedImage(width, height, img.getType()); for (int i = half; i < height - half; i++) { for (int j = half; j < width - half; j++) { double sum = 0; for (int k = -half; k <= half; k++) { for (int l = -half; l <= half; l++) { int pixel = new Color(img.getRGB(j + l, i + k)).getRed(); sum += kernel[k + half][l + half] * pixel; } } int value = (int) Math.round(sum); value = Math.min(255, Math.max(0, value)); result.setRGB(j, i, new Color(value, value, value).getRGB()); } } return result; } ``` 其中,size 为高斯核大小,sigma 为高斯核标准差。 高斯核函数的生成可以使用以下代码: ```java public static double[][] gaussianKernel(int size, double sigma) { double[][] kernel = new double[size][size]; double sum = 0; int half = size / 2; for (int i = -half; i <= half; i++) { for (int j = -half; j <= half; j++) { kernel[i + half][j + half] = Math.exp(-(i * i + j * j) / (2 * sigma * sigma)); sum += kernel[i + half][j + half]; } } for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { kernel[i][j] /= sum; } } return kernel; } ``` 以上就是均值滤波和高斯滤波的原理和实现。需要注意的是,滤波操作会导致图像的模糊,因此在使用滤波算法时需要根据具体应用场景选择合适的滤波方法和参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值