首页> 中国专利> 一种基于非加权区域采样的反走样直线绘制方法

一种基于非加权区域采样的反走样直线绘制方法

摘要

本发明提出了一种基于非加权区域采样的反走样直线绘制方法,对所绘制直线通过光栅图形显示屏的每一列的操作可概括为:(1)通过绘制直线的Bresenham算法确定当前列距离理想直线最近的三个显示像元,其中距离直线最近的显示像元必有灰度值,另外两个显示像元可能有灰度值,而当前列其余显示像元则没有灰度值;(2)将这三个显示像元中的每一个都均分为数量等同于光栅显示屏灰度级数的子像元;(3)通过Bresenham算法分别确定与代表直线的矩形的两条边距离最近的两组子像元,这两组子像元给出代表直线的矩形在当前列中覆盖区域的边界;(4)分别统计三个显示像元被矩形区域覆盖的子像元的数量;(5)根据统计所得结果确定当前列显示像元的灰度值。该方法适用于具有多灰度级的光栅显示屏,通过控制灰度值的缓慢变化达到反走样的效果,非常适合于对显示质量要求较高的仪器仪表等领域。

著录项

  • 公开/公告号CN102682456A

    专利类型发明专利

  • 公开/公告日2012-09-19

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN201210123982.4

  • 申请日2012-04-25

  • 分类号G06T11/20(20060101);

  • 代理机构

  • 代理人

  • 地址 100191 北京市海淀区学院路37号

  • 入库时间 2023-12-18 08:00:51

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-06-15

    未缴年费专利权终止 IPC(主分类):G06T11/20 授权公告日:20140716 终止日期:20150425 申请日:20120425

    专利权的终止

  • 2014-07-16

    授权

    授权

  • 2012-11-14

    实质审查的生效 IPC(主分类):G06T11/20 申请日:20120425

    实质审查的生效

  • 2012-09-19

    公开

    公开

说明书

(一)技术领域

本发明涉及一种绘制反走样直线的新方法,属于计算机图形学反走样技术领域。

(二)背景技术

随着计算机图形技术的飞速发展,可以说当前计算机显示功能方面的应用都不同程度地 涉及到图形技术,因此计算机图形绘制方法的研究也显得越来越重要。

直线作为组成图形的基本元素之一,其绘制方法是计算机图形学研究最多的一个基础内 容。计算机图形学中的直线生成算法通常是指通过在光栅显示屏上寻找一系列距离直线最近 的离散像素点来表示直线的方法。目前,应用最广泛的光栅图形显示屏由一系列离散的像素 组成,从而用计算机生成的直线最终都得以离散的像素来显示。因此,绘制非水平和非垂直 的直线将会不可避免地出现锯齿现象,这种因为用离散量表示连续量而产生的失真,就称为 走样(aliasing)。而用于消除或减小走样现象的技术则称为反走样(antialiasing)。

直线绘制功能的基础性和广泛应用性使针对直线反走样技术领域的研究一直是计算机图 形学的研究热点之一。

现阶段,直线反走样技术主要有三种方法:提高分辨率、非加权区域采样和加权区域采 样。

提高分辨率通过增加显示屏上的像素点减轻锯齿现象、增强直线的显示效果,但是该方 法是以成倍的存储器容量和扫描转换时间作为代价取得良好效果的,因此将会大大增加仪器 的成本,并且此方法只能减轻,而不能消除锯齿问题。

非加权与加权区域采样均能有效地减轻并在一定程度上消除锯齿现象,这两种方法从取 样理论的角度看,相当于使用一定形状的滤波器,进行前置滤波后再取样,因此两种方法绘 制的直线相比于在相同分辨率下直接进行点取样绘制的直线看起来效果要好很多。

