TransWikia.com

How to reduce latency under mean filter for high noise?

Signal Processing Asked by Christopher Oezbek on January 8, 2021

We have a position sensor that under some conditions receives some high frequency noise. We can eliminate that very well with a simple mean filtering.

Tracking data sampling and n=30 mean filtering

Unfortunately this causes too much lag when there is not any noise (at the beginning of the graph at s=90 to 95). Thus we have been experimenting with Savitzky-Golay filtering:

Savitzky-Golay grade 3, f=0.9

However, the results are not that great. The filtering under heavy noise is worse than mean filtering (Or the latency reduction is not that good). What else can we do?

Some more background:

  • The problem is an online problem, so we cannot retrospectively analyze the data and for instance shift the mean by half a period.
  • The ‘regular’ movement is performed by a human moving an object, the ‘noise’ is from a high frequency vibration.

3 Answers

Saying that your signal is «really low frequency» while you need to have low delay/smearing in order to capture it seems like a contradiction.

If you can describe what (aspects of) the inputsignal that you need to preserve are, and what the noise is like, perhaps a better solution presents itself.

The easiest solution will be some kind of lowpass filter, and they come with a set of trade-offs.

-k

Answered by Knut Inge on January 8, 2021

Although this is an old entry and probably the author of the question has already solved the issue, I leave here my solution, just in case, it could help someone else.

As explained in the question, you need a kind of real-time "smoother" for the trajectory. You are going to have trade-offs: speed, latency, energy efficiency, etc.

I propose to use Alpha-Beta filters, Moving Average Filters or some kind of Adaptative Average filter. They should be faster, easy to implement and with less latency than Kalman filter or similar. I have made a couple of tests, trying to reproduce the type of data used in the question, and testing those filters with quick(and nasty) own implementations. The results are shown below in the next figures:

enter image description here

enter image description here

Cheers.

P.D. Probably, the vibration noise commented in the original question is not absolutely uncorrelated. The data I have generated is using random noise.

Answered by Arritmic on January 8, 2021

There are two possible methods that you can try.

  • Polynomial approximation (Spline fitting)
  • Total variation denoising

In polynomial approximation, you can try to fit polynomial approximation of the entire data vector. In total variation denoising, you can regulate the amount of sparsity seen in the first-order difference term using the regularization parameter $lambda$. In other words, under heavy noise, the first order difference of the input data is sparse.

Answered by Maxtron on January 8, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP