| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 768 人关注过本帖
标题:汉字勾边,恳请指教算法!
取消只看楼主 加入收藏
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
汉字勾边,恳请指教算法!
  最近,碰巧逛进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
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:0 
回复 2楼 mayuebo
谢了,那篇文章看了,主要是讨论通过建立汉字笔画索引库来检索的,对我勾边(轮廓)算法的作用不大。另外如果你做过电视字幕的话,你所说的轮廓我们一般都称为勾边,如红字勾黑边,勾几个边等等,我们一直是这样说的。

[ 本帖最后由 lowxiong 于 2012-2-18 19:20 编辑 ]
2012-02-18 19:18
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:0 
回复 4楼 mayuebo
truetype字体空心字有交叉(笔画重叠),不是真正的轮廓字。其实这种勾边方法还包括不规则图形。
今天通过改进算法,又提升了点速度。勾20个边从近6秒提高到3秒。非常感谢你,我已经知道可以通过gdi函数读取字体了,以后肯定有用。
2012-02-19 15:40
快速回复:汉字勾边,恳请指教算法!
数据加载中...
 
   



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

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