Forutsetninger: OpenCV

et kamera er en integrert del av flere domener som robotikk, romforskning, etc kameraet spiller en viktig rolle. Det bidrar til å fange hvert øyeblikk og nyttig for mange analyser. For å kunne bruke kameraet som en visuell sensor, bør vi vite parametrene til kameraet. Kamerakalibrering er ingenting annet enn å estimere parametrene til et kamera, parametere om kameraet kreves for å bestemme et nøyaktig forhold MELLOM ET 3d-punkt i den virkelige verden og dets tilsvarende 2d-projeksjon (piksel) i bildet tatt av det kalibrerte kameraet.

Vi må vurdere både interne parametere som brennvidde, optisk senter og radiale forvrengningskoeffisienter på linsen etc., og eksterne parametere som rotasjon og oversettelse av kameraet med hensyn til noen virkelige verden koordinatsystem.

Nødvendige biblioteker:

  • OpenCV library I python Er et datasynbibliotek, mest brukt til bildebehandling, videobehandling og analyse, ansiktsgjenkjenning og deteksjon, etc.
  • Numpy er en generell array-behandling pakke. Det gir en høy ytelse flerdimensjonal array objekt og verktøy for å arbeide med disse arrays.

Kamerakalibrering kan gjøres i en trinnvis tilnærming:

  • Trinn 1: definer først virkelige koordinater AV 3D-punkter ved hjelp av kjent størrelse på sjakkbrettmønster.
  • Trinn 2: Ulike synspunkter på check-board bildet er tatt.
  • Trinn 3: findChessboardCorners () er en Metode I OpenCV og brukes til å finne pikselkoordinater (u, v) for HVERT 3d-punkt i forskjellige bilder
  • Trinn 4: deretter brukes calibrateCamera () – metoden til å finne kameraparametere.

det vil ta vår beregnede (threedpoints, twodpoints, grayColor.figur, Ingen, Ingen) som parametere og returnerer liste med elementer Som Kameramatrise, Forvrengningskoeffisient, Rotasjonsvektorer og Oversettelsesvektorer.

Kameramatrise bidrar til å transformere 3d-objekter poeng TIL 2d bildepunkter Og Forvrengningskoeffisienten returnerer posisjonen til kameraet i verden, med Verdiene For Rotasjon og Oversettelsesvektorer

Nedenfor er det komplette programmet for ovennevnte tilnærming:

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:

Utgang:

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

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.