MATLAB实验Matlab在数字图像处理中的应用

实验十  Matlab在数字图像处理中的应用
(基础篇)
一、 实验目的
1.熟悉图像的四种类型。
2.熟练掌握图像的读、写操作以及显示方法。
3. 熟悉图像的类型转换以及格式转换。
二、 实验原理
1. 图像的表示以及数字化
    广义的图像是指视觉信息。举凡照片、图画、电视画面以及由透镜、光栅及全息
图所构成的光学成像等均属之。我们观察一幅单静止图像,其亮度的明暗变化就构成图像视觉。所以,一幅单(monochrome)静止的图像可以表示为强度或亮度的二维分布,其中F代表图像亮度或者强度,(x,y)是二维平面点坐标。对于黑白图像,通常用不同的灰度级来表示其亮度的差异;对于彩图像,可以视为由单个单的二维图像组合形成的。例如,在RGB彩系统中,一幅彩图像是由三幅独立的分量图像(红、绿、蓝)按不同的比例组成的。因此,许多为黑白图像处理开发的技术适用于彩图像处理,方法是分别处理三副独立的分量图像即可。此时,每一幅分量图像只有亮度的二维分布,如图1所示。
    通常我们看到的图像是一幅亮度在空间连续变化的模拟图像(即图像关于亮度F以及空间坐标x,y连续)。例如在显微镜下看到的就是一副光学模拟图像。连续的模拟图像经过离散化处理后变成计算机能够识别的点阵图像,称为数字图像。把模拟图像转换成数字图像其实就是数字化 (即离散化)图像亮度F以及空间坐标x,y。将坐标数字化称为取样;将亮度数字化称为量化。采样和量化的过程如图2所示。二维图像平面经过数字化后,变成一个个方形的像素(pixel),亮度数字化之后变成一个二维的数值矩阵。所以一副数字图像对应于一个数值矩阵,该矩阵通常称为图像的数据矩阵。图像数据矩阵的大小即是图像像素的数
