1. Generación de números aleatorios: Este es el enfoque más fundamental. Genera números aleatorios dentro de un rango especificado y luego asigna esos números a valores de píxeles.
* Ruido uniforme: Este es el tipo más simple. Genere números aleatorios distribuidos uniformemente entre un valor mínimo y máximo (por ejemplo, 0 y 255 para imágenes de escala de grises de 8 bits). Esto da como resultado una apariencia moteada. Las bibliotecas como Numpy en Python lo hacen fácil:
`` `Python
importar numpy como np
Importar matplotlib.pyplot como PLT
ancho, altura =256, 256
ruido =np.random.randint (0, 256, tamaño =(altura, ancho), dtype =np.uint8)
plt.imshow (ruido, cmap ='gris')
plt.show ()
`` `` ``
* ruido gaussiano (ruido normal): Esto es más realista ya que simula el tipo de ruido que se encuentra a menudo en los sensores de imagen. Se basa en una distribución gaussiana (normal). La media determina el brillo promedio, y la desviación estándar controla la intensidad del ruido. Numpy proporciona `np.random.normal`:
`` `Python
importar numpy como np
Importar matplotlib.pyplot como PLT
ancho, altura =256, 256
media =0
stddev =30 # ajuste para el nivel de ruido
ruido =np.random.normal (media, stddev, size =(altura, ancho)). Astype (np.uint8)
ruido =np.clip (ruido, 0, 255) Los valores de #sensura están dentro del rango de 0-255.
plt.imshow (ruido, cmap ='gris')
plt.show ()
`` `` ``
* ruido de sal y pimienta: Este tipo presenta píxeles en blanco y negro aleatorios. Puede lograr esto seleccionando aleatoriamente los píxeles y configurando sus valores en 0 (negro) o 255 (blanco).
`` `Python
importar numpy como np
Importar matplotlib.pyplot como PLT
ancho, altura =256, 256
Salt_pepper_ratio =0.1 # Porcentaje de píxeles afectados
ruido =np.random.Choice ([0, 255], size =(altura, ancho), p =[1-sal_pepper_ratio, sal_pepper_ratio]))
plt.imshow (ruido, cmap ='gris')
plt.show ()
`` `` ``
2. Uso de bibliotecas de procesamiento de imágenes: Bibliotecas como OpenCV (CV2 en Python) y Scikit-Image proporcionan funciones que pueden agregar ruido a las imágenes directamente, a menudo ofreciendo más control y eficiencia.
3. Perlin Noise (para texturas de procedimiento): Este es un tipo de ruido de gradiente que a menudo se usa para crear texturas de aspecto más natural y menos ruido granular. Es más complejo de implementar desde cero, pero las bibliotecas pueden manejarlo fácilmente.
4. Simulando fuentes de ruido específicas: Para simulaciones muy realistas, es posible que deba modelar fuentes de ruido específicas como el ruido térmico, el ruido de disparo o el ruido de cuantización. Esto a menudo requiere comprender los procesos físicos detrás de la generación de ruido.
Agregar ruido a una imagen existente:
Una vez que genere el ruido, lo agregue a su imagen original por adición en términos de elementos u otras operaciones. Recuerde ajustar la escala de su ruido para evitar el recorte (valores que exceden el rango válido, como 0-255 para imágenes de 8 bits).
La elección del método depende de su aplicación específica. Para simulaciones simples, la generación de números aleatorios es suficiente. Para escenarios más avanzados o ruido realista, se recomienda utilizar bibliotecas de procesamiento de imágenes o técnicas de generación de ruido más sofisticadas. Recuerde manejar valores potenciales de píxeles fuera de rango después de agregar el ruido.