18 votos

¿A qué es realmente tangencial la distorsión "tangencial" de OpenCV?

Me cuesta entender el modelo de distorsión de OpenCV . Utilizan coeficientes "radiales" $k_n$ y coeficientes "tangenciales $p_n$ entre otros que no me interesan.

$$ x' = x (1 + k_1 r^2 + k_2 r^4 + k_3 r^6) + 2 p_1 x y + p_2(r^2 + 2 x^2) \\ y' = y (1 + k_1 r^2 + k_2 r^4 + k_3 r^6) + p_1 (r^2 + 2 y^2) + 2 p_2 x y $$

Para entenderlo, he separado los dos términos en lo que $\Delta$ compensación que producen, así es como se ve para $x$ :

$$ \begin{array}{rlcccc} x' &= x &+ &\underbrace{x(k_1 r^2 + k_2 r^4 + k_3 r^6)} &+ &\underbrace{2 p_1 x y + p_2(r^2 + 2 x^2)}\\ &= x &+ &\Delta x_{radial} &+ &\Delta x_{tangential} \end{array} $$

A continuación, he representado esos valores como un campo vectorial con octave (similar a Matlab).

Distorsión radial

function radialDistortion (k1, k2, k3)
    max = 10;
    [x, y] = meshgrid(-max:.5:max);
    r2 = x.**2 + y.**2;
    k = k1*r2 .+ k2*r2.**2 .+ k3*r2.**3;
    quiver(x, y, x.*k, y.*k, 0);
    axis("square");
endfunction

Llamada con

radialDistortion(0.0002, 0, 0)

produce lo siguiente

radial distortion

Lo entiendo, esto es radial al eje óptico, siendo así punto simétrico al centro (donde está el eje óptico). Esto no era demasiado difícil.

Distorsión tangencial

function tangentialDistortion (p1, p2)
    max = 10;
    [x, y] = meshgrid(-max:.5:max);
    r = x.**2 + y.**2;
    xy = x.*y*2;
    quiver(x, y, xy*p1 + (r+2*x.**2)*p2, xy*p2  + (r+2*y.**2)*p1, 0);
    axis("square");
endfunction

Llamada con

 tangentialDistortion(-.0007, .0007)

produce esto

tangential distortion

¿Cómo es esto "tangencial" a nada? A mí me parece que está corrigiendo una lente inclinada (girada alrededor de la diagonal de abajo a la izquierda y de arriba a la derecha), lo que concuerda con la razón de esta distorsión que se da en la bibliografía: desalineación de la lente.

¿Significa eso que es tangencial a la superficie de la lente?

Al final, se trata de algún modelo matemático que describe algún fenómeno óptico para corregirlo. Pero me gustaría entender por qué se llama "tangencial".


Si la posición de P' también se desplaza tangencialmente con respecto a CP (a lo largo de la tangente al círculo de radio CP), se dice que la distorsión es tangencial.

No, no lo es. He modificado la función anterior para mostrar el desplazamiento "tangencial" de los puntos que están en un círculo.

function tangentialDistortionOnCircle (p1, p2)
    radius = 10;
    x = radius * cos(0:2*pi/20:2*pi);
    y = radius * sin(0:2*pi/20:2*pi);
    r = x.**2 + y.**2;
    xy = x.*y*2;
    quiver(x, y, xy*p1 + (r+2*x.**2)*p2, xy*p2  + (r+2*y.**2)*p1, 0);
    axis([-radius-5 radius+5 -radius-5 radius+5 ], "square");
endfunction

Llamada con estos parámetros:

tangentialDistortionOnCircle(.007, .007)

da este resultado

tangential distortion on a circle

Esto no me parece en absoluto un desplazamiento tangencial. Si lo fuera, parecería un remolino alrededor del centro. Pero ese no es el caso.

14voto

nourdine Puntos 1086

Tome la posición de un punto P de la imagen con respecto al centro geométrico de la imagen C. Suponga que C permanece sin distorsión en la imagen producida por el objetivo, pero que P se distorsiona en P'.

Si la posición de P' sólo se distorsiona radialmente a lo largo de la dirección CP, se dice que la distorsión es radial .

Si la posición de P' es también desplazada tangencialmente respecto a CP (a lo largo de la tangente al círculo de radio CP), se dice que la distorsión es tangencial .

Véase, por ejemplo, " Calibración de la cámara con distorsión Modelos y evaluación de la precisión " (IEEE Transactions On Pattern Analysis And Machine Intelligence), especialmente Figs.2 & 3 (pg. 968) y Fig.4 (pg.969).

0 votos

Dado el nombre de "tangencial", tiene sentido suponer que es tangente a algún círculo. Pero no existe tal círculo. El desplazamiento tangencial no es tangente a un círculo, al menos no a un círculo alrededor del centro de la imagen. He actualizado mi pregunta con un ejemplo de gráfico para puntos en un círculo para ilustrar esto.

0 votos

"Si la posición de P' también se desplaza tangencialmente con respecto a CP (a lo largo de la tangente al círculo de radio CP), se dice que la distorsión es tangencial": Los desplazamientos mostrados en tu nueva fig. incluyen las componentes radiales. Elimínelas. ¿Qué se obtiene? ¿Cómo se compara con la Fig.4 de la ref. citada?

0 votos

Los desplazamientos de mi nueva figura (y la anterior) muestran sólo el desplazamiento tangencial sin la componente radial. OpenCV llama a $p_n$ los coeficientes tangenciales y el gráfico muestra el desplazamiento que provocan. Por lo que veo, si miras la fórmula que he citado, no hay forma de eliminar una componente puramente radial de esto. Cada coordenada es cuadrática o multiplicada por la otra coordenada, pero la distorsión radial es un factor constante como se puede ver en $\Delta_{radial}$

0voto

Marc Mangus Puntos 21

La distorsión tangencial corrige las inclinaciones del plano de la imagen tras la distorsión radial. Imagínese sutiles defectos de fabricación en los que los elementos ópticos no están alineados con el plano de la imagen. Los coeficientes tangenciales corrigen esta imperfección. Por eso parece una rotación del plano de la imagen. El resultado neto de las deformaciones radiales y tangenciales debería ser un modelo estenopeico al que se pueden aplicar los parámetros intrínsecos clásicos una vez localizado el punto principal.

0voto

David Puntos 142

Los artículos pertinentes sobre la distorsión tangencial tienen referencias que se remontan hasta el artículo de Conrady de 1919 sobre "sistemas de lentes descentradas". En este artículo, Conrady habla de la distorsión causada por el error de descentramiento de un sistema de lentes multielemento. La mayoría de las cámaras modernas tienen objetivos multielemento. El paper de Brown de los años 60 tiene la forma que vemos hoy en OpenCV. Esta ecuación casi modela un sensor inclinado excepto por los términos r al cuadrado, pero está pensada para modelar un sistema de lentes descentradas. Brown lo llama Distorsión de descentramiento. Brown dice lo siguiente en su artículo "Un grado significativo de descentramiento introducirá tanto distorsión tangencial como distorsión radial asimétrica".

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X