Octave / Matlab - Гауссов шум

Я использую imnoise в Octave, чтобы добавить гауссовский шум к двоичным изображениям, но я думаю, что мой вопрос достаточно общий, чтобы его можно было применить и к Matlab.

Я использую imnoise (A, 'gaussian' [, mean [, var]]) вот так:

imnoise (A, 'gaussian', 0, var)

Я варьирую var от 0,0 до 1,0. Я думаю, что изменение var от 0,0 до 1,0 - это то же самое, что изменение процента шума от 0% до 100%.

Я прав? Потому что при разных размерах изображения он дает непостоянный уровень шума. Маленькие изображения будут казаться меньше шума по сравнению с большими изображениями с тем же var.

Спасибо


person JakkaJan    schedule 04.10.2013    source источник
comment
Процент шума ничего не значит. Var - это именно то, что он говорит: дисперсия гауссовского шума, который вы хотите добавить. Его влияние на изображение зависит от интенсивности пикселей изображения, которая обычно составляет от 0 до 1.   -  person Peter    schedule 04.10.2013


Ответы (1)


Если вы посмотрите на источник imnoise (Octave - бесплатное программное обеспечение, и вам предлагается посмотреть на источник), вы увидите, что гауссовский шум реализуется с помощью:

## Variance of Gaussian data with mean 0 is E[X^2]
A = A + (a + randn (size (A)) * sqrt (b));

где A - ваше изображение (после преобразования в double и range [0 1], a - это среднее значение, а b - это дисперсия. Обычно он принимает случайное число из нормальное распределение с указанной дисперсией и добавляет к изображению.

Я не уверен, что вы имеете в виду под процентом шума, но он не должен меняться в зависимости от размера изображения. Если под процентом вы имеете в виду, насколько больше шума на каждом пикселе, тогда вам следует увеличить дисперсию. Если вы имеете в виду количество пикселей, к которым добавлен шум, то вы можете создать случайную матрицу типа bool с процентами и выбрать из зашумленного изображения.

mask = rand (size (image)) < 0.5; # percentage of pixels to have noise
noised = image;
noised(mask) = imnoise (image, "gaussian")(mask);

Если под процентом шума вы имеете в виду количество «потерянных пикселей», то попробуйте использовать вариант «соль и перец».

noise = imnoise (image, "salt and pepper", percentage);
person carandraug    schedule 04.10.2013