39
Visão Computacional http://www.dca.ufrn.br/ ~lmarcos/courses/visao

Visão Computacional lmarcos/courses/visao

Embed Size (px)

Citation preview

Page 1: Visão Computacional lmarcos/courses/visao

Visão Computacional

http://www.dca.ufrn.br/~lmarcos/courses/visao

Page 2: Visão Computacional 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

Page 3: Visão Computacional lmarcos/courses/visao

Gradiente 2D

• 1D

• 2D

x

y

yx

y

x

y

x

fDireção

fsMagnitude

yxfnyxf

yxfynxf

xfnxfxfxfyy

xx

1

22

000101

01

tan)(:

)(:

),(),(

),(),(

)()()()(

Page 4: Visão Computacional lmarcos/courses/visao

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):

• Exemplo:110

101

011

Page 5: Visão Computacional lmarcos/courses/visao

Estéreo x Motion

Page 6: Visão Computacional lmarcos/courses/visao

Motion Paralax

Page 7: Visão Computacional lmarcos/courses/visao

Motion Paralax

Page 8: Visão Computacional lmarcos/courses/visao

Motion Paralax

Page 9: Visão Computacional lmarcos/courses/visao

Motion Paralax

Page 10: Visão Computacional lmarcos/courses/visao

Motion Paralax

Page 11: Visão Computacional lmarcos/courses/visao

Motion Paralax

Page 12: Visão Computacional lmarcos/courses/visao

Motion Paralax

Page 13: Visão Computacional lmarcos/courses/visao

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

Page 14: Visão Computacional lmarcos/courses/visao

Tempo de impacto

Page 15: Visão Computacional lmarcos/courses/visao

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?LV

D

D0

t=0t=

fD0-Vt

l

Page 16: Visão Computacional lmarcos/courses/visao

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) LV

D

D0

t=0t=f

D0-Vt

l

Page 17: Visão Computacional lmarcos/courses/visao

Calculando o tempo

= V/D (1)

• l(t) = fL/D

• 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

LVD

D0

t=0t=f

D0-Vt

l

Page 18: Visão Computacional lmarcos/courses/visao

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

Page 19: Visão Computacional lmarcos/courses/visao

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)

Page 20: Visão Computacional lmarcos/courses/visao

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.

Page 21: Visão Computacional lmarcos/courses/visao

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

Page 22: Visão Computacional lmarcos/courses/visao

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

Page 23: Visão Computacional lmarcos/courses/visao

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

Page 24: Visão Computacional lmarcos/courses/visao

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

Page 25: Visão Computacional lmarcos/courses/visao

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

Page 26: Visão Computacional lmarcos/courses/visao

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

Page 27: Visão Computacional lmarcos/courses/visao

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

Page 28: Visão Computacional lmarcos/courses/visao

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.

Page 29: Visão Computacional lmarcos/courses/visao

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:

...),,(

),,(

22

22

2

2

ydy

fdx

x

fdt

t

fdy

y

fdx

x

ftyxf

dttdyydxxf Termos ignorados

Page 30: Visão Computacional lmarcos/courses/visao

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):

• Assim, a equação fundamental é dada por:

),,(),,( tyxfdttdyydxxf

t

f

t

dy

y

f

t

dx

x

f

Page 31: Visão Computacional lmarcos/courses/visao

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).

Page 32: Visão Computacional lmarcos/courses/visao

Fluxo óptico

• Fazendo obtém-se

• ou

• onde é o gradiente (espacial) da imagem e V=(u,v) é o termo velocidade

dt

dyv

dt

dxu ;

vy

fu

x

f

t

f

fVt

f

f

Page 33: Visão Computacional lmarcos/courses/visao

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 ?

Page 34: Visão Computacional lmarcos/courses/visao

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) é:

22yx

t

ff

fV

Page 35: Visão Computacional lmarcos/courses/visao

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: ux

2, uy2,vx

2,vy2

Page 36: Visão Computacional lmarcos/courses/visao

Fluxo ótico por relaxação

• Usando multiplicadores de Lagrange, minimizar o erro no fluxo dado por:

E2(x,y) = (fxu + fyv + ft)2 + (ux2+uy

2+vx2+vy

2)

• 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

Page 37: Visão Computacional lmarcos/courses/visao

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 + fy

2

Page 38: Visão Computacional lmarcos/courses/visao

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;

Page 39: Visão Computacional lmarcos/courses/visao

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

• fim;

• Obs:

D

Pfvv

D

Pfuu

ykav

k

xkav

k

1

1

222

;

yx

tavyavx

ffD

fvfufP