Contents — find the section you need

Mova uma câmera ligeiramente para o lado e fotografe a mesma cena. Objetos próximos se deslocarão mais em relação ao fundo do que objetos distantes. Essa paralaxe permite recuperar a forma 3D e o movimento da câmera a partir de imagens 2D. Mas simplesmente encontrar o "mesmo ponto físico" em diferentes imagens não é suficiente. Em imagens reais, repletas de incompatibilidades, distorção da lente, rotação pura, planos e objetos em movimento, é necessário determinar quais pares de pontos são consistentes com um único movimento da câmera. A geometria epipolar é a linguagem comum para fazer exatamente isso.

Isso não se limita à medição estéreo. Estrutura a partir do Movimento (SfM), Odometria Visual, SLAM Visual, rastreamento de planos em Realidade Aumentada, autolocalização de robôs e a reconstrução esparsa do COLMAP se baseiam em correspondências e geometria projetiva. Este artigo mantém os sistemas de coordenadas claros do início ao fim, explicando o significado de cada matriz, qual estimador escolher e quando não se deve confiar no resultado.

Subaru WRX S4 equipado com o sistema de assistência ao motorista EyeSight com câmera estéreoExemplo de um veículo com câmera estéreo

Imagem: Subaru WRX S4 2.0GT-S EyeSight (Tokumeigakarinoaoshima, CC BY-SA 4.0), Wikimedia Commons. Uma vista externa, não um close-up dos componentes internos da câmera.

0. Resumo de 30 segundos

  • O plano formado pelos centros de duas câmeras e um ponto 3D é chamado de plano epipolar. Este plano divide cada imagem em um linha, portanto, um ponto correspondente em uma imagem só pode aparecer nessa linha — a linha epipolar — na outra imagem.
  • Para imagens não calibradas, a Matriz Fundamental F satisfaz \mathbf{x}'^\mathsf{T}F\mathbf{x}=0. Em coordenadas normalizadas com intrínsecos conhecidos, a Matriz Essencial E=[\mathbf{t}]_\times R é usada. E recupera a rotação R e a direção da translação, mas um único par de duas vistas monoculares não pode recuperar a escala absoluta da translação.
  • O algoritmo normalizado de 8 pontos é uma estimativa inicial linear fácil de implementar; o algoritmo de 5 pontos é um solucionador mínimo que precisa de menos correspondências para uma câmera calibrada. Ambos são frágeis contra incompatibilidades, portanto, na prática, você remove outliers com RANSAC/USAC e avalia com erro de reprojeção.
  • A triangulação encontra a interseção de duas linhas de visão, mas a profundidade se torna instável quando a paralaxe é pequeno, a linha de base é curta ou o ruído da imagem é grande. Após a estimativa, o ajuste de feixe refina conjuntamente as poses da câmera e os pontos 3D.
  • Para uma cena que é apenas plana ou uma câmera que é quase puramente rotativa, uma homografia H descreve bem as imagens e a recuperação de translação/profundidade via F/E degenera. A seleção do modelo não deve depender apenas da contagem de inliers — verifique resíduos, paralaxe, distribuição espacial e quiralidade em conjunto.

1. Escrevendo a Projeção de Duas Vistas a partir de Coordenadas

Seja um ponto de coordenada mundial a coordenada homogênea \mathbf{X}=(X,Y,Z,1)^\mathsf{T}. A projeção da câmera pinhole, em escala, é escrita

\tilde{\mathbf{x}} \sim P\mathbf{X},\qquad P=K[R\mid\mathbf{t}]

Aqui, \tilde{\mathbf{x}}=(u,v,1)^\mathsf{T} é a coordenada homogênea da imagem, K é a matriz intrínseca e R\in SO(3) e \mathbf{t} são as poses extrínsecas do mundo em relação à câmera. Tipicamente,

K=\begin{bmatrix}f_x&s&c_x\\0&f_y&c_y\\0&0&1\end{bmatrix}

onde f_x,f_y são as distâncias focais em unidades de pixel, (c_x,c_y) é o ponto principal e s é a distorção. Após a correção da distorção, a coordenada da imagem normalizada é \mathbf{x}=K^{-1}\tilde{\mathbf{x}}. A partir daqui, considere a câmera esquerda como referência com P_1=K[I\mid\mathbf{0}] e a câmera direita como P_2=K[R\mid\mathbf{t}].

