资源描述:
《计算机图形学边缘填充算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、边缘填充算法思路:利用求余运算代替交点排序、配对、构造填充区间。原理:象素点颜色值经过偶数次求余运算后保持不变,经过奇数次求余运算后变为其余数算法:以扫描线为中心的边缘填充算法以边为中心的边缘填充算法基本思想:对于每一条扫描线和每条多边形边的交点(x1,y1),将该扫描线上交点右方的所有象素取补.对多边形的每条边做此处理,多边形的顺序随意.该算法的优点是简单,缺点是对复杂图形,每一象素可能被访问多次,输入输出的量比较大.••边缘填充算法以扫描线为中心的边缘填充算法基本思想:对于每一条扫描线和每条多边形
2、边的交点(x1,y1),将该扫描线上交点右方的所有象素取补.对多边形的每条边做此处理,多边形的顺序随意.将当前扫描线上的所有象素着上指定颜色的补色以扫描线为中心的边缘填充算法向右求余从1)(xa以扫描线为中心的边缘填充算法以扫描线为中心的边缘填充算法向右求余从2)(xc以扫描线为中心的边缘填充算法向右求余从2)(xc以扫描线为中心的边缘填充算法向右求余从3)(xd以扫描线为中心的边缘填充算法向右求余从3)(xd以扫描线为中心的边缘填充算法以扫描线为中心的边缘填充算法以扫描线为中心的边缘填充算法将当前扫
3、描线上的所有象素着上指定颜色的补色以扫描线为中心的边缘填充算法将当前扫描线上的所有象素着上指定颜色的补色以扫描线为中心的边缘填充算法以扫描线为中心的边缘填充算法以扫描线为中心的边缘填充算法以扫描线为中心的边缘填充算法以扫描线为中心的边缘填充算法以扫描线为中心的边缘填充算法以扫描线为中心的边缘填充算法对各条扫描线循环上述处理过程。以边为中心的边缘填充算法原始多边形以边为中心的边缘填充算法初始化:将绘图窗口的背景色置为多边形颜色的补色以边为中心的边缘填充算法对非水平边上的每个象素点向右求余以边为中心的边缘
4、填充算法以边为中心的边缘填充算法以边为中心的边缘填充算法该算法的优点是简单,缺点是对复杂图形,每一象素可能被访问多次,输入输出的量比较大.栅栏填充算法基本思想:对于每个扫描线与多边形边的交点,仅将交点与栅栏之间的象素取补.边缘填充算法特点栅栏填充算法向左求余从0)(xa将当前扫描线上的所有象素着上指定颜色的补色向左求余从1)(xa栅栏填充算法向左求余从2)(xa将当前扫描线上的所有象素着上指定颜色的补色栅栏填充算法向右求余从3)(xa将当前扫描线上的所有象素着上指定颜色的补色栅栏填充算法边标志算法进一
5、步改进了栅栏算法,使得算法对每个象素仅访问一次.边标志算法分两步进行:对多边形边界上的象素打上边标志;填充.边标志算法扫描线算法:对每条扫描线,首先计算它与扇形区域边界的交点,再把配对交点之间的像素用指定颜色填充。FillingEllipseArcs区域(种子)填充是指先将区域内的一点(种子点)赋予给定颜色,然后将颜色扩充到整个区域内的过程(染色过程).区域:已经表示成点阵形式的象素集合,具有相同颜色.区域填充(种子填充算法)区域的两种表示:内点表示、边界表示.边界表示:给位于边界上的所有象素着色
6、,而区域内不着色.区域的表示内点表示:给区域内所有象素都着上同一种颜色(特征值),边界上pixel不着色.要求:区域具有一定的连通性:4连通或8连通4连通区域:取区域内任意两点,在该区域内(不能通过区域外的点),若从其中一点出发,通过上、下、左、右四种运动可到达另一点时,则称该区域为4连通区域.区域连通性(1)4连通运动方向8连通运动方向区域连通性(2)区域连通性(3)允许从4个方向搜索下一个象素的填充算法称为是四向填充算法允许从8个方向搜索下一个象素的填充算法称为是8向填充算法算法思想:设G为一内点
7、表示的区域,(x,y)是G内一点,以(x,y)为种子点,先将(x,y)置为newcolor,然后对(x,y)的4(或8)领域进行递归处理,逐步将整个区域G置为newcolor.(1)递归算法递归填充算法初始化:种子象素入栈第一步:栈顶象素出栈,作为种子点;第二步:种子点被置为填充色;第三步:按照上、下、左、右顺序检查与种子点相邻的象素:若非边界且未被填充,则入栈(8向连通区域需考虑更多相邻象素)。若栈不空,则重复第一步。voidFloodFill4(intx,inty,intoldColor,intn
8、ewColor){if(GetPixel(x,y)==oldColor){PutPixel(x,y,newColor);FloodFill4(x,y+1,oldColor,newColor);FloodFill4(x,y-1,oldColor,newColor);FloodFill4(x-1,y,oldColor,newColor);FloodFill4(x+1,y,oldColor,newColor);}}Algorithm1234567891011