数字图像处理实验课件1

上传人:少*** 文档编号:243127371 上传时间:2024-09-16 格式:PPT 页数:22 大小:89KB
返回 下载 相关 举报
数字图像处理实验课件1_第1页
第1页 / 共22页
数字图像处理实验课件1_第2页
第2页 / 共22页
数字图像处理实验课件1_第3页
第3页 / 共22页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,数字图像处理,课程实验,共,8,学时,使用平台:,vc,6.0,三个实验:,VC,图像编程基础,了解位图格式,掌握,CDIB,类的使用,学会新建工程,学会添加菜单项和响应函数,掌握位图的打开和显示,一个简单的图像处理工程实例,功能函数的编程实现,掌握图像的点运算编程,了解二值化和底片化的原理,图像的空间域平滑和锐化,掌握空间域平滑锐化的基本原理,编写实现,空间域平滑锐化功能的代码,一、,VC,图像处理基础,重点,:,位图的读取和显示,难点,:,VC,开发环境、类的使用,必备知识:,熟悉,VC,基本环境(如会建立一个工程、会使用一个现成的类),主要内容,Bmp,位图图像格式,CDIB,类的介绍,Vc,的基本知识,建立一个新工程,利用,CDIB,类打开、显示图像,位图图像格式,BMP,文件由,文件头、位图信息头、颜色信息和图像数据,四部分组成。,文件头,位图信息,(信息头颜色信息表),图像数据,位图图像格式文件头,BMP,文件头数据结构含有,BMP,文件的类型、文件大小,和,位图起始位置等信息。,其结构定义如下,:,typedef,struct,tagBITMAPFILEHEADER, WORD,bfType,; /,位图文件的类型,必须为,BM DWORD,bfSize,; /,位图文件的大小,以字节为单位,WORD bfReserved1; /,位图文件保留字,必须为,0 WORD bfReserved2; /,位图文件保留字,必须为,0 DWORD,bfOffBits,; /,位图数据的起始位置,以相对于位图,/,文件头的偏移量表示,以字节为单位, BITMAPFILEHEADER;,位图图像格式位图信息头,BMP,位图信息头数据,用于说明位图的尺寸等信息,。,typedef,struct,tagBITMAPINFOHEADER,DWORD,biSize,; /,本结构所占用字节数,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,; /,位图水平分辨率,每米像素数,LONG,biYPelsPerMeter,; /,位图垂直分辨率,每米像素数,DWORD,biClrUsed,;/,位图实际使用的颜色表中的颜色数,DWORD,biClrImportant,;/,位图显示过程中重要的颜色数, BITMAPINFOHEADER;,位图图像格式颜色信息表,颜色表,用于说明位图中的颜色,它有若干个表项,,每一个表项是一个,RGBQUAD,类型的结构,定义一种颜色。,RGBQUAD,结构的定义如下,:,typedef,struct,tagRGBQUAD,BYTErgbBlue,;/,蓝色的亮度,(,值范围为,0-255),BYTErgbGreen,; /,绿色的亮度,(,值范围为,0-255),BYTErgbRed,; /,红色的亮度,(,值范围为,0-255),BYTErgbReserved,;/,保留,必须为,0, RGBQUAD;,位图图像格式颜色信息表,颜色表中,RGBQUAD,结构数据的个数有,biBitCount,来确定,:,biBitCount,=1,4,8,时,分别有,2,16,256,个表项,;,当,biBitCount,=16,24,32,时,没有颜色表项。,位图信息头,和,颜色表,组成,位图信息,,,BITMAPINFO,结构定义如下,:,typedef,struct,tagBITMAPINFO, BITMAPINFOHEADER,bmiHeader,; /,位图信息头,RGBQUAD bmiColors1; /,颜色表, BITMAPINFO;,位图图像格式象素数据,位图数据,位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。位图的一个像素值所占的字节数,:,当,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-,格式,,-,表示不处理的字节),位图图像格式象素数据,Windows,规定一个扫描行所占的字节数必须是,4,的倍数,(,即以,long,为单位,),不足的以,0,填充,一个扫描行所占的字节数计算方法,:,DataSizePerLine,= (,biWidth,* biBitCount+31)/8; /,一个扫描行所占的字节数,DataSizePerLine,= DataSizePerLine/4*4; /,字节数必须是,4,的倍数位图数据的大小,(,不压缩情况下,):,DataSize,=,DataSizePerLine,*,biHeight,;,CDIB,类介绍,该类将位图文件的读取、象素数据的获取及显示进行了封装。具体的代码见附带的电子参考资料。下面介绍具体的成员和方法:,CDIB,类介绍,1,、,bool,CDIB:LoadFromFile(LPCTSTR,lpszFileName,),功能:,用于加载位图。,参数,:,lpszFileName,表示加载的位图路径和名称。如:,d:test123.bmp,返回值:,成功读取后,返回,true,,否则为,false,注意:,但调用该函数成功加载位图后,,CDIB,类的成员变量,m_bLoaded,将变为,true,,否则为,false,,因此,可以通过,m_bLoaded,来进行判断是否加载了位图。,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,),功能:,显示位图,参数:,pDC,/DC,的句柄,nLeft, /,目标矩形左上角的,X,坐标,nTop, /,目标矩形左上角的,Y,坐标,nRight, /,目标矩形的宽度,nBottom, /,目标矩形的高度,0, /,源矩形左上角的,X,坐标,0, /,源矩形左上角的,Y,坐标,GetDIBWidth,(), /,源矩形的宽度,GetDIBHeight,(), /,源矩形的高度,pDIBData, /,位图图象数据的地址,pBMI, /,位图信息结构地址,CDIB,类介绍,5,、,InvalidateData,(),功能:将,m_pdata,的信息赋值给,m_pDIBData,,便于显示,m_pdata,的信息。,6,、几个重要的成员变量,BYTE *,m_pdata,; /,位图的灰度信息,bool,m_bLoaded,; /,表示是否加载了位图,BITMAPINFO*,m_pBMI,; /,位图信息头,BYTE*,m_pDIBData,; /,位图象素数据指针,BYTE*,m_pDumpDIBData,; /,位图象素数据指针,BITMAPFILEHEADER,bfh,; /,位图信息头,BITMAPINFOHEADER,bih,; /,位图文件头,CDIB,类介绍,文件头,信息头,0,1,2,3,4,5,6,7,8,9,10,11,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,m_pdata,与,m_pDIBData,的关系,0,1,2,3,4,5,6,7,8,9,10,11,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,m_pdata,m_DIBData,8,位图中两者的关系,CDIB,类介绍,文件头,信息头,0-b,0-g,0-r,1-b,1-g,1-r,2-b,2-g,2-r,3-b,3-g,3-r,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,0,1,2,3,.,.,.,.,.,.,m_pdata,m_DIBData,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_pdata,与,m_pDIBData,的关系,CDIB,类介绍,当为,24,位图时,显示时采用,m_pDIBData,数据,为简单起见,我们可以仅仅对灰度信息进行处理,因为在灰度信息,m_pdata,数据中,一个象素对应于一个字节,而彩色信息,m_pDIBData,数据中,一个象素对于于三个字节。如果对,m_pdata,进行处理后,我们可以通过调用,InvalidateData,(),函数来将,m_pdata,的数据赋值给,m_pDIBData,,从而显示处理结果。,CDIB,类介绍,实验中类的使用流程,调用,LoadFromFile,打开图像,调用,GetDIBWidth,(),和,GetDIBHeight,(),获取图像高和宽,对,m_pdata,中,的数据处理,调用,Invalidate(),函数更新,m_pDIBData,通过,m_bLoaded,进行判断,调用,ShowDIB,(),显示处理结果,其他操作,false,true,位图的打开与显示,新建一个工程,添加,CDIB,类,添加菜单项,添加响应函数,添加打开和显示的代码,编译调试,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!