сглаживание движений мыши

Я разрабатываю программное обеспечение для перемещения мыши на основе определенных координат, которые я получаю из изображения глубины от kinect. но у меня 30 кадров в секунду (изображений в секунду), и эти координаты меняются с каждым кадром, поэтому мышь продолжает двигаться. Мой вопрос: есть ли способ сгладить движение мыши?


person Makram Bg    schedule 25.05.2012    source источник
comment
Не могли бы вы предоставить больше информации? Насколько сильно дергается движение (большое/маленькое)? Если он небольшой - может помочь какая-то простая временная фильтрация. Если он большой, это, вероятно, указывает на проблемы с вашими данными/алгоритмом и не может быть сглажено без переосмысления проблемы.   -  person Ani    schedule 25.05.2012
comment
Как сказал @ananthonline, нам понадобится НАМНОГО больше контекста и, без сомнения, какой-нибудь пример кода. Хотя звучит интересно - мне нравятся такие задачи, напиши код.   -  person    schedule 25.05.2012
comment
Дрожание небольшое, но я хочу сгладить движение, например, когда мышь должна переходить из одного положения в другое. Он показывает некоторую прерывистость. Мне нужен способ перемещать его, как это делает обычная мышь (я знаю, что обычная мышь имеет гораздо более высокую частоту, но есть ли способ перемещать мой курсор аналогичным образом?)   -  person Makram Bg    schedule 08.06.2012


Ответы (2)


Да, вы можете начать отслеживание с некоторыми параметрами, которые позволят сделать движение более плавным.
Ниже приведен пример кода:

        var parameters = new TransformSmoothParameters
        {
            Smoothing = 0.2f,
            Correction = 0.0f,
            Prediction = 0.0f,
            JitterRadius = 1.0f,
            MaxDeviationRadius = 0.5f
        };

        this._sensor.SkeletonStream.Enable(parameters);

Вы можете изменить Smoothing, Correction, Prediction, JitterRadius и MaxDeviationRadius на любые числа, которые вы хотите.

person Fixus    schedule 25.05.2012
comment
Фиксус, это будет работать только в том случае, если ОП отслеживает скелет, а не в том случае, если он напрямую использует изображение глубины для вычисления положения мыши. - person Ani; 25.05.2012
comment
@ananthonline это правда. Я должен написать это. Но совместить оба потока не сложно, поэтому я подумал, что это хорошая вещь для написания :) - person Fixus; 26.05.2012
comment
Спасибо за ответ, я не уверен в этом, но есть ли способ сопоставить координаты глубины с точкой скелета и отследить ее? если да, пожалуйста, предоставьте мне пример кода. заранее спасибо - person Makram Bg; 08.06.2012

Поскольку вы хотели узнать о "сопоставлении координат глубины с точками скелета", вы можете использовать DepthImageFrame MapToSkeletonPoint(), который принимает значения X и Y данных о глубине, а затем создайте файл SkeletonPoint. Пример:

 SkeletonPoint point = depthFrame.MapToSkeletonPoint(x, y);

Надеюсь это поможет!

person Liam McInroy    schedule 29.08.2012