Каким образом соль может быть добавлена к изображению отдельно в зависимости от ВЕРОЯТНОСТИ соли и перца. imnoise
будет принимать ОДНОЕ значение для плотности шума в целом, и это значение является мерой как для соли (белые точки), так и для перца (черные точки). Я хочу знать, нужно ли просто добавлять белый (солевой), а затем черный (перечный) шум отдельно с двумя разными вероятностями. Какое уравнение нужно будет использовать?Добавление импульсного шума в изображении вручную
ответ
clc;
close all;
originalImage = imread('Cameraman.tif');
[rows cols] = size(originalImage);
totalPixels = int32(rows * cols);
subplot(1, 2, 1);
imshow(originalImage);
percentage = str2double(cell2mat(inputdlg('Enter the percent noise: ', 'Enter answer', 1, {'2'})))/100.;
numberOfNoisePixels = int32(percentage * double(rows) * double(cols));
locations = randi(totalPixels, [numberOfNoisePixels, 1]);
noisyImage = originalImage;
noisyImage(locations) = 255;
subplot(1, 2, 2);
imshow(noisyImage, []);
Источник
https://groups.google.com/forum/#!topic/comp.soft-sys.matlab/YcF2xZwnq1o
Это делает соль шум, шум Pepper будет
noisyImage(locations) = 0;
вместо
noisyImage(locations) = 255;
img = .5*ones(100,200); %// example image
p_salt = .05; %// probability of salt
p_pepper = .01; %// probability of pepper
if strcmp(class(img),'uint8')
salt_value = uint8(255);
else
salt_value = 1;
end
pepper_value = 0;
aux = rand(size(img)); %// generate random values
img(aux<=p_salt) = salt_value; %// add salt
img((aux>p_salt) & (aux<=p_salt+p_pepper)) = pepper_value; %// add pepper
imshow(img) %// show image
Этот подход аналогичен используемому в imnoise
и позволяет избежать добавления соли и перца в тех же пикселях. Это предполагает p_salt + p_pepper
самое большее 1.
будет иметь какое-либо влияние на этот код в зависимости от интенсивности значения находятся между 0-255 или 0-1? – learner
@ LandonAshes Исправлено. Спасибо за указание –
Этот код является простым и полезным (Same imnoise в MATLAB)
im=imread('Parrot.jpg');
B=rgb2gray(im);
%if Pa==Pb;
percen=10;
%Noise level 10
Prob_den_f=255*percen/100;
NoiseImg = B;
Rmatrix = randint(size(B,1),size(B,2),[0,255]);
NoiseImg(Rmatrix <=Prob_den_f/2) = 0;
NoiseImg(Rmatrix >Prob_den_f/2&Rmatrix<Prob_den_f) =255;
subplot(1,2,2),imshow(NoiseImg),title('Add ''Salt and Pepper'' Noise');
subplot(1,2,1),imshow(B),title('Original Image');
Пожалуйста, добавьте объяснение, а не просто отправьте код. –
только один вопрос, прежде чем я ударил правильно;). процент шума и «вероятность» шума. эти два термина в обработке изображений? – learner
Не совсем, но достаточно близко. % - фиксированный член, поэтому 0,05% в% будет означать, что ВСЕГДА 0.05 * Всего пикселей. Вероятность будет равна 0,05 * общим пикселям. поскольку пиксели увеличивают два термина, начнут означать одно и то же. – exussum
Этот подход не предотвращает добавление соли и шума в те же пиксели (что может быть желательно или нет) –