sexta-feira, 10 de junho de 2011

Visão Computacional em Sistemas Embarcados

Com os recentes avanços no poder dos microcontroladores, hoje é possível implementar visão computacional em sistemas embarcados. Na visão computacional, dados de um sensor bidimensional - a câmera - são interpretados através de algoritmos avançados de tempo real que extraem a informação útil, o que antes requeria um universo de sensores. Usando software inteligente, o sistema embarcado emprega esta informação para responder a eventos acontecidos no campo de visão da câmera. Observe que uma câmera é capaz de obter detalhes que necessitariam de uma série de sensores unidimensionais para obtê-los. Um sensor unidimensional é simples a ponto de detectar somente o nível de luminosidade do ambiente, ou, no caso de sensores infravermelhos (IR), ativar/ desativar ações em caso de interrupção no seu feixe, como um portão de garagem que pára diante de um obstáculo do feixe.
A visão computacional pode suplantar um sistema de sensores unidimensionais pois tem a habilidade de "enxergar" o todo, ao invés de porções limitadas do espaço. Portanto, esta técnica pode ser empregada em situações onde o objeto a ser detectado tem uma forma diferenciada, ou é feito de material transparente, ou ainda ter a possibilidade de mudar em diferentes formatos.
Um exemplo prático no espaço de trabalho é o caso de uma furadeira rodeada de sensores IR, para fins de segurança de operação desta máquina. Naturalmente, este sensoriamento é unidimensional, caso a mão do operador bloqueie o feixe IR, automaticamente isto interromperá o funcionamento da furadeira. Entretanto, havendo alguma falha no processo de bloqueio do feixe, haverá exposição ao risco. Assim, mais sensores IR são necessários, elevando o custo, a complexidade e a manutenção do sistema. Considere agora o mesmo sistema, só que baseado em visão computacional. Uma simples câmera pode ser posicionada na cabeça da furadeira, de forma que possa capturar uma visão ampla do espaço da broca. Usando esta câmera e um algoritmo de detecção de movimento, qualquer movimentação no campo de visão da câmera será detectado, provocando alguma ação, como o desligamento instantâneo. Adicionalmente, o algoritmo pode ser incrementado para realizar outras tarefas, relacionadas à precisão do furo, por exemplo. E esta aplicação pode ser extendida a máquinas maiores.
A habilidade de se posicionar a câmera onde se deseja capturar a cena é outra vantagem chave deste sistema. Outras tecnologias necessitam que o sensor esteja posicionado próximo ao objeto do sensoriamento. Por outro lado, na visão computacional, a câmera pode se colocada em uma posição afastada, livre da poeira e de outros agentes agressivos presentes no ambiente industrial, como a instalação no teto. Usando os recursos de zoom da câmera, por exemplo, o sistema pode tanto atender o sensoriamento numa área específica de interesse, como proteger uma área maior.
Outra área de emprego da visão computacional é nas interfaces homem-máquina. A visão computacional aliada com câmeras é o futuro desta tecnologia, como pode ser atestado pelo Kinects. Não teremos mais telas touch engorduradas ou teclas com defeito, porque a visão computacional reconhecerá o movimento das mãos do usuário. O reconhecimento de gestos é um dos campos da visão computacional, sendo suportado por várias pesquisas, como o porte de um dos algoritmos para iPhone.
Se a visão computacional é combinada com interface homem-máquina e segurança, podemos ter o reconhecimento facial, o que abre inúmeras possibilidades para sistemas embarcados. Detecção de face e rastreamento podem ser feitos usando um processador ARM Cortex-A8 com um co-processador NEON em tempo real. O próximo passo será o reconhecimento facial em tempo real, que necessitará de muito maior poder computacional. A próxima geração de processadores ARM suportarão OpenCL para atender estes requisitos. OpenCL é um framework de processamento paralelo para programadores C acessarem a arquitetura de processamento paralelo de uma Unidade Processadora Gráfica (GPU). Muitos algoritmos de visão computacional, tais como este, usados para detecção e reconhecimento facial, rodam de modo eficiente em arquiteturas paralelas.
A implementação de visão computacional não é algo que você tem de fazer desde o princípio das coisas. A biblioteca OpenCV é aberta e suporta vários algoritmos para detecção e reconhecimento de face, rastreamento de objetos, detecção de movimento, fluxo ótico e reconhecimento de objetos. Está sob a licença BSD, sendo livre tanto para propósitos acadêmicos quanto comerciais. Pode ser baixado aqui.
Um exemplo de como utilizá-la em hardware como o i.MX51 EVK ou Genesi SBC pode ser encontrado em optimizing-opencv-face.
Uma vez que se tem o software e o hardware necessário para implementá-lo, você está apto a combiná-los e tentar criar inovações no campo da visão computacional.


Traduzido e adaptado de: http://blogs.freescale.com/2010/10/11/computer-vision-in-embedded-systems/

Nenhum comentário:

Postar um comentário