一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于卡尔曼滤波的视觉目标处理方法、装置、设备及介质与流程

2021-12-04 14:21:00 来源:中国专利 TAG:


1.本技术涉及计算机视觉技术领域,具体涉及一种基于卡尔曼滤波的视觉目标处理方法、装置、设备及介质。


背景技术:

2.卡尔曼滤波通过计算系统状态矩阵,迭代地估计目标观测矩阵,进而完成目标的估计、预测等任务。卡尔曼滤波技术在视觉目标跟踪领域得到了广泛应用,并有力地推动了视觉目标跟踪技术的发展。卡尔曼滤波跟踪技术涉及到矩阵乘法运算和求逆运算。矩阵运算计算复杂度高,资源占用量大,当矩阵维度增加时,计算延迟或者资源消耗量将快速增长。因此有必要优化卡尔曼滤波的计算方法。


技术实现要素:

3.本技术的目的是提供一种基于卡尔曼滤波的视觉目标处理方法、装置、设备及介质。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
4.根据本技术实施例的一个方面,提供一种基于卡尔曼滤波的视觉目标处理方法,包括:
5.将视觉目标的状态向量分解为两个分向量;
6.根据所述两个分向量各自所对应的状态误差协方差矩阵,并行地对所述两个分向量进行卡尔曼滤波处理,分别对应得到一个滤波后分向量以及一个滤波后状态误差协方差矩阵,所述状态误差协方差矩阵为块对角矩阵;
7.合并两个所述滤波后分向量得到所述视觉目标的滤波后状态向量。
8.在本技术的一些实施例中,所述根据所述两个分向量各自所对应的状态误差协方差矩阵,并行地对所述两个分向量进行卡尔曼滤波处理,分别对应得到一个滤波后分向量以及一个滤波后状态误差协方差矩阵,包括:
9.利用状态转移矩阵获取第一分向量的更新后状态分向量;
10.利用所述状态转移矩阵、状态噪声协方差矩阵以及所述第一分向量的状态误差协方差矩阵,计算更新后状态误差协方差矩阵;
11.利用所述更新后状态误差协方差矩阵、状态观测矩阵和观测噪声协方差矩阵计算卡尔曼增益矩阵;
12.利用所述更新后状态分向量、所述卡尔曼增益矩阵、所述状态观测矩阵以及预先获取的状态观测值,计算滤波后分向量;
13.利用所述更新后状态误差协方差矩阵、所述卡尔曼增益矩阵和所述状态观测矩阵,计算滤波后状态误差协方差矩阵;
14.其中,所述第一分向量为所述两个分向量中的任一分向量;所述状态转移矩阵、所
述观测噪声协方差矩阵、所述状态噪声协方差矩阵和所述状态观测矩阵均为预先设置的。
15.在本技术的一些实施例中,所述利用状态转移矩阵获取第一分向量的更新后状态分向量,包括:
16.利用所述状态转移矩阵乘以所述第一分向量,得到更新后状态分向量。
17.在本技术的一些实施例中,所述利用所述状态转移矩阵、状态噪声协方差矩阵以及所述第一分向量的状态误差协方差矩阵,计算更新后状态误差协方差矩阵,计算公式为:
18.更新后状态误差协方差矩阵=状态转移矩阵
×
状态误差协方差矩阵
×
状态转移矩阵转置矩阵 状态噪声协方差矩阵。
19.在本技术的一些实施例中,所述利用所述更新后状态误差协方差矩阵、状态观测矩阵和观测噪声协方差矩阵计算卡尔曼增益矩阵,计算公式为:
20.卡尔曼增益矩阵=更新后状态误差协方差矩阵
×
状态观测矩阵转置矩阵
×
(状态观测矩阵
×
更新后状态误差协方差矩阵
×
状态观测矩阵转置矩阵 观测噪声协方差矩阵)
‑1。
21.在本技术的一些实施例中,所述利用所述更新后状态分向量、所述卡尔曼增益矩阵、所述状态观测矩阵以及预先获取的状态观测值,计算滤波后分向量,计算公式为:
22.滤波后分向量=更新后状态分向量 卡尔曼增益矩阵
×
(状态观测值

状态观测矩阵
×
更新后状态分向量)。
23.在本技术的一些实施例中,所述利用所述更新后状态误差协方差矩阵、所述卡尔曼增益矩阵和所述状态观测矩阵,计算滤波后状态误差协方差矩阵,包括:
24.滤波后状态误差协方差矩阵=更新后状态误差协方差矩阵

