Exercício 02 - Implementação iaramp e iacos

Autor:lionis
Data:18/03/2009

iaramp

  • Implementação da iaramp utilizando meshgrid e comparação com a iaramp original da toolbox
 1 def iaramp2(s, n, range):
 2     h,w = s[0],s[1] #parâmetros height x width
 3     kmin,kmax = range[0],range[1] #variação da tonalidade de cinza
 4     x,y = meshgrid(arange(0,w), arange(0,h)) #geração da grid
 5 
 6     #equação que gera o efeito iaramp
 7     #o floor serve para discretizar a variação do tom de cinza,
 8     #caso contrário teria-se uma variação gradativa
 9     g = floor(n*x/w)*(kmax - kmin)/(n - 1) + kmin #
10     return g
11 
12 #definição dos parâmetros a serem utilizados nas 2 funções
13 s = [100,200]
14 n = 10
15 range = [0,255]
16 
17 #cálculo do tempo da função iaramp() original
18 t = time.time()
19 g1 = iaramp(s, n, range)
20 iaramp_time = time.time() - t
21 
22 #cálculo do tempo da função iaramp2() implementada
23 t = time.time()
24 g2 = iaramp2(s, n, range)
25 iaramp2_time = time.time() - t
26 
27 mmshow(uint16(g1), title= "iaramp original: Tempo de processamento = " + str(iaramp_time) + "s");
28 mmshow(uint16(g2), title= "iaramp implementada: Tempo de processamento = " + str(iaramp2_time) + "s");

iaramp original: Tempo de processamento = 0.00183200836182s

iaramp implementada: Tempo de processamento = 0.00136494636536s

iacos

  • Implementação da iacos utilizando meshgrid e comparação com a iacos original da toolbox.
 1 def iacos2(s, t, theta, phi):
 2     h,w = s[0],s[1] #parâmetros height x width
 3     x,y = meshgrid(arange(0,w), arange(0,h)) #geração da grid
 4 
 5     #equação que gera o efeito iacos
 6     fx = numpy.cos(theta) / t #cálculo da componente fx
 7     fy = numpy.sin(theta) / t #cálculo da componente fy
 8 
 9     #cálculo da componente fxy
10     fxy = numpy.cos(2 * numpy.pi * (fx * x + fy * y) + phi)
11     return fxy
12 
13 #definição dos parâmetros a serem utilizados nas 2 funções
14 s = [128,256]
15 t = 100
16 theta = numpy.pi/4
17 phi = 0
18 
19 #cálculo do tempo da função iacos() original
20 t1 = time.time()
21 f1 = iacos(s, t, theta, phi)
22 f1 = ianormalize(f1, [0,255])
23 iacos_time = time.time() - t1
24 
25 #cálculo do tempo da função iacos2() implementada
26 t1 = time.time()
27 f2 = iacos2(s, t, theta, phi)
28 f2 = ianormalize(f2, [0,255])
29 iacos2_time = time.time() - t1
30 
31 mmshow(uint16(f1), title= "iacos original: Tempo de processamento = " + str(iacos_time) + " segundos");
32 mmshow(uint16(f2), title= "iacos implementada: Tempo de processamento = " + str(iacos2_time) + " segundos");

iacos original: Tempo de processamento = 0.0146799087524 segundos

iacos implementada: Tempo de processamento = 0.0139610767365 segundos