Full text
LABORATÓRIO DE ÓPTICA E MECÂNICA EXPERIMENTAL Relatório Interno Toolbox de Calibração de Câmaras para Matlab Maria Cândida F. S. P. Coelho João Manuel R. S. Tavares Outubro de 2003
Resumo O presente relatório tem como principal objectivo descrever, resumidamente, as várias potencialidades da Toolbox de Calibração de Câmaras para Matlab, facilitando a sua utilização. Assim, descreve-se o método de calibração utilizado, os parâmetros de calibração a estimar e as várias funções implementadas na Toolbox, bem como os seus parâmetros de entrada e de saída. O relatório está dividido em três secções: na primeira, é feita uma pequena introdução à Toolbox de calibração e ao método por esta utilizado; na segunda, são apresentados os parâmetros de calibração a estimar e a classe na qual o método se insere; e na terceira e última secção, são descritas as várias funções implementadas na Toolbox que permitem a calibração de uma ou mais câmaras.
Abstract The main goal of the present report is to briefly describe the several potentialities of the Camera Calibration Toolbox for Matlab, helping its use. Thus, the report describes the calibration method used; the calibration parameters to be estimated and the several functions implemented in the Toolbox, as well as its input and output parameters. The report is divided in three sections: in the first one, is presented a small introduction to the Toolbox and to the calibration method used; in the second, are presented the calibration parameters to be estimated and the class in which the method fits; and in the third and last section, are described the several functions implemented in the Toolbox that allow the calibration of one or more cameras.
Índice 1 - Introdução ................................................................................... 1 2 - Classificação do Método.............................................................. 1 3 - Software de Calibração de Câmaras para Matlab ...................... 3 3.1 - Sistema com uma única câmara .................................................................................3 3.1.1 - Leitura de Imagens de Calibração.............................................................................................3 3.1.2 - Extracção dos Vértices dos Quadrados da Grelha de Calibração.....................................5 3.1.3 - Calibração de uma câmara...........................................................................................................7 3.1.4 – Correcção de imagens distorcidas............................................................................................9 3.2 - Sistema Stereo ..............................................................................................................9 3.2.1 - Leitura dos ficheiros (individuais) de calibração das duas câmaras e calibração stereo (inicial) dos parâmetros extrínsecos......................................................................... 10 3.2.2 - Calibração stereo (optimização) ..............................................................................................11 3.2.3 – Rectificação stereo ................................................................................................................... 12 4 - Referências ............................................................................... 13 Anexo: Fórmula da Rotação de Rodrigues ...................................... 15
Toolbox de Calibração de Câmaras para Matlab 1 - Introdução A Toolbox de Calibração de Câmaras para Matlab, disponibilizada na página da Web em http://www.vision.caltech.edu/bouguetj/calib_doc/, permite ler imagens de calibração, extrair os pontos de calibração (vértices dos quadrados presentes na imagem), calibrar a câmara, apresentar os resultados, controlar precisões, adicionar e suprimir imagens, corrigir imagens distorcidas, alterar o modelo intrínseco da câmara escolhendo quais os parâmetros a optimizar, calibrar um sistema stereo, rectificar imagens stereo e determinar os pontos 3D utilizando o principio da Triangulação stereo. Para além disso, permite adaptar os dados utilizados pelos métodos de calibração propostos por Zhang [Zhang, 2000], Heikkilä [Heikkilä, 1997] e Bakstein [Bakstein, 1999] de forma a serem utilizados pelo método de calibração implementado nesta Toolbox. O método de calibração implementado na Toolbox de Calibração de Câmaras para Matlab baseiase no proposto por Heikkilä [Heikkilä, 1997]. O método é indicado como extremamente preciso [Herbst, 2003] e utiliza um procedimento de “quatro-passos” para calibrar uma dada câmara. O método proposto consiste: primeiro, na determinação de uma solução analítica (“closed-form solution”) que permita obter uma aproximação inicial dos parâmetros intrínsecos/extrínsecos da câmara, utilizando um modelo Pin Hole e pontos de calibração não coplanares; segundo, na estimação não-linear dos parâmetros através do método dos Mínimos Quadrados para minimização dos resíduos entre o modelo e as N observações (erro de re-projecção), que inclui distorção radial e tangencial da lente; terceiro, na correcção e posterior extracção de pontos de calibração na imagem devido à distorção do padrão de calibração (que contém os pontos de calibração, por exemplo: vértices de quadrados, centros de circunferências, etc.) causada pela projecção perspectiva; e quarto, na correcção das coordenadas imagem distorcidas a partir de um modelo inverso empírico que compensa as distorções radial e tangencial da lente. 2 - Classificação do Método Este método de calibração está inserido nas técnicas de múltiplos-passos, neste caso quatro, e utiliza: no primeiro passo, aproximação linear para determinação de uma solução analítica dos parâmetros da câmara (sem distorção da lente); no segundo passo, estimação da distorção radial e tangencial da lente e dos restantes parâmetros a partir de uma optimização não-linear utilizando o método dos Mínimos Quadrados; no terceiro passo, correcção e posterior extracção dos pontos de calibração na imagem; e finalmente no quarto e último passo, correcção das coordenadas imagem distorcidas (Fig. 1). Laboratório de Óptica e Mecânica Experimental 1
Toolbox de Calibração de Câmaras para Matlab Início Aproximação linear (modelo Pin Hole) - Determinação dos parâmetros: intrínsecos - centro da imagem na memória frame, (Cx, Cy), desfasamento entre os eixos da imagem, γ, factores de escala segundo os eixo i e j da imagem, α e β ; extrínsecos - matriz de rotação 3D, R, e vector de translação 3D, T. Aproximação não-linear (Método dos Mínimos Quadrados) - Determinação dos parâmetros intrínsecos e extrínsecos da câmara, incluindo a distorção radial e tangencial da lente. Correcção da distorção causada pela projecção perspectiva do p adrão de calibra ç ão. Correcção das coordenadas imagem distorcidas a partir de um modelo inverso em p írico. Fi m Figura 1 - Esquema do método de calibração implementado na Toolbox de Calibração de Câmaras para Matlab. O modelo da câmara, utilizado pelo método de calibração implementado na Toolbox de Calibração de Câmaras para Matlab, tem os seguintes parâmetros a estimar: • Parâmetros extrínsecos: utilizados para transformar as coordenadas 3D no sistema mundo em coordenadas 3D no sistema câmara, para cada posição e/ou orientação da câmara/plano de calibração. Assim, existem seis parâmetros extrínsecos: a matriz de rotação 3D Rc ( 33 ) × e as três componentes do vector de translação Tc ( ) 13 × . A matriz de rotação 3D pode ser representada pelo vector de rotação 3D omc ( ) 13 × , ambos relacionados pela fórmula de Rodrigues (ver Anexo). • Parâmetros intrínsecos: utilizados para a transformação das coordenadas 3D no sistema câmara em coordenadas 2D no sistema da memória frame. Existem cinco parâmetros intrínsecos no modelo: - Distância Focal: representa a distância, em pixels, entre o centro de projecção e o plano imagem (segundo os seus dois eixos, i e j) e é guardada no vector fc (fc(1) = fc ( 12× ) x e fc(2) = fcy). A distância focal efectiva (f) pode ser obtida a partir de: xxx dsffc ⋅≅ ou yy dffc ≅, onde e são as distâncias entre centros dos elementos sensores vizinhos x dy d Laboratório de Óptica e Mecânica Experimental 2
Toolbox de Calibração de Câmaras para Matlab segundo as direcções X e Y, e é um factor de incerteza horizontal devido a erros de sincronização; x s - Centro Óptico da Imagem: representa as coordenadas, em pixels, do centro óptico da imagem na memória frame e são guardadas no vector cc ( ) 12 × (cc(1) = ccx e cc(2) = ccy); - Coeficiente de Desfasamento: representa o ângulo entre os eixos x e y da imagem na memória frame e é guardado na variável alpha_c; - Distorções: representa os coeficientes de distorção da imagem (radial e tangencial) e são guardadas no vector ( kc (kc(1), kc(3) e kc(5) são os coeficientes da distorção radial de 2ª, 4ª e 6ª ordem, respectivamente, e kc(2) e kc(4) são os coeficientes da distorção tangencial de 1ª e 2ª ordem, respectivamente). ) 15× 3 - Software de Calibração de Câmaras para Matlab A presente Toolbox de calibração de câmaras corre nas versões de Matlab 5.x e 6.x (até à versão Matlab 6.5) e foi desenvolvida para os sistemas operativos Microsoft Windows, Unix e Linux. No entanto, a Toolbox deverá correr em todas as plataformas que suportem Matlab 5.x e 6.x. A implementação em C desta Toolbox está também disponível no OPENCV distribuído pela Intel [Intel, 2001]. Nas secções seguintes são apresentados os parâmetros de entrada e de saída de cada uma das funcionalidades desta Toolbox. 3.1 - Sistema com uma única câmara Nesta secção são apresentadas as várias funções da Toolbox de Calibração de Câmaras para Matlab que permitem uma calibração completa de uma câmara utilizando, como plano de calibração, um padrão constituído por quadrados. Assim, nesta fase são apresentadas as funções que permitem: ler imagens de calibração, extrair os vértices dos quadrados da imagem os quais vão ser os pontos de calibração, calibrar a câmara, alterar o modelo intrínseco da câmara escolhendo quais os parâmetros a optimizar, apresentar os resultados, controlar precisões e corrigir imagens distorcidas. 3.1.1 - Leitura de Imagens de Calibração Nesta subsecção é apresentada a função da Toolbox de calibração de câmaras para Matlab que permite ler imagens de calibração. Laboratório de Óptica e Mecânica Experimental 3
Toolbox de Calibração de Câmaras para Matlab 3.1.1.1 - Parâmetros de entrada: • ImageName1, Extension; ImageName2, Extension < ... > - nome das imagens de calibração e respectivo formato (podem ter os seguintes formatos: ras, bmp, tif, pmg, jpg e ppm) (Fig. 2). Figura 2 - Exemplo de imagens de calibração lidas pela Toolbox de Calibração de Câmaras para Matlab. 3.1.1.2 - Parâmetros de saída: • Complete Set of Images - é exibido um conjunto completo das imagens lidas pela Toolbox em formato de mosaico (thumbnail) (Fig. 3). Figura 3 - Exemplo de um conjunto de imagens de calibração lidas pela Toolbox de Calibração de Câmaras para Matlab e exibidas em forma de mosaico. Laboratório de Óptica e Mecânica Experimental 4
Toolbox de Calibração de Câmaras para Matlab 3.1.2 - Extracção dos Vértices dos Quadrados da Grelha de Calibração Nesta subsecção são descritos os parâmetros de entrada e saída e todo o procedimento necessário para extrair os pontos referentes aos vértices dos quadrados de uma grelha de calibração. 3.1.2.1 - Parâmetros de entrada (Fig. 4): Etapa I. Fornecer ao programa o número de imagens de calibração a processar, o tamanho da janela de busca dos vértices dos quadrados e o número de quadrados nas imagens de calibração. • Number of Images to Process - número de imagens a processar para extracção dos pontos de calibração. Se o parâmetro de entrada for nulo “[]” todas as imagens lidas são processadas, caso contrário, é necessário uma listas do subconjunto de índices das imagens às quais se pretende extrair os vértices (ex.: [2 5 8 10 12]); • Wintx e Winty - tamanho por defeito da janela de busca dos vértices nas direcções X e Y, respectivamente. Se os parâmetros de entrada forem nulos “[]” para Wintx e Winty, o valor considerado para ambos é 5, que corresponde a um tamanho efectivo da janela de 11×11 pixels; • Number of Squares - permite utilizar o mecanismo automático de contagem dos quadrados presentes nas imagens de calibração (parâmetro de entrada nulo, “[]”) ou inserir manualmente esse número. Figura 4 - Parâmetros de entrada para extracção dos vértices dos quadrados presentes numa imagem de calibração. Etapa II. Escolha dos limites da grelha de calibração na qual se vão extrair os vértices dos quadrados do padrão rectangular. • Após fornecer os parâmetros de entrada referidos na Etapa I, é mostrada a primeira imagem de calibração, na qual se escolhem quatro vértices extremos do padrão rectangular seguindo o seguinte procedimento: primeiro, pressiona-se, sobre a imagem, o local do primeiro vértice que corresponde ao ponto de origem da janela de referência associada à grelha; e em seguida, Laboratório de Óptica e Mecânica Experimental 5
Toolbox de Calibração de Câmaras para Matlab Figura 10 - Exemplo dos parâmetros de entrada e saída da implementação para calibração (optimizada) de um sistema stereo, integrada na Toolbox de Calibração de Câmaras para Matlab. 3.2.3 – Rectificação stereo A função de rectificação de imagens permite rectificar pares de imagens utilizadas na calibração stereo, ou seja, conhecendo os parâmetros de transformação perspectiva de cada uma das câmaras é possível alinhar as duas imagens de modo a que as linhas epipolares homólogas associadas sejam linhas horizontais alinhadas [Silva, 1994]. 3.2.3.1 - Parâmetros de entrada: • I_left01, I_Right01; I_left02, I_Right01; < ... > - par de imagens utilizadas para a calibração stereo das duas câmaras. 3.2.3.2 - Parâmetros de saída: • I_Rectified_left01, I_Rectified_Right01; I_Rectified_left02, I_Rectified_Right01; < ... > - par de imagens de calibração stereo rectificadas. 3.2.4 – Triangulação stereo A Toolbox de calibração inclui também uma função que determina as coordenadas 3D de um conjunto de pontos dadas as suas projecções na imagem esquerda/direita e os parâmetros de calibração stereo obtidos . Este processo é conhecido como Triangulação stereo [Slabaugh, 2001]. Laboratório de Óptica e Mecânica Experimental 12
Toolbox de Calibração de Câmaras para Matlab 3.2.4.1 - Parâmetros de entrada: • x_left_1 e x_right_1 - projecções de um conjunto de pontos nas imagens direita e esquerda; • om e T - parâmetros extrínsecos estimados a partir da calibração stereo: om é o vector de rotação 3D e T é o vector de translação 3D, que descrevem a posição da câmara direita relativamente à câmara esquerda; • fc_left, cc_left, kc_left, alpha_c_left, fc_right, cc_right, kc_right, alpha_c_right - parâmetros intrínsecos da câmara esquerda e direita, estimados pela calibração stereo. Estes parâmetros são equivalentes ao parâmetros fc, cc, alpha_c e kc definidos na secção 2. 3.2.4.2 - Parâmetros de saída: • Xc_1_left e Xc_1_right - são as coordenadas 3D dos pontos no referencial da câmara esquerda e direita, respectivamente. Observe-se que os parâmetros Xc_1_left e Xc_1_right estão relacionados pela equação de corpo rígido: Xc_1_right = R × Xc_1_left + T, onde R é a matriz de rotação 3D (que resulta do vector de rotação 3D, om) e T é vector de translação 3D, estimados a partir da calibração stereo. 4 - Referências [Bakstein, 1999] - H. Bakstein, Diploma Thesis: A Complete DLT-based Camera Calibration with a Virtual 3D Calibration Object. Faculty of Mathematics and Physics, Charles University, Prague, 1999. [Belongie, 2001] - Serge Belongie, Rodrigues’ Rotation Formula, 2001. http://mathworld.wolfram.com/RodriguesRotationFormula.html. [Heikkilä, 1997] - J. Heikkilä, O. Silvén, A Four-step Camera Calibration Procedure with Implicit Image Correction. IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR’97), San Juan, Puerto Rico, pp. 1106-1112, 1997 [Heikkilä, 2000] - J. Heikkilä, Camera Calibration Toolbox for Matlab, 2000. http://www.ee.oulu.fi/~jth/calibr/. [Herbst, 2003] - E. Herbst, Camera Calibration by Corners Detection, 2003. http://www.tjhsst.edu/~eherbst/techlab/. [Intel, 2001] - OPENCV: Intel Open Computer Vision Library, 2001. http://sourceforge.net/projects/opencvlibrary. Laboratório de Óptica e Mecânica Experimental 13
Toolbox de Calibração de Câmaras para Matlab [Silva, 1994] - Jorge Alves da Silva, Tese de Doutoramento: Aquisição e Processamento de informação tridimensional, Faculdade de Engenharia da Universidade do Porto, Porto, 1994. [Slabaugh, 2001] - Greg Slabaugh, Ron Schafer, Mark Livingston, Optimal Ray Intersection For Computing 3D Points From N-View Correspondences, October, 2001. [Zhang, 2000] - Z. Zhang, A Flexible New Technique for Camera Calibration. IEEE Transactions on Pattern Analysis and Machine Intelligence, 22(11):1330-1334, 2000. A Toolbox de Calibração de Câmaras para Matlab e as experiências realizadas estão disponíveis na seguinte página da Web: http://www.vision.caltech.edu/bouguetj/calib_doc/. Laboratório de Óptica e Mecânica Experimental 14
Toolbox de Calibração de Câmaras para Matlab Anexo: Fórmula da Rotação de Rodrigues Seja ( ) 3 ℜ∈= zyx ωωω ,,omc um eixo rotacional, ( ) omcJ a matriz anti-simétrica associada a , isto é: omc () ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ − − − = 0 0 0 xy xz yz J ωω ωω ωω omc . A fórmula de Rodrigues permite calcular a matriz de rotação R da seguinte forma [Belongie, 2001]: () () ()( ) () () () () () () () () () ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ −+−+−+− −+−−+−+ −+−−−+ = −++= = θωθθωωθωθωωθω θωωθωθωθθωωθω θωωθωθωθωωθωθ θθ θ cos1coscos1sincos1sin cos1sincos1coscos1sin cos1sinsincos1cos1cos cos1sin 2 2 2 2 zzyxzxy zyxyyxz zxyzyxx J JJI e omcomc Romc , com omc θ =. Laboratório de Óptica e Mecânica Experimental 15