首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab去噪

Matlab去噪
EN

Stack Overflow用户
提问于 2013-12-19 11:43:32
回答 2查看 1.2K关注 0票数 0

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

imwrite(destroyedImg, 'fr.jpg');

但是当我使用imshow时,我只得到了白色背景下的彩色点!

有没有办法找出如何清除这张照片上的噪音?!我不被允许使用内部功能,但可以自己构建一个!但我不知道是什么样的噪音,然后消除它!我还必须返回“清晰的图像”的RGB格式,而不是灰度!

这是我的一些代码

代码语言:javascript
复制
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');

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-19 14:08:27

不要使用imwrite'jpg'来获取您的映像--这只会引入工件。

您的输入图像是double类型的,其值超过了[0..1]的范围,因此造成了所有的混乱。

代码语言:javascript
复制
load('image_destroyed.mat');
image_destroyed = image_destroyed / 255.0; % back to [0..1] range
imshow( image_destroyed ); % should be meaningful now.
票数 2
EN

Stack Overflow用户

发布于 2013-12-19 13:55:39

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

代码语言:javascript
复制
load('image_destroyed.mat');
imwrite(image_destroyed, 'fraou.jpg');
img = imread('fraou.jpg');

最好的中,这相当于img = image_destroyed;,因此没有必要。有可能(并且考虑到您的奇怪结果,很可能),这个写/读过程实际上是通过不适当的缩放或裁剪、压缩等方式使您的图像进一步退化。

对于MATLAB图像处理功能,当使用双倍时,您应该确保数据在0到1之间进行缩放。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20680873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档