数字图像处理 实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数字图像处理》实验指导书
黄剑航编
莆田学院电子信息工程学系
2011年8月
前言
数字图像处理是研究关于数字图像的基本理论、方法,及其在电子、信息领域中应用的学科,是电子信息类本科专业的专业课。
本实验课程围绕数字图像处理这一核心,使学生掌握图像处理的基本理论及其实现方法,提高学生的编程、应用和创新能力,拓宽学生的知识面。
要求学生系统掌握数字图像处理的基本概念、原理和实现方法,学习图像分析的基本理论、典型方法和实用技术,具备数字图像处理应用编程的初步能力,为在计算机视觉、模式识别等领域从事研究与开发打下扎实的基础。通过本课程实验,学生应掌握MATLAB以及数字图像处理的相关算法。
实验条件:
硬件
PC机,PII以上CPU,256M以上内存;
软件
MATLAB6.5以上版本;提供实验用到的图像。
目录
实验一数字图像的基本操作 (1)
实验二数字图像插值 (3)
实验三数字图像变换 (6)
实验四数字图像增强 (9)
实验五数字图像彩色处理 (12)
实验六数字图像分割(综合性实验) (14)
实验一 数字图像的基本操作
一、实验目的
熟悉MATLAB 中数字图像的不同数据类型,不同图像数据类型之间的转换,掌握数字图像的读取、显示、保存,实现图像翻转,剪裁等一些基本操作,掌握二维矩阵的操作。熟悉相关的MATLAB 函数和help 帮助的使用。
二、实验原理
MATLAB 中常用的数字图像数据类型有:
uint8, 无符号8比特整数,范围为[0,255](每像素一个字节);
uint16,无符号16比特整数,范围为[0,65535](每像素两个字节);
double ,双精度浮点数,范围为30830810~10 (每像素8个字节);
logical ,逻辑型,值为0或者1(每像素一个比特)。
MATLAB 中所有的计算都可以用double 类进行,所以它也是图像处理应用中最常使用的数据类。uint8数据类也是一种频繁使用的数据类,尤其是在从存储设备中读取数据时,因为8比特图像是实际中最常用的图像。logical 类则主要用在二值图像中,logical 类的矩阵中每个元素取值只能是0和1。
图像数据类型之间转换,一种方法是:B=data_class(A),其中data_class 代表上述图像数据类型的任一项。例如,A 是一个uint8类数据数组,则B=double(A)产生了一个双精度数组B ;假如C 是一个取值范围为[0,255]的double 类数组,则命令D=uint8(C)可将其转换为一个unit8数组。
另外一种类型转换的方法是使用类型转换函数,如im2uint8, im2double,
mat2gray, im2bw 。这些函数同时具有数据大小缩放功能。使用的时候注意输入输出数据类型和范围。具体查看帮助内容。
图像数据在MATLAB 中按照一定的数据类型,以矩阵的方式存储、读取和显示。因此许多有关数字图像的处理就和矩阵的操作相关。常用的一些命令有:图像读取,imread ;图像保存,imwrite ;图像显示,imshow 。具体使用方法同样可
以查看帮助内容。
三、实验内容及步骤
1、运行如下程序,观察结果,分析学习程序每一行。
clear
close all
a=zeros(256);
for i=1:256
a(:,i)=i-1;
end
a=uint8(a);
imshow(a);
参照上面程序自己编写一个程序,要求显示一幅图像(256×256),像素值从上往下递增。
2、读取MATLAB自带的cameraman.tif 图像,将图像上下翻转显示,并将结果图片保存为另外一幅图像。
3、利用im2double函数将unit8类型图像转换为double类型图像,并在MATLAB 工作区窗口观察变量类型、数值。利用im2bw 函数将unit8或者double 类型图像转换为二进制(logical)类型图像,用imshow显示结果图片,并在MATLAB 工作区窗口观察变量类型、数值。自己举例实验mat2gray用法。
4、剪裁出cameraman.tif 图像右下角的128×128大小的图片,并显示、保存。
5、利用max,find 函数寻找cameraman.tif 图像中像素最大值点的位置和大小。同理也可以寻找出最小点的位置。
6、求出cameraman.tif图像的像素平均值。
四、实验报告要求
1、具体格式参照“电子信息工程系实验报告”格式。
2、选择以上实验内容中自己体会最深的3个内容写入实验报告。
3、注意实验报告要求分析组织有条理,截图美观,结论正确。
实验二数字图像插值
一、实验目的
学习掌握数字图像放大的插值方法,编程进一步熟悉图像的矩阵操作。
二、实验原理
1、邻近点插值法
在原来图像的每行每列后面加上左边和上面的一行像素值。实际上这样的处理方式将原来的一个像素点,变成灰度值大小相同的4个像素点。从而获得了数字图像在空间尺寸上的放大作用。
2、双线性插值法
图1双线性插值法原理图
以图像放大为例说明双线性插值法。先对竖直方向插值,插值点取在竖直方向相邻像素的中点,这是双线性插值的特殊点,该点插值为相邻像素值的均值。竖直方向完成插值之后再进行水平方向插值。即可完成图像的放大作用。
三、实验内容
1、对一个256×256的灰度图像进行隔行隔列抽取,构成大小为 128×128,64×64大小的新图像。
2、利用邻近点插值法对数字图像进行插值放大。
3、利用双线性插值法对数字图像进行插值放大,注意插值放大后的图像大小。
4、附加题:三次立方插值
该方法利用三次多项式()S x 来逼近理论上的最佳插值函数sin()/x x ,其数学表达式为:
23
231201()4851202
x x x S x x x x
x x ⎧-+≤<⎪⎪=-+-≤<⎨⎪≥⎪⎩ 上式中的是周围象素沿方向离原点的距离。待求象素的灰度值由其周围16个点的灰度值加权内插得到。可推导出待求象素的灰度值计算式为:
(,)(,)f x y f i u j v ABC =++=
其中
(1)()(1)(2)T S v S v A S v S v +⎡⎤⎢⎥⎢⎥=⎢⎥-⎢⎥-⎣⎦(1)()(1)(2)S u S u C S u S u +⎡⎤⎢⎥⎢⎥=⎢⎥-⎢⎥-⎣⎦
(1,1)(1,)(1,1)(1,2)(,1)(,)(,1)(,2)(1,1)(1,)(1,1)(1,2)(2,1)
(2,)(2,1)(2,2)f i j f i j f i j f i j f i j f i j f i j f i j B f i j f i j f i j f i j f i j f i j f i j f i j ----+-+⎡⎤⎢⎥-++⎢⎥=⎢⎥+-+++++⎢⎥+-+++++⎣⎦