Visão Computacional http://www.dca.ufrn.br/~lmarcos/courses/visao Shape from X • • • • • • X = estéreo X = shading (sombreamento) X = fotométrico estéreo X = motion X = textura (regiões com textura uniforme) X = line-drawing Gradiente 2D • 1D x x1 x0 y y1 y0 f ( x1 ) f ( x0 ) f ( x0 n) f ( x0 ) x f ( x n, y ) f ( x , y ) • 2D y f ( x, y n ) f ( x, y ) Magnitude: s ( f ) 2x 2y y Direção: ( f ) tan x 1 Gradiente e imagem • Gradiente mede variação da intensidade • Gradiente realça arestas • Pode-se derivar outras máscaras para outras direções (tudo é mesmo uma aproximação dada pelo cálculo infinitesimal ou cálculo variacional): 1 1 0 • Exemplo: 1 0 1 0 1 1 Estéreo x Motion Motion Paralax Motion Paralax Motion Paralax Motion Paralax Motion Paralax Motion Paralax Motion Paralax Diferenças principais de estéreo • Correspondência: – Uma vez que imagens são tomadas a uma taxa alta, disparidades são muito menores que em estéreo • Reconstrução: – Diferente de estéreo, o deslocamento 3D entre a cena e a câmera não é necessariamente causado por uma transformação 3D de corpo rígido Tempo de impacto Tempo de impacto • É possível determinar o tempo que a barra levaria para atingir a câmera apenas usando informação de imagem, isto é, sem saber seu tamanho real nem sua velocidade no espaço 3D? • Resposta? V L l t= f D t=0 D0 D0-Vt Calculando tempo • Seja L o tamanho real da barra, V sua velocidade (constante) e f a distância focal • A origem do sistema é o centro de projeção • Posição inicial da barra D(0) = D0 em t = 0 • Posição no tempo t é: D = D0 - Vt • D0, L, V, f são todos desconhecidos • Seja l(t) o tamanho aparente da barra (na imagem) f VL l D t=0 t= D0 D -Vt Calculando o tempo l t= • = V/D (1) f • l(t) = fL/D D0-Vt • l´(t) = dl(t)/dt = -fL/D2 (dD/dt) = fLV /D2 • divida l(t) por l´(t) e usando (1), obtemos: • l(t)/l´(t) = • Sabendo l(t) e l´(t), determinamos VL D t=0 D0 Assumpção • Existe apenas um movimento relativo, rígido, entre a câmera e a cena • As condições de iluminação da cena não mudam de acordo com o tempo Campo de movimento (motion field) • Motion field é o campo vetorial 2D de velocidades dos pontos da imagem induzido pelo movimento relativo entre a câmera de vicualização e a cena observada. • Pode ser entendido como a projeção do campo vetorial 3D de velocidades dos pontos na cena no plano imagem (imagine a projeção dos vetores 3D na imagem) Motion field • Seja a imagem de um ponto P dada por: p=fP/Z • O movimento relativo entre P e a câmera pode ser dado por V = -T - x P, sendo T o componente translacional de motion e a velocidade angular. • Uma vez que o movimento é rígido, e T são os mesmos para qualquer ponto P. Motion field • Traduzindo em componentes: Vx = -Tx -yZ+ zY Vy = -Ty -zZ+ xZ Vz = -Tz -xZ+ yX • Derivando p=fP/Z, obtemos: v = f(ZV-VzP)/Z2 Equações básicas do motion field vx = (Tzx-Txf)/Z-yf+zy+(xxy)/f-(yx2)/f vy = (Tzy-Tyf)/Z-xf+zx-(yxy)/f+(xy2)/f • Note que a equação é a soma de dois componentes separados, um de movimento translacional e outro de movimento rotacional Noção de fluxo ótico • Estimar o campo de movimento a partir das variações de intensidade na imagem, causadas por um movimento de corpo rígido ocorrido entre a câmera e a cena • Assumir brilho contínuo e diferenciável quantas vezes necessário Fluxo ótico • Consideremos que o brilho aparente de um objeto móvel é constante no tempo. • A irradiância da imagem é proporcional à radiância da cena na direção do eixo ótico • Assumindo o mesmo fator ao longo da imagem, a constância do brilho aparente da cena pode ser escrita como sendo a estacionaridade do brilho da imagem E sobre o tempo: dE/dt=0 Fluxo ótico • O brilho E é função da posição espacial e do tempo => E(x,y,t) • Uma vez que x e y são funções de t, a derivada total de dE/dt não deve ser confundida com a derivada parcial E/ t • A derivada total dE[x(t),y(t),t)]/dt é: (E/x)(dx/dt)+(E/y)(dy/dt)+E/ t=0 Fluxo ótico • As derivadas parciais do brilho da imagem são simplesmente as componentes do gradiente espacial espacial da imagem (E) • As derivadas temporais dx/dt, dy/dt e dz/dt são as componentes do motion field v • A equação anterior pode então ser escrita: (E)tv+Et=0 • Subscrito t denota diferenciação no tempo Fluxo ótico • Fluxo ótico é o campo vetorial sujeito à restrição da equação anterior e definido sumariamente como o movimento aparente do padrão de brilho da imagem • É uma aproximação para o campo de movimento que pode ser calculado a partir de imagens que variam no tempo, considerando as simplificações Fluxo ótico (outro ponto de vista) • Sistema visual pode ser discreto, mas produz sensação de movimento contínuo • A saída espelha o fluxo contínuo do mundo imageado ao longo da retina • Esta informação contínua pode ser entendida como o fluxo ótico • Fluxo ótico ou campo de velocidade instantânea define uma “velocidade retinal” a todo ponto no campo visual, com a qual ele cruza o campo. Shape from motion • Fluxo ótico pode ser calculado apenas usando informação local • Modelar movimento da imagem como variação contínua da intensidade da imagem, função de posição e tempo f(x,y,t) que pode ser expandida (Taylor) como: f ( x dx, y dy, t dt) Termos ignorados f f f 2 f 2 2 f 2 f ( x, y, t ) dx dy dt 2 dx 2 d y ... x y t x y Shape from motion • Se considerarmos que a intensidade de um ponto na imagem não muda se o movermos para outro local (translação apenas): f ( x dx, y dy, t dt) f ( x, y, t ) • Assim, a equação fundamental é dada por: f dx f dy f x t y t t Shape from motion • f / x, f / y e f / t são quantidades que podem ser medidas e dx/dt e dy/dt são as estimativas que estamos procurando (velocidades nas direções x e y). Fluxo óptico • Fazendo • u dx dy ;v dt dt f f f u v t x y ou obtém-se f fV t • onde f é o gradiente (espacial) da imagem e V=(u,v) é o termo velocidade Explicação • Considere câmera fixa e objeto movendo • A taxa de variação no tempo da intensidade de um ponto na imagem é (em primeira ordem) explicada como sendo a taxa de variação no espaço da intensidade da cena multiplicada pela velocidade com que pontos na cena movem relativos à câmera. • Algo como a segunda lei de Newton ? Explicação • Esta equação também indica que o vetor velocidade (u,v) deve estar numa linha perpendicular ao vetor (fx,fy), que são as derivadas parciais com respeito a x e y. • Se as derivadas forem precisas, a magnitude da velocidade na direção (fx,fy) é: V ft f f 2 x 2 y Fluxo ótico por relaxação • Equação do fluxo ótico restringe velocidade mas não a determina unicamente. • Uso de relaxação par calcular o fluxo ótico (pressupõe suavidade da variação) • Suavidade pode ser medida usando derivadas parciais ao quadrado como termo de erro: ux2, uy2,vx2,vy2 Fluxo ótico por relaxação • Usando multiplicadores de Lagrange, minimizar o erro no fluxo dado por: E2(x,y) = (fxu + fyv + ft)2 + (ux2+uy2+vx2+vy2) • Diferenciando em relação a u e v, obtemos equações para a variação do erro com relação a u e v que devem ser zero Fluxo ótico por relaxação • Sendo 2u = u-uav e 2v = v-vav, obtém-se: (2+ fx2)u + fx fyv = 2 uav - fxft fx fyu + (2+ fy2)v = 2 vav - fyft • Podem ser resolvidas para u e v: u = uav - fx (P/D) v = vav - fy (P/D) sendo P = fx uav + fyvav + ft D = 2 + fx2 + fy2 Integrando motion (relaxação) • t=0 • Inicialize uk,vk em zero • Até que algum erro seja satisfeito, faça u(x,y,t) = uav (x,y,t-1) - fx (P/D) v(x,y,t) = vav (x,y,t-1) - fy (P/D) • fim; Integrando motion (relaxação) vários quadros • t=0 • Inicialize todos os u(x,y,0) e v(x,y,0) • Para t = 1 até um máximo de frames, faça P D P v k vavk 1 f y D u k uavk 1 f x • fim; • Obs: P f xuav f y vav f t ; D 2 f x2 f y2