# Retificação de imagem

Retificação de imagem é uma técnica que consiste em aplicar uma série de transformações a duas ou mais imagens de forma que os pontos correspondentes estejam na mesma coordenada-y em todas elas. Esta técnica é muito usada em visão computacional especialmente para otimizar o processo de encontrar pontos correspondentes nas imagens.

## Visão Computacional

Dentro de visão computacional é muito utilizado como base os princípios da estereoscopia para na geometria epipolar para que, a partir de duas ou mais imagens, seja possível determinar a distância de um objeto. Nesse contexto, a retificação de imagens torna-se uma técnica muito importante.
Retificar as imagens significa aplicar transformações às elas de forma que as figuras obtidas possuam projeções epipolares correspondentes. Em outras palavras, essas imagens são manipuladas de forma que linhas epipolares correspondentes se tornem colineares e paralelas ao eixo-x da imagem. Desta forma, o espaço de busca é reduzido à apenas uma dimensão. As vantagens de executar esta técnica vão além de simplesmente tornar a área de busca numa linha horizontal.
Ao fazer a retificação baseada na geometria epipolar das imagens, também é possível garantir outras restrições, acelerando e tornando mais consistente a procura por correspondências. A primeira restrição garante que todos os pontos de uma linha epipolar aparecerão na mesma ordem nas imagens retificadas, desde que esses objetos sejam opacos. Uma outra diz que cada ponto possui um único correspondente nas imagens seguintes.

## Algoritmos

Mesmo a retificação de imagens sendo um problema clássico da área de visão computacional, existem poucos métodos para executar esta tarefa. Basicamente existem apenas três: a retificação planar, a retificação cilíndrica e a retificação polar. Todas elas determinam que as imagens a serem retificadas devam ser reorganizadas a partir de uma re-projeção, divergindo apenas na forma como elas serão re-projetadas.

### Retificação planar

Este método de retificação é relativamente simples, tendo como ideia básica re-projetar todas as imagens num plano em comum paralelo à baseline. Assim, quando a figura for mapeada numa região em comum deste plano, têm-se a garantia que linhas epipolares correspondentes estarão na mesma altura.
Existem infinitos planos paralelos à baseline que poderiam ser usados para a retificação. Por simplicidade de cálculos, é escolhido um a partir da rotação dos planos de imagem, de forma que eles se tornem co-planares. Esta operação resulta numa nova matriz de projeção, baseada na original, e a garantia de que epipolos estão no infinito e, consequentemente, linhas epipolares são paralelas.
Este método de retificação de imagens é bem simples, além de possuir uma execução rápida, pois depende apenas do cálculo de uma matriz de transformação para cada imagem. Porém, ele não é robusto o suficiente para qualquer tipo de movimento de câmera, como no caso onde a distância entre elas é muito grande. Já se for muito pequeno esse espaço, os epipolos tendem a se aproximar da imagem, gerando imagens cada vez maiores. Ela pode chegar ao extremo de falhar totalmente quando os epipolos ficam dentro da imagem, que ocorre quando a câmera dá um zoom na imagem.

### Retificação cilíndrica

Esta técnica é mais robusta e geral para retificar imagens, pois funciona com qualquer movimento de câmera. Ela se diferencia da retificação planar, principalmente, por, ao invés de usar um plano em comum, usar um cilindro em comum para re-projetar o par de imagens.
O método consiste em determinar um cilindro de raio unitário que tem a baseline com eixo de revolução e, em seguida, mapear cada pixel da imagem numa coordenada (z, θ) de um sistema de coordenadas cilíndrico. Desta feita, cada ponto (z, θ) da imagem retificada é usado normalmente, como se fosse um ponto (u, v) na imagem.
Apesar de mais robusto, este método é bastante custoso, pois todos os cálculos, que são relativamente complexos, são realizados num espaço tridimensional e devem ser feitos para cada pixel da imagem. Por isso, apesar de tratar todos os movimentos de câmera, a retificação cilíndrica exige um tempo de execução altíssimo, já que toda linha epipolar deve ser rotacionada e projetada.

### Retificação polar

Faz uso das informações da geometria projetiva e epipolar para simplificar a retificação cilíndrica, deste modo todos os cálculos sejam feitos no plano de imagem, e evitando assim operações tridimensionais.
A ideia deste método é a mesma do anterior: reparametrizar a imagem num sistema de coordenadas cilíndrico. Entretanto, ele difere no cilindro escolhido. Enquanto nela o cilindro é centrado na baseline, na polar as transformações ocorrem ao redor dos epipolos e, como estes estão no mesmo plano da imagem, nenhuma operação ocorrerá no espaço tridimensional.