# MHI

MHI é o acrônimo de Motion History Image que, em português, significa Imagem da História do Movimento. Tecnicamente, MHI é um método para a análise de movimento por meio de processamento de imagens sucessivas no tempo.

## Movimento

No processamento digital de imagens, movimento é tudo aquilo que sofre alteração em uma sequência de imagens ao longo do tempo. Uma das formas de se determinar computacionalmente esse movimento é criar uma imagem da história desse movimento, que registra as diferenças que ocorreram entre imagens capturadas sequencialmente ao longo do tempo.
Basicamente, existem duas formas de utilizar essa técnica: offline e online. Em um processamento offline, uma determinada quantidade de imagens previamente capturadas é processada, resultando em uma única imagem, que destaca as alterações percebidas na coleção de imagens original. Se o resultado for expresso com uma imagem em tons de cinza, os pixels pretos denotam pontos em que alterações nulas ou irrelevantes ocorreram. Já os pixels com intensidade diferente de zero, representam pontos que sofreram alteração, pelo menos, de uma das imagens originais em relação à outra. Além disso, as diferentes intensidades dos pixels, revelam o momento em que essas alterações ocorreram: alterações mais recentes, detectadas entre as últimas imagens da coleção, são ponderadas de forma a resultar em pixels mais claros. Por outro lado, se o resultado for expresso com uma imagem em escala de temperatura, a cor preta é substituída pela cor azul escuro, ao passo que as intensidades não nulas são substituídas por cores que variam do azul claro ao vermelho. As figuras ao lado foram obtidas com a aplicação do algoritmo MHI à uma coleção de oito imagens previamente capturadas. O resultado é mostrado em cores e em nível de cinza.
Por outro lado, em um processamento online, uma câmera digital é utilizada para capturar imagens periodicamente, sendo que as últimas n imagens são processadas de forma cíclica. Dessa forma, resultados, como os mostrados nas figuras ao lado, também são atualizados periodicamente, permitindo que as mudanças ocorridas no ambiente monitorado pela câmera sejam facilmente percebidas. Essa apresentação gráfica dos resultados pode ser facilmente quantificada de forma numérica, por exemplo, tomando-se a intensidade média dos pixels da imagem em tons de cinza. Assim, por exemplo, pode-se disparar uma sirene sempre que a movimentação em um determinado local ultrapassar um limite pré estabelecido. Existem algoritmos prontos para realizar o MHI online.

## Técnica MHI

A técnica MHI constrói a imagem final acumulando, como se fosse em camadas, as imagens previamente capturadas, obedecendo a regra de que cada pixel (x, y) no MHI é marcado com o instante (hora, minuto, segundo e milissegundo) corrente e será removido se ele não variar depois de um parâmetro de tempo.
O primeiro passo no processamento da imagem é transformá-la do espectro de cores RGB (Red, Green, Blue) para o espectro de cores HSI (Hue, Saturation, Intensity) (Gonzalez, Woods (2008)), onde o objetivo é obter a imagem em tons de cinza, e representada pelo componente I (intensidade) da HSI.
$I=(0,30*R)+(0,59*G)+(0,11*B)$
Onde R, G e B representam os níveis de cor vermelho, verde e azul em 8 bits para cada pixel.
Quando o braço se movimenta de baixo para cima, a coleção de imagens podem ser manipuladas pelo processo do MHI em alguns passos descritos a seguir. A Equação representa a diferença entre duas imagens sucessivas I$_j$ e I$_{j+1}$, conhecida como silhueta.
S$_j$ = I$_j$ - I$_{j+1}$
Na imagem silhueta S$_j$, aplica-se a função de threshold (Gonzalez, Woods (2008)).
T$_j$(x,y) = 1 se S$_j$ (x, y)>Z
0 se S$_j$ (x, y)<=Z
Onde Z é o parâmetro de threshold e T$_j$(x,y) é o threshold da imagem em cada momento j.
O procedimento MHI final é a soma das imagens dentro dos limites do buffer de tamanho n por um k$_j$ constante, o que representa o tempo de vida da imagem no momento j.

## Como funciona o MHI

Basicamente, dada uma coleção de n imagens previamente capturadas em tons de cinza, o MHI pode ser obtido por meio do seguinte procedimento:
* Subtração de valores de intensidade de imagens sucessivas. Dessa forma, esse primeiro passo consiste subtrair duas imagens sucessivas, guardar o resultado em uma nova matriz e, em seguida, subtrair na sequência mais duas imagens sucessivas, e assim por diante. Ao final, temos n-1 matrizes, contendo as descritas subtrações das n imagens da coleção original.
* Aplicação a função binarização ( ou threshold). Essa função tem o objetivo de eliminar mudanças que sejam consideradas irrelevantes. Para isso, analisa-se o módulo de cada elemento das matrizes que armazenam os resultados das subtrações descritas na etapa anterior. Se esse módulo for menor que o limite estabelecido pelo usuário (threshold), o ponto da matriz é mapeado com o valor 0. Por outro lado, se o módulo do elemento analisado for maior que o limite, a matriz resultante recebe o valor 1 na posição associada. Os valores 0 e 1 representam em níveis de cinza os valores 1 e 256, ou seja, preto ou branco respectivamente. Ao final, temos novamente um conjunto de n-1 matrizes, com as mesmas dimensões das matrizes anteriores, porém contendo apenas valores binários. Além de eliminar mudanças consideradas (com a escolha do limite da função threshold) irrelevantes, essa etapa também é fundamental para que as operações propostas a seguir sejam realizadas de forma correta. Essa é uma etapa de define a sensibilidade da detecção do movimento.
* Adição ponderada dos resultados das diferenças binarizadas. Assim, além de identificar pontos em que ocorreram mudanças, o algorítimo MHI dá destaque aos movimentos mais recentes, ou seja das últimas diferenças. Para se fazer isso, uma possibilidade é somar algebricamente as n-1 matrizes obtidas na etapa anterior, sendo que a cada imagem de diferença recebe um peso maior para as imagens mais recentes. Assim, as mudanças mais recentes são destacadas. O peso pode ser uma constante k, com o valor máximo para os elementos de uma matriz em tons de cinza sendo 255; é conveniente escolher k como:
$k={\frac {255}{\sum _{i=1}^{n-1}{i}}}$
O código para Matlab mostrado a seguir implementa o funcionamento descrito.

