1.07k likes | 1.18k Views
Visão estéreo - correspondência e reconstrução -. Cap. 7 Trucco & Verry. Reconstrução da forma. Captura de movimento. Basic principle to recover position from stereo images: Triangulation. Requires correspondence and camera calibration. Correpondência por semelhança.
E N D
Visão estéreo- correspondência e reconstrução - Cap. 7 Trucco & Verry
Basic principle to recover position from stereo images: Triangulation • Requires correspondence and camera calibration
Correpondência por semelhança Sum of Square Differences – SSD ou Correlação
y0+v x0+u Semelhança de duas regiões WW(SSD – Sum of Squared Difference) y0 x0
constante constante Semelhança de duas regiões WW(correlação)
Semelhança de duas regiões WW(Normalização) Normalizando:
- Correspondence between points • With characteristics
- Correspondence problem: lack of characterists Ostridge egg on a Chinese checker board
Correspondência com luz estruturada Estéreo Ativo
Taxonomy of active range acquisition methods CT Transmissive Sonar Non-contact Non-optical Microwave radar Reflective Shape from focus Shape from shading Active shape acquisition Passive Shape from silhouettes Slices … Destructive Optical Radar Contact Triangulation Active Non destructive Active depth from defocus Active stereo CMM … Asla Sá et al, Coded Structure Light for 3D-Photograpy: an Overview, Revista de Informática Teórica e Aplicada, Volume IX, Número 2, Porto Alegre, 2002 Brian Curless. New Methods for Surface Reconstruction from Range Images. PhDDissertation. Stanford University. 1997
Active stereo solution • Use a light source to mark corresponding points uncalibrated light source calibrated light source One point at the time: long capture process.
Active stereo: capturing many points • Use of a digital projector as a structured light source • Pattern with several elements in a way where each element can be identified univocally point coding: prone to errors stripes: more robust
problem: all transitions occur in the same place! Methods for light coding: temporal codification • Project, in sequence, a series of slides that code in the image a binary number. • n slides for 2n stripes. Two ilumination levels. • Static scene. Code one axis. can be also 111 or 001! slide1 slide2 slide3 code Posdamer, J. L. Altschuler, M. D. Surface Measurement by Space-Encoded Projected Beam Systems. Comput. Graphics Image Process. 18, pp. 1-17, 1982.
Código de Gray código binário • Código binário 1 bit: 0 1 2 bits: 00 01 10 11 3 bits: 000 001 010 011 100 101 110 111 • Código de Gray 1 bit: 0 1 2 bits: 00 01 11 10 3 bits: 000 001 011 010 110 111 101 100 ordem invertida
Código de Gray código binário • Código binário Código de Gray
transitions occur in different places Robust temporal codification: Gray coding Inokuchi, Seiji. Sato, Kosuki. Matsuda, Fumio. Range Imaging for 3D Object Recognition. Proc. Int. Conf. on Pattern Recognition, pp.806-808, 1984.
Example of Gray coding needs too many slides!
Color Gray coding reduces the number of slides by 3 better yet…
(b,s)-BCSL Coding 20 Sá, Asla Medeiros. Medeiros, Esdras Soares. Carvalho, Paulo Cezar Pinto. Velho, Luiz. Coded Structured Light for 3D-Photography: an Overview.Revista de Informática Teórica e Aplicada, Vol. 9, No. 2, outubro 2002
A practical difficulty in the border detection • example with the monochrome Gray code
5 1 60 40 41 0 21 0 0 0 18 16 Edge detection • Projecting positive and negative slides is a robust way to recover edges.
32rgb-BCSL coding (+) (-) slide 1 slide 2
ambient light reflection factors projected light negative slide positive slide Recovering colored codes
Implementação do BCSL //A função getBcslStripeCode retorna o código de transição de faixa conforme a seqüência de cores fornecida. //Observe a ordem em que as cores devem ser passadas: // Primeiro as cores da imagem 1 e depois da imagem 2 // Primeiro a faixa da esquerda e depois a faixa da direita // //O código das cores e das bases é conforme a tabela abaixo. //Padrão 3_2 //base 3 //1 - vermelho //2 - verde //3 - azul //Padrão 4_2 //base 4 //1 - vermelho //2 - verde //3 - azul //4 - magenta //Padrão 6_2 //base 6 //1 - vermelho //2 - verde //3 - azul //4 - ciano //5 - magenta //6 - amarelo int getBcslStripeCode(int base, int colorLeft1, int colorRight1,int colorLeft2, int colorRight2);
int matrix3_2[4*9]={ 0, 3, 6, 9, 14, 17, 19, 11, 28, 34, 22, 24, 26, 29, 18, 21, 1, 31, 33, 35, 15, 4, 8, 13, 16, 23, 32, 12, 27, 5, 7, 25, 2, 10, 20, 30 }; …. int getBcslStripeCode(int base, int colorLeft1, int colorRight1,int colorLeft2, int colorRight2) { int aux1, aux2,linha,coluna; colorLeft2--; colorRight2--; colorLeft1--; colorRight1--; linha = (colorLeft1 * base) + colorLeft2; aux1 = (colorRight2 - colorLeft2); aux2 = (colorRight1 - colorLeft1); aux1 = (aux1>0)?(aux1-1):((base-1)+aux1); aux2 = (aux2>0)?(aux2-1):((base-1)+aux2); coluna = ((aux2) * (base-1)) + (aux1); switch(base){ case 3: return matrix3_2[linha *4+coluna]; break; case 4: return matrix4_2[linha *9 +coluna]; break; case 6: return matrix6_2[linha *25 +coluna]; break; default: printf("Error: invalid BCSL base\n"); return -1; } } teoria pode ser complicada mas a implementação é muito simples!
Mapa de profundiade Disparidade x Profundidade
T Profundidade versus disparidade P Z xr xl cl cr f ol or x x z z
Geometria Epipolar Correspondência pela Geometria das Câmeras
Pl Linha epipolar Pr ycr pl pr xcr er el zcr Linha epipolar Geometria Epipolar: notação P ycl xcl Or Ol zcl
ycr ycl xcr xcl zcr zcl Geometria Epipolar: relações básicas P
P Pr Pl pr pl er el eyer eye l ycr ycl xcr xcl zcr zcl Matriz Essencial Matriz essencial
zc xc yc Pc t zw Pw xw yw Parâmetros extrínsecos
Vetor do eye de b em a ycl xcl eye l zcl Z w ycr Y w xcr eye r zcr X w
up eye center Coordenadas dos objetos Coordenadas do olho Glu Look At void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz); Dados: eye, center, up (definem o sistema de coordenadas do olho) Determine a matriz que leva do sistema de Coordenadas dos Objetos para o sistema de Coordenadas do Olho eye
ye up ze xe eye yo center xo zo Calculo do sistema - xe ye ze dados: eye, center, up
ye ze xe eye yo center ye yo ze xo xe eye zo xo zo center Translada o eye para origem
yo ye ye , yo ze xe xo eye ze , zo zo xe , xo center Roda xe ye zepara xw yw zw
Matriz essencial (código C) Matrix epiEssencialMatrix( Matrix Ra, Vector eye_a, Matrix Rb, Vector eye_b) { Matrix Rba = algMult(Rb,algTransp(Ra)); Vector eye = algMult(Ra,algSub(eye_b,eye_a); Matrix S = algVectorProductMatrix(eye); Matrix E = algMult(Rba,S); return E; }
ycr ycl xcr xcl zcr zcl Matriz Essencial P Pr Pl pr pl er el Or T Ol