论文部分内容阅读
多边形填充算法是计算机图形学中的基本算法之一,也是图形加速器中光栅化阶段的主要算法之一。近些年来,随着嵌入式系统的广泛应用以及计算机图形学的发展,面对着嵌入式系统中高质量、动态实时显示以及高分辨率的要求,传统的使用软件编程语言实现相关算法,然后主要依赖微处理器来对显示数据进行处理的显示方式显然已经难以满足此时的要求。因此在嵌入式系统中使用硬件来实现图形显示中经常用到而且占用微处理器等资源比较多的算法,从而减轻微处理器的负担,达到图形加速显示的目的,进而满足高要求显示的需求,不失为一种可行的显示处理方案。 边标志算法是多边形填充算法中经常使用的填充算法之一。传统的多边形边标志算法在处理带有极值点、狭长条以及具有水平边界(含有奇数个像素点)的多边形时便会出现异常填充的现象。因此本文在深入研究传统的边标志算法及大量的改进后的边标志算法的基础之上,提出了一种新的改进的边标志算法。该算法充分利用了边标志算法在光栅化多边形的边界时需要对每一条边界的每一个像素点都要访问一次的特点,为多边形内部以及多边形边界上的像素点设置一个计数型边标记变量flag,在对多边形的边界进行光栅化的过程中,针对边界上的像素点每访问一次对其flag值便进行加1。这样就很方便简捷的将极值点和狭长条上的点与普通的边界点区别开来。在对多边形进行填充的过程中,根据当前像素点的flag值与1的大小关系情况判断扫描线以后的像素点是否位于多边形的内部,以便对像素点进行填充。 改进后的算法不仅保持了传统的边标记算法的数据结构简单、思想简单和适合硬件实现的优点,而且在处理极值点、狭长条问题以及水平边界的过程中又仅仅使用对边界像素点的标记值进行加1的操作,一次性的完成了极值点、狭长条上的点与普通点的区别,从而消除了填充异常的现象,方便了算法的实现。对本文提出的改进的边标志算法首先是在PC机上使用VC++6.0对其填充结果的正确性进行了验证,然后是在友晶科技公司的DE2-70系列教育开发板上使用Verilog HDL进行了实现,最后使用友晶科技公司的TRDB-LTM显示屏作为显示设备,验证了实际显示效果。实验结果表明,本文提出的改进的边标志算法对极值点、狭长条以及具有水平边(含有奇数个像素点)的多边形的填充效果良好。硬件资源的占有量少,处理速度完全可以满足在嵌入式系统中人们对高质量显示的需求。