Diagram 1 · Use the button to switch views
The epipolar plane and two image planesDiagram showing two camera centers C and C prime, a 3D point X, two image planes, corresponding points x and x prime, and the epipolar line on each image. Epipolar plane C C′ X x x′ Baseline Image 1Image 2 l = Fᵀx′l′ = Fx

Na figura, C,C' são os centros das câmeras e o segmento CC' é a linha de base. O plano definido pelo ponto X e seus dois centros corta o plano da imagem esquerda como a linha epipolar l e o plano da imagem direita como l'. Uma vez encontrado o ponto correspondente \mathbf{x} na imagem esquerda, a região de busca 2D na imagem direita se reduz a uma única linha. Para um par estéreo retificado, essa linha é horizontal e a busca por correspondência se torna uma busca 1D ao longo da mesma linha de varredura.

2. A Matriz Essencial e a Matriz Fundamental

Considerando apenas a pose extrínseca, vejamos as coordenadas calibradas e normalizadas (\mathbf{x},\mathbf{x}'). A direção da linha de visão da câmera esquerda para o ponto é \mathbf{x}, e no sistema de coordenadas da câmera direita é R\mathbf{x}. O fato de o vetor de translação \mathbf{t} e as duas linhas de visada estarem no mesmo plano pode ser escrito como um produto triplo escalar nulo:

\mathbf{x}'^\mathsf{T}[\mathbf{t}]_\times R\mathbf{x}=0

Aqui, [\mathbf{t}]_\times é a forma matricial antissimétrica do produto vetorial.

[\mathbf{t}]_\times= \begin{bmatrix}0&-t_z&t_y\\t_z&0&-t_x\\-t_y&t_x&0\end{bmatrix},\qquad [\mathbf{t}]_\times\mathbf{a}=\mathbf{t}\times\mathbf{a}

Esta E=[\mathbf{t}]_\times R é chamada de Matriz Essencial. E não é uma matriz 3\times3 arbitrária — ela tem posto 2, com a restrição de que seus dois valores singulares não nulos sejam iguais. A projeção via SVD para a forma E=U\operatorname{diag}(s,s,0)V^\mathsf{T} recupera essa restrição física.

Para o caso não calibrado, usando diretamente as coordenadas brutas dos pixels,

\tilde{\mathbf{x}}'^\mathsf{T}F\tilde{\mathbf{x}}=0,\qquad F=K_2^{-\mathsf{T}}EK_1^{-1}

e F é a Matriz Fundamental. F\tilde{\mathbf{x}} fornece a linha epipolar l' na imagem da direita, e F^\mathsf{T}\tilde{\mathbf{x}}' fornece a linha l na imagem da esquerda. Como F absorve os parâmetros intrínsecos, é conveniente para a verificação geométrica de pares de imagens, mas a interpretação da pose em unidades métricas requer calibração.

Matriz Coordenadas Quantidade conhecida necessária Restrição de forma O que você obtém Uso principal
F Coordenadas homogêneas brutas dos pixels Nenhuma classificação 2, 7 graus de liberdade Linhas epipolares SfM não calibrado, verificação de correspondência
E K^{-1}\tilde{\mathbf{x}} K de ambas as câmeras classificação 2, valores singulares (s,s,0) Direção de R e \mathbf{t} VO, SLAM, estéreo calibrado
H Pixels em um plano ou sob rotação pura Modelo de plano ou rotação Geralmente 8 graus de liberdade Deformação planar Planos AR, costura de imagens

O que o epipolo indica

O ponto onde o centro da câmera direita se projeta na imagem esquerda é o epipolo esquerdo \mathbf{e}, satisfazendo F\mathbf{e}=0. Da mesma forma, F^\mathsf{T}\mathbf{e}'=0. Se o epipolo estiver dentro da imagem, as linhas epipolares convergem radialmente, indicando que a câmera se moveu aproximadamente para frente ou para trás. Se estiver no infinito, as linhas são quase paralelas, indicando um movimento próximo ao lateral. Este é um diagnóstico útil, mas uma estimativa incorreta por si só também pode produzir uma posição de epipolo não natural, portanto, você nunca deve determinar o movimento apenas com base nisso.

3. Estimando a Matriz a partir de Correspondências: O Algoritmo de 8 Pontos

Uma única correspondência \tilde{\mathbf{x}}=(u,v,1)^\mathsf{T} e \tilde{\mathbf{x}}'=(u',v',1)^\mathsf{T} fornece uma restrição linear nas nove entradas de F. Com \mathbf{f}=\operatorname{vec}(F), por exemplo

[u'u,\ u'v,\ u',\ v'u,\ v'v,\ v',\ u,\ v,\ 1]\mathbf{f}=0

Empilhando oito ou mais correspondências na matriz A, o algoritmo de 8 pontos seleciona o menor vetor singular de A\mathbf{f}=0. O nome deriva das oito correspondências que satisfazem os graus de liberdade, mas, no caso real e ruidoso, muitos mais pontos são usados com mínimos quadrados.

A resolução com coordenadas de pixel brutas leva a um mau condicionamento devido à magnitude dos valores das coordenadas. O algoritmo normalizado de 8 pontos de Hartley normaliza o conjunto de pontos de cada imagem com transformações de similaridade T,T' de forma que o centroide seja zero e a distância média seja \sqrt{2}, resolve nesse espaço e, finalmente, recupera

F=T'^\mathsf{T}F_{\text{norm}}T

Além disso, ao realizar a SVD do F resultante e zerar o menor valor singular, impõe-se uma classificação de posto 2. Isso parece um detalhe de implementação menor, mas afeta fortemente a estabilidade da solução.

Se calibrado, a mesma ideia constrói uma estimativa inicial de E a partir de correspondências normalizadas. Mas a solução linear de 8 pontos não satisfaz automaticamente a restrição de valor singular mais forte da Matriz Essencial. Você calcula E=U\operatorname{diag}(\sigma_1,\sigma_2,\sigma_3)V^\mathsf{T} e o substitui por \operatorname{diag}((\sigma_1+\sigma_2)/2,(\sigma_1+\sigma_2)/2,0) para projetá-lo.

4. O Algoritmo de 5 Pontos: Reduzindo a Amostra Mínima Quando Calibrado

A Matriz Essencial possui 5 graus de liberdade. O algoritmo de 5 pontos é um solucionador minimal que encontra um conjunto finito de candidatos a partir de 5 correspondências; o método de Nistér substitui o espaço nulo em restrições polinomiais, enumerando até 10 candidatos a soluções reais. Tanto a derivação quanto a implementação são mais complexas do que o algoritmo de 8 pontos, mas a vantagem de precisar de apenas 5 pontos por hipótese RANSAC é muito grande.

Dada a proporção de inliers w, a probabilidade de que uma única amostragem seja composta apenas por inliers é w^s, a probabilidade de falha é p e o tamanho mínimo da amostra é s, a estimativa de iterações necessárias é

N=\frac{\log p}{\log(1-w^s)}

Para w=0.5,p=0.01: s=8 precisa de cerca de 1177 iterações, enquanto s=5 precisa de cerca de 145. Na prática, essa não é uma comparação direta, já que métodos como o PROSAC extraem amostras em ordem de qualidade de correspondência e encerram de forma adaptativa. Ainda assim, o valor do algoritmo de 5 pontos é evidente em ambientes com baixa proporção de inliers.

A função findEssentialMat do OpenCV fornece RANSAC/LMEDS juntamente com implementações da família de 5 pontos, e a função recoverPose lida com a decomposição de candidatos e a verificação de similaridade. Para os implementadores, confirmar se a entrada está sem distorção/normalizada e quais unidades de coordenadas o limiar usa importa mais do que o fato de "termos chamado o algoritmo de 5 pontos".

5. RANSAC: Usando Geometria ao Considerar Outliers

Métodos de correspondência como SIFT, ORB, SuperPoint e LoFTR produzem erros de correspondência devido a texturas repetidas, reflexos, grades repetitivas e oclusão. Ajustar a função F a todas as correspondências por mínimos quadrados permite que um pequeno número de erros comprometa toda a matriz. O RANSAC repete o seguinte:

  1. Selecione aleatoriamente um conjunto mínimo de correspondências e construa uma hipótese F ou E.

  2. Calcule o resíduo para cada correspondência, marcando aquelas dentro de um limiar como inliers.

  3. Mantenha a hipótese com maior suporte ou a melhor pontuação robusta.

  4. Reestime usando todos os inliers finais e refine com otimização não linear, se necessário.

Você não deve definir o limiar da restrição epipolar usando apenas o erro algébrico \mathbf{x}'^\mathsf{T}F\mathbf{x}, pois ele depende da escala de F. Na prática, a distância de Sampson

d_S(\mathbf{x},\mathbf{x}',F)= \frac{(\mathbf{x}'^\mathsf{T}F\mathbf{x})^2} {(F\mathbf{x})_1^2+(F\mathbf{x})_2^2+(F^\mathsf{T}\mathbf{x}')_1^2+(F^\mathsf{T}\mathbf{x}')_2^2}

