0

Me podrian ayudar con un codigo de suavisamiento de imagen con filtro medio

les pido su ayuda para que me ayuden a resolver este codigo de suavisamiento de imagen sal y pimienta sin openCV muschas gracias. import numpy as np from PIL import Image import matplotlib.pyplot as plt import math image = Image.open("salt-charlie.png") plt.imshow (image,cmap='gray') plt.show() numero_image=image.load() filas,columnas=image.size filas #saber cuantos pixeles columnas #saber cuantos pixeles #mascara i=3 j=3 pixeles=image.load() A=np.array(image) for x in range(filas): for y in range(columnas): suma_valores=0 def filtromediana (image): A=np.zeros((image.shape[0],image.shape[1]),dtype=np.int) for i in range (1,image.shape[0]-1): for j in range (1,image.shape[1]-1): valor=[image.item(i-1,j-1),image.item(i-1,j),image.item(i-1,j+1), #fila 1, columna 1,2,3 de la mascara image.item(i,j-1),image.item(i,j),image.item(i-1,j+1), #fila 2, columna 1,2,3 de la mascara image.item(i+1,j-1),image.item(i+1,j),image.item(i+1,j+1)] #fila 3, columna 1,2,3 de la mascara valor.sort() #ordenar lista de manera asendente f=valor[4] A.itemset((i,j),int(f)) return(A) h=image.fromarray(A) plt.imshow(A, cmap ='gray')

8th Jan 2023, 10:24 PM
jose arturo perez echeverria
jose arturo perez echeverria - avatar
1 Answer
0
Aquí te dejo el código de suavizado de imagen con filtro medio, espero sea de ayuda: import numpy as np from PIL import Image import matplotlib.pyplot as plt import math image = Image.open("salt-charlie.png") plt.imshow (image,cmap='gray') plt.show() # Convertir imagen a matriz numpy img_array = np.array(image) # Tamaño de la imagen rows, cols = img_array.shape # Måscara del filtro mask = np.ones((3, 3)) # Aplicar filtro medio result = np.zeros((rows, cols)) for i in range(1, rows-1): for j in range(1, cols-1): # Obtener los valores de los píxeles vecinos values = [] for m in range(-1, 2): for n in range(-1, 2): values.append(img_array[i+m, j+n]) # Ordenar los valores y obtener el valor medio values.sort() result[i, j] = values[4] # Convertir la matriz resultante en una imagen y mostrarla filtered_image = Image.fromarray(result) plt.imshow(filtered_image, cmap='gray') plt.show()
13th Apr 2023, 5:37 AM
Jorge Moreno