Me cuesta entender el modelo de distorsión de OpenCV . Usan coeficientes "radiales" y coeficientes "tangenciales" entre otros que no me interesan.
Para entender esto, separé los dos términos en lo que compensación que producen, así es como se ve :
Luego tracé esos valores como un campo vectorial con octava (similar a Matlab).
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
llamado con
radialDistortion(0.0002, 0, 0)
produce lo siguiente
Lo entiendo, esto es radial al eje óptico, por lo que es un punto simétrico al centro (donde está el eje óptico). Esto no fue demasiado difícil.
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
llamado con
tangentialDistortion(-.0007, .0007)
produce esto
¿Cómo es esto "tangencial" a algo? Para mí, parece que está corrigiendo una lente que está inclinada (girada alrededor de la diagonal inferior izquierda a la superior derecha), lo que concuerda con la razón de esta distorsión dada en la literatura: desalineación de la lente.
¿Eso significa que es tangencial a la superficie de la lente?
Al final, es algún modelo matemático que describe algún fenómeno óptico para poder corregirlo. Pero me gustaría entender por qué esto 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. Modifiqué 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
Llamado con estos parámetros:
tangentialDistortionOnCircle(.007, .007)
da este resultado
Esto no me parece un desplazamiento tangencial en absoluto. Si lo fuera, se vería como un remolino alrededor del centro. Pero ese no es el caso.
Tome la posición de un punto P en la imagen en relación con el centro geométrico de la imagen C. Suponga que C permanece sin distorsión en la imagen producida por la lente, pero P está distorsionada en P'.
Si la posición de P' solo 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' 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 .
Consulte, por ejemplo, " Calibración de cámara con modelos de distorsión y evaluación de precisión " (Transacciones IEEE sobre análisis de patrones e inteligencia de máquinas), especialmente las figuras 2 y 3 (pág. 968) y la figura 4 (pág. 969).
La distorsión tangencial corrige las inclinaciones del plano de la imagen después de la distorsión radial. Imagine defectos de fabricación sutiles donde los elementos ópticos no están alineados con el plano de imagen. Los coeficientes tangenciales corrigen esta imperfección. Es por eso que parece una rotación del plano de imagen. El resultado neto de las deformaciones tanto radiales como tangenciales debería ser un modelo estenopeico al que luego puede aplicar parámetros intrínsecos clásicos una vez que localiza el punto principal.
Los artículos pertinentes sobre la distorsión tangencial tienen referencias que se remontan al artículo de Conrady de 1919 sobre "sistemas de lentes descentrados". En este artículo, Conrady habla sobre la distorsión causada por el error de descentramiento de un sistema de lentes de elementos múltiples. La mayoría de las cámaras modernas tienen lentes de múltiples elementos. El artículo de Brown de la década de 1960 tiene la forma que vemos hoy en OpenCV. Esta ecuación casi modela un sensor inclinado excepto por los términos de r al cuadrado, pero pretende modelar un sistema de lente descentrado. Brown lo llama Distorsión descentralizadora. Brown dice esto en su artículo: "Un grado significativo de descentramiento introducirá tanto distorsión tangencial como distorsión radial asimétrica".
nulo
udv
nulo
udv
nulo
udv
usuario15741