forudsætninger: OpenCV

et kamera er en integreret del af flere domæner som robotik, rumforskning osv. Det hjælper med at fange hvert eneste øjeblik og nyttigt for mange analyser. For at bruge kameraet som en visuel sensor skal vi kende kameraets parametre. Kamerakalibrering er intet andet end at estimere parametrene for et kamera, parametre om kameraet er nødvendige for at bestemme et nøjagtigt forhold mellem et 3D-punkt i den virkelige verden og dets tilsvarende 2D-projektion (billedbillede) i det billede, der er taget af det kalibrerede kamera.

vi er nødt til at overveje både interne parametre som brændvidde, optisk center og radiale forvrængningskoefficienter for linsen osv., og eksterne parametre som rotation og oversættelse af kameraet med hensyn til nogle virkelige verden koordinatsystem.

nødvendige biblioteker:

  • OpenCV-bibliotek i python er et computervisionsbibliotek, der mest bruges til billedbehandling, videobehandling og analyse, ansigtsgenkendelse og detektion osv.
  • Numpy er en generel array-behandling pakke. Det giver en højtydende multidimensionel array objekt og værktøjer til at arbejde med disse arrays.

Kamerakalibrering kan udføres i en trinvis tilgang:

  • Trin 1: Definer først virkelige verdenskoordinater for 3D-punkter ved hjælp af kendt størrelse af skakternet mønster.
  • Trin 2: Forskellige synspunkter check-board billede er taget.
  • Trin 3: findChessboardCorners() er en metode i OpenCV og bruges til at finde billedkoordinater (u, v) for hvert 3D-punkt i forskellige billeder
  • Trin 4: derefter bruges calibrateCamera () – metoden til at finde kameraparametre.

det vil tage vores beregnede (tre punkter, to punkter, gråfarve.figur, Ingen, Ingen) som parametre og returliste med elementer som Kameramatrice, Forvrængningskoefficient, Rotationsvektorer og Oversættelsesvektorer.

Kameramatrice hjælper med at omdanne 3D-objekter til 2D-billedpunkter, og Forvrængningskoefficienten returnerer kameraets position i verden med værdierne for Rotation og Oversættelsesvektorer

nedenfor er det komplette program for ovenstående tilgang:

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)



Input:

Output:

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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.