实验一 数字图像malab基本操作
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
置零:将矩阵 A 的第二行第二列的元素置零
将矩阵 A 的第一列全置 1
强调一下矩阵的乘法与矩阵的点乘的不同,举例说明: %产生二维单位矩阵
>> B=[1,2;3,4]
>> A.*B %求 A 与 B 的点积(即两矩阵中对应元素分别相乘
>> A*B %求 A 与 B 的乘积(符合矩阵乘积原则 A 的列数与 B 的行数相等)
实验一 数字图像 malab 基本操作
一、实验目的 1、复习 MATLAB 语言的基本用法; 2、掌握 MATLAB 语言中图象数据与信息的读取方法; 3、掌握在 MATLAB 中绘制灰度直方图的方法,了解灰度直方图的均衡化的方法。 二、实验原理 MATLAB 是集数值计算,符号运算及图形处理等强大功能于一体的科学计算语言。作为强大的科学计 算平台,它几乎能够满足所有的计算需求。 MATLAB 软件具有很强的开放性和适用性。在保持内核不变的情况下,MATLAB 可以针对不同的应用学 科推出相应的工具箱(toolbox)。目前,MATLAB 已经把工具箱延伸到了科学研究和工程应用的诸多领域, 诸如数据采集、概率统计、信号处理、图像处理和物理仿真等,都在工具箱(Toolbox)家族中有自己的一 席之地。在实验中我们主要用到 MATLAB 提供图象处理工具箱(Image Processing Toolbox) 。 1、MATLAB 与数字图像处理 MATLAB 全称是 Matrix Laboratory(矩阵实验室) ,一开始它是一种专门用于矩阵数值计算的软件,从 这一点上也可以看出, 它在矩阵运算上有自己独特的特点。 实际上 MATLAB 中的绝大多数的运算都是通过 矩阵这一形式进行的。这一特点也就决定了 MATLAB 在处理数字图像上的独特优势。理论上讲,图像是一 种二维的连续函数,然而在计算机上对图像进行数字处理的时候,首先必须对其在空间和亮度上进行数字 化,这就是图像的采样和量化的过程。二维图像进行均匀采样,就可以得到一幅离散化成 M×N 样本的数 字图像,该数字图像是一个整数阵列,因而用矩阵来描述该数字图像是最直观最简便的了。而 MATLAB 的长处就是处理矩阵运算,因此用 MATLAB 处理数字图像非常的方便。 MATLAB 支持五种图像类型,即索引图像、灰度图像、二值图像、RGB 图像和多帧图像阵列;支持 BMP、 GIF、 HDF 、JPEG、PCX、PNG、TIFF 、XWD、CUR 、ICO 等图像文件格式的读,写和显示。MATLAB 对图像的处理功能主要集中在它的图像处理工具箱(Image Processing Toolbox)中。图像处理工具箱是由一 系列支持图像处理操作的函数组成,可以进行诸如几何操作、线性滤波和滤波器设计、图像变换、图像分 析与图像增强、二值图像操作以及形态学处理等图像处理操作。 2、MATLAB 语言的基本操作 MATLAB 语言是一种运算纸型的运算语言,其特点就是与平时在运算纸上书写运算的形式相同,这使 得它成为一种比较容易掌握的语言;其变量均以矩阵向量形式表示(单独一个数据可以认为是一维向量) ; 其程序语法类似于 C 语言,只要有一点 C 语言基础的人可以很快掌握。针对数字图象处理的需要,可以重 点掌握以下几个内容:矩阵、向量的输入和操作(包括如何输入一个矩阵,如何产生一个全零全一的矩阵, 如何对一个矩阵的行列元素进行读取、写入) ;矩阵与向量的基本运算(包括加、减、点乘等) 以下主要介绍一下如何读取矩阵的指定行或指定列,举例说明: x=4:6 %产生一个一维数组,范围从 4 到 6,步长为 1 x= 4 5 6 %当然也可以用别的方法产生 A 矩阵此处只作为示例 3 6 9 插入:通过对 x 进行插入运算创建矩阵 A >> A=[x-3;x;x+3] A= 1 4 7 2 5 8
提取:提取 A 的前两行和后两列形成矩阵 C。
>> C=A(1:2,2:3) C= 2 5 >> A(2,2)=0 A= 1 4 7 A(:,1)=1 A= 1 1 1 A=eye(2) A= 1 0 B= 1 3 >> A+B ans = 2 3 ans = 1 0 ans = 1 3 4 2 0 4 2 5 2 4 %求 A 与 B 的和(符合矩阵求和原则) 0 1 %直接法输入矩阵 2 0 8 3 6 9 2 0 8 3 6 9 3 6
MinSamplev ImageDescription: [1x166 char] 4、
Βιβλιοθήκη Baidu
alue: 0
Thresholding: 1 MATLAB 中图象文件的显示
Imshow imshow 函数是最常用的显示各种图象的函数,其语法如下: imshow(X,map) 其中 X 是图象数据矩阵,map 是其对应的颜色矩阵,若进行图象处理后不知道图象数据的值域可以用[]代 替 map。 需要显示多幅图象时,可以使用 figure 语句,它的功能就是重新打开一个图象显示窗口。 例: I=imread(‘rice.tif’); Imshow(I); J=imread(‘flowers.tif’); figure,imshow(J); 5、 MATLAB 中灰度直方图的显示 MATLAB 图象处理工具箱提供了 imhist 函数来计算和显示图象的直方图,imhist 函数的语法格式为: imhist(I,n) imhist(X,map) 其中 imhist(I,n)计算和显示灰度图象 I 的直方图,n 为指定的灰度级数目,默认值为 256。imhist(X,map)计 算和显示索引色图象 X 的直方图,map 为调色板。 例: I = imread('rice.tif'); imshow(I) figure, imhist(I) 6、 对比度增强 如果原图象 f(x,y)的灰度范围是[m,M],我们希望调整后的图象 g(x,y)的灰度范围是[n,N],那么下述变 换, ,就可以实现这一要求。 MATLAB 图象处理工具箱中提供的 imadjust 函数,可以实现上述的线性变换对比度增强。Imadjust 函数的 语法格式为: J = imadjust(I,[low_in high_in],[low_out high_out]) J = imadjust(I,[low_in high_in],[low_out high_out])返回图象 I 经过直方图调整后的图象 J,[low_in high_in]为 原图象中要变换的灰度范围,[low_out high_out]指定了变换后的灰度范围。 例: I = imread('pout.tif'); 三、实验要求 copy 两个图形文件 girl1.bmp 和 girl2.bmp 到 MATLAB 目录下 work 文件夹中。 1、将 MATLAB 目录下 work 文件夹中的 lena.bmp 图象文件读出.用到 imread,imfinfo 等文件,观察一下图 象数据,了解一下数字图象在 MATLAB 中的处理就是处理一个矩阵。将这个图象显示出来(用 imshow) , 尝试修改 map 颜色矩阵的值,再将图象显示出来,观察图象颜色的变化。 2、将 MATLAB 目录下 work 文件夹中的 lena.bmp 图象文件读出,显示它的图象及灰度直方图,可以发现 其灰度值集中在一段区域,用 imadjust 函数将它的灰度值调整到[0.3,0.7]之间,并观察调整后的图象与原 图象的差别,调整后的灰度直方图与原灰度直方图的区别。 3、使用 lena 图像,将上面介绍的 matlab 图像处理的方法操作一遍,观察图像变换前和变换后的不同。 J = imadjust(I,[0.3 0.7],[]); imshow(I), figure, imshow(J)
B、 imwrite imwrite 函数用于输出图象,其语法格式为: imwrite(X,map,filename,fmt)按照 fmt 指定的格式将图象数据矩阵 X 和调色板 map 写入文件 filename。 C、 imfinfo imfinfo 函数用于读取图象文件的有关信息,其语法格式为 imfinfo(filename,fmt) imfinfo 函数返回一个结构 info,它反映了该图象的各方面信息,其主要数据包括:文件名(路径) 、文件格 式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图象 的类型等。 例: imfinfo('rice.tif') ans = Filename: 'C:\MATLAB6p5\toolbox\images\imdemos\rice.tif' FileModDate: '26-Oct-1996 06:11:58' FileSize: 65966 Format: 'tif' FormatVersion: [] Width: 256 Height: 256 BitDepth: 8 ColorType: 'grayscale' FormatSignature: [73 73 42 0] ByteOrder: 'little-endian' NewSubfileType: 0 BitsPerSample: 8 Compression: 'Uncompressed' PhotometricInterpretation: 'BlackIsZero' StripOffsets: [8x1 double] SamplesPerPixel: 1 RowsPerStrip: 32 StripByteCounts: [8x1 double] XResolution: 72 YResolution: 72 ResolutionUnit: 'Inch' Colormap: [] PlanarConfiguration: 'Chunky' TileWidth: [] TileLength: [] TileOffsets: [] TileByteCounts: [] Orientation: 1 FillOrder: 1 GrayResponseUnit: 0.0100 MaxSamplev alue: 255
3、MATLAB 中图象数据的读取 A、 imread imread 函数用于读入各种图象文件,其一般的用法为 [X,MAP]=imread(‘filename’,‘fmt’) 其中,X,MAP 分别为读出的图象数据和颜色表数据,fmt 为图象的格式,filename 为读取的图象文件(可 以加上文件的路径) 。 例:[X,MAP]=imread(’flowers.tif’,’tif’ );