Добавление шума Пуассона к изображению с определенным средним значением - PullRequest
0 голосов
/ 31 августа 2018

Как добавить пуассоновский шум с определенным средним распределением Пуассона в Matlab? Код ниже дает мне полностью белое изображение.

img = im2double(phantom(512));
figure; imshow(img)
mean = 1e9;
R = poissrnd(mean, [512, 512]);
J = img + R;
figure; imshow(J);

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

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

Например, скажем, ваше изображение, которое находится в диапазоне 0-1 после im2double, было получено в фотонно-ограниченном микроскопе. И скажем, что масштабирование таково, что 1e9 фотонов на один пиксель представлены как значение пикселя, равное 1. Чтобы симулировать здесь фотонный шум, этот один пиксель с (бесшумным) значением 1 будет иметь (шумное) значение poissrnd(1e9)/1e9. Другой пиксель со значением 0,5 будет иметь значение poissrnd(1e9*0.5)/1e9.

В наборе инструментов обработки изображений есть функция imnoise, которая делает именно это при вызове следующим образом:

img = imnoise(img,'poisson');

Эта функция использует масштабирование 1e12. Вы хотели масштабировать 1e9, поэтому вам придется разделить изображение на 1e3:

img = imnoise(img/1e3,'poisson')*1e3;
0 голосов
/ 31 августа 2018

То, как вы делаете это хорошо. Вы имеете в виду 1000000000, поэтому цифры очень и очень большие.

Однако, чтобы показать изображение с автоматически масштабированной картой цветов, выполните:

img = im2double(phantom(512));
figure; imshow(img,[])
mean = 1e9;
R = poissrnd(mean, [512, 512]);
J = img + R;
figure; imshow(J,[]);

Обратите внимание на квадратные скобки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...