A ideia é criar uma bola no centro de uma imagem e considerá-la que está no domínio da frequência. Após isso, a Transformada Inversa de Fourier foi calculada para voltar ao domínio espacial e a imagem resultante pode ser vista no final deste post.
# -*- coding: utf-8 -*-
"""
@author: Rafael Zottesso
"""
import numpy as np
import cv2
# Cria uma imagem de 300 linhas com 300 colunas dentro de cada linha
t = 300
img = np.zeros((t,t,1), np.uint8)
# Posição do centro da imagem
x = y = int(t/2)
# Tamanho do raio do círculo
raio = 30
# Cria um array de índices com base no tamanho da imagem
I,J=np.meshgrid(np.arange(img.shape[0]),np.arange(img.shape[1]))
# Calcula a distância dos pontos com o centro (euclidiana)
dist=np.sqrt((I-x)**2+(J-y)**2)
# Coloca a intensidade 255 nos pontos onde a distância é menor que o raio
img[np.where(dist<raio)]=255
# Faz a transformada inversa de Fourier na imagem com o círculo no centro
img_fourier = np.fft.fftshift(img)
# Mostra a imagem original e a resultante
# Parâmetros: nome da janela, matriz
cv2.imshow('Resultado',img)
cv2.imwrite('./Imagens/bola.png', img)
cv2.imshow('Fourier',img_fourier)
cv2.imwrite('./Imagens/bola_Fourier.png', img_fourier)
# Funções mostrar as janelas com as imagens
cv2.waitKey(0)
cv2.destroyAllWindows()
Imagens Resultantes
# Imagem gerada com círculo no centro, no domínio da frequência

# Imagem após a Transformada Inversa de Fourier