é comumente usada em vez disso. É uma aproximação de primeira ordem do erro geométrico — uma medida normalizada da distância de cada correspondência à sua linha epipolar. O limiar em coordenadas de pixel depende da resolução da imagem, da precisão da localização dos pontos-chave, da distorção residual e do desfoque. Não existe um valor universal de "1 px". O ajuste é feito visualizando o histograma residual e a distribuição espacial dos pontos internos na imagem.

O OpenCV atual também oferece estimativa robusta da família USAC. Combinando amostragem ordenada por qualidade, otimização local e verificações de degenerescência, ele pode ser mais rápido e estável do que o RANSAC puro. No entanto, a rejeição estatística de outliers nunca consegue superar a suposição de que "a maioria segue um único movimento estático de corpo rígido". Se a maior parte do quadro for um veículo ou uma pessoa em movimento, é necessário adicionar outras informações, como máscaras semânticas, segmentação de movimento, IMU ou profundidade.

6. Decompondo E em Pose e Escolhendo o Candidato Correto

Para um E=U\operatorname{diag}(s,s,0)V^\mathsf{T} corrigido, usando

W=\begin{bmatrix}0&-1&0\\1&0&0\\0&0&1\end{bmatrix}

fornece candidatos de rotação R=UWV^\mathsf{T} ou UW^\mathsf{T}V^\mathsf{T} e candidatos de direção de translação \pm U_{:,3}. Existem 4 combinações de sinal e rotação. O que importa aqui é que a restrição de duas vistas por si só torna todas elas algebricamente consistentes com o mesmo E.

