使用opencv和python实现图像的智能处理_[套装书]机器学习:基于OpenCV和Python的智能图像处理+机器学习:使用OpenCV和Python进行智能图像处理(2册)...

---------------------------机器学习:基于OpenCV和Python的智能图像处理---------------------------

前言

第1章 智能图像处理入门 1

1.1 智能图像处理概述 1

1.2 环境搭建 2

1.2.1 安装Python 2

1.2.2 安装PyCharm 8

1.2.3 PyCharm的初始化 12

1.2.4 OpenCV及常用库的配置 15

1.3 思考与练习 17

第2章 Python基础 18

2.1 数据类型 18

2.1.1 数值类型 18

2.1.2 字符串类型 20

2.1.3 布尔类型 20

2.2 变量与常量 21

2.3 运算符 21

2.3.1 运算符简介 21

2.3.2 运算符优先级 21

2.4 选择与循环 22

2.4.1 if语句 22

2.4.2 while循环 25

2.4.3 for循环 27

2.4.4 break和continue语句 29

2.5 列表与元组 31

2.5.1 创建 31

2.5.2 查询 32

2.5.3 修改 33

2.5.4 删除 34

2.6 字典 35

2.6.1 字典的创建 35

2.6.2 字典的常规操作 36

2.6.3 字典的遍历 37

2.7 函数 38

2.7.1 函数的定义与调用 38

2.7.2 参数传递 40

2.8 面向对象编程 42

2.8.1 类与对象 42

2.8.2 继承与多态 44

2.9 思考与练习 46

第3章 图像处理基础 48

3.1 图像的基本表示方法 48

3.1.1 二值图像 48

3.1.2 灰度图像 48

3.1.3 彩色图像 49

3.2 图像处理的基本操作 50

3.2.1 图像的读取、显示和保存 50

3.2.2 图像通道的基本操作 53

3.2.3 图像属性的获取 55

3.3 初识Numpy.array 56

3.4 图像运算 57

3.4.1 加法运算 57

3.4.2 减法运算 59

3.4.3 乘法运算 61

3.4.4 除法运算 63

3.4.5 逻辑运算 64

3.5 图像的色彩空间转换 68

3.5.1 色彩空间类型转换函数 68

3.5.2 RGB色彩空间 68

3.5.3 GRAY色彩空间 69

3.5.4 YCrCb色彩空间 70

3.5.5 HSV色彩空间 71

3.6 思考与练习 73

第4章 图像几何变换 74

4.1 仿射变换 74

4.1.1 平移 75

4.1.2 缩放 76

4.1.3 旋转 77

4.2 重映射 78

4.2.1 复制 78

4.2.2 绕x轴翻转 80

4.2.3 绕y轴翻转 82

4.2.4 绕x轴与y轴翻转 85

4.3 投影变换 87

4.3.1 原理简介 87

4.3.2 Python实现 87

4.4 极坐标变换 89

4.4.1 原理简介 89

4.4.2 Python实现 90

4.5 思考与练习 93

第5章  图像直方图处理 94

5.1 直方图概述 94

5.2 直方图的绘制 95

5.2.1 用OpenCV绘制直方图 95

5.2.2 用pyplot绘制直方图 98

5.3 直方图正规化 99

5.3.1 正规化原理 99

5.3.2 Python实现 99

5.3.3 使用normalize实现 100

5.4 直方图均衡化 102

5.4.1 均衡化原理简介 102

5.4.2 Python实现 104

5.4.3 自适应直方图均衡化 108

5.5 思考与练习 110

第6章 图像平滑滤波处理 111

6.1 图像平滑概述 111

6.2 高斯滤波 112

6.2.1 原理简介 112

6.2.2 Python实现 113

6.3 均值滤波 114

6.3.1 原理简介 114

6.3.2 Python实现 115

6.4 方框滤波 117

6.4.1 原理简介 117

6.4.2 Python实现 117

6.5 中值滤波 119

6.5.1 原理简介 119

6.5.2 Python实现 120

6.6 双边滤波 121

6.6.1 原理简介 121

6.6.2 Python实现 122

6.7 2D卷积核的实现 123

6.8 思考与练习 125

第7章 图像阈值处理 126

