【问题标题】:Histogram of noise in an image in MATLABMATLAB中图像中的噪声直方图
【发布时间】:2016-12-01 14:39:17
【问题描述】:

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

这是我的代码:

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

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

【问题讨论】:

  • 你试过什么?玩 Matlab 是乐趣的一半。您是否减去了 2 个图像或直方图?你把2张图分开了吗?取图像倒数的特征值怎么样?将噪点应用于空图像怎么样?各种傻事都可以尝试。

标签: image matlab image-processing noise


【解决方案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);

我们现在得到:

【讨论】:

    猜你喜欢
    • 2011-10-18
    • 2019-11-29
    • 2019-06-03
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 2013-10-22
    • 2016-09-27
    • 2017-07-31
    相关资源
    最近更新 更多