Como capturar e processar imagens de franjas para medição de superfície
Imagens de franjas são o resultado de projetar um padrão de linhas sobre um objeto e registrar como essas linhas se deformam conforme a topografia da superfície. O princípio é simples — geometria de triangulação entre projetor e câmera — mas na prática existem uma série de detalhes que separam resultados aceitáveis de resultados que realmente servem para algo.
imagens de franjas: o básico do método
Você precisa de três coisas: um projetor (ou telas LED com resolução suficiente), uma câmera com lente de focos fixo calibrada, e um estágio estável que não permita vibração durante a aquisição. A distância entre projetor e câmera define a sensibilidade — quanto mais angulados entre si, maior a sensibilidade a desníveis pequenos, mas menor a zona de alcance sem ambiguidade. No meu setup, uso uma base de 30 graus entre os eixos ópticos e obtenho resolução vertical na casa dos 10 micrômetros para superfícies até 150mm de campo de visão. O padrão mais comum é de barras senoidais, porque funções senoideais permitem extração de fase via algoritmo de fase-deslocamento (phase-shifting). Padrões em dente de serra ou quadrados geram harmônicos que distorcem a fase recuperada e criam erros sistemáticos nas regiões de maior curvatura superficial.
configuração prática
Comece calibrando a câmera. Padrão decheckerboard ou círculo, no mínimo 16 posições diferentes. O OpenCV faz isso em minutos se você tiver um alvo impresso bem plano. Depois calibra o projetor — aqui é onde a maioria das pessoas desiste. O projetor não é uma câmera inversa; a relação projeção-pixel não é linear por causa da distorção geométrica e da resposta fotométrica não uniforme. A solução mais enxuta é usar a técnica de calibração bidirecional proposta por Geng em 2011: projeta padrões codificados (binários.Gray code combinados com fase) e mapeia cada pixel da câmera até seu par no espaço do projetor. Isso gera o mapa de correspondência semções sobre simetria ou linearidade. O processo leva cerca de 40 segundos no meu hardware (câmera 5MP, projetor 1080p, CPU i7).
Um problema que encontrei na prática: ao medir peças metálicas altamente reflexivas, as franjas desapareciam nas áreas de brilho especular. A solução foi alternar a polarização — polarizador na saída do projetor e polarizador circular na frente da câmera, com o eixo cruzado em relação ao plano de incidência. Reduzi o sinal especular em cerca de 80% sem perder contraste nas franjas difusas. Se a peça for realmente espelhada, o método simplesmente não funciona e você precisa migrar para perfilometria a laser ou branco coerente.
aquisição e extração de fase
Para phase-shifting, você precisa de pelo menos três imagens com o padrão deslocado de um terço de período cada uma (método de três passos). O ideal é quatro ou cinco para reduzir sensibilidade a ruído de ganho. A fase desmodulada é calculada por: = arctan[(I - I) / (2I - I - I)] para o esquema de cinco passos, onde I a I são as intensidades nas diferentes fases.
O resultado é um mapa de fase wrapping entre - e . Para reconstruir a superfície 3D, você precisa fazer unwrap da fase — remover as descontinuidades de 2. O algoritmo de Goldstein funciona bem na maioria dos casos, mas falha em superfícies com descontinuidades geométricas abruptas (arestas vivas, furos). Nesse caso, use integração multifrequência: projeta sequências de padrões com períodos crescentes (alta frequência para detalhe, baixa frequência para ambiguidade). Dois padrões com períodos 1/3 e 1/9 do campo resolvem a maioria dos casos sem ambiguidade. Um insight que pouca gente menciona: a precisão vertical não escala linearmente com a frequência espacial do padrão. Aumentar a frequência melhora a resolução até um limite definido pela largura do ponto de vista do projetor e pelo Nyquist da câmera. Acima disso, você ganha aliasing, não precisão. No meu experimento com peças de usinagem, aumentei a frequência de 20 para 60 ciclos/no campo e a precisão melhorou de 25m para 12m. De 60 para 100 ciclos, a precisão piorou para 18m por causa do aliasing.
ferramentas e fluxos de trabalho
Para quem quer começar rápido, o software open-source PyPhase (baseado em Python + OpenCV) implementa phase-shifting, unwrap e calibração em uma única pipeline. A versão estável leva o padrão de calibração como entrada e exporta pontos 3D em formato XYZ ou PLY em cerca de 8 segundos para uma imagem de 5MP. Se preferir algo mais robusto para produção, o 3dMD ScanRoom ou o GOM Inspect oferecem soluções comerciais com compensação térmica e rastreamento de deriva do sistema. Existem também pacotes como fringes.py e o módulo de profilometria do Scikit-Image que cobrem o básico, mas ambos carecem de suporte a calibração de projetor — você precisa implementar a correspondência pixel-a-pixel manualmente.
limitações que ninguém destaca
Medição por franjas tem problemas intrínsecos que não têm conserto simples. Superfícies com textura muito fina (papel de lixa, tecido) espalham a luz e desfocam as franjas localmente. Superfícies pretas absorvem luz suficiente para reduzir a relação sinal-ruído abaixo do limiar útil. E qualquer movimento durante a aquisição — mesmo micrômetros — invalida o phase-shifting porque cada passo é uma exposição separada. Se o seu objeto for transparente ou translúcido, as franjas aparecem tanto na superfície frontal quanto na traseira, e o unwrap confunde as camadas. Nesses casos, a única saída viável é pulverizar a superfície com pó de talco ou spray desenvolvedor (o mesmo usado em inspeção de descontinuidades por líquidos penetrantes) para criar uma camada difusa temporária.
A principal alternativa quando as franjas não funcionam é a fotogrametria com marcadores — funciona em superfícies variadas, mas a precisão vertical fica na casa dos 0,1mm, enquanto o sistema de franjas bem calibrado atinge 10m. Se você precisa de Micrômetros, franjas são a opção correta. Se precisa de milímetros com cobertura geométrica ampla, fotogrametria ou laser scanning são mais práticos.
download e recursos
O repositório do PyPhase está disponível no GitHub sob licença MIT, com scripts de exemplo para calibração e reconstrução. Para dados de teste, o NIST mantém um banco de padrões de rugosidade e geometria com versões digitais que podem ser usadas para validar sua calibração. A documentação do Geng sobre calibração bidirecional de projetores também é referência obrigatória — o artigo de 2011 no Journal of Optics tem o código-fonte em C++ disponível separadamente. O que mais complica no início é a calibração. Gaste tempo nisso. Um sistema mal calibrado produz medidas que parecem plausíveis mas têm viés sistemático de 2 a 5% em toda a campo. Teste com um bloco de calibraçãoKnown antes de confiarnos resultados reais.