7.1 阈值处理概述 126

7.2 全局阈值处理 126

7.2.1 原理简介 126

7.2.2 OpenCV阈值函数cv2.threshold() 127

7.2.3 阈值分割实例 127

7.3 局部阈值处理 136

7.3.1 原理简介 136

7.3.2 cv2.adaptiveThreshold()函数 137

7.4 Otsu阈值处理 139

7.4.1 原理简介 139

7.4.2 Python实现 140

7.5 思考与练习 141

第8章 图像形态学处理 142

8.1 腐蚀 142

8.1.1 原理简介 142

8.1.2 Python实现 143

8.2 膨胀 145

8.2.1 原理简介 145

8.2.2 Python实现 146

8.3 形态学梯度运算 148

8.3.1 原理简介 148

8.3.2 Python实现 148

8.4 开运算与闭运算 149

8.4.1 原理简介 150

8.4.2 Python实现 150

8.5 黑帽与礼帽运算 153

8.5.1 原理简介 153

8.5.2 Python实现 154

8.6 思考与练习 155

第9章  图像分割处理 157

9.1 分水岭算法的介绍与实现 157

9.1.1 算法原理 157

9.1.2 OpenCV中的相关函数 158

9.2 图像的金字塔分割 165

9.2.1 图像金字塔简介 165

9.2.2 OpenCV中的相关函数 166

9.2.3 用金字塔算法实现图像分割 170

9.3 思考与练习 171

第10章 图像梯度及边缘检测 172

10.1 Sobel算子 172

10.1.1 原理简介 172

10.1.2 Python实现 173

10.2 Scharr算子 176

10.2.1 原理简介 176

10.2.2 Python实现 176

10.3 Canny边缘检测 179

10.3.1 原理简介 179

10.3.2 Python实现 180

10.4 Laplacian算子 182

10.4.1 原理简介 182

10.4.2 Python实现 182

10.5 高斯拉普拉斯边缘检测 184

10.5.1 原理简介 184

10.5.2 Python实现 185

10.6 思考与练习 187

第11章 图像轮廓检测与拟合 188

11.1 OpenCV中轮廓的查找与绘制 188

11.1.1 轮廓的查找与绘制 188

11.1.2 查找绘制轮廓的实例 189

11.2 OpenCV中轮廓的周长与面积 192

11.2.1 周长计算:cv2.arcLength()函数 192

11.2.2 面积计算:cv2.contourArea()函数 193

11.3 几何图形的最小外包与拟合 194

11.3.1 最小外包矩形 195

11.3.2 最小外包圆形 196

11.3.3 最小外包三角形 197

11.3.4 最小外包椭圆 199

11.3.5 最优拟合直线 200

11.4 霍夫检测 201

11.4.1 霍夫直线检测 201

11.4.2 霍夫圆检测 204

11.5 思考与练习 205

第12章 人脸识别实现 207

12.1 绘图基础 207

12.1.1 绘制直线:cv2.line()函数 207

12.1.2 绘制矩形:cv2.rectangle()函数 209

12.1.3 绘制圆形:cv2.circle()函数 210

12.1.4 绘制椭圆:cv2.ellipse()函数 212

12.1.5 在图形上绘制文字:cv2.putText()函数 213

12.2 人脸检测 214

12.2.1 OpenCV中级联分类器的使用 215

12.2.2 Python实现 215

12.3 人脸识别 217

12.3.1 原理简介 217

12.3.2 相关函数 217

12.3.3 LBPH人脸识别的Python实现 218

12.4 用Fisherfaces与EigenFaces算法进行人脸识别 220

12.4.1 相关函数 220

12.4.2 Python实现 221

12.5 思考与练习 223

---------------------------机器学习:使用OpenCV和Python进行智能图像处理---------------------------

译者序

前言

审校者简介

第1章 品味机器学习 1

1.1 初步了解机器学习 1

1.2 机器学习可以解决的事情 3

1.3 初步了解 Python 4

1.4 初步了解 OpenCV 4

1.5 安装 5

1.5.1 获取本书最新的代码 5

1.5.2 掌握 Python Anaconda 6

1.5.3 在 conda 环境中安装OpenCV 8

1.5.4 验证安装结果 9

