数字图像处理之图像复原.docx

上传人:b****2 文档编号:2178456 上传时间:2022-10-27 格式:DOCX 页数:17 大小:1.33MB
下载 相关 举报
数字图像处理之图像复原.docx_第1页
第1页 / 共17页
数字图像处理之图像复原.docx_第2页
第2页 / 共17页
数字图像处理之图像复原.docx_第3页
第3页 / 共17页
数字图像处理之图像复原.docx_第4页
第4页 / 共17页
数字图像处理之图像复原.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数字图像处理之图像复原.docx

《数字图像处理之图像复原.docx》由会员分享,可在线阅读,更多相关《数字图像处理之图像复原.docx(17页珍藏版)》请在冰豆网上搜索。

数字图像处理之图像复原.docx

数字图像处理之图像复原

实验五、图象复原

一、实验目的

1.了解图象退化的几种原因;

2.掌握对相应退化原因的复原方法。

二、实验内容

1.使用函数fspecial()和imfilter()模拟产生退化图象;

2.对于不同的噪声引起图像的退化,采用不同的滤波方法复原图象。

3.学会使用维纳滤波器deconvwnr()函数对图像进行复原的方法。

三、实验步骤

1.加性噪声退化图象

用imnoise()函数给图象加噪声,如增加高斯白噪声。

使用平滑滤波器对其进行滤波,可达到复原图像的效果

x=imread(‘cameraman.tif’);

x=imnoise(x,’gaussian’)

imshow(x)

h=fspecial(‘average’)

y=imfilter(x,h);

figure

imshow(y)

2、周期噪声退化图像

对于周期噪声可以通过频域滤波来减弱或消除,实现复原图像。

实验五文件夹中有被正弦周期噪声污染退化的图像'pout_g_64.bmp',使用理想带阻滤波器对其频域滤波,复原图像。

(1)pout_g_64.bmp图像及其傅立叶谱见下图。

 

(2)构造理想带阻滤波器

closeall

x=imread('pout_g_64.bmp');

xm=size(x,1);xn=size(x,2);

M2=floor(xm/2);N2=floor(xn/2);

u=-M2:

1:

M2-1;v=-N2:

1:

N2-1;

[U,V]=meshgrid(u,v);

D=sqrt(U.^2+V.^2);

D0=64;W=4;

H=double(D<(D0-W/2)|D>(D0+W/2));

figure

Mesh(U,V,H);

title('D0=64,W=4,理想带阻滤波器')

思考:

使用上述理想带阻滤波器对’pout_g_64.bmp’图像进行频域滤波,得到复原图像,结果类似下图。

closeall

x=imread('pout_g_64.bmp');

xm=size(x,1);xn=size(x,2);

M2=floor(xm/2);N2=floor(xn/2);

u=-M2:

1:

M2-1;v=-N2:

1:

N2-1;

[U,V]=meshgrid(u,v);

D=sqrt(U.^2+V.^2);

D0=64;W=4;

H=double(D<(D0-W/2)|D>(D0+W/2));

F=fft2(x);

f=fftshiFt(F);

G=f.*H;

subplot(121)

imshow(real(G));

title('频域滤波')

GG=fftshift(G);

I=ifft2(GG);

subplot(122)

imshow(uint8(I))

title('复原后图像')

 

3、运动模糊退化图像

给图像添加运动模糊,使用deconvwnr()维纳滤波器进行图像复原。

closeall

I=imread('cameraman.tif');

imshow(I)

title('originalimage')

len=31;

theta=10;

PSF=fspecial('motion',len,theta);%len模糊长度,theta运动角度

Iblurred=imfilter(I,PSF,'circular','conv');%对图像进行运动模糊

figure

imshow(Iblurred)

title('blurredimage')

Irestored=deconvwnr(Iblurred,PSF);%使用维纳滤波器复原图像

figure

imshow(Irestored)

title('retoredimage')

思考:

修改deconvwnr()函数的参数PSF,使len和theta分别为原来的2倍,观察结果,体会真实PSF在图像复原中的重要性。

PSF1=fspecial('motion',2*len,theta),PSF2=fspecial('motion',len,2*theta)

closeall

I=imread('cameraman.tif');

len=31;

theta=10;

PSF=fspecial('motion',len,theta);%len模糊长度,theta运动角度

Iblurred=imfilter(I,PSF,'circular','conv');%对图像进行运动模糊

PSF1=fspecial('motion',2*len,theta);%len模糊长度,theta运动角度

PSF2=fspecial('motion',len,2*theta)

