图形图像学习随笔:计算机图形学的一些基本概念

2023-10-27

本文内容摘抄于:《计算机图形学的概念

一、计算机图形学的范畴

1、图形主要分为两类,一类是基于线条信息表示的,如工程图、等高线地形图、曲面的线框图等;另一类是明暗图,也就是通常所说的真实感图形;
2、计算机图形学利用计算机建立图形所描述的场景和物体的几何表示,再用某种光照模型计算在假想的光源、纹理、材质属性下的光照明效果;
3、数字图像强调计算机内以位图(Bitmap)形式存储的灰度信息;而计算机图形则强调景物的几何属性,计算机生成的景物由几何模型(位图或向量方式)和物理属性信息共同描述;
4、三维多面体物体的图形称为几何形体(Shape)或景物,由二维图像运动产生的动态图像称为视频(Video, Movie),又将使某一图形随时间变化或运动得到的动态图形称为动画(Animation)。通常意义上的图像(Image)就是绘画、照片、影像等的总称。照片、影像等是从现实世界中直接采样获得的,但是在计算机中都被数字化了,因此称之为数字图像(Digital Image)
在这里插入图片描述
5、在计算机内以二维方式来定义和存储几何图形称为二维计算机图形学(2D CG),以三维方式来表示和存储几何形体(景物)称为三维计算机图形学(3D CG)。在计算机内定义或表示图形、物体以及场景称为图形生成或几何建模(Geometric Modeling),所定义的对象称为几何模型(GeometricModel)。图形及景物模型由点、线、面以及球、立方体、圆锥、多面体等基本数学形状描述,并在计算机内变成用它们的几何信息(坐标值)和相位信息(连接关系)表示和存储的数学模型。
6、给图形或景物模型着色,以真实感的效果表现它们的技术称为绘制(Rendering),也称渲染。特别地,称模拟光照产生阴影的技术为明暗处理(Shading)。在图形与景物的数学模型上应用绘制技术,就能将其变换成作为数字图像数据的显示模型(Display Model)。
7、计算机图形学的主要内容就是图形或景物模型的建模和绘制,并在此基础上增加了把三维图形或景物模型在二维平面上表示的投影变换、在计算机内使景物变形的几何变换和进一步使景物运动作为动态图像显示的动画等。
8、把现实世界中的景物用图像输入设备(如数码相机、扫描仪、手绘板等)作为像素的集合采集进来,并在计算机内进行适当处理,最后作为图像从图形输出设备输出。这种情况一般不属于计算机图形学的范畴,通常属于数字图像处理技术这一重要领域
在这里插入图片描述

二、计算机图形学的研究内容

  • 建模:对景物的形状和外观属性进行数学定义,并且存储在计算机内。例如,一只咖啡壶可以表示为有序的三维点的集合,这些三维点按一定的插值规则连接起来构成了咖啡壶的模型。
  • 绘制:在艺术和建筑等领域也称为渲染、绘制效果图等。即根据三维计算机模型生成带光照明暗效果的具有真实感的图像。例如,可以建立咖啡壶受光线照射的反射模型,生成十分逼真的咖啡壶图像。
  • 动画:利用图像序列产生物体运动视觉效果的一种技术。这里也要用到建模和绘制,但加入了控制时间这个关键因素。而控制时间这个因素在基本建模和绘制中一般不予考虑。
  • 其他相关技术:GUI人机交互、虚拟现实、可视化、三维扫描。

三、常见的三维模型

1.线框模型(Wire-frame Model):这种模型以线条来表现三维形体的轮廓线,没有面,不能消隐、着色和绘制真实感图形
2.表面模型(Surface Model):表面模型在线框的基础上添加了表面,可以进行消隐、着色和绘制,从而得到具有真实感的视觉效果。包括:

  • 多边形(Polygon):物体、场景或地形采用多边形,特别是平面小三角组成的网格来近似表示
  • 参数曲面片(Parametric Patch):这些曲面片是“弯曲的四边形”。这种表示方法与多边形网格相似,只是这时各个多边形的表面变成了弯曲的
  • 基于点的模型(Point-based Model):基于对景物表面的非均匀采样所得到的景物的点云表示,点云模型可以描述景物表面的三维几何与光反射性质

3.实体模型(Solid Model):常见的有构造实体几何和体素两种

  • 构造实体几何(Constructive Solid Geometry, CSG):通过将简单形状的几何图元(如正方体、球、圆柱等)进行布尔运算,可以表示很多构造出来的立体几何模型
  • 体素(Voxel):这是一种被称为空间细分(Spatial Subdivision)的技术。把几何形体(或景物)空间细分为基本的立方体,称为体素,再把每一个体素标记为空或含有几何形体(或景物)的某一部分

