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

Мультипликативный белый гауссовский шум

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

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

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

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

mult_gauss(X; clip=false[, σ=0.1, μ=1])

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

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

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

mult_gauss_chn(X; clip=false[, σ=0.1, μ=1])

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

Примеры

Изображения

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

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 = mult_gauss(img_gray)
# следующий вызов устанавливает стандартное отклонение и среднее значение вручную
img_color_noise = mult_gauss(img_color, 0.1, 1.0)
# поскольку среднее по умолчанию равно 0.0, его можно не указывать
img_color_channel_noise = mult_gauss_chn(img_color, 0.1)

img_gray_noise_heavy = mult_gauss(img_gray, 0.5)
img_gray_noise_intensity = mult_gauss(img_gray, 0.1, 1.2)

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

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

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

mg img gray noise

mg img color noise

mg img color channel noise

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

mg img gray noise heavy

mg img gray noise intensity

mg float noise

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

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

using Noise, Plots

x = LinRange(0.0, 10.0, 300)
y = sin.(x)
# небольшой шум
y_noise = mult_gauss(y, 0.05)
# сильный шум и сдвиг среднего
y_noise_2 = mult_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

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

mg series