第0章 介绍 1
0.1 谁是本书的读者 1
0.2 从本书获得什么 2
0.3 开发环境 2
0.4 本书的特点 2
0.5 本书的内容 4
0.6 本书是如何组织的 5
0.6.1 图像处理类层次结构 5
0.6.2 三维图形设计类体系 5
0.6.3 两个重要的头文件 5
0.6.4 实例名称及其分布结构 7
0.7 两套解释方法 9
0.8 如何列示代码 10
0.9 关于本书附带的CD-ROM 10
第1章 位图--通向图像处理和图形设计的桥梁 11
1.1 设备无关位图(DIB) 12
1.1.1 DIB的数据组织 12
1.1.2 操作DIB 14
1.2 处理DIB的CDib类 14
1.2.1 建立DisplayMode项目 14
1.2.2 CDib类 15
1.3 设备相关位图(DDB) 32
1.3.1 操作DDB 32
1.3.2 处理DDB的CDdb类 32
1.3.3 颜色量化 46
1.3.4 将DDB保存为DIB 53
1.4 响应用户对显示模式的设置 61
1.5 数据转换 68
1.5.1 问题是什么 68
1.5.3 将24位DDB数据转换为16位或32位DDB数据 69
1.5.2 数据转换CFormatDdbData类 69
1.5.4 将24位DDB数据转换为8位DDB数据 71
1.5.5 将32位DDB数据转换为8位、16位或24位DDB数据 78
第2章 图像点处理 82
2.1 图像处理头文件Img.h 83
2.2 改变图像亮度 88
2.2.1 建立Brightness项目 88
2.2.2 图像处理基类CImageProcess 92
2.2.3 图像点处理父类CImagePointProcess 96
2.2.4 亮度处理器CBrightnessProcess 97
2.2.5 改变亮度 101
2.2.6 更加简捷的数据回放机制--将数据捆绑为DDB 105
2.3 改变图像对比度 108
2.3.1 建立Contrast项目 108
2.3.2 对比度处理器CContrastProcess 110
2.3.3 改变图像对比度 114
2.4 图像灰度处理 117
2.4.1 灰度变换 117
2.4.2 直方图均衡化 118
2.4.3 直方图规定化 119
2.4.4 灰度概率统计法 119
2.4.5 建立Gray项目 120
2.4.6 灰度处理器CGrayProcess 122
2.4.7 修改灰度 138
2.5 着色图像 140
2.5.1 建立ImageRender项目 141
2.5.2 图像着色器CRenderProcess 142
2.5.3 颜色对话框 144
2.5.4 着色图像 145
2.6 曝光图像 147
2.6.1 建立ImageSoIanize项目 147
2.6.2 曝光处理器CSolarizationProcess 147
2.6.3 曝光图像 150
第3章 图像区域处理 151
3.1 卷积过滤器 151
3.1.1 卷积操作 151
3.1.2 图像模糊与低通过滤 152
3.1.3 高通过滤 152
3.1.4 边缘检测 153
3.1.5 建立Convolution项目 155
3.1.6 图像区域处理父类CImageAreaProcess 155
3.1.7 统一的卷积过滤器CConvolutionFilter 157
3.1.8 图像区域处理对话框 176
3.1.9 集成卷积过滤--图像线性处理 177
3.2 生成浮雕效果 182
3.2.1 建立Emboss项目 182
3.2.2 浮雕生成器CEmbossFilter 182
3.2.3 浮雕对话框 185
3.2.4 生成浮雕艺术效果 186
3.3 特殊检测方法 190
3.3.1 Sobel边缘检测和Kirsch边缘检测算法 190
3.3.2 建立SobelKirsch项目 191
3.3.3 特殊检测器CSpecialDetectionFilter 192
3.3.4 检测图像 198
3.4 中值滤波 200
3.4.1 建立MedianBlur项目 200
3.4.2 中值滤波器CMedianFilter 200
3.4.3 过滤图像 205
3.5 扩散图像 206
3.5.1 建立Diffuse项目 207
3.5.2 扩散过滤器CDiffuseFilter 207
3.5.3 扩散图像 209
3.6.1 建立Granulate项目 210
3.6.2 颗粒粗化过滤器GranulationFilter 210
3.6 颗粒粗化 210
3.6.3 粒化图像 215
第4章 数学形态学--开创数字图像处理的新篇章 217
4.1 数学形态学基本运算 217
4.1.1 膨胀、腐蚀、开启和闭合运算 218
4.1.2 拾取边界、形态浮雕、形态梯度、降低噪声、开合成和高帽变换 218
4.2 多值图像数学形态学在数字图像处理中的应用 219
4.2.1 建立MathMorph项目 219
4.2.2 数学形态学CMathMorphology类 219
4.2.3 数学形态学对话框 230
4.2.4 数学形态学图像处理 230
4.2.5 MathMorph VS Photoshop--使用导示与评注 234
4.3 二值图像数学形态学运算的实现 240
5.1 透明色匹配合成 242
5.1.1 建立Transparent项目 242
第5章 图像合成 242
5.1.2 图像合成父类CImageComposite 243
5.1.3 透明色匹配合成类CTransparentColorFilter 245
5.1.4 透明颜色对话框 248
5.1.5 合成图像--将小车、蝴蝶和背景进行匹配 249
5.2 代数运算 253
5.2.1 建立Algebra项目 253
5.2.2 代数运算器CAlgebraOperation 254
5.2.3 代数运算对话框 258
5.2.4 合成图像 259
5.3 逻辑运算 261
5.3.1 建立Logic项目 261
5.3.2 逻辑运算器CLogicOperation 262
5.3.3 逻辑运算对话框 264
5.3.4 合成图像 264
5.4 图像融合技术 266
5.5 融合图像 267
5.5.2 图像融合器CPixelBlend 268
5.5.1 建立Blend项目 268
5.5.3 融合对话框 273
5.5.4 合成图像 274
5.5.5 实现梦幻的合成效果--应用程序Blend使用导示 276
第6章 图像几何变换 279
6.1 缩放图像 279
6.1.1 近邻取样法 280
6.1.2 双线性内插法 280
6.1.3 三次卷积法 280
6.1.4 建立ImgScale项目 281
6.1.5 图像几何CImageGeometry 281
6.1.6 缩放变换对话框 290
6.1.7 缩放图像 290
6.2.1 建立ImgRotate项目 294
6.2.2 为CImageGeometry类添加旋转图像的功能 294
6.2 旋转图像 294
6.2.3 旋转变换对话框 301
6.2.4 旋转图像 301
6.3 镜像图像 305
6.3.1 建立ImgMirror项目 305
6.3.2 为CImageGeometry类添加镜像图像的功能 305
6.3.3 镜像图像 307
6.4 扭曲图像形状 309
6.4.1 建立ImgWarp项目 309
6.4.2 图像一般变换的父类CImageGeneralTransform 310
6.4.3 扭曲变换CImageWarp 313
6.4.4 图像扭曲对话框 316
6.4.5 扭曲图像 317
第7章 光栅操作 321
7.1 光栅操作 321
7.2.2 参数控制对话框 323
7.2.1 建立Raster项目 323
7.2 显示位于椭圆形(含圆形)区域内的图像 323
7.2.3 过滤像素 324
第8章 切换特技 330
8.1 常用的切换方式 330
8.2 滑入 335
8.2.1 建立ImageSlide项目 335
8.2.2 滑入方式对话框 335
8.2.3 具有内嵌效果的矩形CBorderRect 336
8.2.4 演示滑入效果 338
8.3 演示单向渐铺效果 346
8.4 演示菱形、圆形、椭圆形和帘窗式渐铺效果 351
8.5 演示推进效果 359
8.6 淡入淡出(一) 362
8.7 淡入淡出(二) 365
9.1 图形基元 374
第9章 图形基元(Ⅰ) 374
9.2 三维图形设计头文件Grphcs.h 375
9.3 直线基元 378
9.3.1 建立Line项目 379
9.3.2 直线基元CPLine--统一的Bresenham扫描转换程序 379
9.3.3 测试直线基元 383
9.4 三角形基元 385
9.4.1 Gouraud着色方法 385
9.4.2 三角形的扫描转换与填充 386
9.4.3 三角形基元CPTriangle--扫描转换三角形 387
9.4.4 测试三角形基元 399
9.5 几何构造 401
9.5.1 直线段 401
9.5.2 小面 401
9.5.3 四边形的细化 403
9.5.4 边的可见性 403
10.1 底层图形的绘制原理 404
第10章 三维图形技术 404
10.2 三维自由向量 406
10.3 三维几何变换、齐次变换矩阵 418
10.4 通用模板堆栈、矩阵堆栈的意义 431
10.5 次物体及其属性 437
10.5.1 次物体的基类CSubObject3d 437
10.5.2 几何顶点及其属性 438
10.5.3 边及其属性 441
10.5.4 小面及其属性 443
10.6 三维物体的建立 445
10.7 取景与视口变换 453
10.8 可见性测试 456
10.9 浮点颜色 459
10.10 物体的着色 467
10.11 立方体 479
10.12 着色立方体的线框、刻面和光滑模型 485
11.1 建立Light项目 489
第11章 光照处理 489
11.2 光源 490
11.2.1 光源属性 490
11.2.2 如何定义泛光光源和聚光光源 496
11.3 物体的材质 498
11.3.1 标准材质 498
11.3.2 如何定义标准材质 501
11.3.3 常用的金属和非金属材质的属性 502
11.4 基本光照模型 504
11.5 光照明计算 506
11.5.1 光照明计算 506
11.5.2 多光源照射系统 507
11.6 球体 515
11.6.1 球体的几何拓扑 515
11.6.2 球体 516
11.7.1 光照场景实例 524
11.7 光照场景 524
11.7.2 调整光源和材质的属性--编程导示 531
第12章 图形基元(Ⅱ) 535
12.1 z-buffer算法 535
12.2 建立Primitive项目 537
12.3 颜色缓冲器 537
12.4 深度缓冲器 542
12.5 基于颜色缓冲器和深度缓冲器的直线基元 545
12.6 基于颜色缓冲器和深度缓冲器的三角形基元 548
12.7 绘制相互交叠的三个四边形 560
12.8 引入图像处理技术 562
12.8.1 图形设计离不开图像处理技术 563
12.8.2 用图像作颜色缓冲区的背景 563
13.1 场景深度消隐 567
13.1.1 建立Depth项目 567
第13章 深度消隐 567
13.1.2 场景深度消隐与着色 568
13.1.3 着色简单场景 577
13.2 绘制复杂场景 580
13.2.1 建立Scene项目 580
13.2.2 着色场景 581
第14章 动画 587
14.1 动画生成技术 587
14.2 双缓存机制的工作原理 588
14.3 帧动画--熊熊燃烧的火焰 589
14.4 运动动画--模拟小球的非弹性碰撞 594
14.4.1 具有高光效果的虚拟球 595
14.4.2 具有高光效果的虚拟圆柱 598
14.4.3 砖块 600
14.4.4 模拟小球的非弹性碰撞 604
参考文献 611