目,矩阵的行与列决定一个像素点,矩阵元素值(也称像素值)反映该像素点的灰度。例如图2右边所示的图像数据矩阵为8×8的二维矩阵,那么该数字图像包含8×8=64个像素,第一行第一列代表第一个像素,其像素值(元素值)1表达该像素的灰度。
由于数字图像和数值矩阵之间有着十分自然的对应关系,所以MATLAB非常适合用来处理数字图像。
1 RGB彩图像及其分量图像。其中,每个分量图像越亮的地方
表示该组分在源图像中所占比例越大。
2 图像的采样和量化
2.扫频信号源 图像的类型
MATLAB采用4种不同的方式把图像数据矩阵中的元素值(又称像素值)解释为对应像素的颜:
蝇蛆蛋白
强度图像(Intensity images)
二值图像(Binary images)
索引图像(Indexed images)
RGB图像(RGB images)
(1) 强度图像(Intensity images)
也称灰度图像(grayscale)。一幅强度图像就是一个数据矩阵,矩阵的每个元素对应一个图像像素,元素值(像素值)代表像素的亮度或者灰度级。像素值的数据类型可以是uint8uint16或者double型。如果是uint8uint16,则像素值的范围分别是[0255][065536],其中0代表黑(亮度最低或灰度级最低),255或者65536代表白(亮度最高或者灰度级最高),其他整数介于两者之间;若像素值是double类,系统规定双精度型像素值的取值范围是[01]0代表黑,仿真恐龙制作1代表白,其余介于两者之间。例如图2中的数据矩阵,如果该图是强度图像,则第一个像素值1代表该像素的亮度是仅次于黑的灰度级,余者类推。
(2) 二值图像(Binary images)
对于一幅二值图像,其数据矩阵中像素值的取值只有01两个逻辑数,分别代表黑和白,所以二值图像只有黑和白两种颜。下图描绘了一幅二值图像。
3 二值图像及其像素值
(3) 索引图像(Indexed images)
在强度图像和二值图像中,数据矩阵中的像素值直接代表像素的亮度(即颜),而索引图像的像素值则并不直接代表颜,而是把像素值按照一定的规则映射到颜表(colormap)或者调板中的某一个颜。所以索引图像也叫映射图像,一幅索引图像包含
实时调试一个图像数据矩阵和一个预先定义的(Colormap)矩阵。图矩阵是一个m×3double型数组,矩阵的元素值介于[0 1]之间。图矩阵的每一行代表一种彩,它是个3元行数组,分别代表R分量(红分量)G分量(绿分量)B分量(蓝分量)的比例,例如(0 0 1)代表蓝,(1 1 1)代表白等。图矩阵的列数m代表颜的种类。图像数据矩阵的类型可以是uint8uint16或者double型。对于uint8uint16类型,像素值0映射到图矩阵(即颜表)的第一行,表示该像素使用颜表的第一个颜绘制,像素值1映射到图矩阵的第二行,类此类推,可见uint8uint16型的像素值和颜种类之间有一个偏差1。对于数据矩阵是double型的,像素值1映射到图矩阵的第一行,2映射到第二行,以此类推。由上可见,索引图像数据矩阵的像素值也就是对颜表的索引值(Index)。
注意,索引图像的颜都是预先定义的,并且可供选用的一组颜也很有限,索引颜的图像最多只能显示256种颜。当读入索引图像文件时,必须同时读入其数据矩阵和图矩阵,即绘图用的颜表。图4所示代表一幅索引图像,其数据矩阵是double类型。
(4) RGB图像(RGB images)
RGB图像也称真彩图像。其图像数据矩阵是一个m×n×3数组,数组中的元素值定义了相
应像素的红(R)、绿(G)、蓝(B)颜分量,其中沿第3维(即“页”维)方向的第一页
4 索引图像的double型数据矩阵及其图矩阵
代表像素的R颜分量,第二页是G分量,第三页是B分量。所以RGB图像不需要图
矩阵或颜表,每个像素点的颜由其RGB分量直接指定。例如,像素点(10,5)的红、绿、蓝分量分别储存在数据矩阵的(10,5,1)(10,5,2)(10,5,3)三个元素中。数据矩阵的类型有doubleuint8uint16。对于double型,每个颜分量介于01之间,如果像素的颜分量是(0 0 0),则是黑像素,(1 1 1)是白像素。图5显示一幅RGB图像的数据矩阵。
5 RGB图像的数据矩阵及其三个颜分量,第1个平面(即第1“页”)为R分量,
2个平面是G分量,第3个是B分量。
2. 图像的读、写与图像信息查询
Matlab为用户提供了特殊的函数用于从图像格式文件中读写图像数据。其中读取图像格式文件的函数是imread,写入图像格式文件的函数是imwrite,查询图像信息的函数是imfinfo。下面分别介绍它们的用法。
(1) imread
[XMAP]=imread(’filename’,’fmt’)
其中,X,MAP分别为读出的图像数据和颜表数据(图矩阵),fmt为图像的格式,如bmp、jpg、png、tif、gif格式等,filename为读取的图像文件(可以加上文件的路径)。
例:  [XMAP]=imread’flowers.tif’, ’tif’iack;
或者  [XMAP]=imread’flowers.tif’;
如果读取的是RGB图像或者强度图像,图矩阵一般为空,即MAP=[]
(2) imwrite
imwrite函数用于输出图像,其语法格式为:
imwrite(X, MAP, ’filename’, ’fmt’)
按照fmt指定的格式将图像数据矩阵X和颜表MAP写入文件filename。
(3) imfinfo
imfinfo函数用于读取图像文件的有关信息,其语法格式为
imfinfo(’filename’, ’fmt’)
imfinfo函数返回一个结构体,该结构体包含图像的各方面信息,其主要数据:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图像的类型等。
例:imfinfo('rice.png') % 注意查看图像类型和颜表
3.  MATLAB中图像文件的显示
MATLAB图像处理工具箱提供了imshow函数来显示各种图像,其语法如下:
imshow(I, n)
imshow(BW) imshow(X, MAP) imshow(RGB)
其中imshow(I, n)用于显示强度(灰度)图像,I是图像数据矩阵,n为灰度级数目,缺省值为256。其它的分别用于显示二值图像、索引图像和RGB真彩图像。另外,对RGB彩图像,还可以用imshow( RGB(:, :, 1) )、imshow( RGB(:, :, 2) )、imshow( RGB(:, :, 3) )分别显示RGB图像的R、G、B三个分量(这里RGB代表图像数据矩阵),但是注意,这样显示出的图像是各分量所对应的灰度图像,见图1所示。
4. 图像类型转换
用imfinfo函数读取图像文件的有关信息可以确定图像的类型。图像类型之间的转换有时非常有用。下表是MATLAB提供的部分图像类型转换函数:
 
 
gray2ind
根据一幅灰度图像创建索引图像
安全传输im2bw
用阈值截取法将灰度图像、索引图像或RGB图像转换为二值图像
ind2gray
根据一幅索引图像创建一幅灰度图像
ind2rgb
根据一幅索引图像创建一幅RGB图像
rgb2gray
根据一幅RGB图像创建一幅灰度图像
rgb2ind
根据一幅RGB图像创建一幅索引图像
上表中函数有类似的调用格式:函数的输入参数是图像数据矩阵(如果是索引图像,那么输入参数还包括颜表),返回值是转换后的函数(包括索引函数的调板),只有函数im2bw的调用格式不同,其输入参数中还包括一个截取阈值LEVEL,超过此阈值的像素被截取为1否则为0。如:
[X, MAP]=imread('trees.tif'); 
X0=im2bw(X,0.4);  % RGB图像转换为二值图像(黑白图像),截取阈值=0.4
5图像文件格式的转换
图像文件格式之间的转换,可以间接利用图像读写函数来完成;首先使用imread函数按照原有的图像格式进行图像读取,然后调用imwrite函数对图像进行保存,并指定图像的保存格式。如将BMP格式转换为PNG格式:
  bitmap=imread(’mybitmap.bmp’, ’bmp’)
    imwrite(bitmap, ’mybitmap.png’, ’png’)
三、 实验内容
1.利用imread( )函数分别读取四种类型的图像(注:Matlab安装目录下\toolbox\images \imdemos文件夹里,系统附带了各种类型的图片),回答思考题1
2.读取一幅RGB图片,并将它转换成其他几种图像类型(通过帮助系统自学相应转换函数的具体用法);
3. 读取一幅TIF格式的图像,将它转换成JPG文件格式,并尝试使用不同的压缩品质(使用help imwrite 查询其‘quality’参数的用法)压缩文件,比较压缩前后文件的大小和图像质量。

本文发布于:2024-09-24 13:21:13,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/324007.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   矩阵   像素   数据   函数   颜色   亮度   代表
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议