《数字图像处理冈萨雷斯NVC数字图像处理编程入门学习教案.pptx》由会员分享,可在线阅读,更多相关《数字图像处理冈萨雷斯NVC数字图像处理编程入门学习教案.pptx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、会计学1数字图像处理冈萨雷斯数字图像处理冈萨雷斯NVC数字图像处理编数字图像处理编程入门程入门(r mn)第一页,共14页。n nMFCMFC方式方式方式方式又称类库编程,即程序主要不再直接又称类库编程,即程序主要不再直接又称类库编程,即程序主要不再直接又称类库编程,即程序主要不再直接(zhji)(zhji)跟操作系统接口打交道跟操作系统接口打交道跟操作系统接口打交道跟操作系统接口打交道(在需要的时候也可以直接(在需要的时候也可以直接(在需要的时候也可以直接(在需要的时候也可以直接(zhji)(zhji)调用调用调用调用APIAPI),而是使用封装好的),而是使用封装好的),而是使用封装好的)
2、,而是使用封装好的C+C+类库。类库。类库。类库。n nMFCMFC编程的好处:可以避免跟繁琐复杂的系统函数直接编程的好处:可以避免跟繁琐复杂的系统函数直接编程的好处:可以避免跟繁琐复杂的系统函数直接编程的好处:可以避免跟繁琐复杂的系统函数直接(zhji)(zhji)打交道,打交道,打交道,打交道,而使用成熟的微软类库。而使用成熟的微软类库。而使用成熟的微软类库。而使用成熟的微软类库。n n可以使用可以使用可以使用可以使用MFCMFC向导来生成程序框架,提高效率向导来生成程序框架,提高效率向导来生成程序框架,提高效率向导来生成程序框架,提高效率n n在我们这堂课中后面讲的程序都是在我们这堂课中
3、后面讲的程序都是在我们这堂课中后面讲的程序都是在我们这堂课中后面讲的程序都是MFCMFC程序程序程序程序VC开发开发(kif)的两种方式(二)的两种方式(二)第3页/共14页第2页/共14页第二页,共14页。n nTC编写的hello,world程序在VC中编译的方法n n初步确立工程的概念双击打开C源程序形成工程的方法;先建立工程,再逐步添加C源程序的方法n n初步讲解(jingji)VC调试技术(步进/变量监视)n n注意在这个程序中C和C+的微小区别VC练习练习(linx)一一第4页/共14页第3页/共14页第三页,共14页。n n学习使用(shyng)VC中的程序建立向导来建立一个程序
4、框架n n学习建立一个菜单、工具栏并弹出对话框显示Hello,World!VC练习练习(linx)二二第5页/共14页第4页/共14页第四页,共14页。n n位图、三基色与混色、调色板的概念位图、三基色与混色、调色板的概念(ginin)(ginin)n n有一个长宽各为有一个长宽各为200200个象素,颜色数为个象素,颜色数为1616色的彩色图,每一个象色的彩色图,每一个象素都用素都用R R,GG,B B三个分量表示,因为每个分量有三个分量表示,因为每个分量有256256个级别,要个级别,要用用8 8位即一个字节来表示,所以每个象素需要用位即一个字节来表示,所以每个象素需要用3 3个字节。整个
5、个字节。整个图象要用图象要用200*200*3200*200*3,约,约120k120k字节。字节。n n 这幅图中最多只有这幅图中最多只有1616种颜色,我们可以用一个表:表中的种颜色,我们可以用一个表:表中的每一行记录一种颜色的每一行记录一种颜色的R R,GG,B B值。这样当我们表示一个象素值。这样当我们表示一个象素的颜色时,只需要指出该颜色是在第几行,即该颜色在表中的的颜色时,只需要指出该颜色是在第几行,即该颜色在表中的索引值。举个例子,如果表的第索引值。举个例子,如果表的第0 0行为行为255255,0 0,0 0(红色),那(红色),那么当某个象素为红色时,只需要标明么当某个象素为
6、红色时,只需要标明0 0即可。即可。n n 再来计算一下:再来计算一下:1616种状态可以用种状态可以用4 4位表示,所以一个象素要位表示,所以一个象素要用半个字节。整个图象要用用半个字节。整个图象要用200*200*0.5200*200*0.5,约,约20k20k字节,再加上表字节,再加上表占用的字节为占用的字节为3*16=483*16=48字节字节.整个占用的字节数约为前面的整个占用的字节数约为前面的1/61/6!图像图像(t xin)编程基础编程基础第6页/共14页第5页/共14页第五页,共14页。Windows位图结构位图结构(jigu)第7页/共14页第6页/共14页第六页,共14页
7、。n n第一部分为位图文件头第一部分为位图文件头BITMAPFILEHEADERBITMAPFILEHEADER,是一个结构,其定义如下:,是一个结构,其定义如下:n ntypedef struct tagBITMAPFILEHEADERtypedef struct tagBITMAPFILEHEADERn nWORDWORDbfType;bfType;n nDWORDDWORD bfSize;bfSize;指定文件大小(包括指定文件大小(包括(boku)(boku)这这1414个字节)个字节)n nWORDWORDbfReserved1;bfReserved1;n nWORDWORDbfRe
8、served2;bfReserved2;n nDWORDDWORD bfOffBits;bfOffBits;(从文件头到数据区的偏移量)(从文件头到数据区的偏移量)n n BITMAPFILEHEADER;BITMAPFILEHEADER;n n这个结构的长度是固定的,为这个结构的长度是固定的,为1414个字节(个字节(WORDWORD为无符号为无符号1616位位整数,整数,DWORDDWORD为无符号为无符号3232位整数)位整数)位图文件头的结构位图文件头的结构(jigu)第8页/共14页第7页/共14页第七页,共14页。n n第二部分为位图信息头第二部分为位图信息头BITMAPINFOH
9、EADERBITMAPINFOHEADER,其主要字段如,其主要字段如下:下:n ntypedef struct tagBITMAPINFOHEADERtypedef struct tagBITMAPINFOHEADERn nDWORDDWORD biSize;biSize;指定这个结构的长度,为指定这个结构的长度,为40 40 n nLONGLONGbiWidth;biWidth;指定图象指定图象(t xin(t xin)的宽度,单位是象的宽度,单位是象素素 n nLONGLONGbiHeight;biHeight;n nWORDWORDbiBitCount;biBitCount;颜色的位数
10、,一般为颜色的位数,一般为1 1、4 4、8 8、2424n nDWORDDWORD biSizeImage;biSizeImage;n n BITMAPINFOHEADER;BITMAPINFOHEADER;n n这个结构的长度是固定的,为这个结构的长度是固定的,为4040个字节(个字节(WORDWORD为无符为无符号号1616位整数,位整数,DWORDDWORD无符号无符号3232位整数位整数,LONG,LONG为为3232位整数)位整数)位图信息位图信息(xnx)头的结构头的结构第9页/共14页第8页/共14页第八页,共14页。n nbiSizeImagebiSizeImagen n指定
11、实际的位图数据占用的字节数,其实也可以从以下的公式中计算出来:指定实际的位图数据占用的字节数,其实也可以从以下的公式中计算出来:n nbiSizeImage=biWidth*biHeightbiSizeImage=biWidth*biHeightn n要注意要注意(zh y)(zh y)的是:上述公式中的的是:上述公式中的biWidthbiWidth必须是必须是4 4的整倍数(所以的整倍数(所以不是不是biWidthbiWidth,而是,而是biWidth biWidth,表示大于或等于,表示大于或等于biWidthbiWidth的,离的,离4 4最近的整倍数。举个最近的整倍数。举个例子,如果
12、例子,如果biWidth=240biWidth=240,则,则biWidth=240biWidth=240;如果;如果biWidth=241biWidth=241,biWidth=244biWidth=244)n n一定要注意一定要注意(zh y)(zh y):每行所占字节长度始终是:每行所占字节长度始终是4 4的倍数,或者每行的倍数,或者每行所占位长度是所占位长度是3232的倍数。如果不是,则需要补齐的倍数。如果不是,则需要补齐 biSizeImage字段字段第10页/共14页第9页/共14页第九页,共14页。n n调色板实际上是一个四元数组,则有调色板实际上是一个四元数组,则有2 2的的i
13、BitCountiBitCount次方个元素)。次方个元素)。数组中每个元素的类型是一个数组中每个元素的类型是一个RGBQUADRGBQUAD结构,占结构,占4 4个字节个字节.n ntypedef struct tagRGBQUADtypedef struct tagRGBQUADn nBYTEBYTErgbBlue;rgbBlue;/蓝色分量蓝色分量n nBYTEBYTErgbGreen;rgbGreen;/绿色分量绿色分量n nBYTEBYTErgbRed;rgbRed;/红色分量红色分量n nBYTEBYTErgbReserved;/rgbReserved;/保留值保留值n n RGB
14、QUAD;RGBQUAD;注意注意(zh y)(zh y):2424位真彩色图中没有调色板数据位真彩色图中没有调色板数据调色板调色板第11页/共14页第10页/共14页第十页,共14页。n n第四部分就是实际的图象数据了。第四部分就是实际的图象数据了。n n对于用到调色板的位图,图象数据就是该像素颜在调色板中的索引对于用到调色板的位图,图象数据就是该像素颜在调色板中的索引值值n n对于真彩色图,图象数据就是实际的对于真彩色图,图象数据就是实际的R,G,BR,G,B值。下面就值。下面就2 2色,色,1616色,色,256256色位图和真彩色位图分别介绍。色位图和真彩色位图分别介绍。n n对于对于
15、2 2色位图,用色位图,用1 1位就可以表示位就可以表示(bi(bi osh)osh)该像素该像素的颜色(一般的颜色(一般0 0表示表示(bi(bi osh)osh)黑,黑,1 1表示表示(bi(bi osh)osh)白),所以一个白),所以一个字节可以表示字节可以表示(bi(bi osh)8osh)8个像素。个像素。n n对于对于1616色位图,用色位图,用4 4位可以表示位可以表示(bi(bi osh)osh)一个像一个像素的颜色,所以一个字节可以表示素的颜色,所以一个字节可以表示(bi(bi osh)2osh)2个像素。个像素。n n对于对于256256色位图,一个字节刚好可以表示色位图
16、,一个字节刚好可以表示(bi(bi osh)1osh)1个像素。个像素。n n对于真彩色图,三个字节才能表示对于真彩色图,三个字节才能表示(bi(bi osh)1osh)1个个像素。像素。n nBMPBMP文件的数据从下到上,从左到右的。文件的数据从下到上,从左到右的。实际实际(shj)的位图数据区的位图数据区第12页/共14页第11页/共14页第十一页,共14页。n n通过刚才建立的框架,逐步添加函数,形成一个ImageDemo程序图像读取、显示、像素操作程序,加深对前述DIB图像结构的理解n n学习(xux)TRACE等调试技巧n n其间学习(xux)菜单的创建、工具栏的使用n n学习(xux)输出对话框的使用n n学习(xux)输入对话框、文本编辑框的使用VC练习练习(linx)三三第13页/共14页第12页/共14页第十二页,共14页。n n作业:(一)自己动手建立一个图像(t xin)编程框架(二)细胞计数程序作业作业(zuy)第14页/共14页第13页/共14页第十三页,共14页。感谢您的观看感谢您的观看(gunkn)!第14页/共14页第十四页,共14页。