Ejemplo de transformada de Fourier de imagen por Matlab

1. El propósito del experimento.

1. Comprender el significado y los medios de transformación de la imagen;
2. Conocer las propiedades básicas de la transformación de Fourier;
3.
Conocer el método y la aplicación de FFT; 4. Comprender las características de distribución del espectro bidimensional a través de experimentos;
5. Dominar la utilización a través de este experimento Programación de MATLAB para realizar la transformación de Fourier de imágenes digitales.

2. Instrumentos experimentales

1. Computadora;
2. Programa MATLAB;
3. Memoria móvil (disquete, disco U, etc.);
4. Lápiz y papel para grabar.

3. Principio experimental

1. Procesamiento de imágenes usando la transformada de Fourier La transformada de
Fourier es una herramienta poderosa para el análisis de sistemas lineales. Puede analizar cuantitativamente los efectos de sistemas digitales, puntos de muestreo, amplificadores electrónicos, filtros de convolución, ruido y puntos de visualización. . Cultivar esta habilidad a través de experimentos ayudará a resolver la mayoría de los problemas de procesamiento de imágenes. Para cualquiera que quiera aplicar efectivamente la tecnología de imagen digital en su trabajo, es necesario dedicar tiempo a aprender y dominar la transformación de Fourier.
2. Definición
de transformada de Fourier Para señales bidimensionales, la transformada de Fourier bidimensional se define como:
Transformada de Fourier bidimensional
transformada inversa:
Fourier discreto bidimensional
transformada de Fourier discreta bidimensional es:
Transformada de Fourier discreta bidimensional
transformada inversa:
Transformada inversa
transformada de Fourier de imagen y transformada de Fourier de señal unidimensional Al igual que la transformación de Fourier, existen algoritmos rápidos. Para más detalles, consulte la bibliografía. No es difícil encontrar un programa para el algoritmo rápido de la transformación de Fourier. De hecho, ahora hay chips que implementan la transformación de Fourier, que pueden implementar la transformación de Fourier en tiempo real.
3. Programas para realizar la transformación de Fourier y la transformación DCT de imágenes digitales utilizando el software MATLAB.

4. Pasos experimentales.

1. Encienda la computadora, instale e inicie el programa MATLAB; el archivo de imagen a procesar debe estar en la carpeta "trabajo" en el grupo de programas;
2. Use las funciones en la caja de herramientas de MATLAB para dibujar la función de la pantalla de espectro FFT;
3. a) Llame, Visualice la imagen;
b) Realice FFT y DCT en la imagen y visualice el espectro utilizando una función autoeditada;
c) Discuta la correspondencia entre diferentes contenidos de imagen y el espectro FFT y DCT.
4. Registre y organice el informe del experimento.

V. contenido experimental

El programa fuente de MATLAB es el siguiente:

clear
clc
img=imread('peppers.png');
subplot(2,2,1);imshow(img);title('原图');
f=rgb2gray(img);    %对于RGB图像必须做的一步,也可以用im2double函数
F=fft2(f);          %傅里叶变换
F1=log(abs(F)+1);   %取模并进行缩放
subplot(2,2,2);imshow(F1,[]);title('傅里叶变换频谱图');
Fs=fftshift(F);      %将频谱图中零频率成分移动至频谱图中心
S=log(abs(Fs)+1);    %取模并进行缩放
subplot(2,2,3);imshow(S,[]);title('频移后的频谱图');
fr=real(ifft2(ifftshift(Fs)));  %频率域反变换到空间域,并取实部
ret=im2uint8(mat2gray(fr));    %更改图像类型
subplot(2,2,4);imshow(ret),title('逆傅里叶变换');

6. Resultados experimentales

Después de ejecutar en MATLAB, los resultados experimentales son los siguientes:
en la Figura 1, la esquina superior izquierda muestra la imagen original leída en el programa MATLAB, la esquina superior derecha muestra la imagen del espectro después de la transformación rápida de Fourier bidimensional, y la esquina inferior izquierda muestra Es la imagen del espectro después de mover el componente de frecuencia cero en el espectro al centro de la matriz. La esquina inferior derecha muestra la imagen después de la transformación inversa de Fourier.

