python - 基于最小距离的点身份的时间链接
问题描述
与之前的问题相关联,在该问题中我更普遍地要求根据最近距离找到最佳的唯一邻居对,我现在正试图将其适应更具体的情况,即我需要随着时间的推移链接点身份。
问题:如何根据最小距离随时间优化链接点身份?
通过跟踪,随着时间的推移,我获得了一系列对象(我的情况 ~2-10)的 x 和 y 坐标。当对象移动小步时,相对于对象之间的距离,应该可以基于当前时间步长和前一个时间步长的点之间的最近距离,以相当高的确定性将对象的身份随时间联系起来。
数据如下所示:
prevdat = {'id': [0, 1, 2], 'loc': [(300, 200), (425, 400), (400, 300)]}
currlocs = [(435, 390), (405, 295), (440, 330), (290, 215)]`
一些考虑:
- 多个积分不能分配给同一个身份
- 如果两点距离前一个点最近,则应考虑它们的绝对距离
- 点有时与最近的前一个邻居具有相同的距离(但不太可能与第二、第三最近邻居等)
- 有时当前点数和先前点数不相等
- 阈值变量提供了可能的最大 nr 个身份。如果超过了,分配给以前的身份后剩下的额外点应该是 nan
在上面的示例中,应该为 currlocs 指定身份[1,2,3,0]
或[1,2,nan,0]
in case maxidentities = 3
。
如果两个数据集在时间上没有时间链接,这个问题将是相似的,但是例如将点分类在两个不同的组中,其中应该从每个组中创建点对。
可能进一步改善链接的上述扩展是采取进一步措施,例如所有 pt 身份的多个先前时间步长与当前点之间的平均向量。数据看起来像:
from collections import deque
prevdat = {0: {'id': 0, 'loc': deque([(200,300),(210,305),(220,305),(225,310)])},
1: {'id': 1, 'loc': deque([(350,250),(340,255),(335,260),(330,260)])},
2: {'id': 2, 'loc': deque([(250,250),(240,250),(230,250)])},
3: {'id': 3, 'loc': deque([(500,50),(480,70),(470,80),(450,85)])}}
currlocs = [(325,265),(430,90),(230,310),(220,255)]
解决方案
推荐阅读
- java - 如何使用 JaxB 设置根元素的值
- audio - ffmpeg:生成空的音频和视频(为视频工作)
- python - 如何在 Dataproc 上运行 Apache Beam?
- javascript - 在角度js中为画布实现清除按钮
- c++ - .eof() 在 .seekg(0, ios::beg) | 之后无法识别文件的结尾 C++
- python - 为什么我的代码会复制我创建的令牌?不和谐.py
- reactjs - 为什么这不会呈现为 JSX?
- r - ggtern - 创建轮廓三元图
- rabbitmq - 用于rabbitmq的带有spring cloud功能的spring cloud stream dlq处理
- python - 如何加载带有自定义损失的keras“历史”对象?