数字图像基本操作及灰度调整.DOC

上传人:天*** 文档编号:956038 上传时间:2018-11-09 格式:DOC 页数:8 大小:269KB
下载 相关 举报
数字图像基本操作及灰度调整.DOC_第1页
第1页 / 共8页
数字图像基本操作及灰度调整.DOC_第2页
第2页 / 共8页
数字图像基本操作及灰度调整.DOC_第3页
第3页 / 共8页
数字图像基本操作及灰度调整.DOC_第4页
第4页 / 共8页
数字图像基本操作及灰度调整.DOC_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、1数字图像基本操作及灰度调整一实验目的1.掌握读取图像的基本方法;2.掌握 MATLAB 语言中图像数据与信息的读取方法;3.掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方法。二实验基本原理灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频度,它是图像最基本的统计特征。依据定义,在离散形式下, 用 rk代表离散灰度级,用 pr(rk)代表 pr(r),并且有下式成立: (1-1)nPkr( 1,2010lk式中:n k为图像中出现 rk级灰度的像素数,n 是图像像素总数,而nk/n 即为频数。(a) Lena 图像 (b) Lena 图像的直方图图 1-1 Lena 图像及直

2、方图直方图均衡化处理是以累积分布函数变换法为基础的直方图修正法。假定变换函数为 (1-2)dprTsr)()(0当灰度级是离散值时,可用频数近似代替概率值,即,0)( lknrpk (1-3)式中:l 是灰度级的总数目,p r(rk)是取第 k 级灰度值的概率,n k2是图像中出现第 k 级灰度的次数,n 是图像中像素总数。所以式(1-2)可以表示为(1-4)1,010)()(00 lkrprTs jkjjrkjk 灰度线性变换,假定原图像 f(x, y)的灰度范围为a, b ,希望变换后图像 g(x, y)的灰度范围扩展至c, d ,则线性变换可表示为 (1-5)cayxfbcyxg),()

3、,( (a) 原始图像 (b) 灰度变换后的图像图 1-2 线性灰度变换利用 VC 做实验的同学请参考教材第三章,VC+图像编程基础。MATLAB 是集数值计算,符号运算及图形处理等强大功能于一体的科学计算语言。作为强大的科学计算平台,它几乎能够满足所有的计算需求。MATLAB 全称是 Matrix Laboratory(矩阵实验室) ,一开始它是一种专门用于矩阵数值计算的软件,从这一点上也可以看出,它在矩阵运算上有自己独特的特点。MATLAB 软件具有很强的开放性和适用性。在保持内核不变的情况下,MATLAB 可以针对不同的应用学科推出相应的工具箱(toolbox)。目前,MATLAB 已经

4、把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、概率统计、信号处理、图像处理和物理仿真等,都在工具箱(Toolbox)家族中有自己的一席之地。在实验中我们主要用到 MATLAB 提供图像处理工具箱(Image Processing Toolbox) 。三实验提示31.MATLAB 与数字图像处理实际上 MATLAB 中的绝大多数的运算都是通过矩阵这一形式进行的。这一特点也就决定了 MATLAB 在处理数字图像上的独特优势。理论上讲,图像是一种二维的连续函数,然而在计算机上对图像进行数字处理的时候,首先必须对其在空间和亮度上进行数字化,这就是图像的采样和量化的过程。二维图像进行均匀采

5、样,就可以得到一幅离散化成 MN 样本的数字图像,该数字图像是一个整数阵列,因而用矩阵来描述该数字图像是最直观最简便的了。而 MATLAB 的长处就是处理矩阵运算,因此用 MATLAB 处理数字图像非常的方便。MATLAB 支持五种图像类型,即索引图像、灰度图像、二值图像、RGB 图像和多帧图像阵列;支持BMP、GIF、HDF、JPEG、PCX、PNG、TIFF、XWD、CUR、ICO 等图像文件格式的读,写和显示。MATLAB 对图像的处理功能主要集中在它的图像处理工具箱(Image Processing Toolbox)中。图像处理工具箱是由一系列支持图像处理操作的函数组成,可以进行诸如几

6、何操作、线性滤波和滤波器设计、图像变换、图像分析与图像增强、二值图像操作以及形态学处理等图像处理操作。2.MATLAB 语言的基本操作MATLAB 语言是一种运算纸型的运算语言,其特点就是与平时在运算纸上书写运算的形式相同,这使得它成为一种比较容易掌握的语言;其变量均以矩阵向量形式表示(单独一个数据可以认为是一维向量) ;其程序语法类似于 C 语言,只要有一点 C 语言基础的人可以很快掌握。针对数字图像处理的需要,可以重点掌握以下几个内容:矩阵、向量的输入和操作(包括如何输入一个矩阵,如何产生一个全零或全一的矩阵,如何对一个矩阵的行列元素进行读取、写入) ;矩阵与向量的基本运算(包括加、减、点

7、乘等)基础操作请见教材 P3843注意:请大家在 E 盘建一个目录(imp) ,在每次启动时都要将这个目录加入到 MATLAB 的搜索路径中,添加的方法为 File-Set Path-Tool-Add Path43.MATLAB 中图像数据的读取A imreadimread 函数用于读入各种图像文件,其一般的用法为X,MAP=imread(filename,fmt)其中,X,MAP 分别为读出的图像数据和颜色表数据,fmt 为图像的格式,filename 为读取的图像文件(可以加上文件的路径) 。例:X,MAP=imread(flowers.tif,tif );B imwriteimwrite

8、 函数用于输出图像,其语法格式为:imwrite(X,map,filename,fmt)imwrite(X,map,filename,fmt)按照 fmt 指定的格式将图像数据矩阵 X 和调色板 map 写入文件 filename。C imfinfoimfinfo 函数用于读取图像文件的有关信息,其语法格式为imfinfo(filename,fmt)imfinfo 函数返回一个结构 info,它反映了该图像的各方面信息,其主要数据包括:文件名(路径) 、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图像的类型等。例:imfinfo(rice.ti

9、f)ans =Filename: C:MATLAB6p5toolboximagesimdemosrice.tifFileModDate: 26-Oct-1996 06:11:58FileSize: 65966Format: tifFormatVersion: Width: 256Height: 2565BitDepth: 8ColorType: grayscaleFormatSignature: 73 73 42 0ByteOrder: little-endianNewSubfileType: 0BitsPerSample: 8Compression: UncompressedPhotomet

10、ricInterpretation: BlackIsZeroStripOffsets: 8x1 doubleSamplesPerPixel: 1RowsPerStrip: 32StripByteCounts: 8x1 doubleXResolution: 72YResolution: 72ResolutionUnit: InchColormap: PlanarConfiguration: ChunkyTileWidth: TileLength: TileOffsets: TileByteCounts: Orientation: 1FillOrder: 1GrayResponseUnit: 0.

11、0100MaxSamplev alue: 255MinSamplev alue: 0Thresholding: 1ImageDescription: 1x166 char4.MATLAB 中图像文件的显示6imshowimshow 函数是最常用的显示各种图像的函数,其语法如下:imshow(X,map)其中 X 是图像数据矩阵,map 是其对应的颜色矩阵,若进行图像处理后不知道图像数据的值域可以用代替 map。需要显示多幅图像时,可以使用 figure 语句,它的功能就是重新打开一个图像显示窗口。例:I=imread(rice.tif);Imshow(I);J=imread(flowers.t

12、if);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

13、(x,y)的灰度范围是n,N,那么下述变换,就可以实现这一要求。MATLAB 图像处理工具箱中提供的 imadjust 函数,可以实现上述的线性变换对比度增强。Imadjust 函数的语法格式为:7J = 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);J = ima

