Contents — find the section you need
Para determinar se dois pontos em uma imagem mostram a mesma coisa, é mais eficiente comparar pequenas pistas, facilmente identificáveis, do que comparar a imagem inteira. O processo de seleção dessas pistas é chamado de detecção de características. Ele está no ponto de partida de qualquer processo que necessite de correspondência entre imagens — estimativa de movimento da câmera, junção de panoramas, reconstrução 3D, recuperação de imagens, inspeção visual. Este artigo separa "onde selecionar" de "como combinar os pontos selecionados" e organiza o raciocínio por trás dos algoritmos clássicos tanto do ponto de vista da equação quanto da implementação.
Intel RealSense D435Imagem: Intel RealSense depth camera D435 (Marc Auledas, CC BY-SA 4.0), Wikimedia Commons. Uma câmera representativa, não um dispositivo exclusivo para detecção de características.
Resumo de 30 segundos
-
Posicione os pontos de interesse não em paredes planas, mas em cantos com variação de intensidade em múltiplas direções, ou em manchas cujo brilho difere do ambiente ao redor. O importante é que o ponto seja detectado novamente no mesmo local após uma pequena transformação da imagem (repetibilidade).
-
A detecção de cantos captura a bidirecionalidade dos gradientes locais; a detecção de manchas captura uma área de brilho localmente distinta em alguma escala. O DoG busca rapidamente candidatos a manchas a partir da diferença entre múltiplas imagens borradas.
- O FAST avalia cantos rapidamente comparando apenas os pixels em um círculo. O ORB combina o FAST com uma pirâmide de imagens, estimativa de orientação e um descritor binário BRIEF rotacionado, adequado para uso em tempo real.
-
O SIFT seleciona a escala via DoG, normaliza a orientação com um histograma de direção do gradiente e constrói um descritor de 128 dimensões. O custo computacional e de memória aumenta, mas é robusto a mudanças de escala e rotação.
-
A detecção por si só não determina a correspondência. A distância do descritor, o teste de razão e a verificação geométrica baseada em RANSAC devem ser avaliados em conjunto como um único pipeline. Recentemente, a detecção e correspondência baseadas em aprendizado, como SuperPoint, ALIKED e LightGlue, também se tornaram práticas.
O que é um Ponto Característico — Não "um Ponto que se Destaca", mas "um Ponto que Você Pode Encontrar Novamente"
Considere as coordenadas do pixel como \mathbf{x}=(x,y)^\mathsf{T} e a imagem como I(\mathbf{x}). Um ponto característico é uma localização cujo patch vizinho pode ser detectado de forma estável como a mesma localização física, mesmo após uma pequena translação, rotação ou escala, e que pode ser distinguido de outros pontos pelo padrão circundante. O primeiro é chamado de detector, e o que transforma o segundo em um vetor numérico ou sequência de bits é chamado de descritor.
Esses dois são distintos. O FAST é, em princípio, um detector; o BRIEF é um descritor; o ORB é um mecanismo que combina ambos. O SIFT é a combinação de um detector DoG e um descritor de histograma de gradiente. Comparar apenas os nomes gera confusão, portanto, daqui em diante, sempre trataremos isso como três etapas: "selecionar pontos", "representar o entorno" e "combinar pontos".
Figura: criada por Duskcoil. A qualidade do sistema não é controlada por ela. pelo número de detecções, mas pelo número de correspondências que acabam sendo geometricamente consistentes.
Cantos: Selecionando Locais que Mudam em Duas Direções
A característica mais intuitiva é o canto. Escreva a mudança aparente quando um patch de imagem W é deslocado por um pequeno deslocamento \mathbf{u}=(u,v)^\mathsf{T} como a SSD (soma dos quadrados das diferenças):
Sob uma aproximação de Taylor de primeira ordem, a matriz de estrutura local (segundo momento) \mathbf{M} torna-se
onde I_x,I_y são os gradientes da imagem e w é um peso, como uma janela gaussiana. Sejam os autovalores de \mathbf{M} \lambda_1,\lambda_2; um ponto é um canto. onde até mesmo o menor autovalor é grande. Em uma borda, onde o gradiente é grande em apenas uma direção, um autovalor permanece pequeno. Em regiões planas, ambos permanecem pequenos. O detector de Harris não calcula os autovalores explicitamente em cada pixel; em vez disso, ele seleciona os máximos locais do seguinte valor de resposta:
k geralmente fica em torno de 0,04–0,06. O detector de Harris é relativamente robusto à rotação, mas como ele analisa através de uma janela de tamanho fixo, não possui um mecanismo para selecionar o mesmo ponto quando o objeto é significativamente ampliado ou reduzido. O \min(\lambda_1,\lambda_2) de Shi-Tomasi também é amplamente utilizado como um critério prático para selecionar cantos adequados para rastreamento.
Manchas: Uma "mancha", mesmo sem um canto, é uma pista útil
Os cantos sozinhos não detectam adequadamente logotipos redondos, manchas, buracos escuros ou o centro de um reflexo brilhante. Portanto, um O detector de manchas encontra áreas de brilho localmente distintas em relação ao seu entorno, em alguma escala. Escreva o espaço de escala suavizado com uma Gaussiana G(\mathbf{x};\sigma) como
onde * é a convolução e \sigma representa "o tamanho que estamos observando". A resposta normalizada pela escala do Laplaciano da Gaussiana (LoG),
responde fortemente a um círculo escuro em um fundo claro, ou a um círculo claro em um fundo escuro. Encontrar extremos não apenas na posição, mas também no espaço tridimensional (x,y,\sigma), incluindo a direção \sigma, simultaneamente identifica o centro e o tamanho característico de uma mancha. Você também pode interpretar isso como a escala correspondente a uma mancha circular cujo raio é aproximadamente \sqrt{2}\sigma .
O LoG é uma ótima ideia, mas calcular a segunda derivada exata em cada escala é custoso. Essa aproximação e aceleração levam ao DoG e, a partir daí, ao SIFT.
DoG: Encontrando Candidatos Invariantes à Escala a partir da Diferença de Desfoques
A Diferença de Gaussianas (DoG) é a diferença entre duas imagens desfocadas adjacentes:
onde k>1 é a razão entre as escalas adjacentes. Até um fator constante, o DoG aproxima o LoG normalizado pela escala, de modo que candidatos a blobs podem ser pesquisados com apenas uma convolução extra. Na implementação, você constrói uma pirâmide gaussiana desfocando progressivamente a imagem e compara cada pixel DoG com seus 8 vizinhos na mesma escala, mais 9 vizinhos em cada escala acima e abaixo — 26 no total. Um máximo ou mínimo o torna um candidato.
Candidatos não são usados como está. Extremos fracos são ruído e são rejeitados, assim como extremos ao longo de bordas alongadas. Interpolar uma função quadrática 3D em torno de um extremo DoG fornece a posição e a escala em subpixel. Para a Hessiana:
um \mathrm{Tr}(\mathbf{H})^2/\det(\mathbf{H}) grande indica uma resposta de borda onde apenas uma curvatura principal é forte, e tais pontos são excluídos. Isso resolve o mesmo problema da detecção de cantos: um ponto em uma borda parece semelhante mesmo quando deslocado ao longo da borda, portanto, sua correspondência não pode ser determinada de forma única.
FAST: Julgando Cantos Rapidamente Observando Apenas um Círculo
O Features from Accelerated Segment Test (FAST) usa os 16 pixels em um círculo de Bresenham de raio 3 em torno do pixel p. Dado um limiar t, se n pixels consecutivos (tipicamente 9 ou 12) são todos mais brilhantes que I_p+t, ou todos mais escuros que I_p-t, p é considerado um canto.
Como não calcula gradientes ou matrizes — apenas um pequeno número de comparações de pixels mais rejeição antecipada — é extremamente rápido. O design que primeiro verifica os pixels nas posições de 1, 5, 9 e 13 horas no círculo e para imediatamente se uma sequência contínua de pixels claros/escuros não puder ser formada é fundamental para sua velocidade. Por outro lado, o FAST puro não fornece escala nem orientação e tende a responder a muitos pontos ao longo das bordas. Somente após calcular a diferença de intensidade em relação ao entorno, aplicar supressão não máxima (NMS) e combinar com uma pirâmide de imagens é que ele se torna um detector multiescala prático.
ORB: Não deixar o FAST como "rápido, mas difícil de usar" O ORB (Oriented FAST and Rotated BRIEF) é uma construção que reforça o FAST e o BRIEF, visando a correspondência de imagens em tempo real. Primeiro, ele executa o FAST em uma pirâmide de imagens em cada taxa de redução s, mantendo os pontos superiores de cada nível. Isso proporciona, senão exatidão, robustez à mudança de escala.
Em seguida, ele calcula o centroide de intensidade do patch em torno do ponto p. A partir dos momentos
o ângulo \theta=\operatorname{atan2}(m_{01},m_{10}) do centro p ao centroide \mathbf{c} torna-se a orientação dominante. O descritor BRIEF é uma sequência de bits que compara pares de pixels (\mathbf{a}_i,\mathbf{b}_i) dentro do patch:
dispostos aproximadamente 256 Em ORB, as coordenadas dos pares de pontos são rotacionadas por \theta antes da comparação, de modo que o mesmo padrão de bits tende a resultar mesmo após a rotação. O rBRIEF, que aprende a selecionar pares de comparação com baixa correlação, é outra maneira de preservar o conteúdo de informação dos bits. A distância entre strings binárias pode ser calculada rapidamente como a distância de Hamming — o número de bits definidos após o XOR.
O ponto forte do ORB é a velocidade e a eficiência de memória em CPUs e dispositivos embarcados, sendo amplamente adotado em SLAM visual. No entanto, sob grandes diferenças de escala, forte desfoque ou mudanças significativas de ponto de vista, o SIFT ou recursos baseados em aprendizado com descrições de gradiente mais ricas podem ser vantajosos.
SIFT: Normalizando Consistentemente Escala, Orientação e Descrição
A Transformação de Recursos Invariantes à Escala (SIFT) detecta extremos de (x,y,\sigma) via DoG e remove pontos de baixo contraste e respostas de borda. Ao redor da vizinhança de cada ponto, calcula a magnitude do gradiente e direção e constrói um histograma de orientação ponderado por Gaussiana. O pico mais alto torna-se a orientação dominante usada para normalizar a rotação do patch, e picos secundários que excedem 80% do máximo também recebem sua própria orientação. Este é o núcleo de sua robustez à rotação.
Para o descritor, uma janela normalizada de aproximadamente 16\times16 é dividida em 4\times4 células, e cada célula recebe um histograma de gradiente de 8 direções. A dimensionalidade é, portanto, 4\times4\times8=128. O vetor \mathbf{d} é normalizado por L2, e elementos que excedem 0,2 são cortados e renormalizados, suprimindo a sensibilidade à mudança local de iluminação.
Em outras palavras, a "invariância" do SIFT não é mágica. É um projeto explícito que aborda cada fonte de variação individualmente: selecionando a escala por meio da pirâmide de imagens, rotacionando o sistema de coordenadas pelo orientação dominante e absorção de contraste via normalização. Não é completo contra deformações afins ou grandes diferenças de ponto de vista, que ainda exigem RANSAC ou geometria multiview.
Pseudocódigo de Implementação Mínima
O processamento de pontos de características não deve parar na extração — deve ser implementado até a verificação de correspondência. Abaixo está um esqueleto que se aplica tanto ao ORB quanto ao SIFT.
function match_images(imageA, imageB, method):
grayA, grayB = to_gray(imageA), to_gray(imageB)
detector = create(method) # ORB: FAST+pyramid+rBRIEF / SIFT: DoG+gradient
keyA, descA = detector.detect_and_compute(grayA)
keyB, descB = detector.detect_and_compute(grayB)
metric = HAMMING if method == ORB else L2
tentative = []
for each descriptor a in descA:
b1, b2 = two_nearest(a, descB, metric)
if distance(a, b1) < 0.75 * distance(a, b2):
tentative.append((a.keypoint, b1.keypoint))
H, inlier_mask = RANSAC_HOMOGRAPHY(tentative, reproj_threshold=3px)
return tentative[inlier_mask], H
Considerar apenas o vizinho mais próximo deixa pontos ambíguos, como molduras de janelas, grades e padrões repetitivos, no resultado. O teste de razão de Lowe usa a razão entre a melhor distância d_1 e a segunda melhor d_2, descartando candidatos onde a diferença para o segundo colocado não é grande o suficiente. O RANSAC então estima uma homografia \mathbf{H} ou matriz fundamental a partir de pequenos subconjuntos aleatórios de correspondências como uma hipótese e escolhe a hipótese que explica a maior parte correspondências (inliers) com pequeno erro de reprojeção. Se o objeto for planar, ou se a câmera tiver sido simplesmente rotacionada no mesmo lugar, a consistência pode ser verificada com a homografia.
Para uma cena 3D geral, a matriz fundamental/essencial é usada em vez da matriz principal. A contagem e a proporção de inliers que sobrevivem até este ponto representam a quantidade de recurso realmente utilizável.
O que é robusto à iluminação, escala e rotação, e em que grau
Contra mudanças de iluminação, um simples deslocamento de brilho I'(x,y)=I(x,y)+b destrói as diferenças de pixels, mas tem pouco efeito sobre as relações relativas em gradientes ou comparações binárias. Uma mudança uniforme de contraste I'=aI+b também é tratada razoavelmente bem pela normalização de descritores do SIFT. Mas quando a própria estrutura local muda — saturação de exposição, limites de sombra, reflexos, dia versus noite — os métodos clássicos sozinhos não oferecem garantias. Durante a captura, fixe ou controle rigorosamente a exposição e, se necessário, aplique correção de contraste local, como O CLAHE é aplicado sob as mesmas condições para ambas as imagens. A correção excessiva pode transformar ruído em características espúrias, portanto, tenha cuidado.
Os métodos Harris ou FAST de resolução única são inerentemente fracos em relação a mudanças de escala. O ORB, que busca candidatos em uma pirâmide de imagens, possui tolerância prática, embora não tenha a mesma normalização que o SIFT, que seleciona extremos de escala contínua via DoG. Se a textura desaparecer em escala reduzida, nenhum método conseguirá encontrar correspondência. A resolução de entrada, a profundidade da pirâmide e o tamanho mínimo do patch devem ser definidos com base na faixa esperada de variação da distância de captura.
Em relação à rotação, a resposta do Harris em si é relativamente estável, mas a correspondência também requer a rotação do sistema de coordenadas do descritor. O ORB atribui orientação por meio do centroide de intensidade, enquanto o SIFT utiliza o histograma de direção do gradiente. Essa normalização de ângulo contínuo é mais eficaz do que um descritor que lida apenas com incrementos de rotação de 90 graus. Enquanto isso, uma forte visão oblíqua não se trata de rotação e escala, mas sim de uma deformação afim/projetiva, exigindo, em vez disso, dados de múltiplas vistas. Características covariantes afins ou características baseadas em aprendizado combinadas com verificação geométrica.
Métricas de Avaliação: Meça Correspondências Utilizáveis, Não a Contagem de Pontos
Para um par de imagens com uma homografia conhecida H, projete o ponto \mathbf{x}_i da imagem A na imagem B e, se um ponto dentro da distância \epsilon existir no conjunto de pontos detectados K_B, conte-o como uma redetecção bem-sucedida. A repetibilidade é conceitualmente
Mas encontrar a mesma localização é inútil se os descritores não conseguirem distingui-la. Portanto, você também relata a precisão da correspondência (fração de correspondências corretas), a contagem de correspondências corretas, a taxa de inliers pós-RANSAC, o erro de rotação/translação da pose estimada, o tempo de processamento e a memória. O HPatches é um benchmark representativo que separa a mudança de iluminação da mudança de ponto de vista para avaliar a correspondência de patches, detectores e homografia. Estimativa. A menos que você meça com dados que correspondam à geometria da sua aplicação (planar ou 3D de linha de base ampla), você não deve adotar a classificação de uma única pontuação sem questionar.
| Método | Núcleo de detecção | Descritor | Escala/rotação | Distância de correspondência | Pontos fortes | Principais ressalvas |
|---|---|---|---|---|---|---|
| Harris + patch | Matriz de estrutura | Patch bruto, etc. | Escala ✕, rotação separada | SSD/NCC | Princípio claro | Fraco à iluminação/escala |
| LoG / DoG | Extremos de blob no espaço de escala | Necessita de descritor separado | Escala ◎, rotação separada | Depende do descritor | Obtém blob e escala | Cálculo de pirâmide necessário |
| RÁPIDO + BREVE | Brilho contínuo no círculo | Comparação binária | Nenhum Sozinho | Hamming | Muito rápido | Fraco em relação a ponto de vista/escala |
| ORB | Pirâmide RÁPIDA | rBRIEF Rotacionado | Escala ○, rotação ○ | Hamming | Leve, adequado para tempo real | Limitado sob grandes deformações |
| SIFT | Extremos DoG | Histograma de gradiente de 128 dimensões | Escala ◎, rotação ◎ | L2 | Sólido, bem validado | Usivo em CPU/memória |
| Baseado em aprendizado | Aprendizado via rede | Vetor aprendido | Fortalecido por dados | L2 / aprendido | Alta taxa de correspondência em condições difíceis | Necessita de gerenciamento de modelo, GPU e reprodutibilidade |
Os ○ e ◎ da tabela não são classificações absolutas — são benchmarks relativos para implementações típicas e faixas esperadas. Mesmo o SIFT é ambíguo quando o mesmo padrão de grade preenche o quadro, e mesmo o ORB pode obter inliers suficientes em condições moderadas.
Onde isso se encaixa Em Bibliotecas Atuais e Produtos Reais
Para um primeiro protótipo, as bibliotecas cv::ORB::create(), cv::SIFT::create() e cv::FastFeatureDetector::create() do OpenCV são fáceis de usar. ORB funciona com BFMatcher(NORM_HAMMING); SIFT com um BFMatcher baseado em distância L2 ou um matcher baseado em FLANN. Mesmo se você quiser detectores e descritores separados, a API Feature2D do OpenCV mantém o mesmo fluxo de trabalho. Para experimentação baseada em aprendizado e processamento em GPU, o Kornia no PyTorch fornece SIFT, ORB, DISK, KeyNet/HardNet, LightGlue e outros como blocos de construção.
Na prática de fotogrametria e reconstrução 3D, o COLMAP é a ferramenta representativa; sua documentação oficial atual suporta SIFT padrão mais ALIKED quando compilado com ONNX habilitado. Como SIFT e ALIKED podem se conectar tanto à correspondência por força bruta quanto ao LightGlue... Na fase de correspondência, é fácil comparar abordagens clássicas e baseadas em aprendizado no ponto de entrada da reconstrução. Ao escolher um produto ou biblioteca, é melhor decidir primeiro se ele precisa ser executado somente na CPU, qual o limite de latência, se a correspondência offline intensiva é aceitável e se o ajuste de versão reproduzível é necessário — em vez de se basear apenas no nome do modelo.
Pesquisas Recentes: Otimizando Conjuntamente Detecção, Descrição e Correspondência
Um ponto de virada para as abordagens baseadas em aprendizado foi o SuperPoint. Uma rede totalmente convolucional gera um mapa de probabilidade de pontos de interesse e um mapa descritor simultaneamente, aprendendo de forma autossupervisionada, por meio de Adaptação Homográfica, para reproduzir pontos em transformações geométricas. Essa é a ideia de aprender com os dados onde estão as localizações úteis para correspondência, em vez de depender exclusivamente de uma noção predefinida de "cantos".
O DISK aborda o problema de que selecionar pontos esparsos e combiná-los é discreto e difícil de diferenciar, otimizando a detecção e a descrição de ponta a ponta com gradientes de política que recompensam a contagem correta de correspondências. O ALIKED usa uma Rede Deformável Esparsa. O Descriptor Head aprende localizações de suporte deformáveis em torno de cada ponto-chave, buscando equilibrar expressividade e eficiência ao extrair descritores em pontos esparsos em vez de todo o mapa de características denso.
Os matchers também estão se afastando da busca independente por vizinhos mais próximos. O LightGlue estima correspondências entre dois conjuntos de características locais usando um mecanismo de atenção, com computação adaptativa que para precocemente quando um par de imagens é fácil. Isso não é um detector de características em si, mas é um lembrete importante de que uma boa distância do descritor em relação ao detector, por si só, não garante boas correspondências finais. Atualmente, é prático comparar uma configuração usando características clássicas com um matcher leve com uma configuração que combina características aprendidas como SuperPoint/ALIKED com LightGlue, sob configurações RANSAC idênticas em seus dados de destino.
Lista de verificação para seleção e ajuste
-
Primeiro, registre a contagem de detecções, a contagem de aprovações no teste de razão, a contagem de inliers RANSAC, a proporção de inliers e o tempo de processamento em pares de imagens reais. Aumentar a contagem de detecções por si só pode ser contraproducente se as incompatibilidades aumentarem junto com ela.
-
Para Para rastreamento de curta duração próximo a uma câmera fixa, comece com FAST/ORB e ajuste
nfeatures, o limite do FAST e os níveis da pirâmide. Em condições de baixa textura, verifique o desfoque, a exposição e o foco antes de diminuir o limite. - Para correspondência de imagens estáticas com grandes mudanças na distância de captura ou rotação, use SIFT como linha de base. Se um método mais rápido supera o SIFT, isso deve sempre ser verificado nos mesmos dados com a mesma verificação geométrica.
- À noite, sob forte luz de fundo, em mudanças sazonais ou com grandes diferenças de ponto de vista, considere também recursos baseados em aprendizado. Mas inclua a diferença entre os dados de treinamento e o ambiente de destino, atualizações do modelo e disponibilidade da GPU na avaliação de desempenho.
- Padrões repetitivos, superfícies especulares, objetos em movimento e desfoque de movimento extremo são menos um problema de detecção de recursos do que uma ambiguidade de observação. Compense com mascaramento, rastreamento temporal, fusão de sensores e planejamento de captura.
A detecção de recursos não é um classificador universal para a compreensão de imagens. Mas continua sendo uma tecnologia fundamental eficaz para selecionar, com pouco poder computacional, quais pixels podem suportar geometria. Compreender os conceitos de cantos, manchas, espaço de escala e normalização de orientação permite rastrear as causas das falhas por trás dos números, seja ajustando o ORB/SIFT clássico ou avaliando recursos baseados em aprendizado.
É fácil rastrear todos os pontos em uma borda forte?
O movimento ao longo de uma única borda é ambíguo. Os cantos fornecem mudanças de intensidade em diferentes direções, facilitando a identificação do movimento bidimensional.
Referências
- Lowe, Distinctive Image Features from Scale-Invariant Keypoints (artigo original do SIFT, IJCV 2004)
- Rublee et al., ORB: an efficient alternative to SIFT or SURF (ICCV 2011)
- Referência da classe OpenCV Feature2D / ORB
- Referência da classe OpenCV SIFT
- Tutorial do detector de recursos OpenCV FAST
- HPatches: benchmark e avaliação de descritores locais criados manualmente e aprendidos (CVPR 2017)
- SuperPoint (Workshops CVPR 2018)
- DISK (NeurIPS 2020)
- ALIKED (arXiv 2023)
- LightGlue (ICCV 2023)
- Documentação de Extração e Correspondência de Características COLMAP
- Documentação do módulo de características Kornia
Gire uma imagem sintética no laboratório de extração e compare as detecções Harris e Shi–Tomasi.
Comentários
Entre na sua conta para continuar.
Ainda não há dados.