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 puedo hacer que el filtro funcione en este código?

Estoy tratando de aplicar el filtro pasa bajos Butterworth en la imagen, pero por alguna razón los valores en lpFilter no se copian en lpFiltermatrix. Intenté hacerlo con un bucle anidado pero todavía no funcionó y los valores de lpFiltermatrix permanecieron en cero.

import cv2
import numpy as np
from matplotlib import pyplot as plt
imagen = cv2.imread(r”C:/Users/Admin/Pictures/eee.jpg”, 0)
imagen_float32 = np.float32(imagen)
dft = cv2.dft(imagen_float32, flags = cv2.DFT_COMPLEX_OUTPUT)
dft_shift = np.fft.fftshift(dft)
magnitude_spectrum = np.log(cv2.magnitude(dft_shift[:,:,0], dft_shift[:,:,1]))

filas, columnas = imagen.shape
cc, cf = columnas//2 , filas//2
r, c = np.mgrid[0:filas:1, 0:columnas:1]
c -= cc
r -= cf

d = np.sqrt(np.power(r, 2.0) + np.power(c, 2.0))
lpFilter_matrix = np.zeros((filas, columnas, 2), np.uint8)
d0 = 10
n = 2

lpFilter = 1.0 / (1 + np.power(d/d0, 2*n))
lpFilter_matrix[:, :, 0] = lpFilter
lpFilter_matrix[:, :, 1] = lpFilter
fshift = dft_shift * lpFilter_matrix
f_ishift = np.fft.ifftshift(fshift)
img_back = cv2.idft(f_ishift)
img_back = cv2.magnitude(img_back[:,:,0],img_back[:,:,1])
plt.figure(figsize=(14,9))
plt.subplot(121)
plt.imshow(imagen, cmap = ‘gray’)
plt.title(‘Imagen de entrada’)
plt.axis(‘off’)
plt.subplot(122)
plt.imshow(img_back, cmap = ‘gray’)
plt.title(‘Imagen filtrada’)
plt.axis(‘off’)

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que está intentando aplicar un filtro de paso bajo Butterworth en una imagen. Parece que los valores en lpFilter no están siendo copiados en lpFilter_matrix. Podría intentar usar un bucle anidado para copiar los valores, pero si eso no funciona, puede ser necesario buscar otros métodos.

Comments are closed.