《VisualC实践与提高—数字图像处理与工程应用篇》第四章学习笔记.docx

《VisualC实践与提高—数字图像处理与工程应用篇》第四章学习笔记.docx

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

第四章 边缘检测与图像分析 数字图像处理之边缘检测(这章开始程序注释与课本同步) 图像边缘检测函数 /************************************************************************* * 函数名称: * EdgeDetection() * 参数: * LPSTR lpDIBBits - 指向源DIB图像指针 * LONG lWidth - 源图像宽度(象素数,必须是4的倍数) * LONG lHeight - 源图像高度(象素数) * int mode - 算子类型 * 返回值: * BOOL - 边缘检测成功返回TRUE,否则返回FALSE。 * * 说明: * 该函数用Sobel、Isotropic Sobel、LOG边缘检测算子对图像进行边缘检测运算。 * 要求目标图像为灰度图像。 ************************************************************************/ BOOL EdgeDetection(LPSTR lpDIBBits, LONG lmageWidth, LONG lmageHeight,int mode) { int nTempWidth; //模板的宽度 int nTempHeight; // 模板的高度 int nTempCenX; //模板中心的X坐标(相对于模板) int nTempCenY; //模板中心的Y坐标(相对于模板) double* Tempdata; //模板数组的指针 double TempCoef; //模板系数 //循环变量 int i; int j; if(mode==0) //Sobel算子 { // 指向缓存图像的指针 unsigned char* lpDst1; unsigned char* lpDst2; // 指向存贮图像的指针 LPBYTE lpImage1; LPBYTE lpImage2; // 暂时分配内存,以保存新图像 lpImage1 = (LPBYTE) new char[lmageWidth*lmageHeight]; lpImage2 = (LPBYTE) new char[lmageWidth*lmageHeight]; // 判断是否内存分配失败 if (lpImage1 == NULL) { // 分配内存失败 return FALSE; } // 判断是否内存分配失败 if (lpImage2 == NULL) { // 分配内存失败 return FALSE; } // 初始化图像为原始图像 memcpy(lpImage1, lpDIBBits, lmageWidth*lmageHeight); memcpy(lpImage2, lpDIBBits, lmageWidth*lmageHeight); lpDst1 = (unsigned char*)lpImage1; lpDst2 = (unsigned char*)lpImage2; //对Sobel算子水平检测算子的9个值分别赋值 nTempWidth=3; nTempHeight=3; nTempCenX=1; nTempCenY=1; TempCoef=1; Tempdata=new double[9];//Sobel算子模板为3X3 //水平向模板参数 Tempdata[0]=-1;//算子的第一行第一个元素 Tempdata[1]=-2; Tempdata[2]=-1; Tempdata[3]=0;//算子的第二行第一个元素 Tempdata[4]=0; Tempdata[5]=0; Tempdata[6]=1;//算子的第三行第一个元素 Tempdata[7]=2; Tempdata[8]=1; //用Sobel水平算子进行模板运算, if (!Template((LPSTR)lpImage1, lmageWidth, lmageHeight,nTempWidth, nTempHeight, nTempCenX, nTempCenY,Tempdata, TempCoef)) { return FALSE;//如果计算失败,返回FALSE } //

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档