投影算法及其实现代码_第1页
投影算法及其实现代码_第2页
投影算法及其实现代码_第3页
投影算法及其实现代码_第4页
投影算法及其实现代码_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

投影算法及其实现代码演示文稿目前一页\总数二十二页\编于六点投影概念投影法是根据图像信息在某方向的投影分布特点来进行检测的方法,也就是说像素点的累加,其实是一种统计的方法。目前二页\总数二十二页\编于六点投影算法过程:像素灰度值为f(x,y)时,其投影函数h(y)的值为如下公式来计算:其中M,N为图像尺寸,c为图像灰度值。将投影值进行归一化,其计算公式如下:目前三页\总数二十二页\编于六点资料1中,先求投影值,再给投影值进行归一化处理。资料2中先进行二值化,然后进行灰度投影。目前四页\总数二十二页\编于六点资料1中,进行投影以后目前五页\总数二十二页\编于六点求投影面积比目前六页\总数二十二页\编于六点投影图面积比分布图:目前七页\总数二十二页\编于六点分级识别过程:目前八页\总数二十二页\编于六点识别结果:目前九页\总数二十二页\编于六点灰度投影源代码部分:***********************************************************//HprojectDIB() //图像水平投影//VprojectDIB() //图像垂直投影参数:LPSTRlpDIBBits//指向源DIB图像指针

LONGlWidth//源图像宽度(像素数)LONGlHeight-源图像高度(像素数)返回值:BOOL//运算成功返回TRUE,否则返回FALSE。*要求目标图像为只有0和255两个灰度值的灰度图像。***********************************************************目前十页\总数二十二页\编于六点BOOLWINAPIHprojectDIB(LPSTRlpDIBBits,LONGlWidth,LONGlHeight){LPSTR lpSrc;//指向源图像的指针

LPSTR lpDst;//指向缓存图像的指针LPSTRlpNewDIBBits;//指向缓存DIB图像的指针HLOCAL hNewDIBBits;long i;//循环变量long j;long lBlackNumber;//图像中每行内的黑点个数unsignedchar pixel; //像素值LONGlLineBytes; //图像每行的字节数函数的声明定义变量目前十一页\总数二十二页\编于六点

hNewDIBBits=LocalAlloc(LHND,lWidth*lHeight);//暂时分配内存,以保存新图像 if(hNewDIBBits==NULL) {returnFALSE;//分配内存失败 }lpNewDIBBits=(char*)LocalLock(hNewDIBBits);//初始化新分配的内存,设定初始值为255 lpDst=(char*)lpNewDIBBits; memset(lpDst,(BYTE)255,lWidth*lHeight);暂时分配内存如果成功分配内存,则初始化新内存目前十二页\总数二十二页\编于六点lLineBytes=WIDTHBYTES(lWidth*8);//计算图像每行的字节数for(j=0;j<lHeight;j++){

lBlackNumber=0;for(i=0;i<lWidth;i++){lpSrc=(char*)lpDIBBits+lLineBytes*j+i;//指向源图像倒数第j行,第i个象素的指针

pixel=(unsignedchar)*lpSrc;if(pixel!=255&&pixel!=0){ returnfalse; }

if(pixel==0){ lBlackNumber++; }}

if(pixel==0){

lBlackNumber++; }

}

计算像素值和目前十三页\总数二十二页\编于六点for(i=0;i<lBlackNumber;i++){//指向目标图像倒数第j行,第i个象素的指针

lpDst=(char*)lpNewDIBBits+lLineBytes*j+i;*lpDst=(unsignedchar)0;} }

//复制投影图像

memcpy(lpDIBBits,lpNewDIBBits,lWidth*lHeight);

LocalUnlock(hNewDIBBits);//释放内存LocalFree(hNewDIBBits);returnTRUE;//返回}形成新图像(投影后的图像)复制投影图像释放内存返回函数值目前十四页\总数二十二页\编于六点BOOLWINAPIVprojectDIB(LPSTRlpDIBBits,LONGlWidth,LONGlHeight){ LPSTR lpSrc;//指向源图像的指针

LPSTR lpDst;//指向缓存图像的指针LPSTRlpNewDIBBits;//指向缓存DIB图像的指针HLOCAL hNewDIBBits;long i;long j;longlBlackNumber;//图像中每行内的黑点个数unsignedchar pixel; //像素值LONG lLineBytes;//图像每行的字节数目前十五页\总数二十二页\编于六点hNewDIBBits=LocalAlloc(LHND,lWidth*lHeight);//暂时分配内存,以保存新图像 if(hNewDIBBits==NULL) { returnFALSE;//分配内存失败 }lpNewDIBBits=(char*)LocalLock(hNewDIBBits);//锁定内存 lpDst=(char*)lpNewDIBBits;//初始化新分配的内存,设定初始值为255 memset(lpDst,(BYTE)255,lWidth*lHeight);目前十六页\总数二十二页\编于六点lLineBytes=WIDTHBYTES(lWidth*8);//计算图像每行的字节数 for(i=0;i<lWidth;i++) { lBlackNumber=0; for(j=0;j<lHeight;j++) {

lpSrc=(char*)lpDIBBits+lLineBytes*j+i; //指向源图像倒数第j行,第i个象素的指针 pixel=(unsignedchar)*lpSrc;目前十七页\总数二十二页\编于六点if(pixel!=255&&pixel!=0) { returnfalse; } if(pixel==0) { lBlackNumber++; } } for(j=0;j<lBlackNumber;j++) { //指向目标图像倒数第j行,第i个象素的指针 lpDst=(char*)lpNewDIBBits+lLineBytes*j+i; *lpDst=(unsignedchar)0; } }目前十八页\总数二十二页\编于六点//复制投影图像 memcpy(lpDIBBits,lpNewDIBBits,lWidth

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论