使用什么类型的平滑?

Sim*_*mon 6 algorithm filter smoothing

不确定这在SO上是否可能有效,但我希望有人可以建议使用正确的算法.

我有以下RAW数据. 在此输入图像描述

在图像中,您可以看到"步骤".基本上我希望得到这些步骤,但随后获得所有数据的移动平均值.在下图中,您可以看到移动平均线:

在此输入图像描述

但是你会注意到,在"步"处,移动平均线减小了我想保持高垂直梯度的梯度.

是否有任何平滑技术会考虑大的垂直"偏移",但平滑其他数据?

Dar*_*enW 3

是的,我必须对来自航天器的图像做类似的事情。

简单技巧#1:使用宽度适中的中值滤波器 - 例如大约 5 个样本或 7 个样本。这提供的输出值是相应输入值及其两侧的几个直接邻居的中值。它将消除这些尖峰,并很好地保护台阶边缘。

我所知道的所有数字处理工具包(例如 Matlab、Python/Numpy、IDL 等)以及用于编译语言(例如 C++、Java)的库中都提供了中值滤波器(尽管现在还没有想到具体名称)。 ..)

技术#2,也许不太好:使用 Savitzky-Golay 平滑滤波器。这是通过使用相应的输入样本和点的邻域(非常类似于中值滤波器)在每个输出样本处有效地对数据进行最小二乘多项式拟合来实现的。SG 平滑器以非常擅长保留峰值和尖锐过渡而闻名。

SG 滤波器通常由大多数信号处理和数字处理包提供,但可能不如中值滤波器那么常见。

技术#3,工作量最大,需要最多的经验和判断力: 继续使用更平滑的方法(移动框平均值、高斯曲线等),然后创建一个在原始数据与平滑数据之间混合的输出。混合由您创建的新数据系列控制,范围从全原始(混合 0% 平滑)到全平滑(100%)。

要控制混合,请从边缘检测器开始检测跳跃。您可能需要首先对数据进行中值过滤以消除尖峰。然后加宽(图像处理术语中的扩张)或平滑并重新规范化边缘检测器的输出,然后翻转它,以便在跳跃处和附近给出 0.0,在其他地方给出 1.0。也许您希望平稳过渡加入他们。正确地做到这一点是一门艺术,这取决于数据的使用方式——对我来说,通常是人类查看的图像。如果进行不同的调整,自动化嵌入式控制系统可能会工作得最好。

这项技术的主要优点是您可以插入任何您喜欢的平滑滤波器。当混合控制值为零时,它不会产生任何效果。主要缺点是跳跃(由操纵的边缘检测器输出定义的小邻域)将包含噪声。