Agregue un ruido de «sal y pimienta» a una imagen con Python

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:

Imagen de entrada: “lena.jpg”

Imagen de salida: “Sal-y-pimienta-lena.jpg”

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *