【图形图像处理】之栅格化介绍
栅格化是将矢量图形格式表示的图像转换成位图以用于显示器或者打印机输出的过程。
栅(shan)格化,是 Photoshop 中的一个专业术语,栅格即像素,栅格化即将矢量图形转化为位图(栅格图像)。最基础的栅格化算法将多边形表示的三维场景渲染到二维表面。
综述
总体上来说,栅格化这个术语可以用于任何将矢量图形转换成位图的过程。
在通常的应用中,这个术语用来表示在计算机上显示三维形状的流行渲染算法。栅格化是生成实时三维计算机图形最流行的算法。实时应用需要立即响应用户输入,并且通常需要至少每秒 24 帧的速率。
与辐射着色、光线跟踪等其它渲染技术不同,栅格化的速度非常快,但是由于它不是根据光传输的物理规律进行处理的,所以无法正确模拟许多复杂真实光照环境,只能达到足够欺骗人类眼睛的程度。
基本实现方法
最基础的栅格化算法将多边形表示的三维场景渲染到二维表面。多边形由三角形的集合表示,三角形由三维空间中的三个顶点表示。在最简单的实现形式中,栅格化工具将顶点数据映射到观察者显示器上对应的二维坐标点,然后对变换出的二维三角形进行合适的填充。
变换
通常使用矩阵运算进行变换,另外也可以用四元数运算但那不是本文讨论的范围。在三维顶点中添加一个齐次变量成为四维定点然后左乘一个 4 x 4 的变换矩阵,通过这种方法就可以对三维顶点进行变换。主要的变换有平移、缩放、旋转以及投射 。
平移变换是点在三维空间中从一点移动到固定偏移的另外一点的过程,平移可以用下面的矩阵表示:X、Y 与 Z 分别是三维空间中的偏移。
缩放变换通过在顶点位置上乘以一个标量值实现,这样就将顶点相对于原点的位置进行缩放。缩放变换可以用下面的矩阵表示:其中 X、Y 与 Z 是三维坐标中每一维所乘的数值。通过使用不同的 X、Y、Z 值可以实现不对称缩放。
旋转变换是绕着一个轴线对每点进行旋转。
绕 X 轴旋转:
绕 Y 轴旋转:
绕 Z 轴旋转:
其中 θ 表示旋转角度。
逻辑上一系列的平移、缩放、旋转可以表示绝大多数的变换。通常栅格化系统使用变换栈将输入顶点的数据流变换到指定位置,变换栈是保存矩阵的标准堆栈,输入顶点与矩阵栈相乘进行变换。
为了说明如何使用变换栈,我们假设有一个简单场景中只有一个人的模型。这个人在一个特定位置面向任意一个角度竖直站立,头转向另外一个方向。使用一系列的顶点与模型用来表示这个人物。首先,将一个变换矩阵压到堆栈中将模型移到正确的位置;其次,将缩放矩阵压到堆栈中将模型缩放到正确的尺寸;然后,表示身体的顶点数据流送到栅格化工具中;由于头部面向另外一个方向,将旋转矩阵从堆栈弹出,压入一个绕 Y 轴旋转一个不同角度的旋转矩阵;最后,表示头部的顶点数据流送到栅格化工具。
在所有点都已经变换到相对于观察者的合适三维空间位置之后,就需要将它们变换到二维空间了。最简单的投影方法正投影简单地从变换的三维顶点中扔掉 Z 分量。正投影的特点是三维空间中的平行线在二维表示中仍然平行。但是,真实世界中的图像都是透视图像,离观察者较远的点之间的距离看起来要比较近点之间的距离近,这些点都要进行透视投影变换 。
从概念上来讲就是将透视体转变成正视体。透视体是平截头体,即被截去头部的金字塔体。正视体是一个矩形盒,其中远近两个观察面都与图像平面平行 。
透视投影变换可以用下面的矩阵表示:
其中 F 与 N 分别是观察面的远近距离。四个结果向量是一个齐次变量不是 1 的向量。对向量进行齐次变换,或者乘以齐次变量的逆,齐次变量变为单位矩阵,这就是最终二维位置的 x 与 y 坐标。
裁剪
一旦三角形顶点转换到正确的二维位置之后,这些位置可能位于观察窗口之外,也可能位于屏幕之内。裁剪就是对三角形进行处理以适合显示区域的过程。
扫描变换
传统的栅格化过程的最后一步就是填充图像平面中的二维三角形,这个过程就是扫描变换。
第一个需要考虑的问题就是是否需要绘制给定的像素。一个需要渲染的像素必须位于三角形内部、必须未被裁掉,并且必须未被其它像素遮挡。有许多算法可以用于在三角形内进行填充,其中最流行的方法是扫描线算法。
加速技术
为了在任何栅格化引擎中获得最大的性能,只能往渲染工具中发送最少数量的多边形。人们已经开发出了一些加速技术以剔除无法看到的物体。
后向剔除
空间数据结构
许多先进的技术使用数据结构提出观察物体之外的物体或者被其它物体遮挡的物体,最为常用的数据结构有二元空间分割、八叉树以及单元和入口裁剪。
改进方法
尽管基本的栅格化过程已经出现了数十年,许多当今的应用仍然在优化、增加栅格化渲染引擎的应用范围。
纹理映射
环境映射
凸凹纹理映射
凸凹纹理映射是改变像素深度而不是颜色的另外一种纹理映射形式。尤其是与最新的阴影工具一起使用的时候,凸凹纹理映射使得表面显现出与光照有关的凸凹不平,从而大幅度地提高真实感。
细节层次
阴影
传统栅格化过程的光照计算没有考虑物体遮挡的因素。阴影图与阴影体是当今两种生成阴影的普通技术。
来源:百度百科(科普中国)https://baike.baidu.com/item/%E6%A0%85%E6%A0%BC%E5%8C%96/1180810?fr=aladdin
【图形图像处理】之栅格化介绍相关推荐
- 3D图形图像处理软件HOOPS介绍及下载
HOOPS 3D Application Framework(以下简称HOOPS)是建立在OpenGL.Direct3D等图形编程接口之上的更高级别的应用程序框架.不仅为您提供强大的图形功能,还内嵌了 ...
- ImageGear for .NET扫描打印等图形图像处理控件介绍使用手册
ImageGear for .NET是一款图形图像处理控件,具有扫描,压缩,浏览.添加注释,打印,图像编辑,OCR以及PDF和矢量图像支持,使开发人员可以快速地开发出图像处理程序,可用于.NET Fr ...
- python image.open 参数作用_Python图形图像处理库的介绍之Image模块 - Django's blog
http://onlypython.group.iteye.com/group/wiki/1372-python-graphics-image-processing-library-introduce ...
- OpenCV-Python图形图像处理:自用的一些工具函数功能及调用语法介绍
☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一.引言 为了支持进行图像处理测试,老猿将一些经常需要使用到的功能做成了函数放到了公用模块 ...
- Android移动开发--对图形图像处理的介绍与应用
前言 随着移动设备的不断普及与发展,相关的软件开发技术也越来越受到人们所重视.Android作为全球最受欢迎的移动智能终端平台.图形图像处理技术在Android中非常重要,特别是在开发益智类游戏或者2 ...
- Android/Linux 子系统Graphics图形栈入门普法介绍
Android/Linux 子系统Graphics图形栈入门普法介绍 写在最前面 由于工作原因,最近在公司做了一个关于Android/Linux 子系统Graphics图形栈入门相关知识的 ...
- 图形图像处理-之-高质量的快速的图像缩放 中篇 二次线性插值和三次卷积插值
from:http://blog.csdn.net/housisong/article/details/1452249 图形图像处理-之-高质量的快速的图像缩放 中篇 二次线性插值和三次卷积插值 ...
- 最佳开源应用程序:图形/图像处理软件
在前面一系列文章中,我们介绍了开源的CAD软件.项目管理软件.BI商业智能软件和视频处理软件等,我们这里就将介绍六种开源的图形/图像处理应用软件,它们能够满足一系列广泛的需求,并且可以在Linux.W ...
- 计算机操作员高级图形图像处理photoshopcs2试题解答,图形图像处理(Photoshop平台)Photoshop CS2试题汇编(图像制作员...
商品描述: 基本信息 书名:图形图像处理(Photoshop平台)Photoshop CS2试题汇编(图像制作员级)(2011年修订版) 原价:39.80元 作者:国家职业技能鉴定专家委员会计算机委员 ...
- 矩阵实验:图形图像处理
矩阵实验 矩阵 工程应用:图像平滑 看待矩阵的四种视角:数据.系统.变换.空间 线性变换 工程应用:图形变化 矩阵变化的推导 总结 矩阵 在线性代数里,用的最多的概念是[矩阵]. 一个具体的矩阵: 一 ...
最新文章
- unity 草 可以一棵棵种吗?_种黄瓜这几种做法是错误的,却还有好多人在犯
- Android接入支付宝支付实现
- 1、取得/etiantian文件的权限对应的数字(考试题答案系列)
- gradle是否可以编译c语言,build.gradle按条件编译与cmake配置
- 十一、 C++特性之begin()与end()
- android 免root 模拟器,真正免root的Droidwall详细使用教程
- Java多线程(十):BlockingQueue实现生产者消费者模型
- 电商设计师(美工)必备的素材网站|优图!
- [翻译] GiFHUD
- SaltStack之state.sls
- windows电脑连接公共wifi登陆界面无法弹出怎么办?
- 探秘C++之回炉重造
- 2011年北邮各组组线
- 微信公众号配置网页授权域名报错:无法访问xxx指向的web服务器或虚拟主机的目录
- jz2440---使用uboot烧录程序
- 服务器i文件夹,IBM i上http server实用技巧之一:访问IBM i多文件系统
- 查询出每个分组中的 top n 条记录
- qt入门,最简单的qt程序
- SyncNavigator(数据库同步软件)介绍以及使用说明
- 原生JS超级马里奥(第三天)