卡尔曼增益矩阵
×
状态观测矩阵
×
更新后状态误差协方差矩阵。
25.在本技术的一些实施例中,所述方法还包括:
26.利用所述滤波后状态向量和所述滤波后状态误差协方差矩阵分别更新所述状态向量和所述状态误差协方差矩阵,转向所述将视觉目标的状态向量分解为两个分向量,直至达到预设结束条件时停止。
27.根据本技术实施例的另一个方面,提供一种基于卡尔曼滤波的视觉目标处理装置,包括:
28.分解模块,用于将视觉目标的状态向量分解为两个分向量;
29.并行处理模块,用于根据所述两个分向量各自所对应的状态误差协方差矩阵,并行地对所述两个分向量进行卡尔曼滤波处理,分别对应得到一个滤波后分向量以及一个滤波后状态误差协方差矩阵,所述状态误差协方差矩阵为块对角矩阵;
30.合并模块,用于合并两个所述滤波后分向量得到所述视觉目标的滤波后状态向量。
31.在本技术的一些实施例中,所述装置还包括:
32.更新模块,用于利用所述滤波后状态向量和所述滤波后状态误差协方差矩阵分别更新所述状态向量和所述状态误差协方差矩阵,转向所述将视觉目标的状态向量分解为两个分向量,直至达到预设结束条件时停止。
33.在本技术的一些实施例中,所述并行处理模块包括:
34.状态存储器,用于存储所述两个分向量;
35.状态误差协方差存储器,用于存储所述两个分向量各自所对应的状态误差协方差
矩阵;
36.卡尔曼状态更新电路,用于接收来自所述状态存储器的所述两个分向量以及来自所述状态误差协方差存储器的两个所述状态误差协方差矩阵,并行地对所述两个分向量进行卡尔曼滤波处理,分别对应得到一个滤波后分向量以及一个滤波后状态误差协方差矩阵;
37.所述状态存储器,还用于存储来自所述卡尔曼状态更新电路的经过卡尔曼滤波处理后得到的两个分向量;
38.所述状态误差协方差存储器,还用于存储来自所述卡尔曼状态更新电路的两个所述滤波后状态误差协方差矩阵。
39.根据本技术实施例的另一个方面,提供一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现上述任一项的基于卡尔曼滤波的视觉目标处理方法。
40.根据本技术实施例的另一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行,以实现上述任一项的基于卡尔曼滤波的视觉目标处理方法。
41.本技术实施例的其中一个方面提供的技术方案可以包括以下有益效果:
42.本技术实施例提供的基于卡尔曼滤波的视觉目标处理方法,通过将视觉目标的状态向量分解为两个分向量,根据两个分向量各自所对应的状态误差协方差矩阵,使相关矩阵简化为块对角矩阵,并行地对两个分向量进行卡尔曼滤波处理,降低了计算量,提高了计算并行度,降低了计算复杂度,提高了计算效率。
43.本技术的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者,部分特征和优点可以从说明书中推知或毫无疑义地确定,或者通过实施本技术实施例了解。本技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
44.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
45.图1示出了本技术的一个实施例的卡尔曼滤波并行计算流程图;
46.图2示出了本技术的一个实施例的基于卡尔曼滤波的视觉目标处理方法流程图;
47.图3示出了图2所示实施例的步骤s20的一个实施方式的流程图;
48.图4示出了本技术的一个实施例的基于卡尔曼滤波的视觉目标处理装置结构框图;
49.图5示出了本技术的一个实施例的卡尔曼状态观测并行计算电路架构图;
50.图6示出了本技术的一个实施例的卡尔曼状态观测电路流水计算架构图;
51.图7示出了本技术的一个实施例的卡尔曼状态更新并行计算电路架构图;
52.图8示出了本技术的一个实施例的卡尔曼状态更新电路流水计算架构图;
53.图9示出了本技术的一个实施例的电子设备的结构框图;
54.图10示出了本技术的一个实施例的计算机可读存储介质示意图。
具体实施方式
55.为了使本技术的目的、技术方案及优点更加清楚明白,下面结合附图和具体实施例对本技术做进一步说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
56.本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本技术所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
57.在二维视觉序列中,可将视觉目标建模为一个点,需要估计的变量包括横向坐标、纵向坐标、横向速度和纵向速度四个变量。目标的状态变量可表示为一个四行一列的列向量x;目标状态的协方差矩阵p是一个4x4的矩阵。
58.卡尔曼滤波器的预测公式可表示为公式(1):
[0059][0060]
其中,q为4x4的状态噪声协方差矩阵(简称状态噪声矩阵),f表示目标状态转移矩阵,k是第k个时间步(或迭代步)的索引,f
k
代表第k个时间步(第k时刻)的目标状态转移矩阵,表示f
k
的转置矩阵。x'
k
为卡尔曼滤波更新后的目标状态向量,p
k
'为更新后的状态误差协方差矩阵。x
k
‑1为第k

