欢迎来到个人简历网!永久域名:gerenjianli.cn (个人简历全拼+cn)
当前位置:首页 > 教学文档 > 教案>VC图像编程教案 第三章

VC图像编程教案 第三章

2024-01-15 08:18:25 收藏本文 下载本文

“莫雨珞”通过精心收集,向本站投稿了5篇VC图像编程教案 第三章,下面小编给大家整理后的VC图像编程教案 第三章,欢迎阅读!

VC图像编程教案 第三章

篇1:VC图像编程教案 第三章

VC图像编程教案 第三章

VC图像编程教案 第三章 3 DIB类的高级应用。 3.1 BMP文件结构 BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。 typedef struct tagBITMAPFILEHEADER { WORDbfType; // 位图文件的类型,必须为BM DWORD bfSize; // 位图文件的大小,以字节为单位 WORDbfReserved1;  // 位图文件保留字,必须为0 WORDbfReserved2;  // 位图文件保留字,必须为0 DWORD bfOffBits; // 位图数据的起始位置,以相对于位图 // 文件头的.偏移量表示,以字节为单位 } BITMAPFILEHEADER; BMP位图信息头数据用于说明位图的尺寸等信息。 typedef struct tagBITMAPINFOHEADER{ DWORD  biSize; // 本结构所占用字节数 LONGbiWidth;  // 位图的宽度,以像素为单位 LONGbiHeight; // 位图的高度,以像素为单位 WORD biPlanes; // 目标设备的级别,必须为1 WORD biBitCount// 每个像素所需的位数,必须是1(双色),   // 4(16色),8(256色)或24(真彩色)之一 DWORD  biCompression; // 位图压缩类型,必须是 0(不压缩),   // 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一 DWORD  biSizeImage; // 位图的大小,以字节为单位 LONGbiXPelsPerMeter; // 位图水平分辨率,每米像素数 LONGbiYPelsPerMeter;  // 位图垂直分辨率,每米像素数 DWORD  biClrUsed;// 位图实际使用的颜色表中的颜色数 DWORD  biClrImportant;// 位图显示过程中重要的颜色数 } BITMAPINFOHEADER; 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=24时,没有颜色表项。 位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下: typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; // 位图信息头 RGBQUAD  bmiColors[1];  // 颜色表 } BITMAPINFO; 3.2 DIB类的Read函数: BOOL CDib::Read(CFile* pFile) {  // 1. read file header to get size of info hdr + color table  // 2. read info hdr (to get image size) and color table  // 3. read image  // cant use bfSize in file header  Empty;  int nCount, nSize;  BITMAPFILEHEADER bmfh;  try { nCount = pFile->Read((LPVOID) &bmfh, sizeof(BITMAPFILEHEADER)); if(nCount != sizeof(BITMAPFILEHEADER)) {  throw new CException; } if(bmfh.bfType != 0x4d42) {  throw new CException; } nSize = bmfh.bfOffBits - sizeof(BITMAPFILEHEADER); m_lpBMIH = (LPBITMAPINFOHEADER) new char[nSize]; m_nBmihAlloc = m_nImageAlloc = crtAlloc; nCount = pFile->Read(m_lpBMIH, nSize); // info hdr & color table ComputeMetrics(); ComputePaletteSize(m_lpBMIH->biBitCount); MakePalette(); m_lpImage = (LPBYTE) new char[m_dwSizeImage]; nCount = pFile->Read(m_lpImage, m_dwSizeImage); // image only  }  catch(CException* pe) { AfxMessageBox(Read error); pe->Delete(); return FALSE;  }  return TRUE; } 3.3 DIB类的Write函数: BOOL CDib::Write(CFile* pFile) {  BITMAPFILEHEADER bmfh;  bmfh.bfType = 0x4d42;  // BM  int nSizeHdr = sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries;  bmfh.bfSize = 0; // bmfh.bfSize = sizeof(BITMAPFILEHEADER) + nSizeHdr + m_dwSizeImage;  // meaning of bfSize open to interpretation (bytes, words, dwords?) -- we wont use it  bmfh.bfReserved1 = bmfh.bfReserved2 = 0;  bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) +  sizeof(RGBQUAD) * m_nColorTableEntries;   try { pFile->Write((LPVOID) &bmfh, sizeof(BITMAPFILEHEADER)); pFile->Write((LPVOID) m_lpBMIH,  nSizeHdr); pFile->Write((LPVOID) m_lpImage, m_dwSizeImage);  }  catch(CException* pe) { pe->Delete(); AfxMessageBox(write error); return FALSE;  }  return TRUE; } 3.4 明确图像文件 CFile CDib类三者之间的关系 3.5 尝试直接用CDib类的m_lpImage成员读取图像数据。 3.6 尝试通过Write保存图像到另一个位置 3.7 尝试通过Write重写原图像文件(注意保存)

篇2:VC图像编程教案 第四章

VC图像编程教案 第四章

设备描述表的应用及常用windows消息响应 图像编程中,难免会遇到需要绘图的问题,比如角点的标记,绘制坐标轴,文字(图像)显示等等。所以掌握一些设备描述表的应用也是很有必要的。非常详尽的关于设备描述表的讲述请参阅我空间里的`另一篇文章“关于设备描述表”。 CDC中常用的GDI函数: 绘制直线: CDC::MoveTo CDC::LineTo 绘制矩形: CDC::Rectangle 绘制圆: CDC::Ellipse 输出文字: CDC::TextOut 像素值: CDC::GetPixel CDC::SetPixel 更改设备描述表属性: CDC::SelectObject 有关设备描述表的属性类: 画笔 CPen::CPenCPen( ); CPen( int nPenStyle, int nWidth, COLORREF crColor ); throw( CResourceException ); CPen( int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount = 0, const DWORD* lpStyle = NULL ); throw( CResourceException ); 画刷 CBrush::CBrush CBrush( ); CBrush( COLORREF crColor ); throw( CResourceException ); CBrush( int nIndex, COLORREF crColor ); throw( CResourceException ); CBrush( CBitmap* pBitmap ); throw( CResourceException ); 透明画刷声明方法: CBrush *brush; brush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)); 在讲解常用Windows消息响应时尝试使用这些方法。 作业: 实现一个在图像上随鼠标移动的选择框,并将选择框内的内容在点击右键时进行直方图均衡化。 第四章 TITLE=VC图像编程教案  第四章 TITLE=VC图像编程教案 

篇3:VC图像编程教案 第一章

VC图像编程教案 第一章

第一章 图像编程的基础知识与第三方DIB文件的使用方法 1.讲解图像编程的总体思路,帮助学员理解图像在计算机中的存储方式,以及为什么需要量化,颜色与灰度的概念,讲解VC图像编程的难点以及如何克服,仔细讲解第三方DIB文件的使用以及必要性。 1.1 图像编程的总体思路 1.2 图像的量化  第一章 TITLE=VC图像编程教案 第一章 TITLE=VC图像编程教案  1.3 图像的存储方法,由此学员需要上机操作 1.4 讲解View类 Frame类 Doc类的协作过程 1.5 图像的'打开过程,CFileDialog对话框的应用   CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL ); CFileDialog dialog(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, BMP (*.bmp)|*.bmp|所有文件 (*.*)|*.*||,NULL ); if(dialog.DoModal==IDOK)   { //do something... MessageBox(打开图片成功!);    } 1.6 图像文件与DIB对象的关联过程 m_address=dialog.GetPathName(); CFile file; file.Open(m_address,CFile::modeRead); m_dib.Read(&file); 1.7 图像的显示与保存过程 BYTE GetRValue( DWORD rgb ); (GetGValue,GetBValue与此相同) CDC::GetPixel  COLORREF GetPixel( int x, int y ) const; COLORREF GetPixel( POINT point ) const; 1.8 图像编程初试手平滑滤波与中值滤波去简单噪声 实验图像为: 第一章 TITLE=VC图像编程教案   平滑滤波算子模板为: 第一章 TITLE=VC图像编程教案   这两题可留为学员作业。 估计本课用时1小时40分钟。

篇4:VC图像编程教案 第二章

VC图像编程教案 第二章

第二章 常用算子练习实验图片: 第二章 TITLE=VC图像编程教案  2.1 边缘检测算子 2.1.1 算子卷积的原理-----相当于高通滤波器 2.1.2 应用算子时边界的处理方法 2.1.3 算子模板 Roberts: 第二章 TITLE=VC图像编程教案  第二章 TITLE=VC图像编程教案  Sobel: 第二章 TITLE=VC图像编程教案 取两结果中的大值为变换结果 Priwitt: 第二章 TITLE=VC图像编程教案  Krisch: 第二章 TITLE=VC图像编程教案 第二章 TITLE=VC图像编程教案  第二章 TITLE=VC图像编程教案  第二章 TITLE=VC图像编程教案 第二章 TITLE=VC图像编程教案  第二章 TITLE=VC图像编程教案  第二章 TITLE=VC图像编程教案 第二章 TITLE=VC图像编程教案  2.2 小波算子 2.2.1 小波算子原理,高低通算子参数关系为: 第二章 TITLE=VC图像编程教案  2.2.2 Daubechies_6(DB6)算子: 第二章 TITLE=VC图像编程教案  Daubechies_8(DB8)算子: 第二章 TITLE=VC图像编程教案  2.3 SUSAN角点检测方法(作业) SUSAN算子使用的是圆形模板来进行角点探测,圆形模板有等方向性的特点。一般使用模板的半径为3~4个像元。如图 第二章 TITLE=VC图像编程教案  模板置于每一个像素,将模板的每一个像像素与中心像素进行比较。  第二章 TITLE=VC图像编程教案    其中I(r)表示r点像素的灰度值,r0表示模板中心像素。t表示一个限制阈值,这个值决定了所能检测角点的最小对比度,也是能忽略的噪声的最大容限。它主要决定了能够提取 的特征数量越小,可从对比度越低的图像中提取特征,而且提取的特征也越多。因此对于不同对比度和噪声情况的图像应取不同的t值。 现在一些研究已经可以把这个t值改进为自适应值。也就是说可以根据图像的具体所含噪声确定最好的`t值。 第二章 TITLE=VC图像编程教案  由函数n计算出所谓的USAN区域面积值。C(r0)表示以r0为中心的圆邻域。然后由一个个局部非极大值抑制模板来确定最终角点。具体可由下式表述: 第二章 TITLE=VC图像编程教案  式中g为非极大值抑制门限。门限g决定了输出角点的USAN区域的最大值。g的大小不但决定了可从图像中提取角点的多寡,它还决定了所检测到的角点的尖锐程度。所以一旦确定了所需角点的质量(尖锐程度),g就可以取一个固定不变的值。一般情况下取1/2模板像素个数,例如7×7模板的g=37/2。 实验图片为: 第二章 TITLE=VC图像编程教案  预计检测结果:好于 第二章 TITLE=VC图像编程教案  (本课用时约1小时30分)

篇5:VC图像编程教案 第五章

VC图像编程教案 第五章

5.对话框及控制的应用 5.1 先以日历控件说明控件编程的重要性 5.2 说明编写控件所需要的知识: 控件的动态生成-全局变量(类的成员变量) 自定义消息的定义与响应; (见我空间里的文章“这篇技术的文章不错”等) 5.3 一个实现加法功能的对话框程序,由此函数说明两点: 控件关联变量和关联值的区别 UpdateData函数的`用法 5.4 将刚才的程序转化的控件程序,体会控件编程的思路 GetDlgItem的用法 5.5 如何在其他程序中使用对话框

【VC图像编程教案 第三章】相关文章:

1.FrontPage教案-图像

2.高二地理教案:第三章?地理信息技术

3.初三第三章-

4.编程心得体会

5.昆虫记第三章读后感

6.童年第三章主要内容

7.数控编程说课稿

8.PHP编程习惯

9.编程语言是什么

10.CNC编程简历表

下载word文档
《VC图像编程教案 第三章.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度: 评级1星 评级2星 评级3星 评级4星 评级5星
点击下载文档

文档为doc格式

  • 返回顶部