simpletracker

版本1.5.1 (106 KB) 让Tinevez
一个简单的粒子跟踪算法,用MATLAB实现,可以处理间隙。

4.5 k下载

更新2019年6月19日

从GitHub

在GitHub上查看许可证

SIMPLETRACKER是一个简单的粒子跟踪算法,可以处理间隙

*跟踪*,或粒子连接,包括重建一个或几个粒子的轨迹,因为他们沿着时间移动。它们的位置在每一帧中都有报告,但它们的身份尚不清楚:我们不知道一帧中的哪个粒子对应于前一帧中的一个粒子
框架。跟踪算法旨在为这一问题提供解决方案。

| simpletracker。M |——顾名思义——是一种跟踪算法的简单实现,可以处理间隙。当在一帧中检测到的一个粒子在随后的一帧中没有检测到时,就会出现间隙。如果不加以处理,就会在文件中产生轨道中断或间隙
在粒子消失的帧中,在粒子重新出现的帧中有一个虚假的新轨迹。

|simpletracker|首先执行帧到帧链接步骤,其中首先在每个帧对之间创建链接,使用|的匈牙利算法。在发现最接近的粒子(欧几里得距离)之间建立联系。匈牙利算法保证了两帧之间所有粒子对距离的总和最小。

然后通过数据进行第二次迭代,调查轨迹端点。如果在随后的轨道中发现一个轨道开始靠近轨道结束,则可以创建一个跨越多个帧的链接,弥合差距并恢复轨道。gap关闭步骤使用|nearestneighborlinker|提供的最近邻算法。

输入语法

tracks = SIMPLETRACKER(points)重建坐标为|点|的粒子产生的轨迹。|必须是一个单元数组,每帧考虑一个单元。然后,每个单元格包含在该框架中以a形状找到的粒子的坐标
|n_points x n_dim|双数组,其中|n_points|是该帧中的点的数量(从一帧到另一帧可能变化很大),|n_dim|是问题的维度(1表示1D, 2表示2D, 3表示3D,等等…)。

tracks = SIMPLETRACKER(points, max_linking_distance)定义粒子链接的最大值。如果两个粒子的距离大于这个值,它们将不会被连接(即使它们是剩下的最接近的一对)。默认情况下,它是无限的,不阻止任何链接。

tracks = SIMPLETRACKER(points, max_linking_distance, max_gap_closing)在gap-closing中定义最大帧距离。距离此值更远的帧将不会被调查间隙关闭。缺省值为3。

track = SIMPLETRACKER(points, max_linking_distance, max_gap_closing, debug)添加了一些关于跟踪过程的打印信息。

输出语法

track = SIMPLETRACKER(…)返回一个单元格数组,每个找到的轨道有一个单元格。每个轨道由|n_frames x 1|整数数组组成,包含了在相应帧中属于该轨道的粒子的索引。NaN值报告了在这一帧的轨迹,一个粒子
找不到(缺口)。

输出示例:|track{1} = [1 2 1 NaN 4]|表示第一轨道由第一帧中的粒子1、第二帧中的粒子2、第三帧中的粒子1、第四帧中没有粒子、第五帧中有第四个粒子组成。

[tracks adjacency_tracks] = SIMPLETRACKER(…)也返回一个单元格数组,每个轨道有一个单元格,但是每个轨道的索引是连接点数组的全局索引,可以通过|all_points = vertcat(points{:});|获得。它对于绘图应用非常有用。

[tracks adjacency_tracks A] = SIMPLETRACKER(…)返回稀疏邻接矩阵。除了源粒子(行)和目标粒子(列)之间的链接为1之外,这个矩阵的所有地方都是0。行和列索引用于连接点数组中的点。只有转发链接被报告(从一个帧到另一个帧)
,所以这个矩阵在左下对角半部分没有非零元素。使用该矩阵重建粗轨迹可以像调用|gplot(a, vertcat(points{:}))|一样简单

引用作为

让-伊夫·蒂内兹(2022)。simpletrackerGitHub (https://github.com/tinevez/simpletracker)。检索

MATLAB版本兼容性
使用R2016a创建
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB Central中寻找宝藏,并了解社区如何帮助您!

开始狩猎!
要查看或报告此GitHub插件中的问题,请访问GitHub库
要查看或报告此GitHub插件中的问题,请访问GitHub库