Explorando a Transformada Discreta de Fourier 🛠️
A Transformada de Fourier é uma ferramenta matemática poderosa, capaz de decompor um sinal contínuo em uma soma de funções senoidais, cada uma ponderada por um coeficiente específico. Quando lidamos com sinais discretos, como imagens digitais, utilizamos a Transformada Discreta de Fourier (DFT).
Para imagens digitais, a DFT oferece uma representação alternativa no domínio da frequência, destacando degradações não visíveis no domínio espacial. Isso é especialmente útil para identificar interferências periódicas em transmissões analógicas ou padrões repetidos em fotos antigas ou de jornais.
Calculando a Transformada Discreta de Fourier
O cálculo da DFT envolve preparar uma matriz complexa que será processada pela função de cálculo da DFT. Esse processo transforma a imagem do domínio espacial para o domínio da frequência, onde as características da imagem podem ser analisadas sob uma nova perspectiva.
Comparação do Espectro de Magnitude
Ao comparar o espectro de magnitude obtido de uma imagem com o valor teórico da transformada de Fourier de uma senoide, esperamos ver picos nas frequências específicas da senoide. No entanto, devido a fatores como ruído e métodos de representação, o espectro obtido pode diferir do teórico.
Exemplo de precisão: Imagem Senoidal de 256x256 Pixels
Vamos explorar um exemplo com uma imagem senoidal de 256x256 pixels.
Imagem Original
Imagens Mostradas e Filtradas
Ângulo e Magnitude
Adaptação para Ler Imagens em Ponto Flutuante
Adaptamos o programa exemplos/dft.cpp
para ler imagens em ponto flutuante armazenadas em arquivos YAML, como demonstrado abaixo:
1
2
3
4
5
6
7
8
9
10
11
# sinusoidal-256-8.yml
# %YAML:1.0
# ---
mat: !!opencv-matrix
rows: 256
cols: 256
dt: f
data: [ 128., 1.40448181e+02, 1.52776474e+02, 1.64866150e+02,
1.76600800e+02, 1.87867386e+02, 1.98557419e+02, 2.08567947e+02,
2.17802567e+02, 2.26172333e+02, 2.33596634e+02, 2.40003998e+02,
# ...
Imagem Senoidal em Ponto Flutuante
Comparação Após a Adaptação
Com a adaptação para ler a imagem em ponto flutuante, o novo espectro de magnitude está mais próximo do valor teórico da transformada de Fourier da senoide. Isso se deve à representação mais precisa da imagem em ponto flutuante, preservando melhor as características de frequência durante o processamento da transformada.
Além disso, houve uma redução significativa do ruído no espectro de magnitude. Anteriormente, vários “pontos” representavam ruídos do processo de captura e representação. Com a nova escala e representação em ponto flutuante, minimizamos esses ruídos, visualizando apenas os pontos que correspondem ao comportamento esperado do espectro de magnitude para a senoide utilizada.
A Transformada Discreta de Fourier, portanto, não só revela detalhes escondidos no domínio espacial, mas também se beneficia de representações mais precisas para oferecer uma análise mais fiel das frequências presentes nas imagens.