《Visual C++数字图像处理开发入门与编程实践》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:左飞,万晋森,刘航编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2008
  • ISBN:7121057093
  • 页数:642 页
图书介绍:本书以Visual C++程序设计为出发点,以数字图像处理理论为框架,综合了设备无关位图、图形设备接口和开源计算机视觉类库等三大技术,并穿插上百个典型实例和十余个综合实例,全面系统地讲述了在Visual C++环境下进行数字图像处理编程的技术和方法。全书共分成15章,分别讲述了Visual C++数字图像处理基础、Visual C++ 2005 基础知识、色彩空间、图像文件格式、设备无关位图、图形设备接口、开源计算机视觉类库、图像的显示特效、图像的点运算、图像的几何变换、图像的增强处理、常见滤镜效果、边缘检测和轮廓跟踪、图像形态学、图像分割与目标识别等内容。本书内容源于实践,贴近应用,深入浅出,通俗易懂,紧跟时代步伐,牢牢把握集成开发环境进化的新特性,从案例出发强调新环境下的新方法。

第1章 Visual C++与数字图像处理 1

1.1 数字图像处理概述 2

1.1.1 图像与数字图像 2

1.1.2 数字图像处理研究的内容 4

1.1.3 数字图像处理的应用 6

1.2 Visual C++概述 8

1.2.1 C++语言简介 8

1.2.2 Visual C++简介 16

1.2.3 Visual C++ 2005集成开发环境 19

1.3 在Visual C++中处理数字图像 22

1.3.1 位图和调色板 22

1.3.2 图形设备接口 23

1.3.3 OpenCV 26

1.4 本章小结 26

第2章 Visual C++ 2005基础知识 27

2.1 利用向导生成应用程序 28

2.1.1 创建新项目 28

2.1.2 编译并运行工程 35

2.2 添加资源 36

2.2.1 新建资源 36

2.2.2 导入资源 38

2.3 MFC编程基础 38

2.3.1 MFC应用程序框架 39

2.3.2 Windows消息和事件驱动 40

2.3.3 常用消息 41

2.3.4 MFC的消息映射 42

2.4 消息与事件响应 44

2.4.1 添加类 44

2.4.2 添加类成员 45

2.4.3 添加消息响应 46

2.4.4 添加事件 47

2.4.5 添加函数重写 48

2.4.6 手动添加消息响应 50

2.5 对话框的使用 51

2.5.1 创建并编辑对话框资源 51

2.5.2 模式对话框和无模式对话框 55

2.5.3 消息对话框 57

2.5.4 共用对话框 59

2.6 常用控件的使用 64

2.6.1 按钮类控件 64

2.6.2 文本框 67

2.6.3 列表框 70

2.6.4 组合框 74

2.6.5 静态类控件 76

2.7 菜单栏和工具栏 77

2.7.1 菜单栏的使用 77

2.7.2 工具栏的使用 83

2.8 本章实例:简单的画图程序 87

2.8.1 实例预览 88

2.8.2 概要设计 88

2.8.3 完成实例编码 91

2.9 本章小结 98

第3章 认识色彩空间 99

3.1 颜色的基本知识 100

3.1.1 颜色的定义 100

3.1.2 颜色的属性 102

3.2 常用色彩空间简介 103

3.2.1 RGB颜色空间 103

3.2.2 CMY/CMYK颜色空间 105

3.2.3 HSV/HSB(HSI/HCI/HSL)颜色空间 106

3.2.4 CIE系列颜色空间 109

3.2.5 YUV/YCbCr颜色空间 111

3.3 色彩空间的转换方法 112

3.3.1 RGB转换到HSV的方法 113

3.3.2 RGB转换到HSI的方法 114

3.3.3 RGB转换到YUV的方法 115

3.3.4 RGB转换到YCbCr的方法 116

3.4 本章实例:Photoshop色彩编辑器 118

3.4.1 需求分析 118

3.4.2 概要设计 119

3.4.3 完成实例编码 121

3.5 本章小结 130

