Um cientista explica o Microsoft Kinect, Parte II

A recepção ao meu primeiro artigo explicando a tecnologia por trás do Kinect, o novo acessório da Microsoft sendo lançado essa semana, foi surpreendente, em vários aspectos. O primeiro foi a enorme quantidade de visitantes, comentários e elogios, o que obviamente me deixou muito feliz…

O segundo aspecto, entretanto, foi mais interessante e inesperado: o diretor de incubação da Microsoft Alex Kipman, responsável pelo desenvolvimento do Kinect (e brasileiro!), leu o artigo! E, para minha surpresa, explicou que eu estava enganado com relação à tecnologia usada para obter os resultados surpreendentes que descrevi no artigo anterior, e me apontou no caminho certo.

A minha primeira reação foi a de ficar com vergonha: afinal de contas dei uma explicação que fazia muito sentido mas que não estava totalmente correta, e para uma audiência enorme. Vergonha ou não, só existe uma alternativa correta nesse caso, que é assumir o engano e corrigir a informação, o que é o que faço hoje. Alguns amigos me consolaram dizendo que qualquer cientista erra, e esse é o único jeito de continuar aprendendo, e concordo com eles! Além do mais, é inegável que ser corrigido pelo próprio Alex Kipman é no mínimo algo bem empolgante!

O que continua valendo?

Expliquei no artigo anterior que a antiga Power Glove, o Wii e o Move retornam informações limitadas, e semelhantes. Todos retornam informação a respeito de um ou dois pontos no espaço; o que muda são os graus de liberdade (DOF, de degrees of freedom) retornados para o ponto. O ideal é que você tenha seis graus de liberdade, ou seja, que o sistema saiba não só a posição espacial do controle (as coordenadas x,y,z do controle) mas também os três ângulos (roll, pitch e yaw) que determinam para onde ele está inclinado. O Move e o Wiimotion Plus retornam isso, o que é bem bacana; a Power Glove, nos 1980s, já retornava x,y,z, yaw e roll, ou seja, 5DOF.

Seis graus de liberdade no Wiimote

Seis graus de liberdade no Wiimote

O problema desses sistemas é que eles se restringem à posição (mesmo que com 6DOF) apenas do controle propriamente dito. O Kinect, por sua vez, entrega informação 3D da cena inteira (ou seja, entrega um mapa de profundidade, como apontou o nic nos comentários do primeiro artigo). A partir desse mapa ele detecta a posição do corpo inteiro da pessoa que está em frente à câmera. Essa é a grande inovação, e a explicação continua valendo! O que muda é como esse mapa é construído, e quem desenvolveu o sensor.

Um conto de duas empresas israelenses

No artigo anterior eu disse que a tecnologia usada no Kinect veio da empresa israelense 3DV, que produzia a ZCam, uma câmera TOF (time-of-flight) que entrega um mapa de profundidade como o que era necessário. A 3DV foi comprada pela Microsoft há algum tempo. Pouco depois foi anunciado o Project Natal, que virou o Kinect, e mais tarde comunicaram que a tecnologia dele era de uma empresa israelense que fazia câmeras 3D

Meu engano foi assumir que a empresa israelense era a 3DV! Na verdade a Microsoft comprou a 3DV, mas com interesse no seu portfólio de patentes. conforme explicado no venturebeat.com. Como eu assumi que a tecnologia usada era a da 3DV, eu expliquei como funcionava a câmera dela, a ZCam, que é uma câmera TOF…

Mas o sensor do Kinect foi desenvolvido pela Microsoft, internamente, numa parceria com uma outra empresa israelense que produzia câmeras que retornam mapas de profundidade, a PrimeSense (foi aqui o Alex Kipman me corrigiu). Essa informação muda completamente a minha hipótese, porque a PrimeSense usa um outro método para detectar a profundidade na cena, baseado em luz estruturada (structured light)! E o Kinect não é idêntico aos produtos da própria PrimeSense, pois o sensor em si foi projetado especificamente para as necessidades da Microsoft.

O sensor de profundidade da PrimeSense

Explicada a confusão, posso explicar como funciona o sensor da PrimeSense. Como disse, o sensor do Kinect não é exatamente o mesmo sensor da PrimeSense, então pode ser que algum detalhe seja diferente do que vai ser descrito aqui, mas o princípio é simples de entender a partir de um pequeno exemplo.

