北京航空航天大学数字图像处理实验报告.docx
《北京航空航天大学数字图像处理实验报告.docx》由会员分享,可在线阅读,更多相关《北京航空航天大学数字图像处理实验报告.docx(31页珍藏版)》请在冰豆网上搜索。
北京航空航天大学数字图像处理实验报告
成绩
数字图像处理
实验报告
院(系)名称
电子信息工程学院
专业名称
通信工程
学生学号
学生姓名
2017年5月
实验一图像变换实验
1.实验目的:
学会对图像进行傅立叶等变换,在频谱上对图像进行分析,增进对图像频域上的感性认识,并用图像变换进行压缩。
2.实验内容:
对Lena或cameraman图像进行傅立叶、离散余弦、哈达玛变换。
在频域,对比他们的变换后系数矩阵的频谱情况,进一步,通过逆变换观察不同变换下的图像重建质量情况。
3.实验要求
实验采用获取的图像,为灰度图像,该图像每象素由8比特表示。
具体要求如下:
(1)对图像进行傅立叶变换、获得变换后的系数矩阵;
(2)将傅立叶变换后系数矩阵的频谱用图像输出,观察频谱;
(3)通过设定门限,将系数矩阵中95%的(小值)系数置为0,对图像进行反变换,获得逆变换后图像;
(4)观察逆变换后图像质量,并比较原始图像与逆变后的峰值信噪比(PSNR)。
(5)对输入图像进行离散余弦、哈达玛变换,重复步骤1-5;
(6)比较三种变换的频谱情况、以及逆变换后图像的质量(PSNR)。
4.实验结果
图1.1傅里叶变换及逆变换
图1.2离散余弦变换及逆变换
图1.3哈达玛变换及逆变换
观察结果可以发现,将系数矩阵中95%的(小值)系数置为0,对图像进行反变换之后获得逆变换的图像质量有所下降,信噪比提高。
但是图像质量的下降在可以接受的范围内,并且过程中实现了对于图像的压缩。
通过对于信噪比的比较可以发现:
离散余弦变换的效果最好,傅里叶变换的效果最差。
5.实验代码:
*******************************傅里叶变换****************************
functionFourier_Callback(hObject,eventdata,handles)
%-------------------------显示原图像---------------------------------
figure=imread('lena512.bmp');
subplot(1,3,1);
imshow(figure);
title('Lena原图');
%-----------------------傅里叶变换频谱图------------------------------
fourier=fft2(figure);
fourier=fftshift(fourier);
R=real(fourier);
I=imag(fourier);
spectrum=abs(fourier);
spectrum_norm=(spectrum-min(min(spectrum)))/(max(max(spectrum))-min(min(spectrum)))*255;
subplot(1,3,2);
imshow(spectrum_norm);
title('傅里叶变换频谱图');
%-----------------------傅里叶逆变换----------------------------------
[height,width]=size(spectrum);
spectrum_adjust=sort(reshape(spectrum,[1,height*width]));
threshold=spectrum_adjust(round(0.95*height*width));
fori=1:
height
forj=1:
width
ifspectrum(i,j)<=threshold
R(i,j)=0;
I(i,j)=0;
end
end
end
refigure=ifft2(ifftshift(R+1i*I));
subplot(1,3,3);
imshow(uint8(refigure));
title('逆变换图像');
%--------------------------PSNR-------------------------------------
PSNR=PSNR_cal(figure,refigure,8);
set(handles.edit2,'string',PSNR);
*******************************离散余弦变换****************************
functiondct_Callback(hObject,eventdata,handles)
%-------------------------显示原图像---------------------------------
figure=imread('lena512.bmp');
subplot(1,3,1);
imshow(figure);
title('Lena原图');
%----------------------离散余弦变换频谱图------------------------------
DCT=dct2(figure);
subplot(1,3,2);
imshow(uint8(abs(DCT)));
title('离散余弦变换频谱图');
%-----------------------离散余弦逆变换--------------------------------
Size=size(DCT);
height=Size
(1);
width=Size
(2);
DCT_sort=sort(reshape(DCT,1,width*height));
threhold=DCT_sort(round(width*height*0.95));
DCT(abs(DCT)refigure=idct2(DCT);
subplot(1,3,3);
imshow(uint8(refigure));
title('逆变换图像');
%--------------------------PSNR-------------------------------------
PSNR=PSNR_cal(figure,refigure,8);
set(handles.edit2,'string',PSNR);
*******************************哈达玛变换****************************
functionHadamard_Callback(hObject,eventdata,handles)
%-------------------------显示原图像---------------------------------
figure=imread('lena512.bmp');
subplot(1,3,1);
imshow(figure);
title('Lena原图');
%-----------------------哈达玛变换频谱图------------------------------
H=hadamard(512);
figure=double(figure);
DHT=(H*figure*H)./512;
subplot(1,3,2);
imshow(uint8(DHT));
title('哈达玛变换频谱图');
%-----------------------哈达玛逆变换----------------------------------
Size=size(figure);
height=Size
(1);
width=Size
(2);
DHT_sort=sort(reshape(DHT,1,width*height));
threhold=DHT_sort(round(width*height*0.95));
DHT(abs(DHT)iH=H^-1;
refigure=(iH*DHT*iH)*512;
subplot(1,3,3);
imshow(uint8(refigure));
title('逆变换图像');
%--------------------------PSNR-------------------------------------
PSNR=PSNR_cal(figure,refigure,8);
set(handles.edit2,'string',PSNR);
*******************************PSNR计算函数****************************
function[PSNR]=PSNR_cal(figure1,figure2,bit)
img=double(figure2);
imgn=double(figure1);
Size=size(figure1);
height=Size
(1);
width=Size
(2);
MAX=2^bit-1;
PMSE=sum(sum((img-imgn).^2))/(height*width)/MAX^2;
PSNR=-10*log10(PMSE);
end
实验二图像复原实验
1.实验目的:
利用反向滤波与维纳滤波进行降质图像复原,比较不同参数选择对复原结果的影响。
2.实验内容:
(1)利用反向滤波方法进行图像复原;
(2)利用维纳滤波方法进行图像复原。
3.实验要求:
(1)输入图像采用实验1所获取的图像,对输入图像采用运动降质模型,如下式所示
与降值图像相关的参数是:
;
(2)对每一种方法通过计算复原出来的图像的峰值信噪比,进行最优参数的选择,包括反向滤波方法中进行复原的区域半径、维纳方法中的噪声对信号的频谱密度比值K;
(3)将降质图像与利用最优参数恢复后的图像同时显示出来,以便比较。
4.实验结果:
图2.1反向滤波
图2.2维纳滤波
反向滤波方法中进行复原的区域半径越大,复原效果越好,当=1时,能够完全复原降质图像;维纳滤波方法中的噪声对信号的频谱密度比值K值越小,复原效果越好,当K=0时,能够完全复原降质图像。
5.实验代码:
*******************************降质模型****************************
lena=imread('lena512.bmp');
subplot(2,3,1);
imshow(lena);
title('Lena原图');
[x,y]=size(lena);
fftlena=fft2(lena);
H1=zeros(x,y);
j=sqrt(-1);
foruu=1:
x;
forvv=1:
y;
u=-x/2+uu-1;
v=-y/2+vv-1;
H1(uu,vv)=5/(pi*(u+v))*sin(pi*(u+v))*exp(-pi*j*(u+v));
end
end
nnn=isnan(H1);
foruu=1:
x;
forvv=1:
y;
ifnnn(uu,vv)==1;
u=-x/2+uu-1;
v=-y/2+vv-1;
H1(uu,vv)=T/(pi*(a*u+b*v+0.001))*sin(pi*(a*u+b*v+0.001))*exp(-pi*j*(a*u+b*v+0.001));
end
end
end
Q0=fftlena.*H1