Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouCaíque Camejo Alterado mais de 10 anos atrás
1
Calibração de Câmera Como determinar o modelo e os parâmetros que transformam a radiância da cena numa imagem digital
2
Calibração de câmera Problema: obter os parâmetros extrínsecos (R, T) e intrínsecos (K) da transformação projetiva de câmera. Dados: n pares de pontos correspondentes (P i, p i ) na cena e na imagem.
3
Calibração de câmeras Calibração estimação de parâmetros otimização pontos da cena pontos da imagem projeção (função não linear)
4
Modelo de câmera pinhole dA p dA c irradiação sobre o pixel radiância dos pontos visíveis na direção da câmera Câmeras e olhos humanos são sensíveis a radiância
5
Câmera segue um modelo simples plano de projeção centro de projeção Projeção cônica caixa filme objeto pinhole raios de luz imagem Câmera pinhole
6
Câmeras reais sceneimage planelens Image Irradiance:Scene Radiance:
7
Câmeras com lentes O c p dA c α dA p (área correspondente a dA c )
8
Radiancia emitida por c na direção de p O c p α d dA c dA p
9
Ângulo sólido O c α d r dA c
10
Relação entre as áreas O c p α o i dA c dA p
11
Irradiação sobre o sensor O P p α d quando foco no dA c dA p
12
Irradiação (irradiância) no sensor da câmera é proporcional a: radiância do objeto da cena; área da lente; variação do cos 4
13
Trabalho de Gariel e Manuel, 2003: Variação cos 4 Descrição: Este experimento consistiu em verificar a equação fundamental da radiometria sobre a formação da imagem. Para comprovar esta variação proporcional a cos 4 utilizou-se uma tela de projeção comum de laminado de PVC e um projetor iluminando esta tela com uma única cor uniforme. A tela funcionou como uma superfície lambertiana, irradiando uniformemente em todas as direções.
14
Equipamento utilizado Creative WebCam Pro 640x480 (VGA) color CMOS Sensor USB 1.1 Interface
15
= arc tg (0,9/2,0) = 24 o cos 4 = 0,7 1,8m 2,0m Calculou-se, segundo as proporções de captura sobre as quais foram geradas as imagens da tela, o ângulo. Foi possível verificar que a iluminação nos pontos da tela decresce proporcionalmente a cos 4.
16
R=75 G=95 B=165 R=55 G=70 B=110 R=53 G=67 B=115 0,7 P1P1 P 1 0,7 P2P2 P 1 – pixel no centro da tela P 2 – pixel no canto da tela, na horizontal de P 1
17
Sem correção
18
Com correção radiométrica
19
Sem correção
20
Com correção radiométrica
21
Sem correção
22
Com correção radiométrica
23
Sem correção
24
Com correção radiométrica
25
Distorção radial
26
Origem da distorção radial
27
Tipos de distorção radial
28
Exemplo de distorção radial Imagem original Corrigida k 1 =0.11, k 2 =0.019
29
Sem correção Gabriel Malizia, 2003
30
(24, 15) (16, 238) (24, 457) (285,210) (O x, O y ) = (285,210), em pixel da imagem (611, 13) (620, 237) (610, 457) (319, 471) (319, 4)
31
(-261, 195) (-269, -28) (-261, -247) (0,0) (34, 208)(326, 197) (335, -27) (325, -247) (34, -261) Nova distribuição das coordenadas xdxd ydyd
32
Um processo simples para estimar k 1 e k 2
33
Considerando k 2 0 k 1 =5*10 -5 k 1 =4*10 -5 Valores médios de k 1 nos pontos extremos da imagem capturada
34
Sem correção
35
k 1 =4,510 -5 Com correção
36
k 1 =2,310 -5 Com correção
38
Sem correção
39
Com correção radiométrica e radial
41
Sem correção
42
Com correção radiométrica e radial
43
Velocidade 1/60 or 1/100 segundo ok
44
Abertura Escala normal f/1.4, f/2, f/2.8, f/4, f/5.6, f/8, f/11, f/16, f/22 abertura nitidez diâmetro efetivo campo de visão
45
Sensores
46
Foveon
47
Sensor Fujifilm
48
Outros modelos de camera
49
Variabilidade das medidas de uma camera Capture n (~100) imagens de uma mesma cena com uma câmera digital parada. Calcule, para cada pixel a média e o desvio padrão por:
50
Imagem 1
51
Imagem Média
52
Aqui a gente mostra o error de variação de cor por pixel, o qual va de 2.5 a 6 niveis.
53
Um zoom da imagen anterior
54
Desvio Padrão Médio Normalizado Desvio Padrão Médio Máximo: R=10.1 G=10.6 B=9.9 Média do Desvio Padrão Médio: R=2.29 G=2.26 B=2.50
55
Desvio Padrão Médio Normalizado - Red
56
Desvio Padrão Médio Normalizado - Green
57
Desvio Padrão Médio Normalizado - Blue
58
Imagem Original
59
Imagem tons de cinza
60
Média
61
Ruído Normalizado - desvio padrão máximo = 6.72 - desvio padrão médio = 1.61
62
Ruído Normalizado - desvio padrão máximo = 6.72 - desvio padrão médio = 1.61
63
Compressão do jpeg
64
Aplicações são tecnologicamente complexas: exemplo: algoritmo do JPEG FDCT Source Image Quantizer Entropy Encoder Table Compressed image data DCT-based encoding 8x8 blocks R B G
68
Equations for JPEG DCT Forward DCT: Inverse DCT:
69
Visualization of Basis Functions Increasing frequency
70
Notação xcxc ycyc zczc p y' x' sinal ! OpenGLVisão
71
Z X Y u v
72
(X,Y,Z) T (x,y) T (x im,y im ) T y im npnp x im ycyc vista lateral ococ zczc npnp fovy oyoy x im y im h pixels oxox ococ eixo óptico x0x0 y0y0 ycyc xcxc zczc y' x' w pixels x' y'
73
(x im,y im ) T (x,y) T x im y im x y 0 1 34 1 2 0 3 2 sxsx sysy p' o oyoy oxox 5
74
(X,Y,Z) T (x im,y im ) T
75
Parâmetros intrínsecos com cisalhamento
76
Parâmetros intrínsecos com distorção radial
77
Parâmetros extrínsecos Translação –T x, T y, T z (3 g.l.) Rotação (3 g.l.)
78
Parâmetros extrínsecos xcxc ycyc zczc ywyw xwxw zwzw PwPw PcPc T
79
Compondo as transformações parâmetros extrínsecos parâmetros intrínsecos
80
Calibração de câmera Problema: obter os parâmetros extrínsecos (R, T) e intrínsecos (K) da transformação projetiva de câmera. Dados: n pares de pontos correspondentes (P i, p i ) na cena e na imagem.
81
Calibração de câmeras Calibração estimação de parâmetros otimização pontos da cena pontos da imagem projeção (função não linear)
82
Método de Tsai (compativel com notação do OpenGL) X c Y c Z c p y' x'
83
Câmera para imagem
84
Concatenando
85
Os passos do Método de Tsai Passo 1: conhecidos Distorção radial insignificante Assuma:
86
Método de Tsai
87
Passo 1:
88
Método de Tsai Passo 1:
89
Correspondência
90
Sistema Ax=0 Compute v by SVD decomposition of A=UDV T (The solution vector is the column of V corresponding to null (or smallest) singular value) in D.
91
Estimativa dos parâmetros da câmera Fator de escala
92
Sinal do fator de escala Sinal de Como: Temos Caso isto não seja verdade troque o sinal de v
93
Estimativa do fator
94
Última linha da matriz de rotação Reortogonalize:
95
Cáculo de f x f y e T z
97
Ponto de fuga
98
Cálculo do centro ótico pelos pontos de fuga
99
Passo 2 do Tsai Computing Image Center v1v1v1v1 v2v2v2v2 v3v3v3v3
100
Pontos de fuga do padrão 3D
101
Fim da parte 1
102
Tsai 2D
103
Coordenada do mundo para a câmera xcxc ycyc zczc ywyw xwxw zwzw PwPw PcPc T
104
Câmera para imagem
105
Concatenando
106
Método de Tsai plano Passo 1: =0
107
Método de Tsai plano
108
Método de Tsai Passo 1:
109
Método de Tsai
110
Sinal de Logo Caso isto não seja verdade troque o sinal de escolha um sinal
111
Fator de escala escolha um sinal corrija a escolha
112
Cáculo de f x f y e T z
113
Implementation of A Flexible New Technique for Camera Calibration based on the report of: Zhengyou Zhang December 2, 1998
114
Notação do artigo de Zhang: X Y x y
115
Determinação de uma Homografia
116
X Y x y 2 equações por ponto. 9 (8) incógnitas
117
int homography(int nPoints, double* modelPoints, double* imagePoints, double* H) { int k; double* L=(double*)malloc(2*nPoints*9*sizeof(double)); /* L is a 2nx9 matrix where Lij is in L[9*i+j] */ /* Assembles coeficiente matrix L */ for(k=0; k<nPoints; k++) { double X=modelPoints[3*k+0]; /* X coord of model point k */ double Y=modelPoints[3*k+1]; /* Y coord of model point k */ double W=modelPoints[3*k+2]; /* W coord of model point k */ double x=imagePoints[2*k+0]; /* x coord of image point k */ double y=imagePoints[2*k+1]; /* y coord of image point k */ int i=2*k; /* line number in matrix L */ L[9*i+0] = X; L[9*i+1] = Y; L[9*i+2] = W; L[9*i+3] = 0; L[9*i+4] = 0; L[9*i+5] = 0; L[9*i+6] = -x*X; L[9*i+7] = -x*Y; L[9*i+8] = -x*W; i=2*k+1; L[9*i+0] = 0; L[9*i+1] = 0; L[9*i+2] = 0; L[9*i+3] = X; L[9*i+4] = Y; L[9*i+5] = W; L[9*i+6] = -y*X; L[9*i+7] = -y*Y; L[9*i+8] = -y*W; } solveAx0(2*nPoints,9,L,H); /* solves the system [L]{h}={0} */ free(L); return 0; }
118
Minimização (Levenberg-Marquardt) onde: Tome H como solução inicial Minimize:
119
int homography(int nPoints, double* modelPoints, double* imagePoints, double* H) { int k; double* L=(double*)malloc(2*nPoints*9*sizeof(double)); /* L is a 2nx9 matrix where Lij is in L[9*i+j] */ /* Assembles coeficiente matrix L */ for(k=0; k<nPoints; k++) { double X=modelPoints[3*k+0]; /* X coord of model point k */ double Y=modelPoints[3*k+1]; /* Y coord of model point k */ double W=modelPoints[3*k+2]; /* W coord of model point k */ double x=imagePoints[2*k+0]; /* x coord of image point k */ double y=imagePoints[2*k+1]; /* y coord of image point k */ int i=2*k; /* line number in matrix L */ L[9*i+0] = X; L[9*i+1] = Y; L[9*i+2] = W; L[9*i+3] = 0; L[9*i+4] = 0; L[9*i+5] = 0; L[9*i+6] = -x*X; L[9*i+7] = -x*Y; L[9*i+8] = -x*W; i=2*k+1; L[9*i+0] = 0; L[9*i+1] = 0; L[9*i+2] = 0; L[9*i+3] = X; L[9*i+4] = Y; L[9*i+5] = W; L[9*i+6] = -y*X; L[9*i+7] = -y*Y; L[9*i+8] = -y*W; } solveAx0(2*nPoints,9,L,H); /* solves the system [L]{h}={0} */ if (OPTIMIZE) { double lmH[9]; lmHomography(imagePoints,modelPoints,H,nPoints,lmH); mtxMatCopy(lmH,3,3,H); } free(L); return 0; }
120
Restrições na matriz de parâmetros intrínsicos
121
Das homografias para parâmetros intrínsecos onde: e 2 equações por homografia. 6 incógnitas
122
void calcB(int nH, double* H, double* B) { int m = 2*nH; int n = 6; double* V =(double*) calloc(sizeof(double),m*n); double* b =(double*) malloc(sizeof(double)*n); int i; for(i=0;i<nH;i++){ double* h = &H[9*i]; int line1 = 2*n*i; int line2 = line1+6; V[line1+0]=h[0]*h[1]; V[line1+1]=h[0]*h[4] + h[3]*h[1]; V[line1+2]=h[3]*h[4]; V[line1+3]=h[0]*h[7]+h[6]*h[1]; V[line1+4]=h[3]*h[7]+h[6]*h[4]; V[line1+5]=h[6]*h[7]; V[line2+0]=h[0]*h[0] - h[1]*h[1]; V[line2+1]=2*(h[0]*h[3] - h[1]*h[4]); V[line2+2]=h[3]*h[3] - h[4]*h[4]; V[line2+3]=2*(h[0]*h[6] - h[1]*h[7]); V[line2+4]=2*(h[3]*h[6] - h[4]*h[7]); V[line2+5]=h[6]*h[6] - h[7]*h[7]; if (NORMALIZE) { mtxNormalizeVector(6,&V[line1]); mtxNormalizeVector(6,&V[line2]); } solveAx0(m,n,V,b); /* solves the system [V]{x}={0} */ i=0; B[i++]=b[0]; B[i++]=b[1]; B[i++]=b[3]; B[i++]=b[1]; B[i++]=b[2]; B[i++]=b[4]; B[i++]=b[3]; B[i++]=b[4]; B[i++]=b[5]; free(b); free(V); }
123
Cálculo da matrix A
124
/* Get intrinsic parameters from matrix B*/ int calcA(double* B, double* A) { double alpha,betha,gamma,u0,v0,lambda; double den=B[0]*B[4]-B[1]*B[1]; if (fabs(den)< TOL ) return 0; v0 = (B[1]*B[2]-B[0]*B[5])/den; if (fabs(B[0])<TOL) return 0; lambda = B[8]-(B[2]*B[2]+v0*(B[1]*B[2]-B[0]*B[5]))/B[0]; if (lambda/B[0]<0) return 0; alpha=sqrt(lambda/B[0]); if ((lambda*B[0]/den)<0) return 0; betha = sqrt(lambda*B[0]/den); gamma = - B[1]*alpha*alpha*betha/lambda; u0=gamma*v0/betha-B[2]*alpha*alpha/lambda; A[0]=alpha; A[1]=gamma; A[2]=u0; A[3]=0; A[4]=betha; A[5]=v0; A[6]=0; A[7]=0; A[8]=1; return 1; }
125
Cálculo de R e t
126
Calibração de Zhang para uma câmera boa y im f x im ycyc vista lateral ococ zczc f fovy oyoy x im y im h pixels oxox ococ eixo óptico x0x0 y0y0 ycyc xcxc zczc y' x' w pixels x' y'
127
Notação do artigo de Zhang: X Y x y
128
Determinação de uma Homografia
129
X Y x y 2 equações por ponto. 9 (8) incógnitas
130
int homography(int nPoints, double* modelPoints, double* imagePoints, double* H) { int k; double* L=(double*)malloc(2*nPoints*9*sizeof(double)); /* L is a 2nx9 matrix where Lij is in L[9*i+j] */ /* Assembles coeficiente matrix L */ for(k=0; k<nPoints; k++) { double X=modelPoints[3*k+0]; /* X coord of model point k */ double Y=modelPoints[3*k+1]; /* Y coord of model point k */ double W=modelPoints[3*k+2]; /* W coord of model point k */ double x=imagePoints[2*k+0]; /* x coord of image point k */ double y=imagePoints[2*k+1]; /* y coord of image point k */ int i=2*k; /* line number in matrix L */ L[9*i+0] = X; L[9*i+1] = Y; L[9*i+2] = W; L[9*i+3] = 0; L[9*i+4] = 0; L[9*i+5] = 0; L[9*i+6] = -x*X; L[9*i+7] = -x*Y; L[9*i+8] = -x*W; i=2*k+1; L[9*i+0] = 0; L[9*i+1] = 0; L[9*i+2] = 0; L[9*i+3] = X; L[9*i+4] = Y; L[9*i+5] = W; L[9*i+6] = -y*X; L[9*i+7] = -y*Y; L[9*i+8] = -y*W; } solveAx0(2*nPoints,9,L,H); /* solves the system [L]{h}={0} */ free(L); return 0; }
131
Minimização (Levenberg-Marquardt) onde: Tome H como solução inicial Minimize:
132
int homography(int nPoints, double* modelPoints, double* imagePoints, double* H) { int k; double* L=(double*)malloc(2*nPoints*9*sizeof(double)); /* L is a 2nx9 matrix where Lij is in L[9*i+j] */ /* Assembles coeficiente matrix L */ for(k=0; k<nPoints; k++) { double X=modelPoints[3*k+0]; /* X coord of model point k */ double Y=modelPoints[3*k+1]; /* Y coord of model point k */ double W=modelPoints[3*k+2]; /* W coord of model point k */ double x=imagePoints[2*k+0]; /* x coord of image point k */ double y=imagePoints[2*k+1]; /* y coord of image point k */ int i=2*k; /* line number in matrix L */ L[9*i+0] = X; L[9*i+1] = Y; L[9*i+2] = W; L[9*i+3] = 0; L[9*i+4] = 0; L[9*i+5] = 0; L[9*i+6] = -x*X; L[9*i+7] = -x*Y; L[9*i+8] = -x*W; i=2*k+1; L[9*i+0] = 0; L[9*i+1] = 0; L[9*i+2] = 0; L[9*i+3] = X; L[9*i+4] = Y; L[9*i+5] = W; L[9*i+6] = -y*X; L[9*i+7] = -y*Y; L[9*i+8] = -y*W; } solveAx0(2*nPoints,9,L,H); /* solves the system [L]{h}={0} */ if (OPTIMIZE) { double lmH[9]; lmHomography(imagePoints,modelPoints,H,nPoints,lmH); mtxMatCopy(lmH,3,3,H); } free(L); return 0; }
133
Restrições na matriz de parâmetros intrínsicos
134
Das homografias para parâmetros intrínsecos onde: e
135
Cálculo de R e t
136
Proceedings of SIBGRAPI'98, Rio de Janeiro, Brazil, 1998, pp. 388-399.
137
Equações de projeção
139
Calibração a partir da matriz Para cada ponto:
140
Calibração a partir da matriz Para cada ponto:
141
Calibração a partir da matriz
144
Calibração no Juiz Virtual k = 1..n-1 1 a Opção
145
Calibração no Juiz Virtual
146
2 a Opção Mimimiza-se, onde é o resultado obtido pelatransformação encontrada. Problema não linear
147
Onde é o centróide dos pontos próprios P k. Calibração no Juiz Virtual k=1..n Para eliminar a solução trivial H = 0,
148
Calibração no Juiz Virtual A solução desse problema se dá por resolver Minimizar || Mt || sujeito a m T t = 1, onde e M é a representação matricial da transformação, dada por: É usado o método de multiplicadores de Lagrange, conduzindo ao seguinte sistema linear: (2n x 9)
149
Relação entre as matrizes do OpenGL e de um sistema de visão Matrizes de posicionamento Matrizes de projeção
150
Matrizes de posicionamento xexe yeye zeze center eye zozo yoyo xoxo up x y z Y Z X t
151
Matrizes de posicionamento at eye z o = Z y o = Y x o = X up x e = x y e = y zeze z
152
Relação entre as matrizes instrísicas K e P ogl u z x y v void getPoglFromK(float k[9], float P[16]);
153
Mudando de XYZ para x e y e z e u z ye= yye= y v x e = x ze= - zze= - z
154
Sistemas de coordenadas do OpenGL v u yeye vista lateral eye zeze f =n p fovy oyoy u v h s y oxox eye eixo óptico x0x0 y0y0 yeye xexe zeze y' x' w s x x' y' pixel sxsx sysy f =n p fpfp
155
OpenGL xexe yeye zeze xnxn ynyn znzn u v pixel sxsx sysy h s y w s x w h 0
156
Visão xexe yeye zeze xnxn ynyn znzn u v pixel sxsx sysy h s y w s x w h 0 Esta linha vem da derivação da matrix P do OpenGL
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.