Vamos começar por um projetor comum, como os que são usados em cinema e home theaters, ou mesmo um retroprojetor dos antigos, que usam transparências. Esse projetor é usado para projetar um quadriculado uniforme. Se você coloca o projetor perto da parede, o quadriculado aparece pequeno, com cada quadradinho ocupando pouco espaço. Similarmente, se você projeta numa parede bem distante, os quadrados aparecem enormes.

Se você entra na frente do projetor, o quadriculado é projetado em seu corpo. A parte do quadriculado que acerta você aparece de um tamanho, e a parte que acerta a parede lá no fundo aparece de outro… Ou seja, se você mede, na imagem da câmera, o tamanho de cada quadradinho do quadriculado você sabe, baseado no tamanho dele, a que distância ele está! O quadriculado é luz estruturada, ou seja, luz com uma estrutura bem definida que permite que você descubra informações sobre a cena baseado na forma como essa luz é refletida.

Note que você pode detectar a profundidade não só com o tamanho do quadradinho (esse é só um exemplo didático), mas também observando, por exemplo, como linhas que deveriam ser retas são distorcidas ao serem projetas em superfícies curvas.

Luz estruturada projetada em superfície irregular

Luz estruturada projetada em superfície irregular

Um ponto difícil é que você precisa de uma óptica bem precisa: quanto mais resolução tem o quadriculado, mais exata a sua medida. Para enxergar o quadriculado você precisa de uma câmera de alta resolução, e para medir em tempo real o tamanho de todos os quadradinhos você precisa de hardware e software dedicados, numa arquitetura paralela.

No Kinect o quadriculado é projetado com luz infravermelha, invisível, logo você não percebe. Qualquer câmera digital comum detecta infravermelho: se você filmar com seu celular um controle remoto comum de TV funcionando você consegue enxergar o LED infravermelho dele piscando toda vez que você aperta uma tecla. Isso é uma vantagem enorme, porque isso implica que com uma câmera de infravermelho comum você consegue enxergar o quadriculado! Não é preciso o hardware dedicado caro da 3DV, que descrevi no artigo anterior, em que cada “pixel” tem o equivalente a um cronômetro para medir o tempo de vôo. Provavelmente o custo foi a principal razão por terem escolhido a PrimeSense ao invés da 3DV, aliás.

Mas isso não significa que o Kinect seja simplesmente uma câmera infravermelho comum, porque o processamento em tempo real necessário para extrair o mapa de profundidade a partir da imagem do quadriculado é bem sofisticado. Ele usa um sensor (CCD) comum, mas tem bastante coisa por trás.

Ilustração do design de referência da PrimeSense

Ilustração do design de referência da PrimeSense

Alguns aspectos ainda não estão claros para mim: o padrão exato usado, por exemplo (não precisa ser necessariamente um quadriculado; linhas paralelas podem ser usadas, ou mesmo padrões bem sofisticados que codificam mais informação), a resolução desse padrão (e consequentemente a resolução do mapa de profundidade) e outros detalhes do algoritmo usado. Mas isso não afeta o entendimento de como o processo funciona.

Galantucci, L. M. , Percoco, G. and Dal Maso, U. 'Coded targets and hybrid grids for photogrammetric 3D digitisation of human faces', Virtual and Physical Prototyping, 3:3, 167 - 176

Galantucci, L. M. , Percoco, G. and Dal Maso, U. 'Coded targets and hybrid grids for photogrammetric 3D digitisation of human faces', Virtual and Physical Prototyping, 3:3, 167 - 176

Quem estiver interessado em maiores detalhes pode ler as patentes da Prime Sense, como por exemplo:

Conclusão

O fato do sensor do Kinetic usar luz estruturada desenvolvida em conjunto com a PrimeSense, ou uma câmera TOF da 3DV não muda o meu entusiasmo. O interessante, como já expliquei, é ter um mapa de profundidade em tempo real, de baixíssimo custo. O aprendizado de máquina usado para extrair informações de postura corporal a partir do mapa continua o mesmo, e as muitas aplicações que uma tecnologia assim tem também.

A comparação de preço que fiz com a SwissRanger SR4000 da Mesa Imaging agora não é mais tão justa, já que câmeras TOF são mesmo bem mais caras que câmeras baseadas em luz estruturada. Mas comparar, por exemplo, a resolução do mapa de profundidade e a velocidade com que ele é produzido continua válido.

