Páginas

domingo, 4 de novembro de 2012

PreviewTattoo [Visualizando sua futura Tatuagem com o Kinect]

Essa idéia veio de uma postagem no facebook de um primo que é tatuador, ele me explicou que quando é a primeira tatuagem de uma pessoa, ela fica sempre muito indecisa quanto ao seu tamanho, ou de como ela ficaria em seu corpo. Aproveitando uma disciplina da faculdade aproveitei para fazer um experimento usando Kinect, que possui o recurso de mapeamento do corpo, o que facilitou e muito o meu trabalho. No post anterior (aqui) explico de um modo rápido e prático a comunicação entre o Kinect e as bibliotecas com o processing.

No meu caso utilizei o SimpleOpenNI, por conta do mapeamento do corpo e algumas vantagens da biblioteca em si.

Então o meu primeiro passo foi detectar o esqueleto que o Kinect interpretava através da SONI. E entender como funcionava esse mapeamento.





Logo após foi identificar como eu poderia acessar cada ponto desse (Esqueleto gerado pelo Kinect), segue abaixo a lista dos nomes referente a cada ponto do corpo (como os nomes são o que realmente representam só que em inglês não vou colocar a tradução).


SimpleOpenNI.SKEL_HEAD
SimpleOpenNI.SKEL_NECK
SimpleOpenNI.SKEL_LEFT_SHOULDER
SimpleOpenNI.SKEL_LEFT_ELBOW
SimpleOpenNI.SKEL_LEFT_HAND
SimpleOpenNI.SKEL_RIGHT_SHOULDER
SimpleOpenNI.SKEL_RIGHT_ELBOW
SimpleOpenNI.SKEL_RIGHT_HAND
SimpleOpenNI.SKEL_TORSO
SimpleOpenNI.SKEL_LEFT_HIP
SimpleOpenNI.SKEL_LEFT_KNEE
SimpleOpenNI.SKEL_LEFT_FOOT
SimpleOpenNI.SKEL_RIGHT_HIP
SimpleOpenNI.SKEL_RIGHT_KNEE
SimpleOpenNI.SKEL_RIGHT_FOOT

Agora com os ponto detectados, pensei a princípio em colocar uma imagem para seguir um ponto do esqueleto (mão esquerda). Usei minha prima como modelo em um teste da aplicação. Segue abaixo algumas fotos:









Após detectar a parte do corpo e colocar a imagem para seguir a mesma, veio a parte mais complicada que foi dimensionar a imagem ao local exato que a pessoa escolher. Resolvi escolher colocar uma imagem entre os ombros e abaixo da cabeça.

A imagem que pensei em colocar foi a logo do Superman,  e aplicar a distância para dimensionar a imagem, ou seja se a pessoa estiver próxima a imagem amplia, se distante ela aumenta.

Fiz alguns testes primeiro com a câmera depth:


E para finalizar coloquei a câmera RGB e com a ajuda do Eduardo, tirei mais alguns prints. Agora já temos uma visualização real de como ficaria uma possível tatuagem neste local.


Breve postarei o video. Até a próxima!

Kinect + Processing [OSX - Montain Lion]

Neste post vou mostrar como instalar e rodar o Kinect no Mac usando o Processing.

Requisitos:

XCode: 
    Vamos precisar do Command Line Tools, para isso abra o seu XCode e, clique em xcode > Open Developer Tool > More Developer Tools, você será direcionado para o site da Apple na parte de desenvolvimento, basta fazer o login como desenvolvedor e baixar o pacote Command Line Tools.

XQuartz 2.7.2

MacPorts

CMake

Após todos esses programas instalados corretamente, é necessário baixar algumas bibliotecas:

Libtool - (Mais informações aqui)
    Abra o Terminal do Mac (Aplicativos > Utilitários > Terminal) e execute os comandos seguintes:
su - (Aperte "enter" e digite sua senha de administrador)
sudo port install libtool (Aperte "enter").

Após o termino reinicie seu Mac

LibUSB - (Mais informações aqui)
    Abra o Terminal do Mac e digite o comando abaixo:
sudo port install libusb +universal

Após o termino reinicie seu Mac

Para o Kinect existe várias bibliotecas, algumas delas (OpenNI + Osceleton e  OpenKinect), eu utilizei todas essas e preferi a SimpleOpenNi por conta de algumas funcionalidades, suporte e pela facilidade de instalar (que é somente importa-la no próprio Processing). 





Ela contém vários exemplos práticos, desde a detecção de movimentos, quanto ao mapeamento do esqueleto, boa diversão.