在反走样技术领域使用的各种算法中,基于区域采样原理的Wu直线反走样算法是反走 样技术领域较早使用的方法之一,该方法虽能取得较好的显示效果,但是算法本身需要做除 法、取整等实数运算,用FPGA难以实现。而这一现象也是目前众多算法的缺点所在,本发 明通过分析单像素宽度直线的特性并结合Bresenham画线算法提出一种简单的基于非加权区 域采样的反走样直线绘制算法,适用于对显示质量要求较高的领域。

(三)发明内容

本发明的目的在于提出一种在FPGA平台上容易实现的基于非加权区域采样的反走样直 线绘制方法,适用于对显示平滑度要求较高的仪器仪表等领域。

本发明的技术方案是对所要绘制的直线经过光栅显示屏的每一列显示像元均采取以下操 作:首先,通过绘制直线的Bresenham算法确定当前列距离理想直线最近的三个显示像元, 其中距离直线最近的显示像元必有灰度值,另外两个显示像元可能有灰度值,而当前列其余 显示像元则没有灰度值;然后,将这三个显示像元中的每一个都均分为数量等同于光栅显示 屏灰度级数的子像元;接着,确定矩形区域在当前列的覆盖范围;最后,分别统计三个显示 像元被矩形区域覆盖的子像元的数量,根据统计所得结果确定当前列显示像元的灰度值。

以下对本发明的技术方案作进一步说明。

本发明提出了一种基于非加权区域采样的反走样直线绘制方法,可用于对显示平滑度要 求比较高的仪器仪表等领域;其特征在于对所要绘制的直线(这里只讨论斜率在0~1之间的 情况,对于其它情况可通过将X轴与Y轴互换处理)在光栅图形显示屏上经过的每一列显示 像元均进行如下步骤的操作:

步骤一:确定当前列与所要绘制的理想直线距离最近的三个显示像元;

步骤二:对步骤一获取的三个显示像元进行均匀分割,得到若干个子像元;

步骤三:确定代表直线的具有一个单位像元宽度的矩形在当前列的覆盖范围;

步骤四:分别统计步骤一获取的三个显示像元被矩形所覆盖的子像元的数量;

步骤五:确定步骤一获取的三个显示像元的灰度值。

在步骤一中,利用经典Bresenham画线算法确定当前列距离所要绘制的理想直线最近的 显示像元(设坐标为(x,y)),由于代表所绘制直线的矩形的宽度为单位显示像元,因此该列 中可能有灰度值的另外两个显示像元的坐标分别为(x,y+1)和(x,y-1)。

步骤二,对步骤一中获取的三个显示像元进行分割,每个显示像元均匀分割成数量等同 于显示屏灰度级数的子像元,例如,对于64个灰度级的显示屏,则将三个显示像元均分为8×8 个面积相等的正方形子像元。

步骤三,在当前列,通过Bresenham画线算法分别确定与代表直线的矩形的两条边(平 行于矩形中轴线)距离最近的两组子像元,其中每组子像元的数量等于将一个显示像元分割 后产生的子像元的列数(例如,对于64个灰度级的显示屏来说,每组子像元的数量为8), 这两组子像元给出代表直线的矩形所覆盖范围的边界。

在步骤四中,分别统计三个显示像元中各个子列子像元被矩形区域覆盖的数量,然后统 计三个显示像元被矩形区域覆盖的子像元的总数。

在步骤五中,根据步骤四统计的结果,三个显示像元的灰度值分别等于各自被直线所覆 盖的子像元的数量减1;特殊地,若某个显示像元被覆盖的子像元数量为0,则认为该显示像 元的灰度值为0。

(四)附图说明

图1为本发明提出的绘制反走样直线算法流程图。

图2为所要绘制的斜率在0~1之间的理想直线和当前列距离该直线最近的三个显示像元, 每个显示像元用一个正方形表示。

图3给出将三个显示像元中的每一个均匀分割成8×8个子像元(假设显示屏的灰度级数 量为64)的示意图。

图4为代表直线的矩形的两条边与经过分割之后的三个显示像元位置分布情况。

