Kinect em Isometria e Aprimoramentos

O próximo passo foi fazer com que a imagem capturada pelo Kinect fosse projetada na matriz de pinos isométricos criados anteriormente.

Basicamente, o que deveríamos fazer aqui era usar a média aritimética da distáncia dos pixels de cada quadrado da matriz, e utilizá-la para definir a altura
de cada pino isométrico.

Porém, alguns ajustes deveriam ser feitos.
Como podem perceber, o scan do kinect apresenta alguns “buracos”, ou “falhas” bem visíveis no retorno de imagem, como podem ver a seguir:

<>

Essas falhas acontecem por alguns motivos. Geralmente são resultado de sombras, reflexos ou por objetos que estão fora da distância de leitura do Kinect.
O Kinect possui uma distância mínima e máxima de leitura. Caso o usuário se aproxime muito da câmera, poderá constatar que chegará um ponto em que o Kinect não conseguirá mais
scanear. O mesmo acontecerá se o usuário se afastar em demasia.

No retorno visual da imagem é possível perceber que essas “falhas” são pontos pretos na imagem. Ou seja, o Kinect as encara como pontos com 0 de distâcia da câmera.
Como estamos fazendo uma média aritimética dos pontos para conseguirmos saber a altura dos pinos do Tangima, estas falhas alteram bastante o resultado.

Portanto, faremos algumas alterações no código do Processing. Antes de realizar a média aritimética e calcular a altura dos pinos do Tangima, nós vamos definir uma distância
máxima e uma distância mínima de leitura. A diferença entre estas duas distâncias nós vamos chamar de “range”. Além disso, vamos definir que todos os pixels que estiverem com
0 de distância da câmera serão encarados como pixels com a distância máxima da câmera (a que acabamos de definir). Faremos o mesmo para os pixels que estiverem com a distância da câmera
maior do que a que acabamos de definir.

No livro “Make Things See”, o autor explica passo-a-passo como “limpar” a imagem do kinect, (página 324)

E seguida, nós vamos fazer uma regra de 3 para converter a média aritimética de cada quadrado para a altura de cada pino isométrico. Vale uma observação aqui. Para que essa conversão seja feita,
precisamos saber qual altura máxima e mínima queremos para os pinos isométricos. Se tivermos um range de leitura do kinect de 3m e um range dos pinos isométricos de apenas 20 pixels,
a imagem ficará praticamente plana. É preciso encotrar uma proporção e equilíbrio entre estes dois valores para que o resultado agrade.

O resultado da imagem do Kinect, com estes aprimoramentos, em isometria, será:

<>

Por fim, vale dizer que, dependendo da velocidade do servo que formos utilizar na construção do Tangima, talvez seja preciso utilizar uma função “delay”. Com isso, reduziremos
a taxa de atualização dos pinos para uma taxa que os servos consigam executar com precisão.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s