如何在硬件上实现算法——基于FPGA的目标识别与跟踪设计

参考文献:基于FPGA的嵌入式图像处理系统设计(第四章设计流程)


引言

一、开发嵌入式图像处理的步骤

1、问题描述:系统功能定义、系统性能指标定义、系统运行环境(系统要做什么、为什么这么做)

系统性能指标定义:对于实时图像处理来说,允许的最大延迟和帧率是两个很重要的指标

2、算法开发:确定图像处理操作的顺序
3、结构选择:确定应用和操作级算法所需的处理器的计算结构(定义算法在计算方面如何实现:应用层算法硬软件分离算)
4、系统实现:将算法映射到结算结构上(包括系统测试)

如何在硬件上实现算法——基于FPGA的目标识别与跟踪设计_第1张图片


二、算法移植的介绍

不能直接在硬件FPGA上开发算法,因此调试算法周期过长,一般地,我们采用软件来开发算法,后移植到硬件上,但是硬件实现算法的关键不是直接移植一个已有的串行算法,而是将算法转化成可用的计算架构。
如何在硬件上实现算法——基于FPGA的目标识别与跟踪设计_第2张图片
由上图可知,算法实现主要分为两步:分析算法和设计算法结构隐含的计算结构。

分析算法

找出基本的算法结构——对算法整体分析且能进行修改。 分析时,将基本算法进行转化,转化成更简单有效的形式,从而映射到硬件上实现。

1、 尽可能多的采用流处理的方式,从而消除中间的帧缓冲器——任何采用窗口扫描处理数据的操作均可采用流处理的方式。

流处理:用流水线结构来克服存储器限制的瓶颈,无需从存储器读像素,处理后在将结果写入,而是一级一级的送入下一操作,从而算法速度不在受访问存储器数量和速度的限制,起到加速效果;流处理的一个重要特点:有固定的时钟速率,通常每像素一个clk,时钟速率受输入(相机)或输出(显示器)的限制,在输入端,进来的像素必须被处理,否则丢失;显示的时候也必须一个clk产生一个像素,否则显示数据丢失。因此流处理系统的设计至少在输入输出是同步的。流处理很适合低级图像处理操作,入点操作和局部滤波器。

2、许多循环中的迭代类型操作可设计成并行的方式。

3、学会简化处理顺序,比如说做灰度形态学滤波,后进行阈值处理,就完全可以等价于先进行阈值处理,然后二值形态学滤波,这样就可以减少硬件资源的消耗,缩短延迟的时间。

4、还可对数据编码来降低数据量(游程编码)。

设计算法结构隐含的计算结构

1、主要是对算法进行转化,从而能更有效的利用并行性,达到高效利用硬件资源的效果

2、低级流水线和时序调整可用来减少组合延迟,以提高时钟速率

3、要能选择合适的硬件结构,让它能与软件算法中用到的数据结构一致


算法软硬件划分

并不是算法的所有部分都能很好地映射到硬件上实现,如动态可变长度循环的算法并不适合,对于复杂控制序列的算在软件中实现更好(本质:串行操作)。因此我们应更好地对算法进行软硬件划分:
如何在硬件上实现算法——基于FPGA的目标识别与跟踪设计_第3张图片

  • 在指令级层上,应用的大部分在软件中实现,FPGA来实现定制指令,其中FPGA部分被称为硬件加速模块。但对于图像处理来说,这种方式实现整个算法不现实。
  • 在任务级层上,整个任务可分配给软硬件来处理,二者相互独立但有必要的通信。如图像采集和低级图像处理由硬件实现,将结果传给软件,来进行高级图像处理操作。

基于FPGA实现图像处理算法流程

提出问题,用Matlab开发图像算法,选择计算结构,算法映射,硬件描述语言设计执行,编译仿真调试等
如何在硬件上实现算法——基于FPGA的目标识别与跟踪设计_第4张图片


目标识别与跟踪

