基于FPGA的数字图像处理【1.0】

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

第1章 图像处理基础

1.1 数字图像处理简介

        光作用于视觉器官,使其感受细胞兴奋,其信息经视觉神经系统加工后便产生视觉(vision)。通过视觉,人和动物感知外界物体的大小、明暗、颜色、动静,获得对机体生存具有重要意义的各种信息。至少有80%以上的外界信息经视觉获得,视觉可以说是人和动物最重要的感觉。
        图像作为人类感知世界的视觉基础,是人类获取信息、表达信息和传递信息的重要手段。数字图像处理即用计算机对图像进行处理的发展历史并不长。数字图像处理技术源于20世纪20年代时通过海底电缆从英国伦敦到美国纽约传输了一幅照片,采用了数字压缩技术。然而,由于当时的计算技术和存储空间的限制,基于计算机的图像处理并没有得到很快的发展。直到20世纪50年代,当时的美国国家标准局的扫描仪第一次被加入一台计算机中,用于进行边缘增强和模式识别的早期研究。在20世纪60年代,处理大量对从卫星和空间探索取得的大尺寸图像的需求直接推动了美国航空航天局对图像处理的研究。与此同时,高能粒子的物理研究,需要对大量的云室照片进行处理以捕获感兴趣的事件。随着计算机计算能力的增加及计算成本的降低,数字图像处理的应用范围呈爆炸式增长,从工业检测到医疗影像,都称为数字图像处理的应用领域。

1.1.1 图像采样

        多数图像传感器(如CCD等)的输出是连续的电压波形信号,这些波形的幅度和空间特性都与其所感知的光照有关。为了产生一幅数字图像,我们需要把连续的感知数据转换为数字形式,这个转换的过程被称为图像采样和量化。
采样和量化的过程如图1-1所示。

        采样频率是指1秒内采样的次数(即图1-1中采样间隔的倒数),它反映了采样点之间的间隔大小。采样频率越高,得到的图像样本越逼真,图像的质量越高,但要求的存储量也越大。图1-2(a)、(b)、(c)是采样间隔分别为16s、32s、64s采样所获得的图像。

        在进行采样时,采样点间隔大小的选取很重要,它决定了采样后的图像能否真实地反映原图像的程度。一般来说,原图像中的画面越复杂,色彩越丰富,则采样间隔应越小。由于二维图像的采样是一维的推广,根据信号的采样定理,要从取样样本中精确地复原图像,可得到图像采样的奈奎斯特(Nyquist)定理:图像采样的频率必须大于或等于源图像最高频率分量的两倍。

1.1.2 图像量化

        量化是指要使用多大范围的数值来表示图像采样之后的每一个点。量化的结果是图像能够容纳的颜色总数,它反映了采样的质量。例如:如果以4位存储一个点,就表示图像只能有16种颜色;若采用16位存储一个点,则有216 =65536种颜色。因此,量化位数越来越大,表示图像可以拥有更多的颜色,自然可以产生更为细致的图像效果。但是,也会占用更大的存储空间。两者的基本问题都是视觉效果和存储空间的取舍。图1-3给出了量化级数分别为2,8,64所获得的数字图像。

        在实际应用中,常常用8位,24位和32位数字来存储一个像素。8位图像也就是常说的灰度图像,这个灰度图像包含了一幅图像的主要亮度信息。一般情况下,对数字图像进行算法处理,通常会将图像转换为灰度图像进行处理。24位图像也就是常说的真彩图像,包括RGB 3个通道的颜色信息。32位的图像还包含了Alpha通道,用来表示图像的透明度。此外,在红外图像的处理中,通常用14位的数字来表示一个像素。
        从图像传感器出来的信号经过采样和量化之后,便获得了一系列的 数 字 图 像 。 这 个 数 字 图 像 通 常 情 况 下 被 取 样 为 一 个 二 维 阵 列f(x,y),该阵列包含M列和N行,其中(x,y)是离散坐标,M也就是所说的图像宽度,N是图像的高度。(x,y)的取值范围为
0≤x≤M-1,0≤y≤N-1
        通常情况下,用一个二维矩阵来表示这个数字图像,如图1-4所示。
        一般情况下,数字图像的原点位于左上角。数字图像的扫描方式是从左上角开始向右扫描,扫描完一行之后转到下一行的最左侧开始扫描,一直到达图像的右下角,即x坐标轴方向为自左向右,y坐标轴方向为自上到下。这与传统的笛卡儿坐标系还是有区别的,如图1-5所示。

