和老规矩一样,本月月考的奖品就是《OpenCV算法精解》两本。不知道什么是月考的同学,请补习下面文章:
规则就说到这里,下面是书籍介绍。
-----------割------------
OpenCV算法精解:基于Python与C++
(系统阐述OpenCV基本概念、数学原理、C++和Python实现!)
张平 编著 ISBN 978-7-121-32495-6
2017年11月出版
定价:79.00元
412页 16开
编辑推荐
Python与C++双实现,助力读者轻松驾驭OpenCV算法,夯实计算机视觉领域基础知识!
基本概念理论+数学原理
详细介绍OpenCV实现对应的函数
注重代码实现(分别给出Python和C++实现)及实际应用
内容提要
《OpenCV算法精解:基于Python与C++》是以OpenCV 为工具学习数字图像处理的入门书。内容由浅入深,每一章都采用阐述基本概念、数学原理、C++ 实现、Python 实现相结合的方法,使初学者循序渐进地掌握数字图像处理技术。本书既注重基本的概念理论及数学原理,也注重其代码实现及实际应用,力求帮助读者全面系统地掌握图像算法的基本技术,同时为掌握OpenCV 打下良好的基础。
《OpenCV算法精解:基于Python与C++》适合入门图像处理和计算机视觉领域的初学者阅读,要求读者具备一定的C++ 或Python 编程基础。
目录
1 OpenCV入门
1.1 初识OpenCV
1.1.1 OpenCV的模块简介
1.1.2 OpenCV 2.4.13与3.2版本的区别
1.2 部署OpenCV
1.2.1 在Visual Studio 2015中 配置OpenCV
1.2.2 OpenCV 2.X C++ API的第一个示例
1.2.3 OpenCV 3.X C++ API的第一个示例
1.2.4 在Anaconda 2中配置OpenCV
1.2.5 OpenCV 2.X Python API的第一个示例
1.2.6 OpenCV 3.X Python API的第一个示例
2 图像数字化
2.1 认识Numpy中的ndarray
2.1.1 构造ndarray对象
2.1.2 访问ndarray中的值
2.2 认识OpenCV中的Mat类
2.2.1 初识Mat
2.2.2 构造单通道Mat对象
2.2.3 获得单通道Mat的基本信息
2.2.4 访问单通道Mat对象中的值
2.2.5 向量类Vec
2.2.6 构造多通道Mat对象
2.2.7 访问多通道Mat对象中的值
2.2.8 获得Mat中某一区域的值
2.3 矩阵的运算
2.3.1 加法运算
2.3.2 减法运算
2.3.3 点乘运算
2.3.4 点除运算
2.3.5 乘法运算
2.3.6 其他运算
2.4 灰度图像数字化
2.4.1 概述
2.4.2 将灰度图像转换为Mat
2.4.3 将灰度图转换为ndarray
2.5 彩色图像数字化
2.5.1 将RGB彩色图像转换为多通道Mat
2.5.2 将RGB彩色图转换为三维的ndarray
2.6 参考文献
3 几何变换
3.1 仿射变换
3.1.1 平移
3.1.2 放大和缩小
3.1.3 旋转
3.1.4 计算仿射矩阵
3.1.5 插值算法
3.1.6 Python实现
3.1.7 C++实现
3.1.8 旋转函数rotate(OpenCV3.X新特性)
3.2 投影变换
3.2.1 原理详解
3.2.2 Python实现
3.2.3 C++实现
3.3 极坐标变换
3.3.1 原理详解
3.3.2 Python实现
3.3.3 C++实现
3.3.4 线性极坐标函数linearPolar(OpenCV 3.X新特性)
3.3.5 对数极坐标函数logPolar(OpenCV 3.X新特性)
3.4 参考文献
4 对比度增强
4.1 灰度直方图
4.1.1 什么是灰度直方图
4.1.2 Python及C++实现
4.2 线性变换
4.2.1 原理详解
4.2.2 Python实现
4.2.3 C++实现
4.3 直方图正规化
4.3.1 原理详解
4.3.2 Python实现
4.3.3 C++实现
4.3.4 正规化函数normalize
4.4 伽马变换
4.4.1 原理详解
4.4.2 Python实现
4.4.3 C++实现
4.5 全局直方图均衡化
4.5.1 原理详解
4.5.2 Python实现
4.5.3 C++实现
4.6 限制对比度的自适应直方图均衡化
4.6.1 原理详解
4.6.2 代码实现
4.7 参考文献
5 图像平滑
5.1 二维离散卷积
5.1.1 卷积定义及矩阵形式
5.1.2 可分离卷积核
5.1.3 离散卷积的性质
5.2 高斯平滑
5.2.1 高斯卷积核的构建及分离性
5.2.2 高斯卷积核的二项式近似
5.2.3 Python实现
5.2.4 C++实现
5.3 均值平滑
5.3.1 均值卷积核的构建及分离性
5.3.2 快速均值平滑
5.3.3 Python实现
5.3.4 C++实现
5.4 中值平滑
5.4.1 原理详解
5.4.2 Python实现
5.4.3 C++实现
5.5 双边滤波
5.5.1 原理详解
5.5.2 Python实现
5.5.3 C++实现
5.6 联合双边滤波
5.6.1 原理详解
5.6.2 Python实现
5.6.3 C++实现
5.7 导向滤波
5.7.1 原理详解
5.7.2 Python实现
5.7.3 快速导向滤波
5.7.4 C++实现
5.8 参考文献
6 阈值分割
6.1 方法概述
6.1.1 全局阈值分割
6.1.2 阈值函数threshold(OpenCV3.X新特性)
6.1.3 局部阈值分割
6.2 直方图技术法
6.2.1 原理详解
6.2.2 Python实现
6.2.3 C++实现
6.3 熵算法
6.3.1 原理详解
6.3.2 代码实现
6.4 Otsu阈值处理
6.4.1 原理详解
6.4.2 Python实现
6.4.3 C++实现
6.5 自适应阈值
6.5.1 原理详解
6.5.2 Python实现
6.5.3 C++实现
6.6 二值图的逻辑运算
6.6.1 “与”和“或”运算
6.6.2 Python实现
6.6.3 C++实现
6.7 参考文献
7 形态学处理
7.1 腐蚀
7.1.1 原理详解
7.1.2 实现代码及效果
7.2 膨胀
7.2.1 原理详解
7.2.2 Python实现
7.2.3 C++实现
7.3 开运算和闭运算
7.3.1 原理详解
7.3.2 Python实现
7.4 其他形态学处理操作
7.4.1 顶帽变换和底帽变换
7.4.2 形态学梯度
7.4.3 C++实现
8 边缘检测
8.1 Roberts算子
8.1.1 原理详解
8.1.2 Python实现
8.1.3 C++实现
8.2 Prewitt边缘检测
8.2.1 Prewitt算子及分离性
8.2.2 Python实现
8.2.3 C++实现
8.3 Sobel边缘检测
8.3.1 Sobel算子及分离性
8.3.2 构建高阶的Sobel算子
8.3.3 Python实现
8.3.4 C++实现
8.4 Scharr算子
8.4.1 原理详解
8.4.2 Python实现
8.4.3 C++实现
8.5 Kirsch算子和Robinson算子
8.5.1 原理详解
8.5.2 代码实现及效果
8.6 Canny边缘检测
8.6.1 原理详解
8.6.2 Python实现
8.6.3 C++实现
8.7 Laplacian算子
8.7.1 原理详解
8.7.2 Python实现
8.7.3 C++实现
8.8 高斯拉普拉斯(LoG)边缘检测
8.8.1 原理详解
8.8.2 Python实现
8.8.3 C++实现
8.9 高斯差分(DoG)边缘检测
8.9.1 高斯拉普拉斯与高斯差分的关系
8.9.2 Python实现
8.9.3 C++实现
8.10 Marr-Hildreth边缘检测
8.10.1 算法步骤详解
8.10.2 Pyton实现
8.10.3 C++实现
8.11 参考文献
9 几何形状的检测和拟合
9.1 点集的最小外包
9.1.1 最小外包旋转矩形
9.1.2 旋转矩形的4个顶点(OpenCV 3.X新特性)
9.1.3 最小外包圆
9.1.4 最小外包直立矩形(OpenCV 3.X新特性)
9.1.5 最小凸包
9.1.6 最小外包三角形( OpenCV 3.X新特性)
9.2 霍夫直线检测
9.2.1 原理详解
9.2.2 Python实现
9.2.3 C++实现
9.3 霍夫圆检测
9.3.1 标准霍夫圆检测
9.3.2 Python实现
9.3.3 基于梯度的霍夫圆检测
9.3.4 基于梯度的霍夫圆检测函数HoughCircles
9.4 轮廓
9.4.1 查找、绘制轮廓
9.4.2 外包、拟合轮廓
9.4.3 轮廓的周长和面积
9.4.4 点和轮廓的位置关系
9.4.5 轮廓的凸包缺陷
9.5 参考文献
10 傅里叶变换
10.1 二维离散的傅里叶(逆)变换
10.1.1 数学理解篇
10.1.2 快速傅里叶变换
10.1.3 C++实现
10.1.4 Python实现
10.2 傅里叶幅度谱与相位谱
10.2.1 基础知识
10.2.2 Python实现
10.2.3 C++实现
10.3 谱残差显著性检测
10.3.1 原理详解
10.3.2 Python实现
10.3.3 C++实现
10.4 卷积与傅里叶变换的关系
10.4.1 卷积定理
10.4.2 Python实现
10.5 通过快速傅里叶变换计算卷积
10.5.1 步骤详解
10.5.2 Python实现
10.5.3 C++实现
10.6 参考文献
11 频率域滤波
11.1 概述及原理详解
11.2 低通滤波和高通滤波
11.2.1 三种常用的低通滤波器
11.2.2 低通滤波的C++实现
11.2.3 低通滤波的Python实现
11.2.4 三种常用的高通滤波器
11.3 带通和带阻滤波
11.3.1 三种常用的带通滤波器
11.3.2 三种常用的带阻滤波器
11.4 自定义滤波器
11.4.1 原理详解
11.4.2 C++实现
11.5 同态滤波
11.5.1 原理详解
11.5.2 Python实现
11.6 参考文献
12 色彩空间
12.1 常见的色彩空间
12.1.1 RGB色彩空间
12.1.2 HSV色彩空间
12.1.3 HLS色彩空间
12.2 调整彩色图像的饱和度和亮度
12.2.1 Python实现
12.2.2 C++实现
作者简介
张平,数学与应用数学专业,算法工程师。主要从事图像算法研究和产品的应用开发,此外还从事有关机器学习、数据挖掘算法的应用研发工作。
前言
数字图像处理,即用计算机对图像进行处理。初期,图像数字化的设备是非常昂贵和复杂的,随着互联网、人工智能、智能硬件等技术的迅猛发展,硬件成本越来越便宜,使得在我们生活中产生了大量的图像和视频,与此同时,计算机视觉技术在人类生活中起到的作用也越来越大,其在商业、工业、医学等领域有着广泛的应用。
如今,连市场上很低价位的智能手机都可以配置一组高分辨率的摄像头,安卓和苹果手机应用市场中出现了大量基于图像处理的App,比如Rookie Cam、VSCO、Snapseed 等,这些App 内均有大量图像处理方法,如图像的裁剪、缩放、旋转、美颜、饱和度和亮度的调整及其各种滤镜方法等,通常可以满足人们日常生活中拍照娱乐的需求。我们经常使用的购物App,如淘宝中的“拍立淘”功能,可以用它拍下我们喜欢的物品,然后会自动检索出与其匹配的商品。还有比如基于人脸识别的手机支付、考勤系统等,基于字符识别的智能停车系统等,可见数字图像处理已经慢慢地和我们的生活、娱乐息息相关。
本书整体架构及特色
OpenCV 作为一款开源的计算机视觉开发工具包,在计算机视觉领域扮演着非常重要的角色,它在提供源码的同时,给出了非常完整的OpenCV 函数手册及其示例手册,这两个文档也是学习OpenCV 的第一手和最重要的资料。这些优势使得数千名研究人员在视觉领域能够获得更高的生产力,并帮助学生和专业人员快速开发和研究有关的机器视觉项目,而我也是其中的众多受益者之一。
本书大体按照经典教材冈萨雷斯的《数字图像处理(第三版)》和OpenCV 使用手册(主要是improc 模块)的知识脉络,并在此基础上加入了某些具体方向的最新方法,试图帮助初学者更加快速、系统地掌握基本的数字图像处理技术的数学原理,以及如何将抽象的数学原理转换为代码实现的方法,然后详细介绍了OpenCV 实现对应的函数,并分别给出了C++ 接口和Python 接口的使用方法,以及OpenCV 2.X 和OpenCV 3.X 的区别。
本书面向的读者
本书中图像算法的数学原理部分适合数字图像处理的初学者,示例的C++ 部分适合具备C++ 编程基础的读者,示例的Python 部分适合具备Python 编程基础的读者,同时对于使用OpenCV 2.X 版本的读者,书中介绍了OpenCV 3.X 版本的新特性,这样可以快速过渡到3.X 版本。
致谢
特别感谢电子工业出版社博文视点的编辑郑柳洁老师,在写这本书的过程中,她不厌其烦地解答我遇到的各种各样的问题,真心感谢她一直以来的支持和肯定。
感谢CSDN 的白羽中帮助我联系到了博文视点的杨中兴和郑柳洁老师,没有您的帮助,将无法促成这本书的出版。
感谢我的朋友戴传军和张莹莹给这本书提出了宝贵的建议,以及帮助我完成了书中一些非常重要的图表。
感谢我的父母、姐姐一直以来对我生活和工作的支持。
感谢OpenCV 开源库的所有贡献者。