电子专业数字图像处理实验汇总.docx
- 文档编号:28902499
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:57
- 大小:1.89MB
电子专业数字图像处理实验汇总.docx
《电子专业数字图像处理实验汇总.docx》由会员分享,可在线阅读,更多相关《电子专业数字图像处理实验汇总.docx(57页珍藏版)》请在冰豆网上搜索。
电子专业数字图像处理实验汇总
数字图像处理
实验讲义
(DigitalImageProcessing)
实验一图像的显示与格式变换
一、实验目的
了解Matlab软件/语言,学会使用Matlab的图像处理工具箱(ImageProcessingToolbox),使学生初步具备使用本软件处理图像信息的能力,并能够利用Matlab完成本课程规定的其他实验和作业。
熟悉常用的图像文件格式与格式转换,熟悉图像矩阵的显示方法(灰度、索引、黑白、彩色),熟悉图像矩阵的格式转换。
二、实验要求
学生应当基本掌握Matlab的操作,掌握Matlab图像处理工具箱中最常用的函数的用法。
练习图像读写命令imread和imwrite并进行图像文件格式间的转换。
三、实验设备与软件
(1)硬件:
学生每人一台PC机。
(2)软件:
Matlab软件,包括图像处理工具箱;实验所需的图片。
四、实验内容与步骤
(1)学会Matlab的基本操作;
(2)使用read函数读入图像rice.png,pout.tif;
(3)使用figure函数创建窗口;
(4)使用image/imshow函数显示图像;
(5)使用colorbar函数在图像的右侧显示图像的亮度条。
五、思考题
(1)简述Matlab的特点。
(2)Matlab可以支持哪些图像文件格式?
(3)说明函数imread的用途格式以及各种格式所得到图像的性质。
(4)用I=imread(‘rice.png’)命令得到的图像能否进行算术运算?
六、实验报告要求
描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果,并进行必要的讨论,须包括原始图像及其计算/处理后的图像。
七、实验图像
rice.pngpout.tif
实验一步骤与讲解
1.matlab7.0自带测试图片目录D:
\MATLAB7\toolbox\images\imdemos(也可能安装在C盘)
2.测试图片格式各有不同,rice.png,pout.tif,cameraman.tif,等。
可以找到这些图片右击鼠标查看属性,即可知道个图片的格式。
3.image 函数是MATLAB提供的最原始的图像显示函数,如:
a=[1,2,3,4;4,5,6,7;8,9,10,11,12];
image(a);
4.读入图片、显示图片的matlab命令
f=imread(‘rice.png’);%读入图片
size(f)%得出图片的行数和列数
imshow(f)%显示图片
注意,命令行后面有无分号“;”,无分号的Matlab会立即显示该行中指的运算的结果,有分号则不运算。
分号不能是中文状态下的”;”,必须在英文状态下输入“;”
在Matlab的工作目录或者搜索路径下的图片可以直接打开,不用填写文件目录。
否则f=imread(‘D:
\MATLAB7\toolbox\images\imdemos\rice.png’).
5.使用figure函数创建窗口;
f=imread(‘rice.png’);
g=imread('rice.png');
imshow(f),figure,imshow(g)
%当用imshow显示另一幅图像时会使用新图像替换旧图像,而使用figure函数则可以保持第一副图像同时显示第二幅图像。
注意只要用逗号或者分号正确的分隔开了不同的命令,一行中就可以写几条命令。
任何时候都可以使用分号来取消一个命令行的输出。
6.使用colorbar函数在图像的右侧显示图像的亮度条。
f=imread(‘rice.png’);
imshow(f)
colorbar%此时图片右侧显示亮度条。
实验二图像的运算
一、实验目的
学会使用Matlab对图像作几何运算,使学生掌握图像点运算和代数运算的实现方法、体会图像运算效果。
了解几种图像几何运算的简单应用,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。
二、实验要求
了解Matlab工具箱中关于图像运算的函数;学生应当完成对于给定图像进行点运算、代数运算及几何运算等,并能够正确地评价处理的结果,能够从理论上做出合理的解释。
三、实验设备与软件
(1)硬件:
学生每人一台PC机。
(2)软件:
Matlab软件,包括图像处理工具箱;实验所需的图片。
四、实验内容与步骤
(一)实验内容
(1)选择一幅图像,通过图像点运算改变对比度。
(2)选择一幅图像,做加、减、乘、除代数运算,
(3)选择一幅图像,改变图像大小,分别将原图像放大1.5倍和缩小0.5倍。
(4)选择一幅图像,分别进行顺时针和逆时针旋转任意角度,观察显示效果。
(5)通过交互式操作,从一幅图像中剪切一个矩形区域。
(6)图像镜像变换,教材43页例题3.2
(7)图像旋转变换,教材46页例题3.3
(二)实验步骤
(1)图像点运算
读入图像“rice.png”,通过图像点运算改变对比度。
rice=imread('rice.png');
subplot(131),imshow(rice);
I=double(rice);%double把任何类型数据转换成双精度数值,32位
J=I*0.43+60;
rice2=uint8(J);
subplot(132),imshow(rice2);
J=I*1.5-60;
rice3=uint8(J);
subplot(133),imshow(rice3);
(2)图像的代数运算
a加法运算
图像相加一般用于对同一场景的多幅图像求平均效果,以便有效地降低具有叠加性质的随机噪声。
直接采集的图像品质一般都较好,不需要进行加法运算处理,但是对于那些经过长距离模拟通信方式传送的图像(如卫星图像),这种处理是必不可少的。
在MATLAB7.0中,如果要进行两幅图像的加法,或者给一幅图像加上一个常数,可以调用imadd函数来实现。
imadd函数将某一幅输入图像的每一个像素值与另一幅图像相应的像素值相加,返回相应的像素值之和作为输入图像。
imadd函数的调用格式可参考图像处理的工具箱。
下面的程序可将图1两幅图像叠加在一起,叠加效果如图2所示。
imshow('rice.png');
imshow('cameraman.tif');
I=imread('rice.png');
J=imread('cameraman.tif');
K=imadd(I,J,'uint16');
imshow(K,[])
图1图2
给图像的每一个像素加上一个常数可以使图像的亮度增加。
例如以下程序示例的处理效果如图3所示。
I=imread('rice.png');
J=imadd(I,50);
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(J);
图3
b减法运算
图像减法也称为差分方法,是一种常用于检测图像变化及运动物体的图像处理方法。
图像减法可以作为许多图像处理过程的准备步骤。
例如,可以使用图像减法来检测一系列相同场景图像的差异。
图像减法与阈值化处理的综合使用通常是建立机器视觉系统最有效的方法之一。
当然,在利用图像减法处理图像时,往往需要考虑背景的更新机制,尽量补偿因天气、光线等因素对图像显示效果造成的影响。
在MATLAB7.0中,使用imsubtract函数可以将一幅图像从另一幅图像中减去,或者从一幅图像中减去一个常数。
imsubtract函数将一幅输入图像的像素值从另一幅输入图像相应的像素值中减去,再将相应的像素值之差作为输出图像相应的像素值。
以下的程序代码示例首先根据原始图像生成其背景亮度图像,然后再从原始图像中将背景亮度图像减去,从而生成如图4所示的图像。
I=imread('rice.png');
blocks=blkproc(I,[3232],'min(x(:
))');
background=imresize(blocks,[256256],'bilinear');%双线性(bilinear)插值
Ip=imsubtract(I,background);
imshow(Ip,[])
图4
1.x是一个二维矩阵,x(:
)表示将矩阵中的数据以一列输出
例如x=[123;456];
x(:
)
ans=
1
4
2
5
3
6
2.blkproc()对图像进行分块处理函数
pic=imread('lena.bmp');
img=blkproc(pic,[8,8],'dct2');
该例中把lena.bmp图片分成8*8像素块进行dct2变换。
3.imresize()函数用于对图像做缩放处理
B=imresize(A,[numrowsnumcols])
numrows和numcols分别指定目标图像的高度和宽度。
显而易见,由于这种格式允许图像缩放后长宽比例和源图像长宽比例不相同,因此所产生的图像有可能发生畸变。
B=imresize(A,m)返回的图像B的长宽是图像A的长宽的m倍,即缩放图像。
m大于1,则放大图像;m小于1,缩小图像。
c乘法运算
两幅图像进行乘法运算可以实现掩模操作,即屏蔽掉图像的某些部分。
一幅图像乘以一个常数通常被称为缩放,这是一种常见的图像处理操作。
如果使用的缩放因数大于1,那么将增强图像的亮度,如果因数小于1则会使图像变暗。
缩放操作通常将产生比简单添加像素便宜量自然得多的明暗效果。
这是因为该操作能够更好的维持图像的相关对比度。
此外,由于时域的卷积或相关运算与频域的乘积运算对应,因此乘法运算有时也作为一种技巧来实现卷积或相关处理。
在MATLAB7.0中,可以使用immultiply函数实现两幅图像的乘法。
immultiply函数将两幅图像相应的像素值进行元素对元素的乘法操作,并将乘法的运算结果作为输出图像相应的像素值。
例如,以下程序示例将使用给定的缩放因数对图5所示的图像进行缩放,从而得到如图6所示的较为明亮的图像。
I=imread('moon.tif');
I16=uint16(I);
J=immultiply(I16,I16);
imshow(I),figure,imshow(J)
图5缩放前图6缩放后
d除法运算
除法运算可用于校正成像设备的非线性影响,这在特殊形态的图像(如断层扫描等医学图像)处理中经常用到。
图像除法也可以用来检测两幅图像间的区别,但是除法操作给出的是相应像素值的变化比率,而不是每个像素的绝对差异,因而图像除法操作也称为比率变换。
在MATLAB7.0中,可以使用imdivide函数进行两幅图像的除法。
imdivide函数对两幅输入图像的所有相应像素执行元素对元素的除法操作(点除),并将得到的结果作为输出图像的相应像素值。
以下程序代码示例将图7的两幅图进行除法操作,得到如图8所示的效果图。
I=imread('rice.png');
subplot(1,2,1),imshow(I);
blocks=blkproc(I,[3232],'min(x(:
))');
background=imresize(blocks,[256256],'bilinear');
Ip=imdivide(I,background);
subplot(1,2,2),imshow(Ip,[])
a图像一b图像二
图7两幅待相除的图像图8相除后的图像
(3)图像的插值运算
MATLAB7.0中的imresize函数和imrotate函数用于二维图像的差值运算,MATLAB7.0的图像处理工具箱提供了3种插补方法:
近邻(nearestneighbor)插值
双线性(bilinear)插值
双立方(bicubic)插值
这三种插补方法的运算方式基本类似。
对于每种插补方法,为了确定插值像素点的数据值,用户必须在输入图像中查找到与输出像素相应的点。
但是上述三种插值方法的主要区别在于其对像素点赋值内容的不同:
对于近邻插值来说,输出像素的赋值为当前点的像素点。
对于双线性插值来说,输出像素的赋值为2*2矩阵所包含的有效点的加权平均值。
对于双立方插值来说,输出像素的赋值为4*4矩阵所包含的有效点的加权平均值。
(4)调整图像的大小
改变图像的大小可用imresize函数来调整。
imresize函数主要特点有:
可以指定输出图像的大小。
可以指定插值方法。
可以指定滤波器来阻止混淆。
a指定输出图像的大小
指定输出图像大小的方法有两种:
一是指定放大因子,二是指定输出图像的维数。
以下程序代码示例用指定放大因子的方法说明imresize函数的使用用法,并将原图像放大了1.5倍,其效果如图9所示。
a改变前b改变后
图9图像大小改变前、后的效果对比
b指定插值方法
在默认的情况下,imresize函数可用最近邻插值法来指定输出图像的像素值。
当然,也可以指定其他的插值方法,以下命令行用imresize函数指定了双线性插值方法。
Y=imresize(X,[100150],’bilinear’)
(5)图像旋转变换,完成教材46页例题3.3程序
可通过imrotate函数来旋转图像。
imrotate函数主要包括两个参数:
需要旋转的图像和旋转的角度。
如果指定一个正的旋转角度,那么imrotate函数将使用指定的插值方法和旋转角度将图像逆时针旋转;如果指定一个负值,那么将按顺时针方向旋转。
如果命令中没有指定插补方法,则函数采用默认的最近邻插补方法。
例如以下的程序代码示例将ic.tif图像旋转35°,其旋转效果如图10所示。
I=imread('circuit.tif');
J=imrotate(I,35,'bilinear');
imshow(I);
figgure,imshow(J);
a旋转前b旋转后
图10图像旋转前、后的显示效果比较
(6)图像镜像变换,完成教材43页例题3.2程序
五、思考题
(1)简述图像进行代数运算和几何运算特点。
(2)结合实验内容,定性评价图像经过几何运算后的效果以及代数运算和几何运算的适用场合。
六、实验报告要求
描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果,并进行必要的讨论,须包括原始图像及其计算/处理后的图像。
实验三图像的增强
一、实验目的
学习常见的图像增强的方法,并实际体会图像增强前后画质的变化;了解几种不同增强方式用于不同图像处理所取得的效果,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。
二、实验要求
利用Matlab工具箱中关于图像增强的函数,计算本指导书中指定图像的直方图,并对其进行灰度增强处理,自己编写程序实现Matlab工具箱中函数以外的图像增强算法,对于本指导书中指定的图像进行处理。
三、实验设备与软件
(1)硬件:
学生每人一台PC机。
(2)软件:
Matlab软件,包括图像处理工具箱;实验所需的图片。
四、实验内容与步骤
(一)实验内容
(1)选择一幅对比度不足的图像,进行灰度变换,增强对比度,显示增强前后的图像及其直方图;
(2)选择一幅直方图不均匀的图像,进行直方图均衡化,显示处理前后的图像及其直方图;
(3)选择一副直方图不均匀的图像,进行直方图规定化,显示处理前后的图像及其直方图。
(二)实验步骤
(1)图像的对比度调整
MATLAB7.0图像处理工具箱中的imadjust函数可以实现对图像的对比度进行调整。
imadjust函数调用模式为J=imadjust(I,[low_inhigh_in],[low_outhigh_out],gamma)
其中low_inhigh_in指定输入图像需要调整的灰度范围,low_outhigh_out指定输出图像的灰度范围。
gamma描述I和J关系曲线的形状,默认时,gamma=1,表示线性变换。
说明:
使用imadjust函数时,按照以下两个步骤
1、绘制直方图,观察灰度范围;
2、将灰度范围转换为0.0-1.0之间的分数。
例:
I=imread(‘pout.tif’);
subplot(2,2,1);imshow(I);
subplot(2,2,2);imhist(I);%imhist该函数用于获取图像数据直方图
J=imadjust(I,[0.30.7],[01]);
subplot(2,2,3);imshow(J);
subplot(2,2,4);imhist(J);
注意区分大小写
注释:
subplot(m,n,p)或者subplot(mnp)。
subplot是将多个图画到一个平面上的工具。
其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一列的,一共m行,如果m=2就是表示2行图。
p表示图所在的位置,p=1表示从左到右从上到下的第一个位置。
简单的例子
把绘图窗口分成两行两列四块区域,然后在每个区域分别作图,基本步骤:
subplot(221);%2、2、1之间没有空格也可以
在第一块绘图
subplot(222)
在第二块绘图
subplot(223)
在第三块绘图
subplot(224)
在第四块绘图
(2)直方图均衡化
MATLAB7.0图像处理工具箱中,可以使用histeq函数实现直方图均衡化。
函数的调用方法为:
[J,T]=histeq(I,N)
该函数对图像I进行变换,返回有N个灰度级的图像J,J中的每一个灰度级具有大致相等的像素点,所以图像J的直方图比较平坦,N的默认值为64,T是转移函数。
例:
I=imread(‘pout.tif’);
imshow(I);
figure,imhist(I);
[J,T]=histeq(I,64);
figure,imshow(J);
figure,imhist(J);
上述命令后将得到4个Figure窗口,可以采用subplot()命令将一个窗口分块
I=imread(‘pout.tif’);
subplot(2,2,1),imshow(I);%两个命令之间用逗号或分号隔开,也可以分两行写
subplot(2,2,2),imhist(I);
[J,T]=histeq(I,64);
subplot(2,2,3),imshow(J);
subplot(2,2,4),imhist(J);
原始图与其直方图:
均衡化后的结果
(3)直方图规定化
MATLAB7.0图像处理工具箱中,可以使用histeq函数实现直方图规定化。
函数的调用方法为:
J=histeq(I,hgram)
其中hgram用户指定的矢量,将原始图像I的直方图近似变换成hgram,hgram中的每一个元素都在[0,1]中。
I=imread(’tire.tif’);
hgram=0:
255;
J=histeq(I,hgram);
imshow(I);
figure,imshow(J);
figure,imhist(I,64);
figure,imhist(J,64);
五、思考题
(1)直方图的物理含义是什么?
(2)结合实验内容,定性地评价直方图均衡化和规定化增强效果。
六、实验报告要求
描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果,并进行必要的讨论,须包括原始图像及其计算/处理后的图像。
实验四图像的滤波(恢复)
一、实验目的
学会使用Matlab对图像作滤波处理,使学生掌握滤波算法、体会滤波效果。
了解几种不同滤波方式的使用和使用的场合,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。
二、实验要求
学生应当完成对于给定图像+噪声,使用平均滤波器、中值滤波器对不太强度的高斯噪声和椒盐噪声进行滤波处理;能够正确地评价处理的结果,能够从理论上做出合理的解释。
三、实验设备与软件
(1)硬件:
学生每人一台PC机。
(2)软件:
Matlab软件,包括图像处理工具箱;实验所需的图片。
四、实验内容与步骤
(一)实验内容
(1)选择一幅图像,增强零均值噪声,采用平均滤波、中值滤波等方法对图像进行滤波,比较滤波效果。
(2)选择一幅图像,叠加椒盐噪声,采用平均滤波、中值滤波等方法对图像进行滤波,比较滤波效果。
(3)巴特沃斯低通滤波器去除图像椒盐噪声,教材112页例题5.5
(4)理想高通滤波器、巴特沃斯高通滤波器、指数型高通滤波器、梯形高通滤波器图像增强对比实验,教材114页例题5.6
(5)考虑滤波器模板大小对平均滤波器滤波效果的影响。
(6)考虑滤波器模板大小对中值滤波器滤波效果的影响。
(二)实验步骤
MATLAB的图像处理工具箱提供imnoise函数,可以用该函数模拟给图像加不同类型的噪声。
该函数的调用格式如下:
J=imnoise(I,’type’,parameters);
其中I为加噪声前的图像,J为加噪声后的图像,type为噪声类型。
imnoise函数能够产生5种噪声。
imnoise函数支持的噪声类型及参数说明
类型
参数
说明
Gaussian
m,v
均值为m,方差为v的高斯噪声
localvar
v
均值为0,方差为v的高斯噪声
possion
无
泊松噪声
salt&pepper
d
密度为d的椒盐噪声
speckle
v
均值为0,方差为v的均匀分布的随机噪声
MATLAB7.0图像处理工具箱提供了多种去除图像噪声的方法,主要有:
线性滤波
中值滤波
自适应滤波
(1)线性滤波
对一些图像进行线性滤波可以去除图像中某些类型的噪声,如采用邻域平均法的均值滤波器就非常适用于去除通过扫描得到的图像中的颗粒噪声。
下面程序代码示例是对一幅含噪图像进行去噪处理,其结果如图所示。
I=imread('rice.png');
I=imnoise(I,'gaussian',0,0.02);%为图像添加均值是0方差是0.02的高斯噪声,
imshow(I);%读入含噪图像,
h=[111;111;111];
J=conv2(I,h);%含噪图像与矩阵h卷积
I=uint16(J);%uint16()函数表示转换成无符号16位整数
figure,imshow(I,[])
H=h/9;
J=conv2(I,H);
I=uint16(J);
figure,imshow(I,[])
注释:
1.g=imnoise(f,'gaussian',m,var)将均值M,方差为var的高斯噪声加到图像f上,默认值为均值是0,方差是0.01的噪声。
2.C=conv2(A,B)返回矩阵A和B的二维卷积C
3.imshow(I)就是直接按I的灰度级画出图;imshow(I,[])是灰度级最小的将被画成黑色,而最大的灰度级将被画成白色,其他的不变。
如果是[low,high],那么灰度级小于low的将被画成黑色,大于high的将被画成白色,其他的不变。
a滤波前原图像b滤波后的图像(h)
C滤波后的图像(H)
对噪声图像线性滤波的结果
(2)中值滤波
中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 专业 数字图像 处理 实验 汇总