A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Calibração de Câmera Como determinar o modelo e os parâmetros que transformam a radiância da cena numa imagem digital.

Apresentações semelhantes


Apresentação em tema: "Calibração de Câmera Como determinar o modelo e os parâmetros que transformam a radiância da cena numa imagem digital."— Transcrição da apresentação:

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

37

38 Sem correção

39 Com correção radiométrica e radial

40

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

65

66

67

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

96

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

138

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

142

143

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

157


Carregar ppt "Calibração de Câmera Como determinar o modelo e os parâmetros que transformam a radiância da cena numa imagem digital."

Apresentações semelhantes


Anúncios Google