Imagens Sintéticas

Autor: cronuxs
Data: 19/03/2009

Gausiana

Completando o exercicio que o professor Lotufo começou para criar uma gaussiana nas cordenadas passadas por parametro

01. def gaussian( size, mx, my, sx, sy):
02.     x, y = iameshgrid(arange(0,size[0]), arange(0,size[1]) )
03.     x = x.astype(float)
04.     y = y.astype(float)
05.     A = exp( -1./2. *( ((x - mx)/sx)**2.+((y - my)/sy)**2.))
06.     return (A/A.max()) * 255
07. 
08. sizex,sizey = 900.,300.
09. I = gaussian ( (sizex,sizey) , sizex/2 , sizey/2 , sizex/3 , sizey/3 )
10. mmshow(I, title= "Gaussiana");
Warning: downcasting image from double to uint16 (may lose precision)

Gaussiana

Cossenoidal

Esté método é bem semelhante com o método da gaussiana, a maior diferença está no fato da formula utilizar funções trigonométricas para criar uma imagem de faixas em um determinado angulo

01. def cossenoidal(size, tetha, period):
02.     x, y = iameshgrid(arange(0,size[0]), arange(0,size[1]) )
03.     x = x.astype(float)
04.     y = y.astype(float)
05. 
06.     fx = cos(tetha)/period
07.     fy = sin(tetha)/period
08. 
09.     A = sin(2*pi*(fx*x+fy*y))
10. 
11.     return A
12. 
13. sizex,sizey = 900.,300.
14. I = cossenoidal ( (sizex,sizey) , pi*(2./3.) , 100. )
15. I = ianormalize(I, [0,255])
16. mmshow(I, title= "Cossenoidal");

Cossenoidal

Ramp

Este método cria faixas em tons de cinza.

01. def ramp(size, bands, grayscaleMinMax):
02.     x, y = iameshgrid(arange(0,size[0]), arange(0,size[1]) )
03.     x = x.astype(float)
04.     y = y.astype(float)
05. 
06.     A = (floor(x * (bands /float(size[0]))))*((grayscaleMinMax[1] - grayscaleMinMax[0])/(bands-1)) + grayscaleMinMax[0]
07. 
08.     return A
09. 
10. sizex,sizey = 900.,300.
11. I = ramp ( (sizex,sizey) , 10 , (0,255) )
12. #I = ianormalize(I, [0,255])
13. mmshow(I, title= "Rampa");

Rampa

Circulo

Este método cria um circulo nas cordenadas passadas por parametro.

01. def circle(size, place, radius):
02.     x, y = iameshgrid(arange(0,size[0]), arange(0,size[1]) )
03.     x = x.astype(float)
04.     y = y.astype(float)
05. 
06.     A = (x-place[0]) ** 2 + (y-place[1]) ** 2 <= radius**2
07. 
08.     return A
09. 
10. sizex,sizey = 900.,300.
11. I = circle ( (sizex,sizey) , (sizex/2,sizey/2) , min((sizex,sizey)) /2 )
12. #I = ianormalize(I, [0,255])
13. mmshow(I, title= "Circulo");

Circulo