论文部分内容阅读
创建一套新的矢量字体需要消耗大量的人力,工作量庞大且繁琐。如果能把扫描的字帖图像自动转换为矢量字体,可以缩短字体创建的时间,提高效率,降低成本。本文设计实现了一套基于深度学习的字体矢量化系统,该系统能够将字帖图片中的所有字体在短时间内转化为矢量字体,很大程度上降低了字体录入所需的人力成本,提升了工作效率。在该系统中,实现了基于多边形和基于深度学习的两种锚点检测方案,并将这两种方案进行互相对比和补充。此外,设计了两种简单有效的寻找贝塞尔曲线控制点的方法,用贝塞尔曲线拟合轮廓曲线,从而实现位图字体的矢量化。论文详细描述了字体矢量化系统的需求分析、系统设计和实现的过程。首先讨论了项目的背景,进行了需求分析,确定了系统的目标和需要解决的关键问题,给出了系统的总体设计方案。系统设计和实现划分为三个阶段,分别是图像预处理、锚点检测、轮廓线矢量化。首先,对图像进行预处理,包括图像去噪、倾斜纠偏、字符图像分割和字符轮廓提取。在图像去噪过程中采用了高斯滤波、双边滤波、中值滤波、连通分量法等技术。在图像倾斜纠偏中,尝试了三种方法——霍夫线变换纠偏、主成分分析纠偏、轮廓多边形逼近纠偏,实验表明这三种方法分别对英文符号类、中文方块类、带有边框辅助类的字帖图片效果较好。根据图像的行数、列数,确定字间距,对字符图像进行分割,然后提取字符的轮廓,剔除不属于字符轮廓的噪点,得到完整的字符轮廓。字符的轮廓线需要转换成矢量形式,系统采用贝塞尔曲线表示字符的轮廓曲线。系统实现了基于多边形和基于深度学习的两种锚点检测方案,互相对比和补充。基于多边形的锚点检测方案采用经典的potrace算法,对封闭路径进行多边形逼近,得到多个备选多边形,再根据多边形顶点数和约束条件选择一个最优的多边形,多边形的顶点作为锚点位置。在基于深度学习的锚点检测方案中,系统参考SuperPoint神经网络构建了深度学习模型,检测字体轮廓的锚点位置,用从TrueTypeFont字库中提取出的字符位图和对应锚点信息作为训练和测试数据。实验表明,基于多边形的锚点检测方案检测出的锚点出现很多冗余,而基于深度学习的锚点检测方案检测出的锚点更接近字库中的锚点位置。最后,根据找到的锚点把字体轮廓分割成若干片段,对每个片段用贝塞尔曲线光滑拟合。系统设计了两种简单有效地寻找贝塞尔曲线控制点的方法,用贝塞尔曲线拟合轮廓曲线,实现位图字体的矢量化。通过对整个字符的矢量图进行优化,使字体矢量图的数据更简洁有效。实验和测试结果表明,系统给出的矢量化字体与人工设计的字体基本一致,提高了工作效率。