如何使用python找到轨迹的最平滑部分?

2024-05-23 14:06:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了以下问题。我创建了一个程序,可以估计摄像机沿x轴和y轴录制视频的轨迹。这种方法在经纱稳定器中非常常见。我想找到代表最稳定视频片段的值的范围,并得到它们的值。这是轨迹图。图形基于numpy数组。我想最好的办法是选择价值增长最慢的部分,但我不知道如何做


Tags: 方法程序numpy图形视频轨迹代表数组
1条回答
网友
1楼 · 发布于 2024-05-23 14:06:05

下面的代码将找到X和Y在特定阈值下稳定的最长值范围。此阈值限制X和Y的变化。 您可以使用它来调整结果。 如果你想要更稳定的截面比选择ε低。 这将导致较短的范围

import numpy as np
X=150*np.random.rand(270) # mock data as I do not have yours
Y=150*np.random.rand(270) # Replace X and Y with your X and Y data

epsilon = 80 #threshold

# get indexes where the difference is smaller than the threshold for X and Y
valid_values = np.logical_and(np.abs(np.diff(X))<epsilon,np.abs(np.diff(Y))<epsilon)
cummulative_valid_values=[]
count = 0

# find longest range of values that satisfy the threshold
for id,value in enumerate(valid_values):
    if value == True:
        count=count+1
    else:
        count = 0
    cummulative_valid_values.append(count)

# Calculate start and end of largest stable range
end_of_range = cummulative_valid_values.index(max(cummulative_valid_values))+1
start_of_range = end_of_range-max(cummulative_valid_values)+1

print("Largest stable range is: ",start_of_range," - ",end_of_range)

相关问题 更多 >