计算机图形学(三)_图元的属性_16_ 反走样_7_区域边界的反走样

区域边界的反走样

  直线的反走样概念也可以用于区域的边界,从而消除其锯齿形的外貌。我们可以将这种程序加加入到扫描线算法中,在生成区域时来平滑区域轮廓。假如系统具有允许像素重定位的功能,那么就可以将边界像素位置调整到更靠近区域边界来实现对区域边界的平滑处理。其他方法则是根据边界内像素区域的百分比来调整每个边界位置上的像素亮度。在图4.53中,位置(x,y)上的像素有大约一半的区域在多边形边界内。因此,该位置处的亮度将调整到其设定值的一半。沿边界的下一个位置(x+1,y+1)的亮度则调整到约为其设定值的1/3。以像素区域覆盖率为基础,类似的调整方法可以应用于沿边界的其他亮度值。

这里写图片描述

  过取样方法可通过确定区域边界内的子像素数目来实现。图4.54中的一个像素被分割成4个子区域,原4 x 4的像素网格则变成为8 x 8的网格。现在要处理的穿过该网格的扫描线是8条,而不是4条。图4.55给出了这个网格中覆盖对象边界的像素区域之一,沿着扫描线,可以确定子像素区域的3个区域在边界内。因此,将像素亮度设置为其最大值的75%。
这里写图片描述
这里写图片描述

  另一种由Pitteway和Watkinson提出的确定边界内像素区域百分比的方法,是以中点算法为基础的。这个算法通过测试两像素间的中间位置,确定哪个像素更接近于直线而选择沿扫描线的下一个像素。类似于Bresenham算法,可以建立决策参数p,其符号可以表明下一面的两个候选像素中哪一个更接近于直线。通过对p形式的略微修改,就可以得到被对象覆盖的当前像素区域的百分比。
  我们首先考虑斜率m在0到1之一间的画线算法。在图4.56中,线路径显示在像素网格之上。假设已经绘制了( xk , yk )上的像素,那么最接近x = xk + 1上直线的下一个像素可能是 yk 上的像素,或是 yk +1上的像素。我们使用下列计算来确定哪个更接近直线:
这里写图片描述

  这给出了从线段上的实际y坐标到位置 yk yk +1间的中点的垂直距离。假如差为负,那么 yk 上的像素更接近直线;假如差为正,则 yk +1的像素更接近。我们可以通过加上1-m来调整这个计算,从而使它产生一个0到1之间的正数:
这里写图片描述

假如p < 1-m,则 yk 上的像素更接近;假如p > 1-m,则 yk + 1.上的像素更接近。参数p也能计算区域覆盖当前像素的实际量。对于图4.57中( xk , yk )处的像素,像素的内部有一个区域可计算为:
这里写图片描述

这个对( xk , yk )上的覆盖区域表达式,与等式中决策参数P的表达式是相同的。因此,通过计算p值来确定沿多边形边界的下一个位置,也可以确定对当前像素覆盖区域的百分比。
这里写图片描述
这里写图片描述

  我们可将这个算法一般化,以适应具有负斜率和斜率大于1的直线段。对决策参数p的这种计算可以加入到中点线算法中,从而沿多边形的边对像素位置进行定位,且并行地调整沿边界线的像素亮度。同样,我们可以调整计算,将像素坐标指向左下角并保持区域比例。
  在多边形顶点处和对于很小的多边形(如图4.58所示),有多于一条边通过像素区域。对于这些情况,我们需要处理所有通过像素的边并确定正确的内部区域来修改Pitteway-Watkinson算法。
   对直线的反走样所讨论的过滤技术也能应用于区域边。同样,各种反走样方法可用于多边形区域或具有曲线边界的区域。边界方程则用来估计像素区域与将要显示的区域的覆盖量。而相关性技术则用于沿扫描线之间以简化计算。

这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值