标题:汉字勾边,恳请指教算法!
只看楼主
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
结帖率:100%
已结贴  问题点数:20 回复次数:5 
汉字勾边,恳请指教算法!
  最近,碰巧逛进vbgood论坛,发现自己早在05年就注册了。认真看了些帖子,感觉这里高水平的不少,尤其有些人对图像的编程,真是让我景仰之情,犹如滔滔江水,绵延不绝啊!图像领域我一直想涉足的,何不趁这个劲头好好向高手们学学!
  从哪里入手呢?当然从实际应用出发,我是从事电视工作的,前段时间,紧急新增一栏目,需要提词器,硬件是我从旧的电视提词器改装,可软件没有,我只好从网上下载一个自己破解了用到现在(见我空间文章:https://hi.bccn.net/space-249791-do-blog-id-34579.html),一直想等有空了自己写个提词器软件替换这个。
  这次正好就从这开始。首先从汉字图形勾边实验起,可是一开始就碰到非常棘手的麻烦:就是vb处理图形时的速度,速度啊!看了很多提高速度的手段,可以使用dib直接处理图形数据,可以使用模拟指针处理内存,这些都是针对整块图形的,并不针对算法的。
  我的勾边算法有两个,一个可称为直线勾边算法:它的思路是一个像素点周围八个方向上只要是背景色即改为勾边色,当勾边数多时拐弯处都是直角。另一个可成为圆润勾边算法:它的思路是以一个像素点为圆心,以勾边数为半径获取逐点的圆的坐标,再从像素点坐标到圆点的坐标画直线,这样的勾边在拐角处很圆润自然,PS勾边的效果就是这样。两种算法我都实验成功了,扣除用getpixsel和setpixsel函数用时的200至250毫秒(可以使用DIB和指针提高),直线算法勾20边需要大约350毫秒,而圆润勾边算法需要5765毫秒,即5秒多了。
  这是不能忍受的,要知道PS处理勾边基本上是实时的,几乎没有延时。是不是我的算法有问题还是vb本来就慢呢?现奉上源码,恳请有经验的高手赐教!

勾边.rar (13.55 KB)


[ 本帖最后由 lowxiong 于 2012-2-18 11:33 编辑 ]
搜索更多相关主题的帖子: 网上 汉字 实际应用 软件 电视 
2012-02-18 11:30
mayuebo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:257
专家分:1282
注 册:2005-9-8
得分:20 
这个不叫勾边.叫字符轮廓.是和字体有关.相关算法请参照
http://wenku.baidu.com/view/469ae4fb941ea76e58fa0463.html

成功贵在坚持
2012-02-18 18:43
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
得分:0 
回复 2楼 mayuebo
谢了,那篇文章看了,主要是讨论通过建立汉字笔画索引库来检索的,对我勾边(轮廓)算法的作用不大。另外如果你做过电视字幕的话,你所说的轮廓我们一般都称为勾边,如红字勾黑边,勾几个边等等,我们一直是这样说的。

[ 本帖最后由 lowxiong 于 2012-2-18 19:20 编辑 ]
2012-02-18 19:18
mayuebo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:257
专家分:1282
注 册:2005-9-8
得分:0 
噢.可能你没有注意看.上面那篇文章是按汉字笔顺来把字显示出来的,可以空心的.参考一下GDI教程

成功贵在坚持
2012-02-19 14:52
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
得分:0 
回复 4楼 mayuebo
truetype字体空心字有交叉(笔画重叠),不是真正的轮廓字。其实这种勾边方法还包括不规则图形。
今天通过改进算法,又提升了点速度。勾20个边从近6秒提高到3秒。非常感谢你,我已经知道可以通过gdi函数读取字体了,以后肯定有用。
2012-02-19 15:40
mayuebo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:257
专家分:1282
注 册:2005-9-8
得分:0 
不错.这个用处很大

成功贵在坚持
2012-02-19 17:38



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




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

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