《图形学》光栅化(一) Rasterization 1

总概

像素(pixels):图像的基本单元。

光栅(raster):像素的阵列。

像素的矩阵:连续空间的离散采样。

矩阵的每个元素是片元,片元赋予了颜色(一个pixel中通过红绿蓝混合成各种颜色)就是像素。

光栅化就是找到所有被几何原型所占据的所有像素点(The process of finding all the pixels in an image that are occupied by a geometric primitive is called rasterization)。很通俗的l理解就是几何图形在光栅像素上的表达,更通俗地讲就是将一些图形画到屏幕在图形学中把其抽象成一个二维数组,二维数组的每个元素就是一个像素//*屏幕空间*//)上的过程。

 

geometric primitive :最基本的就是三角形因为计算机图形学本质是把多边形投影到成像平面并对成像平面绘画,而三个不共线的点可以确定一个面,任何其他的多边形都可以拆分为三角形。另外,三角形可以很好判断一个点是在三角形的内部还是外部,在光栅化过程中,利用这个可以有效判断像素是否在多边形内。

比如说利用向量的叉积,以下三角形(首位相连的向量)中判断p点是在三角形内部还是外部,向量AB、BC、CA分别去叉乘向量AP、BP、CP,三个的结果方向都是向上,那么这个点就一定是在三角形的内部。

光栅化过程

将几何图像转换成像素,几何离散化。

像这里的栅格中每个pixel是不可能一边不上色一边上色的,这里面涉及到了一个关于如何判断该pixel是否要上色的算法,目前比较常见的算法就是LEE(Linear Expression Evaluation)
Scan Line

通过上述向量叉乘的方法也可以判断某个像素点是否在三角形内。将这么一个屏幕空间抽象成二维数组,对每一个像素进行遍历,便可完成这个过程。

算法优化问题:如果通过上述要对每一个像素点都遍历的话,而且整个屏幕空间太大、图像太小,那么这样效率会低很多。                                                                                                   

解决方法:1.只检测包围盒(aabb)内的像素检测。通过三角形三个顶点的 x,y 的坐标从最小值到最大值选出包围盒(Bounding Box),只对包围盒内的像素中心进行检测。

 

2.只对每一行的最左或者最右的像素点进行检测。

存在的问题:走样出现抗锯齿

    上述过程之后走样错误是会出现抗锯齿的,解决这样的问题就是反走样(先模糊再走样)

    如右图走样错误

反走样:在采样之前先进行一个模糊化操作(对图像进行滤波),然后在模糊化之后的栅格化三角形的边缘的点的像素值取中间值。

此外反走样错误不止会出现抗锯齿,还有可能出现摩尔纹、车轮效应等。

 

声明**本文中出现部分图片来自闫令琪的课程ppt(GAMES101: 现代计算机图形学入门 (ucsb.edu)),和书籍‘Fundamentals of Computer Graphics, 5th Edition’(虎书)中的插图

                                         

                                    Fundamentals of Computer Graphics, 5th Edition封面

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值