Гауссовский шум не покрывает основное изображение - Python - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь добавить гауссовский шум к изображению ("pepper.jpg").Это работает, как показано в результате ("noisy pepper.png");но шум не распространяется на "перцы", и это вокруг него.Что-то мне не хватает в применении шума?Любые советы будут оценены.

import cv2
import numpy as np

img = cv2.imread("pepper.jpg",0)
row, col = img.shape
mean = 0
var = 0.3
sigma = var ** 0.5
gauss = np.random.normal(mean, sigma, (row, col))
gauss = gauss.reshape(row, col)
noisyp = gauss + img
noisyp = noisyp.astype('uint8')
cv2.imwrite('noisy pepper.png', noisyp)

enter image description here

enter image description here

С уважением, Бехруз

1 Ответ

0 голосов
/ 10 декабря 2018

Ваше преобразование в uint8 не сложно.Вот что вы ищете:

import cv2
import numpy as np


def convert_to_uint8(image_in):
    temp_image = np.float64(np.copy(image_in))
    cv2.normalize(temp_image, temp_image, 0, 255, cv2.NORM_MINMAX, dtype=-1)

    return temp_image.astype(np.uint8)


img = cv2.imread("pepper.jpg", 0)
row, col = img.shape
mean = 0
var = 0.3
sigma = var ** 0.5
gauss = np.random.normal(mean, sigma, (row, col))
gauss = gauss.reshape(row, col)
noisy_pepper = gauss + img

cv2.imwrite('noisy pepper.png', convert_to_uint8(noisy_pepper))

enter image description here

Конечно, ведьма такая сигма вы не увидитешум.Пожалуйста, посмотрите на это (сигма будет около 14):

..
var = 200
sigma = var ** 0.5
..

enter image description here

...