Índice:

Scanner DIY 3D baseado em luz estruturada e visão estéreo em linguagem Python: 6 etapas (com imagens)
Scanner DIY 3D baseado em luz estruturada e visão estéreo em linguagem Python: 6 etapas (com imagens)

Vídeo: Scanner DIY 3D baseado em luz estruturada e visão estéreo em linguagem Python: 6 etapas (com imagens)

Vídeo: Scanner DIY 3D baseado em luz estruturada e visão estéreo em linguagem Python: 6 etapas (com imagens)
Vídeo: CVFX Lecture 24: Structured light scanning 2024, Julho
Anonim
Scanner DIY 3D baseado em luz estruturada e visão estéreo em linguagem Python
Scanner DIY 3D baseado em luz estruturada e visão estéreo em linguagem Python
Scanner DIY 3D baseado em luz estruturada e visão estéreo em linguagem Python
Scanner DIY 3D baseado em luz estruturada e visão estéreo em linguagem Python

Este scanner 3D foi feito com itens convencionais de baixo custo, como projetor de vídeo e webcams. Um scanner 3D de luz estruturada é um dispositivo de digitalização 3D para medir a forma tridimensional de um objeto usando padrões de luz projetada e um sistema de câmera. O software foi desenvolvido com base em visão estruturada de luz e estéreo com linguagem python.

Projetar uma faixa estreita de luz em uma superfície de formato tridimensional produz uma linha de iluminação que parece distorcida de outras perspectivas além da do projetor e pode ser usada para uma reconstrução geométrica exata da forma da superfície. Bandas de luz horizontais e verticais são projetadas na superfície do objeto e, em seguida, capturadas por duas webcams.

Etapa 1: Introdução

Introdução
Introdução
Introdução
Introdução

Dispositivos de aquisição 3D automática (frequentemente chamados de scanners 3D) permitem construir modelos altamente precisos de objetos 3D reais de maneira econômica e econômica. Experimentamos essa tecnologia ao escanear um brinquedo para provar seu desempenho. As necessidades específicas são: precisão média-alta, fácil de usar, custo acessível do dispositivo de digitalização, aquisição autorregistrada de dados de forma e cor e, finalmente, segurança operacional para o operador e os objetos digitalizados. De acordo com esses requisitos, projetamos um scanner 3D de baixo custo baseado em luz estruturada que adota uma abordagem versátil de padrão de listras coloridas. Apresentamos a arquitetura do scanner, as tecnologias de software adotadas e os primeiros resultados de sua utilização em um projeto de aquisição 3D de um brinquedo.

No projeto de nosso scanner de baixo custo, optamos por implementar a unidade emissora usando um projetor de vídeo. O motivo foi a flexibilidade deste dispositivo (que permite experimentar qualquer tipo de padrão de luz) e sua ampla disponibilidade. O sensor pode ser um dispositivo personalizado, uma câmera fotográfica digital padrão ou uma webcam. ele deve suportar captura de cores de alta qualidade (ou seja, aquisição de alta faixa dinâmica) e, possivelmente, com alta resolução.

Etapa 2: Software

Programas
Programas

A linguagem Python foi usada para programação por três motivos, um é fácil de aprender e implementar, dois podemos usar OPENCV para rotinas relacionadas a imagens e três é portátil entre diferentes sistemas operacionais para que você possa usar este programa em windows, MAC e Linux. Você também pode configurar o software para usar com qualquer tipo de câmera (webcams, SLRs ou câmeras industriais) ou projetor com resolução nativa de 1024X768. É melhor usar câmeras com resolução superior a duas vezes. Eu testei pessoalmente o desempenho em três configurações diferentes, a primeira foi com dois cinemas paralelos de webcam da Microsoft e um pequeno projetor portátil, o segundo foi com duas câmeras lifecam de cinema que giravam 15 graus uma em direção à outra e um projetor Infocus, a última configuração foi com câmeras web da logitech e projetor Infocus. Para capturar a nuvem de pontos da superfície do objeto, devemos percorrer cinco etapas:

1. Projetar padrões de cinza e capturar imagens de duas câmeras "SL3DS1.projcapt.py"

2. Processar as 42 imagens de cada câmera e códigos de pontos de captura "SL3DS2.procimages.py"

2. Ajustando o limite para selecionar o mascaramento das áreas a serem processadas "SL3DS3.adjustthresh.py"

4. Encontre e salve pontos semelhantes em cada câmera "SL3DS4.calcpxpy.py"

5 Calcule as coordenadas X, Y e Z da nuvem de pontos "SL3DS5.calcxyz.py"

A saída é um arquivo PLY com informações de coordenadas e cores de pontos na superfície do objeto. Você pode abrir arquivos PLY com software CAD como produtos Autodesk ou um software de código aberto como Meshlab.

www.autodesk.com/products/personal-design-a…

