You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Python的二维运动分歧占比计算与分歧点识别方案咨询

运动轨迹分歧计算方案

核心问题分析

之前用单帧平均距离的思路失效,本质是平均操作抹平了局部显著差异,且未考虑运动的累积效应与自身运动幅度的对比。以下是针对性的Python实现方案:

实现步骤

1. 数据校验与准备

假设输入的两个运动数据为data1和data2,形状均为(n_frames, n_points, 2)(帧数×点数×XY坐标):

import numpy as np
from scipy.spatial.distance import directed_hausdorff

# 强制校验数据形状一致性
assert data1.shape == data2.shape, "两个数据集的帧、点数、坐标维度必须完全匹配"
n_frames, n_points, _ = data1.shape

2. 计算单个点的轨迹差异

推荐两种差异计算方式,按需选择:

  • 累积帧间差异:统计每个点在所有帧的坐标差总和,适合关注逐帧偏差的场景
# 计算每帧每个点的XY坐标差的L2范数
frame_diff = np.linalg.norm(data1 - data2, axis=2)
# 每个点的总差异:所有帧的偏差之和
point_total_diff = frame_diff.sum(axis=0)
  • Fréchet轨迹距离:衡量两条轨迹的整体相似性,更适合评估运动趋势的分歧(用双向Hausdorff距离近似,适合短轨迹)
def calc_frechet(traj1, traj2):
    d1 = directed_hausdorff(traj1, traj2)[0]
    d2 = directed_hausdorff(traj2, traj1)[0]
    return max(d1, d2)

# 遍历每个点计算轨迹距离
point_frechet_diff = np.array([calc_frechet(data1[:,i,:], data2[:,i,:]) for i in range(n_points)])

3. 计算整体分歧占比

以自身运动幅度为基准,避免无意义的绝对差异:

# 计算每个点的自身轨迹总长度(作为分歧占比的分母)
point_traj_length = np.array([
    np.sum(np.linalg.norm(np.diff(data1[:,i,:], axis=0), axis=1)) 
    for i in range(n_points)
])
# 处理轨迹长度为0的点(避免除以0)
point_traj_length[point_traj_length < 1e-6] = 1e-6

# 每个点的分歧占比:差异值 / 自身轨迹长度
point_divergence_ratio = point_total_diff / point_traj_length
# 整体分歧占比:加权平均(用自身轨迹长度加权,减少不动点的干扰)
overall_divergence_ratio = np.average(point_divergence_ratio, weights=point_traj_length)

4. 定位分歧最大的点

# 取分歧最大的前3个点(可调整数量)
top_k = 3
sorted_indices = np.argsort(point_total_diff)[::-1]
top_divergent_points = sorted_indices[:top_k]

# 输出结果示例
print(f"整体分歧占比:{overall_divergence_ratio:.2%}")
print(f"分歧最大的前{top_k}个点索引:{top_divergent_points}")
print(f"对应分歧占比:{point_divergence_ratio[top_divergent_points]:.2%}")

方案优势

  • 不再依赖单帧平均,保留了每个点的轨迹差异细节
  • 用自身运动幅度作为基准,分歧占比更具实际意义
  • 提供两种差异计算方式,适配不同场景需求

内容的提问来源于stack exchange,提问作者Karampistis Dimitrios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 20:50:25