Estoy trabajando en una aplicación de procesamiento de imágenes que utiliza una transformación discreta de Fourier para implementar el desenfoque / nitidez. La aplicación funciona más o menos, pero algo sobre la mecánica sigue siendo confuso para mí.
En particular, es cómo se realiza el proceso de centrar las frecuencias cero.
El ejemplo que he visto preprocesa la imagen de entrada (de intensidades en escala de grises) multiplicándola con una matriz de tamaño igual a la imagen de entrada, cuyos valores son , donde x es la fila, y es la columna, entonces un patrón alternando 1 y - 1
Según las notas, esto es equivalente a intercambiar los cuadrantes de la matriz volteando a través de los ejes e y .
Entiendo por qué se hace esto, y me gustaría enfatizar que entiendo que tengo mi código / Fourier funcionando, simplemente no entiendo por qué multiplicar la matriz de entrada por 1 / -1 termina centrando el componente de frecuencia cero alrededor de 0.
Gracias
. Su transformación de Fourier se ve así:
), que se traduce en un solo punto a la derecha en el centro de la transformada de Fourier:
. (Recuerde que todavía no hemos hecho nuestra rotación, por lo que el centro de la transformación de Fourier son las frecuencias altas y las frecuencias bajas todavía están en las esquinas). Pero este es el "núcleo de rotación". Convolucionarse con este núcleo de rotación mueve todo hacia abajo y hacia la derecha (pero las cosas que caen desde la parte inferior derecha giran hacia la parte superior izquierda).
, mientras que la convolución de la transformada de Fourier de imágenes con el kernel de rotación (en el dominio de la frecuencia) le da:
.
, que tiene una transformada de Fourier: