数字图像处理,经典滤波算法去噪对比实验(Matlab实现)

原创 2014年11月13日 16:26:47

一,经典滤波算法的基本原理


1,中值滤波和均值滤波的基本原理

参考以前转载的博客:http://blog.csdn.net/ebowtang/article/details/38960271


2,高斯平滑滤波基本原理

参考以前转载的博客:http://blog.csdn.net/ebowtang/article/details/38389747



二,噪声测试效果

1,不同噪声效果

三幅图各噪声浓度分别是0.01 0.03,0.05(比如第一副图均是加入0.01的噪声浓度)


2,实验代码

<span style="font-size:12px;">%读入原始图像并显示
image_original=imread('dog.bmp');
figure(1)
subplot(2,4,1);
imshow(image_original);
title('原输入图像');
axis square;

%生成含高斯噪声图像并显示
pp=0.05;
image_gaosi_noise=imnoise(image_original,'gaussian',0,pp);
subplot(2,4,2);
imshow(image_gaosi_noise);
title('添加高斯噪声后图像');
axis square;

%生成含椒盐噪声图像并显示
d=0.05;
image_saltpepper_noise=imnoise(image_original,'salt & pepper',d);
subplot(2,4,3);
imshow(image_saltpepper_noise);
title('添加椒盐噪声后图像');
axis square;

%生成含乘性噪声图像并显示
var=0.05;
image_speckle_noise=imnoise(image_original,'speckle',var);
subplot(2,4,4);
imshow(image_speckle_noise);
title('添加乘性噪声后图像');
axis square;

%原图像直方图
r=0:255;  
bb=image_original(:); 
pg=hist(bb,r);  
pgr1=pg/length(bb);  
subplot(245);bar(pgr1);title('源输入图像的直方图');

r=0:255;  
bl=image_gaosi_noise(:); 
pg=hist(bl,r);  
pgr2=pg/length(bl);  
subplot(246);bar(pgr2);title('高斯噪声污染后的直方图');

r=0:255;  
bh=image_saltpepper_noise(:); 
pu=hist(bh,r);  
pgr3=pu/length(bh);  
subplot(247);bar(pgr3);title('椒盐噪声污染后的直方图');

r=0:255;  
ba=image_speckle_noise(:); 
pa=hist(ba,r);  
pgr4=pa/length(ba);  
subplot(248);bar(pgr4);title('乘性噪声污染后直方图');</span>

三,椒盐噪声去除能力对比

1,三大去噪效果

三幅图椒盐噪声浓度分别是0.01 0.03,0.05(比如第一副图均是加入0.01的椒盐噪声去噪对比)



2,实现代码

<span style="font-size:12px;"></span><pre name="code" class="cpp">%读入原始图像并显示
image_original=imread('dog.bmp');
figure(1)
subplot(2,4,1);
imshow(image_original);
title('原输入图像');
axis square;

%生成含高斯噪声图像并显示
%pp=0.05;
%image_gaosi_noise=imnoise(image_original,'gaussian',0,pp);

%生成含椒盐噪声图像并显示
dd=0.05;
image_saltpepper_noise=imnoise(image_original,'salt & pepper',dd);

%生成含乘性噪声图像并显示
%var=0.05;
%image_speckle_noise=imnoise(image_original,'speckle',var);


image_saltpepper_noise_after1=medfilt2(image_saltpepper_noise,[3,3]);
subplot(2,4,2);
imshow(image_saltpepper_noise_after1);title('中值滤波去椒盐噪声效果图');
axis square;

h_gaosi1=fspecial('gaussian',3,1);
image_saltpepper_noise_after2=imfilter(image_saltpepper_noise,h_gaosi1);
subplot(2,4,3);
imshow(image_saltpepper_noise_after2);title('高斯平滑去椒盐噪声效果');
axis square;

image_saltpepper_noise_after3=wiener2(image_saltpepper_noise,[5 5]);
subplot(2,4,4);
imshow(image_saltpepper_noise_after3);title('维纳滤波去椒盐噪声效果');
axis square;


%原图像直方图
r=0:255;  
bb=image_original(:); 
pg=hist(bb,r);  
pgr1=pg/length(bb);  
subplot(245);bar(pgr1);title('源输入图像的直方图');

r=0:255;  
bl=image_saltpepper_noise_after1(:); 
pg=hist(bl,r);  
pgr2=pg/length(bl);  
subplot(246);bar(pgr2);title('中值滤波去椒盐噪声后的直方图');

r=0:255;  
bh=image_saltpepper_noise_after2(:); 
pu=hist(bh,r);  
pgr3=pu/length(bh);  
subplot(247);bar(pgr3);title('高斯平滑去椒盐噪声后的直方图');

r=0:255;  
ba=image_saltpepper_noise_after3(:); 
pa=hist(ba,r);  
pgr4=pa/length(ba);  
subplot(248);bar(pgr4);title('维纳滤波去除椒盐噪声后的直方图');


四,高斯噪声去除能力对比

1,去噪效果对比

2,实验代码

<span style="font-size:12px;"></span><pre name="code" class="cpp">%读入原始图像并显示
image_original=imread('dog.bmp');
figure(1)
subplot(2,4,1);
imshow(image_original);
title('原输入图像');
axis square;

%生成含高斯噪声图像并显示
pp=0.05;
image_gaosi_noise=imnoise(image_original,'gaussian',0,pp);

%生成含椒盐噪声图像并显示
%dd=0.01;
%image_saltpepper_noise=imnoise(image_original,'salt & pepper',dd);

%生成含乘性噪声图像并显示
%var=0.05;
%image_speckle_noise=imnoise(image_original,'speckle',var);


image_gaosi_noise_after1=medfilt2(image_gaosi_noise,[3,3]);
subplot(2,4,2);
imshow(image_gaosi_noise_after1);title('中值滤波去高斯噪声效果图');
axis square;

h_gaosi1=fspecial('gaussian',3,1);
image_gaosi_noise_after2=imfilter(image_gaosi_noise,h_gaosi1);
subplot(2,4,3);
imshow(image_gaosi_noise_after2);title('高斯平滑去高斯噪声效果');
axis square;

image_gaosi_noise_after3=wiener2(image_gaosi_noise,[5 5]);
subplot(2,4,4);
imshow(image_gaosi_noise_after3);title('维纳滤波去高斯噪声效果');
axis square;


%原图像直方图
r=0:255;  
bb=image_original(:); 
pg=hist(bb,r);  
pgr1=pg/length(bb);  
subplot(245);bar(pgr1);title('源输入图像的直方图');

r=0:255;  
bl=image_gaosi_noise_after1(:); 
pg=hist(bl,r);  
pgr2=pg/length(bl);  
subplot(246);bar(pgr2);title('中值滤波去高斯噪声后的直方图');

r=0:255;  
bh=image_gaosi_noise_after2(:); 
pu=hist(bh,r);  
pgr3=pu/length(bh);  
subplot(247);bar(pgr3);title('高斯平滑去高斯噪声后的直方图');

r=0:255;  
ba=image_gaosi_noise_after3(:); 
pa=hist(ba,r);  
pgr4=pa/length(ba);  
subplot(248);bar(pgr4);title('维纳滤波去除高斯噪声后的直方图');


五,乘性噪声去除能力对比

1,去噪效果对比

2,实验代码

<span style="font-size:12px;">%读入原始图像并显示
image_original=imread('dog.bmp');
figure(1)
subplot(2,4,1);
imshow(image_original);
title('原输入图像');
axis square;

%生成含高斯噪声图像并显示
%pp=0.01;
%image_gaosi_noise=imnoise(image_original,'gaussian',0,pp);

%生成含椒盐噪声图像并显示
%dd=0.01;
%image_saltpepper_noise=imnoise(image_original,'salt & pepper',dd);

%生成含乘性噪声图像并显示
var=0.01;
image_speckle_noise=imnoise(image_original,'speckle',var);


image_speckle_noise_after1=medfilt2(image_speckle_noise,[3,3]);
subplot(2,4,2);
imshow(image_speckle_noise_after1);title('中值滤波去乘性噪声效果图');
axis square;

h_gaosi1=fspecial('gaussian',3,1);
image_speckle_noise_after2=imfilter(image_speckle_noise,h_gaosi1);
subplot(2,4,3);
imshow(image_speckle_noise_after2);title('高斯平滑去乘性噪声效果');
axis square;

image_speckle_noise_after3=wiener2(image_speckle_noise,[5 5]);
subplot(2,4,4);
imshow(image_speckle_noise_after3);title('维纳滤波去乘性噪声效果');
axis square;


%原图像直方图
r=0:255;  
bb=image_original(:); 
pg=hist(bb,r);  
pgr1=pg/length(bb);  
subplot(245);bar(pgr1);title('源输入图像的直方图');

r=0:255;  
bl=image_speckle_noise_after1(:); 
pg=hist(bl,r);  
pgr2=pg/length(bl);  
subplot(246);bar(pgr2);title('中值滤波去乘性噪声后的直方图');

r=0:255;  
bh=image_speckle_noise_after2(:); 
pu=hist(bh,r);  
pgr3=pu/length(bh);  
subplot(247);bar(pgr3);title('高斯平滑去乘性噪声后的直方图');

r=0:255;  
ba=image_speckle_noise_after3(:); 
pa=hist(ba,r);  
pgr4=pa/length(ba);  
subplot(248);bar(pgr4);title('维纳滤波去除乘性噪声后的直方图');</span>

六,PNSR客观对比

(PNSR客观对比越高越好)

本对比也囊括了其他常见去噪方式的对比





参考资源

【1】《百度百科》

【2】《维基百科》

【3】冈萨雷斯《数字图像处理》

【4】http://blog.csdn.net/ebowtang/article/details/38960271

版权声明:本文为EbowTang原创文章,后续可能继续更新本文。如果转载,请务必复制本文末尾的信息!

【Matlab学习笔记】【图像滤波去噪】中值滤波

中值滤波程序: clc; clear all; J=imread('F:\图像去噪\4.jpg'); I=rgb2gray(J); subplot(1,2,1); imshow(I); title('...
  • u013035197
  • u013035197
  • 2015年05月13日 09:01
  • 3981

七种滤波方法的matlab实现和测试

创建两个混合信号,便于更好测试滤波器效果。同时用七中滤波方法测试。 混合信号Mix_Signal_1 = 信号Signal_Original_1+白噪声。 混合信号Mix_Signal_2 ...
  • colapin
  • colapin
  • 2016年10月17日 17:09
  • 26804

7种图像降噪matlab实现

  • 2010年01月12日 16:21
  • 923KB
  • 下载

数字图像处理,Lee滤波的C++ 实现

matlab代码 %Lee filter for speckle noise reduction %Authors : Jeny Rajan, Chandrashekar P.S %Usage - l...
  • EbowTang
  • EbowTang
  • 2014年11月11日 17:44
  • 2025

几种典型的图像去噪算法总结

(一)高斯低通滤波去噪         高斯低通滤波器(Gaussian Low Pass Filter)是一类传递函数为高斯函数的线性平滑滤波器。又由于高斯函数是正态分布的密度函数。因此高斯低通滤波...
  • suseyaoyao
  • suseyaoyao
  • 2013年09月20日 16:27
  • 18609

滤波去噪和小波去噪

原文:http://zhidao.baidu.com/linkurl=7vqgj2oQ4MacZxGLdJXM_lTCDdW3TrY6hbeInWeW7NWgcCFjO8qHbbm0U8lONrAan...
  • hhw999
  • hhw999
  • 2016年08月07日 21:19
  • 1550

音频噪声抑制(2):维纳(Wiener)滤波器篇

噪声抑制的系列文章。利用维纳滤波器实现噪声抑制。
  • qcyfred
  • qcyfred
  • 2016年12月03日 20:07
  • 2726

各种滤波算法的比较

原文地址:http://www.wtoutiao.com/p/1fe9dPI.html  各种滤波算法的比较 数字滤波(digital filtering):数...
  • wangweijjj
  • wangweijjj
  • 2016年06月20日 15:42
  • 11769

【数字信号处理】十大经典软件滤波算法

1、限幅滤波法(又称程序判断滤波法)     A、方法:        根据经验判断,确定两次采样允许的最大偏差值(设为A)        每次检测到新值时判断:        如果本次值与上...
  • LG1259156776
  • LG1259156776
  • 2016年07月22日 09:20
  • 4972

几种经典的滤波算法

1、限幅滤波法(又称程序判断滤波法)     A、方法:         根据经验判断,确定两次采样允许的最大偏差值(设为A)         每次检测到新值时判断:         如果本次...
  • chenbang110
  • chenbang110
  • 2012年06月05日 11:02
  • 746
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数字图像处理,经典滤波算法去噪对比实验(Matlab实现)
举报原因:
原因补充:

(最多只允许输入30个字)