jahuaman_Ex5

Autor: jahuaman
Data: 16/04/2009

Item 1

Estudar a função iaapplylut, fazendo alguns exemplos.

 1 #Imagen Gaussiana
 2 x, y = iameshgrid(arange(0,600), arange(0,300) )
 3 x = x.astype(float)
 4 y = y.astype(float)
 5 F = 255*exp(-1./2 *( ((x - 300)/100)**2+((y - 150)/50)**2))
 6 mmplot([[arange(256)]],['set yrange [0:255]','set xrange [0:255]']);
 7 mmshow(uint16(F),title='img - Imagen Gaussiana')
 8 
 9 #Função Negativo
10 it = 255 - arange(256)
11 g = iaapplylut(F, it)
12 mmplot([[it]],['set yrange [0:255]','set xrange [0:255]']);
13 mmshow(uint16(g),title='img - Usando a Função Negativo ')
14 
15 #Função binarizado
16 T=zeros(256);
17 T[211:256]=255
18 img_bin = iaapplylut(F,T)
19 mmplot([[T]],['set yrange [0:255]','set xrange [0:255]'])
20 adshow(img_bin,title = "binarizado")
21 
22 
23 #Função de transformação com iacolormap - HOT
24 cm1 = iacolormap('hot');
25 g1 = iaapplylut(F, cm1);
26 mmplot([[cm1[:,0]],[cm1[:,1]],[cm1[:,2]]],['set yrange [0:255]','set xrange [0:255]'])
27 adshow(g1,title='Usando a transformação com iacolormap - HOT')
28 
29 #Função de transformação com iacolormap - HSV
30 cm2 = iacolormap('hsv');
31 g2 = iaapplylut(F, cm2);
32 mmplot([[cm2[:,0]],[cm2[:,1]],[cm2[:,2]]],['set yrange [0:255]','set xrange [0:255]'])
33 adshow(g2,title='Usando a transformação com iacolormap - HSV ')

img - Imagen Gaussiana

img - Usando a Função Negativo

binarizado

Usando a transformação com iacolormap - HOT

Usando a transformação com iacolormap - HSV

1 img = iaread('lenina.pgm');
2 iashow(img);
3 hist = iahistogram(img);
4 mmplot([[hist]],['set yrange [0:'+str(hist.max())+']','set xrange [0:256]'], ptitle='Histograma');
5 cm3 = iacolormap('pink');
6 g3 = iaapplylut(img, cm3);
7 mmplot([[cm3[:,0]],[cm3[:,1]],[cm3[:,2]]],['set yrange [0:255]','set xrange [0:255]']);
8 adshow(g3,title='Usando a transformação com iacolormap - PINK ')

Usando a transformação com iacolormap - PINK

Item 2

Reprogramar a função iaapplylut para que ela seja mais simples. Se possível.

 1 def newiaapplylut(f,it):
 2     return it[f]
 3 
 4 #exemplo: power-law transformation
 5 f = iaread('lenina.pgm');
 6 it = arange(256)**0.95
 7 f1 = newiaapplylut(f,it);
 8 hist = iahistogram(f1);
 9 mmplot([[it]],['set yrange [0:255]','set xrange [0:255]']);
10 adshow(f1, title = 'função power-law')
11 mmplot([[hist]],['set yrange [0:'+str(hist.max())+']','set xrange [0:256]'], ptitle='Histograma');
12 
13 #exemplo: log transformation
14 f = iaread('lenina.pgm');
15 it = 30*log(1+arange(256))
16 f1 = newiaapplylut(f,it);
17 hist = iahistogram(f1);
18 mmplot([[it]],['set yrange [0:255]','set xrange [0:255]']);
19 adshow(f1, title = 'função power-law')
20 mmplot([[hist]],['set yrange [0:'+str(hist.max())+']','set xrange [0:256]'], ptitle='Histograma');

função power-law

função power-law

Item 3

Implementar uma função interativa de melhoria de contraste da imagem. Deve-se usar a função monotonicamente crescente de intensidade formada por 3 segmentos de retas. Os dois pontos de inflexão destas retas devem ser calculados em função de 4 parâmetros: Wi,Li largura e intensidade média de entrada, e Wo, Lo, largura e intensidade média de saída. Existem algumas situações que vocês precisam prever o comportamento desta operação dependendo dos parâmetros passados. Utilizar algumas imagens para ilustrar o uso desta função interativa. Uma ilustração desta função, porém apenas com os parâmetros Wi e Li podem ser vistas em http://www.dca.fee.unicamp.br/DIPcourse/html-dip/c4/s3/front-page.html

 1 def stretching(Wi, Li, Wo, Lo):
 2     x1,y1 = Li-round(Wi/2),Lo-round(Wo/2)
 3     x2,y2 = Li+round(Wi/2),Lo+round(Wo/2)
 4     s = arange(256)
 5     for i in range(0,256):
 6         if (i < x1):
 7             s[i] = (y1/x1)*i
 8         elif (i < x2):
 9             s[i] = ((i-x1)*(y2-y1)/(x2-x1))+y1
10         else:
11             s[i] = ((i-x2)*(255-y2)/(255-x2))+y2
12     return [[s]]
13 
14 it = stretching(75, 127, 150, 127)
15 g4 = iaapplylut(f, it)
16 
17 mmplot([[it]],['set yrange [0:256]','set xrange [0:256]'], ptitle='Funcao Contrast stretching.')
18 iashow(uint16(g4), title='Contrast stretching da imagen.')
19 mmplot([[iahistogram(g4)]],['set yrange [0:256]','set xrange [0:256]'], ptitle='Histograma')

Contrast stretching da imagen.