第1章 Visual C++数字图像编程基础 1
1.1数字图像处理概述 1
1.2图像和调色板 2
1.2.1图像 2
1.2.2调色板 3
1.2.3色彩系统 4
1.2.4灰度图 5
1.3GDI位图 5
1.3.1从资源中装入GDI位图 6
1.3.2伸缩位图 8
1.4与设备相关位图 10
1.5设备无关位图(DIB) 15
1.5.1 BMP文件中DIB的结构 16
1.5.2 DIB访问函数 18
1.5.3构造DIB类 22
1.5.4使用DIB读写BMP文件示例 33
第2章 图像感知与获取 45
2.1视觉基础 45
2.1.1视觉系统 45
2.1.2视觉模型 47
2.2图像获取 48
2.3图像采样 50
2.3.1确定性图像场抽样 50
2.3.2随机图像取样 52
2.4量化 53
2.5图像显示 57
2.5.1图案法显示 58
2.5.2图案法显示图像的Visual C++实现 59
2.5.3随机抖动法显示图像 62
2.5.4随机抖动法显示图像的Visual C++实现 63
第3章 图像的点运算 67
3.1灰度直方图 67
3.1.1灰度直方图的定义 67
3.1.2编程绘制灰度直方图 69
3.2灰度的线性变换 77
3.2.1功能与效果 77
3.2.2原理与算法 77
3.2.3 Visual C++编程实现 77
3.3灰度的阈值变换 89
3.3.1功能与效果 89
3.3.2原理与算法 90
3.3.3 Visual C++编程实现 90
3.4灰度的窗口变换 96
3.4.1功能与效果 96
3.4.2原理与算法 97
3.4.3 Visual C++编程实现 97
3.5灰度拉伸 106
3.5.1功能与效果 106
3.5.2原理与算法 106
3.5.3 Visual C++编程实现 106
3.6灰度均衡 117
3.6.1功能与效果 117
3.6.2原理与算法 117
3.6.3 Visual C++编程实现 118
第4章 图像的几何变换 121
4.1图像的平移 121
4.1.1功能与效果 121
4.1.2原理与算法 122
4.1.3 Visual C++编程实现 124
4.2图像的镜像变换 130
4.2.1功能与效果 130
4.2.2原理与算法 130
4.2.3 Visual C++编程实现 132
4.3图像的转置 135
4.3.1功能与效果 135
4.3.2.原理与算法 136
4.3.3 Visual C++编程实现 136
4.4图像的缩放 139
4.4.1功能与效果 139
4.4.2原理与算法 139
4.4.3 Visual C++编程实现 140
4.5图像的旋转 144
4.5.1功能与效果 144
4.5.2原理与算法 145
4.5.3 Visual C++编程实现 147
4.6插值算法简介 153
4.6.1最邻近插值 153
4.6.2双线性插值 153
4.6.3高阶插值 158
第5章 图像的正交变换 159
5.1傅立叶变换 159
5.1.1傅立叶变换的基本概念 159
5.1.2傅立叶变换的性质 160
5.1.3离散傅立叶变换 162
5.1.4离散傅立叶变换的性质 164
5.1.5快速傅立叶变换 167
5.1.6Visual C++编程实现图像傅立叶变换 174
5.2离散余弦变换 180
5.2.1功能和效果 180
5.2.2原理和算法 180
5.2.3 Visual C++编程实现图像离散余弦变换 183
5.3沃尔什变换 189
5.3.1沃尔什函数 189
5.3.2沃尔什变换 191
5.3.3离散沃尔什-哈达玛变换 192
5.3.4快速沃尔什-哈达玛变换 192
5.3.5 Visual C++编程实现图像沃尔什-哈达玛变换 196
5.4基于特征向量的变换 203
5.4.1特征分析 203
5.4.2主向量分析(PCA) 204
5.4.3霍特林(Hotelling)变换 204
5.4.4 SVD变换 205
5.4.5霍特林变换的Visual C++实现 207
5.5小波变换 217
5.5.1连续小波变换 218
5.5.2离散小波变换 220
5.5.3二进小波变换 220
5.5.4小波变换的多分辨率分析 221
5.5.5Mallat算法 222
5.5.6小波变换的Visual C++实现 224
第6章 图像的增强 236
6.1图像的灰度修正 237
6.2模板操作 237
6.3图像的平滑 240
6.3.1功能与效果 240
6.3.2原理与算法 240
6.3.3Visual C++编程实现 241
6.4中值滤波 248
6.4.1功能与效果 248
6.4.2原理与算法 248
6.4.3 Visual C++编程实现 249
6.5图像的锐化 256
6.5.1梯度锐化 256
6.5.2拉普拉斯锐化 261
6.5.3高通滤波器 264
6.6伪彩色和假彩色增强 267
6.6.1伪彩色和假彩色增强技术 267
6.6.2 Visual C++编程实现 268
第7章 数字图像腐蚀、膨胀和细化算法 275
7.1数学形态学 275
7.1.1什么是数学形态学 275
7.1.2数学形态学中的基本符号和术语 276
7.2图像腐蚀(Erosion) 278
7.2.1功能与效果 278
7.2.2原理与算法 279
7.2.3 Visual C++编程实现 282
7.3图像膨胀(Dilation) 290
7.3.1功能和效果 290
7.3.2原理和算法 290
7.3.3腐蚀和膨胀的代数性质 292
7.3.4 Visual C++编程实现 293
7.4开(Open)运算和闭(Close)运算 300
7.4.1功能和效果 300
7.4.2原理和算法 302
7.4.3开、闭运算的代数性质 305
7.4.4 Visual C++编程实现 306
7.5数学形态学的其他运算 317
7.5.1击中/击不中(Hit/Miss)变换 317
7.5.2细化(Thinning) 319
7.5.3 Visual C++编程实现 320
第8章 图像边缘检测、提取及轮廓跟踪 325
8.1边缘检测 325
8.1.1功能与效果 325
8.1.2原理和算法 328
8.1.3 Visual C++编程实现 330
8.2 Hough变换 348
8.2.1功能与效果 348
8.2.2原理和算法 348
8.2.3 Hough变换的Visual C++编程实现 350
8.3轮廓提取与轮廓跟踪 355
8.3.1功能与效果 355
8.3.2原理和算法 356
8.3.3轮廓提取与跟踪的Visual C++编程实现 357
8.4种子填充 362
8.4.1功能与效果 362
8.4.2原理和算法 363
8.4.3种子填充的Visual C++编程实现 366
第9章 图像分割 374
9.1图像分割研究 375
9.1.1图像分割定义 375
9.1.2图像分割的方法 375
9.2并行边界分割 376
9.2.1边界检测的数学基础 377
9.2.2数字图像的边界检测 378
9.2.3并行边界分割的Visual C++实现 380
9.3串行边界分割 395
9.3.1边界跟踪 395
9.3.2边界跟踪的Visual C++实现 396
9.4并行区域分割 400
9.4.1阈值分割 400
9.4.2自适应阈值选取 402
9.4.3阈值分割的Visual C++实现 402
9.5串行区域分割 409
9.5.1区域生长 409
9.5.2分裂合并 410
9.5.3区域生长的Visual C++实现 410
9.6 Canny算子 414
9.6.1 Canny算子介绍 414
9.6.2 Canny算子的Visual C++实现 415
第10章 图像配准 430
10.1图像配准理论基础 431
10.1.1图像变换 431
10.1.2相似性测度 432
10.1.3插值 433
10.1.4最小二乘法 434
10.2图像配准中常用的技术 434
10.2.1点映射 435
10.2.2基于弹性模型的匹配 435
10.2.3特征空间的选择 436
10.2.4相似性测度的选择 436
10.2.5搜索空间和策略的选择 436
10.3 Visual C++编程实现图像配准 437
第11章 图像复原 469
11.1图像退化的数学模型 469
11.1.1退化系统的基本定义 470
11.1.2连续函数的退化模型 470
11.1.3离散函数的退化模型 471
11.2运动模糊图像复原 474
11.2.1由匀速直线运动引起的图像模糊 474
11.2.2运动模糊图像复原的Visual C++实现 476
11.3非约束复原 484
11.3.1非约束复原的基本方法 484
11.3.2逆滤波复原 485
11.3.3逆滤波复原的Visual C++实现 485
11.3.4维纳滤波方法 494
11.3.5维纳滤波的Visual C++实现 495
11.4约束复原 504
第12章 图像压缩编码 505
12.1图像压缩编码理论基础 505
12.2图像编码分类 508
12.3霍夫曼(Huff nan)编码 509
12.3.1霍夫曼编码理论及算法 509
12.3.2霍夫曼编码的Visual C++实现 510
12.4香农-费诺(Shannon-Fano)编码 519
12.4.1香农-费诺编码的理论及算法 519
12.4.2香农-费诺编码的Visual C++实现 519
12.5算术编码 529
12.5.1算术编码的理论及算法 530
12.5.2算术编码的Visual C++实现 532
12.6游程编码(Run Length Coding) 539
12.6.1基本原理 539
12.6.2 PCX文件格式及其编码方法 540
12.6.3编程实现PCX文件格式的读写 541
12.7位平面编码 541
12.7.1位编码理论 541
12.7.2位平面编码的Visual C++实现 543
12.8预测编码 546
12.8.1 DPCM的基本原理 546
12.8.2预测编码的类型 547
12.8.3预测编码的Visual C++实现 548
12.9 JPEG 2000编码 559
12.9.1JPEG 2000概述 560
12.9.2JPEG 2000图像编解码系统 561
12.9.3JPEG 2000图像压缩码流格式 565