1.1.3 数字图像处理

        获得图像的下一步就是尽快对获得数字图像进行预期目的的处理。对一幅图像来说,从一个状态得到另一个状态的图像处理操作序列称为图像处理算法。一般来说,数字图像处理常用方法有以下几种:
        (1)图像变换。由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。因此,往往采用各种图像变换的方法,例如傅里叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅里叶变换可在频域中进行数字滤波处理)。新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像处理中也有着广泛而有效的应用。
        (2)图像编码压缩。图像编码压缩技术可减少描述图像的数据量(即比特数),以便节省图像传输、处理时间和减少所占用的存储器容量。压缩可以在不失真的前提下获得,也可以在允许的失真条件下进行。编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术。
        (3)图像增强和复原。图像增强和复原的目的是为了提高图像的质量,例如,去除噪声及提高图像的清晰度等。图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。例如强化图像高频分量,可使图像中物体轮廓清晰、细节明显,以及强化低频分量可减少图像中噪声影响。图像复原要求对图像降质的原因有一定的了解,一般来说,应根据降质过程建立“降质模型”,再采用某种滤波方法,恢复或重建原来的图像。                                                                                             (4)图像分割。图像分割是数字图像处理中的关键技术之一。图像分割是将图像中有意义的特征部分提取出来,其有意义的特征包括图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的基础。虽然已研究出不少边缘提取、区域分割的方法,但是还没有一种普遍适用于各种图像的有效方法。因此,对图像分割的研究还在不断深入之中,是图像处理中研究的热点之一。
        (5)图像描述。图像描述是图像识别和理解的必要前提。作为最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区域描述两类方法。对于特殊的纹理图像可采用二维纹理特征描述。随着图像处理研究的深入发展,已经开始进行三维物体描述的研究,提出了体积描述、表面描述、广义圆柱体描述等方法。
        (6)图像分类(识别)。图像分类(识别)属于模式识别的范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类。图像分类常采用经典的模式识别方法,有统计模式分类和句法(结构)模式分类,近年来新发展起来的模糊模式识别和人工神经网络模式分类在图像识别中也越来越受到重视。

1.2 数字图像处理系统

1.2.1 图像处理系统构成

        一个典型的图像处理系统由图像传感器、图像编码、图像处理器、显示设备、存储设备及控制设备几大部分组成,如图1-6所示。

(1)图像传感器。图像传感器负责采集光照信息,常用的图像传感器有CCD和CMOS等。在实际应用中,获取图像的方法不一定是传感器,可能是一个现成的图像采集卡、摄像机、数码相机、扫描仪或者一个专用的图像设备等。这一设备将待处理的图像场景或光照信息转换为数字或者模拟信号进行下一步的处理。
(2)图像编码。图像编码负责对图像传感器输出的图像进行采样和量化(对于模拟输出的图像传感器),将图像变换为适合图像处理器处理的数字形式。然后,将编码后的结果送入图像处理器进行进一步的处理。
(3)图像处理器。图像处理器是整个图像处理系统的核心,图像处理器将以取样和量化的结果作为数据源,根据图像处理任务的需求,对图像进行一系列的变换,例如图像预处理、图像分割及目标识别等。图像处理器还负责与图像显示设备、图像存储设备及控制设备进行交互。图像处理器可以是以×86为硬件平台的PC,也可以是一个嵌入式图像处理器,例如,TI公司的达芬奇系列专用数字视频处理器、ARM处理器及本书所介绍的FPGA等。部分处理器有一系列现成的图像处理软
件包,可以大大减轻开发的工作量。例如,如果图像处理系统以×86作为硬件平台,处理系统就可以以Windows操作系统为软件平台,并在其基础上采用已经开发好的图像处理软件。
(4)显示设备。图像显示设备负责对图像进行显示。被显示的图像可能是最终的处理结果,或者使原始图像,或者是中间处理结果。这个显示设备可以是一个视频显示器、打印机,或者使Internet上的其他设备等。
(5)存储设备。图像存储设备负责对视频或图像进行保存。
(6)控制设备。图像控制设备在一个图像处理系统中不一定是必需的。控制设备通常应用在一些专用的场合,例如工业自动化领域的自动控制系统。图像处理的算法往往要完成一个特定的检测目的,图像处理器根据图像处理的结果进行决策。决策的结果被输出到控制设备用来完成一些控制目的,这个控制设备可能是电机、语音提示系统、报警系统或者是军工领域的一些控制设备等。
 

版权声明:本文为博主作者:BinaryStarXin原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/qq_43416206/article/details/137572107

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2024年5月6日
下一篇 2024年5月6日

相关推荐