Документация Engee

Аддитивный белый гауссовский шум

Аддитивный белый гауссовский шум является одним из самых распространенных типов шума. Мы просто добавляем случайное число к каждому пикселю. Случайное число имеет среднее значение , равное нулю, и определенное стандартное отклонение .

Использование

Массивы, изображения в оттенках серого и RGB-изображения

Для массивов, изображений в оттенках серого (Array{<:Gray}) и RGB-изображений (Array{<:RGB}) доступен следующий метод.

add_gauss(X; clip=false[, σ=0.1, μ=0.0])

Этот метод добавляет случайное гауссово значение к каждому отдельному элементу массива. В случае с RGB-изображениями это означает, что на каждый цветовой канал одного пикселя приходится разное количество шума. Должен быть предоставлен массив X, clip является именованным аргументом. Если clip=true, значения будут обрезаны до интервала [0,1]. и представляют стандартное отклонение и среднее гауссовского шума, соответственно. Если не равно нулю, мы увеличиваем общую интенсивность изображения. показывает, насколько силен шум, однако значение демонстрирует много шума. Если хранящиеся в массиве числа каким-то образом являются подтипом Normed, они автоматически обрезаются. Это происходит довольно часто, если вы используете библиотеку Images, которая по умолчанию использует тип Array{Gray{Normed{UInt8, 8}}}. Для массивов значений с плавающей запятой мы не обрезаем никаких значений, поэтому их лучше использовать в случаях, не связанных с изображениями.

RGB-изображения с одинаковыми каналами

Для RGB-изображений (Array{<:RGB}) доступен следующий метод:

add_gauss_chn(X; clip=false[, σ=0.1, μ=0.0])

Этот метод, в отличие от предыдущего, добавляет одинаковое значение шума ко всем цветовым каналам одного пикселя.

Примеры

Изображения

Вот несколько примеров с изображениями.

using Noise, TestImages, Images
img_gray = testimage("fabio_gray_256")
img_color = testimage("fabio_color_256")
img_float = convert(Array{Gray{Float64}}, img_gray)

img_gray_noise = add_gauss(img_gray)
# следующий вызов устанавливает стандартное отклонение и среднее значение вручную
img_color_noise = add_gauss(img_color, 0.1, 0.0)
# поскольку среднее по умолчанию равно 0.0, его можно не указывать
img_color_channel_noise = add_gauss_chn(img_color, 0.1)

img_gray_noise_heavy = add_gauss(img_gray, 0.5)
img_gray_noise_intensity = add_gauss(img_gray, 0.1, 0.3)

# без обрезки интенсивность также может быть выше 1.0
# однако мы можем сохранить (см. ниже) только изображение с интенсивностью [0, 1]
img_float_noise  = add_gauss(img_float, 0.3, -0.6, clip=true)

Изображения расположены в том же порядке, что и команды. На среднем изображении шум накладывается на каждый цветовой канал по отдельности, на правом — на все каналы пикселя. Поэтому на среднем изображении присутствует цветовой шум, а шум на изображении справа соответствует некоторому шуму интенсивности.

Изображение в оттенках серого с шумом Все каналы пикселя имеют разный уровень шума Все каналы пикселя имеют одинаковый уровень шума

awg img gray noise

awg img color noise

awg img color channel noise

Серое изображение с сильным шумом Серое изображение с усилением интенсивности шума Изображение с уменьшением интенсивности шума

awg img gray noise heavy

awg img gray noise intensity

awg float noise

Одномерные массивы

Вот несколько примеров с одномерными массивами.

using Noise, Plots

x = LinRange(0.0, 10.0, 300)
y = sin.(x)
# небольшой шум
y_noise = add_gauss(y, 0.05)
# сильный шум и сдвиг среднего
y_noise_2 = add_gauss(y, 0.2, -0.4)

plot(x,y);
plot!(x, y_noise);
plot!(x, y_noise_2);
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: linuxfb, minimal, offscreen, vnc, xcb.

Aborted
connect: Connection refused
GKS: can't connect to GKS socket application

GKS: Open failed in routine OPEN_WS
GKS: GKS not in proper state. GKS must be either in the state WSOP or WSAC in routine ACTIVATE_WS

Как видите, мы можем ввести белый гауссов шум таким же образом в одномерные массивы. Зеленая кривая смещена вниз из-за отрицательного значения . awg series