A seleção usa a cheiralidade (profundidade positiva). Para cada candidato, triangule um pequeno número de inliers e escolha aquele que fornece Z>0 para o maior número de pontos em ambos os quadros da câmera. Verifique também se o determinante da matriz de rotação é +1, se o erro de reprojeção é pequeno e se há paralaxe suficiente. Uma limitação importante a ser lembrada: \mathbf{t} só pode ser recuperado até a direção . Escalar \mathbf{t} e todos os pontos 3D pelo mesmo fator deixa a projeção inalterada. Uma linha de base estéreo conhecida, odometria de roda, IMU, um objeto de tamanho conhecido ou GNSS podem fornecer a escala.

7. Triangulação: De Dois Raios a um Ponto 3D

A equação de projeção \mathbf{x}\times(P\mathbf{X})=\mathbf{0} produz duas equações independentes por vista. A triangulação DLT resolve o sistema linear A\mathbf{X}=0, empilhado a partir de duas vistas, via SVD; é simples, e o triangulatePoints do OpenCV é próximo a essa forma. Por exemplo, considerando \mathbf{p}_{ij}^\mathsf{T} como a j-ésima linha de P_i, um ponto (u_i,v_i) resulta em

\begin{bmatrix} u_i\mathbf{p}_{i3}^\mathsf{T}-\mathbf{p}_{i1}^\mathsf{T}\\ v_i\mathbf{p}_{i3}^\mathsf{T}-\mathbf{p}_{i2}^\mathsf{T} \end{bmatrix}\mathbf{X}=\mathbf{0}

Antes de dividir pelo componente homogêneo no final, verifique se w não é extremamente pequeno.

