数字图像处理 第2章

上传人:mg****85 文档编号:56632033 上传时间:2018-10-14 格式:PPT 页数:49 大小:1.10MB
返回 下载 相关 举报
数字图像处理 第2章_第1页
第1页 / 共49页
数字图像处理 第2章_第2页
第2页 / 共49页
数字图像处理 第2章_第3页
第3页 / 共49页
数字图像处理 第2章_第4页
第4页 / 共49页
数字图像处理 第2章_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《数字图像处理 第2章》由会员分享,可在线阅读,更多相关《数字图像处理 第2章(49页珍藏版)》请在金锄头文库上搜索。

1、2018/10/14,第1页,2.1 数字图像的表示,第二章 基本原理,图像 表示为一个二维函数f(x,y), 其中x,yR表示空间(平面)坐标, 坐标(x,y)处的幅值 f R称为图像在该处的幅值 灰度图像: 二维灰度函数 f(x,y)灰度(gray level)或强度(intensity) 彩色图像: 三个二维强度函数组成f(x,y), 如RGB, HSV, YUV, Lab不同颜色空间,2018/10/14,第2页,数字图像: 坐标和幅值离散化的图像 (灰度)数字图像:表示为一个二维函数f(x,y),其中x,yN表示空间坐标,而在坐标(x,y)处的幅值f N 称为图像在该处的灰度(gra

2、y level)或强度。图像有高度H、宽度W和灰度级。 彩色数字图像: 表示为三个二维灰度数字图像.,2018/10/14,第3页,图像取样和量化,数字图像是模拟图像经取样、量化、编码获得 图像取样: 图像空间离散化, 确定图像空间分辨率 图像量化:图像幅度离散化, 确定图像幅度分辨率 图像编码: 用较少的bit表示量化后的图像(JPEG),2018/10/14,第4页,数字图像的质量很大程度上取决于取样和量化过程中所用的取样数和灰度级, 图像内容是确定这两个参数的重要因素,图像取样和量化,2018/10/14,第5页,数字图像用MN维矩阵表示 M和N分别表示图像行、列的取样点数(确定空间分辨

3、率) 灰度级总数为L(确定灰度分辨率) 起始位置为f(0,0), 灰度级范围为0, L-1 M、N和L通常取2的整数次幂, 如果L=2k, 则该图是k比特图,2018/10/14,第6页,2.1.1 坐标约定:,对图像取样和量化的结果是一个实数矩阵。 主要采用的坐标系:,2018/10/14,第7页,2.1.2 图像的矩阵表示,该数组的每一个元素都称为像元、图元或像素。 一副数字图像在MATLAB中可以表示成矩阵:,在约定的坐标系下,数字化图像函数的表示:,其中f(1,1)=f(0,0),罗马斜体字母表示数字表达式,等宽字体用来表示MATLAB中的量。,2018/10/14,第8页,2.2 读

4、取图像,使用函数imread可以将图像读人MATLAB环境,imread的语法为: Imread(filename); 其中filename是一个含有图像文件全名的字符串(包括扩展名),如: F=imread(lena.jpg); Fimread(D:myimageslena.jpg); I=imread(c:lena.bmp);,2018/10/14,第9页, size(I) ans =256 256, M,N=size(I);, whos IName Size Bytes ClassI 256x256 65536 uint8 array Grand total is 65536 eleme

5、nts using 65536 bytes,2018/10/14,第10页,2.3 显示图像,在MATLAB桌面上一般使用函数imshow来显示,该函数的基本语法为: imshow(f,G),f为图像数组,G为图像的灰度级数。若将省略,则G默认为256 imshow(f) imshow(f,low high) imshow(f,), (在显示一副动态范围较小的图像或者既有正值又有负值的图像时非常有用),2018/10/14,第11页,当用imshow显示另一副图像时,MATLAB会在屏幕上用新图像替换旧图像。为保持一副图像并同时显示第二副图像,可以用figure函数: figure,imsho

6、w(I) 如: imshow(f),figure,imshow(g)可以同时显示两幅图像。假设我们读入一副动态范围很小的图像并用imshow(h)显示,同时,可以用imshow(h,)显示并修正显示结果。,2018/10/14,第12页,函数impixelinfo会在上次显示的图像上显示光标,交互地显示单个像素的亮度值。 当按住鼠标左键不放,则impixelinfo将显示光标初始位置和当前位置间的欧几里德距离。,2018/10/14,第13页,2.4 保存图像,imwirte函数可以将图像写到磁盘上,语法: imwrite(f,filename),filename中包含的字符串必须是一种可识别

7、的文件格式扩展名(见表2.1)。下面的命令可将图像h写为TIFF格式,且名为xray。 imwrite(f,xray,tif)或者 imwrite(f,xray.tif) 若filename中不包含路径信息,则imwrite会将文件保存到当前的工作目录中。,2018/10/14,第14页,一种常用但只适用于JPEG图像的函数是imwrite,语法为 Imwrite(f,filename.jpg,quality,q) q为0到100之间的整数,q越小,图像退化越严重。,2018/10/14,第15页, imfinfo bubble.jpg ans = Filename: bubble.jpgFi

8、leModDate: 11-Jul-2011 11:33:33FileSize: 10947Format: jpgFormatVersion: Width: 720Height: 688BitDepth: 8ColorType: grayscaleFormatSignature: Comment: ,imfinfo函数:显示图像文件的压缩方式以及其他详细信息 语法: imfinfo filename其中filename为存储到磁盘中的图像的全名,2018/10/14,第16页,例如计算图像bubbles.jpg的压缩比: K=imfinfo(bubbles.jpg); image_bytes=

