Rectificação da Imagem

A rectificação então consiste em projectar os pontos do plano de retina sobre o plano de interface, alterar os parâmetros da câmara e reprojectar no novo plano de retina. Suponha-se que se pretende projectar um ponto p1 sobre um plano $ \bar{{k}}$ usando como centro de projecção um ponto p0. Como visto em [4], uma recta em $ \mathbb {P}$3 pode ser descrita por

r = {$\displaystyle \bar{{p}}_{0}^{}$ + $\displaystyle \lambda$$\displaystyle \bar{{p}}_{1}^{}$,  $\displaystyle \lambda$ $\displaystyle \in$ $\displaystyle \mathbb {R}$}

e pretende-se encontrar o ponto desta recta que pertence ao plano $ \bar{{k}}$. Assim pretende-se encontrar $ \lambda$ tal que

$\displaystyle \bar{{k}}$Tr = 0    
$\displaystyle \Leftrightarrow$ $\displaystyle \bar{{k}}$T$\displaystyle \left(\vphantom{\mathbf{\bar{p}_0}+\lambda\mathbf{\bar{p}_1}}\right.$$\displaystyle \bar{{p}}_{0}^{}$ + $\displaystyle \lambda$$\displaystyle \bar{{p}}_{1}^{}$$\displaystyle \left.\vphantom{\mathbf{\bar{p}_0}+\lambda\mathbf{\bar{p}_1}}\right)$ = 0    
$\displaystyle \Leftrightarrow$ $\displaystyle \lambda$ = - $\displaystyle {\frac{{\mathbf{\bar{k}}^T\mathbf{\bar{p}_0}}}{{\mathbf{\bar{k}}^T\mathbf{\bar{p}_1}}}}$    

O ponto projectado sobre o plano (que se designará por $ \bar{{p}}_{2}^{}$) será então

$\displaystyle \bar{{p}}_{2}^{}$ $\displaystyle \sim$ $\displaystyle \bar{{p}}_{0}^{}$ - $\displaystyle {\frac{{\mathbf{\bar{k}}^T\mathbf{\bar{p}_0}}}{{\mathbf{\mathbf{\bar{k}}^T\bar{p}_1}}}}$$\displaystyle \bar{{p}}_{1}^{}$

Como se trabalha no espaço projectivo e $ \bar{{k}}$T$ \bar{{p}}_{1}^{}$ é escalar, usa-se a relação de equivalência para escrever o anterior como

$\displaystyle \bar{{p}}_{2}^{}$ $\displaystyle \sim$ $\displaystyle \bar{{p}}_{0}^{}$$\displaystyle \bar{{k}}$T$\displaystyle \bar{{p}}_{1}^{}$ - ($\displaystyle \bar{{k}}$T$\displaystyle \bar{{p}}_{0}^{}$)$\displaystyle \bar{{p}}_{1}^{}$    
$\displaystyle \bar{{p}}_{2}^{}$ $\displaystyle \sim$ $\displaystyle \left(\vphantom{\mathbf{\bar{p}_0}\mathbf{\bar{k}}^T-\mathbf{\bar{k}}^T\mathbf{\bar{p}_0}\mathbf{I}}\right.$$\displaystyle \bar{{p}}_{0}^{}$$\displaystyle \bar{{k}}$T - $\displaystyle \bar{{k}}$T$\displaystyle \bar{{p}}_{0}^{}$I$\displaystyle \left.\vphantom{\mathbf{\bar{p}_0}\mathbf{\bar{k}}^T-\mathbf{\bar{k}}^T\mathbf{\bar{p}_0}\mathbf{I}}\right)$$\displaystyle \bar{{p}}_{1}^{}$    

onde I designa a matriz identidade. Tem-se assim uma matriz de projeção parametrizada pelo centro de projecção e pelo plano onde se pretende projectar. Em particular, para o plano z = 0 $ \left(\vphantom{\mathbf{\bar{k}}=\left [\begin{array}{ccccccc}0&0&1&0\end{array}\right ]^T}\right.$$ \bar{{k}}$ = $ \left[\vphantom{\begin{array}{ccccccc}0&0&1&0\end{array}}\right.$$ \begin{array}{ccccccc}0&0&1&0\end{array}$$ \left.\vphantom{\begin{array}{ccccccc}0&0&1&0\end{array}}\right]^{T}_{}$$ \left.\vphantom{\mathbf{\bar{k}}=\left [\begin{array}{ccccccc}0&0&1&0\end{array}\right ]^T}\right)$ a matriz de projecção toma a forma

$\displaystyle \bar{p}$2 $\displaystyle \sim$ $\displaystyle \underbrace{{\begin{bmatrix}-p_0^z & 0 & p_0^x & 0\\  0 & -p_0^z ...
...0 & 0 & 0 & 0\\  0 & 0 & 1 & -p_0^z\\  \end{bmatrix}}}_{{\mathbf{M(p_0)}}}^{}\,$$\displaystyle \bar{p}$1 (4.1.8)