四、变换与投影

  • 变换(Transformation)和几何变换:变换就是对景物几何模型施加某种处理,把处理前的景物形状数据转变成处理后的景物形状数据的数学过程。例如,当表示三维景物模型时,如果想从各个方位来观察它,就需要把景物形状模型在三维空间移动、旋转甚至缩放。像这样移动、旋转、缩放三维景物模型的变换称为几何变换(Geometric Transformation)
  • 视点变换:如果想从不同的方向来表示三维景物模型,我们不是移动模型,而是让投影的方向(观察方向或视线的方向)移动、旋转。我们把这种坐标系的移动、旋转称为观察点变换或者视点变换(ViewingTransformation),有时也称为坐标变换。
  • 投影变换:把三维景物模型表示成能在图像显示器屏幕上显示的二维图像时,需要进行三维空间景物模型向二维平面的投影变换(ProjectiveTransformation)。

五、绘制与显示

  • 绘制(Rendering):指用具有现场真实感的方式来表现模型的技术,一般包含消去在三维景物投影中不可见的面(隐藏面)的处理、景物在光照时的表面明暗处理(Shading)、以及表现景物表面形状及凹凸的纹理映射(Texture Mapping)技术、光照技术——光线追踪(RayTracing)方法与辐射度(Radiosity)方法等
  • 显示:完成了三维景物建模和绘制之后,还必须将其在显示器屏幕等二维平面上呈现出来。要实现这一目的,首先要借助投影变换制作投影图。其次,在图像显示器等光栅输出设备上图形是用像素(Pixel)的集合来表示的。例如,图2.9中左图所示的三维几何形体的部分棱线及顶点的向量表示就被投影成右图的像素集合表示,即把作为向量数据记录于计算机内的棱线数据转变成像素集合表示的图像数据。这种像素数据集合也被称为数字图像。同时,为了正确地在显示器上绘制所要求的图像,还要为每个像素配上适当的颜色。在图形学里将上述处理过程称为光栅化(Rasterization)或者扫描转换(Scan Conversion)
  • 走样(Aliasing)与反走样(Antialiasing):用像素表示简单的线段(水平或垂直情况),只要保存相当于线段某一位置的像素着色(如涂黑)的信息即可。但是,对于呈某一角度倾斜的线段,如果用像素的集合来表示,就会呈现锯齿状的情况,因为像素点实际上是有一定的面积的。这种情况称为走样(Aliasing)。当然这只是计算机图形学中诸多走样现象之一。在实际显示时,并不是简单地把各个像素用黑白两色来表示,而是给予各像素色彩的明暗度及多级灰度。同时还要对斜线段进行其他处理,使其看上去更像直线。这种处理称为反走样(Antialiasing)。

六、图形流水线(Graphics Pipeline)

图形流水线的基本结构由三个主要阶段构成:应用程序、几何处理和光栅化,如图2.12(a)所示。而这三个主要阶段还可以进一步划分为若干个功能阶段,如图2.12(b)所示。换句话说,每一个阶段也可以是流水线结构。
在这里插入图片描述

  1. 应用程序阶段(Application Stage):这一阶段最重要的任务是建模,将需要绘制的几何体以及纹理数据输出到图形流水线的下一阶段。这些几何体都是绘制图元(如点、线、三角形、多边形、曲面片等)。同时,碰撞检测、纹理动画、几何变形、人机交互、键盘、鼠标、传感器等的输入检查都是这个阶段的任务。这个阶段的计算通常由CPU来执行。

  2. 几何处理阶段(Geometry Stage):这一阶段主要负责大部分多边形和顶点操作。可以将这个阶段(也是流水线)进一步划分为如图2.13所示的几个独立的功能阶段——模型与观察点变换、光照和着色、投影、裁剪、屏幕映射。很显然,几何处理阶段的计算量非常大。
    在这里插入图片描述

  3. 光栅化阶段(Rasterizer Stage):在这一阶段,根据几何处理阶段处理后的顶点、颜色和纹理坐标,将二维屏幕空间的图形顶点扫描转化成像素,即负责显示屏上每个像素的填充、纹理映射及可见性计算等工作。

需要指出的是,就目前计算机图形学技术发展水平而言,图形流水线中的应用程序阶段的功能通常是用软件方式实现的,即图形硬件加速常常位于图形流水线的后期。而几何处理和光栅化过程几乎都用硬件来实现。总的来说,软件实现和硬件实现之间经常性地交替推进,而且存在着将软件算法硬件化的趋势。近年来,图形硬件,特别是GPU(GraphicsProcessing Unit)的不断升级换代有力地支持了图形流水线这一概念,甚至连比较高级的应用程序阶段的算法都尽可能地利用硬件来实现。

七、数字图像

