图像处理实验(研究生)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一:图像文件类型转换
实验目的:理解数字图像文件的几种根本类型
掌握在MATLAB中进行图象文件类型转换的方法
观察图象转换前后的效果
加深对图象文件类型的理解
熟悉图象格式、颜色系统间的转换
实验内容:1〕灰度图像与索引图像的相互转换
2〕RGB图像与索引图像的相互转换
3〕将图像转换为二值化图像
实验方法:利用MATLAB工具进行实验
实验前预习要求:
1〕理解灰度图像、索引图像、RGB图像、二值图像的概念
2〕明确区分以上四种图像的存储方式及其各自特点
3) 掌握imread、imshow、imwrite、colorbar等根本语句的应用
4〕预习gray2ind、ind2gray、rgb2ind、ind2rgb、im2bw等语句的使用方法
一、灰度图像到索引图像的转换
启动MATLAB,新建一个自己的工作文件夹〔如下列图中的“MYFIG〞〕。

并把它设置在当前的工作路径〔Current Directory〕下。

1)在该文件夹中拷入个灰度图片,比方“2.jpg〞文件。

2)在MATLAB命令输入窗中,调用函数info=imfinfo('2.jpg')观查2.jpg是否为灰度图像
在ColorType: 'grayscale' 属性行如此显示,那么说明以2.jpg命名的文件为灰度图像。

3)输入如下命令完成转换
RGB=imread('2.jpg'); % 将图像“2.jpg〞的数据赋给变量RGB
figure(3); % 设定显示窗口3
imshow(RGB); % 显示原“2.jpg〞文件
figure(1); % 设定显示窗口1
[RGB1,map1]=gray2ind(RGB,128); % 指定灰度级128,进行灰度图像到索引图像转换imshow(RGB1,map1) ; % 显示索引图像1
figure(2); % 设定显示窗口2
[RGB2,map2]=gray2ind(RGB,16); % 指定灰度级16,进行灰度图像到索引图像转换imshow(RGB2,map2) ; % 显示索引图像2
imwrite(RGB1,map1,'3.bmp'); % 将索引图像1保存为名为“3.bmp〞的文件
imwrite(RGB2,map2,'4.bmp'); % 将索引图像2 保存为名为“4.bmp〞的文件
运行并观察结果和现象,将结果图打印出来,分析说明不同的灰度值对图片的影响并加以理论说明。

4)最后再调用函数info=imfinfo('3.bmp') 观查3.bmp,4.bmp和是否为索引图像
[在ColorType: 'indexed' 属性行如此显示,那么说明以3.bmp或4.bmp命名的文件为索引图像]
用文字说明显示结果。

5〕自己仿照以上操作完成索引图像到灰度图像的转换〔所有要求同上〕
索引图像到灰度图像的转换的语句格式为:I=ind2gray(X,MAP)
二、RGB图像到索引图像的转换
启动MATLAB,设置当前的工作路径
1) 在当前工作文件夹中拷入个RGB图片,比方“1.jpg〞文件。

2) 在MATLAB命令输入窗中,调用函数info=imfinfo('1.jpg')观查1.jpg是否为RGB图像
[ColorType: 'truecolor'----------RGB图像]
用文字说明显示结果。

3〕输入如下命令完成转换
RGB=imread('1.jpg'); % 将图像“1.jpg〞的数据赋给变量RGB
figure(1); % 设定显示窗口1
imshow(RGB); % 显示原“1.jpg〞文件
figure(2); % 设定显示窗口2
y=rgb2ind(RGB,256); % 包含256色,进行RGB图像到索引图像的转换imwrite(y,'1s.bmp'); % 将索引图像保存到名为“1s.bmp〞的文件中
imshow(y); % 显示索引图像
运行并观察结果和现象,将结果图打印出来,加以文字说明。

4)最后再调用函数info=imfinfo('1s.bmp') 观查1s.bmp是否为索引图像
[在ColorType: 'indexed' 属性行如此显示,那么说明以1s.bmp命名的文件为索引图像] 用文字说明显示结果。

5〕自己仿照以上操作完成索引图像到RGB图像的转换〔所有要求同上〕
索引图像到RGB图像转换的语句格式为:RGB=ind2rgb(X,MAP)
三、RGB图像到二值图像的转换
启动MATLAB,设置当前的工作路径
1)将一个RGB图片〔如1.jpg〕变换成二值图像
2〕输入如下命令完成转换
RGB=imread('1.jpg'); % 将图像“1.jpg〞的数据赋给变量RGB
figure(3); % 设定显示窗口3
imshow(RGB); % 显示原“1.jpg〞文件
bw1=im2bw(RGB,0.5); % 阀值为0.5进行二值转换
bw2=im2bw(RGB,0.6); % 阀值为0.6进行二值转换
figure(1); % 设定显示窗口1
imshow(bw1); % 显示索引图像bw1
figure(2);% 设定显示窗口2
imshow(bw2);% 显示索引图像bw2
运行并观察结果和现象,将所有结果图打印出来,分析说明阈值的不同带来的影响加以简要的理论说明。

3〕其他格式文件〔任意选一种格式:索引或者灰度〕转换为二值图像,请自己编写程序完成。

〔要求同上〕
四、实验报告要求:
1〕有实验目的,实验内容,实验过程,实验小结。

2〕按照每一步的要求完成,并给出实验结果图,且附有文字说明
3〕不得抄袭他人作业
实验二:图像变换
实验目的:掌握图像变换的方法,观察图象变换的效果,熟悉图像傅立叶变换。

实验内容:快速卷积实验,对图像进行傅立叶变换;
实验方法:利用MATLAB 图像处理工具箱进行实验
实验前预习要求:
1〕预习矩阵卷积原理及其图像的傅立叶变换内容
2〕预习magic(n),ones(n)等产生矩阵的语句的实际意义
2〕掌握fft2、ifft2、conv2、fftshift 等语句的使用方法
一、傅立叶变换实验
1〕理论根底
在图像处理的广泛应用领域中,傅立叶变换起着非常重要的作用,具体表现在图像分析,
图像增强和图像压缩方面。

设),(n m f 是个离散空间中的二维函数,那么该函数的二维傅立叶变换的定义如下:
⎰⎰+∞-∞=+∞
-∞=--=
m n n j n j dmdn e e n m f F 21),(),(21ωωωω
其中21,ωω是频谱变量,单位是弧度/采样单元,周期都是π2
二维傅立叶反变换的定义如下:
21212112),(),(ωωωωωωππωπ
πωd d e e F n m f n j n j ⎰⎰-=-==
*利用计算机进行傅立叶变换的通常形式为离散傅立叶变换,采用这种形式的傅立叶变换,
主要是由于:离散傅立叶变换的输入输出都是离散值,适合用计算机运算操作,并且可以提高
运算速度。

离散傅立叶变换的定义如下:
∑∑-=-=+-=1010)]//(2ex p[),(1),(N y M x N vy M ux j y x f MN
v u F π
二维傅立叶反变换公式如下: ∑∑-=-=+=1
10)]//(2ex p[),(),(N v M u N vy M ux j v u F y x f π
其中1,..1,0;1,...1,0-=-=N y M x
通常情况下,数字图像处理用像素方阵表示,即M=N ,此时二维傅立叶变换可简化为:
1..1,0,]
/)(2ex p[),(1),(10102-=+-=∑∑-=-=N y x N vy ux j y x f N v u F N y N x π
∑∑-=-=-=+=10101,...1,0,]/)(2ex p[),(),(N v N u N v u N vy ux j v u F y x f π
2〕MATLAB 中提供的变换函数
〔1〕fft2:用于计算二维快速傅立叶变换,语句格式:
B=fft2(I,m,n)
按指定的点数计算m,返回矩阵B 的大小为m ×n,不写默认为原图像大小。

〔2〕fftn:用于计算n 维快速傅立叶变换
〔3〕fftshift:用于将变换后的图像频谱中心从矩阵的原点移到矩阵地中心,语法格式:
B=fftshift(I)
(4)ifft2:用于计算图像的二维傅立叶反变换,语法格式
B=ifft2(i)
(5)ifftn:用于计算n 维傅立叶变换
3〕快速卷积实验:傅立叶变换一个重要特性是可以实现快速卷积。

设A 为M ×N 矩阵,B 为P ×Q 的矩阵,快速卷积方法如下:
*对A 和B 补0,使其大小都为(M+P-1)×(N+Q-1)
*利用fft2对矩阵A 和B 进行二维变换
*将两个FFT 结果相乘,利用ifft2对得到的乘积进行傅立叶反变换
现在令A=magic(3),B=ones(3),请按上述步骤自行完成实验。

―――――――――――――――――――――――――――――――――――――――

参考如下:
启动MATLAB ,在命令窗口中输入
A=magic(3);
B=ones(3);
A(8,8)=0;
B(8,8)=0;
C=ifft2(fft2(A).*fft2(B));
C=C(1:5,1:5);
C=real(C)
―――――――――――――――――――――――――――――――――――――――

〔1〕观察运行结果,记录结果。

〔2〕调用MATLAB 提供的卷积函数conv2进行验证,比照结果是否正确
C=conv2(A,B);
C=C(1:5,1:5)
运行并比照记录结果,将运行结果打印出来。

4〕图像的二维傅立叶变换实验
对一副灰度图片进行二维傅立叶变换,并且显示其幅度值
〔1〕启动MATLAB ,设置当前工作路径
〔2〕在当前路径下的文件夹中拷入个灰度图片,比方“ex2.jpg 〞文件。

〔3〕输入如下命令,完成实验
figure(1);
RGB=imread('ex2.jpg');
imshow(RGB);
figure(2);
B=fftshift(fft2(RGB));
imshow(log(abs(B)),[]),colormap(jet(64)),colorbar;
〔4〕观察结果,打印出结果图,并记录。

二、实验报告要求:
1〕有实验目的,实验内容,实验过程,实验小结
2〕按照每一步要求完成,要求附有结果图片,并有详细的图文说明
3〕并独立完成以下实验:
创立一副图像,大小为128*128,背景为黑色,中间开出一个8×8白色的窗口;
运用ff2函数,对上面产生的图像做二维离散傅立叶变换
4〕不得抄袭他人作业
实验三:数字图像滤涉及边缘检测〔综合性实验〕
实验目的:1〕综合运用图像处理的根本原理方法,解决实际问题;
2〕学会使用Matlab中值滤波函数和图像处理并了解适用范围;
3〕了解函数imnoise的根本功能和输入参数的特点;
4〕掌握线性平滑滤波器和非线性平滑滤波器〔中值滤波〕的性能。

5〕掌握图象边缘检测的根本算法。

实验内容:平滑滤波,中值滤波,边缘检测
实验方法:利用MATLAB图像处理工具箱进行实验
实验前预习要求:
1)理解图像中值滤波和均值滤波原理及其和线性滤波与非线性滤波的关系
2)理解边缘检测的根本原理
3)掌握matlab中imnoise、medfilt2、edge等语句的使用方法
4)了解边缘检测中不同算子在图像处理中的不同功能
一、图象平滑滤波
* 属于低通滤波器,可滤除掉灰度值具有较大较快变化的局部
* 模拟噪声生成函数imnoise,它可以对图像添加一些典型噪声
语法格式:J=imnoise(I,type)type为噪声类型,如高斯噪声‘gaussian’
1. 均值滤波〔线性滤波〕:
1)在当前工作文件夹中拷入个图片,比方“3(2).jpg〞文件。

2〕输入如下命令完成实验
I=imread('3(2).jpg');
I=imnoise(I, 'gaussian',0,0.02); % 添加高斯噪声
imshow(I);
h=[1 1 1
1 1 1
1 1 1]; % 产生滤波模板,不同模板对应的滤波形
式也不同
h=h/9; % 滤波模板归一化
J=conv2(I,h) ; % 滤波并显示图像
figure,imshow(J,[])
3〕观察并记录结果,打印原始图片和结果图,简要说明均值滤波的原理。

4〕以上都是用3*3的模板对噪声进行滤波,现再自行设计一个5*5或7*7的模板进行处理,用文字比拟说明不同模板造成的差异。