Assim, assumindo que as imagens foram previamente corrigidas de forma a não apresentarem distorção ocular, é possível corrigir as imagens de acordo com a aproximação de snell de primeira ordem aplicando a seguinte homografia:

H = $\displaystyle \mathcal {P}$2M(p0)$\displaystyle \mathcal {P}$1-1 (4.1.9)

Onde $ \mathcal {P}$1 é a matriz de projecção da câmara original, $ \mathcal {P}$2 é a matriz de projecção da câmara com os parâmetros intrínsecos e extrínsecos alterados (como descrito na secção 4.1.3, em particular pela equação 4.1.7), M(p0) é a matriz descrita na equação 4.1.8, onde p0 é o centro de projecção da câmara original.

Note-se que após esta transformação, as equações 4.1.3-4.1.5 deixam de descrever o efeito desejado, não permitindo portanto o seu uso na triangulação necessária no algortimo de reconstrução. De seguida corrigem-se estas equações, de forma a serem válidas para imagens previamente transformadas pelo processo anterior. Como se apresenta na figura 4.1.4, pretende-se para cada pixel de cada imagem calcular o par (p3,v3) a partir de (p1,v1), que define o caminho seguido pela luz debaixo de água.

Figura: Ilustração do erro de reconstrução devido à aproximação de snell. Repare-se que a trajectória exacta seguida pelo feixe de luz debaixo de água será segundo v3 e não segundo v1.
\begin{figure}\center
\input{rectificacao_aproximacao_snell.pstex_t}
\end{figure}

Assim, definindo parametricamente uma recta através de p1 e v1 calcula-se a intersecção desta com o plano de interface z = 0:

p3 = $\displaystyle \left[\vphantom{\begin{array}{ccccccc}p_1^x-\frac{p_1^z}{v_1^z}v_1^x & p_1^y-\frac{p_1^z}{v_1^z}v_1^y & 0 \end{array}}\right.$$\displaystyle \begin{array}{ccccccc}p_1^x-\frac{p_1^z}{v_1^z}v_1^x & p_1^y-\frac{p_1^z}{v_1^z}v_1^y & 0 \end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccccccc}p_1^x-\frac{p_1^z}{v_1^z}v_1^x & p_1^y-\frac{p_1^z}{v_1^z}v_1^y & 0 \end{array}}\right]^{T}_{}$ (4.1.10)

Como se sabe, a aproximação de snell deslocou o centro de projecção de cada câmara segundo a transformação 4.1.6, logo:

p2 = $\displaystyle \left[\vphantom{\begin{array}{ccccccc}p_1^x & p_1^y & kp_1^z\end{array}}\right.$$\displaystyle \begin{array}{ccccccc}p_1^x & p_1^y & kp_1^z\end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccccccc}p_1^x & p_1^y & kp_1^z\end{array}}\right]^{T}_{}$

e portanto

v2 = p3 - p2 = $\displaystyle \left[\vphantom{\begin{array}{ccccccc}-\frac{p_1^z}{v_1^z}v_1^x &-\frac{p_1^z}{v_1^z}v_1^y & -kp_1^z \end{array}}\right.$$\displaystyle \begin{array}{ccccccc}-\frac{p_1^z}{v_1^z}v_1^x &-\frac{p_1^z}{v_1^z}v_1^y & -kp_1^z \end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccccccc}-\frac{p_1^z}{v_1^z}v_1^x &-\frac{p_1^z}{v_1^z}v_1^y & -kp_1^z \end{array}}\right]^{T}_{}$

Para o par (p2,v2) as equações 4.1.3-4.1.5 são novamente válidas e ao aplicá-las, levando em consideração os sinais das grandezas e que

a = sgn(a) . |a|= sgn(a)$\displaystyle \sqrt{{a^2}}$

obtém-se

v3 $\displaystyle \propto$ $\displaystyle \left[\vphantom{\begin{array}{ccccccc}v_1^x &v_1^y & -\sqrt{\frac...
...\left(v_1^x\right)^2+\left(v_1^y\right)^2\right)+(v_1^z)^2} \end{array}}\right.$$\displaystyle \begin{array}{ccccccc}v_1^x &v_1^y & -\sqrt{\frac{1-k^2}{k^2}\left(\left(v_1^x\right)^2+\left(v_1^y\right)^2\right)+(v_1^z)^2} \end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccccccc}v_1^x &v_1^y & -\sqrt{\frac...
..._1^x\right)^2+\left(v_1^y\right)^2\right)+(v_1^z)^2} \end{array}}\right]^{T}_{}$ (4.1.11)


Ricardo 2004-11-06