《计算机图形学教学资料》第8讲-文本生成及反走样技术-精选文档

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2019/3/24 4
字符表示--字库
点阵字符 矢量字符
2019/3/24
5
点阵字符
用位图表示字符。
0 0 0 0 0 0 0 0 0 0 0 0 0 0
1
0 0 0 0 0 1
1
1 1 1 1 1 1
1
1 1 1 1 1 1
1
0 0 1 0 0 1
1
0 0 1 0 0 1
1
1 1 1 1 1 1
y 0 y 1 y 2 y 3 y 4 y 5
-1
0 1 0 1 0 1
抬笔
直线段--〉二次曲线、三次曲线
2019/3/24
12
续:
实现:


使用字符的多边形或者曲线轮廓(用浮点参数描述)以 抽象的与设备无关的方式存储字符 按需对以上格式进行变换 通过定义适当的缩放比例,可由已存储的单一表示形式 生成多种不同尺度字符 对字符轮廓进行错切变换可以实现斜体字符的快速生成 字符轮廓可以进行任意的平移、旋转、缩放及裁剪
9
2019/3/24
10
字体的实现
(a) 斜体字符示例
(b) 黑体字符示例

针对不同的字符尺寸、字体、字型以及显示或输出设备 的不同,需要不同的字符缓存 超大存储量要求!
2019/3/24 11
矢量字符
利用字符的笔划信息表示字符
P2
P0
P1
落笔
P4
P3
P5
x 0 x 1 x 2 x 3 x 4 x 5
2019/3/24 8
续:
typedef struct {
int leftX, width; } charLocation; typedef struct { canvasID cache;
/* Horizontal location, width of image in font cache */
18
混淆的产生
连续图形表示为离散图形时采样不足产生
¼周期采样时
¾周期采样时
2019/3/24 19
反混淆技术分类
提高分辨率(过取样或后过滤) 区域采样方法(前滤波)

非加权区域采样方法 加权的区域采样方法
2019/3/24
20
提高分辨率
原理:
实现 (假设初始分辨率是 m· n)
13
优点:


2019/3/24
点阵字符与矢量字符的比较
ቤተ መጻሕፍቲ ባይዱ
显示:

点阵字符--位块拷贝:简便快捷 矢量字符--画线:计算复杂速度慢 点阵字符:变形严重 矢量字符:端点变换 点阵字符占用空间大 矢量字符占用空间小
14

变换:


存储:

2019/3/24
优化的使用策略
综合两种方式的优势:
本章内容
直线的扫描转换 圆与椭圆的扫描转换
区域填充
二维裁剪 字符生成 反走样
2019/3/24
1
第五节 字符的表示和输出
字符编码 字库
字符表示--数字编码
ASCII
American Standard Code for Information Interchange
国标码
以轮廓方式存储字符 将所需使用的字符按照指定的需求转换为点阵
格式
2019/3/24
15
文本的裁剪
裁剪精度
串精度 字符精度 笔划精度
TEXT
TEXT TEXT
2019/3/24
16
小结
字符生成
字符编码 字符库
• 点阵字符:显示方便、占用空间大 • 矢量字符:画线显示、变换方便、占用空间小 • 优化策略:存储矢量字符+转换为点阵字符
中华人民共和国国家标准信息交换编码 (GB2312-80) 两个七位编码(区码、位码)
2019/3/24 3
《GB2312-80》内容
7445 个图形字符的二进制数编码,包括:

3755+3008个汉字,使用频度达99.99% 以上 202 个一般符号 22 个数字 52 个拉丁字母 169 个日文假名 48 个希腊字母 66 个俄文字母 26 个汉语拼音符号 37 个汉语注音字母
单个象素被细分成s· t个子象素 显示图形按照s· t· m· n分辨率进行扫描转换,记
录每个子象素的颜色 原分辨率下象素所对应的颜色由其细分后的子 象素颜色值的某种平均来定义
2019/3/24 21
计算子像素颜色的平均值
简单平均
1/4 1/4
1/4 1/4
1 value [ m ][ n ] ( color [ 2 m ][ 2 n ] color [ 2 m 1 ][ 2 n ] 4 color [ 2 m ][ 2 n 1 ] color [ 2 m 1 ][ 2 n 1 ])
字符裁剪
点阵字符:裁剪精度 矢量字符:(曲)线段裁剪
2019/3/24 17
第六节

反混淆技术
混淆:

因真实图形的离散表示而产生 例如:扫描转换时采用的“all-or-nothing”方式引起 锯齿或者阶梯现象

反混淆:

应用减少或者消除混淆的技术实现反混淆的图元绘制
2019/3/24
2.
3.
对每个字符的单个像素进行必要的修饰
在字符缓存区(存储字符图象的画布区域)存储
点阵
各种不同的字体需要不同的点阵集合
2019/3/24
7
点阵字符的存储

字符缓存区技术:把字符一个连一 个地存储在画布中(所需存储空间 非常宽,但存储高度仅是最高字符 的点阵高度)
字符缓存区局部示例

载入的字符可使用一个结构来描述,该结构包括: 字符图象在画布中存储的位置的索引 字符的点阵高度信息 相邻字符之间的空间间隔
0
1 1 0 1
1
0 0 0 0 0 1
1
1 1 1 1 1 1
1
1 1 1 1 1 1
1
0 0 1 0 0 1
1
0 0 1 0 0 1
1
1 1 1 1 1 1
0
1 1 0 1 1 1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2019/3/24
6
点阵字符生成
生成字符点阵的实现过程:
1.
扫描来自打字机并加以放大的字符的图形
int descenderHeight, totalHeight;
int interCharacterSpacing; charLocation locationTable[128]; } fontCacheDescriptor;
2019/3/24
/* Height is a constant; width varies */ /* Measured in pixels */ /* Explained in the text */
相关文档
最新文档