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

Шум соли и перца

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

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

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

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

salt_pepper(X; salt_prob=0.5, salt=1.0, pepper=0.0[, prob])

Этот метод задает шум соль или перца для каждого пикселя и канала в отдельности. В случае с RGB-изображениями это означает, что каждый цветовой канал пикселя получает собственное количество соли или перца. Должен быть предоставлен массив X. prob является необязательным аргументом, следующим за X. Это значение представляет собой вероятность того, что отдельный пиксель будет подвержен воздействию шума. В случае если пиксель получает шум, мы выбираем либо соль, либо перец. salt_prob является необязательным аргументом, описывающим вероятность того, что выбранный пиксель будет затронут шумом соли. Поэтому 1-salt_prob описывает вероятность шума перца. Кроме того, мы можем выбрать числовое значение для соли и перца, используя именованный аргумент salt и pepper, соответственно. Для RGB-изображений эффект больше похож на цветовой, поскольку мы воздействуем на каждый канал в отдельности, а не только на пиксель.

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

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

salt_pepper_chn(X; salt_prob=0.5, salt=1.0, pepper=0.0[, prob])

Этот метод, в отличие от предыдущего, не добавляет шум в каждый цветовой канал элемента независимо, а устанавливает значение шума для каждого канала пикселя. Для RGB-изображения так вводятся реальные черные и белые точки.

Примеры

Изображения

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

using Noise, TestImages, Images
img_gray = testimage("fabio_gray_256")
img_color = testimage("fabio_color_256")

img_gray_noise = salt_pepper(img_gray)
img_color_noise = salt_pepper(img_color)
img_color_channel_noise = salt_pepper_chn(img_color)

# 30 % пикселей являются черными или белыми
img_gray_noise_heavy = salt_pepper(img_gray, 0.3)
# 10 % пикселей являются белыми
img_gray_noise_white = salt_pepper(img_gray, 0.1, salt_prob=1)
# 10 % пикселей являются серыми
img_gray_noise_gray  = salt_pepper(img_gray, 0.1, salt_prob=0, pepper=0.7)

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

Серое изображение с 10 % шума RGB-изображение с шумом, примененным поканально RGB-изображение с шумом, примененным попиксельно

sp img gray noise

sp img color noise

sp img color channel noise

Серое изображение с 30 % шума соли или перца Серое изображение с 10 % шума соли Серое изображение с 10 % серого

sp img gray noise heavy

sp img gray noise white

sp gray noise gray

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

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

using Noise, Plots

x = LinRange(0.0, 10.0, 300)
y = sin.(x)
y_noise = salt_pepper(y, 0.05, pepper=-1.0)
y_noise_2 = salt_pepper(y, 0.2, pepper=-0.5, salt=0.5)

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

Как видите, мы можем ввести шум соли и перца таким же образом в одномерные массивы. sp series