előfeltételek: OpenCV

a kamera szerves része számos területen, mint a robotika, űrkutatás, stb kamera játszik nagy szerepet. Segít megragadni minden egyes pillanatot, és sok elemzéshez hasznos. Annak érdekében, hogy a kamerát vizuális érzékelőként használhassuk, ismernünk kell a kamera paramétereit. A kamera kalibrálása nem más, mint a kamera paramétereinek becslése, a fényképezőgép paraméterei szükségesek a valós világ 3D-s pontja és a megfelelő 2D-vetítés (pixel) közötti pontos kapcsolat meghatározásához a kalibrált kamera által rögzített képen.

figyelembe kell vennünk mind a belső paramétereket, például a gyújtótávolságot, az optikai központot, mind a lencse radiális torzítási együtthatóit stb., és a külső paraméterek, mint a forgatás és fordítása a kamera tekintetében néhány valós koordináta-rendszer.

kötelező könyvtárak:

  • az OpenCV könyvtár a Pythonban egy számítógépes látáskönyvtár, amelyet leginkább képfeldolgozásra, videófeldolgozásra és elemzésre, arcfelismerésre és felismerésre használnak.
  • a Numpy egy általános célú tömbfeldolgozó csomag. Nagy teljesítményű többdimenziós tömbobjektumot és eszközöket biztosít ezeknek a tömböknek a kezeléséhez.

a kamera kalibrálása lépésről lépésre elvégezhető:

  • 1. lépés: először határozza meg a 3D pontok valós koordinátáit a kockás minta ismert méretével.
  • 2. lépés: Az ellenőrző tábla képének különböző nézőpontjai rögzítésre kerülnek.
  • 3.lépés: a findChessboardCorners() egy olyan módszer az OpenCV-ben, amelyet pixelkoordináták (u, v) keresésére használnak minden egyes 3D-s ponthoz különböző képeken
  • 4. lépés: Ezután a calibrateCamera() módszert használják a kamera paramétereinek megkeresésére.

ez lesz a számított (threedpoints, twodpoints, grayColor.alakzat, Nincs, Nincs) paraméterként és visszatérési listaként, amelynek elemei a kamera mátrixa, torzítási együtthatója, forgási vektorai és fordítási vektorai.

kamera mátrix segít átalakítani 3D objektumok pont 2D kép pont és a torzítási együttható visszaadja a helyzetét a kamera a világon, az értékek a forgatás és a fordítás Vektorok

az alábbiakban a teljes program a fenti megközelítés:

Piton3

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)



Bemenet:

Kimenet:

 Camera matrix: ] Distortion coefficient: ] Rotation Vectors: , , ]), array(, , ]), array(, , ])] Translation Vectors: , , ]), array(, , ]), array(, , ])]
Cikk-Címkék:

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.