图形学知识点总结

计算机图形学基本概念,应用,前沿技术。

 

1. ISO 图形学的定义:应用计算机技术进行图形 的生成、处理和输出。

研究对象 —— 图形。

2.图形:是从客观世界物体中抽象出来的带有颜色及形状信息的图和形。

图形的构成要素:

几何要素:点、线、面、体等。

非几何要素:描述对象的颜色、材质等。

图形的表示方法:点阵法:枚举出图形中所有点;参数法:由图形的形状参数(方程表达式的系数,线段端点坐标)和属性参数(颜色)表示  

图形与图像

图像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. 非加权区域采样(对于“不覆盖像素点的中点就不显示”这个假设进行调整):

 

根据覆盖像素的面积设置直线段上像素灰度,覆盖的少,亮度低

       步骤: ①将直线段看作具有一定宽度的狭长矩形;

②当直线段与某像素有交时,求出两者相交区域的面积;

③根据相交区域的面积,确定该像素的灰度(亮度、颜色)值

 

计算盖像素的面积(相交面积)的方法:

1 用斜率和长度算相交面积。 2. 像素分割成 n 个更小的子像素,看线段内有多少个子像素中心点,记为k,k/n就是相交面积。

 

  1. 加权区域采样:考虑位置,离像素中心近的子像素权值大。

计算方法:离散的方法:

 

 

计算所有中心落在直线段内的子像素对原像素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

图形学知识点总结_第1张图片

 

 

平移和旋转变换具有可加性,放缩变换具有可乘性

  1. 逆变换:

图形学知识点总结_第2张图片

 

 

复合变换:先计算变换矩阵,再计算坐标。先作用的放在连乘的右端,后作用的放在连 乘的左端。

镜像(对称reflection):

图形学知识点总结_第3张图片

 

错切(shear), 仿射变换(affine transformation)

 

若三维几何变换剪裁:则(x,y,z)-> (x,y,z,h) 用到右手坐标系

 

三维几何变换的一般形式:

(1)前三行和前三列对应旋转和放缩变换 (2)第四列的前三个元素对应平移变换 (3)第四行前三个元素对应投影变换

 

投影:降维度显示
布尔运算:

 

二维观察

 

两口定义:

裁剪窗口(Clipping Window) :需要显示的场景区域。用户坐标系定义

视口(Viewport):指显示设备上用来显示图形的区域。屏幕坐标系定义

二者作用:

改变窗口:影响显示对象的多少

改变视口:改变视口尺寸实现图形对象的缩放。改变视口位置实现在屏幕不同位置看到场景。

 

二维观察变换:窗口到视区的变换。

 

图形学知识点总结_第4张图片

 

 

剪裁(clip):(第7个)

  1. 先扫描转换后裁剪:设备坐标系中,变成点阵表示:然后判断像素是否落在视区里。算法简单,速度慢
  2. 裁剪后扫描转换:世界坐标系,对参数表示图形剪裁。节约计算时间,复杂。

 

裁剪的基础:图元关于窗口内外关系的判别、图元与窗口的求交。

A 点裁剪:点 (x, y) 在窗口内的充分必要条件是, X 属于 XMIN,XMAX , Y 同理

B 直线裁剪

二.点剪裁

三.直线求交点:

法1. 直接求

 

判断端点和窗口位置关系

(待裁剪线段和窗口的关系若为线段完全可见、显然不可见,可直接处理;若线段至少有一端点在窗口之外,但非:不可见,需求交。)

显然不可见:求线段与窗口边延长线的交点,这个交点将线段分为两段,其中一段显然不可见,丢弃

判断显然可见、显然不可见:

 

 

 

法2.编码(Cohen-Sutherland )算法: 通过延长四个边,分成9块,然后给每块编码,用来判断线段是否显然可不可见、然后求交点,再判断,这么迭代。

 

 

法3.中心分割法:

  1. 从P0点出发找出距P0最近的可见点A
  2. 从P1点出发找出距P1最近的可见点B
  3. AB为可见部分

法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 在设备坐标系中,平移使窗口与视区重合

图形学知识点总结_第5张图片

 

三维观察

1. 投影(8章)

2. 三维形体的表示(11章)

3. 消除隐藏面与隐藏线(9章)

4. 建立光照明模型、真实感图形绘制方法(10章)

 

 

  • 在二维屏幕上如何显示三维图形

两大方法:u 投影(降维)  u 三维显示设备(还没普及

         三维成像基本步骤: 

  1. 选定投影projection类型 —— 平行、透视
    1. 平行:投影中心与投影平面之间的距离为无限(投影线是平行的)
      1. 正投影、侧投影(投影线不垂直于投影平面)
    2. 透视:投影中心与投影平面之间的距离为有限

灭点vanishing point:不平行于投影平面的平行线,经过透视投影之后收敛 于一点,称为灭点。

主灭点:平行于坐标轴的平行线的灭点。 n 一点透视:1个灭点 n 两点透视:2个灭点 n 三点透视:3个灭点

                            视见体 : 视见体是三维裁剪窗口,确定可见空间

                            图形学知识点总结_第6张图片

  1. 设置投影参数—— 拍摄方向、距离等

(3)三维裁剪 ——取景

(4)投影和显示——成像

流程:

二、如何表示三维物体?

图形学知识点总结_第7张图片

        图形学知识点总结_第8张图片

 

模型变换 Modeling Transformation)

每个物体有自己的坐标系。有可能有多个物体,要从模型坐标系变成世界坐标系。

观察变换: 从世界坐标系到观察坐标系的变换

 

先投影后裁剪:

先剪裁后投影:

三维裁剪:
         涉及到多边形裁剪:逐面裁剪算法

·关于直线

  1. Cohen_Sutherland编码算法,从9块推广到27块
  2. Linang_Barskey算法

·关于面的:

  1. 多边形裁剪

 

三、如何反映遮挡关系?

消除隐藏面与隐藏线

  1. 消隐定义:消除隐藏线和隐藏面,保持遮挡关系
  2. 消隐分类:消除隐藏面:消除不可见面;消除隐藏线:消除不可见线
  3. 算法:    
    1. 面消隐分类:

1. 投影窗口内的像素为处理单元:对窗口内的每一个像素遍历,确定距视点最近的物体,以该物体表面的颜色来显示像素

2. 场景中的物体为处理单元:场景中的每一个物体,将其与场景中的其它物体比较,确定其表面的可见部分并显示。

       b) 

4.      提高消隐算法效率:

一、利用连贯性

二、透视投影转换为平行投影

三、包围盒技术:包围一个复杂性体的简单形体

四、背面剔除

五、空间分割技术

六、物体的分层表示

         5.      画家算法:先画远景后画近景

         6.      Z 缓冲器算法

 

6  Z-Buffer算法(深度缓冲 depth-buffer)

一种隐藏面消除算法

  1. 组成:
    1. n 帧缓冲器 -- 保存各像素颜色值
    2. n Z 缓冲器 -- 保存各像素处物体深度值

(Z 缓冲器中的单元与帧缓冲器中的单元一一对应)

  1. 算法

先将 Z 缓冲器中各单元的初始化为最小值

多边形投影时,当要改变某个像素的颜色值时,首先检查当前多边形的深度值是否大于该像素原来的深度值

A:如果大于,说明当前多边形更靠近观察点, 用它的颜色替换像素原来的颜色;并保存深度值

B:否则说明在此像素处,当前多边形被遮挡了,是不可见的,因此颜色值不变。

图形学知识点总结_第9张图片

 

  1. 优点:稳定,硬件容易实现;缺点:需要额外z buffer存深度值。每个像素都计算深度,计算量大。

 

·扫描线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. 均匀着色(Flat Shading)

                                     利用光照明方程计算出它的颜色。适合光源或视点在无穷远

                                     一个多边形只用计算一次光照模型。

  1. 光滑着色(Smooth Shading)
  1. 采用插值方法
    1. Gouraud(高洛德 )方法 :用多边形顶点的颜色进行插值生成中间点的颜色

(1)计算多边形的单位法向量

(2)计算多边形顶点的单位法向量(共享顶点的多边形法 向量的平均值)

(3)利用光照明方程计算顶点颜色

(4)对多边形顶点颜色进行双线性插值,获得多边形内部各点的颜色

 

双线性插值:在两个方向分别进行一次线性插值;根据待插值周围四个近邻点的位置估测待插值的位置。

 

    1. Phone(冯)方法 :对顶点的法向量进行插值计算出中间点的法向量

             (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样条曲线

 

曲线的表示形式:非参数表示和参数表示

  1. 非参数表示(显示、隐式)
  2. 参数表示(参数方程、参数表示的矢量表示)弧长参数

 

  • 参数表示的优点 (表示最简单 n 理论和应用最成熟)

n 容易确定曲线边界。由参数区间确定

n 表示形式不变性。不依赖于坐标系的选取

n 表示能力强。利于控制点来控制曲线形状,如后面将要学到的Bezier曲线

用到的数学: 切矢量、法矢量(与切矢量垂直)、曲率(曲线的弯曲程度

三次Hermite曲线

Bezier曲线 贝塞尔

 

Bezier曲面

 

 

你可能感兴趣的:(知识点总结,图形学)