vereisten: OpenCV

een camera is een integraal onderdeel van verschillende domeinen zoals robotica, ruimteverkenning, enz.camera speelt een belangrijke rol. Het helpt om elk moment vast te leggen en nuttig voor vele analyses. Om de camera als visuele sensor te gebruiken, moeten we de parameters van de camera kennen. Camerakalibratie is niets anders dan het schatten van de parameters van een camera, parameters over de camera zijn nodig om een nauwkeurige relatie te bepalen tussen een 3D-punt in de echte wereld en de bijbehorende 2D-projectie (pixel) in het beeld dat is vastgelegd door die gekalibreerde camera.

we moeten zowel interne parameters zoals brandpuntsafstand, optisch centrum, en radiale vervormingscoëfficiënten van de lens enz., en externe parameters zoals rotatie en vertaling van de camera met betrekking tot een echte wereld coördinatenstelsel.

vereiste bibliotheken:

  • OpenCV library in python is een computer vision library, meestal gebruikt voor beeldverwerking, video processing, en analyse, gezichtsherkenning en detectie, enz.
  • Numpy is een pakket voor algemene array-verwerking. Het biedt een high-performance multidimensionale array object en tools voor het werken met deze arrays.

Camerakalibratie kan stapsgewijs worden uitgevoerd:

  • Stap 1: definieer eerst echte wereld coördinaten van 3D-punten met behulp van bekende grootte van dambord patroon.
  • Stap 2: Verschillende standpunten van check-board beeld wordt vastgelegd.
  • Stap 3: findChessboardCorners () is een methode in OpenCV en wordt gebruikt om pixelcoördinaten (u, v) te vinden voor elk 3D-punt in verschillende afbeeldingen
  • Stap 4: vervolgens wordt de calibrateCamera () – methode gebruikt om cameraparameters te vinden.

het zal onze berekende (drie punten, twee punten, grayColor.vorm, geen, geen) Als parameters en retourneert lijst met elementen als Camera matrix, Vervormingscoëfficiënt, Rotatievectoren en Translatievectoren.

Cameramatrix helpt om 3D-objecten te transformeren naar 2D-beeldpunten en de Vervormingscoëfficiënt geeft de positie van de camera in de wereld terug, met de waarden van rotatie-en Vertaalvectoren

Hieronder is het volledige programma van de bovenstaande aanpak:

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)



Ingang:

Uitgang:

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

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.