Как узнать движение мыши? - PullRequest
       14

Как узнать движение мыши?

46 голосов
/ 14 августа 2011

В последние несколько недель я пытался разработать средство синтеза движений мыши, похожей на человека, в приложении.В начале я использовал простые методы, такие как полиномиальная и сплайн-интерполяция, однако даже при небольшом шуме результат все равно не выглядел достаточно человеческим.

Чтобы исправить эту проблему, я исследовалспособы применения алгоритмов машинного обучения к реальной биометрии движений мыши, чтобы синтезировать движения мыши, изучая записанные реальные человеческие.Пользователи будут составлять профиль зарегистрированных движений, который будет обучать программу для целей синтеза.

Я искал несколько недель и читал несколько статей о применении обратной биометрии при создании динамики мыши, таких как: Обратная биометрия для мышиной динамики ;однако они, как правило, сосредоточены на создании реалистичного времени из случайно сгенерированной динамики, в то время как я надеялся создать путь от конкретно A к B. ПлюсМне все еще нужно на самом деле найти путь, а не просто несколько динамик, измеряемых одним.

У кого-нибудь есть несколько указателей, чтобы помочь новичку?

В настоящее время тестированиеэто делается путем записи движений, когда я и несколько других разработчиков следят за воспроизведением.В идеале механизм сможет обмануть как автоматический биометрический классификатор, , так и настоящий, живой, дышащий Homo Sapien.

Ответы [ 7 ]

14 голосов
/ 15 августа 2011

Закон Фитта дает очень хорошую оценку времени, необходимого для позиционирования указателя мыши.В разделе происхождения есть простое объяснение, я думаю, вы могли бы использовать его как один из основных строительных блоков вашего приложения.Начните с больших движений, поместите некоторую неточность как в направлении, так и в длину движения, затем сделайте меньшее корректирующее движение и так далее ...

10 голосов
/ 22 августа 2011

Во-первых, я предполагаю, что вы записываете движения мыши от А до В. Потому что в противном случае попытка синтезировать модель для такого движения не представляется мне возможной.

Во-вторых, как насчет измерения отклонений от «прямого» пути, может быть, относительно времени. Я на самом деле подозреваю, что движения выглядят по-разному для разных углов, длины пути и т. Д., Но, возможно, вы можете сначала попробовать нормализованную модель, которую вы просто растягиваете (в пространстве и времени) и поворачиваете так, как вам нужно.

В-третьих, обучение. Проще всего было бы иметь коллекцию реальных ходов (в форме, которую я обсуждал выше) и образец из этой коллекции. Оцените, как это выглядит. Если вам действительно нужна вероятностная модель, то вам нужно оценить, какие модели подходят. Достаточно ли размыть прямой путь гауссовским шумом, параметры которого вы узнаете из своего тренировочного набора? Или какое-то (грех) волнистое отклонение? Или отдельные модели для «приближения к кнопке» и «окончательных исправлений». Закон Фиттса может быть полезен для оценки.

2 голосов
/ 12 сентября 2011

Этот вопрос напомнил мне о сайте, который я знал несколько лет назад, поэтому я посетил его и обнаружил это углубленное обсуждение по теме .

Время очень похоже, что заставляет меня думать, что этот вопрос каким-то образом связан. Фактически, кто-то в теме ссылался на ту же статью, что и вы. Если это не связано, то есть ссылка на множество людей, которые обсуждают, о чем именно вы думаете.

1 голос
/ 26 августа 2011

Хотите ли вы имитировать движение мыши, похожее на человека, потому что вы проводите онлайн-тренинг в режиме реального времени для своей игры?Если ваши тренировочные последовательности статичны, просто запишите движения мыши и воспроизводите звуковой эффект щелчка мышью при каждом нажатии кнопки мыши.Никакие движения мышью не будут казаться вам «достаточно реальными» больше, чем ваши собственные.

Лично я считаю, что специалисты по программному обеспечению слишком быстро перемещают свои мыши в обучающих видео.Я предпочитаю подход, который использовался программным обеспечением для видео-скринкаста, и который всегда перемещал мышь линейно из точки A -> B. Хитрость была в том, что каждое движение мыши в видео всегда занимало одинаковое количество времени независимо от расстояния, скажем,3/4 секунды, а затем звуковой эффект щелчка мыши.

Я полагаю, что они двигали мышь таким образом, потому что тогда зритель мог предвидеть зону приземления мыши по направлению и скорости, с которой мышь двигалась в начале.В тренировочной ситуации, я полагаю, что подобные регулярные движения мягче на глаз и, возможно, легче сохранить / вспомнить.

1 голос
/ 26 августа 2011

Способ перемещения мыши варьируется в зависимости от типа устройства, типа действия, задействованных элементов пользовательского интерфейса, знакомства с пользовательским интерфейсом, скорости, с которой пользователь пытается выполнить свою задачу, навыка пользователя. начальный сбой пользователя (например, пропущенные клики), эмоциональное состояние пользователя (а также многие другие факторы). Планируете ли вы создать несколько стратегий маршрутизации, соответствующих различным контекстам? Кроме того, насколько хорошо вы знаете алгоритм, который вы пытаетесь обмануть? Я предполагаю, что не слишком широко, или вы просто запрограммируете непосредственно на этот алгоритм.

Если человек смотрит на путь, он может определить состояние, связанное со стратегией пути, и может быть более склонен к обману, если идентифицирует его как состояние человека (например, пользователь спешит, пропускает щелчки). , быстро закрывает всплывающее окно, пытается снова медленнее). Пользовательский интерфейс вступает в игру не только с размером и позицией. Я часто быстро указываю на панель инструментов, затем перемещаюсь по опциям, пока не доберусь до своей цели. Другим примером является то, что я обычно делаю паузу в пунктах меню, пока сканирую свою цель или наводю курсор на текст, который читаю. Вы пытаетесь подражать человеческому поведению или просто движениям мыши (потому что я думаю, что они соединены в бедре)?

1 голос
/ 15 августа 2011

Я не думаю, что проблема все так хорошо определена.Есть важное понятие, не упомянутое до сих пор, которое является контекстом.Движение мыши на моем экране, когда Chrome имеет фокус, сильно отличается от движения, когда Vim имеет фокус.

0 голосов
/ 15 августа 2011

Рассматривали ли вы добавление отслеживания мыши в свое приложение, чтобы по существу записывать, как пользователь перемещает мышь, а затем анализировать записи?

В последнее время я не рассматривал это, но считаю, что MouseListener в приложении Swing получает необходимую информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...