我想将高斯噪声添加到256x256灰度图像中,然后将其删除。我尝试使用以下代码,但我得到的只是一个有噪音的图像。 是否可以完全去除图像中的噪音?如果不是在何种程度上可以降低高斯噪声?
P =0; %mean
Q =0.01; %variance
R = imnoise(L,'gaussian',P,Q); %L-image
subplot(2,1,1);
imshow(R);
title('Gaussian Noise');
U = conv2(double(R), ones(3)/9, 'same');
U1=uint8(U);
subplot(2,1,2);
imshow(U1);
title('Median Filtered Image');
我计划实施泊松噪声和盐和胡椒噪声的添加和删除。请建议我是否有过滤器来消除这些噪音。 请帮忙。提前谢谢。
答案 0 :(得分:4)
根据您的评论背景和您提出的问题,您希望完全消除已经损坏的图像中的噪音。如果首先您知道噪声输入过程的脉冲响应/点扩散函数(PSF),则只能完全删除。了解PSF并使用此功能进行噪声消除通常称为deconvolution。由于随机噪声过程的PSF在实践中很少被人知道,而且噪声是随机过程,因此实际上不可能完全消除所有噪声。当然存在噪声模型,但是知道损坏图像的噪声模型的确切参数是非常困难的(如果不是,不可能......)来确定。
您当然可以删除其中的大部分内容而将无法恢复原始图像,但您可以通过标准的噪音过滤技术来降低噪点。要消除高斯噪声,您可以简单地使用任何标准的低通滤波方法,例如average filtering或高斯滤波。您还可以使用Wiener filtering作为自适应过滤器。它分析图像的像素邻域并计算每个邻域的方差。如果方差很小,则执行更平滑,反之亦然。看看at this link for a good example。
现在,在您发布的代码中,您已选择使用conv2
。我要指出的一件小事是,您的过滤代码不会进行中值过滤。您正在实施平均过滤器。如果您想使用中值过滤,请改用medfilt2
。
在任何情况下,尽管conv2
对于任何2D信号都很有用,但我建议您改用imfilter
。它专门用于过滤图像(实际上是线性过滤......),如果您的计算机/处理器支持其使用,它还可以利用英特尔的IPP库。我尝试使用标准conv2
图像在我的计算机上运行您的代码(使用cameraman.tif
),并且我的评论中提到的输出非空白。我的猜测是,由于投射到uint8
,你得到的是空白图像。 L
很可能转换为范围在double
之间的[0,1]
精度图像,当您只是转换为uint8
时,您只会获得强度为0的图像或1这就是你什么也看不见的原因。尝试使用im2uint8
转换图片,以便您可以将强度对比度标准化为[0,255]
,而不是使用imshow
进行合适的显示。
但是,如果您使用imfilter
,则无需转换类型,因为imfilter
会考虑输入图像的类型,并将使用相同类型的输出图像。因此,请使您的代码看起来像这样:
L = imread('cameraman.tif'); %// Load in image from MATLAB system path
P =0; %mean
Q =0.01; %variance
R = imnoise(L,'gaussian',P,Q); %L-image
subplot(2,1,1);
imshow(R);
title('Gaussian Noise');
U = imfilter(R, ones(3)/9, 'replicate'); %// Change - Use imfilter
subplot(2,1,2);
imshow(U);
title('Average Filtered Image'); %// Changed title to be correct
这就是我得到的:
现在,为了回答有关您想要滤除的各种噪声的问题,泊松噪声也可以通过低通滤波器进行滤波(平均值,高斯等)。盐和胡椒噪声最好用中值滤波过滤。这是a great example on how median filtering works for salt and pepper noise。
至于你可以消除噪音的“程度”,这完全取决于反复试验。您只需使用不同的过滤器大小和参数过滤图像,直到获得您认为的感知质量良好或使用所有试验中具有最高PSNR的图像。显然,您的图像越嘈杂,您制作滤镜所需的攻击性越强,但您可能无法识别原始图像的样子。
这主要是一个试错过程,因此您必须使用参数并查看所获得的内容。
我希望这已经充分回答了你的问题。祝你好运!
答案 1 :(得分:0)
根据您的评论,将原始未修改的图像数据从imread()保存到单独的数组变量中是可以接受的,该变量在需要完全去除噪声的图像时使用。