华信教育资源网
基于FPGA的数字图像处理原理及应用
作   译   者:牟新刚,周晓,郑晓亮 出 版 日 期:2017-01-01
出   版   社:电子工业出版社 维   护   人:薛兴宇 
书   代   号:TN293350 I S B N:9787121293351

图书简介:

本书首先介绍FPGA程序设计和图像与视频处理的关键基础理论,然后通过实例代码详细讲解了如何利用FPGA实现直方图操作中的直方图统计/均衡化/线性拉伸/规定化、线性滤波器操作中的均值滤波器、Sobel算子(滤波、求模、求角度)、非线性滤波器操作中的排序类算法/形态学滤波、图像分割算法中的局部自适应分割/Canny算子等。本书在仿真测试部分设计了一种完善的通用测试系统,并利用此测试系统在每一章的仿真测试环节对所设计算法进行严格的测试和验证。本书在最后一章介绍了在视频处理领域常见的输入/输出接口。本书偏向于工程应用,在书中有大量关于如何利用FPGA实现图像处理算法的实例及代码,并对这些算法的原理及其实现过程、算法测试等做了详细的介绍,全部的算法都进行了仿真测试验证。本书提供实例的全部源代码,可登录以下网址免费获取:http://www.hxedu.com.cn(华信资源教育网)。本书适用于需要利用FPGA进行图像处理和视频分析的学者和工程开发人员。读者需要具备一定的嵌入式设计及FPGA设计的基础知识,特别是Verilog语言的语法基础。
您的专属联系人更多
关注 评论(4) 分享
配套资源 图书内容 样章/电子教材 图书评价
  • 配 套 资 源

    本书资源

    会员上传本书资源

  • 图 书 内 容

    内容简介

    本书首先介绍FPGA程序设计和图像与视频处理的关键基础理论,然后通过实例代码详细讲解了如何利用FPGA实现直方图操作中的直方图统计/均衡化/线性拉伸/规定化、线性滤波器操作中的均值滤波器、Sobel算子(滤波、求模、求角度)、非线性滤波器操作中的排序类算法/形态学滤波、图像分割算法中的局部自适应分割/Canny算子等。本书在仿真测试部分设计了一种完善的通用测试系统,并利用此测试系统在每一章的仿真测试环节对所设计算法进行严格的测试和验证。本书在最后一章介绍了在视频处理领域常见的输入/输出接口。本书偏向于工程应用,在书中有大量关于如何利用FPGA实现图像处理算法的实例及代码,并对这些算法的原理及其实现过程、算法测试等做了详细的介绍,全部的算法都进行了仿真测试验证。本书提供实例的全部源代码,可登录以下网址免费获取:http://www.hxedu.com.cn(华信资源教育网)。本书适用于需要利用FPGA进行图像处理和视频分析的学者和工程开发人员。读者需要具备一定的嵌入式设计及FPGA设计的基础知识,特别是Verilog语言的语法基础。

    图书详情

    ISBN:9787121293351
    开 本:16开
    页 数:452
    字 数:720

    本书目录

    目    录
     
    第1章  图像处理基础	1
    1.1  数字图像处理简介	1
    1.1.1  图像采样	1
    1.1.2  图像量化	2
    1.1.3  数字图像处理	3
    1.2  数字图像处理系统	4
    1.2.1  图像处理系统构成	4
    1.2.2  原始图像获取	6
    1.2.3  图像传感器接口	16
    1.2.4  图像处理流水线	17
    1.2.5  图像与视频压缩	19
    1.2.6  视频显示处理	26
    第2章  FPGA与图像处理	32
    2.1  使用FPGA的原因	32
    2.2  FPGA技术优势	33
    2.3  FPGA的发展历程	34
    2.4  FPGA生产厂家及其产品	35
    2.4.1  Altera	35
    2.4.2  Xilinx	37
    2.4.3  Lattice	37
    2.4.4  Atmel	38
    2.4.5  Actel	38
    2.5  FPGA开发流程	38
    2.5.1  FPGA设计方法	38
    2.5.2  典型的FPGA开发流程	39
    2.6  FPGA常用开发工具	44
    2.6.1  代码输入工具	45
    2.6.2  综合工具	46
    2.6.3  仿真工具	47
    2.6.4  实现与优化工具	47
    2.6.5  EDA工具	48
    2.7  FPGA图像处理的开发流程	49
    2.7.1  需求分析及问题描述	49
    2.7.2  软件算法设计及验证	50
    2.7.3  硬件平台设计	51
    2.7.4  FPGA映射	52
    2.7.5  仿真及验证	54
    第3章  FPGA编程语言	55
    3.1  HDL语言简介	55
    3.2  模块化设计	56
    3.3  可移植性	57
    3.4  不可移植性	61
    3.5  测试逻辑	62
    3.6  冗余逻辑	63
    3.7  常用语法	63
    3.7.1  参数化	63
    3.7.2  条件编译	68
    3.7.3  位宽匹配	69
    3.7.4  二维数组	69
    3.8  应用实例	70
    3.8.1  信号边沿检测	70
    3.8.2  多拍处理	72
    3.8.3  图像行列计数	73
    第4章  映射技术	77
    4.1  系统结构	77
    4.1.1  流水线设计	77
    4.1.2  并行阵列	81
    4.2  计算技术	82
    4.2.1  算法转换	82
    4.2.2  近似计算	83
    4.2.3  增量更新	85
    4.2.4  查找表	85
    4.2.5  浮点计算	89
    4.2.6  Cordic技术	96
    4.3  存储器映射	103
    4.3.1  帧缓存	104
    4.3.2  行缓存	105
    4.3.3  异步缓存	113
    4.3.4  增加存储器带宽	114
    4.3.5  存储器建模与仿真	115
    4.4  其他设计技巧	116
    4.4.1  合理处理参数	116
    4.4.2  资源及模块复用	117
    4.4.3  防止亚稳态	118
    第5章  系统仿真	121
    5.1  Modelsim使用基础	121
    5.1.1  Modelsim简介	121
    5.1.2  Modelsim图形界面及
    仿真示例	122
    5.1.3  使用脚本命令来加速
    仿真	133
    5.1.4  其他加速仿真的方法	136
    5.2  视频图像处理仿真测试系统	136
    5.2.1  仿真测试系统框架	136
    5.2.2  视频时序模拟	137
    5.2.3  视频捕获模拟	145
    5.2.4  MFC程序设计	157
    5.2.5  通用testbench	161
    第6章  直方图操作	167
    6.1  灰度直方图	167
    6.2  直方图均衡化	169
    6.3  直方图规定化	172
    6.4  直方图拉伸	175
    6.5  基于FPGA的直方图操作	179
    6.5.1  FPGA直方图统计	179
    6.5.2  FPGA直方图均衡化	192
    6.5.3  FPGA直方图线性拉伸	203
    第7章  线性滤波器	214
    7.1  线性滤波	214
    7.1.1  均值滤波	214
    7.1.2  高斯滤波	216
    7.1.3  Sobel算子	219
    7.1.4  离散傅里叶变换	222
    7.2  基于FPGA的均值滤波	227
    7.2.1  整体设计与模块划分	227
    7.2.2  子模块设计	228
    7.2.3  Verilog代码设计	232
    7.2.4  仿真与调试结果	243
    7.3  基于FPGA的Sobel算子	247
    7.3.1  整体设计与模块划分	247
    7.3.2  Sobel模板计算电路	249
    7.3.3  基于Cordic的坐标系转换
    电路	251
    7.3.4  Verilog代码设计	257
    7.3.5  仿真与调试结果	274
    第8章  非线性滤波器	280
    8.1  统计排序滤波	280
    8.2  基于FPGA的统计排序滤波器	282
    8.2.1  并行全比较排序法原理	282
    8.2.2  整体设计与模块划分	285
    8.2.3  子模块设计	286
    8.2.4  Verilog代码设计	288
    8.2.5  仿真与调试结果	298
    第9章  形态学滤波	303
    9.1  形态学滤波简介	303
    9.2  形态学滤波的基本应用	304
    9.3  基于FPGA的Tophat滤波设计	311
    9.3.1  顶层框架设计	311
    9.3.2  子模块设计	312
     
    9.3.3  Verilog代码设计	317
    9.3.4  仿真及调试结果	337
    第10章  图像分割	341
    10.1  图像分割简介	341
    10.2  基于阈值的分割	341
    10.2.1  全局阈值分割	341
    10.2.2  局部自适应阈值分割	344
    10.3  基于边缘的分割	347
    10.3.1  Canny算子	347
    10.3.2  Canny算子的计算步骤	347
    10.4  基于FPGA的局部自适应分割	356
    10.4.1  算法转换	357
    10.4.2  FPGA结构设计	358
    10.4.3  子模块设计	359
    10.4.4  Verilog代码设计	363
    10.4.5  仿真与调试	371
    10.5  基于FPGA的Canny算子设计	378
    10.5.1  非最大值抑制电路设计	378
    10.5.2  滞后阈值分割电路设计	381
    10.5.3  Verilog代码设计	382
    10.5.4  仿真调试结果	390
    第11章  视频接口	391
    11.1  视频输入接口	391
    11.1.1  模拟视频输入	391
    11.1.2  CameraLink接口	394
    11.1.3 USB接口	399
    11.1.4 FireWire接口	401
    11.1.5  GigE Vision?接口	407
    11.1.6  直接接口	410
    11.2  视频输出接口	411
    11.2.1  CVT标准	411
    11.2.2  VGA	416
    11.2.3  PAL	425
    11.2.4  DVI/HDMI	433
    参考文献	441
    展开

    前     言

    前    言
    最近几年图像处理与机器视觉的发展非常迅速,图像处理领域也被认为是未来几十年最有前途的领域之一。
    随着现代图像及视频处理技术的不断发展,人们对图像处理提出了新的要求,图像处理系统的硬件体积越来越小,实时性也越来越好。特别是最近几年,图像的分辨率和扫描频率都有了较大范围的提升,1080P分辨率的视频已经非常流行,2K甚至4K分辨率的图像也在火热发展中。目前比较火热的VR技术更是需要双通道的高分辨率、高扫描频率的视频数据及处理能力。
    这些新的要求给之前的图像处理平台带来了严重的挑战,传统的图像处理技术主要基于软件平台,一般运行在Windows平台的PC上。虽然现代PC的主频较高,但是用软件的串行化处理方法进行图像处理的效率还是非常低的。例如,用PC处理一个比较复杂的高分辨率图像处理算法花费半个小时或更多时间也是常见的事情。然而,对于实时图像处理,例如实时跟踪和视频显示,这个处理速度是远远不够的。
    正是由于这个原因,嵌入式图像处理技术得到了广泛的应用,一些带有图像视频处理组件的嵌入式处理器开始在图像处理领域大显身手,例如,TI公司生产的达芬奇系列的DSP。这些组件实际上是图像处理硬核,但是大部分是标准化接口的硬核,针对数字视频、图像采样处理、视觉分析等应用进行了剪裁和优化。对于一个特定的图像处理任务,需要利用其内部的处理器来进行串行化软件处理。多核处理器的发展使得多个图像处理任务可以同时执行,也大大提高了图像处理的实时性。尽管这些嵌入式处理器的发展加快了图像处理和视频分析的实际应用,但其本质上仍为软件处理的串行方式,难以满足通用图像处理中大数据量计算的需求。
    随着成像传感器技术和信号处理技术的迅猛发展,图像的分辨率、帧频和像元有效位数越来越高,图像处理算法越来越复杂,图像处理结果的实时性要求越来越高,基于PC和DSP软件平台的图像处理系统已难以满足要求。由于图像处理算法天然的并行性,FPGA的加入给图像处理带来了新的活力,特别是针对图像处理底层一些并行特性的图像处理算法。例如二维卷积,FPGA可以保证在极低主频下得到比DSP平台快得多的处理速度,利用其流水线技术可以在每个时钟输出一个处理后像素。然而,FPGA并不适合进行串行化处理算法和部分其他的上层算法。因此,目前DSP+FPGA平台是图像处理平台的主流。此外,FPGA在一些低成本的机器视觉领域也得到了广泛的应用。例如,著者所在实验室研究的利用线列CCD和激光实现高精度位移测量项目,该项目利用FPGA实现CCD时序驱动、A/D转换和测量算法实现,并实现高速接口与上位机。
    在FPGA上实现一个图像处理算法包括确定具体算法和对其进行并行性改造、将算法中计算和存储需求与FPGA内部可用资源相映射、将算法映射到硬件结构上等步骤。然而,目前只有很少的公开资料可供初学者学习该领域的知识,可以让初学者深入了解设计思路、过程、代码的文献资料更难找到。
    为改变这一现状,本书从FPGA图像处理理论和分析入手,重点讲解图像处理算法移植到FPGA中的基本思路和方法,突出工程应用。每一章均附有C/C++实现代码,同时用循序渐进、自顶向下的方式设计FPGA算法模块,针对每一个模块设计了详细的实现框图,确保读者能理解算法设计的原理。此外,每个算法都配有Verilog实现方法,并给出仿真结果。本书还提出了一个通用的利用Modelsim和VS实现图像处理的仿真测试平台。
    本书内容概述如下:
    (1)第1~5章是基础章节,重点介绍数字图像处理和FPGA程序设计的基础知识。
    第1章简单介绍了图像处理的基础知识,包括图像处理的发展现状,还地介绍了图像从获取到显示存储的基本流程。
    第2章首先介绍了FPGA的发展现状,生产厂家及其开发流程。接着介绍了基于FPGA的图像处理的基本开发流程。
    第3章主要介绍了在FPGA中应用的编程语言。本章并没有详细介绍Verilog语法,而是从工程应用的角度介绍常用的设计方法和实例。
    第4章主要介绍了把软件算法映射到FPGA常用的技巧。首先介绍了应用较广泛的流水线设计方法,接着介绍了FPGA硬件计算技术,包括一些常用的计算转换、查找表、浮点计算、Cordic计算等方法。最后介绍了在图像处理中用途非常多的存储器映射,并提出了一些其他设计技巧。
    第5章首先简要介绍了仿真测试软件Modelsim的使用,接着重点介绍了一个通用的视频图像处理仿真测试系统。这个测试系统包括完整的视频模拟、视频捕获,以及testbench设计,并结合基于MFC的VC上位机来实现测试系统的搭建。
    (2)第6~10章主要介绍算法实现。
    第6章介绍直方图操作,主要介绍几种常用直方图操作的FPGA实现:直方图统计、直方图均衡、直方图规定及直方图线性拉伸。
    第7章介绍基于图像处理的线性滤波。首先,介绍了均值滤波算法、高斯滤波算法、Sobel算子及FFT等常见的几种线性滤波原理。其次,介绍了均值滤波算法和Sobel算子的FPGA实现。
    第8章主要介绍基于图像处理的非线性滤波算法,包括排序滤波的基本原理及其FPGA实现方法。
    第9章主要介绍基于图像处理的形态学滤波算法,包括形态学滤波的基本概念,包括形态学膨胀、形态学腐蚀、开运算及闭运算等。重点介绍了基于FPGA的Tophat滤波的原理及实现方法。
    第10章主要介绍基于图像处理的常见的分割算法,包括全局阈值分割、局部自适应阈值分割及Canny算子。重点介绍基于FPGA的局部自适应阈值分割和Canny算子的设计与实现。
    第11章主要介绍与视频和图像处理相关的输入/输出接口,包括CameraLink、火线接口、USB接口、千兆以太网等视频输入接口和CVT标准,以及VGA,PAL,DVI,HDMI等视频输出接口。其中,给出了VGA和PAL接口的Verilog代码实现。
    为了确保读者能够快速地掌握FPGA图像处理设计方法,本书提供了算法章节的全部源代码。
    本书由武汉理工大学机电工程学院牟新刚、周晓和郑晓亮合著,全书由牟新刚统稿。
    本书参考了相关著作及资料的部分内容和图表,部分技术资料取材于互联网,在此对这些文献的作者一并表示谢意。尽管我们为编写本书付出了心血和努力,但仍然存在一些疏漏及欠妥之处,敬请读者批评指正。
    著者  
    2016.5
    展开

    作者简介

    本书暂无作者简介
  • 样 章 试 读
    本书暂无样章试读!
  • 图 书 评 价 我要评论
华信教育资源网