|
| 1 | +--- |
| 2 | +title: 计算机高级图形学 期末复习 |
| 3 | +categories: |
| 4 | + - 校内课程 |
| 5 | + - 计算机高级图形学 |
| 6 | +abbrlink: 1b712153 |
| 7 | +date: 2025-11-04 21:40:00 |
| 8 | +updated: 2025-11-04 21:40:00 |
| 9 | +--- |
| 10 | + |
| 11 | +<meta name="referrer" content="no-referrer"/> |
| 12 | + |
| 13 | +# 第一章 绪论 |
| 14 | + |
| 15 | +## 本章复习重点 |
| 16 | + |
| 17 | +- 图形学和图像学的区别。 |
| 18 | +- 走样的原因和反走样的概念。 |
| 19 | +- 选择题(直线算法)。 |
| 20 | +- 光栅显示系统。 |
| 21 | + |
| 22 | +<!-- more --> |
| 23 | + |
| 24 | +## 计算机图形学概述 |
| 25 | + |
| 26 | +| | 图形处理 | 图像处理 | |
| 27 | +| -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | |
| 28 | +| 数据来源 | **多来源于主观世界,人为地由计算机产生,由数据描述而生成图形。** | **多来源于客观世界,来自对实物的拍摄、捡取。** | |
| 29 | +| 处理方法 | 图形处理技术包括:几何变换,拟合,图形操作,图形模型产生,图形处理,隐藏线,面的消除,浓淡处理,色彩纹理处理,图案生成等。 | 图像处理技术包括:图像几何修正(校正),图像采集、存储、编码、滤波、增强、压缩、复原、重建、图形理解识别等。 | |
| 30 | +| 理论基础 | 多利用数学矩阵代数、计算几何、分形几何等。 | 多利用二维数字信号滤波,各种信号正交变换等。 | |
| 31 | +| 应用领域 | 多应用 CAD/CAM/CAE/CAI 等领域,以及计算机艺术、计算机模拟、计算机动画、多媒体系统应用等。 | 多应用于多媒体系统,医学,遥感遥测,工业控制,监测监视,天文气象,军事侦察等。 | |
| 32 | + |
| 33 | +## 图形学研究内容 |
| 34 | + |
| 35 | +1. 建模:创建用计算机表示的三维物体模型,主要是形状表述与定义。 |
| 36 | +2. 渲染:通过各种矩阵变换从模型产生物体的二维图像,主要考虑光照、透视变换。 |
| 37 | +3. 动画:描述物体运动变化。 |
| 38 | + |
| 39 | +## 光栅扫描系统 |
| 40 | + |
| 41 | +### 随机扫描与光栅扫描 |
| 42 | + |
| 43 | +随机扫描技术的本质是按照显示命令的任意顺序,将电子束从一个端点偏转到另一个端点。 |
| 44 | + |
| 45 | +<img src="https://cdn.davidingplus.cn/images/2025/11/04/image-20251104203112346.png" alt="image-20251104203112346" style="zoom:50%;" /> |
| 46 | + |
| 47 | +光栅图形具有对显示区域填充颜色或图案的能力,存储的图像更加易于操作。 |
| 48 | + |
| 49 | +<img src="https://cdn.davidingplus.cn/images/2025/11/04/image-20251104203145253.png" alt="image-20251104203145253" style="zoom:60%;" /> |
| 50 | + |
| 51 | +光栅显示器上的图形由光栅(raster)形成。 |
| 52 | + |
| 53 | +**光栅是一组互相平行的水平扫描线。每行扫描线是由大小一致的显示单元组成的显示序列,每一显示单元称为一个像素,可显示给定的颜色和灰度。** |
| 54 | + |
| 55 | +光栅显示器将显示图元(primitive)如线、文字、填充颜色或图案区域等,以像素的形式存储到一个刷新缓冲器中。 |
| 56 | + |
| 57 | +### 光栅扫描系统 |
| 58 | + |
| 59 | +构成: |
| 60 | + |
| 61 | +1. 帧缓冲区(Frame Buffer)。 |
| 62 | +2. 视频控制器(Video Controller)。 |
| 63 | +3. 显示处理器(Display Processor / GPU)。 |
| 64 | + |
| 65 | +视频控制器如何实现基本刷新: |
| 66 | + |
| 67 | +1. 有两个寄存器用来存放屏幕像素的坐标。 |
| 68 | +2. 存储在帧缓冲区中该像素对应位置的值被取出,并用来设置 CRT 电子束的强度值。 |
| 69 | + |
| 70 | +显示处理器的主要任务是**将应用程序给出的图形定义数字化为一组像素强度值,并存放在帧缓冲区中**。这个数字化过程称为**扫描转换(Scan Conversion)**。 |
| 71 | + |
| 72 | +### 直线段的扫描转换算法 |
| 73 | + |
| 74 | +当我们对直线进行光栅化时,需要在显示器有限个像素中,确定最佳逼近该直线的一组像素,并且按扫描线顺序,对这些像素进行写操作,这个过程称为用显示器绘制直线或直线的扫描转换。 |
| 75 | + |
| 76 | +三种算法: |
| 77 | + |
| 78 | +1. 基本增量算法(DDA)数值微分算法。 |
| 79 | +2. 中点画线算法。 |
| 80 | +3. **Bresenham 算法(使用最广泛)。** |
| 81 | + |
| 82 | +#### DDA 算法 |
| 83 | + |
| 84 | +在一个坐标轴上以单位间隔对线段取样,则另一个坐标轴以常数 m 或 1/m 变化,从而获得线段上各像素点。 |
| 85 | + |
| 86 | +<img src="https://cdn.davidingplus.cn/images/2025/11/04/image-20251104205009793.png" alt="image-20251104205009793" style="zoom:50%;" /> |
| 87 | + |
| 88 | +算法迭代公式: |
| 89 | +$$ |
| 90 | +\text{若 } |m| \le 1: |
| 91 | +\begin{cases} |
| 92 | +x_{k+1} = x_k + 1, \quad y_{k+1} = y_k + m, & (x_a < x_b) \\ |
| 93 | +x_{k+1} = x_k - 1, \quad y_{k+1} = y_k - m, & (x_a > x_b) |
| 94 | +\end{cases} |
| 95 | +
|
| 96 | +\\ |
| 97 | +
|
| 98 | +\text{若 } |m| \ge 1: |
| 99 | +\begin{cases} |
| 100 | +y_{k+1} = y_k + 1, \quad x_{k+1} = x_k + \dfrac{1}{m}, & (y_a < y_b) \\ |
| 101 | +y_{k+1} = y_k - 1, \quad x_{k+1} = x_k - \dfrac{1}{m}, & (y_a > y_b) |
| 102 | +\end{cases} |
| 103 | +$$ |
| 104 | + |
| 105 | +#### Bresenham 算法 |
| 106 | + |
| 107 | +**只用整数计算寻找最接近实际直线的整数坐标。即从 Yk 和 Yk + 1 中取出最贴近 y 坐标的点作为拟合点,但只通过整数计算。** |
| 108 | + |
| 109 | +<img src="https://cdn.davidingplus.cn/images/2025/11/04/image-20251104211634765.png" alt="image-20251104211634765" style="zoom:50%;" /> |
| 110 | + |
| 111 | +推导过程如下: |
| 112 | +$$ |
| 113 | +\\ |
| 114 | +\textbf{假定:} \quad 0 < m < 1 |
| 115 | +\\ |
| 116 | +
|
| 117 | +已知点 (x_k, y_k),求下一点 (x_{k+1}, y_{k+1})。(x_{k+1}, y_{k+1}) 的两种可能为:(x_{k+1}, y_k) \quad \text{或} \quad (x_{k+1}, y_k + 1)。其中:x_{k+1} = x_k + 1 |
| 118 | +\\ |
| 119 | +
|
| 120 | +\textbf{推导:} |
| 121 | +\\ |
| 122 | +设两点与理想直线的距离分别为 d_1、d_2: |
| 123 | +
|
| 124 | +\\ |
| 125 | +\begin{aligned} |
| 126 | +d_1 &= y - y_k = m x_{k+1} + b - y_k, \\ |
| 127 | +d_2 &= y_{k+1} - y = y_{k+1} - (m x_{k+1} + b). |
| 128 | +\end{aligned} |
| 129 | +\\ |
| 130 | +因此:d_1 - d_2 = 2m x_{k+1} - 2y_k + 2b - 1 |
| 131 | +\\ |
| 132 | +令:m = \frac{\Delta y}{\Delta x} |
| 133 | +\\ |
| 134 | +代入上式,引入决策参数 P_k 表示相对距离: |
| 135 | +\\ |
| 136 | +P_k = \Delta x (d_1 - d_2) = 2\Delta y x_k - 2\Delta x y_k + C |
| 137 | +\\ |
| 138 | +其中:C = 2\Delta y + \Delta x (2b - 1) |
| 139 | +\\ |
| 140 | +
|
| 141 | +\textbf{推论:} |
| 142 | +\\ |
| 143 | +\begin{cases} |
| 144 | +P_k < 0, & \text{则选择 } y_{k+1} = y_k \\ |
| 145 | +P_k \ge 0, & \text{则选择 } y_{k+1} = y_k + 1 |
| 146 | +\end{cases} |
| 147 | +\\ |
| 148 | +
|
| 149 | +P_k 的递推公式: |
| 150 | +\\ |
| 151 | +
|
| 152 | +由 |
| 153 | +\\ |
| 154 | +\begin{aligned} |
| 155 | +P_{k+1} &= 2\Delta y x_{k+1} - 2\Delta x y_{k+1} + C, \\ |
| 156 | +P_k &= 2\Delta y x_k - 2\Delta x y_k + C, |
| 157 | +\end{aligned} |
| 158 | +\\ |
| 159 | +
|
| 160 | +两式相减得: |
| 161 | +\\ |
| 162 | +P_{k+1} - P_k = 2\Delta y (x_{k+1} - x_k) - 2\Delta x (y_{k+1} - y_k) |
| 163 | +\\ = 2\Delta y - 2\Delta x (y_{k+1} - y_k) |
| 164 | +
|
| 165 | +\\ |
| 166 | +\therefore \; {P_{k+1}} \text{ 的递推公式:} |
| 167 | +\\ |
| 168 | +
|
| 169 | +P_{k+1} = |
| 170 | +\begin{cases} |
| 171 | +P_k + 2\Delta y, & (P_k < 0) \\[6pt] |
| 172 | +P_k + 2\Delta y - 2\Delta x, & (P_k \ge 0) |
| 173 | +\end{cases} |
| 174 | +\\ |
| 175 | +
|
| 176 | +初始值为:\\ |
| 177 | +
|
| 178 | +P_0 = 2\Delta y - \Delta x |
| 179 | +$$ |
| 180 | + |
| 181 | +#### 中点画线算法 |
| 182 | + |
| 183 | +用判别式判断点与直线的关系。 |
| 184 | + |
| 185 | +<img src="https://cdn.davidingplus.cn/images/2025/11/04/image-20251104213004956.png" alt="image-20251104213004956" style="zoom:50%;" /> |
| 186 | + |
| 187 | +算法思路: |
| 188 | +$$ |
| 189 | +F(x, y) = (m x + b) - y \\[6pt] |
| 190 | +F(x_{k+1},\, y_k + 0.5) = 0, |
| 191 | +\quad \text{对应点 } (x_{k+1},\, y_{k+1}) \text{ 可能为 } (x_{k+1},\, y_k + 1) \text{ 或 } (x_{k+1},\, y_k) \\[6pt] |
| 192 | +\begin{cases} |
| 193 | +F(x_{k+1},\, y_k + 0.5) < 0, & \text{中点在直线上方,选择 } (x_{k+1},\, y_k) \\[6pt] |
| 194 | +F(x_{k+1},\, y_k + 0.5) > 0, & \text{中点在直线下方,选择 } (x_{k+1},\, y_k + 1) |
| 195 | +\end{cases} |
| 196 | +$$ |
| 197 | + |
| 198 | +### 走样与反走样 |
| 199 | + |
| 200 | +对于光栅系统来说,只能用光栅网格上的像素近似地描绘平滑的直线、多边形和圆、椭圆等曲线图元。如果引起了图中看到的**锯齿状或阶梯状的边界线问题**,在图形学中称为“走样”。 |
| 201 | + |
| 202 | +用于减少或消除这种现象的技术称为“反走样”。 |
| 203 | + |
| 204 | +<img src="https://cdn.davidingplus.cn/images/2025/11/04/image-20251104213414197.png" alt="image-20251104213414197" style="zoom:67%;" /> |
| 205 | + |
0 commit comments