2. 中值滤波〔非线性滤波〕:
语法格式:
B=medfilt2(A) %用于3*3的滤波窗口对图像A进行处理
B=medfilt2(A,[m,n]) %用指定大小为m*n的窗口对图像A进行处理
1〕输入如下命令完成实验
I=imread('3(1).jpg'); % 将图像的数据赋给变量I
J=imnoise(I,'gaussian',0.02); % 参加噪声
K=medfilt2(J); % 进行中值滤波
subplot(1,2,1),imshow(J);% 分别显示原图像和变换后的图像
subplot(1,2,2),imshow(K)
2〕观察并记录结果,打印出结果图,并与原始图片相比拟,文字简要说明中值滤波原理3〕另选一幅图片分别叠加高斯噪声和椒盐噪声,比照线性平滑滤波器和非线性平滑滤波器〔中值滤波〕的性能,并用文字详细说明其差异。

二、边缘检测
边缘检测技术对于处理数字图像非常重要,边缘是所要提取目标和背景的分界线,提取边缘才能将目标和背景区分开来。

*MATLAB图像处理工具箱提供了用于实现检测边缘功能的函数,语法格式为
BW=edge(I, 'sobel') % 采用sobel算子进行边缘检测
BW=edge(I, 'sobel',thresh)% 指定阈值thresh,默认时会自动提取
1) 在当前工作文件夹中拷入个图片,比方“3(3).jpg〞文件。

2〕输入如下命令完成实验
I=imread('3(3).jpg'); % 将图像“3(3).jpg〞的数据赋给变量I
imshow(I);
BW1=edge(I, 'Roberts'); % 用Roberts算子进行边缘提取并显示
figure,imshow(BW1);
BW2=edge(I, 'sobel') ; % 用sobel算子进行边缘提取并显示
figure,imshow(BW2)
3〕运行并观察结果和现象,打印所有显示图片,加以分析说明。

4〕独立完成使用“Prewitt〞算子完成该图像的边缘检测功能,并将这三种方法〔'Roberts','sobel',‘Prewitt’〕加以比拟,分析各自的优缺点
四、实验报告要求:
1〕有实验目的,实验内容,实验过程,实验小结。

2〕对每一局部的实验结果要求将图片打印,并分析结果,加以比拟
3) 分析均值滤波和中值滤波的不同效果,加以比拟说明
4〕按照实验中的步骤完成,不得抄袭他人作业
实验四:小波在图像降噪中的应用
实验目的:掌握小波变换的根底知识;
掌握小波去噪的根本原理,观察小波降噪后的图象差异;
掌握一维和二维信号的小波去噪方法
实验内容:利用matlab 产生一有噪信号;
应用小波变换的方法将该信号进行降噪处理,观察图像的变换;
利用matlab 小波分析工具箱去除图像噪声
实验方法:利用matlab 软件及其小波分析工具箱
实验前预习要求:
1) 理解小波降噪的原理及其实际意义
2) 掌握wnoise 、wden 等语句的使用方法,及其语句中的参数的意义和设置的方法
3) 了解不同阈值和小波分解层数对图像处理后结果的影响
4) 熟悉matlab 小波工具箱的应用
一:小波去噪原理
由于信号主要分布在低频区域,而噪声主要分布在高频区域,但同时图像的细节也分布在高频区域上。

利用小波分析的理论,可以构造一种既能降低图像噪声,又能够保持图像细节信息的方法。

假设已经获得信号的观测公式如下:
y i =x i +n i ,M i ,...2,1= 其中n i 为零均值的白色高斯噪声,δ为其方差,x i 为期望信号,y i
为观测值。

