¿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’)
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 enlpFilter_matrix
. Podría intentar usar un bucle anidado para copiar los valores, pero si eso no funciona, puede ser necesario buscar otros métodos.