数字图像显示器(如CRT、LCD等)屏幕的像素示意图。屏幕上的基本可显示单位为像素,即图像元素(Picture Element, Pixel)的简称。程序通常假设像素排列成矩形阵列,称为光栅(Raster)。从左至右水平排列的一行像素的集合称为扫描线(Scan-line)。把一屏称为一帧(Frame)。需要用实际的二维屏幕坐标来表示像素的位置。计算机图形处理硬件具有存储像素信息的帧缓存(Frame Buffer)。

计算机生成的图形是数字化的。它们多数情况下是通过光栅设备展现给用户的。计算一个景物(多边形)在屏幕上的投影位置就是确定它在屏幕上的显示区域中覆盖了哪些像素。这一过程称为光栅化(Rasterization)或扫描转换(Scan Conversion)。也可以这样来理解,光栅化是对屏幕上一片连续的显示区域进行离散化采样的过程。在光栅显示器的屏幕上生成一个对象,实际上是往帧缓存的相应存储单元中写入数据。图形的光栅化过程一般分为两个步骤:首先确定像素位置(坐标);再用图形的颜色或其他属性对像素进行某种写操作,即着色。因此,光栅化就是确定屏幕空间中最佳逼近于图形的像素集合。

如果给每个像素分配一位来存储,就只能够显示黑白或单色图像。如果对每个像素分配n位来存储,就能够显示2的n次方级的灰度(Gray Scale)图像。所谓灰度级,就是给每个像素的明暗分配的等级。把像素从最暗到最亮分成等级(依照惯例最暗表示为0,最亮表示为1),用相应的整数来表示各等级。如果在单色图像显示时,各个像素分配8位来存储,则最多可以显示2的8次方= 256级灰度的单色图像。

对于彩色图像的显示,通常用红(R)、绿(G)、蓝(B)三原色混合产生新颜色。这称为RGB颜色空间。注意,红、绿、蓝三原色是以叠加方式混合的。这种加性颜色混合与另一种常见的减性颜色混合不同,后者控制着画家使用颜料进行调色以及各种画笔软件。

把整个图像用数字图像来表示或显示,实际上就是这样为每个像素分配位存储信息的。如果每一种颜色都用8位存储,256级灰度显示,各像素的颜色存储位数就是3×8=24位,能够表示2的24次方级即16兆种颜色的彩色图像。

