数字图像处理实验课件1_第1页
数字图像处理实验课件1_第2页
数字图像处理实验课件1_第3页
数字图像处理实验课件1_第4页
数字图像处理实验课件1_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字图像处理数字图像处理课程实验课程实验共8学时使用平台:vc6.0三个实验:三个实验:lVC图像编程基础图像编程基础 了解位图格式 掌握CDIB类的使用 学会新建工程 学会添加菜单项和响应函数 掌握位图的打开和显示l一个简单的图像处理工程实例一个简单的图像处理工程实例 功能函数的编程实现 掌握图像的点运算编程 了解二值化和底片化的原理 l图像的空间域平滑和锐化图像的空间域平滑和锐化 掌握空间域平滑锐化的基本原理 编写实现空间域平滑锐化功能的代码一、一、VC图像处理基础图像处理基础l重点重点: 位图的读取和显示l难点难点: VC开发环境、类的使用l必备知识:必备知识: 熟悉VC基本环境(如会建

2、立一个工程、会使用一个现成的类)主要内容主要内容lBmp位图图像格式lCDIB类的介绍lVc的基本知识l建立一个新工程l利用CDIB类打开、显示图像位图图像格式位图图像格式 BMP文件由文件头、位文件头、位图信息头、颜色信息和图信息头、颜色信息和图像数据图像数据四部分组成。文件头文件头位图信息位图信息(信息头颜色信息表)(信息头颜色信息表)图像数据图像数据位图图像格式文件头位图图像格式文件头BMP文件头数据结构含有文件头数据结构含有BMP文件的类型、文件大文件的类型、文件大小小和和位图起始位置等信息。位图起始位置等信息。 其结构定义如下:typedef struct tagBITMAPFILE

3、HEADER WORD bfType; / 位图文件的类型,必须为BM DWORD bfSize; / 位图文件的大小,以字节为单位 WORD bfReserved1; / 位图文件保留字,必须为0 WORD bfReserved2; / 位图文件保留字,必须为0 DWORD bfOffBits; / 位图数据的起始位置,以相对于位图 / 文件头的偏移量表示,以字节为单位 BITMAPFILEHEADER;位图图像格式位图信息头位图图像格式位图信息头lBMP位图信息头数据用于说明位图的尺寸等信息。ltypedef struct tagBITMAPINFOHEADERDWORD biSize;

4、/ 本结构所占用字节数LONG biWidth; / 位图的宽度,以像素为单位LONG biHeight; / 位图的高度,以像素为单位WORD biPlanes; / 目标设备的级别,必须为1WORD biBitCount/ 每个像素所需的位数,必须是1(双色), / 4(16色),8(256色)或24(真彩色)之一DWORD biCompression; / 位图压缩类型,必须是 0(不压缩), / 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一DWORD biSizeImage; / 位图的大小,以字节为单位LONG biXPelsPerMeter; / 位图水平分辨率,

5、每米像素数LONG biYPelsPerMeter; / 位图垂直分辨率,每米像素数DWORD biClrUsed;/ 位图实际使用的颜色表中的颜色数DWORD biClrImportant;/ 位图显示过程中重要的颜色数 BITMAPINFOHEADER; 位图图像格式颜色信息表位图图像格式颜色信息表l颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。 RGBQUAD结构的定义如下:typedef struct tagRGBQUAD BYTErgbBlue;/ 蓝色的亮度(值范围为0-255) BYTErgbGreen; / 绿色的亮度(值范

6、围为0-255) BYTErgbRed; / 红色的亮度(值范围为0-255) BYTErgbReserved;/ 保留,必须为0 RGBQUAD;l 位图图像格式颜色信息表位图图像格式颜色信息表l颜色表中RGBQUAD结构数据的个数有biBitCount来确定: biBitCount=1,4,8时,分别有2,16,256个表项;当biBitCount=16,24,32时,没有颜色表项。l位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下:typedef struct tagBITMAPINFO BITMAPINFOHEADER bmiHeader; / 位图信息头 RGBQUA

7、D bmiColors1; / 颜色表 BITMAPINFO;位图图像格式象素数据位图图像格式象素数据l位图数据位图数据位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。位图的一个像素值所占的字节数:当biBitCount=1时,8个像素占1个字节;当biBitCount=4时,2个像素占1个字节;当biBitCount=8时,1个像素占1个字节;当biBitCount=16时,1个像素占2个字节(RGB555格式);当biBitCount=24时,1个像素占3个字节(BGR格式);当biBitCount=32时,1个像素占4个字节(BGR-格式,-表示不

8、处理的字节)位图图像格式象素数据位图图像格式象素数据lWindows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充,一个扫描行所占的字节数计算方法:DataSizePerLine= (biWidth* biBitCount+31)/8; / 一个扫描行所占的字节数DataSizePerLine= DataSizePerLine/4*4; / 字节数必须是4的倍数位图数据的大小(不压缩情况下):DataSize= DataSizePerLine* biHeight; CDIB类介绍类介绍 该类将位图文件的读取、象素数据的获取及显示进行了封装。具体的代码见附带的电子

