MATLAB中图像中噪声的直方图

时间:2016-12-01 14:39:17

标签: image matlab image-processing noise

我有MATLAB代码,它会为图像添加一些噪音。现在,我想显示噪音的直方图。我可以执行原始图像和噪声图像的直方图,然后我可以找到它们之间的差异,但我不确定它是否正确。

这是我的代码:

O=im2double(rgb2gray(imread('image2.jpg')));
G=imnoise(O,'salt & pepper',0.1);
%imshow([O G]);
%imhist(O);
imhist(G);

如何只显示我添加到图像中的噪音?

1 个答案:

答案 0 :(得分:1)

这是可能的,但它需要一些技巧来做到这一点。另外因为这是冲动噪音,这是一个更简单的问题。您需要做的是首先种子随机生成器,然后用噪声破坏您的图像。之后,重新设定随机生成器,并使用相同类型的噪声破坏灰色图像。你使用的是灰色图像,因为冲动或盐和胡椒的噪音会破坏你的图像,黑白像素,所以灰色不是灰色。然后,您将找到该图像的直方图,然后将灰度值频率设置为0.剩下的就是您想要的噪声。

通过播种随机生成器并且因为噪声生成是随机的,您可以保证在播种后输出相同的噪声序列。

让我们以摄影师的形象为例:

O = im2double(imread('cameraman.tif'));

看起来像:

imshow(O);

enter image description here

现在,让我们为随机生成器播种,破坏图像,重新设置随机生成器并破坏灰色图像:

rng(123); % Seed random generator
G = imnoise(O, 'salt & pepper', 0.1); % Corrupt image
rng(123); % Reseed random generator
H = imnoise(0.5*size(O), 'salt & pepper', 0.1); % Corrupt gray image

让我们看一下损坏的图像和灰色图像上的噪点:

figure;
imshow(G); 
figure;
imshow(H);

enter image description here

enter image description here

如果您将它们并排比较,您会发现两个图像之间的噪点配置文件完全相同。现在,做灰度噪声图像的直方图,然后在128,0.5或灰色处移除bin:

h = imhist(H);
h(129) = 0;
bar(h);

我们现在得到:

enter image description here