Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Filtros de Paso Bajo y Paso Alto | Procesamiento de Imágenes con OpenCV
Fundamentos de Visión por Computadora

Desliza para mostrar el menú

book
Filtros de Paso Bajo y Paso Alto

Uno de los principales beneficios de la Transformada de Fourier es que nos permite realizar filtrado de alta y baja frecuencia.

Después de aplicar la Transformada de Fourier:

es necesario crear una máscara de filtrado

Filtrado de Baja Frecuencia (Desenfoque)

Un filtro de baja frecuencia elimina los componentes de alta frecuencia, lo que da como resultado una imagen desenfocada. Máscara de baja frecuencia:

  • rows, cols = image.shape: retrieves the number of rows and columns from the grayscale image;

  • crow, ccol = rows // 2, cols // 2: computes the center coordinates of the image;

  • mask = np.zeros((rows, cols), np.uint8): creates a mask of zeros with the same dimensions as the image;

  • mask[crow-30:crow+30, ccol-30:ccol+30] = 1: sets a 60×60 square region at the center of the mask to 1, allowing only the low-frequency components (near the center of the frequency domain) to pass through while filtering out high-frequency details.

Filtrado de alta frecuencia (Detección de bordes)

Un filtro de alta frecuencia elimina los componentes de baja frecuencia y realza los bordes. Máscara de alta frecuencia:

  • highpass_mask = np.ones((rows, cols), np.uint8): inicializa una máscara de unos con las mismas dimensiones que la imagen, lo que significa que todas las frecuencias están permitidas inicialmente;

  • highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0: establece un pequeño cuadrado de 10×10 en el centro (región de baja frecuencia) en cero, bloqueando efectivamente esas frecuencias.

Aplicación del filtro

Después de crear la máscara, se debe aplicar un filtro y transformar la imagen de nuevo al dominio espacial:

  • dft_filtered = dft_shift * mask: aplica la máscara en el dominio de la frecuencia (por ejemplo, pasa bajos o pasa altos) mediante la multiplicación elemento a elemento con la DFT desplazada de la imagen;

  • dft_inverse = np.fft.ifftshift(dft_filtered): revierte el desplazamiento aplicado anteriormente para devolver los componentes de frecuencia a sus posiciones originales;

  • image_filtered = np.fft.ifft2(dft_inverse): calcula la Transformada de Fourier Inversa para convertir los datos de frecuencia filtrados nuevamente al dominio espacial;

  • image_filtered = np.abs(image_filtered): toma el valor absoluto para eliminar cualquier componente imaginario residual, obteniendo así una imagen filtrada con valores reales.

Tarea

Swipe to start coding

Se proporciona una imagen de una oveja en la variable image y una imagen en el dominio de la frecuencia en la variable dft_shift:

  • Obtener la forma de la matriz image y almacenarla en las variables rows y cols;
  • Calcular el punto central y almacenarlo en crow y ccol;
  • Definir low_mask como un arreglo de ceros con forma (rows, cols) y tipo np.uint8;
  • Seleccionar la región central de 20x20 de low_mask y rellenarla con 1.
  • Definir high_mask como un arreglo de unos con forma (rows, cols) y tipo np.uint8;
  • Seleccionar la región central de 20x20 de high_mask y rellenarla con 0;
  • Aplicar low_mask y high_mask a dft_shift y almacenar las frecuencias filtradas en lowpass_dft_filtered y highpass_dft_filtered respectivamente;
  • Realizar la transformación inversa para lowpass_dft_filtered:
    • Realizar el desplazamiento inverso y almacenar en lowpass_dft_inverse;
    • Realizar la transformación inversa y almacenar la imagen en image_lowpass;
    • Eliminar los valores negativos de image_lowpass.
  • Realizar la transformación inversa para highpass_dft_inverse:
    • Realizar el desplazamiento inverso y almacenar en lowpass_dft_inverse;
    • Realizar la transformación inversa y almacenar la imagen en image_highpass;
    • Eliminar los valores negativos de image_highpass.

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 3

