Tuesday 16 May 2017

Filtro Exponencial Em Movimento Média Baixa Passagem


Filtro passa-baixa Essas são principalmente notas. Não será completa em nenhum sentido. Existe para conter fragmentos de informações úteis. Pseudocódigo A média móvel ponderada exponencialmente (EWMA) é o nome para o que é provavelmente a mais fácil realização digital, no domínio do tempo, do passe baixo (de primeira ordem) em dados discretos. Este filtro suaviza usando uma média local em movimento, o que o torna um seguidor lento do sinal de entrada. Intuitivamente, ele responderá lentamente às mudanças rápidas (o conteúdo de alta freqüência) enquanto ainda segue a tendência geral do sinal (o conteúdo de baixa freqüência). É pesado por uma variável (veja x3b1) para poder variar sua sensibilidade. Em aplicativos que são amostrados em um intervalo regular (por exemplo, som), você pode relacionar x3b1 com o conteúdo de freqüência. Nesses casos, muitas vezes você quer calcular uma série de saída filtrada para uma série de entrada, fazendo um loop através de uma lista fazendo algo como: ou o equivalente: a última forma pode se sentir mais intuitiva: a mudança na saída filtrada é proporcional à quantidade de Muda e pesa pela força do filtro x3b1. Ambos podem ajudar a considerar como o uso da saída filtrada recente dá a inércia do sistema: um x3b1 menor (maior 1-x3b1 no primeiro) (também faz RC maior) significa que a saída se ajustará mais lenta e deve mostrar menos ruído (desde a A freqüência de corte é menor (verifique)). Um maior x3b1 (menor 1-x3b1) (RC menor) significa que a saída se ajustará mais rapidamente (terá menos inércia), mas será mais sensível ao ruído (uma vez que a freqüência de corte é maior (verifique)). Como o cálculo é local, os casos Onde você quer apenas o valor mais recente, pode evitar armazenar uma grande variedade, fazendo o seguinte para cada nova amostra (muitas vezes um monte de vezes seguidas, para se certificar de que podemos ajustar o suficiente). Em casos de amostragem não tão regular x3b1 está mais relacionado à velocidade de adaptação do que ao conteúdo de frequência. Ainda é relevante, mas as notas sobre o conteúdo de freqüência se aplicam de forma menos estrita. Você normalmente deseja implementar a arraymemory como flutuadores - mesmo se você retornar - para evitar problemas causados ​​por erros de arredondamento. A maior parte do problema: quando a alfadiferença (em si uma multiplicação flutuante) é inferior a 1, torna-se 0 em um elenco (truncatng) para um inteiro. Por exemplo, quando o alfa é 0,01, as diferenças de sinal menores que 100 farão um ajuste de 0 (via truncamento inteiro), de modo que o filtro nunca se ajustaria ao valor atual do ADC. O EWMA tem a palavra exponencial, porque cada nova saída filtrada efetivamente usa todos os valores antes dele e efetivamente com pesos exponencialmente decadentes. Veja os links do wikipedia para mais discussões. Um exemplo gráfico: Uma captura de tela do arduinoscope - um gráfico em movimento, com as amostras mais recentes à esquerda. O sinal bruto no topo é um valor de alguns segundos de uma amostragem ADC de um pino flutuante, com um dedo tocá-lo de vez em quando. Os outros são versões baixas do mesmo, aumentando os pontos fortes. Algumas coisas a observar sobre isso: o ajuste exponencial lento para respostas semelhantes a um passo (bem como um capacitor de carregamento - rapidamente, inicialmente, mais lento e lento) a supressão de grandes desvios de pontos. Que é certamente possível filtrar muito difícil (embora esse julgamento dependa muito da velocidade de amostragem e das freqüências de conteúdo de adaptação que sua finalidade precisa). Na segunda imagem, a oscilação de alcance total surge a meio caminho não tanto por causa da filtragem, mas também em grande parte porque a maioria das amostras em bruto por aí estão saturadas em qualquer extremidade da gama de ADCs. No x3b1, x3c4 e na frequência de corte, esta seção de artigos é um talão x2014, provavelmente uma pilha de notas de meia ordem, não está bem verificada, então pode ter bits incorretos. (Sinta-se livre para ignorar, corrigir ou me dizer) x3b1 é o fator de suavização, teoricamente entre 0,0 e 1,0, na prática geralmente lt0.2 e, muitas vezes, lt0.1 ou menor, porque acima, você apenas faz filtragem. No DSP geralmente é baseado em: x394 t. Escrito regularmente dt. O intervalo de tempo entre amostras (recíproco da taxa de amostragem) uma escolha de constante de tempo x3c4 (tau), aka RC (o último parece uma referência a um circuito resistor-plus-capacitor, que também faz passagem baixa. Especificamente, RC dá o tempo em Que o capacitor cobra Se você escolher um RC perto de dt, você terá alphas superior a 0,5, e também uma freqüência de corte que está perto da freqüência nyquist (acontece em 0.666 (verificar)), que filtra tão pouco que faz o filtro Na prática, muitas vezes você escolhe um RC que é pelo menos alguns múltiplos de dt, o que significa que x3b1 é da ordem de 0,1 ou menos. Quando a amostragem acontece estritamente regularmente, como é para o som e muitos outros aplicativos DSP A freqüência de corte é a freqüência do joelho, bem definida, sendo: por exemplo, quando RC0.002sec, o ponto de corte está na amostra de 200Hz, 2000Hz e 20000Hz, o que faz alphas de 0.7, 0.2 e 0.024, respectivamente. (Com a mesma velocidade de amostragem: o alfa inferior é, th E mais lento a adaptação a novos valores e menor a freqüência de corte efetiva) (verificar) Para um passo baixo de primeira ordem: em freqüências mais baixas, a resposta é quase completamente plana, a essa freqüência a resposta é -3dB (começou a diminuir em um Flexk suave) em frequências mais elevadas ele cai a 6dboctave (20dBdecade) As variações de ordem superior caem mais rápido e têm um joelho mais difícil. Observe que também haverá uma mudança de fase, que fica para trás da entrada. Depende da frequência que começa antes da queda da amplitude e será de -45 graus na frequência do joelho (verifique). Arduino exemplo Esta seção de artigos é um talão x2014 provavelmente uma pilha de notas de meia ordem, não está bem verificado, então pode ter bits incorretos. (Sinta-se livre para ignorar, corrigir ou me dizer) Esta é uma versão de uma peça de memória, pois quando você está interessado apenas no (mais recente) valor de saída. Semi-classificados Atualizado 12 de março de 2013 O que é o RC Filtering e a média exponencial e como eles diferem. A resposta para a segunda parte da questão é que eles são o mesmo processo. Se um vem de um fundo eletrônico, então RC Filtering (ou RC Smoothing) é A expressão usual. Por outro lado, uma abordagem baseada em estatísticas de séries temporais tem o nome de Exponential Averaging, ou para usar o nome completo, Promessa ponderada exponencial média. Isso também é conhecido como EWMA ou EMA. Uma vantagem chave do método é a simplicidade da fórmula para calcular a próxima saída. Demora uma fração da saída anterior e uma menos esta fração vezes a entrada atual. Algebraicamente no momento k, a saída suavizada y k é dada por Como mostrado mais adiante, esta fórmula simples enfatiza eventos recentes, suaviza as variações de alta freqüência e revela tendências de longo prazo. Observe que existem duas formas da equação de média exponencial, a acima e uma variante. Ambos estão corretos. Veja as notas no final do artigo para obter mais detalhes. Nesta discussão, usaremos apenas a equação (1). A fórmula acima é às vezes escrita de forma mais limitada. Como esta fórmula é derivada e qual é a sua interpretação Um ponto-chave é como selecionamos. Examinar essa maneira simples é considerar um filtro passa-baixo RC. Agora, um filtro passa-baixo RC é simplesmente uma resistência série R e um capacitor paralelo C conforme ilustrado abaixo. A equação da série de tempo para este circuito é O produto RC tem unidades de tempo e é conhecido como constante de tempo, T. Para o circuito. Suponhamos que representamos a equação acima em sua forma digital para uma série de tempo que tenha dados dados cada h segundos. Nós temos exatamente a mesma forma que a equação anterior. Comparando os dois relacionamentos por um que temos, o que reduz ao relacionamento muito simples. Daí a escolha de N é guiada pela constante de tempo que escolhemos. Agora, a equação (1) pode ser reconhecida como um filtro passa-baixa e a constante de tempo tipifica o comportamento do filtro. Para ver o significado da Constante de Tempo, precisamos olhar para a característica de freqüência desse filtro RC de passagem baixa. Em sua forma geral, esta é Expressar em módulo e forma de fase onde temos o ângulo de fase. A freqüência é chamada de freqüência de corte nominal. Fisicamente, pode-se mostrar que, a essa freqüência, a potência no sinal foi reduzida pela metade e a amplitude é reduzida pelo fator. Em termos de dB, esta frequência é onde a amplitude foi reduzida em 3dB. Claramente, à medida que a constante de tempo T aumenta, então a freqüência de corte reduz e aplicamos mais alisamento aos dados, ou seja, eliminamos as freqüências mais altas. É importante notar que a resposta de freqüência é expressa em radians por segundo. Isso é um fator envolvido. Por exemplo, escolher uma constante de tempo de 5 segundos dá uma freqüência de corte efetiva de. Um uso popular do alisamento de RC é simular a ação de um medidor, como é usado em um medidor de nível de som. Estes geralmente são tipificados por sua constante de tempo, como 1 segundo para tipos S e 0,125 segundos para tipos F. Para estes 2 casos, as freqüências de corte efetivas são 0,16 Hz e 1,27 Hz, respectivamente. Na verdade, não é a constante de tempo que geralmente desejamos selecionar, mas os períodos que desejamos incluir. Suponhamos que tenhamos um sinal onde desejamos incluir recursos com um segundo período de P. Agora, um período P é uma freqüência. Poderíamos então escolher uma constante de tempo T dada por. No entanto, sabemos que perdemos cerca de 30 da saída (-3dB) em. Assim, escolher uma constante de tempo que corresponde exatamente às periodicidades que desejamos manter não é o melhor esquema. Geralmente, é melhor escolher uma freqüência de corte ligeiramente maior, digamos. A constante de tempo é então que, em termos práticos, é semelhante. Isso reduz a perda para cerca de 15 nesta periodicidade. Portanto, em termos práticos, reter eventos com periodicidade ou maior, escolha uma constante de tempo de. Isso incluirá os efeitos das periodicidades de baixo para baixo. Por exemplo, se desejamos incluir os efeitos de eventos que aconteçam com digamos um período de 8 segundos (0.125Hz), então escolha uma constante de tempo de 0,8 segundos. Isso dá uma freqüência de corte de aproximadamente 0,2 Hz para que nosso período de 8 segundos esteja bem na faixa de passagem principal do filtro. Se estivéssemos amostragem dos dados em 20 timessecond (h 0.05), então o valor de N é (0.80.05) 16 e. Isso dá uma visão sobre como configurar. Basicamente, para uma taxa de amostragem conhecida tipifica o período de média e seleciona quais flutuações de alta freqüência serão ignoradas. Ao olhar para a expansão do algoritmo, podemos ver que ele favorece os valores mais recentes, e também porque é referido como ponderação exponencial. Nós substituímos por y k-1 dá Repita este processo várias vezes leva a Porque está no intervalo então claramente os termos à direita tornam-se menores e se comportam como uma exponencial em decomposição. Essa é a saída atual é tendenciosa em relação aos eventos mais recentes, mas quanto maior, nós escolhemos T, então, o menor preconceito. Em resumo, vemos que a fórmula simples enfatiza eventos recentes suaviza eventos de alta freqüência (período curto) revela tendências de longo prazo Apêndice 1 8211 Formas alternativas da equação Cuidado Há duas formas da equação de média exponencial que aparecem na literatura. Ambos são corretos e equivalentes. A primeira forma, como mostrado acima, é (A1) O formulário alternativo é 8230 (A2) Observe o uso na primeira equação e na segunda equação. Em ambas as equações e são valores entre zero e unidade. Anteriormente, foi definido como Agora escolhendo para definir. Portanto, a forma alternativa da equação de média exponencial é, em termos físicos, significa que a escolha da forma uma usa depende de como alguém quer pensar em tomar como a equação da fração retroativa (A1) ou Como a fração da equação de entrada (A2). A primeira forma é um pouco menos pesada ao mostrar a relação de filtro RC e leva a uma compreensão mais simples em termos de filtro. Analista principal de processamento de sinal da Prosig. Dr. Colin Mercer anteriormente era o Institute of Sound and Vibration Research (ISVR), da Universidade de Southampton, onde fundou o Data Analysis Center. Ele então passou a encontrar a Prosig em 1977. Colin se aposentou como Analista Principal de Processamento de Sinais em Prosig em dezembro de 2016. Ele é um engenheiro fretado e um membro da British Computer Society. Eu acho que você deseja mudar o 8216p8217 para o símbolo para pi. Marco, obrigado por apontar isso. Eu acho que este é um dos nossos artigos mais antigos que foi transferido de um documento antigo de processamento de texto. Obviamente, o editor (eu) não conseguiu detectar que o pi não havia sido transcritos corretamente. Isso será corrigido em breve. É uma boa explicação do artigo sobre a média exponencial. Creio que há um erro na fórmula para T. Ele deve ser T h (N-1), não T (N-1) h. Mike, obrigado por detectar isso. Acabei de verificar a nota técnica original do Dr. Mercer8217 em nosso arquivo e parece que houve erro ao transferir as equações para o blog. Vamos corrigir a publicação. Obrigado por nos informar. Obrigado, obrigado, obrigado. Você pode ler 100 textos DSP sem encontrar nada dizendo que um filtro de média exponencial é o equivalente a um filtro R-C. Hmm, você tem a equação para um filtro EMA correto, não é Yk aXk (1-a) Yk-1 em vez de Yk aYk-1 (1-a) Xk Alan, ambas as formas da equação aparecem na literatura, e Ambos os formulários estão corretos, como vou mostrar abaixo. O ponto que você faz é importante porque usar a forma alternativa significa que a relação física com um filtro RC é menos aparente, além disso, a interpretação do significado de um mostrado no artigo não é apropriada para o formulário alternativo. Primeiro, mostre que ambos os formulários estão corretos. A forma da equação que eu usei é e a forma alternativa que aparece em muitos textos é Nota no acima, usei latex 1latex na primeira equação e latex 2latex na segunda equação. A igualdade de ambas as formas da equação é mostrada matematicamente abaixo, tomando passos simples de cada vez. O que não é o mesmo é o valor usado para látex latex em cada equação. Em ambas as formas latex latex é um valor entre zero e unidade. Primeira equação de reescrita (1) substituindo latex 1latex por latex latex. Isso dá latexyk y (1 - beta) xklatex 8230 (1A) Agora defina latexbeta (1 - 2) látex e também temos latex 2 (1 - beta) látex. Substituindo estes na equação (1A) dá latexyk (1 - 2) y 2xklatex 8230 (1B) E, finalmente, reorganizar dá Esta equação é idêntica à forma alternativa dada na equação (2). Coloque mais látex de latex 2 (1 - 1). Em termos físicos, significa que a escolha da forma uma usa depende de como se quer pensar em tomar latexalphalatex como a equação da fração retrocessora (1) ou como a fração da equação de entrada (2). Como mencionado acima, usei o primeiro formulário, uma vez que é um pouco menos pesado ao mostrar a relação de filtro RC e leva a uma compreensão mais simples em termos de filtro. No entanto, omitir o acima é, na minha opinião, uma deficiência no artigo, já que outras pessoas podem fazer uma inferência incorreta, então uma versão revisada aparecerá em breve. Sempre me perguntei sobre isso, obrigado por descrevê-lo tão claramente. Eu acho que outro motivo para a primeira formulação é agradável é o mapa alfa para 8216smoothness8217: uma escolha maior de alfa significa uma saída 8216 mais suave8217. Michael Obrigado pela observação 8211 Eu adicionarei ao artigo algo nessas linhas, pois sempre me parece melhor relacionar-me com os aspectos físicos. Dr. Mercer, excelente artigo, obrigado. Eu tenho uma pergunta sobre a constante de tempo quando usado com um detector rms como em um medidor de nível de som que você se refere no artigo. Se eu usar suas equações para modelar um filtro exponencial com Constante de Tempo 125ms e usar um sinal de passo de entrada, eu realmente recebo uma saída que, após 125ms, é 63.2 do valor final. No entanto, se eu quadrado o sinal de entrada e coloque isso através do filtro, vejo que preciso dobrar a constante de tempo para que o sinal atinja 63,2 de seu valor final em 125ms. Você pode me informar se isso é esperado? Muito Obrigado. Ian Ian, se você marcar um sinal como uma onda senoidal, basicamente, você está dobrando a freqüência de sua fundamental, além de apresentar muitas outras freqüências. Como a freqüência foi efetivamente dobrada, está sendo 8216 reduzida8217 por uma quantidade maior pelo filtro passa-baixa. Em conseqüência, leva mais tempo para atingir a mesma amplitude. A operação de quadratura é uma operação não linear, então eu não acho que sempre dobrará precisamente em todos os casos, mas tenderá a dobrar se tivermos uma baixa freqüência dominante. Observe também que o diferencial de um sinal quadrado é o dobro do diferencial do sinal 8220un-squared8221. Eu suspeito que você esteja tentando obter uma forma de alisamento quadrático médio, que é perfeitamente bom e válido. Pode ser melhor aplicar o filtro e depois quadrado, como você conhece o ponto de corte efetivo. Mas se tudo o que você tiver é o sinal ao quadrado, então, usando um fator de 2 para modificar seu valor alfa do filtro, você irá retornar à freqüência de corte original, ou colocando um pouco mais simples, defina sua freqüência de corte duas vezes o original. Obrigado pela sua resposta, Dr. Mercer. Minha pergunta estava realmente tentando entender o que realmente é feito em um detector de rms de um medidor de nível sonoro. Se a constante de tempo estiver definida para 8216fast8217 (125ms), teria pensado que, intuitivamente, você esperaria um sinal de entrada sinusoide para produzir uma saída de 63,2 de seu valor final após 125ms, mas como o sinal está sendo quadrado antes de chegar ao 8216mean8217 Detecção, na verdade, levará duas vezes o tempo que você explicou. O objetivo principal do artigo é mostrar a equivalência da filtragem RC e da média exponencial. Se estamos discutindo o tempo de integração equivalente a um verdadeiro integrador retangular, você está correto que há um fator de dois envolvidos. Basicamente, se possuímos um verdadeiro integrador retangular que se integra aos segundos de Ti, o tempo do integerador RC equivalente para alcançar o mesmo resultado é 2RC segundos. Ti é diferente do RC 8216time constant8217 T que é RC. Assim, se tivermos uma constante de tempo 8216Fast8217 de 125 ms, isso é RC 125 ms, então isso é equivalente a um verdadeiro tempo de integração de 250 ms. Obrigado pelo artigo, foi muito útil. Existem alguns trabalhos recentes em neurociência que usam uma combinação de filtros EMA (EMA de janela curta com espaço largo EMA 8211) como um filtro passa-banda para análise de sinal em tempo real. Eu gostaria de aplicá-los, mas estou lutando com os tamanhos de janela que diferentes grupos de pesquisa usaram e sua correspondência com a freqüência de corte. Let8217s dizem que eu quero manter todas as freqüências abaixo de 0.5Hz (aprox) e que adquiro 10 amostras em segundo lugar. Isso significa que fp 0.5Hz P 2s T P100.2 h 1fs0.1 O anterior, o tamanho da janela que eu deveria usar deveria ser N3. Este raciocínio correto Antes de responder a sua pergunta, devo comentar sobre o uso de dois filtros de passagem alta para formar um filtro de passagem de banda. Presumivelmente, eles funcionam como dois fluxos separados, então um resultado é o conteúdo de látex latexf para metade da taxa de amostragem e o outro é o conteúdo do latex latexf para metade da taxa de amostragem. Se tudo o que está sendo feito é a diferença nos níveis quadrados médios como indicar o poder na banda do latex latexf para latexf latex, então pode ser razoável se as duas freqüências de corte estiverem suficientemente distantes, mas espero que as pessoas que usam essa técnica Estão tentando simular um filtro de banda mais estreito. Na minha opinião, isso não seria confiável para um trabalho sério e seria motivo de preocupação. Apenas para referência, um filtro de passagem de banda é uma combinação de um filtro de passagem alta de baixa freqüência para remover as baixas freqüências e um filtro passa-baixa de alta freqüência para remover as altas freqüências. Há, naturalmente, uma forma de passagem baixa de um filtro RC e, portanto, um EMA correspondente. Talvez, embora o meu julgamento seja excessivo, sem saber todos os fatos. Então, você poderia me enviar algumas referências aos estudos que você mencionou, para que eu possa criticar conforme apropriado. Talvez estejam usando um passe baixo, bem como um filtro passa-alto. Agora, voltando-se para a sua pergunta real sobre como determinar N para uma determinada freqüência de corte do alvo, acho melhor usar a equação básica T (N-1) h. A discussão sobre os períodos teve como objetivo dar às pessoas a sensação do que estava acontecendo. Então, veja a derivação abaixo. Nós temos o latexT latexT (N-1) hlatex e látex latexT12 onde latexfclatex é a freqüência de corte nocional e h é o tempo entre as amostras, Claramente latexh 1 latex, onde latexfslatex é a taxa de amostragem em samplessec. A reorganização de T (N-1) h em uma forma adequada para incluir a freqüência de corte, latexfclatex e a taxa de amostragem, latexfslatex, é mostrada abaixo. Então, use latexfc 0.5Hzlatex e latexfs 10latex samplessec para que latex (fcfs) 0.05latex Dê Assim, o valor inteiro mais próximo é 4. Reorganizando o acima, temos Assim com N4 temos latexfc 0.5307 Hzlatex. O uso de N3 dá um latexfclatex de 0,318 Hz. Nota com N1, temos uma cópia completa sem filtragem. White Paper Smoothing White Paper Kinect para Windows 1.5, 1.6, 1.7, 1.8 por Mehran Azimi, Software Development Engineer 1. Introdução O sistema de rastreamento esquelético (ST) da Interface de usuário natural ( NUI) fornece posições conjuntas de esqueletos de pessoas rastreadas. Essas posições comuns são os dados consumidos como posição e pose, e são usados ​​para muitas finalidades, como a detecção de gestos, a navegação nas interfaces dos usuários e assim por diante. Na prática, há um pouco de ruído nas posições conjuntas retornadas pelo sistema ST. Um passo importante antes de consumir dados ST é usar um filtro de redução de ruído para remover o máximo de ruído possível dos dados da junção. Esses filtros são chamados de filtros de suavização porque resultam em posições mais suaves ao longo do tempo. Este white paper descreve as técnicas de filtragem e as melhores práticas para o uso de dados de juntas de esqueleto para um aplicativo habilitado para Kinect e seu objetivo é ajudar os desenvolvedores a escolher uma técnica de filtragem apropriada e ajustar os parâmetros do filtro para corresponder às suas necessidades de aplicação. O documento cobre diferentes áreas relacionadas à filtragem de juntas, como o tipo de ruído que se deve esperar nos dados de ST, como o filtro afeta a latência e como a previsão pode ser usada para reduzir a latência das características de um filtro de juntas ideal em termos de capacidade de resposta, latência, E efeito de suavização e como o rastreamento de dados estatais retornados pelo ST pode ser usado para melhorar a filtragem. Em seguida, descreve detalhadamente as características específicas de algumas técnicas de filtragem úteis. O artigo conclui com um resumo das melhores práticas e dicas práticas para a filtragem. 2. Por que precisamos de filtragem de juntas Os erros de medição e o ruído são subprodutos de quase qualquer sistema que mede uma quantidade física através de um sensor. As características desse erro geralmente são descritas pela precisão e precisão do sistema, onde a precisão é definida como o grau de proximidade da quantidade medida em seu valor real e a precisão é definida como o grau em que as medidas repetidas são próximas umas das outras. Um sistema preciso não possui nenhum erro sistemático nas medidas e, portanto, não adiciona um viés sistemático. Um sistema preciso resulta em medidas próximas umas das outras quando a medida é repetida 1, 4. Os conceitos de precisão e precisão são ilustrados na Tabela 1 para um sistema que está medindo uma posição de mão no mundo real. Tabela 1. Precisão vs. Precisão: O X preto representa o local da mão no mundo real e os pontos vermelhos representam algumas medidas da posição da mão por um sistema de medição. (A) Um sistema impreciso e impreciso gera medidas aleatórias que são essencialmente inúteis na prática. (B) Um sistema de medição impreciso mas preciso gera medidas que estão próximas umas das outras, mas que têm um erro ou uma polarização sistemática. (C) Um sistema preciso e preciso gera medidas idênticas que estão próximas aos dados no mundo real. Infelizmente, 100 sistemas precisos e precisos não existem no mundo real, porque sempre haverá algum erro na prática. (D) Um sistema preciso e modestamente preciso gera medições próximas umas das outras e não são sistematicamente tendenciosas em relação aos dados no mundo real. Isto é o que se deve esperar em um sistema bem projetado na prática. Assim como qualquer sistema de medição, os dados das posições conjuntas retornadas pelo sistema NUI ST apresentam algum ruído. Existem muitos parâmetros que afetam as características e o nível de ruído, que incluem a iluminação da sala de um corpo de pessoas, a distância das pessoas da matriz de sensores que as pessoas colocam (por exemplo, para dados manuais, se a mão das pessoas estiver aberta ou fisted) localização de Os efeitos de arredondamento de ruído de quantização de matriz de sensores introduzidos por cálculos e assim por diante. Observe que as posições conjuntas retornadas pela ST são precisas. O que significa que não há tendência nos dados da posição conjunta para as posições reais no mundo real. Isso significa que, se uma pessoa estiver parada, a média dos dados das posições conjuntas, ao longo do tempo, é próxima das posições no mundo real. No entanto, os dados das posições conjuntas não são necessariamente perfeitamente precisos, o que significa que eles estão espalhados pelas posições corretas em cada quadro. Na prática, as posições das juntas são precisas dentro de uma faixa de um centímetro, e não milímetros. Há casos em que o sistema ST não possui informações suficientes em um quadro capturado para determinar uma posição específica da junta. Exemplos desses casos incluem oclusão por móveis ou outras pessoas, autoclusão de uma articulação por outras partes do corpo da pessoa e movendo uma junção fora do campo de visão dos sensores. Na maioria desses casos, o sistema ST ainda é capaz de inferir a posição da junção e o parâmetro NUISKELETONPOCKITIONSTATE, retornado como parte de uma estrutura NUISKELETONDATA, é definido como NUISKELETONPOSITIONINFERRED para essa junção. Este parâmetro pode ser tratado como o nível de confiança do sistema ST em relação à posição da junção. Embora as posições articulares inferidas sejam uma estimativa muito refinada da posição articular, elas podem ficar imprecisas em alguns casos, dependendo de uma pose de pessoas. Portanto, deve-se esperar que as articulações inferidas tenham valores de ruído mais altos, juntamente com a possibilidade de um viés. Este viés geralmente é observado como picos temporários nos dados da posição articular, que desaparecem, pois o nível do estado de rastreamento conjunto retorna a NUISKELETONPOSITION TRACKED. Portanto, dois tipos de ruído estão presentes em posições conjuntas. Um é o ruído branco relativamente pequeno que está sempre presente para todas as articulações e causado por imprecisão eo outro é picos temporários causados ​​por imprecisão, que ocorrem quando a articulação possui um estado de rastreamento inferido. Como esses ruídos têm características diferentes, diferentes técnicas de filtragem devem ser usadas para cada um. Ou seja, os desenvolvedores precisam usar uma combinação de duas ou três técnicas de filtragem para obter bons resultados em um aplicativo habilitado para Kinect. 3. Princípios básicos de filtragem de juntas Antes de descrever qualquer técnica de filtragem específica, existem alguns conceitos importantes a serem abordados, relacionados à filtragem, que incluem latência e como se relaciona com atrasos de filtragem, como a previsão pode melhorar a latência, o tradeoff entre latência e efeitos de suavização em Design de filtro e o que faz um filtro ideal. 3.1. Latência e como isso se relaciona com a latência de filtragem pode ser definido como o tempo que demora quando uma pessoa faz um movimento, até o momento em que a pessoa vê a resposta ao movimento do corpo na tela. A latência degrada a experiência assim que as pessoas começam a notar que há uma demora em resposta aos seus movimentos. A pesquisa do usuário mostra que 72 das pessoas começam a perceber esse atraso quando a latência é superior a 100 ms, e, portanto, sugere-se que os desenvolvedores apontar para uma latência global de 100 msec 15. Para uma discussão detalhada sobre latência, consulte 14 em Referências. A latência de filtragem da junção é quanto tempo leva para que a saída do filtro atinja a posição da articulação real quando há um movimento em uma junta. Isso é mostrado na Figura 1, que mostra que a saída do filtro está atrasada na entrada quando há mudanças na entrada. É importante notar que a latência introduzida pela filtragem conjunta não é o tempo de CPU necessário para que a rotina de filtragem seja executada. Figura 1. Saída de um filtro de juntas típico em resposta a um movimento de junção NUI. Note-se que a latência adicionada pela filtragem de juntas é o intervalo entre a saída e a entrada quando há movimento nos dados de entrada e a quantidade depende da rapidez com que a articulação está em movimento. Em geral, o atraso da filtragem depende da rapidez com que a entrada está mudando e, portanto, não é possível atribuir um valor de atraso específico a um determinado filtro para todos os casos. Isso é referido como distorção de fase no processamento de sinal 6, 7. Uma classe especial de filtros chamada filtros de fase linear tem o mesmo atraso para todas as freqüências de entrada, e esse tempo de atraso específico pode ser atribuído ao filtro para todas as entradas. A redução da distorção de fase é importante em alguns aplicativos de processamento de sinal, especificamente no processamento de áudio, no entanto, não é necessariamente tão importante na filtragem de juntas NUI, portanto, ter um filtro de fase linear não é um critério de projeto na filtragem de juntas NUI. Uma técnica útil para reduzir a latência é ajustar o filtro das juntas para prever as futuras posições das juntas. Ou seja, a saída do filtro seria uma estimativa suavizada da posição da articulação em quadros subseqüentes. Se a previsão for usada, a filtragem das juntas reduziria a latência geral. No entanto, uma vez que as saídas previstas são estimadas a partir de dados anteriores, os dados previstos nem sempre são precisos, especialmente quando um movimento é de repente iniciado ou parado. A previsão pode propagar e ampliar o ruído em dados anteriores para dados futuros e, portanto, pode aumentar o ruído. Quase todas as técnicas de filtragem conjunta podem prever ou podem ser modificadas para prever saídas futuras. A precisão das saídas previstas depende do modelo de dados subjacente que o filtro está usando e da forma como os parâmetros do filtro são selecionados. Observe que geralmente é prático prever uma posição comum para cerca de dois quadros, o que poderia reduzir a latência de filtração em cerca de 66 ms em casos ideais. No entanto, na prática, o efeito de suavização do filtro, juntamente com os erros de previsão nos dados previstos, resultaria em reduções de latência menores. 3.2. Efeito de suavização do filtro versus atraso de filtragem Um filtro de juntas ideal removeria todos os ruídos e nervos indesejados dos dados das juntas, resultando em dados de posição da junção suave ao longo do tempo. Também seguiria os movimentos da junta sem atraso ou atraso. Infelizmente, há uma compensação entre esses dois objetivos na prática e a escolha de uma técnica de filtragem que suaviza agressivamente os dados resultaria em maior atraso de filtragem, o que aumentaria a latência percebida. Como uma explicação intuitiva para este conceito, considere um caso em que uma pessoa está parada e, portanto, a entrada para o filtro de juntas é principalmente uma posição constante, juntamente com algum ruído. Para produzir uma saída suave, o filtro não deve ser sensível às mudanças na entrada devido ao ruído. Agora suponha que a pessoa comece a mover sua mão. Para ser sensível a esses movimentos, o filtro deve ser projetado para ser sensível às mudanças devido ao movimento, o que é um oposto do requisito de remoção de ruído. Na prática, a maioria dos filtros leva algum tempo para ver o movimento suficiente antes de começar a seguir essas mudanças na saída e, portanto, a saída deles está atrasada nas mudanças na entrada. Consequentemente, deve-se entender como a latência e a suavidade afetam a experiência do usuário e identificar qual é mais importante para criar uma boa experiência. Em seguida, escolha cuidadosamente um método de filtragem e ajuste os parâmetros para corresponder às necessidades específicas do aplicativo. Na maioria dos aplicativos do Kinect, a saída de dados do sistema ST é usada para vários fins, como a detecção de gestos, a redefinição de avatar, a interação com itens UI e objetos virtuais, e assim por diante, todos são diferentes em termos de como a suavidade ea latência os afetam. Da mesma forma, as articulações têm características diferentes entre si em termos de quão rápido elas podem se mover, ou como elas são usadas para criar a experiência geral. Por exemplo, em algumas aplicações, as mãos das pessoas podem mover-se muito mais rápido do que a articulação da coluna e, portanto, é necessário usar diferentes técnicas de filtragem para as mãos que a coluna e outras articulações. Alternativamente, considere um aplicativo que usa movimentos de mão para marcar o quão bem uma pessoa está fazendo um exercício particular (ou seja, marcação de gestos) e animar o avatar das pessoas na tela ao mesmo tempo. A latência geralmente é menos importante na pontuação de gestos, já que todo o gesto deve ser feito antes de computar a pontuação, conseqüentemente, a aplicação deve usar uma técnica de filtragem de alta latência com alisamento mais agressivo para a pontuação de gestos, além de usar uma técnica de filtragem de baixa latência diferente Para animar um avatar de pessoas. Portanto, não existe uma solução de filtragem que corresponda às necessidades de todos os casos de uso para todas as articulações. Dependendo de quais dados comuns devem ser usados ​​e como a saída do filtro é consumida, deve-se aplicar diferentes técnicas de filtragem ou ajustar os parâmetros por articulação e por aplicação. 3.3. Propagação de erro para variáveis ​​calculadas a partir de dados de rastreamento esquelético Pode-se aplicar as técnicas de filtragem discutidas neste documento às variáveis ​​calculadas a partir das posições das juntas. Por exemplo, um aplicativo pode precisar usar o ângulo do cotovelo formado entre a mão das pessoas, o cotovelo e o ombro. Em seguida, as mesmas técnicas de filtragem discutidas aqui podem ser aplicadas ao ângulo calculado para suavizar ao longo do tempo. Outro exemplo é o uso de sistemas de coordenadas esféricas locais para os pais das juntas, onde cada ponto no espaço é representado por um (,), triplete, em vez de um sistema cartesiano de coordenadas (x, y, z). Por exemplo, pode-se usar o ombro direito como origem e representar a posição do cotovelo usando este sistema de coordenadas esféricas locais. Nesse caso, as coordenadas cartesianas retornadas por ST são transformadas em coordenadas esféricas locais (,,), e a filtragem é feita em cada componente separadamente. O raio. Que representa o comprimento do osso, podem ser filtrados de forma mais agressiva do que os ângulos (,), que representam os movimentos das articulações. É importante notar que a aplicação de operações matemáticas a dados conjuntas ruidosos propagaria o ruído e pode amplificar o nível de ruído. O conceito subjacente de propagação do ruído é semelhante, em essência, à propagação de arredondamento ou precisões de erros das variáveis ​​de ponto flutuante em operações de matemática, embora os erros de arredondamento em valores de ponto flutuante sejam pequenos e sejam ignorados na maioria dos casos práticos, enquanto o ruído de medição é relativamente grande maior. Operações para calcular os tamanhos das partes do corpo, como adição, subtração e multiplicação, amplificam o ruído 1-4. Por exemplo, calculando o comprimento do osso ou calculando as coordenadas relativas da articulação, como a posição do cotovelo em relação à posição do ombro ou da mão em relação à cabeça, todos precisam subtrair duas posições de junção. Em todos esses casos, o ruído nos dados resultantes é amplificado. As funções trigonométricas (como seno, cosseno ou tangente inversa), que normalmente são usadas para calcular ou manipular ângulos de junção, afetam o ruído de diferentes maneiras. O efeito de qualquer função sobre o ruído depende do declive local dessa função, ou seja, a derivada local da função em torno do ponto de dados utilizado. Por exemplo, suponha que seja um ângulo de junção calculado a partir de dados BR brutos e, portanto, é ruidoso também. Agora considere função bronzeada. Que é sensível em torno de 90 o. Porque (d d) tan converge para cerca de 90 o. Assim, calcular a função bronzeado ampliaria o ruído drasticamente se for próximo de 90 o. No entanto, desde (d d) tan 1 em torno de 0 o. Então o ruído não é amplificado ou diminuído se for próximo de zero. Uma discussão mais completa sobre este tópico pode ser encontrada em Referências em Análise de erros e propagação de erros em dados ruidosos, veja 1-4 para mais detalhes. 3.4. Noções de filtro A implementação do filtro de juntas em uma aplicação típica recebe posições de junção de ST como entrada em cada quadro e retorna as posições de junção filtrada como saída. O filtro trata cada junção x. Y. E z coordena independentemente de outras articulações ou outras dimensões. Ou seja, um filtro é aplicado de forma independente ao x. Y. E coordenadas z de cada junta separadamente e potencialmente cada uma com diferentes parâmetros de filtragem. Observe que, embora seja típico para filtrar diretamente os dados de posição cartesiana retornados por ST, pode-se aplicar as mesmas técnicas de filtragem a qualquer dado calculado a partir das posições das juntas. This means the input of each joint filter is a one-dimensional time series that represents a single joint position in a given dimension at frame n (for example, y coordinates of the right hand position). The filter input at frame n is denoted by X n and the filter output generated from applying the filter by n . Figure 2. Filter notations used in this white paper 3.5. Filter Response to Step Function and Sinus Waveform Inputs In order to understand a filtering technique and how filtering parameters affect the filter characteristics, it is useful to study the filter output in response to some predefined inputs, specifically step function and sine wave inputs. Step function input models a sudden jump in input data, and is defined as: That is, input X n is zero for up to a given time and then jumps and stays at 1 at time N . Though one does not expect to see such input in practice, a step function is helpful because it shows how quickly and how accurately the filter tracks sudden changes in input. Figure 4 shows the typical output of a filter to a step function input, as well as definitions for some of the filter characteristics of our interest. Figure 3. Typical response of a filter to step function input Rise time is the time required for the filter output to reach 90 of it asymptotic final value, which is 0.90 in case of a unit step function input. In some fields, a similar parameter called time constant is used, which is the time required for the filter output to reach (1e 1 )63 of its final asymptotic value. A small rise time is an indication of a filter with low latency. Overshoot is when the output of the filter reaches a higher maximum value than input, and this is usually represented as a percentage of the final asymptotic value. Note that not all filters have overshoot in their output. Overshoot is undesirable, and it is usually present in low-latency filters that are sensitive to changes in input. Ringing is the effect where filter output oscillates before it settles down to its final value. Settling time is applicable to filters that have overshoot or ringing, and it is the time it takes for the filter output to reach and remain within a given error margin of its final asymptotic value. The range of the error margin is usually 10 percent. Rise time shows how quickly the filter catches up with sudden changes in input, while overshoot, ringing, and settling time are indications of how well a filter can settle down after it has responded to a sudden change in input. A filters response to a step function does not reveal all of the useful characteristics of a filtering technique, because it only shows the filters response to sudden changes. It is also useful to study a filters response to sine waveform input, both in time and frequency domains. As shown in Figure 4, the response in the time domain can show the lag in filter output, which depends on input frequency in most cases (that is, in nonlinear phase filters). Note that the output may not reach the maximum or minimum level of the input due to the filter attenuating that frequency. This is sometimes referred to as dampening the peaks and valleys in input by aggressive smoothing. As an example, Figure 5 shows the hand position x of a person who has opened and closed his arm quickly two times, resulting in a sinusoidal peak in input. As noted, aggressive smoothing of data has resulted in filter output not reaching the same maximum and minimum level of the input. Also, it is interesting to note in Figures 4 and 5 that, in some frames, the input is increasing while the output is decreasing this can be attributed to the filtering latency. This filter would not be a good choice for drawing a cursor on the screen based on the persons current hand position, because it would produce an undesirable effect when the persons hand changes direction the cursor would catch up and change direction after a while, which would create an awkward experience for the person. Figure 4. Typical response of a filter to sine waveform input Figure 5. Aggressive smoothing would reduce the minimum and maximum in sinusoidal input data. The data is from actual hand movement where a person has opened and closed his arms rapidly two times. The filters response in the frequency domain shows how a filter responds to all ranges of frequency inputs. All smoothing filters used for NUI joint filtering are low pass filters, where an ideal low pass filter would let through the input frequency components that are lower than a cut-off frequency, but remove the frequency components that are higher than the cut-off frequency. The low-pass characteristics of NUI joint filters is based on the assumption that joint movements have relatively lower frequency than the noise, though this is not necessarily a correct assumption for all casesspecifically, when a person makes rapid movements, such as quick hand movements or sudden jumps. Note there are powerful methods of filter design available in signal processing textbooks that realize a desired frequency response, such as a low pass filter of given order N and with a given cutoff frequency 6 . Since the frequency range of NUI joint data overlaps with the noise, low-pass filters with a design based only on the frequency response criteria do not necessarily provide good results in Kinect applications. Design methods of frequency domain filters are not within the scope of this white paper. However, you can still become familiar with the underlying concepts used in filter design in the frequency domain to better understand filtering characteristics in general, and items 6 ,7 in References are good starting points. 3.6. Using Joint Tracking State in Filtering Joints that are inferred are more likely to have temporary spike noises due to being less accurate. Also, the random noise levels are usually higher for inferred joints. In practice, for Kinect applications, developers should consider a joints tracking state to be valuable information about the quality of the joint data, and apply a more aggressive smoothing filter when a joints state is inferred. This can easily be done by checking the joints tracking state in the filters implementation and adaptively update the filter parameters based on the joints tracking state. Also, filters that are specifically more powerful in removing spike noise should be applied when a joints state is inferred. 3.7. Using Body Kinematics to Correct the Filter Output Data The anatomy and kinematics of a person provide valuable information that can be used to enhance the ST joint data. For example, some joints move or bend only in a certain direction, or some joints, such as hands, can move faster than other joints. How this data can be applied depends on the joint and the contexts the joint data are used. As a practical example, suppose that a persons right hand joint is filtered with a low latency filter that forecast one frame in future. This type of filter usually results in overshoots in response to sudden movements. Therefore, due to overshoot, the filter may calculate the hand position to be too far from the persons body. This overshoot can be corrected by using an estimate of hand bone length, and correcting the filtered hand position such that the hand is positioned an acceptable distance from the persons body. Another useful kinematic property is the limitations of hinge joint. A hinge joint is a joint that can bend along only one axis (that is, it has only one degree of freedom). For example, elbows and knees are hinge joints, because they can bend in only one direction and within a limited range. These kinematic limitations of elbow or knee can be used to correct the filtered joint positions. 4. Smoothing Filters This section discusses details of a few smoothing filtering techniques that are useful for NUI joint filters. First are the Auto Regressive Moving Average (ARMA) filters, which are a general class of filters. Specific smoothing filters for noise removal are also covered, including Moving Average, Double Moving Average, Exponential Filter, Double Exponential Filter, and Savitzky-Golay filters. All these smoothing filters are special cases of ARMA filters. Finally, the section discusses a filter based on the Taylor series that is useful for forecasting. Also covered are Median and Jitter Removal filters, which although they have some smoothing effect, are specifically useful for removing spike noise from data. 4.1. Auto Regressive Moving Average (ARMA) Filters Auto regressive moving average (ARMA) filters are a general class of linear filters. All the smoothing filters we discuss in this paper are a special case of ARMA filters. The output of an ARMA filter is a weighted average of current and N previous inputs, and M previous filter outputs: Where the a i and b i coefficients are the filtering parameters. The first term is known as the moving average (MA) term, and the second term is known as the auto-regressive (AR) term. Moving average (MA) filters are a special case of ARMA filters where all b i parameters are zero: The coefficients a i are the weight factors and are selected such that a i 1 in all NUI joint filter applications. This property is a result of using low-pass filtering and allowing DC components through without attenuation. As an intuitive explanation, suppose the input to be filtered is the constant 1 for all frames n . Then, one intuitively expects the filter output to be 1 as well for all n . which would result in a i 1. This can be used as a quick sanity check that the derived a i coefficients are correct. The moving average filter can be extended to a central moving average filter, where filter output is the weighted average of N past and M future inputs: Since the output of this filter depends on M future inputs after X n . then any implementation of this filter will add a latency of at least M frames. Therefore, this filter is only practical in offline cases in which all data is available in advance, or in cases in which increasing the latency by an order of a few frames is tolerable. For example, in some Kinect-enabled applications, it may make sense to score how well the person has done an exercise after the whole performance is finished. The central MA filters usually perform better in terms of noise removal than simple MA filters. ARMA filters are usually designed by assuming an underlying data model for data and using this model to calculate the filter orders N and M . and the a i and b i coefficients. The data model should be chosen based on the actual data characteristics. In some approaches the underlying data models are chosen based on a statistical approach that would preserve the higher order moments of data. The details of these methods are outside the scope of this paper see 5 for a detailed discussion. This paper mentions the order of statistical moments up to which input data are preserved by the filter. In general, filters that preserve higher-order moments perform better. 4.2. Simple Averaging Filter The simple averaging filter is the simplest joint filter, where the filter output is the average of N recent inputs, which is an MA filter of order N with a i 1( N 1) for all i : From a statistical point of view, the averaging filter is a naive filter that fits a horizontal line (that is, a constant) to N recent inputs and uses it as the filter output. Therefore, an averaging filter is not taking advantage of joint data characteristics or noise statistical distribution, and it preserves only the first-order moment of data, which is the average. A simple averaging filter doesnt provide satisfactory results in most cases of filtering NUI joints. An averaging filter using a large N would result in more smoothing than a smaller N . but it would introduce more filtering delay. The filtering delay can be noted in the output from an averaging filter in response to inputs from step functions and sinusoidal waveforms. where filtering delay is directly proportional to N . --gtFor example, the step function rise time for N 5 and N 10 are about 4.5 frames (148 msec) and 9 frames (297 msec), respectively. The simple averaging is a linear phase filter, which means that all frequency components in input are delayed by the same amount 6 . To experience this, try different frequencies for sinusoidal input in the spreadsheet, and notice that the output delay is the same for all filters. The smoothing effect of the filter can be more easily noticed when noise is added to step function or sinusoidal inputs. Also note that output from the averaging filter cannot reach the peaks and valleys of most sinusoidal waveform inputs. Since an averaging filter fits a horizontal line of data, it forecasts the future outputs as a constant as well, which is the average of last N inputs up to time n: The simple averaging filter performs well in terms of forecasting only if the input data is stationary and there is no trend in data. In NUI joint filtering, stationary input data means that a joint has little movement. If there is movement in the joint, then the filters input data will have a slope, and hence, averaging filters performs poorly, especially in terms of forecasting. For NUI joint data with movement at a constant speed, it can be shown that the averaging filter has a constant bias in its output 8 ,9 . A method to eliminate this error is to use a filtering method called double moving average . which is discussed in the next section. 4.3. Double Moving Averaging Filter Double moving averages are used in many applications, such as stock market forecasting, and they are useful when data has a linear trend . The trend in NUI joint data is equivalent to a joint movement at a constant velocity. The underlying data model used by double moving averaging filter is to fit a linear line to local input data, and hence it is more adaptable to track changes in input data than simple averaging filter 8 ,9 . Let and be the first and second order moving averages of input data at time n : Therefore is a moving average of a moving average of input data (hence the name double moving average). If we assume that the underlying data follow a linear model, it can be shown that systematically lags behind the actual data, and it can also be shown that a second moving average lags average by approximately the same amount. To account for the systematic lag, the difference of second and first order averages ( ) is added to the filter output. Then filter output is given as the first order of moving average plus the trend adjustment term: A similar approach is used for adjusting trends in forecasting, and future data are estimated as: The double moving averaging filter has the advantage of being more responsive to changes in input data as compared to a moving averaging filter. Note that for a given window N . the filtering equations can be combined and the filter output equation can be rewritten in terms of a weighted moving average of past inputs, which would result in easier implementation. For example, for N 2, the second moving average and filter output are given by: which would result in: It is interesting to note that this filter uses larger weights for recent inputs, which is generally true for any filtering window N . 4.4. SavitzkyGolay Smoothing Filter A Savitzky-Golay smoothing filter (also known as a smoothing polynomial filter or a least squares smoothing filter ) fits a polynomial to neighbor input data for each input X n in a least-square sense and uses the value of the polynomial at time n as the filter output. A polynomial of order K is defined as: If we use N previous and M future samples as the neighbor samples, then a Savitzky-Golay filter finds c i coefficients such that minimize the term: and uses the polynomial value at time n as the filter outputthat is, n f K ( n ). Though it may first seem that this filter results in a complicated implementation, it turns out to be easy. It has been shown that the output of a Savitzky-Golay filter can be expressed as a weighted moving average filter that is: where the filtering coefficients a i are all constant for all X n values and do not change for different n . or even different inputs. Thus, to implement a Savitzky-Golay filter requires only choosing the appropriate filter order K . and determining how many samples before and after should be used (that is, choose N and M ). Then, the coefficients a i can be calculated offline by using available off-the-shelf algorithms, and filter output is easily calculated using these coefficients 11 ,12 . Savitzky-Golay filters are optimal in two different senses firstly, they minimize the least-squares error in fitting a polynomial to each windowed frame of input data, and secondly, in preserving the K first statistical moments of the input signal. In general, Savitzky-Golay filters are useful for cases in which the frequency span of input data without noise is large, and therefore, Savitzky-Golay filters are good candidates for NUI joint filtering. A Savitzky-Golay filter of order K preserves the first K 1 moments of the data 11 . For K 0, the Savitzky-Golay filter fits f K ( x ) c 0. or a constant value, to neighbors of each input, which would turn to a simple averaging filter with equal weight coefficients a i . For K 1, a straight line is fitted to local input data, which is usually referred to as linear regression in statistics text books. For K 2 and K 3, a parabola and a cubic curve are fitted, respectively. The choice of n affects the filter smoothing effect, where a cubic curve using K 3 seems to be a good choice for NUI joint filtering, since it is the lowest-degree polynomial that supports inflection and is still smooth. Using a higher-order polynomial yields jumpy curves with too many local minima and maxima, which would result in a lessened smoothing effect. The Savitzky-Golay filter can also be used for estimating the derivatives of input 11 , which is easily calculated from the coefficients c i . Thus, a Savitzky-Golay filter can produce the joint speed and acceleration along the smoothed position for NUI joint data. 4.5. Exponential Smoothing Filter An exponential smoothing filter, also known as an exponentially weighted moving average (EWMA), is a popular filter in many different fields. The exponential filter output is given by: Where is called the dampening factor and 01. By substituting ( n 1) this can be expanded to obtain: Therefore, filter output at time n is a weighted average of all past inputs, where weights a i (1) i decrease exponentially with time (more precisely, with geometric progression, which is the discrete version of an exponential function). Also, all previous inputs contribute to the smoothed filter output, but their contribution is dampened by increasing power of parameter 1. Since n depends on all past inputs, an exponential filter is said to have an infinite memory of all past inputs. Similar to a simple averaging filter, the exponential filter fits a straight horizontal line to the input data. The difference is that an exponential filter places relatively more weight on recent input data, and is correspondingly more responsive to recent changes in input than a simple averaging filter. The dampening factor affects the filtering delay and smoothing effect. A larger corresponds to larger weight on recent inputs, and results in faster dampening of older inputs. This results in less latency and less smoothing of the data. A small gives larger weight to older input samples, and hence, the effect of older inputs is larger. This results in a more aggressive smoothing effect and more latency, as shown in Figure 6. Figure 6. Effect of on filtering delay of an exponential smoothing filter Since an exponential filter fits a horizontal line to data, it forecasts the future data as a constant value similar to an averaging filter: A variant of exponential filter, called a double exponential filter, addresses this limitation of exponential filters and is described in the next section. One can incorporate state data for a joint into the implementation of an exponential filter by adaptively using a smaller for joints for which tracking state indicates inferred positions. This results in more aggressive filtering of inferred joints. 4.6. Double Exponential Smoothing Filter The double exponential smoothing filter is a popular smoothing filter used in many applications. Similar to a double moving averaging filter, the double exponential smoothing filter smoothes the smoothed output by applying a second exponential filter (hence the name double exponential), and it uses this to account for trends in input data. There are various formulations of double exponential smoothing filters, with minor differences between them, but the most popular formulation is defined by the following set of equations: As can be noted, the trend b n is calculated as an exponential filter of the difference between a filters last two outputs. Then the sum of the current trend and the previous filter outputthat is, ( n 1) b ( n 1) are used in calculating the filter output. Including the trend helps to reduce the delay as the filter fits a line to local input data, where the trend b n is the slope of this fitted line. The parameter controls the weights on the input data that was used for calculating the trend, and hence, controls how sensitive the trends is to recent changes in input. A large results in less latency in trend that is, the trend element follows the recent changes in input faster, while a small gives larger weight to older input samples and, hence, results in longer delay in trend elements catching up with changes in input. Note that a trend is the smoothed difference between the last two estimated joint positions (that is, a trend is the smoothed value of n ( n1 ) ) so a trend can be thought of as the estimated velocity of the joint in the case of NUI joint filtering. Therefore, we can think of as the dampening factor used in exponential filtering of joint velocity and that the smoothed joint velocity is accounted for when joint position is calculated as the filter output. The trend factor b n can easily result in overshooting in filter outputs when there are sudden joint movements or stops. For example, suppose a person suddenly moves his or her hand and then stops, which results in a filter input similar to a step function (that is, a sudden jump in filter input). This is shown in Figure 7. In this case, the trend term b n helps the filter output to catch up more quickly with this change in input however, since b n itself is smoothed out, b n will need some time to settle back to zero, which will result in overshoot and ringing in output. Note that there is a delay between b n maximum and overshoot. Figure 7. Output and trend of a double exponential smoothing filter in response to step function input 0.35 and 0.70 The double exponential smoothing filter fits a line to data and, therefore, forecasts the future data as a straight line with a slope equal to trend term b n . In general, this filter performs better than a single smoothing filter in terms of forecasting. However, as shown in Figure 8, the filter overshoot is larger in forecasted outputs. Figure 8. Output and trend of a double exponential smoothing filter in response to step function input 0.50 and 0.40 There are numerical techniques that adaptively update the and parameters such that the error in filter predictions for a given k are minimized in a least-square sense. For example, when predicting one sample ahead (that is, k 1), the prediction error at time n considering the past N forecasts is given by: Then and are updated at time n in a direction that this prediction error is minimized (for details, see the Levenberg-Marquardt algorithm in 10 ,12 ). This criterion is useful if precise forecasting is the only concern however, it does not take into account the smoothing effect of the filter, and so the and parameters calculated by this approach do not necessarily result in smooth output. 4.7. Adaptive Double Exponential Smoothing Filter A simple but useful improvement to a double exponential smoothing filter for NUI joints is to adjust the and parameters adaptively based on the joint velocity, such that when the joint is not moving quickly more aggressive filtering is applied by using smaller and parameters. This adaptation results in smoothed output when a joint is not moving quickly. Alternately, larger and parameters are used when the joint is moving quickly, which results in better responsiveness to input changes and, hence, a lower latency. This idea can be implemented in different ways. For example, an adaptive double exponential smoothing filter could be implemented by using two preset and parameters: one for low-velocity cases, say low and low . and one for high-velocity cases, say high and high . There could also be two velocity thresholds used, say v low and v high . Then for each input X n . the velocity is estimated as v n X n X ( n 1) , and filtering parameters and are set as a linear interpolation between their low and high values based on the current velocity. For example, the parameter used at time n . denoted by n . is set to be: 4.8. Taylor Series Filter The Taylor series expansion is a well-known representation of a function in mathematics, where a continuous function f ( x ) is expressed as an infinite sum of terms, calculated from its derivatives at a given point a 13 : f ( i ) ( a ) is the i th derivative of function f ( x ) at point a . This series is used in many applications for approximating a function as a polynomial of order N at points close to expansion point a . where N is the number of terms in the expansion that are included in this approximation. The Taylor series can be used for forecasting NUI joint data. The underlying assumption is that joint movement is approximated with a polynomial of order N over time. In other terms, we fit a polynomial of size N to past N inputs, and then use this polynomial approximation to forecast next joint data. Note that the NUI joint data are in discrete time therefore, the derivatives used in Taylor series coefficients are approximated numerically as higher order backward differences of input data. For example, the first, second and third degree derivatives are approximated as: As said, the next input is estimated by using the fitted polynomialthat is, X ( n 1 n ) f ( n 1). Substituting the preceding terms for f ( i ) ( n ) in a Taylor series polynomial expansion of size N and choosing a n results in an estimate for next inputs in term of past inputs: For example, for N 3, by using the preceding equations, one obtains: which is, again, a weighted moving average of past N inputs. The Taylor series expansion is helpful, because it can forecast the future positions of joints. Note that the Taylor series does not smooth the data or attempt to remove any noise by itself, though this can be compensated for by applying a smoothing filter, such as exponential smoothing filter, to the output of a Taylor series filter. One approach for tweaking the Taylor series filter is to smooth the data that the Taylor series uses to forecast the current input from previous inputs (that is, X ( n n 1) ) and then calculate the smoothed output as a linear interpolation between X n and X ( n n 1). That is, the filter output is given by: Also note that the approximation of derivatives using only the backward differences is a naive approximation of the derivatives 13 . This is imposed on us, because we do not have any future input data to use in difference equations to estimate the derivatives. The Savitzky-Golay filter is known to create good estimates for the derivatives. So, instead of the difference equations presented in the preceding text, one can use the Savitzky-Golay filter to calculate the derivatives and use them in a Taylor series filter to forecast future outputs. Also remember that the approximation by a Taylor series is accurate when the expansion is around a near point (that is, when x a is small), which means it is not practical to forecast more than one input into the future by using the Taylor series. Note that the Taylor series filter may, at first, seem identical to the Savitzky-Golay filter, because both are fitting a local polynomial to input data. However, they are different, because a Savitzky-Golay filter is over-fitting a local polynomial to input samples, which means that the number of input data used to calculate the model parameters is greater than the model parameters. Since there is more than one potential solution, the least-square error approach is used to find the model parameters that minimize the error in a least-square sense. This allows the Savitzky-Golay filter to handle noise in the input data better, and the results are much smoother. However, in a Taylor series filter, there is no over-fitting of data, and the underlying polynomial is simply approximated by approximating the derivatives of input. This can be noted as exactly N 1 samples ( N previous samples along current sample) are used in calculating the N 1 polynomial coefficients in a Taylor series approach. 4.9. Median Filter In a median filter (also known as moving median filter ), the filters output is the median of the last N inputs. Median filters are useful in removing impulsive spike noises, as shown in Figure 9. Ideally, the filter size N should be selected to be larger than the duration of the spike noise peaks. However, the filters latency directly depends on N . and hence, a larger N adds more latency. Figure 9. Median filter applied to actual NUI data. Ideally, the filter order N should be larger than the duration of the spike noises. Median filters do not take advantage of the statistical distribution of data or noise, and though they have some smoothing effect, they are not suitable for removing random noise from joint data. 4.10. Jitter Removal Filter A jitter removal filter attempts to dampen the spikes in input by limiting the changes allowed in output in each frame. That is, filter output is the same as input if the difference between the current input data and the previous filter output is less than a threshold. Otherwise, the filter limits the changes in output, which can be done by using different methods. For example, the following variant of a jitter removal filter uses an exponential filter to dampen large changes seen in input: Alternately, one can use a simple averaging filter instead of the exponential filter. Since median filters usually perform better in terms of removing spikes, changes in input can be limited by the median: Where X med denotes the median of the last N inputs. Jitter removal filters basically bypass the filtering for cases in which a jump has not been detected that is as large as the threshold in input data. Ideally, the threshold should be selected to be less than the impulsive jumps in the input that are due to spike noise, but larger than normal changes that are due to actual joint movements in practice, these two criteria may overlap with each other. In a Kinect-enabled application, the joint tracking state can be used to adaptively select this thresholdthat is, to use a smaller threshold when the joint data is inferred. 5. Practical Tips and Takeaways Following is a summary of the tips described in this white paper: No filtering solution fits all cases: There is no filtering technique that can be universally used in all Kinect-enabled applications. You must choose and fine-tune the filtering techniques that are right for your application. Latency vs. Smoothing Tradeoff: Be aware of the tradeoff between latency and smoothing in joint filtering. Understand how latency affects your application, and become familiar with different filtering techniques so you can choose and fine-tune the right filter for your application. Filter per-joint and per-application: Joints have a variety of characteristics, and depending on how the filter output is to be used, different filtering techniques should be used per joint. Remember you can filter any data: We usually apply filtering to the Cartesian coordinates ( x , y , z ) of joints however, filtering can be applied to any data calculated from joint positions. For example, one can directly filter the bone length, relative coordinates of a joint with reference to another joint, spherical coordinates of a joint, and so on. Applying mathematical calculations to noisy data or calculating relative joints usually amplifies the noise, so be careful. It may take more than one filter to get good results: A good filtering solution is usually a combination of various filtering techniques, which may include applying a jitter removal filter to remove spike noise, a smoothing filter, and a forecasting filter to reduce latency, and then adjusting the outputs based on person kinematics and anatomy to avoid awkward cases caused by overshoot. Use the joint tracking state: Take advantage of the joint tracking state data, and use it in your filter implementations to apply more aggressive smoothing and jitter removal when a joint position is inferred. Include future frame data in filtering, if possible: In offline cases, or in cases when its acceptable to increase latency by a few frames, include the future joint data in filtering (for example, use ARMA filters, such as central moving average or Savitzky-Golay with M 0), which will result in better noise removal. Account for the actual time elapsed between two NUI frames: In some cases, the call to get the joint positions from the ST system may fail, which would result in a dropped frame. Therefore, the input data to the filter would be missing for that dropped frame, which means that the joint positions are no longer 33 msec apart from each other. Make sure that your filtering implementation uses the time stamp of the NUI frames and that it estimates the missing data points with an interpolation of data before and after the missing data. Reset the filter when a skeleton is lost: When a person moves outside of the cameras field of view, its skeleton is lost and is no longer tracked. The ST system may use a different tracking ID for the same person later, or it may reuse that tracking ID for other persons. So make sure you reset the filter after a person skeleton is lost. Use debug visualization to see how filter parameters affect your application: Visualizing the filtered joint positions on top of the depth map is useful to see how your filtered data is different from the actual depth data. It is useful to visualize only one joint, like the right hand, and render a history of previous positions on screen. This joint path will show you how smooth the filter output was over the past frames. Use Kinect Studio to export joint data and analyze them offline: You can use Kinect Studio to export joint data and analyze them offline. Use Note that the SDK includes the NuiTransformSmooth method, which is an implementation of a joint filter that is based on double exponential smoothing combined with jitter removal and some overshoot control. 6. References Error Analysis and Error Propagation in Noisy Data 1. John Robert Taylor, An Introduction to Error Analysis: The Study of Uncertainties in Physical Measurements . University Science Books, 1999. 2. Manfred Drosg, Dealing with Uncertainties: A Guide to Error Analysis . Springer, 2009. 3. Bevington, Philip, and D. Keith Robinson, Data Reduction and Error Analysis for the Physical Sciences . McGraw-Hill Science, 3rd edition, 2003. 4. Hughes, Ifan, and Thomas Hase, Measurements and their Uncertainties: A practical guide to modern error analysis . Oxford University Press, 2010. ARMA Filters 5. Brockwell, Peter J. and Richard A. Davis, Time Series: Theory and Methods . 2nd edition. Springer, 2009. Digital Filter Design in Frequency Domain 6. Oppenheim, Alan V. Ronald W. Schafer, and John R. Buck, Discrete-Time Signal Processing . Prentice Hall, 1999. 7. A. Antoniou, Digital Filters: Analysis, Design, and Applications . McGraw-Hill, 2000. Moving Average and Exponential Filters 8. Robert Goodell Brown, Smoothing, Forecasting and Prediction of Discrete Time Series . Dover Publications, 2004. 9. Hoang Pham, Springer handbook of engineering statistics . Springer, 2006. 10. Nocedal, Jorger, and Stephen J. Wright, Numerical Optimization . 2nd edition. Springer, 2006. Savitzky-Golay Filter 11. Vijay Madisetti, The digital signal processing handbook . CRC Press, 2009. 12. William H. Press, Numerical Recipes: the art of scientific computing . Cambridge University Press, 2007. Taylor Series and Derivative Estimation Using Difference Equations 13. Joe D. Hoffman, Numerical Methods for Engineers and Scientists . 2nd edition. CRC Press, 2001.

No comments:

Post a Comment