一、研究背景

机器视觉应用领域广泛,在工业制造等场景中均扮演着重要的角色。它相当于系统的眼睛,智能机器人视觉系统有着执行自主定位、环境识别、障碍物检测、目标跟踪等仿生功能。但是传统的机器视觉系统(以计算机作为处理器)存在着实时性差的问题,于是根据FPGA体积小、功耗低、速度快、配置灵活、移植方便等优势,我们提出了基于FPGA的目标识别和跟踪。其中主要以FPGA和COMS图像传感器为核心平台来进行视觉系统硬件设计,以硬件描述语言为工具完成了常见经典的数字图像处理算法实现,起到算法加速的效果,最终完成了目标识别跟踪系统的应用开发。


二、主要工作

硬件系统平台搭建与模块化设计、图像预处理算法和目标提取算法的硬件化移植和加速、目标跟踪算法的硬件化实现。

(1)模块化:图像采集、SDRAM存储、VGA显示等。优化:乒乓操作。整体搭建成图像采集与显示的系统。
(2)图像预处理算法的移植。包括RGB-Ycbcr图像灰度转换、快速排序的中值滤波算法、Sobel边缘检测、3*3矩阵的生成以及模板的卷积运算、二值化处理。
(3)对不断运动的目标检测和跟踪,用帧间差分算法(确定目标从背景区域中清晰地提取出来),将算法进行实现和移植,提取运动目标的边缘轮廓选取运动目标的边缘特征完成基于特征匹配的跟踪算法(目标检测),并计算运动目标的形心位置,对其所在位置进行实时跟踪(目标跟踪)。


目标跟踪:在采集到的连续视频图像中,得到运动目标的位置和完整运动轨迹,并能实时的跟踪定位。

2.1 图像预处理部分

图像预处理算法适合在FPGA上完成,原理简单且需要快速处理,通常有中值、均值滤波等,以及颜色空间转换算法。

2.1.1 图像灰度化

灰度图像是一种特殊的彩色图像(R=G=B的彩色图像)

灰度化处理目的:RGB色彩空间数据计算量大,每一个通道颜色分量都需要计算,另外它不能全面的描绘图像的轮廓特征,只能形成各种各样的颜色。灰度图像可以描述图像轮廓特征且计算数据量小。

灰度化的方法:

1)三种色彩分量平均化

在这里插入图片描述

2)RGB--Ycbcr

如何在硬件上实现算法——基于FPGA的目标识别与跟踪设计_第5张图片
代码实现


2.1.2 中值滤波算法

(能尽可能保留原始图像的信息,减少噪声且保留边缘效果,主要处理椒盐噪声。)

原理是排序比较。将目标图像中的任意像素点的周围像素点的灰度值提取出来,进行中值计算,然后用中值代替该点的像素灰度值。W:模板
在这里插入图片描述
如何在硬件上实现算法——基于FPGA的目标识别与跟踪设计_第6张图片
代码实现


2.1.3 均值滤波算法

(高频信号被滤除,使得图像平滑模糊,因为它能将突变点的灰度值平均到相邻像素点中,缺点:在像素点跨越连通区域便捷的时候,由于不同区域像素点参与运算,所以会破坏图像的细节,边界模糊)

原理:用任意像素点领域内的像素平均值来代替该像素点的灰度值。M:邻域内包含的总像素点的个数,mn邻域像素点到中心像素点横纵坐标距离的数值。
在这里插入图片描述
如何在硬件上实现算法——基于FPGA的目标识别与跟踪设计_第7张图片
均值滤波


2.1.4 Sobel边缘检测

对图像的局部像素点进行平均化计算,达到消除噪声和平滑图像的效果(处理具有大量噪声点的图像时效果也好)。

原理:利用梯度信息来对边缘进行检测,通过阈值判断像素点是否属于边缘点。

