Programação para Kinect

Alguem por aqui programa para Kinect ? (Linguagem C++, VB.Net ou C#)
Da pra programar no Netbeans com C++;

Usa o SDK - Kinect for Windows, mas é necessário ter o kinect pra windows sai por R$ 250;

Pra dar um exemplo: http://caixabranca.net/2011/09/21/programando-para-kinect/

Olá, eu terei as mesmas funcionalidades se eu usar o kinect para xbox usando o SDK 1.5 que se eu usar o Kinect for windows usando a SDK 1.5?

Oi.

Uma alternativa ao Kinect for Windows é a OpenNI, que tem bindings para Java também:
http://www.openni.org/

Com ela, ao invés dos drivers oficiais, você deve usar o driver da PrimeSense (empresa que criou o hardware do Kinect para MS):

A diferença do Kinect para X-Box para o Kinect for Windows é basicamente a distância mínima e máxima do aparelho.
No caso do Windows, você pode usar o dispositivo de mais de perto. No caso do Kinect, você deve respeitar uma distância mínima de aproximadamente 1,5m.

Mas é possível comprar o Kinect para X-Box e liga-lo no PC. Só recomendo que você compre a versão que não vem com o X-Box, pois é a única que vem com fonte de alimentação externa.

Muito obrigado ViniGodoy pelos exclarecimentos!

Minha dúvida realmente era essa, se valeria a pena comprar um Kinect for windows, pois to com a possibilidade de adquirilo por 510 reais, uma pessoa irá trazê-lo de fora para mim. Já que eu encontro kinect xbox por 340 reais no mercado livre já com a fonte, com frente por pac ficaria entre 360 a 370 reais. E minha finalidade pelo menos no momento é apenas programação.

Tranquilo.

Tenho montada uma API que integra a OpenNI ao OpenCV, escrita em C++, caso tenha interesse.

Estou usando o Kinect com a OpenCV2.x para reconhecimento de sinais da Lingua de Sinais Brasileira.

ViniGodoy,

você ler pensamentos! Poderia ganhar dinheiro com isso. rsrsrsrs

Eu justamente to querendo comprar um kinect para fazer estudos sobre reconhecimento da liguagens de sinais brasileira. Tenho interesse sim, e muito. Se puder me passar ficarei muito grato. To querendo algo para meu TCC. Inclusive venho estudando tem alguns meses. Opencv, legal, eu to mais familiarizado com a 2.3, mas é tranquilo.

A dificudade maior que vejo é o rastreamento de dos, preciso do kinect para testar. Mas estive lendo da identificação estática também da mão, mas também precisaria testar. Tudo usando a câmera infra ir de profundidade. Mas o SDK da microsoft não tem suporte a rastreamento de dedos, até onde sei, eis o problema. Vi textos na internet que essa funcionalidade deve sair na SDK 2.0.

Muito obrigado!

Vianney

Oi.

Nenhum dos SDKs possui suporte ao rastreamento dos dedos.
Até porque, a precisão do Kinect não é muito grande.

Não é à toa que essa pesquisa é feita no meu mestrado, na área de visão computacional.

E está beeeem longe de ser trivial, especialmente no caso de Libras.

Se seu TCC é para graduação, sugiro fazer algo mais simples, como isso aqui:

Outra possibilidade seria fazer o rastreamento dos dedos, ou considerar alguns sinais da datilologia com a mão parada, esticada para frente (o que já poderia fazer algum dispositivo de entrada).

No meu caso, pretendo usar uma rede SOM para identificar a configuração da mão como um todo. Em seguida, combinar a informação da localização e trajetória da mão, para tentar identificar o sinal como um todo. A modelagem do sinal seria feita através dos modelos escondidos de Markov.

Só para comentar, pretendo baixar a OpenCV 2.4.1 esse final de semana. Provavelmente tudo deverá continuar funcionando, pois a OpenCV dificilmente quebra compatibilidade.

Também vou jogar esse pacote de integração de opencv + openni no GiThub. Aí deixo o link aqui para quem quiser baixar.

A parte de Libras não vou disponibilizar online, pelo menos ainda.
Ainda estou gravando uma base de dados com palavras.

Eu imaginei que seria complexo. A minha ideia par TCC seria reconhecer algumas letras do alfabeto apenas, e quem sabe formar uma palavra.Mas não sei se será possível mesmo. Eu irei tentar entrar no mestrado na mesma área de Visão Computacional. Se puder disponibilizar o pacote ficarei grato. Meu tcc é para dezembro, to começando agora nas férias justamente para saber o que consigo fazer, até pensei em não usar kinect fazer algo usar artoolkit, ou flartoolk ou HandyAR. Pensei em algo para ensinar crianças pequenas usando handyAR

Eu penso também algo voltado a educação, como algo para crianças pequena. A libra foi uma ideia que tive que achei interessante. Pode achar engraçado, mas muitas vezes vejo deficientes auditivos conversando libras, rindo, e eu morro de vontade de saber o que eles estão conversando, quando vi o kinect tive a ideia.

O que gosto na open cv nova que ela é mais prática, menos linha de código.

Uma coisa que achei nas minhas pesquisas que talvez seja melhor que o kinect é o leap. Pelo que percebi é um sensor voltado para as mãos pois elas terão que está sobre ele para poder serem rastreadas, de acordo com fabricante tem uma precisão de 0,001 mm. A leitura é feita de baixo para cima. Agora o único impedimento que vejo para a libras brasileira é que não sei se ele consegue ler a mão na posição vertical punho para baixo e dedos para cima, e pelo que percebo muito movimentos ficam nessa posição. Mais ai só vendo. Muitos dizem que o leap é concorrente do kinect, eu não concordo, pois vejo funcionalidade diferentes para ambos, pelo menos até o momento. http://leapmotion.com/ .

ViniGodoy muito obrigado pela ajuda que tem dado.

Abraço
Vianney

Uma coisa que tem que ficar claro: Os gestos das letras do alfabeto (datilologia libras) não é falar Libras.

Libras não é uma versão gesticulada do português. Muitos deficientes auditivos sabem falar libras, mas não sabem escrever em português, portanto, não saberiam soletrar uma palavra.
Se seu objetivo for surdos-mudos, de nada adianta fazer o alfabeto. Eles talvez só vão saber gesticular o próprio nome.

Para identificar a Libras mesmo, você precisa:
a) Capturar a posição relativa da mão (faz diferença se um gesto é feito na altura da cabeça ou na altura do peito, por exemplo);
b) O movimento realizado pela mão. Uma boa descrição desses movimentos (em anexo) pode ser encontrada em:
Carneiro, Alex T. S., Cortez, Paulo C. e Costa, Rodrigo C.S. , “Reconhecimento de Gestos da LIBRAS com Classificadores Neurais a partir dos Momentos Invariantes de Hu,” in Interaction 09 - South America, São Paulo, 2009.
c) A configuração dos dedos. Uma lista completa das 61 posições possíveis em Libras pode ser encontrada em (em anexo):
Pimenta, Nelson e Quadros, Ronice Müller , Curso LIBRAS 1, 4th ed.: Vozes, 2010.