Figura 1 Resultados después de ejecutar el programa MATLAB
Figura 1 Resultados después de ejecutar el programa MATLAB

7. Problemas encontrados en el experimento y reflexiones sobre el proceso del experimento.

1. Acerca de la función imshow:
preste atención al tipo de matriz de imagen cuando use la función imshow para mostrar imágenes.doblePara el tipo, use imshow (I, []) para establecer automáticamente el rango de visualización de la imagen gris de acuerdo con el rango de valores de la matriz de datos.
Para obtener más información, consulte el documento de referencia del sitio web oficial de matlab: display image-MATLAB imshow-MathWorks China

2. Acerca de la advertencia que puede aparecer en tiempo de ejecución:
si la imagen se muestra con la función imshow inmediatamente después de la conversión de Fourier, se puede mostrar en la línea de comando: Advertencia: Mostrar parte real de entrada compleja (Advertencia: Mostrar la parte real de elementos de entrada complejos ) Esto se debe a que la matriz de imagen después de la transformación de Fourier es principalmente una matriz compleja, que incluye partes reales e imaginarias. En este momento, si desea mostrar la imagen, debe usar abs para tomar el módulo de la matriz compleja antes de mostrarla.
Después de tomar el módulo, el valor de la matriz de la imagen es generalmente muy grande y no se puede mostrar directamente mediante la función imshow. En este momento, la función de registro se puede usar para tomar su logaritmo, como log (abs (F) +1), de modo que el espectro se puede escalar . En cuanto a por qué se usa log (F + 1), como se muestra en la figura a continuación, el valor x entre (0, 1) se convertirá en un valor negativo después de tomar el logaritmo, y log (x + 1) convertirá todos los valores x Mapa a un rango de números positivos.
Figura 2 log
Figura 2 log

3. Con respecto al uso de las funciones im2double y rgb2gray al principio:
para las imágenes RGB de color verdadero, la matriz tridimensional se almacena después de la lectura. Si la transformación de Fourier se realiza directamente en este momento, el espectrograma se mostrará en blanco o Densamente embalado. Por lo tanto, antes de la transformación de Fourier de la imagen RGB, se requiere conversión de tipo. Puede usar im2double para convertirlo a un tipo doble (las operaciones de imagen rara vez tienen tipos enteros, por lo que es conservador usar esta función para convertir cualquier imagen primero) , O use rgb2gray para convertirlo en una imagen en escala de grises.
El efecto de transformación es diferente cuando se usan diferentes funciones. Por ejemplo, si se usa im2double, el espectrograma tendrá un tono blanco después de la transformación de Fourier, y si rgb2gray, el espectrograma tendrá un tono gris.

4. Finalmente, use im2uint8 para convertir el tipo de imagen:
este paso es convertir la matriz obtenida por la conversión inversa en una imagen en escala de grises (mat2gray), y luego convertir el tipo de imagen a uint8. De hecho, si se llama a este paso está relacionado con el uso de las dos primeras funciones de conversión de tipo. Si la imagen RGB se ha convertido en una imagen en escala de grises al principio, este paso se puede omitir y la imagen después de la conversión inversa se muestra directamente. Si se llama a im2double al principio, se puede mostrar una imagen en color después de omitir este paso. Por supuesto, este paso juega diferentes roles en diferentes aspectos, y la imagen en escala de grises tomada puede proporcionar una base para las operaciones posteriores.

Para obtener más información sobre funciones, consulte el sitio web de MATLAB MATLAB-function

Por favor corrígeme si hay algún error

13 artículos originales publicados · Me gusta 32 · Visitas 10,000+

Supongo que te gusta

Origin blog.csdn.net/weixin_43637490/article/details/89196212
Recomendado
Clasificación