176 RECONSTRUÇÃO DIGITAL DE OBJETOS EM 3D POR NUVEM DE PONTOS UTILIZANDO O KINECT Vitor Alexandre dos Reis - Acadêmico do Curso de Ciência da Computação – Centro Universitário UNISEB. email: [email protected] Lúcio André de Castro Jorge - Doutor em Engenharia Elétrica pela Universidade de São Paulo; Docente do Centro Universitário UNISEB. email: [email protected] Resumo Neste trabalho é apresentado um sistema que está em fase de desenvolvimento que permita a reconstrução digital de objetos em 3D, proposto para aplicação em estudos de frutas em póscolheita. O sistema proposto utiliza três componentes principais, sendo o primeiro componente um sensor Kinect que obtém imagens de profundidade e imagens no padrão RGB, tornando possível a execução do algoritmo de reconstrução tridimensional. O segundo componente é uma plataforma giratória que é controlada por um micro-controlador. E o terceiro componente é o software que reconstrói o objeto em 3D através das imagens obtidas com o sensor Kinect. Apresenta-se aqui os primeiros resultados e as primeiras avaliações. Palavras-chave: Reconstrução 3D; Segmentação; Imagens de profundidade. Abstract We present a system that is being developed for the reconstruction of digital 3D objects proposed for application in studies of fruit postharvest. The proposed system uses three main components, the first component being a sensor Kinect obtain depth images and images in RGB pattern, making it possible to execute three-dimensional reconstruction algorithm. The second component is a turntable that is controlled by a micro-controller. And the third component is the software that reconstructs the 3D object through the images obtained with the Kinect sensor. Here we present the first results and initial assessments. Keywords: 3D Reconstruction; Image Segmentation; Depth Images. 1. Introdução De acordo com Jorge e Ferreira (2011) produtos agrícolas geralmente podem ser distinguidos pela cor, forma e textura. De forma geral, pessoas treinadas possuem percepção visual capaz de determinar a qualidade dos frutos, grãos e hortaliças. Apesar do avanço tecnológico, a classificação de frutos de forma visual e manual ainda é amplamente praticada. Por outro lado, a crescente demanda pela qualidade dos alimentos por parte dos consumidores, bem como a exigência de instituições de proteção ao consumidor quanto à qualidade de produtos alimentícios, seja ele processado ou in natura, tem levado ao aumento do desenvolvimento de máquinas seletoras automáticas para identificar e remover todos os Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013 177 contaminantes: vidro, pedras, insetos, produtos estragados, matéria vegetal, etc. Além disso, a seleção ótica permite maior padronização do produto, com remoção de itens disformes. A reconstrução 3D de frutas e hortaliças tem um papel fundamental para o avanço no desenvolvimento de ferramentas de automatização de classificação de frutas e hortaliças, pois isso possibilita a criação de produtos que tenham como base a execução de algoritmos de inteligência artificial e de processamento digital de imagens que analisem os modelos 3D para obter uma resposta com maior grau de acertividade. Figura 1 - Frutas e hortaliças classificadas Fonte: foto de Geovani B. Amaro. Como pode-se visualizar na figura 1, a classificação uniformiza tamanho e o estado de maturação das frutas e facilita a comercialização dos produtos hortícolas. 1.1. Trabalhos relacionados Motivados pela necessidade de prover melhorias na metodologia de trabalho de diversos profissionais e impulsionados pelo desenvolvimento computacional, que permitiu ampliar as possibilidades de acesso a soluções de análise de imagens a baixo custo, diversos trabalhos tem sido desenvolvidos nos últimos anos com a temática centrada na reconstrução tridimensional de objetos. Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013 178 O projeto RGBdemo (MANCTL COMPANY, 2013) utiliza uma abordagem de reconstrução baseada nas técnicas SLAM (Simultaneous Localizantion And Mapping) e RANSAC (RANdom SAmple Consensus). Segundo Melgar e Diez (2012, p. 310) … essas são técnicas avançadas de computação que permitem reconstruir um cenário a partir de diferentes imagens obtidas por um scanner-3D sem ter qualquer informação da posição atual da câmera. O software analisa diferentes nuvens de pontos e as combina a partir pedaços em comum. Burrus (2013) adaptou o projeto RGBdemo e criou um scanner com plataforma giratória, o resultado obtido pode ser visualizado na Figura 2. Figura 2 - Imagem produzida pelo scanner com plataforma giratória de referência. FONTE: BURRUS, 2013. Algumas companhias de soluções em scanner 3D comercializam plataformas giratórias para serem utilizadas com suas câmeras 3D, como Mephisto 1 sistema de digitalização 3D altamente flexível e intuitivo, alcance rápido, imagens com qualidade, alta precisão e varredura de resultados com um mínimo de tempo de processamento e de interação com o utilizador (4DD DYNAMICS, 2012). Existem também outras soluções como o SpinScan apresentado na Figura 3, que é uma plataforma giratória desenvolvida e comercializada para a finalidade de scaneamento de objetos. 1 Disponível em: <http://www.4ddynamics.com/3d-scanners/>. Acesso em: 24 mar. 2012. Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013 179 Figura 3 - Estrutura do SpinScan FONTE: MELGAR e DIEZ, 2012. Pesquisadores do Instituto de Ciências Matemáticas e de Computação (ICMC), da USP de São Carlos, desenvolveram um equipamento de avaliação corporal que mede o percentual de gordura nas pessoas de forma mais rápida, precisa e confortável do que outros métodos existentes no mercado. O All Body Scan 3D escaneia o corpo inteiro em 30 segundos, e gera um modelo tridimensional do paciente. O equipamento tem aplicação tanto em clínicas de fisioterapia como em academias de ginástica (VILELLA, 2012). Figura 4 - Imagens geradas pelo All Body Scan 3D FONTE: VILELLA, 2012. De acordo com Vilella (2012) Para fazer o escaneamento completo do corpo, o equipamento utiliza a tecnologia do Kinect, sensor presente em videogames, que por meio de um trilho circular dá uma volta de 270 graus em torno do paciente, moldando o corpo em 3D e transferindo os dados volumétricos para o software no computador. Segundo Gazziro (USP Destaque, 2012) o dispositivo funciona da seguinte maneira Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013 180 São trinta segundos para escanear o corpo inteiro, mais dois minutos para processamento no computador. O tórax, porém, é escaneado nos primeiros sete segundos, tornando o equipamento confortável para uso, pois é necessário prender a respiração. Após este processo, o equipamento realiza o escaneamento da pélvis e pernas. Abaixo podemos conferir o dispositivo All Body Scan 3D. Figura 5 - Dispositivo All Body Scan 3D. FONTE: VILELLA, 2012. O D3D traz uma abordagem diferente do All Body Scan 3D, mas possuí uma ideia similar quanto ao método, já que propõe fazer o objeto a ser escaneado girar na frente do campo de captura do sensor. O D3D é uma solução de baixo custo comparado ao All Body Scan 3D, porém limita-se a objetos menores e destaca-se por sua portabilidade já que trata-se de um conjunto de equipamentos bem menores e mais leves. 2. Metodologia O D3D propõe o desenvolvimento de uma ferramenta para efetuar a reconstrução 3D de objetos e auxiliar na análise de volume do objeto, com o objetivo de automatizar esta tarefa. Para o desenvolvimento foram utilizados um sensor Kinect que obtém imagens de profundidade e imagens no padrão RGB. Também foi desenvolvida uma plataforma giratória que é controlada por um micro-controlador, com isso é possível visualizar o objeto em diversos ângulos. E o software que reconstrói o objeto em 3D através das imagens obtidas com o sensor Kinect. Todos são mais bem descritos a seguir. Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013 181 2.1. Kinect O sensor Kinect, lançado em novembro de 2010 e originalmente conhecido como Projeto Natal, é um dispositivo com sensor de movimento desenvolvido pela Microsoft para o console de videogame Xbox 360 que visa permitir aos jogadores uma interação com os jogos sem a necessidade de um controle cabeado através de uma interface natural do usuário Natural User Interface (NUI), inovando assim no campo da jogabilidade, competindo com o Wii Remote Plus da Nintendo e o PlayStation Move da Sony (MATSUMURA;SONNINO, 2011). 2.1.1. Sensor Kinect O Kinect é baseado em uma tecnologia de software desenvolvida internamente pela Microsoft Research e em uma tecnologia de detecção e reconhecimento 3D desenvolvida pela PrimeSense (MICROSOFT NEWS CENTER, 2010), que interpreta a informação de uma cena 3D através de uma projeção contínua de luz infravermelha, o chamado LightCoding. O sensor de profundidade consiste em um projetor de laser infravermelho combinado com um sensor monocromático CMOS que captura vídeo infravermelho sob qualquer condição de iluminação do ambiente e o transforma em dados de profundidade, como ilustrado na figura 6 (PRIMESENSE NATURAL INTERACTION, 2010). A faixa de detecção do sensor de profundidade é ajustável e o software é capaz de calibrar automaticamente o sensor baseando na jogabilidade e no ambiente físico do jogador. Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013 182 Figura 6 - Diagrama do sensor de profundidade do Kinect FONTE: PRIMESENSE NATURAL INTERACTION, 2011. 2.1.1. Kinect SDK Em 16 de junho de 2011 foi lançado oficialmente o Kit de Desenvolvimento de Software - Software Development Kit (SDK) do Kinect para o sistema operacional Windows 7, em versão beta, gratuita e de uso permitido apenas para fins não comerciais (MICROSOFT, 2011). Desta forma, entusiastas, desenvolvedores e pesquisadores acadêmicos obtiveram a possibilidade de criar novas funções com maior profundidade de detecção, qualidade no rastreamento de movimentos e reconhecimento de voz e objetos se comparado a outras soluções existentes anteriormente (ex.: OpenNI (HINCHMAN, 2011)). O SDK fornece acesso às APIs, permitindo as seguintes funcionalidades (MICROSOFT, 2011): ○ Controle direto do sensor; ○ Acesso a imagens diretas do sensor de profundidade, e câmera colorida; ○ Acesso ao microfone multimatriz; Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013 183 ○ Detecção do esqueleto de uma ou duas pessoas dentro do campo de visão do Kinect para aplicações orientadas a gestos; ○ Capacidade de processamento de áudio, incluindo supressão de ruídos e cancelamento de eco; ○ Capacidade de identicação da fonte emissora do som atual; ○ Integração com a API de reconhecimento de fala do Windows; e ○ Construção de aplicações em C++, C# ou Visual Basic. No dia 18 de março de 2013, foi lançada a versão 1.7 do Kinect SDK. As melhorias mais significativas foram relacionadas as linhas gerais de interface humana, com recursos que permitem o desenvolvimento de aplicações intuitivas e suaves. Além de estar mais preciso, a latência diminuiu. De acordo com a documentação, a detecção está 20% mais rápida. A nova versão, além de oferecer suporte a multi-threading podendo aproveitar melhor os processadores de múltiplos núcleos, também oferece ferramentas para criar renderizações 3D precisas (DUNCAN, 2013). 2.2. Plataforma giratória Quando um objeto é escaneado com o sensor Kinect, sempre há um lado visível, que o sensor Kinect pode “ver”, e um lado oculto que o sensor não pode capturar com uma única imagem. Isso pode ser visualizado na figura 7 abaixo. Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013 184 Figura 7 - Lado visível x Lado Oculto FONTE: MELGAR e DIEZ, 2012. Colocando-se um objeto em uma base giratória, é possível rotacionar o objeto de modo que o ponto P fique no lado visível. Pode-se girar a plataforma em qualquer ângulo e isso habilita a visualização do objeto em diversos pontos de vista. Figura 8 - Plataforma Giratória FONTE: MELGAR e DIEZ, 2012. Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013 185 De acordo com Melgar e Diez (2013) é possível reconstruir um objeto a partir de diferentes imagens, para isso é necessário que todos os pontos que definem a imagem do objeto estejam no mesmo sistema de coordenadas. Na primeira imagem o ponto P é definido pelas coordenadas P(x,y,z); quando a plataforma é rotacionada para visualizar o ponto, as coordenadas de P mudam, agora são P(x’,y’,z’). Sabendo o ângulo original e o ângulo para o qual a plataforma girou, pode-se facilmente obter as coordenadas originais de P(x,y,z) a partir das coordenadas transformadas de P(x’,y’,z’) utilizando trigonometria básica. Seja o ângulo α; a plataforma está sendo rotacionada no eixo y, então a transformação seria a seguinte: x = x’ * cos(α) -z’ * sin(α); y = y’ z= z’ * sin(α) + z’ * cos(α); Aplicando estas simples transformações. é possível escanear o objeto de diferentes pontos de vista e reconstruir ele com seu volume em um sistema de coordenadas consistente. A figura 9 mostra como seria a reconstrução da imagem a partir de 3 pontos de vista. Figura 9 - Reconstrução de imagem a partir de três pontos de vista. FONTE: MELGAR e DIEZ, 2012. Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013 186 2.3. Diferença de profundidade Através de imagens obtidas por sensores e câmeras com infravermelho é possível discriminar computacionalmente objetos de uma maneira mais fácil do que os métodos regulares, pois esses dispositivos permitem recuperar a profundidade dos pixels (PAL, N. R.; PAL, S. K., 1993). De acordo com Odemir e Neto (2012) a segmentação de objetos em imagens de profundidade pode ser realizada por diversos métodos, como: limiarização, crescimento de região, divisão e fusão, watershed, ou abertura por morfologia matemática. Para a aplicação proposta por este trabalho é essêncial que o método escolhido tenha o melhor desempenho possível. Figura 9 - Imagem RGB e imagem em profundidade FONTE: Elaboração Própria, 2013 A figura 9 mostra uma comparação de uma imagem no padrão RBG e sua correspondente no padrão de profundidades após um tratamento de segmentação já aplicado. O sensor de profundidade consiste em um projetor de laser infravermelho combinado com um sensor monocromático CMOS que captura vídeo infravermelho sob qualquer condição de iluminação do ambiente e o transforma em dados de profundidade (PRIMESENSE NATURAL INTERACTION, 2010). A seguir é exibido um trecho do algoritmo que é capaz de identificar objetos em una imagem de profundidade obtida com o sensor Kinect com base na distância de cada pixel2 o. 2 “pixel” é o menor elemento num dispositivo de exibição ao qual é possível atribuir-se uma cor. Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013 187 Quadro 1 - Algoritmo para segmentação por distância algoritmo SegmentacaoPorDistanciaKinect constante IndiceAzul = 0 constante IndiceVerde= 3 constante IndiceVermelho = 2 var dadosDeProfundidade: vetor[DadosCamera.TamanhoDados] inteiro DadosCamera.CopiarDadosDosPixelsPara(dadosDeProfundidade) var pixels : vetor[DadosCamera.Altura * DadosCamera.Largura * 4] inteiro var indiceProfundidade : inteiro var indiceCor : inteiro para (inicio: indiceProfundidade = 0, indiceCor = 0 fim: indiceProfundidade < dadosDeProfundidade.Tamanho, indiceCor < pixels.Tamanho passo: indiceProfundidade +1, indiceCor +4) var profundidade : inteiro profundidade = dadosDeProfundidade[indiceProfundidade] se profundidade < 0,9Metros então pixels[indiceCor + indiceAzul] = 255 pixels[indiceCor + indiceVerde] = 0 pixels[indiceCor + indiceVermelho] = 0 fim se se profundidade > 0,9Metros, profundidade < 2Metros então pixels[indiceCor + indiceAzul] = 0 pixels[indiceCor + indiceVerde] = 255 pixels[indiceCor + indiceVermelho] = 0 senão pixels[indiceCor + indiceAzul] = 0 pixels[indiceCor + indiceVerde] = 0 pixels[indiceCor + indiceVermelho] = 255 fim se fim para fim algoritmo FONTE: Elaboração Própria, 2013. 2.4. Segmentação por limiarização tridimensional De acordo com Verma, Kumar e Hsu (2006) com a imagem de profundidade podemos obter uma imagem no padrão RGB segmentada através da distância. Convertendo as coordenadas da imagem de profundidade fornecida pela câmera do sensor Kinect para uma nuvem de pontos, utilizaremos a posição tridimensional do objeto para obter uma imagem com somente o objeto que é de interesse. Isso foi feito definindo por referência três intervalos correspondentes a cada um dos eixos ortogonais, o que equivaleria a uma área em formato de caixa conforme a figura 11, Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013 188 com dimensões configuráveis, ou seja: largura ix, altura iy e profundidade iz. Criamos assim uma nova imagem contendo todos os pixels existentes nos intervalos descritos pela equação: Figura 11 - Limiariazação por coordenadas tridimensionais FONTE: Elaboração Própria, 2013. 2.5. Detecção dos pontos de finalização Um modo simples de executar a detecção dos pontos de finalização é percorrendo por toda a imagem e sempre que encontrar um pixel da cor do objeto analisar quantos pixels desta mesma cor a uma vizinhança de 8 ele tem. Caso este pixel tenha menos que dois pixels de sua mesma cor em sua vizinhança de 8, ele deverá ser adicionado como um ponto de finalização do objeto. A figura 12 exemplifica um pixel com vizinhança 8. Figura 12 - Pixels com vizinhança 8 FONTE: Elaboração Própria, 2013. Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013 189 3. Resultados Preliminares Constatou-se que o método proposto funcionou bem com objetos de forma regular, porém, a reconstrução e determinação do volume de frutas ainda apresentam limitações, principalmente por causa das formas irregulares e de difícil reconstrução computacional por modelos convencionais. A figura 13 exibe uma imagem obtida em uma análise de profundidade x padrão RGB. Figura 13 - Padrão de profundidade e padrão RGB respectivamente. FONTE: Elaboração Própria, 2013. Apesar das falhas, de modo geral o algoritmo de reconhecimento de objetos mostrouse eficiente. As imagens foram capturadas numa distância de 110 cm. A API de desenvolvimento apresentou uma taxa de precisão na profundidade de cerca de 80% fato que indica a necessidade de aplicar um tratamento especial no algoritmo para cobrir os 20% de dados sujeitos uma precisão inferior, se estes dados forem recuperados com alguma falha na região das bordas isso pode gerar um impacto grande no resultado do processamento do algoritmo. 4. Conclusões Este trabalho mostra o potencial de aplicação na área de pós-colheita, fundamental para estudo de frutas. Por ser uma ferramenta que em sua fase final pode apresentar de maneira simples e de rápido processamento, a identificação de formas 3D e determinação de volumes, itens que são uma limitação muito grande hoje em estudos de pós-colheita de frutas. Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013 190 Referências 4DD DYNAMICS. Mephisto 3D scanners. Disponível em: <http://www.4ddynamics.com/3dscanners/>. Acesso em: 24 mar. 2012. BURRUS, Nicolas. disponível em: <http://nicolas.burrus.name/>. Acesso em: 04 mar. 2013. DUNCAN, G. Kinect for Windows SDK v1.7 coming out today!. Disponível em: <http://channel9.msdn.com/coding4fun/kinect/Kinect-for-Windows-SDK-v17-coming-outtoday>. Acesso em: 22 ago. 2013. HINCHMAN, W. Kinect for Windows SDK beta vs. Open NI. jun. 2011. Disponível em: <http://labs.vectorform.com/2011/06/windows-kinect-sdk-vs-openni-2/>. Acesso em: 01 jul. 2011. JORGE, Lúcio; FERREIRA, Marcos; GONÇALVES, Danilo; OYAMA, Pedro. Uso de sistemas de imagem para classificação de frutas e hortaliças. Artigo (Tecnologia de PósColheitas em Frutas e Hortaliças) Empresa Brasileira de Pesquisa Agropecuária, São Paulo, 2011. MATSUMURA, Keila; SONNINO, Roberto. Fusion 4D - Interface Narutral e Imersiva Para Manipulação de Objetos 3D. Monografia (Engenharia de Computação) Escola Politécnica da Universidade de São Paulo, Universidade de São Paulo, São Paulo, 2011. MANCTL COMPANY, RGB Demo, 2013. Disponível em: <http://labs.manctl.com/rgbdemo/>. Acesso em: 24 mar. 2013. MELGAR, E. R.; DIEZ, C. C. Kinect and Arduino Projects: Design, Build, Blow Their Minds. New York: Apress, 2012. MICROSOFT. Kinect SDK features. Disponível em: <http://kinectforwindows.org/features/>. Acesso em: 01 jul. 2011. MICROSOFT NEWS CENTER. PrimeSense supplies 3-D-sensing technology to project Natal for Xbox 360. Disponível em: <http://www.microsoft.com/Presspass/press/2010/mar10/0331PrimeSensePR.mspx?rss_fdn=Press%20Releases>. Acesso em: 01 jul. 2011. NETO, Elias; BRUNO, Odemir. Reconhecimento de gestos em imagens de profundidade utilizando kinect. In: WORKSHOP DE VISÃO COMPUTACIONAL, 8, 2012, Goiânia, Anais eletrônicos... Goiânia: UFG, 2012. p. 1-6. Disponível em: <http://iris.sel.eesc.usp.br/wvc/Anais_WVC2012/default.htm>. Acesso em: 16 mar. 2013. PAL, N. R.; PAL, S. K. A Review On Image Segmentation Techniques. Pattern Recognition, Calcutta, v. 26, n. 9, p. 1277 – 1294, 1993. PRIMESENSE NATURAL INTERACTION. Our full 3D sensing solution. Janeiro de 2010, disponível em: <http://www.primesense.com/en/component/content/article/9-solutions/115the-primesense-3d-sensing-solution>. Acesso em: 10 dez. 2011. Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013 191 VERMA, V.; KUMAR, R.; HSU, S. 3D Building Detection and Modeling From Aerial Lidar Data. In: Proceedings of the 2006 IEEE Computer Society Conference on Computer Vision and Pattern Recognition, v. 2, p. 2213-2220, Washington, 2006. VILELLA, Fernando. Scanner 3D mede percentual de gordura em 30 segundos, USP Destaque, São Paulo, 22 nov. 2012. Disponível em: <http://www.usp.br/agen/?p=121367>. Acesso em: 16 mar. 2013. Rev. Científica Eletrônica UNISEB, Ribeirão Preto, v.1, n.2, p. 176-191, ag/dez.2013