Os movimentos são bastante amplos. Tem movimentos que começam nas pernas e vão até a cabeça, por exemplo. Isso descarta totalmente o uso do LEAP.

Não faz diferença se o sinal é gesticulado com a mão direita ou esquerda: a pessoa gesticula geralmente com base em sua mão primária. Esse detalhe deve ser levado em conta, pois você terá que tratar pessoas canhotas que gesticulam de maneira “refletida”.

Por fim, você também pode levar em consideração a identificação de uma só palavra gesticulada, ou de um diálogo. O segundo é mais complexo que o primeiro, não só pelo fato dos sinais terem que ser separados um dos outros, mas pelo fato de entre um sinal e outro haver um gesto que deve ser descartado (chamado de epêntese). Por exemplo, se alguém gesticula a balavra boi (que basicamente é fazer um chifre com os dedos indicadores na cabeça) e na sequencia vai gesticular a palavra polvo (cujo gesto começa ao lado da perna), haverá o deslocamento da mão da cabeça até a perna. E esse deslocamento não representa gesto nenhum.

No seu caso, como se trata de um TCC de graduação, acho que tratar a datilologia é suficiente. Já vai ser um ótimo tema. É mais simples, mas não chega a ser trivial. Também tem cunho social - pois pode aproximar pessoas que falam no universo Libras e pode criar um dispositivo de entrada gestual para quem é surdo e mudo. E também já vai te colocar em contato com várias das tecnologias que você usaria num futuro mestrado, em especial, os classificadores. Os sinais também são gesticulados de maneira relativamente controlada, o que facilita enormemente a separação da mão do resto da cena (segmentação).

