自己验证的一片扯淡的骨架提取论文

基于数学形态学的汉字骨架提取算法    程志君1    杨德强2   这篇论文的效果号称的效果图如下:


我经过自己的验证,写的程序如下,如果我的理解有错误,还请各位写评论啊,


#include<opencv\cv.h>
#include<opencv\highgui.h>

void main()
{
	IplImage *img = cvLoadImage("hello.jpg",0);
	IplImage *skele	=	cvCreateImage(cvGetSize(img),8,1);
	cvZero(skele);
	IplImage *open	=	cvCreateImage(cvGetSize(img),8,1);
	bool	isEnd	=	false;
	int count		=	0;
	int array_cross[] ={	0,	0xff,	0,
							0xff,0xff,	0xff,
							0   ,0xff,	0
	};
	int arrayRect[]= {	0xff,	0xff,	0xff,
						0xff,	0xff,	0xff,
						0xff,	0xff,	0xff
	};
	IplConvKernel * rectCross= cvCreateStructuringElementEx(3,3,1,1,CV_SHAPE_CROSS,array_cross);
	IplConvKernel*	rectRect	=	cvCreateStructuringElementEx(3,3,1,1,CV_SHAPE_RECT,arrayRect);
	cvShowImage("开始的图像",img);
	//具体的运算过程。
	for(count =0;isEnd ==false;count++)
	{
		cvErode(img,img,rectCross,count);
		//cvMorphologyEx(img,open,NULL,rectCross,CV_MOP_OPEN,1);
		cvMorphologyEx(img,open,NULL,rectRect,CV_MOP_OPEN,1);
		isEnd = true;//首先假设到了结束的条件
		for(int i=0;i<img->height;i++)
		{
			uchar *ptrErode	=	(uchar *)(img->imageData+i*img->widthStep);
			uchar *ptrOpen	=	(uchar *)(open->imageData+i*open->widthStep);
			uchar *ptrSkele	=	(uchar *)(skele->imageData+i*skele->widthStep);
			for(int j=0;j<img->width;j++)
			{
				if(		*(ptrErode+j)	  == 0xff
					&&	*(ptrOpen+j)	==0
					)
				{
					//isEnd	=	false;
					*(ptrSkele+j) = 0xff;
				}//if
				if(*(ptrErode +j) == 0xff)
				{
					isEnd = false;
				}//if
			}//width
		}//for height
	}//end
	cvShowImage("img",img);
	cvShowImage("skele",skele);
	//cvShowImage("img",img);
	//IplConvKernel * rectCross= cvCreateStructuringElementEx(3,3,1,1,CV_SHAPE_CROSS,array_cross);
	cvErode(img,img,rectCross,num);//形态学被腐蚀运算。
	//cvMorphologyEx(img,img,NULL,rectCross,CV_MOP_OPEN,count);//形态学开运算。
	//cvShowImage("腐蚀",img);
	cvWaitKey();
	//释放内存。
	cvReleaseStructuringElement(&rectCross);
	cvReleaseImage(&skele);
	cvReleaseImage(&open);
	cvReleaseImage(&img);
}

我的运行效果如下:

原始图片:


最终提取的骨架:


可以看出有骨架都被分离开了。根本提取不出完整的骨架。,希望以后大家不要再上当了,


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值