En este artículo, vamos a ver cómo agregar un ruido de “sal y pimienta” a una imagen con Python.
Ruido: Ruido significa perturbación aleatoria en una señal en una versión de computadora. En nuestro caso, la señal es una imagen. La perturbación aleatoria en el brillo y el color de una imagen se denomina ruido de imagen.
Sal y pimienta: Se encuentra solo en imágenes en escala de grises (imagen en blanco y negro). Como sugiere el nombre, sal (blanca) en pimienta (negra), manchas blancas en las regiones oscuras o pimienta (negra) en sal (blanca), manchas negras en las regiones blancas. En otras palabras, una imagen con ruido de sal y pimienta tendrá algunos píxeles oscuros en las regiones brillantes y algunos píxeles brillantes en las regiones oscuras. El ruido de sal y pimienta también se llama ruido de impulso. Puede deberse a varias razones, como píxeles muertos, error de conversión de analógico a digital, error de transmisión de bits, etc.
Veamos cómo agregar ruido de sal y pimienta en una imagen:
- El ruido de sal y pimienta solo se puede agregar en una imagen en escala de grises. Entonces, convierta una imagen a escala de grises después de leerla
- Elija aleatoriamente la cantidad de píxeles a los que se agrega ruido (number_of_pixels)
- Elija aleatoriamente algunos píxeles en la imagen a los que se agregará ruido. Se puede hacer eligiendo aleatoriamente las coordenadas x e y
- Tenga en cuenta que los valores aleatorios generados deben estar dentro del rango de las dimensiones de la imagen. Las coordenadas x e y deben estar dentro del rango del tamaño de la imagen
- Los números aleatorios se pueden generar usando funciones de generador de números aleatorios como random.randint usado en el código
- Colorea algunos píxeles elegidos al azar como negros estableciendo su valor en 0
- Colorea algunos píxeles elegidos al azar como blancos estableciendo su valor en 255
- Guardar el valor de la imagen
A continuación se muestra la implementación:
Python
import random import cv2 def add_noise(img): # Getting the dimensions of the image row , col = img.shape # Randomly pick some pixels in the # image for coloring them white # Pick a random number between 300 and 10000 number_of_pixels = random.randint(300, 10000) for i in range(number_of_pixels): # Pick a random y coordinate y_coord=random.randint(0, row - 1) # Pick a random x coordinate x_coord=random.randint(0, col - 1) # Color that pixel to white img[y_coord][x_coord] = 255 # Randomly pick some pixels in # the image for coloring them black # Pick a random number between 300 and 10000 number_of_pixels = random.randint(300 , 10000) for i in range(number_of_pixels): # Pick a random y coordinate y_coord=random.randint(0, row - 1) # Pick a random x coordinate x_coord=random.randint(0, col - 1) # Color that pixel to black img[y_coord][x_coord] = 0 return img # salt-and-pepper noise can # be applied only to grayscale images # Reading the color image in grayscale image img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE) #Storing the image cv2.imwrite('salt-and-pepper-lena.jpg', add_noise(img))
Producción:
Publicación traducida automáticamente
Artículo escrito por apurva__007 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA