Requisitos previos: OpenCV

Una cámara es una parte integral de varios dominios como la robótica, la exploración espacial, etc. La cámara está desempeñando un papel importante. Ayuda a capturar todos y cada uno de los momentos y es útil para muchos análisis. Para usar la cámara como sensor visual, debemos conocer los parámetros de la cámara. La calibración de la cámara no es más que estimar los parámetros de una cámara, se requieren parámetros sobre la cámara para determinar una relación precisa entre un punto 3D en el mundo real y su correspondiente proyección 2D (píxel) en la imagen capturada por esa cámara calibrada.

Necesitamos considerar ambos parámetros internos, como la longitud focal, el centro óptico y los coeficientes de distorsión radial de la lente, etc., y parámetros externos como rotación y traslación de la cámara con respecto a algún sistema de coordenadas del mundo real.

Bibliotecas necesarias:

  • La biblioteca OpenCV en python es una biblioteca de visión por computadora, utilizada principalmente para procesamiento de imágenes, procesamiento y análisis de video, reconocimiento y detección facial, etc.
  • Numpy es un paquete de procesamiento de matrices de propósito general. Proporciona un objeto de matriz multidimensional de alto rendimiento y herramientas para trabajar con estas matrices.

La calibración de la cámara se puede realizar paso a paso:

  • Paso 1: Primero defina las coordenadas del mundo real de los puntos 3D utilizando el tamaño conocido del patrón de tablero de ajedrez.
  • Paso 2: Se capturan diferentes puntos de vista de la imagen del tablero de cheques.
  • Paso 3: findChessboardCorners() es un método en OpenCV y se usa para encontrar coordenadas de píxeles (u, v) para cada punto 3D en diferentes imágenes
  • Paso 4: Luego se usa el método calibrateCamera() para encontrar los parámetros de la cámara.

Tomará nuestro calculado (tres puntos, dos puntos, color gris.forma, Ninguno, Ninguno) como parámetros y lista de retornos que tiene elementos como matriz de cámara, coeficiente de Distorsión, Vectores de Rotación y Vectores de Traducción.

Camera Matrix ayuda a transformar puntos de objetos 3D en puntos de imagen 2D y el Coeficiente de Distorsión devuelve la posición de la cámara en el mundo, con los valores de vectores de Rotación y Traducción

A continuación se muestra el programa completo del enfoque anterior:

Python3

import cv2
import numpy as np
import os
import glob
CHECKERBOARD = (6, 9)
criteria = (cv2.TERM_CRITERIA_EPS +
cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
threedpoints =
twodpoints =
objectp3d = np.zeros((1, CHECKERBOARD
* CHECKERBOARD,
3), np.float32)
objectp3d = np.mgrid,
0:CHECKERBOARD].T.reshape(-1, 2)
prev_img_shape = None
images = glob.glob('*.jpg')
for filename in images:
image = cv2.imread(filename)
grayColor = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
ret, corners = cv2.findChessboardCorners(
grayColor, CHECKERBOARD,
cv2.CALIB_CB_ADAPTIVE_THRESH
+ cv2.CALIB_CB_FAST_CHECK +
cv2.CALIB_CB_NORMALIZE_IMAGE)
if ret == True:
threedpoints.append(objectp3d)
corners2 = cv2.cornerSubPix(
grayColor, corners, (11, 11), (-1, -1), criteria)
twodpoints.append(corners2)
image = cv2.drawChessboardCorners(image,
CHECKERBOARD,
corners2, ret)
cv2.imshow('img', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
h, w = image.shape
ret, matrix, distortion, r_vecs, t_vecs = cv2.calibrateCamera(
threedpoints, twodpoints, grayColor.shape, None, None)
print(" Camera matrix:")
print(matrix)
print("\n Distortion coefficient:")
print(distortion)
print("\n Rotation Vectors:")
print(r_vecs)
print("\n Translation Vectors:")
print(t_vecs)



De Entrada:

Salida:

 Camera matrix: ] Distortion coefficient: ] Rotation Vectors: , , ]), array(, , ]), array(, , ])] Translation Vectors: , , ]), array(, , ]), array(, , ])]
Las Etiquetas De Artículo :

Deja una respuesta

Tu dirección de correo electrónico no será publicada.