《图形图像显》PPT课件.ppt
第第1111章章 图形图像显示图形图像显示图形图像显示是将连续数据或者离散进行数据可视化的一图形图像显示是将连续数据或者离散进行数据可视化的一种重要处理方法。种重要处理方法。MATLAB是基于向量(数组)的高级是基于向量(数组)的高级程序语言,从本质上,程序语言,从本质上,MATLAB就可以提供对图形和图就可以提供对图形和图像处理提供有效的技术支持。本章对像处理提供有效的技术支持。本章对MATLAB的图像处的图像处理,图像格式与理,图像格式与MATLAB图像类型,图像类型,MATLAB图像显图像显示方法和示方法和MATLAB图形显示命令等基础内容进行了简单图形显示命令等基础内容进行了简单介绍,并介绍了介绍,并介绍了VC+调用调用MATLAB函数进行绘图和图函数进行绘图和图像处理的方法,最后给出了综合实例。像处理的方法,最后给出了综合实例。11.1 VC+11.1 VC+和和MATLABMATLAB图形图像处理混合编程原图形图像处理混合编程原则则图形图像处理的基本内容包括:以二维和三维的方式显示图形图像处理的基本内容包括:以二维和三维的方式显示图形。对不同类型的图象进行读写和显示。处理的图像图形。对不同类型的图象进行读写和显示。处理的图像类型包括二进制图像、灰度图像、索引图像、类型包括二进制图像、灰度图像、索引图像、RGB图像图像和磁盘图像等。和磁盘图像等。11.2.1 VC+11.2.1 VC+的图像处理方法的图像处理方法VC+处理图形图像比较复杂,在处理图形图像比较复杂,在VC+中提供了操作图像中提供了操作图像的基础的基础COM对象类对象类IPicture,如果需要读取,如果需要读取bmp,jpg等等图像文件,则需要编写代码实现图像的打开(读取),图像文件,则需要编写代码实现图像的打开(读取),并在并在VC+运行界面的视图区显示。运行界面的视图区显示。11.2.2 VC+11.2.2 VC+图形处理方法图形处理方法在在VC+MFC中没有提供现成的类或函数实现正玹,余玹中没有提供现成的类或函数实现正玹,余玹曲线等曲线的绘制功能。通常需要使用类似的函数进行曲线等曲线的绘制功能。通常需要使用类似的函数进行变通实现,可以使用折线函数变通实现,可以使用折线函数PolylineTo(),Polyline()等函数。函数的基本语法格式为:等函数。函数的基本语法格式为:BOOL PolylineTo(const POINT*lpPoints,int nCount);BOOL Polyline(LPPOINT lpPoints,int nCount);11.2.3 VC+11.2.3 VC+和和MATLABMATLAB图形图像处理的接口设图形图像处理的接口设计计VC+和和MATLAB混合编程进行图形图像处理,通常采用混合编程进行图形图像处理,通常采用Matcom方法进行混合编程,即将方法进行混合编程,即将MATLAB的源代码译的源代码译成同等功能的成同等功能的C+源代码。然后在具体的工程中包含必源代码。然后在具体的工程中包含必要的要的lib,dll以及以及h文件,就可以完全脱离文件,就可以完全脱离MATLAB环境实环境实现对现对MATLAB函数和过程的有效调用。函数和过程的有效调用。11.3 MATLAB11.3 MATLAB图像处理基础图像处理基础本节主要介绍如何显示图像,查看内存中的图像,图像灰本节主要介绍如何显示图像,查看内存中的图像,图像灰度分布直方图均衡化,图像文件的保存和查看图像文件度分布直方图均衡化,图像文件的保存和查看图像文件中的内容等内容。中的内容等内容。11.3.1 11.3.1 显示图像显示图像为了显示图像,首先清除为了显示图像,首先清除MATLAB 所有的工作平台变量所有的工作平台变量,关闭已打开的图形窗口。其程序代码如下关闭已打开的图形窗口。其程序代码如下:clear;close all;11.3.2 11.3.2 查内存中的图像查内存中的图像使用使用whos 命令来查看图像数据命令来查看图像数据I是如何存储在内存中是如何存储在内存中,其命其命令格式为令格式为:whos执行后执行后MATLAB中会得到如下图像的信息:中会得到如下图像的信息:Name Size Bytes ClassI 291 240 69840 uint8 arrayGrand total is 69840 elements using 69840 bytes11.3.3 11.3.3 图像灰度分布直方图均衡化图像灰度分布直方图均衡化为了观察图像当前状态下亮度分布情况,可以通过使用为了观察图像当前状态下亮度分布情况,可以通过使用imhist()函数创建描述该图像灰度分布的直方图。调入函数创建描述该图像灰度分布的直方图。调入MATLAB自带的图像文件自带的图像文件pout.tif,避免直方图覆盖图像,避免直方图覆盖图像数组数组I的显示结果。的显示结果。11.3.4 11.3.4 图像文件的保存图像文件的保存将前面进行灰度值处理后的图像将前面进行灰度值处理后的图像I2保存到磁盘上。若希望保存到磁盘上。若希望将该图像保存为将该图像保存为PNG格式的图像文件格式的图像文件,可以使用可以使用imwrite()函数并指定一个文件名函数并指定一个文件名,该文件的扩展名为该文件的扩展名为.png。其命。其命令格式为令格式为:imwrite(I2,pout2.png);11.3.5 11.3.5 查新生成文件的内容查新生成文件的内容利用利用imfinfo()函数可以观察上述语句将什么内容保存在磁函数可以观察上述语句将什么内容保存在磁盘上。需要注意的是:在盘上。需要注意的是:在imfinfo()函数语句行末尾不要函数语句行末尾不要加上分号,以保证加上分号,以保证MATLAB能够显示图像输出结果;另能够显示图像输出结果;另外,要保证此时的路径与调用外,要保证此时的路径与调用imwrite()函数时的路径一函数时的路径一致。使用方法为,致。使用方法为,imfinfo(pout2.png)11.4.1 11.4.1 常用图像格式常用图像格式图像格式指的是存储图像采用的文件格式。不同类型的操图像格式指的是存储图像采用的文件格式。不同类型的操作系统下使用不同的图像处理软件,所支持的图像格式作系统下使用不同的图像处理软件,所支持的图像格式都有可能不同。在实际应用中经常会遇到的图像格式包都有可能不同。在实际应用中经常会遇到的图像格式包括括TIFTIF、GIFGIF、TIFFTIFF、PCXPCX、WMFWMF、JPEGJPEG、PSDPSD、PCDPCD等。等。11.4.2 MATLAB11.4.2 MATLAB图像类型图像类型图像类型是指数组数值与像素颜色之间定义的关系,它与图像类型是指数组数值与像素颜色之间定义的关系,它与图像格式概念有所不同,在图像格式概念有所不同,在MATLAB 图像处理工具箱图像处理工具箱中,有五种类型的图像中,有五种类型的图像1.二进制图像二进制图像2.索引图像索引图像3.多帧图像多帧图像4.灰度图像灰度图像5.RGB 图像图像11.4.3 MATLAB11.4.3 MATLAB图像类型转换图像类型转换MATLAB图像处理工具箱支持索引图像、灰度图像、二进图像处理工具箱支持索引图像、灰度图像、二进制图像和真色彩(制图像和真色彩(RGB)图像等基本图像类型。这些图)图像等基本图像类型。这些图像类型可以根据需要进行相互转换,像类型可以根据需要进行相互转换,MATLAB中图像类中图像类型的转换主要通过函数来实现型的转换主要通过函数来实现11.5 MATLAB11.5 MATLAB图像显示命令图像显示命令图像的显示过程就是将图像从一组离散数据还原为一幅可图像的显示过程就是将图像从一组离散数据还原为一幅可见的图像。图像的显示是提高图像处理分析性能非常有见的图像。图像的显示是提高图像处理分析性能非常有用的一个手段,通过图像的显示,可以监视图像处理过用的一个手段,通过图像的显示,可以监视图像处理过程,并与处理分析交互地控制处理分析过程。图像显示程,并与处理分析交互地控制处理分析过程。图像显示最重要的特性是图像的大小、光度分辨率、灰度线性、最重要的特性是图像的大小、光度分辨率、灰度线性、平坦能力和噪声特性等,这些特性将共同决定一个数字平坦能力和噪声特性等,这些特性将共同决定一个数字图像显示系统的质量,以及其在特定应用中的适用性等图像显示系统的质量,以及其在特定应用中的适用性等性能指标。性能指标。11.5.1 MATLAB11.5.1 MATLAB图像的读写和显示图像的读写和显示1.读写图像文件读写图像文件2.图像的显示函数图像的显示函数11.5.2 11.5.2 二进制图像的显示方法二进制图像的显示方法在在MATLAB中,二进制图像是一个逻辑类,仅包括中,二进制图像是一个逻辑类,仅包括 0 和和 1 两个数值。像素两个数值。像素0显示为黑色,像素显示为黑色,像素1显示为白色。显示显示为白色。显示时,也可通过时,也可通过NOT()命令,对二进制图象进行取反,使命令,对二进制图象进行取反,使数值数值 0 显示为白色;显示为白色;1 显示为黑色。显示为黑色。Imshow()函数显示函数显示二进制位图的语法如下:二进制位图的语法如下:imshow(BW)11.5.3 11.5.3 灰度图像的显示方法灰度图像的显示方法存储灰度图像只需要一个数据矩阵进行显示。数据类型可存储灰度图像只需要一个数据矩阵进行显示。数据类型可以是以是double,0,1;也可以是;也可以是uint8。调用。调用imshow函数函数显示灰度图像的语法如下:显示灰度图像的语法如下:imshow(I)imshow(I,N)11.5.4 11.5.4 索引图像的显示方法索引图像的显示方法索引图像包含两个结构:一个是调色板,另一个是图像数索引图像包含两个结构:一个是调色板,另一个是图像数据矩阵。调色板是一个有据矩阵。调色板是一个有3列和若干行的色彩映象矩阵,列和若干行的色彩映象矩阵,矩阵每行代表一种颜色,矩阵每行代表一种颜色,3列分别代表红、绿、蓝色强列分别代表红、绿、蓝色强度的双精度数。利用度的双精度数。利用imshow()函数显示函数显示MATLAB的索引的索引图像时,可以同时指定图像的数据矩阵和颜色映射表,图像时,可以同时指定图像的数据矩阵和颜色映射表,语法格式为,语法格式为,imshow(X,map)其中,对于其中,对于X中的每个像素,中的每个像素,imshow都将其显示为存储在都将其显示为存储在map映射表矩阵的相应的行所对应的颜色。映射表矩阵的相应的行所对应的颜色。11.5.5 RGB11.5.5 RGB图像的显示方法图像的显示方法1.image(RGB)2.imshow(RGB)11.5.6 11.5.6 磁盘图像的直接显示磁盘图像的直接显示可以使用以下命令直接显示硬盘上的图像文件,语法格式可以使用以下命令直接显示硬盘上的图像文件,语法格式为,为,imshow filename其中,参数其中,参数filename filename 为要显示的图像文件的文件名。为要显示的图像文件的文件名。如果如果图像是多帧的,那么图像是多帧的,那么 imshow()imshow()函数将仅显示第一帧。但函数将仅显示第一帧。但需注意,在使用这种方式时,图像数据没有保存在需注意,在使用这种方式时,图像数据没有保存在MATLABMATLAB的工作空间中。如果希望将图像装入工作空间中,的工作空间中。如果希望将图像装入工作空间中,需使用需使用getimage()getimage()函数从当前的句柄图形图像对象中获函数从当前的句柄图形图像对象中获取图像数据,其简单的语法形式为:取图像数据,其简单的语法形式为:rgb getimage;11.6 MATLAB11.6 MATLAB图形显示命令图形显示命令MATLAB提供了很多图形显示命令。用户可以根据需要选提供了很多图形显示命令。用户可以根据需要选择不同的命令进行二维图形、三维图形、以及饼图,直择不同的命令进行二维图形、三维图形、以及饼图,直方图等特殊图形的绘制,一些图形显示命令的功能简介方图等特殊图形的绘制,一些图形显示命令的功能简介如下,具体的使用语法格式可以参考如下,具体的使用语法格式可以参考MATLAB的帮助文的帮助文件。件。11.7 VC+11.7 VC+和和MATLABMATLAB图形图像处理应用实例图形图像处理应用实例本节给出了本节给出了VC+中调用中调用MATLAB函数画图、利用函数画图、利用Matcom绘制动态曲线以及二维和三维曲线绘制综合应用的三个绘制动态曲线以及二维和三维曲线绘制综合应用的三个实例。实例。11.7.1 VC+11.7.1 VC+中调用中调用MATLABMATLAB函数画图函数画图通过通过VC+编程调用编程调用MATLAB函数进行绘图主要有两种方函数进行绘图主要有两种方法,一种方法是在法,一种方法是在VC+中调用中调用MATAB生成的生成的COM组组件,调用件,调用COM组件的方法,第二种方法是通过组件的方法,第二种方法是通过MATCOM的方法调用的方法调用MATLAB函数的方法。第一种方函数的方法。第一种方法在第七章已经介绍并给出了实例,本节将介绍第二种法在第七章已经介绍并给出了实例,本节将介绍第二种方法。方法。11.7.2 11.7.2 利用利用MatcomMatcom绘制动态曲线绘制动态曲线在实际的科学研究和工程应用中,绘制曲线图形通常会涉在实际的科学研究和工程应用中,绘制曲线图形通常会涉及到静态曲线和动态曲线,静态曲线由于函数关系明确,及到静态曲线和动态曲线,静态曲线由于函数关系明确,规律明显,可以直接用公式进行表述,所以可以使用规律明显,可以直接用公式进行表述,所以可以使用MATLAB中的中的plot()函数,根据自变量和因变量之间的函数,根据自变量和因变量之间的关系绘制出静态曲线,如正玹曲线和余玹曲线等。但是关系绘制出静态曲线,如正玹曲线和余玹曲线等。但是另外一种类型的曲线,如工程采样信号随着不同时刻,另外一种类型的曲线,如工程采样信号随着不同时刻,波形发生变化,通常成为动态曲线,本节将介绍如何利波形发生变化,通常成为动态曲线,本节将介绍如何利用用Matcom绘制动态曲线。绘制动态曲线。11.7.3 11.7.3 二维和三维曲线绘制综合应用二维和三维曲线绘制综合应用在工程应用中,一些绘图系统经常会涉及二维和三维曲线在工程应用中,一些绘图系统经常会涉及二维和三维曲线的绘制和显示。例如机械计算机辅助设计及制造系统的绘制和显示。例如机械计算机辅助设计及制造系统(CAD/CAM),建筑设计系统,地理信息系统(),建筑设计系统,地理信息系统(GIS)等)等等。本实例作为一个图形绘制和显示的综合应用实例,等。本实例作为一个图形绘制和显示的综合应用实例,介绍如何采用介绍如何采用MATCOM C+矩阵库的图形函数进行各矩阵库的图形函数进行各种类型的数据显示功能,具体的功能包括三维数据、等种类型的数据显示功能,具体的功能包括三维数据、等高线显示,二维数据的显示等等。高线显示,二维数据的显示等等。