Prerequisiti: OpenCV

Una fotocamera è parte integrante di diversi domini come la robotica, l’esplorazione dello spazio, ecc fotocamera sta giocando un ruolo importante. Aiuta a catturare ogni momento e utile per molte analisi. Per utilizzare la fotocamera come sensore visivo, dovremmo conoscere i parametri della fotocamera. La calibrazione della fotocamera non è altro che stimare i parametri di una fotocamera, i parametri relativi alla fotocamera sono necessari per determinare una relazione accurata tra un punto 3D nel mondo reale e la sua corrispondente proiezione 2D (pixel) nell’immagine catturata da quella fotocamera calibrata.

Dobbiamo considerare entrambi i parametri interni come la lunghezza focale,il centro ottico e i coefficienti di distorsione radiale dell’obiettivo ecc., e parametri esterni come rotazione e traduzione della macchina fotografica rispetto ad alcun sistema di coordinate di mondo reale.

Librerie richieste:

  • La libreria OpenCV in python è una libreria di computer vision, utilizzata principalmente per l’elaborazione di immagini, l’elaborazione video e l’analisi, il riconoscimento facciale e il rilevamento, ecc.
  • Numpy è un pacchetto di elaborazione di array generico. Fornisce un oggetto array multidimensionale ad alte prestazioni e strumenti per lavorare con questi array.

Calibrazione della fotocamera può essere fatto in un approccio step-by-step:

  • Passo 1: Prima definire le coordinate del mondo reale dei punti 3D utilizzando la dimensione nota del motivo a scacchiera.
  • Fase 2: Diversi punti di vista di immagine check-board viene catturato.
  • Passo 3: findChessboardCorners() è un metodo in OpenCV e utilizzato per trovare le coordinate dei pixel (u, v) per ogni punto 3D in immagini diverse
  • Passo 4: Quindi calibrateCamera() metodo viene utilizzato per trovare i parametri della fotocamera.

Ci vorrà il nostro calcolato (threedpoints, twodpoints, grayColor.shape, None, None) come parametri e restituisce l’elenco con elementi come matrice della fotocamera, coefficiente di distorsione, vettori di rotazione e vettori di traduzione.

La matrice della fotocamera aiuta a trasformare i punti degli oggetti 3D in punti immagine 2D e il coefficiente di distorsione restituisce la posizione della fotocamera nel mondo, con i valori dei vettori di rotazione e traduzione

Di seguito è riportato il programma completo dell’approccio sopra riportato:

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)



Ingresso:

Uscita:

 Camera matrix: ] Distortion coefficient: ] Rotation Vectors: , , ]), array(, , ]), array(, , ])] Translation Vectors: , , ]), array(, , ]), array(, , ])]
Tag Articolo :

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.