数字图像处理四个实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理实验报告
班级:
学号:
姓名:
目录
实验一MATLAB数字图像处理初步实验二图像的代数运算
实验三图像增强-空间滤波
实验四图像分割
实验五形态学运算
实验一MATLAB数字图像处理初步
一、实验目的与要求
1.熟悉及掌握在MATLAB中能够处理哪些格式图像。
2.熟练掌握在MATLAB中如何读取图像。
3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。
4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。
5.图像间如何转化。
二、实验原理及知识点
数字图像:一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。
三、实验内容及步骤
1.利用imread( )函数读取一幅图像,存入一个数组中;
I=imread('lily'.tif');
2.利用whos 命令提取该读入图像flower.tif的基本信息;
whos I
3.利用imshow()函数来显示这幅图像;
imshow(I);
4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;
imfinfo('lily.tif');
5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为flower.jpg;
imwrite(I,'flower.jpg','quality',50);
6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。
imwrite(I,'flower.bmp');
7.用imread()读入图像:Lenna.jpg 和camera.jpg;
M=imread('Lenna.jpg'); N=imread('camera.jpg');
8.用imfinfo()获取图像Lenna.jpg和camema.jpg 的大小;
imfinfo('Lenna.jpg'); imfinfo('camera.jpg');
9.用figure,imshow()分别将Lenna.jpg和camema.jpg显示出来,观察两幅图像的质量。
figure(2),imshow('Lenna.jpg') imshow('camera.jpg')
10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征P=imread('pic200.bmp')
Q=im2bw(P)
imshow(Q)
四、实验仪器与软件
(1) PC计算机
(2) MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox)
(3) 实验所需要的图片
五、思考题
(1) 简述MatLab软件的特点。
答:MatLab具有易学习使用、适用范围广、功能强、开放性强、支持图像、数据格式丰富的特点。
(2)MatLab软件可以支持哪些图像文件格式?
答:支持的图像文件格式有JPEG/BMP/PCX/TIFF/PNG/GIF/HDF等多种图像格式。
(3)说明函数imread 的用途格式以及各种格式所得到图像的性质。
答:imread的常见调用格式为:A = imread(filename,fmt);
其作用是将文件名用字符串filename表示的,扩展名用fmt表示的图像文件中的数据读到矩阵A中。如果filename所指的为灰度级图像,则A为一个二维矩阵;如果filename 所指的为RGB图像,则A为一个m×n×3的三维矩阵。Filename表示的文件名必须在MATLAB 的搜索路径范围内,否则需指出其完整路径。
(4)为什么用I = imread(‘lena.bmp’) 命令得到的图像I 不可以进行算术运算?
答:MATLAB系统默认的算术运算是针对双精度类型(double)的数据,而上述命令产生的矩阵的数据类型是无符号8位(MATLAB为图像提供的特殊的数据类型),直接进行运算会溢出。
实验二图像基本运算
一、实验目的
1.了解图像的算术运算在数字图像处理中的初步应用。
2.体会图像算术运算处理的过程和处理前后图像的变化。
二、实验原理
图像的代数运算是图像的标准算术操作的实现方法,是两幅输入图像之间进行的点对点的加、减、乘、除运算后得到输出图像的过程。如果输入图像为A(x,y)和B(x,y),输出图像为C(x,y),则图像的代数运算有如下四种形式:
C(x,y) = A(x,y) + B(x,y)
C(x,y) = A(x,y) - B(x,y)
C(x,y) = A(x,y) * B(x,y)
C(x,y) = A(x,y) / B(x,y)
图像的代数运算在图像处理中有着广泛的应用,它除了可以实现自身所需的算术操作,还能为许多复杂的图像处理提供准备。使用MATLAB的基本算术符(+、-、*、/ 等)可以执行图像的算术操作,但是在此之前必须将图像转换为适合进行基本操作的双精度类型。
注意:无论进行哪一种代数运算都要保证两幅输入图像的大小相等,且类型相同。三、实验步骤
1.图像的加法运算
在MATLAB中,如果要进行两幅图像的加法,或者给一幅图像加上一个常数,可以调
用imadd函数来实现。
I = imread(‘Sunset.jpg’);
J = imread(‘Winter.jpg’);
K = imadd(I,J);
imshow(K);
叠加结果如图所示。
待叠加的两幅图像
叠加后的图像效果
2.图像的减法运算
在MATLAB中,使用imsubtract函数可以将一幅图像从另一幅图像中减去,或者从一幅图像中减去一个常数。imsubtract函数将一幅输入图像的像素值从另一幅输入图像相应的像素值中减去,再将这个结果作为输出图像相应的像素值。
M= imread(‘camerman.tif’);
B= imopen(M, str el(‘disk’,15));
N= imsubtract(M, B);
subplot(1,2,1);imshow(M);
subplot(1,2,2);imshow(B);
原始图像减去背景图像
3. 图像的乘法运算
在MATLAB中,使用immultiply函数实现两幅图像的乘法。immultiply函数将两幅图像相应的像素值进行元素对元素的乘法操作(MATLAB点乘),并将乘法的运算结果作为输出图形相应的像素值。
I = imread(‘lily.tif’);
J = immultiply(I,1.2);
subplot(1,2,1);imshow(I);
subplot(1,2,2);imshow(J);
原图和乘以因子1.2的图像
4.图像的除法运算
在MATLAB中使用imdivide函数进行两幅图像的除法。imdivide函数对两幅输入图像的所有相应像素执行元素对元素的除法操作(点除),并将得到的结果作为输出图像的相应像素值。
M= imread(‘cameraman.tif’);
I = double(M);
J= I * 0.43 + 90;
N= uint8(J);注:无符号八位整数的强制转换
Q= imdivide(M, N);
Imshow(Q, []);
原图和减背景后的图像相除的图像效果
四、思考题
由图像算术运算的运算结果,思考图像减法运算在什么场合上发挥优势?
答:图像减法也称为差分方法,是一种常用于检测图像变化及运动物体的图像处理方法。图像减法可以作为许多图像处理工作的准备步骤。例如,可以使用图像减法来检测一系列相同场景图像的差异。图像减法与阈值化处理的综合使用往往是建立机器视觉系统最有效的方法之一。在利用图像减法处理图像时往往需要考虑背景的更新机制,尽量补偿由于天气、光照等因素对图像显示效果造成的影响。
实验三图像增强—空域滤波
一、实验目的
进一步了解MatLab软件/语言,学会使用MatLab对图像作滤波处理,使学生有机会掌握滤波算法,体会滤波效果。
了解几种不同滤波方式的使用和使用的场合,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。
二、实验要求
(1)完成对于给定图像+噪声,使用平均滤波器、中值滤波器对不同强度的高斯噪声和椒盐噪声,进行滤波处理;能够正确地评价处理的结果;能够从理论上作出合理的解释。
(2)利用MATLAB软件实现空域滤波的程序:
三、实验设备与软件
(1) IBM-PC 计算机系统
(2) MatLab 软件/语言包括图像处理工具箱(Image Processing Toolbox)
(3) 实验所需要的图片
四、实验内容与步骤
a) 调入并显示原始图像lenna.tif 。
b) 利用imnoise 命令在图像lenna.tif 上加入高斯(gaussian) 噪声 、椒盐噪声
高斯噪声 椒盐噪声
c)利用预定义函数fspecial 命令产生平均(average)滤波器
111191111---⎡⎤⎢⎥--⎢⎥⎢⎥---⎣
⎦ d )分别采用3x3和5x5的模板,分别用平均滤波器以及中值滤波器,对加入噪声的图像进行处理并观察不同噪声水平下,上述滤波器处理的结果;
e )选择不同大小的模板,对加入某一固定噪声水平噪声的图像进行处理,观察上述滤波器处理的结果。
高斯噪声均值滤波图像:3×3的均值模版 5×5的均值模版
椒盐噪声均值滤波图像:3×3的均值模版5×5的均值模版
五、思考题
(1) 简述高斯噪声和椒盐噪声的特点。
答:高斯噪声是指噪声服从高斯分布,即某个强度的噪声点个数最多,离这个强度越远噪声点个数越少,且这个规律服从高斯分布。高斯噪声是一种加性噪声,即噪声直接加到原图像上,因此可以用线性滤波器滤除。
椒盐噪声类似把椒盐撒在图像上,因此得名,是一种在图像上出现很多白点或黑点的噪声,如电视里的雪花噪声等。椒盐噪声可以认为是一种逻辑噪声,用线性滤波器滤除的结果不好,一般采用中值滤波器滤波可以得到较好的结果。
(2)结合实验内容,定性评价平均滤波器/中值滤波器对高斯噪声和椒盐噪声的去噪效果?
答:相对而言,对于椒盐噪声,采用中值滤波更好。
(3)结合实验内容,定性评价滤波窗口对去噪效果的影响?
答:不同的滤波窗口针对不同的噪声有不同的效果。因此,针对不同的噪声类型,选择不同的滤波窗口也很重要。
实验四图像分割
一、实验目的
使用MatLab 软件进行图像的分割。使学生通过实验体会一些主要的分割算子对图像处理的效果,以及各种因素对分割效果的影响。
二、实验要求
要求学生能够自行评价各主要算子在无噪声条件下和噪声条件下的分割性能。能够掌握分割条件(阈值等)的选择。完成规定图像的处理并要求正确评价处理结果,能够从理论上作出合理的解释。
三、实验内容与步骤
(1)使用Roberts 算子的图像分割实验
调入并显示图像cameraman.tif中图像;使用Roberts 算子对图像进行边缘检测处理;
(2)使用Prewitt 算子的图像分割实验
使用Prewitt 算子进行内容(1)中的全部步骤。
(3)使用Sobel 算子的图像分割实验
使用Sobel 算子进行内容(1)中的全部步骤。
(4)使用LoG (拉普拉斯-高斯)算子的图像分割实验
使用LoG (拉普拉斯-高斯)算子进行内容(1)中的全部步骤
(5)打印全部结果并进行讨论。
实验程序:
实验结果:
原始图像垂直边缘提取
水平边缘提取 45°边缘提取四、实验设备及软件
1.计算机;
2.MATLAB程序;
3.移动式存储器(软盘、U盘等)。
4.记录用的笔、纸。
五、思考题
1. 评价一下Roberts 算子、Prewitt 算子、Sobel 算子对于噪声条件下边界检测的性能。
答:Roberts算子:边缘定位准,但是对噪声敏感。适用于边缘明显且噪声较少的图像分割。
Prewitt算子:对噪声有抑制作用,抑制噪声的原理是通过像素平均,但是像素平均相当于对图像的低通滤波,所以Prewitt算子对边缘的定位不如Roberts算子。
Sobel算子:Sobel算子和Prewitt算子都是加权平均,但是Sobel算子认为,邻域的像素对当前像素产生的影响不是等价的,所以距离不同的像素具有不同的权值,对算子结果产生的影响也不同。一般来说,距离越远,产生的影响越小
2.为什么LoG梯度检测算子的处理结果不需要象Prewitt 等算子那样进行幅度组合?
答:是由梯度算子的精确性决定的。
3.实验中所使用的四种算子所得到的边界有什么异同?
答:Roberts算子对边缘定位的精度不是很高;Prewitt算子:对噪声有抑制作用,抑制噪声的原理是通过像素平均,但是像素平均相当于对图像的低通滤波,所以Prewitt算子对边缘的定位不如Roberts算子;Sobel算子得到的边缘应该是精度相对较高。
实验五形态学运算
1、实验目的
学习常见的数学形态学运算基本方法,了解腐蚀、膨胀、开运算、闭运算取得的效果,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。
2、实验要求
利用MatLab工具箱中关于数学形态学运算的函数,计算本指导书中指定二值图像进行处理。
3、实验设备与软件
1.LC-PC计算机系统
2.MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox)
3.实验所需要的图片
4、实验内容与步骤
1.调入并显示图像Water lilies.jpg;
I=imread(‘Water lilies.jpg’)
2.选取合适的阈值,得到二值化图像Water lilies.jpg;
level=graythresh(I;)
bw=im2bw(I,level);
3.设置结构元素;
SE=strel(‘square’,3);
4.对得到的二值图像Water lilies.jpg进行腐蚀运算;
SE1=strel(‘arbitrary’,eye(5);
BW2=imerode(bw,SE1);
5.对得到的二值图像Water lilies.jpg进行膨胀运算;
BW1=imdilate(bw,SE);
6.对得到的二值图像Water lilies.jpg进行开运算
BW3=bwmorph(bw,’open’);
7.对得到的二值图像Water lilies.jpg进行闭运;
BW4=bwmorph(bw,’close’);
8.将两种处理方法的结果作比较;
原始图像二值化图像
膨胀二值化图像腐蚀二值化图像
开运算图像闭运算图像
5、思考题/问答题
1.结合实验内容,评价腐蚀运算与膨胀运算的效果。
答:腐蚀是一种消除边界点,使边界向内部收缩的过程。可以用来消除小且无意义的物体;膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。
可以用来填补物体中的空洞。
2.结合实验内容,评价开运算与闭运算的效果。
答:开运算:先腐蚀后膨胀的过程称为开运算。用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。闭运算:先膨胀后腐蚀的过程称为闭运算。用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。由实验可以看出,开闭运算均可以去掉噪声孔。
3.腐蚀、膨胀、开、闭运算的适用条件是什么?
答:腐蚀是一种消除边界点,使边界向内部收缩的过程,可以用来消除小且无意义的物体;膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。
可以用来填补物体中的空洞;开运算,用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积;闭运算,用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。