
前 言 业内有很多介绍MATLAB图像处理的书,如《数字图像处理(MATLAB版)》(作者冈萨雷斯),也有不少介绍FPGA图像处理的书,如《FPGA数字图像采集与处理》(作者吴厚航),但尚未出现一本结合MATLAB仿真与FPGA实现的图像处理教程。单纯地学习MATLAB图像处理的读者,很难在FPGA上对其算法用硬件实现;单纯地学习FPGA图像处理的读者,又很难从底层了解算法的原理与实现。因此,本书的出现将填补业内这一空缺,会给对该领域感兴趣的读者,带来不一样的福音。 本书将从图像格式转换、降噪、增强、二值化、锐化、缩放等传统基础图像算法入手,从原理到MATLAB设计、FPGA硬件加速实现进行由浅入深、循序渐进的介绍。以深度学习算法LeNet5为例,介绍如何用FPGA实现较简单的硬件加速卷积神经网络。最后,作为画龙点睛之笔,介绍传统ISP和新兴AISP的理论概念及区别,并阐述未来图像硬件加速的发展走向。 为了让读者能够更好地了解本书的架构,笔者整理了章节规划的图谱,如下所示。读者可以按顺序阅读,也可以根据自己的兴趣挑重点查阅,章节规划没有严格的先后顺序。 图像算法的实现属于方法论,优秀的图像算法事半功倍;同样如何用更低的PPA(Power Performance Area,即功耗、性能、面积,是芯片最主要的三个评价指标)在FPGA/IC上实现图像算法的硬件加速,也是一门学问,需要充分理解图像算法的实现过程,掌握FPGA的设计思维,并且熟练运用FPGA常用的加速思维。笔者曾在《FPGA设计技巧与案例开发详解(第3版)》一书中讲述了很多的FPGA设计技巧,本书将重点针对图像处理,为读者讲解具体的算法实现。 截至本书出版前,笔者在IC公司已经工作7年有余,深刻地感受到研发人员的能力对自主研发代码质量(设计功能不考虑时序、门控时钟满天飞等)的影响,目前虽然功能验证及后端收敛可以正常流片,但考虑到PPA对成本及竞争力的影响,目前PPA还有很大的提升空间。因此,本书旨在带给读者图像处理的硬件加速思维,希望读者能够学会图像处理的FPGA加速方法,同时能够掌握在IC中设计优秀电路的技术。希望本书的出版,能够帮助提高IC行业人才的质量与产品的竞争力。 本书内容体系 本书共9章,分为3部分,各部分对应的章节和具体内容如下。 第1部分为第1章,由韩彬编写,主要通过对CPU结构体系加速,以及Apple M1芯片架构、海思3516A芯片架构的介绍,讲解什么是硬件加速引擎。同时这一章也介绍了FPGA软件仿真环境,以及可配套的FPGA图像处理开发板。 第2部分包括第2~8章,主要介绍常用的图像处理算法的理论、MATLAB设计,以及FPGA硬件加速实现,相关章节内容介绍如下。 (1)第2~5章由韩彬编写,主要介绍RGB转YCbCr算法、常用图像增强算法、常用图像降噪算法,以及常用图像二值化算法。 (2)第6、7章由林海全编写,主要介绍常用图像锐化算法、常用图像缩放算法,其中第7章中的“浅谈基于深度学习的缩放算法”,由从事多媒体算法开发的孔德辉博士编写。 (3)第8章由姜宇奇博士编写,以典型的基于LeNet5的深度学习算法为例,介绍如何在MATLAB与FPGA上实现实时的手写数字识别。 第3部分为第9章,作为本书的画龙点睛之笔,主要介绍传统ISP和新兴AISP的理论概念及区别,让读者对图像算法的硬件加速应用有一个更深刻的认知。 本书读者对象 ? FPGA技术爱好者; ? 有图像算法基础,想了解FPGA图像处理的读者; ? 有FPGA基础,想了解图像算法开发流程的读者; ? 期望从事多媒体芯片前端开发的读者; ? 大、中专院校的学生和老师; ? 相关培训学校的学员。
目 录 第1章 什么是硬件加速引擎 1 1.1 CPU是怎么加速的? 1 1.1.1 CPU体系结构加速 1 1.1.2 CPU流水线加速 3 1.2 什么是硬件加速引擎 5 1.2.1 苹果M1芯片架构 6 1.2.2 海思Hi3516A芯片架构 8 1.2.3 本书图像加速内容 9 1.3 FPGA软件仿真环境介绍 10 1.3.1 FPGA目录规划约定 10 1.3.2 仿真验证平台介绍 10 1.3.3 相关软件环境介绍 13 1.4 FPGA硬件验证平台介绍 14 第2章 RGB转YCbCr算法介绍及MATLAB与FPGA实现 17 2.1 RGB与YCbCr色域介绍 17 2.1.1 RGB模型 18 2.1.2 YCbCr色域介绍 20 2.2 RGB转YCbCr加速运算 22 2.2.1 让你的软件飞起来 22 2.2.2 FPGA硬件加速思维 24 2.2.3 FPGA硬件实现推导 27 2.3 RGB转YCbCr的MATLAB实现 27 2.3.1 MATLAB代码的设计 27 2.3.2 仿真数据的准备 31 2.4 RGB转YCbCr的FPGA实现 32 2.4.1 FPGA代码的实现 33 2.4.2 仿真流程的详解 36 第3章 常用图像增强算法介绍及MATLAB与FPGA实现 39 3.1 直方图均衡算法的实现 39 3.1.1 直方图均衡的原理 39 3.1.2 直方图均衡的MATLAB实现 42 3.1.3 直方图均衡的FPGA实现 47 3.1.4 直方图均衡的ModelSim仿真 51 3.2 对比度算法的实现 53 3.2.1 对比度增强的原理 53 3.2.2 指数对比度增强的MATLAB实现 56 3.2.3 指数对比度增强的FPGA实现 58 3.2.4 指数对比度增强的ModelSim仿真 60 3.3 Gamma映射算法的实现 62 3.3.1 Gamma映射的原理 62 3.3.2 Gamma映射的MATLAB实现 66 3.3.3 Gamma映射的FPGA实现 69 3.3.4 Gamma映射的ModelSim仿真 71 第4章 常用图像降噪算法介绍及MATLAB与FPGA实现 73 4.1 降噪原理介绍 73 4.1.1 为什么要降噪 73 4.1.2 什么是噪声 73 4.1.3 图像降噪简介 74 4.2 均值滤波算法的实现 75 4.2.1 均值滤波算法的理论 75 4.2.2 均值滤波的MATLAB实现 75 4.2.3 均值滤波的FPGA实现 78 4.2.4 均值滤波的ModelSim仿真 82 4.3 中值滤波算法的实现 84 4.3.1 中值滤波算法的理论 84 4.3.2 中值滤波的MATLAB实现 87 4.3.3 中值滤波的FPGA实现 90 4.3.4 中值滤波的ModelSim仿真 90 4.4 高斯滤波算法的实现 93 4.4.1 高斯滤波算法的理论 95 4.4.2 高斯滤波的MATLAB实现 97 4.4.3 高斯滤波的FPGA实现 99 4.4.4 高斯滤波的ModelSim仿真 104 4.5 双边滤波算法的实现 107 4.5.1 双边滤波算法的理论 107 4.5.2 双边滤波的MATLAB实现 109 4.5.3 双边滤波的FPGA实现 118 4.5.4 双边滤波的ModelSim仿真 123 第5章 常用图像二值化算法介绍及MATLAB与FPGA实现 126 5.1 图像二值化的目的 126 5.2 全局阈值二值化算法 127 5.2.1 全局阈值二值化算法的理论与MATLAB实现 128 5.2.2 全局阈值二值化的MATLAB实现 131 5.2.3 全局阈值二值化的FPGA实现 131 5.3 局部阈值二值化算法 131 5.3.1 局部阈值二值化算法的理论 131 5.3.2 局部阈值二值化的MATLAB实现 132 5.3.3 局部阈值二值化的FPGA实现 134 5.3.4 局部阈值二值化的ModelSim仿真 136 5.4 Sobel边缘检测算法 140 5.4.1 Sobel边缘检测算法的理论 141 5.4.2 Sobel边缘检测的MATLAB实现 142 5.4.3 Sobel边缘检测的FPGA实现 144 5.4.4 Sobel边缘检测的ModelSim仿真 145 5.5 二值化腐蚀、膨胀算法 147 5.5.1 二值化腐蚀、膨胀算法的理论 147 5.5.2 二值化腐蚀、膨胀的MATLAB实现 148 5.5.3 二值化腐蚀、膨胀的FPGA实现 152 5.5.4 二值化腐蚀、膨胀的ModelSim仿真 153 5.6 帧间差算法及运动检测算法 155 5.6.1 帧间差算法及运动检测算法的理论 155 5.6.2 帧间差及运动检测的MATLAB实现 157 5.6.3 帧间差及运动检测的FPGA实现 164 第6章 常用图像锐化算法介绍及MATLAB与FPGA实现 165 6.1 图像锐化的原理 165 6.1.1 一阶微分的边缘检测 166 6.1.2 二阶微分的边缘检测 167 6.1.3 一阶微分与二阶微分的边缘检测对比 168 6.2 Robert锐化算法的实现 170 6.2.1 Robert锐化算法的理论 170 6.2.2 Robert锐化的MATLAB实现 170 6.2.3 Robert锐化的FPGA实现 172 6.2.4 Robert锐化的ModelSim仿真 173 6.3 Sobel锐化算法的实现 176 6.3.1 Sobel锐化算法的理论 176 6.3.2 Sobel锐化的MATLAB实现 177 6.3.3 Sobel锐化的FPGA实现 179 6.3.4 Sobel锐化的ModelSim仿真 180 6.4 Laplacian锐化算法的实现 182 6.4.1 Laplacian锐化算法的理论 182 6.4.2 Laplacian锐化的MATLAB实现 183 6.4.3 Laplacian锐化的FPGA实现 185 6.4.4 Laplacian锐化的ModelSim仿真 186 第7章 常用图像缩放算法介绍及MATLAB与FPGA实现 190 7.1 最近邻插值算法的实现 191 7.1.1 最近邻插值算法的理论 191 7.1.2 最近邻插值的MATLAB实现 192 7.1.3 最近邻插值的FPGA实现 194 7.1.4 最近邻插值的ModelSim仿真 197 7.2 双线性插值算法的实现 199 7.2.1 双线性插值算法的理论 199 7.2.2 双线性插值的MATLAB实现 201 7.2.3 双线性插值的FPGA实现 204 7.2.4 双线性插值的ModelSim仿真 209 7.3 双三次插值算法的实现 214 7.3.1 双三次插值算法的理论 214 7.3.2 双三次插值的MATLAB实现 216 7.3.3 双三次插值的FPGA实现 219 7.4 浅谈基于深度学习的缩放算法 219 7.4.1 DL-SR算法的理论 219 7.4.2 DL-SR算法的性能提升 222 7.4.3 DL-SR与High-level CV的区别 223 7.4.4 DL-SR的几点思考与未来 223 第8章 基于LeNet5的深度学习算法介绍及MATLAB与FPGA实现 225 8.1 神经网络的介绍 225 8.1.1 人工神经网络 225 8.1.2 卷积神经网络 226 8.2 基于LeNet5 卷积神经网络的MATLAB实现 229 8.2.1 LeNet5卷积神经网络的简介 229 8.2.2 LeNet5卷积神经网络的MATLAB实现 230 8.2.3 基于LeNet5卷积神经网络的FPGA实现 233 8.3 基于摄像头的字符识别FPGA Demo的搭建与实现 240 第9章 传统ISP及AISP的图像处理硬件加速引擎介绍 248 9.1 ISP介绍 248 9.1.1 ISP简介 248 9.1.2 ISP的应用 250 9.1.3 ISP基础算法及流水线 253 9.1.4 Bayer域的图像处理算法 254 9.1.5 RGB域的图像处理算法 256 9.1.6 YUV域的图像处理算法 258 9.2 基于AI的ISP图像加速引擎介绍 259 9.2.1 AI在图像领域的应用 259 9.2.2 AISP简介 260 9.2.3 AISP的产业化应用 265 9.2.4 本章小结 267 延伸阅读 268 缩略语 271
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=TN447590