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

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

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

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

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

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

7 ответов


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

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

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


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


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

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


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


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

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


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

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

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


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

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