来源是老师给的复习题()
1. 数字图像处理、 计算机图形学、模式识别三门课之间的关系
答:
计算机图形学:
是研究通过计算机将模型数据转换为图像,并在专门的显示设备上显示的学科。其主要研究各种模型的建模、表达及绘制的方法,通过所描述的场景结构、物体几何模型、物体表面反射特性、光源配置及相机模型等信息,融合生成真实感场景,并最终显示图像结果。
数字图像处理:
是利用计算机技术实现对图像的各种变换,如图像压缩、图像修复、图像增强、图像识别、图像分割等应用操作。数字图像处理技术包括图像的空域和频域变换、形态学操作、卷积运算等,在像素级别上实现图像数据的运算。数字图像处理实现的是从图像到图像的变换。
模式识别:
研究从图像等原始数据中提取模型特征,还原并生成相应的模型。针对数字图像的模式识别,就是实现从图像数据空间到特征模型空间的变换。其主要内容包括数据特征提取、特征分析、特征选择、分类器设计等
2, 能够根据图进行分析。图形管线的各个阶段工作。
渲染管线主要由以下阶段构成,即顶点处理、光栅化过程、片元处理过程以及输出合并操作。
1.顶点处理阶段
顶点输入(Vertex Input):接收输入的顶点数据,包括位置、颜色、法线等。
顶点着色器(Vertex Shader):对每个顶点进行处理,如变换、光照计算等。
曲面细分(Tessellation)(可选):根据细分参数对几何图元进行细分,生成更多的几何细节。
几何着色器(Geometry Shader)(可选):对几何图元进行处理,如创建新的图元、剔除图元等。
2.光栅化阶段
三角形装配(Triangle Assembly):将顶点转换为三角形图元。
光栅化(Rasterization):将三角形图元转换为屏幕上的像素。
像素插值(Pixel Interpolation):对每个像素进行插值,以获取像素的颜色和其他属性。
像素处理阶段(Pixel Processing Stage):
3.片元处理阶段
像素着色器(Pixel Shader):对每个像素进行处理,如纹理采样、光照计算等。
像素输出(Pixel Output):将处理后的像素输出到帧缓冲区。
输出合成阶段(Output Merging Stage):
4.输出和合并操作
帧缓冲操作(Framebuffer Operations):对输出的像素进行混合、遮罩等操作。
帧缓冲输出(Framebuffer Output):将最终的像素输出到显示设备。
3 .简述传统的成像方法与计算机绘制成像的原理。
传统的成像方法
主要是指使用相机、电影摄影机等光学设备以及感光胶片或传感器来捕捉现实世界中的光线,并将其转化为可见的图像。这些方法基于光学原理,通过光线的折射、反射和聚焦来形成图像。(记住:小孔成像)
计算机绘制成像
是通过计算机图形学技术和算法来生成图像。它不依赖于光线的物理传播,而是通过数学计算和图形学算法来模拟光线的行为和物体的外观
4,计算机图形处理架构(有GPU模式和无GPU模式)
GPU模式(Graphics Processing Unit):
GPU模式是指利用图形处理单元(GPU)进行图形处理和渲染的模式。GPU是一种专门设计用于并行处理图形任务的硬件设备,具有高度并行的计算能力和专用的图形处理功能。在GPU模式下,图形处理任务主要由GPU来执行,而CPU则负责控制和协调。
GPU:
无GPU:
5, 简述光栅式扫描显示系统
答:
光栅式图形系统是现阶段计算机图形学的基础,计算机绘制的最终结果都展现在光栅式显示设备上,目前几乎所有的绘制方法都建立在基于光栅扫描显示的基础上。光栅扫描显示采用标准栅格动态扫描方式展示内容。任何要显示的内容,如图片或者文字,都由光栅阵列中的一些像素构成,并以数值形式存储在计算机中。计算机图形处理的最终目标就是生成这个标准栅格的结果图像.
光栅扫描是指光栅显示的动态刷新方式,系统定期遍历所有像素,根据变换内容对像素进行动态更新。
6, 屏幕分辨率三种描述,扫描频率,带宽计算
补充:
在光栅扫描中,电子束横向扫描屏幕,扫描的每一行称为一条扫描线(scanline)。扫描线从上到下,即扫描完整个画面,称为一帧(frame)。
在隔行扫描系统中,系统会先扫描奇数行,再扫描偶数行,这样一帧就分为两场,即奇场和偶场,这就是场的概念。
每秒扫描的帧数称为扫描频率,如每秒60帧或80帧,即60Hz或80Hz。
如何计算带宽:我们用r(x)表示每条水平扫描线上的图素个数;r(y)表示每帧画面的水平扫描线数;V表示每秒钟画面的刷新率;B就表示带宽。理论上,带宽的计算公式是:B = r(x)×r(y)×V×1.3(由于信号在扫描边缘的衰减,图像的清晰,实际上电子束水平扫描的图素的个数和行扫描频率均要比理论值要高一些,所以计算公式中加了一个1.3的参数)
7,GPU 与 CPU 的执行区别
CPU 将它数量相对较少的内核集中用于处理单个任务,并快速将其完成。 这使它尤其适合用于处理逻辑控制、串行计算、数据库运行等类型的工作。 相比之下,GPU 由数百个内核组成,可以同时处理数千个线程,所以与 CPU 擅长、串行的运算和通用类型数据运算不同,GPU 擅长的是大规模并发计算,将复杂的问题分解成数千或数百万个独立的任务,并一次性解决它们,比如图像处理任务,包括纹理、灯光和形状渲染等子任务都必须同时完成,以保持图像在屏幕上快速呈现
8.简述深度检测与深度buffer的作用机理
深度缓存
隐藏面消除(或可见面确定)是为了发现绘制片元中的像素是否被遮挡。在绘制前,首先将表面对应像素的深度值与当前深度缓存中的值进行比较,如果大于或等于深度缓存中的值,则深度测试不通过,不能绘制;若小于深度缓存中的值,则更新该像素对应的深度值和颜色值这一过程称为深度测试
9.shader编程中,两类shader脚本(vertex shader与fragment shader)分别实现什么样的内容。
- Vertex Shader:作用于每个顶点,通常是处理从世界空间到裁剪空间(屏幕坐标)的坐标转换,后面紧接的是光栅化。
- Fragment Shader:作用于每个屏幕上的片元(这里可近似理解为像素),通常是计算颜色。
10.shader编程中,变量标识uniform,attribute,vary分别代表什么意思。
1. uniform 变量
uniform变量是外部application程序传递给(vertex和fragment)shader的变量。它是application通过函数glUniform**()函数赋值的。在(vertex和fragment)shader程序内部,uniform变量就像是C语言里面的常量(const ),它不能被shader程序修改。shder程序只能用uniform变量,但是不能更改。
如果uniform变量在vertex和fragment两者之间声明方式完全一样,则它可以在vertex和fragment共享使用。(相当于一个被vertex和fragment shader共享的全局变量)
uniform变量一般用来表示:变换矩阵,材质,光照参数和颜色等信息。
2. attribute变量
attribute变量是只能在vertex shader中使用的变量。(它不能在fragment shader中声明attribute变量,也不能被fragment shader中使用)
一般用attribute变量来表示一些顶点的数据,如:顶点坐标,法线,纹理坐标,顶点颜色等。
在application中,一般用函数glBindAttribLocation()来绑定每个attribute变量的位置,然后用函数glVertexAttribPointer()为每个attribute变量赋值。
3. varying 变量
varying变量是vertex和fragment shader之间做数据传递用的。一般vertex shader修改varying变量的值,然后fragment shader使用该varying变量的值。因此varying变量在vertex和fragment shader二者之间的声明必须是一致的。application不能使用此变量。
11.简述framebuffer的概念,以及在渲染的时候的作用。
帧缓存以结构化的方式存储每个像素的颜色值来表示最终绘制的结果图像。早期的计算机系统会预先保留一段连续的内存,这段内存就称为帧缓存。通过读写这段内存中的数据,改写显示器上特定位置像素的颜色值。
我 们使用术语framebuffer表示图形系统用于呈现的缓存集,包括前端和后端的颜色缓存、深度缓存及硬件可能提供的其他缓存。