Interpolação no domínio da freqüência

Autor:cronuxs
Data:18/06/2009

Exercícios

  1. Fazer a demonstração da redução no Adessowiki, inspirado na demonstração feita no Khoros.

  2. Criar uma nova função iaresize que seja a função atual melhorada, com um parâmetro adicional do tipo de interpolação e incluir a interpolação Butterworth (domínio da frequência), que pode ser inspirada na solução de ano anterior: http://calhau.dca.fee.unicamp.br/wiki/index.php/Luiz.wetzel_-_exercicio_9

    Fazer uma página que seria igual a iaresize, para ser substituída, contendo todos os campos de uma função: descrição, exemplos numéricos e de imagens, equações, etc.

iaresize by Fernando Paolieri Neto

Respostas

1 parser = OptionParser()
2 parser.add_option("--taxaDeReducao", type='int', default=4, help='taxa De Reducao')
3 parser.add_option("--raio", type='int', default=32, help='Raio do Filtro')
4 opt, arg = parser.parse_args()
5 n,raio = opt.taxaDeReducao,opt.raio

Item 1

Redução sem interpolação

1 f = mmreadgray('Attachments/ia636-2009/gkaneblai_ex12_1/original.gif')
2 
3 adshow( f, title = 'Imagem Original')
4 adshow( iadftview(iadft(f)), title = 'Espectro Original')

Imagem Original

Espectro Original

1 h = zeros(f.shape)
2 
3 h[::n,::n] = 1
4 
5 adshow(ianormalize(h,[0,255]) , title='Impulso')
6 adshow(iadftview(iadft(h)), title='Seu Espectro')

Impulso

Seu Espectro

1 j = h * f
2 
3 adshow(j , title='Amostragens feitas a partir do Impulso')
4 adshow(iadftview(iadft(j)) , title='Seu Espectro')

Amostragens feitas a partir do Impulso

Seu Espectro

1 u1 = j[::n,::n]
2 adshow(u1 , title='Imagem reduzida')
3 adshow(iadftview(iadft(u1)) , title='Seu Espectro')

Imagem reduzida

Seu Espectro

Redução com interpolação

 1 F = iadft(f)
 2 
 3 H  = iacircle(f.shape,raio,(0,0))
 4 H += iacircle(f.shape,raio,(0,f.shape[1]))
 5 H += iacircle(f.shape,raio,(f.shape[0],0))
 6 H += iacircle(f.shape,raio,(f.shape[0],f.shape[1]))
 7 
 8 print 'Mascara simétrica?', iaisdftsym(H)
 9 
10 G = F * H
11 g = iaidft(G).real
12 
13 iashow(ianormalize(g,[0,255]),title='Filtro passa baixa')
14 iashow(iadftview(G),title='Seu espectro')
Mascara simétrica? True
Warning: downcasting image from double to uint16 (may lose precision)

Filtro passa baixa

Seu espectro

1 h = zeros(f.shape)
2 
3 h[::n,::n] = 1
4 
5 adshow(ianormalize(h,[0,255]) , title='Impulso')
6 adshow(iadftview(iadft(h)), title='Seu Espectro')

Impulso

Seu Espectro

1 j = h * g
2 
3 adshow(h * ianormalize(g,[0,255]) , title='Amostragens feitas a partir do Impulso')
4 adshow(iadftview(iadft(j)) , title='Seu Espectro')

Amostragens feitas a partir do Impulso

Seu Espectro

1 u2 = j[::n,::n]
2 
3 adshow(ianormalize(u2,[0,256]) , title='Imagem reduzida')
4 adshow(iadftview(iadft(u2)) , title='Seu Espectro')

Imagem reduzida

Seu Espectro

Comparação

1 adshow(ianormalize(u1,[0,256]) , title='Imagem reduzida sem interpolação')
2 adshow(ianormalize(u2,[0,256]) , title='Imagem reduzida com interpolação')

Imagem reduzida sem interpolação

Imagem reduzida com interpolação