wymagania wstępne: OpenCV

kamera jest integralną częścią kilku dziedzin, takich jak robotyka, eksploracja kosmosu itp. Pomaga uchwycić każdą chwilę i pomaga w wielu analizach. Aby użyć kamery jako czujnika wizualnego, powinniśmy znać parametry kamery. Kalibracja kamery to nic innego jak szacowanie parametrów kamery, parametry dotyczące kamery są wymagane do określenia dokładnej zależności między punktem 3D w świecie rzeczywistym a odpowiadającą mu projekcją 2D (pikselem) w obrazie przechwyconym przez tę skalibrowaną kamerę.

musimy wziąć pod uwagę zarówno parametry wewnętrzne, takie jak Ogniskowa, środek optyczny, jak i współczynniki zniekształceń promieniowych obiektywu itp. i zewnętrznych parametrów, takich jak obrót i translacja kamery w odniesieniu do jakiegoś układu współrzędnych świata rzeczywistego.

wymagane biblioteki:

  • biblioteka OpenCV w Pythonie jest biblioteką wizji komputerowej, używaną głównie do przetwarzania obrazu, przetwarzania wideo i analizy, rozpoznawania i wykrywania twarzy itp.
  • Numpy jest pakietem przetwarzania tablic ogólnego przeznaczenia. Zapewnia on wydajny obiekt wielowymiarowej tablicy oraz narzędzia do pracy z tymi tablicami.

kalibrację kamery można wykonać krok po kroku:

  • Krok 1: najpierw określ rzeczywiste współrzędne punktów 3D, używając znanego rozmiaru wzoru szachownicy.
  • Krok 2: Różne punkty widzenia obrazu szachownicy są rejestrowane.
  • Krok 3: findChessboardCorners () jest metodą w OpenCV i służy do znajdowania współrzędnych pikseli (u, v) dla każdego punktu 3D na różnych obrazach
  • Krok 4: Następnie metoda calibrateCamera () jest używana do znajdowania parametrów kamery.

zajmie nasze obliczone (threedpoints, twoodpoints, grayColor.shape, None, None) jako parametry i zwraca listę zawierającą elementy takie jak macierz Kamery, Współczynnik zniekształceń, Wektory rotacji i Wektory translacji.

Matryca kamery pomaga przekształcić punkty obiektów 3D w punkty obrazu 2D, A Współczynnik zniekształceń Zwraca pozycję kamery w świecie, z wartościami wektorów obrotu i translacji

poniżej znajduje się kompletny program powyższego podejścia:

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)



Wejście:

Wyjście:

 Camera matrix: ] Distortion coefficient: ] Rotation Vectors: , , ]), array(, , ]), array(, , ])] Translation Vectors: , , ]), array(, , ]), array(, , ])]
Tagi Artykułu:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.