计算机图形学基本概念,应用,前沿技术。
1. ISO 图形学的定义:应用计算机技术进行图形 的生成、处理和输出。
研究对象 —— 图形。
2.图形:是从客观世界物体中抽象出来的带有颜色及形状信息的图和形。
图形的构成要素:
几何要素:点、线、面、体等。
非几何要素:描述对象的颜色、材质等。
图形的表示方法:点阵法:枚举出图形中所有点;参数法:由图形的形状参数(方程表达式的系数,线段端点坐标)和属性参数(颜色)表示
3 图形与图像
图像image:由像素点组合而成。一般用二维矩阵表示,矩阵的每一点称为一个像素。
特点:颜色丰富。所占的体积很大。放大图像,点数不变。
图形:按照数学公式表达的线条构成。含有几何属性。可能用参数表示,比如线段用两个点和中间的一些参数。
特点:占空间小,放大图形,线条依然可以保持良好的光滑性。
4、计算机图形学基本研究内容
1、图形系统(硬、软、标准化)
2、基本图形生成 如何显示点、线段、多边形及圆等几何图形
3、图形的处理 几何变换(图形动起来);投影变换(如何显示三维 图形);真实感图形(光照、阴影。。。)
4、物体造型 实体表示;曲线曲面;真实感
5 研究热点:
1计算几何 :几何形体在计算机中的表示
2 DIP数字图像处理:如何对一幅连续图像采样、量化变成数字图像,对数字图像做一些处理,比如图像去噪、边缘处理。
3 模式识别:从图像中抽取一些特征和信息,从而把图像分成 预定的类别,比如指纹识别
4 计算机视觉:由计算机来代替大脑完成图像处理和解释。分析图像,提取特征。然后分类。比如机器人的视觉系统。
6 应用:
GUI图形用户界面、计算机动画、虚拟现实、科学可视化
虚拟现实:计算机技术来生成一个逼真的三维感官世界。让用户可以身临其境得,利用头盔、数据手套等和这个虚拟世界进行交互
7 图形学的研究热点
一、造型技术 (现实中客观存在的物体建模)
二、真实感图形绘制技术:光照模型,阴影,映射,纹理算法
三、人机交互技术 :机器可以更高的理解
四、与计算机网络技术的紧密结合:远程医疗
基本概念
(1) 像素(Pixel: Picture Cell):构成屏幕(图像)的最小元素
(2) 分辨率(Resolution) CRT在水平或竖直方向单位长度上能识别的最大像素个数
(3) 窗口:需要显示的场景区域
(4) 视口:显示设备行用来显示图形的区域.从屏幕的不同位置观察场景的不同部分。
(5) 裁剪(Clip):从场景中确定位于窗口内的图形
第二章
(硬件和软件,其中硬件:)
硬件组成:
n 帧缓冲存储器:存储屏幕上像素的颜色值
n 视频控制器:将帧缓存里得数据扫描生成图形,射到屏幕里
n 显示处理器:处理图形,比如几何变换、剪裁
n 显示器:CRT、液晶
有的还有GPU: 图形处理器。做图像和图形相关运算工作的微处理器,减轻了CPU的负担
显示器:
CRT:电子枪、聚焦系统、 加速电极、偏转系统、 荧光屏
液晶显示器:
https://www.docin.com/p-1520255600.html
图形的扫描转换
1. 随机扫描(random scan) 电子束可以任意移动。画线设备
2. 光栅扫描(raster scan) 电子束按固定扫描线和次序进行。画点设备
-------------------------------------------------三------------------------------------------
图形的显示过程:
图形显示过程:原始数据进行计算,放到帧缓存里,(形成点阵数据),再通过视频控制器扫描生成图形,射到屏幕里。
生成线段方法:直线方程法、DDA算法(y相应的增加)、中点算法(判断+0.5在直线上还是下)
生成圆的方法:(由八分之一圆弧上的点确定整个圆得点。)
列出圆得表达式,判断每个点到圆心得距离小于R还是等于R
等面积正多边形迫近法
多边形表示方法:顶点表示,点阵表示(会失去很多重要的几何信息,占地)
------------------------------------上色-变换-----------------------------------------------
扫描转换与区域填充(填充颜色的方法)
扫描转换:顶点表示到点阵表示的转换,给多边形包围的区域着色。(区域表示方法变了)
填充(种子填充):将指定的颜色从种子点开始扩展到整个区域。递归的方法实现(种子点的上下左右四个像素递归判断)(区域表示方法没变)
扫描转换的三种方法:
1. 确定哪些像素位于填充图元的内部 :逐点(射线法)判断,或者扫描线(一条条线进行扫描,计算多边形的相交区间) 或者边缘填充(对于每一条扫描线和每条多边形边的交点 (x1,y1) ,将该扫描线上交点右方的所有像素取补)
2. 用指定颜色绘制这些像素
逐点判断多边形凹凸:图形在边的延长线同一侧:凸的。或者用向量积的方法
判断点在多边形的内外:
u 射线法 :从待判别点 发出射线与多边形交点个数,偶数:外。奇数:内
u 累计角度法:
u 编码法*
扫描转换多边形
1. 逐点判断:
2. 扫描线:(x扫描线)
计算扫描线与多边形的相交区间,交点排序,两两配对,然后用要求的颜色显示这些像素。
问题:交点配对时顶点不好选择。顶点部分难判断:
解决:若共享顶点的两条边分别落在扫描线的两边,交点算一个;若在同一边,交点算0个或两个。
3. 边缘填充:(以边为中心的边缘填充算法) M为填充黑色 第一步:将绘图窗口的背景色置为 M拔 ; 第二步:对多边形的每一条非水平边做:从该边上的每个像 素开始向右求余
适合用于具有帧缓存的图形系统。算法简单,但是如果图像复杂,每次像素多次访问,输入输出的量比扫描线算法大。
扫描转换扇形区域:
与多边形类似:对每条扫描线,首先计算与扇形区域边 界的交点,交点经排序后,再用指定颜色绘制绘制配对 交点间的像素。
区域填充(种子填充)
将指定的颜色从种子点开始扩展到整个区域
缺点:有些像素需要重复判断,降低算法效率 n 栈结构占空间 n 递归执行,算法简单,但效率不高
多边形扫描转换与区域填充方法比较
1. 基本思想不同 u 前者:顶点表示转换成点阵表示 u 后者:只改变区域内填充颜色,没有改变表示方法
2. 对边界的要求不同 u 前者:扫描线与多边形边界交点个数为偶数 u 后者:区域封闭,防止递归填充跨界
3. 基本的条件不同 u 前者:从边界顶点信息出发 u 后者:从区域内种子点出发
用图像填充区域:
1. 均匀着色方法:将图元内部像素置成同一颜色
2. 位图不透明:若像素对应的位图单元为1,则以前景色显示该 像素;若为0,则以背景色显示该像素;
3. 位图透明:若像素对应的位图单元为1,则以前景色显示该像 素;若为0,则不做任何处理。
4. 像素图填充:以像素对应的像素图单元的颜色值显示该像素
方法1:建立整个绘图空间与图像空间的1-1映射
方法2:建立区域局部坐标空间与图像空间的1-1映射
字符的表示与输出:
点阵字体: 每一个字符用位图表示。这个位是1,表示这个笔画经过此处,0表示不经过此处
矢量字体:笔画用曲线(参数)表示
二维光栅图形的走样与反走样
走样的现象和原因:
走样定义:用离散的像素表示连续的图形而引起的失真
光栅图像走样现象:
1. 阶梯(锯齿)状边界 -> 像素间距大
2. 图形细节失真 -> 比较细的矩阵会消失:因为像素是最小单位,没有更小的了
3. 狭小图形遗失:动画序列中时隐时现,产生闪烁 -> 图形比较小,运动的时候没有覆盖像素的中心,所以不显示。
反走样的方法:antialiasing
定义:在图形显示过程中,用于减少或消除走样(混淆)现象的方法
方法: 1. 提高分辨率方法 2. 非加权区域采样 3. 加权区域采样
根据覆盖像素的面积设置直线段上像素灰度,覆盖的少,亮度低
步骤: ①将直线段看作具有一定宽度的狭长矩形;
②当直线段与某像素有交时,求出两者相交区域的面积;
③根据相交区域的面积,确定该像素的灰度(亮度、颜色)值
计算盖像素的面积(相交面积)的方法:
1 用斜率和长度算相交面积。 2. 像素分割成 n 个更小的子像素,看线段内有多少个子像素中心点,记为k,k/n就是相交面积。
计算方法:离散的方法:
计算所有中心落在直线段内的子像素对原像素A亮度贡献之和(高斯函数表示) 。该值乘以像素A的最大灰度(颜色)值即为像素A的显示灰度(颜色)值
图形的几何变换:(平移、旋转、放缩)
用齐次坐标定义:x维度变成x+1维度。比如点(x,y) 的标准齐次坐标为 (x,y,1). 齐次坐标的目的:使得这 3 种基本变换能很容易地结合在一起,形成各种复杂的组合变换。
1 用齐次坐标定义
2 然后乘相应的矩阵。
第三章二维图形的基本操作和图形处理算法
几何变换:
基本操作:图形的平移、缩放、旋转、镜像、错切
二维图形的裁剪,投影,多边形填充以及二维图形的布尔运算(并、交、差)
齐次:每一维次数都是1,如(x,y,z);(x,y,1)就不是。
齐次坐标的原因,齐次的优点:
几何变换时 运算矩阵的 形式统一(因此便于合成,连续变换时可以先得到变换矩阵;便于硬件实现,只用矩阵乘法)
齐次坐标定义;(Xh, Yh ,h) Xh = hx, Yh = hy, h ¹ 0
平移和旋转变换具有可加性,放缩变换具有可乘性
复合变换:先计算变换矩阵,再计算坐标。先作用的放在连乘的右端,后作用的放在连 乘的左端。
镜像(对称reflection):
错切(shear), 仿射变换(affine transformation)
若三维几何变换剪裁:则(x,y,z)-> (x,y,z,h) 用到右手坐标系
三维几何变换的一般形式:
(1)前三行和前三列对应旋转和放缩变换 (2)第四列的前三个元素对应平移变换 (3)第四行前三个元素对应投影变换
投影:降维度显示
布尔运算:
二维观察
两口定义:
裁剪窗口(Clipping Window) :需要显示的场景区域。用户坐标系定义
视口(Viewport):指显示设备上用来显示图形的区域。屏幕坐标系定义
二者作用:
改变窗口:影响显示对象的多少
改变视口:改变视口尺寸实现图形对象的缩放。改变视口位置实现在屏幕不同位置看到场景。
二维观察变换:窗口到视区的变换。
剪裁(clip):(第7个)
裁剪的基础:图元关于窗口内外关系的判别、图元与窗口的求交。
A 点裁剪:点 (x, y) 在窗口内的充分必要条件是, X 属于 XMIN,XMAX , Y 同理
B 直线裁剪
二.点剪裁
三.直线求交点:
法1. 直接求
判断端点和窗口位置关系
(待裁剪线段和窗口的关系若为线段完全可见、显然不可见,可直接处理;若线段至少有一端点在窗口之外,但非:不可见,需求交。)
显然不可见:求线段与窗口边延长线的交点,这个交点将线段分为两段,其中一段显然不可见,丢弃
判断显然可见、显然不可见:
法2.编码(Cohen-Sutherland )算法: 通过延长四个边,分成9块,然后给每块编码,用来判断线段是否显然可不可见、然后求交点,再判断,这么迭代。
法3.中心分割法:
法4.Liang-Barsky裁剪算法: 将二维裁剪化为一维裁剪,向X(或Y)方向投影以决定可见线段
C 多边形裁剪:
不能用线段剪裁。Why? : 剪裁后,多边形的边界不再封闭,需要用窗口边界来封闭。
Sutherland-Hodgman 算法:SH算法、逐边剪裁。
基本思想:流水线的方式,每次用窗口的一条边裁剪凸多边形。
步骤:将顶点序列P1P2…Pn作为输入
依次对窗口的每个边做下列处理:
输入顶点序列、依次对顶点序列中相邻顶点构成的边PiPi+1进行剪裁处理、输出剪裁后的顶点序列。
D 字符裁剪
A 以串为单位的裁剪:把整个字符串作为整体来处理。或全部显示,或全不显示。
B 字符裁剪:每 1 个字符堪称一个矩形的字符框,这个框完全落在窗口之内时显示
C 矢量裁剪:把每个字符都看作是一些短直线 ( 笔划 ) 的组合,每一笔划都进行直线的裁剪。
窗口到视区的变换:
1 平移:在世界坐标系中,平移窗口使(xmin, ymin)移动至坐标原点,变换为T (-xmin, -ymin)
2 放缩:使窗口的大小与视区相等,变换为S(Eu/Ex, Ev/Ey)
3 在设备坐标系中,平移使窗口与视区重合
三维观察
1. 投影(8章)
2. 三维形体的表示(11章)
3. 消除隐藏面与隐藏线(9章)
4. 建立光照明模型、真实感图形绘制方法(10章)
两大方法:u 投影(降维) u 三维显示设备(还没普及
三维成像基本步骤:
灭点vanishing point:不平行于投影平面的平行线,经过透视投影之后收敛 于一点,称为灭点。
主灭点:平行于坐标轴的平行线的灭点。 n 一点透视:1个灭点 n 两点透视:2个灭点 n 三点透视:3个灭点
视见体 : 视见体是三维裁剪窗口,确定可见空间
(3)三维裁剪 ——取景
(4)投影和显示——成像
流程:
二、如何表示三维物体?
模型变换 Modeling Transformation)
每个物体有自己的坐标系。有可能有多个物体,要从模型坐标系变成世界坐标系。
观察变换: 从世界坐标系到观察坐标系的变换
先投影后裁剪:
先剪裁后投影:
三维裁剪:
涉及到多边形裁剪:逐面裁剪算法
·关于直线
·关于面的:
三、如何反映遮挡关系?
消除隐藏面与隐藏线
1. 投影窗口内的像素为处理单元:对窗口内的每一个像素遍历,确定距视点最近的物体,以该物体表面的颜色来显示像素
2. 场景中的物体为处理单元:场景中的每一个物体,将其与场景中的其它物体比较,确定其表面的可见部分并显示。
b)
4. 提高消隐算法效率:
一、利用连贯性
二、透视投影转换为平行投影
三、包围盒技术:包围一个复杂性体的简单形体
四、背面剔除
五、空间分割技术
六、物体的分层表示
5. 画家算法:先画远景后画近景
6. Z 缓冲器算法
6 Z-Buffer算法(深度缓冲 depth-buffer)
一种隐藏面消除算法
(Z 缓冲器中的单元与帧缓冲器中的单元一一对应)
先将 Z 缓冲器中各单元的初始化为最小值
多边形投影时,当要改变某个像素的颜色值时,首先检查当前多边形的深度值是否大于该像素原来的深度值
A:如果大于,说明当前多边形更靠近观察点, 用它的颜色替换像素原来的颜色;并保存深度值
B:否则说明在此像素处,当前多边形被遮挡了,是不可见的,因此颜色值不变。
·扫描线z buffer:
解决的问题:Z 缓冲器算法中所需要的 Z 缓冲器容量较大
将整个绘图区域分割成若干个小区域,这样 Z 缓冲器只用存一个区域中的像素而不是所有像素。把小区域取成扫描线。
步骤:找出与当前扫描线相关的多边形,以及每个多边形与该扫描线的相交线段上的各像素,计算深度,并与 Z-buffer中的值比较,找出各像素处可见平面,然后把颜色写到帧缓存。
四、如何产生真实感图形
重点掌握光照方程、基本纹理映射及多边形绘制
n 何谓真实感图形
真实感图形绘制主要内容: 光照、纹理、阴影
10.1 简单光照模型
建立数学模型模拟三种不同类型的光:环境光、漫反射光、镜面反射光
1. 环境光(Ambient light) 在物体和周围环境之间多次反射后,最终达到平衡时的一 种光,又称为背景光。
光强(度):分布均匀Ia
反射系数:表面性质有关K
Ie =Ka* Ia
2. 漫反射(Diffuse Reflection)(Lambert)
粗糙不平引起的,均匀地向各个方向传播,与视点无关。分布均匀。
3. 镜面反射光和冯(Phong)反射模型
高光(high light):光滑物体表面在点光源的照射下形成一 块特别亮的区域
镜面反射(Specular Reflection) n 物体表面对入射光的反射
包括反射系数、夹角、镜面高光系数
局部光照明模型:仅处理光源直接照射物体表面的光照明模型。
10.2 多边形绘制方法
颜色插值和法向插值
多边形上各点处的颜色一样:入射光矢量不一样,颜色也不同
绘制方法:
利用光照明方程计算出它的颜色。适合光源或视点在无穷远
一个多边形只用计算一次光照模型。
(1)计算多边形的单位法向量
(2)计算多边形顶点的单位法向量(共享顶点的多边形法 向量的平均值)
(3)利用光照明方程计算顶点颜色
(4)对多边形顶点颜色进行双线性插值,获得多边形内部各点的颜色
双线性插值:在两个方向分别进行一次线性插值;根据待插值周围四个近邻点的位置估测待插值的位置。
(1)计算多边形单位法向量
(2)计算多边形顶点单位法向量 (以上两步同Gouraud着色方法)
(3)对多边形顶点法向量进行双线性插值,获得内部各点的法向量
(4)利用光照明方程计算多边形内部各点颜色
均匀着色、Gouraud 和Phong方法比较
(1)均匀着色(Flat)块状现象明显,计算开销小
(2) Gouraud方法光变化过渡不连续,计算开销较大
(3)Phong方法光变化过渡连续,计算开销大
10.3 纹理texture映射
纹理:是物体表面的细小结构,它可以是光滑表面的花纹、图案,即颜色纹理(2D)或三维结构 或粗糙表面(几何纹理)
纹理来源 :数字图像,用二维数组表示 :
数学公式定义得纹理函数
纹理映射(Texture Mapping):将一块纹理图案映射到物体表面上,产生物体表面的细节
1. 确定纹理与物体表面的对应关系
2. 用表面上点对应的纹素值代替该点的颜色值(或漫反射系数)
圆柱映射、球的映射、圆环映射等映射关系。
10.4 阴影shadow
与消隐算法本质上一致
光源对位于阴影中的点的亮度(颜色)没有贡献,修改光照模型
基于Z缓冲消隐的实现算法
步骤:
(1)将图形变换到以光源为原点的 坐标系,利用Z缓冲器消隐算法 按光线方向对图形消隐,把距 光源最近的物体表面上点的深度值保存在Z缓冲器中
(2)利用Z缓冲器消隐算法按视线方向对图形消隐,将得到的每 个可见点变换到第 i 个光源的坐标系中,若它在光源坐标系中 的深度值小于阴影缓冲器中相应单元的值,则该可见点位于阴 影中(Si =0),否则( Si =1),再用光照模型计算颜色
算法简单,但存储量大(每个光源需要1个Z缓冲器)
n 人们观察现实世界产生的真实感来源于
纹理、光照、阴影、遮挡
n 解决方法----建立光照明模型、研发真实感图形绘制方法
曲线与曲面
曲线的表示方法 ;掌握Bezier和 B样条曲线
曲线的表示形式:非参数表示和参数表示
n 容易确定曲线边界。由参数区间确定
n 表示形式不变性。不依赖于坐标系的选取
n 表示能力强。利于控制点来控制曲线形状,如后面将要学到的Bezier曲线
用到的数学: 切矢量、法矢量(与切矢量垂直)、曲率(曲线的弯曲程度)
三次Hermite曲线
Bezier曲线 贝塞尔
Bezier曲面