数字图像处理实验指导书

更新时间:2023-10-24 07:09:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《数字图像处理》实验指导书

实验一 数字图像文件基本类型转换

一、实验目的

1. 了解Matlab支持4种图像类型:灰度图像、二值图像、索引图像和RGB图像。 2. 学会运用MATLAB实现4种类型之间的转换。 3. 熟练掌握在MATLAB中如何读取和存储图像。

4. 掌握图像间的基本运算。

二、实验原理

数字图像处理就是将图像信号转换成数字格式并利用计算机对其进行一系列的操作,以得到所期望的结果。它基本的步骤可分为图像信息的获取、存储、处理、传输、输出和显示。 数字图像处理的基本方法包括图像数字化、图像变换、图像增强、图像恢复、图像压缩编码、图像分割、图像分析与描述和图像识别分类。应用领域则是非常广泛,主要包括有宇宙探测、通信工程、遥感、生物医学、工业生产、军事公安、信息安全和信息检索等。 1、数字图像的特点

⑴相比于语音等其他信号,图像具有信息量大、占用频带宽的特点。在图像通信中,有限信道根本无法实时传输图像,这对图像频带压缩提出了很高的要求。

⑵像素间相关性大。在同一帧内各相邻像素间具有相同或相近的灰度可能性很大,而运动图像的相邻帧相关性更大。这些都说明数字图像中存在着大量的冗余,通过减少或消除这些冗余,进行图像压缩的可能性很大。

在数字图像处理中,一方面要充分考虑人的视觉特性,简化处理过程。 2、图像的读取及存储

⑴ 图像的读取 读取图像函数:imread()

格式:变量名=imread(‘路径\\文件名’,‘文件格式’) 例:x=imread('city.jpg', 'jpg');

需要注意的是这是简略的写法,说明这幅图片在MATLAB的默认路径下。 ⑵ 图像的保存

①将图像写到文件 imwrite() 格式:imwrite(变量名,‘新文件名’) 例: imwrite(x,'new_image.bmp')

此时图片会自动存入默认路径下。

②将图像用save命令以mat文件形式保存到磁盘中,以后可用load命令调用。 格式:save 保存的文件名 变量名(图像) load 保存的文件名 3、数字图像的表示和类别

一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。

图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1-1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。

作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。

图1-1 图像的采样和量化

根据图像数据矩阵解释方法的不同,MATLAB把其处理为4类:

? 索引图像(Indexed images) ? 灰度图像(Intensity images) ? 二值图像(Binary images) ? RGB图像(RGB images)

MATLAB图像处理工具箱为开发者提供了丰富的图像处理函数,内容包括图像I/O、图像空间变换、图像配准、图像变换、线性滤波及滤波器设计、邻域与块处理、图像增强、图像模糊消除、感兴趣区域操作和图像形态学分析等。

⑴ 索引图像

索引图像包括图像矩阵与颜色图数组。其中颜色图是按照图像中颜色值进行排序后的数

组。对于每个象素,图像矩阵包含一个值,这个值就是颜色图数组中的索引。索引颜色通常也称为映射颜色,在这种模式下,颜色都是预先定义的,并且可供选用的一组颜色也很有限,索引颜色的图像最多只能显示256种颜色。

一幅索引颜色图像在图像文件里定义,当打开该文件时,构成该图像具体颜色的索引值就被读入程序里,然后根据索引值找到最终的颜色。 颜色图为m*3双精度值矩阵,各行分别指定红、绿、蓝单色值。图像矩阵与颜色图的关系依赖于图像矩阵是双精度还是无符号8位整数(unit8)。 ⑵ 灰度图像

灰度图像也成为亮度图像,一幅灰度。图像是一个数据矩阵,其归一化的取值表示亮度。若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。若图像是double类,则像素取值就是浮点数。规定双精度型归一化亮度图像的取值范围是[0,1]

⑶ 二值图像

二值图像也成为二进制图像,一幅二值图像是一个取值只有0和1的逻辑数组。而一幅取值只包含0和1的uint8类数组,在MATLAB中并不认为是二值图像。使用logical函数可以把数值数组转化为二值数组或逻辑数组。创建一个逻辑图像,其语法为:

B=logical(A) 其中,B是由0和1构成的数值数组。

要测试一个数组是否为逻辑数组,可以使用函数:

islogical(c)

若C是逻辑数组,则该函数返回1;否则,返回0。

⑷ RGB图像

一幅RGB图像就是彩色像素的一个M×N×3数组,M和N表示图像像素的行列数。其中每一个彩色相似点都是在特定空间位置的彩色图像相对应的红、绿、蓝三个分量。按照惯例,形成一幅RGB彩色图像的三个图像常称为红、绿或蓝分量图像。

令fR,fG和fB分别代表三种RGB分量图像。一幅RGB图像就利用cat(级联)操作将这些分量图像组合成彩色图像:

rgb_image=cat(3,fR,fG,fB)

在操作中,图像按顺序放置。 4、数据类和图像类型间的转化 ⑴ 数据类型间的转换

表1-1中列出了MATLAB表示像素所支持的各种数据类。表中的前8项称为数值数据类,第9项称为字符类,最后一项称为逻辑数据类。

工具箱中提供了执行必要缩放的函数(见表1-2)。以在图像类和类型间进行转化。

表1-1 MATLAB和IPT支持数据类型

名称 double uint8 uint16 uint32 int8 int16 int32 single char logical 双精度浮点数,范围为 描述 ?10308?10308无符号8比特整数,范围为[0 255] 无符号16比特整数,范围为[0 65536] 无符号32比特整数,范围为[0 4294967295] 有符号8比特整数,范围为[-128 127] 有符号16比特整数,范围为[-32768 32767] 有符号32比特整数,范围为[-2147483648 2147483647] 单精度浮点数,范围为 字符 值为0或1 表1-2 格式转换函数

