对位图提取轮廓后再将其转换为矢量图(类似PLT文件格式),如何使矢量图形生成的断点最少???
本人在做一个软件,现遇到以下问题:
假设已对一位图按某种算法将其轮廓提出,轮廓数据放在一个2维数组Buf[][]中,数组的大小和原来的位图一直即列数为位图的宽度(单位:像素),行数为位图的高度.数组中以 1 表示轮廓上的点,即当Buf[H][L] == 1时表示点Point(H,L)为构成轮廓的一个点.
由于在数组中构成轮廓的点是无序的,现需要一种算法将这些点串联起来,描叙如下:
从某点出发
1)如该点为1则将该点保存到一个线段对象(CLine)中,在将该点标为已访问标志以防止重复访问;
2)若该点周围有其他点,选取一个点将其设为当前点重复1);
3)否则在线段对象(CLine)中添加一个特殊点Point(0xffff,0xffff)表示一条线段的结束.
4)寻找下一条线段.直到所有的点都被访问为止.
问题:
如何使这些线段最长,数量最少???
本人设计了一个算法:即对每个分支进行预测,取分支最长的,但该方法运算量巨大,耗内存和时间,对简单几何图形还可以,但稍复杂的图形就会引起程序无响应,得不到结果;
所以现请各位大侠赐教其他可行的算法<<<<<<<<<<<<救命之恩,莫齿难忘