我想使用 Python 同步我的视频和电压数据。(我使用 Bonsai 和 Open Ephys 获得了这些数据,用于开放野外勘探实验。)
我发了向记录电压数据的计算机发送长 TTL 脉冲,同时发送到相机视野中的 LED 以将其打开。我以 20-60 秒的间隔随机发送脉冲。我想将 LED 脉冲与 TTL 对齐以同步我的数据集。
两个记录不一定同时开始和结束,因此其中一个数据集的脉冲可能比另一个数据集少。
电压数据记录在采样率,视频大约.
我尝试对电压数据进行下采样,将两个数组关联起来并找到最大相关性来计算滞后,然后将视频数据移动偏移量。
我的第一个问题是对电压数据进行下采样。我从平均步长计算了实际的采样率,发现相机大约是.
我尝试使用resampy 的 resample:
resampy.resample(voltage_data, voltage_data_sampling_rate, video_sampling_rate)
其中电压数据采样率是和 video_sampling_rate. 这将返回一个与原始电压数组大小相同的数组。
1. 我怎样才能得到一个与我的视频具有相同采样率的信号?
为了在不使用它的情况下重新采样我的数据,我生成了一个采样率倍数的数组()),将这些转换为整数并获取这些索引。我知道这是非常基本的,但我认为它可以让我检查我是否可以编写此代码的其余部分。
我使用以下方法计算了相关性numpy.correlate:
correlation = np.correlate(video, voltage, "full")
我根据标准差和中位数设置了一个阈值,并将所有值替换为低于阈值以消除噪声。
我检查了哪个数组更短并用.
short_array = np.pad(short_array, (0, len(long_array)-len(short_array)), 'constant')
我根据最大相关性计算了两个信号之间的滞后:
lag = (np.argmax(corr) - (corr.size + 1)/2)/avg_sampling_rate_video
这个结果是对的。它将我的 2-5 秒延迟减少到大约.
plt.plot(downsampled_voltage_time, downsampled_voltage_TTL)
plt.plot(video_time, video_sync_pulses)
我需要这个比那个更好,我希望滞后接近.
2.是下采样导致了这个问题,还是这种方法有其他问题?

