网站大量收购独家精品文档,联系QQ:2885784924

数字图像处理实验说明指导书.doc

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字图像处理实验说明指导书

数字图像处理实验说明 实验目的: 实现图像显示的功能,用打点和快速显示的方式实现 对图像进行求反 绘制图像的直方图 对图像进行均衡和规定化操作 阈值变换 图像的正交变换(傅立叶正变换,傅立叶反变换,离散余旋正反变换,沃尔什变换) 滤波器的实现(低、带、高通,分别用理想,巴特沃斯,梯形,以及指数滤波实现) 图像平滑以及中值滤波 9.图像锐化(梯度锐化,拉普拉斯锐化) 10.图像退化及复原(加亮点以及加随机噪声) 11.图像边缘检测(Robert检测,拉普拉斯检测,索贝尔检测,kirsch边缘检测) 实验步骤 实现图像显示的功能,用打点和快速显示的方式实现 实现图像显示首先要读取图象的文件头,文件位图信息头,调色板以及图像数据信息,依次读取图像的每个像素值,然后用打点显示在对应位置显示出该点的像素值,注意的一点是应该用256减去读取得坐标才会显示正常的图像,否则图像会是倒置的,具体的VC++语言实现程序为: void CWplView::OnDraw(CDC* pDC) { BeginWaitCursor(); CWplDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); int i,j; int R,G,B; lpBMP=(LPSTR)::GlobalLock((HGLOBAL)pDoc-GetHDIB()); if(lpBMP==NULL)//防止内存不足 { return; } lpDIBBits=::FindDIBBits(lpBMP); // 指向BITMAPINFO结构的指针(Win3.0) LPBITMAPINFO lpbmi; // 获取指向BITMAPINFO结构的指针(Win3.0) lpbmi = (LPBITMAPINFO)lpBMP; height=::DIBHeight(lpBMP); width=::DIBWidth(lpBMP); lLineBytes = WIDTHBYTES(width * 8); f(flag==1)//打点显示 { for (i = 0; i height; i ++) { for (j = 0; j width; j ++) { lpSrc = (unsigned char *)lpDIBBits + lLineBytes * i + j; R=lpbmi-bmiColors[*lpSrc].rgbRed; G=lpbmi-bmiColors[*lpSrc].rgbGreen; B=lpbmi-bmiColors[*lpSrc].rgbBlue; pDC-SetPixel(j,height-i,RGB(R,G,B)); } } } else// 快速 { HDIB hDIB = pDoc-GetHDIB(); if (hDIB != NULL) { LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB); int cxDIB = (int) ::DIBWidth(lpDIB); int cyDIB = (int) ::DIBHeight(lpDIB); ::GlobalUnlock((HGLOBAL) hDIB); CRect rcDIB; rcDIB.top = rcDIB.left = 0; rcDIB.right = cxDIB; rcDIB.bottom = cyDIB; CRect rcDest; ::PaintDIB(pDC-m_hDC, rcDest, pDoc-GetHDIB(), rcDIB, pDoc-GetDocPalette()); } 对图像进行求反 图像求反是灰度的一种线性变换,可以用灰度变换方程来实现,实现代码为: {unsigned char* lpSrc; // 循环变量 LONG i; LONG j; LONG lLineBytes; FLOAT fTemp; lLineBytes = WIDTHBYTES(lWidth * 8); for(i = 0; i lHeight; i++) { for(j = 0; j lWidth; j++) {lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j; fTemp = fA * (*lpSrc) + fB; if (fTemp 255) { *lpSrc = 255; } else if (fTemp 0)

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档