最近几年图像处理与机器视觉的发展非常迅速,图像处理领域也被认为是未来几十年最有前途的领域之一。
随着现代图像及视频处理技术的不断发展,人们对图像处理提出了新的要求,图像处理系统的硬件体积越来越小,实时性也越来越好。特别是最近几年,图像的分辨率和扫描频率都有了较大范围的提升,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