1.5.5 一睹 OpenCV ML 模块 11

1.6 总结 11

第2章 使用 OpenCV 和 Python处理数据 12

2.1 理解机器学习流程 12

2.2 使用 OpenCV 和 Python 处理数据 14

2.2.1 创建一个新的 IPython 或 Jupyter 会话 15

2.2.2 使用 Python 的 NumPy包处理数据 16

2.2.3 在 Python 中载入外部数据集 20

2.2.4 使用 Matplotlib 进行数据可视化 21

2.2.5 使用C++ 中 OpenCV 的 TrainData 容器处理数据 26

2.3 总结 27

第3章 监督学习的第一步 28

3.1 理解监督学习 28

3.1.1 了解 OpenCV 中的监督学习 29

3.1.2 使用评分函数评估模型性能 30

3.2 使用分类模型预测类别 35

3.2.1 理解 k-NN 算法 37

3.2.2 使用 OpenCV实现 k-NN 37

3.3 使用回归模型预测连续结果 43

3.3.1 理解线性回归 43

3.3.2 使用线性回归预测波士顿房价 44

3.3.3 应用 Lasso 回归和ridge 回归 48

3.4 使用逻辑回归对鸢尾花种类进行分类 48

3.5 总结 53

第4 数据表示与特征工程 54

4.1 理解特征工程 54

4.2 数据预处理 55

4.2.1 特征标准化 56

4.2.2 特征归一化 57

4.2.3 特征缩放到一定的范围 57

4.2.4 特征二值化 58

4.2.5 缺失数据处理 58

4.3 理解降维 59

4.3.1 在OpenCV 中实现主成分分析 61

4.3.2 实现独立成分分析 64

4.3.3 实现非负矩阵分解 65

4.4 类别变量表示 66

4.5 文本特征表示 68

4.6 图像表示 69

4.6.1 使用色彩空间 69

4.6.2 图像角点检测 71

4.6.3 使用尺度不变特征变换 72

4.6.4 使用加速健壮特征 74

4.7 总结 75

第5章 使用决策树进行医疗诊断 76

5.1 理解决策树 76

5.1.1 构建第一个决策树 79

5.1.2 可视化训练得到的决策树 85

5.1.3 深入了解决策树的内部工作机制 87

5.1.4 特征重要性评分 88

5.1.5 理解决策规则 89

5.1.6 控制决策树的复杂度 90

5.2 使用决策树进行乳腺癌的诊断 90

5.2.1 载入数据集 91

5.2.2 构建决策树 92

5.3 使用决策树进行回归 96

5.4 总结 99

第6章 使用支持向量机检测行人 100

6.1 理解线性支持向量机 100

6.1.1 学习最优决策边界 101

6.1.2 实现我们的第一个支持向量机 102

6.2 处理非线性决策边界 107

6.2.1 理解核机制 108

6.2.2 认识我们的核 109

6.2.3 实现非线性支持向量机 109

6.3 自然环境下的行人检测 110

6.3.1 获取数据集 111

6.3.2 初窥方向梯度直方图 113

6.3.3 生成负样本 114

6.3.4 实现支持向量机 116

6.3.5 模型自举 116

6.3.6 在更大的图像中检测行人 118

6.3.7 进一步优化模型 120

6.4 总结 121

第7章 使用贝叶斯学习实现垃圾邮件过滤 122

7.1 理解贝叶斯推断 122

7.1.1 概率论的短暂之旅 123

7.1.2 理解贝叶斯定理 124

7.1.3 理解朴素贝叶斯分类器 126

7.2 实现第一个贝叶斯分类器 127

7.2.1 创建一个练习数据集 127

7.2.2 使用一个正态贝叶斯分类器对数据分类 128

7.2.3 使用一个朴素贝叶斯分类器对数据分类 131

7.2.4 条件概率的可视化 132

7.3 使用朴素贝叶斯分类器对邮件分类 134

7.3.1 载入数据集 134

7.3.2 使用Pandas构建数据矩阵 136

7.3.3 数据预处理 137

7.3.4 训练正态贝叶斯分类器 138

7.3.5 使用完整的数据集进行训练 139

7.3.6 使用n-gram提升结果 139

7.3.7 使用TD-IDF提升结果 140

