我有一个表,其中一列中有帧号,另一列中有相应的颜色时刻。我发现他们使用openCV。一些帧的值非常高,而其余帧的值非常低。如何提取具有非常高峰值的帧?
这是分布图,我尝试使用高斯平滑,然后在下面的图上进行阈值处理。
我得到了这个结果。
现在我应该如何进行?
基本上你正在寻找一个寻峰器......MATLAB有一个寻峰器功能来寻找峰值......我没有在OpenCV中找到任何现成的API,所以我实现了MATLAB的寻峰器......算法是这样的...... .
尝试实现这一点并检查峰值查找器的 MATLAB 帮助。如果没有运气,我可以发布代码..
在看到您编辑的图表后进行编辑,似乎该图表具有明确定义的最大峰值,因此您可以做的是跟踪图表的 dy/dx 的符号。最大峰值是 dy/dx 的符号从正变为负的点......在代码语言中
vector<double> array_of_max_peak;
if (sign( x(n+1) - x(n) ) ) > 0
array_of_max_peak.push(x(n));