Irestored=deconvwnr(Iblurred,PSF1);%使用维纳滤波器复原图像

subplot(1,2,1)

imshow(Irestored)

title(',2*lenretoredimage')

Irestored=deconvwnr(Iblurred,PSF2);%使用维纳滤波器复原图像

subplot(1,2,2)

imshow(Irestored)

title('2*thetaretoredimage

4、模拟模糊和噪声:

模拟实时图像可能出现的模糊(即由于摄像头运动或者缺乏聚集而产生的模糊)和噪声(即随机分布噪声)。

使用维纳滤波器复原图像,即使用deconvwnr()函数复原。

(1)只使用点扩散函数PSF参数复原图像。

deconvwnr(BlurredNoisy,PSF)

%---------使用高斯模板模糊图像------------------

closeall

I=imread('cameraman.tif');

figure

imshow(I)

title('originalimage')

PSF=fspecial('gaussian',11,5);

blurredI=imfilter(I,PSF);%模糊图像

figure

imshow(blurredI)

title('blurredimage')

%-----------产生噪声,并加噪声到已模糊的图像----------------

%----------使用randn()函数产生随机数据------------------

noise=0.2*randn(size(I));%同图像大小一致

blurredInoisy=imadd(blurredI,im2uint8(noise));%噪声添加到图像

figure

imshow(blurredInoisy)

title('blurred&noiseimage')

%----------------------使用维纳滤波复原图像---------------

wnrI1=deconvwnr(blurredInoisy,PSF);%噪声被放大了

figure

imshow(wnrI1)

title('restoredwithPSF')

(2)使用信噪比NSR参数复原图像。

deconvwnr(BlurredNoisy,PSF,NSR)

I是输入图像,noise是randn()函数产生的随机噪声,下面的公式用于计算信噪比:

NSR=sum(noise(:

).^2)/sum(im2double(I(:

)).^2);%计算信噪比

思考:

使用deconvwnr(BlurredNoisy,PSF,NSR)维纳滤波器对上述被模糊和噪声退化的图像进行复原。

结果类似下图。

closeall

I=imread('cameraman.tif');

subplot(2,2,1)

imshow(I)

title('originalimage')

PSF=fspecial('gaussian',11,5);

blurredI=imfilter(I,PSF);%模糊图像

subplot(2,2,2)

imshow(blurredI)

title('blurredimage')

%-----------产生噪声,并加噪声到已模糊的图像----------------

%----------使用randn()函数产生随机数据¬------------------

noise=0.2*randn(size(I));%同图像大小一致

blurredInoisy=imadd(blurredI,im2uint8(noise));%噪声添加到图像

subplot(2,2,3)

imshow(blurredInoisy)

title('blurred&noiseimage')

%----------------------使用维纳滤波复原图像---------------

NSR=sum(noise(:

).^2)/sum(im2double(I(:

)).^2)

wnrI1=deconvwnr(blurredInoisy,PSF,NSR);%噪声被放大了

subplot(2,2,4)

imshow(wnrI1)

title('restoredwithPSF&NSR')

(3)使用自相关函数改善图像复原的效果。

deconvwnr(BlurredNoisy,PSF,NCORR,ICORR)

NCORR:

噪声的自相关函数

NP=abs(fft2(noise)).^2;%噪声的功率谱

NCORR=fftshift(real(ifft2(NP)));%噪声的自相关函数

ICORR:

图像自相关函数

IP=abs(fft2(im2double(I))).^2;%图像的功率谱

ICORR=fftshift(real(ifft2(IP)));%图像的自相关函数

思考:

使用deconvwnr(BlurredNoisy,PSF,NCORR,ICORR)维纳滤波器对上述被模糊和噪声退化的图像进行复原。

结果类似下图。

closeall

I=imread('cameraman.tif');

subplot(2,2,1)

imshow(I)

title('originalimage')

PSF=fspecial('gaussian',11,5);

blurredI=imfilter(I,PSF);%模糊图像

subplot(2,2,2)

imshow(blurredI)

title('blurredimage')

%-----------产生噪声,并加噪声到已模糊的图像----------------

%----------使用randn()函数产生随机数据¬------------------

noise=0.2*randn(size(I));%同图像大小一致

blurredInoisy=imadd(blurredI,im2uint8(noise));%噪声添加到图像

subplot(2,2,3)

imshow(blurredInoisy)

title('blurred&noiseimage')

%----------------------使用维纳滤波复原图像---------------

NP=abs(fft2(noise)).^2;%噪声的功率谱

NCORR=fftshift(real(ifft2(NP)));%噪声的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文学研究

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1