Download PDF
ads:
0
CLAUDIO MASSUMI ODA NISHIMURA
ANÁLISE COMPARATIVA DE ALGORITMOS DE CORRELAÇÃO
LOCAL BASEADOS EM INTENSIDADE LUMINOSA
Dissertação apresentada à Escola
Politécnica da Universidade de São Paulo
para a obtenção de Título de Mestre em
Engenharia
São Paulo
2008
ads:
Livros Grátis
http://www.livrosgratis.com.br
Milhares de livros grátis para download.
1
CLAUDIO MASSUMI ODA NISHIMURA
ANÁLISE COMPARATIVA DE ALGORITMOS DE CORRELAÇÃO
LOCAL BASEADOS EM INTENSIDADE LUMINOSA
Dissertação apresentada à Escola
Politécnica da Universidade de São Paulo
para a obtenção de Título de Mestre em
Engenharia
Área de Concentração:
Engenharia Mecânica
Orientador:
Prof. Dr. Lucas Antonio Moscato
São Paulo
2008
ads:
2
Este exemplar foi revisado e alterado em relação à versão original, sob
responsabilidade única do autor e com a anuência de seu orientador.
São Paulo, 30 de maio de 2008.
Assinatura do autor _____________________________________
Assinatura do orientador_________________________________
FICHA CATALOGRÁFICA
Nishimura, Claudio Massumi Oda
Análise comparativa de algoritmos de correlação local
baseados em intensidade luminosa / C.M.O. Nishimura. -- ed.rev.
-- São Paulo, 2008.
200 p.
Dissertação (Mestrado) - Escola Politécnica da Universidade
de São Paulo. Departamento de Engenharia Mecatrônica e de
Sistemas Mecânicos.
1.Robótica 2.Visão estéreo 3.Análise de correlação I.Univer-
sidade de São Paulo. Escola Politécnica. Departamento de
Engenharia Mecatrônica e de Sistemas Mecânicos II.t.
3
DEDICATÓRIA
Aos meus pais, pelo apoio constante
e incondicional, sem os quais este sonho
jamais se tornaria realidade.
4
AGRADECIMENTOS
Ao professor Lucas Antonio Moscato, pelo apoio ao longo do desenvolvimento
deste trabalho.
5
RESUMO
Este trabalho apresentou uma análise comparativa de algumas técnicas de
correlações locais baseadas em intensidade luminosa, as quais são: Soma das
Diferenças Absolutas, Soma dos Quadrados das Diferenças, Correlação Cruzada
Normalizada, Transformada Rank e Transformada Censo. Para as comparações
foram adotadas imagens estéreos disponíveis em repositórios de universidades e
suas variantes com a inclusão de ruído e variação de intensidade luminosa. Após a
implementação dos algoritmos escolhidos e a comparação de seus resultados, foi
obtido que a Transformada Censo é um dos métodos com os piores resultados
apresentando grande quantidade de correlações erradas. Foram apresentadas
modificações para melhorar a performance desse método e os resultados obtidos
foram melhores.
Palavras chave: Robótica. Visão estéreo. Técnicas de correlação. Transformada
Censo. Transformada Modificada
6
ABSTRACT
This work presents a comparative analysis of some local area intensity based
correlation algorithm, which are: Sum of Absolute Differences, Sum of Squared
Differences, Normalized Cross-Correlation, Rank Transform and Census Transform.
For the tests stereo data sets are adopted. These data sets are available at
universities websites and their variants with the inclusion of noise and variation of
luminosity are created. After implementing the chosen algorithms a comparison
were performed and the Census Transform was one of the methods that got the
worst results showing large quantity of false correlations. On this work was
presented some modifications to improve the performance of the Census Transform
and the results obtained were better than the original Census Transform.
Keywords: Robotic. Stereo vision. Correlation techniques. Census Transform.
Modified Transform
7
LISTA DE FIGURAS
Figura 2.1: Exemplo da aplicação da Transformada Censo em uma janela ...........33
Figura 2.2: Distância “Hamming” entre dois vetores................................................33
Figura 3.1: Exemplo da aplicação da Transformada Modificada 1..........................39
Figura 3.2: Exemplo da aplicação da Transformada Modificada 2..........................40
Figura 3.3: Imagens do Corredor original e contaminadas com ruído de
variância 10, 100 e 200....................................................................................41
Figura 3.4: Imagens Teddy original e contaminadas com ruído de
variância 10, 100 e 200....................................................................................42
Figura 3.5: Imagens Cones original e contaminadas com ruído de
variância 10, 100 e 200....................................................................................42
Figura 3.6: Efeito da mudança do limiar na imagem original...................................43
Figura 3.7: Efeito da mudança do limiar na imagem com ruído de variância 10 .....44
Figura 3.8: Efeito da mudança do limiar na imagem com ruído de variância 100 ...44
Figura 3.9: Efeito da mudança do limiar na imagem com ruído de variância 200 ...45
Figura 3.10: Região escolhida para o exemplo do cálculo do limiar........................46
Figura 3.11: Exemplo de cálculo do limiar
α
..........................................................47
Figura 4.1: Esquema da implementação dos algoritmos.........................................49
Figura 4.2: Regiões escolhidas na imagem do Corredor.........................................50
Figura 4.3: Regiões escolhidas na imagem Teddy..................................................50
Figura 4.4: regiões escolhidas na imagem Cones...................................................51
Figura 4.5: Imagens do corredor obtidas do repositório da Universidade de Bonn.53
Figura 4.6: Região utilizada para o cálculo do limiar na imagem do corredor .........53
Figura 4.7: Correlações erradas na imagem original do corredor............................54
Figura 4.8: Erro RMS das correlações na imagem original do corredor..................55
Figura 4.9: Imagem esquerda com luminosidade 10% menor ................................56
Figura 4.10: Correlações erradas na imagem do corredor com luminosidade 10%
diferente ...........................................................................................................57
Figura 4.11: Erro RMS das correlações na imagem do corredor com luminosidade
10% diferente...................................................................................................58
Figura 4.12: Imagem esquerda com luminosidade 20% menor ..............................58
8
Figura 4.13: Correlações erradas na imagem do corredor com luminosidade 20%
diferente ...........................................................................................................59
Figura 4.14: Erro RMS das correlações na imagem do corredor com luminosidade
20% diferente...................................................................................................59
Figura 4.15: Imagem esquerda com luminosidade 30% menor ..............................60
Figura 4.16: Correlações erradas na imagem do corredor com luminosidade 30%
diferente ...........................................................................................................61
Figura 4.17: Erro RMS das correlações na imagem do corredor com luminosidade
30% diferente...................................................................................................61
Figura 4.18: Imagens contaminadas com ruído de variância 10 .............................62
Figura 4.19: Correlações erradas na imagem do corredor com ruído de variância 10
.........................................................................................................................63
Figura 4.20: Erro RMS das correlações na imagem do corredor com ruído de
variância 10......................................................................................................63
Figura 4.21: Imagens contaminadas com ruído de variância 100 ...........................64
Figura 4.22: Correlações erradas na imagem do corredor com ruído de
variância 100....................................................................................................64
Figura 4.23: Erro RMS das correlações na imagem do corredor com ruído de
variância 100....................................................................................................65
Figura 4.24: Imagens contaminadas com ruído de variância 200 em 50% da
imagem.............................................................................................................65
Figura 4.25: Correlações erradas na imagem do corredor com ruído de
variância 200 e incidência 50%........................................................................66
Figura 4.26: Erro RMS das correlações na imagem do corredor com ruído de
variância 200 e incidência 50%........................................................................66
Figura 4.27: Imagens contaminadas com ruído de variância 200 ...........................67
Figura 4.28: Correlações erradas na imagem do corredor com ruído de
variância 200....................................................................................................68
Figura 4.29: Erro RMS das correlações na imagem do corredor com ruído de
variância 200....................................................................................................68
Figura 4.30: Imagens do Teddy obtidas do repositório de Middlebury....................69
Figura 4.31: Região utilizada para o cálculo do limiar na imagem do Teddy...........69
Figura 4.32: Correlações erradas na imagem Teddy original..................................70
9
Figura 4.33: Erro RMS das correlações na imagem Teddy original ........................71
Figura 4.34: Imagem esquerda com luminosidade 10% menor ..............................72
Figura 4.35: Correlações erradas na imagem Teddy com luminosidade 10%
diferente ...........................................................................................................72
Figura 4.36: Erro RMS das correlações na imagem Teddy com luminosidade 10%
diferente ...........................................................................................................73
Figura 4.37: Imagem esquerda com luminosidade 20% menor ..............................73
Figura 4.38: Correlações erradas na imagem Teddy com luminosidade 20%
diferente ...........................................................................................................74
Figura 4.39: Erro RMS das correlações na imagem Teddy com luminosidade 20%
diferente ...........................................................................................................74
Figura 4.40: Imagem esquerda com luminosidade 30% menor ..............................75
Figura 4.41: Correlações erradas na imagem Teddy com luminosidade 30%
diferente ...........................................................................................................76
Figura 4.42: Erro RMS das correlações na imagem Teddy com luminosidade 30%
diferente ...........................................................................................................76
Figura 4.43: Imagens contaminadas com ruído de variância 10 .............................77
Figura 4.44: Correlações erradas na imagem do Teddy com ruído de variância 1078
Figura 4.45: Erro RMS das correlações na imagem Teddy com ruído de
variância 10......................................................................................................78
Figura 4.46: Imagens contaminadas com ruído de variância 100 ...........................79
Figura 4.47: Correlações erradas na imagem Teddy com ruído de variância 100 ..80
Figura 4.48: Erro RMS das correlações na imagem Teddy com ruído de
variância 100....................................................................................................80
Figura 4.49: Imagens contaminadas com ruído de variância 200 em 50% da
imagem.............................................................................................................81
Figura 4.50: Correlações erradas na imagem Teddy com ruído de variância 200 e
incidência 50%.................................................................................................81
Figura 4.51: Erro RMS das correlações na imagem Teddy com ruído de
variância 200 e incidência 50%........................................................................82
Figura 4.52: Imagens contaminadas com ruído de variância 200 ...........................82
Figura 4.53: Correlações erradas na imagem Teddy com ruído de variância 200 ..83
10
Figura 4.54: Erro RMS das correlações na imagem Teddy com ruído de
variância 200....................................................................................................83
Figura 4.55: Imagens dos Cones obtida do repositório de Middlebury....................84
Figura 4.56: Região utilizada para o cálculo do limiar na imagem dos Cones ........84
Figura 4.57: Correlações erradas na imagem Cones original .................................85
Figura 4.58: Erro RMS das correlações na imagem Cones original........................86
Figura 4.59: Imagem esquerda com luminosidade 10% menor ..............................86
Figura 4.60: Correlações erradas na imagem Cones com luminosidade 10%
diferente ...........................................................................................................87
Figura 4.61: Erro RMS das correlações na imagem Cones com luminosidade 10%
diferente ...........................................................................................................87
Figura 4.62: Imagem esquerda com luminosidade 20% menor ..............................88
Figura 4.63: Correlações erradas na imagem Cones com luminosidade 20%
diferente ...........................................................................................................88
Figura 4.64: Erro RMS das correlações na imagem Cones com luminosidade 20%
diferente ...........................................................................................................89
Figura 4.65: Imagem esquerda com luminosidade 30% menor ..............................89
Figura 4.66: Correlações erradas na imagem Cones com luminosidade 30%
diferente ...........................................................................................................90
Figura 4.67: Erro RMS das correlações na imagem Cones com luminosidade 30%
diferente ...........................................................................................................91
Figura 4.68: Imagens contaminadas com ruído de variância 10 .............................91
Figura 4.69: Correlações erradas na imagem do Cones com ruído de variância 10
.........................................................................................................................92
Figura 4.70: Erro RMS das correlações na imagem Cones com ruído de
variância 10......................................................................................................92
Figura 4.71: Imagens contaminadas com ruído de variância 100 ...........................93
Figura 4.72: Correlações erradas na imagem Cones com ruído de variância 100..93
Figura 4.73: Erro RMS das correlações na imagem Cones com ruído de
variância 100....................................................................................................94
Figura 4.74: Imagens contaminadas com ruído de variância 200 em 50% da
imagem.............................................................................................................94
11
Figura 4.75: Correlações erradas na imagem Cones com ruído de variância 200 e
incidência 50%.................................................................................................95
Figura 4.76: Erro RMS das correlações na imagem Cones com ruído de
variância 200 e incidência 50%........................................................................95
Figura 4.77: Imagens contaminadas com ruído de variância 200 ...........................96
Figura 4.78: Correlações erradas na imagem Cones com ruído de variância 200..97
Figura 4.79: Erro RMS das correlações na imagem Cones com ruído de
variância 200....................................................................................................97
Figura 4.80: Modelo inicial implementado no simulador..........................................98
Figura 4.81: Cálculo da disparidade equivalente à distância...................................99
Figura 4.82: Posição das câmeras no robô modelado ..........................................100
Figura 4.83: Disparidades equivalentes às distâncias...........................................100
Figura 4.84: Cena com um bloco inclinado na frente do robô ...............................101
Figura 4.85: Mapa de disparidades obtido com o bloco inclinado.........................101
Figura 4.86: Cena com uma escada na frente do robô .........................................102
Figura 4.87: Mapa de disparidades obtido com uma escada ................................102
Figura 4.88: Exemplo da imagem do simulador mostrando o robô desviando do
obstáculo........................................................................................................103
Figura 4.89: Exemplo da imagem do simulador observando o mundo com a câmera
em outra posição............................................................................................104
Figura B1: Execução do método Soma das Diferenças Absolutas na imagem
original............................................................................................................147
Figura B2: Execução do método Soma do Quadrado das Diferenças na imagem
original............................................................................................................148
Figura B3: Execução do método Correlação Cruzada Normalizada na imagem
original............................................................................................................148
Figura B4: Execução do método Transformada Rank na imagem original............149
Figura B5: Execução do método Transformada Censo na imagem original..........149
Figura B6: Execução do método Transformada Modificada 1 na imagem original150
Figura B7: Execução do método Transformada Modificada 2 na imagem original150
Figura B8: Execução do método Transformada Modificada 3 na imagem original151
Figura B9: Execução do método Transformada Modificada 4 na imagem original151
12
Figura B10: Execução do método Transformada Modificada 5 na imagem original
.......................................................................................................................152
Figura B11: Execução do método Soma das Diferenças Absolutas na imagem com
luminosidade 30 % diferente..........................................................................153
Figura B12: Execução do método Soma do Quadrado das Diferenças na imagem
com luminosidade 30 % diferente ..................................................................154
Figura B13: Execução do método Correlação Cruzada Normalizada na imagem
com luminosidade 30 % diferente ..................................................................154
Figura B14: Execução do método Transformada Rank na imagem com
luminosidade 30 % diferente..........................................................................155
Figura B15: Execução do método Transformada Censo na imagem com
luminosidade 30 % diferente..........................................................................155
Figura B16: Execução do método Transformada Modificada 1 na imagem com
luminosidade 30 % diferente..........................................................................156
Figura B17: Execução do método Transformada Modificada 2 na imagem com
luminosidade 30 % diferente..........................................................................156
Figura B18: Execução do método Transformada Modificada 3 na imagem com
luminosidade 30 % diferente..........................................................................157
Figura B19: Execução do método Transformada Modificada 4 na imagem com
luminosidade 30 % diferente..........................................................................157
Figura B20: Execução do método Transformada Modificada 5 na imagem com
luminosidade 30 % diferente..........................................................................158
Figura B21: Execução do método Soma das Diferenças Absolutas na imagem com
ruído de variância 200....................................................................................159
Figura B22: Execução do método Soma do Quadrado das Diferenças na imagem
com ruído de variância 200............................................................................160
Figura B23: Execução do método Correlação Cruzada Normalizada na imagem
com ruído de variância 200............................................................................160
Figura B24: Execução do método Transformada Rank na imagem com ruído de
variância 200..................................................................................................161
Figura B25: Execução do método Transformada Censo na imagem com ruído de
variância 200..................................................................................................161
13
Figura B26: Execução do método Transformada Modificada 1 na imagem com ruído
de variância 200.............................................................................................162
Figura B27: Execução do método Transformada Modificada 2 na imagem com ruído
de variância 200.............................................................................................162
Figura B28: Execução do método Transformada Modificada 3 na imagem com ruído
de variância 200.............................................................................................163
Figura B29: Execução do método Transformada Modificada 4 na imagem com ruído
de variância 200.............................................................................................163
Figura B30: Execução do método Transformada Modificada 5 na imagem com ruído
de variância 200.............................................................................................164
Figura B31: Execução do método Soma das Diferenças Absolutas na imagem
original............................................................................................................165
Figura B32: Execução do método Soma do Quadrado das Diferenças na imagem
original............................................................................................................166
Figura B33: Execução do método Correlação Cruzada Normalizada na imagem
original............................................................................................................166
Figura B34: Execução do método Transformada Rank na imagem original..........167
Figura B35: Execução do método Transformada Censo na imagem original........167
Figura B36: Execução do método Transformada Modificada 1 na imagem original
.......................................................................................................................168
Figura B37: Execução do método Transformada Modificada 2 na imagem original
.......................................................................................................................168
Figura B38: Execução do método Transformada Modificada 3 na imagem original
.......................................................................................................................169
Figura B39: Execução do método Transformada Modificada 4 na imagem original
.......................................................................................................................169
Figura B40: Execução do método Transformada Modificada 5 na imagem original
.......................................................................................................................170
Figura B41: Execução do método Soma das Diferenças Absolutas na imagem com
luminosidade 30 % diferente..........................................................................171
Figura B42: Execução do método Soma do Quadrado das Diferenças na imagem
com luminosidade 30 % diferente ..................................................................172
14
Figura B43: Execução do método Correlação Cruzada Normalizada na imagem
com luminosidade 30 % diferente ..................................................................172
Figura B44: Execução do método Transformada Rank na imagem com
luminosidade 30 % diferente..........................................................................173
Figura B45: Execução do método Transformada Censo na imagem com
luminosidade 30 % diferente..........................................................................173
Figura B46: Execução do método Transformada Modificada 1 na imagem com
luminosidade 30 % diferente..........................................................................174
Figura B47: Execução do método Transformada Modificada 2 na imagem com
luminosidade 30 % diferente..........................................................................174
Figura B48: Execução do método Transformada Modificada 3 na imagem com
luminosidade 30 % diferente..........................................................................175
Figura B49: Execução do método Transformada Modificada 4 na imagem com
luminosidade 30 % diferente..........................................................................175
Figura B50: Execução do método Transformada Modificada 5 na imagem com
luminosidade 30 % diferente..........................................................................176
Figura B51: Execução do método Soma das Diferenças Absolutas na imagem com
ruído de variância 200....................................................................................177
Figura B52: Execução do método Soma do Quadrado das Diferenças na imagem
com ruído de variância 200............................................................................178
Figura B53: Execução do método Correlação Cruzada Normalizada na imagem
com ruído de variância 200............................................................................178
Figura B54: Execução do método Transformada Rank na imagem com ruído de
variância 200..................................................................................................179
Figura B55: Execução do método Transformada Censo na imagem com ruído de
variância 200..................................................................................................179
Figura B56: Execução do método Transformada Modificada 1 na imagem com ruído
de variância 200.............................................................................................180
Figura B57: Execução do método Transformada Modificada 2 na imagem com ruído
de variância 200.............................................................................................180
Figura B58: Execução do método Transformada Modificada 3 na imagem com ruído
de variância 200.............................................................................................181
15
Figura B59: Execução do método Transformada Modificada 4 na imagem com ruído
de variância 200.............................................................................................181
Figura B60: Execução do método Transformada Modificada 5 na imagem com ruído
de variância 200.............................................................................................182
Figura B61: Execução do método Soma das Diferenças Absolutas na imagem
original............................................................................................................183
Figura B62: Execução do método Soma do Quadrado das Diferenças na imagem
original............................................................................................................184
Figura B63: Execução do método Correlação Cruzada Normalizada na imagem
original............................................................................................................184
Figura B64: Execução do método Transformada Rank na imagem original..........185
Figura B65: Execução do método Transformada Censo na imagem original........185
Figura B66: Execução do método Transformada Modificada 1 na imagem original
.......................................................................................................................186
Figura B67: Execução do método Transformada Modificada 2 na imagem original
.......................................................................................................................186
Figura B68: Execução do método Transformada Modificada 3 na imagem original
.......................................................................................................................187
Figura B69: Execução do método Transformada Modificada 4 na imagem original
.......................................................................................................................187
Figura B70: Execução do método Transformada Modificada 5 na imagem original
.......................................................................................................................188
Figura B71: Execução do método Soma das Diferenças Absolutas na imagem com
luminosidade 30 % diferente..........................................................................189
Figura B72: Execução do método Soma do Quadrado das Diferenças na imagem
com luminosidade 30 % diferente ..................................................................190
Figura B73: Execução do método Correlação Cruzada Normalizada na imagem
com luminosidade 30 % diferente ..................................................................190
Figura B74: Execução do método Transformada Rank na imagem com
luminosidade 30 % diferente..........................................................................191
Figura B75: Execução do método Transformada Censo na imagem com
luminosidade 30 % diferente..........................................................................191
16
Figura B76: Execução do método Transformada Modificada 1 na imagem com
luminosidade 30 % diferente..........................................................................192
Figura B77: Execução do método Transformada Modificada 2 na imagem com
luminosidade 30 % diferente..........................................................................192
Figura B78: Execução do método Transformada Modificada 3 na imagem com
luminosidade 30 % diferente..........................................................................193
Figura B79: Execução do método Transformada Modificada 4 na imagem com
luminosidade 30 % diferente..........................................................................193
Figura B80: Execução do método Transformada Modificada 5 na imagem com
luminosidade 30 % diferente..........................................................................194
Figura B81: Execução do método Soma das Diferenças Absolutas na imagem com
ruído de variância 200....................................................................................195
Figura B82: Execução do método Soma do Quadrado das Diferenças na imagem
com ruído de variância 200............................................................................196
Figura B83: Execução do método Correlação Cruzada Normalizada na imagem
com ruído de variância 200............................................................................196
Figura B84: Execução do método Transformada Rank na imagem com ruído de
variância 200..................................................................................................197
Figura B85: Execução do método Transformada Censo na imagem com ruído de
variância 200..................................................................................................197
Figura B86: Execução do método Transformada Modificada 1 na imagem com ruído
de variância 200.............................................................................................198
Figura B87: Execução do método Transformada Modificada 2 na imagem com ruído
de variância 200.............................................................................................198
Figura B88: Execução do método Transformada Modificada 3 na imagem com ruído
de variância 200.............................................................................................199
Figura B89: Execução do método Transformada Modificada 4 na imagem com ruído
de variância 200.............................................................................................199
Figura B90: Execução do método Transformada Modificada 5 na imagem com ruído
de variância 200.............................................................................................200
17
LISTA DE TABELAS
Tabela 3.1: Comparação dos limiares obtidos com diferentes imagens..................43
Tabela 4.1: Comparação dos limiares obtidos com regiões diferentes das imagens
.........................................................................................................................51
Tabela 4.2: Tempos de execução dos métodos com as diferentes janelas utilizadas
.........................................................................................................................56
Tabela 5.1: Tabela resumo das qualidades dos métodos.....................................106
18
LISTA DE SÍMBOLOS
α
o limiar é um valor para a tolerância ao ruído da imagem
C
valor da função de correlação do algoritmo
Corr_erradas porcentagem de correlações erradas
d valor da disparidade do ponto analisado
disp
calculada
disparidade calculada para o ponto
disp
real
disparidade real do ponto
Erro_RMS erro RMS da imagem
I
intensidade de um ponto da imagem da janela
1
I intensidade de um ponto da imagem da janela alvo
1
I valor médio da intensidade da imagem da janela alvo
2
I intensidade de um ponto da imagem da janela busca
2
I valor médio da intensidade da imagem da janela busca
()
iyixI ++ , intensidade do ponto a analisado
()
yxI , intensidade ponto de referência
i índice para a varredura das janelas
índice para a varredura das janelas
N número total de pontos da imagem
R
número de pontos na janela de Rank
()
yxr , valor resultante da transformada Rank
()
jyixT ++ , transformada modificada aplicada nos pontos da janela
][tU função degrau unitário
x
coordenada da linha do ponto de interesse
y
coordenada da coluna do ponto de interesse
19
SUMÁRIO
1 INTRODUÇÃO.................................................................................................22
1.1 Objetivos...................................................................................................23
1.2 Estrutura da dissertação...........................................................................24
2 FUNDAMENTAÇÃO TEÓRICA.......................................................................25
2.1 Revisão bibliográfica sobre técnicas de correspondência.........................25
2.1.1 Técnicas de correspondência locais..................................................28
2.1.1.1 Soma das Diferenças Absolutas (SAD)......................................29
2.1.1.2 Soma dos Quadrados das Diferenças (SSD) .............................30
2.1.1.3 Correlação Cruzada Normalizada (Coeficiente de Correlação,
Correlação por Média Normalizada).............................................................31
2.1.1.4 Correspondência com a utilização da Transformada Censo
(“Census”) ....................................................................................................32
2.1.1.5 Correspondência com a utilização da Transformada Rank ........35
2.1.2 Abordagens para a comparação das técnicas de correlação ............35
3 MODIFICAÇÕES PROPOSTAS PARA A TRANSFORMADA CENSO..........38
3.1 Definição do método de cálculo do parâmetro α.......................................40
4 RESULTADOS ................................................................................................48
4.1 Descrição dos experimentos e da métrica de avaliação...........................48
4.2 Aplicação dos métodos na imagem do Corredor ......................................53
4.3 Aplicação dos métodos na imagem Teddy ...............................................69
4.4 Aplicação dos métodos na imagem Cones...............................................84
4.5 Exemplo de aplicação do algoritmo de correlação....................................98
5 CONCLUSÕES..............................................................................................105
5.1 Discussão dos resultados .......................................................................105
5.2 Sugestões para trabalhos futuros ...........................................................107
REFERÊNCIAS BIBLIOGRÁFICAS.....................................................................109
APÊNDICE A – CÓDIGO FONTE DAS ROTINAS UTILIZADAS.........................118
20
Função limiar.m.................................................................................................118
Função ruido.m..................................................................................................119
Função disparidade.m .......................................................................................120
Função sad.m (Soma das Diferenças Absolutas)..............................................123
Função cor.m (Correlação Cruzada Normalizada) ............................................126
Função rnk.m (Transformada Rank)..................................................................127
Função cen.m (Transformada Censo)...............................................................129
Função c_1.m (Transformada Modificada 1).....................................................131
Função c_2.m (Transformada Modificada 2).....................................................132
Função c_3.m (Transformada Modificada 3).....................................................134
Função c_4.m (Transformada Modificada 4).....................................................135
Função c_5.m (Transformada Modificada 5).....................................................137
Função resultados.m .........................................................................................138
Função qualidade.m ..........................................................................................141
Função salva_figuras.m.....................................................................................142
Função salva_graficos.m...................................................................................144
APÊNDICE B – MAPAS DE DISPARIDADES RESULTANTES DA COMPARAÇÃO
DOS MÉTODOS ...................................................................................................147
Imagem do Corredor..........................................................................................147
Resultados da execução dos algoritmos com a imagem original...................147
Resultados da execução dos algoritmos com a imagem esquerda com 30 %
menos luminosidade ......................................................................................153
Resultados da execução dos algoritmos com a imagem contaminada por ruído
de variância 200.............................................................................................159
Imagem Teddy...................................................................................................165
Resultados da execução dos algoritmos com a imagem original...................165
Resultados da execução dos algoritmos com a imagem esquerda com 30 %
menos luminosidade ......................................................................................171
Resultados da execução dos algoritmos com a imagem contaminada por ruído
de variância 200.............................................................................................177
Imagem Cones ..................................................................................................183
Resultados da execução dos algoritmos com a imagem original...................183
21
Resultados da execução dos algoritmos com a imagem esquerda com 30 %
menos luminosidade ......................................................................................189
Resultados da execução dos algoritmos com a imagem contaminada por ruído
de variância 200.............................................................................................195
22
1 INTRODUÇÃO
A visão é um dos sentidos mais importantes do ser humano. É através dela que
os homens e animais identificam indivíduos, locais, objetos, estimam distâncias e
velocidades. Devido a grande quantidade de informações que é possível obter a
partir deste sentido, muitos pesquisadores tentam reproduzi-lo através do uso de
múltiplas câmeras. A visão estéreo é um problema fundamental no campo da visão
computacional e requer o estabelecimento de correspondências entre múltiplas
imagens para a obtenção de uma estimativa tridimensional. Suas aplicações são
diversas, como na navegação de robôs, inspeção de peças e reconstrução de
modelos tridimensionais.
Nos últimos anos um grande número de abordagens tem sido aplicadas à
resolução do problema. Estas abordagens geralmente diferem umas das outras nas
técnicas de correlação utilizadas, na densidade dos resultados, na acurácia das
estimativas e no tempo de cálculo. Porém, a realização da correlação entre pontos
de duas ou mais imagens é um problema que se mostra complexo e ainda não
possui uma boa solução que possa ser aplicada em qualquer caso, apesar de esta
ser uma tarefa comumente abordada na área de visão computacional e de existirem
diversos algoritmos encontrados na literatura.
Atualmente, o estado da arte com relação aos algoritmos de correlação costuma
utilizar uma abordagem global de forma a aperfeiçoar a estimativa inicial dos mapas
de disparidade; geralmente esta estimativa inicial é obtida por algum algoritmo de
correspondência local. Segundo Wang et al (2006), a abordagem global ainda
possui complicações na aplicação em tempo real e os critérios de correlação
puramente locais ainda continuam sendo utilizados.
Observa-se que as abordagens atuais dos métodos locais buscam aplicar
restrições, pré e pós-processamentos, múltiplas janelas, janelas variáveis, entre
outras técnicas para melhorar as correlações obtidas. Sendo assim, ocorre em
vários casos que qualquer algoritmo de correlação local seria capaz de trabalhar
conjuntamente com estas otimizações, já que estes algoritmos são apenas critérios
para ponderar a comparação entre pontos e definir quais são correspondentes.
23
Portanto, é de se esperar que se o algoritmo de correspondência for mais robusto a
técnica em geral o será.
Para efetuar a comparação das intensidades podem ser utilizados critérios de
comparação direta das intensidades, tais como a Soma das Diferenças Absolutas
(Kuhl, 2005), Soma do Quadrado das Diferenças (Kuhl, 2005) ou Correlação
Cruzada Normalizada (González & Woods, 2000), ou métodos chamados de
transformações não paramétricas nos quais se aplicam filtros às janelas das
imagens (Transformada Rank encontrado em Banks, 1999a e Transformada Censo
encontrado em Zabih et al, 1994) antes da comparação. Também existem outras
abordagens não baseadas diretamente nas intensidades luminosas, mas em seu
gradiente ou sua fase.
Nos resultados das comparações será possível observar que o algoritmo de
correlação que obtém os piores resultados nas imagens originais e nas suas versões
com ruído é a Transformada Censo (também conhecido como “Census”), portanto
serão estudadas as modificações já existentes para este algoritmo e propostas
novas modificações para torná-lo mais robusto e melhorar seus resultados.
1.1 Objetivos
Decidiu-se pesquisar e sugerir alguma forma de otimização de algum dos
algoritmos de correlação comumente utilizados nas técnicas locais. Observando
diversos trabalhos que abordam critérios locais de correlação decidiu-se por abordar
algoritmos baseadas na intensidade luminosa, nas quais geralmente utiliza-se como
critério de correlação a comparação das intensidades dos pontos de uma imagem
com a outra.
Os alvos de estudo deste trabalho são a análise comparativa de algoritmos de
correlação locais baseados em intensidade luminosa e a sugestão de uma
modificação no algoritmo que obteve os piores resultados de forma a melhorá-lo.
Neste caso, como a Transformada Censo obtém os piores resultados tanto nas
imagens originais quanto nas imagens com ruído optou-se por modificá-la para que
esta se torne mais robusta a ruídos.
24
1.2 Estrutura da dissertação
No Item 2, Fundamentação Teórica, apresenta-se a visão estéreo e é citado o
processo de retificação da imagem para permitir a redução da área de busca das
correspondências. Em seguida realiza-se a revisão bibliográfica sobre as técnicas de
correspondência e as abordagens para sua comparação.
No Item 3 apresenta-se a modificação sugerida para a Transformada Censo e
descrito como obter o parâmetro de limiar a ser adotado.
No Item 4 mostram-se os resultados obtidos com todos os dez métodos
analisados sendo aplicados a imagens com variação de luminosidade e ruídos.
No Item 5 realizam-se os comentários finais e as sugestões para trabalhos
futuros.
Nos itens seguintes são apresentadas a bibliografia consultada e os Apêndices
deste trabalho. No Apêndice A constam os códigos fontes das rotinas utilizadas e no
Apêndice B os mapas de disparidades de alguns dos casos analisados.
25
2 FUNDAMENTAÇÃO TEÓRICA
A visão estereoscópica ou estéreo é aquela que busca reproduzir a visão
binocular natural para, dessa forma, conseguir reconstruir um mundo 3D obtendo-se
assim medidas de profundidade. A visão estéreo é formada a partir da captura de
duas imagens de uma cena a partir de posições distintas da câmera.
Então, segundo Gonçalves (2005), “a partir das diferenças de posição das
projeções de objetos nas imagens, por triangulação, pode-se determinar a posição
relativa. Uma vez que o sistema esteja calibrado, determina-se a qual distância
outros objetos se encontram do sistema de aquisição”
A calibração da câmera pode ser realizada de diversos modos sendo a
bibliografia sobre este assunto extensa e com diversas formas de equacionar o
problema da calibração (Gonzalez e Woods, 2000; Holt e Netravali, 1991; Kumar e
Hanson, 1994; Heikkilä e Silvén, 1997; Weng, Cohen e Herniou, 1992; Zhang, 1999).
No caso de sistemas com câmeras não calibradas, a única informação disponível
para estabelecer a restrição dos emparelhamentos possíveis seria o conhecimento
da geometria epipolar. Fusiello (1998 e 2000) mostra em seus trabalhos uma técnica
de retificação das imagens baseada na geometria epipolar, tal técnica descreve uma
maneira de re-projetar as imagens das câmeras do par estéreo de forma a ficarem
colineares e paralelas.
Com o uso da retificação, um algoritmo de emparelhamento não precisa mais
ficar comparando pontos e retas inclinadas na imagem. A nova configuração permite
que o mesmo busque o emparelhamento apenas ao longo de linhas horizontais.
Com isto, o custo computacional é reduzido em extremo.
2.1 Revisão bibliográfica sobre técnicas de correspondência
Dado um par de imagens sabe-se que é possível retificá-las de forma a deixar os
elementos correspondentes de ambas as imagens na mesma linha de varredura
reduzindo-se o espaço de busca nas imagens. O problema que as técnicas de
26
correlação deverão resolver será eleger uma das imagens como referência. Nesta,
escolher um ponto e buscar seu correspondente na mesma linha da outra imagem
(alvo). Porém, esta tarefa possui sérios problemas os quais são: ambigüidades nas
imagens, regiões com textura repetitiva, regiões sem textura e imagens com ruídos.
Para a resolução destes problemas encontram-se diversas abordagens propostas e
algumas serão discutidas a seguir.
Os métodos baseados nas características (“features”) dos objetos das imagens
primeiramente submetem separadamente as duas imagens do par estéreo, a um
pré-processamento no qual serão extraídos os contornos monoculares, geralmente
sendo encontrados cantos, bordas e segmentos de linha existentes nas imagens.
Num segundo passo os contornos encontrados em uma das imagens são
correlacionados com os da outra imagem, porém nem sempre essas
correspondências estão certas, dessa forma é necessário um terceiro passo no qual
as correspondências erradas são eliminadas. Como resultado estes algoritmos
fornecem mapas de disparidade esparsos os quais nem sempre são suficientes para
algumas aplicações. Alguns exemplos de autores que abordam este tipo de técnica
são Hu (1994), Lowe (2004) e Lu (2004).
Nos casos onde é necessário obter um mapa de disparidades denso as
abordagens por características já não são mais tão úteis sendo que, para isso,
existem os métodos baseados em áreas. Scharstein e Szeliski (2002) em seu
trabalho classificou os algoritmos estéreo densos em dois grandes grupos, os locais
e globais. Porém observando-se alguns trabalhos recentes (Mattocia et al, 2007 e
Hirschmüller, 2005 e 2006) é possível observar que seus autores definem uma
terceira categoria de algoritmos estéreos densos, os algoritmos semi-globais.
Vários trabalhos recentes têm utilizado métodos globais para realização da
correlação. Este tipo de algoritmo busca um mapa de disparidades que minimize
uma função de custo global definida. Nesta abordagem costuma-se assumir que as
disparidades variam suavemente nas imagens, portanto regiões ambíguas recebem
o valor das disparidades propagado pelas regiões vizinhas. Os algoritmos globais
costumam subdividir a imagem como sendo árvores ou utilizando o campo aleatório
de Markov (“Markov random field” - MRF) e juntamente utilizam técnicas como
programação dinâmica, difusão não linear, “graph cut” e “belief propagation” para
realizar a otimização dos resultados. Porém mesmo nos algoritmos globais uma
27
aproximação inicial da disparidade do ponto é necessária e este valor é geralmente
obtido utilizando-se alguma técnica de correspondência local.
Sun et al (2005) aborda uma técnica global de correlação fazendo uma estrutura
baseada em árvore e utiliza “belief propagation” em seu método global, já Veksler
(2005) utiliza também uma estrutura baseada em árvore, porém conjuntamente com
a programação dinâmica. No trabalho de Kim (2005) é possível observar uma outra
abordagem da programação dinâmica, neste caso sendo utilizada em dois passos
de otimização, primeiramente na linha de varredura e em seguida entre as linhas de
varredura. Yang et al (2006a e 2006b) utiliza uma forma hierárquica do “belief
propagation” e consegue implementar o algoritmo em tempo real utilizando-se a
placa de vídeo para o processamento. Larsen et al (2006) realiza uma modificação
na técnica de “belief propagation” de forma a trabalhar com imagens em movimento.
Strecha et al (2006) utiliza a estrutura de campos aleatórios de Markov (MRF) com
uma tática de maximização de expectativa. Zitnick e Kang (2007) propõem um
trabalho com uma estrutura de campos aleatórios de Markov (MRF) e “belief
propagation” para a aplicação em renderização baseada em imagens.
Os trabalhos que se definem como sendo algoritmos semi-globais são baseados
na minimização de uma função calculada apenas em uma região da imagem.
Hirschmüller (2005) apresenta um método de correlação semi-global com as
correspondências realizadas pontualmente, mas baseadas em informações mútuas
e na aproximação de que as disparidades possuem variações suaves. Hirschmüller
(2006) mostra a aplicação do método anteriormente proposto em ambientes
estruturados. Mattocia et al (2007) apresenta um algoritmo de correlação baseado
na segmentação e na otimização da linha de varredura com o intuito de melhorar a
detecção das bordas. Se considerado que a linha de varredura é uma região da
imagem, o trabalho de Wang et al (2006) também pode ser considerado um
algoritmo semi-global, porque utiliza a técnica de programação dinâmica juntamente
com uma agregação adaptativa apenas na vertical, dessa forma consegue melhorar
os resultados do método de programação dinâmica mantendo o algoritmo em tempo
real.
As abordagens locais baseadas em área comumente utilizam correlações
estatísticas das intensidades ou cores de regiões da imagem. Estas correlações
podem ser diretamente baseadas nas intensidades luminosas ou pode-se utilizar
uma transformação não paramétrica nas janelas, ou até mesmo partir para a análise
28
da fase ou gradiente na imagem. Algumas destas abordagens serão discutidas no
item subseqüente por serem o objeto deste trabalho.
2.1.1 Técnicas de correspondência locais
Dentre os tipos de correlação local a correspondência por fase é a que trata a
imagem de forma diferente não a utilizando no domínio da intensidade, mas
transformando-a através da aplicação da transformada de Fourier ou o filtro de
Gabor para o domínio da freqüência (Fleet et al, 1991). Estando no domínio da
freqüência o método consegue correlacionar as regiões das imagens a partir da
diferença de fase.
Segundo Fleet et al, 1991 este método sofre com problemas de ambigüidade
para disparidades maiores que meio comprimento de onda para cada lado do ponto,
porque a fase é periódica com período 2π.
Já as correlações realizadas diretamente por intensidade luminosa ou aquelas
que utilizam alguma transformada não paramétrica são técnicas nas quais em torno
de cada ponto analisado é gerada uma janela e nesta é suposto que todos os pontos
sejam pertencentes à mesma profundidade, portanto possui uma dificuldade
inerente nas regiões de descontinuidades nas profundidades.
Em seus casos mais simples, seus algoritmos supõem que um objeto possui a
mesma intensidade luminosa em ambas as imagens, portanto são susceptíveis às
variações de luminosidade entre as imagens e à distorções radiométricas, nas quais
os tons de cinza em uma imagem diferem dos tons de cinza na outra imagem. Para
resolver este problema pode-se executar um pré-processamento na imagem de
forma a equalizar as luminosidades de ambas as vistas, porém também existem
algoritmos que são capazes de contornar estes problemas utilizando-se de uma
abordagem baseada na comparação das intensidades subtraídas da média da
intensidade das janelas ou aplicando as transformadas não paramétricas às janelas
nas imagens, como é possível observar em França et al (2005).
Em muitos trabalhos encontram-se maneiras de otimizar a correlação dos
métodos locais sendo que no geral é comum encontrar pré-processamentos tal
como a equalização do brilho das imagens, pós-processamentos para a aceitação
29
das disparidades, janelas adaptativas, múltiplas janelas e restrições. Alguns
exemplos de trabalhos recentes podem ser citados.
Por exemplo, França (2005), mostra seu algoritmo de múltiplas janelas para a
obtenção de uma correlação mais robusta. Wang et al (2006) realiza uma
comparação de várias otimizações que podem ser realizadas nas janelas de busca e
compara seus resultados. Zhao et al (2006a, 2006b, 2007) em seus trabalhos
apresenta uma nova abordagem de obtenção da janela de busca de forma a
melhorar a correlação nos contornos dos objetos, sendo que em um deles o autor
parte para um passo de otimização global das disparidades por programação
dinâmica. Outro autor, Lei et al (2006) também utiliza a combinação de um método
local de correspondência com a programação dinâmica. Klaus (2006) utiliza uma
tática de segmentação por cores conjuntamente com uma técnica de
correspondência auto adaptativa. Gehirig e Franke (2007) propõe uma restrição
gravitacional que auxilia na redução de falsas disparidades e um algoritmo de
suavização das disparidades obtidas. Tombardi et al (2007) mostra uma abordagem
com janela adaptativa baseada em segmentação para melhorar a correspondência
em regiões com pouca textura e em contornos. Yang et al (2007) apresenta uma
técnica de pós-processamento que permite o refinamento de resolução “sub-pixel”
no mapa de disparidades. Yoon et al (2007) propõe um novo critério de medição de
similaridade para ajudar a melhorar os resultados dos métodos locais em caso de
ambigüidade.
Algumas técnicas de correlação foram escolhidas para a comparação por serem
citadas e utilizadas em vários trabalhos, elas serão abordadas nos sub-itens a
seguir.
2.1.1.1 Soma das Diferenças Absolutas (SAD)
É um algoritmo de correspondência que computa a diferença de todos os pontos
da janela definida e em seguida soma o módulo de todos os resultados dessas
diferenças. O valor mínimo desta função denota qual das janelas melhor se
correlacionou. A disparidade é então calculada como a diferença horizontal entre as
coordenadas dos pontos.
30
Este é um critério bem comum e utilizado para casos onde o tempo de
processamento é critico segundo França (2003), e é expresso pela equação 2.1.
()
(
)
(
)
+++++=
ij
jyidxIjyixIdyxC ,,,,
21
2.1
Onde:
C é o valor da função de correlação do algoritmo
d
é o valor da disparidade do ponto analisado
i e
são os índices para a varredura das janelas
1
I é a intensidade de um ponto da imagem da janela alvo
2
I é a intensidade de um ponto da imagem da janela busca
x
e
y
são as coordenadas, linha e coluna, do ponto de interesse
Pode-se observar aplicações recentes do algoritmo SAD nos trabalhos de
Jacobi et al (2006) no qual o autor implementa o algoritmo em uma FPGA para obter
processamento em tempo real. Em Zhao et al (2006a, 2006b e 2007) é abordado um
método de múltiplas janelas para a melhoria da correlação do algoritmo SAD na
região de bordas. Ambrosh et al (2007) implementou o algoritmo SAD em hardware
para a obtenção de até 425 quadros por segundo em imagens de 320 x 240 pontos.
2.1.1.2 Soma dos Quadrados das Diferenças (SSD)
É outro critério de correspondência clássico e é bem similar ao SAD segundo
Kuhl, 2005. Neste critério o algoritmo de correspondência computa a diferença de
todos os pontos da janela definida e em seguida soma o quadrado de todos os
resultados dessas diferenças. Como no SAD, o valor mínimo desta função denota
qual das janelas melhor se correlacionou e a disparidade é então calculada como a
diferença horizontal entre as coordenadas dos pontos. O método é expresso pela
equação 2.2.
31
()
(
)
(
)
(
)
2
21
,,,,
+++++=
ij
jyidxIjyixIdyxC
2.2
Onde:
C é o valor da função de correlação do algoritmo
d é o valor da disparidade do ponto analisado
i e
são os índices para a varredura das janelas
1
I é a intensidade de um ponto da imagem da janela alvo
2
I
é a intensidade de um ponto da imagem da janela busca
x
e
y
são as coordenadas, linha e coluna, do ponto de interesse
2.1.1.3 Correlação Cruzada Normalizada (Coeficiente de Correlação,
Correlação por Média Normalizada)
Este critério foi escolhido para fazer parte da comparação por ter sido
mencionado em diversas fontes tais como em Koyama e Hasegawa (2002),
González & Woods (2000), França (2005), Mordohai e Medioni (2006), Brockers et al
(2005) e também porque segundo Faugeras et al (1993a) é considerado um
algoritmo que obtém bons resultados sendo insensível às variações de tons de
cinza. No caso do trabalho de Brockers (2005) o autor utiliza o método como critério
de correlação, porém seu foco é a apresentação de um método global de relaxação
de custo que auxilia na eliminação de ambigüidades.
Este critério utiliza-se da subtração da média da intensidade das janelas e dessa
forma consegue não ser tão influenciado pela variação na luminosidade do ambiente
(equação 2.3). Outro fator interessante neste critério é que ele é normalizado
entre –1 e 1, de forma que uma imagem perfeitamente correlacionada resultará em
um valor 1 da função de correlação.
32
()
(
)
(
)
(
) ()
(
)
(
)
()()
()
()()
()
∑∑ ∑∑
++++++
++++++
=
xy xy
xy
ydxIjyidxIyxIjyixI
ydxIjyidxIyxIjyixI
dyxC
2
2
2
2
1
1
2
2
1
1
,,,,
,,,,
),,(
2.3
Onde:
C
é o valor da função de correlação do algoritmo
d é o valor da disparidade do ponto analisado
i
e
são os índices para a varredura das janelas
1
I é a intensidade de um ponto da imagem da janela alvo
2
I é a intensidade de um ponto da imagem da janela busca
1
I é o valor médio da intensidade da imagem da janela alvo
2
I é o valor médio da intensidade da imagem da janela busca
x
e y são as coordenadas, linha e coluna, do ponto de interesse
2.1.1.4 Correspondência com a utilização da Transformada Censo (“Census”)
Esse método de correlação tem por base a utilização da Transformada Censo
(Zabih et al, 1994) na imagem para a realização do remapeamento dos pontos da
imagem em uma seqüência de bits.
Para esta Transformada dada uma janela centrada em (x,y), varre-se os pontos
da janela comparando-se suas intensidades com a do ponto na posição (x,y). Caso
a intensidade seja maior que a da referência atribui-se o valor “1” ao bit
correspondente na seqüência, caso contrário atribui-se “0” (Figura 2.1).
33
Figura 2.1: Exemplo da aplicação da Transformada Censo em uma janela
Onde:
x
e
y
são as coordenadas, linha e coluna, do ponto de interesse
Após realizada a transformada, a semelhança é comparada através da utilização
da distância de “Hamming” entre as seqüências de bits (Figura 2.2), sendo que
quanto menor o valor maior será a correlação entre as seqüências.
1 0 1 1 1 0 0 1 1 0 => primeiro vetor
1 0 0 1 0 0 1 0 0 0 => segundo vetor
0 0 1 0 1 0 1 1 1 0 => distância de “Hamming”
Figura 2.2: Distância “Hamming” entre dois vetores
Foi realizado também um levantamento das publicações que utilizaram a
Transformada Censo e também das que propuseram modificações para a mesma.
Qiu et al (1998) aplicou a correlação utilizando imagens coloridas para a extração
de bordas de objetos móveis. Neste trabalho os autores sugerem que a
Transformada Censo seja aplicada separadamente a cada canal de cor, para em
seguida somar o resultado da distância de “Hamming” dos canais.
Woodfill et al (1999) implementou o algoritmo Censo em uma FPGA. Neste
mesmo ano Gautama et al faz um estudo comparativo entre os algoritmos de
correlação Censo, Censo modificado e a correlação por média normalizada. A
modificação sugerida para a Transformada Censo é a utilização do valor da
intensidade média da janela para a comparação com os pontos vizinhos, em vez da
utilização do valor do ponto central. Esta modificação da Transformada Censo
também será utilizada na comparação dos algoritmos de correlação.
34
Yamada et al (2000) desenvolveu um sistema de cálculo de disparidades
utilizando-se de três câmeras e para tal os autores utilizam a Transformada Censo
como algoritmo de correlação.
Smeraldi (2002) compara em um trabalho de detecção de padrões as
Transformadas Censo, Rank, Rank binário, Wavelets e Ranklets.
Kuhn et al (2003) implementa em hardware algoritmos de correlação baseados
na Transformada Censo e na Soma dos Quadrados das Diferenças e compara os
resultados de ambos.
Em 2004, Fröba et al utiliza a Transformada Censo com uma modificação para a
detecção de padrões. Neste trabalho o autor descreve que se o valor da intensidade
média da janela for utilizada como o valor de comparação com os pontos vizinhos
consegue-se distinguir uma maior variedade de padrões. Esta modificação é a
mesma proposta por Gautama (1999), mas com uma aplicação diferente.
Woodfill et al (2004) mostra a implementação do algoritmo Censo para obtenção
de mapas de disparidades em alta velocidade (200 quadros por segundo com
imagens de 512 x 480 pontos).
Kuhl (2005) diz em seu trabalho que implementou uma modificação na
Transformada Censo, porém não deixa claro que tipo de modificação foi realizada,
sendo apenas comentado que a janela de varredura da imagem foi aumentada.
Naoulou et al (2006) mostra uma arquitetura implementada em FPGA para a
correlação de imagens utilizando a Transformada Censo. Neste mesmo ano Just et
al mostrou um trabalho de reconhecimento de padrões utilizando a Transformada
Censo modificada. A modificação mostrada era manter a imagem na forma matricial
em vez de transformá-la em vetor.
Em 2007 Murphy et al implementou um sistema de visão estéreo de baixo custo
implementado em FPGA, que utiliza a Transformada Censo em seu algoritmo de
correlação.
35
2.1.1.5 Correspondência com a utilização da Transformada Rank
Esse método de correlação tem por base a utilização da Transformada RANK
(Banks, 1999a, 1999b e 2001) na imagem para a realização do remapeamento dos
pontos da imagem.
Esta transformada segue a seguinte função:
()
(
)
(
)
[
]
<
=
++=
0 ,0
0 ,1
][
,,,
t
t
tU
yxIjyixIURyxr
ij
2.4
Onde:
R
é o número de pontos na janela de Rank
()
yxr , é o valor resultante da transformada Rank
i e
são os índices para a varredura das janelas
I
é a intensidade de um ponto da imagem da janela
x
e
y
são as coordenadas, linha e coluna, do ponto de interesse
][tU é a função degrau unitário
Para esta transformada varre-se os pontos da imagem toda com uma janela de i
linhas por j colunas aplicando a equação 2.4, dessa forma temos uma nova imagem
alterada pela Transformada de Rank.
Após obter as imagens transformadas pode-se utilizar o método SAD ou SSD
para realizar a correlação entre as imagens.
2.1.2 Abordagens para a comparação das técnicas de correlação
Com relação às abordagens para a comparação dos algoritmos de correlação
existentes pode-se observar que Scharstein e Szeliski (2002) fizeram um extenso
36
trabalho de implementação e comparação de métodos de correspondência já
publicados implementando-os conforme propostos pelos seus autores. Observa-se
que Scharstein e Szeliski (2002) implementam tanto técnicas locais quanto globais,
incluindo as otimizações locais (janelas móveis, múltiplas janelas, “winner take all”,
restrição de unicidade, entre outros), globais (programação dinâmica, “simulated
annealing”, “scanline optimization”, “graph cut”, entre outros) e refinamento das
disparidades em nível de “sub-pixel”. A métrica utilizada para a comparação dos
algoritmos, segundo os autores, é semelhante à de estudos anteriormente
publicados. As imagens utilizadas no trabalho são de repositórios e possuem o mapa
de disparidade real.
Kuhl (2005) apresenta um trabalho de comparação dos algoritmos de correlação
Soma das Diferenças Absolutas, Soma dos Quadrados das Diferenças,
Transformada Censo e Transformada Censo Modificado. Neste trabalho a autora
utiliza a imagem do repositório de Tsukuba e faz a comparação dos algoritmos pelos
tempos de execução e pela qualidade visual dos mapas de disparidades.
Wang et al (2006) mostra um trabalho que compara os métodos Soma das
Diferenças Absolutas, Soma das Diferenças Absolutas Truncada e “sampling
insensitive matching criterion” aplicados conjuntamente com métodos de otimização
e refinamento dos resultados tais como janelas móveis, “oriented-rod”, “boundary-
guided” e pesos adaptativos. Como métrica para a comparação o autor utiliza a
porcentagem de erros e o tempo de execução.
Yoon et al (2006) apresenta um trabalho mais focado na comparação dos
métodos de otimização da janela (janelas adaptativas, janelas variáveis, janelas
móveis, entre outros) e avalia os métodos com a porcentagem de erros
apresentados.
Yoon et al (2007) apresenta um método de medição de similaridade para ajudar a
melhorar os resultados dos métodos locais em caso de ambigüidade e faz a
comparação deste método com os métodos de otimização janelas adaptativas,
segmentação, “belief propagation”, entre outros. Neste trabalho o autor escolhe
quatro imagens de repositórios e compara os algoritmos utilizando a porcentagem de
erros.
Com relação às abordagens para a comparação dos algoritmos de correlação
existentes pode-se perceber que normalmente os autores comparam os métodos de
correspondência em seu todo incluindo as otimizações e pós-processamentos.
37
Sendo que apenas Kuhl (2005) fez uma comparação dos resultados puros dos
algoritmos de correlação, ou seja, fez a comparação sem a utilização de métodos de
otimização e refinamento dos resultados. Porém neste trabalho a autora elaborou
apenas um comparativo visual dos resultados dando mais ênfase nos tempos de
processamento. Este é um dos motivos da opção pelo desenvolvimento de um
trabalho comparando-se os algoritmos de correlação sem a aplicação de
otimizações e pós-processamentos.
No trabalho de Scharstein e Szeliski (2002) observa-se que os autores escrevem
que existem algoritmos de correlação que são insensíveis às variações de
luminosidade e também dizem que tem algoritmos que resolvem facilmente as
disparidades de imagens sem ruído, mas tem dificuldades com a versão com ruído
das imagens. Porém, não fazem uma comparação dos algoritmos nestas situações
que geram dificuldades.
França et al (2005) diz, ao descrever o equacionamento do método Soma das
Diferenças Absolutas, que este não normaliza as intensidades das janelas e,
portanto é sensível à variação de luminosidade, porém não faz nenhuma
comparação da performance do algoritmo com imagens com este tipo de distorção.
A partir das abordagens vistas para a comparação de métodos de
correspondência optou-se por elaborar o comparativo dos algoritmos de correlação
com imagens de repositórios e também utilizar versões dessas imagens com
diferenças de luminosidade e ruído, para verificar a robustez dos algoritmos a estes
tipos de distorções.
38
3 MODIFICAÇÕES PROPOSTAS PARA A TRANSFORMADA CENSO
Pensando-se em uma maneira de melhorar o resultado do método Censo que foi
o que apresentou os piores resultados quando da presença de ruídos nas imagens
foi possível perceber que este era susceptível aos ruídos porque sempre toma como
base a intensidade de um ponto para aplicar a transformada. Então, caso o ponto
em questão seja justamente o ponto com ruído, a qualidade da correlação ficará
bem prejudicada.’
Após alguns testes foi possível tentar modificar a Transformada Censo
adicionando-se mais um nível de valor “-1”, de forma a tornar o nível “0” em um
patamar neutro que não contribua, nem atrapalhe a correlação. Sendo assim com a
modificação teríamos a equação 3.1:
()
(
)
(
)
() ( )()
()()
<++
+++
+>++
=++
,, ,1
,,, ,0
,, ,1
,
α
αα
α
yxIiyixI
yxIiyixIyxI
yxIiyixI
iyixT
3.1
Onde:
α
será chamado de limiar e é um valor para a tolerância ao ruído da imagem
()
iyixI ++ ,
é a intensidade do ponto analisado
()
yxI , é a intensidade ponto de referência
i e
são os índices para a varredura das janelas
x
e
y
são as coordenadas, linha e coluna, do ponto de interesse
()
jyixT ++ , é a equação da transformada modificada aplicada nos pontos da
janela
Em uma abordagem inicial, ao realizar esta transformada para as janelas de alvo
e busca, observa-se não ser mais possível utilizar a distância de “Hamming” de
forma eficiente na comparação entre as janelas. Tal fato ocorre porque esta métrica
fornece apenas um resultado binário dizendo se o bit analisado é igual ou não.
Sendo assim, torna-se interessante adotar a comparação entre as janelas da mesma
39
forma como o Soma das Diferenças Absolutas faz com as intensidades das
imagens, apenas subtraindo-se uma janela da outra, porque este modo de
comparação entre as janelas consegue fornecer um resultado com mais graduações
que auxiliam na diferenciação de janelas diferentes.
Aproveitando a impossibilidade da utilização da distância de “Hamming”, decidiu-
se por implementar esta alteração na Transformada Censo de duas formas. Em uma
primeira abordagem a ser chamada de Transformada Modificada 1, a modificação
será aplicada da mesma forma que o Censo é aplicado, ou seja, em cada janela alvo
e busca gerada na varredura das imagens, conforme exemplificado na Figura 3.1.
Figura 3.1: Exemplo da aplicação da Transformada Modificada 1
Já na segunda abordagem definida como Transformada Modificada 2, foi
realizada uma outra abordagem modificando-se o modo de aplicação da
transformada. Tal modificação resulta em um menor o tempo de processamento da
correlação. Nela, aplica-se a transformada antecipadamente nas imagens esquerda
e direita inteiras gerando-se novas imagens transformadas. Para isto é realizada
uma varredura das imagens com uma janela de tamanho a ser definido pelo usuário.
De posse destas novas imagens pode-se realizar a correlação pelo método Soma
das Diferenças Absolutas ou outro método de correlação a ser escolhido pelo
usuário. Um exemplo da aplicação desta transformada está na Figura 3.2.
40
Figura 3.2: Exemplo da aplicação da Transformada Modificada 2
Para efeito de comparação dos resultados será implementada também a
modificação mostrada por Gautama (1999), sendo esta chamada de Transformada
Modificada 3. Nesta modificação os valores serão comparados com as médias de
cada janela.
As variantes 4 e 5 da Transformada Modificada são testes com a utilização da
média da intensidade da janela (Gautama, 1999) aplicada na transformada sugerida
no lugar da intensidade do ponto central da janela. Sendo assim, as Transformadas
Modificadas 4 e 5 são, respectivamente, as modificações 1 e 2 com a utilização da
intensidade média da janela.
3.1 Definição do método de cálculo do parâmetro α
Após o levantamento de mapas de disparidade com os diversos valores para o
parâmetro α em diversas imagens diferentes. Procedeu-se uma comparação dos
41
valores de limiar dos casos com os melhores resultados usando vários parâmetros
das imagens tais como histograma, intensidade média, variância e desvio padrão de
forma a tentar encontrar alguma relação entre esses valores e o valor do α a ser
adotado.
Muitos testes foram realizados com as Transformadas Modificadas 1 e 2, sendo
que as transformadas Modificadas 4 e 5 não foram utilizadas nesta fase porque
estas transformadas foram definidas apenas na fase de comparação dos algoritmos
como sendo variantes das Transformadas Modificadas 1 e 2.
Nos testes observou-se que, em geral, os valores de
α que resultam em bons
resultados se assemelham muito aos valores obtidos do dobro do desvio padrão da
matriz de diferenças de intensidades entre o ponto e seu sucessor. Isto quando
aplicado em uma região da imagem que deveria possuir intensidade constante ou no
máximo com variação suave de intensidades (preferencialmente em regiões de
textura uniforme). Por exemplo, tomando-se as imagens do Corredor (Universidade
de Bonn, 2005), Teddy (Middlebury, 2007) e Cones (Middlebury, 2007) das
Figuras 3.3 a 3.5 (obtidas de repositórios) e calculando o limiar conforme descrito
anteriormente, obtém-se em média os valores da Tabela 3.1.
Figura 3.3: Imagens do Corredor original e contaminadas com ruído de variância 10, 100 e 200
original
ruído de variância 100
ruído de variância 200
ruído de variância 10
42
Figura 3.4: Imagens Teddy original e contaminadas com ruído de variância 10, 100 e 200
Figura 3.5: Imagens Cones original e contaminadas com ruído de variância 10, 100 e 200
original
ruído de variância 100
ruído de variância 200
ruído de variância 10
original
ruído de variância 100
ruído de variância 200
ruído de variância 10
43
Imagem do
Corredor
Imagem
Teddy
Imagem
Cones
Média do limiar
α
calculado
[pontos] [pontos] [pontos]
Original
3 2 2
Com ruído de
variância 10
5 6 5
Com ruído de
variância 100
12 12 12
Com ruído de
variância 200
14 13 14
Tabela 3.1: Comparação dos limiares obtidos com diferentes imagens
Ao executar as Transformadas Modificadas 1 e 2 com a modificação proposta e com
janela de 15 x 15 apenas variando-se o limiar, obtém-se os gráficos de influência do
limiar conforme mostrado nas Figuras 3.6 a 3.9. Nestes gráficos o valor médio do
limiar obtido está destacado.
Figura 3.6: Efeito da mudança do limiar na imagem original
44
Figura 3.7: Efeito da mudança do limiar na imagem com ruído de variância 10
Figura 3.8: Efeito da mudança do limiar na imagem com ruído de variância 100
45
Figura 3.9: Efeito da mudança do limiar na imagem com ruído de variância 200
Como é possível observar nas Figuras 3.6 a 3.9 os valores de
α
calculados
conforme proposto resultam em valores próximos dos melhores casos de limiar,
oferecendo uma incidência de correlações erradas próximas do mínimo possível de
se obter variando apenas o limiar. Portanto, o parâmetro
α
pode ser definido pela
equação 3.2:
=
eintensidad de suave variaçãocom imagem da região uma
em calculada colunas, as entre diferenças de matriz
linhas das padrão
desvio do média
2α
3.2
Onde:
α
será chamado de limiar e é um valor para a tolerância ao ruído da imagem
Como o valor de
α
é definido em pontos, este deve ser arredondado para o
inteiro mais próximo quando da utilização em algum dos métodos.
Um exemplo do cálculo do valor do limiar para uma imagem será mostrado
adotando a região destacada na Figura 3.10. Observa-se que região escolhida é
46
pequena apenas para facilitar a representação da matriz da intensidade dos pontos
no exemplo, pois o tamanho da região escolhida influencia pouco no resultado final
desde que escolhida uma região variação suave de intensidade.
Figura 3.10: Região escolhida para o exemplo do cálculo do limiar
A região destacada na Figura 3.10 possui as intensidades luminosas mostradas
na primeira matriz da Figura 3.11. O primeiro passo a ser feito é a subtração de uma
coluna pela outra, em seguida obtém-se o desvio padrão das linhas da nova matriz
obtida após a subtração. O passo final é a obtenção da média do desvio padrão das
linhas e multiplicá-lo por 2 para se obter a estimativa do
α
a ser utilizado.
47
178178179179177179178176178178178
176179179177178179178175177177178
180178178178179179178178179177177
177178177178177178178178178178178
179176177177178178177177177178178
179178178178178178177177179178177
178179180180178179181176178178178
178178179179176177178177177177178
177179179177177177177178178177176
178178
178178178178178178177177177
178175176178177177177177176178178
0102212200
3021113201
2001010120
1111100000
3101010010
1000010211
1102125200
0103111001
20200010 1 1
0 0 0 00
00100
3 12 1 0 0 0 1 2 0
4142,1
8135,1
0593,1
7379,0
1972,1
9189,0
1082,2
2472,1
1005,1
3162,0
4907,1
2185,1
2 4370,2 1,2185 2
=
=
×=
α
α
Figura 3.11: Exemplo de cálculo do limiar
α
Janela escolhida
Matriz de
intensidade
luminosa
Matriz de
diferenças entre
as colunas
Desvio padrão
das linhas
Média do desvio
padrão das linhas
48
4 RESULTADOS
4.1 Descrição dos experimentos e da métrica de avaliação
Como este trabalho busca comparar apenas os algoritmos de correspondência
verificando sua eficiência em algumas situações e propor uma alteração no método
da Transformada Censo, será adotada uma implementação simples dos algoritmos
sem a utilização de pós-processamentos, restrições ou janelas adaptativas que
possam mascarar os resultados obtidos pelos métodos. Apenas será considerado
que as imagens já estão retificadas para a redução do espaço de busca.
Em linhas gerais a implementação adotada para os algoritmos do trabalho será:
Primeiramente, escolhe-se um ponto de interesse na primeira imagem, em
seguida define-se uma janela de interesse ao redor desse ponto escolhido,
comumente chamada de janela alvo ou referência.
Define-se na segunda imagem uma janela contendo o alvo a ser localizado, esta
é a chamada janela de busca.
Na etapa final realiza-se a pesquisa na janela de busca movendo-se uma janela
de dimensões iguais à janela alvo e comparando-a com a janela alvo, o ponto
correspondente é o que produzir o máximo (ou mínimo dependendo da função de
correlação) valor na função de correlação. O modo de realizar essa comparação
muda de algoritmo para algoritmo, porque em cada um existe uma função distinta
para tentativa quantificação da semelhança das janelas.
Já tendo encontrados os pontos correspondentes, a disparidade do ponto entre
uma imagem e a outra será a diferença das coordenadas do ponto na imagem
esquerda e na direita (em pontos). Neste caso a diferença ocorrerá apenas na
coordenada x, porque as linhas já estão correspondentes devido à retificação
realizada anteriormente.
Para a comparação da performance dos algoritmos de correlação analisados, foi
realizada uma implementação dos métodos sem aplicar técnicas de correção e
aperfeiçoamento dos mapas de disparidades calculados. Portanto, não serão
49
aplicadas táticas como a restrição de variação suave das disparidades, nem os
métodos WTA (“Winner Take All”) e a verificação das disparidades com as
correlações esquerda-direita e direita-esquerda (respectivamente janelas de busca e
alvo).
Na implementação adotada utilizaram-se janelas fixas definidas pelo usuário no
momento da chamada da função e a disparidade máxima a ser buscada também é
fornecida neste momento. Na implementação dos algoritmos definiu-se que a
imagem direita será a imagem de referência (alvo) e a imagem esquerda a de busca
conforme esquematizado na Figura 4.1. Então, para cada ponto na imagem de
referência a imagem de busca será varrida partindo-se de um ponto na mesma
posição até uma disparidade máxima a ser verificada.
Figura 4.1: Esquema da implementação dos algoritmos
Ao todo serão comparados 10 algoritmos diferentes sendo que 5 são comuns e
bastante utilizados, uma modificação do algoritmo Censo proposta por
Gautama (1999) à bastante tempo e quatro variantes diferentes da modificação
propostas no trabalho. Todos os códigos fontes das implementações encontram-se
no Apêndice A.
No caso da modificação proposta para a Transformada Censo é necessário mais
um parâmetro chamado limiar. O valor do limiar adotado para as imagens foi definido
para cada imagem adotando-se uma pequena área em uma região da imagem que
possua uma textura uniforme e calculado conforme descrito no item 3 equação 3.2.
A função chamada limiar.m (Apêndice A) implementa o cálculo do limiar na imagem
fornecida.
50
A Tabela 4.1 mostra que a escolha da região na imagem, desde que a mesma
possua textura uniforme, possui pouca influência no valor do limiar. Para o cálculo
dos valores obtidos na tabela utilizaram-se janelas escolhidas nas imagens
contaminadas com ruído de variância 100. As Figuras 4.2 a 4.4 mostram as regiões
utilizadas para os cálculos dos valores mostrados na Tabela 4.1.
Figura 4.2: Regiões escolhidas na imagem do Corredor
Figura 4.3: Regiões escolhidas na imagem Teddy
51
Figura 4.4: regiões escolhidas na imagem Cones
1 2 3 4 5 Média
Áreas
escolhidas
[pontos] [pontos] [pontos] [pontos] [pontos] [pontos]
Corredor
11,7 11,2 11,7 11,5 11,6 11,5
Cones
12,2 12,3 11,3 12,8 12,9 12,3
Teddy
11,4 11,7 11,4 12,2 11,8 11,7
Tabela 4.1: Comparação dos limiares obtidos com regiões diferentes das imagens
O ruído foi introduzido nas imagens com uma função escrita em Matlab para ser
possível controlar sua variância e incidência. A função que insere o ruído na imagem
encontra-se no Apêndice A e chama-se ruido.m. O ruído especificado foi inserido em
ambas a imagens. O ruído tem por objetivo tentar simular alguma interferência na
transmissão ou captura da imagem ou a granulação gerada na imagem pelo uso de
sensibilidade ISO muito elevada.
A variação de luminosidade foi introduzida nas imagens com o auxílio de um
programa editor de imagens. A imagem escolhida para o escurecimento foi a
imagem esquerda, sendo a direita mantida com sua luminosidade original. A
mudança de luminosidade em apenas uma imagem tem por objetivo simular as
diferenças inerentes às duas câmeras utilizadas.
52
A avaliação dos resultados será realizada comparando-se os mapas de
disparidades calculados com o mapa de disparidade verdadeiro disponível nos
repositórios de onde as imagens foram obtidas. Serão exibidos os valores das
correlações erradas em forma percentual (Equação 4.1). O limite utilizado para
aceitar a disparidade calculada como correta será de ±1 ponto, da mesma forma
como adotado em Scharstein e Szeliski (2002).
() ()
()
1001yx,dispyx,disp
N
1
asCorr_errad
y)(x,
realcalculada
>=
4.1
Onde:
Corr_erradas corresponde a porcentagem de correlações erradas
disp
calculada
corresponde à disparidade calculada para o ponto
disp
real
corresponde à disparidade real do ponto
N é o número total de pontos da imagem
x
e
y
são as coordenadas, linha e coluna, do ponto de interesse
Observa-se que neste trabalho a incidência de correlações erradas será vista
como um todo, não se separando as regiões com oclusões e nem as regiões de
bordas.
Será apresentado também o erro RMS (“Root Mean Squared”) entre o mapa de
disparidades calculado e o real. Este erro será calculado conforme mostrado na
equação 4.2.
() ()
2
1
2
y)(x,
realcalculada
yx,dispyx,disp
N
1
Erro_RMS
=
4.2
Onde:
Erro_RMS corresponde ao erro RMS da imagem
disp
calculada
corresponde à disparidade calculada para o ponto
disp
real
corresponde à disparidade real do ponto
N é o número total de pontos da imagem
x
e
y
são as coordenadas, linha e coluna, do ponto de interesse
53
4.2 Aplicação dos métodos na imagem do Corredor
Esta imagem foi obtida no repositório da Universidade de Bonn (2005), sendo um
exemplo de imagem sintética simples com várias regiões praticamente sem textura.
As imagens esquerda, direita e o mapa de disparidades verdadeiro da imagem
direita são mostrados na Figura 4.5.
Figura 4.5: Imagens do corredor obtidas do repositório da Universidade de Bonn
Em um primeiro teste foram calculados os mapas de disparidades com as
imagens originais com todos os métodos e comparados os resultados.
Para a aplicação dos métodos com a Transformada Modificada 1, 2, 4 e 5
calculou-se o valor do limiar adotando-se como referência a região destacada na
Figura 4.6, visto que já foi mostrada a pouca influencia da região escolhida no valor
obtido para o limiar.
Figura 4.6: Região utilizada para o cálculo do limiar na imagem do corredor
54
O limiar obtido na imagem original e nas imagens com luminosidade modificada é
de 3 pontos, mostrando que a mudança da luminosidade não interfere no valor do
limiar.
Nas Figuras 4.7 e 4.8, observa-se que o método que fornece mais correlações
erradas é o que utiliza a Transformada Censo. Os métodos com as Transformadas
Modificadas 1, 3 (proposto por Gautama, 1999) e 4 (junção da modificação realizada
em 1 com a realizada em 3) os quais utilizam a implementação comum da
Transformada Censo e aplicam a transformada em cada janela analisada
apresentam resultados apenas um pouco melhores que os da Transformada Censo.
Já as Transformadas Modificadas 2 e 5 (junção das modificações de 2 e 3)
conseguem uma grande melhora nos resultados das disparidades, conseguindo
performance semelhante aos dos métodos Soma das Diferenças Absolutas e Soma
dos Quadrados das Diferenças em alguns casos de janelas de busca.
Figura 4.7: Correlações erradas na imagem original do corredor
55
Figura 4.8: Erro RMS das correlações na imagem original do corredor
Com relação ao tempo de execução, observa-se que conforme há o aumento da
janela as Transformadas Modificadas 1, 5 e 2 apresentam melhorias nos tempos de
execução comparando-se com a Transformada Censo (Tabela 4.2). Observa-se
também que a Correlação Cruzada Normalizada, a Transformada Modificada 3 e a
Transformada Modificada 4 são os métodos com os piores tempos de execução. Os
tempos mostrados na tabela 4.2 são de experimentos executados em um
computador Core 2 Duo E6300 com 1 GB de memória DDR2 667.
Os mapas de disparidades resultantes da execução dos algoritmos nas imagens
originais estão disponíveis no Apêndice B nas Figuras B1 a B10. Neles é possível
observar como os mapas de disparidade se apresentam conforme o tamanho da
janela é modificado nos diversos métodos analisados. Nos mapas mostrados no
Apêndice B é adotada uma apresentação em tons de cinza, no qual tons claros
indicam objetos próximos e tons escuros objetos distantes.
56
5 x 5 11 x 11 15 x 15 21 x 21
[s] [s] [s] [s]
Soma das Diferenças Absolutas
5,1 6,8 7,5 9,7
Soma do Quadrado das Diferenças
5,8 6,7 7,5 9,6
Correlação Cruzada Normalizada
55,3 58,6 61,8 67,7
Transformada Rank
6,6 7,8 8,9 11,6
Transformada Censo
8,6 15,3 21,1 33,0
Transformada Modificada 1
12,3 14,8 17,3 23,3
Transformada Modificada 2
7,1 8,3 9,5 12,2
Transformada Modificada 3
52,3 54,0 56,3 61,1
Transformada Modificada 4
57,8 61,1 64,6 72,2
Transformada Modificada 5
12,5 13,8 15,1 18,1
Janela
Tabela 4.2: Tempos de execução dos métodos com as diferentes janelas utilizadas
Em um segundo passo, pares de imagens com luminosidades diferentes foram
analisados. Optou-se por reduzir a luminosidade da imagem esquerda em 10%, 20%
e em seguida 30% para comparar a influência dessa variação nos resultados.
A Figura 4.9 apresenta as imagens com uma diferença de 10% na luminosidade.
Figura 4.9: Imagem esquerda com luminosidade 10% menor
Já com apenas 10% de diferença na luminosidade entre as imagens fica visível,
nos resultados mostrados nas Figuras 4.10 e 4.11, a queda da qualidade dos
57
resultados dos métodos que não possuem nenhum tipo de normalização com
relação a intensidade (Soma das Diferenças Absolutas e Soma do Quadrado das
Diferenças).
Apenas os métodos Correlação Cruzada Normalizada e Transformada
Modificada 2 conseguiram obter praticamente os mesmos resultado que os obtidos
com a imagem original.
Figura 4.10: Correlações erradas na imagem do corredor com luminosidade 10% diferente
58
Figura 4.11: Erro RMS das correlações na imagem do corredor com luminosidade 10%
diferente
A Figura 4.12 apresenta as imagens com uma diferença de 20% na
luminosidade.
Figura 4.12: Imagem esquerda com luminosidade 20% menor
Na Figura 4.13 observa-se um resultado curioso, porque enquanto todos os
outros métodos tiveram algum aumento nas correlações erradas apenas o método
Transformada Rank voltou a obter resultados um pouco melhores que no caso da
59
imagem com 10% de diferença na luminosidade. A Figura 4.14 mostra o erro RMS
para os métodos quando aplicados à imagem com 10% de diferença de
luminosidade.
Figura 4.13: Correlações erradas na imagem do corredor com luminosidade 20% diferente
Figura 4.14: Erro RMS das correlações na imagem do corredor com luminosidade 20%
diferente
60
A Figura 4.15 apresenta as imagens com uma diferença de 30% na
luminosidade.
Figura 4.15: Imagem esquerda com luminosidade 30% menor
Nas Figuras 4.16 e 4.17 é possível ver que com uma diferença de luminosidade
de 30% o método Transformada Modificada 2 é o que apresentou resultados
ligeiramente melhores, tanto na incidência de correlações erradas quanto no
erro RMS do mapa de correlações, quando comparado aos métodos usuais que
apresentam melhores resultados (Correlação Cruzada Normalizada e a
Transformada Rank).
Os mapas de disparidades resultantes da execução dos algoritmos nas imagens
com luminosidade 30% diferente estão disponíveis no Apêndice B nas
Figuras B11 a B20.
61
Figura 4.16: Correlações erradas na imagem do corredor com luminosidade 30% diferente
Figura 4.17: Erro RMS das correlações na imagem do corredor com luminosidade 30%
diferente
62
Em uma segunda etapa são comparados os resultados dos algoritmos quando
executados com imagens com ruídos. Para os testes foram criadas versões das
imagens originais com ruído de variância 10, 100 e 200 com incidência em todos os
pontos da imagem e um caso com ruído de variância 200 com incidência em 50%
dos pontos da imagem. Conforme mencionado no Item 4.1 a rotina utilizada para a
introdução do ruído nas imagens encontra-se no Apêndice A com o nome ruido.m.
A Figura 4.18 mostra as imagens do corredor contaminadas com ruído de
variância 10, nesta imagem foi obtido um limiar de 5 pontos.
Figura 4.18: Imagens contaminadas com ruído de variância 10
Nos resultados observa-se que já com a introdução de um ruído com amplitude
pequena, pouco perceptível visualmente como pode ser visto na Figura 4.18, ocorre
uma grande degradação dos resultados apresentados pelos algoritmos de
correlação, no geral apresentando mais de 20% de correlações erradas (Figura 4.19)
e na Figura 4.20 observa-se o erro RMS dos métodos.
Observa-se que apenas a Transformada Modificada 5 consegue manter
resultados próximos dos métodos Soma das Diferenças Absolutas e Soma do
Quadrado das Diferenças.
63
Figura 4.19: Correlações erradas na imagem do corredor com ruído de variância 10
Figura 4.20: Erro RMS das correlações na imagem do corredor com ruído de variância 10
A Figura 4.21 mostra as imagens do corredor contaminadas com ruído de
variância 100, nesta imagem foi obtido um limiar de 12 pontos.
64
Figura 4.21: Imagens contaminadas com ruído de variância 100
Nas Figuras 4.22 e 4.23 observa-se que com as imagens de variância 100 houve
um aumento das correlações erradas em todos os métodos, o que se refletiu
também no erro RMS.
Figura 4.22: Correlações erradas na imagem do corredor com ruído de variância 100
65
Figura 4.23: Erro RMS das correlações na imagem do corredor com ruído de variância 100
A Figura 4.24 mostra as imagens do corredor contaminadas com ruído de
variância 200 e incidência em 50% dos pontos da imagem, nesta imagem foi obtido
um limiar de 11 pontos.
Figura 4.24: Imagens contaminadas com ruído de variância 200 em 50% da imagem
Pelas Figuras 4.25 e 4.26 observa-se que as imagens com ruído de variância 200
e incidência em 50% da imagem tiveram resultados semelhantes aos com ruído de
variância 100.
66
Figura 4.25: Correlações erradas na imagem do corredor com ruído de variância 200 e
incidência 50%
Figura 4.26: Erro RMS das correlações na imagem do corredor com ruído de variância 200 e
incidência 50%
67
A Figura 4.27 mostra as imagens do corredor contaminadas com ruído de
variância 200, nesta imagem foi obtido um limiar de 14 pontos.
Figura 4.27: Imagens contaminadas com ruído de variância 200
Pelos resultados apresentados nas Figuras 4.28 e 4.29 observa-se que na
imagem contaminada ruído de variância 200 houve uma degradação ainda maior
dos mapas de correlação obtidos devido ao aumento das correlações erradas. Neste
caso o método que obteve os melhores resultados foi a Transformada Modificada 5.
Os mapas de disparidades resultantes da execução dos algoritmos nas imagens
com ruído de variância 200 estão disponíveis no Apêndice B nas Figuras B21 a B30.
68
Figura 4.28: Correlações erradas na imagem do corredor com ruído de variância 200
Figura 4.29: Erro RMS das correlações na imagem do corredor com ruído de variância 200
69
4.3 Aplicação dos métodos na imagem Teddy
Esta imagem foi obtida no repositório de Middlebury (2007) e foi escolhida por
possuir um bom balanceamento de regiões com pouca textura e regiões com padrão
repetitivo. As imagens esquerda, direita e o mapa de disparidades verdadeiro da
imagem direita são mostrados na Figura 4.30.
Figura 4.30: Imagens do Teddy obtidas do repositório de Middlebury
Em um primeiro teste foram calculados os mapas de disparidades com as
imagens originais com todos os métodos e comparados os resultados. Para a
aplicação dos métodos com a Transformada Modificada 1, 2, 4 e 5 calculou-se o
valor do limiar adotando-se como referência a região destacada na Figura 4.31.
Figura 4.31: Região utilizada para o cálculo do limiar na imagem do Teddy
70
O limiar obtido na imagem original e nas imagens com luminosidade modificada é
de 2 pontos.
Nas Figuras 4.32 e 4.33 observa-se que com esta segunda imagem mais próxima
de um ambiente real, a Transformada Modificada 5, que era a que apresentava um
dos melhores resultados entre as Transformadas Modificadas, mostrou um resultado
inesperado e passou a ser um dos piores métodos apresentando uma incidência de
correlações erradas maior até do que a própria Transformada Censo.
Por outro lado a Transformada Modificada 2, que era a modificação com o
segundo melhor resultado, foi a que apresentou os melhores resultados.
Os mapas de disparidades resultantes da execução dos algoritmos nas imagens
originais estão disponíveis no Apêndice B nas Figuras B31 a B40.
Figura 4.32: Correlações erradas na imagem Teddy original
71
Figura 4.33: Erro RMS das correlações na imagem Teddy original
Em um segundo passo, pares de imagens com luminosidades diferentes foram
analisados. Optou-se por reduzir a luminosidade da imagem esquerda em 10%, 20%
e em seguida 30% para comparar a influência dessa variação nos resultados.
A Figura 4.34 apresenta as imagens com uma diferença de 10% na
luminosidade.
72
Figura 4.34: Imagem esquerda com luminosidade 10% menor
Nos resultados apresentados pelas Figuras 4.35 e 4.36 observa-se que com
luminosidade 10% menor na imagem esquerda os métodos da Transformada Rank e
a Transformada Modificada 2 apresentam os melhores resultados, tanto na
incidência de correlações erradas quanto no erro RMS.
Figura 4.35: Correlações erradas na imagem Teddy com luminosidade 10% diferente
73
Figura 4.36: Erro RMS das correlações na imagem Teddy com luminosidade 10% diferente
A Figura 4.37 apresenta as imagens com uma diferença de 20% na
luminosidade.
Figura 4.37: Imagem esquerda com luminosidade 20% menor
Neste caso observa-se nos resultados apresentados pelas Figuras 4.38 e 4.39
que para os métodos com as menores incidências de correlações erradas os
resultados são semelhantes aos da imagem com luminosidade 10% menor.
74
Figura 4.38: Correlações erradas na imagem Teddy com luminosidade 20% diferente
Figura 4.39: Erro RMS das correlações na imagem Teddy com luminosidade 20% diferente
75
A Figura 4.40 apresenta as imagens com uma diferença de 30% na
luminosidade.
Figura 4.40: Imagem esquerda com luminosidade 30% menor
Após executados os métodos na imagem com uma diferença de luminosidade de
30% obtiveram se as Figuras 4.41 e 4.42 nas quais se pode observar que, fora os
métodos Soma das Diferenças Absolutas e Soma do Quadrado das Diferenças, os
resultados da quantidade de correlações erradas permaneceu praticamente
inalterado com a variação da luminosidade, comportamento bem diferente do
observado na imagem do corredor.
Os mapas de disparidades resultantes da execução dos algoritmos nas imagens
com luminosidade 30% diferente estão disponíveis no Apêndice B nas
Figuras B41 a B50.
76
Figura 4.41: Correlações erradas na imagem Teddy com luminosidade 30% diferente
Figura 4.42: Erro RMS das correlações na imagem Teddy com luminosidade 30% diferente
77
Em uma segunda etapa são comparados os resultados dos algoritmos quando
executados com imagens com ruídos. Para os testes foram criadas versões das
imagens originais com ruído de variância 10, 100 e 200 com incidência em todos os
pontos da imagem e um caso com ruído de variância 200 com incidência em 50%
dos pontos da imagem.
A Figura 4.43 mostra as imagens do Teddy contaminadas com ruído de
variância 10, nesta imagem foi obtido um limiar de 6 pontos.
Figura 4.43: Imagens contaminadas com ruído de variância 10
Nos resultados mostrados pelas Figuras 4.44 e 4.45 observa-se que já com a
introdução de um ruído com amplitude pequena houve um aumento nas correlações
erradas em todos os métodos. Observa-se que a Transformada Modificada 2
consegue manter resultados próximos dos métodos Soma das Diferenças Absolutas,
Soma do Quadrado das Diferenças, Correlação Cruzada Normalizada e
Transformada Rank.
78
Figura 4.44: Correlações erradas na imagem do Teddy com ruído de variância 10
Figura 4.45: Erro RMS das correlações na imagem Teddy com ruído de variância 10
79
A Figura 4.46 mostra as imagens do Teddy contaminadas com ruído de
variância 100, nesta imagem foi obtido um limiar de 11 pontos. Lembra-se que neste
caso o limiar utilizado é o calculado utilizando-se uma amostra semelhante a da
região mostrada na Figura 4.31, não sendo utilizado o valor médio do limiar como o
mostrado na Tabela 4.1.
Figura 4.46: Imagens contaminadas com ruído de variância 100
Nas Figuras 4.47 e 4.48 observa-se que o aumento do ruído para variância 100
causou um grande aumento nas correlações erradas. A partir deste caso observa-se
que mesmo a Transformada Modificada 2 começou a apresentar resultados piores
do que os da Soma das Diferenças Absolutas e da Soma do Quadrado das
Diferenças, porém com o aumento da janela observa-se que a Transformada
Modificada 2 tende a atingir resultados bons.
80
Figura 4.47: Correlações erradas na imagem Teddy com ruído de variância 100
Figura 4.48: Erro RMS das correlações na imagem Teddy com ruído de variância 100
81
A Figura 4.49 mostra as imagens do Teddy contaminadas com ruído de
variância 200 e incidência em 50% da imagem, nesta imagem foi obtido um limiar
de 12 pontos.
Figura 4.49: Imagens contaminadas com ruído de variância 200 em 50% da imagem
Pelos resultados das Figuras 4.50 e 4.51 observa-se que com as imagens com
ruído de variância 200 e incidência em 50% da imagem existe uma melhora no
resultado da Transformada Rank.
Figura 4.50: Correlações erradas na imagem Teddy com ruído de variância 200 e incidência 50%
82
Figura 4.51: Erro RMS das correlações na imagem Teddy com ruído de variância 200 e
incidência 50%
A Figura 4.52 mostra as imagens do Teddy contaminadas com ruído de
variância 200, nesta imagem foi obtido um limiar de 13 pontos.
Figura 4.52: Imagens contaminadas com ruído de variância 200
Nos resultados das Figuras 4.53 e 4.54 observa-se que com a imagem
contaminada ruído de variância 200 houve uma degradação ainda maior dos mapas
de correlação obtidos como é possível perceber pelo aumento das correlações
erradas e do erro RMS.
83
Os mapas de disparidades resultantes da execução dos algoritmos nas imagens
com ruído de variância 200 estão disponíveis no Apêndice B nas Figuras B51 a B60.
Figura 4.53: Correlações erradas na imagem Teddy com ruído de variância 200
Figura 4.54: Erro RMS das correlações na imagem Teddy com ruído de variância 200
84
4.4 Aplicação dos métodos na imagem Cones
Esta imagem foi obtida no repositório de Middlebury (2007), sendo escolhida por
ser uma imagem com riqueza de detalhes e com poucas regiões sem textura. As
imagens esquerda, direita e o mapa de disparidades verdadeiro da imagem direita
são mostrados na Figura 4.55.
Figura 4.55: Imagens dos Cones obtida do repositório de Middlebury
Em um primeiro teste foram calculados os mapas de disparidades com as
imagens originais com todos os métodos e comparados os resultados. Para a
aplicação dos métodos com a Transformada Modificada 1, 2, 4 e 5 calculou-se o
valor do limiar adotando-se como referência a região destacada na Figura 4.56.
Figura 4.56: Região utilizada para o cálculo do limiar na imagem dos Cones
O limiar obtido na imagem original e nas imagens com luminosidade modificada é
de 2 pontos.
85
Com esta terceira imagem próxima de um ambiente real com regiões com muitos
detalhes observa-se um fato interessante, os métodos Soma das Diferenças
Absolutas e Soma do Quadrado das Diferenças não obtiveram resultados tão bons
quanto nas imagens do Corredor e Teddy.
Nas Figuras 4.57 e 4.58 observa-se que nesta imagem dos Cones os métodos
que tiveram os melhores resultados foram a Transformada Modificada 2 e a
Transformada Rank. A Transformada Modificada 5 igualmente como ocorrido na
imagem Teddy mostrou o pior resultado, com uma incidência de correlações erradas
maior até do que a própria Transformada Censo.
Os mapas de disparidades resultantes da execução dos algoritmos nas imagens
originais estão disponíveis no Apêndice B nas Figuras B61 a B70.
Figura 4.57: Correlações erradas na imagem Cones original
86
Figura 4.58: Erro RMS das correlações na imagem Cones original
Em um segundo passo, pares de imagens com luminosidades diferentes foram
analisados. Optou-se por reduzir a luminosidade da imagem esquerda em 10%, 20%
e em seguida 30% para comparar a influência dessa variação nos resultados.
A Figura 4.59 apresenta as imagens com uma diferença de 10% na
luminosidade.
Figura 4.59: Imagem esquerda com luminosidade 10% menor
87
Pelos resultados mostrados nas Figuras 4.60 e 4.61 observa-se que com
luminosidade 10% menor na imagem esquerda os métodos da Transformada Rank e
a Transformada Modificada 2 apresentam os melhores resultados.
Figura 4.60: Correlações erradas na imagem Cones com luminosidade 10% diferente
Figura 4.61: Erro RMS das correlações na imagem Cones com luminosidade 10% diferente
88
A Figura 4.62 apresenta as imagens com uma diferença de 20% na
luminosidade.
Figura 4.62: Imagem esquerda com luminosidade 20% menor
Nas Figuras 4.63 e 4.64 observa-se que após executados os métodos na imagem
com uma diferença de luminosidade de 20%, fora os métodos Soma das Diferenças
Absolutas e Soma do Quadrado das Diferenças, os resultados da quantidade de
correlações erradas permaneceu praticamente inalterado com a variação da
luminosidade da mesma foram como ocorreu com a imagem Teddy.
Figura 4.63: Correlações erradas na imagem Cones com luminosidade 20% diferente
89
Figura 4.64: Erro RMS das correlações na imagem Cones com luminosidade 20% diferente
A Figura 4.65 apresenta as imagens com uma diferença de 30% na
luminosidade.
Figura 4.65: Imagem esquerda com luminosidade 30% menor
Nas Figuras 4.66 e 4.67 observa-se que após executados os métodos na imagem
com uma diferença de luminosidade de 30%, fora os métodos Soma das Diferenças
Absolutas e Soma do Quadrado das Diferenças, os resultados da quantidade de
90
correlações erradas permaneceram praticamente inalterados em relação às imagens
com diferença de luminosidade de 20%.
Os mapas de disparidades resultantes da execução dos algoritmos nas imagens
com luminosidade 30% diferente estão disponíveis no Apêndice B nas Figuras B71
a B80.
Figura 4.66: Correlações erradas na imagem Cones com luminosidade 30% diferente
91
Figura 4.67: Erro RMS das correlações na imagem Cones com luminosidade 30% diferente
Na comparação dos algoritmos com as imagens com ruído foram criadas versões
das imagens originais com ruído de variância 10, 100 e 200 com incidência em todos
os pontos da imagem e um caso com ruído de variância 200 com incidência em 50%
dos pontos da imagem.
A Figura 4.68 mostra as imagens Cones contaminadas com ruído de
variância 10, nesta imagem foi obtido um limiar de 5 pontos.
Figura 4.68: Imagens contaminadas com ruído de variância 10
92
Pelas Figuras 4.69 e 4.70 observa-se que a Transformada Modificada 2
consegue manter resultados próximos da Transformada Rank, sendo um dos
melhores métodos para o caso com pouco ruído.
Figura 4.69: Correlações erradas na imagem do Cones com ruído de variância 10
Figura 4.70: Erro RMS das correlações na imagem Cones com ruído de variância 10
93
A Figura 4.71 mostra as imagens Cones contaminadas com ruído de
variância 100, nesta imagem foi obtido um limiar de 12 pontos.
Figura 4.71: Imagens contaminadas com ruído de variância 100
Como pode ser visto nas Figuras 4.72 e 4.73 o aumento do ruído para
variância 100 causou um grande aumento nas correlações erradas. Observa-se que
a Transformada Modificada 2 neste caso apresenta resultados melhores que no
caso da imagem Teddy, mantendo-se ainda como um dos melhores métodos.
Figura 4.72: Correlações erradas na imagem Cones com ruído de variância 100
94
Figura 4.73: Erro RMS das correlações na imagem Cones com ruído de variância 100
A Figura 4.74 mostra as imagens Cones contaminadas com ruído de
variância 200 e incidência em 50% da imagem, nesta imagem foi obtido um limiar
de 11 pontos.
Figura 4.74: Imagens contaminadas com ruído de variância 200 em 50% da imagem
Nas Figuras 4.75 e 4.76 observa-se que os métodos que apresentaram os
melhores resultados, quando aplicados nas imagens com ruído de variância 200 e
95
incidência em 50% da imagem, foram a Transformada Modificada 2, Transformada
Rank e a Soma das Diferenças Absolutas.
Figura 4.75: Correlações erradas na imagem Cones com ruído de variância 200 e incidência 50%
Figura 4.76: Erro RMS das correlações na imagem Cones com ruído de variância 200 e
incidência 50%
96
A Figura 4.77 mostra as imagens Cones contaminadas com ruído de
variância 200, nesta imagem foi obtido um limiar de 14 pontos.
Figura 4.77: Imagens contaminadas com ruído de variância 200
Nas Figuras 4.78 e 4.79 observa-se que os métodos da Soma das Diferenças
Absolutas e Soma dos Quadrados das Diferenças obtiveram os melhores resultados.
A Transformada Modificada 2 mostra uma tendência de conseguir resultados
semelhantes ao dos melhores métodos com a utilização de janelas grandes.
Os mapas de disparidades resultantes da execução dos algoritmos nas imagens
com ruído de variância 200 estão disponíveis no Apêndice B nas Figuras B81 a B90.
97
Figura 4.78: Correlações erradas na imagem Cones com ruído de variância 200
Figura 4.79: Erro RMS das correlações na imagem Cones com ruído de variância 200
98
4.5 Exemplo de aplicação do algoritmo de correlação
Os mapas de disparidade gerados pelos algoritmos de correlação podem ter
diversas aplicações, uma delas é a utilizão na navegação baseada em visão. Para
exemplificar esta aplicação foi escolhido um simulador chamado Webots na
versão 5.4.0 (Cyberbotics, 2007) e modelado um robô com esteiras. O robô foi
equipado com duas câmeras para permitir a navegação com visão estéreo.
O ambiente modelado é uma sala quadrada de 5 m de lado com uma escada e
alguns blocos. O robô possui aproximadamente as dimensões externas de 0,67 m
de comprimento por 0,47 m de largura.
Para a detecção dos obstáculos com a visão foi implementado o método da
Transformada Modificada 2, já que esta modificação, no geral, gerou os melhores
resultados.
Como é esperado em um ambiente gerado por um simulador a imagem possui
muitas regiões com pouca textura devido ao preenchimento com cores sólidas
(Figura 4.80), o que dificultaria a locomoção do robô devido ao fraco desempenho
dos algoritmos de correlação com regiões uniformes. Para evitar este problema
decidiu-se por colocar texturas nos obstáculos.
Figura 4.80: Modelo inicial implementado no simulador
99
Após a definição das texturas alguns testes foram realizados para a verificação
dos resultados que seriam obtidos. Para a definição da disparidade no qual o robô
deve se desviar do obstáculo foi realizado um teste com um programa de controle
simples. Tal programa foi desenvolvido basicamente para calcular a disparidade
média no centro da imagem fazendo uma busca de até 160 pontos de disparidade.
Neste teste (Figura 4.81) o robô foi mantido parado e um bloco foi movido na frente
das câmeras, sendo a disparidade calculada pelo robô, anotada. As câmeras foram
posicionadas a 150 mm de distância entre si (Figura 4.82) e a uma altura de 70 mm
do solo.
Na Figura 4.83 é apresentada a variação da disparidade conforme a distância do
objeto. Nela é possível observar que um objeto a 0,2 m da câmera possui uma barra
de erro maior que objetos mais afastados. Pode-se notar também que conforme as
distâncias crescem a disparidade tende a variar menos, portanto a resolução da
estimativa de profundidade é menor com o aumento da distância.
A partir destes resultados optou-se por permitir que o robô se aproxime até em
torno de 0,7 a 0,8 m do objeto, ou seja, quando o objeto em sua frente estiver
gerando 50 pontos de disparidade o robô deverá desviar.
Figura 4.81: Cálculo da disparidade equivalente à distância
100
Figura 4.82: Posição das câmeras no robô modelado
Figura 4.83: Disparidades equivalentes às distâncias
Aproveitando-se as imagens geradas com as simulações iniciais, foram
capturadas algumas imagens das câmeras e gerados mapas de disparidades
completos para a visualização da qualidade dos resultados obtidos.
101
Na Figura 4.84 é apresentada uma cena com o robô em frente à um bloco
inclinado e na Figura 4.85 observa-se que o algoritmo de correlação consegue
detectar o bloco e sua inclinação, porém tem dificuldades com a detecção do chão.
Figura 4.84: Cena com um bloco inclinado na frente do robô
Figura 4.85: Mapa de disparidades obtido com o bloco inclinado
Na Figura 4.86 é apresentado um exemplo do robô em frente à escada e
Figura 4.87 observa-se que é possível detectar claramente os diferentes níveis de
disparidade referentes a cada um dos degraus. Portanto uma escada pode ser
102
detectada como sendo um objeto caracterizado por faixas com níveis de disparidade
decrescentes conforme a altura aumenta.
Figura 4.86: Cena com uma escada na frente do robô
Figura 4.87: Mapa de disparidades obtido com uma escada
Ao final de vários testes com as imagens concluiu-se que é possível navegar
utilizando-se o algoritmo de correlação Transformada Modificada 2. Para isto, é
necessário que a detecção dos objetos seja feita em uma faixa logo acima da
metade da imagem da câmera, de forma a evitar que o chão seja analisado.
103
O controlador para a movimentação do robô foi implementado em C++,
basicamente como um sistema de controle reativo que mantêm o robô vagando e
evitando os obstáculos próximos.
Observou-se que o robô simulado (Figuras 4.88 e 4.89) consegue detectar e
desviar dos obstáculos apenas navegando com as câmeras. Entretanto, ainda é
necessário um refinamento maior do controlador, já que ocasionalmente o robô
colide com algum obstáculo.
Figura 4.88: Exemplo da imagem do simulador mostrando o robô desviando do obstáculo
104
Figura 4.89: Exemplo da imagem do simulador observando o mundo com a câmera em outra
posição
105
5 CONCLUSÕES
5.1 Discussão dos resultados
Este trabalho abordou a comparação entre algoritmos de correlação locais e
propôs modificações na Transformada Censo, por esta em geral ter obtido
resultados ruins. A Tabela 5.1 mostra o resumo das qualidades dos métodos.
Os testes foram realizados com base em três imagens e suas variantes. Cada um
dos pares estéreo foi escolhido por suas características singulares. A imagem do
corredor por ser uma imagem perceptivelmente sintética e por apresentar várias
pequenas regiões com textura uniforme. A imagem Teddy foi escolhida por ser uma
imagem de aparência mais natural que possui algumas regiões com pouca textura e
também regiões com um padrão repetitivo. A imagem Cones foi escolhida por sua
riqueza de detalhes.
Em diversos testes realizados com as três imagens escolhidas observou-se que
nem sempre um algoritmo que possui um bom resultado em uma das imagens
consegue ter bons resultados nas outras imagens, como foi o caso da Transformada
Modificada 5. Esta modificação apresentou resultados bons apenas na imagem do
corredor em todas as suas variações, porém quando aplicada em imagens com mais
detalhes mostrou-se muito ineficiente.
No geral a Transformada Modificada 2 foi a modificação que conseguiu os
melhores resultados, em alguns casos apresenta uma quantidade de erros de
correlação menor do que todos os outros métodos. Apesar desta modificação
sempre obter resultados muito melhores do que a Transformada Censo original, por
vezes conseguindo atingir a metade do número de correlações erradas em relação
ao Censo, observa-se que em presença de imagens com bastante ruído de
amplitude grande seu desempenho não atinge o mesmo patamar dos algoritmos
Soma das Diferenças Quadráticas e Soma dos Quadrados das Diferenças. Sendo
que, com janelas pequenas de 5 x 5 pontos, consegue se manter na média dos
algoritmos e com janelas grandes, com 21 x 21 pontos, mostra um resultado próximo
ao dos melhores métodos, como é possível observar nas Figuras 4.50 e 4.78.
106
Tabela 5.1: Tabela resumo das qualidades dos métodos
Método
Imagem Original
Imagem com
luminosidade
diferente
Imagem com
ruído
Tempo de
execução
Soma das
Diferenças
Absolutas
Muito bom com
imagem sintética,
mediano nos
demais casos
Resultados
péssimos
Resultados muito
bons
Baixo
Soma do
Quadrado
das
Diferenças
Resultados
medianos com
imagens reais
Resultados
péssimos
Resultados bons Baixo
Correlação
Cruzada
Normalizada
Resultados
medianos
Resultados
medianos
Resultados
medianos
Alto
Transformada
Rank
Resultados muito
bons
Resultados muito
bons
Resultados muito
bons
Baixo
Transformada
Censo
Resultados ruins Resultados ruins Resultados ruins Baixo
Transformada
Modificada 1
Resultados
medianos
Resultados
medianos
Resultados ruins,
porém melhor
que o Censo
Baixo
Transformada
Modificada 2
Resultados muito
bons
Resultados muito
bons
Resultados
medianos
Baixo
Transformada
Modificada 3
Resultados
medianos
Resultados
medianos
Resultados
medianos
Alto
Transformada
Modificada 4
Resultados
medianos
Resultados
medianos
Resultados
medianos
Alto
Transformada
Modificada 5
Muito bom com
imagem sintética,
ruim nos demais
casos
Mediano com
imagem sintética,
ruim nos demais
casos
Muito bom com
imagem sintética,
ruim nos demais
casos
Baixo
107
Observa-se na Tabela 4.2 da seção de resultados que a Transformada
Modificada 2 apresenta tempo de execução menor que o da Transformada Censo.
Ficando no mesmo patamar do desempenho dos algoritmos Soma das Diferenças
Quadráticas, Soma dos Quadrados das Diferenças e Transformada Rank.
As demais modificações testadas, com exceção da 5, sempre mostraram
resultados melhores que a Transformada Censo original, porém apenas obtiveram
performance mediana entre os algoritmos testados.
Para as simulações escolheu-se o melhor algoritmo modificado sendo este
implementado no controlador. Nos resultados das simulações observa-se que a
Transformada Modificada 2 mostrou-se uma opção boa, visto que permitiu que o
robô simulado conseguisse navegar evitando os obstáculos, mesmo sendo
implementado de forma simples sem o uso de nenhuma técnica de melhoria do
mapa de disparidades.
5.2 Sugestões para trabalhos futuros
Na implementação atual da Transformada Modificada 2, o valor do limiar α a ser
utilizado deve ser antecipadamente definido coletando-se amostras de imagens e
efetuando o cálculo do limiar a ser utilizado. Porém, este cálculo “off-line” do limiar
leva a uma falta de praticidade no caso da implementação deste algoritmo em um
robô móvel, visto que estas câmeras estarão sujeitas a interferências e outros
problemas, os quais podem degradar a qualidade da imagem, gerando uma
modificação do valor do limiar ideal. Para resolver este problema e não precisar
recalcular manualmente o limiar a cada vez que a qualidade das imagens sofre
alguma alteração, é necessário estudar alguma forma de automatizar a
determinação do limiar de forma a permitir a auto-adaptação do algoritmo a cada
nova condição da imagem.
No controlador implementado para a navegação exclusivamente baseada em
visão, enfrentaram-se problemas com o mapa de disparidades gerado pelo chão
próximo ao robô. A imagem do chão, capturada a partir da posição das câmeras no
robô, gerava um mapa de disparidades correto apenas em alguns poucos
posicionamentos do robô, sendo que em boa parte dos casos os mapas gerados
108
eram equivocados. Tal problema aparentemente estava sendo gerado pelas
distorções causadas pelas diferentes perspectivas de visualização do chão.
Para a resolução deste problema é possível tentar aumentar a robustez do
algoritmo às distorções nas imagens implementando-o juntamente com técnicas de
otimização, tanto as locais quanto as globais. Para a verificação da melhora em seu
desempenho pode-se testar a implementação do algoritmo utilizando tanto imagens
geradas por um simulador quanto imagens de ambientes reais.
Depois de implementado o auto ajuste do limiar e a agregação de algum método
de otimização do mapa de disparidades, pode-se aplicar este algoritmo no
controlador de um robô autônomo. Para o desenvolvimento do controlador sugere-se
utilizar algum programa de simulação de robôs, como por exemplo: o Webots
(Cyberbotics, 2007), Player/Stage/Gazebo (Gerkey et al, 2007), Pyrobot
(Blank et al, 2004) ou algum outro disponível. Em um outro passo, após a
confirmação da funcionalidade do controlador, poder-se-ia implementar o controlador
em um robô real para a verificação de seu comportamento ao tentar introduzir ruídos
ou interferências nas imagens das câmeras e outras situações que degradem a
qualidade da imagem obtida.
109
REFERÊNCIAS BIBLIOGRÁFICAS
AMBROSCH, K. et al. Hardware implementation of an SAD based stereo vision
algorithm. IEEE Computer Vision and Pattern Recognition, p. 1-6, junho de 2007
BANKS, J. et al. A Constraint to Improve the Reliability of Stereo Matching
Using the Rank Transform, Proceedings of the IEEE International Conference on
Acoustics, Speech, and Signal Processing, Arizona, p. 3321-3324, março 1999a
BANKS, J. et al. An Extension to the Rank Constraint for Improving the
Reliability of Stereo Matching Using the Rank Transform. Proceedings of the
IEEE International Conference on Systems, Man, and Cybernetics, Tóquio, p. 589-
594, outubro 1999b
BANKS, J.; BENNAMOUN, M. Reliability analysis of the rank transformation for
stereo matching. IEEE Transactions on System, Man, and Cybernetics, p. 870-880,
dezembro 2001
BLANK, D. S.; KUMAR, D.; MEEDEN, L. e YANCO, H. Pyro: A Python-based
Versatile Programming Environment for Teaching Robotics. Journal of
Educational Resources in Computing (JERIC), 2004
BONN UNIVERSITY. Stereo Images with Ground Truth Disparity and Occlusion.
Fornece um banco de imagens estereoscópicas artificiais. Disponível em:
<http://www-dbv.cs.uni-bonn.de/stereo_data/>. Acesso em: março de 2005
BROCKERS, R.; HUND, M.; MERTSCHING, B. Stereo vision using cost-
relaxation with 3D support regions. Image and Vision Computing New Zealand,
Nova Zelândia, 2005
CARVALHO, P. C. et al , Fotografia 3D, disponível : <http://w3.impa.br/~lvelho/>.
Acesso em: março de 2005
110
CYBERBOTICS Webots. Versão 5.4.0 [S.I.]: Cyberbotics, 2007. Disponível em:
<http://www.cyberbotics.com/products/webots/download.html>. e
<http://www.comsol.ch/content.php?si=317&id=170>. Acesso em: agosto de 2007
DUDEK, G.; JENKIN, M. Computational Principles of Mobile Robotics.
Cambridge University Press, Nova Yorque, 2000
EL-ETRIBY, S.; AL-HAMADI, A.; MICHAELIS, B. Dense stereo correspondence
with slanted surface using phase-based algorithm. IEEE International
Symposium on Industrial Electronics, p. 1807-1813, junho 2007
FAUGERAS, O.; ROBERT, L. What can two images tell us about a third one?.
INRIA. França, 1993a
FAUGERAS, O.; ROBERT, L. Real Time correlation based stereo: algorithm,
implementations and applications. INRIA, França, 1993b
FLEET, D. J.; JEPSON, A. D.; JENKIN, M. R. M. Phase Based Disparity
Measurement. Graphical Models and Image Processing: Image Understanding,
Orlando, p. 198-210, março 1991
FRANÇA, J. A. Desenvolvimento de Algoritmos de Visão Estereoscópica para
Aplicações em Robótica Móvel. Universidade de Santa Catatina, 2003
FRANÇA, J. A.; STEMMER, M. R.; FRANÇA, M. B. M. Algoritmo robusto para
correspondência de pontos em imagens estereoscópicas na ausência de
calibração. Seminário de Ciências Exatas e Tecnolágicas, Londrina, 2005
FUSIELLO, A. Tutorial on Rectification of Stereo Images. University di Udine,
Itália, 1998
FUSIELLO, A.; TRUCCO, E.; VERRI, A. A compact Algorithm for rectification of
stereo pairs. Machine Vision and Application, p. 16-22, 2000
111
FRÖBA, B.; ERNST, A. Face Detection with the Modified Census Transform.
Sixth IEEE International Conference on Automatic Face and Gesture Recognition, p.
17-19, maio 2004
GAUTAMA, S.; LACROIX, S.; DEVY, M. Evaluation of Stereo Matching
Algorithms for Occupant Detection. Proceedings of the IEEE International
Workshop on Recognition, Analysis, and Tracking of Faces and Gestures in Real-
Time Systems, p. 177-184, setembro 1999
GEHRIG, S.; FRANKE, U. Improving sub-pixel accuracy for long range stereo.
IEEE International Conference on Computer Vision VRML workshop, p. 1-7, outubro
2007
GERKEY, B.; VAUGHAN, R. T. e HOWARD, A. The Player/Stage Project: Tools
for Multi-Robot and Distributed Sensor Systems. Proceedings of the 11th
International Conference on Advanced Robotics, p. 317-323, Coimbra, Portugal,
junho 2003
GONÇALVES, L. M. G. Matching de Objetos em Imagens Estéreos. Universidade
Federal do Rio de Janeiro, notas de aula de visão computacional, 2005
GONZALEZ, R. C.; WOODS, R. E. Processamento de Imagens Digitais. Editora
Edgard Blucher Ltda, São Paulo, 2000
HEIKKILÃ, J.; SILVÉN, O. A Four-Step Camera Calibration Procedure with
Implicit Image Correction. University of Oulu, Finland, 1997
HIRSCHMÜLLER, H. Accurate and efficient stereo processing by semi-global
matching and mutual information. IEEE Conference on Computer Vision and
Pattern Recognition, vol. 2, p. 807-814, junho 2005
HIRSCHMÜLLER, H. Stereo vision in structured environments by consistent
semi-global matching. IEEE Conference on Computer Vision and Pattern
Recognition, vol. 2, p. 2386-2393, 2006
112
HOLT, R.; NETRAVALI, A. Camera Calibration Problem: Some New Results.
CVGIP Image Understand. vol 54, n
o
3, p. 368-383, Novembro 1991
HU, X.; AHUJA, N. Matching point features with ordered geometric, rigidity, and
disparity constraints. IEEE Transactions on Pattern Analysis and Machine
Intelligence, Whashington, vol.16, p. 1041-104, 1994
INRIA - Institut National de Recherche en Informatique et Automatique.
Stereograms of the Syntim team. O instituto INRIA disponibiliza diversas imagens
estéreo calibradas. Disponível em:
<http://www-rocq.inria.fr/~tarel/syntim/paires.html>. Acesso em: março 2005
JACOBI, R.; CARDOSO, R.; BORGES, G. VoC: A Reconfigurable Matrix for
Stereo Vision Processing. 20th International IEEE Parallel and Distributed
Processing Symposium, p. 6, abril 2006
JENKIN, M. R. M.; JEPSON, A. D.; TSOTSOS, J. K. Techniques for disparity
measurement. CVGIP: Image Understanding. vol. 53, p. 14-30, janeiro 1991
JUST, A.; RODRIGUEZ, Y.; MARCEL, S. Hand Posture Classiication and
Recognition using the Modified Census Ttransformation. Proceedings of the 7th
IEEE International Conference on Automatic Face and Gesture Recognition, abril
2006
KIM, J.; LEE, K. M.; CHOI, B.T.; LEE, S. U. A dense stereo matching using two
pass dynamic programming with generalized ground control points. IEEE
Conference on Computer Vision and Pattern Recognition, vol. 2, p. 1075-1082, 2005
KLAUS, A.; SORMANN, M.; KARNER, K. Segment-based stereo matching using
belief propagation and a self-adapting dissimilarity measure. Proceedings of the
18th IEEE Conference on Computer Vision and Pattern Recognition, vol. 3, p. 15-18,
2006
KOYAMA, C. S.; HASEGAWA, J. K. Radar fotogramétrico: cálculo da velocidade
de um objeto a partir de uma seqüência de imagens digitais. Revista Brasileira
de Cartografia, Presidente Prudente, vol. 54, n. 1, p. 1-9, 2002
113
KUHL, A. Comparison of stereo matching algorithms for mobile robots. The
University of Western Australia, fevereiro 2005
KUHN, M. et al. Efficient ASIC Implementation of a Real-Time Depth Mapping
Stereo Vision System. Proceedings of the 46th IEEE International Midwest
Symposium on Circuits and Systems, vol. 3, p. 1478-1481, dezembro 2003
KUMAR, R.; HANSON, A. R. Robust Methods for Estimating Pose and a
Sensitivity Analysis. CVGIP Image Understanding, vol. 60, n
o
3, p. 313-342,
novembro 1994.
LANE, R. A.; THACKER, N. A. Tutorial: Overview of stereo Matching Research.
Universidade de Manchester, Manchester, 1998
LEI, C., SELZER, J.; YANG, Y. Region-tree based stereo using dynamic
programming optimization. IEEE Conference on Computer Vision and Pattern
Recognition, vol. 2, p. 2378-2385, 2006
LOWE, D. G. Distinctive image features from scale-invariant keypoints. IEEE
International Journal of Computer Vision, vol. 60, p. 91-110, novembro 2004
LU, X.; MANDUCHI, R. Wide Baseline feature matching using the cross-epipolar
ordering constraint. IEEE Conference on Computer Vision and Pattern Recognition,
vol. 1, p. 16-23, junho 2004
LARSEN, S. et al. Temporally consistent reconstruction from multiple video
streams using enhanced belief propagation. IEEE International Conference on
Computer Vision, Rio de Janeiro, p. 14-21, outubro 2007
MATTOCCIA, S.; TOMBARI, F.; STEFANO, L. D. Stereo vision enabling precise
border localization within a scanline optimization framework. IEEE Asian
Conference on Computer Vision, Tóquio, p. 18-22, novembro 2007
114
MIDDLEBURY COLLEGE. Stereo Vision Research Page: Stereo data sets with
ground truth. Fornece uma série de imagens estéreo, incluindo a imagem Cones e
Teddy com seus mapas de disparidade esperados, este acervo disponibiliza também
a imagem da Universidade de Tsukuba. Disponível em:
<http://cat.middlebury.edu/stereo/data.html> e
<http://cat.middlebury.edu/stereo/newdata.html>. Acesso em: junho 2007
MORDOHAI, P.; MEDIONI, G. Stereo using monocular cues within the tensor
voting framework. IEEE Pattern Analysis and Machine Intelligence, vol. 28, p. 968-
982, junho 2006
MURPHY, C.; LINDQUIST, D.; RYNNING, A. M. Low-Cost Stereo Vision on an
FPGA. 15th Annual IEEE Symposium on Field-Programmable Custom Computing
Machines, p. 333-334, abril 2007
NAOULOU, A. et al. An Alternative to Sequential Architectures to Improve the
Processing Time of Passive Stereovision Algorithms. IEEE International
Conference on Field Programmable Logic and Applications, p. 1-4, agosto 2006
OTUYAMA, J. M. Curso de visão computacional. Universidade Federal de Santa
Catarina, 1998, O site apresenta conceitos de visão estéreo. Disponível em:
<http://www.inf.ufsc.br/~visao/1998/otuyama/>. Acesso em: março de 2005
QIU, L.; LI, L. Contour Extraction of Moving Objects. Proceedings of the 14th
IEEE International Conference on Pattern Recognition, Whashington, vol. 2, p. 1427,
1998
SCHARSTEIN, D.; SZELISKI, R. A Taxonomy and Evaluation of Dense Two-
Frame Stereo Correspondence Algorithms. International Journal of Computer
Vision, vol. 47, p. 7-42, 2002
SCHARSTEIN, D.; SZELISKI, R. High-accuracy stereo depth maps using
structured light. IEEE Computer Society Conference on Computer Vision and
Pattern Recognition, Madison, vol. 1, p. 195-202, Junho 2003
115
SMERALDI, F. Ranklets: orientation selective non-parametric features applied
to face detection. Proceedings of IEEE International Conference on Pattern
Recognition, Vol. 3, p. 379-382, 2002
STEFANO, L. D.; MARCHIONNI, M.; MATTOCCIA, S. Real time dense stereo on a
personal computer. IEEE Computer Architectures for Machine Perception, p. 12,
maio 2003
STEFANO, L. D.; MARCHIONNI, M.; MATTOCCIA, S. Fast area based stereo
matching algorithm. University of Bologna, Bolonha, 2004
STRECHA, C.; FRANSENS, R.; GOOL, L. V. Combined depth and outlier
estimation in multi-view stereo. IEEE Conference on Computer Vision and Pattern
Recognition, vol. 2, p. 2394-2401, 2006
SUN, J.; LI, Y.; KANG, S. B.; SHUM, H. Y. Symmetric stereo matching for
occlusion handling. IEEE Conference on Computer Vision and Pattern Recognition,
vol. 2, p. 399-406, 2005
TOMBARI, F.; MATTOCCIA, S.; STEFANO, L. D. Segmentation-based adaptive
support for accurate stereo correspondence. IEEE Pacific-Rim Symposium on
Image and Video Technology, p. 427-438, 2007
VEKSLER, O. Stereo correspondence by dynamic programming on a tree. IEEE
Conference on Computer Vision and Pattern Recognition, vol. 2, p. 384-390, 2005
WANG, L.; GONG, M. W.; GONG, M. L.; YANG, R. G. How far can we go with
local optimization in real time stereo matching. IEEE International Symposium on
3D data processing, visualization and transmission, p. 129-136, 2006
WANG, L.; LIAO, M.; GONG, M.; YANG, R.; NISTÉR, D. High-quality real-time
stereo using adaptive cost aggregation and dynamic programming. IEEE 3D
Data Processing Visualization and Transmission, p. 798-805, 2006
116
WENG, J.; COHEN, P. AND HERNIOU, M. Camera Calibration with Distortion
Models and Accuracy Evaluation. IEEE Transactions on Pattern Analysis and
Machine Intelligente, vol. 14, p. 965-980, outubro 1992
WOODFILL, J.; HERZEN, B. V. AND ZABIH, R. Frame-rate Robust Stereo on a
PCI Board. Cornell University, Unpublished, 1999
WOODFILL, J. I.; GORDON, G.; BUCK, R. Tyzx DeepSea High Speed Stereo
Vision System. IEEE Conference on Computer Vision and Pattern Recognition, p.
41, junho 2004
YAMADA, K. AND ICHIKAWA, T. Generation of A Disparity panorama Using a 3-
Camera Capturing System. IEEE International Conference on Image Processing,
vol. 2, p. 772-775, 2000
YANG, Q. et al. Real-time global stereo matching using hierarchical belief
propagation. British Machine Vision Conference, 2006a
YANG, Q. et al. Stereo matching with color-weighted correlation, hierarchical
belief propagation and occlusion handling. IEEE Conference on Computer Vision
and Pattern Recognition, vol. 2, p. 2347-2354, 2006b
YANG, Q. et al. Spatial-depth super resolution for range images. IEEE Computer
Vision and Pattern Recognition, p. 1-8, junho 2007
YOON, K. J.; KWEON, L. S. Adaptive support-weight approach for
correspondence search. IEEE Pattern Analysis and Machine Intelligence, vol. 28,
abril 2006
YOON, K. J.; KWEON, L. S. Stereo matching with the distinctive similarity
measure. IEEE International Conference on Computer Vision, Rio de Janeiro, p. 1-7,
outubro 2007
117
ZHANG, Z. Flexible Camera Calibration By Viewing a Plane From Unknown
Orientations. Microsoft Research, 1999, Disponível em:
<http://research.microsoft.com/~zhang>. Acesso em: maio de 2005
ZABIH, R.,; WOODFILL, J. Non-parametric Local Transforms for Computing
Visual Correspondence. Third European Conference on Computer Vision,
Estocolmo, vol. 2, p. 151-159, maio 1994
ZHAO, J.; KATUPITIYA, J. A fast stereo vision algorithm with improved
performance at object borders. IEEE International Conference on Intelligent
Robots and Systems, p. 5309-5314, outubro 2006a
ZHAO, J.; KATUPITIYA, J. A dynamic programming approach based stereo
vision algorithm improving object border performance. IEEE International
Conference on Intelligent Robots and Systems, p. 5315-5320, outubro 2006b
ZHAO, J.; KATUPITIYA, J. A Multi Window Stereo Vision Algorithm With
Improved Performance at Objects Borders. IEEE Symposium on Computational
Inteligence in Image Processing, p. 66-71, abril 2007
ZITNICK, L.; KANG, S. B. Stereo for image-based rendering using image over-
segmentation. IEEE International Journal of Computer Vision, vol. 75, p. 49-65,
outubro 2007
118
APÊNDICE A – CÓDIGO FONTE DAS ROTINAS UTILIZADAS
Função limiar.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função limiar.m %
% Revisão 17: %
% %
% function [v] = limiar(arquivo) %
% Esta função é utilizada para definir o valor do limiar a ser utilizado %
% no algoritmo do censo modificado. %
% O valor do limiar é estimado com base no desvio padrão da variação de %
% instensidade entre pontos vizinhos na linha. %
% %
% arquivo => é o trecho da janela separada para a estimativa do limiar %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [v] = limiar(arquivo)
if nargin<1,
disp('Por favor, informe os parametros necessários.');
return;
end
% Leio o arquivo da imagem
im = imread(arquivo);
im = im(:,:,1);
m = size(im);
% Transformo a imagem em um vetor
im_vetor=[];
for i=1:m(1)
im_vetor = [im_vetor im(i,:)];
end
% Encontro a variação da intensidade entre os pontos adjacentes
im_vetor=diff(im_vetor);
% Encontro o valor do limiar
disp('Limiar');
v = std(im_vetor)*2
end
119
Função ruido.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função ruido.m %
% Revisão 5: %
% %
% function [v] = ruido(arquivo, variancia, incidencia) %
% Esta função é utilizada para introduzir um ruído de distribuição %
% normal com a variância desejada na imagem. É possível optar também por %
% aplicar o ruído apenas em parte dos pontos da imagem alterando o valor %
% da incidência de 0 a 1 (0 a 100% dos pontos serão afetados pelo ruído).%
% %
% arquivo => imagem onde o ruído será adicionado %
% variancia => variancia do ruído %
% incidencia => percentual dos pontos a ser afetado pelo ruído, caso não %
% seja utilizado é adotado por padrão o valor 1. %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [v] = ruido(arquivo,variancia,incidencia)
% Verifico se todos os parâmetros necessários foram fornecidos
if nargin<3,
incidencia=1;
end
if nargin<2,
disp('Por favor, informe os parametros necessários.');
return;
end
% Leio o arquivo da imagem já em tons de cinza
im = imread(arquivo);
% Caso o formato do arquivo de entrada possua os três canais de cor escolho
% apenas um deles
im = im(:,:,1);
r = zeros(size(im));
% Escolho os pontos nos quais aplicarei o ruido
incid = find((rand(size(im))) <= incidencia);
r(incid) = sqrt(variancia)*randn(size(incid));
% Como ao converter para uint8 perco os valores negativos, devo subtraí-los
% em um segundo passo
im_r = im + uint8(r) - uint8(-r);
fname = [arquivo(1:end-4) '_r.png'];
imwrite(im_r,fname,'png');
end
120
Função disparidade.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função disparidade.m %
% Revisão 20: %
% %
% function [d] = disparidade(arquivo,metodo,m,n,disp_max,limiar) %
% Para que o programa funcione é necessário que as imagens esquerda e %
% direita estejam nomeados da forma prefixo_e.jpg e prefixo_d.jpg, no %
% qual o prefixo pode ser um nome qualquer. %
% Esta função recebe como parâmetros o prefixo do nome das imagens, o %
% método a ser utilizado, quantas linhas acima e abaixo do ponto serão %
% utilizadas na formação da janela, quantas colunas à esquerda e a %
% direita serão utilizadas na formação janela, o limite máximo para a %
% disparidade a ser encontrada e o limiar no caso dos métodos que o %
% utilizam. %
% O valor retornado pela função é o mapa de disparidades encontrado. %
% %
% arquivo, metodo => strings %
% m, n, disp_max, limiar => números inteiros %
% [d] = disparidade(arquivo,metodo,m,n,disp_max,f) %
% %
% obs.: As imagens fornecidas devem possuir o mesmo tamanho. %
% Caso seja necesário trocar o formato da imagem de entrada basta %
% trocar no campo definido com *1 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [d] = disparidade(arquivo,metodo,m,n,disp_max,limiar)
% Verifica se todos os parâmetros necessários foram fornecidos
if metodo == 'c_1',
if nargin < 6
disp('Por favor, informe todos os parametros necessários.');
end
end
if metodo == 'c_2',
if nargin < 6
disp('Por favor, informe todos os parametros necessários.');
end
end
if metodo == 'c_4',
if nargin < 6
disp('Por favor, informe todos os parametros necessários.');
end
end
if metodo == 'c_5',
if nargin < 6
disp('Por favor, informe todos os parametros necessários.');
end
end
if nargin < 5,
disp('Por favor, informe todos os parametros necessários.');
return;
121
end
close all;
% Crio os nomes dos arquivos das imagens esquerda e direita, aqui é
% definido o formato do arquivo a ser lido.
% *1 => Caso necessário pode se utilizar: jpg, bmp, pgm, etc
fname_E=[arquivo '_e.jpg'];
fname_D=[arquivo '_d.jpg'];
% Leio os arquivos de imagens
disp('Lendo imagens...');
im_e = imread(fname_E);
im_d = imread(fname_D);
% Rodando a rotina de correlação, para o cálculo das disparidades
disp('Calculando as disparidades...');
% Ligando o cronômetro...
inicio=cputime;
% Construindo o mapa de disparidades conforme o método de corrrelação
% escolhido
% Método de correlação Soma das Diferenças Absolutas (SAD)
if metodo == 'sad'
d = sad(im_e(:,:,1),im_d(:,:,1),m,n,disp_max);
eval([ ' save ' arquivo '_sad.txt d -ascii -tabs'])
% Método de correlação Soma do Quadrado das Diferenças (SSD)
elseif metodo == 'ssd'
d = ssd(im_e(:,:,1),im_d(:,:,1),m,n,disp_max);
eval([ ' save ' arquivo '_ssd.txt d -ascii -tabs'])
% Método de correlação por média normalizada (cor)
elseif metodo == 'cor'
d = cor(im_e(:,:,1),im_d(:,:,1),m,n,disp_max);
eval([ ' save ' arquivo '_cor.txt d -ascii -tabs'])
% Método de correlação baseado na transformada censo (cen)
elseif metodo == 'cen'
d = cen(im_e(:,:,1),im_d(:,:,1),m,n,disp_max);
eval([ ' save ' arquivo '_cen.txt d -ascii -tabs'])
% Método de correlação baseado na transformada rank (rnk)
elseif metodo == 'rnk'
d = rnk(im_e(:,:,1),im_d(:,:,1),m,n,disp_max);
eval([ ' save ' arquivo '_rnk.txt d -ascii -tabs'])
% Método de correlação baseado na transformada censo modificado 1
elseif metodo == 'c_1'
d = c_1(im_e(:,:,1),im_d(:,:,1),m,n,disp_max,limiar);
eval([ ' save ' arquivo '_c_1.txt d -ascii -tabs'])
% Método de correlação baseado na transformada censo modificado 2
elseif metodo == 'c_2'
d = c_2(im_e(:,:,1),im_d(:,:,1),m,n,disp_max,limiar);
eval([ ' save ' arquivo '_c_2.txt d -ascii -tabs'])
122
% Método de correlação baseado na transformada censo modificado 3
elseif metodo == 'c_3'
d = c_3(im_e(:,:,1),im_d(:,:,1),m,n,disp_max);
eval([ ' save ' arquivo '_c_3.txt d -ascii -tabs'])
% Método de correlação baseado na transformada censo modificado 4
elseif metodo == 'c_4'
d = c_4(im_e(:,:,1),im_d(:,:,1),m,n,disp_max,limiar);
eval([ ' save ' arquivo '_c_4.txt d -ascii -tabs'])
% Método de correlação baseado na transformada censo modificado 5
elseif metodo == 'c_5'
d = c_5(im_e(:,:,1),im_d(:,:,1),m,n,disp_max,limiar);
eval([ ' save ' arquivo '_c_5.txt d -ascii -tabs'])
% Caso o método escolhido não exista o programa informa e retorna
else
disp('O método escolhido não existe.');
d=0;
return ;
end
% Desligando o cronômetro ao término do cálculo das disparidades
fim=cputime;
tempo=fim-inicio;
disp('O tempo de processamento é:');
disp(tempo);
disp('');
% Plotando as figuras com os resultados
figure(1);
imagesc(im_e);
colormap('gray');
title('Imagem esquerda');
figure(2);
imagesc(im_d);
colormap('gray');
title('Imagem direita');
figure(3);
imagesc(d);
colormap('gray');
titulo = ['Mapa de disparidades pelo método ' metodo];
title(titulo);
end
123
Função sad.m (Soma das Diferenças Absolutas)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função sad.m %
% Revisão 8: %
% Usa o algoritmo SAD (Soma das Diferenças Absolutas). %
% A janela referência (alvo) é uma região na minha imagem direita. %
% %
% function [disp] = sad(E,D,m,n,disp_max) %
% Esta função recebe como parâmetros as imagens esquerda, direita, %
% quantas linhas acima e abaixo do ponto serão utilizadas na formação da %
% janela, quantas colunas à esquerda e a direita serão utilizadas na %
% formação janela e o limite máximo para a disparidade a ser encontrada. %
% O valor retornado pela função é o mapa de disparidades encontrado. %
% %
% E e D => matriz de intensidades da imagem %
% m, n, disp_max => números inteiros %
% %
% obs.: As imagens fornecidas devem possuir o mesmo tamanho. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [disp] = sad(E,D,m,n,disp_max)
% Copiando as imagens para uma janela maior (aumentando as imagens com
% bordas m e n)
[linhas, colunas] = size(E);
imgE = zeros(linhas+(2*m),colunas+(2*n));
imgD = zeros(linhas+(2*m),colunas+(2*n));
disp = zeros(linhas+(2*m),colunas+(2*n));
imgE(m+1:m+linhas, n+1:n+colunas) = E;
imgD(m+1:m+linhas, n+1:n+colunas) = D;
maximo = (2*m+1)*(2*n+1)*255;
% Vou mover a janela alvo por toda a imagem direita
% Varrendo cada linha da imagem direita
for s = m+1 : m+linhas
% Varrendo cada coluna da imagem direita
for t = n+1 : n+colunas
% Para cada um dos pontos da imagem direita crio uma janela alvo
% que será procurada na linha correspondente na imagem esquerda
alvo = imgD(s-m:s+m, t-n:t+n);
% Como neste algoritmo a melhor correlação é dada pelo menor valor
% devo inicializar o meu vetor de resultados com números grandes
result=ones(1, disp_max)*maximo;
% Vou procurar essa janela alvo na imagem esquerda varrendo um
% pedaço da linha (janela de busca)
% Defino o ponto de parada na janela busca
if t+disp_max < n+colunas
% Caso onde paro de buscar quando chego na disparidade máxima
fim = t + disp_max;
else
124
% Caso onde paro de buscar na borda da imagem
fim = n + colunas;
end
for v = t : fim
% Defino a janela atual
busca = imgE(s-m:s+m, v-n:v+n);
% Calculo do valor da correlação SAD e crio um vetor temporário
% com os resultados da correlação de cada janela atual na
% janela busca, para depois escolher o melhor correlacionado.
result(v-t+1) = sum(sum(abs(alvo-busca)));
end
% O valor mínimo significa a janela mais correlacionada, portanto
% atribuo à minha matriz de disparidades a distância onde essa
% janela foi encontrada.
[val,col] = min(result);
disp(s,t) = (col-1);
end
end
disp = disp(m+1:linhas+(m),n+1:colunas+(n));
end
Função ssd.m (Soma do Quadrado das Diferenças)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Função ssd.m %
% Revisão 8: %
% Usa o algoritmo SSD (Soma dos Quadrados das Diferenças). %
% A janela referência (alvo) é uma região na minha imagem direita. %
% %
% function [disp] = ssd(E,D,m,n,disp_max) %
% Esta função recebe como parâmetros as imagens esquerda, direita, %
% quantas linhas acima e abaixo do ponto serão utilizadas na formação da %
% janela, quantas colunas à esquerda e a direita serão utilizadas na %
% formação janela e o limite máximo para a disparidade a ser encontrada. %
% O valor retornado pela função é o mapa de disparidades encontrado. %
% %
% E e D => matriz de intensidades da imagem %
% m, n, disp_max => números inteiros %
% %
% obs.: As imagens fornecidas devem possuir o mesmo tamanho. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [disp] = ssd(E,D,m,n,disp_max)
% Copiando as imagens para uma janela maior (aumentando as imagens com
% bordas m e n)
[linhas, colunas] = size(E);
imgE = zeros(linhas+(2*m),colunas+(2*n));
125
imgD = zeros(linhas+(2*m),colunas+(2*n));
disp = zeros(linhas+(2*m),colunas+(2*n));
imgE(m+1:m+linhas, n+1:n+colunas) = E;
imgD(m+1:m+linhas, n+1:n+colunas) = D;
maximo = (2*m+1)*(2*n+1)*(255^2);
% Vou mover a janela alvo por toda a imagem direita
% Varrendo cada linha da imagem direita
for s = m+1 : m+linhas
% Varrendo cada coluna da imagem direita
for t = n+1 : n+colunas
% Para cada um dos pontos da imagem direita crio uma janela alvo
% que será procurada na linha correspondente na imagem esquerda
alvo = imgD(s-m:s+m, t-n:t+n);
% Como neste algoritmo a melhor correlação é dada pelo menor valor
% devo inicializar o meu vetor de resultados com números grandes
result=ones(1, disp_max)*maximo;
% Vou procurar essa janela alvo na imagem esquerda varrendo um
% pedaço da linha (janela de busca)
% Defino o ponto de parada na janela busca
if t+disp_max < n+colunas
% Caso onde paro de buscar quando chego na disparidade máxima
fim = t + disp_max;
else
% Caso onde paro de buscar na borda da imagem
fim = n + colunas;
end
for v = t : fim
% Defino a janela atual
busca = imgE(s-m:s+m, v-n:v+n);
% Calculo do valor da correlação SSD e crio um vetor temporário
% com os resultados da correlação de cada janela atual na
% janela busca, para depois escolher o melhor correlacionado.
result(v-t+1) = sum(sum((alvo-busca).^2));
end
% O valor mínimo significa a janela mais correlacionada, portanto
% atribuo à minha matriz de disparidades a distância onde essa
% janela foi encontrada.
[val,col] = min(result);
disp(s,t) = (col-1);
end
end
disp = disp(m+1:linhas+(m),n+1:colunas+(n));
end
126
Função cor.m (Correlação Cruzada Normalizada)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função cor.m %
% Revisão 7: %
% Usa o algoritmo de correlação por média normalizada descrito no livro %
% do Gonzalez & Woods (2000). %
% A janela referência (alvo) é uma região na minha imagem direita. %
% %
% function [disp] = cor(E,D,m,n,disp_max) %
% Esta função recebe como parâmetros as imagens esquerda, direita, %
% quantas linhas acima e abaixo do ponto serão utilizadas na formação da %
% janela, quantas colunas à esquerda e a direita serão utilizadas na %
% formação janela e o limite máximo para a disparidade a ser encontrada. %
% O valor retornado pela função é o mapa de disparidades encontrado. %
% %
% E e D => matriz de intensidades da imagem %
% m, n, disp_max => números inteiros %
% %
% obs.: As imagens fornecidas devem possuir o mesmo tamanho. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [disp] = cor(E,D,m,n,disp_max)
% Copiando as imagens para uma janela maior (aumentando as imagens com
% bordas m e n)
[linhas, colunas] = size(E);
imgE = zeros(linhas+(2*m),colunas+(2*n));
imgD = zeros(linhas+(2*m),colunas+(2*n));
disp = zeros(linhas+(2*m),colunas+(2*n));
imgE(m+1:m+linhas, n+1:n+colunas) = E;
imgD(m+1:m+linhas, n+1:n+colunas) = D;
% Vou mover a janela alvo por toda a imagem direita
% Varrendo cada linha da imagem direita
for s = m+1 : m+linhas
% Varrendo cada coluna da imagem direita
for t = n+1 : n+colunas
% Para cada um dos pontos da imagem direita crio uma janela alvo
% que será procurada na linha correspondente na imagem esquerda
alvo = imgD(s-m:s+m, t-n:t+n);
alvo_media = ones(size(alvo)) * mean(mean(alvo));
d_alvo = alvo - alvo_media;
result=zeros(1, disp_max);
% Vou procurar essa janela alvo na imagem esquerda varrendo um
% pedaço da linha (janela de busca)
% Defino o ponto de parada na janela busca
if t+disp_max < n+colunas
% Caso onde paro de buscar quando chego na disparidade máxima
fim = t + disp_max;
else
% Caso onde paro de buscar na borda da imagem
fim = n + colunas;
end
127
for v = t : fim
% Defino a janela atual
busca = imgE(s-m:s+m, v-n:v+n);
busca_media = ones(size(busca)) * mean(mean(busca));
d_busca = busca - busca_media;
% Cálculo do Coeficiente de Correlação
denominador = sqrt(sum(sum(d_alvo.^2))*sum(sum(d_busca.^2)));
if denominador > 0
gama = sum(sum(d_alvo .* d_busca)) / denominador;
else
gama = sum(sum(d_alvo .* d_busca));
end
% Crio um vetor temporário com os resultados da correlação de
% cada janela atual na janela busca, para depois escolher o
% melhor correlacionado.
result(v-t+1)=gama;
end
% O valor máximo significa a janela mais correlacionada, portanto
% atribuo à minha matriz de disparidades a distância onde essa
% janela foi encontrada.
[val,col] = max(result);
disp(s,t) = (col-1);
end
end
disp = disp(m+1:linhas+(m),n+1:colunas+(n));
end
Função rnk.m (Transformada Rank)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função rnk.m %
% Revisão 7: %
% Usa algoritmo baseado na transformada rank. %
% A janela referência (alvo) é uma região na minha imagem direita. %
% %
% function [disp] = rnk(E,D,m,n,disp_max) %
% Esta função recebe como parâmetros as imagens esquerda, direita, %
% quantas linhas acima e abaixo do ponto serão utilizadas na formação da %
% janela, quantas colunas à esquerda e a direita serão utilizadas na %
% formação janela e o limite máximo para a disparidade a ser encontrada. %
% O valor retornado pela função é o mapa de disparidades encontrado. %
% %
% E e D => matriz de intensidades da imagem %
% m, n, disp_max => números inteiros %
% %
% obs.: As imagens fornecidas devem possuir o mesmo tamanho. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
128
function [disp] = rnk(E,D,m,n,disp_max)
% Copiando as imagens para uma janela maior (aumentando as imagens com
% bordas m e n)
[linhas, colunas] = size(E);
imgE = zeros(linhas+(2*m),colunas+(2*n));
imgD = zeros(linhas+(2*m),colunas+(2*n));
disp = zeros(linhas+(2*m),colunas+(2*n));
imgE(m+1:m+linhas, n+1:n+colunas) = E;
imgD(m+1:m+linhas, n+1:n+colunas) = D;
maximo = (2*m+1)*(2*n+1);
% Vou mover a janela alvo por toda a imagem direita
% Varrendo cada linha da imagem direita
for s = m+1 : m+linhas
% Varrendo cada coluna da imagem direita
for t = n+1 : n+colunas
% Para cada um dos pontos da imagem direita crio uma janela alvo
% que será procurada na linha correspondente na imagem esquerda
imgD_r(s-m,t-n) = m*n - sum(sum((imgD(s-m:s+m, t-n:t+n)-
imgD(s,t))>=0));
imgE_r(s-m,t-n) = m*n - sum(sum((imgE(s-m:s+m, t-n:t+n)-
imgE(s,t))>=0));
end
end
imgE = zeros(linhas+(2*m),colunas+(2*n));
imgD = zeros(linhas+(2*m),colunas+(2*n));
imgE(m+1:m+linhas, n+1:n+colunas) = imgE_r;
imgD(m+1:m+linhas, n+1:n+colunas) = imgD_r;
for s = m+1 : m+linhas
% Varrendo cada coluna da imagem direita
for t = n+1 : n+colunas
% Para cada um dos pontos da imagem direita crio uma janela alvo
% que será procurada na linha correspondente na imagem esquerda
alvo = imgD(s-m:s+m, t-n:t+n);
% Como neste algoritmo a melhro correlação é dada pelo menor valor
% devo inicializar o meu vetor de resultados com números grandes
result=ones(1, disp_max)*maximo;
% Vou procurar essa janela alvo na imagem esquerda varrendo um
% pedaço da linha (janela de busca)
% Defino o ponto de parada na janela busca
if t+disp_max < n+colunas
% Caso onde paro de buscar quando chego na disparidade máxima
fim = t + disp_max;
else
% Caso onde paro de buscar na borda da imagem
fim = n + colunas;
end
for v = t : fim
% Defino a janela atual
busca = imgE(s-m:s+m, v-n:v+n);
129
% Calculo do valor da correlação SAD e crio um vetor temporário
% com os resultados da correlação de cada janela atual na
% janela busca, para depois escolher o melhor correlacionado.
result(v-t+1) = sum(sum(abs(alvo-busca)));
end
% O valor mínimo significa a janela mais correlacionada, portanto
% atribuo à minha matriz de disparidades a distância onde essa
% janela foi encontrada.
[val,col] = min(result);
disp(s,t) = (col-1);
end
end
disp = disp(m+1:linhas+(m),n+1:colunas+(n));
end
Função cen.m (Transformada Censo)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função cen.m %
% Revisão 10: %
% Usa algoritmo baseado na transformada censo. %
% A janela referência (alvo) é uma região na minha imagem direita. %
% %
% function [disp] = cen(E,D,m,n,disp_max) %
% Esta função recebe como parâmetros as imagens esquerda, direita, %
% quantas linhas acima e abaixo do ponto serão utilizadas na formação da %
% janela, quantas colunas à esquerda e a direita serão utilizadas na %
% formação janela e o limite máximo para a disparidade a ser encontrada. %
% O valor retornado pela função é o mapa de disparidades encontrado. %
% %
% E e D => matriz de intensidades da imagem %
% m, n, disp_max => números inteiros %
% %
% obs.: As imagens fornecidas devem possuir o mesmo tamanho. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [disp] = cen(E,D,m,n,disp_max)
% Copiando as imagens para uma janela maior (aumentando as imagens com
% bordas m e n)
[linhas, colunas] = size(E);
imgE = zeros(linhas+(2*m),colunas+(2*n));
imgD = zeros(linhas+(2*m),colunas+(2*n));
disp = zeros(linhas+(2*m),colunas+(2*n));
imgE(m+1:m+linhas, n+1:n+colunas) = E;
imgD(m+1:m+linhas, n+1:n+colunas) = D;
maximo = (2*m+1)*(2*n+1)-1;
% Vou mover a janela alvo por toda a imagem direita
% Varrendo cada linha da imagem direita
for s = m+1 : m+linhas
130
% Varrendo cada coluna da imagem direita
for t = n+1 : n+colunas
% Para cada um dos pontos da imagem direita crio uma janela alvo
% que será procurada na linha correspondente na imagem esquerda
alvo_temp = imgD(s-m:s+m, t-n:t+n)>imgD(s, t);
i=0;
for k = 1 : 2*m+1
for l = 1 : 2*n+1
if k~=m+1 && l~=n+1
i=i+1;
alvo(i)=alvo_temp(k,l);
end
end
end
% Como neste algoritmo a melhor correlação é dada pelo menor valor
% devo inicializar o meu vetor de resultados com números grandes
result=ones(1, disp_max)*maximo;
% Vou procurar essa janela alvo na imagem esquerda varrendo um
% pedaço da linha (janela de busca)
% Defino o ponto de parada na janela busca
if t+disp_max < n+colunas
% Caso onde paro de buscar quando chego na disparidade máxima
fim = t + disp_max;
else
% Caso onde paro de buscar na borda da imagem
fim = n + colunas;
end
for v = t : fim
% Defino a janela atual
busca_temp = imgE(s-m:s+m, v-n:v+n)>imgE(s,v);
i=0;
for k = 1 : 2*m+1
for l = 1 : 2*n+1
if k~=m+1 && l~=n+1
i=i+1;
busca(i)=busca_temp(k,l);
end
end
end
% Calculo do valor da correlação e crio um vetor temporário
% com os resultados da correlação de cada janela atual na
% janela busca, para depois escolher o melhor correlacionado.
result(v-t+1) = sum(alvo~=busca);
end
% O valor mínimo significa a janela mais correlacionada, portanto
% atribuo à minha matriz de disparidades a distância onde essa
% janela foi encontrada.
[val,col] = min(result);
disp(s,t) = (col-1);
end
end
disp = disp(m+1:linhas+(m),n+1:colunas+(n));
end
131
Função c_1.m (Transformada Modificada 1)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função c_1.m %
% Revisão 12: %
% Usa algoritmo baseado na transformada censo modificado 1. %
% A janela referência (alvo) é uma região na minha imagem direita. %
% %
% function [disp] = c_1(E,D,m,n,disp_max,limiar) %
% Esta função recebe como parâmetros as imagens esquerda, direita, %
% quantas linhas acima e abaixo do ponto serão utilizadas na formação da %
% janela, quantas colunas à esquerda e a direita serão utilizadas na %
% formação janela e o limite máximo para a disparidade a ser encontrada %
% e o limiar utilizado para o ruído. %
% O valor retornado pela função é o mapa de disparidades encontrado. %
% %
% E e D => matriz de intensidades da imagem %
% m, n, disp_max => números inteiros %
% %
% obs.: As imagens fornecidas devem possuir o mesmo tamanho. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [disp] = c_1(E,D,m,n,disp_max,limiar)
% Copiando as imagens para uma janela maior (aumentando as imagens com
% bordas m e n)
[linhas, colunas] = size(E);
imgE = zeros(linhas+(2*m),colunas+(2*n));
imgD = zeros(linhas+(2*m),colunas+(2*n));
disp = zeros(linhas+(2*m),colunas+(2*n));
imgE(m+1:m+linhas, n+1:n+colunas) = E;
imgD(m+1:m+linhas, n+1:n+colunas) = D;
maximo = (2*m+1)*(2*n+1)*2;
% Vou mover a janela alvo por toda a imagem direita
% Varrendo cada linha da imagem direita
for s = m+1 : m+linhas
% Varrendo cada coluna da imagem direita
for t = n+1 : n+colunas
% Para cada um dos pontos da imagem direita crio uma janela alvo
% que será procurada na linha correspondente na imagem esquerda
alvo = (imgD(s-m:s+m, t-n:t+n)>(imgD(s, t)+limiar))-(imgD(s-m:s+m,
t-n:t+n)<(imgD(s, t)-limiar));
% Como neste algoritmo a melhor correlação é dada pelo menor valor
% devo inicializar o meu vetor de resultados com números grandes
result=ones(1, disp_max)*maximo;
% Vou procurar essa janela alvo na imagem esquerda varrendo um
% pedaço da linha (janela de busca)
% Defino o ponto de parada na janela busca
if t+disp_max < n+colunas
% Caso onde paro de buscar quando chego na disparidade máxima
fim = t + disp_max;
else
132
% Caso onde paro de buscar na borda da imagem
fim = n + colunas;
end
for v = t : fim
% Defino a janela atual
busca = (imgE(s-m:s+m, v-n:v+n)>(imgE(s,v)+limiar))-(imgE(s-
m:s+m, v-n:v+n)<(imgE(s,v)-limiar));
% Calculo do valor da correlação e crio um vetor temporário
% com os resultados da correlação de cada janela atual na
% janela busca, para depois escolher o melhor correlacionado.
result(v-t+1) = sum(sum(abs(alvo-busca)));
end
% O valor mínimo significa a janela mais correlacionada, portanto
% atribuo à minha matriz de disparidades a distância onde essa
% janela foi encontrada.
[val,col] = min(result);
disp(s,t) = (col-1);
end
end
disp = disp(m+1:linhas+(m),n+1:colunas+(n));
end
Função c_2.m (Transformada Modificada 2)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função c_2.m %
% Revisão 15: %
% Usa algoritmo baseado na transformada censo modificado 2. %
% A janela referência (alvo) é uma região na minha imagem direita. %
% %
% function [disp] = c_2(E,D,m,n,disp_max,limiar) %
% Esta função recebe como parâmetros as imagens esquerda, direita, %
% quantas linhas acima e abaixo do ponto serão utilizadas na formação da %
% janela, quantas colunas à esquerda e a direita serão utilizadas na %
% formação janela e o limite máximo para a disparidade a ser encontrada %
% e o limiar utilizado para o ruído. %
% O valor retornado pela função é o mapa de disparidades encontrado. %
% %
% E e D => matriz de intensidades da imagem %
% m, n, disp_max => números inteiros %
% %
% obs.: As imagens fornecidas devem possuir o mesmo tamanho. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [disp] = c_2(E,D,m,n,disp_max,limiar)
% Copiando as imagens para uma janela maior (aumentando as imagens com
% bordas m e n)
[linhas, colunas] = size(E);
imgE = zeros(linhas+(2*m),colunas+(2*n));
imgD = zeros(linhas+(2*m),colunas+(2*n));
disp = zeros(linhas+(2*m),colunas+(2*n));
133
imgE(m+1:m+linhas, n+1:n+colunas) = E;
imgD(m+1:m+linhas, n+1:n+colunas) = D;
maximo = (2*m+1)*(2*n+1);
% Vou mover a janela alvo por toda a imagem direita
% Varrendo cada linha da imagem direita
for s = m+1 : m+linhas
% Varrendo cada coluna da imagem direita
for t = n+1 : n+colunas
% Realizo a transformada censo modificado nas janelas
imgD_c(s-m,t-n) = sum(sum((imgD(s-m:s+m, t-n:t+n)>(imgD(s,
t)+limiar))-(imgD(s-m:s+m, t-n:t+n)<(imgD(s, t)-limiar))));
imgE_c(s-m,t-n) = sum(sum((imgE(s-m:s+m, t-n:t+n)>(imgE(s,
t)+limiar))-(imgE(s-m:s+m, t-n:t+n)<(imgE(s, t)-limiar))));
end
end
imgE = zeros(linhas+(2*m),colunas+(2*n));
imgD = zeros(linhas+(2*m),colunas+(2*n));
imgE(m+1:m+linhas, n+1:n+colunas) = imgE_c;
imgD(m+1:m+linhas, n+1:n+colunas) = imgD_c;
for s = m+1 : m+linhas
% Varrendo cada coluna da imagem direita
for t = n+1 : n+colunas
% Para cada um dos pontos da imagem direita crio uma janela alvo
% que será procurada na linha correspondente na imagem esquerda
alvo = imgD(s-m:s+m, t-n:t+n);
% Como neste algoritmo a melhro correlação é dada pelo menor valor
% devo inicializar o meu vetor de resultados com números grandes
result=ones(1, disp_max)*maximo;
% Vou procurar essa janela alvo na imagem esquerda varrendo um
% pedaço da linha (janela de busca)
% Defino o ponto de parada na janela busca
if t+disp_max < n+colunas
% Caso onde paro de buscar quando chego na disparidade máxima
fim = t + disp_max;
else
% Caso onde paro de buscar na borda da imagem
fim = n + colunas;
end
for v = t : fim
% Defino a janela atual
busca = imgE(s-m:s+m, v-n:v+n);
% Calculo do valor da correlação SAD e crio um vetor temporário
% com os resultados da correlação de cada janela atual na
% janela busca, para depois escolher o melhor correlacionado.
result(v-t+1) = sum(sum(abs(alvo-busca)));
end
% O valor mínimo significa a janela mais correlacionada, portanto
% atribuo à minha matriz de disparidades a distância onde essa
% janela foi encontrada.
[val,col] = min(result);
disp(s,t) = (col-1);
end
134
end
disp = disp(m+1:linhas+(m),n+1:colunas+(n));
end
Função c_3.m (Transformada Modificada 3)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função c_3.m %
% Revisão 8: %
% Usa algoritmo baseado na modificação da transformada censo sugerida %
% por Gautama. %
% A janela referência (alvo) é uma região na minha imagem direita. %
% %
% function [disp] = c_3(E,D,m,n,disp_max) %
% Esta função recebe como parâmetros as imagens esquerda, direita, %
% quantas linhas acima e abaixo do ponto serão utilizadas na formação da %
% janela, quantas colunas à esquerda e a direita serão utilizadas na %
% formação janela e o limite máximo para a disparidade a ser encontrada. %
% O valor retornado pela função é o mapa de disparidades encontrado. %
% %
% E e D => matriz de intensidades da imagem %
% m, n, disp_max => números inteiros %
% %
% obs.: As imagens fornecidas devem possuir o mesmo tamanho. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [disp] = c_3(E,D,m,n,disp_max)
% Copiando as imagens para uma janela maior (aumentando as imagens com
% bordas m e n)
[linhas, colunas] = size(E);
imgE = zeros(linhas+(2*m),colunas+(2*n));
imgD = zeros(linhas+(2*m),colunas+(2*n));
disp = zeros(linhas+(2*m),colunas+(2*n));
imgE(m+1:m+linhas, n+1:n+colunas) = E;
imgD(m+1:m+linhas, n+1:n+colunas) = D;
maximo = (2*m+1)*(2*n+1);
% Vou mover a janela alvo por toda a imagem direita
% Varrendo cada linha da imagem direita
for s = m+1 : m+linhas
% Varrendo cada coluna da imagem direita
for t = n+1 : n+colunas
% Para cada um dos pontos da imagem direita crio uma janela alvo
% que será procurada na linha correspondente na imagem esquerda
media_alvo=mean(mean(imgD(s-m:s+m, t-n:t+n)));
alvo = imgD(s-m:s+m, t-n:t+n)>media_alvo;
% Como neste algoritmo a melhor correlação é dada pelo menor valor
% devo inicializar o meu vetor de resultados com números grandes
result=ones(1, disp_max)*maximo;
135
% Vou procurar essa janela alvo na imagem esquerda varrendo um
% pedaço da linha (janela de busca)
% Defino o ponto de parada na janela busca
if t+disp_max < n+colunas
% Caso onde paro de buscar quando chego na disparidade máxima
fim = t + disp_max;
else
% Caso onde paro de buscar na borda da imagem
fim = n + colunas;
end
for v = t : fim
% Defino a janela atual
media_busca=mean(mean(imgE(s-m:s+m, v-n:v+n)));
busca = imgE(s-m:s+m, v-n:v+n)>media_busca;
% Calculo do valor da correlação e crio um vetor temporário
% com os resultados da correlação de cada janela atual na
% janela busca, para depois escolher o melhor correlacionado.
result(v-t+1) = sum(sum(abs(alvo~=busca)));
end
% O valor mínimo significa a janela mais correlacionada, portanto
% atribuo à minha matriz de disparidades a distância onde essa
% janela foi encontrada.
[val,col] = min(result);
disp(s,t) = (col-1);
end
end
disp = disp(m+1:linhas+(m),n+1:colunas+(n));
end
Função c_4.m (Transformada Modificada 4)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função c_4.m %
% Revisão 11: %
% Usa algoritmo baseado na transformada censo modificado 4. %
% A janela referência (alvo) é uma região na minha imagem direita. %
% %
% function [disp] = c_4(E,D,m,n,disp_max,limiar) %
% Esta função recebe como parâmetros as imagens esquerda, direita, %
% quantas linhas acima e abaixo do ponto serão utilizadas na formação da %
% janela, quantas colunas à esquerda e a direita serão utilizadas na %
% formação janela e o limite máximo para a disparidade a ser encontrada %
% e o limiar utilizado para o ruído. %
% O valor retornado pela função é o mapa de disparidades encontrado. %
% %
% E e D => matriz de intensidades da imagem %
% m, n, disp_max => números inteiros %
% %
% obs.: As imagens fornecidas devem possuir o mesmo tamanho. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
136
function [disp] = c_4(E,D,m,n,disp_max,limiar)
% Copiando as imagens para uma janela maior (aumentando as imagens com
% bordas m e n)
[linhas, colunas] = size(E);
imgE = zeros(linhas+(2*m),colunas+(2*n));
imgD = zeros(linhas+(2*m),colunas+(2*n));
disp = zeros(linhas+(2*m),colunas+(2*n));
imgE(m+1:m+linhas, n+1:n+colunas) = E;
imgD(m+1:m+linhas, n+1:n+colunas) = D;
maximo = (2*m+1)*(2*n+1)*2;
% Vou mover a janela alvo por toda a imagem direita
% Varrendo cada linha da imagem direita
for s = m+1 : m+linhas
% Varrendo cada coluna da imagem direita
for t = n+1 : n+colunas
% Para cada um dos pontos da imagem direita crio uma janela alvo
% que será procurada na linha correspondente na imagem esquerda
media_alvo=mean(mean(imgD(s-m:s+m, t-n:t+n)));
alvo = (imgD(s-m:s+m, t-n:t+n)>(media_alvo+limiar))-(imgD(s-m:s+m,
t-n:t+n)<(media_alvo-limiar));
% Como neste algoritmo a melhor correlação é dada pelo menor valor
% devo inicializar o meu vetor de resultados com números grandes
result=ones(1, disp_max)*maximo;
% Vou procurar essa janela alvo na imagem esquerda varrendo um
% pedaço da linha (janela de busca)
% Defino o ponto de parada na janela busca
if t+disp_max < n+colunas
% Caso onde paro de buscar quando chego na disparidade máxima
fim = t + disp_max;
else
% Caso onde paro de buscar na borda da imagem
fim = n + colunas;
end
for v = t : fim
% Defino a janela atual
media_busca=mean(mean(imgE(s-m:s+m, v-n:v+n)));
busca = (imgE(s-m:s+m, v-n:v+n)>(media_busca+limiar))-(imgE(s-
m:s+m, v-n:v+n)<(media_busca-limiar));
% Calculo do valor da correlação e crio um vetor temporário
% com os resultados da correlação de cada janela atual na
% janela busca, para depois escolher o melhor correlacionado.
result(v-t+1) = sum(sum(abs(alvo-busca)));
end
% O valor mínimo significa a janela mais correlacionada, portanto
% atribuo à minha matriz de disparidades a distância onde essa
% janela foi encontrada.
[val,col] = min(result);
disp(s,t) = (col-1);
end
end
disp = disp(m+1:linhas+(m),n+1:colunas+(n));
end
137
Função c_5.m (Transformada Modificada 5)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função c_5.m %
% Revisão 10: %
% Usa algoritmo baseado na transformada censo modificado 5. %
% A janela referência (alvo) é uma região na minha imagem direita. %
% %
% function [disp] = c_5(E,D,m,n,disp_max,limiar) %
% Esta função recebe como parâmetros as imagens esquerda, direita, %
% quantas linhas acima e abaixo do ponto serão utilizadas na formação da %
% janela, quantas colunas à esquerda e a direita serão utilizadas na %
% formação janela e o limite máximo para a disparidade a ser encontrada %
% e o limiar utilizado para o ruído. %
% O valor retornado pela função é o mapa de disparidades encontrado. %
% %
% E e D => matriz de intensidades da imagem %
% m, n, disp_max => números inteiros %
% %
% obs.: As imagens fornecidas devem possuir o mesmo tamanho. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [disp] = c_5(E,D,m,n,disp_max,limiar)
% Copiando as imagens para uma janela maior (aumentando as imagens com
% bordas m e n)
[linhas, colunas] = size(E);
imgE = zeros(linhas+(2*m),colunas+(2*n));
imgD = zeros(linhas+(2*m),colunas+(2*n));
disp = zeros(linhas+(2*m),colunas+(2*n));
imgE(m+1:m+linhas, n+1:n+colunas) = E;
imgD(m+1:m+linhas, n+1:n+colunas) = D;
maximo = (2*m+1)*(2*n+1)*2;
% Vou mover a janela alvo por toda a imagem direita
% Varrendo cada linha da imagem direita
for s = m+1 : m+linhas
% Varrendo cada coluna da imagem direita
for t = n+1 : n+colunas
% Realizo a transformada censo modificado nas janelas
media_d=mean(mean(imgD(s-m:s+m, t-n:t+n)));
imgD_c(s-m,t-n) = sum(sum((imgD(s-m:s+m, t-
n:t+n)>(media_d+limiar))-(imgD(s-m:s+m, t-n:t+n)<(media_d-limiar))));
media_e=mean(mean(imgE(s-m:s+m, t-n:t+n)));
imgE_c(s-m,t-n) = sum(sum((imgE(s-m:s+m, t-
n:t+n)>(media_e+limiar))-(imgE(s-m:s+m, t-n:t+n)<(media_e-limiar))));
end
end
imgE = zeros(linhas+(2*m),colunas+(2*n));
imgD = zeros(linhas+(2*m),colunas+(2*n));
imgE(m+1:m+linhas, n+1:n+colunas) = imgE_c;
imgD(m+1:m+linhas, n+1:n+colunas) = imgD_c;
138
for s = m+1 : m+linhas
% Varrendo cada coluna da imagem direita
for t = n+1 : n+colunas
% Para cada um dos pontos da imagem direita crio uma janela alvo
% que será procurada na linha correspondente na imagem esquerda
alvo = imgD(s-m:s+m, t-n:t+n);
% Como neste algoritmo a melhro correlação é dada pelo menor valor
% devo inicializar o meu vetor de resultados com números grandes
result=ones(1, disp_max)*maximo;
% Vou procurar essa janela alvo na imagem esquerda varrendo um
% pedaço da linha (janela de busca)
% Defino o ponto de parada na janela busca
if t+disp_max < n+colunas
% Caso onde paro de buscar quando chego na disparidade máxima
fim = t + disp_max;
else
% Caso onde paro de buscar na borda da imagem
fim = n + colunas;
end
for v = t : fim
% Defino a janela atual
busca = imgE(s-m:s+m, v-n:v+n);
% Calculo do valor da correlação SAD e crio um vetor temporário
% com os resultados da correlação de cada janela atual na
% janela busca, para depois escolher o melhor correlacionado.
result(v-t+1) = sum(sum(abs(alvo-busca)));
end
% O valor mínimo significa a janela mais correlacionada, portanto
% atribuo à minha matriz de disparidades a distância onde essa
% janela foi encontrada.
[val,col] = min(result);
disp(s,t) = (col-1);
end
end
disp = disp(m+1:linhas+(m),n+1:colunas+(n));
end
Função resultados.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função resultados.m %
% Revisão 18: %
% %
% function [a] = resultados(imagem) %
% Dado que os arquivos com os mapas de disparidades calculado já estão %
% disponíveis, a função irá gerar e salvar as tabelas em formato texto %
139
% com os resultados das correlações erradas e eo erro RMS. %
% %
% imagem => define o prefixo dos arquivos a serem abertos, podendo ser %
% corr, cone ou ted. %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [a] = resultados(imagem)
disp_correta=[imagem '_td.png'];
for tipo=0:7
% Escolho o arquivo a ser analizado
clear arquivo;
for metodo=1:10
for janela=1:4
% caso a luminosidade seja -10%
if tipo == 1
arquivo=[imagem '_l10'];
% caso a luminosidade seja -20%
elseif tipo == 2
arquivo=[imagem '_l20'];
% caso a luminosidade seja -30%
elseif tipo == 3
arquivo=[imagem '_l30'];
% caso possua ruido de variância 10
elseif tipo == 4
arquivo=[imagem '_r10'];
% caso possua ruido de variância 100
elseif tipo == 5
arquivo=[imagem '_r100'];
% caso possua ruido de variância 200
elseif tipo == 6
arquivo=[imagem '_r200'];
% caso possua ruido de variância 200 e incidência 50%
elseif tipo == 7
arquivo=[imagem '_r200_50'];
% Caso seja a imagem original
else
arquivo=[imagem];
end
% Escolhe o método utilizado
if metodo == 1
arquivo = [arquivo '_sad'];
elseif metodo == 2
arquivo = [arquivo '_ssd'];
elseif metodo == 3
arquivo = [arquivo '_cor'];
elseif metodo == 4
arquivo = [arquivo '_rnk'];
elseif metodo == 5
arquivo = [arquivo '_cen'];
elseif metodo == 6
arquivo = [arquivo '_c_1'];
elseif metodo == 7
arquivo = [arquivo '_c_2'];
elseif metodo == 8
arquivo = [arquivo '_c_3'];
elseif metodo == 9
140
arquivo = [arquivo '_c_4'];
elseif metodo == 10
arquivo = [arquivo '_c_5'];
end
% Escolhe o tamanho da janela
if janela == 1
arquivo = [arquivo '_02'];
elseif janela == 2
arquivo = [arquivo '_05'];
elseif janela == 3
arquivo = [arquivo '_07'];
elseif janela == 4
arquivo = [arquivo '_10'];
end
if imagem(end-2:end) == 'orr'
arquivo = [arquivo '_15.txt'];
escala = 255;
niveis = 15;
elseif imagem(end-2:end) == 'one'
arquivo = [arquivo '_59.txt'];
escala = 237;
niveis = 59;
elseif imagem(end-2:end) == 'ted'
arquivo = [arquivo '_59.txt'];
escala = 237;
niveis = 59;
end
% Vou calcular a quantidade de pontos com correlações erradas e
o erro RMS
[tabela_disp(metodo,janela),tabela_rms(metodo,janela)]=
qualidade(arquivo,disp_correta,niveis,1,escala);
end
end
% Salvando as tabelas em seus respectivos arquivos
if tipo == 1
arquivo=['tabela_' imagem '_l10'];
% caso a luminosidade seja -20%
elseif tipo == 2
arquivo=['tabela_' imagem '_l20'];
% caso a luminosidade seja -30%
elseif tipo == 3
arquivo=['tabela_' imagem '_l30'];
% caso possua ruido de variância 10
elseif tipo == 4
arquivo=['tabela_' imagem '_r10'];
% caso possua ruido de variância 100
elseif tipo == 5
arquivo=['tabela_' imagem '_r100'];
% caso possua ruido de variância 200
elseif tipo == 6
arquivo=['tabela_' imagem '_r200'];
% caso possua ruido de variância 200 e incidência 50%
elseif tipo == 7
arquivo=['tabela_' imagem '_r200_50'];
% Caso seja a imagem original
else
arquivo=['tabela_' imagem];
141
end
eval([ ' save ' arquivo '_corr_erradas.txt tabela_disp -ascii -
tabs'])
eval([ ' save ' arquivo '_rms.txt tabela_rms -ascii -tabs'])
end
end
Função qualidade.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função qualidade.m %
% Revisão 7: %
% %
% function [cor_erradas,rms] = qualidade(arq_dcalc,arq_dreal,niveis, ... %
% tol,escala) %
% Esta função calcula a porcentagem de pontos com correlações erradas e %
% o erro RMS médio das correlações. %
% O valor retornado pela função é a porcentagem de pontos com %
% disparidades erradas e o erro rms médio das correlações. %
% %
% arq_dcalc => arquivo de disparidades calculadas no formato texto %
% arq_dreal => arquivo de disparidades reais no formato png %
% niveis => disparidade máxima calculada %
% tol => tolerância em pontos para aceitar a disparidade calculada como %
% sendo correta %
% escala => valor para a conversão da escala da imagem de disparidades %
% corretas para a disparidade calculada %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [cor_erradas,rms] =
qualidade(arq_dcalc,arq_dreal,niveis,tol,escala)
% Para a comparação dos mapas de disparidades vou desconsiderar uma faixa
% na extremidade direita da imagem com largura de pontos igual aos niveis
% de disparidades considerado
im = imread(arq_dreal);
im = double(im(:,1:end-int8(niveis),1));
m = size(im);
corr=load(arq_dcalc);
corr=corr(:,1:end-int8(niveis));
% Conversão dos tons de cinza da imagem de disparidade real para a
% escala da disparidade calculada
im2=round(im*niveis/escala);
% Cálculo da porcentagem de pontos errados em %
cor_erradas= (sum(sum(abs(corr-im2)>tol))) / (m(1)*m(2)) * 100;
% Cálculo do erro rms
rms = (sum(sum(sqrt(double(corr-im2).^2)/(m(1)*m(2)))));
end
142
Função salva_figuras.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função salva_figuras.m %
% Revisão 15: %
% %
% function [a] = salva_figuras(imagem) %
% Dado que os arquivos com os mapas de disparidades calculado já estão %
% disponíveis, a função irá gerar e salvar as figuras correspondentes. %
% %
% imagem => define o prefixo dos arquivos a serem abertos, podendo ser %
% corr, cone ou ted. %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [a] = salva_figuras(imagem)
for tipo=0:7
% Escolho o arquivo a ser analizado
clear arquivo;
for metodo=1:10
for janela=1:4
% caso a luminosidade seja -10%
if tipo == 1
arquivo=[imagem '_l10'];
% caso a luminosidade seja -20%
elseif tipo == 2
arquivo=[imagem '_l20'];
% caso a luminosidade seja -30%
elseif tipo == 3
arquivo=[imagem '_l30'];
% caso possua ruido de variância 10
elseif tipo == 4
arquivo=[imagem '_r10'];
% caso possua ruido de variância 100
elseif tipo == 5
arquivo=[imagem '_r100'];
% caso possua ruido de variância 200
elseif tipo == 6
arquivo=[imagem '_r200'];
% caso possua ruido de variância 200 e incidência 50%
elseif tipo == 7
arquivo=[imagem '_r200_50'];
% Caso seja a imagem original
else
arquivo=[imagem];
end
% Escolhe o método utilizado
if metodo == 1
arquivo = [arquivo '_sad'];
elseif metodo == 2
arquivo = [arquivo '_ssd'];
elseif metodo == 3
arquivo = [arquivo '_cor'];
143
elseif metodo == 4
arquivo = [arquivo '_rnk'];
elseif metodo == 5
arquivo = [arquivo '_cen'];
elseif metodo == 6
arquivo = [arquivo '_c_1'];
elseif metodo == 7
arquivo = [arquivo '_c_2'];
elseif metodo == 8
arquivo = [arquivo '_c_3'];
elseif metodo == 9
arquivo = [arquivo '_c_4'];
elseif metodo == 10
arquivo = [arquivo '_c_5'];
end
% Escolhe o tamanho da janela
if janela == 1
arquivo = [arquivo '_02'];
elseif janela == 2
arquivo = [arquivo '_05'];
elseif janela == 3
arquivo = [arquivo '_07'];
elseif janela == 4
arquivo = [arquivo '_10'];
end
% Escolhe a figura
if imagem(end-2:end) == 'orr'
arquivo = [arquivo '_15.txt'];
arquivo2 = [arquivo(1:end-4) '.bmp'];
escala = 255;
niveis = 15;
elseif imagem(end-2:end) == 'one'
arquivo = [arquivo '_59.txt'];
arquivo2 = [arquivo(1:end-4) '.bmp'];
escala = 236;
niveis = 59;
elseif imagem(end-2:end) == 'ted'
arquivo = [arquivo '_59.txt'];
arquivo2 = [arquivo(1:end-4) '.bmp'];
escala = 236;
niveis = 59;
end
% Salvando as imagens
im = load(arquivo);
im = im(:,1:(end-niveis),1);
im2 = uint8(im * escala / niveis);
imwrite(im2,arquivo2,'bmp');
end
end
end
end
144
Função salva_graficos.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Função salva_graficos.m %
% Revisão 15: %
% %
% function [a] = salva_figuras(imagem) %
% Dado que os arquivos com os mapas de disparidades calculado já estão %
% disponíveis, a função irá gerar e salvar os gráficos correspondentes. %
% %
% imagem => define o prefixo dos arquivos a serem abertos, podendo ser %
% corr, cone ou ted. %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [a] = salva_graficos(imagem)
for tipo=0:7
% Escolho o arquivo a ser analizado
clear arquivo;
% caso a luminosidade seja -10%
if tipo == 1
arquivo=['tabela_' imagem '_l10_corr_erradas.txt'];
arquivo2=['tabela_' imagem '_l10_rms.txt'];
% caso a luminosidade seja -20%
elseif tipo == 2
arquivo=['tabela_' imagem '_l20_corr_erradas.txt'];
arquivo2=['tabela_' imagem '_l20_rms.txt'];
% caso a luminosidade seja -30%
elseif tipo == 3
arquivo=['tabela_' imagem '_l30_corr_erradas.txt'];
arquivo2=['tabela_' imagem '_l30_rms.txt'];
% caso possua ruido de variância 10
elseif tipo == 4
arquivo=['tabela_' imagem '_r10_corr_erradas.txt'];
arquivo2=['tabela_' imagem '_r10_rms.txt'];
% caso possua ruido de variância 100
elseif tipo == 5
arquivo=['tabela_' imagem '_r100_corr_erradas.txt'];
arquivo2=['tabela_' imagem '_r100_rms.txt'];
% caso possua ruido de variância 200
elseif tipo == 6
arquivo=['tabela_' imagem '_r200_corr_erradas.txt'];
arquivo2=['tabela_' imagem '_r200_rms.txt'];
% caso possua ruido de variância 200 e incidência 50%
elseif tipo == 7
arquivo=['tabela_' imagem '_r200_50_corr_erradas.txt'];
arquivo2=['tabela_' imagem '_r200_50_rms.txt'];
% Caso seja a imagem original
else
arquivo=['tabela_' imagem '_corr_erradas.txt'];
arquivo2=['tabela_' imagem '_rms.txt'];
end
cor_erradas=load(arquivo);
rms=load(arquivo2);
145
%%% Gerando o gráfico das correlações erradas
% SAD
plot(cor_erradas(1,:),'k<:');
hold on;
% SSD
plot(cor_erradas(2,:),'kx:');
% COR
plot(cor_erradas(3,:),'k.-.');
% RNK
plot(cor_erradas(4,:),'kp-.');
% CEN
plot(cor_erradas(5,:),'kv--');
% C_1
plot(cor_erradas(6,:),'go-');
% C_2
plot(cor_erradas(7,:),'b^-');
% C_3
plot(cor_erradas(8,:),'k*--');
% C_4
plot(cor_erradas(9,:),'cd-');
% C_5
plot(cor_erradas(10,:),'rs-');
hold off;
xlabel('Janela')
ylabel('Correlações erradas [%]')
axis([1,4,0,70]);
set(gca,'XTick',1:1:4)
set(gca,'XTickLabel',{'5 x 5','11 x 11','15 x 15','21 x 21'})
legend('Soma das Diferenças Absolutas','Soma do Quadrado das
Diferenças',...
'Correlação Cruzada Normalizada',
'Transformada Rank',...
'Transformada Censo','Transformada Modificada 1',...
'Transformada Modificada 2','Transformada Modificada 3',...
'Transformada Modificada 4','Transformada Modificada 5');
arquivo=arquivo(1:end-4);
saveas(gcf, arquivo, 'fig')
close;
%%% Gerando o gráfico do erro rms
% SAD
plot(rms(1,:),'k<:');
hold on;
% SSD
plot(rms(2,:),'kx:');
% COR
plot(rms(3,:),'k.-.');
% RNK
plot(rms(4,:),'kp-.');
% CEN
plot(rms(5,:),'kv--');
% C_1
plot(rms(6,:),'go-');
% C_2
plot(rms(7,:),'b^-');
% C_3
plot(rms(8,:),'k*--');
% C_4
plot(rms(9,:),'cd-');
% C_5
plot(rms(10,:),'rs-');
146
hold off;
hold off;
xlabel('Janela')
ylabel('Erro RMS [pontos]')
axis([1,4,0,5]);
set(gca,'XTick',1:1:4)
set(gca,'XTickLabel',{'5 x 5','11 x 11','15 x 15','21 x 21'})
legend('Soma das Diferenças Absolutas','Soma do Quadrado das
Diferenças',...
'Correlação Cruzada Normalizada','Transformada Rank',...
'Transformada Censo','Transformada Modificada 1',...
'Transformada Modificada 2','Transformada Modificada 3',...
'Transformada Modificada 4','Transformada Modificada 5');
arquivo2=arquivo2(1:end-4);
saveas(gcf, arquivo2, 'fig')
close;
end
end
147
APÊNDICE B – MAPAS DE DISPARIDADES RESULTANTES DA
COMPARAÇÃO DOS MÉTODOS
Nos mapas de disparidades a seguir os objetos com as maiores distâncias
encontram-se representadas com tons de cinza mais escuros e o objetos mais
próximos com tons de cinza mais claros.
O tamanho, em pontos, das janelas utilizadas estão indicadas no canto inferior
direito de cada imagem.
Imagem do Corredor
Resultados da execução dos algoritmos com a imagem original
Figura B1: Execução do método Soma das Diferenças Absolutas na imagem original
5 x 5
11 x 11
15 x 15 21 x 21
148
Figura B2: Execução do método Soma do Quadrado das Diferenças na imagem original
Figura B3: Execução do método Correlação Cruzada Normalizada na imagem original
5 x 5
11 x 11
15 x 15 21 x 21
149
Figura B4: Execução do método Transformada Rank na imagem original
Figura B5: Execução do método Transformada Censo na imagem original
5 x 5
11 x 11
15 x 15 21 x 21
5 x 5
11 x 11
15 x 15 21 x 21
150
Figura B6: Execução do método Transformada Modificada 1 na imagem original
Figura B7: Execução do método Transformada Modificada 2 na imagem original
5 x 5 11 x 11
15 x 15 21 x 21
5 x 5
11 x 11
15 x 15 21 x 21
151
Figura B8: Execução do método Transformada Modificada 3 na imagem original
Figura B9: Execução do método Transformada Modificada 4 na imagem original
5 x 5
11 x 11
15 x 15 21 x 21
5 x 5
11 x 11
15 x 15 21 x 21
152
Figura B10: Execução do método Transformada Modificada 5 na imagem original
5 x 5
11 x 11
15 x 15 21 x 21
153
Resultados da execução dos algoritmos com a imagem esquerda com
30 % menos luminosidade
Figura B11: Execução do método Soma das Diferenças Absolutas na imagem com
luminosidade 30 % diferente
5 x 5
11 x 11
15 x 15 21 x 21
154
Figura B12: Execução do método Soma do Quadrado das Diferenças na imagem com
luminosidade 30 % diferente
Figura B13: Execução do método Correlação Cruzada Normalizada na imagem com
luminosidade 30 % diferente
5 x 5
11 x 11
15 x 15 21 x 21
5 x 5
11 x 11
15 x 15 21 x 21
155
Figura B14: Execução do método Transformada Rank na imagem com luminosidade 30 %
diferente
Figura B15: Execução do método Transformada Censo na imagem com luminosidade 30 %
diferente
5 x 5
11 x 11
15 x 15 21 x 21
5 x 5
11 x 11
15 x 15 21 x 21
156
Figura B16: Execução do método Transformada Modificada 1 na imagem com luminosidade
30 % diferente
Figura B17: Execução do método Transformada Modificada 2 na imagem com luminosidade
30 % diferente
5 x 5
11 x 11
15 x 15 21 x 21
5 x 5
11 x 11
15 x 15 21 x 21
157
Figura B18: Execução do método Transformada Modificada 3 na imagem com luminosidade
30 % diferente
Figura B19: Execução do método Transformada Modificada 4 na imagem com luminosidade
30 % diferente
5 x 5
11 x 11
15 x 15 21 x 21
5 x 5
11 x 11
15 x 15 21 x 21
158
Figura B20: Execução do método Transformada Modificada 5 na imagem com luminosidade
30 % diferente
5 x 5
11 x 11
15 x 15 21 x 21
159
Resultados da execução dos algoritmos com a imagem contaminada por
ruído de variância 200
Figura B21: Execução do método Soma das Diferenças Absolutas na imagem com ruído de
variância 200
5 x 5
11 x 11
15 x 15 21 x 21
160
Figura B22: Execução do método Soma do Quadrado das Diferenças na imagem com ruído de
variância 200
Figura B23: Execução do método Correlação Cruzada Normalizada na imagem com ruído de
variância 200
5 x 5
11 x 11
15 x 15 21 x 21
5 x 5
11 x 11
15 x 15 21 x 21
161
Figura B24: Execução do método Transformada Rank na imagem com ruído de variância 200
Figura B25: Execução do método Transformada Censo na imagem com ruído de variância 200
5 x 5
11 x 11
15 x 15 21 x 21
5 x 5
11 x 11
15 x 15 21 x 21
162
Figura B26: Execução do método Transformada Modificada 1 na imagem com ruído de
variância 200
Figura B27: Execução do método Transformada Modificada 2 na imagem com ruído de
variância 200
5 x 5
11 x 11
15 x 15 21 x 21
5 x 5
11 x 11
15 x 15 21 x 21
163
Figura B28: Execução do método Transformada Modificada 3 na imagem com ruído de
variância 200
Figura B29: Execução do método Transformada Modificada 4 na imagem com ruído de
variância 200
5 x 5
11 x 11
15 x 15 21 x 21
5 x 5
11 x 11
15 x 15 21 x 21
164
Figura B30: Execução do método Transformada Modificada 5 na imagem com ruído de
variância 200
5 x 5
11 x 11
15 x 15 21 x 21
165
Imagem Teddy
Resultados da execução dos algoritmos com a imagem original
Figura B31: Execução do método Soma das Diferenças Absolutas na imagem original
5 x 5 11 x 11
15 x 15
21 x 21
166
Figura B32: Execução do método Soma do Quadrado das Diferenças na imagem original
Figura B33: Execução do método Correlação Cruzada Normalizada na imagem original
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
167
Figura B34: Execução do método Transformada Rank na imagem original
Figura B35: Execução do método Transformada Censo na imagem original
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
168
Figura B36: Execução do método Transformada Modificada 1 na imagem original
Figura B37: Execução do método Transformada Modificada 2 na imagem original
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
169
Figura B38: Execução do método Transformada Modificada 3 na imagem original
Figura B39: Execução do método Transformada Modificada 4 na imagem original
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
170
Figura B40: Execução do método Transformada Modificada 5 na imagem original
5 x 5 11 x 11
15 x 15
21 x 21
171
Resultados da execução dos algoritmos com a imagem esquerda com
30 % menos luminosidade
Figura B41: Execução do método Soma das Diferenças Absolutas na imagem com
luminosidade 30 % diferente
5 x 5 11 x 11
15 x 15
21 x 21
172
Figura B42: Execução do método Soma do Quadrado das Diferenças na imagem com
luminosidade 30 % diferente
Figura B43: Execução do método Correlação Cruzada Normalizada na imagem com
luminosidade 30 % diferente
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
173
Figura B44: Execução do método Transformada Rank na imagem com luminosidade 30 %
diferente
Figura B45: Execução do método Transformada Censo na imagem com luminosidade 30 %
diferente
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
174
Figura B46: Execução do método Transformada Modificada 1 na imagem com luminosidade
30 % diferente
Figura B47: Execução do método Transformada Modificada 2 na imagem com luminosidade
30 % diferente
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
175
Figura B48: Execução do método Transformada Modificada 3 na imagem com luminosidade
30 % diferente
Figura B49: Execução do método Transformada Modificada 4 na imagem com luminosidade
30 % diferente
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
176
Figura B50: Execução do método Transformada Modificada 5 na imagem com luminosidade
30 % diferente
5 x 5 11 x 11
15 x 15
21 x 21
177
Resultados da execução dos algoritmos com a imagem contaminada por
ruído de variância 200
Figura B51: Execução do método Soma das Diferenças Absolutas na imagem com ruído de
variância 200
5 x 5 11 x 11
15 x 15
21 x 21
178
Figura B52: Execução do método Soma do Quadrado das Diferenças na imagem com ruído de
variância 200
Figura B53: Execução do método Correlação Cruzada Normalizada na imagem com ruído de
variância 200
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
179
Figura B54: Execução do método Transformada Rank na imagem com ruído de variância 200
Figura B55: Execução do método Transformada Censo na imagem com ruído de variância 200
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
180
Figura B56: Execução do método Transformada Modificada 1 na imagem com ruído de
variância 200
Figura B57: Execução do método Transformada Modificada 2 na imagem com ruído de
variância 200
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
181
Figura B58: Execução do método Transformada Modificada 3 na imagem com ruído de
variância 200
Figura B59: Execução do método Transformada Modificada 4 na imagem com ruído de
variância 200
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
182
Figura B60: Execução do método Transformada Modificada 5 na imagem com ruído de
variância 200
5 x 5 11 x 11
15 x 15
21 x 21
183
Imagem Cones
Resultados da execução dos algoritmos com a imagem original
Figura B61: Execução do método Soma das Diferenças Absolutas na imagem original
5 x 5 11 x 11
15 x 15
21 x 21
184
Figura B62: Execução do método Soma do Quadrado das Diferenças na imagem original
Figura B63: Execução do método Correlação Cruzada Normalizada na imagem original
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
185
Figura B64: Execução do método Transformada Rank na imagem original
Figura B65: Execução do método Transformada Censo na imagem original
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
186
Figura B66: Execução do método Transformada Modificada 1 na imagem original
Figura B67: Execução do método Transformada Modificada 2 na imagem original
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
187
Figura B68: Execução do método Transformada Modificada 3 na imagem original
Figura B69: Execução do método Transformada Modificada 4 na imagem original
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
188
Figura B70: Execução do método Transformada Modificada 5 na imagem original
5 x 5 11 x 11
15 x 15
21 x 21
189
Resultados da execução dos algoritmos com a imagem esquerda com
30 % menos luminosidade
Figura B71: Execução do método Soma das Diferenças Absolutas na imagem com
luminosidade 30 % diferente
5 x 5 11 x 11
15 x 15
21 x 21
190
Figura B72: Execução do método Soma do Quadrado das Diferenças na imagem com
luminosidade 30 % diferente
Figura B73: Execução do método Correlação Cruzada Normalizada na imagem com
luminosidade 30 % diferente
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
191
Figura B74: Execução do método Transformada Rank na imagem com luminosidade 30 %
diferente
Figura B75: Execução do método Transformada Censo na imagem com luminosidade 30 %
diferente
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
192
Figura B76: Execução do método Transformada Modificada 1 na imagem com luminosidade
30 % diferente
Figura B77: Execução do método Transformada Modificada 2 na imagem com luminosidade
30 % diferente
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
193
Figura B78: Execução do método Transformada Modificada 3 na imagem com luminosidade
30 % diferente
Figura B79: Execução do método Transformada Modificada 4 na imagem com luminosidade
30 % diferente
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
194
Figura B80: Execução do método Transformada Modificada 5 na imagem com luminosidade
30 % diferente
5 x 5 11 x 11
15 x 15
21 x 21
195
Resultados da execução dos algoritmos com a imagem contaminada por
ruído de variância 200
Figura B81: Execução do método Soma das Diferenças Absolutas na imagem com ruído de
variância 200
5 x 5 11 x 11
15 x 15
21 x 21
196
Figura B82: Execução do método Soma do Quadrado das Diferenças na imagem com ruído de
variância 200
Figura B83: Execução do método Correlação Cruzada Normalizada na imagem com ruído de
variância 200
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
197
Figura B84: Execução do método Transformada Rank na imagem com ruído de variância 200
Figura B85: Execução do método Transformada Censo na imagem com ruído de variância 200
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
198
Figura B86: Execução do método Transformada Modificada 1 na imagem com ruído de
variância 200
Figura B87: Execução do método Transformada Modificada 2 na imagem com ruído de
variância 200
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
199
Figura B88: Execução do método Transformada Modificada 3 na imagem com ruído de
variância 200
Figura B89: Execução do método Transformada Modificada 4 na imagem com ruído de
variância 200
5 x 5 11 x 11
15 x 15
21 x 21
5 x 5 11 x 11
15 x 15
21 x 21
200
Figura B90: Execução do método Transformada Modificada 5 na imagem com ruído de
variância 200
5 x 5 11 x 11
15 x 15
21 x 21
Livros Grátis
( http://www.livrosgratis.com.br )
Milhares de Livros para Download:
Baixar livros de Administração
Baixar livros de Agronomia
Baixar livros de Arquitetura
Baixar livros de Artes
Baixar livros de Astronomia
Baixar livros de Biologia Geral
Baixar livros de Ciência da Computação
Baixar livros de Ciência da Informação
Baixar livros de Ciência Política
Baixar livros de Ciências da Saúde
Baixar livros de Comunicação
Baixar livros do Conselho Nacional de Educação - CNE
Baixar livros de Defesa civil
Baixar livros de Direito
Baixar livros de Direitos humanos
Baixar livros de Economia
Baixar livros de Economia Doméstica
Baixar livros de Educação
Baixar livros de Educação - Trânsito
Baixar livros de Educação Física
Baixar livros de Engenharia Aeroespacial
Baixar livros de Farmácia
Baixar livros de Filosofia
Baixar livros de Física
Baixar livros de Geociências
Baixar livros de Geografia
Baixar livros de História
Baixar livros de Línguas
Baixar livros de Literatura
Baixar livros de Literatura de Cordel
Baixar livros de Literatura Infantil
Baixar livros de Matemática
Baixar livros de Medicina
Baixar livros de Medicina Veterinária
Baixar livros de Meio Ambiente
Baixar livros de Meteorologia
Baixar Monografias e TCC
Baixar livros Multidisciplinar
Baixar livros de Música
Baixar livros de Psicologia
Baixar livros de Química
Baixar livros de Saúde Coletiva
Baixar livros de Serviço Social
Baixar livros de Sociologia
Baixar livros de Teologia
Baixar livros de Trabalho
Baixar livros de Turismo