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

Iは、基準の初期位置を使用してオブジェクトの追跡を作成し、ユーザが迅速に移動したときことを使用してこの問題を解決しました。

+2

動きぼけは、基準検出器を騒がす原因となる可能性が最も高い原因です。エッジが歪んでしまい、内部の画像が認識できなくなります。この問題についてのあなたのアプローチは良いです。 –

関連する問題