14、djust(I,0.3 0.7,);imshow(I), figure, imshow(J)四实验内容与要求copy 两个图形文件 girl1.bmp 和 girl2.bmp 到 MATLAB 目录下 work文件夹中。1.将 MATLAB 目录下 work 文件夹中的 girl.bmp 图像文件读出.用到imread,imfinfo 等文件,观察一下图像数据,了解一下数字图像在MATLAB 中的处理就是处理一个矩阵。将这个图像显示出来(用imshow) ,尝试修改 map 颜色矩阵的值,再将图像显示出来,观察图像颜色的变化。2.将 MATLAB 目录下 work 文件夹中的 girl2.bm

15、p 图像文件读出,显示它的图像及灰度直方图,可以发现其灰度值集中在一段区域,用imadjust 函数将它的灰度值调整到0,1 之间,并观察调整后的图像与原图像的差别,调整后的灰度直方图与原灰度直方图的区别。3.请设计一程序,实现将 Couple.tif 调整成为亮度较均衡的图像。8五、附录(1) I=Imread(cameraman.tif); I,map=Imread(cameraman.tif); Imfinfo(cameraman.tif); imshow(I) J=imadd(I,50); figure,imshow(J)(2) I=Imread(trees.tif); subplot

16、(1,2,1),imshow(I),subplot(1,2,2),imhist(I) J=Imadjust(I,0,0.5,0,1); figure,subplot(1,2,1),imshow(I),subplot(1,2,2),imshow(J) figure,subplot(1,2,1),imhist(I),subplot(1,2,2),imhist(J)(3) I=Imread(trees.tif); low_in=min(min(I) high_in=max(max(I) a=double(low_in)/255,b=double(high_in)/255 J=Imadjust(I,a,b,0,1); figure,subplot(2,2,1),imshow(I),subplot(2,2,2),imhist(I) figure,subplot(2,2,3),imshow(J),subplot(2,2,4),imhist(J)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。