9、参考资料。下面介绍具体的成员和方法: CDIB类介绍类介绍 1、bool CDIB:LoadFromFile(LPCTSTR lpszFileName) 功能:功能:用于加载位图。 参数参数:lpszFileName表示加载的位图路径和名称。如:d:test123.bmp 返回值:返回值:成功读取后,返回true,否则为false 注意:注意:但调用该函数成功加载位图后,CDIB类的成员变量m_bLoaded将变为true,否则为false,因此,可以通过m_bLoaded来进行判断是否加载了位图。CDIB类介绍类介绍 2、int GetDIBWidth()功能:功能:获取位图的宽度返回值:返

10、回值:位图的宽度注意:注意:该函数只有在加载位图后才能调用,否则会出错(可通过m_bLoaded来判断)。3、int GetDIBHeight()功能:功能:获取位图的高度返回值:返回值:位图的高度注意:注意:该函数只有在加载位图后才能调用,否则会出错(可通过m_bLoaded来判断)。CDIB类介绍类介绍 4、void CDIB:ShowDIB(CDC *pDC, int nLeft, int nTop, int nRight, int nBottom, BYTE *pDIBData,BITMAPINFO* pBMI)功能:功能:显示位图参数:参数:pDC /DC的句柄nLeft, /目标矩

11、形左上角的X坐标nTop, /目标矩形左上角的Y坐标nRight, /目标矩形的宽度nBottom, /目标矩形的高度0, /源矩形左上角的X坐标0, /源矩形左上角的Y坐标GetDIBWidth(), /源矩形的宽度GetDIBHeight(), /源矩形的高度pDIBData, /位图图象数据的地址 pBMI, /位图信息结构地址CDIB类介绍类介绍 5 5、InvalidateDataInvalidateData()()功能:将功能:将m_pdatam_pdata 的信息赋值给的信息赋值给m_pDIBDatam_pDIBData,便于显示,便于显示m_pdatam_pdata的信的信息。

12、息。 6 6、几个重要的成员变量、几个重要的成员变量BYTE BYTE * *m_pdatam_pdata; /; /位图的灰度信息位图的灰度信息bool m_bLoadedbool m_bLoaded; /; /表示是否加载了位图表示是否加载了位图BITMAPINFOBITMAPINFO* * m_pBMI m_pBMI; /; /位图信息头位图信息头BYTEBYTE* * m_pDIBData m_pDIBData; /; /位图象素数据指针位图象素数据指针BYTEBYTE* * m_pDumpDIBData m_pDumpDIBData; /; /位图象素数据指针位图象素数据指针BITM

13、APFILEHEADER bfhBITMAPFILEHEADER bfh; /; /位图信息头位图信息头BITMAPINFOHEADER bihBITMAPINFOHEADER bih; / ; / 位图文件头位图文件头CDIB类介绍类介绍 文件头信息头01234567891011.m_pdata与m_pDIBData的关系01234567891011.m_pdatam_DIBData8位图中两者的关系CDIB类介绍类介绍 文件头信息头0-b0-g0-r1-b1-g1-r2-b2-g2-r3-b3-g3-r.0123.m_pdatam_DIBData24位图中两者的关系m_pdata与m_pD

14、IBData的关系CDIB类介绍类介绍 注意:注意:m_pdata与m_pDIBData的关系如果是8位图,m_pdata与m_pDIBData两个指针指向的数据块内容是相等的,即:m_pdatak=m_pDIBDatak如果是24位图,m_pdata与m_pDIBData两个指针指向的数据块内容是不相等的,m_pDIBData代表的是象素的RGB格式,而m_pdata表示的是象素的灰度信息。 m_pdata与m_pDIBData的关系CDIB类介绍类介绍 当为当为2424位图时,显示时采用位图时,显示时采用m_pDIBDatam_pDIBData数据,数据,为简单起见,我们可以仅仅对灰度信息

15、进行处为简单起见,我们可以仅仅对灰度信息进行处理,因为在灰度信息理,因为在灰度信息m_pdatam_pdata数据中,一个象素数据中,一个象素对应于一个字节,而彩色信息对应于一个字节,而彩色信息m_pDIBDatam_pDIBData数据数据中,一个象素对于于三个字节。如果对中,一个象素对于于三个字节。如果对m_pdatam_pdata进行处理后,我们可以通过调用进行处理后,我们可以通过调用InvalidateDataInvalidateData()()函数来将函数来将m_pdatam_pdata的数据赋值的数据赋值给给m_pDIBDatam_pDIBData,从而显示处理结果。,从而显示处理结果。CDIB类介绍类介绍实验中类的使用流程实验中类的使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论