Yo también he trabajado con ese tipo de algoritmos y tras bastante tiempo de probar y probar código lo deje estar. Mi problema estaba en las integrales. Aún haciendo la calibración del acelerometro, se introducía un pequeño valor constante que se hiba haciendo más y más grande en las integrales conforme pasaba el tiempo.
Si la entrada es f(t), y c una pequeña constante...
integral( f(t) + c ,t ) = integral(f(t),t) + c*t
La señal de salida es la integral deseada más un valor que crece con el tiempo...
Ahora la segunda integral (que según comentas no es necesaria para el mouse)
integral( integral(f(t),t) + c*t, t ) = integral(integral(f(t),t),t) + 1/2 * c * t^2 !!!
Para un muestreo de 1Khz, pasados unas fracciones de segundo el error supera varias veces la señal que queremos obtener...
Para corregir la señal también utilicé filtros digitales, pero no conseguí nada aceptable. Poco antes de abandonar el asunto estuve indagando sobre los filtros de Kalman, pero creo que necesitas más sensores aparte del acelerometro para poder utilizarlos.
Aqui los dos links por si alguien quiere obtener mas informacion sobre el tema, incluyendo un video del algoritmo funcionando:
http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdfhttp://www-users.cs.york.ac.uk/~fisher/mkfilter/trad.html