trackerPHD
多传感器,多目标PHD跟踪器
描述
的trackerPHD
系统对象™是一种跟踪器,能够处理来自多个传感器的多个目标检测。该跟踪器使用多目标概率假设密度(PHD)滤波器来估计点目标和扩展目标的状态。PHD是定义在跟踪系统状态空间上的函数,其在某一状态处的值定义为单位状态空间体积上的目标期望数量。PHD由概率密度函数的加权和(混合)表示,PHD中的峰值对应可能的目标。有关跟踪器如何工作的概述,请参见算法.
默认情况下,trackerPHD
可以使用ggiwphd
过滤器,它将来自扩展对象的检测建模为解析点云。你也可以用trackerPHD
与gmphd
过滤器,它跟踪点目标和具有指定形状的扩展对象。跟踪器的输入是由生成的检测报告objectDetection
,fusionRadarSensor
,irSensor
,或sonarSensor
对象。跟踪器输出所有维护的跟踪及其分析信息。
使用此对象跟踪目标:
创建
trackerPHD
对象并设置其属性。调用带有参数的对象,就像调用函数一样。
要了解更多关于System对象如何工作的信息,请参见什么是系统对象?
创建
描述
创建一个跟踪器
= trackerPHDtrackerPHD
具有默认属性值的系统对象。
使用一个或多个名称-值对设置跟踪器的属性。例如,跟踪器
= trackerPHD (名称,值
)trackerPHD (' MaxNumTracks ', 100)
创建一个PHD跟踪器,最多允许100个跟踪。将每个属性名用引号括起来。
属性
除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放
函数打开它们。
如果属性是可调,您可以随时更改其值。
有关更改属性值的更多信息,请参见在MATLAB中使用系统对象设计系统.
TrackerIndex
- - - - - -唯一的跟踪标识符
0
(默认)|非负整数
唯一的跟踪器标识符,指定为非负整数。属性用作SourceIndex
在跟踪器输出中,并在多跟踪器系统中区分来自不同跟踪器的跟踪。必须将此属性指定为正整数,才能将曲目输出用作曲目预热器的输入。
例子:1
SensorConfigurations
- - - - - -跟踪传感器的配置
trackingSensorConfiguration
对象|的数组trackingSensorConfiguration
对象|单元阵列的trackingSensorConfiguration
对象|等效结构格式
跟踪传感器的配置,指定为trackingSensorConfiguration
对象的数组trackingSensorConfiguration
对象,或者单元格数组的数组trackingSensorConfiguration
对象。此属性向跟踪器提供跟踪传感器配置信息,例如传感器检测限制和传感器分辨率。方法没有默认值SensorConfigurations
属性,并且必须指定SensorConfigurations
属性之前使用跟踪器。但是,您可以通过设置HasSensorConfigurationsInput
财产真正的
并指定配置输入,配置
.如果你设置MaxDetsPerObject
财产的trackingSensorConfiguration
对象到1时,跟踪器只创建一个分区,这样最多只能给每个目标分配一个检测。
控件的属性名相同的字段名的结构也可以指定此属性trackingSensorConfiguration
对象。
PartitioningFcn
- - - - - -函数将检测划分到检测单元中
@partitionDetections
(默认)|函数处理|特征向量
函数将检测划分到检测单元中,指定为函数句柄或字符向量。当每个传感器可以报告每个对象的多个检测时,需要一个配分函数。分区函数报告来自传感器的所有可能的检测分区。在每个分区中,检测被分离到相互排斥的检测单元中,假设每个检测单元属于一个扩展对象。
您还可以指定自己的detections配分函数。为获得编写此函数的指导,您可以查看默认分区函数的详细信息,partitionDetections
,使用类型
命令为:
类型partitionDetections
例子:@myfunction
或“myfunction”
数据类型:function_handle
|字符
出生率
- - - - - -出生率的新目标在密度上
1 e - 3
(默认)|积极的真正的标量
新目标的出生率密度,指定为一个标量。出生率表示单位时间内增加密度的预期目标数。出生密度是通过使用FilterInitializationFcn
的trackingSensorConfiguration
与追踪器一起使用。一般来说,跟踪器以两种方式向密度函数添加组件:
预测出生密度-初始密度
FilterInitializationFcn
函数在没有输入的情况下调用。自适应出生密度-初始化的密度
FilterInitializationFcn
函数在使用检测输入调用时。跟踪器根据其与目标当前估计的关联的对数似然选择检测。
的值出生率
属性表示每个时间步的预测出生密度和自适应出生密度的总和。
例子:0.01
数据类型:单
|双
死亡率
- - - - - -密度中成分的死亡率
1 e-6
(默认)|积极的真正的标量
密度中成分的死亡率,指定为标量。死亡率是指某一组分在经过一个时间步后在密度中消失的速率。死亡率(Pd)与存活概率(P年代)在连续时间步之间的一个分量
在哪里ΔT是时间步长。
例子:1的军医
数据类型:单
|双
AssignmentThreshold
- - - - - -为组件初始化选择检测的阈值
25
(默认)|真正积极的标量
为组件初始化选择检测的阈值,指定为正标量。在校正期间,跟踪器计算现有轨迹和检测单元之间关联的可能性。如果检测单元与所有现有航迹的关联似然(由负对数似然给出)高于阈值(即检测单元与现有航迹的关联似然较低),则使用检测单元在自适应出生密度中初始化新组件。
例子:18.1
数据类型:单
|双
ExtractionThreshold
- - - - - -初始化临时跟踪的阈值
0.5
(默认)|真正积极的标量
初始化暂定轨道的阈值,指定为标量。如果部件的权重大于部件的权重阈值ExtractionThreshold
属性时,组件被标记为“初步”
跟踪和给定TrackID
.
例子:0.45
数据类型:单
|双
ConfirmationThreshold
- - - - - -航迹确认阈值
0.8
(默认)|真正积极的标量
用于跟踪确认的阈值,指定为标量。在一个trackerPHD
对象时,一个音轨可以有多个共享同一音轨的组件TrackID
.方法指定的阈值ConfirmationThreshold
属性,轨道的状态被标记为“确认”
.
例子:0.85
数据类型:单
|双
DeletionThreshold
- - - - - -删除组件的阈值
1 e - 3
(默认)|真正积极的标量
组件删除的阈值,指定为一个标量。在PHD跟踪器中,如果组件的权重低于DeletionThreshold
属性后,该组件将被删除。
例子:0.01
数据类型:单
|双
MergingThreshold
- - - - - -组件合并阈值
25
(默认)|真正积极的标量
组件合并的阈值,指定为实正标量。在PHD跟踪器中,如果Kullback-Leibler分量之间的距离相同TrackID
参数指定的值小于MergingThreshold
属性,然后将这些组件合并到一个组件中。新组件的合并权重等于预先合并组件的权重之和。方法中指定的第一个阈值LabelingThresholds
属性,合并的权值将被截断为第一个阈值。注意,具有TrackID
等于0
也可以相互合并。
例子:30.
数据类型:单
|双
LabelingThresholds
- - - - - -标签管理阈值
0.8 (1.1 - 1)
(默认)|1 × 3的正向量
标记阈值,指定为正数值递减的1 × 3向量,[C1,C2,C3.].基于LabelingThresholds
属性,跟踪器使用以下规则管理密度中的组件:
高于第一个阈值的任何分量的权值C1减少到C1.
对于所有组件具有相同的
TrackID
,如果这些分量中的最大权重大于C2,则保留权重最大的构件,以保留TrackID
,而所有其他组件将被删除。对于所有组件具有相同的
TrackID
,如果最大权重与所有这些分量的权重之和之比大于C3.,则保留权重最大的构件,以保留TrackID
,而所有其他组件将被删除。如果条件2和条件3都不满足,则权重最大的分量保留
TrackID
,而所有其他组件的标签设置为0。当出现这种情况时,本质上意味着一些组件可能表示其他对象。这种处理使这些未保留的成分在未来再次被提取的可能性得以保留。
数据类型:单
|双
HasSensorConfigurationsInput
- - - - - -允许随时间更新传感器配置
假
(默认)|真正的
启用随时间更新传感器配置,指定为假
或真正的
.将此属性设置为真正的
如果你想让传感器的配置随时间更新。此外,当此属性设置为真正的
,必须使用配置输入调用跟踪器,配置
,如用法语法所示。
数据类型:逻辑
StateParameters
- - - - - -航迹状态参考系参数
结构([])
(默认)|结构体数组
航迹状态参考帧的参数,指定为结构或结构数组。跟踪器通过它的StateParameters
属性值设置为StateParameters
属性。您可以使用这些参数来定义报告音轨的参考框架或生成的音轨的其他所需属性。
例如,您可以使用以下结构来定义原点位置为的矩形参考系(10 10 0)
米,它的起始速度相对于场景坐标系是[2 -2 0]米每秒。
字段名 | 价值 |
---|---|
框架 |
“矩形” |
位置 |
(10 10 0) |
速度 |
(2 2 0) |
可调:是的
数据类型:结构体
NumTracks
- - - - - -跟踪器维护的跟踪数
非负整数
此属性是只读的。
由跟踪器维护的跟踪数,作为非负整数返回。
数据类型:双
NumConfirmedTracks
- - - - - -已确认航迹数
非负整数
此属性是只读的。
已确认的轨道数,作为非负整数返回。如果IsConfirmed
输出轨迹结构的场为真正的
,轨迹已确认。
数据类型:双
MaxNumSensors
- - - - - -最大传感器个数
20.
(默认)|正整数
可连接到跟踪器的最大传感器数量,指定为正整数。MaxNumSensors
必须大于或等于的最大值SensorIndex
在更新追踪器的所有检测中都发现了。SensorIndex
的属性objectDetection
对象。
数据类型:单
|双
MaxNumTracks
- - - - - -最大履带数
1000
(默认)|正整数
跟踪器可以维护的最大跟踪数,指定为正整数。
数据类型:单
|双
MaxNumComponents
- - - - - -最大组件数
1000
(默认)|正整数
跟踪器可以维护的最大组件数,指定为正整数。
数据类型:单
|双
使用
要处理检测和更新跟踪,可以使用参数调用跟踪器,就好像它是一个函数一样(在这里描述)。
语法
描述
返回从检测列表中更新的已确认曲目列表,confirmedTracks
=跟踪器(检测
,时间
)检测
,在更新时,时间
.已确认的航迹将被更正并预测到更新时间。
还指定了传感器配置输入,confirmedTracks
=跟踪器(检测
,配置
,时间
)配置
.当传感器的配置随时间变化时,使用此语法。要启用此语法,请设置HasSensorConfigurationsInput
财产真正的
.
[
也返回一个暂定曲目列表,confirmedTracks
,tentativeTracks
,allTracks
) =跟踪器(___)tentativeTracks
,以及所有曲目的列表,allTracks
.您可以将此输出语法与前面的任何输入语法一起使用。
[
也返回分析信息,confirmedTracks
,tentativeTracks
,allTracks
,analysisInformation
) =跟踪器(___)analysisInformation
,可用于航迹分析。您可以将此输出语法与前面的任何输入语法一起使用。
输入参数
检测
- - - - - -检测列表
单元阵列的objectDetection
对象
检测列表,指定为的单元格数组objectDetection
对象。的时间
每个物业的价值objectDetection
对象必须小于或等于当前更新时间,时间
,并且大于用于更新跟踪器的前一个时间值。此外,时间
不同的差异objectDetection
单元格数组中的对象不需要相等。
时间
- - - - - -更新的时间
标量
更新时间,指定为标量。跟踪器更新到此时间的所有跟踪。单位以秒为单位。
时间
必须大于或等于最大值吗时间
的物业价值objectDetection
输入中的对象检测
列表。时间
必须随着跟踪器的每次更新而增加值。
数据类型:单
|双
配置
- - - - - -传感器配置
数组的结构|细胞阵列结构|单元阵列的trackingSensorConfiguration
对象
传感器配置,指定为结构的数组、结构的单元数组或的单元数组trackingSensorConfiguration
对象。如果使用结构数组或结构单元格数组指定值,则必须包含SensorIndex
作为每个结构的字段。类的属性中的某个属性具有相同的名称,但结构中的每个字段都是可选的trackingSensorConfiguration
对象。注意,您只需要指定需要更新的传感器配置。例如,如果您只想更新IsValidTime
属性的第五个传感器,指定配置
作为结构(“SensorIndex”5“IsValidTime”,假)
.
提示
如果你有fusionRadarSensor
跟踪系统中的传感器对象,可以直接使用传感器对象的配置结构输出作为此输入。
依赖关系
要启用此参数,请设置HasSensorConfigurationsInput
财产真正的
.
输出参数
confirmedTracks
——确认跟踪
结构|数组结构
已确认的履带更新到当前时间,作为结构或结构数组返回。每个结构对应一个轨道。方法指定的阈值以上,则确认一个跟踪ConfirmationThreshold
财产。如果轨迹被确认,则IsConfirmed
场的结构是真正的
.确定的轨道结构的字段定义在轨道结构.
数据类型:结构体
tentativeTracks
-初步跟踪
结构|数组结构
试探性轨迹,作为结构或结构数组返回。每个结构对应一个轨道。方法指定的阈值之上,则轨迹为试探性的ExtractionThreshold
属性指定的阈值,但低于ConfirmationThreshold
财产。在这种情况下IsConfirmed
场的结构是假
.中定义了结构的字段轨道结构.
数据类型:结构体
allTracks
——所有的跟踪
结构|数组结构
所有履带,作为结构或结构数组返回。每个结构对应一个轨道。所有轨迹的集合由确认轨迹和暂定轨迹组成。中定义了结构的字段轨道结构.
数据类型:结构体
analysisInformation
-分析轨道更新的附加信息
结构
用于分析曲目更新的附加信息,作为结构返回。该结构的字段为:
场 | 描述 |
CorrectionOrder |
用于状态估计校正的传感器的顺序,作为的行向量返回 |
TrackIDsAtStepBeginning |
跟踪步骤开始时的id。 |
DeletedTrackIDs |
该步骤中删除的轨道id。 |
TrackIDsAtStepEnd |
跟踪步骤结束时的id。 |
SensorAnalysisInfo |
单元阵列的传感器分析信息。 |
的SensorAnalysisInfo
字段可以包含多个传感器信息报告。每个报告都是一个结构,包含:
场 | 描述 |
SensorIndex |
传感器指数。 |
DetectionCells |
检测单元格,作为逻辑矩阵返回。矩阵的每一列表示一个检测单元。在每一列中,如果我第一个元素是1,然后我该检测属于该列所表示的检测单元。 |
DetectionLikelihoods |
密度函数中各成分与检测细胞之间的关联似然,返回为N——- - - - - -P矩阵。N密度函数中分量的数量,和P为检测单元数。 |
IsBirthCells |
中列出的检测单元是否 |
NumPartitions |
分区的数量。 |
DetectionProbability |
传感器检测到现有轨迹的概率,指定为1 × -N行向量,N是密度函数中分量的数量。 |
LabelsBeforeCorrection |
在密度函数中校正前的成分标签,返回为1 × -米b行向量。米b是在校正前跟踪器中维护的组件数量。向量的每个元素都是a |
LabelsAfterCorrection |
标签成分在密度函数校正后,返回为1 × -米一个行向量。米一个是修正后跟踪器中维护的组件数量。向量的每个元素都是a |
WeightsBeforeCorrection |
校正前密度函数中各分量的权重,以1 × -形式返回米b行向量。米b是在校正前跟踪器中维护的组件数量。向量的每一个元素都是相应分量的权值 |
WeightsAfterCorrection |
校正后的密度函数中各分量的权重,返回为1 × -米一个行向量。米一个是修正后跟踪器中维护的组件数量。向量的每一个元素都是相应分量的权值 |
数据类型:结构体
对象的功能
要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为obj
,使用以下语法:
发行版(obj)
特定于trackerPHD
predictTracksToTime |
预测跟踪状态 |
deleteTrack |
删除现有的跟踪 |
initializeTrack |
初始化新轨道 |
sensorIndices |
传感器指标列表 |
exportToSimulink |
导出跟踪器或跟踪fuser到Simulink模型 |
例子
使用trackerPHD跟踪两个对象
设置传感器配置,创建PHD跟踪器,并为跟踪器提供检测。
创建传感器配置。指定传感器的杂波密度和设置IsValidTime属性为true。配置= trackingSensorConfiguration (1);配置。ClutterDensity = 1e-7; configuration.IsValidTime = true;创建一个PHD跟踪器。追踪= trackerPHD (“SensorConfigurations”、配置);在t=0时,在点[5;-5;0]和[-5;5;0]附近创建检测用这些检测更新跟踪器。。检测=细胞(20日1);为i = 1:10 detections{i} = objectDetection(0,[5;-5;0] + 0.2*randn(3,1));结束为j = 11:20 detected {j} = objectDetection(0,[-5;5;0] + 0.2*randn(3,1));结束追踪(检测,0);
0.1秒后再次更新跟踪器,假设目标以每秒[1;2;0]单位的恒定速度移动。
dT = 0.1;为I = 1:20 detections{I}。时间=检测{}。时间+ dT;检测我{}。米easurement = detections{i}.Measurement + [1;2;0]*dT;结束[confTracks, tentTracks allTracks] =追踪(检测,dT);
可视化检测和确认的轨迹。
%从检测中获得测量值。d =[检测{}):;测量= [d.Measurement];使用getTrackPositions函数提取确认跟踪的位置。注意,我们使用默认的传感器配置% FilterInitializationFcn, initcvggiwphd,它使用恒定速度%模型并将状态定义为[x;vx;y;vy;z;vy]。positionSelector = [1 0 0 0 0 0;0 0 1 0 0;0 0 0 0];位置= getTrackPositions (confTracks positionSelector);图()图(测量(1:),测量(2:)“x”,“MarkerSize”5,“MarkerEdgeColor”,“b”);持有在;情节(职位(1,1),职位(1、2),“v”,“MarkerSize”5,“MarkerEdgeColor”,“r”);持有在;情节(职位(2,1),职位(2,2),“^”,“MarkerSize”5,“MarkerEdgeColor”,“r”);传奇(“检测”,“轨道1”,“轨道2”)包含(“x”) ylabel (“y”)
在使用跟踪场景中跟踪车辆trackerPHD
创建一个跟踪场景并指定它StopTime
而且UpdateRate
属性。
场景= trackingScenario;场景。StopTime=Inf; scenario.UpdateRate = 0;
在场景中添加一个塔平台并指定其尺寸。
塔=平台(场景中,“ClassID”3);塔。D我米ensions = struct(...“长度”10...“宽度”10...“高度”现年60岁的...“OriginOffset”30], [0 0);
在场景中添加一个汽车平台。指定它的尺寸和轨迹。
车=平台(场景中,“ClassID”2);的车。D我米ensions = struct(...“长度”, 4.7,...“宽度”, 1.8,...“高度”, 1.4,...“OriginOffset”(-0.6 0 0.7));的车。Trajectory = waypointTrajectory(...[0 -15 -0.23;0.3 -29.5 -0.23;0.3 -56.5 -0.23;...-0.3 -78.2 -0.23;4.4 -96.4 -0.23],...[0;1.4;2.7;4.1;6.3;8.2),...“课程”, -88;-89;-89;-92;-84;-71年),...“水平”, (10;10;10;10;10;10),...“ClimbRate”, (0;0;0;0;0;0),...“AutoPitch”,真的,...“AutoBank”,真正的);
创建一个非扫描雷达,指定其属性,并将传感器安装在塔上。
NoScanning = fusionRadarSensor (“SensorIndex”, 1...“UpdateRate”10...“MountingAngles”(-90 0 0),...“FieldOfView”20 [10],...“ScanMode”,“没有扫描”,...“之内”,真的,...“DetectionCoordinates”,“场景”,...“TargetReportFormat”,“检测”,...“HasElevation”,真正的);塔。传感器= NoScanning;
创建一个戏剧情节,可视化传感器覆盖范围,跟踪和检测。
tp = theaterPlot (“XLim”, -58年[58],“YLim”, -104 (12)“ZLim”, -109年[8]);设置(tp。父母,“YDir”,“反向”,“ZDir”,“反向”);视图(tp.Parent, -37.5, 30);汽车的平台绘图仪。platp = platformPlotter (tp,“DisplayName的”,“目标”,“MarkerFaceColor”,“k”);用于传感器检测的检测绘图仪。detp = detectionPlotter (tp,“DisplayName的”,“检测”,“MarkerSize”6...“MarkerFaceColor”(0.85 0.325 0.098),“MarkerEdgeColor”,“k”,“历史”, 10000);传感器的覆盖率绘图器。covp = coveragePlotter (tp,“DisplayName的”,传感器覆盖的);用于轨道的轨道绘图器。tPlotter = trackPlotter (tp,“DisplayName的”,“跟踪”);
提取传感器的传感器配置并使用它来指定PHD跟踪器。
sensorConfig = trackingSensorConfiguration (scenario.Platforms {1} .Sensors {1},...“SensorTransformFcn”@cvmeas,“FilterInitializationFcn”, @initcvggiwphd);追踪= trackerPHD (“SensorConfigurations”sensorConfig,...“PartitioningFcn”@ (x) partitionDetections (4.7 x 1),...“AssignmentThreshold”, 20岁,“ExtractionThreshold”, 0.8,...“ConfirmationThreshold”, 1.5,“MergingThreshold”, 20岁,...“DeletionThreshold”2 e 1“出生率”1 e - 3,...“HasSensorConfigurationsInput”,真正的);
模拟场景,生成检测,并使用检测来跟踪汽车。在模拟过程中更新戏剧情节。
而推进(场景)& & ishghandle (tp.Parent)生成传感器数据。[引爆器,配置,sensorConfigPIDs] =检测(场景);读取传感器数据。allDets =[侦破{}):;如果~ isempty (allDets)%提取测量位置。量=猫(2,allDets.Measurement) ';%提取测量噪声。allDets.MeasurementNoise measCov =猫(3日);其他的量= 0 (0,3);measCov = 0 (3 3 0);结束获得真实的位置。truePoses = platformPoses(场景);truePosition = vertcat (truePoses (:) .Position);更新跟踪器的检测和传感器配置。。[cTracks, tTracks allTracks] =追踪(引爆器,配置,scenario.SimulationTime);更新戏剧情节。plotPlatform (platp truePosition);plotDetection (detp量、measCov);plotCoverage (covp coverageConfig(场景));更新轨迹绘图仪。提取跟踪位置。positionSelector = [1 0 0 0 0 0 0;0 0 1 0 0 0;0 0 0 0 1 0];位置= getTrackPositions (cTracks positionSelector);标记并绘制轨道。如果~isempty(cTracks) labels = cell(numel(cTracks),1);为i =1:numel(cTracks) labels{i} = {[“T”num2str (cTracks(我).TrackID)]};结束plotTrack (tPlotter,位置,标签);结束drawnow结束
更多关于
轨道结构
轨道信息作为具有以下字段的结构数组返回:
场 | 描述 |
TrackID |
标识曲目的唯一整数。 |
SouceIndex |
在多个跟踪器环境中跟踪器的唯一标识符。的 |
UpdateTime |
音轨更新的时间。 |
年龄 |
赛道存活的次数。 |
状态 |
更新时状态向量的值。 |
StateCovariance |
协方差矩阵不确定性。 |
程度上 |
被跟踪对象的空间范围估计,返回为d——- - - - - -d矩阵,d是对象的维度。仅当跟踪筛选器指定为 |
MeasurementRate |
从被跟踪对象的预期检测次数。仅当跟踪筛选器指定为 |
IsConfirmed |
如果假定航迹是真实目标的,则为。 |
IsCoasted |
|
ObjectClassID |
|
StateParamaters |
中指定的航迹状态参考帧的参数 |
IsSelfReported |
指示跟踪器是否报告跟踪。该字段用于航迹融合环境。它返回为 |
算法
跟踪逻辑流程
trackerPHD
采用迭代修正的方法,对来自多个传感器的检测信息进行顺序处理,更新概率假设密度。的工作流程trackerPHD
遵循这些步骤:
跟踪器根据传感器的检测报告时间对传感器进行排序,并相应地确定修正顺序。
追踪器考虑了两种不同的密度:当前密度和出生密度。当前密度是由上一个时间步长传播的目标密度。出生密度是当前时间步内预期出生的目标的密度。
为每个传感器:
跟踪器预测电流密度到传感器时间戳使用生存概率计算从
死亡率
以及从上次预测到现在的时间。该跟踪器使用
FilterInitializationFcn
没有输入。这与预测出生密度相对应。类指定的函数从当前传感器创建检测分区
PartitioningFcn
财产。每个分区是针对每个对象的检测单元的可能的检测分割。如果SensorConfiguration
指定了MaxNumDetsPerObject
作为1,跟踪器只生成1个分区,其中每个检测都是一个独立的单元。每个检测单元根据电流密度进行评估,并为每个检测单元计算对数似然值。
使用对数似然值,跟踪器计算每个分区的概率。
跟踪器使用每个检测单元校正电流密度。
对于具有高负对数似然(大于
AssignmentThreshold
),该跟踪器添加新的成分的出生密度使用FilterInitializationFcn
.这与适应性出生密度相对应。
在用每个传感器校正电流密度后,跟踪器将出生密度加到电流密度上。追踪器确保在出生密度中可能的目标数量等于
出生率
×dT,在那里dT是时间步长。然后将电流密度预测到当前更新时间。
概率假设密度
概率假设密度(PHD)是定义在跟踪系统状态空间上的函数,其在某一状态处的值定义为单位状态空间体积上的目标期望数量。PHD通常是由混合成分近似的,每个成分对应于对状态的估计。PHD常用的近似有高斯混合、SMC混合、GGIW混合和GIW混合。
要理解PHD,就以高斯混合为例。高斯混合可以用
在哪里米是组分的总数,N(x|米我,P我)为带均值的正态分布米我和协方差P我,w我是重量吗我组件。重量w我控件表示的目标的数量,可以是小数我组件。集成的D(x)在状态空间区域上的结果是该区域内目标的预期数量。集成D(x)在整个状态空间上的结果是目标的总期望数量(∑w我),因为对整个状态空间的正态分布的积分为1。的x的峰(局部最大值)的-坐标D(x)表示目标最可能的状态。
例如,下图演示了一个PHD函数D(x) =N(x|−4,2)+ 0.5N(x| 3、0.4)+ 0.5N(x| 4, 0.4)。这些分量的权重之和为2,这意味着可能存在两个目标。从山顶D(x),这些目标的可能位置为x=−4,x= 3,x= 4。请注意,最后两个组件彼此非常接近,这意味着这两个组件可能属于一个对象。
参考文献
[1] K.格兰斯托姆,C.伦德奎斯特和O.奥格纳。”使用高斯混合PHD滤波器扩展目标跟踪。”航空航天和电子系统汇刊。2012年第4期第48卷第3268-3286页。
[2]格兰斯托姆,K.和O.奥格纳。”利用随机矩阵跟踪多个扩展目标的PHD滤波器。”IEEE信号处理汇刊。2012年第11期第60卷第5657-5671页。
[3] Granstorm, K.和A. Natale, P. Braca, G. Ludeno和F. Serafino。利用x波段海洋雷达数据进行扩展目标跟踪的伽马高斯逆Wishart概率假设密度。《IEEE地球科学与遥感汇刊》。2015年第12期第53卷第6617-6631页。
Panta, Kusha,等,“高斯混合概率假设密度滤波器的数据关联和跟踪管理。”航空航天和电子系统汇刊,第45卷,no。3, 2009年7月,第1003-16页。
[5] Ristic, B.等,“PHD和CPHD过滤器的自适应目标生成强度。”航空航天和电子系统汇刊,第48卷,no。2, 2012, pp. 1656-68。
扩展功能
C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
看到MATLAB代码生成中的系统对象(MATLAB编码器).
所有检测必须具有相同大小和类型的属性。
跟踪器支持严格的单精度带有以下限制的代码生成:
您必须在每个中指定筛选器初始化函数为单精度
trackingSensorConfiguration
对象。每个中指定的过滤器
trackingSensorConfiguration
对象必须使用支持单精度的运动和测量模型。
有关严格的单精度代码生成,请参阅用严格的单精度和非动态内存分配生成代码.
跟踪器支持非动态的内存分配带有以下限制的代码生成:
您必须指定
MaxNumDetections
而且MaxNumDetsPerObject
在每个属性trackingSensorConfiguration
对象作为有限整数。您必须指定
MaxNumComponents
属性作为有限整数。您必须指定
MaxNumTracks
属性作为有限整数。
有关非动态的内存分配代码生成,请参阅用严格的单精度和非动态内存分配生成代码.
版本历史
介绍了R2019a
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。