Opencv光流跟踪:停止状态
Opencv Optical flow tracking: stop condition
我目前正在尝试通过使用opencv的光流实现人脸跟踪。
为了实现这一点,我使用openCV人脸检测器检测人脸,我通过调用goodFeaturesToTrack
来确定要跟踪的检测区域的特征,并通过调用calcOpticalFlowPyrLK
来操作跟踪。
结果很好。
然而,我想知道我当前跟踪的脸何时不再可见(该人离开房间,隐藏在物体或另一个人后面,…),但calcOpticalFlowPyrLK
告诉我什么也没有。
calcOpticalFlowPyrLK
函数的状态参数很少报告关于跟踪特征的错误(所以,如果这个人消失了,我仍然有大量的有效特征要跟踪)。
我试着计算每个特性确定的方向向量之间移动前面的和实际的框架为每个特征脸的(例如,确定一些点脸向左移动两帧之间的),并计算这些向量的方差(如果向量大多不同,方差高,否则这不是),但没有透露预期的结果(在某些情况下,好但坏在其他情况下)。
判断光流跟踪是否必须停止的良好条件是什么?
我想到了一些可能的解决方案,比如:
- 每个跟踪特征向量的距离方差(如果移动是线性的,距离应该是几乎相同的,但如果发生了什么,距离将会不同)。
- 将包含跟踪特征原始位置的区域的形状和大小与包含当前位置的区域进行比较。一开始,我们有一个包含人脸特征的正方形。但如果人离开房间,就会导致形状变形。
您可以尝试对您的跟踪点进行双向自信测量。因此,估计从img0到img1的特征位置,然后从img1到img0的跟踪位置。如果双轨迹特征靠近原始(距离应小于1或0.5像素),则它们被成功跟踪。这比openv的plk的状态标志所使用的SSD更可靠一些。
相关文章:
- 如何使用像Farneback这样的密集光流方法跟踪稀疏特征?
- 使用光流面对地标和稳定
- 在光流路的场周围创建边界框
- 如何分离光流中的匹配点
- 运行光流跟踪时,在每个帧中的点之间绘制一条线
- 查找每个像素 OpenCV 的光流
- OpenCV 中的光流颜色图
- 光流opencv中的错误
- 基于光流的图像分割
- 使用opencv的光流
- 基于OpenCV图像的光流场
- 我的 opencv 光流代码没有好的结果
- 如何将光流矢量仅应用于检测到的圆
- 使用光流进行特征跟踪
- 使用光流的OpenCV跟踪
- OpenCV时间接触光流
- 用opencv计算光流
- Opencv光流跟踪:停止状态
- opencv中的光流类(CalcOpticalFlowPyrLK)参数
- 溴氧化物密集光流跟踪器错误'EFilterIncompatibleSize'