Pregunte a AI

expand
ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

book
Filtros de Paso Bajo y Paso Alto

Uno de los principales beneficios de la Transformada de Fourier es que nos permite realizar filtrado de alta y baja frecuencia.

Después de aplicar la Transformada de Fourier:

es necesario crear una máscara de filtrado

Filtrado de Baja Frecuencia (Desenfoque)

Un filtro de baja frecuencia elimina los componentes de alta frecuencia, lo que da como resultado una imagen desenfocada. Máscara de baja frecuencia:

  • rows, cols = image.shape: retrieves the number of rows and columns from the grayscale image;

  • crow, ccol = rows // 2, cols // 2: computes the center coordinates of the image;

  • mask = np.zeros((rows, cols), np.uint8): creates a mask of zeros with the same dimensions as the image;

  • mask[crow-30:crow+30, ccol-30:ccol+30] = 1: sets a 60×60 square region at the center of the mask to 1, allowing only the low-frequency components (near the center of the frequency domain) to pass through while filtering out high-frequency details.

Filtrado de alta frecuencia (Detección de bordes)

Un filtro de alta frecuencia elimina los componentes de baja frecuencia y realza los bordes. Máscara de alta frecuencia:

  • highpass_mask = np.ones((rows, cols), np.uint8): inicializa una máscara de unos con las mismas dimensiones que la imagen, lo que significa que todas las frecuencias están permitidas inicialmente;

  • highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0: establece un pequeño cuadrado de 10×10 en el centro (región de baja frecuencia) en cero, bloqueando efectivamente esas frecuencias.

Aplicación del filtro

Después de crear la máscara, se debe aplicar un filtro y transformar la imagen de nuevo al dominio espacial:

  • dft_filtered = dft_shift * mask: aplica la máscara en el dominio de la frecuencia (por ejemplo, pasa bajos o pasa altos) mediante la multiplicación elemento a elemento con la DFT desplazada de la imagen;

  • dft_inverse = np.fft.ifftshift(dft_filtered): revierte el desplazamiento aplicado anteriormente para devolver los componentes de frecuencia a sus posiciones originales;

  • image_filtered = np.fft.ifft2(dft_inverse): calcula la Transformada de Fourier Inversa para convertir los datos de frecuencia filtrados nuevamente al dominio espacial;

  • image_filtered = np.abs(image_filtered): toma el valor absoluto para eliminar cualquier componente imaginario residual, obteniendo así una imagen filtrada con valores reales.

Tarea

Swipe to start coding

Se proporciona una imagen de una oveja en la variable image y una imagen en el dominio de la frecuencia en la variable dft_shift:

  • Obtener la forma de la matriz image y almacenarla en las variables rows y cols;
  • Calcular el punto central y almacenarlo en crow y ccol;
  • Definir low_mask como un arreglo de ceros con forma (rows, cols) y tipo np.uint8;
  • Seleccionar la región central de 20x20 de low_mask y rellenarla con 1.
  • Definir high_mask como un arreglo de unos con forma (rows, cols) y tipo np.uint8;
  • Seleccionar la región central de 20x20 de high_mask y rellenarla con 0;
  • Aplicar low_mask y high_mask a dft_shift y almacenar las frecuencias filtradas en lowpass_dft_filtered y highpass_dft_filtered respectivamente;
  • Realizar la transformación inversa para lowpass_dft_filtered:
    • Realizar el desplazamiento inverso y almacenar en lowpass_dft_inverse;
    • Realizar la transformación inversa y almacenar la imagen en image_lowpass;
    • Eliminar los valores negativos de image_lowpass.
  • Realizar la transformación inversa para highpass_dft_inverse:
    • Realizar el desplazamiento inverso y almacenar en lowpass_dft_inverse;
    • Realizar la transformación inversa y almacenar la imagen en image_highpass;
    • Eliminar los valores negativos de image_highpass.

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 3
Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
Lamentamos que algo salió mal. ¿Qué pasó?
some-alt