processador de correspondências entre imagens estéreo ......por toda a ajuda e apoio demonstrados...

88
FACULDADE DE E NGENHARIA DA UNIVERSIDADE DO P ORTO Processador de Correspondências Entre Imagens Estéreo em Tempo Real Carlos Alexandre Teixeira do Amaral Resende Mestrado Integrado em Engenharia Electrotécnica e de Computadores Supervisor: João Canas Ferreira Julho 2009

Upload: others

Post on 30-Jan-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

  • FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO

    Processador de Correspondências EntreImagens Estéreo em Tempo Real

    Carlos Alexandre Teixeira do Amaral Resende

    Mestrado Integrado em Engenharia Electrotécnica e de Computadores

    Supervisor: João Canas Ferreira

    Julho 2009

  • c© Carlos Alexandre Teixeira do Amaral Resende, 2009

  • Resumo

    A visão estéreo é uma área de investigação tecnológica muito vasta, que engloba diferentesconceitos e é utilizada em diferentes áreas de aplicação, tão diversas como saúde e entretenimento.Dentro da visão estéreo é estudado o cálculo de disparidades utilizando imagens estéreo, o qualapesar dos avanços verificados nas últimas décadas apresenta alguns problemas.

    A maior dificuldade no cálculo de informação de disparidade é a determinação de correspon-dência entre imagens. Dos vários erros que resultam deste passo intermédio são estudados nesterelatório, aqueles que surgem em pixéis de transição e em áreas de grande dimensão, onde a in-tensidade dos pixéis é constante.

    Para resolver estes problemas são utilizados métodos densos de procura local, nos quais acorrespondência para cada pixel é feita por aglomeração destes em janelas. Estas procuram porcorrespondência apenas nas janelas da imagem candidata com a mesma posição horizontal e mo-dificam o seu tamanho de modo a refinarem a correspondência dos vários pixéis da imagem.

    A arquitectura desenvolvida por Hariyama et al [1] usa os métodos referidos no parágrafoanterior, tendo sido utilizada como referência para o desenvolvimento do processador de cálculode disparidades.

    O processador foi implementado na FPGA Virtex-4 LX60 da Xilinx e processa imagens dedimensão 208×480 em tempo real (25 frames por segundo). A arquitectura de implementação écompletamente escalável, sendo possível aumentar o tamanho da imagem mantendo a frame rate.Para tal é necessário que a arquitectura reconfigurável possua recursos que permitam aumentaro paralelismo no cálculo de disparidade, deste modo, utilizando a FPGA Virtex-5 LX330 foramrealizados testes funcionais para imagem de dimensão 640×480.

    Quando comparada com a implementação de referência, a arquitectura desenvolvida apre-senta uma igualdade na qualidade dos resultados obtidos e uma melhoria nas características dosistema. Enquanto a aplicação de referência apenas é capaz de processar imagens de dimensão64×64 a uma frequência de 86 MHz (correspondentes a um tempo de processamento de 0.19 ms),a implementação realizada permite processar imagens de dimensão 208×480 a 100 MHz (corres-pondentes a um tempo máximo de processamento de 0.246 ms), sendo esta arquitectura escalávelpara imagens de maior dimensão.

    Relativamente à quantidade de recursos utilizados também se verificam diferenças nas duasimplementações. O processador de referência utiliza 42508 LEs (cada um constituída por umaLUT de 4 entradas e um flip-flop) numa FPGA APEX20KE da Altera, enquanto o processadordesenvolvido utiliza 19,978 slices (cada uma constituída por duas LUTs de quatro entradas edois flip-flops) numa FPGA Virtex-4 da Xilinx. O que significa que a arquitectura implementadaapresenta uma menor utilização de recursos do que a de referência para processar imagens demaior dimensão.

    A menor utilização de recursos deve-se à simplificação efectuada ao algoritmo de cálculo decorrespondências. Enquanto na implementação de referência o algoritmo utiliza a informação devizinhança dos pixéis ao longo de toda a imagem, na arquitectura desenvolvida o algoritmo é

    i

  • ii

    aplicado individualmente a secções de oito linhas, reduzindo assim a quantidade de informação aprocessar e como tal a quantidade de recursos utilizados.

  • Abstract

    Stereo vision is an area of vast technological research covering various concepts and is em-ployed to several areas of application, as diverse as health and entertainment. This subject alsoaddresses the calculation of disparities using stereo images which, despite advances made in recentdecades, have shown to experience some problems.

    The calculation of correspondence between stereo images is the main difficulty of this subject.Attention is focused on the inherent problems of correspondence calculation, which result fromerrors in transition pixels and large areas where pixel intensity remains constant.

    Dense methods with local search, using windows with variable size are used to solve theexplained problems. The correspondence of each pixel is determined by this set of windows thatsearch for correspondence along the candidate windows with the same vertical position, the valueof correspondence obtained in each step is refined reducing the size of the correspondence window.

    The architecture used to implement this methods is based on the one proposed by MasanoriHariyama, Yasuhiro Kobayashi, Haruka Sasaki and Mitchitaka Kameyama in [1].

    The real time processor was implemented on a Virtex-4 LX60 from Xilinx and analyses 25frames of 208×480 per second. The developed architecture is completely scalable, so it is possibleto expand the dimensions of the images keeping the frame rate of 25 frames per second. The onlyrequirement is the capacity of the reconfigurable hardware, since it needs to have enough resourcesto implement the parallelism necessary to increase the image dimension keeping the frame rate.An additional implementation was made on a Virtex-5 LX330, which allowed to process imagesof 640×480 pixels with a frame rate of 25 frames per second.

    Comparing the implemented architecture with the one used as reference, it is verified thatthe disparity map has the same quality, but the system characteristics is improved. Whereas thereference application is only capable of processing images with 64× 64 pixels at a frequency of86 MHz (with a correspondent processing time of 0.19 ms), the implemented design allows toprocess 208×480 at 100 MHz frequency (with a maximum processing time of 0.246 ms).

    Concerning to resources utilization, the reference application uses 42508 LEs (each one contai-ning a 4 input LUT and a flip-flop) of APEX20KE (a FPGA from Altera) and this thesis imple-mented design uses 19,978 slices (each one containing two LUTs of 4 inputs and two flip-flops)of Virtex-4 LX60 (a FPGA from Xilinx). Concluding, the implemented architecture uses fewerresources to processes images with a bigger size when comparing to the reference architecture.This is the result of the simplification made to the disparity algorithm; while the reference al-gorithm uses the neighborhood information from the entire image, the implemented algorithm isapplied individually to sections of 8 lines, reducing the quantity of information processed andconsequently the resources utilization.

    iii

  • iv

  • Agradecimentos

    Por toda a ajuda e apoio demonstrados durante a realização deste trabalho gostaria de agra-decer ao meu orientador, professor João Canas Ferreira; aos meus colegas de laboratório, JoãoSantos, Pedro Salgueiro, João Pereira, João Rodrigues e Nuno Pinto; e aos meus pais e irmãos.

    Carlos Resende

    v

  • vi

  • Conteúdo

    1 Introdução 11.1 Objectivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Estrutura da Tese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    2 Aspectos Básicos do Cálculo de Correspondências 52.1 Geometria Epipolar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Erros Intrínsecos ao Cálculo de Correspondência . . . . . . . . . . . . . . . . . 82.3 Interpretação e Cálculo dos Parâmetros de Profundidade . . . . . . . . . . . . . 92.4 Fases do Cálculo de Disparidades . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.4.1 Custo de Correspondência entre Pixéis . . . . . . . . . . . . . . . . . . . 102.4.2 Agregação do Custo de correspondência . . . . . . . . . . . . . . . . . . 102.4.3 Determinação da Melhor Disparidade . . . . . . . . . . . . . . . . . . . 112.4.4 Refinamento da Estimativa de Disparidade . . . . . . . . . . . . . . . . 12

    2.5 Cálculo de Correspondências entre Imagens Estéreo Usando Métodos Densos . . 132.6 Técnicas não Paramétricas (Census e Rank) . . . . . . . . . . . . . . . . . . . . 142.7 O Problema da Definição do Tamanho da Janela . . . . . . . . . . . . . . . . . . 16

    2.7.1 Teoria Associada aos Erros Resultantes do Tamanho da Janela . . . . . . 162.7.2 Influência de Vizinhança na Resolução de Erros de Correspondência . . . 17

    3 Cálculo de Disparidade com Janelas de Tamanho Variável 213.1 Descrição de Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    3.1.1 Janela Inicial de Tamanho Máximo . . . . . . . . . . . . . . . . . . . . 213.1.2 Janela Inicial de Tamanho Mínimo . . . . . . . . . . . . . . . . . . . . . 233.1.3 Cálculo de Disparidades por Estimativas do seu Incremento . . . . . . . 25

    3.2 Implementação Física . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.2.1 Window-Parallel and Pixel-Parallel Architecture . . . . . . . . . . . . . 283.2.2 Pixel-Serial and Window-Parallel Architecture . . . . . . . . . . . . . . 30

    4 Arquitectura do Processador de Correspondências 334.1 Fluxo de Projecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.2 Dispositivos Utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    4.2.1 Câmaras CMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.2.2 Placa de Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . 354.2.3 Circuito de Interface VGA . . . . . . . . . . . . . . . . . . . . . . . . . 36

    4.3 Arquitectura Geral do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.4 Implementação do Processador na Virtex-4 LX60 . . . . . . . . . . . . . . . . . 39

    4.4.1 Sincronismo com as Câmaras . . . . . . . . . . . . . . . . . . . . . . . 404.4.2 Cálculo de Disparidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    vii

  • viii CONTEÚDO

    4.4.3 Sincronismo com a Placa VGA . . . . . . . . . . . . . . . . . . . . . . 474.5 Comparação com Implementação de Referência . . . . . . . . . . . . . . . . . . 494.6 Expansão do Tamanho da Imagem . . . . . . . . . . . . . . . . . . . . . . . . . 50

    5 Avaliação Funcional 535.1 Determinação da Informação de Vizinhança . . . . . . . . . . . . . . . . . . . . 535.2 Desenvolvimento de Sequências de Testes Funcionais . . . . . . . . . . . . . . . 56

    5.2.1 Testes Funcionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565.2.2 Resultados Obtidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    5.3 Testes após Implementação Física . . . . . . . . . . . . . . . . . . . . . . . . . 635.4 Testes Funcionais em Imagens de 640×480 . . . . . . . . . . . . . . . . . . . . 645.5 Utilização de recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

    6 Conclusões e Trabalho Futuro 676.1 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676.2 Trabalho Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

    Referências 69

  • Lista de Figuras

    2.1 Cálculo de disparidades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Cálculo de profundidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 Ponto x e respectiva projecção (segundo [2]). . . . . . . . . . . . . . . . . . . . 72.4 Determinação da projecção do ponto x (segundo [2]). . . . . . . . . . . . . . . . 72.5 Oclusão de pixéis em geometria epipolar (segundo [3]). . . . . . . . . . . . . . . 82.6 Diferentes perspectivas do mesmo objecto nos planos de observação. . . . . . . . 82.7 Visibilidade e ordem de pixéis em diferentes projecções (segundo [4]). . . . . . . 122.8 Procura pela janela correspondente. . . . . . . . . . . . . . . . . . . . . . . . . 132.9 Procura de janela correspondente em imagens com o mesmo offset horizontal

    (de [5]). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.10 Mapa de disparidade obtido pelo método correlação normalizada, transformada

    rank e pela transformada census (de [6]). . . . . . . . . . . . . . . . . . . . . . . 152.11 Erros resultantes do tamanho da janela (de [1]). . . . . . . . . . . . . . . . . . . 162.12 Influência de pixéis vizinhos no cálculo de correspondência(segundo [7]). . . . . 18

    3.1 Espaço de janelas de referência e janelas candidatas (segundo [1]). . . . . . . . . 223.2 Matriz de disparidades para a imagem de referência após cálculo de correspon-

    dência (segundo [1]). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.3 Espaço de janelas de referência de tamanho w/2 e de janelas candidatas (se-

    gundo [1]). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.4 Separação dos mínimos da função de correspondência por aumento do tamanho

    da janela (de [8]). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.5 Expansão da janela (segundo [7]). . . . . . . . . . . . . . . . . . . . . . . . . . 263.6 Paralelismo ao nível da janela (segundo [8]). . . . . . . . . . . . . . . . . . . . . 283.7 Paralelismo ao nível do pixel (segundo [8]). . . . . . . . . . . . . . . . . . . . . 283.8 Razão de utilização de circuitos quando é utilizado elevado paralelismo (de [8]). . 293.9 Fluxo de dados para arquitecturas WPPP (de [1]). . . . . . . . . . . . . . . . . . 293.10 Paralelismo ao nível da janela candidata em arquitecturas WPPP (segundo [1]). . 313.11 Paralelismo ao nível da janela candidata e de referência em arquitecturas WPPP

    (segundo [1]). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.12 Fluxo de dados para arquitecturas PSWP (segundo [8]). . . . . . . . . . . . . . . 32

    4.1 Sistema e dispositivos utilizados. . . . . . . . . . . . . . . . . . . . . . . . . . . 364.2 Estrutura do sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.3 Sequência de instruções dentro de cada secção. . . . . . . . . . . . . . . . . . . 384.4 Arquitectura do sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.5 Sincronismo nos acessos à memória. . . . . . . . . . . . . . . . . . . . . . . . . 424.6 Arquitectura geral de cálculo de SAD . . . . . . . . . . . . . . . . . . . . . . . 45

    ix

  • x LISTA DE FIGURAS

    4.7 Redução da área de procura por correspondência. . . . . . . . . . . . . . . . . . 46

    5.1 Resultados de teste do algoritmo utilizando informação de vizinhança de toda aimagem ou apenas de uma secção de 208×8, teste 1. . . . . . . . . . . . . . . . 54

    5.2 Diferenças de resultados entre a implementação proposta em [1] e o algoritmodesenvolvido, teste 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    5.3 Resultados de teste do algoritmo utilizando informação de vizinhança de toda aimagem ou apenas de uma secção de 208×8, teste 2. . . . . . . . . . . . . . . . 55

    5.4 Diferenças de resultados entre a implementação proposta em [1] e o algoritmodesenvolvido, teste 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    5.5 Mapa de disparidade obtido com plano de fundo variável. . . . . . . . . . . . . . 615.6 Cálculo de disparidade (boneco). . . . . . . . . . . . . . . . . . . . . . . . . . . 625.7 Cálculo de disparidade (cena de bowling). . . . . . . . . . . . . . . . . . . . . . 625.8 Cálculo de disparidade de imagens de dimensão 640×480. . . . . . . . . . . . . 64

  • Lista de Tabelas

    2.1 Expressões de cálculo de correspondência (segundo [5]). . . . . . . . . . . . . . 14

    5.1 Ocupação dos recursos da FPGA Virtex-4 LX60 . . . . . . . . . . . . . . . . . . 655.2 Ocupação dos recursos da FPGA Virtex-5 LX330 . . . . . . . . . . . . . . . . . 66

    xi

  • xii LISTA DE TABELAS

  • Lista de abreviaturas

    AD Diferenças AbsolutasDDR SDRAM Double-Data-Rate Synchronous Dynamic Random Access MemoryDSP Digital Signal ProcessorEEPROM Electrically-Erasable Programmable Read-Only MemoryEPROM Erasable Programmable Read-Only MemoryFPGA Field Programmable Gate ArrayHAM HammingIO Input - OutputNCC Normalized Cross CorrelationOLED Organic Light Emitting DiodePLD Programmable Logic DevicePSWP Pixel-serial and Window-parallel ArchitectureRAM Random Access MemorySAD Sum of Absolute DifferencesSRAM Static Random Access MemorySSD Sum of Squared DifferencesWPPP Window-parallel and Pixel-parallel ArchitectureDP Dynamic ProgrammingCMOS Complementary Metal-Oxide-SemiconductorVGA Video Graphics ArrayPGM Portable Gray MapWTA Winner Take All

    xiii

  • xiv ABREVIATURAS E SIMBOLOS

  • Capítulo 1

    Introdução

    O interesse do ser humano na compreensão da visão humana e reprodução computacional da

    mesma verifica-se há algumas décadas.

    No entanto, apesar dos avanços conseguidos nesta área, a visão computacional apresenta-

    se como um processo difícil e ainda com alguns erros, por oposição à visão humana, onde a

    informação visual é processada de um modo rápido e eficaz (à excepção dos raros casos de ilusão

    óptica).

    Devido à complexidade e à quantidade de informação associada a este processo, a visão com-

    putacional encontra-se segmentada em várias áreas de investigação, cada uma focada na obtenção

    de informação específica. Assim pode ser identificada investigação na área do cálculo de profun-

    didades, reconhecimento de objectos, faces ou movimentos.

    O grande interesse verificado nesta área tecnológica justifica-se não só pela natural curiosidade

    humana, mas também pela sua vasta área de aplicações. Estas englobam mercados tão distintos

    como o da saúde ou entretenimento.

    Deste modo, a visão computacional é utilizada em instrumentos que servem de auxílio em ci-

    rurgias, ao detectarem pontos específicos e actuarem neles com elevada precisão, como ferramenta

    auxiliar em diagnósticos e em investigações ao nível de aplicações biomédicas. Nas aplicações in-

    dustriais possibilitam o aumento de automação e rapidez no processo produtivo. Em aplicações

    de segurança optimizam o armazenamento e inspecção de informação proveniente de câmaras

    de vigilância, ao reduzirem o número de frames armazenadas para aquelas que detectaram uma

    possível ameaça ao objecto ou edifício que está a ser protegido. ([9], [10] e [11]).

    Adicionalmente pode ser referido o desenvolvimento feito na área dos veículos autónomos e

    veículos de orientação (robôs onde é necessária a determinação de tempos de colisão a obstáculos

    e o desvio dos mesmos), na área do entretenimento (onde, através da detecção de objectos e

    movimentos, é dado ao utilizador a possibilidade de interagir com o computador) e na reconstrução

    de modelos 3D a aplicar em vídeos de realidade virtual ([9] e [10]).

    A grande diversidade de resultados e aplicações da visão computacional é acompanhada por

    uma diversidade nos seus métodos de cálculo, estando cada um optimizado para a resolução de

    um ou vários problemas inerentes a esta área tecnológica.

    1

  • 2 Introdução

    Este projecto tem como objectivo a obtenção de informação de profundidade utilizando ima-

    gens estéreo. Nesta, a informação tridimensional é obtida através do cálculo da correspondên-

    cia entre as imagens fornecidas. Obtida a informação de correspondência é feito o cálculo das

    disparidades (diferença de posição entre os pontos correspondentes das imagens recebidas, ver

    Capítulo 2) dos vários pixéis da imagem. Este último resultado pode ser utilizado para representar

    a informação tridimensional da imagem, indicando apenas a relação entre os objectos (quais os

    que estão mais próximos e mais distantes do ponto de observação), ou pode ser realizada uma

    transformação que determina o valor exacto de profundidade (ver Capítulo 2).

    O cálculo de informação de profundidade tem como aplicações alvo a segurança, veículos

    autónomos e de orientação e entretenimento. Estas, como a maioria das aplicações alvo, interagem

    directamente com o ambiente que as rodeia e como tal, é essencial que os dados necessários para

    o seu funcionamento, incluindo a informação de profundidade, estejam disponíveis em tempo útil.

    É este requisito de tempo real dos algoritmos de cálculo de profundidades que despoletou o

    seu desenvolvimento em Hardware, em detrimento de uma solução, inerentemente mais lenta, em

    Software.

    1.1 Objectivos

    O trabalho desenvolvido tem como objectivo o desenvolvimento de um processador que cal-

    cule eficazmente (com um reduzido número de erros) e em tempo real, o mapa de disparidades de

    imagens com 640× 480 pixéis. A sua implementação é feita em Hardware, mais concretamenteem arquitecturas reconfiguráveis.

    Adicionalmente e como verificação da funcionalidade do processador desenvolvido, é feita a

    sua integração num sistema de comunicação com um monitor VGA e câmaras CMOS.

    1.2 Estrutura da Tese

    O presente relatório de tese é constituído por um conjunto de dois capítulos onde é feita uma

    descrição do estado da arte, um onde é apresentada a arquitectura implementada e um onde são

    discutidos os resultados experimentais.

    Deste modo, no capítulo 2 é feita a descrição geral do problema de cálculo de informação

    tridimensional e de todos os parâmetros nele envolvidos. Adicionalmente, é apresentada de uma

    forma breve as bases da teoria epipolar e alguns dos métodos de cálculo de correspondência e

    disparidades, sendo dado particular ênfase ao cálculo feito com imagens estéreo através de mé-

    todos densos. São também descritos alguns dos erros inerentes ao cálculo de correspondências e

    analisado o problema da definição da janela para o seu cálculo com métodos densos. No capí-

    tulo 3, são descritos alguns algoritmos que alterando dinamicamente as dimensões da janela de

    correspondência, solucionam os problemas anteriormente referidos e são apresentadas algumas

    arquitecturas gerais de implementação desta classe de algoritmos.

  • 1.2 Estrutura da Tese 3

    A secção de implementação é constituída pelo capítulo 4, no qual é apresentado o algoritmo

    e a implementação efectuada.

    Os resultados obtidos experimentalmente são apresentados no capítulo 5. Nesta é feita uma

    análise dos resultados obtidos por testes funcionais e por testes físicos.

    Para finalizar a descrição do projecto, o capítulo 6 apresentada sugestões para trabalho futuro

    e as conclusões do trabalho desenvolvido.

  • 4 Introdução

  • Capítulo 2

    Aspectos Básicos do Cálculo deCorrespondências

    Antes de ser iniciada uma descrição mais pormenorizada do trabalho desenvolvido neste pro-

    jecto, é apresentada neste capítulo uma visão geral do processo de cálculo de informação de pro-

    fundidade, incluindo: diferentes metodologias para diferentes resultados pretendidos, diferentes

    problemas associados e resolvidos por cada uma dessas metodologias e definição dos parâmetros

    envolvidos nos cálculos.

    O cálculo de informação tridimensional está sempre associado a três passos fundamentais:

    determinação da correspondência entre imagens, cálculo de disparidade aquando da obtenção da

    correspondência e cálculo da profundidade após obtenção da disparidade.

    A correspondência entre imagens é obtida através do cálculo de similaridade entre os vários

    pixéis das imagens fornecidas e selecção do melhor resultado. Para este cálculo é necessário

    identificar qual a imagem de referência e qual a candidata, ou seja, é necessário identificar qual

    a imagem sobre a qual se pretende determinar a informação de profundidade e qual vai ser per-

    corrida em busca de correspondências. Este é o passo mais complexo no cálculo de informação

    tridimensional e pode ser realizado de várias formas, como é estudado na secção 2.3.

    Obtida a correspondência entre imagens é possível, através da determinação da diferença de

    posição entre os vários pontos correspondentes, calcular o mapa de disparidades da imagem alvo

    (na Figura 2.1 é apresentado um exemplo para correspondência estéreo entre imagens rectificadas,

    isto é, com a mesma posição horizontal).

    Este resultado fornece informação relativamente à profundidade dos objectos da imagem, pois

    quanto mais distantes os objectos se encontram das câmaras menor será a sua diferença de posição

    no processo de correspondência e logo menor a sua disparidade, ou seja, a disparidade pode ser

    encarada como representando o inverso da profundidade. No entanto, se o objectivo for determinar

    o valor exacto de profundidade é necessário efectuar um último cálculo, a triangulação.

    Analisando a Figura 2.2, onde o valor de Z corresponde à profundidade do pixel x, f a distância

    focal (distância entre o centro óptico e o ponto focal) e B a distância entre os centros ópticos. O

    5

  • 6 Aspectos Básicos do Cálculo de Correspondências

    Figura 2.1: Cálculo de disparidades.

    Figura 2.2: Cálculo de profundidade.

    cálculo de triangulação pode ser descrito pela seguinte equação:

    Z =B

    tan(α)+ tan(β )

    A qual por aplicação de relações trigonométricas resulta na seguinte equação:

    Z =B× f

    d

    Onde d é a disparidade e é igual a sin(α)− sin(β ).A secção 2.1 sobre geometria epipolar analisa estes parâmetros com maior rigor.

    2.1 Geometria Epipolar

    Uma importante base teórica no cálculo de informação de profundidade é a geometria epipolar.

    Através desta é possível reduzir a complexidade, mais concretamente a quantidade de cálculos

    necessários, na determinação de correspondências.

    A geometria epipolar pode ser interpretada como a intersecção do plano de observação das

    duas câmaras (planos a branco na Figura 2.3) com o plano epipolar (plano Π na Figura 2.3). Esteé definido pela interseção de três linhas: a linha que intersecta os dois pontos de observação (c

  • 2.1 Geometria Epipolar 7

    e c’ na Figura 2.3), baseline, e as linhas que partem desses ponto de referência das câmaras e

    intersectam o pixel em análise (x e x’ na Figura 2.3).

    Figura 2.3: Ponto x e respectiva projecção (segundo [2]).

    Sabendo a posição do pixel x e conhecida a baseline, o cálculo de correspondência pode ser

    definido como a determinação dos dois pontos que faltam para fechar o plano epipolar, ou seja, a

    determinação da projecção do ponto x na imagem candidata. A Figura 2.4 apresenta uma descrição

    gráfica deste problema.

    Figura 2.4: Determinação da projecção do ponto x (segundo [2]).

    Do referido no primeiro parágrafo sobre a teoria epipolar, conclui-se que essa procura fica

    reduzida a uma linha da imagem, linha epipolar (I’ na Figura 2.4), uma vez que o plano epipolar

    apenas pode ser fechado pela linha constituída pelo ponto de observação, c’, e um dos pixéis que

    representam a linha epipolar.

    A teoria de geometria epipolar permite justificar e determinar a existência de pixéis ocultos.

    Isto acontece quando dois pixéis distintos têm a sua projecção no mesmo ponto da janela candi-

    data, ou visto de outra perspectiva, o fenómeno de oclusão acontece quando os pontos X , Y e c′

    são colineares e o ponto X se encontra entre os pontos Y e c′ (no caso de ser X a esconder Y ) ou o

    ponto Y se encontra entre X e c′ (no caso de ser Y a esconder X), ver Figura 2.5 [3].

    A análise feita anteriormente para um pixel pode ser alargada para qualquer pixel da imagem,

    tendo em consideração que ao ser alterada a posição vertical do pixel em estudo a linha epipolar

    se altera.

  • 8 Aspectos Básicos do Cálculo de Correspondências

    Figura 2.5: Oclusão de pixéis em geometria epipolar (segundo [3]).

    Neste projecto, a procura por correspondência é feita através de janelas que aglomeram um

    conjunto de pixéis. Neste caso, onde é feita a projecção não de um pixel mas de um conjunto, a

    teoria epipolar é igualmente aplicável.

    2.2 Erros Intrínsecos ao Cálculo de Correspondência

    O cálculo de correspondência entre imagens estéreo encontra-se sempre associada a quatro

    tipo de erros comuns a qualquer algoritmo e abordagem. Um dos problemas no cálculo de corres-

    pondências é a existência de objectos escondidos, que como referido na secção 2.1 correspondem a

    conjuntos de pixéis que apenas têm representação em uma das imagens. Tal deve-se ao facto de na

    imagem candidata a totalidade ou parte dos objectos constituídos por esses pixéis, se encontrarem

    escondidos por um objecto que se encontra mais próximo da objectiva.

    Figura 2.6: Diferentes perspectivas do mesmo objecto nos planos de observação.

    A segunda fonte de erros corresponde ao facto de os objectos não possuírem uma forma

    constante, o que resulta em diferenças nas perspectivas dos objectos captados pelas câmaras. O

    cubo da Figura 2.6 é representado de formas diferentes na imagem de referência e na candidata,

    isto resulta em erros de correspondência, pois alguns dos pixéis que formam o cubo representado

    na imagem de referência não possuem correspondente na imagem candidata.

    Outro erro comum ocorre em pixéis que representam objectos da região fronteira do plano de

    observação. Este erro surge, pois os pixéis da região fronteira apenas se encontram representados

    na imagem de referência e, como tal, não possuem correspondente na imagem candidata.

  • 2.3 Interpretação e Cálculo dos Parâmetros de Profundidade 9

    Por fim falta referir os erros decorrentes da reflexão especular, a qual ocorre quando existem

    objectos que se encontram espelhados em alguma região da imagem, o que resulta em erros no

    processo de correspondência, ao ser considerada como correspondente a reflexão e não o objecto.

    2.3 Interpretação e Cálculo dos Parâmetros de Profundidade

    Apresentados os dois passos fundamentais para o cálculo de informação tridimensional (cor-

    respondência e disparidade, já que o cálculo da distância real entre objectos é um passo opcional)

    e feita uma análise dos erros e teoria inerentes ao cálculo de correspondências, é apresentada nesta

    secção e nas seguintes uma visão geral de alguns dos métodos de cálculo de correspondência e

    disparidade, e das condições em que estes processos estão inseridos.

    Na realização de correspondência entre imagens é necessário estabelecer algumas considera-

    ções iniciais em relação ao ambiente em que estas estão inseridas e às câmaras utilizadas, conside-

    rações que afectam directamente a qualidade dos resultados obtidos, ao serem desprezados alguns

    factores que influenciam o cálculo de correspondências.

    As câmaras utilizadas para a captação das imagens estéreo não são exactamente iguais, po-

    dendo apresentar valores de ganho e ruído diferentes, como tal o mesmo pixel não apresenta um

    valor de intensidade igual em ambas as imagens, o que afecta a correspondência entre elas caso

    o algoritmo utilizado não seja insensível a estas diferenças. Além desse facto as câmaras não se

    encontram com o mesmo offset horizontal (as linhas epipolares não se encontram na mesma po-

    sição e orientação nos dois planos de observação), sendo necessário rectificá-las ou construir o

    algoritmo considerando esse factor.

    Para simplificar o processo de correspondências entre imagens são ignorados alguns dos condi-

    cionamentos que afectam o seu cálculo, isto se tal assunção permitir obter resultados aceitáveis

    para a aplicação alvo. Uma assunção normalmente feita, é considerar que os objectos e ambiente

    em análise são constituídos por superfícies lisas onde pode ser aplicada a teoria de Lambert, na

    qual as superfícies não alteram o seu aspecto com o ângulo de visão. Ou seja, é considerado que a

    mesma superfície não apresenta elevadas variações de intensidade, pois os seus pixéis encontram-

    se todos mais ou menos à mesma profundidade, e que os vários níveis de profundidade não se

    alteram com o ângulo de visão [12]. Por outras palavras, é considerado que a correspondência

    não sofre dos problemas representados na Figura 2.6.

    Estas são algumas das condicionantes externas ao cálculo de correspondências. Definido o

    modo como são tratadas, a determinação de correspondência pode ser feito de diversas formas.

    A correspondência entre pixéis pode ser calculada utilizando métodos densos ou métodos es-

    parsos. Os métodos densos calculam a similaridade para todos os pixéis da imagem, enquanto

    nos esparsos o cálculo é feito para uma determinada região previamente definida (as regiões de

    interesse deste método normalmente são definidas determinando os contornos dos objectos, e cal-

    culando a similaridade apenas para o interior destes) [13] [14]. Dentro destes métodos ainda pode

    ser feita uma pesquisa global, em que a procura é feita em toda a imagem, ou local, que reduz a

  • 10 Aspectos Básicos do Cálculo de Correspondências

    área de procura a uma região na qual existe uma grande probabilidade de encontrar correspondên-

    cia.

    Adicionalmente é possível efectuar o cálculo de correspondência utilizando mais do que duas

    câmaras, permitindo obter mais informação do que o cálculo através de imagens estéreo.

    Dependendo do método escolhido para o cálculo de correspondência o mapa de disparidade

    obtido é diferente. Quando são utilizados métodos esparsos obtêm-se mapas de disparidade 1D,

    úteis para determinar apenas movimentações na imagem, à semelhança do que acontece com so-

    nars e scanners laser. Com métodos densos o mapa de disparidade resultante é um mapa 2D muito

    mais informativo, no qual é possível saber a profundidade relativa de cada pixel da imagem [13]

    [14]. Se forem utilizadas múltiplas câmaras é possível efectuar a reconstrução de objectos 3D

    [12].

    2.4 Fases do Cálculo de Disparidades

    O cálculo de disparidades pode ser dividido em quatro fases: custo de correspondência entre

    pixéis; agregação desse custo numa área; cálculo da melhor disparidade; refinamento da estimativa

    de disparidade. Alguns algoritmos, como os locais, podem ser facilmente descritos por estas

    quatro fases, enquanto outros, como os globais, normalmente não incluem o passo de agregação

    mas antes minimizam uma função global. [12]

    Nas próximas secções são apresentadas algumas possibilidades para os cálculos efectuados

    em cada fase.

    2.4.1 Custo de Correspondência entre Pixéis

    O custo de correspondência entre pixéis ou determinação da sua similaridade pode ser feita

    aplicando vários tipos de funções, apresentando cada uma características diferentes no resultado

    final.

    O cálculo pode ser efectuado por simples diferença absoluta entre pixéis, diferenças quadradas

    ou pela correlação cruzada normalizada dos pixéis (três primeiras funções da Tabela 2.1 apesen-

    tada na página 14). Podem ser utilizadas também técnicas mais complexas, como as técnicas não

    paramétricas (Census e Rank, explicadas na secção 2.6).

    2.4.2 Agregação do Custo de correspondência

    Os resultados obtidos na fase anterior podem ser agregados sobre uma dada região de suporte.

    Os métodos locais realizam essa tarefa definindo uma janela como região de suporte e somando

    os custos de correspondência dos pixéis dessa janela.

    A região de suporte para a agregação dos custos de correspondência poder ser bidimensional,

    numa disparidade fixa (favorecendo imagens com superfícies fronto-paralelas) ou tridimensional,

    x-y-d, em que a terceira dimensão é referente à disparidade (suportando imagens com superfícies

    obliquas, estas resolvem o problema apresentado na Figura 2.6).

  • 2.4 Fases do Cálculo de Disparidades 11

    As funções de agregação para espaços bidimensionais usam janelas quadradas que se deslocam

    ao longo da imagem e janelas de tamanho adaptativo.

    Nas regiões de suporte tridimensional o cálculo da correspondência correcta de um pixel é

    feito utilizando a informação das várias disparidades candidatas, ou seja, a região de suporte além

    de uma variação ∆x e ∆y em torno do pixel em análise, possui uma variação ∆d em torno da dis-paridade considerada [15]. A quantidade de informação de disparidade utilizada pode ser definida

    pelo limite da sua diferença ou pelo limite do seu gradiente.

    2.4.3 Determinação da Melhor Disparidade

    Obtido o espaço de disparidades é necessário determinar a função que melhor representa as

    duas imagens. Esse cálculo pode ser feito de vários modos, dependendo se são utilizados métodos

    locais ou globais.

    No caso de serem utilizados métodos locais a ênfase é dada ao cálculo de correspondência

    e agregação, sendo a disparidade final obtida por uma simples escolha da função que apresenta

    menor custo de correspondência (método WTA - Winner Take All). Uma limitação deste método

    é que apenas estabelece uma correspondência única para a imagem de referência, mantendo a

    imagem candidata com várias possibilidades.

    Quando são utilizados métodos globais a maior ênfase é dada à fase de cálculo de disparidade.

    A maior parte destes métodos calculam a sua disparidade minimizando uma função global de

    energia, ou seja, o objectivo é encontrar o valor de disparidade que minimiza a energia global.

    A função de energia a minimizar pode ser obtida por

    E(d) = Edata(d)+λEsmooth(d)

    onde d representa a disparidade, Edata(d) o quão bem as imagens correspondem para essa dis-paridade e Esmooth(d) o modo como é analisada a imagem em termos de suavidade. O valor deEdata(d) é obtido por

    Edata(d) = ∑(x,y)

    C(x,y,d(x,y))

    em que C é a função de custo de correspondência, a qual é somada ao longo de toda a imagem,

    ∑(x,y) (dai a minimização ser global).Esmooth(d) pode ser obtido considerando apenas a diferença de disparidades dos pixéis vizinhos

    através de

    Esmooth(d) = ∑(x,y)

    ρ(d(x,y)−d(x+1,y))+ρ(d(x,y)−d(x,y+1))

    onde ρ e uma função crescente que representa a diferenca de disparidade. Ou considerandotambém a diferença de intensidades

  • 12 Aspectos Básicos do Cálculo de Correspondências

    Esmooth(d) = ρd(d(x,y)−d(x+1,y)) ·ρI(‖I(x,y)− I(x+1,y)‖)

    onde ρd é a função de diferença de disparidades, ρI é uma função decrescente que representaa diferença de intensidades, d(x,y) é a disparidade do pixel (x,y) e I(x,y) a sua intensidade.

    Este método (minimização da energia) apesar de bons resultados é bastante complexo. Um

    modo de manter a qualidade dos resultados minimizando a complexidade no cálculo, é a utilização

    de programação dinâmica, a qual através do cálculo de correspondência da imagem da esquerda

    na direita e da direita na esquerda consegue, por um processo de optimização global, determinar o

    mapa de disparidades com um menor custo que o método de minimização de energia, mas com a

    mesma qualidade de resultados.

    No entanto, este método necessita que os pixéis se encontrem pela mesma ordem nas duas

    imagens, pelo que não é possível aplicar em cenários em que os objectos alterem a ordem dos

    pixéis na projecção. A Figura 2.7 apresenta um caso onde a programação dinâmica não é aplicável,

    nesta observa-se que na imagem da direita a ordem dos pixéis é diferente da ordem na imagem da

    esquerda, tal ocorre devido à forma e disposição dos objectos. [4]

    Figura 2.7: Visibilidade e ordem de pixéis em diferentes projecções (segundo [4]).

    2.4.4 Refinamento da Estimativa de Disparidade

    Os resultados obtidos pelos passos anteriores não são suficientemente precisos para aplicações

    mais exigentes, necessitando por isso de um último passo de optimização. Isso pode ser feito atra-

    vés de cross checking, onde é feita a procura de correspondências da imagem da esquerda na direita

    e da direita na esquerda, e por comparação dos mapas de disparidades obtidos para cada imagem.

    Isto permite detectar erros de correspondência devido a pixéis escondidos e minimiza-los, por

    aplicação de filtros de média ou de outra metodologia que introduza informação de vizinhança

  • 2.5 Cálculo de Correspondências entre Imagens Estéreo Usando Métodos Densos 13

    nessas regiões.

    O processador implementado utiliza apenas os três primeiros passos no cálculo de dispari-

    dades. Uma vez que são utilizados métodos locais não existe qualquer função de energia a mini-

    mizar. Os restantes subcapítulos abordam os métodos utilizados na implementação do processador

    (métodos densos de procura local) e analisam os seus problemas.

    2.5 Cálculo de Correspondências entre Imagens Estéreo Usando Mé-todos Densos

    O cálculo de correspondência dos pixéis de uma dada imagem utilizando métodos densos

    exige que seja definida uma janela de um dado tamanho (W, L), a qual é utilizada para determinar

    a correspondência entre os dois pares de imagens do seguinte modo:

    Para cada janela na imagem de referência procura-se pela janela candidata correspondente em

    toda a imagem candidata (ver Figura 2.8). Essa procura é feita determinado o mínimo da função

    de correspondência, que pode ser obtida por uma das expressões apresentadas na tabela 2.1 ou

    na subsecção 2.6. A informação de profundidade obtém-se determinando a diferença de posição

    entre a janela de referência e a sua correspondente.

    Figura 2.8: Procura pela janela correspondente.

    Do referido no parágrafo anterior conclui-se que, grande parte do processamento no cálculo

    de informação tridimensional encontra-se na determinação da correspondência entre janelas de

    referência e janelas candidatas. Um modo de reduzir parte deste processamento é diminuir a área

    de procura por janelas candidatas, aplicando métodos de procura locais. Para tal é considerada a

    teoria de geometria epipolar, a qual permite reduzir a procura à linha epipolar. Para facilitar a pro-

    cura de correspondências ao longo dessa linha as imagens são rectificadas, ou seja, são utilizadas

    imagens com o mesmo offset horizontal, permitindo assim nivelar as linhas epipolares de modo a

    ficarem com a mesma posição e orientação (ver Figura 2.9) [5].

    A Tabela 2.1 apresenta algumas das funções disponíveis para o cálculo de correspondência

    entre janelas de tamanho w. Nestas equações I1 e I2 representam a intensidades dos pixéis na

    janela de referência e na janela candidata, respectivamente, u e v representam o pixel em análise,

  • 14 Aspectos Básicos do Cálculo de Correspondências

    Figura 2.9: Procura de janela correspondente em imagens com o mesmo offset horizontal (de [5]).

    x e y o desvio da janela candidata relativamente à de referência e ∑(u,v)∈w representa a soma aolongo da janela.

    A função de Hamming faz o cálculo do número de bits diferentes entre os vectores I′1 e I

    ′2 (a

    construção desses vectores é explicada no subsecção 2.6).

    Função de correspondência Abreviatura Expressão

    Soma das diferenças absolutas SAD ∑(u,v)∈w |I1(u,v)− I2(u+ x,v+ y)|

    Soma das diferenças quadradas SSD ∑(u,v)∈w(I1(u,v)− I2(u+ x,v+ y))2

    Correlação normalizada NCC ∑(u,v)∈w(I1(u,v)×I2(u+x,v+y))

    ∑(u,v)∈w(I12(u,v)×I22(u+x,v+y))

    Census HAM ∑(u,v)∈w HAMMING(I′1(u,v), I

    ′2(u+ x,v+ y))

    Tabela 2.1: Expressões de cálculo de correspondência (segundo [5]).

    2.6 Técnicas não Paramétricas (Census e Rank)

    Nesta secção serão apresentadas as técnicas não paramétricas de cálculo de correspondência.

    Estas diferem dos cálculos paramétricos definidos anteriormente na forma como abordam a ima-

    gem.

    Enquanto os métodos paramétricos aplicam directamente as funções da tabela 2.1 às imagens

    em análise, os métodos não paramétricos alteram as imagens de modo a introduzir informação

    sobre a vizinhança dos pixéis no cálculo.

    A diferença em termos de resultados entre estas duas abordagens é que, os cálculos não para-

    métricos apresentam alguns erros nos pontos limite dos objectos, ou seja, o cálculo de profundi-

    dade para os pixéis que fazem a ligação entre superfícies apresenta erros, resultando normalmente

    num mapa de disparidade distorcido nessa região. As técnicas não paramétricas melhoram os

    resultados desses cálculos através da introdução de informação de vizinhança ( [5], [6]). Na Fi-

    gura 2.10, que representa um quadrado sobre uma superfície, pode ser verificada essa melhoria

    de resultados.

    Existem dois tipos de técnicas não paramétricas, a transformada rank e a transformada census.

  • 2.6 Técnicas não Paramétricas (Census e Rank) 15

    Figura 2.10: Mapa de disparidade obtido pelo método correlação normalizada, transformada ranke pela transformada census, respectivamente (de [6]).

    Na transformada rank a intensidade dos pixéis é substituída por um número inteiro, o qual

    representa o número de pixéis na vizinhança do pixel em análise que têm uma intensidade inferior

    à do pixel central.

    Na transformada census cada pixel é substituído por um vector de bits, o qual representa a

    vizinhança do pixel. Se a intensidade de um dado pixel é menor que a do pixel central a sua

    posição no vector de bits é colocada a um, caso contrario é colocada a zero.

    Normalmente após ser aplicada a técnica de transformada rank é calculada a disparidade uti-

    lizando a função SAD ou SSD. No caso da transformada census é calculada a distância Hamming

    entre os dois vectores de bits.

    Analisando implementações paramétricas e não paramétricas verifica-se que realizando uma

    das transformações referidas obtêm-se, para além de melhores resultados em pixéis de transição,

    circuitos com menor área (porque os cálculos da função correspondência vão passar a ser feitos

    com um menor número de bits), isto quando os valores de disparidade são suficientemente ele-

    vados para tornarem o custo de transformação pequeno quando comparado com o custo total de

    implementação. No entanto tornam o processo de correspondência mais lento, pois necessitam de

    tempo para mais uma unidade de processamento [5].

    Para finalizar este capítulo é apresentado um resumo dos passos a seguir para o cálculo de

    correspondências entre imagens estéreo utilizando métodos densos de procura local:

    • Define-se uma janela de um dado tamanho;

    • Antes da aplicação das funções de correspondência a imagem pode ser alterada através dastécnicas não paramétricas (ponto opcional);

    • Para essa janela procura-se pela janela correspondente com a mesma posição horizontal,aplicando uma das equações expressas na tabela 2.1 e determinando a que apresenta menor

    valor;

    A definição da janela para o cálculo de correspondência é um ponto de grande importância,

    pois se o seu tamanho não for definido correctamente o resultado final conterá erros. Como tal a

    secção 2.7 identifica os erros que ocorrem nesse caso e apresenta uma solução.

  • 16 Aspectos Básicos do Cálculo de Correspondências

    2.7 O Problema da Definição do Tamanho da Janela

    Um dos principais problemas no cálculo de correspondência entre janelas utilizando méto-

    dos densos é a definição do seu tamanho, pois este cálculo apresenta erros tanto para janelas de

    tamanho reduzido como para janelas de tamanho grande.

    Se a janela for muito pequena a função de cálculo de correspondência vai possuir vários mí-

    nimos locais, pois deste modo a variação de intensidade dos pixéis dessa janela é tão reduzida

    que os cálculos efectuados são bastante afectados de ruído. Assim existem várias janelas com um

    comportamento semelhante, o que se traduz em várias soluções credíveis para a correspondência.

    Se a janela for muito grande e existirem pixéis de diferentes objectos com diferentes profun-

    didades, ocorrerão erros associados ao facto de estarem a ser realizadas comparações entre janelas

    que possuem muita variação de intensidade, pois aglomeram secções de vários objectos.

    Analisando a Figura 2.11(b) verifica-se que nesta a função foi calculada com uma janela

    grande, pois apesar de possuir um único mínimo este não representa a verdadeira correspondência

    entre as imagens, a qual é representada pela linha tracejada.

    Por outro lado, a função de correspondência na Figura 2.11(a) possuí vários mínimos locais,

    representados pelas linhas a tracejado, tornando-se difícil definir qual deles representa a verdadeira

    correspondência entre as janelas, pois a diferença entre os mínimos é ínfima. Isto ocorre porque a

    janela possui um tamanho inferior ao devido.

    (a) Janela pequena. (b) Janela grande.

    Figura 2.11: Erros resultantes do tamanho da janela (de [1])

    As afirmações dos parágrafos anteriores podem ser justificadas analisando as considerações

    teóricas que são feitas sobre as imagens. Estas considerações definem um modelo estatístico que

    pretende simular, da melhor maneira possível, o comportamento das imagens. A subsecção 2.7.1

    apresenta essa justificação.

    2.7.1 Teoria Associada aos Erros Resultantes do Tamanho da Janela

    Os erros de correspondência inerentes ao tamanho da janela utilizada são intuitivamente com-

    preendidos, no entanto torna-se necessário justificá-los teoricamente. Nesta secção é apresentado

    um modelo estatístico que explica esse comportamento.

    O modelo estatístico estudado considera uma distribuição Gaussiana de média nula para o

    comportamento da disparidade dentro de uma janela e para a diferença de intensidade de pixéis

  • 2.7 O Problema da Definição do Tamanho da Janela 17

    entre a janela de referência e a candidata. A única diferença nas distribuições Gaussianas encontra-

    se na variância, a qual para a disparidade é apenas dependente da distância entre os pixéis (Dis-

    tância entre pixéis × Flutuação de disparidade) e para a intensidade é dependente da disparidade,ruído da imagem e de um parâmetro que indica a flutuação de intensidade na imagem (ruído+Flutuação de intensidade × Variância da disparidade) [7].

    Das distribuições Gaussianas apresentadas no parágrafo anterior, facilmente se consegue com-

    preender a variabilidade dos pixéis e o porquê dos erros inerentes a janelas pequenas e janelas

    grandes.

    Se a janela for demasiado pequena a diferença de intensidade entre o pixel da imagem candi-

    data e de referência será principalmente afectado de ruído e, como tal, o cálculo de SAD, ou de

    outra função de correspondência, apresentará valores idênticos para diferentes janelas (resultado

    da equação é constante e igual a ruído), que se traduzem nos vários mínimos locais apresentados

    na Figura 2.11(a). Por outro lado, se a janela for muito grande a variância associada à disparidade

    e as flutuações de intensidade também o vão ser (pixéis dentro da janela têm profundidades e in-

    tensidades distintas), a qual afecta a diferença de intensidades, logo o cálculo de correspondência

    virá afectada de grandes diferenças de disparidade o que origina os erros referidos representados

    na Figura 2.11(b).

    Para resolução deste problema foram desenvolvidos algoritmos que modificam dinamicamente

    o tamanho da janela e utilizam a informação dos pixéis vizinhos à janela considerada. O modo

    como os pixéis vizinhos influenciam a correspondência é analisada em 2.7.2 e os algoritmos que

    variam dinamicamente o tamanho da sua janela são apresentados no capítulo 3.

    2.7.2 Influência de Vizinhança na Resolução de Erros de Correspondência

    A optimização de resultados considerando a influência da vizinhança dos pixéis em análise já

    foi demonstrada em 2.6. No entanto, para além dos métodos e melhorias de resultados referidos

    em 2.6, a informação de vizinhança pode ser utilizada de outras formas e aplicada para resolver o

    problema de definição do tamanho da janela.

    A questão que se coloca na utilização de informação de vizinhança é saber quais os pixéis a

    considerar. A resposta a essa questão depende do algoritmo utilizado e das considerações feitas

    sobre a imagem, existindo quatro possibilidades [7]:

    • Podem ser considerados apenas os pixéis que se encontram dentro de uma dada vizinhançado pixel central e que tem a mesma disparidade deste (critério de Marr-Poggio representado

    na Figura 2.12(a)).

    • A restrição de disparidade pode ser levantada e podem ser considerados também os pixéisdessa vizinhança que possuem disparidades dentro de um dado limite (Critério de Grimson

    representado na Figura 2.12(b)).

    • Pode ser considerado que os únicos pixéis que devem influenciar o cálculo de correspon-dência são aqueles que apresentam uma dada razão disparidade/distância do pixel central.

  • 18 Aspectos Básicos do Cálculo de Correspondências

    Sendo que os pixéis numa vizinhança mais próxima e com melhor correspondência influen-

    ciam mais o cálculo (Critério de Pollard-Mayhew-Frisby representado na Figura 2.12(c)).

    • A última hipótese considera que a disparidade de pixéis que se encontram sobre o mesmoobjecto deve ser idêntica. Ou seja, pixéis com disparidades idênticas devem influenciar-se

    uns aos outros, enquanto pixéis com disparidades distintas não devem interagir (influência

    provém apenas dos pixéis do mesmo objecto). Neste caso a influência é inversamente pro-

    porcional à diferença de disparidades e quanto mais distante estão os pixéis do pixel central

    menos influência têm (Critério de Prazdny representado na Figura 2.12(d)).

    (a) Critério de Marr-Poggio. (b) Critério de Grimson.

    (c) Critério de Pollard-Mayhew-Frisby.

    (d) Critério de Prazdny.

    Figura 2.12: Influência de pixéis vizinhos no cálculo de correspondência(segundo [7])

    A figura 2.12 resume os quatro modos de como pode ser considerada a influência dos pixéis

    vizinhos no cálculo de correspondências. A Figura 2.12(a) representa o caso em que apenas pixéis

    dentro de uma dada distância e com disparidade igual à do pixel central são considerados, linha

    da figura; a Figura 2.12(b) representa o segundo caso verificando-se que pixéis com disparidade

    diferente do pixel central, desde que dentro de um certo limite, são considerados, rectângulo; a

    Figura 2.12(c) representa o caso em que são considerados pixéis com um certo gradiente dis-

    paridade/distância, sendo esse gradiente representado pelo declive dos triângulos; por fim a Fi-

    gura 2.12(d) representa o caso em que se considera que pixéis correspondentes ao mesmo objecto

    têm disparidades idênticas e, como tal, têm que ser considerados, nesta verifica-se que quanto mais

    distantes estão os pixéis menos são tidos em consideração (a partir de uma certa distância entre

    pixéis a diferença de disparidade em relação ao pixel central torna-se mais restrita, ou seja, para

    distâncias maiores a diferença de disparidades em relação ao pixel central têm que ser menor, para

    que esses pixéis possam ser tidos em consideração).

  • 2.7 O Problema da Definição do Tamanho da Janela 19

    Das quatro possibilidades referidas para a determinação da influência dos pixéis no cálculo de

    correspondências, o critério de Prazdny é o que melhores resultados proporciona, se for conside-

    rado que os vários pixéis que pertencem a um objecto possuem a mesma disparidade. Na realidade

    esta é uma situação comum e nenhum dos outros critérios tem esse factor em consideração, sendo

    bastante dependentes da distância entre pixéis e, como tal, expostos a erros que resultam da utiliza-

    ção no cálculo de correspondências da informação de pixéis vizinhos com disparidades diferentes

    da do pixel em análise.

    No processador implementado é utilizada uma simplificação do critério de Prazny, uma vez

    que é tido em consideração que os pixéis que influenciam o cálculo de correspondências pertencem

    ao mesmo objecto do pixel em análise.

  • 20 Aspectos Básicos do Cálculo de Correspondências

  • Capítulo 3

    Cálculo de Disparidade com Janelas deTamanho Variável

    Neste capítulo são estudados vários algoritmos que dinamicamente alteram o tamanho da ja-

    nela de correspondência, de modo a resolver os problemas discutidos na secção 2.7. Adicio-

    nalmente são apresentadas duas arquitecturas de implementação desta classe de algoritmos em

    Hardware.

    3.1 Descrição de Algoritmos

    Os algoritmos de cálculo de correspondências que variam dinamicamente o tamanho da sua

    janela diferem entre si na definição do estado inicial da janela, que pode ser definida com o ta-

    manho máximo e depois diminuída, ou com um tamanho mínimo e iterativamente aumentada.

    Outros aspectos diferenciadores destes algoritmos são a função de custo utilizada e a condição de

    paragem.

    Nesta secção são apresentados algoritmos que diferem entre si nestes três factores. O primeiro,

    descrito em [1], inicia o seu cálculo com uma janela de tamanho máximo e possui como função de

    custo a métrica SAD; no segundo a condição inicial é diferente, uma vez que este inicia o cálculo

    com uma janela de tamanho mínimo, a condição de paragem e métrica utilizada é a mesma do

    anterior [8]; por fim o terceiro algoritmo difere dos restantes tanto na métrica utilizada, SSD em

    vez de SAD, como na condição de paragem, confiança na estimativa do incremento da janela e

    não um tamanho específico [7].

    3.1.1 Janela Inicial de Tamanho Máximo

    Neste algoritmo a pesquisa é iniciada com uma janela de um dado tamanho, determinado

    empiricamente, que é iterativamente reduzido. Durante o processo de correspondência entre as

    duas imagens é tida em consideração a informação dos pixéis vizinhos à janela em análise, de

    modo a minimizar o número de soluções possíveis.

    21

  • 22 Cálculo de Disparidade com Janelas de Tamanho Variável

    Foram referidas em 2.7.2 quatro possibilidades na influência de pixéis vizinhos para o cálculo

    de correspondência. Neste algoritmo é tido em consideração o modo proposto por Prazdny, ou

    seja, é considerado que pixéis referentes ao mesmo objecto possuem disparidades idênticas e logo

    devem ser tidos em consideração no cálculo de correspondência.

    Os vários passos que constituem o algoritmo são os seguintes:

    1. Inicia-se o algoritmo com uma janela de tamanho w (empiricamente determinado) e dividem-

    se as imagens (candidata e de referência) numa grelha que representa as várias janelas de

    referência e candidatas, representadas pela sigla JR e JC na Figura 3.1.

    Figura 3.1: Espaço de janelas de referência e janelas candidatas (segundo [1]). Na imagem da es-querda os quadrados representam todas as janelas de referência e na imagem da direita encontram-se os cinco níveis horizontais de procura por janelas candidatas.

    2. Calcula-se a correspondência entre a janela de referência e as várias janelas candidatas. Para

    tal aplica-se a equação 3.1 às várias janelas candidatas e determina-se a que apresenta menor

    resultado.

    j=−(w−1)/2

    ∑(w−1)/2

    (i=−(w−1)/2

    ∑(w−1)/2

    |Ir(Ur + i,V r + j)− Ic(Uc+ i,V c+ j)|) (3.1)

    Ir e Ic representam a intensidade dos pixéis na imagem de referência e candidata, respecti-

    vamente, e U e V representam a posição do pixel central da janela em consideração.

    3. Calcula-se a disparidade entre a janela de referência e a janela correspondente (janela can-

    didata com menor valor de SAD), obtendo-se a matriz de disparidades representada na Fi-

    gura 3.2.

    4. Diminui-se o tamanho da janela para metade, obtendo-se a grelha de janelas de referência

    presente na imagem da esquerda da Figura 3.3 e calcula-se a correspondência das novas

    janelas tendo em consideração a influência dos pixéis vizinhos, a qual como foi referido

    segue o paradigma de Prazdny. Para aplicar este paradigma é necessário verificar que a nova

    janela de tamanho w/2 vai estar inserida numa janela de tamanho w e possuir outras três

  • 3.1 Descrição de Algoritmos 23

    Figura 3.2: Matriz de disparidades para a imagem de referência após cálculo de correspondência(segundo [1]).

    janelas w como vizinhas (quatro janelas de tamanho w e uma de tamanho w/2 delimitadas

    com uma linha mais densa na imagem da esquerda da Figura 3.3) e assumir que a janela

    de tamanho w/2 se encontra sobre o mesmo objecto que as quatro janelas de tamanho w

    referidas. Sendo assim, a informação de vizinhança é aplicada considerado que a janela

    correspondente à de tamanho w/2 se encontra a uma distância da de referência definida por

    ±d, em que ±d representa uma variação em torno da disparidade das janelas w vizinhas.

    A consideração feita no parágrafo anterior pode ser facilmente compreendida, tendo em

    atenção que se as janelas de tamanho w, que envolvem a janela de tamanho w/2, têm cor-

    respondência a uma distância definida pela sua disparidade, é muito provável que a nova

    janela tenha a sua correspondência numa distância próxima dessa (pois a nova janela não é

    mais que uma porção da anterior).

    5. Diminui-se o tamanho da janela e repetem-se os passos 2, 3 e 4 até w = 1.

    3.1.2 Janela Inicial de Tamanho Mínimo

    Nesta subsecção é apresentada uma versão do algoritmo 3.1.1, onde as diferenças se encontram

    apenas na fase inicial do cálculo. Este é iniciado com uma janela de tamanho mínimo que é

    iterativamente aumentada, sendo o resultado obtido por este processo melhorado por aplicação do

    algoritmo 3.1.1.

    Os vários passos que constituem o algoritmo são os seguintes:

    1. Iniciar o algoritmo com a janela de menor tamanho possível.

    2. Calcular a correspondência entre a janela de referência e as várias janelas candidatas. Para

    tal aplica-se a equação 3.1 às várias janelas candidatas e determina-se a que apresenta menor

    resultado.

    3. Calcular a confiança nessa correspondência pela equação.

  • 24 Cálculo de Disparidade com Janelas de Tamanho Variável

    Figura 3.3: Espaço de janelas de referência de tamanho w/2 e de janelas candidatas (segundo [1]).Pode-se verificar a influência dos pixéis vizinhos no cálculo de correspondência: As janelas can-didatas consideradas são aquelas que se encontram dentro da distância d da janela de referên-cia (imagem da direita), em que d representa as disparidades das janelas de tamanho w (D1,2;D1,3;D2,2;D2,3 na imagem da esquerda).

    Rw+i =(Fw+i(Q1w+i)−Fw(Q2w+i))

    ((w+ i)2), (3.2)

    onde Fw+i representa a função de correspondência da janela de tamanho w + i, Q1w+i repre-senta o pixel correspondente para a janela de tamanho w+ i e Q2w+i representa o pixel em quea função possui o seu segundo menor mínimo, como representado na imagem da esquerda

    da Figura 3.4.

    Figura 3.4: Separação dos mínimos da função de correspondência por aumento do tamanho dajanela (de [8]). Imagem da esquerda representa a função com janelas de tamanho w, imagem dadireita representa a função com janelas de tamanho w/2 .

    4. Se a confiança na correspondência calculada para a janela actual, for maior do que a confiança

    calculada para a janela da iteração anterior e o pixel de correspondência na nova janela conti-

    nuar a ser o mesmo, esse pixel é tido como correspondente. Caso contrário incrementa-se

  • 3.1 Descrição de Algoritmos 25

    o tamanho da janela de duas unidades (w = w + 2) e repetem-se os passos 2-3, até as duascondições referidas serem verificadas.

    5. Aplica-se o algoritmo descrito em 3.1.1 à janela resultante dos passos anteriores.

    Este algoritmo permite através do seu processo inicial de incremento da janela afastar os vários

    mínimos locais da função de correspondência (Figura 3.4), o que remove a ambiguidade presente

    no seu cálculo quando são utilizadas janelas pequenas, e melhorar esse resultado removendo os

    erros associados a janelas grandes (aplicando o algoritmo descrito em 3.1.1). No entanto, em

    termos de tempo de processamento é mais demorado que o algoritmo 3.1.1, pois faz praticamente

    o dobro dos cálculos de SAD (calcula SAD para a fase inicial de aumento do tamanho da janela e

    repete esses cálculos na aplicação do algoritmo 3.1.1).

    3.1.3 Cálculo de Disparidades por Estimativas do seu Incremento

    Este algoritmo faz uso das expressões obtidas nas considerações estatísticas feitas sobre a ima-

    gem em [7]. Estas equações representam a estimativa do incremento de disparidade (equação 3.3)

    e a incerteza dessa estimativa (equação 3.4). Os valores de α f e αd nestas equações representam avariação de intensidade e disparidade dentro da janela considerada, respectivamente, e são obtidas

    pelas expressões 3.5 e 3.6.

    ∆̂d =∑i, j∈w

    f1(xi,y j)− f2(xi+d0(0,0),y j) ∂∂x f2(xi+d0(0,0),y j)

    2σ2n +α f αd√

    x2i +y2j

    ∑i, j∈w( ∂∂x f2(xi+d0(0,0),y j))

    2

    2σ2n +α f αd√

    x2i +y2j

    (3.3)

    σ2∆d =1

    ∑i, j∈w( ∂∂x f2(xi+d0(0,0),y j))

    2

    2σ2n +α f αd√

    x2i +y2j

    (3.4)

    α̂ f =1

    Nw∑

    i, j∈w(

    ∂∂x

    f2(xi +d0(0,0),y j))2 (3.5)

    α̂d =1

    Nw∑

    i, j∈w

    (d0(xi,y j)−d0(0,0))2√x2i + y

    2j

    (3.6)

    Uma vez que a dedução destas expressões é bastante complexa e feita à custa de teoremas

    estatísticos que estão fora do âmbito deste trabalho, os parágrafos seguintes apenas fazem uma

    apresentação do significado de cada um dos termos que as constituem, encontrando-se em [7] uma

    explicação mais detalhada da sua dedução.

  • 26 Cálculo de Disparidade com Janelas de Tamanho Variável

    As expressões 3.3 e 3.4 são obtidas através do cálculo da média e da variância da probabilidade

    condicional da disparidade ∆d , dada uma certa diferença entre dois pixéis das imagens. Ou seja,sabendo que dois pixéis diferem de k qual é a probabilidade da disparidade associada ser ∆d . Assimas expressões 3.3 e 3.4 podem ser encaradas como representando a estimativa do incremento de

    disparidade e a incerteza dessa estimativa, respectivamente.

    Relativamente a cada um dos termos presentes nas equações: o termo f1(xi,y j)− f2(xi +d0(0,0)), presente na expressão 3.3, representa a diferença de intensidade entre os pixéis xi e yinas imagens 1 e 2; ∂∂x f2(xi +d0(0,0),y j), presente nas equações 3.3 a 3.4, a variação de intensidade

    na imagem 2; 2σ2n + α f αd√

    x2i + y2j , presente em 3.5 e 3.6, a média da diferença de intensidades

    entre as duas imagens; Nw, presente nas expressões 3.5 e 3.6, representa o número de pixéis da

    janela em consideração; por fim ∑i, j∈w representa o somatório ao longo da janela considerada.Definidas as expressões para o cálculo de estimativas de disparidade, os vários passos do

    algoritmo são como se segue:

    1. Iniciar o cálculo com uma disparidade d0(x,y), obtida por aplicação de SSD a janelas coma mesma posição horizontal (ou outro método menos sofisticado de correspondência);

    2. Calcular a janela de tamanho óptimo, que é aquela que garante um incremento de dispari-

    dade com menor incerteza. Essa janela é obtida através dos seguintes passos:

    (a) Iniciar correspondência com uma janela 3×3 centrada no pixel em análise e calculara incerteza associada a essa janela usando as equações 3.4 - 3.6;

    (b) Expandir a janela um pixel numa direcção e calcular a incerteza da janela resultante.

    Efectuar o mesmo para as restantes direcções (ver Figura 3.5).

    Figura 3.5: Expansão da janela (segundo [7]).

    Se a incerteza obtida por expansão numa das direcções for superior à anterior a ex-

    pansão nessa direcção deixa de ser permitida;

    (c) Comparar o valor de incertezas obtido por expansão em cada direcção e determinar o

    menor. Expandir a janela um pixel nessa direcção e repetir o passo 2(b) até a expansão

    em todas as direcções se tornarem proibidas;

  • 3.2 Implementação Física 27

    (d) Calcular o novo valor de disparidade por di+1(x,y) = di(x,y) + ∆d(x,y) e repetir oponto 2 até a disparidade convergir, ou ser atingido um determinado número de itera-

    ções;

    O algoritmo referido tem que ser aplicado a todos os pixéis da imagem.

    Neste algoritmo a correspondência e disparidade para um pixel é obtida por um processo

    iterativo, que efectua diferentes saltos de disparidade dependentes da sua incerteza, e utiliza como

    região de suporte uma janela quadrilátera.

    Apesar dos poucos erros presentes no mapa de disparidade obtido, este algoritmo é muito

    complexo computacionalmente, devido às equações utilizadas para calcular as estimativas de in-

    crementos de disparidade e a incerteza associada.

    3.2 Implementação Física

    Devido às necessidade de tempo real das aplicações do cálculo de informação de profundi-

    dade, torna-se necessário paralelizar o processamento de correspondências, de modo a acelerar o

    processo de cálculo de disparidades. Para tal é necessário implementar os algoritmos referidos em

    hardware, pois apenas esta implementação oferece a velocidade de processamento e paralelização

    necessária.

    Em algoritmos de processamento de imagem, como os estudados, o paralelismo pode ser

    aplicado ao nível da janela e/ou do pixel.

    No paralelismo ao nível da janela o cálculo de SAD, ou outra função de correspondência, é

    feito em paralelo para todas as janelas candidatas com a mesma posição horizontal, como repre-

    sentado na Figura 3.6. Nesta, verifica-se que para as M possíveis janelas candidatas são efectuados

    simultaneamente M cálculos de SAD.

    No paralelismo ao nível do pixel, as diferenças absolutas dos SAD, ou o primeiro passo de

    outra função de correspondência, é calculado em paralelo para os diferentes pixéis numa janela,

    por exemplo, para uma janela de 3×3 são necessários 9 unidade de cálculo de SAD, um para cadapixel. A Figura 3.7 representa esta arquitectura, verificando que para cada iteração é iniciado o

    cálculo de SAD para todos os pixéis das janelas de um novo par correspondente, isto é, constituído

    pela janela de referência em análise e possível janela correspondente.

    Uma vez que o tamanho da janela, nos algoritmos considerados, varia iterativamente ao longo

    do processamento é necessário ter algum cuidado na determinação do paralelismo a aplicar ao

    circuito.

    Se for aplicado um elevado grau de paralelismo, tendo em consideração apenas o cálculo de

    correspondências para janelas grandes, ao ser diminuído o tamanho da janelas a maior parte das

    unidades de processamento deixam de ser utilizadas e, como tal, obtém-se um circuito muito

    complexo e com elevado paralelismo, mas em que as várias unidades de processamento que o

    constituem possuem um índice de utilização muito baixo. Sendo assim, deve ser atingido um

    ponto de equilíbrio entre o grau de paralelismo do circuito e a percentagem de utilização das suas

    unidades de processamento [1] [8].

  • 28 Cálculo de Disparidade com Janelas de Tamanho Variável

    Figura 3.6: Paralelismo ao nível da janela (segundo [8]).

    Figura 3.7: Paralelismo ao nível do pixel (segundo [8]).

    A Figura 3.8 ilustra o problema referido no parágrafo anterior, em que existe uma utilização de

    100% dos circuitos para a janela inicial, mas ao ser diminuído o seu tamanho mais de metade dos

    circuitos deixam de ser utilizados. Na Figura, AD representa a unidade de cálculo de diferenças

    absolutas do método SAD, Adder1 e Adder2 a soma das diferenças por colunas e Adder3 é o

    somatório final.

    Considerando os dois níveis de paralelismo este pode ser aplicado de dois modos distin-

    tos: Paralelismo ao nível do pixel e da janela (Window-parallel and Pixel-parallel Architecture,

    WPPP) [1]; Paralelismo apenas ao nível da janela (Pixel-Serial and Window-Parallel Architecture,

    PSWP) [8].

    Nas secções seguintes é feito a análise destas arquitecturas.

    3.2.1 Window-Parallel and Pixel-Parallel Architecture

    A arquitectura de SAD desta implementação é exemplificada na Figura 3.9, na qual se verifica

    que para uma janela de tamanho 4 são utilizados 16 AD e 15 ADD. Diminuindo o tamanho da

  • 3.2 Implementação Física 29

    Figura 3.8: Razão de utilização de circuitos quando é utilizado elevado paralelismo (de [8]). Naimagem da esquerda todos os circuitos são utilizados, ao diminuir o tamanho da janela (imagemda direita) grande parte dos circuitos fica inutilizado.

    janela para metade o número de módulos de cálculo AD mantém-se, alterando apenas o número

    de módulos ADD. Ou seja, nesta arquitectura a utilização de AD (diferenças absolutas) é mantida

    constante.

    A eficiência na utilização de recursos desta arquitectura é conseguida através da aplicação

    de paralelismo no cálculo de SAD. Analisando com mais cuidado a Figura 3.9, verifica-se que

    para a janela de tamanho 4 é calculado um SAD de cada vez, enquanto para a janela com metade

    do tamanho são calculados quatro SAD simultaneamente. Deste modo, aproveitando os recur-

    sos já existentes para o cálculo de um SAD de janelas grandes, calculam-se vários SAD quando

    o tamanho desta diminui para metade, garantindo que todas as unidades de cálculo estão a ser

    utilizadas permanentemente.

    (a) SAD da janela de correspondência de tamanho 4.

    (b) SAD da janela de correspondência de tamanho 2.

    Figura 3.9: Fluxo de dados para arquitecturas WPPP (de [1]).

    O principal problema em implementações WPPP é a complexidade das interconexões entre

    os módulos de memória e as unidades funcionais: quanto maior for o nível de paralelismo mais

    complexas serão as interconexões. Para resolução deste problema surgem duas arquitecturas de

  • 30 Cálculo de Disparidade com Janelas de Tamanho Variável

    paralelismo dentro do WPPP, paralelismo ao nível da janela candidata e paralelismo ao nível das

    janelas de referência e candidata.

    3.2.1.1 Paralelismo ao Nível da Janela Candidata

    No paralelismo ao nível da janela candidata os SAD são calculados em paralelo para cada ja-

    nela candidata diferente mantendo a janela de referência. Essa arquitectura pode ser implementada

    como representado na Figura 3.10.

    Analisando a Figura 3.10(a), observa-se o paralelismo referido no cálculo de SAD, ou seja,

    quando o tamanho da janela passa para metade são processadas duas janelas candidatas distintas

    para a mesma janela de referência. No entanto este tipo de implementação origina interligações

    complexas, como representado na Figura 3.10(c).

    A complexidade de interligações resulta do facto de os pixéis da janela de referência mudarem

    à medida que muda o tamanho da janela. Analisando a Figura 3.10(b) verifica-se que para a

    imagem de tamanho 4 são utilizados os pixéis R1-R4 e R8-R11 e diminuindo o tamanho da janela

    para metade os pixéis a considerar passam a ser R1-R2 e R8-R9, fazendo com que as AD que

    processam os vários pixéis da janela candidata estejam associados a pixéis diferentes da imagem

    de referência, consoante a janela tem o tamanho original ou metade.

    3.2.1.2 Paralelismo ao Nível das Janelas de Referência e Candidata

    No paralelismo ao nível da janela candidata e de referência são calculados SAD para pares

    de janelas candidatas e de referência com a mesma disparidade. Esta arquitectura permite obter

    circuitos com interligações menos complexas como pode ser observado na Figura 3.11.

    O modo como é efectuado o paralelismo nesta arquitectura encontra-se representado na Fi-

    gura 3.11(a), nesta pode-se observar que quando o tamanho da janela passa para metade a janela

    JR1 vai ser comparada com a janela JC1 enquanto, simultaneamente, a janela JR2 vai ser compa-

    rada com a janela JC2. Deste modo, os pixéis da janela candidata vão ser sempre processados com

    os mesmos pixéis da janela de referência, tal como representado na Figura 3.11(b)), isto porque

    são usados pares de janelas com a mesma disparidade.

    Com esta arquitectura obtém-se uma interligação directa entre o pixel da imagem de referência

    e a AD que o vai comparar com o pixel da janela candidata, o que resulta na arquitectura bastante

    mais simples representada na Figura 3.11(c).

    3.2.2 Pixel-Serial and Window-Parallel Architecture

    Nesta implementação os SAD de uma janela candidata são calculados em série para cada pixel,

    sendo o paralelismo aplicado no cálculo de SAD para cada janela candidata, como representado na

    Figura 3.12. Nesta pode-se observar que a cada instantes Sx é calculado o AD para várias janelas

    candidatas (Cx), simultaneamente e à medida que o passo Sx incrementa é efectuado o cálculo para

    um novo pixel dessa janela (Cy).

  • 3.2 Implementação Física 31

    (a) Paralelismo no cálculo de SAD.

    (b) Distribuição de pixéis pelos módulos de cálculo de diferençasabsolutas.

    (c) Interligação entre memória e módulos de cálculo de diferen-ças absolutas.

    Figura 3.10: Paralelismo ao nível da janela candidata em arquitecturas WPPP (segundo [1]).Na Figura 3.10(a) e 3.10(b) verifica-se que os pixéis candidatos são comparados com pixéis dereferência diferentes quando o tamanho da janela diminui, o que origina o circuito complexode 3.10(c).

    Esta implementação permite obter uma maior razão de utilização das várias unidades de cál-

    culo do circuito (em que razão de utilização representa, a relação entre o tempo durante o qual

    cada unidade de processamento é utilizada e o tempo total de processamento, ou seja, indica quais

    as unidades de cálculo que estão a fazer uma utilização pouco eficiente dos recursos disponíveis)

    e interligações mais simples, quando comparado com as arquitecturas WPPP, mas menor parale-

    lismo.

    Conclui-se da análise efectuada, que na implementação física dos algoritmos de correspon-

    dência com variação dinâmica do tamanho da janela, é necessário ter em consideração a razão

    de utilização dos vários elementos do circuito e o paralelismo necessário para que se obtenha a

    rapidez de processamento necessária às aplicações de tempo real. O algoritmo seguido como re-

    ferência propõe uma arquitectura WPPP, uma vez que garante um maior paralelismo e como tal

    uma maior rapidez de processamento, que é um dos principais requisitos do processador.

  • 32 Cálculo de Disparidade com Janelas de Tamanho Variável

    (a) Paralelismo no cálculo de SAD.

    (b) Distribuição de pixéis pelos módulos de cálculo de diferençasabsolutas.

    (c) Interligação entre memória e módulos de cálculo de diferen-ças absolutas.

    Figura 3.11: Paralelismo ao nível da janela candidata e de referência em arquitecturas WPPP(segundo [1]). Na Figura 3.11(a) e 3.11(b) verifica-se que os pixéis candidatos são comparadoscom os mesmos pixéis de referência quando o tamanho da janela diminui, o que origina o circuitosimples da Figura 3.11(c).

    Figura 3.12: Fluxo de dados para arquitecturas PSWP (segundo [8]).

  • Capítulo 4

    Arquitectura do Processador deCorrespondências

    Como referido na secção 1.1, o objectivo deste projecto é o desenvolvimento de um proces-

    sador de cálculo de disparidades em tempo real utilizando imagens estéreo. Para implementação

    deste processador foi utilizado o algoritmo descrito em 3.1.1, o qual, devido ao elevada nível de

    paralelismo no cálculo de SAD e correspondentes disparidades, permite obter os resultados a uma

    cadência que cumpre que as necessidades de tempo real do processador.

    A informação tridimensional é representada em termos de mapa de disparidade, ou seja, o

    processador desenvolvido tem como entrada uma par de imagens estéreo rectificadas e como saída

    o mapa de disparidades de uma delas (a de referência).

    Neste capítulo é apresentada a implementação efectuada, especificando e justificando deter-

    minadas opções efectuadas ao longo do projecto.

    4.1 Fluxo de Projecto

    O fluxo de projecto seguido na implementação deste processador, foi aquele que por norma é

    seguido para implementações em sistemas reconfiguráveis.

    O sistema, após análise, foi dividido em vários módulos associados a uma dada função, que

    por sua vez, foram divididos em submódulos para desempenho de uma tarefa específica. Deste

    modo, o desenvolvimento e depuração do algoritmo tornou-se mais simples, pois por validação

    de módulos mais simples e interacção entre eles é possível desenvolver, com maior facilidade, um

    sistema que no seu todo é complexo.

    Uma vez que os módulos se encontram hierarquicamente relacionados entre si, a implemen-

    tação foi iniciada pelo desenvolvimento e validação dos módulos do primeiro nível da hierarquia.

    Determinado o correcto funcionamento destes, foi iniciado o desenvolvimento dos módulos que

    se encontram na posição imediatamente a seguir na hierarquia e feita a sua integração com os

    previamente desenvolvidos. Assim o projecto foi crescendo numa topologia bottom-up.

    33

  • 34 Arquitectura do Processador de Correspondências

    A validação dos vários módulos e submódulos foi feita recorrendo à construção de bancadas

    de teste, que tentaram simular, da melhor maneira possível, a interacção com o exterior do(s)

    módulo(s) em análise.

    Durante a implementação do processador foi também desenvolvido, simultaneamente com a

    implementação em Verilog, uma implementação em Matlab, que facilitou o fluxo do projecto.

    Uma vez que possibilitou uma descrição mais rápida do algoritmo e alterações a este, tornando as

    decisões referentes à sua descrição mais fáceis e rápidas de tomar.

    A escolha da linguagem Matlab deve-se à comodidade na manipulação de matrizes, o que

    simplificou a extracção das janelas de referência e candidata das imagens.

    A próxima secção deste capítulo apresenta uma descrição da arquitectura desenvolvida para a

    implementação do algoritmo em hardware, bem como a sua inclusão no projecto fornecido, para

    comunicação com as câmaras CMOS e monitor VGA.

    4.2 Dispositivos Utilizados

    O sistema desenvolvido é constituído por três dispositivos fundamentais para cálculo e visuali-

    zação de mapas de disparidade: câmaras CMOS, para captação das imagem a analisar, placa VGA,

    utilizada para sincronizar os dados a representar no monitor com comunicação VGA e placa de

    avaliação Avnet, utilizada para implementação dos módulos desenvolvidos em Verilog e para esta-

    belecer a comunicação com os dispositivos de interface com o exterior (câmaras CMOS e monitor

    VGA).

    Nesta secção são enumeradas as características dos dispositivos mencionados.

    4.2.1 Câmaras CMOS

    A recepção das imagens a processar é feita através câmaras CMOS, as quais se encontram

    incorporadas na PCB C3188A. Esta estabelece uma comunicação I2C com a câmara, permitindo

    assim um interface simples com este sensor.

    O modelo de câmaras CMOS utilizado é o OV7620 da OMNIVISION.

    Este é capaz de captar até 30 frames por segundo, que podem ser representadas com a sua

    informação de cor ou apenas de luminosidade. Sendo possível em ambos os casos definir uma

    gama de representação a oito ou dezasseis bits.

    Adicionalmente este modelo permite, por programação dos seus registos internos, definir vá-

    rios parâmetros de funcionamento como: ganho, tamanho da imagem retornada, nível de intensi-

    dade e tempo de exposição.

    A possibilidade de definição do tamanho da imagem retornada é um aspecto bastante inter-

    essante pois, permite ajustar o seu tamanho entre 4× 2 e 664× 492, ajustando automaticamenteos sinais de sincronismo das câmaras para o tamanho seleccionado. Aliás o tamanho da ima-

    gem retornada pelas câmaras é sempre o mesmo, 664×492, sendo ajustados apenas os sinais desincronismo que indicam o seu início e fim.

  • 4.2 Dispositivos Utilizados 35

    Outra característica importante no desenvolvimento do projecto é a possibilidade do sinal de

    relógio das câmaras ser definido externamente. Devido à necessidade de estereoscopia esta carac-

    terística foi bastante vantajosa pois, através de uma PCB desenvolvida para este tipo de projectos,

    foi atribuído o mesmo sinal de relógio externo ao par de câmaras, sincronizando-as. A rectificação

    das câmaras é conseguida através do suporte onde estas se encontram fixas.

    4.2.2 Placa de Desenvolvimento

    A implementação do sistema desenvolvido foi feita por uso