第4章 图像文件格式 131

4.1 图像文件概述 132

4.1.1 图像文件 132

4.1.2 图像文件的一般结构 132

4.1.3 图像文件的常用参数 133

4.2 BMP文件格式 134

4.2.1 文件结构 135

4.2.2 文件头和信息头 135

4.2.3 主要参数 136

4.3 GIF文件格式 136

4.3.1 GIF格式简介 137

4.3.2 GIF文件结构 137

4.3.3 GIF文件块的结构 138

4.4 PNG文件格式 142

4.4.1 PNG格式简介 142

4.4.2 PNG文件结构 143

4.4.3 PNG中的关键数据块 144

4.5 图像的压缩编码 146

4.5.1 Huffman编码 147

4.5.2 LZW编码 148

4.5.3 行程编码 151

4.5.4 离散余弦变换 151

4.6 JPEG文件格式 153

4.6.1 JPEG文件概述 153

4.6.2 JPEG编码/解码的理论基础 153

4.6.3 JPEG文件的格式 160

4.7 本章实例:JPEG解码程序 163

4.7.1 概要设计 163

4.7.2 完成实例编码 169

4.8 本章小结 188

第5章 使用DIB处理数字图像 189

5.1 设备相关位图和设备无关位图 190

5.1.1 设备相关位图(DDB) 190

5.1.2 设备无关位图(DIB) 190

5.2 CBitmap类 190

5.2.1 创建DDB 191

5.2.2 CBitmap中的成员函数 193

5.2.3 应用DDB显示图像 193

5.2.4 应用DDB显示大图像 195

5.3 进一步了解DIB 203

5.3.1 DIB的结构 203

5.3.2 DIB信息段 203

5.3.3 位图数据 205

5.3.4 与DIB有关的函数 206

5.4 本章实例:DIB类的封装 208

5.4.1 设计 208

5.4.2 构造函数 210

5.4.3 DIB位图的显示 214

5.4.4 BMP文件的存储 215

5.5 本章小结 216

第6章 使用GDI+处理数字图像 217

6.1 GDI+简介 218

6.1.1 GDI+概述 218

6.1.2 GDI+的结构 218

6.2 在Visual C++中应用GDI+ 219

6.2.1 GDI+在Visual C++ 2005中的配置方法 219

6.2.2 在Visual 6.0中使用GDI+ 221

6.3 GDI+基础 222

6.3.1 Graphics类 222

6.3.2 GDI+的基本数据类型 225

6.3.3 GDI+中的颜色 226

6.4 GDI+处理图像的基本方法 228

6.4.1 GDI+的图像类 228

6.4.2 创建图像对象 229

6.4.3 图像的显示和缩放 232

6.4.4 图像的基本处理方法 237

6.5 处理图像的色彩 244

6.5.1 ColorMatrix结构体 244

6.5.2 改变图像的透明度 245

6.5.3 将图像转换为灰度图 249

6.5.4 改变图像的亮度 251

6.5.5 改变图像的对比度 253

6.6 本章实例:播放GIF动画 255

6.6.1 播放原理分析 255

6.6.2 处理过程 256

6.6.3 具体实现 257

6.7 本章小结 260

第7章 使用OpenCV处理数字图像 261

7.1 OpenCV简介 262

7.1.1 OpenCV概述 262

7.1.2 OpenCV的特点 263

7.1.3 OpenCV的命名规则 263

7.1.4 OpenCV的应用举例 264

7.2 OpenCV的安装与配置 266

7.2.1 OpenCV在Visual C++ 6.0下的安装与配置 266

7.2.2 OpenCV在Visual C++ 2005下的安装与配置 268

7.3 OpenCV的结构 271

7.3.1 OpenCV的体系结构 271

7.3.2 OpenCV的函数结构 271

7.3.3 OpenCV的功能结构 273

7.3.4 OpenCV的数据结构 274

7.4 本章实例:利用OpenCV显示图像 275

7.4.1 图像文件的载入与显示 275

7.4.2 图像文件的创建、保存和复制 277

