Создание изображения с шумом и устранение шума с помощью randg Gamma Law в Matlab?

Я хочу добавить Multiplicative Gamma Noise к изображению, используя функцию "randg" в Matlab, и удалить этот шум. Мы должны помнить, что шум должен иметь среднее значение 1 и уровень 4. Он должен следовать закону гамма (с функцией распределения вероятности гамма-излучения). Изображение после добавления шума становится

F = U * V; где f = шумное изображение, u = исходное изображение, v = шумное изображение.

Закон гамма: gv(v)=L^L/(Γ(L)) v^(L-1) exp(-Lv) 1_(v≥0)

где L - уровень шума, а v - шум.

Вот код, который я пробовал:

  img = imread('lena.png');
  img1 = img./ 255;
  imgdob = double(img1);
  noisyimg = imgdob + randg(1,size(imgdob)) .* 0.4;
  noisyimg(noisyimg< 0) = 0;
  noisyimg(noisyimg> 1) = 1;
  figure,imshow(img);
  figure,imshow(noisyimg);
  imwrite(img, 'lenaOriginal.jpg', 'Quality', 100);
  imwrite(noisyimg, 'lenaNoisy.jpg', 'Quality', 100);

Но я не смог получить ожидаемый результат. Пожалуйста, предложите мне способ.

1 ответ

Решение

0.4 ОЧЕНЬ разрушительно. Настолько разрушительно, что это приведет к пороговым значениям 0 или 1. Вы должны попробовать 0.2 вместо. Также, если вы ищете нормальный шум распределения, вы должны использовать randn вместо randg, Следующий код здесь.

Обратите внимание, что у меня на компьютере нет sexylena.png, поэтому я должен использовать bag.png.

imgdob = im2double(imread('bag.png'));
noisyimg = imgdob + randg(1,size(imgdob)) .* 0.15;
noisyimg(noisyimg< 0) = 0;
noisyimg(noisyimg> 1) = 1;
figure,imshow(imgdob);
figure,imshow(noisyimg);
imwrite(imgdob, 'lenaOriginal.jpg', 'Quality', 100);
imwrite(noisyimg, 'lenaNoisy.jpg', 'Quality', 100);

Это результаты. Нормальное изображение.

нормальный img

Использование шумных изображений randg,

шумный img randg

Если вы хотите использовать вместо этого randn, вы можете использовать эту строку кода.

noisyimg = imgdob + randn(size(imgdob)) .* 0.2;

Использование шумных изображений randn,

шумный img randn

Что касается уменьшения шума, пожалуйста, обратитесь к руководству Matlab для удаления шума.

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