2 votes

Comment ajouter un bruit synthétique dans une image avec une probabilité d'erreur spécifiée ?

Je veux créer un bruit synthétique dans une image. Comment vais-je dégrader l'image en noir et blanc avec des erreurs, avec une probabilité d'erreur indépendante à chaque point. Comment vais-je faire cela en Python (par exemple, probabilité d'erreur = 0,0011) ?

enter image description here

2voto

nathancy Points 6407

Voici une approche vectorielle utilisant OpenCV +. skimage.util.random_noise . Vous pouvez expérimenter des modes de bruit tels que localvar , pepper , s&p y speckle pour obtenir le résultat souhaité. Vous pouvez définir la proportion de bruit avec le bouton amount paramètre. Voici un exemple utilisant s&p con amount=0.011 :

enter image description here

import cv2
import numpy as np
from skimage.util import random_noise

# Load the image
image = cv2.imread('1.png', 0)

# Add salt-and-pepper noise to the image
noise = random_noise(image, mode='s&p', amount=0.011)

# The above function returns a floating-point image in the range [0, 1]
# so need to change it to 'uint8' with range [0,255]
noise = np.array(255 * noise, dtype=np.uint8)

cv2.imshow('noise',noise)
cv2.imwrite('noise.png',noise)
cv2.waitKey()

1voto

Hymns For Disco Points 2623

Voici un exemple de programme remplaçant simplement les pixels "dégradés" par du noir, en utilisant la bibliothèque Pillow

from PIL import Image
import random

img = Image.open('text.png')
pixels = img.load()

for x in range(img.size[0]):
    for y in range(img.size[1]):
        if random.random() < 0.011:
            pixels[x,y] = 0 # only 1 number given since the image is grayscale

img.save('text_degraded.png')

J'ai augmenté la probabilité à 0,011 pour la rendre plus perceptible, voici le résultat. enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X