## Vantagens

O MHI é caracterizado pelas seguintes vantagens:
* É um método simples e robusto;
* Utilizado para pesquisa de reconhecimento de ação e análise de movimento;
* Não é um método tão sensível aos ruídos, como imperfeições e sombras;
* Mantém um histórico das alterações temporais em cada localização de pixels ao longo do tempo;
* Expressa o fluxo de movimento usando a intensidade de cada pixel de forma temporal;
* Pode ser implementado com câmeras de baixo custo e computadores não sofisticados;
* Pode ser implementado em áreas de baixa luminosidade, onde a estrutura não pode ser detectada facilmente.

## Limitações

O MHI não indica a direção do deslocamento, indicando somente que ocorreu movimento de um determinado objeto num intervalo de tempo.
O método é MHI não é adequado para o fundo dinâmico, pois dificulta o contraste com o objeto que se deseja analisar.

## Aplicações

As inúmeras aplicações do MHI são categorizadas em três grandes grupos: 1) Gesto ou ação de reconhecimento. 2) Análise de movimento. 3) Sistemas interativos.
1) GESTO OU AÇÃO DE RECONHECIMENTO Este método é utilizado para reconhecer diferentes ações. É usado para reconhecimento de movimentos humanos e rastreamento de objetos em movimento por vários grupos. Xiang Gong, introduziu um conceito semelhante para reconhecimento de atividades comerciais em recinto fechado e atividades de carga da aeronave em recinto aberto. Davis e Bradski e Davis melhoram o MHI de maneiras diferentes para o o reconhecimento de vários movimentos e gestos. Leman et al, desenvolveram um sistema de reconhecimento baseado no PDA, utilizando a metodologia do MHI.
2) O MHI PARA ANÁLISE DE MOVIMENTO Além da ação humana e reconhecimento de atividade, o MHI também é empregado para a detecção de movimento e de localização para a vigilância de vídeo e outros fins. Yin e Collin, combinaram os métodos forward-MHI e backward-MHI para alcançar uma forma de contorno para o objeto em movimento no quadro atual. Rosales e Sclaroff, usaram o MHI para acompanhar várias atividades ao ar livre. Em outra abordagem, é desenvolvido um sistema de rastreamento adaptável multimodal onde o MHI é calculado para encontrar a peça em movimento. Jan, desenvolveu um sistema de vigilância para a avaliação da ameaça no parque de um estacionamento. Este sistema emprega MHI's para exibir qualquer padrão irregular de uma pessoa suspeita no restrito lugar do estacionamento.
3) O MHI PARA SISTEMAS INTERATIVOS Vários sistemas interativos foram criados com base no MHI, como mecanismo de detecção primária. Davis et al, desenvolveram um instrutor virtual de aeróbica que assiste e responde aos usuários como ela/ele realiza os exercícios. Bobick et al, desenvolveram um espaço de jogo interativo e narrativo para crianças, chamado Kids-room, usando o MHI. Neste ambiente as crianças podem interagir com monstros enquanto estiverem jogando em um cenário de histórias narrativas. Yau et al, desenvolveram um método para o reconhecimento de voz virtual, empregando o MHI,os dados de vídeo da boca do orador é representado por MHI's.

## Implementação do MHI utilizando pirâmides

MHI HIERÁRQUICO
Muito parecido com o trabalho na estimativa de movimento hierárquico, combinando som, imagem e codificação usando pirâmides imagem, entende-se a representação inicial MHI em um formato de pirâmide hierárquica para fornecer um meio de abordar o cálculo gradiente de múltipla velocidades de imagem. Uma pirâmide imagem é construída por meio de filtragem recursiva lowpass e sub-amostragem de uma imagem até atingir o tamanho desejado de redução espacial. Com uma representação de pirâmide, duas imagens com grandes deslocamentos de movimento entre eles terão deslocamentos menores quando comparados a cada nível da pirâmide mais elevados. Isso permite usar máscaras de gradiente de tamanho fixo em cada nível da pirâmide (junto com algumas restrições) para calcular os movimentos de diferentes velocidades. O resultado é uma hierarquia de campos onde o movimento resultante calculado em cada nível é ajustado para uma velocidade específica Além disso, as reduções espaciais na geração de pirâmide ajuda a preencher em todas as pequenas falhas que podem ter sido perdidas.