7.4 总结 141

第8章 使用非监督学习发现隐藏结构 142

8.1 理解非监督学习 142

8.2 理解k均值聚类 143

8.3 理解期望最大化 145

8.3.1 实现期望最大化解决方案 146

8.3.2 了解期望最大化的局限 148

8.4 使用k均值压缩色彩空间 154

8.4.1 真彩色调色板的可视化 154

8.4.2 使用k均值减少调色板 157

8.5 使用k均值对手写数字分类 159

8.5.1 载入数据集 159

8.5.2 运行k均值 159

8.6 把聚类组织成层次树 161

8.6.1 理解层次聚类 161

8.6.2 实现凝聚层次聚类 162

8.7 总结 163

第9章 使用深度学习对手写数字分类 164

9.1 理解McCulloch-Pitts神经元 164

9.2 理解感知器 167

9.3 实现第一个感知器 169

9.3.1 生成练习数据集 170

9.3.2 使用数据拟合感知器 171

9.3.3 评估感知器分类器 171

9.3.4 把感知器应用到线性不可分的数据上 173

9.4 理解多层感知器 174

9.4.1 理解梯度下降 175

9.4.2 使用反向传播训练多层感知器 178

9.4.3 在OpenCV中实现多层感知器 179

9.5 了解深度学习 183

9.6 手写数字分类 186

9.6.1 载入MNIST数据集 187

9.6.2 MNIST数据集预处理 188

9.6.3 使用OpenCV训练一个MLP 189

9.6.4 使用Keras训练一个深度神经网络 190

9.7 总结 192

第10章 组合不同算法为一个整体 193

10.1 理解集成方法 193

10.1.1 理解平均集成 195

10.1.2 理解提升集成 197

10.1.3 理解堆叠集成 200

10.2 组合决策树为随机森林 200

10.2.1 理解决策树的不足 200

10.2.2 实现第一个随机森林 204

10.2.3 使用scikit-learn实现一个随机森林 205

10.2.4 实现极端随机树 206

10.3 使用随机森林进行人脸识别 208

10.3.1 载入数据集 208

10.3.2 预处理数据集 209

10.3.3 训练和测试随机森林 210

10.4 实现AdaBoost 212

10.4.1 使用OpenCV实现AdaBoost 212

10.4.2 使用scikit-learn实现AdaBoost 213

10.5 组合不同模型为一个投票分类器 214

10.5.1 理解不同的投票机制 214

10.5.2 实现一个投票分类器 215

10.6 总结 217

第11章 通过超参数调优选择合适的模型 218

11.1 评估一个模型 218

11.1.1 评估模型错误的方法 219

11.1.2 评估模型正确的方法 220

11.1.3 选择最好的模型 221

11.2 理解交叉验证 223

11.2.1 使用OpenCV手动实现交叉验证 225

11.2.2 使用scikit-learn进行k折交叉验证 226

11.2.3 实现留一法交叉验证 227

11.3 使用自举评估鲁棒性 228

11.4 评估结果的重要性 230

11.4.1 实现T检验 230

11.4.2 实现配对卡方检验 232

11.5 使用网格搜索进行超参数调优 233

11.5.1 实现一个简单的网格搜索 234

11.5.2 理解验证集的价值 235

11.5.3 网格搜索结合交叉验证 236

11.5.4 网格搜索结合嵌套交叉验证 238

11.6 使用不同评估指标来对模型评分 239

11.6.1 选择正确的分类指标 239

11.6.2 选择正确的回归指标 240

11.7 链接算法形成一个管道 240

11.7.1 用 scikit-learn 实现管道 241

11.7.2 在网格搜索中使用管道 242

11.8 总结 243

第12章 综合 244

12.1 着手处理一个机器学习问题 244

12.2 构建自己的估计器 245

12.2.1 使用C++编写自己的基于OpenCV的分类器 245

12.2.2 使用Python 编写自己的基于scikit-learn的分类器 247

12.3 今后的方向 249

12.4 总结 251

你可能感兴趣的:(使用opencv和python实现图像的智能处理_[套装书]机器学习:基于OpenCV和Python的智能图像处理+机器学习:使用OpenCV和Python进行智能图像处理(2册)...)