2016-10-05 1 views
2

Ich versuche, den Kopf einer Person mit einer binären Referenz gedruckt zu verfolgen. Es kann gut verfolgt werden, wenn sich die Person langsam bewegt, aber wenn sie ihren Kopf schnell bewegen, verliert sie die Spur und gewinnt sie wieder, wenn sie aufhört sich zu bewegen. Was kann ich tun, um die Person zu verfolgen, während sie sich schnell bewegt?Track schnell bewegende Referenz mit BoofCV

Referenz, hier ein Screenshot und Code:

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

Dank!

Antwort

2

Ich habe dieses Problem gelöst, indem ich einen Objekt-Tracker erstellt habe, der den ursprünglichen Ort des Referenzpunkts verwendet und diesen verwendet, wenn der Benutzer sich schnell bewegt.

+2

Bewegungsunschärfe ist der wahrscheinlichste Schuldige für das, was den Referenzdetektor vermasselt. Die Kante wird zu verzerrt und das Bild im Inneren ist nicht mehr erkennbar. Ihr Ansatz zu diesem Thema ist gut. –