Python 2.7, módulo OPENCV e NUMPY devem ser instalados para executar esses programas Python. Também desenvolvi uma GUI para este software no TKINTER que você pode encontrar na etapa seis com dois conjuntos de dados de amostra. Você pode encontrar informações adicionais sobre este assunto nos seguintes sites:

docs.opencv.org/modules/calib3d/doc/camera_…

docs.opencv.org/modules/highgui/doc/reading…

www.3dunderworld.org/software/

arxiv.org/pdf/1406.6595v1.pdf

mesh.brown.edu/byo3d/index.html

www.opticsinfobase.org/aop/fulltext.cfm?uri…

hera.inf-cv.uni-jena.de:6680/pdf/Brauer-Bur…

Etapa 3: configuração do hardware

Configuração de hardware
Configuração de hardware
Configuração de hardware
Configuração de hardware
Configuração de hardware
Configuração de hardware
Configuração de hardware
Configuração de hardware

O hardware consiste em:

1. Duas câmeras (Logitech C920C)

2. Projetor Infocus LP330

3. Suporte para câmera e projetor (feito de placas acrílicas de 3 mm e madeira HDF de 6 mm cortada com um cortador a laser)

Duas câmeras e um projetor devem ser conectados a um computador com duas saídas de vídeo, como um notebook, e a tela do projetor deve ser configurada como uma extensão da área de trabalho do Windows principal. Aqui você pode ver imagens de câmeras, projetor e suporte. O arquivo de desenho pronto para corte é anexado no formato SVG.

O projetor é um Infocus LP330 (resolução nativa 1024X768) com as seguintes especificações. Brilho: 650 lúmens Saída de luz colorida: ** Contraste (totalmente ligado / desligado): 400: 1 Íris automática: Sem resolução nativa: 1024x768 Proporção: 4: 3 (XGA) Modos de vídeo: ** Modos de dados: MAX 1024x768 Potência máxima: 200 Watts Tensão: 100V - 240V Tamanho (cm) (HxWxD): 6 x 22 x 25 Peso: 2,2 kg Vida útil da lâmpada (potência total): 1, 000 horas Tipo de lâmpada: UHPLamp Potência: 120 Watts Quantidade de lâmpada: 1 Tipo de exibição: 2 cm DLP (1) Lente zoom padrão: 1,25: 1 Foco: Distância de alcance manual (m): 1,5 - 30,5 Tamanho da imagem (cm): 76 - 1971

Este projetor de vídeo é usado para projetar padrões de luz estruturados no objeto a ser digitalizado. O padrão estruturado consiste em faixas de luz branca verticais e horizontais que são salvas em um arquivo de dados e as webcams capturam essas faixas distorcidas.

De preferência, use as câmeras que são controláveis por software porque você precisa ajustar o foco, o brilho, a resolução e a qualidade da imagem. É possível usar câmeras DSLR com SDKs fornecidos por cada marca.

A montagem e os testes foram realizados no Copenhagen Fablab com o seu apoio.

Etapa 4: Experimentar com scanner

Experimentando com Scanner
Experimentando com Scanner
Experimentando com Scanner
Experimentando com Scanner
Experimentando com Scanner
Experimentando com Scanner

Para testar o sistema foi usado um brinquedo de peixe e você pode ver a imagem capturada. Todos os arquivos capturados e também a nuvem de pontos de saída estão incluídos no arquivo anexado, você pode abrir o arquivo de nuvem de pontos PLY com Meshlab:

meshlab.sourceforge.net/

Etapa 5: alguns outros resultados de verificação

Alguns outros resultados de verificação
Alguns outros resultados de verificação
Alguns outros resultados de verificação
Alguns outros resultados de verificação
Alguns outros resultados de verificação
Alguns outros resultados de verificação
Alguns outros resultados de verificação
Alguns outros resultados de verificação

Aqui você pode ver algumas imagens de rostos humanos e imagens em 3D de uma parede. Sempre há alguns pontos discrepantes devido a reflexos ou resultados de imagem imprecisos.

Etapa 6: GUI do scanner 3D

GUI do scanner 3D
GUI do scanner 3D

Para testar o software de varredura 3D nesta etapa, adiciono dois conjuntos de dados, um é a varredura de um peixe e o outro é apenas uma parede plana para ver a precisão dela. Abra os arquivos ZIP e execute SL3DGUI.py. Para instalação, verifique a etapa 2. Enviar mensagem para minha caixa de entrada aqui para todos os códigos-fonte.

Para usar a parte de digitalização 3D você precisa instalar duas câmeras e projetor, mas para as outras partes basta clicar no botão. Para testar os dados de amostra, primeiro clique em processo, em seguida, em limiar, correspondência estéreo e, por fim, nuvem de pontos. Instale o Meshlab para ver a nuvem de pontos.

meshlab.sourceforge.net/

Recomendado: