数字图像处理实验指导书.docx
- 文档编号:25263049
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:40
- 大小:379.59KB
数字图像处理实验指导书.docx
《数字图像处理实验指导书.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验指导书.docx(40页珍藏版)》请在冰豆网上搜索。
数字图像处理实验指导书
数字图像处理实验指导书
DigitalimageprocessingExperimentalInstruction
崔艳秋许爽
大连民族学院
Daliannationalitiesuniversity
机电信息工程学院
(CollegeofElectromechanicalandInformationEngineering)
2009年7月10日
基本要求
Basicrequirements
1.学生必须按时到实验室做实验,不得迟到早退,未经老师批准不得中途离开。
凡迟到者,应给予批评并作适当扣分。
实验课迟到20分钟以上及无故缺席者视为旷课,旷课者不予补做实验,本次实验以零分计。
学生因病或特殊情况不能按时到实验室做实验时,应办理正常请假手续。
请病假必须有医生签字的病假条,请事假必须有班主任签字的事假条。
不符合请假手续的,以旷课论处。
请假的学生由指导教师安排补做实验。
对于未做实验数达三分之一以上(含三分之一)的学生,实验课程按0分计。
2.学生在每次实验课之前,应仔细阅读实验教材,查阅相关的资料,写出预习报告。
预习报告的具体内容包括:
实验内容、实验目的、实验原理图、实验步骤、实验数据记录表格等。
实验课前由任课教师检查预习报告,未写预习报告者不予做实验。
3.做实验前,了解设备的原理和正确使用方法。
在没有弄懂仪器设备的使用方法前,不得贸然使用,否则因使用不当造成仪器设备损坏的,根据大连民族学院《仪器设备损坏丢失处理暂行办法》规定进行处理。
实验室内设备在实验过程中不准任意搬动和调换,非本次实验所用仪器设备,未经指导教师允许不得动用。
4.要求每位学生在实验过程中,要具有严谨的学习态度、认真、踏实、一丝不苟的科学作风。
实验过程中学生按照预习的内容进行实验,且重视实验的调试过程,学会如何根据实验现象判断问题所在。
坚持每次实验都要亲自动手,不可“坐车”,每个实验每个学生都要独立完成,不允许抄袭,无特殊原因,中途不得退出实验,否则本次实验无效。
5.实验中若接线、改接、拆线都必须在切断电源的情况下进行,线路连接完毕再送电。
实验中,特别是设备刚投入运行时,要随时注意仪器设备的运行情况,如发现有过热、异味、冒烟、火花等,应立即断电,并请指导老师检查、处理。
6.实验过程中,如出现事故,就马上拉开电源开关,然后找指导教师和实验技术人员,如实反映事故情况,并分析原因和处理事故。
如有损坏仪表和设备时,应马上提出,按有关规定处理。
7.每次实验结束,指导教师要对实验数据和结果进行检查,并签字,在教师确认正确无误后,学生方可拆线。
整理好实验台和周围卫生,填写实验登记簿后方可离开。
8.每次实验后学生必须写出符合要求的实验报告,缺交者本次实验以零分计。
实验报告要求字迹工整、原始数据齐全、图表清晰、程序正确。
实验报告必须附有指导教师签字的原始数据表或预习报告,否则该实验报告无效。
为满足上述要求的按其程度扣除一定分值。
9.实验总评成绩评定:
每次实验后,教师根据学生的出勤、实验过程操作技能、实验原始记录、实验结果、实验报告等情况综合按5分制评分。
实验课考核不合格的学生按规定应重修该课程。
目录
一、实验说明(Experimentalillustrations)1
二、基于MATLAB的图像处理工具箱简介2
三、基于MATLAB的图像处理实验14
实验一、图像的几何变换
(Theimageofgeometrytransform)14
实验二、图像增强与平滑
(Imageenhancementandsmooth)17
实验三、图像的频域处理
(Theimageoffrequencydomainprocessing)20
实验四、图像的恢复
(Imagerestoration)23
实验五、图像分割与边缘检测
(imagesegmentationandedgedetection)27
1、实验说明
Experimentalillustrations
本实验指导书是根据通信工程专业的《数字图像处理》(digitalimageprocessing)课程而编制的。
《数字图像处理》是通信工程(communicationengineering)、电子信息工程(electronicinformationengineering)专业的专业方向选修课程,数字图像处理实验是与之相匹配的课内实践环节。
数字图像处理实验是一个重要的实践环节,可以加强学生对数字图像处理技术的掌握,使学生通过实验过程掌握数字图像处理技术的实验技能,培养学生独立解决问题的能力,实事求是的科学态度和踏实细致的工作作风。
本实验内容丰富、实践性和实用性(practicalapplicability)较强。
本实验学时为8学时,学生需要按本实验指导书的要求完成四个实验。
其中,实验一、实验二和实验五的实验类型是必做,实验三和实验四的实验类型是选做,要求学生从中任选一个实验。
实验所用的图像可以从路径:
\MATLAB\toolbox\images\imdemos下选取。
二、基于MATLAB的图像处理工具箱(ImageProcessingToolCase)简介
随着数字化(digitization)时代的来临,图像处理知识显得越来越重要。
实际上,图像处理已经渗透到计算机(computer)、电子(electonic)、电信(telegraphy)、地质(geology)、气象(weather)、医学(medicine)等诸多领域。
MATLAB的图像处理工具箱提供了较多的图像处理功能,而且,由于工具箱采用的数据类型(datatype)与MATLAB的相兼容(compatible),在工具箱中也可以利用MATLAB强大的数值计算能力,从而为图像处理自定义(custom)算法的实现提供了快速实现的可能性。
利用图像处理工具箱,可以完成以下任务:
·图像合成(building-upofimage)可以实现图像的代数运算和逻辑运算;
·空间变换(spacevary)可以对图像进行旋转(rotate)、缩放(zoom)和裁剪(tailor)等操作;
·邻域(neighbourhood)和处理可以进行块处理(blockprocessing)操作、滑动邻域操作、分离块操作和列处理;
·线性滤波(linearfiltering)和滤波器设计(filterdesign)可以进行线性滤波和设计FIR等滤波器;
·基于区域(region)进行处可以指定区域并对区域进行滤波和填充(fill);
·变换域(transformdomain)处理可以进行傅里叶变换(Fouriertransform)、离散余弦变换(DCTdiscretecosinetransform)和Radon变换;
·数学形态学(morphology)运算可以进行膨胀(expand)和腐蚀(corrode),以及基于膨胀和腐蚀处理,可以进行数学形态学重建等操作;
·图像分析(graphicalanalysis)可以进行灰度(graylevel)统计、边缘检测(borderdetection)、边界跟踪(boundaryfollowing)和四叉树(quadtree)分解等操作;
·图像增强(photographicenhancement)可以进行灰度调整和去噪(De-Noising)处理;
·图像配准(imageregistration)可以基于控制点(controlpoint)配准图像;
·图像恢复(imagerestoration)可以利用各种滤波器和算法恢复图像。
2.1图像类型(Imagetype)
图像处理工具箱支持索引图像(indexedimages)、灰度图像(graylevelimage)、二值图像(binaryimage)和RGB图像等4种基本的图像类型。
下面讨论MATLAB和图像处理工具箱如何表示这几种图像。
2.1.1索引图像(Indexedimage)
索引图像由数据矩阵X和映射矩阵(mappingmatrix)map组成。
数据矩阵(datamatrix)可以是uint8,uint16或double型的。
映射矩阵是一个double型的m×3数组,元素为[0,1]范围内的浮点值(floatingpointvalues)。
map矩阵的每一行指定某种颜色的红色、绿色和蓝色组分。
索引图像将像素(pixel)值与map矩阵的值直接进行映射。
每个图像元素的颜色是通过将X的对应值作为索引编号,从map矩阵中得到的。
值1指向map矩阵的第一行,值2指向第二行,依此类推。
映射矩阵通常与索引图像一起保存,并且在用imread函数载入图像时自动载入,但是,并不局限于使用默认的映射方式——可以使用你选择的任何映射方式。
下面的图形演示了索引图像的结构。
图像中的像素用整型值表示,它们作为索引编号用于获取保存在颜色查找表中的颜色值:
图2-1描述一幅索引图像。
图2-1索引图像中像素值与颜色查找表之间的关系
图像矩阵和颜色查找表中值之间的关系取决于图像矩阵的类型。
如果图像矩阵是double型的,值1指向颜色查找表的第一行,值2指向第二行,依此类推。
如果图像矩阵的uint8或uint16类型的,就会存在偏移(excursion)——值0指向颜色查找表的第一行,值1指向第二行,依此类推。
偏移还用在图形文件格式中,使得可以支持的颜色个数最大化。
在前的图像中,图像矩阵是double类型的。
因为没有偏移,值5指向颜色查找表的第5行。
注意,对于uint16类型,工具箱只提供了有限的支持。
可以将这种类型的数据读入MATLAB并且显示它们,但是在处理uint16类型的索引图像以前,必须首先将它转换为double型或uint8型。
要转换为double型,调用im2double函数;要将图像转换为256色,调用imapprox函数。
2.1.2灰度图像(Graylevelimage)
灰度图像是一个数据矩阵I, 其值表示一定范围内的亮度值(brightnessvalue)。
MATLAB将一幅灰度图像保存为一个单一的矩阵,矩阵的每个元素对应于一个图像像素。
矩阵可以是double,uint8或uint16型的。
亮度矩阵中的元素表示不同的灰度或灰度级(graylevel),其中亮度0通常表示黑色,亮度1255或65535通常表示饱和亮度或白色。
图2-2描述一个double型灰度图像。
图2-2灰度图像中的像素值
2.1.3二值图像(Binaryimage)
在二值图像中,假设每个像素取两个离散值(discretevalue)中的一个:
这两个值对应于on和off。
二值图像保存为logical数组,值为0和1。
图2-3描述一幅二值图像。
图2-3二值图像中的像素值
2.1.4RGB图像(RGBimage)
RGB图像有时称为真彩色图像(naturecolorimage),在MATLAB中保存为m×n×3的数据数组,定义每个单独像素的红、绿色和蓝色组分。
RGB图像不使用调色板(palette)。
每个像素的颜色由像素位置上红色、绿色和蓝色亮度的组合确定。
RGB图像是24位图像,其中红色、绿色和蓝色组分均为8位。
这将产生一千六百多万种颜色。
采用这些颜色,在精度上可以逼近(approximate)现实场景中图像像的真实颜色。
所以,RGB图像又称为真彩色图像。
RGB数组可以是double,uint8或uint16型的。
在double类型的RGB数组中,每一个颜色组分的值取0和1之间的数。
一个颜色组分(0,0,0)的像素显示为黑色,颜色组分为(1,1,1)的像素显示为白色。
每个像素的这3种颜色组分保存在数据数组的第三维上。
例如,像素(10,5)的红色、绿色和蓝色组分分别保存在RGB(10,5,1),RGB(10,5,2)和RGB(10,5,3)。
图2-4描述一幅double型的RGB图像。
图2-4RGB图像的颜色面板
要知道像素(2,3)处的颜色,可以查看保存在(2,3,1:
3)中的3个一组的RGB值。
假设(2,3,1)包含值0.5176,(2,3,2)包含值0.1608,(2,3,3)包含值0.0627,则像素(2,3)处的颜色为
0.51760.16080.0627
2.1.5图像类型转换(Imagetypeconversion)
对于有些操作,需要将图像转换为不同的图像类型。
例如,如果试图对一幅保存为索引格式的彩色图像进行滤波(filtering),应该首先将它转换为RGB格式。
对RGB图像使用滤波器时,MATLAB将对图像中的亮度值进行滤波,直到合适为止。
如果试图对索引图像滤波,MATLAB会简单地对索引图像矩阵中的索引值进行滤波,结果可能没有意义。
表2-1列出了图像处理工具箱中所有的图像转换函数(imageinversionfunction)。
表2-1图像转换函数
函数
描述
Dither
采用抖动的方法把灰度图像转换为二值图像或把RGB图转换为索引图像
Gray2ind
把灰度图像转换为索引图像
Grayslice
利用给定的灰度阈值,将灰度图像转换为索引图像
Im2bw
利用给定的灰度阈值,将灰度图像、索引图像或RGB图像转换为二值图像
Ind2gray
将索引图像转换为灰度图像
Ind2rgb
将索引图像转换为RGB图像
mat2gray
通过比例化数据,将矩阵中的数据转换为灰度图像
Rgb2gray
将RGB图像转换为灰度图像
Reb2ind
将RGB图像转换为索引图像
2.2图像数据(Imagedata)
包括图像数据保存类型和图像数据读写等方面的内容。
2.2.1图像的数据保存类型(Imagedatastoragetypes)
MATLAB中基本的数据结构是数组,它表示一个经过排序的实数(realnumber)或虚数(imaginarynumber)元素集合。
自然,适用于图像数据的表示,因为图像数据是一系列经过排序的颜色或灰度数据原集合。
MATLAB将大部分图像保存为二维数组(即矩阵),其中,数组的一个元素对应于所显示的图像中的一个像素。
例如,一个由200行300列不同颜色的点组成的图像,在MATLAB中保存为一个200×300的矩阵。
有些图像,比如RGB图像,需要用一个三维数组进行保存,其中第三维的第1个面表示红色的像素这度,第2个面表示绿色的像素亮度,第3个面表示蓝色的像素这度。
这一特点使得在MATLAB中处理图像与处理其他矩阵数据类型似,并且使得MATLAB的所有能力都可用于图像处理。
例如,可以用一般的矩阵脚标(footnote)索引从图像矩陈中选择一个单独的像素。
比如,下面的命令返回图像I中第2行第15列处像素的值。
I(2.15)
默认时,MATLAB把大部分数据保存为double型数组。
这些数组中的数据保存为双精度(doubleprecision)浮点型。
所有MATLAB函数都可以处理这些数组。
但是,对于图像处理,这一数据表示方式并不总是理想的。
图像中的像素个数可以很大,如,一个1000×1000的图像有一百万个像素。
因为每个像素至少表示一个数组元素,所以这幅图像将需要大约8MB内存空间。
为了减小内存需求(memoryrequirements),MATLAB支持将图像数据保存为8位或16位无符号整型(unsignedinteger)数组。
这些数组只需要double型数组八分之一或四分之一的内存。
对于uint8和uint16两种类型的图像数据,可以进行许多标准(standard)的MATLAB数组操作,包括:
·索引,包括逻辑索引;
·重塑(remodeling)、排序(sort)和聚合(polymerization);
·从MAT文件读取数据或者把数据写MAT文件;
·使用关系操作符(relationaloperator)。
有些MATLAB函数,如find,all,any,conv2,vonvn,fft2,fftn和sum函数接收uint8或uint16类型的数据,但是返回值为双精度格式。
但是,基本的算术操作符不接收uint8或uint16类型的数据。
例如,试图对两个uint8类型的图像A和B进行相加操作,将产生下面的错误。
C=A+B
?
?
?
Function’+’notdefinedforvariablesofclass’uint8’.
因为这些算术操作是许多图像处理操作的一个重要部分,所以图像处理工具箱中包含了支持对uint8,uint16及其他类型数据进行这些操作的函数。
表2-2概括了MATLAB根据不同的图像类型和存储类型(storagetype)将数据矩阵元素解释为像素颜色的方式。
表2-2矩阵元素解释为像素颜色的方式
图像类型
保存类型
解释
二值图像
Logical
元素值为0和1的数组
索引图像
double
元素值为[1,p]中整数的数组
Uint8或uint16
元素值为[0,p-1]中整数的数组
灰度图像
Double
元素值为浮点值的数组。
值一般在[0,1]中取值
Uint8或uint16
整型数组,值一般在[0,255]或[0,65535]中取值
RGB图像
double
m×n×3的数组,元素值为[0,1]中的浮点值
Uint8或uint16
m×n×3的数组,元素为[0,255]或[0,65535]中的整型值
2.2.2读写图像数据(Read-writeimagedata)
下面介绍如何读写图像数据。
内容包括:
·读取多种不同标准图形文件格式保存的数据;
·将数据写成多种不同标准图形文件格式(filelayout);
·查询图形图像文件(queryimagefiles),寻找保存在头字段中的信息;
·转换图像的存储类型;
·转换图像的文件格式。
1.读取图像数据(Readthedataofimage)
imread函数从任何受支持的图形图像文件格式和位深读取图像,大部分图像文件格式使用8位来保存像素值,读处内存时,MATLAB把它们保存为uint8型。
对于支持16位数据的文件格式,如PNG和TIFF,MATLAB把图像保存为uint16类型。
注意,对于索引图像,imreae函数总是把颜色映射读入到一个double型数组,即使图像数组自身是uint8或uint16类型时也是如此。
例如,下面的代码将一幅RGB图像读入到MATLAB工作空间,并用变量RGB表示。
RGB=imread(‘foottball.jpg’);
本例中,imread函数从文件的内容推测文件所使用的格式。
也可以将文件格式作为一个变量指定给 imread函数。
MATLAB支持许多通用的图形文件格式,如BMP,GIF,JPEG,PNG和TIFF等。
MATLAB支持几种图形文件格式,如HDF和TIFF,它们可以包含多幅图像。
默认时,imreae函数只从文件中输入第一幅图像。
要从文件中输入其他图像,需要使用文件格式支持的语句。
例如,使用TIFF文件时,可以将一个索引值与imread函数一起使用来确定文件中希望输入的图像。
本例从一个TIFF文件中读取27幅系列图像并把图像保存到一个四维数组中。
可以用imfinfo函数确定文件中保存的图像幅数。
mri=uint8(zeros(128,128,1,27));%预分配四维数组
forframe=1:
27
[mri(:
:
:
frame),map]=imread(‘mri.tif’,frame);
end
当文件含有多幅相关图像,比如时间序列图像(timesequenceimage)时,可以将它们保存为四维数组。
要求所有图像的大小相同。
2.写图形图像数据(Writegraphicimagedata)
函数imwrite将图像按某种支持的格式写入图形文件(graphicfile)。
Imwrite函数的大部分语法要求把图像名和文件名作为变量(variable)。
如果文件名中包含扩展名(extension-name),则MATLAB根据该扩展名推测需要的文件格式。
本例从一个MAT文件载入索引图像X和它的相关颜色查找表map,然后把图像作为一幅位图(bitmap)写到文件中。
loadclown
whos
NameSizeBytesClass
X200×300512000doublearray
Caption2×14chararray
map81×31944doublearray
Grandtotal64245elementsusing513948bytes
imwrite(X,map,’clown.bmp’)
与某些图形格式一起使用imwrite函数时,可以指定其他参数(parameter)。
例如,对于PNG文件,可以把位深(bitdepth)作为其他参数。
下面的例子把一幅灰度图像I写到一个4位PNG文件中。
imwrite(I,’clown.png’,’BitDepth’,4);
Imwrite函数使用表2-3所示的规则来确定输出图像的存储类型。
表2-3确定输出图像存储类型的规则
图像的存储类型
输出图像文件的存储类型
Logical
如果指定的输出图像文件格式支持1位图像,imwrite函数创建一个1位图像文件,如果指定的输出图像文件格式不支持1位图像,如FPEG,imwrite函数将图像转换为uint8灰度图像类型
Uint8
如果指定的输出图像文件格式支持8位图像,imwrite函数创建一个8位图像文件
Uint16
如果指定的输出图像文件格式支持16位图像(PNG或TIFF),imwrite函数创建一个16位的图像文件。
如果指定的输出图像文件格式不支持16位图像,imwrite函数将图像数据转换为uint8类型并创建一个8位图像文件
double
MATLAB将图像数据转换为uint8型并创建一个8位图像文件,因为大部分图像文件格式使用8位
3.查询一个图形文件(Inquiriesagraphics)
使用函数imfinfo可以获得图形文件的信息。
获取的信息与文件类型有关,但至少包括下面的内容;
·文件名(filename);
·文件格式(filelayout);
·文件格式的版本号(versionnumber);
·文件修改日期;
·文件大小,按字节计;
·图像宽度,按像素计;
·图像高度,按像素计;
·每像素的位数;
·图像类型:
RGB图像(真彩色)、灰度图像(灰度)或索引图像。
4.转换图像的存储类型(Convertimagestoragetypes)
使用MATLAB函数double,可以将uint8和uint16型数据转换为double双精度型。
但是,存储类型之间的转换改变了MATLAB和工具箱解释图像数据的方式。
如果希望生在的数组被合理解释图像数据,则需要在进行转换时调整和平衡数据。
为了便于转换存储类型,使用下面工具箱函数中的一个:
im2double,im2uint8或im2uint16。
这些函数自动控制(automaticcontrol)原始数据的调整和平衡。
如,下面的命令将一幅数据值在[0,1]范围内的双精度RGB图像转换为一幅数据大小在[0,255]范围内的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 实验 指导书