Отслеживайте быстро движущиеся реперные точки с помощью 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();
        }
    }

Отслеживание головы

Спасибо!


person jjtjj222    schedule 05.10.2016    source источник


Ответы (1)


Я решил эту проблему, создав средство отслеживания объектов, используя начальное местоположение репера и используя его, когда пользователь быстро перемещается.

person jjtjj222    schedule 06.10.2016
comment
Размытие в движении является наиболее вероятной причиной того, что искажает работу реперного детектора. Край становится слишком искаженным, а изображение внутри становится неузнаваемым. Ваш подход к этому вопросу хорош. - person lessthanoptimal; 11.10.2016