Para um par estéreo horizontal retificado, isso é mais intuitivo. Com disparidade d=u_L-u_R (a diferença de coordenadas horizontais entre esquerda e direita), distância focal f e linha de base B,

Z=\frac{fB}{d},\qquad X=\frac{(u_L-c_x)Z}{f}

O erro de profundidade é aproximadamente \delta Z\simeq \frac{Z^2}{fB}\delta d. Quanto mais distante e menor a distância focal ou a linha de base, maior será o erro de profundidade devido ao mesmo erro de disparidade de 1 pixel. Portanto, em vez de "correspondeu, então adicione à nuvem de pontos", use o ângulo de triangulação, a disparidade, o erro de reprojeção e a profundidade positiva como critérios de qualidade.

A triangulação linear é apenas uma estimativa inicial — ela não minimiza corretamente o ruído da imagem. O ajuste de feixe, que otimiza conjuntamente as poses da câmera P_i e os pontos \mathbf{X}_j, resolve

\min_{\{R_i,\mathbf{t}_i,\mathbf{X}_j\}} \sum_{(i,j)\in\mathcal{O}}\rho\left(\left\|\pi(K_i(R_i\mathbf{X}_j+\mathbf{t}_i))-\tilde{\mathbf{x}}_{ij}\right\|^2\right)

onde \rho é uma perda robusta, como Huber ou Cauchy, e \pi é a divisão de perspectiva. É por isso que as reconstruções usando COLMAP, Theia ou Ceres Solver ganham precisão. Para fixar a liberdade de medição, posicione a primeira câmera na origem e, se necessário, fixe uma escala conhecida. ## 8. Escolhendo entre Geometria Epipolar e Homografia

Quando cada ponto na cena se encontra em um único plano \pi, ou a câmera sofre rotação pura, a correspondência entre as imagens é bem descrita por uma homografia 3×3 \tilde{\mathbf{x}}'\sim H\tilde{\mathbf{x}}. Se calibrada, com a normal do plano \mathbf{n} e a distância d,

H=K\left(R+\frac{\mathbf{t}\mathbf{n}^\mathsf{T}}{d}\right)K^{-1}

Sob rotação pura, o termo de translação desaparece e H=KRK^{-1}. Para um pôster, uma mesa, a fachada de um prédio ou uma filmagem panorâmica de uma cena distante, H torna-se um excelente modelo e é a primeira escolha natural para âncoras planares de RA e costura de imagens.

No entanto, estimar F/E a partir de dados exclusivamente planares pode resultar em muitos pontos internos aparentes, sem conseguir separar de forma estável a estrutura 3D da translação. Por outro lado, forçar uma cena geral e não planar a um único H resulta em distorções inconsistentes em objetos próximos e distantes. Na prática, estime F/E e H com RANSAC e compare os resíduos, o número de pontos explicados, a distribuição de pontos e a paralaxe após a reconstrução. Se você optar por aceitar um modelo baseado apenas na contagem de correspondências, será levado a uma grande parede planar ou a um plano que domina o centro da imagem.

Situação Primeiro candidato Resultado Advertências
Calibrado, 3D geral, translação presente E + algoritmo de 5 pontos Pose relativa, profundidade esparsa Escala indeterminada, instável com baixa paralaxe
Par de imagens não calibradas F + algoritmo de 8 pontos normalizado Linhas epipolares, verificação de correspondência Não interprete a pose física sem K
Quase planar, pôster, mesa H + algoritmo de 4 pontos Deformação planar, candidatos a pose planar Sem profundidade fora do plano
Rotação pura / panorama H Alinhamento de imagem, rotação Translação e profundidade não observáveis
Mapa 3D conhecido com observações 2D PnP + RANSAC Pose absoluta Depende da qualidade e escala do mapa

9. A Calibração Não é uma Etapa de Pré-processamento — Ela Faz Parte do Modelo

Fotografe uma grade de xadrez, Charuco ou AprilTag em múltiplas distâncias, inclinações e posições da imagem para estimar os coeficientes de distorção. A distorção radial de Brown-Conrady é expressa aproximadamente, para um raio normalizado, como:

