数字图像处理实验.docx
- 文档编号:17826437
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:12
- 大小:315.14KB
数字图像处理实验.docx
《数字图像处理实验.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验.docx(12页珍藏版)》请在冰豆网上搜索。
数字图像处理实验
《数字图像处理》
实验指导书
计算机科学与工程系系统结构教研室
前言
MATLAB是一种功能强大的高级语言,广泛应用于科研、工程等领域。
本门课程采用该语言作为仿真实现的工具。
MATLAB的命令和工具箱非常丰富,但考虑到课程的需要,只需学习一些MATLAB的基本命令以及一些与该课程有关的命令。
安装软件:
MATLAB7.X以上
安装环境:
windowsxp以上
实验一MATLAB语言基础
相关的资料见ch2.pdf
实验目的:
了解MATLAB,掌握数学(矩阵)运算,简单编程,简单的数据处理及基本图形绘制,领会矩阵运算与数组运算的区别。
实验内容:
熟悉MATLAB的基本命令,编程方式。
操作步骤:
1.双击桌面上的MATLAB图标
,打开MATLAB命令平台,熟悉工作空间、命令窗口、历史窗口等各窗口。
2.通过练习,掌握矩阵与数组的运算、多项式的运算、绘图的基本命令,学会使用debug来调试程序。
(1)用clear清除MATLAB工作空间中的所有变量后,构造A,B,C,D矩阵分别是
为单位矩阵、
维全零矩阵、
维全1矩阵及
维全零矩阵,然后比较F1=[A;BC'],F2=[A,BC']的结果。
(2)已知A=[123;456;789]
如何在原矩阵的右边添加一列[111213]’?
(3)计算
(4)已知A同上,利用冒号求出下列运算
1)取出A中的第二列
2)取出A中的第一、第二行
3)如何用冒号表示整个矩阵
(5)创建一个4*5的随机矩阵,然后提取第一行和第二行中大于0.3的元素构成新的数组。
(6)产生数据t=0:
0.02*pi:
pi,y1=sin(2t),y2=cos(2t)。
将图形窗口绘制分成2行2列的4个子图;在前两个子图中分别绘制t为自变量y1,y2的曲线;在第3个子图中绘制t为自变量,y=sin(2t)*cos(2t)的曲线,在第4个子图中绘制t为横坐标,y1,y2的曲线。
(7)请将A图像转变为B图像(文件名:
cameraman.tif)
(A)(B)
实验二直方图与直方图均衡化
实验目的:
熟悉matlab的数字图像处理工具箱;能够采用直方图均衡化进行图像增强。
实验内容:
学会matlab编程,熟悉matlab的数字图像处理工具箱;能够采用直方图均衡化进行图像增强。
实验步骤及要求:
1.用MATLAB在自建的文件夹中建立example1.m程序文件。
在这个文件的程序中,将tire.tif图像文件读出,显示它的图像及灰度直方图(可以发现其灰度值集中在一段区域)。
用imadjust函数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰度直方图与原灰度直方图的区别;改变灰度值调整范围,观察调整后的图像的变化及其与原图像的差别,调整后的灰度直方图的变化及其与原灰度直方图的区别;进一步利用改变灰度值调整范围,实现图像的反转。
2.读入一幅图像,将读入的图像进行简单变换,分别得到低对比度、高对比度、暗图像、亮图像四幅图像,分别对其进行直方图均衡化,观察四幅图像在进行直方图均衡化前后有何区别,给出你自己的结论。
直方图命令:
h=imhist(f)
直方图均衡化命令:
g=histeq(f,256)
在变换图像时,可采用点运算:
当灰度变换函数为线性时,即
,此变换称为点运算;
实验三图像的几何运算
实验目的
1、理解几何运算的基本概念与定义;
2、掌握在MATLAB中进行插值的方法
3、运用MATLAB语言进行图像的插值缩放和插值旋转。
实验原理
几何运算可改变图像中各物体之间的空间关系。
这种运算可以被看成是将(各)物体在图像内移动。
一个几何运算需要两个独立的算法。
首先,需要一个算法来定义空间变换本身,用它来描述每个像素如何从其初始位置“移动”到终止位置,即每个像素的“运动”。
同时,还需要一个用于灰度插值的算法,这是因为,在一般情况下,输入图像的位置坐标(x,y)为整数,而输出图像的位置坐标为非整数,反过来也如此。
因此插值就是对变换之后的整数坐标位置的像素值进行估计。
MATLAB提供了一些函数实现这些功能。
插值是常用的数学运算,通常是利用曲线拟合的方法,通过离散的采样点建立一个连续函数来逼近真实的曲线,用这个重建的函数便可以求出任意位置的函数值。
最近邻插值是最简便的插值,在这种算法中,每一个插值输出像素的值就是在输入图像中与其最临近的采样点的值。
该算法的数学表示为:
如果
最近邻插值是工具箱函数默认使用的插值方法,而且这种插值方法的运算量非常小。
不过,当图像中包含像素之间灰度级变化的细微结构时,最近邻插值法会在图像中产生人工的痕迹。
双线性插值法的输出像素值是它在输入图像中2×2领域采样点的平均值,它根据某像素周围4个像素的灰度值在水平和垂直两个方向上对其插值。
设
,
和
是要插值点的坐标,则双线性插值的公式为:
把按照上式计算出来的值赋予图像几何变换对应于
处的像素,即可实现双线性插值。
双三次插值的插值核为三次函数,其插值邻域的大小为4×4。
它的插值效果比较好,但相应的计算量也比较大,在这里不做讨论。
1、图像的缩放
MATLAB图像处理工具箱中的函数imresize可以用上述的三种方法对图像进行插值缩放,如果不指定插值方法,则默认为最邻近插值法。
imresize函数的语法格式为:
B=imresize(A,m,method)
这里参数method用于指定插值的方法,可选用的值为'nearest'(最邻近法),'bilinear'(双线性插值),'bicubic'(双三次插值),默认为'nearest'。
B=imresize(A,m,method)返回原图像A的m倍放大的图像(m小于1时效果是缩小)。
例:
I=imread('ic.tif');
J=imresize(I,1.25);
imshow(I),title('原图像')
figure,imshow(J),title('放大后的图像')
2、图像的旋转
在工具箱中的函数imrotate可用上述三种方法对图像进行插值旋转,默认的插值方法也是最邻近插值法。
imrotate的语法格式为:
B=imrotate(A,angle,method)
函数imrotate对图像进行旋转,参数method用于指定插值的方法,可选用的值为'nearest'(最邻近法),'bilinear'(双线性插值),'bicubic'(双三次插值),默认为'nearest'。
一般说来旋转后的图像会比原图大,超出原图部分值为0。
例:
I=imread('rice.tif');
J=imrotate(I,30,'bilinear');
imshow(I);title('原图像')
figure,imshow(J);title('旋转后的图像')
实验内容及要求
1.读出lena.tif图像并显示。
2.将图像放大1.5倍,插值方法使用三种不同方法,显示放大后的图像,比较不同插值方法的结果有什么不同。
将图像放大到其它倍数,重复实验;选用其它图像,重复实验。
3.图像缩小0.8、0.5倍,插值方法使用三种不同方法,显示并比较结果有什么差异。
4.图像分别顺时针旋转30度、45度,插值方法使用三种不同方法,显示旋转后的图像并比较结果有什么不同。
实验四图像的空域滤波
实验目的
1、理解图像滤波的基本定义及目的;
2、掌握空域滤波的基本原理及方法;
3、掌握用MATLAB语言进行图像的空域滤波的方法。
实验原理
1、均值滤波
均值滤波是在空间域对图像进行平滑处理的一种方法,易于实现,效果也挺好。
设噪声η(m,n)是加性噪声,其均值为0,方差(噪声功率)为σ2,而且噪声与图像f(m,n)不相关。
其有噪声的图像f’(m,n)为:
(4.1)
经均值滤波处理后的图像g(m,n)为:
(4.2)
其中s是(m,n)点的领域内的点集。
除了对噪声有上述假定之外,该算法还基于这样一种假设:
图像是由许多灰度值相近的小块组成。
这个假设大体上反映了许多图像的结构特征。
(4.2)式表达的算法是由某像素领域内各点灰度值的平均值来代替该像素原来的灰度值。
可用模块反映领域平均算法的特征。
对于四点领域和八点领域,可分别由下述摸板表征:
(4.3)
(4.4)
模版沿水平和垂直两个方向逐点移动,相当于用这样一个模块与图像进行卷积运算,从而平滑了整幅图像。
模版内各系数和为1,用这样的模版处理常数图像时,图像没有变化;对一般图像处理后,整幅图像灰度的平均值可不变。
2、中值滤波
中值滤波是一种非线性处理技术,能抑制图像中的噪声。
它是基于图像的这样一种特性:
噪声往往以孤立的点的形式出现,这些点对应的象素很少,而图像则是由像素数较多、面积较大的小块构成。
下面举一个均值滤波的例子:
I=imread(‘rice.tif’);
J=imnoise(I,‘salt&pepper’,0.02);
h=fspecial(‘average’,3);
I2=filter2(h,J);%本句也可改写为:
I2=imfilter(J,h);
subplot(1,3,1),imshow(I),title(‘原图像’);
subplot(1,3,2),imshow(J),title(‘加噪声图像’);
subplot(1,3,3),imshow(I2,[]),title(‘均值滤波后图像’);
(注意“imshow(I2,[])”中的参数“[]”!
它表示由程序自动调整图像数据的
类型与范围,以便正确显示图像)
程序执行的结果如图:
在MATLAB图像处理工具箱中,提供了medfilt2函数用于实现中值滤波。
medfilt2函数的语法格式为:
B=medfilt2(A)%用3×3的滤波窗口对图像A进行中值滤波。
B=medfilt2(A,[mn])%用指定大小为m×n的窗口对图像A进行中值滤波。
以下举例说明:
I=imread(‘rice.tif’);
J=imnoise(I,‘gaussian’,0.02);
I2=medfilt2(J,[3,3]);
subplot(1,3,1),imshow(I),title(‘原图像’);
subplot(1,3,2),imshow(J),title(‘加噪声图像’);
subplot(1,3,3),imshow(I2),title(‘中值滤波后图像’);
运行的结果如图;
实验要求
1、读出“lena.tif”这幅图像。
给读出的图像加入高斯噪声。
2、分别采用不同大小的模板对加有噪声的图像进行均值滤波,用一个图像处理对话框显示原图像、加有噪声的图像及均值滤波的图像。
比较结果。
3、分别采用不同大小的模板对加有噪声的图像进行中值滤波,用一个图像处理对话框显示原图像、加有噪声的图像及中值滤波的图像。
比较结果。
4、采用大小相同的模板对加有噪声的图像分别进行均值滤波和中值滤波,用一个图像处理对话框显示原图像、加有噪声的图像、均值滤波的图像及中值滤波的图像。
比较结果。
5、给图像加入不同类型的噪声,重复均值滤波和中值滤波,比较结果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 实验