我想去除图像中的噪音。给出的图像是一个.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');

发布于 2013-12-19 14:08:27
不要使用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.发布于 2013-12-19 13:55:39
假设image_destroyed是image_destroyed.mat中包含的变量,下面的代码可能是造成此问题的原因:
load('image_destroyed.mat');
imwrite(image_destroyed, 'fraou.jpg');
img = imread('fraou.jpg');在最好的中,这相当于img = image_destroyed;,因此没有必要。有可能(并且考虑到您的奇怪结果,很可能),这个写/读过程实际上是通过不适当的缩放或裁剪、压缩等方式使您的图像进一步退化。
对于MATLAB图像处理功能,当使用双倍时,您应该确保数据在0到1之间进行缩放。
https://stackoverflow.com/questions/20680873
复制相似问题