数字图像处理实验报告.docx
《数字图像处理实验报告.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验报告.docx(19页珍藏版)》请在冰豆网上搜索。
![数字图像处理实验报告.docx](https://file1.bdocx.com/fileroot1/2023-1/6/8bdacea2-0974-4f43-940f-f8a2e2652184/8bdacea2-0974-4f43-940f-f8a2e26521841.gif)
数字图像处理实验报告
[键入公司名称]
数字图像处理实验报告
班级:
姓名:
学号:
目录
实验一:
matlab数字图像处理初步3
一.实验目的3
二.实验内容3
三.实验步骤3
实验二:
图像的傅立叶变换8
一.实验目的8
二.实验原理8
三.实验内容8
四.实验步骤8
实验三:
数字图像的频域滤波10
一.实验目的10
二.实验原理10
三.实验内容11
四.实验步骤12
实验四:
图象旋转15
一.实验目的15
二.实验原理15
三.实验内容15
四.实验步骤15
实验五:
图象压缩17
一.实验目的17
二.实验内容17
二.实验步骤17
实验一:
matlab数字图像处理初步
一.实验目的
1、学习在matlab环境下对图像文件的I/O操作,为读取各种格式的图像文件和后续进行图像处理打下基础
2、熟悉matlab操作环境
3、熟悉matlab的一些指令语句
二.实验内容
利用matlab为用户提供的专门函数从图像格式的文件中读/写图像数据、显示图像,以及查询图像文件的信息
三.实验步骤
1、利用imshow显示MATLAB自带的图像
在控制台输入
>>I=imread('H:
\a.bmp');
>>imshow(I)
弹出窗口显示图像
2、用(imfinfo)功能得到图像的相关信息;
>>info=imfinfo('autumn.tif');
>>info
结果为
Filename:
Filename:
'D:
\MATLAB7\toolbox\images\imdemos\autumn.tif'
FileModDate:
'04-Dec-200021:
57:
54'
FileSize:
213642
Format:
'tif'
FormatVersion:
[]
Width:
345
Height:
206
BitDepth:
24
ColorType:
'truecolor'
FormatSignature:
[7373420]
ByteOrder:
'little-endian'
NewSubfileType:
0
BitsPerSample:
[888]
Compression:
'Uncompressed'
PhotometricInterpretation:
'RGB'
StripOffsets:
[30x1double]
SamplesPerPixel:
3
RowsPerStrip:
7
StripByteCounts:
[30x1double]
XResolution:
72
YResolution:
72
ResolutionUnit:
'Inch'
Colormap:
[]
PlanarConfiguration:
'Chunky'
TileWidth:
[]
TileLength:
[]
TileOffsets:
[]
TileByteCounts:
[]
Orientation:
1
FillOrder:
1
GrayResponseUnit:
0.0100
MaxSampleValue:
[255255255]
MinSampleValue:
0
Thresholding:
1
3、利用显示颜色条功能(colorbar)在图像的左边画一条颜色亮度显示条
>>colorbar(I)
显示结果为
4、读取一幅RGB彩色图像,将其转换为灰度图像,并在同一窗口显示原图
>>RGB=imread('autumn.tif');[m,n,p]=size(RGB);%矩阵大小
>>I=rgb2gray(RGB);%真彩色图像转换为灰度图像
>>I1=im2bw(I);%灰色图像二值画
>>I2=~I1;%对二值图像取反
>>subplot(1,2,1),imshow(RGB);
>>subplot(1,2,2),imshow(I);
>>figure%新建个图形窗口
>>subplot(1,3,1),imshow(I);
>>subplot(1,3,2),imshow(I1);
>>subplot(1,3,3),imshow(I2);
结果为:
实验二:
图像的傅立叶变换
一.实验目的
1、理解离散傅立叶变换的基本原理
2、掌握应用MATLAB语言进行FFT及逆变换的方法
二.实验原理
Matlab函数fft、fft2和fftn分别可以实现一维、二维和N维DFT算法;而函数ifft、ifft2和ifftn则用来计算反DFT。
这些函数的调用格式如下:
A=fft(X,N,DIM)
其中,X表示输入图像;N表示采样间隔点,如果X小于该数值,那么Matlab将会对X进行零填充,否则将进行截取,使之长度为N;DIM表示要进行离散傅立叶变换
A=fft2(X,MROWS,NCOLS)
其中,MROWS和NCOLS指定对X进行零填充后的X大小。
别可以实现一维、二维和N维DFT
A=fftn(X,SIZE)
其中,SIZE是一个向量,它们每一个元素都将指定X相应维进行零填充后的长度。
函数ifft、ifft2和ifftn的调用格式于对应的离散傅立叶变换函数一致。
别可以实现一维、二维和N维DFT
三.实验内容
1、读幅图像,对其进行快速傅立叶变换,分别显示其幅度图像和相位
图像。
仅对相位部分进行傅立叶反变换后查看结果图像
2、仅对幅度部分进行傅立叶反变换后查看结果图像
四.实验步骤
1、读取图像girl.bmp,显示这幅图像,对图像作傅立叶变换,显示频域振幅图像。
作傅立叶逆变换,显示图像,看是否与原图像相同。
A=imread('H:
\a.bmp','bmp');
subplot(1,3,1),imshow(A);title('原图像');
B=fftshift(fft2(double(A)));
subplot(1,3,2),imshow(log(abs(B)),[],'notruesize');title('二维傅立叶变换');
C=ifft2(B);
subplot(1,3,3),imshow(log(abs(C)),[],'notruesize');title('逆变换后图像');
实验三:
数字图像的频域滤波
一.实验目的
1、掌握图像滤波的基本定义及目的
2、理解空间域滤波的基本原理及方法
3、掌握进行图像的空域滤波的方法
4、掌握傅立叶变换及逆变换的基本原理方法
5、理解频域滤波的基本原理及方法
6、掌握进行图像的频域滤波的方法
二.实验原理
1.低通滤波
图像的能量大部分集中在幅度谱的低频和中频部分,而图像的边缘和噪声对应于高频部
分。
因此能降低高频成分幅度的滤波器就能减弱噪声的影响。
由卷积定理,在频域实现低通
滤波的数学表达式:
G(u,v)=H(u,v)F(u,v)
1)理想低通滤波器(ILPF)
2)巴特沃斯低通滤波器(BLPF)
3)指数型低通滤波器(ELPF)
2.高通滤波
由于图像中的细节部分与其高频分量相对应,所以高通滤波可以对图像进行锐化处理。
高通滤波与低通滤波相反,它是高频分量顺利通过,使低频分量受到削弱。
高通滤波器和低通滤波器相似,其转移函数分别为:
理想高通滤波器(IHPF)
巴特沃斯高通滤波器(BLPF)
指数型高通滤波器(ELPF)
图像经过高通滤波处理后,会丢失许多低频信息,所以图像的平滑区基本上会消失。
所
以,可以采用高频加强滤波来弥补。
高频加强滤波就是在设计滤波传递函数时,加上一
个大于0小于1的常数c,即:
H′(u,v)=H(u,v)+c
三.实验内容
1、平滑频域滤波
设计理想低通滤波器、和高斯低通滤波器,截至频率自选,分别给出各种滤波器的透视图
读出图像,分别采用理想低通滤波器和高斯低通滤波器对其进行滤波(截至频率自选),再做反变换,观察不同的截止频率下采用不同低通滤波器得到的图像与原图像的区别,特别注意振铃效应
2、锐化频域滤波
设计理想高通滤波器、巴特沃斯高通滤波器,截至频率自选,分别给出各种滤波器的透视图
读出图像,分别采用理想高通滤波器和高斯高通滤波器对其进行滤波(截至频率自选),再做反变换,观察不同的截止频率下采用不同高通滤波器得到的图像与原图像的区别
四.实验步骤
1、设计一个简单的理想低通滤波器(截止频率自选),对图像作频域低通滤波,再作反变换,观察不同的截止频率下反变换后的图像与原图像的区别。
A=imread('H:
\a.bmp','bmp');
subplot(3,2,1),imshow(A);title('原图像');
B=fftshift(fft2(A));
E=ifft2(B);
subplot(3,2,2),imshow(log(abs(E)),[],'notruesize');
title('未滤波的逆变换图像');
[X,MAP]=imread('H:
\a.bmp','bmp');
[m,n]=size(X);
H1=zeros(m,n);
H1(m/2:
m,n/2:
n)=1;
LOWPASS1=B.*H1;
C=ifft2(LOWPASS1);
subplot(3,2,3),imshow(log(abs(LOWPASS1)),[],'notruesize');
title('低通1');
subplot(3,2,4),imshow(log(abs(C)),[],'notruesize');
title('低通1逆变换图像');
H2=zeros(m,n);
H2(m/10:
m,n/10:
n)=1;
LOWPASS2=B.*H2;
D=ifft2(LOWPASS2);
subplot(3,2,5),imshow(log(abs(LOWPASS2)),[],'notruesize');
title('低通2');
subplot(3,2,6),imshow(log(abs(D)),[],'notruesize');
title('低通2逆变换图像');
2、设计一个简单的理想高通滤波器(截止频率自选),对图像作频域高通滤波,再作反变换,观察不同的截止频率下反变换后的图像与原图像的区别。
A=imread('H:
\a.bmp','bmp');
subplot(3,2,1),imshow(A);title('原图像');
B=fftshift(fft2(A));
E=ifft2(B);
subplot(3,2,2),imshow(log(abs(E)),[],'notruesize');title('未滤波的逆变换图像');
[X,MAP]=imread('H:
\a.bmp','bmp');
[m,n]=size(X);
H1=ones(m,n);
H1(m/3:
m*2/3,n/3:
n*2/3)=0;
LOWPASS1=B.*H1;
C=ifft2(LOWPASS1);
subplot(3,2,3),imshow(log(abs(LOWPASS1)),[],'notruesize');title('高通1');
subplot(3,2,4),imshow(log(abs(C)),[],'notruesize');title('高通1逆变换图像');
H2=ones(m,n);
H2(m*3/5:
m,n*3/5:
n)=0;
LOWPASS2=B.*H2;
D=ifft2(LOWPASS2);
subplot(3,2,5),imshow(log(abs(LOWPASS2)),[],'notruesize');title('高通2');
subplot(3,2,6),imshow(log(abs(D)),[],'notruesize');title('高通2逆变换图像');
结果为:
实验四:
图象旋转
一.实验目的
1、掌握图像翻转的基本原理
2、学会在matlab环境下旋转图像
3、进一步熟悉matlab的实验环境
二.实验原理
用imrotate函数旋转图像。
该函数有两个主要的参数,即要旋转的图像和旋转的角度。
旋转的角度单位是度数,如果指定一个正值,imrotate函数按逆时针方向旋转图像;如果旋转的角度指定为负值,imrotate函数按照顺时针方向旋转图像。
另外,imrotate函数还有一个可选变量,还可以给函数指定插值方法和图像大小
三.实验内容
读取一副图片,将其分别旋转不同的角度,并分别显示出来
四.实验步骤
在控制窗口输入:
I=imread('H:
\a.bmp','bmp');
J1=imrotate(I,90,'bilinear');
J2=imrotate(I,180,'bilinear');
J3=imrotate(I,270,'bilinear');
Subplot(2,2,1),imshow(I);
Subplot(2,2,2),imshow(J1);
Subplot(2,2,3),imshow(J2);
Subplot(2,2,4),imshow(J3);
实验结果为:
实验五:
图象压缩
一.实验目的
1、掌握图像压缩的基本原理
2、学会在matlab环境下压缩图像
3、进一步熟悉matlab的实验环境
二.实验内容
二.实验步骤
file_name='H:
\a.bmp';
H=imread(file_name);
H=double(H);
Grgb=0.2990*H(:
:
1)+0.5870*H(:
:
2)+0.1140*H(:
:
3);
NbColors=255;%对矩阵进行量化编码
G=wcodemat(Grgb,NbColors);
%gray线性的灰阶色调
map2=gray(NbColors);%建立图形窗口1
figure
(1);%建立图像G
image(G);%应用调色板
colormap(map2);title('原图像的灰度图');%显示workplace的变量的详细信息whos('G');%转换成为灰度级索引图像%dwt2单尺度二维离散小波变换[CA1,CH1,CV1,CD1]=dwt2(G,'bior3.7');%从分解系数中提取近似和细节%upcoef2二维系数的直接小波重构
A1=upcoef2('a',CA1,'bior3.7',1);
H1=upcoef2('h',CH1,'bior3.7',1);
V1=upcoef2('v',CV1,'bior3.7',1);
D1=upcoef2('d',CD1,'bior3.7',1);%第二幅图像%显示近似和细节
figure
(2);
colormap(map2);
subplot(2,2,1);%对矩阵进行量化编码
image(wcodemat(A1,192));
title('近似A1');
title('水平细节H1');
subplot(2,4,3);
image(wcodemat(V1,192));
title('垂直细节V1');
subplot(2,4,4);
image(wcodemat(D1,192));
title('对角细节D1');
subplot(2,4,5);
image(wcodemat(A2,192));
title('近似A2');
subplot(2,4,6);
image(wcodemat(H2,192));
title('水平细节H2');
subplot(2,4,7);
image(wcodemat(V2,192));
title('垂直细节V2');
subplot(2,4,8);
image(wcodemat(D2,192));
title('对角细节D2');%第四幅图像%从多尺度分解后的系数重构原始图像并显示结果
G0=waverec2(C,S,'bior3.7');%建立图形窗口4
figure(4);%建立图像G0
image(G0);%应用调色板
colormap(map2);%绘制调色板的内容
colorbar;
whos('G0')
file_name=('H:
\a.bmp');
H=imread(file_name);
H=double(H);
ca=0.2990*H(:
:
1)+0.5870*H(:
:
2)+0.1140*H(:
:
3);
NbColors=255;
G=wcodemat(ca,NbColors);
map2=gray(NbColors);
figure
(1);
image(G);
colormap(map2);
title('原图像的灰度图');
whos('G');%对图像进行多尺度二维小波分解
[c,s]=wavedec2(G,2,'bior3.7');
ca1=appcoef2(c,s,'bior3.7',1);
ch1=detcoef2('h',c,s,1);
cv1=detcoef2('v',c,s,1);
cd1=detcoef2('d',c,s,1);%对各频率进行小波重构
a1=wrcoef2('a',c,s,'bior3.7',1);
h1=wrcoef2('h',c,s,'bior3.7',1);
v1=wrcoef2('v',c,s,'bior3.7',1);
d1=wrcoef2('d',c,s,'bior3.7',1);
G1=[a1,h1;v1,d1];figure
(2);image(G1);colormap(map2);
axissquare;
title('分解后低频和高频信息')
whos('G1');
ca1=appcoef2(c,s,'bior3.7',1);
ca1=wcodemat(ca1,440,'mat',1);
ca2=0.6*ca1;
figure(3);
image(ca2);
colormap(map2);
title('低频压缩图像');
whos('ca2');
ca3=appcoef2(c,s,'bior3.7',2);
ca3=wcodemat(ca3,440,'mat',0);
ca4=0.5*ca3;
figure(4);
image(ca4);
title('二层分解后低频压缩图像');
colormap(map2);
whos('ca4');
结果为: