Aula 9 - Interpolação Domínio da Frequência

Correção exercícios

isccsym

Solução não é trivial. Precisamos também verificar se a função funciona com entrada de imagem complexa.

Vamos refazer este exercício, fornecendo um conjunto de imagens de teste para todos verificarem se sua implementação funciona. O objetivo é conseguir uma implementação bem eficiente, utilizando fatiamento.

filtroidealdemo

convteo

Então sempre que existe um filtro utilizando a convolução periódic1, podemos implementá-lo usando a DFT e vice-versa, sempre que tivermos um filtro no domínio da frequência, podemos implementá-lo via convolução periódica.

  • Quando é melhor usar convolução:

    • para máscaras com 4 a 10 elementos, é mais rápido executar pela convolução
  • Quando é melhor usa a DFT:

    • é mais rápido para mascaras espaciais maiores que 20 elementos.
    • é útil no projeto de vários filtros: ideal, filtro butterworth, filtro sintonizado
    • é muito útil para entender o que um filtro por convolução está operando

Propriedade da Escala (expansão)

Revisão da demonstração feita na aula anterior

Interpolação no domínio da frequência

O redimensionamento com interpolação de uma imagem é uma operação custosa de processamento e de difícil implementação eficiente.

Algumas bibliotecas onde implementar este redimensionamento

  • scipy.misc.imresize (usa o PIL)
  • scipy.ndimage.zoom
  • skimage.transform.resize
  • opencv, cv2.resize

In [12]:
# import cv2

Exercícios para a próxima aula

isccsym

isccsym usando fatiamento e o conjunto de testes no arquivo pickle ccsym.pkl


In [10]:
import pickle

try:
    with open('/home/lotufo/ccsym.pkl','rb') as fhandle: 
        flist = pickle.load(fhandle)
except:
    print('arquivo não encontrado')
    
print(len(flist[0]),len(flist[1]))

cclist_ok = flist[0]
cclist_false = flist[1]

for cok in cclist_ok:
    print(type(cok))


2 1
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>

Analisar as implementações de resize de vários pacotes

Utilizar no mínimo os pacotes scipy (PIL e o zoom) e skimage para analisar:

  • ampliação com interpolação linear
  • redução com interpolação linear

Medir a velocidade e o espectro das imagens originais e interpoladas.

resize_comparison.ipynb

Fazer uma demonstração da diminuição da imagem

Com base no exemplo magnify.ipynb que analise a interpolação no domínio da frequência na ampliação da imagem, fazer o mesmo para a redução da imagem. Use uma redução de 4x4: g = f[::4,::4]


In [ ]: