图像复原MATLAB实现

Posted henuliulei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像复原MATLAB实现相关的知识,希望对你有一定的参考价值。

前言:本篇博客先介绍滤波器滤除噪声,再介绍滤波器复原,侧重于程序的实现。

一:三种常见的噪声

技术图片

 

技术图片

技术图片

 

 二:空间域滤波

空间域滤波复原是在已知噪声模型的基础上,对噪声的空间域进行滤波。
空间域滤波复原方法主要包括:

  均值滤波器

    算术均值滤波器

    几何均值滤波器
    谐波均值滤波器
    逆谐波均值滤波器
  顺序统计滤波器
    中值滤波器
    最大值/最小值滤波器

2.1算数均值滤波器

技术图片

1 img=imread(D:/picture/ZiXia.jpg);
2 img=rgb2gray(img);
3 figure,imshow(img);//原图
4 img_noise=double(imnoise(img,gaussian,0.06));
5 figure,imshow(img_noise,[]);//含有高斯噪声的图
6 img_mean=imfilter(img_noise,fspecial(average,3));//滤波后的图
7 figure;imshow(img_mean,[]);

技术图片

2.2几何均值滤波器

技术图片

1 img=imread(‘cameraman.tif‘);
2 img=rgb2gray(img);
3 figure,imshow(img);
4 img_noise=double(imnoise(img,gaussian,0.06));
5 figure,imshow(img_noise,[]);
6 img_mean=exp(imfilter(log(img_noise+1),fspecial(average,3)));
7 figure;imshow(img_mean,[]);

 

 技术图片

 2.3谐波均值滤波器

技术图片

2.4逆谐波均值滤波器

 技术图片

技术图片

采用逆谐波均值滤波器对附加胡椒噪声图像进行滤波的matlab程序如下:

1 img=imread(cameraman.tif);  figure,imshow(img);
2 [M,N]=size(img);R=imnoise2(salt & pepper,M,N,0.1,0);
3 img_noise=img;img_noise(R==0)=0;
4 img_noise=double(img_noise); figure,imshow(img_noise,[]);
5 Q=1.5;
6 img_mean=imfilter(img_noise.^(Q+1),fspecial(average,3))./imfilter(img_noise.^Q,fspecial(average,3));
7 figure;imshow(img_mean,[]);

技术图片

采用逆谐波均值滤波器对附加盐噪声图像进行滤波的matlab程序如下:

1 img=imread(csboard.tif);figure,imshow(img);
2 [M,N]=size(img);R=imnoise2(salt & pepper,M,N,0,0.1);
3 img_noise=img;img_noise(R==1)=255;
4 img_noise=double(img_noise); figure,imshow(img_noise,[]);
5 Q=-1.5;
6 img_mean=imfilter(img_noise.^(Q+1),fspecial(average,3))./imfilter(img_noise.^Q,fspecial(average,3));
7 figure;imshow(img_mean,[]);

技术图片

 2.5中值滤波器

技术图片

技术图片

技术图片

 

 

1 img=imread(cameraman.tif);
2 img_noise=double(imnoise(img,salt & pepper,0.06));
3 img_mean=imfilter(img_noise,fspecial(average,5));
4 img_median=medfilt2(img_noise);%一次中值滤波
5 img_median2=medfilt2(img_median);%二次中值滤波

技术图片

2.6最大值,最小值滤波器

技术图片

 

 技术图片

技术图片

利用最大值滤波器消除胡椒噪声污染图像的matlab程序如下。

1 img=imread(csboard.tif);
2 [M,N]=size(img);
3 R=imnoise2(salt & pepper,M,N,0.1,0);
4 img_noise=img;
5 img_noise(R==0)=0;
6 img_noise=double(img_noise);
7 imwrite(uint8(img_noise),csbord_pepper.jpg);
8 img_max=imdilate(img_noise,ones(3,3));
9 imwrite(uint8(img_max),cameraman_saltpepper_max.jpg);

技术图片

利用最小值滤波器消除盐噪声污染图像的matlab程序如下。

1 img=imread(csboard.tif);
2 [M,N]=size(img);
3 R=imnoise2(salt & pepper,M,N,0,0.1);
4 img_noise=img;
5 img_noise(R==1)=255;
6 img_noise=double(img_noise);
7 imwrite(uint8(img_noise),csbord_salt.jpg);
8 img_min=imerode(img_noise,ones(3,3));
9 imwrite(uint8(img_min),cameraman_saltpepper_min.jpg);

技术图片

 

以上是关于图像复原MATLAB实现的主要内容,如果未能解决你的问题,请参考以下文章

图像修复基于维纳滤波实现图像复原matlab源码含GUI

基于matlab的退化图像复原------逆滤波复原

求基于BP神经网络的图像复原算法的matlab代码

基于matlab的退化图像复原------维纳滤波复原

基于Matlab实现退化图像的逆滤波处理

matlab置乱图像复原