2015年我出版了个人第一本关于图像处理方面的书籍《Java图像处理-编程技巧与应用实践》,这本书主要是从理论与编码上面详细阐述了图像处理基础算法以及它们在编码实现上的技巧。一转眼已经三年过去了,在这三年的时光里我无时无刻都在关注图像处理与计算机视觉技术发展与未来,同时渐渐萌发了再写一本图像处理相关技术书籍的念头,主要是因为《Java图像处理-编程技巧与应用实践》一书主要不是针对工程应用场景,读者在学完之后很难直接上手开始做项目,所以把第二本书定位为工程实战书籍类型,可以帮助大家解决工程与项目实际技术问题。OpenCV是英特尔开源出来的计算机视觉框架,有着十分强大的图像与视频分析处理算法库。借助OpenCV框架,Android程序员可以在不关心底层数学原理的情况下,解决人脸检测、OCR识别、AR应用开发,图像与视频分析处理,文本处理等Androd开发者经常遇到问题,考虑这些真实需求,本着从易到难的原则,列出了提纲,得到机械工业出版社 杨绣国编辑 肯定与大力支持,于是才有《OpenCV Android开发实战》一书的写作与出版。
谷歌2008年10月发布了第一款搭载Android系统的手机, 从此Android系统在移动端与嵌入式终端大显神威,占据了移动操作系统市场的半壁江山,市场需求爆炸式增长,大量Android开发人员出现,形成了庞大的Android开发者生态体系,经过十年发展,Android操作系统与开发者队伍已经从当初的注重量转为注重质。Android开发人员也面临技术栈老化、工作七年之痒,技术方向选择,职业发展瓶颈等难题。计算机视觉作为人工智能的分支学科之一、符合未来科技发展方向,OpenCV是开源的可以商业应用的最流行的计算机视觉框架,包含了3000多个算法实现, 其SDK支持Java、C++、Python等编程语言,支持Windows系统、Linux系统、Android系统、Mac系统。未来随着5G手机的发布与普及,移动端大量应用场景必然要借助于手机摄像头与实时视频内容分析与处理,OpenCV在这两个方面有得天独厚的技术优势,Android开发人员唯有不断学习,跟上时代步伐,方可获得职业生涯的进一步发展。OpenCV计算机视觉就是“天高任鸟飞、海阔凭鱼跃”广阔天地,是Android开发者技术方向追求、走向人工智能技术的第一站。特别期待能与广大Android开发者成为朋友,期待各位读者的阅读反馈与提问交流,读同一本书,写不同的技术人生、得其术、知其道。
第1章 OpenCV For Android框架
1.1 OpenCV是什么
1.1.1 OpenCV框架历史与发展现状
1.1.2 核心模块与功能介绍
1.1.3 OpenCV4Android SDK介绍
1.2 OpenCV4Android开发环境搭建
1.2.1 OpenCV4Android SDK下载与导入
1.2.2 环境搭建
1.2.3 代码测试
1.3 构建一个OpenCV演示APP应用
1.4 拍照与选择图片
1.5 小结
第2章 Mat与Bitmap对象
2.1 Mat对象
2.2 Android中Bitmap对象
2.3 基础形状绘制与填充
2.2.1 基于Mat的绘制与填充
2.2.2 Bitmap上的绘制与填充
2.4 Mat与Bitmap转换与使用
2.5 小结
第3章 Mat像素操作
3.1 OpenCV Mat中操作像素的方法
3.1.1 Mat的类型与get、put方法
3.1.2 如何正确循环操作每个像素点
3.2 图像通道与均值方差计算
3.3.1 – 通道分离与合并、计算均值与标准方程, 使用均值与标准方程过滤空白图像
3.3 像素操作经典例子-调整图像亮度与对比度
3.4 两张图像混合
3.5.1 - 直接的像素相加
3.5.2 - 基于权重的像素相加
3.5 Mat的其它各种像素操作(包括取反、逻辑操作、平方根等)
3.6 小结
第4章 图像操作
4.1 模糊
4.2 统计排序滤波器
4.2.1 - 中值滤波
4.2.2 - 最大最小值滤波
4.3 边缘保留滤波器
4.3.1 - 双边滤波
4.3.2 - 均值迁移滤波
4.4自定义滤波
4.5形态学操作
4.6 阈值与自适应阈值
4.6.1 阈值(介绍5种阈值方法)
4.6.2 自适应阈值(介绍两种自适应阈值方法)
4.7 小结
第5章 基本特征检测
5.1 梯度算子
5.2 拉普拉斯算子
5.3 Canny边缘检测
5.4 霍夫直线检测
5.5 霍夫圆检测
5.6 轮廓检测与绘制
5.7.1 - 轮廓检测与绘制轮廓
5.7.2 - 绘制轮廓外接矩形与圆
5.7.3 - 绘制最小外接矩形
5.7 轮廓分析
绘制外接矩形、最小外接矩形、横纵比、面积、轮廓周长等
5.8 图像直方图
5.8.1 - 计算直方图
5.8.2 - 直方图均衡化
5.8.3 - 直方图比较
5.8.4 - 直方图反向投影
5.9 模板匹配 (介绍常见的图像模板匹配算法)
5.10 小结
第6章 特征检测与匹配
6.1 Harr角点检测
- (Harr角点特征检测原理与相关API使用介绍)
6.2 Shi-Tomasi角点检测
- (Shi-Tomasi角点检测原理与相关API使用介绍)
6.3 SURF特征检测与匹配
- (SURF特征提取的步骤与特征描述子)
6.4 SIFT特征检测与匹配
- (SIFT特征提取的步骤与特征描述子)
6.5 Feature2D中检测器与描述子
- BRISK
- ORB
- AKAZE
6.6 特征匹配查找已知对象
(跟特征匹配结果在一张图中寻找已知对象并把对象轮廓标记出来)
6.7 级联分类器与人脸检测
- LBP级联分类器
- Harr级联分类器
-应用级联检测器实现人脸检测
6.8 小结
第7章 使用相机
7.1 使用JavaCameraView(介绍OpenCV4Android 自带的调用摄像头功能组件)
7.2 横屏与竖屏显示(探讨横屏与竖屏显示问题)
7.3 处理相机预览帧图像 (实现对预览帧的处理,同时知道过多的JNI方式调用OpenCV API会导致性能问题)
7.4 在预览帧中实现人脸检测(实现一个实时的人脸检测例子,技术思路剖析与编码实现步骤,介绍NDK开发方式)
7.4.1 – NDK支持开发配置
7.4.2 –本地方法定义与OpenCV C++代码编写
7.4.3 –Java中的代码实现与运行演示
7.5 小结
第8章 OCR识别
8.1什么是OCR
8.2开源OCR框架Tesseract (介绍Tesseract-OCR框架在Android 系统上的使用、完成第一个测试用例代码)
8.3 识别身份证号码
- 8.3.1 UI编码(讲解调用相机拍照与显示)
- 8.3.2 位置寻找(讲述如何通过OpenCV实现身份证号码位置准确定位,基于模板匹配技术和特征匹配技术)
- 8.3.2 使用Tesseract-OCR API识别
8.4 提高OCR识别率
- 8.4.1 训练自定义数据 (讲述在Tesseract-OCR如何训练自定义数据)
- 8.4.2 图像预处理 (讲述如何通过OpenCV实现偏斜校正、噪声干扰去除,边线去除,来减低干扰,提高识别率)
8.5小结 (总结本章所讲内容)
第9章 人脸美颜
9.1 积分图计算(介绍图像积分图算法)
9.2 基于积分图像的局部均方差滤波(详细介绍在OpenCV中如何实现自己的算法)
9.3 遮罩层生成(详细讲解与代码演示实现,)
9.4 高斯权重融合(详细讲解与代码演示实现)
9.5 边缘提升(详细讲解与代码演示实现,)
9.6 美颜实现(NDK层详细讲解与代码演示实现,)
9.7 小结(讲述了移动应用中常见的人脸磨皮美容算法实现步骤与细节,完整了整个美容算法、是对图像处理知识的这运用)
第10章 人眼实时跟踪与渲染
10.1界面显示与相机预览
10.2 人脸检测与跟踪
10.3寻找眼睛候选区域
10.4 眼睛检测(使用级联分类器检测眼睛)
10.5 寻找黑眼球
10.6 渲染与优化
10.7 小结
OpenCV Android开发实战