Matlab消除噪音

时间:2013-12-19 11:43:32

标签: matlab gaussian noise

我想从图像中删除噪音。我给出的图像是一个.mat文件,但它非常复杂,因为当我加载mat文件时,没有图像可以看到,然后我用imwrite使它成为jpg

imwrite(destroyedImg, 'fr.jpg');

但是当我使用imshow时,我只能在白色背景中获得彩色圆点!

有没有办法找出如何清除这张照片中的噪音?! 我不允许使用内部功能,而是自己构建一个!但我无法弄清楚那种噪音然后将其删除!我还必须以RGB格式返回“清晰图像”而不是灰度!

这是我的一些代码

clear all; close all; 
load('image_destroyed.mat');
imwrite(image_destroyed, 'fraou.jpg');
img = imread('fraou.jpg'); 
subplot(2,2,1), imshow(img)
title('Fraou');
H = fspecial('average',[3 3]);
average = imfilter(img, H, 'replicate');
subplot(2,2,2), imshow(average);
title('average');H = fspecial('gaussian',[5 5]);
average = imfilter(img, H, 'replicate');
subplot(2,2,3); imshow(average);title('gaussian');
H = wiener2(img,[5 5]);
subplot(2,2,4); imshow(H)
title('wiener 5x5');

Here is the pisture i get in the first place

2 个答案:

答案 0 :(得分:2)

请勿imwrite使用'jpg'来获取您的图片 - 这只会引入文物。
您的输入图片的类型为double,其值超出范围[0..1],因此会产生混淆。

load('image_destroyed.mat');
image_destroyed = image_destroyed / 255.0; % back to [0..1] range
imshow( image_destroyed ); % should be meaningful now.

答案 1 :(得分:0)

以下代码(假设image_destroyedimage_destroyed.mat中包含的变量)可能是造成此问题的原因:

load('image_destroyed.mat');
imwrite(image_destroyed, 'fraou.jpg');
img = imread('fraou.jpg');

最佳这相当于img = image_destroyed;,因此不需要。这种写入/读取过程实际上可能会通过不适当的缩放或剪切,压缩等方式进一步降低图像质量,这是可能的(并且很可能会出现奇怪的结果)

对于MATLAB图像处理功能,使用双精度时,应确保数据在0和1之间缩放。