Para lentes grande-angulares e olho de peixe, não force um modelo de distorção de orifício padrão — escolha o modelo olho de peixe do OpenCV ou um compatível com a lente em uso. Mesmo quando o erro médio de reprojeção da calibração é pequeno, a estrutura de erro pode mudar nas bordas da imagem, em diferentes distâncias focais, com a temperatura, com o foco ou com alterações de resolução.

Antes de iniciar o processamento de duas vistas, confirme se os valores de calibração foram obtidos com a mesma resolução, recorte e condições de zoom digital da sua captura atual. É fácil confundir a estimativa de E a partir de pontos normalizados via undistortPoints com a estimativa de F a partir de imagens sem distorção. Sempre verifique se uma API usa distância focal, ponto principal e distorção internamente, ou se espera coordenadas já corrigidas. Para um sistema estéreo, além dos parâmetros intrínsecos de ambas as câmeras, encontre a pose relativa com stereoCalibrate e retifique as linhas epipolares para a horizontal com stereoRectify.

10. Um Pipeline Mínimo em OpenCV

Abaixo está o esqueleto para obter a pose relativa e um conjunto de pontos 3D esparsos com filtro de qualidade a partir de dois frames de uma câmera monocular calibrada. Ele usa ORB para extração de características, mas isso pode ser substituído por SIFT ou um algoritmo de correspondência baseado em aprendizado, dependendo das condições de captura. Na prática, você também registraria exposição, objetos em movimento e sincronização de tempo.

import cv2 as cv
import numpy as np

# K, dist are values calibrated for this capture resolution and lens
orb = cv.ORB_create(nfeatures=3000)
kp1, des1 = orb.detectAndCompute(img1, None)
kp2, des2 = orb.detectAndCompute(img2, None)
matches = cv.BFMatcher(cv.NORM_HAMMING).knnMatch(des1, des2, k=2)
good = [m for m, n in matches if m.distance < 0.75 * n.distance]

p1 = np.float32([kp1[m.queryIdx].pt for m in good])
p2 = np.float32([kp2[m.trainIdx].pt for m in good])
# threshold is in pixel units. Decide it from the residual distribution, not an initial guess.
E, mask = cv.findEssentialMat(p1, p2, K, method=cv.USAC_MAGSAC,
                              prob=0.999, threshold=1.0)
in1, in2 = p1[mask.ravel() != 0], p2[mask.ravel() != 0]
count, R, t, pose_mask = cv.recoverPose(E, in1, in2, K)

# P1, P2 are for normalized coordinates. Scale is arbitrary, so t's length is not a physical unit.
n1 = cv.undistortPoints(in1.reshape(-1, 1, 2), K, dist).reshape(-1, 2)
n2 = cv.undistortPoints(in2.reshape(-1, 1, 2), K, dist).reshape(-1, 2)
P1 = np.hstack([np.eye(3), np.zeros((3, 1))])
P2 = np.hstack([R, t])
X4 = cv.triangulatePoints(P1, P2, n1.T, n2.T)
X = (X4[:3] / X4[3]).T

# Further filter by positive depth in both views, reprojection error, and triangulation angle.
z1 = X[:, 2]
z2 = (R @ X.T + t).T[:, 2]
valid = (z1 > 0) & (z2 > 0) & np.isfinite(X).all(axis=1)

Este exemplo passa pixels brutos e K diretamente para findEssentialMat, mas se a distorção não for desprezível, primeiro passe os pontos normalizados de undistortPoints e mude para o formulário de API correspondente. Também é um erro tratar o \mathbf{t} retornado por recoverPose como uma "distância percorrida". Aplicativos que precisam de escala devem restringi-la com uma linha de base conhecida, VIO, odometria de roda, um sensor de profundidade ou similar.

O COLMAP implementa extração de recursos, correspondência, verificação geométrica, mapeamento incremental e ajuste de feixe como um pipeline conectado. Para conjuntos de dados pequenos, você pode inspecionar o modelo da câmera e a reconstrução por meio da GUI. Na linha de comando, a escolha do modelo da câmera, como o comprimento focal EXIF é tratado, a estratégia de correspondência (exaustiva/sequencial/árvore de vocabulário) e o intervalo de tempo entre pares de imagens determinam tanto a precisão quanto o custo computacional. Após a reconstrução, verifique não a contagem de pontos, mas o número de imagens registradas, o erro médio de reprojeção, a contagem de observações por imagem e as lacunas na nuvem de pontos.

