Как добавить 5% -ный гауссовский шум к изображению

Давайте определим это:

Число "процент шума" представляет процентное отношение стандартного отклонения белого гауссова шума к сигналу для всего изображения.

Предположим, у меня есть изображение мозга, я хочу добавить 5% гауссовский шум ко всему изображению (тканям) с помощью кода Matlab:

I=imread('brain91.png'); I=rgb2gray(I);I=double(I);
I = I - min(I(:));
I = I / max(I(:));

%// Add noise to image
v = 0.05*var(I(:));
I_noisy = imnoise(I, 'gaussian', 0, v);
I_noisy=255.*I_noisy;
subplot(121);imshow(I,[]);subplot(122);imshow(I_noisy,[])

На рисунке показано исходное изображение (слева) и изображение шума справа. Считаете ли вы, что моя реализация верна для приведенного выше определения? - (около 5% гауссовского шума при значении v = 0,05*var(I(:)))

2 ответа

Решение

И Андер Бигури, и Дасдингонсин имеют правильные утверждения. Ваш код, безусловно, правильно добавляет гауссовский шум к изображению, но убедитесь, что вы учитываете фактическую дисперсию, возводя в квадрат 0.05 в вашем var расчет.

Кроме того, вы можете использовать std вместо var и возвести в квадрат все вычисления, чтобы получить то же самое:

I=imread('brain91.png'); I=rgb2gray(I);I=double(I);
I = I - min(I(:));
I = I / max(I(:));

%// Add noise to image
%v = (0.05^2)*var(I(:)); %// Option #1
v = (0.05*std(I(:)))^2; %// Option #2
I_noisy = imnoise(I, 'gaussian', 0, v);
I_noisy=255.*I_noisy;
subplot(121);imshow(I,[]);subplot(122);imshow(I_noisy,[])

Ваш код выглядит правильно. Я использовал пакеты слайсера для добавления или удаления шума. Вы можете попробовать сравнить свои результаты с этим:

фильтр Гаусса

Другие вопросы по тегам