9、K.Width*K.Height*K.BitDepth/8; compressed_bytes=K.FilesSize; compression_ratio=image_bytes/compressed_bytes; Compression_ratio=35.1612,也可以让函数imfinfo显示的信息域捕获至所谓的结构变量中,以便后续计算。如: Kimfinfo(bubbles.jpg); 则图像文件的信息存入了结构变量K之中。,注意:命令函数imfinfo有两种用法。一种是直接在命令行键入imfinfo 文件名,在屏幕显示图像文件详细信息,第二种是键入Kimfinfo(文件名),将图像文

10、件信息存入结构变量K中。命令函数的二元性,2018/10/14,第17页,imwrite函数另外一种常用但只适用于tif格式的图像语法为: imwrite(g,filename.tif,compression,parameter,resolution,colres rowres) g:一个图像数组 filename:存储到磁盘的文件全名 parameter:none无压缩,packbite比特压缩(非二值图像的默认参数),ccitt表示ccitt压缩(二值图像的默认参数) colres,rowres:分别表示垂直方向和水平方向上每英寸的点(像素)数(dpi)。,2018/10/14,第18页,

11、例2.3:下图是一块电路板的X光图像,格式为JPG,分辨率为200dpi,图像大小为450450象素,尺寸为2.252.25英寸。想将其以TIF格式存储为无压缩的名为sf的图像,并将尺寸减小到1.51.5英寸,但像素数仍保持保持为450450。,res=round(450/1.5); imwrite(f,sf.tif,compression,none,resolution,res);,2018/10/14,第19页,MATLAB图形窗口的内容输出到磁盘: 图形窗口的下拉菜单File-Export,用户可以选择保存路径,文件名,以及文件格式。 使用Print命令,设置更多输出参数。 print

12、fno dfileformat rresno filename 其中: no图形窗口的图形编号, fileformat是保存格式, resno是分辨率, filename为文件指定的文件名。 若在命令行简单键入print,则MATLAB会打印上一个显示的图形窗口的内容。,2018/10/14,第20页,2.5 数据类(型),MATLAB中的像素值本身并不是整数。表2.2中列出了MATLAB和IPT为表示像素值所支持的各种数据类。表中的前8项称为数值数据类,第9项称为字符类,最后一项称为逻辑数据类。 MATLAB中所有的数值计算都可用double类来进行,所以它也是图像处理应用中最常使用的数据类

13、。 uint8数据类也是一种频繁使用的数据类,尤其是在从存储设备中读取数据时,因为8比特图像是实际中最常用的图像。logical类和使用较少的uint16类构成了本书集中讨论的基础数据类。,2018/10/14,第21页,2018/10/14,第22页,2.6 图像类型,工具箱支持以下4种图像类型: 亮度图像(Intensity images ) 二值图像(Binary images ) 索引图像(Indexed images) RGB图像(RGB images)大多数单色图像的处理运算是通过二值图像或亮度图像来进行的,所以我们首先重点研究这两种图像。索引图像和RGB图像将在第6章中讨论。,2

14、018/10/14,第23页,2.6.1亮度图像,一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。 若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是0,255和0,65535 若图像是double类,则图像取值就是浮点数。规定双精度型归一化亮度图像的取值范围是0,1。,2018/10/14,第24页,2.6.2二值图像,二值图像在MATLAB中具有非常特殊的意义。一幅二值图像是一个取值只有0和1的逻辑数组。因而,一个取值只包含0和1的uint8类数组,在MATLAB中并不认为是二值图像。 使用logical函数可以把数值数组转换为二值数组。因此,若A是一个由0和1

15、构成的数值数组,则可使用如下语句创建一个逻辑数组B: B=logical(A) 若A中含有除了0和1之外的其他元素,则使用logical函数就可以将所有非零的量变换为逻辑1,而将所有的0值变换为逻辑0。使用关系和逻辑运算符也可以创建逻辑数组(见2.10.2节)。,2018/10/14,第25页,要侧试一个数组是否为逻辑数组,可以使用函数islogical: islogical(c) 若C是逻辑数组,则该函数返回1;否则,返回0。使用2.7.1节所讨论的数据类转换函数,可将逻辑数组转换为数值数组。,2018/10/14,第26页,2.7 类型转换,在IPT应用中,数据类与图像类型间的转换是非常频

16、繁的操作。 数据类间的转换相当直接,通用的语法为:B=data _class_name (A)其中,data_ cJ.ass_name可以是表2.2中第一列的任何一项。 例如,假设A是一个uint8类数组,则命令B = double(A)会产生一个双精度数组B。这种转换贯穿全书,因为MATLAB希望数值计算中的所有操作数都是双精度浮点数double类。,2018/10/14,第27页,假设C是一个取值范围为0, 255)很有可能包含小数)的double类数组,则命令D=uint8(C)可将其转换为一个uint8类数组。 若一个double类数组包含有区间0, 255之外的值,则在使用上述方法将其转换成uint8类数组时,MATLAB会将所有小于0的值转换为0,所有大于255的值转换为255,而在0和255之间的值将全部舍去小数部分转换为整数;因此,在将double类数组转换成uint8类数组之前,有必要先对其进行适当的缩放,以使其元素的取值尽量在区间0, 255内。如2.6.2节中提到的那样,在将任何数值数据类转换为logical类时,数组中的所有非0值将转换为逻辑1, 0值将转换为逻辑0。,

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

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号