cerințe preliminare: OpenCV

o cameră este o parte integrantă a mai multor domenii precum robotica, explorarea spațiului etc. camera joacă un rol major. El ajută pentru a capta fiecare moment și de ajutor pentru multe analize. Pentru a utiliza camera ca senzor vizual, ar trebui să cunoaștem parametrii camerei. Calibrarea camerei nu este altceva decât estimarea parametrilor unei camere, parametrii despre cameră sunt necesari pentru a determina o relație exactă între un punct 3D din lumea reală și proiecția 2D corespunzătoare (pixel) din imaginea capturată de acea cameră calibrată.

trebuie să luăm în considerare atât parametrii interni, cum ar fi distanța focală, centrul optic și coeficienții de distorsiune radială ai lentilei etc., și parametrii externi, cum ar fi rotația și traducerea camerei în raport cu un sistem de coordonate din lumea reală.

biblioteci necesare:

  • biblioteca OpenCV din python este o bibliotecă de viziune computerizată, utilizată mai ales pentru procesarea imaginilor, procesarea video și analiza, recunoașterea și detectarea facială etc.
  • Numpy este un pachet de procesare matrice de uz general. Acesta oferă un obiect matrice multidimensională de înaltă performanță și instrumente pentru lucrul cu aceste matrice.

calibrarea camerei se poate face într-o abordare pas cu pas:

  • Pasul 1: mai întâi definiți coordonatele lumii reale ale punctelor 3D folosind dimensiunea cunoscută a modelului de șah.
  • Pasul 2: Diferite puncte de vedere ale imaginii check-board este capturat.
  • Pasul 3: findChessboardCorners() este o metodă în OpenCV și utilizată pentru a găsi coordonatele pixelilor (u, v) pentru fiecare punct 3D în diferite imagini
  • Pasul 4: apoi calibrateCamera() metoda este utilizată pentru a găsi parametrii camerei.

va lua calculul nostru (threedpoints, twodpoints, grycolor.formă, Nici unul, Nici unul) ca parametri și returnează lista cu elemente ca matrice aparat de fotografiat, Coeficient de distorsiune, vectori de rotație, și Vectori de traducere.

matricea camerei ajută la transformarea punctelor obiectelor 3D în puncte de imagine 2D, iar coeficientul de distorsiune returnează poziția camerei în lume, cu valorile vectorilor de rotație și traducere

mai jos este programul complet al abordării de mai sus:

Piton3

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)



Intrare:

Ieșire:

 Camera matrix: ] Distortion coefficient: ] Rotation Vectors: , , ]), array(, , ]), array(, , ])] Translation Vectors: , , ]), array(, , ]), array(, , ])]
Articolul Tags:

Lasă un răspuns

Adresa ta de email nu va fi publicată.