第一章 图像及数字处理 1
1.1 引言 1
1.2 数字图像处理概述 1
第二章 Visual C++数字图像编程基础 4
2.1 图像和调色板 4
2.1.1 图像 4
2.1.2 调色板 5
2.1.3 色彩系统 6
2.1.4 灰度图 7
2.2 GDI位图 8
2.2.1 从资源中装入GDI位图 8
2.2.2 伸缩位图 11
2.3 设备无关位图(DIB) 12
2.3.1 BMP文件中DIB的结构 12
2.3.2 DIB访问函数 15
2.3.3 构造自己的DIB函数库 20
2.3.4 使用DIB读写BMP文件示例 36
第三章 图像的点运算 78
3.1 灰度直方图 78
3.1.1 灰度直方图的定义 78
3.1.2 编程绘制灰度直方图 80
3.2 灰度的线性变换 92
3.2.1 理论基础 92
3.2.2 Visual C++编程实现 93
3.3 灰度的阈值变换 110
3.3.1 理论基础 110
3.3.2 Visual C++编程实现 110
3.4 灰度的窗口变换 120
3.4.1 理论基础 120
3.4.2 Visual C++编程实现 122
3.5 灰度拉伸 134
3.5.1 理论基础 134
3.5.2 Visual C++编程实现 135
3.6 灰度均衡 150
3.6.1 理论基础 150
3.6.2 Visual C++编程实现 151
第四章 图像的几何变换 156
4.1 图像的平移 156
4.1.1 理论基础 156
4.1.2 Visual C++编程实现 158
4.2 图像的镜像变换 169
4.2.1 理论基础 169
4.2.2 Visual C++编程实现 169
4.3 图像的转置 176
4.3.1 理论基础 177
4.3.2 Visual C++编程实现 177
4.4 图像的缩放 181
4.4.1 理论基础 182
4.4.2 Visual C++编程实现 183
4.5 图像的旋转 188
4.5.1 理论基础 189
4.5.2 Visual C++编程实现 191
4.6 插值算法简介 199
4.6.1 最邻近插值 199
4.6.2 双线性插值 199
4.6.3 高阶插值 206
第五章 图像的正交变换 207
5.1 傅立叶变换 207
5.1.1 傅立叶变换的基本概念 207
5.1.2 傅立叶变换的性质 208
5.1.3 离散傅立叶变换 211
5.1.4 离散傅立叶变换的性质 212
5.1.5 快速傅立叶变换 217
5.1.6 Visual C++编程实现图像傅立叶变换 225
5.2 离散余弦变换 233
5.2.1 离散余弦变换的基本概念 233
5.2.2 Visual C++编程实现图像离散余弦变换 235
5.3 沃尔什变换 244
5.3.1 沃尔什函数 244
5.3.2 沃尔什变换 246
5.3.3 离散沃尔什--哈达玛变换 247
5.3.4 快速沃尔什--哈达玛变换 247
5.3.5 Visual C++编程实现图像沃尔什--哈达玛变换 252
第六章 图像的增强 262
6.1 图像的灰度修正 263
6.2 图像的平滑 263
6.2.1 模板操作 263
6.2.2 图像平滑理论基础 268
6.2.3 Visual C++编程实现 268
6.3 中值滤波 281
6.3.1 理论基础 281
6.3.2 Visual C++编程实现 282
6.4 图像的锐化 293
6.4.1 梯度锐化 293
6.4.2 拉普拉斯锐化 299
6.4.3 高通滤波器 302
6.5 伪彩色编码 305
第七章 数字图像腐蚀、膨胀和细化算法 335
7.1 数学形态学 335
7.1.1 什么是数学形态学 335
7.1.2 数学形态学中的基本符号和术语 335
7.2 图像腐蚀(Erosion) 338
7.2.1 基本概念 338
7.2.2 Visual C++编程实现 344
7.3 图像膨胀(Dilation) 354
7.3.1 基本概念 354
7.3.2 腐蚀和膨胀的代数性质 357
7.3.3 Visual C++编程实现 358
7.4 开运算(Open)和闭运算(Close) 365
7.4.1 基本概念 365
7.4.2 开、闭运算的代数性质 371
7.4.3 Visual C++编程实现 371
7.5 数学形态学的其他运算 383
7.5.1 击中/击不中(Hit/Miss)变换 383
7.5.2 细化(Thining) 386
7.5.3 Visual C++编程实现 387
第八章 图像边缘检测与提取及轮廓跟踪 394
8.1 边缘检测 394
8.1.1 基本概念 394
8.1.2 Visual C++编程实现 400
8.2 Hough变换 426
8.2.1 基本概念 426
8.2.2 Visual C++编程实现 428
8.3 轮廓提取与轮廓跟踪 435
8.3.1 基本概念 435
8.3.2 Visual C++编程实现 437
8.4 种子填充 444
8.4.1 基本概念 444
8.4.2 Visual C++编程实现 448
第九章 图像分析 459
9.1 图像分割 459
9.1.1 基本幅度的图像分割 459
9.1.2 图像的区域分割 463
9.1.3 Visual C++编程实现 465
9.2 投影法与差影法 472
9.2.1 投影法 472
9.2.2 图像的代数运算与差影法 473
9.2.3 Visual C++编程实现 477
9.3 图像的匹配 491
9.3.1 模板匹配法 491
9.3.2 其他快速计算法 495
9.3.3 Visual C++编程实现 500
第十章 图像复原 509
10.1 引言 509
10.2 逆滤波器方法--非约束复原 513
10.2.1 逆滤波器方法 513
10.2.2 Visual C++编程实现 515
10.3 最小二乘类约束复原 526
10.3.1 维纳滤波方法 527
10.3.2 约束最小平方滤波 529
10.3.3 Visual C++编程实现 530
10.4 非线性复原方法 540
10.4.1 最大后验复原 540
10.4.2 最大熵复原 541
10.4.3 投影复原方法 542
10.4.4 Monte Carlo复原方法 544
10.5 几种其他图像复原技术 545
10.5.1 几何畸变校正 545
10.5.2 盲目图像复原 548
10.6 点扩展函数的确定 549
10.6.1 几种典型的点扩展函数 549
10.6.2 系统辨识 550
10.7 图像系统中的噪声模型 556
10.7.1 噪声模型 556
10.7.2 Visual C++编程实现 561
第十一章 图像的压缩编码 567
11.1 哈夫曼编码 568
11.1.1 理论基础 568
11.1.2 Visual C++实现哈夫曼编码 570
11.2 香农-弗诺编码 581
11.2.1 理论基础 581
11.2.2 Visual C++编程实现 583
11.3 行程编码 595
11.3.1 理论基础 595
11.3.2 PCX文件格式及其编码方法 595
11.3.3 编程实现PCX文件的读写 597
11.4 LZW编码 613
11.4.1 理论基础 613
11.4.2 GIF文件格式 618
11.4.3 编程实现GIF文件的读写 624
11.5 JPEG编码 664
11.5.1 理论基础 665
11.5.2 JPEG的文件格式 668
11.5.3 编程实现JPEG文件的读写 674