我有MATLAB代码,它会为图像添加一些噪音。现在,我想显示噪音的直方图。我可以执行原始图像和噪声图像的直方图,然后我可以找到它们之间的差异,但我不确定它是否正确。
这是我的代码:
O=im2double(rgb2gray(imread('image2.jpg')));
G=imnoise(O,'salt & pepper',0.1);
%imshow([O G]);
%imhist(O);
imhist(G);
如何只显示我添加到图像中的噪音?
答案 0 :(得分:1)
这是可能的,但它需要一些技巧来做到这一点。另外因为这是冲动噪音,这是一个更简单的问题。您需要做的是首先种子随机生成器,然后用噪声破坏您的图像。之后,重新设定随机生成器,并使用相同类型的噪声破坏灰色图像。你使用的是灰色图像,因为冲动或盐和胡椒的噪音会破坏你的图像,黑白像素,所以灰色不是灰色。然后,您将找到该图像的直方图,然后将灰度值频率设置为0.剩下的就是您想要的噪声。
通过播种随机生成器并且因为噪声生成是随机的,您可以保证在播种后输出相同的噪声序列。
让我们以摄影师的形象为例:
O = im2double(imread('cameraman.tif'));
看起来像:
imshow(O);
现在,让我们为随机生成器播种,破坏图像,重新设置随机生成器并破坏灰色图像:
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);
如果您将它们并排比较,您会发现两个图像之间的噪点配置文件完全相同。现在,做灰度噪声图像的直方图,然后在128,0.5或灰色处移除bin:
h = imhist(H);
h(129) = 0;
bar(h);
我们现在得到: