2016-10-05 62 views
2

我正在试图用二进制基准打印来跟踪一个人的头部。当人慢慢移动时,它可以很好地跟踪,但当他们快速移动头部时,它会失去轨道,然后在停止移动时重新获得它。我能做些什么来追踪他们快速行动的人?使用BoofCV跟踪快速移动基准

供参考,在这里是截图和代码:

camera = UtilWebcamCapture.openDefault(1920, 1080); 

    intrinsicParameters = new IntrinsicParameters(); 
    intrinsicParameters.setCx(camera.getViewSize().getWidth()/2f); 
    intrinsicParameters.setCy(camera.getViewSize().getHeight()/2f); 
    intrinsicParameters.setFx(1); 
    intrinsicParameters.setFy(1); 
    intrinsicParameters.setWidth((int)camera.getViewSize().getWidth()); 
    intrinsicParameters.setHeight((int)camera.getViewSize().getHeight()); 

    detector = FactoryFiducial.squareBinary(
      new ConfigFiducialBinary(1), 
      ConfigThreshold.local(ThresholdType.LOCAL_SQUARE, 10), 
      //ConfigThreshold.fixed(100), 
      GrayU8.class); 
    detector.setIntrinsic(intrinsicParameters); 
    ... 
    while (true) { 
     BufferedImage image = camera.getImage(); 
     GrayU8 input = ConvertBufferedImage.convertFrom(image, (GrayU8) null); 

     WorldToCameraToPixel transform; 

     try { 
      detector.detect(input); 

      Se3_F64 targetToSensor = new Se3_F64(); 
      for (int i = 0; i < detector.totalFound(); i++) { 
       detector.getFiducialToCamera(i, targetToSensor); 

       transform = PerspectiveOps.createWorldToPixel(intrinsicParameters, targetToSensor); 
       Point2D_F64 centre = transform.transform(
         new Point3D_F64(0, 0, 0)); 

       System.out.println(centre); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

Head Tracker

谢谢!

回答

2

我通过使用基准的初始位置创建对象跟踪器,并在用户快速移动时使用它来解决此问题。

+2

运动模糊是对基准点检测器进行混淆的最可能的罪魁祸首。边缘变得过于扭曲,内部图像无法识别。你在这个问题上的做法很好。 –