APP下载

基于屏幕背景色的彩色直线反走样算法

2010-01-01康凤娥孔令德

图学学报 2010年3期
关键词:背景色走样线框

康凤娥, 孔令德

(太原工业学院,山西 太原 030008)

在目前应用最广泛的光栅图形显示系统中,图形的走样现象相当普遍,由于图形的走样现象对图形的质量有极大的影响,所以反走样技术领域的研究也一直是计算机图形学的研究热点。关于反走样技术的算法基本上分为两类[1],第一类是提高分辨率即增加采样点(提高采样频率)。然而CRT光栅扫描显示非常精细光栅的能力是有限的,因此人们在较高的分辨率对光栅进行计算,然后采用平均算法得到较低分辨率的像素的属性,并显示在分辨率较低的显示器上。这种方法称为超采样或后置滤波。另一类方法是把像素作为一个有限区域,对区域采样来调整像素的亮度,以光顺边界来减轻锯齿现象这种方法等价于图像的后置滤波。查阅近年来文献资料[2-4],其中多是基于以上两种方法的改进,许多算法在实际的反走样图形绘制中,存在着计算复杂和存储量大的缺点,使实用性受到限制。本文根据Wu反走样算法思想[5],将灰度直线的反走样技术推广到彩色直线的反走样算法,用该算法在Visual C++的MFC框架下,绘制动态消隐的彩色球体线框光照模型,计算简单、运行速度快,图形光顺,反走样达到了理想的效果。

如彩色球体线框光照模型的绘制方法通常是采用有限单元法将其近似划分为若干个小平面区域,然后用线框模型进行球体表示。常用的小平面区域有三角形面片和四边形面片两种。球体的南北极部分采用三角形面片逼近,球体中间部分可采用四边形面片或将四边形面片再次划分为三角形面片逼近,如图1所示。球体线框模型小面片的边界直线采用中点Bresenham算法[6]绘制时,出现了走样“阶梯”,可以采用Wu反走样算法思想进行改进。在球体线框模型的光照 处理过程中,球体的前景色根据材质、光源位置和环境光等参数来决定,线框模型的每个像素点的颜色因光照而发生了颜色渐变,提出了彩色直线的动态反走样要求。经过研究,笔者认为彩色直线的动态反走样算法不仅与直线的颜色有关,而且也受到屏幕背景色的约束。

图1 球体线框模型的三角形面片和四边形面片

1 灰度直线反走样算法

直线的距离加权反走样算法是采用空间混色原理来对直线的灰度值进行修正,以产生模糊的边界,在视觉中形成光顺效果。空间混色原理指出[2],人眼对某一区域颜色的识别取决于这个区域颜色的平均值。按照Wu反走样算法思想,根据像素与理想直线距离的大小为相邻像素分配灰度值,使绘制的直线达到视觉上消除“阶梯”的效果。

对于斜率满足0<k≤1的直线段AB,如图2所示,x方向为主位移方向。理想直线段AB与像素的中心连线P1P4、P2P5、P3P6分别相交于C、D、E点。P1、P2、P3为理想直线上方的像素点,P4、P5、P6分别为理想直线下方的像素点。直线段AB扫描转换的结果为:P2、P3和P4。由于转换后的像素点分别位于上下两行,直线段AB发生了走样。Wu反走样的原理是使用垂直方向的两个相邻像素共同表示理想直线段上的一点。即将C点表示为P1和P4,D点表示为P2和P5,E点表示为P3和P6。可以将上下两个像素到交点的距离作为加权参数,对像素的灰度值进行调节。使所绘制的直线达到视觉上消除“阶梯”的反走样效果。

图 2 距离加权反走样原理

对于任意斜率的直线,相邻两个像素灰度值的设置见表1。表中d为像素点与理想直线的距离。从表1第1行可以看出,对于左右两个相邻像素点(x, y)和(x+1, y),当d为0时,理想直线过像素点(x, y),其灰度为黑色,像素点(x+1, y)的灰度为白色;当d为1时,理想直线过像素点(x+1, y),其灰度为黑色,像素点(x, y)的灰度为白色。根据表1设计的算法可以实现任意斜率直线的Wu反走样算法绘制[4],相邻两像素灰度值为

表1 不同斜率直线的相邻像素的灰度值设置

这里,直线的前景色为黑色,屏幕背景色为白色。图3为球体线框模型的Wu反走样算法的灰度效果图。

图 3 球体线框模型反走样效果图

2 彩色直线反走样算法

在真实感图形的绘制中,直线的颜色发生渐变,可以绘制出如图4所示的球体线框光照模 型[7-8]。图4中在球体的右上方和左下方施加了两个光源,出现了两个镜面反射高光区域。但图4线框边界直线未进行反走样处理,“阶梯”明显,需要提出彩色线条的反走样算法。真实感图形显示的另一个问题是屏幕的背景色需要根据场景实时进行变换,这样球体线框光照模型反走样算法就需要处理前景色和背景色的关系。本文根据研究结果提出了基于屏幕背景色的彩色直线反走样算法。

图 4 球体线框模型双光源走样光照效果图

2.1 白色背景色的彩色直线反走样算法

对Wu反走样算法进行改进,根据彩色直线上每个像素点的颜色来进行反走样处理。假设屏幕的背景色仍为白色,直线上任一点的前景色为RGB(r, g, b),则彩色直线的反走样算法是从直线颜色变化到白色,形成模糊边界。相邻两个像素灰度值的设置见表2,表2中d为像素点与理想直线的距离。从表2第1行可以看出,对于左右两个相邻像素点(x, y)和(x+1, y),当d为0时,理想直线过像素点(x, y),其颜色为直线颜色RGB(r, g, b),像素点(x+1, y)的颜色为白色;当d为1时,理想直线过像素点(x+1, y),其颜色为直线颜色RGB(r, g, b),像素点(x, y)的颜色为白色。根据表2设计的算法可以实现任意颜色直线的反走样,相邻两像素的颜色值为

这里注意直线的前景色为彩色,屏幕的背景色仍为白色。使用本模型绘制的球体线框模型光照反走样效果如图5所示。

表2 彩色直线的相邻像素的颜色设置

2.2 任意背景色的反走样算法

对于图5所示的反走样球体线框光照模型,白色背景不能充分展示其光照效果,一般常将背景色设置为黑色。在不改变白色背景色的反走样算法的前提下,只是简单将背景色更换为黑色,再次显示的图形如图6所示。图6中球体的线框直线失去了反走样效果,这是由于背景色从白色更换为黑色而引起的。从这里可以得到一个结论,彩色直线的反走样效果与屏幕的背景色直接相关,反走样算法需要考虑屏幕背景色的影响。

图 5 球体线框模型反走样光照效果图

图 6 没有考虑背景色因子的黑色背景球体 线框模型光照效果图

设直线的前景色为RGB(rf, gf, bf),背景色为RGB(rb, gb, bb)。则彩色直线的反走样是从前景色变化到背景色,出现模糊边界。相邻两个像素灰度值的设置见表3。表3中d为像素点与理想直线的距离,从表3第1行可以看出,对于左右两个相邻像素点(x, y)和(x+1, y),当d为0时,理想直线过像素点(x, y),其颜色为直线颜色RGB(rf, gf, bf),像素点(x+1, y)的颜色为背景色RGB(rb, gb, bb);当d为1时,理想直线过像素点(x+1, y),其颜色为直线颜色RGB(rf, gf, bf),像素点(x, y)的颜色为直线颜色RGB(rb, gb, bb)。根据表3设计的算法可以实现任意颜色直线的反走样,相邻两像素的颜色值为

使用本模型绘制的球体线框模型反走样光照效果如图7所示。图7中背景的每个像素全部为黑色,如果使用动态场景做为屏幕背景,背景的每个像素的颜色不再一致,使用本原理实现的动态场景反走样效果如图8所示。

表3 包含背景色参数的彩色直线的相邻像素的颜色设置

图 7 考虑背景色因子的黑色背景球体线框模型反走样光照效果图

图 8 动态场景的球线框模型反走样光照效果图

3 结 论

本文提出了基于背景色的彩色直线反走样的算法,将Wu 反走样算法扩展到前景色和背景色的层面上去研究,深化了反走样理论。本算法可以实现任意斜率的彩色直线在任意背景下的反走样图形的绘制,这种背景可以是静态背景也可以是动态背景。本文在Visual C++的MFC 框架下实现,未使用任何图形标准(如,OpenGL或DirectX)。使用本算法绘制的球体线框光照反走样模型在笔者主持开发的虚拟现实项目中得到了应用。

[1] 陈传波, 陆 枫. 计算机图形学基础[M]. 北京: 电子工业出版社, 2002. 140-144.

[2] 王荣林, 陈文飞. 计算机图形学反走样技术的探索与应用[J]. 科技进步与对策, 2000, 17(2): 89-90.

[3] 杨爱良, 杨 睿, 熊智勇. 反走样技术在计算机图形仿真中的应用[J]. 计算机仿真, 2005, 22(4): 124-127.

[4] 江 修, 张焕春, 经亚枝. 三像素宽反走样直线的绘制算法研究[J]. 南京航空航天大学学报, 2003, 35(2): 148-151.

[5] Wu X. An efficient antiliasing technique [J]. Computer Graphics, 1991, 5(4): 143-152.

[6] 孙家广, 胡事民. 计算机图形学基础教程[M]. 北京:清华大学出版社, 2005. 18-21.

[7] 孔令德. 计算机图形学基础教程(Visual C++版)[M].北京: 清华大学出版社, 2008. 192-194.

[8] 孔令德. 计算机图形学实践教程(Visual C++版)[M].北京: 清华大学出版社, 2008. 388-420.

猜你喜欢

背景色走样线框
“双减”,如何确保落地实施不走样
提香:背景色也能“说话”
玩转方格
基于G-Buffer的深度学习反走样算法
线框在磁场中平动模型的九种情景剖析
随位移均匀变化的磁场中电磁感应规律的初探
唐氏综合征是因为“拷贝”走样了
不同背景色对IPS E.max双层瓷结构颜色的影响
背景色对不同配色方案树脂比色结果的影响