数字图像实验云南民族大学.docx
《数字图像实验云南民族大学.docx》由会员分享,可在线阅读,更多相关《数字图像实验云南民族大学.docx(76页珍藏版)》请在冰豆网上搜索。
数字图像实验云南民族大学
数字图像处理实验指导书
吴庆畅编
云南民族大学物理与电子电气信息工程学院
前言
图像是一种重要的信息源,图像处理的最终目的就是要帮助人类理解信息的内涵。
数字图像处理技术的研究内容涉及光学系统、微电子技术、计算机科学、数学分析等领域,是一门综合性很强的边缘学科。
随着计算机的迅猛发展,图像处理技术已经广泛应用于各个领域。
“数字图像处理”课程内容主要包括利用计算机对图像信息进行图像采集、图像变换、图像增强与恢复、图像分割、图像分析与理解、图像压缩、图像传输等各种处理的基本理论、典型方法和实用技术。
通过本课程的学习,可使学生掌握有关图像处理与图像分析的基本概念、基础理论、实用技术和典型方法。
通过该系列实验教学与实践,使学生了解和掌握利用各种图像采集设备__图像扫描仪、数码照相机、录像机、数码摄像机等获取多种格式的静态、动态图像数据的方法及手段,了解图像增强、图像分割、图像理解和分析算法的物理意义;了解图像传输、图像编码等相关技术的基本原理、软/硬件构成以及典型的应用,为将来的研究和应用打下良好的基础。
应用于图像处理的计算机软件技术平台很多,如VC++、MATLAB等。
本实验指导书选用MATLAB做实验平台,MATLAB是一种基于向量(数组)而不是标量的高级程序语言,而数字图像实际上就是一组有序的离散数据,从而MATLAB从本质上就可以提供对图像处理的技术支持。
本实验指导书共有14个实验,编选原则是根据教学大纲和课程教材的教学内容确定,指导老师可根据学时安排等具体情况灵活安排相关实验。
书后附有MATLAB数字图像处理基础,可在实验时参考。
编写工作得到学院领导及实验中心的大力支持和帮助,在此深表感谢。
编者
实验一、数字图像获取
一、实验目的和要求
1、掌握使用扫描仪等数字化设备以及计算机获取数字图像的方法;
2、修改图像的存储格式。
二、实验设备
1、计算机;
2、扫描仪(或数码相机、数字摄象机)及其驱动程序盘;
3、图像处理软件(画图,photoshop,Microsoftphotoedit等);
4、记录用的笔、纸。
三、实验原理
用扫描仪获取图像也是图像的数字化过程的方法之一。
扫描仪按种类可以分为手持扫描仪,台式扫描仪和滚筒式扫描仪(鼓形扫描仪)。
扫描仪的主要性能指标有x、y方向的分辨率、色彩分辨率(色彩位数)、扫描幅面和接口方式等。
各类扫描仪都标明了它的光学分辨率和最大分辨率。
分辨率的单位是dpi,dpi是英文DotPerInch的缩写,意思是每英寸的像素点数。
扫描仪工作时,首先由光源将光线照在欲输入的图稿上,产生表示图像特征的反射光(反射稿)或透射光(透射稿)。
光学系统采集这些光线,将其聚焦在CCD上,由CCD将光信号转换为电信号,然后由电路部分对这些信号进行A/D转换及处理,产生对应的数字信号输送给计算机。
当机械传动机构在控制电路的控制下,带动装有光学系统和CCD的扫描头与图稿进行相对运动,将图稿全部扫描一遍,一幅完整的图像就输入到计算机中去了。
图1.1扫描仪的工作原理
扫描仪扫描图像的步骤是:
首先将欲扫描的原稿正面朝下铺在扫描仪的玻璃板上,原稿可以是文字稿件或者图纸照片;然后启动扫描仪驱动程序后,安装在扫描仪内部的可移动光源开始扫描原稿。
为了均匀照亮稿件,扫描仪光源为长条形,并沿y方向扫过整个原稿;照射到原稿上的光线经反射后穿过一个很窄的缝隙,形成沿x方向的光带,又经过一组反光镜,由光学透镜聚焦并进入分光镜,经过棱镜和红绿蓝三色滤色镜得到的RGB三条彩色光带分别照到各自的CCD上,CCD将RGB光带转变为模拟电子信号,此信号又被A/D变换器转变为数字电子信号。
至此,反映原稿图像的光信号转变为计算机能够接受的二进制数字电子信号,最后通过串行或者并行等接口送至计算机。
扫描仪每扫一行就得到原稿x方向一行的图像信息,随着沿y方向的移动,在计算机内部逐步形成原稿的全图。
在扫描仪的工作过程中,有两个元件起到了关键的作用。
一个是CCD,它将光信号转换成为电信号;另一个是A/D变换器,它将模拟电信号变为数字电信号。
CCD是ChargeCoupleDevice的缩写,称为电荷耦合器件,它是利用微电子技术制成的表面光电器件,可以实现光电转换功能。
CCD在摄像机、数码相机和扫描仪中应用广泛,只不过摄像机中使用的是点阵CCD,即包括x、y两个方向用于摄取平面图像,而扫描仪中使用的是线性CCD,它只有x一个方向,y方向扫描由扫描仪的机械装置来完成。
CCD芯片上有许多光敏单元,它们可以将不同的光线转换成不同的电荷,从而形成对应原稿光图像的电荷图像。
如果我们想增加图像的分辨率,就必须增加CCD上的光敏单元数量。
实际上,CCD的性能决定了扫描仪的x方向的光学分辨率。
A/D变换器是将模拟量(Analog)转变为数字量(Digital)的半导体元件。
从CCD获取的电信号是对应于图像明暗的模拟信号,就是说图像由暗到亮的变化可以用从低到高的不同电平来表示,它们是连续变化的,即所谓模拟量。
A/D变换器的工作是将模拟量数字化,例如将0至1V的线性电压变化表示为0至9的10个等级的方法是:
0至小于0.1V的所有电压都变换为数字0、0.1至小于0.2V的所有电压都变换为数字1……0.9至小于1.0V的所有电压都变换为数字9,实际上,A/D变换器能够表示的范围远远大于10,通常是2^8=256、2^10=1024或者2^12=4096。
如果扫描仪说明书上标明的灰度等级是10bit,则说明这个扫描仪能够将图像分成1024个灰度等级,如果标明色彩深度为30bit,则说明红、绿、蓝各个通道都有1024个等级。
显然,该等级数越高,表现的彩色越丰富。
四、实验步骤
1、扫描仪与计算机和打印机的连接;
2、打开计算机,安装扫描仪的驱动程序;
3、分别相描一幅二值、灰度和彩色图像;
4、调整彩色图像的色彩;
5、将获得的图像的格式转换为“*.gif”的格式,保存或拷贝到MATLAB程序组根目录的“work”文件夹中,以便后面的实验做为“原图像”利用;
6、记录和整理实验报告。
五、实验报告内容
1、叙述操作过程
2、提交用扫描仪扫描得到的图像。
六、思考题
1、扫描仪有哪些重要指标?
2、试述扫描仪的工作原理。
3、你使用过哪些图像获取设备呢?
实验二、图像的基本统计指标
一、实验目的和要求:
1、熟悉MATLAB图像处理工具箱的使用;
2、掌握图像读取、显示和保存的方法;
3、了解图像的统计指标及其在图像处理中的意义
二、实验设备
1、计算机;
2、MATLAB软件;
3、记录用的笔、纸。
三、实验原理
1、利用MATLAB图像处理工具箱读写和显示图像文件以及有关统计参数
采用imread函数读出图像;采用imwrite函数写入图像;采用imshow函数显示图像。
利用iminfo函数了解图像的基本信息;利用corr2、impixel、mean2、pixval等函数计算图像的有关统计参数。
详细用法参考相关书籍
2、计算图像的有关统计参数
图像的大小:
图像的大小是图像的重要属性,数值是宽度M(单位:
像素)与高度N(单位:
像素)的乘积。
图像的灰度平均值:
该指标是图像f的所有灰度值得算术平均值,反映了一幅图像的平均亮度
协方差矩阵:
设
是大小为M*N的两幅图像,则两幅图像之间的协方差矩阵为:
协方差矩阵是两个图像之间的相关程度的一种度量。
协方差矩阵为零时表明两图之间相互独立,反之表示两图像之间相互依赖。
越大,相关程度越强。
若f=g,则单幅图像的协方差即为该图像的自协方差
图像的灰度标准差:
由于方差按照数据的平方来计算,与灰度值相差大,难以直观地衡量,所以对方差开平方得到标准差SD,标准差是评价离散度的较好指标。
图像的相关系数:
协方差可以作为两幅图像相关性的一种度量,但它受到两图像像素数值的影响。
因此,经常将其归一化成相关系数。
两个图像
的相关系数是描述图像相关程度的统计量,反映了两图像相互的线性联系密切程度的统计参数。
相关系数在0~1范围内变动,其值越接近1,两个图像间的线性相关越密切;其值越接近0,相关越不密切。
四、实验步骤
1、图像文件的读取
格式:
A=imread(’文件名.文件格式’)参考程序:
clear;%清除MATLAB所有的工作平台
closeall;%关闭已打开的图形窗口
I=imread('pout.tif');%读取图像
imshow(I);%显示图像
2、检查内存中的图像
格式:
whos
3、保存图像
格式:
imwrite(A,’文件名.文件格式)
参考程序:
将pout.tif图像保存为pout1.png;
imwrite(I,’pout1.png’);
I1=imread(‘pout1.png’);
imshow(I1);
4、检查新生成文件的内容
格式:
imfinfo(‘文件名.文件格式’)
参考程序:
查看刚生成的图像文件pout1.png的相关信息:
imfinfo(’pout1.png’)%imfinfo函数语句行尾不加分号
5、分别使用相关函数计算读入图像的相关系数、像素的平均值、像素的标准偏移等统计值或者根据实验原理部分的公式自编函数计算统计值并和前面的值比较(参考程序略)。
五、实验报告内容
1、说明利用MATLAB图像处理工具箱读写和显示图像文件、计算图像文件的有关统计参数的原理;
2、记录读取图像的统计数据;
3、总结和完善上述图像处理的程序;
4、回答思考题,总结实验心得体会。
六、思考题
1、说明图像统计特征对图像处理的意义。
2、比较不同图像的统计特征的差别,并分析原因。
实验三、图像的傅立叶变换
一、实验目的
1、了解图像变换的意义和手段;
2、熟悉傅里叶变换的性质;
3、熟练掌握FFT变换及其应用;
4、通过实验了解二维频谱的分布特点;
5、通过本实验掌握利用MATLAB编程实现数字图像的傅立叶变换。
二、实验设备
1、计算机;
2、MATLAB软件;
3、记录用的笔、纸。
4、移动式存储器(软盘、U盘等)。
三、实验原理
1、应用傅立叶变换进行图像处理
傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。
通过实验培养这项技能,将有助于解决大多数图像处理问题。
2、傅立叶(Fourier)变换的定义
二维Fourier变换和二维离散傅立叶变换为:
图像的傅立叶变换与一维信号的傅立叶变换变换一样,有快速算法,具体参见相关书目,有关傅立叶变换的快速算法的程序不难找到。
实际上,现在有实现傅立叶变换的芯片,可以实时实现傅立叶变换。
四、实验步骤
1、打开计算机,启动MATLAB程序;
2、利用MatLab工具箱中的函数编制FFT频谱显示的函数;
3、a).调入、显示“实验一”获得的图像;图像存储格式应为“.gif”;
b)对这三幅图像做FFT并利用自编的函数显示其频谱;
4、实现数字图像傅立叶变换的部分参考程序:
I=imread(‘原图像名.gif’);%读入原图像文件
imshow(I);%显示原图像
fftI=fft2(I);%二维离散傅立叶变换
sfftI=fftshift(fftI);%直流分量移到频谱中心
RR=real(sfftI);%取傅立叶变换的实部
II=imag(sfftI);%取傅立叶变换的虚部
A=sqrt(RR.^2+II.^2);%计算频谱幅值
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;%归一化
figure;%设定窗口
imshow(A);%显示原图像的频谱
五、实验报告内容
1、说明FFT的原理;
2、叙述利用MATLAB完成数字图像的FFT的实验过程。
3、提交实验的原始图像和结果图像。
六、思考题
1、图像的二维频谱在显示和处理时应注意什么?
2、试就二维离散傅立叶变换的性质应用举例。
实验四、图像的离散余弦变换和哈达玛变换
一、实验目的
1、了解图像离散余弦变换和逆变换的原理;
2、理解离散余弦变换系数的特点;
3、理解离散余弦变换在图像数据压缩中的应用;
4、理解哈达玛变换的原理。
二、实验设备
1、计算机;
2、MATLAB软件;
3、记录用的笔、纸。
4、移动式存储器(软盘、U盘等)。
三、实验原理
1.离散余弦变换
离散余弦变换的变换核为余弦函数,计算速度快,有利于图像压缩和其他处理。
在大多数情况下,DCT主要用于图像的压缩操作中,静态图像压缩标准JPEG就是采用的DCT变换。
二维离散余弦变换的正反变换为:
2.离散哈达玛变换
哈达玛变换本质上是一种特殊排序的沃尔什变换,哈达玛变换矩阵也是一个方阵,只包括+1和-1两个矩阵元素,各行或各列之间彼此是正交的,即任意二行相乘或二列相乘后的各数之间必定为零。
哈达玛变换的最大优点在于它的变换核矩阵具有简单的递推关系,即高阶矩阵可以用两个低阶矩阵求得。
最低阶(N=2)的哈达玛矩阵为:
2N阶哈达玛矩阵H2N与N阶哈达玛矩阵HN之间的递推关系为:
四、实验步骤
1、打开计算机,启动MATLAB程序;
2、对一幅图像进行离散余弦变换和反变换。
部分参考代码:
RGB=imread('autumn.tif');%loadimage
figure
(1),imshow(RGB);
I=rgb2gray(RGB);%将RGB图像转化为灰度图像
figure
(2),imshow(I);%显示灰度图像
J=dct2(I);%余弦变换
figure(3),imshow(log(abs(J)),[]),colormap(jet(64)),colorbar;
J(abs(J)<10)=0;%将DCT变换值小于10的元素设为0
K=idct2(J)/255;
figure(4),imshow(K);
3、对一幅图像进行哈达玛变换。
部分参考程序(以一幅256×256的图像为例,首先将其分割为1024个8×8的子图像块后,然后对每个图像块进行变换,再按照每个系数的方差来排次序,保留方差较大的系数,舍去方差较小的系数。
保留原系数的二分之一,即32个系数,进行2:
1的压缩。
)
cr=0.5;%设置压缩比
sig=imread('cameraman.tif');
sig=double(sig)/255;%归一化图像
figure
(1),imshow(sig);
[m_sig,n_sig]=size(sig);%求出图像大小
sizi=8;%给出图像分快尺寸和保留系数的个数
snum=64;
t=hadamard(sizi);%分块和进行哈达玛变换
hdcoe=blkproc(sig,[sizisizi],'P1*x*P2',t,t');
coe=im2col(hdcoe,[sizisizi],'distinct');%重新排列系数
coe_temp=coe;
[YInd]=sort(coe);
[m,n]=size(coe);%舍去具有较小方差的系数
snum=snum-snum*cr;
fori=1:
n
coe_temp(Ind(1:
snum),i)=0;
end
re_hdcoe=col2im(coe_temp,[sizisizi],[m_sign_sig],'distinct');%重建图像
re_sig=blkproc(re_hdcoe,[sizisizi],'P1*x*P2',t',t);
re_sig=double(re_sig)/64;%系数归一化
figure
(2);
imshow(re_sig);
error=sig.^2-re_sig.^2;%计算归一化图像的均方差
MSE=sum(error(:
))/prod(size(re_sig));
五、实验报告内容
1、说明离散余弦正、反变换的原理;
2、叙述实验过程,完善各程序。
3、提交实验的原始图像和结果图像。
4、回答思考题
六、思考题
1、分析重建图像、误差图像和DCT系数的关系。
2、实验步骤3中若将图像压缩比减少到8:
1,压缩比cr应设置为多少?
实验五、图像的空域变换增强
一、实验目的
1、掌握灰度直方图的概念及其计算方法;
2、掌握直方图均衡化和直方图规定化的计算过程;
3、熟悉MATLAB中图像增强的相关函数;
二、实验设备
1、计算机;
2、MATLAB软件;
3、记录用的笔、纸。
4、移动式存储器(软盘、U盘等)。
三、实验原理
灰度直方图(histogram)是灰度级的函数,它表示图像中具有每种灰度级的
象素的个数,反映图像中每种灰度出现的频率。
一般说来,灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频率,是图像的最基本的统计特性。
从概率论的观点来理解,灰度出现的频率可看作其出现的概率,这样直方图就对应于概率密度函数PDF(ProbabilityDensityFunction),而概率分布函数就是直方图的累积和,即概率密度函数的积分。
1.直方图均衡化
直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。
设灰度变换s=T(r)为斜率有限的非减连续可微函数,它将输入图像A(x,y)转换为输出图像B(x,y),输入图像的直方图为Ha(r),输出图像的直方图为Hb(s),它们的关系如下:
直方图均衡化的基本思想是把原始图像的直方图变换成均匀分布的形式图像灰度值的动态范围,从而达到了增强图像整体对比度的效果。
具体方法
1)列出原始图像的灰度级Sk,k=0,1…L-1;其中L是灰度级的个
2)统计原始图像各灰度级的象素数目nk.。
3)计算原始图像直方图各灰度级的频率数。
4)计算原始图像的累计直方图。
5)取整计算。
6)确定映射关系。
7)统计新直方图各个灰度级的象素数目nk。
8)计算新的直方图。
2.灰度变换
灰度变换是图像增强的另一种重要手段,它可使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显。
1)线性灰度变换
(1)曝光不足的图像增强
变换关系为:
(2)灰度级集中的图像增强
变换关系为:
2)分段线性灰度变换
为了突出图像中感兴趣的目标或者灰度区间,相对抑制那些不感兴趣的灰度区域,而不牺牲其他灰度级上的细节。
例如:
设图像中有30个灰度级,分别为1,2,…30,增强灰度级为(10,20)区域的图像细节。
变换关系为:
四、实验步骤
1、打开计算机,启动MATLAB程序;
2、调入数字图像,并进行计算机均衡化处理;
(1)直方图均衡化增强图像对比度的部分参考程序:
I=imread(‘原图像名.gif);%读入原图像
J=histeq(I);%对原图像进行直方图均衡化处理
Imshow(I);%显示原图像
Title(‘原图像’);%给原图像加标题名
Figure;imshow(J);%对原图像进行屏幕控制;显示直方图均衡化后的图像
Title(‘直方图均衡化后的图像’);%给直方图均衡化后的图像加标题名Figure;subplot(1,2,1);%对直方图均衡化后的图像进行屏幕控制;作一幅子图作为并排两幅图的第1幅图
Imhist(I,64);%将原图像直方图显示为64级灰度
Title(‘原图像直方图’);%给原图像直方图加标题名
Subplot(1,2,2);%作第2幅子图
Imhist(J,64);%将均衡化后图像的直方图显示为64级灰度
Title(‘均衡变换后的直方图’);%给均衡化后图像直方图加标题名
(2)通过灰度变换调整图像对比度部分参考程序:
I=imread('tire.tif');
J=imadjust(I,[0.2,0.4],[]);
subplot(2,2,1),imshow(I);
subplot(2,2,2),imshow(J);
subplot(2,2,3),imhist(I);
subplot(2,2,4),imhist(J);
3、显示原图像的直方图和经过均衡化处理过的图像直方图。
4、记录和整理实验报告
五、实验报告内容
1、叙述实验过程,完善各程序;
2、提交实验的原始图像和结果图像,总结各方法的特点。
3、完成思考题。
六、思考题
1、直方图是什么概念?
它反映了图像的什么信息?
2、直方图均衡化是什么意思?
它的主要用途是什么?
3、用matlab实现对一幅灰度图像进行分段线形变换处理,试比较与直方图均衡化处理的异同。
实验六、图像的空域滤波增强处理
一、实验目的
1、了解空域滤波增强的基本原理;
2、掌握平滑滤波器和锐化滤波器的使用;
3、掌握图像中值滤波增强的使用;
4、掌握低通滤波器和高通滤波器的使用
二、实验设备
1、计算机;
2、MATLAB软件;
3、记录用的笔、纸。
4、移动式存储器(软盘、U盘等)。
三、实验原理
1、空域滤波增强
空域滤波是在图像空间中借助模板对图像进行领域操作,处理图像每一个像素的取值都是根据模板对输入像素相应领域内的像素值进行计算得到的。
空域滤波基本上是让图像在频域空间内某个范围的分量受到抑制,同时保证其他分量不变,从而改变输出图像的频率分布,达到增强图像的目的。
空域滤波一般分为线性滤波和非线性滤波两类。
线性滤波器的设计常基于对傅立叶变换的分析,非线性空域滤波器则一般直接对领域进行操作。
各种空域滤波器根据功能主要分为平滑滤波器和锐化滤波器。
平滑可用低通来实现,平滑的目的可分为两类:
一类是模糊,目的是在提取较大的目标前去除太小的细节或将目标内的小肩端连接起来;另一类是消除噪声。
锐化可用高通滤波来实现,锐化的目的是为了增强被模糊的细节。
结合这两种分类方法,可将空间滤波增强分为四类:
1)线性平滑滤波器(低通)
2)非线性平滑滤波器(低通)
3)线性锐化滤波器(高通)
4)非线性锐化滤波器(高通)
空间滤波器都是基于模板卷积,其主要工作步骤是:
(1)将模板在图中移动,并将模板中心与图中某个像素位置重合;
(2)将模板上的系数与模板下对应的像素相乘;
(3)将所有乘积相加;
(4)将和(模板的输出响应)赋给图中对应模板中心位置的像素。
一、平滑滤波器
(1)线性平滑滤波器
线性低通平滑滤波器也称为均值滤波器,这种滤波器的所有系数都是正数,对3×3的模板来说,最简单的是取所有系数为1,为了保持输出图像任然在原来图像的灰度值范围内,模板与象素邻域的乘积都要除以9。
MATLAB提供了fspecial函数生成滤波时所用的模板,并提供filter2函数用指定的滤波器模板对图像进行运算。
(2)非线性平滑滤波器
中值滤波器是一种常用的非线性平滑滤波器,其滤波原理与均值滤波器方法类似,但计算的不是加权求和,而是把领域中的图像的象素按灰度级进行排序,然后选择改组的中间值作为输出象素值。
MATLAB提供了medfilt2函数来实现中值滤波。
二、锐化滤波器
图像平滑往往使图像中的边界、轮廓变得模糊,为了减少这类不利效果的影响,需要利用图像锐化技术,使图像的边缘变得清晰。
(