Uma vez mais, gostaria de agradecer a todos os leitores pela atenção, e de me desculpar com eles pelo engano. Um agradecimento especial, é claro, vai para o leitor mais ilustre, o Alex Kipman, e pela atenção e gentileza dele ao me corrigir. Espero que a leitura tenha sido divertida!

Mundos Virtuais, Processamento de Sinais, Reconhecimento de Faces, Robótica, Visão Computacional 9 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (6 votes, average: 5,00 out of 5)

Automação residencial – 3/3

Concluindo o post sobre automação residencial, vou falar um pouco sobre os demais subsistemas que citei no artigo original.

Controle de iluminação

Tradicionalmenete a maioria dos projetos de automação residencial começam por esse sistema. Você pode entendê-lo como uma parte do sistema de controle de eletricidade mas resolvi deixá-lo separado para acrescentar algumas coisinhas legais que se pode fazer aqui:

  • O uso de RFID permite um controle muito acurado dos locais da casa que precisam estar iluminados em um dado instante de tempo. Se cada morador usa, por exemplo, uma pulseira com um tag RFID o sistema pode usar antenas estrategicamente colocadas para ir acendendo ou apagando lâmpadas conforme necessário. Isso proporciona uma economia de energia muito grande principalmente se você integrar o HVAC ao mesmo mecanismo de controle).
  • Painéis centralizadores para monitorar/atuar em todo o sistema de iluminação também podem ser bem úteis. Por exemplo, na hora de dormir, o usuário pode ir ao painel e ligar/desligar as luzes conforme seu desejo ao invés de ir fazendo uma peregrinação pela casa e áreas externas para verificar se tudo está como ele quer.
  • Integrado ao sistema de monitoramento patrimonial, o sistema de iluminação pode ser uma ferramenta bastante eficaz na defesa da casa. Seja iluminando automaticamente áreas onde foram detectadas violação, seja fazendo simulação de presença no imóvel quando todos estão fora.

Detecção e combate a incêndios

Há no mercado uma infinidade de sensores capazes de detectar diversos tipos de situação de perigo (fumaça, emissão de gases, temperatura elevada, chamas etc). Uma integração desses sensores com um bom sistema de alarmes pode ser a diferença entre um simples incômodo e uma catástrofe. Além dos tradicionais alarmes visuais e auditivos, o sistema pode ser programado para entrar em contado com brigadas de incêndio ou com o corpo de bombeiros. Ou soluções intermediárias como enviar SMS, e-mail ou ligações telefônicas com mensagens previamente gravadas.

Os atuadores também são figurinhas repetidas no mercado. Sistemas de esguichos de água ou pó químico podem ser facilmente integrados e monitorados se estiverem em perfeita integração com os demais sistemas da casa (controle de fluidos, vigilância, elétrico etc).

Sistemas de vigilância e segurança patrimonial

Esse é talvez o sistema mais popular hoje quando se fala em automação residencial. Muita gente já tem um sistema de vigilância sofisticado, integrado à rede da casa e à internet que permite monitoramento remoto via WEB. Na verdade não há o que inventar aqui. Tais sistemas podem simplesmente ser integrados aos demais sistemas da casa. Talvez o maior ganho seja integrar os mecanismos de alarme e interface com o mundo externo usados pelos outros sistemas (e-mail, SMS, chamadas gravadas etc).

Outra coisa interessante é integrar o sistema de vigilância aos canais de distribuição de vídeo da casa. Isso permite tratar as imagens do sistema como qualquer outro tipo de vídeo, chaveando o aparelho para onde será transmidido, permitindo o arquivamento digital, permitindo a distribuição para mais de um ponto da casa etc.

Controle de acesso

Os mecanismos de controle de acesso evoluiram muito nos últimos anos. Há no mercado soluções de todas as faixas de preço e com propriedades variadas. O mais simples continua sendo o tradicional interfone (com ou sem vídeo). Bastante seguro, principalmente se for integrado a múltiplas câmeras e sistema de iluminação adequado. A principal desvantagem é a usabilidade: você precisa esperar que alguém de dentro da casa atenda, te identifique e abra a porta. Na verdade essa espera pode não ser apenas um problema de desconforto: em muitos casos essa espera pode ser uma falha de segurança, por expor o usuário desnecessariamente a uma possível abordagem por um bandido exatamente na hora em que ele quer entrar na casa (tenho uma amiga que foi assaltada exatamente nessas circunstâncias).

