förutsättningar: OpenCV

en kamera är en integrerad del av flera domäner som robotik, utforskning av rymden, etc kameran spelar en viktig roll. Det hjälper till att fånga varje ögonblick och användbart för många analyser. För att kunna använda kameran som en visuell sensor bör vi känna till kamerans parametrar. Kamerakalibrering är inget annat än att uppskatta parametrarna för en kamera, parametrar om kameran krävs för att bestämma ett exakt förhållande mellan en 3D-punkt i den verkliga världen och dess motsvarande 2D-projektion (pixel) i bilden som tagits av den kalibrerade kameran.

vi måste överväga både interna parametrar som brännvidd, optiskt centrum och radiella distorsionskoefficienter för linsen etc., och externa parametrar som rotation och översättning av kameran med avseende på något verkligt koordinatsystem.

obligatoriska bibliotek:

  • OpenCV-bibliotek i python är ett datorsynbibliotek, som mest används för bildbehandling, videobearbetning och analys, ansiktsigenkänning och detektering etc.
  • Numpy är ett allmänt array-bearbetningspaket. Det ger ett högpresterande flerdimensionellt arrayobjekt och verktyg för att arbeta med dessa arrayer.

Kamerakalibrering kan göras steg för steg:

  • Steg 1: Definiera först verkliga världskoordinater för 3D-punkter med känd storlek på rutmönster.
  • steg 2: Olika synpunkter på check-board bilden fångas.
  • steg 3: findChessboardCorners() är en metod i OpenCV och används för att hitta pixelkoordinater (u, v) för varje 3D-punkt i olika bilder
  • steg 4: sedan används calibrateCamera () – metoden för att hitta kameraparametrar.

det kommer att ta våra beräknade (threedpoints, twodpoints, grayColor.form, ingen, ingen) som parametrar och returnerar lista med element som Kameramatris, Distorsionskoefficient, Rotationsvektorer och Översättningsvektorer.

Kameramatris hjälper till att omvandla 3D-objekt pekar på 2D-bildpunkter och Distorsionskoefficienten returnerar kamerans position i världen, med värdena för rotations-och Översättningsvektorer

nedan är det kompletta programmet för ovanstående tillvägagångssätt:

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:

Utgång:

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

Lämna ett svar

Din e-postadress kommer inte publiceras.