Disparidades, Correspondências e Corte Mínimo para Estéreo Vitor Barata R. B. Barroso...

Post on 17-Apr-2015

108 views 3 download

Transcript of Disparidades, Correspondências e Corte Mínimo para Estéreo Vitor Barata R. B. Barroso...

Disparidades, Correspondências e

Corte Mínimo para EstéreoVitor Barata R. B. Barroso

vbarata@tecgraf.puc-rio.br

INF 2064 - Visão Computacional eRealidade Aumentada

Trabalho Final

Introdução

O Problema de Visão em Estéreo Duas câmeras capturam a mesma cena

simultaneamente A partir das duas seqüências de imagens,

queremos: Descobrir pontos, vistos por cada câmera num

mesmo instante, que correspondem ao mesmo ponto real

Deduzir posições reais dos pontos e gerar um modelo virtual do mundo

Cam 2Cam 1

O Problema de Visão em Estéreo Simplificações comuns: Câmeras sincronizadas, imagens do mesmo

instante Modelo das câmeras conhecido, imagens

retificadas Deslocamento apenas em um eixo, horizontal nas

imagens Distância e ângulo pequenos entre as câmeras Ruído desprezível

O Problema das Disparidades Dadas duas imagens de estéreo: Encontrar os pixels correspondentes e oclusos

entre as duas Gerar um mapa indicando, para cada pixel de uma

imagem: A distância em relação ao pixel correspondente na

outra imagem Um valor especial para indicar oclusão

<x2,y2> = <x1,y1> d(x1,y1)

O Problema das Disparidades Modelagem do problema Superfícies lambertianas: a aparência não varia

com o ponto-de-vista Semelhança entre pontos individuais medida pela

intensidade (luminância) Superfícies suaves por partes

Regiões com variação suave de intensidade devem ter variação suave de disparidade

Descontinuidades na intensidade indicam bordas e devem poder ser preservadas na disparidade

Abordagens Análise local Correspondência entre dois pixels depende apenas das vizinhanças

(janelas) SSD/SAD (“sum of squared/absolute differences”) com janela fixa ou adaptativa Correlação cruzada normalizada

Análise global Correspondência entre pares de pixels estabelecida na imagem inteira por

meio de um problema de otimização (minimização de função de custo/erro/energia) Têmpera simulada (“Simulated annealing”) Difusão probabilística Corte mínimo de grafos

Análise por scanlines Dificuldade de preservar a ordem dos pixels e manter consistência entre

scanlines

Análise cooperativa Baseada na modelagem computacional da visão estéreo humana Operações locais iterativas resultando numa otimização global

Abordagens

Refinamento do mapa de disparidades Estimativas de disparidade sub-pixel Validação cruzada

Computam-se disparidades nos dois sentidos entre duas imagens

Se o pixel A for mapeado em B e este não for mapeado de volta, marca-se A como ocluso

Filtros para eliminar erros espúrios Preenchimento de “buracos” por ajuste de

superfícies

Algoritmos de Análise Local

Correlação Cruzada

SSD com janela fixa Idéia: a vizinhança de pixels correspondentes

deve ter alta correlação nas duas imagens

-

SSD com janela fixa Problema: essa heurística nem sempre

funciona, principalmente perto de descontinuidades de oclusão

-

SSD com janela fixa Erro associado a mapearmos um pixel A

(xA,yA) para um pixel B (xB,yB) com disparidade (u,v) Tomamos janelas de tamanho 2W ao redor de

ambos pixels Erro de intensidade = ||I2 – I1|| ou (I2 – I1)2

Erro de mapeamento = soma dos erros de intensidade ao longo de toda a janela

xA

yA

xB=xA+u

yB= yA +vA

B

SSD com janela fixa Escolha do mapeamento do pixel A na

segunda imagem (u,v) que minimize a expressão abaixo, dentre

todas as opções de disparidade consideradas

