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

모션 블러는 기준점을 엉망으로 만드는 가장 큰 원인입니다. 가장자리가 너무 왜곡되어 내부의 이미지를 인식 할 수 없게됩니다. 이 문제에 대한 귀하의 접근 방식은 좋습니다. –