4.4 Módulos de Disparidade
4.4.4 Módulo de disparidade com Multirresolução
As implementações em multirresolução dos módulos de disparidade SAD, SGBM e GC mantém as mesmas estruturas para o cálculo inicial de correspondência, tendo o mesmo con- junto de parâmetros. No entanto, a correspondência é realizada sobre as imagens de maior nível, que apresentam menor resolução. O mapa de disparidade deste nível é então utilizado como estimativa para a construção dos mapa de disparidade no nível inferior próximo, e este processo é repetido até a geração do mapa de disparidade do nível zero, que apresenta maior re- solução. O número de níveis é especificado pelo parâmetro numeroNíveis, dentro das funções calcularDisparidadee calcularDisparidadeRet.
4.4. MÓDULOS DE DISPARIDADE 35 O processo de multirresolução pode ser visto no algoritmo 1. Este algoritmo recebe o par de imagens retificadas esquerda Il e direita Ir, o número de níveis nNiveis e o tamanho l do
bloco da região de comparação entre o pixel de referência e os seus possíveis correspondentes. Inicialmente, é construída uma pirâmide de imagens (pirDir e pirEsq) para cada imagem forne- cida na entrada, e define-se a pirâmide de disparidades pirDisp. Para o nível mais alto nNivel, realiza-se a correspondência (por meio de uma das três técnicas empregadas neste trabalho). E para cada nível k, é feita uma interpolação do mapa de disparidade definido para o nível k + 1. Este mapa é utilizado como estimativa inicial para se estabelecer os valor de disparidade para o pixel(xk, yk) = (2xk+1, 2yk+1) de referência no nível k a partir do valor de disparidade do pixel
equivalente (xk+1, yk+1) no nível k + 1.
Além da estimativa inicial, ao se realizar o processo de interpolação, o conjunto de possíveis correspondentes ao pixel de referência no nível k passa a ser (2xk+1+ d, 2yk+1), (2xk+1+ d +
1, 2yk+1), (2xk+1+ d, 2yk+1+ 1) e (2xk+1+ d + 1, 2yk+1+ 1). Devido a restrição epipolar, os
candidatos a pixel correspondente se limitam àqueles que estão na mesma linha que (xk, yk),
ou seja, (2xk+1+ d, 2yk+1) e (2xk+1+ d, 2yk+1+ 1). Deste forma, um método de correlação
é estabelecido para verificar qual pixel destes dois é o verdadeiro correspondente ao pixel de referência. Então, atribui-se o valor de disparidade (d ou d + 1) a posição (xk, yk) no mapa
inicial para o nível k. O mapa de disparidade final será aquele definido para o nível zero, que é o de maior resolução.
Na OpenCV, o processo de construção da pirâmide de imagens é feito a partir da função buildPyramid, que recebe a imagem e o número de níveis desejado; como resultado, é gerada uma pirâmide Gaussiana de imagens. A interpolação do mapa de disparidade de um nível superior a um nível imediatamente inferior é feita pala função pyrUp da OpenCV, que recebe a imagem atual e as dimensões da imagem interpolada. Para o cálculo da correlação entre as imagens esquerda e direita, é aplicado a soma do quadrado das diferenças r de intensidade entre as regiões de referência e de busca, através da equação 4.27. Nela, I(x,y) é o valor de intensidade para o pixel de referência (x,y) em uma das imagens, J(x + d,y) é o valor de intensidade para o pixel correspondente (x + d,y) na outra imagem, m e n são o número de linhas e colunas, respectivamente, dos blocos de pixels de definem a região de comparação. Para este tipo de correlação, ao contrário do que é mostrado no algoritmo 1, quanto menor o valor de r, mais semelhantes são as regiões de comparação.
r= ⌊m 2⌋
∑
i=−⌊m 2⌋ ⌊n 2⌋∑
j=−⌊n 2⌋ [I(x + j, y + i) − J(x + j + d, y + i)]2 (4.27)36 CAPÍTULO 4. MÓDULOS IMPLEMENTADOS Algoritmo 1: calcularDisparidade-multirresolução
Entrada: Il: matriz; Ir: matriz; nNiveis: inteiro; l inteiro
Saída: Idisp:matriz
1 início
2 vetor de matriz pirEsq, pirDir, pirDisp;
3 pirEsq← calcularPiramide(Il, nNiveis - 1);
4 pirDir← calcularPiramide(Ir, nNiveis - 1);
5 dispInicial← disparidade(pirEsq[nNiveis - 1], pirDir[nNiveis - 1])
6 pirDisp.adicionar(dispInicial); 7 matriz dispAtual ← dispInicial; 8 para k = nNiveis - 2 até 0 faça
9 matriz dispTemp ← interpolacaox2(dispAtual); para i = 0 até
pirEsq[k].linhas-1faça
10 para j = 0 até pirEsq[k].colunas-1 faça 11 inteiro d ← dispAtual(i,j);
12 matriz janRe f ← janela(pirEsq[k],i,j,l); 13 matriz janBusca1 ← janela(pirEsq[k],i,j+d,l); 14 matriz janBusca2 ← janela(pirEsq[k],i,j+d+1,l); 15 float corr1 ← correlacao( janRe f , janBusca1); 16 float corr2 ← correlacao( janRe f , janBusca2); 17 se corr1 < corr2 então
18 dispTemp(i,j) ← d + 1; 19 fim 20 senão 21 dispTemp(i,j) ← d; 22 fim 23 fim 24 fim 25 pirDisp.adicionar(dispTemp); 26 dispAtual ← dispTemp; 27 fim 28 Idisp ← pirDisp[0]; 29 fim
Capítulo 5
Experimentos e resultados
Os experimentos realizados neste trabalho são divididos em duas partes. Na primeira etapa, é realizado o processo de calibração das imagens, cujos resultados são avaliados por um teste de retificação, para verificar o grau de distorção das imagens resultantes. Na segunda etapa, os mapas de disparidade são gerados pelos módulos de disparidade, sendo armazenado em arquivos de texto o tempo de processamento do algoritmo de correspondência estéreo, além do mapa de disparidade gerado. O experimento foi feito em um computador Intel Core i3-3217U, 1,8 GHz, com memória de 6Gb e sistema operacional Ubuntu 15.04.
5.1 Filmadora estéreo
Existem vários modelos de filmadoras 3D estéreo disponíveis no mercado, como a MHS- FS3, a HDR-TD10E e a PMW-TD300 da Sony, a Aiptex i2, a DXG-5D7V e a JVC GS-TD1. Neste trabalho, foi utilizada uma filmadora estéreo profissional modelo AG-3DA1P, da Panaso- nic, mostrado na figura 5.1. De acordo com o manual de instruções da câmera [Panasonic 2010], o modelo utiliza lentes estereoscópicas (lentes paralelas entre si com distância de base fixa), para obter um par de fluxos ou streams de vídeo no padrão de gravação e reprodução de alta-definição AVCHD, além de gravar o áudio em formato Dolby Digital. Este equipamento permite que os dados obtidos possam ser armazenados em cartões de memória das classes SD e SDHC (cartões de memória como maior capacidade de armazenamento e velocidade de leitura/escrita), além de apresentar uma conexão de saída HDMI e duas conexões de saída SDI (cada conexão transmite a o fluxo obtido por uma das duas lentes). A alimentação do equipamento pode ser feita por uma fonte de alimentação 100−240 V ou por uma bateria com autonomia de aproximadamente 180 minutos de gravação, ambos específicos para o equipamento.
Para a gravação de vídeos, a filmadora apresenta vários formatos, que são mostrados na tabela 5.1 e definidos de acordo com as seguintes especificações:
• A resolução das imagens do fluxo, que pode variar entre 1080 x 720 pixels (high-definition resolution) e 1920 x 1080 pixels (full high-definition resolution);
• O modo de captura das imagens, que pode ser entrelaçado e progressivo. No modo en- trelaçado, cada quadro é formado por um par de imagens: a primeira comporta apenas o conjunto de linhas pares da matriz de fotossensores; a segunda, apenas o conjunto de linhas ímpares da matriz. A visualização, neste modo de captura é feita pela composição das duas imagens em uma taxa de quadros por segundo mais elevada que aquela perce- bida pelo olho humano, para dar a sensação de continuidade. No modo progressivo, todas as linhas da matriz de fotossensores são utilizadas para formar a imagem que será utili- zada como quadro. Para este equipamento, uma imagem modo progressivo é composto por uma duas imagens em modo intercalado a uma taxa de captura mais elevada;
38 CAPÍTULO 5. EXPERIMENTOS E RESULTADOS
Figura 5.1: Câmera estéreo utilizada no trabalho. Imagem obtida do repositório da B & H photo and video.1
Frequência de Captura Formato Resolução Modo Taxa de Captura (fps) 50 Hz 1080/50i 1920 x 1080 intercalado 50 1080/25p 1920 x 1080 progressivo 25 720/50p 1080 x 720 progressivo 50 60 Hz 1080/59,94i 1920 x 1080 intercalado 59,94 1080/29,97p 1920 x 1080 progressivo 29,97 1080/23,98p 1920 x 1080 progressivo 23,98 720/59,94p 1080 x 720 progressivo 59,94 Tabela 5.1: Formatos de transmissão de vídeo da Panasonic AG-3DA1P.
• A frequência de captura do sistema, ou a frequência com que a matriz de fotossensores é atualizada durante a gravação, e que pode variar entre 50 e 59,9 Hz. Esta especificação afeta diretamente a taxa de captura dos quadros em fps (frames per second - quadros por segundo).