标题:[求助]有人对字形轮廓线消冗算法有认识么?
只看楼主
虫的传人
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-3-5
 问题点数:0 回复次数:0 
[求助]有人对字形轮廓线消冗算法有认识么?
本人的毕业设计用VC来设计一个软件,处理汉字轮廓,但是苦于到现在还一点头绪都没有
要求是用消冗算法来处理汉字字形轮廓,例如,下图是一个十字型交叉的逆时针顶点遍历消冗算法处理前后对照图


在API函数中,用于对TrueType字体进行操作,其中最重要的是GetGlyphOutline,用于检索被选入指定设备环境的字符的字形轮廓或者位图,其函数原型为:
DWORD GetGlyphOutline
(
HDC hdc, //设备环境的句柄
UINT nChar, //所要查询的字符
UINT nFormat, //数据格式
LPGLYPHMETRICS lpgm, //字形规格
DWORD cbBuffer, //数据缓冲区的大小
LPVOID lpBuffer, //数据缓冲区
const MAT2FAR* lpmat2 //变换矩阵
)const;




消冗算法的基本规则:

在一个字符的字形轮廓中,可能包含着3 种类型轮廓线交叉的各种组合。为了使轮廓线交叉的消冗处理简洁有效,必须遵守一些处理规则,主要包括分组规则、遍历方向规则和起点规则。分组规则是根据轮廓线交叉情况,使得单次消冗处理涉及的轮廓线束最少,从而可大大降低处理的难度。

分组规则。
一个字形轮廓的轮廓线可以分为若干组,每一组轮廓线包含通过交叉而相互串接在一个组的所有轮廓线。每条独立轮廓线为一组。
对于不同的汉字字符和字体来说,分组后各组轮廓线复杂程度差异很大。一组轮廓线或仅包含一条轮廓线,或是几条轮廓线相互串联,也可是几条轮廓线串联成环状。对于最后一种情况,消冗处理后,除了生成一条最外层的轮廓线(称为组外环) 之外,还存在若干条互不相交的内部轮廓线(称为组内环) 。组外环和组内环应该采用不同的消冗算法。

遍历方向规则。
组外环采用逆时针顶点遍历消冗算法,组内环采用顺时针顶点遍历消冗算法。在实施消冗处理前,必须为顶点遍历算法选择合适的遍历起点。如果选择不当,会在丢失大量有效轮廓信息的同时,保留无效的轮廓线段,造成不可预知的修整结果。

遍历起点规则。
遍历起点为组内某条轮廓线上的一个顶点,在本组所有轮廓线的顶点中,该顶点和本组轮廓线的最小包络矩形的左下角点之间的距离最小。





以上是一些关于消冗算法的东东,高人指点指点小弟该如何入手吧,万分感激






搜索更多相关主题的帖子: 字形 轮廓 算法 认识 
2006-04-29 02:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-60991-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.306811 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved