第1章 图像基础知识 1
1.1 数字图像与图像处理 1
1.1.1 图像 1
1.1.2 数字图像 3
1.1.3 图像处理的主要内容 5
1.2 颜色模式 6
1.2.1 颜色的分类和特性 6
1.2.2 RGB颜色模式 8
1.2.3 CMYK颜色模式 9
1.2.4 HSV(HSB、HLS)颜色模式 11
1.3 彩色图像显示原理 13
1.3.1 黑白图像显示电路 13
1.3.2 不同类型图像的显示原理 14
1.3.3 调色板 18
1.3.4 调色板原理 18
1.3.5 电视图像采集卡 21
1.3.6 图像数据的存储、传送和处理 21
1.4.2 图像文件的结构 23
1.4.1 图像文件 23
1.4 图像文件概述 23
1.4.3 图像文件的常用参数 24
1.4.4 图像文件的类型 25
1.4.5 图像显示与存储的过程 26
1.4.6 不同显示格式间像素数据的转换 27
1.5 BMP图像文件 31
1.5.1 BMP文件的结构 31
1.5.3 主要参数 32
1.5.2 位图文件头与位图信息头 32
1.5.4 图像文件读入内存与显示 33
第2章 建立应用程序框架 36
2.1 创建Visual C++.NET程序 36
2.1.1 新建Visual C++.NET项目 36
2.1.2 选择应用程序类型 37
2.2 建立菜单 38
2.2.1 添加菜单资源 38
2.2.2 插入顶层菜单项 39
2.2.3 添加菜单项 39
2.2.4 添加命令处理函数 40
2.3.1 处理鼠标键消息 41
2.3 鼠标与键盘事件的响应 41
2.3.2 捕获鼠标 44
2.3.3 处理键盘消息 44
第3章 Visual C++图形编程 47
3.1 设备环境类(CDC) 47
3.1.1 图形设备接口与设备环境 47
3.1.2 MFC应用程序的绘制操作对象 49
3.1.4 在窗口用户区绘图 50
3.1.3 映像模式和坐标系统 50
3.1.5 设备环境的主要属性 51
3.1.6 绘制图形演示程序 52
3.2 画笔与线条图的绘制 53
3.2.1 创建画笔 53
3.2.2 线条图绘制函数 55
3.2.3 线条绘制实例 56
3.3 画刷与区域填充 58
3.3.1 创建画刷 58
3.3.2 封闭曲线绘制函数 60
3.3.3 区域填充实例 61
3.4 字体与文本的显示 62
3.4.1 创建字体 62
3.4.2 库存字体 64
3.4.3 文本绘制函数 64
3.4.4 文本显示实例 65
3.5.1 建立位图 66
3.5.2 位块函数 66
3.5 位图与位块的处理 66
3.5.3 位块函数实例 68
第4章 图像的存取、显示与生成 71
4.1 位图与CImage类 71
4.1.1 位图 71
4.1.2 两种位图的差异 72
4.1.3 CImage类 74
4.1.4 演示程序 76
4.1.5 图像的输入/输出 77
4.2.1 画布(绘图表面) 80
4.2 画布 80
4.2.2 窗口画画面的备份与清除 83
4.2.3 不同画布间数据的传递 84
4.2.4 演示程序 88
4.3 图像处理基本子程序 90
4.3.1 图像数据的存取 90
4.3.2 函数原型及其实现 95
4.3.3 演示程序 99
4.4.1 生成图像及修改调色板演示程序 104
4.4 像素与调色板数据的存取 104
4.4.2 真彩色图像的生成 105
4.4.3 256色彩色图像的生成 106
4.4.4 调色板数据的修改 110
第5章 图像的变化 114
5.1 色调与模式的变化 114
5.1.1 图像色调的变换 114
5.1.2 图像模式的转换 117
5.1.3 演示程序 121
5.2.1 像素与行的复制 122
5.2 简单几何变换 122
5.2.2 图像的镜像 123
5.2.3 图像的马赛克 124
5.2.4 图像的整数倍缩放 125
5.2.5 图像的90°旋转 127
5.2.6 添加命令 129
5.3 图像的非整数倍缩放与任意角旋转 131
5.3.1 图像的几何变换 131
5.3.2 非整数倍缩放 133
5.3.3 任意角旋转 134
5.3.4 添加命令 137
5.4 图像位置的变化 138
5.4.1 动态图像显示原理 138
5.4.2 添加命令 140
5.4.3 矩形区域的选择 140
5.4.4 图像块的操作 143
5.4.5 图像像素数据的显示 150
6.1.1 像素数据的数据结构 153
6.1 像素数据的结构与演示程序框架 153
第6章 图像的点处理 153
6.1.2 图像处理演示程序框架 156
6.2 图像的投影与平均定位 158
6.2.1 投影与平均定位 158
6.2.2 添加命令 161
6.3 灰度直方图 161
6.3.1 图像的灰度直方图 161
6.3.2 直方图的绘制 163
6.3.3 添加命令 166
6.4.1 灰度变换 167
6.4 图像的灰度变换 167
6.4.2 图像的伪彩色显示 168
6.4.3 灰度变换的实现 169
6.4.4 添加命令 174
6.5 图像与图像的运算 175
6.5.1 图像与图像的代数运算 175
6.5.2 图像去背景 176
6.5.3 添加命令 179
7.1.1 邻域处理 181
第7章 图像的邻域处理 181
7.1 邻域与卷积 181
7.1.2 图像卷积 182
7.2 图像平滑 185
7.2.1 平滑去噪声 185
7.2.2 邻域平均 186
7.2.3 中值滤波 187
7.2.4 演示程序 189
7.3.1 边缘检测 192
7.3 一阶微分边缘检测 192
7.3.2 带方向的边缘检测 195
7.3.3 演示程序 198
7.4 二阶微分边缘检测 201
7.4.1 Laplacian边缘检测 201
7.4.2 孤立点、细线与线条的检测 203
7.4.3 Laplacian边缘增强 205
7.4.4 高斯型Laplacian边缘检测(LoG) 206
7.4.5 程序实现 206
7.4.6 演示程序 208
7.5 灰阶边缘的细化 209
7.5.1 灰阶边缘的单点化 209
7.5.2 Sobel边缘细化 210
7.5.3 程序实现 211
7.5.4 演示程序 214
第8章 二值图像的处理 215
8.1 图像的二值化 215
8.1.1 对象与背景的分离 215
8.1.2 二值化方法 217
8.1.3 波形分析法 220
8.1.4 判别函数法 222
8.2 二值化的实现 227
8.2.1 二值化函数 227
8.2.2 演示程序 235
8.2.3 处理实例 240
8.3 非线性边缘检测 241
8.3.1 反射成像模型 241
8.3.2 光密度与对比灵敏度 242
8.3.3 非线性边缘检测 243
8.3.4 程序实现 245
8.3.5 演示程序 246
8.4 线条细化 247
8.4.1 二值图像中像素的性质 247
8.4.2 线条细化的实现 248
8.4.3 程序实现 249
8.4.4 演示程序 251
8.5.1 距离变换模板 253
8.5 距离变换 253
8.5.2 实现程序 255
8.5.3 演示程序 257
第9章 形态学图像处理 259
9.1 形态学基本运算 259
9.1.1 边界与膨胀、腐蚀 259
9.1.2 膨胀、腐蚀的实现 261
9.1.3 开运算、闭运算与骨架 263
9.1.4 演示程序 265
9.2.1 膨胀与腐蚀 269
9.2 形态学运算的集合论定义 269
9.2.2 开运算与闭运算 271
9.2.3 形态学细化 272
9.2.4 模式法细化 275
9.2.5 演示程序 279
9.3 灰值形态学 280
9.3.1 灰阶图像的形态学运算 280
9.3.2 灰值形态学的应用 280
9.3.3 演示程序 281
第10章 彩色图像的处理 287
10.1 RGB与HSV颜色模式间的转换 287
10.1.1 模式间的转换 287
10.1.2 颜色分量的提取 290
10.1.3 颜色轮与选色平面的绘制 293
10.1.4 演示程序 295
10.2 彩色图像的直方图 297
10.2.1 彩色图像的一维直方图 297
10.2.2 二维直方图 300
10.2.3 演示程序 303
10.3 真彩色图像的减色处理 305
10.3.1 减色处理 305
10.3.2 八叉树颜色量化算法 306
10.3.3 程序实现 308
10.3.4 演示程序 312
10.4 彩色图像的边缘检测 313
10.4.1 彩色图像的边缘 313
10.4.2 YIQ与Lab颜色模式 313
10.4.3 程序实现 315
10.4.4 演示程序 320
第11章 轮廓跟踪 323
11.1 链码表与线段表 323
11.1.1 区域的两种表示方法 323
11.1.2 链码表 324
11.1.3 线段表 325
11.1.4 区域参数的计算 326
11.2 轮廓跟踪原理 329
11.2.1 二值化表 329
11.2.2 多区域跟踪 330
11.2.3 单区域跟踪 331
11.2.4 链码表至线段表的转换 334
11.2.5 不同类型的跟踪 338
11.2.6 演示程序 342
11.3 区域参数测量与图像模板制作 346
11.3.1 三点链码和及其计算方法 346
11.3.2 边界的基本参数 348
11.3.3 徒手画制作图像模板 349
11.3.4 鼠标管理 353
11.3.5 演示程序 354
第12章 线段编码 359
12.1 线段编码原理 359
12.1.1 像素标记法 359
12.1.2 行程编码与线段 360
12.1.3 线段编码的步骤 360
12.1.4 程序实现 362
12.1.5 区域数据索引 366
12.1.6 演示程序 367
12.2.1 区域内核与种子点 371
12.2 区域种子点的搜索 371
12.2.2 种子点的搜索 372
12.2.3 种子点搜索步骤 373
12.2.4 程序实现 373
12.2.5 演示程序 376
12.3 极限腐蚀与条件膨胀 379
12.3.1 粘连区域的分割 379
12.3.2 条件膨胀中像素的连接数 380
12.3.3 编程原理 381
12.3.4 程序实现 383
12.3.5 演示程序 387
12.3.6 处理实例 389
第13章 CImage仿真类的建立 390
13.1 Win32图像处理函数 390
13.1.1 Win32中新增的DIB函数 390
13.1.2 DIBSECTION 391
13.1.3 调色板数据的存取 392
13.1.4 位块传输操作 393
13.2.1 VC++编程环境功能的扩展 394
13.2 CImage仿真类 394
13.2.2 CImage仿真类的定义 395
13.2.3 CImage仿真类的实现 396
13.3 图像文件的读写与显示 401
13.3.1 演示程序的建立 401
13.3.2 图像文件的读写 402
13.3.3 图像的显示 404
14.1.1 图像文件的读写过程 406
14.1 概述 406
第14章 图像文件读写 406
14.1.2 BMP文件的读写 407
14.1.3 其他格式图像文件的读写 408
14.2 TGA图像文件 409
14.2.1 TGA文件的结构 409
14.2.2 文件头结构 410
14.2.3 主要参数 411
14.2.4 TGA文件的读写 411
14.3.1 GIF文件的结构 414
14.3 GIF图像文件 414
14.3.2 主要参数 415
14.3.3 GIF文件的读写 416
14.4 PCX图像文件 418
14.4.1 PCX文件的结构 418
14.4.2 文件头结构 419
14.4.3 主要参数 420
14.4.4 行程编码 421
14.4.5 PCX文件的读写 423
14.5.1 TIF文件的结构 426
14.5 TIF图像文件 426
14.5.2 文件内部的数据结构 427
14.5.3 数据编码 428
14.5.4 主要参数 430
14.5.5 TIF文件的读写 430
14.6 JPEG图像文件 436
14.6.1 JPEG文件简介 436
14.6.2 JPEGLIB2函数库 436
14.6.3 JPEG文件的读写 437
参考文献 440