Índice:
- Etapa 1: Introdução
- Etapa 2: Software
- Etapa 3: configuração do hardware
- Etapa 4: Experimentar com scanner
- Etapa 5: alguns outros resultados de verificação
- Etapa 6: GUI do scanner 3D
Vídeo: Scanner DIY 3D baseado em luz estruturada e visão estéreo em linguagem Python: 6 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
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
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
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
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
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
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
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:
Controle remoto IR baseado em Arduino automático baseado em temperatura: 7 etapas
Controle remoto IR baseado em Arduino automático baseado em temperatura: Ei, e aí, pessoal! Akarsh aqui da CETech. Cansado de acordar no meio de um sono profundo só porque a temperatura ambiente está muito baixa ou muito alta por causa do seu AC mudo. Então este projeto é para você. Neste projeto, vamos fazer o nosso
Usando um estéreo automotivo para reproduzir MP3s em um estéreo doméstico mais antigo: 7 etapas
Usando um estéreo automotivo para reproduzir MP3 em um estéreo doméstico mais antigo: Reproduzindo arquivos mp3 em um estéreo doméstico Baixei ou copiei cerca de 5.000 músicas de rock clássico nas últimas duas décadas e precisava de uma maneira simples de reproduzir arquivos de música digital em um estéreo doméstico mais antigo. Tenho um computador de home theater (HTC) conectado
Termômetro infravermelho sem contato baseado em Arduino - Termômetro baseado em IR usando Arduino: 4 etapas
Termômetro infravermelho sem contato baseado em Arduino | Termômetro baseado em IR usando Arduino: Olá pessoal, neste instructables faremos um termômetro sem contato usando arduino. Já que às vezes a temperatura do líquido / sólido é muito alta ou muito baixa e então é difícil fazer contato com ele e ler sua temperatura então naquele cenário
Uma solução de visão acessível com braço robótico baseado em Arduino: 19 etapas (com imagens)
Uma solução de visão acessível com braço robótico baseado em Arduino: Quando falamos sobre visão de máquina, sempre parece tão inacessível para nós. Enquanto fazíamos uma demonstração da visão de código-fonte aberto, que seria muito fácil de fazer para todos. Neste vídeo, com a câmera OpenMV, não importa onde esteja o cubo vermelho, o robô ar
Sabre de luz baseado em Arduino com efeitos de luz e som: 14 etapas (com imagens)
Sabre de luz baseado em Arduino com efeitos de luz e som: Olá jedi! Este instrutível é sobre como fazer um sabre de luz, que se parece, soa e se comporta como um do filme! A única diferença - ele não pode cortar metal: (este dispositivo é baseado na plataforma Arduino, e eu atribuo a ele muitos recursos e funções, ele