图像复原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实现的主要内容,如果未能解决你的问题,请参考以下文章