Fourier

Reading time ~1 minute

Carrega as bibliotecas necessárias e a imagem da Lena.

%matplotlib inline

from skimage import color
import urllib, cStringIO
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image as ImagePIL

lenaUrl = 'https://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png'
f = cStringIO.StringIO(urllib.urlopen(lenaUrl).read())

img = ImagePIL.open(f)
img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)
img = color.rgb2gray(img)

plt.imshow(img, cmap=plt.cm.gray)
plt.show()

png

Transforma a imagem para o domínio da frequência e plota centralizando utilizando fftshift.

img_freq = np.fft.fft2(img)
plt.imshow(100*np.log(1+abs(np.fft.fftshift(img_freq))), cmap='gray')

png

Cria uma máscara para ser aplicada ao domínio da frequência.

a, b = img.shape[0]/2, img.shape[1]/2 #centro
r = 20 #raio

y,x = np.ogrid[-a:img.shape[0]-a, -b:img.shape[1]-b]
mask = x*x + y*y <= r*r

plt.imshow(mask, cmap='gray')

png

Aplica a máscara ao domínio da frequência

plt.imshow(100*np.log(1+abs(np.fft.fftshift(img_freq) * mask)) , cmap='gray')

png

Resultado da máscara aplicada.

plt.imshow(abs(np.fft.ifft2(np.fft.fftshift(img_freq) * mask)), cmap='gray')

png

Resultada da máscara transformada de volta pro domínio espacial.

plt.imshow(abs(np.fft.ifft2(mask)), cmap='gray')

png

Colorização HSV

Published on November 29, 2015

Colorização

Published on October 01, 2015