[Imagen] [Corrección de ojo de pez OpenCV] 3. Explicación del principio de corrección de ojo de pez


Materiales de referencia:

链接:https://pan.baidu.com/s/19BK9HbRBYtFCjdR0qSIv2Q 
提取码:eu2s 

De acuerdo con los dos artículos anteriores, ya sabemos que la función más importante de la corrección de ojo de pez es fisheye::initUndistortRectifyMap()que puede obtener la matriz map1, y su función es:

map1 2 es una matriz de canales, en la que los elementos vectoriales bidimensionales (i, j) tienen los (u, v) = (map1(i, j)[0], map1(i, j)[1])siguientes significados:
la distorsión de los (u, v) = (map1(i, j)[0], map1(i, j)[1])elementos de la imagen a copiar (i, j), se obtiene la imagen sin distorsión.

Entonces, fisheye::initUndistortRectifyMap()¿cómo se (i, j)calcula en (u, v)base a eso?
OpenCV ofrece oficialmente la siguiente fórmula:
Inserte la descripción de la imagen aquí

Donde el (i, j)gráfico de píxeles ortoscópico, y la fórmula ① (i, j, 1)es (i, j)coordenadas homogéneas;

El iR de la fórmula ① es el inverso de los parámetros internos de la cámara .

⑦ en la última fórmula (u, v)es una figura no distorsionada (i, j)correspondiente a una posición de un punto de distorsión de la FIG (u, v).


La siguiente es una introducción detallada al anuncio anterior.

1. Explicación del principio de corrección de ojo de pez

1. Convierta las coordenadas de píxeles en coordenadas de la cámara

Antes de leer esta sección, aprenda la relación de conversión entre el sistema de coordenadas del mundo, el sistema de coordenadas de la cámara, el sistema de coordenadas de la imagen y el sistema de coordenadas de píxeles . Esta sección asume que el lector ha dominado los conocimientos básicos.

En primer lugar, sabemos que la relación de conversión del sistema de coordenadas de la cámara al sistema de coordenadas de píxeles es la siguiente:

Nota:

A continuación, "las coordenadas de un punto en el mundo real tridimensional en el sistema de coordenadas de la cámara" se abreviarán como "coordenadas de la cámara"; las "coordenadas en el sistema de coordenadas de píxeles en una imagen bidimensional" se abreviarán como "coordenadas de píxeles".

En la fórmula anterior ①, iRes la inversa de la matriz de parámetros internos, que se puede obtener mediante la fórmula ① [Xc, Yc, Zc], que en realidad son las coordenadas normalizadas de las coordenadas de la cámara real , a saber:

Sin embargo, usamos [Xc, Yc, Zc], pero solo usamos la relación proporcional entre ellos. Por lo tanto, realmente no importa si está normalizado o no, porque la relación proporcional es la misma.

Hasta ahora, de acuerdo con las coordenadas de píxeles en la imagen no distorsionada, hemos (i, j)obtenido las coordenadas de la cámara normalizadas a las que debería corresponder en condiciones no distorsionadas (Xc, Yc, Zc).

2. Correspondencia entre las coordenadas de la cámara no distorsionadas y las coordenadas de la cámara distorsionadas

Supongamos que en el mundo real que se (x, y, z)muestra en una posición debajo del sistema de coordenadas de la cámara, entonces, de acuerdo con la fórmula anterior ②③④ , obtenemos el ángulo de incidenciatheta = atan(r) real , es decir, la línea que conecta el centro de la cámara y el eje óptico de la cámara (eje Z) del ángulo de la abrazadera. como sigue:点(x, y, z)

En la figura, theta1se atan(r)calcula la esquina inferior izquierda y la derecha theta2es 点(x, y, z)el ángulo de incidencia, que theta1es igual a la esquina inferior izquierda .

Algunos lectores pueden preguntar, las coordenadas reales de la cámara están marcadas en la figura, pero las coordenadas normalizadas de la cámara en la fórmula anterior son las thetamismas. ¿Se pueden calcular de la misma manera? La respuesta es sí. La observación muestra que lo que usamos es solo la relación proporcional entre x, y y z, independientemente de si están normalizados o no, su relación proporcional es la misma.

Hasta ahora, ya sean coordenadas de píxeles (i, j), coordenadas de cámara (x, y, z)o ángulo de incidencia theta = theta1 = theta2, hemos calculado los valores sin distorsión.

Entonces, el siguiente paso será el punto de división entre distorsión y distorsión.


La obra maestra de Juho Kannala y Sami S. Brandt "A y el método de calibración genérico de la cámara, para el modelo convencional, gran angular, pez y un ojo-lentes" , se puede hacer sin distorsión del ángulo de incidenciatheta , con la distorsión coeficiente después de obtener la distorsión r ! Para distinguir esta r de la r no distorsionada , registramos esta r distorsionada como r_d (d significa distorsión).
Inserte la descripción de la imagen aquí

即 , r_d = k1 · theta + k2 · theta ^ 3 + k3 · theta ^ 5 + k4 · theta ^ 7 + k5 · theta ^ 9

Esta es la fórmula ⑤.

En este punto, tenemos r_d en el caso de distorsión.

El significado del punto de distorsión es el siguiente:
Inserte la descripción de la imagen aquí

En el caso de que no haya distorsión, en la figura anterior, los píxeles negros de la imagen normal deben proyectarse desde los puntos negros normales del mundo real;

Sin embargo, en el caso de la distorsión de ojo de pez, los píxeles negros de la imagen sin distorsión de la figura anterior deben proyectarse para que correspondan a los puntos rojos del mundo real.

Luego, solo necesitamos encontrar la posición del punto rojo en el mapa de distorsión, y luego colocarlo en la posición del píxel negro no distorsionado.

Ahora, podemos obtener los puntos rojos correspondientes r_dy los puntos negros correspondientes r, luego hacer un factor de escala scale = r_d / r, luego scale · adebería ser una coordenada de cámara de punto rojo en la dirección x, scale · bdebería ser un punto de coordenadas de cámara roja en la dirección y.

Se obtienen las coordenadas de la cámara del punto rojo, y en base a ello 像素坐标 = 内参 x 相机坐标, las coordenadas del pixel en la imagen distorsionada que corresponde al punto rojo en el mundo real se pueden obtener , es decir, la fórmula ⑦. De la siguiente manera: ** Hasta ahora, hemos comenzado desde el principio , después de una derivación, y hemos calculado su correspondiente , siempre que el píxel (u, v) se copie en (i, j), se puede obtener la imagen corregida .
Inserte la descripción de la imagen aquí
无畸变图中的像素点(i, j)畸变图中的像素点(u, v)

Nota:

De hecho, el blogger no tiene muy claro el principio y la función del factor de escala. En cuanto a por qué " scale · adeberían ser las coordenadas de la cámara del punto rojo en la dirección x, pero scale · bdeberían ser las coordenadas de la cámara del punto rojo en la dirección y ", no entendió demasiado. Pero debe haber un principio a seguir, y espero que los lectores aquí puedan responder sus preguntas en la sección de comentarios.

Supongo que te gusta

Origin blog.csdn.net/qq_39642978/article/details/112758040
Recomendado
Clasificación