?10308?10308名称 im2uint8 im2uint16 mat2gray im2double im2bw 将输入转化为 uint8 uint16 double,范围为[0 1] double logical 有效的输入图像数据类 logical,uint8,uint16和doulbe logical,uint8,uint16和doulbe double logical,uint8,uint16和doulbe uint8,uint16和double ⑵ 图像类型间的转换

MATLAB支持BMP(windows位图格式)、JPG(联合图像专家组格式)、PCX(windows画刷格式)、PNG(可移动网络图形格式)、TIF(编制图像文件格式)等多种图像文件格式。

① 灰度图像与索引图像的相互转换:gray2ind( ),ind2gray( )。 格式: [X,MAP]=gray2ind(I,[n])

其中,I表示存放灰度图像的变量, n为颜色值(缺省64)。 I=ind2gray(X,MAP)

其中,X表示图像矩阵变量 , MAP表示颜色图数组变量 。

② RGB图像与灰度图像的转换:rgb2gray( )。 格式: I=rgb2gray(RGB)

表示将真彩图像RGB转换为灰度级亮度图像I。注意!灰度图像是不能转成RGB图像的。

③ RGB图像与索引图像的相互转换:rgb2ind( ),ind2rgb( )。 格式: [X,MAP]=rgb2ind(RGB) RGB=ind2rgb(X,MAP)

其中X表示索引图像变量名,MAP为索引图像调色板。

4、选取一幅图像,取不同的压缩度,对其进行压缩处理。 A=imread('aaa.tif'); I=rgb2gray(A);

trueImage=im2double(I); %转换图像矩阵为双精度型 imshow(trueImage); title('原始图像');

dctm=dctmtx(8); %计算离散余弦变换 imageDCT=blkproc(trueImage,[8 8],'P1*x*P2',dctm,dctm.');

%对图像I 的每个不同8*8数据块应用矩阵式’P1*x*P2’进行处理。 M10=[1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0]; %二值掩模,用来压缩DCT 的系数 newImage2=blkproc(imageDCT,[8 8],'P1*(x.*P2)*P3',dctm',M10,dctm); figure;

imshow(newImage2); title('压缩图像 M10');

A=imread('aaa.tif'); I=rgb2gray(A);

trueImage=im2double(I); %转换图像矩阵为双精度型imshow(trueImage); title('原始图像'); dctm=dctmtx(8); %计算离散余弦变换 imageDCT=blkproc(trueImage,[8 8],'P1*x*P2',dctm,dctm.');

%对图像I 的每个不同8*8数据块应用矩阵式’P1*x*P2’进行处理。 M10=[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0

1 0 0 0 0 0 0 0]; %二值掩模,用来压缩DCT 的系数 newImage2=blkproc(imageDCT,[8 8],'P1*(x.*P2)*P3',dctm',M10,dctm); figure; imshow(newImage2); title('压缩图像 M10');

四、实验报告要求

1、简述实验目的及实验原理。

2、调试参考程序,掌握工具函数的使用方法。

3、验证图像的傅立叶变换的旋转性质。(方法:对正方形图像进行旋转操作,观察原图的傅立叶频谱与旋转后的傅立叶频谱的对应关系。)

4、选取图像,利用余弦变换,观察变换后图像的变换情况。(图像分块压缩) 5、对实验结果进行总结。

实验三 数字图像增强

一、实验目的

1、了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学理论知识。 2、学会对图像直方图的分析。 3、掌握直接灰度变换的图像增强方法。 4、掌握图片的滤波。

二、实验原理

术语‘空间域’指的是图像平面本身,在空间与内处理图像的方法是直接对图像的像素进行处理。空间域处理方法分为两种:灰度级变换、空间滤波。空间域技术直接对像素进行操作其表达式为

g(x,y)=T[f(x,y)]

其中,f(x,y)为输入图像,g(x,y)为输出图像,T是对图像f进行处理的操作符,定义在点(x,y)的指定领域内。

定义点(x,y)的空间邻近区域的主要方法是,使用中心位于(x,y)的正方形或长方形区域,。此区域的中心从原点(如左上角)开始逐像素点移动,在移动的同时,该区域会包含不同的领域。T应用于每个位置(x,y),以便在该位置得到输出图像g。在计算(x,y)处的g值时,只使用该领域的像素。

灰度变换T的最简单形式是使用领域大小为1×1,此时,(x,y)处的g值仅由f在该点处的亮度决定,T也变为一个亮度或灰度级变化函数。当处理单设(灰度)图像时,这两个术语可以互换。由于亮度变换函数仅取决于亮度的值,而与(x,y)无关,所以亮度函数通常可写做如下所示的简单形式:

s=T(r)

其中,r表示图像f中相应点(x,y)的亮度,s表示图像g中相应点(x,y)的亮度。 图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。图像增强技术主要有直方图修改处理、图像平滑化处理、图像尖锐化处理和彩色处理技术等。本实验以直方图均衡化增强图像对比度的方法为主要内容。

一般来说,图像增强的目的有两点:一是改善图像的视觉效果,提高清晰度,二是增强感兴趣部分,提高可懂度。图像增强包括直接变换增强、滤波增强、变换增强。直接变换增强也称为灰度级调整,是将图像的灰度级映射到一个新的范围,在新的范围内能够容纳图像多数的灰度级,使图像的对比更加鲜明。滤波增强就是消除噪声的图像增强方法,有均值滤波、中值滤波、自适应滤波。变换增强称为频域增强,包括低通、高通滤波。

本文来源:https://www.bwwdw.com/article/csc2.html

Top