Voraussetzungen: OpenCV

Eine Kamera ist ein wesentlicher Bestandteil mehrerer Bereiche wie Robotik, Weltraumforschung usw. Es hilft, jeden Moment festzuhalten und ist für viele Analysen hilfreich. Um die Kamera als visuellen Sensor zu verwenden, sollten wir die Parameter der Kamera kennen. Parameter über die Kamera sind erforderlich, um eine genaue Beziehung zwischen einem 3D-Punkt in der realen Welt und seiner entsprechenden 2D-Projektion (Pixel) in dem von dieser kalibrierten Kamera aufgenommenen Bild zu bestimmen.

Wir müssen sowohl interne Parameter wie Brennweite, optisches Zentrum als auch radiale Verzerrungskoeffizienten der Linse usw. berücksichtigen. und externe Parameter wie Rotation und Translation der Kamera in Bezug auf ein reales Koordinatensystem.

Benötigte Bibliotheken:

  • Die OpenCV-Bibliothek in Python ist eine Computer-Vision-Bibliothek, die hauptsächlich für die Bildverarbeitung, Videoverarbeitung und -analyse, Gesichtserkennung und -erkennung usw. verwendet wird.
  • Numpy ist ein Allzweck-Array-Verarbeitungspaket. Es bietet ein leistungsfähiges mehrdimensionales Array-Objekt und Werkzeuge für die Arbeit mit diesen Arrays.

Die Kamerakalibrierung kann schrittweise erfolgen:

  • Schritt 1: Definieren Sie zunächst die realen Koordinaten von 3D-Punkten unter Verwendung der bekannten Größe des Schachbrettmusters.
  • Schritt 2: Verschiedene Standpunkte des Check-Board-Bildes werden erfasst.
  • Schritt 3: findChessboardCorners() ist eine Methode in OpenCV und wird verwendet, um Pixelkoordinaten (u, v) für jeden 3D-Punkt in verschiedenen Bildern zu finden
  • Schritt 4: Dann wird die calibrateCamera() -Methode verwendet, um Kameraparameter zu finden.

Es wird unsere berechnet (threedpoints, twodpoints, grayColor.form, Keine, Keine) als Parameter und gibt eine Liste mit Elementen wie Kameramatrix, Verzerrungskoeffizient, Rotationsvektoren und Translationsvektoren zurück.

Die Kameramatrix hilft bei der Transformation von 3D-Objektpunkten in 2D-Bildpunkte und der Verzerrungskoeffizient gibt die Position der Kamera in der Welt mit den Werten der Rotations- und Translationsvektoren zurück

Unten finden Sie das vollständige Programm des obigen Ansatzes:

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)



Eingabe:

Ausgang:

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.