2013-12-22 1 views
0

Каким образом соль может быть добавлена ​​к изображению отдельно в зависимости от ВЕРОЯТНОСТИ соли и перца. imnoise будет принимать ОДНОЕ значение для плотности шума в целом, и это значение является мерой как для соли (белые точки), так и для перца (черные точки). Я хочу знать, нужно ли просто добавлять белый (солевой), а затем черный (перечный) шум отдельно с двумя разными вероятностями. Какое уравнение нужно будет использовать?Добавление импульсного шума в изображении вручную

ответ

1
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; 
+0

только один вопрос, прежде чем я ударил правильно;). процент шума и «вероятность» шума. эти два термина в обработке изображений? – learner

+0

Не совсем, но достаточно близко. % - фиксированный член, поэтому 0,05% в% будет означать, что ВСЕГДА 0.05 * Всего пикселей. Вероятность будет равна 0,05 * общим пикселям. поскольку пиксели увеличивают два термина, начнут означать одно и то же. – exussum

+0

Этот подход не предотвращает добавление соли и шума в те же пиксели (что может быть желательно или нет) –

3
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.

enter image description here

+0

будет иметь какое-либо влияние на этот код в зависимости от интенсивности значения находятся между 0-255 или 0-1? – learner

+0

@ LandonAshes Исправлено. Спасибо за указание –

0

Этот код является простым и полезным (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'); 
+0

Пожалуйста, добавьте объяснение, а не просто отправьте код. –

 Смежные вопросы

  • Нет связанных вопросов^_^