11. Condições Comuns de Falha e Como Diagnosticá-las

Paralaxe Pequena, Sem Linha de Base

Com movimento para frente, uma cena distante ou um intervalo curto entre quadros, você ainda pode obter correspondências sem obter profundidade. Se as linhas epipolares parecerem razoáveis, mas o ângulo de triangulação estiver próximo de zero, evite atualizar a profundidade em vez de forçá-la. As soluções fundamentais são espaçar os quadros-chave mais amplamente, capturar observações com movimento lateral ou usar um equipamento estéreo com uma linha de base conhecida.

Rotação Pura ou Degeneração Planar

Em tomadas panorâmicas ou em um campo de visão contendo apenas uma parede, H tem poder explicativo. Uma alta contagem de pontos internos para E não significa necessariamente que uma translação foi observada. Registre a competição entre H e E e aplique a taxa de profundidade positiva e a paralaxe mediana após a triangulação. No rastreamento de pôsteres em realidade aumentada, isso não é uma falha — é a seleção correta do modelo.

Incompatibilidades, Padrões Repetitivos, Reflexos

Janelas, azulejos, estantes de livros, telas de LCD e superfícies de água produzem descritores locais semelhantes. Sobreponha o teste de proporção, a correspondência mútua de vizinhos mais próximos e o RANSAC geométrico e verifique se os pontos internos estão espalhados por toda a imagem. Imagens espelhadas e objetos transparentes quebram a própria suposição de corpo rígido e refletância Lambertiana, portanto, nenhum ajuste de limiar resolverá o problema.

Objetos Dinâmicos e Movimentos Múltiplos

O RANSAC seleciona apenas o movimento mais significativo. Se o fundo for minoritário, ele pode acabar estimando o movimento de um carro. Dependendo da sua aplicação, escolha entre excluir semanticamente pessoas/veículos, agrupar o fluxo óptico, executar estimativas multimodelo ou alinhar com profundidade/IMU.

Distorção da Lente, Obturador Rolante, Assincronia

Usar uma borda grande angular não corrigida deixa uma curvatura sistemática nas linhas epipolares. Com o obturador rolante durante movimentos rápidos, a atitude muda dentro de um único quadro, portanto, um único E é apenas uma aproximação. Mesmo um pequeno deslocamento no tempo de exposição esquerda/direita para um par estéreo produz disparidade espúria para objetos em movimento. Considere o obturador global, exposição curta, um modelo de temporização de linha, correção baseada em IMU e sincronização de hardware.

Acidentes Numéricos e de Sistema de Coordenadas

Misturar coordenadas de pixel e normalizadas, confundir coordenadas do mundo para a câmera com coordenadas da câmera para o mundo para R,\mathbf{t}, inverter a ordem dos pontos esquerdo/direito e esquecer de atualizar K após redimensionar uma imagem são erros comuns. Não aceite valores estimados sem questionar — sobreponha correspondências e linhas epipolares e automatize verificações de profundidade positiva em ambas as câmeras, erro de reprojeção, \det R=1 e R^\mathsf{T}R\simeq I.

12. Métricas Práticas de Avaliação e Lista de Verificação de Projeto

Não considere a estimativa de duas vistas um sucesso apenas porque "uma matriz foi retornada". A contagem de correspondências é distorcida pela quantidade de textura, e o erro médio por si só pode mascarar alguns pontos positivos. Salvar as seguintes informações por quadro permite identificar posteriormente onde ocorreu a falha na cadeia sensor/correspondência/estimativa de pose:

  • Contagem de detecções, contagem de aprovações no teste de proporção, contagem/proporção de inliers RANSAC, distribuição nas células da grade da imagem
  • Distância de Sampson mediana e percentil superior e erro de reprojeção, taxa de profundidade positiva, distribuição do ângulo de triangulação
  • Contagem de suporte e pontuação robusta para H versus E/F, e o motivo pelo qual um modelo foi aceito ou rejeitado
  • Magnitude da rotação estimada, continuidade temporal da direção de translação, consistência com um sensor externo escalonado
  • Tempo de exposição, ganho, velocidade angular da IMU, deslocamento temporal esquerda/direita, métrica de desfoque, proporção da máscara da imagem

