基于面积加权反走样算法的研究

   2023-06-15 互联网3050
核心提示:  直线扫描转换算法在处理非水平且非垂直的直线时会出现锯齿,这是因为直线在光栅扫描显示器上显示的图像是由一系列亮度相同而

  直线扫描转换算法在处理非水平且非垂直的直线时会出现锯齿,这是因为直线在光栅扫描显示器上显示的图像是由一系列亮度相同而面积不为零的离散像素点构成的结果。这种使用离散 量 表 示 连 续 量 而 引 起 的 失 真 称 为 走 样(Aliasing)。用于减轻走样现象的技术称为反走样(Antialiasing)。走样是理想直线(理想直线宽度为零)光栅化后(真实像素点面积不为零)的必然结果。光栅扫描显示器显示的直线必定走样,走样现象不可避免,只能减轻。图 1 中黑色理想直线按照中点 Bresenham[1]算法扫描转换的结果为离直线最近的黑色像素点,这些黑色像素点代替理想直线在光栅扫描显示器上绘出。每当前一列所选的像素点和后一列所选的像素点位于不同扫描线时,在显示器上就会出现一个阶梯,直线发生走样。显然,只有对于水平线、垂直线和对角线,才不会出现这种阶梯现象。

  直线的反走样技术的一个应用领域是飞机座舱中的仪表盘。走样会使仪表盘指针发生变形,容易引起指示误差,导致飞行员判断失误。所以要通过一些必要的措施来减轻这种走样现象,以保证飞行器的安全。微软绘图软件Word绘图工具就使用了反走样技术。图 2为Word工具绘制的斜线放大64倍的效果图。图 3为Windows附件“画图”工具绘制的斜线放大64倍的效果图。从图 2中可以看出,反走样技术使用两行像素来绘制斜线,并且像素的灰度发生了变化,而未反走样的斜线图 3,只使用一行像素来绘制,并且斜线像素的灰度保持不变。可以看出,反走样技术的实质是利用人眼视觉原理,使用加权参数对显示像素的灰度级别进行调整,以产生模糊的边界,从而达到较好的视觉效果以减轻阶梯效应。加权参数可以选择距离、面积和体积等。

  反走样技术目前广泛应用于各类游戏中,如《古墓丽影:传奇》就使用了反走样技术。反走样技术也广泛应用在于各类图形软件中,如著名的图形软件Visio 2003中就使用了反走样技术。直线反走样常用的算法称为Wu算法,即下文介绍的基于距离加权的反走样算法[2]。该算法采用相邻的两个像素进行反走样处理,可以提高直线的显示质量,江修等人[3]为了提高飞机座舱显示系统的罗盘画面质量也提出了三像素宽反走样算法。但这些反走样算法不可避免地都存在直线变宽的问题,为此提出一种直线宽度不改变的基于面积加权反走样算法,获得了很好的反走样显示效果。

  1 基于距离加权的反走样算法

  1.1 算法原理

  

  距离加权反走样算法是采用空间混色原理来对直线进行修正[2]。空间混色原理指出,人眼对某一区域颜色的识别是取这个区域颜色的平均值。距离加权反走样算法原理是对于理想直线上的任一点,同时点亮两个以不同灰度级别显示的相邻像素。图 4 直线上的 1 点,可用像素点P1和像素点 P4按不同的灰度级别共同表示,像素点离直线越近,其灰度值越大,离直线越远,其灰度值就越小,但二者的灰度级别之和等于255。在 RGB(bRedbGreen,bBlue)函数中,当 bRed、bGreen、bBlue 3 个值的变化率不同时,出现彩色;当 bRed、bGreen、bBlue 的 3 个值变化率相同时,出现灰度。bRed、bGreen、bBlue3 个分量的值都在 0~255 之间,共有 256 种灰度级别,并且灰度值越大像素越亮,灰度值越小像素越暗。本算法将灰度级别规范化为闭区间

  〔0,1〕,使用时乘以 255 即可。

  可以将 P1点和 P4点和理想直线的距离作为加权参数,对像素的灰度级别进行调节。P1点距离理想直线0.8 个像素远,该像素的灰度为80%;P4点距离理想线 0.2 个像素远,该像素的灰度为20%。同理,P2点距离理想线0.45 个像素远,该像素的灰度为 45%;P5点距离理想线 0.55 个像素远,该像素的灰度为 55%;P3点距离理想线0.1 个像素远,该像素的灰度为 10%。P6点距离理想线 0.9 个像素远,该像素的灰度为 90%。从图4可知,距离加权反走样算法是用两个像素来表示理想直线上的一个点,依据两个像素与理想直线的距离而调节其灰度,使所绘制的直线达到视觉上消除锯齿的效果。

  1.2 算法实现

  2 基于面积加权的反走样算法

  直线基于距离加权反走样算法虽然较好地减轻了走样现象,但用这种方法绘制的直线由于同时使用相邻的上、下两个像素同时显示,会造成直线膨胀变“粗”起来。这在一些要求线型精细的绘图操作中无法达到理想的反走样效果。为此,提出面积加权反走样算法以改善这种情况。

  直线距离加权反走样算法没有考虑像素的面积,仍然假定像素是数学上面积为零的一个点,像素的颜色是由像素中心的颜色决定的。从图 2中看到,实际上像素并不是一个点,而是个正方形区域;屏幕上所绘制的直线也不是数学意义上的无宽度的理想线段,而是宽度至少为一个像素单位的长方形线条,如图7 所示。

  2.1 算法原理

  假设直线线条的斜率为 k(0≤k≤1),那么线条与像素网格单元的相交情况可以划分为图8所示的 7 种情况,图中阴影部分为重叠区域。依次计算出直线上每种情况下的重叠区域面积,作为加权参数对像素的灰度级别进行调整,即根据重叠部分面积的大小来设置每个像素的灰度级别,重叠面积大的像素更暗一些,重叠面积小的像素

  更亮一些。这种方法将产生模糊的边界,可以有效减轻直线离散化造成的台阶效应,达到直线的反走样效果。本算法的难点是计算直线条与像素块相交区域的面积。

 

  3 结 论

  图 9 第 1 条直线为使用中点 Bresenham 算法绘制的直线,没有进行反走样处理;第 2 条直线为使用基于面积加权反走样算法处理的直线,第3 条直线为使用基于距离加权反走样算法处理的直线。从图中可以看出,基于面积加权反走样直线算法绘制的直线,由于只对单一像素点进行处理,直线的宽度不改变,四周像素点灰度降低明显;而基于距离加权反走样算法绘制的直线,由于借助于相邻像素点进行处理,直线宽度要大,周像素点灰度也得到了调整。这说明基于面积加权的反走样算法有效减轻了走样直线变“粗”的现象。

  参 考 文 献

  [1] 陈传波, 陆 枫. 计算机图形学基础[M]. 北京: 电

  子工业出版社, 2002. 109-112.

  [2] 孔令德. 计算机图形学基础教程(Visual C++版) [M].

  北京: 清华大学出版社, 2008. 56-57.

  [3] 江 修, 张焕春, 经亚枝. 三像素宽反走样直线绘

  制算法的研究[J]. 南京航空航天大学学报, 2003,

  35(2): 148-151.

 

 


 
举报收藏 0打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  隐私政策  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