1时刻(第k

1个时间步)的目标状态的最优估计(即第k

1时刻卡尔曼滤波器的输出值)。q
k
代表第k时刻的状态噪声协方差矩阵。
[0061]
假设r为观测噪声协方差矩阵(简称观测噪声矩阵),h为目标状态到观测值的转移矩阵(简称观测矩阵),k为卡尔曼增益矩阵,则卡尔曼滤波器的最优估计与误差修正方法如公式(2)所示:
[0062][0063]
其中,z
k
为第k时刻目标状态的观测值。x'
k
为卡尔曼滤波更新后的目标状态向量,x
k
为第k时刻目标状态的最优估计,p
k
为修正后的误差协方差矩阵。p'
k
代表更新后的误差协方差矩阵。在二维视觉目标跟踪任务中,z
k
可以是检测算法检测到的目标位置,或者除了卡尔曼滤波器之外的其他算法估计的目标位置,或者是通过人工标注的目标位置等等。
[0064]
f
k
、q
k
、h
k
、r
k
这四个参数在迭代过程中保持不变,它们的初始值可以根据具体应用场景进行设定,可以根据具体的应用场景调试得到,即按照经验设置。在状态预测噪声q
k
和观测噪声r
k
不确定的情况下,q
k
、r
k
可以设置为高斯白噪声、椒盐噪声或者其他噪声,亦可多次尝试,选取最优值。
[0065]
在公式(1)和公式(2)中,所有矩阵的尺寸都是4x4(即4行4列),所有向量的尺寸都是4x1(即4行1列)。公式(2)还涉及矩阵求逆运算,计算复杂度较高。
[0066]
对于二维目标运动,本技术实施例假设目标的两个运动方向之间的状态没有相关性(即相关系数为零),那么对应的协方差矩阵可分为四个大小为2x2的矩阵块,而且主对角线上的矩阵块为有效数据,次对角线上的矩阵块为全零矩阵。通过解耦合和矩阵分块操作,本技术实施例将高维矩阵乘法、求逆运算转化为低维度矩阵乘法、求逆运算,从而降低了计算量,达到提升计算效率的效果。此外,本技术实施例提出的并行电路计算方案实现了上述方法,并且可进一步提高卡尔曼滤波速度和能效。由矩阵分解导致的误差一部分被噪声协方差矩阵补偿(本技术实施例通过设定初始值补偿),另一部分传递到输出端,影响预测结果。在太空实验、航天器运动跟踪与预测等应用中,该假设成立,因此本实施例的方案具有巨大的实用价值。
[0067]
本技术实施例提出的基于不相关假设的卡尔曼滤波器矩阵分块计算方法的整体架构如图1所示。将目标的初始状态分解为两个块,然后将该两个块分别送入两路相同架构的卡尔曼滤波模块,最后合并两路的计算结果,即可输出目标的整体状态。同时,本时间步输出的目标状态也是下一个时间步输入的目标状态。
[0068]
如图2所示,本技术的一个实施例提供了一种基于卡尔曼滤波的视觉目标处理方法,包括以下步骤:
[0069]
s10、将视觉目标的状态向量分解为两个分向量。
[0070]
视觉目标的状态向量包括横向坐标、纵向坐标、横向速度和纵向速度四个变量。目标的状态变量可表示为一个四行一列的列向量x;目标状态的协方差矩阵p是一个4x4的矩阵。
[0071]
视觉目标的状态向量可以分解为横向分向量和纵向分向量两个分向量,也可以分解为位置分向量和速度分向量两个分向量。
[0072]
例如,视觉目标的状态向量x=(x1,v1,x2,v2)
t
,可以将x分解为两个两行一列的分向量,得到横向分向量和纵向分向量也可以将x分解为两个两行一列的分向量,得到位置分向量和速度分向量本实施例以分解为横向分向量和纵向分向量为例进行说明。
[0073]
s20、根据所述两个分向量各自所对应的状态误差协方差矩阵,并行地对所述两个分向量进行卡尔曼滤波处理,分别对应得到一个滤波后分向量以及一个滤波后状态误差协方差矩阵,所述状态误差协方差矩阵为块对角矩阵。
[0074]
如图3所示,在某些实施方式中,步骤s20包括:
[0075]
s201、利用状态转移矩阵获取第一分向量的更新后状态分向量;
[0076]
具体地,利用所述状态转移矩阵乘以所述第一分向量,得到更新后状态分向量。第一分向量为所述两个分向量中的任一分向量,表示为k是第k个时间步(或迭代步)的索
引,或者k也可以称之为迭代次数。
[0077]
更新后状态分向量更新后状态分向量代表第一分向量的状态转移矩阵。
[0078]
s202、利用所述状态转移矩阵、状态噪声协方差矩阵以及所述第一分向量的状态误差协方差矩阵,计算更新后状态误差协方差矩阵;
[0079]
具体地,更新后状态误差协方差矩阵=状态转移矩阵
×
状态误差协方差矩阵
×
状态转移矩阵转置矩阵 状态噪声协方差矩阵。
[0080][0080]
代表更新后状态误差协方差矩阵,代表对应于第一分向量的状态噪声协方差矩阵。代表的转置矩阵。
[0081]
s203、利用所述更新后状态误差协方差矩阵、状态观测矩阵和观测噪声协方差矩阵计算卡尔曼增益矩阵;
[0082]
具体地,卡尔曼增益矩阵=更新后状态误差协方差矩阵
×
状态观测矩阵转置矩阵
×
(状态观测矩阵
×
更新后状态误差协方差矩阵
×
状态观测矩阵转置矩阵 观测噪声协方差矩阵)
‑1。
[0083][0083]
代表卡尔曼增益矩阵,代表对应于第一分向量的状态观测矩阵,代表对应于第一分向量的观测噪声协方差矩阵。代表的状态观测矩阵。
[0084]
s204、利用所述更新后状态分向量、所述卡尔曼增益矩阵、所述状态观测矩阵以及预先获取的状态观测值,计算滤波后分向量;
[0085]
具体地,滤波后分向量=更新后状态分向量 卡尔曼增益矩阵
×
(状态观测值

状态观测矩阵
×
更新后状态分向量)。
[0086]
其中z
k
为第k时刻目标的状态观测值,是预先获取的。
[0087]
s205、利用所述更新后状态误差协方差矩阵、所述卡尔曼增益矩阵和所述状态观测矩阵,计算滤波后状态误差协方差矩阵;
[0088]
具体地,滤波后状态误差协方差矩阵=更新后状态误差协方差矩阵

卡尔曼增益矩阵
×
状态观测矩阵
×
更新后状态误差协方差矩阵。
[0089][0090]
其中,所述状态转移矩阵、所述观测噪声协方差矩阵、所述状态噪声协方差矩阵和所述状态观测矩阵均为预先设置的。
[0091]
s30、合并两个所述滤波后分向量得到所述视觉目标的滤波后状态向量。
[0092]
将两个滤波后分向量合并称为一个向量,即得到视觉目标的滤波后状态向量。
[0093]
本技术实施例提供的基于卡尔曼滤波的视觉目标处理方法,通过将视觉目标的状态向量分解为两个分向量,根据两个分向量各自所对应的状态误差协方差矩阵,使相关矩阵简化为块对角矩阵,并行地对两个分向量进行卡尔曼滤波处理,降低了计算量,提高了计算并行度,降低了计算复杂度,提高了计算效率。
[0094]
在某些实施方式中,本实施例的方法还包括步骤s40、利用所述滤波后状态向量和所述滤波后状态误差协方差矩阵分别更新所述状态向量和所述状态误差协方差矩阵,转向
步骤s10,直至达到预设结束条件时停止。
[0095]
预设结束条件可以根据实际需要进行设定,例如可以设定为更新次数,当达到预先设定的更新次数时,结束处理过程。
[0096]
将视觉目标的状态向量x分解为两个两行一列的向量之后,由于两个方向(横向和纵向)之间没有相关性,那么目标的状态转移矩阵f可简化为块对角矩阵,即除了左上角四个元素和右下角四个元素之外,其余元素都是零。同理,在本实施例的不相关假设下,目标的状态误差协方差矩阵p亦可简化为块对角矩阵。所以公式(1)转化为公式(3)。其中,为两行一列的向量,表示横向或者纵向的(位置与速度)变量。表示的两个变量的误差协方差矩阵。为了保持p的块对角矩阵的性质,本技术实施例进一步假设状态噪声协方差矩阵q同样是块对角矩阵。
[0097][0098]
在公式(3)中,是矩阵q的一个有效矩阵块。根据以上假设,公式(2)可进一步简化为公式(4)。
[0099][0100]
在上述假设的基础上,本技术实施例进一步假设目标状态到观测值的转移过程仅仅与对应的方向有关,两个方向之间不相关,那么h∈r
4x4
也简化为块对角矩阵。是h的两个有效矩阵块之一。结合以上假设,根据矩阵计算的原则可知:公式(2)中的计算结果也是一个块对角矩阵。为了进一步降低计算量,本技术实施例进一步假设观测噪声在两个方向之间具有不相关性,即相关结果为零。那么r退化为块对角矩阵。为r中的一个有效数据块。为k的有效矩阵块。基于以上分析,公式(2)中的4x4的矩阵逆运算可分解为两个2x2的矩阵的逆运算。由此,卡尔曼滤波器的矩阵逆运算的计算量得到大幅度消减。是其中一个方向的位置观测和速度观测向量。
[0101]
本实施例中设置:
[0102]
h
k
在迭代更新过程中也是固定的,设置为即单位矩阵,含义为:目标状态值(即公式(2)中的x'
k
)与观测值(即公式(2)中的z
k
)具有相同的可靠性和直接的对应关系。
[0103]
f
k
是固定值,在迭代过程中保持不变。f
k
是对运动的建模,在较短的时间内,可以假
设目标为匀速直线运动,那么此时的初始化值为在中,右上角的“1”可以根据运动假设变化。
[0104]
具体地,本技术另一个实施例提出的视觉目标处理方法包括以下步骤:
[0105]
第一步:初始化两个状态误差协方差矩阵和初始化两个状态转移矩阵和初始化两个观测噪声协方差矩阵和初始化两个状态噪声协方差矩阵和初始化状态误差协方差矩阵1、状态转移矩阵2、观测噪声协方差矩阵3、状态噪声协方差矩阵4以及状态观测转移矩阵5;
[0106]
第二步:从检测器或者跟踪器前一时刻的输出中获取视觉目标的目标状态向量x=(x1,v1,x2,v2)
t
,并将x分解为两个两行一列的向量,得到横向分向量和纵向分向量
[0107]
第三步:根据公式(3),对两路目标状态向量、状态噪声协方差矩阵、状态误差协方差矩阵和状态转移矩阵,并行地执行卡尔曼滤波器状态更新计算,得到更新后的目标状态向量和更新后的状态误差协方差矩阵。
[0108]
第四步:根据公式(4),对两路状态到观测的状态转移矩阵、观测噪声协方差矩阵、更新后的状态误差协方差矩阵分别计算卡尔曼增益(即公式(4)的第一个公式),并利用卡尔曼增益矩阵和目标状态观测向量估计最优的目标状态(即公式(4)的第二个公式),最后修正状态误差协方差矩阵(即公式(4)的第三个公式)。
[0109]
第五步:合并两路的目标状态向量并输出跟踪结果,返回第二步继续执行上述过程,直至跟踪任务结束。
[0110]
通过以上不相关性假设,卡尔曼滤波运算的计算量(或计算资源需求量)大幅度降低。在弱相关的条件下,公式(3)和公式(4)成立。上述方法在通用计算平台,利用cpu多线程或者gpu多核的优势提升了计算速度。按照速度和位置两个维度解耦合,并令二者之间的噪声不相关,也能够达到以矩阵分块运算替代对整个矩阵运算,进而降低计算量、增加计算并行度和提升计算效率的效果。
[0111]
本技术实施例的基于卡尔曼滤波的视觉目标处理方法,通过将目标状态按照运动方向解耦合,使状态误差协方差矩阵、状态转移矩阵、噪声协方差矩阵、状态到观测的转移矩阵简化为块对角矩阵,从而将4x4的矩阵乘法、求逆等运算简化为对两个2x2的矩阵的乘法、求逆运算,矩阵分块可降低计算量,提升计算并行度,因此本技术实施例的方法具有计算复杂度低、并行度高、计算效率高的优点。
[0112]
参考图4所示,本技术的另一个实施例提供了一种基于卡尔曼滤波的视觉目标处理装置,包括:
[0113]
分解模块,用于将视觉目标的状态向量分解为两个分向量;
[0114]
并行处理模块,用于根据所述两个分向量各自所对应的状态误差协方差矩阵,并行地对所述两个分向量进行卡尔曼滤波处理,分别对应得到一个滤波后分向量以及一个滤波后状态误差协方差矩阵;
[0115]
合并模块,用于合并两个所述滤波后分向量得到所述视觉目标的滤波后状态向
量。
[0116]
在某些实施方式中,本实施例的装置还包括更新模块,用于利用所述滤波后状态向量和所述滤波后状态误差协方差矩阵分别更新所述状态向量和所述状态误差协方差矩阵,转向所述将视觉目标的状态向量分解为两个分向量,直至达到预设结束条件时停止。
[0117]
在某些实施方式中,该视觉目标处理装置还包括存储电路,所述存储电路用于存储所述分向量、所述更新后状态分向量、所述状态转移矩阵、所述状态噪声协方差矩阵、所述状态误差协方差矩阵、所述更新后状态误差协方差矩阵、所述状态观测矩阵、所述观测噪声协方差矩阵、所述卡尔曼增益矩阵、所述状态观测值、所述滤波后分向量以及所述滤波后状态误差协方差矩阵。
[0118]
在某些实施方式中,并行处理模块包括:
[0119]
第一计算单元,用于利用状态转移矩阵获取第一分向量的更新后状态分向量;
[0120]
第二计算单元,用于利用所述状态转移矩阵、状态噪声协方差矩阵以及所述第一分向量的状态误差协方差矩阵,计算更新后状态误差协方差矩阵;
[0121]
第三计算单元,用于利用所述更新后状态误差协方差矩阵、状态观测矩阵和观测噪声协方差矩阵计算卡尔曼增益矩阵;
[0122]
第四计算单元,用于利用所述更新后状态分向量、所述卡尔曼增益矩阵、所述状态观测矩阵以及预先获取的状态观测值,计算滤波后分向量;
[0123]
第五计算单元,用于利用所述更新后状态误差协方差矩阵、所述卡尔曼增益矩阵和所述状态观测矩阵,计算滤波后状态误差协方差矩阵;
[0124]
其中,所述第一分向量为所述两个分向量中的任一分向量;所述状态转移矩阵、所述观测噪声协方差矩阵、所述状态噪声协方差矩阵和所述状态观测矩阵均为预先设置的。
[0125]
在某些实施方式中,并行处理模块包括:
[0126]
状态存储器,用于存储所述两个分向量;
[0127]
状态误差协方差存储器,用于存储所述两个分向量各自所对应的状态误差协方差矩阵;
[0128]
卡尔曼状态更新电路,用于接收来自所述状态存储器的所述两个分向量以及来自所述状态误差协方差存储器的两个所述状态误差协方差矩阵,并行地对所述两个分向量进行卡尔曼滤波处理,分别对应得到一个滤波后分向量以及一个滤波后状态误差协方差矩阵;
[0129]
所述状态存储器,还用于存储来自所述卡尔曼状态更新电路的经过卡尔曼滤波处理后得到的两个分向量;
[0130]
所述状态误差协方差存储器,还用于存储来自所述卡尔曼状态更新电路的两个所述滤波后状态误差协方差矩阵。
[0131]
具体地,在本实施例的一个实施方式中,参考图5至图8所示,并行处理模块包括状态误差协方差存储器ram_p、缓存器buffer_rp1、缓存器buffer_rp2、状态存储器ram_x、缓存器buffer_rx1、缓存器buffer_rx2、缓存器buffer_ox1和缓存器buffer_ox2;
[0132]
两个分向量各自所对应的状态误差协方差矩阵存储在图7中的状态误差协方差存储器ram_p中,在卡尔曼滤波处理开始之前控制逻辑将其读出,送入缓存器buffer_rp1和缓存器buffer_rp2;
[0133]
两个分向量存储于图7中的状态存储器ram_x,卡尔曼滤波处理开始之前控制逻辑将两个分向量分别读出,送入缓存器buffer_rx1和缓存器buffer_rx2。
[0134]
滤波后分向量首先分别缓存于缓存器buffer_ox1和缓存器buffer_ox2,然后在控制逻辑控制之下送入状态存储器ram_x;
[0135]
图7中的卡尔曼状态更新电路卡尔曼滤波处理得到滤波后状态误差协方差矩阵分别缓存于缓存器buffer_op1和缓存器buffer_op2,然后在控制逻辑控制之下送入状态误差协方差存储器ram_p。
[0136]
第一计算单元用于利用状态转移矩阵获取第一分向量的更新后状态分向量。
[0137]
第一分向量存储于图7中的缓存器buffer_rx1或缓存器buffer_rx2中。
[0138]
状态转移矩阵存储于图7中的状态更新转移矩阵存储器if1或者状态更新转移矩阵存储器if2中。
[0139]
控制逻辑将状态转移矩阵读入缓存器buffer_if1或缓存器buffer_if2。图7中的缓存器buffer_if1和缓存器buffer_if2相当于图8中的缓存器buffer_if缓存器。
[0140]
更新后状态分向量分别缓存于图7中缓存器buffer_ox1和缓存器buffer_ox2,然后输入更新后状态存储器ram_x中。
[0141]
第二计算单元用于利用所述状态转移矩阵、状态噪声协方差矩阵以及所述第一分向量的状态误差协方差矩阵,计算更新后状态误差协方差矩阵。
[0142]
更新之前的状态误差协方差矩阵存储于图7中的状态误差协方差存储器ram_p之中,而后缓存于缓存器buffer_rp1和缓存器buffer_rp2,再分别输入卡尔曼状态更新电路#1和卡尔曼状态更新电路#2模块。卡尔曼状态更新电路#1和卡尔曼状态更新电路#2模块的架构完全一致,下面统一表述为卡尔曼状态更新电路。
[0143]
图7中的卡尔曼状态更新电路的细节显示在图8中。图8中的缓存器buffer_rp对应图7中的缓存器buffer_rp1或者缓存器buffer_rp2;同理,图8中缓存器buffer_rx对应图7中缓存器buffer_rx1或者缓存器buffer_rx2。
[0144]
状态噪声协方差矩阵的存储器是图7中的状态噪声协方差存储器iq1或状态噪声协方差存储器iq2,状态噪声协方差矩阵经过缓存器buffer_iq1和缓存器buffer_iq2缓存之后输入卡尔曼状态更新电路,图8中缓存器buffer_iq对应图7中的缓存器buffer_iq1或缓存器buffer_iq2。
[0145]
更新后状态误差协方差矩阵先经过图7中缓存器buffer_op1和缓存器buffer_op2缓存之后输入更新后误差协方差存储器ram_p。图8中的缓存器buffer_op对应图7中的缓存器buffer_op1或缓存器buffer_op2。
[0146]
第三计算单元用于利用所述更新后状态误差协方差矩阵、状态观测矩阵和观测噪声协方差矩阵计算卡尔曼增益矩阵。
[0147]
观测噪声协方差矩阵存储于图5中的观测噪声协方差存储器ir1,经缓存器buffer_ir1缓存后输入卡尔曼状态观测电路#1;同理,另外一个分向量的观测噪声协方差矩阵存储于图5的观测噪声协方差存储器ir2,经缓存器buffer_ir2缓存后输入卡尔曼状态观测电路#2。图5中的缓存器buffer_ir1和缓存器buffer_ir2在图6中统一表示为缓存器buffer_ir。
[0148]
状态观测矩阵存储于图5中状态到观测转移矩阵存储器ih1,经缓存器buffer_ih1
缓存后输入卡尔曼状态观测电路#1,另一个分向量的状态观测矩阵存储于状态到观测转移矩阵存储器ih2,然后经过缓存器buffer_ih2缓存后输入卡尔曼状态观测电路#2。缓存器buffer_ih1和缓存器buffer_ih2在图6中统一表示为缓存器buffer_ih。
[0149]
在图5中,该更新后状态误差协方差矩阵对应的存储器是误差协方差存储器ram_p相当于图7中的更新后误差协方差存储器ram_p,分别经过缓存器buffer_rp1和缓存器buffer_rp2缓存后输入卡尔曼状态观测电路#1和卡尔曼状态观测电路#2。缓存器buffer_rp1和缓存器buffer_rp2在图6中表示为缓存器buffer_rp。图5中的卡尔曼状态观测电路#1和卡尔曼状态观测电路#2的电路细节如图6所示。
[0150]
第四计算单元用于利用所述更新后状态分向量、所述卡尔曼增益矩阵、所述状态观测矩阵以及预先获取的状态观测值,计算滤波后分向量。
[0151]
更新后状态分向量对应于图5中的缓存器buffer_rx1和缓存器buffer_rx2,也相当于图6中的缓存器buffer_rx。卡尔曼增益矩阵为图6中k0缓存器的值。第k时刻目标的状态观测值为缓存器buffer_zs0的值。滤波后分向量为图6中缓存器buffer_ox的值。
[0152]
第五计算单元用于利用所述更新后状态误差协方差矩阵、所述卡尔曼增益矩阵和所述状态观测矩阵,计算滤波后状态误差协方差矩阵。
[0153]
更新后状态误差协方差矩阵为图6中缓存器buffer_rp的值。滤波后状态误差协方差矩阵为图6中缓存器buffer_op的值。图6中缓存器buffer_op和缓存器buffer_ox分别与图5中的缓存器buffer_op1、缓存器buffer_op2,缓存器buffer_ox1和缓存器buffer_ox2对应,在控制逻辑控制下分别输入修正后误差协方差存储器ram_p和最优状态估计存储器ram_x。
[0154]
更新模块用于利用所述滤波后状态向量和所述滤波后状态误差协方差矩阵分别更新所述状态向量和所述状态误差协方差矩阵。
[0155]
图7中的更新后误差协方差存储器ram_p相当于图5中的误差协方差存储器ram_p;图7中的更新后状态存储器ram_x相当于图5中的状态存储器ram_x;图5中的修正后误差协方差存储器ram_p相当于图7中的误差协方差存储器ram_p,图5中最优状态估计存储器ram_x相当于图7的状态存储器ram_x。
[0156]
对于多个视觉目标,本技术的一个实施例为每一个目标匹配一套卡尔曼系统矩阵。这些矩阵数据存储在ram中。为了充分利用本技术实施例的并行性并提升计算能效,本技术实施例提出了一种如图5所示的卡尔曼滤波并行计算电路来实现公式(4)所示的功能。对于一个目标,控制电路从误差协方差存储器中读取两个2x2大小的矩阵,经过buffer_rp缓存后分别送入两个卡尔曼滤波电路。送入两个计算电路的状态误差协方差矩阵不一定相同,其可以是不同的。类似的,控制电路将状态存储器的数据读两次,经buffer_rx缓存后,分别送入两个卡尔曼状态观测电路计算模块。横向坐标存储器和纵向坐标存储器保存当前时刻的观测值,其数据经过buffer_cx和buffer_cy缓存后分别送入第一个卡尔曼状态观测电路计算模块和第二个卡尔曼状态观测电路计算模块。这两个卡尔曼状态观测计算模块的电路完全一致,但是输入数据不一定相同。与此类似,控制电路将观测噪声协方差存储器的数据经buffer_ir,状态到观测转移矩阵存储器的数据经buffer_ih缓存后分别送入卡尔曼状态观测电路模块。每个状态观测电路模块输出修正后的状态误差协方差矩阵buffer_op和状态最优估计向量buffer_ox,在控制电路的驱动下,分别写入输出协方差存储器和输出
状态存储器。实际应用中,观测噪声协方差存储器ir1和ir2可以合并为同一个存储器;同理,状态到观测转移矩阵存储器ih1和ih2也可以合并为同一个存储器;类似地,输入状态存储器、输出状态存储器、输入误差协方差存储器和输出误差协方差存储器也可以替换为两个存储器。
[0157]
卡尔曼滤波器状态到输出(即公式(4))计算电路架构如图6所示。整个模块分为控制电路、运算电路和寄存电路三个部分。控制电路控制每个子部件的运行,为了绘图清晰,本技术实施例省略了控制电路与每个子部件的连线。图中,表示在运算符号的左侧,表示在对应的运算符号的右侧。加减与求逆符号与位置无关,所以没有标注。
[0158]
buffer_ih矩阵经过转置之后送入buffer_iht缓存器,而后buffer_iht缓存的矩阵与buffer_rp矩阵相乘,结果为tmp0。tmp0送入两个分支:其中一个经过与buffer_ih相乘,然后与buffer_ir的矩阵相加,经过求逆运算之后,再与另一个分支的矩阵tmp0相乘,最后将结果送入k0缓存器。buffer_rp矩阵减k0与buffer_ih和buffer_rp三个矩阵的乘积,所得之差送入bffer_op缓存器。
[0159]
另外,buffer_cx的数据送入buffer_z0缓存,而后buffer_z0减去buffer_ih与buffer_rx之乘积,所得的差值再与k0相乘,然后该乘积经过与buffer_rx相加送入buffer_ox,而后输出。在图6中,inv表示2x2矩阵的逆运算。注意,为了提升该电路的时钟频率,可在各个算子之间或算子内部添加一个或多个寄存器/缓存器,本技术实施例为了图像清晰,省略了这些寄存器/缓存器。
[0160]
公式(3)的并行计算电路架构如图7所示。控制电路从状态误差存储器读取分块存储的状态误差协方差矩阵,经过缓存后分别送入两个完全一致的卡尔曼状态更新电路;类似地,状态向量分块后也被分别送入两个卡尔曼状态更新电路。与此同时,控制电路将状态更新转移矩阵和状态噪声协方差矩阵经过缓存,分别送入两个卡尔曼状态更新电路。最后,卡尔曼状态更新电路的计算结果经过缓存后,分别写回误差协方差存储器和状态存储器。
[0161]
图7所示的卡尔曼状态更新电路子模块的计算架构如图8所示。该电路将公式(3)中的每个算子展开为一个计算电路,因而可以方便地执行流水化运算,大幅度提升计算效率。buffer_if转置后缓存于buffer_ift,而后buffer_ift与buffer_rp相乘,所得之积在与buffer_if相乘,然后再与buffer_iq相加之后送入buffer_op缓存。buffer_rx与buffer_if相乘之积直接送入buffer_ox缓存器。整个计算过程在控制电路的控制下工作。
[0162]
本技术实施例中的卡尔曼滤波计算电路既能实现上述并行化计算方案,又能去除取指令、译码、乱序执行、cache缓存等通用处理器的计算组件,进而节省了计算过程的能耗。
[0163]
本技术的另一个实施例提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现上述任一实施方式所述的基于卡尔曼滤波的视觉目标处理方法。
[0164]
如图9所示,所述电子设备10可以包括:处理器100,存储器101,总线102和通信接口103,所述处理器100、通信接口103和存储器101通过总线102连接;所述存储器101中存储有可在所述处理器100上运行的计算机程序,所述处理器100运行所述计算机程序时执行本技术前述任一实施方式所提供的方法。
[0165]
其中,存储器101可能包含高速随机存取存储器(ram:random access memory),也
可能还可以包括非不稳定的存储器(non

volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
[0166]
总线102可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器101用于存储程序,所述处理器100在接收到执行指令后,执行所述程序,前述本技术实施例任一实施方式揭示的所述方法可以应用于处理器100中,或者由处理器100实现。
[0167]
处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,可以包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器101,处理器100读取存储器101中的信息,结合其硬件完成上述方法的步骤。
[0168]
本技术实施例提供的电子设备与本技术实施例提供的方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
[0169]
本技术的另一个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以实现上述任一实施方式的基于卡尔曼滤波的视觉目标处理方法。请参考图10,其示出的计算机可读存储介质为光盘20,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述任意实施方式所提供的方法。
[0170]
需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
[0171]
本技术的上述实施例提供的计算机可读存储介质与本技术实施例提供的方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
[0172]
需要说明的是:
[0173]
术语“模块”并非意图受限于特定物理形式。取决于具体应用,模块可以实现为硬件、固件、软件和/或其组合。此外,不同的模块可以共享公共组件或甚至由相同组件实现。不同模块之间可以存在或不存在清楚的界限。
[0174]
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示例一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本技术也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本技术的内容,并且上面对特定语言所做的描述是为了披露本申
请的最佳实施方式。
[0175]
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0176]
以上所述实施例仅表达了本技术的实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献