Não recomendo Libras como um todo, pois além da classificação, você terá que se preocupar muito com rastreamento e segmentação. Na Libras mesmo, é muito mais difícil segmentar sinais que ocorrem ao lado da bochecha, por exemplo (já envolve detectores de pele, análise de contorno, etc). Deixe para ver isso no mestrado, pois você provavelmente terá disciplinas exclusivamente para tratar desse assunto, e um orientador especialista em reconhecimento de padrões para te dar as dicas.

Já com o trabalho em datilologia, você já entra no mestrado pronto para fazer as perguntas certas nas aulas de processamento de imagens e morfologia matemática. O que já é bem à frente do que eu mesmo entrei.




Conforme prometido, este é o projeto que integra OpenNI e OpenCV:

Na pasta samples, tem um pequeno exemplo de uso.

Oi Vini, muito obrigado, desculpa não ter respondido antes pois, estive fora uns dias.

Então o que quero fazer no meu TCC é digitação em libras. Ainda não tenho a menor ideia como irei fazer isso, preciso testar e ver como faço isso.

Irei dá uma olhada nos arquivos e na proposta do teu mestrado sim.

Muito obrigado!

[quote=ViniGodoy]Tranquilo.

Tenho montada uma API que integra a OpenNI ao OpenCV, escrita em C++, caso tenha interesse.

Estou usando o Kinect com a OpenCV2.x para reconhecimento de sinais da Lingua de Sinais Brasileira.[/quote]

Nossa cara que iniciativa bacana.

Atualizei novamente a lib para incluir as funções de player de vídeo (play, pause, step e jump).
Também incluí mais um exemplo que mostra como usar o foreach da xncv. É uma mão na roda na hora de processar pixel por pixel, pois a sintaxe da opencv (quando vc quer fazer de maneira otimizada) é um pouco esquisita:

Vec3 pixel = mat.ptr<Vec3>.ptr(y)[x];

O foreach também já leva em consideração a otimização para quando matrizes são contínuas.

Valeu. :slight_smile:

Primeiro teste, vou ver se sai com rastreamento estático da mão.

Dê uma olhada na documentação da OpenNI que ela tem um exemplo de como gerar o esqueleto.
Vou acrescentar módulos para o esqueleto na xncv no próximo final de semana.

É que pretendo criar um formato de arquivo (.skl) e gravar o esqueleto junto com os vídeos.

Não é possível gerar o esqueleto usando como base os vídeos gravados no formato .oni, pois ele usa uma compressão um tanto agressiva. Por isso, é importante já gravar a informação de onde o esqueleto estava no momento da captura.

Ok, irei fazer isso.
Ele gera esqueleto das mãos também?

[quote=vianney]Ok, irei fazer isso.
Ele gera esqueleto das mãos também?[/quote]

Uma das juntas é a mão. Mas não gera juntas para os dedos.
Aí é onde o bicho pega.

Mas já é uma boa para auxiliar na segmentação.

Valeu. :)[/quote]
Legal mesmo! Fico imaginando a funcionalidade que a Microsoft apresentou este ano na E3, fazer buscas e navegar no dashboard com comandos de voz. Usando a sua API poderia ser possivel de implemtar a mesma funcionalidade mas com linguagem de sinais.

//Daniel