- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章2多边形扫描转换
;2. x-扫描线算法
基本思想;算法步骤:
(1)确定多边形所占有的最大扫描线数,得到多边形顶点的最小和最大y值(ymin和ymax)。
(2)从y=ymin到y=ymax,每次用一条扫描线进行填充。
(3)对一条扫描线填充的过程可分为四个步骤:
a.求交
b.排序
c.交点配对
d.区间填色;存在问题:当扫描线与多边形顶点相交时,交点的取舍问题。;解决:
当扫描线与多边形的顶点相交时,
若共享顶点的两条边分别落在扫描线的两边,交点只算一个;
若共享顶点的两条边在扫描线的同一边,这时交点作为零个或两个。 ;0;3. 改进的有效边表算法(Y连贯性算法);;有效边(Active Edge):指与当前扫描线相交的多边形的边,也称为活性边。
有效边表(Active Edge Table, AET):把有效边按与扫描线交点x坐标递增的顺序存放在一个链表中,此链表称为有效边表。
有效边表的每个结点:
x ymax 1/k next;边表(Edge Table)
边表的构造:
(1)首先构造一个纵向链表,链表的长度为多边形所占有的最大扫描线数,链表的每个结点,称为一个桶,则对应多边形覆盖的每一条扫描线。
(2)将每条边的信息链入与该边最小y坐标(ymin )相对应的桶处。也就是说,若某边的较低端点为ymin,则该边就放在相应的扫描线桶中。;(3)每条边的数据形成一个结点,内容包括:该扫描线与该边的初始交点x(即较低端点的x值),1/k,以及该边的最大y值ymax。
x|ymin ymax 1/k NEXT
(4)同一桶中若干条边按X|ymin由小到大排序,若X|ymax 相等,则按照1/m由小到大排序。;解决顶点交点计为1时的情形:;算法步骤:
(1)初始化:构造边表,AET表置空;
(2)将第一个不空的ET表中的边与AET表合并;
(3)由AET表中取出交点对进行填充。填充之后删除y=ymax的边;
(4)yi+1=yi+1,根据xi+1=xi+1/m计算并修改AET表,同时合并ET表中y=yi+1桶中的边,按次序插入到AET表中,形成新的AET表;
(5)AET表不为空则转(3),否则结束。;2.3.2 区域填充;4-连通区域和8-连通区域
把位于给定区域的边界上的象素一一列举出来的方法称为边界表示法。
边界填充算法(Boundary-fill Algorithm)。
枚举出给定区域内所有象素的表示方法称为内点表示。
泛填充算法(Flood-fill Algorithm);1. 边界填充算法
算法的输入:种子点坐标(x,y),填充色和边界颜色。
栈结构实现4-连通边界填充算法的算法步骤为:
种子象素入栈;当栈非空时重复执行如下三步操作:
(1)栈顶象素出栈;
(2)将出栈象素置成填充色;
(3)检查出栈象素的4-邻接点,若其中某个象素点不是边界色且未置成多边形色,则把该象素入栈。;栈结构实现8-连通边界填充算法的算法步骤为:
种子象素入栈;当栈非空时重复执行如下三步操作:
(1)栈顶象素出栈;
(2)将出栈象素置成填充色;
(3)检查出栈象素的8-邻接点,若其中某个象素点不是边界色且未置成多边形色,则把该象素入栈。;特点:
可以用于填充带有内孔的平面区域。
把太多的象素压入堆栈
改进
通过沿扫描线填充水平象素段,来代替处理4-邻接点和8-邻接点。;沿扫描线填充水平象素段的4-连通边界填充算法步骤:
种子象素入栈;当栈非空时作如下三步操作:
(1)栈顶象素出栈;
(2)填充出栈象素所在扫描行的连续象素段,直到遇到边界象素为止,即每出栈一个象素,就对包含该象素的整个扫描线区间进行填充;
(3)在区间中检查与当前扫描线相邻的上下两条扫描线的有关象素是否全为边界象素或已填充的象素,若存在非边界、未填充边界的象素,则把每一区间的最右象素取作种子象素入栈。;2. 泛填充算法
算法的输入:种子点坐标(x,y),填充色和内部点的颜色。
算法原理:
算法从指定的种子(x,y)开始,用所希望的填充颜色赋给所有当前为给定内部颜色的象素点。;8-连通泛填充算法步骤如下:
种子象素入栈;当栈非空时重复执行如下三步操作:
(1)栈顶象素出栈;
(2)将出栈象素置成填充色;
(3)检查出栈象素的8-邻接点,若其中某个象素点不是给定内部点的颜色且未置成新的填充色,则把该象素入栈。;注意:
当以边界表示时,4-连通边界填充算法只能填充4-连通区域,8-连通边界填充算法也只能填充8-连通区域。
当以内点表示时,8-连通泛填充算法可以填充8-连通区域也可以填充4-连通区域,当然4-连通泛填充算法还是只能填充4-连通区域。
您可能关注的文档
最近下载
- 机械测量培训课程.pptx
- 医疗器械安全有效基本要求清单填写参考模板2024年.docx
- 人教版(2024)数学一年级下册四 100以内的口算加、减法 练习.pptx
- 电气装置安装工程质量检验及评定规程DLT5161 2018.doc
- 做好客舱清洁前准备课件讲解.pptx
- 铁道信号论文-信号机维护与故障处理.doc
- ISO13485质量手册+全套程序文件.docx VIP
- 汽车机械维修工(高级技师)职业鉴定考试题库资料(高频300题).pdf
- 多维视角下梧州市普通高中体育生学训现状剖析与发展路径探索.docx
- 江南事业编招聘考试题历年公共基础知识真题汇总-综合应用能力(2010-2021.pdf VIP
文档评论(0)