2016-10-05 59 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

運動模糊是對基準點檢測器進行混淆的最可能的罪魁禍首。邊緣變得過於扭曲,內部圖像無法識別。你在這個問題上的做法很好。 –