下图通过设置的阈值对不稳定边缘点进行了剔除。
如何在硬件上实现算法——基于FPGA的目标识别与跟踪设计_第8张图片
边缘信息(携带很多轮廓信息):图像中灰度值出现跳变或者间断的像素点所携带的信息,即局部像素点发生更为明显变化的像素点集合。

Sobel算子包含两个3*3矩阵,即横向算子和纵向算子,两个算子分别与图像做卷积运算,得到横向灰度值和纵向灰度值。

如何在硬件上实现算法——基于FPGA的目标识别与跟踪设计_第9张图片
其他目标边缘提取的方式:roberts、prewitt、神经网络。

代码实现:


2.2 运动目标检测算法原理

原理:将确定的运动目标从所在的图像背景区域中清晰的分离,并且进行分析处理。
算法主要有:背景减除法、帧间差分法、光流法、边缘特征提取法、各类角点提取法

(1)背景减除法:通常用于背景不发生变化的场景。原理:将没有运动的目标图像作为背景进行保存,然后利用存在运动目标的新一帧图像与之前的保存背景进行差分运算,即可得到目标。运算快且颜色差异明显时候效果很好,但是背景图像缓存会消耗更多的存储空间。
如何在硬件上实现算法——基于FPGA的目标识别与跟踪设计_第10张图片
在这里插入图片描述
T阈值,将t时刻的帧图像和背景图像做差,发生变化比较大的像素点相当于目标像素点,比较小的相当于没有发生变化的背景。

(2)帧间差分法:原理:在有运动目标的视频图像中,对不同帧的图像分析处理,各帧图像中对应像素点发生相对变化,则这个变化的像素点集合就被看作运动目标的像素点集合,然后获取连续的两帧图像,前一帧图像 - 后一帧图像 = 运动目标。如果相同位置像素点特征差小于设定阈值,则为背景,反之为运动目标。

如何在硬件上实现算法——基于FPGA的目标识别与跟踪设计_第11张图片
这个延迟相当于运动速度,太快太慢效果都有影响。慢:两帧图像变化较小,差分效果不好。快:容易出现伪目标现象。此外难消除有效目标点/变化小且色泽相近的情况下不适用。

数学表达式:将ti 和ti+1 时刻的图像做差得到侦差图像 fd;T为差分阈值,侦差图像大于差分阈值,则为运动目标。
在这里插入图片描述


(3)光流法:(很难保证复杂背景下计算的正确性)

原理:利用图像中背景的光流特性和目标的光流特性差异来提取目标。
图像光流不连续说明存在运动目标,反之不存在,于是这就是用来分割运动目标的依据。
如何在硬件上实现算法——基于FPGA的目标识别与跟踪设计_第12张图片

2.3 目标跟踪算法原理和分类

原理匹配连续多帧图像中运行目标的过程。匹配选择的对象是运动目标的某些特征,可减少计算量。

方法
(1)基于区域匹配的跟踪算法:确定出带有运动目标的模板,模板大于运动模板的矩形区域,然后将模板与每一帧图像进行相同位置像素点的匹配,最后选择出匹配好的像素点集合,为运动目标。

(2)基于特征匹配的跟踪算法:进行特征提取操作,提取运动目标的显著特征,然后进行匹配。通常:角点特征、颜色特征、边缘特征

(3)基于模型的跟踪算法:确定目标状态的先验概率,进行跟踪建模,在新的观测值下,计算后验概率,实现实时更新匹配模板,实现目标状态的估计。简言之,通过目标的物体形状或者姿态等进行建模,并预测运动的位置和诡异,不断缩小查询区域,匹配到目标后的样本值,并不断的优化模型。

(4)基于变形模板的跟踪算法:利用目标边缘信息来假设其轮廓,轮廓是可变化的,也就是变形模板,得到模板后,不断的优化匹配,最后可分割出运动目标。

你可能感兴趣的:(FPGA图像处理及仿真测试,fpga开发,目标跟踪,计算机视觉)