扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:刘涛 来源:yesky 2007年10月22日
关键字:
BOOL SeneBorderThinning(BYTE *pData,int Width,int Height) { //pData为指向图像数据的指针,Width和Height为图像的宽度和高度; int i,j; int num; //细化结束标志; BOOL Finished; //各个变量用来存储(i,j)位置的八邻域像素点的灰度; int nw,n,ne,w,e,sw,s,se; //细化表; static int erasetable[256]={ 0,0,1,1,0,0,1,1, 1,1,0,1,1,1,0,1, 1,1,0,0,1,1,1,1, 0,0,0,0,0,0,0,1, 0,0,1,1,0,0,1,1, 1,1,0,1,1,1,0,1, 1,1,0,0,1,1,1,1, 0,0,0,0,0,0,0,1, 1,1,0,0,1,1,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 1,1,0,0,1,1,0,0, 1,1,0,1,1,1,0,1, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,1,1,0,0,1,1, 1,1,0,1,1,1,0,1, 1,1,0,0,1,1,1,1, 0,0,0,0,0,0,0,1, 0,0,1,1,0,0,1,1, 1,1,0,1,1,1,0,1, 1,1,0,0,1,1,1,1, 0,0,0,0,0,0,0,0, 1,1,0,0,1,1,0,0, 0,0,0,0,0,0,0,0, 1,1,0,0,1,1,1,1, 0,0,0,0,0,0,0,0, 1,1,0,0,1,1,0,0, 1,1,0,1,1,1,0,0, 1,1,0,0,1,1,1,0, 1,1,0,0,1,0,0,0 }; if(pData==NULL) { AfxMessageBox("图像数据为空,请读取图像数据"); return FALSE; } Finished=FALSE; //开始细化; while(!Finished) { Finished=TRUE; //水平扫描; for (i=10;i<Height-10;i++) { for(j=30;j<Width-30;j++) { if(*(pData+WIDTHBYTES(Width*8)*(Height-i-1)+j)==0) { w=*(pData+WIDTHBYTES(Width*8)*(Height-i-1)+j-1); e=*(pData+WIDTHBYTES(Width*8)*(Height-i-1)+j+1); //判断(i,j)是否是边界点,如是,求该点的八邻域灰度值(0/255),根据各点的权重,计算对应查找表的索引; if( (w==255)|| (e==255)) { nw=*(pData+WIDTHBYTES(Width*8)*(Height-i)+j-1); n=*(pData+WIDTHBYTES(Width*8)*(Height-i)+j); ne=*(pData+WIDTHBYTES(Width*8)*(Height-i)+j+1); sw=*(pData+WIDTHBYTES(Width*8)*(Height-i-2)+j-1); s=*(pData+WIDTHBYTES(Width*8)*(Height-i-2)+j); se=*(pData+WIDTHBYTES(Width*8)*(Height-i-2)+j+1); num=nw/255+n/255*2+ne/255*4+w/255*8+e/255*16+sw/255*32+s/255*64+se/255*128; if(erasetable[num]==1) { //查表,如果符合条件,将边界点修改为图像的背景; *(pData+WIDTHBYTES(Width*8)*(Height-i-1)+j)=(BYTE)255; Finished=FALSE;//再次进行扫描; j++; } } } } } //垂直扫描; for (j=30;j<Width-30;j++) { for(i=10;i<Height-10;i++) { if(*(pData+WIDTHBYTES(Width*8)*(Height-i-1)+j)==0) { n=*(pData+WIDTHBYTES(Width*8)*(Height-i)+j); s=*(pData+WIDTHBYTES(Width*8)*(Height-i-2)+j); if( (n==255)|| (s==255)) { nw=*(pData+WIDTHBYTES(Width*8)*(Height-i)+j-1); ne=*(pData+WIDTHBYTES(Width*8)*(Height-i)+j+1); w=*(pData+WIDTHBYTES(Width*8)*(Height-i-1)+j-1); e=*(pData+WIDTHBYTES(Width*8)*(Height-i-1)+j+1); sw=*(pData+WIDTHBYTES(Width*8)*(Height-i-2)+j-1); se=*(pData+WIDTHBYTES(Width*8)*(Height-i-2)+j+1); num=nw/255+n/255*2+ne/255*4+w/255*8+e/255*16+sw/255*32+s/255*64+se/255*128; if(erasetable[num]==1) { //查表,如果符合条件,将边界点修改为图像的背景; *(pData+WIDTHBYTES(Width*8)*(Height-i-1)+j)=(BYTE)255; Finished=FALSE;//再次进行扫描; i++; } } } } } } return TRUE; } |
(a) |
(b) |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者