Espelho Esférico

Data: 14/11/2007

Pontos de Calibração

Para determinação dos pontos a serem utilizados para calibração, marcamos na imagem, em vermelho, as interseções do quadriculado desenhado no chão. Para extração dos pontos usamos a sua cor, como no trecho de programa seguinte.

(a)

(b)

(a) Imagem original com os pontos de calibração superpostos; (b) Pontos de calibração

Coordenadas e Ordenação dos Pontos

Para determinar as coordenadas dos pontos de calibração, rotulamos a imagem binárias dos pontos e calculamos as estatísticas. Usamos o centróide de cada blob como coordenada do ponto de calibração correspondente.

O ponto central pode ser determinado como aquele mais próximo do centro da imagem.

Para fazer a correspondência de cada ponto com sua coordenada real, ordenamos os pontos. Fazemos isto em dois passos:

  • Ordenar os pontos por sua coordenada y
  • Ordenar cada grupo de cinco pontos por sua coordenada x

Este código implementa o procedimento:

Correspondência de Coordenadas

Utilizaremos um modelo de distorção radial para correção da imagem. Passamos, então, ambas as matrizes de coordenadas para um sistema polar com origem no ponto central do grid.

A imagem seguinte mostra os pontos ordenados e seus respectivos correspondentes no grid ideal.

Pontos ordenados

Estimativa da Distorção Radial via Mínimos Quadrados

Modelamos a distorção radial através da equação seguinte, onde e são, respectivamente, a distância do ponto sem distorção e do ponto distorcido à origem do sistema de coordenadas polares; são os parâmetros a determinar.

Usando até o termo de segunda ordem ( ), temos

Temos então a seguinte equação:

Este sistema com mais equações que variáveis é resolvido pelo método dos mínimos quadrados. Para tanto, calculamos a pseudo-inversa (Moore-Penrose inverse) de como no código seguinte.

k2 = -0.0008944
k1 =  1.3429406
k0 = -2.3647834
rank = 3
total error = 835.30516002
ERROR: 1.15606585281

Correção da Imagem

Finalmente, para ilustrar o desempenho do algoritmo, obtemos uma imagem "corrigida" através do mapeamento de cada ponto da imagem corrigida em sua coordenada correspondente na imagem original (mapeamento reverso).

[ 4  5  9  9  5 13  1  9  5  1 16  5  1  0  2 17  3  3  2  2  6  4  8  6  6]
ERROR: 6.17508422852
ERROR: 4.76684753418

Imagem "corrigida"

Distorcao radial

Usando o Termo de Terceira Ordem

No experimento seguinte, utilizamos um modelo de terceira ordem para a distorção. O procedimento é similar ao anterior.

k3 = -0.0000003
k2 = -0.0006450
k1 =  1.2938756
k0 = -0.4514188
total error = 818.552417187
ERROR: 1.14441420277

Imagem "corrigida"

Distorcao radial