¿Qué es la convolución en 2D?
La imagen se denota como array dentro de la computadora. Una imagen contiene muchas características como borde, contraste, etc. En el procesamiento de imágenes, las características deben extraerse de la imagen para un estudio posterior de la imagen.
La convolución es una operación fundamental sobre imágenes en la que se aplica una operación matemática a cada píxel para obtener el resultado deseado.
Para este propósito, se usa otra array llamada kernel que es más pequeña en tamaño de imagen. Esto también se llama filtro. Este filtro se aplica sobre cada píxel de la imagen y el nuevo valor obtenido es el valor de ese píxel. La imagen obtenida se denomina imagen filtrada .
En el núcleo, cada celda contiene algún valor, ese núcleo se mantiene por encima del píxel y los valores correspondientes se multiplican y luego se suman, este valor obtenido es el nuevo valor del píxel.
Qué es la borrosidad
Si se observa cuidadosamente una imagen borrosa, lo más común es notar que la imagen es uniforme, lo que significa que no se observan los bordes. Un filtro utilizado para desenfoque también se llama filtro de paso bajo , porque permite que la baja frecuencia entre y detenga la alta frecuencia. Aquí frecuencia significa el cambio de valor de píxel. El valor de píxel alrededor del borde cambia rápidamente a medida que la imagen borrosa es suave, por lo que se deben filtrar las frecuencias altas.
Para el propósito de desenfoque, se usa un filtro con cada llamada que tiene el valor 1 porque para desenfocar la imagen, un valor de píxel debe estar cerca del valor vecino.
En el filtro, se divide por 9 para la normalización; de lo contrario, el valor de un píxel aumentará, lo que dará como resultado un mayor contraste, que no es el objetivo.
Podemos elegir el tamaño del kernel dependiendo de cuánto queramos suavizar la imagen. Si elige un tamaño más grande, tendrá un promedio de un área más grande. Esto tiende a aumentar el efecto suavizante.
# Write Python3 code here import cv2 import numpy as np image = cv2.imread('geek.jpg') # making filter of 3 by 3 filled with 1 divide # by 9 for normalization blur_filter1 = np.ones((3, 3), np.float)/(9.0) # making filter of 5 by 5 filled with 1 divide # by 25 for normalization blur_filter2 = np.ones((5, 5), np.float)/(25.0) # making filter of 7 by 7 filled with 1 divide # by 49 for normalization blur_filter3 = np.ones((7, 7), np.float)/(49.0) image_blur1 = cv2.filter2D(image, -1, blur_filter1) image_blur2 = cv2.filter2D(image, -1, blur_filter2) image_blur3 = cv2.filter2D(image, -1, blur_filter3) cv2.imshow('geek', image) cv2.imshow('geek_blur1', image_blur1) cv2.imshow('geek_blur2', image_blur2) cv2.imshow('geek_blur3', image_blur3) cv2.waitKey(0) cv2.destroyAllWindows()
Producción
Imagen original
Desenfocado con filtro de 3 x 3
Desenfocado con filtro de 5 x 5
Desenfocado con filtro de 7 x 7
Con filtro grande las imágenes se suavizaron más.