On Sun, 14 May 2017 13:38:03 +0200
Frédéric <fma38@???> wrote:
> Tu peux aussi sortir l'artillerie lourde :
>
> https://en.wikipedia.org/wiki/Kalman_filter
>
C'est interessant ... pour une autre partie du code.
J'ai une tête tilt/pan avec une camera pour faire des time-laps. Elle
mesure régulièrement le luma et la balance des blancs et je cherche a
faire une moyenne temporelle, pondéré, sachant que la luminosité varie
(lentement) et qu'il y a beaucoup de bruit (entre autre car la tête bouge).
Mon expérience avec un filtre de Savitsky-Golay sur une fenêtre
glissante avait donné de "bons" resultats, par exemple, mais
j'etudierai Kalman:
http://video.terre-adelie.org/2016/2016-08-05-Hovsund/video.mp4
Pour le SG, l'interet c'est la breveté du code:
class SavGol(object):
"Class for Savitsky-Golay filtering"
def __init__(self, order=2):
"select the order of the filter"
self.order = order
self.cache = {} #len, filter
def filter(lst):
"filter a list. the last having the more weight"
l = len(lst)
if l%2 == 0:
lst = numpy.array(lst[1:])
l -= 1
else:
lst = numpy.array(lst)
if l not in self.cache:
self.cache[l] = scipy.signal.savgol_coeffs(l, self.order, pos=0)
return numpy.dot(lst, self.cache[l])
Pour la partie accelero, le code est là:
https://github.com/kif/yocto-meteo-plugin/blob/master/accelero.py
A++ et merci pour l'idée.
Jerome