Para evitar essa espera há alternativas que vão desde soluções mais baratas (cartões com código de barra, ópticos ou magnéticos, smart cards, bótons etc) até soluções mais dispendiosas como reconhecimento de digital, íris, retina e face.

Os mecanismos baseados em “tokens” (cartoes, bótons etc) tem a desvantagem de serem fraudáveis com mais facilidade. Já os sistemas de biometria não podem ser fraudados facilmente. Desses, o mais eficaz em termos de taxa de acerto (e também o mais caro) é o reconhecimento de íris e retina. O reconhecimento de digital, embora sua utilização esteja em franca expansão no mercado, é muito suscetível a erro. Condições de oleosidade adversa nos seus dedos podem fazer com que o sistema te deixe dormir do lado de fora se você estiver “naquele dia”. Mas o sistema mais interessante na minha opinião é o baseado em reconhecimento de face. Ele tem várias vantagens:

  • Não ser intrusivo: você não precisa pôr seu olho ou seu dedo em um aparelho. Simplesmente ande em direção à porta normalmente e ele faz o trabalho de pegar sua imagem na câmera previamente colocada para isso e te identificar.
  • O sistema possibilita um esquema de auditoria muito bom. Você tem as fotos dos rostos de todas as pessoas que fizeram uso do acesso controlado. Isso pode ser usado de diversas maneiras úteis, por exemplo, voce pode receber em seu celular a foto de qualquer pessoa que esteja entrando em sua casa.
  • O sistema tem um efeito inibidor mais eficaz sobre pessoas mal intencionadas. Sabendo que seu rosto está sendo filmado, um engraçadinho se sentirá menos disposto a tentar burlar/danificar a porta, portão ou outro dispositivo de bloqueio do acesso.

O Labs desenvolveu uma solução completa de controle de acesso via reconhecimento de face. Eu trabalhei diretamente no projeto e talvez seja por isso que tenha minha preferência biased para essa opção ;-).

Serviços de telefonia

Integrar sua rede doméstica com um sistema de telefonia digital traz uma série de benefícios:

  • Extrema facilidade para fazer auditoria nas ligações.
  • Auditoria na qualidade/aferição de uso por parte das operadoras.
  • Maior facilidade de interface com os mecanismos de monitoramento remoto.
  • Maior facilidade com as interfaces de alarme.
  • Chaveamento apropriado para os diversos cômodos da casa.
  • Facilidade para realização de tele-conferências

Distribuição de áudio e vídeo

Muita gente hoje tem os chamados “media centers”. Computadores ou vídeo-games com capacidade de armazenamento e decodificação de aúdio e vídeo (em diversos formatos) integrados a canais de distribuição para os diversos cômodos da casa. Se bem implementado, esse sistema permite um grande conforto na distribuição de áudio e vídeo pela casa. A grande dificuldade está em fazer com que a interface seja simples, intuitiva e eficaz, não para um nerd analista de sistemas, mas para usuários leigos (sua mãe ou sua irmã que faz direito e ODEIA computadores ;-)).

Um pouco mais do mesmo

Além das menções explícitas às integrações entre os sistemas comentados acima há inúmeras outras maneiras de se integrá-los de forma a extrair o máximo de usabilidade do seu sistema como um todo. Como eu disse anteriormente, pensar nessa integração é um dos grandes desafios da domótica. É através da sinergia entre os sistemas que o usuário vai sentir os maiores e mais relevantes benefícios de um sistema de automação residencial. Se você estiver pensando em projetar um sistema desses (ou contratar alguém para projetar), não cometa o erro comum de implementar um sistema de cada vez, se preocupando com a integração na medida que cada sistema é implementado. Projete pelo caminho inverso. Pense em uma arquitetura que vá comportar tudo que o mercado tem disponível e vá implementando sistema a sistema depois. E não se esqueça de me convidar para um churrasco em sua casa quando tudo estiver “no ar” :-).

Automação, Inteligência Artificial, Reconhecimento de Faces 4 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 1,00 out of 5)