Aula 5

Aula 6


In [24]:
import numpy as np
h = np.array([[-1,0,1],
             [-2,0,2],
             [-1,0,1]])
r,c = np.nonzero(h)
print(r,c)
xx = np.transpose(np.nonzero(h))
print(xx)


[0 0 1 1 2 2] [0 2 0 2 0 2]
[[0 0]
 [0 2]
 [1 0]
 [1 2]
 [2 0]
 [2 2]]

Exercícios para a próxima aula, dia 27 de abril

Entregar no folder Aula_6:

Modificações da função affine (apenas caso bidimensional):

  1. affine_direta(f,T,domain=0)

    Implementação da affine porém utilizando a transformação direta

  2. affine2(f,T,domain=0)

    affine, porém colocando zeros nos pixels que caem fora da imagem de entrada

  3. ptrans(f,t)

    onde t é uma tupla (rr,cc) informando a translação em row e col.

    implementar a translação periódica, utilizando-se cópia de 4 fatiamentos

    comparar com


In [ ]:
import numpy as np
def ptrans(f,t):
   H,W = f.shape
   rr,cc = t
   row,col = np.indices(f.shape)
   g = f[(row-rr)%H, (col-cc)%W]
   return g
  1. Converter para ipynb e melhorar (com bons exemplos e equações) as demonstrações feitas no adessowiki:

Notebooks que precisam ser feitos

  • src/ptrans
  • src/text
  • src/gshow
  • src/nshow
  • master/tutorial_conv_3
  • master/tutorial_convprop_3

Como testar uma função ou programa

  • Função: protótipo
  • Como testar por exemplo a rgb_hsv?
    • se existir uma função já pronto, pode ser comparada tanto com a colorsys como a do matplotlib
      • rodar as duas funções em uma imagem e comparar os resultados
        • comparação pode ser feita pegando o máximo erro absoluto da diferença entre os resultados
      • como escolher o conjunto de dados a serem testados
    • se não existir uma função equivalente:
      • testar caso numérico bem pequeno, usar o print para interpretar os resultados
  • Vale a pena também comparar o tempo de execução
  • iaprofiledemo
  • iaramp
  • iait
  • iagshow
  • iagaussian
  • iacos
  • iaisolines
  • iagenimages
  • iagengauss (difícil)

Experimento de teste de programas feitos pelos alunos

A ideia é ser possível importar a função do aluno e executá-la aqui para poder testá-la. Para isso, é necessário que os alunos façam seus notebooks na forma da página de função da toolbox ia898.


In [13]:
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import matplotlib.colors as mpc

f = mpimg.imread('../data/boat.tif')

In [16]:
f_hsv = mpc.rgb_to_hsv(f)

In [9]:
import sys,os
homepath = os.path.abspath('/home/lotufo/Aula4_entregue/')
if homepath not in sys.path:
    sys.path.append(homepath)

In [4]:
! jupyter nbconvert --to 'python' /home/lotufo/Aula4_entregue/a207744_hsv_to_rgb.ipynb


[NbConvertApp] Converting notebook /home/lotufo/Aula4_entregue/a207744_hsv_to_rgb.ipynb to python
[NbConvertApp] Writing 1616 bytes to /home/lotufo/Aula4_entregue/a207744_hsv_to_rgb.py

In [5]:
import a207744_hsv_to_rgb

In [18]:
g = a207744_hsv_to_rgb.hsv_to_rgb(f_hsv[:,:,0],f_hsv[:,:,1],f_hsv[:,:,2])


(257, 256, 3)

In [20]:
import numpy as np
print((np.abs(g-f)).max())


3.0517578125e-05