7.5 本章小结 282

第8章 常见图像显示特效 283

8.1 显示特效概述 284

8.1.1 显示特效基础 284

8.1.2 显示特效过程 286

8.1.3 显示特效类 287

8.2 扫描显示特效 289

8.2.1 特效预览 289

8.2.2 基本原理和实现方法 289

8.2.3 编程实现 290

8.3 移动显示特效 292

8.3.1 特效预览 292

8.3.2 基本原理和实现方法 292

8.3.3 编程实现 293

8.4 百叶窗显示特效 295

8.4.1 特效预览 295

8.4.2 基本原理和实现方法 295

8.4.3 编程实现 297

8.5 栅条显示特效 298

8.5.1 特效预览 298

8.5.2 基本原理和实现方法 299

8.5.3 编程实现 300

8.6 马赛克显示特效 301

8.6.1 特效预览 301

8.6.2 基本原理和实现方法 302

8.6.3 编程实现 303

8.7 雨滴显示特效 304

8.7.1 特效预览 304

8.7.2 基本原理和实现方法 304

8.7.3 编程实现 305

8.8 本章实例:类似ACDSee的图像浏览工具 306

8.8.1 实例预览 306

8.8.2 概要设计 307

8.8.3 完成实例编码 311

8.9 本章小结 324

第9章 图像的点运算 325

9.1 灰度直方图 326

9.1.1 灰度直方图 326

9.1.2 基本原理 328

9.1.3 编程实现 328

9.2 灰度线性变换 338

9.2.1 基本原理 338

9.2.2 编程实现 341

9.3 灰度非线性变换 344

9.3.1 灰度对数变换 344

9.3.2 灰度幂次变换 350

9.3.3 灰度指数变换 353

9.4 灰度阈值变换 354

9.4.1 基本原理 355

9.4.2 编程实现 355

9.5 灰度拉伸 357

9.5.1 基本原理 358

9.5.2 编程实现 360

9.6 灰度均衡 364

9.6.1 基本原理 364

9.6.2 编程实现 365

9.7 本章小结 366

第10章 对图像进行几何变换 367

10.1 图像几何变换的基本理论 368

10.1.1 图像几何变换概述 368

10.1.2 图像几何变换的数学描述 370

10.2 图像的平移变换 371

10.2.1 效果预览 371

10.2.2 基本原理 371

10.2.3 编程实现 373

10.3 图像的镜像变换 377

10.3.1 效果预览 377

10.3.2 基本原理 378

10.3.3 编程实现 379

10.4 图像的转置 383

10.4.1 效果预览 383

10.4.2 基本原理 384

10.4.3 编程实现 385

10.5 图像的缩放 386

10.5.1 效果预览 387

10.5.2 基本原理 387

10.5.3 插值算法介绍 388

10.5.4 编程实现 392

10.6 图像的旋转 398

10.6.1 效果预览 398

10.6.2 基本原理 398

10.6.3 编程实现 403

10.7 使用GDI+实现图像的几何变换 409

10.7.1 GDI+的变换操作 409

10.7.2 平移 410

10.7.3 缩放 412

10.7.4 旋转 413

10.7.5 变换的组合 417

10.7.6 利用矩阵进行其他几何变化 419

10.8 本章小结 422

第11章 图像的增强处理 423

11.1 图像的简单平滑 424

11.1.1 邻域处理的基本概念 424

11.1.2 图像的简单平滑原理 427

11.1.3 图像简单平滑的算法实现 427

11.2 图像的高斯平滑 431

11.2.1 平滑线性滤波器 432

11.2.2 高斯平滑的原理 432

11.2.3 高斯平滑的算法实现 433

11.3 图像的中值滤波 436

11.3.1 统计排序滤波器 437

11.3.2 图像中值滤波的原理 437

11.3.3 图像中值滤波的算法实现 439

11.4 应用OpenCV对图像进行平滑处理 445

11.4.1 函数描述 445

11.4.2 概要设计 446

11.4.3 编码实现 446

