Comparação entre os tempos do cálculo da correlação normalizada (NCC) no domínio da frequência e no domínio do tempo

Comparação com o aumento do kernel

 1 from ia636 import *
 2 from numpy import *
 3 from exe12_function import *
 4 
 5 f = iaread('cameraman.pgm')
 6 
 7 w = f[:5,:5]
 8 
 9 t0=time.time()
10 k = NCCGf(f,w)
11 t1=time.time()
12 k2 = NCCG(f,w)
13 t2=time.time()
14 print 'Tempo NCCf, janela 5x5:',t1-t0,'\n'
15 print 'Tempo NCC,  janela 5x5:',t2-t1,'\n'
16 
17 w = f[:17,:17]
18 
19 t0=time.time()
20 k = NCCGf(f,w)
21 t1=time.time()
22 k2 = NCCG(f,w)
23 t2=time.time()
24 print 'Tempo NCCf, janela 17x17:',t1-t0,'\n'
25 print 'Tempo NCC,  janela 17x17:',t2-t1,'\n'
26 
27 w = f[:51,:51]
28 
29 t0=time.time()
30 k = NCCGf(f,w)
31 t1=time.time()
32 k2 = NCCG(f,w)
33 t2=time.time()
34 print 'Tempo NCCf, janela 51x51:',t1-t0,'\n'
35 print 'Tempo NCC,  janela 51x51:',t2-t1,'\n'
36 
37 w = f[:81,:81]
38 
39 t0=time.time()
40 k = NCCGf(f,w)
41 t1=time.time()
42 k2 = NCCG(f,w)
43 t2=time.time()
44 print 'Tempo NCCf, janela 81x81:',t1-t0,'\n'
45 print 'Tempo NCC,  janela 81x81:',t2-t1,'\n'
É simétrica? True
É simétrica? True
É simétrica? True
Tempo NCCf, janela 5x5: 0.114337921143 

Tempo NCC,  janela 5x5: 0.0533530712128 

É simétrica? True
É simétrica? True
É simétrica? False
Tempo NCCf, janela 17x17: 0.108384847641 

Tempo NCC,  janela 17x17: 0.407436132431 

É simétrica? True
É simétrica? True
É simétrica? False
Tempo NCCf, janela 51x51: 0.119472026825 

Tempo NCC,  janela 51x51: 3.56905794144 

É simétrica? True
É simétrica? False
É simétrica? False
Tempo NCCf, janela 81x81: 0.126116991043 

Tempo NCC,  janela 81x81: 8.89594888687

Estudo dos tempos com a adição de ruído

 1 from ia636 import *
 2 from numpy import *
 3 from exe12_function import *
 4 
 5 f = iaread('cameraman.pgm')
 6 w = f[:17,:17]
 7 w2 = f[:51,:51]
 8 
 9 f = geraRuido(f,20)
10 
11 t0=time.time()
12 k = NCCGf(f,w)
13 t1=time.time()
14 k2 = NCCG(f,w)
15 t2=time.time()
16 print 'Tempo NCCf, janela 17x17:',t1-t0,'\n'
17 print 'Tempo NCC,  janela 17x17:',t2-t1,'\n'
18 
19 t0=time.time()
20 k = NCCGf(f,w2)
21 t1=time.time()
22 k2 = NCCG(f,w2)
23 t2=time.time()
24 print 'Tempo NCCf, janela 51x51:',t1-t0,'\n'
25 print 'Tempo NCC,  janela 51x51:',t2-t1,'\n'
É simétrica? True
É simétrica? True
É simétrica? False
Tempo NCCf, janela 17x17: 0.110369920731 

Tempo NCC,  janela 17x17: 0.413605928421 

É simétrica? True
É simétrica? True
É simétrica? False
Tempo NCCf, janela 51x51: 0.11819601059 

Tempo NCC,  janela 51x51: 3.5690100193

Conclusões

  • Observação 1: A partir dos resultados obtidos, pode-se concluir que o tempo para o cálculo do indíce de correlação realizado no domínio da frequencia quase não varia com o tamanho do kernel. O tempo do NCC utilizando a convolução apresenta grandes variações com o tamanho da janela. Por causa disso, para janelas pequenas, o tempo do NCCf é maior do que o tempo do NCC, para janelas maiores a situação é revertida.
  • Observação 2: O tempo para calcular o NCC de uma imagem corrompida com ruído é ligeiramente maior do que o mesmo cálculo em uma imagem não ruidosa.