图5给出在当前列(均分为八个子列)经过Bresenham算法确定与矩形两条边相距最近 的两组子像元。

图6给出三个显示像元各自的子像元被矩形区域覆盖情况,其中蓝色区域表示最上端显 示像元子像元被覆盖情况,黄色区域则为中间显示像元被覆盖情况,紫色区域为当前列最下 端显示像元被覆盖情况。

(五)具体实施方式

假设光栅图形显示屏采用的灰度级数为64,下面结合附图对本发明的技术方案作进一步 的详细描述。

本发明设计了一种简单的基于非均匀区域采样的反走样直线绘制方法,主要采用整数加 法运算,符合FPGA硬件实现的特点。本发明的算法流程图如图1所示,现以图2给出的所 要绘制的斜率处于0~1之间的理想直线为具体实例详细说明实施步骤。

(1)在当前列确定与理想直线距离最近的三个显示像元

Bresenham算法是计算机图形学领域中使用最广泛的额直线扫描转换算法,该算法简单 高效,可快速确定当前列与直线距离最近的显示像元。

本发明借助该算法确定当前列与理想直线距离最近的三个显示像元,具体步骤可分为两 步:首先,通过Bresenham算法确定当前列与直线距离最近的显示像元,该显示像元对应图 2处于中间位置的正方形;然后,该显示像元的上、下像元即为所要寻找的另外两个可能有 灰度值的显示像元。为方便说明,表1给出与理想直线相距最近的三个显示像元和它们各自 的代表符号。

表1三个显示像元与各自的代表符号

  三个像元相对位置   最上端   中间   最下端   代表符号   Pixel_A   Pixel_B   Pixel_C

(2)均匀分割显示像元

该步骤的主要工作是对三个显示像元都进行同样的分割操作,使每个显示像元产生若干 个子像元,子像元的数量与当前光栅图形显示屏的灰度级数相等。例如,对具有64个灰度等 级的显示屏来说,可将每个显示像元按图3进行分割,分割后得到8×8个子像元。对于别的 灰度等级,可按类似方法对显示像元进行分割。

(3)确定矩形覆盖范围

如图4所示,代表直线的矩形在当前列的覆盖范围是由矩形的两条边所限定的,因此可 从边界着手寻找矩形的覆盖区域。

由于在步骤(2)中已经将当前列均匀分割成8个子列,因此确定矩形的覆盖范围可通过在 这8个子列中分别寻找距离矩形两条边最近的两组子像元,其中每组包含8个子像元。考虑 到Bresenham算法的优越性,寻找两组子像元可通过该算法完成。

图5给出符合要求的16个子像元,这16个子像元给出矩形在当前列覆盖区域的边界。

(4)统计三个显示像元各自被覆盖的子像元数目

由于当前列包含8个子列,因此该统计过程可分为8个阶段完成:首先,是通过Bresenham 算法确定矩形的两条边在第一个子列限定的区域,并分别统计三个显示像元在当前子列被覆 盖的子像元数目;然后,用同样的方法统计三个显示像元在第二个子列被覆盖的子像元数目, 并与前一子列统计结果累加……直到第8个子列统计结束。

图6给出三个显示像元被矩形区域覆盖情况,其中蓝色区域给出显示像元Pixel_A被覆 盖情况,黄色区域给出显示像元Pixel_B被覆盖情况,紫色区域给出显示像元Pixel_C被覆盖 情况。表2给出了当前列三个显示像元被覆盖子像元数量的统计结果。

表2显示像元被覆盖子像元统计情况

  显示像元   Pixel_A   Pixel_B   Pixel_C   被覆盖子像元数目   2   62   8

(5)确定当前列显示像元灰度值

根据表2的统计结果,直接给出当前列所有显示像元的灰度值,如表3所示。

表3当前列所有显示像元灰度值

  当前列像元   Pixel_A   Pixel_B   Pixel_C   其余   灰度值   1   61   7   0

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号