Wx

Wxx

Wy

Wyy

A

A

A

A

vyuxIyxIvuE 212 ),(),(),(

xA

yA

xB=xA+u

yB= yA +vA

B

SSD com janela fixa

Resultados após validação cruzada

Algoritmos de Análise Global

Corte Mínimo de Grafo baseado em Pixels

Minimização de Energia Encaramos a correspondência como um problema de

classificação de pixels A imagem é um conjunto P de pixels com um sistema de vizinhança

N O rótulo/etiqueta de um pixel p é sua disparidade fp, que pode

assumir apenas valores discretos (inteiros ou não) O mapeamento f pode ser associado à seguinte energia (a ser

minimizada):

Edata mede o erro de intensidade entre pixels correspondentes:

Eneighbor penaliza relações indesejadas entre disparidades de pixels vizinhos. Geralmente, é usado para garantir a conservação de regiões suaves ( V(a,a) = 0 ) e descontinuidades:

)()()( fEfEfE neighbordata

2)()(

Pp

pPp

ppdata pIfpIfDfE

Nqp

qppqsmoothneighbor ffVfEfE},{

,)()(

Minimização Local de Energia Minimizar E(f) para uma imagem é um problema NP-

difícil Milhões de mapeamentos possíveis! Muitos mínimos locais ruins!

Buscamos um mínimo local forte, próximo ao global

Algoritmo iterativo: Começamos com um mapeamento f arbitrário Ciclo:

f pode ser alterado por “movimentos”, gerando vários possíveis f’ Para cada f’ que possa ser gerado a partir de f

Encontrar f’ que tem a menor energia Se E(f’) < E(f), fazemos f f’

Repetir o ciclo enquanto for possível qualquer atualização de f

Crítico: encontrar f’ de menor energia em cada iteração Conseguiremos em tempo polinomial, praticamente linear!

Tipos de movimentos Movimentos locais Alteração do rótulo (disparidade) de um pixel

para um valor qualquer Costuma achar mínimos locais muito distantes do

global

Movimentos globais Inversões

Substituímos, de uma só vez, rótulos por e vice-versa, para qualquer número de pixels

Achar mínimos locais muito fortes Expansões

Substituímos, de uma só vez, o rótulo de qualquer número de pixels por um rótulo

Acha mínimos locais a um fator pequeno e conhecido do global

Corte Mínimo de Grafos Solução por Grafos: Um nó para cada pixel da imagem

Apenas rótulos ou para inversões

Qualquer rótulo para expansões Nós terminais extras:

e para inversões e ! para expansões

Arestas entre cada pixel e ambos terminais Arestas entre pares de pixels vizinhos Pesos apropriados nas arestas

Corte do grafo: Conjunto mínimo de arestas que separa os terminais Partição dos nós em subconjuntos contendo cada terminal Custo do corte é dado pela soma dos pesos das arestas Corte mínimo: aquele com o menor custo possível

Corte Mínimo de Grafos Relacionando com o problema: Corte do grafo mapeamento f’

O corte separa cada pixel de um, e apenas um, dos terminais Os pixels recebem o rótulo do nó terminal que foi separado pelo

corte Custo do corte energia de f’ Corte mínimo f’ de menor energia

Corte Mínimo de Grafos Construção do grafo: Pesos das arestas são penalidades pelo corte passar por elas

Projetados para casar o custo do corte com a energia do mapeamento

Refeita dinamicamente a cada ciclo do algoritmo Pode ser necessário criar vértices auxiliares

Para expansões α, aparecem apenas entre vértices com rótulos diferentes em f

Grafo para Inversões

Nqp

Pqpqp

PqNq qpp

PqNq qpp

Ve

PpfVDt

PpfVDt

p

p

,,, ),,(

,,

,,

Grafo para Expansões

PpDt

PpfDt

Ppt

pp

ppp

p

,

,

,

qppqp

qp

qpa

qqa

pap

ffNqpfVe

ffNqp

ffVt

fVe

fVe

,,),,(

,,

),(

),(

),(

,

,

,

ComparaçãoImagem EsquerdaDisparidades Verdadeiras

Correlação Corte de Grafo por Pixels

Corte de Grafopor Atribuições

Algoritmos de Análise Global

Corte Mínimo de Grafo baseado em Atribuições

Reformulação do Problema A formulação anterior trata as imagens de forma

assimétrica e não trata: Oclusões – pixels de uma imagem sem correspondente na outra Unicidade – cada pixel só deveria ser mapeado a um único pixel

de destino

Abordagem alternativa Pixels:

Imagem da esquerda L com pixels l L Imagem da direita R com pixels r R União de todos os pixels p P = L R

Atribuições Conjunto A de todas as atribuições a = < l , r > que podem ser feitas

correspondendo pares de pixels nas duas imagens O rótulo fa de uma atribuição a só pode ser 1 (ativa) ou 0 (inativa) Unicidade: impomos que só pode haver uma (ou nenhuma) atribuição

ativa para cada pixel

Unicidade e Movimentos Unicidade

f = configuração de atribuições (ativas e inativas) active(f) = {a : fa = 1} = conjunto de atribuições ativas em f

Nl(f) = { <l,x> ativa } = atribuições ativas que envolvem o pixel l

Nr(f) = { <x,r> ativa } = atribuições ativas que envolvem o pixel r

Pixel ocluso: | Np(f) | = 0

Unicidade: | Np(f) | <= 1, p P

Expansão A = todas as atribuições com disparidade α active(f’) (active(f) A) Quaisquer atribuições podem ser desfeitas Atribuições com disparidade α podem ser acrescentadas

Inversão A = todas as atribuições com disparidade α ou β (active(f’) A) = (active(f) A) Atribuições com disparidades α ou β podem ser acrescentadas ou removidas

Função de Energia Usamos a seguinte função de energia:

Penalidades:

Vizinhança: atribuições são vizinhas quando partem ou chegam em pixels vizinhos Inversão: penaliza atribuições ativas próximas com disparidades diferentes

Expansão: penaliza a não existência de atribuições ativas próximas com a mesma disparidade

)()()()( fEfEfEfE smoothocclusiondata

2)(

factivea

srcdstdata aIaIfE

21

21 21},{ 21 1)(

adadNaa aasmooth afafTVfE

occPp

occlusion KpoccludedTfE

))(()(

21

21 21},{ 21)(

adadNaa aasmooth afafTVfE

Definições: A0 = {aactive(f) : d(a) α} A = {aA : d(a) = α} F = (f : active(f) = Ã), Ã = A0 A

Np(F) {0,1,2}, p P

Vértices: terminais s,t cada atribuição a Ã

Arestas direcionadas: (s,a) e (a,t) entre cada atribuição e os terminais (a1,a2) e (a2,a1) entre a1 e a2 vizinhas ({a1, a2} N, ambas A0 ou ambas A )

(a1,a2) e (a2,a1) entre a1A0 e a2A ambas envolvendo um pixel p

Relacionando: aA0 f’(a) = 1 se a ficar ligado a s (se (s,a) não for cortada) aA f’(a) = 1 se a ficar ligado a t (se (a,t) não for cortada) aà f’(a) = 0

Grafo para Expansões

t

s

aa0

1

10

0

Custo de dados Lembrando: aA0 f’(a) = 1 se a ficar ligado a s (se (s,a) não for cortada) aA f’(a) = 1 se a ficar ligado a t (se (a,t) não for cortada)

Então:

factiveafactivea

srcdstdata aDaIaIfE )()(2

t

s

aa0

D(a0)

D(a)

AaaDas

AaaDta

,),(

,),( 0

Custo de oclusão e unicidade Lembrando: aA0 f’(a) = 1 se a ficar ligado a s (se (s,a) não for cortada) aA f’(a) = 1 se a ficar ligado a t (se (a,t) não for cortada)

Definições:

Então:

occPp

occlusion KpoccludedTfE

))(()(

)1)(()(

),(

FactiveTKpD

rDlDrlaD

occocc

occoccocc

AaAa

apapPp

Kaa

aa

AaaDta

AaaDas

occ

occ

occ

20

1

21

12

21

0

,

,,

),(

),(

,),(

,),(

t

s

aa0

Docc(a0)

Docc(a)

Kocc

Custo de (des)continuidade Lembrando: aA0 f’(a) = 1 se a ficar ligado a s (se (s,a) não for cortada) aA f’(a) = 1 se a ficar ligado a t (se (a,t) não for cortada)

Definição:

Então:

21

21 21},{ 21)(

adadNaa aasmooth afafTVfE

Ãaadad

Naaaasmooth VaD

2

21

2121)()(

,,)(

AouAaa

adad

Naa

Vaa

Vaa

AaaDta

aa

aa

smooth

021

21

21

,12

,21

0

,

)()(

,

),(

),(

,),(

21

21

a1

d

a2d

a2d

a2d

a2d

Custo de (des)continuidade Lembrando: aA0 f’(a) = 1 se a ficar ligado a s (se (s,a) não for cortada) aA f’(a) = 1 se a ficar ligado a t (se (a,t) não for cortada)

Definição:

Então:

t

s

aa0

21

21 21},{ 21)(

adadNaa aasmooth afafTVfE

Dsmooth(a0)

AouAaa

adad

Naa

Vaa

Vaa

AaaDta

aa

aa

smooth

021

21

21

,12

,21

0

,

)()(

,

),(

),(

,),(

21

21

Ãaadad

Naaaasmooth VaD

2

21

2121)()(

,,)(

Grafo para Expansões Pesos:

AaAa

apapPp

Kaa

aa

Ãaa

Naa

Vaa

Vaa

AaaDas

AaaDaDta

AaaDta

AaaDas

occ

aa

aa

smooth

occ

occ

20

1

21

12

21

21

21

,12

,21

0

0

,

,,

),(

),(

,

,

),(

),(

,),(

,),(

,),(

,),(

21

21

ÃaadadNaa aasmooth

occoccocc

VaD

rDlDrlaD

22121 21),()(,, ,)(

),(

Grafo para Inversões Definições: A0 = {aactive(f) | d(a) α e d(a) β} A = {aA | d(a) = α}, A = {aA | d(a) = β} A = A Aβ

Vértices: terminais s,t cada atribuição aA

Arestas direcionadas: (s,a) e (a,t) entre cada atribuição e os terminais (a1,a2) entre a1A e a2A vizinhas ({a1, a2}N)

(a2,a1) entre a1A e a2A ambas envolvendo um pixel p

Relacionando: aA f’(a) = 1 se a ficar ligado a s (se (s,a) não for cortada) aAβ f’(a) = 1 se a ficar ligado a t (se (a,t) não for cortada) aAβ f’(a) = f(a)

t

s

aβaα

1

10

0

Custo de dados Lembrando: aA f’(a) = 1 se a ficar ligado a s (se (s,a) não for cortada) aAβ f’(a) = 1 se a ficar ligado a t (se (a,t) não for cortada)

Então:

factiveafactivea

srcdstdata aDaIaIfE )()(2

t

s

aβaα

D(aα)

D(aβ)

AaaDas

AaaDta

,),(

,),(

Custo de oclusão (e unicidade) Lembrando: aA f’(a) = 1 se a ficar ligado a s (se (s,a) não for cortada) aAβ f’(a) = 1 se a ficar ligado a t (se (a,t) não for cortada)

Definições:

Então:

occPp

occlusion KpoccludedTfE

))(()(

)1)(()(

),(

FactiveTKpD

rDlDrlaD

occocc

occoccocc

t

s

aβa

Docc(a)

Docc(aβ)

Kocc

AaAa

apapPp

Kaa

aa

AaaDta

AaaDas

occ

occ

occ

21

21

12

21

,

,,

),(

),(

,),(

,),(

Custo de (des)continuidade Lembrando: aA f’(a) = 1 se a ficar ligado a s (se (s,a) não for cortada) aAβ f’(a) = 1 se a ficar ligado a t (se (a,t) não for cortada)

Definição:

Então:

AaAa

Naa

aa

Vaa

AaaDas

AaaDta

aa

smooth

smooth

21

21

12

,21

,

,

0),(

),(

,),(

,),(

21

a

0

2

2121

, ,)(Aa

Naa aasmooth VaD

21

21 21},{ 21 1)(

adadNaa aasmooth afafTVfE

Custo de (des)continuidade Lembrando: aA0 f’(a) = 1 se a ficar ligado a s (se (s,a) não for cortada) aA f’(a) = 1 se a ficar ligado a t (se (a,t) não for cortada)

Definição:

Então:

t

s

aβa

Dsmooth(a)

21

21 21},{ 21 1)(

adadNaa aasmooth afafTVfE

Dsmooth(aβ)

0

2

2121

, ,)(Aa

Naa aasmooth VaD

AaAa

Naa

aa

Vaa

AaaDas

AaaDta

aa

smooth

smooth

21

21

12

,21

,

,

0),(

),(

,),(

,),(

21

Grafo para Inversões Pesos:

AaAa

apapPp

Kaa

aa

AaAa

Naa

Vaa

aa

AaaDaDas

AaaDaDta

AaaDta

AaaDas

occ

aa

smooth

smooth

occ

occ

21

21

12

21

21

21

,21

12

,

,,

),(

]),[(

,

,

),(

0),(

,),(

,),(

,),(

,),(

21

02

2121

, ,)(

),(

AaNaa aasmooth

occoccocc

VaD

rDlDrlaD

Inversões e Unicidade Unicidade no algoritmo de inversões Não incluir atribuições aαβ=<l,r> se Nl(f) = {a0} ou Nr(f) =

{a0} Como a atribuição a0 não será desligada, não podemos ligar aα

nem aβ

Custo ∞ para ligar simultaneamente aα e aβ envolvendo um mesmo pixel

Vantagens Unicidade garantida por construção Implementação mais simples, cada pixel admite

apenas uma atribuição ativa em cada instante Problema Inversões ficam restritas demais e perdem poder Atingimos mínimos locais muito ruins

Parâmetros Custo de dados

Custo de oclusão: Kocc

Custo de suavidade: Fixo ou proporcional à descontinuidade? Rezudido onde há descontinuidade de

intensidade?

contráriocaso

daIaIaIaIseV rrll

aa,3

,max, min2121, 21

max

2

max

,min)(

,min)(

daIaIaD

daIaIaD

srcdst

srcdst

ComparaçãoImagem EsquerdaDisparidades Verdadeiras

Correlação Corte de Grafo por Pixels

Corte de Grafopor Atribuições

Melhor Resultado Expansão de atribuições Custo de dados quadrático limitado em 400 Custo de oclusão 15 Custo de continuidade 10 Aumentado para 100 se intensidades diferem

menos de 10

Referências Y Boykov, O Veksler, R Zabih, Fast Approximate

Energy Minimization via Graph Cuts - IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 23, no. 11, pp. 1222-1239, November, 2001.

V Kolmogorov, R Zabih, Computing Visual Correspondence with Occlusions via Graph Cuts - International Conference on Computer Vision, 2001

D Scharstein, R Szeliski, A taxonomy and evaluation of dense two-frame stereo correspondence algorithms - International Journal of Computer Vision, vol. 47, no. 1-3, pp. 7-42, April, 2002