11.5 拉普拉斯边缘增强 452

11.5.1 图像的锐化 452

11.5.2 图像拉普拉斯锐化的原理 452

11.5.3 图像拉普拉斯锐化的算法实现 453

11.6 Sobel边缘细化 457

11.6.1 Sobel边缘细化的原理 457

11.6.2 Sobel边缘细化的编程实现 459

11.7 本章小节 464

第12章 常见滤镜效果 465

12.1 图像的反色效果 466

12.1.1 底片效果 467

12.1.2 实现方法及原理 467

12.1.3 编程实现 467

12.2 图像的雕刻效果 469

12.2.1 雕刻效果 469

12.2.2 实现方法及原理 469

12.2.3 编程实现 470

12.3 图像的黑白效果 472

12.3.1 黑白效果 472

12.3.2 实现方法及原理 473

12.3.3 编程实现 473

12.4 图像的雾化效果 475

12.4.1 雾化效果 475

12.4.2 图像点阵的随机化处理 476

12.4.3 编程实现 476

12.5 图像的马赛克效果 483

12.5.1 马赛克效果 483

12.5.2 实现方法及原理 483

12.5.3 编程实现 484

12.6 图像的素描效果 487

12.6.1 素描效果 487

12.6.2 实现方法及原理 487

12.6.3 编程实现 487

12.7 本章小结 490

第13章 边缘检测和轮廓跟踪 491

13.1 边缘检测 492

13.1.1 边缘检测的基本概念 492

13.1.2 常规边缘检测 493

13.1.3 带方向的边缘检测 498

13.1.4 拉普拉斯算子 503

13.2 Hough变换 509

13.2.1 Hough变换的原理 509

13.2.2 编程实现 515

13.3 种子算法 520

13.3.1 算法介绍 520

13.3.2 编程实现 523

13.4 轮廓跟踪 526

13.4.1 区域表示方法 526

13.4.2 单区域跟踪 536

13.4.3 多区域跟踪 539

13.5 本章实例:应用OpenCV进行边缘检测 541

13.5.1 Canny准则 541

13.5.2 Canny算法 542

13.5.3 在OpenCV中使用Canny算法 543

13.6 本章小结 548

第14章 图像的形态学处理 549

14.1 数学形态学 550

14.2 一些必要的概念和符号约定 550

14.3 图像的腐蚀 554

14.3.1 腐蚀原理 554

14.3.2 编程实现 557

14.4 图像的膨胀 562

14.4.1 膨胀原理 562

14.4.2 编程实现 565

14.5 腐蚀和膨胀的性质及应用 568

14.5.1 腐蚀和膨胀的代数性质 568

14.5.2 腐蚀和膨胀的应用 571

14.6 开运算和闭运算 577

14.6.1 开运算 578

14.6.2 闭运算 579

14.6.3 编程实现 580

14.6.4 开运算和闭运算的代数性质 582

14.7 图像形态学的其他运算 584

14.7.1 击中/不击中运算 584

14.7.2 细化处理 588

14.8 本章实例:应用OpenCV进行形态学处理 592

14.8.1 函数描述 592

14.8.2 概要设计 592

14.8.3 编码实现 593

14.9 本章小结 598

第15章 图像分割与目标识别 599

15.1 图像的分割 601

15.1.1 基于幅度的图像分割 601

15.1.2 基于区域的图像分割 606

15.1.3 基于形态学分水岭的图像分割 611

15.2 图像的匹配 614

15.2.1 基本概念 614

15.2.2 模板匹配算法 615

15.2.3 序贯相似性检测算法 616

15.2.4 幅度排序算法 618

15.3 模式的识别 620

15.3.1 基本概念 620

15.3.2 统计模式识别 621

15.3.3 其他模式识别方法简介 627

15.4 本章实例:静态人脸检测程序 628

15.4.1 人脸检测概述 628

15.4.2 算法分析 629

15.4.3 应用OpenCV进行人脸检测 633

15.5 本章小结 640

参考文献 641