关于图象处理方面的一个问题。

fzn0621 2002-11-22 12:26:42
怎么获得一个图形的边缘?
然后把这个边缘保存到一个如下的类型的数组里:
type xxx
x as long
y as long
end type
...全文
16 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sean918 2002-11-25
  • 打赏
  • 举报
回复
我是来学习的
zyl910 2002-11-25
  • 打赏
  • 举报
回复
http://www.nease.net/~cloudwu/2000/gamedev/tips/contour.htm
nik_Amis 2002-11-25
  • 打赏
  • 举报
回复
脆皮大雪糕 2002-11-25
  • 打赏
  • 举报
回复
呵呵,一点想法,绝对不是什么高深的图形学里面的理论。自己突然想出来的大家看看可不可行。
比如图片大小是X*Y的,现在我们在X轴方向将图片分成n个区域然后把每两个区域的交界线像素数据取出来放在数组data(n)里面,这里的每一个数组元素存储的是直线上各个点,具体的数据结构实现是很简单的啦。
然后写子程序test(linedata) as boolean 来测试一条线上的颜色是否相同。
然后开始循环测试拉,肯定可以找到两条相邻的线测试值是不同的,然后再细化这个区间,最终可以找到图形的边缘切线,Y方向如法炮制,最后得到包含图形的最小矩形范围,。这样虽然也挺麻烦,没有测试一下这样的运算时间要多少,但是肯定比遍历整张图快。
fzn0621 2002-11-25
  • 打赏
  • 举报
回复
收到了,但一点都看不懂。。。。。5555555~~~~~~~~~

不过,那个好象是三维的吧?
不知道要取得二维图形边缘和要取得三维图形的边缘是不是一会事?

我现在只是想取得一个二维平面图象里的一个图形的边缘而已。
这张图中的图象和背景就是用不相同的两种颜色来区分,我以前用过最笨的办法,就是遍历这张图上的所有点,记下颜色“突然”变化的那个左标(也就是如果和前一个点不相同的那个点,因为和前一个点不相同就说明到达了那个图形,或者离开了那个图形)。
可用这样的办法,所用的时间是很恐怖的……
我看见一些游戏里所实现相同的效果(分离出一个图形,然后在那个图形周围画一条边,也就是获取了这个图形的边缘了吧? 这类游戏几个比较有名得的代表作就是《暗黑破坏神》、《剑狭情缘》等)的时间是相当快的。不知道是用了什么“绝技”哈~~~


后来我想或者这样是否可行:计算出那个图形共有几条直线和点,然后把那些点保存在下面这个类型的变量数组里面。
type xxx
x as long
y as long
end type

以后就是只要有这个变量数组就可以重新画册出这个图形出来(把各点相连)。

(咦?是不是有点矢量图的意思了?)


zyl910 2002-11-23
  • 打赏
  • 举报
回复
邮件已发送
fzn0621 2002-11-23
  • 打赏
  • 举报
回复
fzn0621@21cn.com

谢谢了!! ^_^
zyl910 2002-11-22
  • 打赏
  • 举报
回复
数字形态学 光看代码是绝对不行的

提取边缘的算法很简单:f - (f (-) b)
f:图
(-):形态学腐蚀运算
b:形态模板


可关于腐蚀运算的原理就非常晕了
一定要看书

如果你一定要代码的话
留下信箱
我将《Visual C++数字图像与图形处理》中的源程序发给你
fzn0621 2002-11-22
  • 打赏
  • 举报
回复
to zyl910(910:

能直接给段代码吗?

我想我看代码会比看书比较看的懂点(我最怕看书了,看着看着就会睡着去的说)。。。 :(
holydiablo 2002-11-22
  • 打赏
  • 举报
回复
up,up
zyl910 2002-11-22
  • 打赏
  • 举报
回复
去学 数字形态学
liulinhai 2002-11-22
  • 打赏
  • 举报
回复
笨办法:搜索每像素的值

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