Python 如何连接两个项目的路径?

Python 如何连接两个项目的路径?,python,opencv,scipy,signals,Python,Opencv,Scipy,Signals,我有两个物体位置的时间序列数据。第二个对象大致跟随第一个对象的路径。我想用一条曲线连接两个对象,这条曲线最好地表示两个对象的组合路径。这是后处理,所以我已经知道这两个对象的未来路径。我可以使用第二个对象的位置信息来计算路径 我的源数据如下所示: 这些物体的间距相当相等。对象2在大约50帧内到达对象1的位置。我最初的方法是采用过去25帧的对象蓝色对象,以及未来25帧的黄色对象。我使用signal.savgol()平滑结果(以粉色显示) 这可以正常工作,但平滑线会从一条路径折弯到另一条路径。我希

我有两个物体位置的时间序列数据。第二个对象大致跟随第一个对象的路径。我想用一条曲线连接两个对象,这条曲线最好地表示两个对象的组合路径。这是后处理,所以我已经知道这两个对象的未来路径。我可以使用第二个对象的位置信息来计算路径

我的源数据如下所示:

这些物体的间距相当相等。对象2在大约50帧内到达对象1的位置。我最初的方法是采用过去25帧的对象蓝色对象,以及未来25帧的黄色对象。我使用
signal.savgol()
平滑结果(以粉色显示)

这可以正常工作,但平滑线会从一条路径折弯到另一条路径。我希望这条路是平坦的


您实际上是在尝试对连接两个位置并插值两条直线的某些点的曲线进行曲线拟合。就目前情况而言,问题有点过于确定,因为你有太多的观点。这会导致曲线中出现“扭结”

也许选择较少的点(例如,每个部分轨迹的第5、第10、第15点)来提供6个点加上固定端点会更好

然后,我会选择一种曲线拟合策略,为导数提供良好的连续性,例如非均匀有理B样条(NURB)或切比雪夫多项式

positions = leading_object[frame_number - 25: frame_number]
positions += trailing_object[frame_number: frame_number + 25
x,y = zip(*positions)
window_length = int(len(x)*.5)
if window_length//2 == window_length/2: window_length -= 1
x = signal.savgol_filter(x, window_length, polyorder)
y = signal.savgol_filter(y, window_length, polyorder)
positions = list(zip(x,y))