pré-requisitos: OpenCV

uma câmera é parte integrante de vários domínios como robótica, exploração espacial, etc a câmera está desempenhando um papel importante. Ele ajuda a capturar cada momento e útil para muitas análises. Para usar a câmera como um sensor visual, devemos conhecer os parâmetros da câmera. A calibração da câmera nada mais é do que estimar os parâmetros de uma câmera, os parâmetros sobre a câmera são necessários para determinar uma relação precisa entre um ponto 3D no mundo real e sua projeção 2D (pixel) correspondente na imagem capturada por essa câmera calibrada.

precisamos considerar ambos os parâmetros internos, como distância focal, centro óptico e coeficientes de distorção radial da lente, etc., e parâmetros externos como rotação e tradução da câmera em relação a algum sistema de coordenadas do mundo real.

bibliotecas necessárias:

  • a biblioteca OpenCV em python é uma biblioteca de visão computacional, usada principalmente para processamento de Imagens, Processamento de vídeo e análise, reconhecimento e detecção facial, etc. Numpy é um pacote de processamento de array de uso geral. Ele fornece um objeto de matriz multidimensional de alto desempenho e ferramentas para trabalhar com esses arrays.

a calibração da câmera pode ser feita em uma abordagem passo a passo:

  • Passo 1: primeiro defina coordenadas do mundo real de pontos 3D usando o tamanho conhecido do padrão quadriculado.
  • Passo 2: Diferentes pontos de vista da imagem do tabuleiro de verificação são capturados.
  • Passo 3: findChessboardCorners() é um método no OpenCV e usado para localizar coordenadas de pixel (u, v) para cada ponto 3D em diferentes imagens
  • Passo 4: em Seguida, calibrateCamera() o método é usado para encontrar os parâmetros da câmara.

será necessário nosso calculado (threedpoints, twodpoints, grayColor.shape, None, None) como parâmetros e retorna list tendo elementos como matriz de Câmera, coeficiente de distorção, vetores de rotação e vetores de Tradução.

a matriz da câmera ajuda a transformar pontos de objetos 3D em pontos de imagem 2D e o coeficiente de distorção retorna a posição da câmera no mundo, com os valores de rotação e vetores de Tradução

abaixo está o programa completo da abordagem acima:

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)



Entrada:

Saída:

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

Deixe uma resposta

O seu endereço de email não será publicado.