Para pesquisa ou avaliação de produto com dados de referência disponíveis, relate o erro de rotação relativa, o erro de direção de translação, o ATE/RPE da trajetória e o erro de profundidade absoluto/relativo separadamente. Como a tradução monocular de duas vistas é ambígua em termos de escala, indique claramente se o erro ocorre após a normalização ou após o alinhamento Sim(3). Em vez de excluir os frames com falha da média, observar em qual degeneração ou condição visual cada falha ocorreu comunica os limites do sistema de forma mais honesta.

13. Desenvolvimentos Recentes: O Aprendizado Substituiu a Geometria?

Pontos-chave e descritores baseados em aprendizado (SuperPoint), correspondências de grosso a fino (LoFTR) e estimativa de correspondência de propósito geral (LightGlue e similares) podem produzir mais correspondências candidatas do que descritores clássicos sob baixa variação de textura ou ponto de vista. Mas as correspondências retornadas por uma rede ainda podem estar incorretas, e as ambiguidades físicas do movimento da câmera, planos, obturador rolante e escala não desaparecem. Em SfM/SLAM prático, uma configuração híbrida que verifica a saída de um comparador aprendido por meio da estimativa robusta de E/F/H mais ajuste de feixe continua sendo a escolha prática.

Em um nível mais amplo, representações neurais/explícitas de cenas, como NeRF e 3D Gaussian Splatting, também exploram a consistência entre múltiplas vistas. Isso possibilita a síntese de novas vistas de forma atraente, mas é sensível à qualidade da pose da câmera e da geometria de observação, e muitas implementações são inicializadas com poses derivadas do COLMAP. A pesquisa continua focada na estimativa conjunta de correspondência, profundidade, segmentação, dados inerciais e modelos de temporização para ambientes dinâmicos, reflexivos e de grande escala.

Portanto, a decisão de adotar um modelo mais recente não deve se basear apenas em "o número de correspondências aumentou em comparação com o ORB" — ela também deve levar em consideração a distribuição de inliers pós-estimação, o erro de pose, a latência de computação, os requisitos de GPU, falhas fora das condições de treinamento e o licenciamento. A geometria não é uma etapa de pré-processamento obsoleta; ela continua sendo o verificador que compara a saída de um modelo aprendido com a estrutura 3D real.

14. Conclusão

A geometria epipolar é a estrutura que eleva as correspondências entre duas imagens de "pontos que parecem mais semelhantes" para "pontos explicáveis por um único movimento da câmera". Se os parâmetros intrínsecos forem conhecidos, você procede à pose relativa via E=[\mathbf{t}]_\times R; caso contrário, você verifica as linhas e correspondências epipolares com F. O algoritmo de 8 pontos é a base para a compreensão e inicialização, o algoritmo de 5 pontos é um solucionador minimal eficiente para estimativa robusta, o RANSAC é o mecanismo que assume outliers e a triangulação com ajuste de feixe são a ponte para o 3D.

No entanto, quando não há paralaxe, apenas um plano, rotação pura, muitos objetos em movimento ou distorção/assincronia acentuada, uma matriz retornada não garante profundidade ou translação fisicamente significativas. O processo que leva à visão computacional reproduzível consiste em projetar a seleção de modelos com base na homografia, gerenciar as condições de calibração, verificar o erro de reprojeção e a profundidade positiva e fundir a escala externa em um único fluxo de trabalho.

Verifique seu entendimento
Uma linha epipolar determina exclusivamente uma correspondência?

Ela restringe a busca a uma linha.

A evidência da imagem ainda deve localizar o ponto, e a repetição ou oclusão podem gerar ambiguidade.

Referências (Fontes Primárias e Documentação Oficial)

What to read next

Review the backgroundIntrodução à homografia — Descrevendo a correspondência planar com uma única matriz 3x3Continue the seriesGuia PnP — Recuperando a pose da câmera a partir de apenas pontos 3D e uma imagemExplore another aspect of this fieldLab de brilho e luminância — exposição, gama e recorte