Jailton_Ex4

Autor: jailton
Data: 01/04/2009
01. #1. Equação matemática do uso indexado imagens no Python.
02. #--------------------------------------------
03. #3. Fazer uma nova função, utilizando o mapeamento direto.
04. #4. Opcionalmente, melhorar a função iaffine.
05. #---------------------------------------------
06. #2. Estudar a função iaffine da toolbox ia636.
07. #Ver como funciona exercitando com valores interessantes.
08. #Entender como funciona a sua codificação.
09. #- Estudo da função iaffine
10. #---------------------------------------------
11. # Ampliação da Imagem usando iaffine
12. F2 = iaread('gull.pgm')
13. F1 = mmreadgray('boat.ppm')
14. adshow(F1, title="Imagem de Entrada-Funçao iaffine")
15. Ampli = [[2,0,0],[0,2,0],[0,0,1]]
16. g = iaffine(F1,Ampli)
17. adshow(g,title='Ampliação 2x - Função iaffine')
18. # Redução da imagem usando iaffine
19. Ampli = [[0.5,0,0],[0,0.5,0],[0,0,1]]
20. g = iaffine(F1,Ampli)
21. adshow(g,title="Ampli 0.5x - função iaffine")
22. #----------------------------------------
23. # Rotação da imagem usando iaffine
24. ang = numpy.pi/6
25. Rot=[[cos(ang),-sin(ang),0],[sin(ang),cos(ang),0],[0,0,1]]
26. g = iaffine(F1,Rot)
27. adshow(g, title="Rotação-Função iaffine")
28. #----------------------------------------
29. # Translação - não foi possível testar utilizando iaffine
30. #----------------------------------------
31. #Função de translação
32. def translacao(fi,Vx,Vy):
33.     m,n = fi.shape
34.     i,j = mgrid[0:m-1, 0:n-1]
35.     fo = fi[(i-Vx)%m,(j-Vy)%n]
36.     return fo
37. d = translacao(F1,40,60)
38. adshow(F1,title="F1-Imagem de Entrada")
39. adshow(d, title= "Função translacao-Translação no eixo x/y")
40. #---------------------------------------
41. #Função de Rotação
42. def rotacao(fi,ang):
43.     import numpy
44.     import math
45.     m,n = fi.shape
46.     i,j = mgrid[0:m-1, 0:n-1]
47.     rx = ((cos(ang)*i-sin(ang)*j).astype(integer))
48.     ry = ((i*sin(ang)+j*cos(ang)).astype(integer))
49.     fo = fi[rx%m,ry%n]
50.     return fo
51. angulo = numpy.pi/6
52. fr = rotacao(F1,angulo)
53. adshow(fr, title="Função rotacao-Após rotação de um ângulo(graus): = %f" % ((angulo*180)/pi))

Imagem de Entrada-Funçao iaffine

Ampliação 2x - Função iaffine

Ampli 0.5x - função iaffine

Rotação-Função iaffine

F1-Imagem de Entrada

Função translacao-Translação no eixo x/y

Função rotacao-Após rotação de um ângulo(graus): = 30.000000