版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数字图像处理数字图像处理课程实验课程实验共8学时使用平台:vc6.0三个实验:三个实验:lVC图像编程基础图像编程基础l 了解位图格式了解位图格式l 掌握掌握CDIB类的使用类的使用l 学会新建工程学会新建工程l 学会添加菜单项和响应函数学会添加菜单项和响应函数l 掌握位图的打开和显示掌握位图的打开和显示l一个简单的图像处理工程实例一个简单的图像处理工程实例 l 功能函数的编程实现功能函数的编程实现l 掌握图像的点运算编程掌握图像的点运算编程l 了解二值化和底片化的原理了解二值化和底片化的原理l l图像的空间域平滑和锐化图像的空间域平滑和锐化 l 掌握空间域平滑锐化的基本原理掌握空间域平滑锐化
2、的基本原理l 编写实现空间域平滑锐化功能的代码编写实现空间域平滑锐化功能的代码一、一、VC图像处理基础图像处理基础l重点:重点:l 位图的读取和显示位图的读取和显示l难点:难点:l VC开发环境、类的使用开发环境、类的使用l必备知识:必备知识:l 熟悉熟悉VC基本环境如会建立一个工程、基本环境如会建立一个工程、会使用一个现成的类)会使用一个现成的类)主要内容主要内容lBmp位图图像格式lCDIB类的介绍lVc的基本知识l建立一个新工程l利用CDIB类打开、显示图像位图图像格式位图图像格式 BMP文件由文件头、位图信息头、颜色信息和图像数据四部分组成。文件头文件头位图信息位图信息(信息头颜色信息
3、表)(信息头颜色信息表)图像数据图像数据位图图像格式文件头位图图像格式文件头BMP文件头数据结构含有文件头数据结构含有BMP文件的类型、文件大文件的类型、文件大小和位图起始位置等信息。小和位图起始位置等信息。 其结构定义如下其结构定义如下:typedef struct tagBITMAPFILEHEADER WORD bfType; / 位图文件的类型,必须为位图文件的类型,必须为BM DWORD bfSize; / 位图文件的大小,以字节为位图文件的大小,以字节为单位单位 WORD bfReserved1; / 位图文件保留字,必位图文件保留字,必须为须为0 WORD bfReserved2
4、; / 位图文件保留字,必位图文件保留字,必须为须为0 DWORD bfOffBits; / 位图数据的起始位置,以位图数据的起始位置,以相对于位图相对于位图 / 文件头的偏移量表示,以字文件头的偏移量表示,以字节为单位节为单位 BITMAPFILEHEADER;位图图像格式位图信息头位图图像格式位图信息头lBMP位图信息头数据用于说明位图的尺寸等信息。ltypedef struct tagBITMAPINFOHEADERDWORD biSize; / 本结构所占用字节数LONG biWidth; / 位图的宽度,以像素为单位LONG biHeight; / 位图的高度,以像素为单位WORD
5、biPlanes; / 目标设备的级别,必须为1WORD biBitCount/ 每个像素所需的位数,必须是1(双色), / 4(16色),8(256色)或24(真彩色)之一DWORD biCompression; / 位图压缩类型,必须是 0(不压缩), / 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一DWORD biSizeImage; / 位图的大小,以字节为单位LONG biXPelsPerMeter; / 位图水平分辨率,每米像素数LONG biYPelsPerMeter; / 位图垂直分辨率,每米像素数DWORD biClrUsed;/ 位图实际使用的颜色表中的颜
6、色数DWORD biClrImportant;/ 位图显示过程中重要的颜色数 BITMAPINFOHEADER; 位图图像格式颜色信息表位图图像格式颜色信息表l颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。l RGBQUAD结构的定义如下:typedef struct tagRGBQUAD l BYTErgbBlue;/ 蓝色的亮度(值范围为0-255) BYTErgbGreen; / 绿色的亮度(值范围为0-255) BYTErgbRed; / 红色的亮度(值范围为0-255) BYTErgbReserved;/ 保管,必须为0 l RG
7、BQUAD;l 位图图像格式颜色信息表位图图像格式颜色信息表l颜色表中RGBQUAD结构数据的个数有biBitCount来确定: biBitCount=1,4,8时,分别有2,16,256个表项;当biBitCount=16,24,32时,没有颜色表项。l位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下:typedef struct tagBITMAPINFO BITMAPINFOHEADER bmiHeader; / 位图信息头 RGBQUAD bmiColors1; / 颜色表 BITMAPINFO;位图图像格式象素数据位图图像格式象素数据l位图数据位图数据位图数据记录了位
8、图的每一个像素值,位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右记录顺序是在扫描行内是从左到右,扫描扫描行之间是从下到上。位图的一个像素值所行之间是从下到上。位图的一个像素值所占的字节数占的字节数:当当biBitCount=1时,时,8个像素占个像素占1个字节个字节;当当biBitCount=4时,时,2个像素占个像素占1个字节个字节;当当biBitCount=8时,时,1个像素占个像素占1个字节个字节;当当biBitCount=16时时,1个像素占个像素占2个字节个字节RGB555格式)格式);当当biBitCount=24时时,1个像素占个像素占3个字节个字节BGR格式)
9、格式);当当biBitCount=32时时,1个像素占个像素占4个字节个字节BGR-格式,格式,-表示不处理的字节)表示不处理的字节)位图图像格式象素数据位图图像格式象素数据lWindows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充,一个扫描行所占的字节数计算方法:DataSizePerLine= (biWidth* biBitCount+31)/8; / 一个扫描行所占的字节数DataSizePerLine= DataSizePerLine/4*4; / 字节数必须是4的倍数位图数据的大小(不压缩情况下):DataSize= DataSizePerLine
10、* biHeight; CDIB类介绍类介绍 该类将位图文件的读取、象素数据的获取及显示进行了封装。具体的代码见附带的电子参考资料。下面介绍具体的成员和方法: CDIB类介绍类介绍 1、bool CDIB:LoadFromFile(LPCTSTR lpszFileName) 功能:用于加载位图。 参数:lpszFileName表示加载的位图路径和名称。如:d:test123.bmp 返回值:成功读取后,返回true,否则为false 留意:但调用该函数成功加载位图后,CDIB类的成员变量m_bLoaded将变为true,否则为false,因此,可以通过m_bLoaded来进行判断是否加载了位图
11、。CDIB类介绍类介绍 2、int GetDIBWidth()功能:获取位图的宽度返回值:位图的宽度留意:该函数只有在加载位图后才能调用,否则会出错可通过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)功能:显示位图参数:
12、pDC /DC的句柄nLeft, /目标矩形左上角的X坐标nTop, /目标矩形左上角的Y坐标nRight, /目标矩形的宽度nBottom, /目标矩形的高度0, /源矩形左上角的X坐标0, /源矩形左上角的Y坐标GetDIBWidth(), /源矩形的宽度GetDIBHeight(), /源矩形的高度pDIBData, /位图图象数据的地址 pBMI, /位图信息结构地址CDIB类介绍类介绍 5 5、InvalidateData()InvalidateData()功能:将功能:将m_pdata m_pdata 的信息赋值给的信息赋值给m_pDIBDatam_pDIBData,便于显示,便于
13、显示m_pdatam_pdata的信的信息。息。 6 6、几个重要的成员变量、几个重要的成员变量BYTE BYTE * *m_pdata; /m_pdata; /位图的灰度信息位图的灰度信息bool m_bLoaded; /bool m_bLoaded; /表示是否加载了位图表示是否加载了位图BITMAPINFOBITMAPINFO* * m_pBMI; / m_pBMI; /位图信息头位图信息头BYTEBYTE* * m_pDIBData; / m_pDIBData; /位图象素数据指针位图象素数据指针BYTEBYTE* * m_pDumpDIBData; / m_pDumpDIBData;
14、 /位图象素数据指针位图象素数据指针BITMAPFILEHEADER bfh; /BITMAPFILEHEADER bfh; /位图信息头位图信息头BITMAPINFOHEADER bih; / BITMAPINFOHEADER 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_DIBData
15、24位图中两者的关系m_pdata与m_pDIBData的关系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
16、_pdata与m_pDIBData的关系CDIB类介绍类介绍 当为当为2424位图时,显示时采用位图时,显示时采用m_pDIBDatam_pDIBData数据,数据,为简单起见,我们可以仅仅对灰度信息进行处为简单起见,我们可以仅仅对灰度信息进行处理,因为在灰度信息理,因为在灰度信息m_pdatam_pdata数据中,一个象素数据中,一个象素对应于一个字节,而彩色信息对应于一个字节,而彩色信息m_pDIBDatam_pDIBData数据数据中,一个象素对于于三个字节。如果对中,一个象素对于于三个字节。如果对m_pdatam_pdata进行处理后,我们可以通过调用进行处理后,我们可以通过调用InvalidateData()InvalidateData()函数来将函数来将m_pdatam_pdata的数据赋值的数据赋值给给m_pDIBDatam_pDIBData,从而显示处理结果。,从而显示处理结果。CDIB类介
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宁波鄞州区东吴镇人民政府编外人员招聘6人考试模拟卷附答案
- 2025广西贵港市金融投资发展集团有限公司招聘4人考前自测高频考点模拟试题附答案
- 2025安徽皖信人力资源管理有限公司招聘望江某电力外委人员1人(公共基础知识)测试题附答案
- 2026广西财经学院公开招聘教职人员72人笔试备考试题及答案解析
- 2026四川自贡医元健康管理有限责任公司招聘工作人员11人笔试参考题库及答案解析
- 迎新年庆元旦师生活动策划【演示文档课件】
- 资阳市雁江区审计局2026年公开招聘编外专业人员(2人)笔试备考题库及答案解析
- 2026山东省科创集团有限公司权属企业招聘5人笔试参考题库及答案解析
- 2026浙江宁波市北仑区港航管理中心招聘编外人员1人笔试备考题库及答案解析
- 2026中国铁建海洋产业技术研究院招聘28人笔试备考题库及答案解析
- 04S519小型排水构筑物1
- 2023年个税工资表
- 劳动者个人职业健康监护档案
- 2023新青年新机遇新职业发展趋势白皮书-人民数据研究院
- 《两角和与差的正弦、余弦、正切公式》示范公开课教学PPT课件【高中数学人教版】
- 管理学原理教材-大学适用
- 变电站一次侧设备温度在线监测系统设计
- GB/T 6579-2007实验室玻璃仪器热冲击和热冲击强度试验方法
- GB/T 16913.3-1997粉尘物性试验方法第3部分:堆积密度的测定自然堆积法
- GB/T 12621-2008管法兰用垫片应力松弛试验方法
- 重庆大学介绍课件
评论
0/150
提交评论