声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1607|回复: 0

[图像处理] 大家帮忙看看这个去噪实验

[复制链接]
发表于 2007-6-2 18:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
图片贴不上。。。。。。
这是一个图形去噪的实验,先用分水岭分割图像,然后再对分割的每一块用维纳滤波进行去噪。我知道可以直接对整幅图形去噪,这样做只是个实验,结果去噪后的图像有很多因为分割产生的小方格。
大家帮我看看是怎么回事?应该怎么样修正?不胜感激

clear all
% global kw kh
% kw=5;
% kh=5;
ima = imread('lena.pgm');
imac=ima;
ima=imnoise(ima,'gaussian',0.0096);
imn=ima;
figure, imshow(ima);
se = strel('disk', 15);
Itop = imtophat(ima, se); % 高帽变换
Ibot = imbothat(ima, se); % 低帽变换
%figure, imshow(Itop, []); % 高帽变换,体现原始图像的灰度峰值
%figure, imshow(Ibot, []); % 低帽变换,体现原始图像的灰度谷值
Ienhance = imsubtract(imadd(Itop, ima), Ibot);% 高帽图像与低帽图像相减,增强图像
%figure, imshow(Ienhance);
Iec = imcomplement(Ienhance); % 进一步增强图像
Iemin = imextendedmin(Iec, 20);
%figure,imshow(Iemin) % 搜索Iec中的谷值
Iimpose = imimposemin(Iec, Iemin);
wat = watershed(Iimpose); % 分水岭分割
figure,imshow(wat),title('water');
% rgb = label2rgb(wat); figure, imshow(rgb); % 用不同的颜色表示分割出的不同区域
cn=max(wat(:));%分割区域个数
[w,h]=size(ima);
for s=1:cn
    wat1=zeros(w,h);
    [r v t]=find(wat==s);
%     mx=max(r)-min(r)+1;
%     my=max(v)-min(v)+1;
%     M=mx*my;
    mc=ima(min(r):max(r),min(v):max(v));%提取分割区域
%     if IsMani(mc)
%         mr=RIlle(mc);
%     else
%         mr=wiener2(mc,[3 3]);
%     end
    mr=wiener2(mc,[3 3]);
    ima(min(r):max(r),min(v):max(v))=mr;%将滤波后的区域还原到原位置
end
figure,imshow(ima);
[nx,ny]=size(ima); % calculate psnr value
ima=im2double(ima);
imac=im2double(imac);
imn=im2double(imn);
y1 = -10.0*log10(norm(imac-ima,'fro')^2/(nx*ny))
y2 = -10.0*log10(norm(imac-imn,'fro')^2/(nx*ny))
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-12 16:04 , Processed in 0.054686 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表