es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo desenfocar una imagen en el dominio de la frecuencia en MATLAB?

He difuminado una imagen usando una máscara de filtro promedio en el dominio de frecuencia. Ahora, quiero desenfocarlo pero sigo obteniendo una imagen negra. Aquí está mi código:

*Tamaño de mi imagen: 1161×799

Quiero saber por qué sigo obteniendo una imagen negra incluso si uso otro código confiable.

im_gray = rgb2gray(im);
im_gray = im2double(im_gray);
% Filtro promedio de 17×17
avgFilter = ones(17) / 289;
% Ahora tomo la FFT de la imagen y el filtro para trabajar en el dominio de frecuencia
im_fft = fft2(im_gray, 1161, 799);
avgFilter_fft = fft2(avgFilter, 1161, 799);
Conv = im_fft .* avgFilter_fft;
% FFT inversa
blurry_image = ifft2(Conv);
% Desenfoque
Inv = Conv./avgFilter_fft;
deblur = ifft2(Inv);

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Podrían existir varias razones por las que obtienes una imagen negra después de intentar desenfocarla. Aquí hay algunas posibles razones:

    1. Verifica el valor de tu filtro: Asegúrate de que los valores de tu filtro de promediado estén entre 0 y 1. Si son mayores a 1, el filtro amplificará el contenido de alta frecuencia de la imagen y puede hacer que la imagen resultante sea demasiado oscura.

    2. Verifica el tamaño de tu filtro: El tamaño del filtro que estás utilizando también podría ser un factor. Si es demasiado grande, podría difuminar demasiado la imagen, haciendo que sea difícil recuperar los detalles. Intenta utilizar un filtro más pequeño.

    3. Verifica la normalización de tu inversa de la FFT: Al realizar una inversa de la FFT, es importante normalizar adecuadamente el resultado. Asegúrate de dividir el resultado de la FFT por el tamaño de la imagen, así como por el tamaño del filtro.

    4. Verifica el rango de tu imagen: Después de realizar la inversa de la FFT, es posible que tu imagen resultante tenga valores negativos o valores mayores a 1. Asegúrate de recortar los valores al rango apropiado (generalmente entre 0 y 1) antes de mostrar la imagen. Puedes hacer esto utilizando la función “clip” en Matlab.

Comments are closed.