edellytykset: OpenCV

kamera on olennainen osa useita osa-alueita, kuten robotiikka, avaruustutkimus, jne. Se auttaa ikuistamaan jokaisen hetken ja auttaa moniin analyyseihin. Jotta kameraa voisi käyttää visuaalisena sensorina, pitäisi tietää kameran parametrit. Kameran kalibrointi ei ole mitään muuta kuin kameran parametrien arvioimista, kameraa koskevia parametreja tarvitaan määrittämään tarkka suhde reaalimaailman 3D-pisteen ja sen vastaavan 2D-projektion (pikselin) välillä kyseisen kalibroidun kameran ottamassa kuvassa.

meidän on otettava huomioon sekä sisäiset parametrit, kuten polttoväli, optinen keskus ja linssin säteittäiset vääristymäkertoimet jne., ja ulkoiset parametrit, kuten kierto ja käännös kameran suhteessa johonkin reaalimaailman koordinaattijärjestelmään.

tarvittavat kirjastot:

  • python-kielessä OpenCV-kirjasto on tietokonenäkökirjasto, jota käytetään lähinnä kuvankäsittelyyn, videokäsittelyyn ja analysointiin, kasvojentunnistukseen ja tunnistamiseen jne.
  • Numpy on yleiskäyttöinen array-prosessointipaketti. Se tarjoaa korkean suorituskyvyn moniulotteinen array objekti ja työkaluja työskennellä näiden ryhmien.

kameran kalibrointi voidaan tehdä vaiheittain:

  • Vaihe 1: määritä ensin reaalimaailman koordinaatit 3D-pistettä käyttäen tunnettua kokoa ruutukuvio.
  • Vaihe 2: Eri näkökulmia check-board Kuva on ikuistettu.
  • Vaihe 3: findChessboardCorners() on OpenCV: ssä käytetty menetelmä, jolla etsitään pikselikoordinaatteja (u, v) jokaiselle 3D-pisteelle eri kuvissa
  • Vaihe 4: sitten calibrateCamera () – menetelmää käytetään kameran parametrien etsimiseen.

se vie meidän lasketut (kolmipisteet, kaksipisteet, grayColor.shape, None, None) parametreina ja palautusluettelona, jossa on elementtejä kuten kameran matriisi, Särökerroin, Pyörimisvektorit ja Käännösvektorit.

Kameramatriisi auttaa muuttamaan 3D-kohteiden pisteet 2D-kuvapisteiksi ja Vääristymäkerroin palauttaa kameran sijainnin maailmassa, kierto-ja Käännösvektorien arvot

alla on yllä olevan lähestymistavan täydellinen ohjelma:

Python 3color

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)



Syöte:

Tuloste:

 Camera matrix: ] Distortion coefficient: ] Rotation Vectors: , , ]), array(, , ]), array(, , ])] Translation Vectors: , , ]), array(, , ]), array(, , ])]
Artiklan Tagit:

Vastaa

Sähköpostiosoitettasi ei julkaista.