在表示彩色数字图像时除了可以采用24位模式外,还可以采用32位模式,即附加一个8位的α(Alpha)通道,用来控制图像的透明性或者不透明性。图像可以用下面的公式来表示:c(x, y)=((r(x, y),g(x, y),b(x, y),α(x, y))

α = 1意味着像素是完全不透明的,即任何以前显示在像素上的背景颜色都被图像的颜色所重写。α = 0意味着像素是完全透明的,即任何以前显示在像素上的背景颜色将不受图像RGB颜色的影响。对于0<α<1,图像原有颜色cimage与像素当前颜色cpixel合成得到像素的最终颜色:
在这里插入图片描述

跟老猿学Python、学5G!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图形图像学习随笔:计算机图形学的一些基本概念 的相关文章

  • GDI和GDI+的应用场合思考

    GDI是微软公司的著名的二维图形引擎 GDI 则是微软公司为了提高显示效果而推出的一种新型图形引擎 下面我就我的一些使用经验阐述二者适用的应用场合 GDI基本能满足一般的绘图要求 我觉得GDI最令人诟病的是它画出来的线显示的锯齿实在比较厉害
  • OpenCV-Python图像击中击不中变换理解的关键知识点及自定义实现

    前往老猿Python博客 https blog csdn net LaoYuanPython 声明 本文为老猿自我体悟和总结 相关内容无公开资料 禁止转载和抄袭 博文传送门 老猿关于HTM变换的博文目录请见 https blog csdn
  • OPENGL学习(一)认识OPENGL和各种库

    认识OPENGL和各种库 opengl 本身是一种标准 告诉你如何一个图形库需要哪些函数 真正这些函数是不同显卡厂商提供的 glu The OpenGL Utility Library OPENGL实用库 就是对OPENGL的更高级的封装
  • wstring 未定义的标识符,include

    wstring str L abcd VS2010提示 wstring未定义的标识符 include
  • 计算机图形学 期末复习 微课版 孔令德 七、建模与消隐 期末复习

    计算机中三维物体的表示有线框模型 表面模型和实体模型3种方法 模型的数据结构 三表结构 立方体的点表 顶点 x坐标 y坐标 z坐标 P0 X0 1 Y0 0 Z0 0 P1 X1 1 Y1 0 Z1 0 P2 X2 1 Y2 1 Z2 0
  • 数字图像处理:局部直方图处理(Local Histogram Processing)

    前往老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 在前面章节 数字图像处理 直方图均衡学习总结 感悟 数字图像直方图匹配或规定化Histogram Matching Specific
  • 【OpenGL】机器人手臂的实现

    一 基本功能 实现了机器人的一只手臂 由上臂 下臂 五根手指共同组成 通过A S D F G键向上旋转 通过a s d f g键向下旋转 通过方向键left和right转向 通过up和down实现放缩 效果图如下 二 实现过程 1 实现手臂
  • OpenCV-Python图像直方图计算calcHist函数详解、示例及图形呈现

    前往老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 在前面几篇直方图相关的文章中介绍了直方图均衡 直方图匹配 局部直方图处理 基于直方图统计信息进行图像增强处理等图像处理与直方图相关的
  • 用OpenCV-Python制作灯光秀短视频

    老猿Python博文目录 https blog csdn net LaoYuanPython 用OpenCV Python读取摄像头写入视频文件 一 引言 在 https blog csdn net LaoYuanPython articl
  • 计算机图形学常用算法实现3 多边形扫描转换算法-扫描线算法

    运行环境 vs2015 winform 其他环境只需要替换对应的画点画线算法即可 这个算法其实很复杂的 实现起来需要有耐心 一步一步按照算法思路来写代码 在算法中 我使用的是静态链表 c 没有指针 下面的AET为活性边表 NET存储新边表
  • 计算机图形学GAMES101(三)变换(模型、视图、投影)

    补充内容 R 是逆时针方向旋转的矩阵 R 是顺时针方向旋转的矩阵 可以发现R T R 1 像这样的矩阵叫做正交矩阵 以后如果要求往相反的方向旋转相同角度的变换 R 只需要求正向旋转的矩阵然后转置就可以了 本节涉及内容 仿射变换 线性变换 平
  • 关于欧拉角的问题

    一 简单介绍 自己主要做一个知识记录 想着学了还是要写点东西的 首先我们可以把欧拉角看成是描述方位的一种方法 我们可以用欧拉角来表示旋转 也可以用四元数 以及用矩阵来表示旋转 欧拉角是一种常用的描述方位的方法 在这里简单的介绍下方向和方位的
  • B样条曲线

    学习B样条曲线需要先学习贝塞尔曲线 若未了解 看我一篇上博客https blog csdn net weixin 42513339 article details 83019610 贝塞尔函数不足 由于贝塞尔曲线存在以下不足 1 缺乏局部修
  • 2022年 IEEE VIS 科学可视化与体渲染论文整理与分析

    因为最近工作的关系 需要研究一下IEEE VIS中2017年以后的与我之前主要方向 体渲染 医学可视化 有关的论文 我把这些年全部的论文进行了筛选和梳理 总共筛选出57篇论文 打算写一个文章来记录这些内容 这个栏目是2022年的6篇论文的介
  • 62.[GIS基础]笛卡尔坐标系

    文章目录 笛卡尔坐标系 多坐标系 坐标系的嵌套 坐标变换 坐标系转换 转载请注明原始链接 http blog csdn net a464057216 article details 54578069 后续此博客不再更新 欢迎大家搜索关注微信
  • 图像仿射变换原理4:组合变换及对应变换矩阵

    老猿Python博文目录 https blog csdn net LaoYuanPython 仿射变换博文传送门 带星号的为付费专栏文章 图像仿射变换原理1 齐次坐标来龙去脉详解 图像仿射变换原理2 矩阵变换 线性变换和图像线性变换矩阵 图
  • 数字图像处理中一元函数f(x)的二阶导数=f(x+1)+f(x-1)-2f(x)的由来

    在 为什么说数字图像的一阶微分为f x 1 f x 介绍了数字图像处理中一元函数的一阶导数的由来 该一阶导数为 在该书中 同时定义了一元函数f x 其二阶导数的基本定义为 关于这个推导其中有点点小技巧 式3 6 1也可以表述为 f x f
  • PyQt转换显示Python-OpenCV图像实现图形化界面的视频播放

    前往老猿Python博文目录 一 引言 在Python OpenCV中显示图像时调用的是一个单独的窗口 有时我们需要将这些图像显示在PyQt的图形化界面上 这样就可以将整个图像显示与PyQt图形化界面进行整合 但OpenCV格式的图像和Py
  • Game101现代计算机图形学作业1

    Game101现代计算机图形学作业1 一 作业描述 二 解决方法 一 模型变换 二 投影变换 绕任意轴旋转 三 总结 四 参考和引用 一 作业描述 给定三维下三个点 v 0 2 0 0
  • 【计算机图形学】PointNet文章的简单理解与运用,点云特征提取

    PointNet论文原文 PointNet Deep Learning on Point Sets for 3D Classification and Segmentation PointNet官方代码是使用tensorflow实现的 Po

随机推荐