假设离散小波变换的变换矩阵为W ,那么对上进行小波变换得到:Y=X+N
这里,][y i W Y =,][x i W X =,][n i
W N =。

对应于W ,存在逆变换矩阵M ,满足WM=I 。

通过小波变换的特性可知,在小波域上,可以把小波系数分为两类:第一类小波系数仅仅由噪声变换后得到,这类小波系是幅值小,数目较多。

第二类小波系数由信号变换得来,并包含噪声的变换结果,这类小波系数幅值大,数目较少。

根据小波分界的这个特点,可对信号的小波系数设置一个阈值来划分这两类系数,同时去除第一类小波系数〔由噪声变换而来〕。

这种方法可以保存大局部包含信号的小波系数,因此可以较好的保持图像细节。

二:MATLAB 提供的去噪函数
1 产生有噪信号函数
〔1〕Wnoise 语法格式如下:X=wnoise(NUM,N)
[X ,XN]= wnoise(NUM,N ,SNRAT ,INIT)
产生幅值在[0,1]之间长度为2N 的信号,信号的类型NUM 为:
● NUM=1,产生不规那么方波信号
● NUM=2,产生低频信号
● NUM=3,产生随机间断的正弦信号
● NUM=4,产生chip 信号
● NUM=5,产生4次调频信号
SNRAT 是信号的信噪比,使用初始值INIT 产生含噪信号
〔2〕首先产生一个长度为211点,包含高斯白噪声的正弦信号,噪声标准差为3。

sqrt_snr=3;
init=231434;
[x,xn]=wnoise(3,11, sqrt_snr, init);
plot(x)
figure,plot(xn)
(3) 观察运行结果,打印结果图像
2wden函数用于信号的小波去噪
(1) 其语法格式为:
xd=wden(X,TPTR,SORH,SCAL,N,’wname’) 对输入一维信号X进行去噪处理,返回经过处理的信号XD,其中:
●TPTR=‘rigrsure’时,选择基于stein无偏估计理论的适应阈值
●TPTR=‘heursure’时,选择第一种阈值选择方式的启发式改良形式
●TPTR=‘sqtwolog’时,选择全局阈值
●TPTR=‘minimaxi’时,选用极小极大准那么确定阈值
SORH决定阈值的使用方式。

●SORH=‘s’,软阈值
●SORH=‘h’,硬阈值
SCAL决定阈值处理是否随噪声变化,其中:
●SCAL=‘one’,不随噪声方差变化
●SCAL=‘sln’,阈值根据第一层小波分解的噪声方差调整
●SCAL=‘mln’,根据各层小波分解的噪声方差调整阈值,这适合于色噪声的情况
(2) 继续上面的程序,利用‘sym8’小波进行分解,在分解的第五层上,利用启发式SURE
阈值选择算法,对信号进行去噪
lev=5
xd=wden(x,’heursure’,’s’,’one’,lev,’sym8’);
plot(xd)
(3) 观察运行结果,打印结果图像
(4) 在同样的条件下〔即:继续1〔2〕中的程序〕,用软SURE阈值选择算法对信号去噪:
xd=wden(x,’rigrsure’,’s’,’sln’,lev,’sym8’);
plot(xd)
(5) 观察运行结果,打印结果图像
(6) 在同样的条件下〔即:继续1〔2〕中的程序〕,用固定阈值选择算法对信号去噪:
xd=wden(x,’sqtwolog’,’s’,’sln’,lev,’sym8’);
plot(xd)
(7) 观察运行结果,打印结果图像
〔8〕用文字说明,分析比拟不同阈值带来的差异
三:利用MATLAB小波工具箱对图片进行去噪
〔1〕在MATLAB命令窗口中输入“wavemenu〞,翻开小波分析的图像用户界面窗口
〔2〕单击wavelet2-D按钮,选择file菜单里的命令读入图像,同时还可以选择分析用的小波基函数以及分解的层数:〔可屡次尝试〕
〔3〕单击De-noise按钮,在新产生的窗口中可以选择阈值处理的方法,还可以手动设定阈值,这样就可以一边修改阈值,一边观察去噪的效果,直到去噪效果满意为止:
〔5〕自己处理一张加噪的图片,进行如上的操作,利用不同的阈值,分解层数等方法进行设置,记录每一步的结果,最终得出降噪效果最正确的图片,要求每一步要有文字说明。

四、实验报告要求:
1〕有实验目的,实验内容,实验过程,实验小结。

2〕按照每一步的要求完成,详细记录每一步的图像结果,并附有文字说明
3〕不得抄袭他人作业。

相关文档
最新文档