区域生长算法代码概要1.doc

区域生长算法代码概要1.doc

ID:32607372

大小:59.00 KB

页数:11页

时间:2019-02-13

区域生长算法代码概要1.doc_第1页
区域生长算法代码概要1.doc_第2页
区域生长算法代码概要1.doc_第3页
区域生长算法代码概要1.doc_第4页
区域生长算法代码概要1.doc_第5页
资源描述:

《区域生长算法代码概要1.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、区域增长算法/*****************************************************************\函数名称:*  RegionGrow()**\输入参数:*  CDib*pDib     -指向CDib类的指针,含有原始图象信息*  unsignedchar*pUnRegion  -指向区域生长结果的指针**\返回值:*  无**\说明:*  pUnRegion指针指向的数据区存储了区域生长的结果,其中1(逻辑)表示* 对应象素为生长区域,0表示为非生长区域*  区域生长一般包含三个比较重要的问题:*  1.种子点的选取*  

2、2.生长准则*  3.终止条件* 可以认为,这三个问题需要具体分析,而且每个问题解决的好坏直接关系到* 区域生长的结果。* 本函数的种子点选取为图像的中心,生长准则是相邻象素的象素值小于* nThreshold,终止条件是一直进行到再没有满足生长准则需要的象素时为止***************************************************************************/voidRegionGrow(CDib*pDib,unsignedchar*pUnRegion,intnThreshold){ staticintnDx[]={-1,0,

3、1,0}; staticintnDy[]={0,1,0,-1}; //遍历图象的纵坐标// inty; //遍历图象的横坐标// intx; //图象的长宽大小 CSizesizeImage  =pDib->GetDimensions(); intnWidth   =sizeImage.cx  ; intnHeight   =sizeImage.cy  ; //图像在计算机在存储中的实际大小 CSizesizeImageSave =pDib->GetDibSaveDim(); //图像在内存中每一行象素占用的实际空间 intnSaveWidth=sizeImageSave.cx; 

4、//初始化 memset(pUnRegion,0,sizeof(unsignedchar)*nWidth*nHeight); //种子点 intnSeedX,nSeedY; //设置种子点为图像的中心 nSeedX=nWidth/2; nSeedY=nHeight/2; //定义堆栈,存储坐标 int*pnGrowQueX; int*pnGrowQueY;  //分配空间 pnGrowQueX=newint[nWidth*nHeight]; pnGrowQueY=newint[nWidth*nHeight]; //图像数据的指针 unsignedchar*  pUnchInput=

5、(unsignedchar*)pDib->m_lpImage;  //定义堆栈的起点和终点 //当nStart=nEnd,表示堆栈中只有一个点 intnStart; intnEnd  ; //初始化 nStart=0; nEnd  =0; //把种子点的坐标压入栈 pnGrowQueX[nEnd]=nSeedX; pnGrowQueY[nEnd]=nSeedY; //当前正在处理的象素 intnCurrX; intnCurrY; //循环控制变量 intk; //图象的横纵坐标,用来对当前象素的4邻域进行遍历 intxx; intyy; while(nStart<=nEnd) { 

6、 //当前种子点的坐标  nCurrX=pnGrowQueX[nStart];  nCurrY=pnGrowQueY[nStart];       //对当前点的4邻域进行遍历  for(k=0;k<4;k++)   {    //4邻域象素的坐标   xx=nCurrX+nDx[k];   yy=nCurrY+nDy[k];      //判断象素(xx,yy)是否在图像内部   //判断象素(xx,yy)是否已经处理过   //pUnRegion[yy*nWidth+xx]==0表示还没有处理   //生长条件:判断象素(xx,yy)和当前象素(nCurrX,nCurrY)象素

7、值差的绝对值   if( (xx=0)&&(yy=0)        &&(pUnRegion[yy*nWidth+xx]==0) &&abs(pUnchInput[yy*nSaveWidth+xx]-pUnchInput[nCurrY*nSaveWidth+nCurrX])

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。