Интересно, как это реализовано в Opera? И сложно ли это сделать в своей программе? Пока единственное, что приходит на ум - разбивать весь экран на поле из квадратов и сравнивать путь, пройденный мышью с зажатой кнопкой по квадратам, с шаблонами. Но при крупных квадратах круг с точки зрения программы будет мало отличаться от квадрата, а при маленьких будет сложно нарисовать жест, попадающий под шаблон. И как быть с масштабированием, если маленький треугольниу и большой треугольник - одно и то же?
[Ответ]
Part!zan 19:05 30.03.2011
анализируй не готовую фигуру, а процесс рисования.
[Ответ]
Hopkroft 23:56 30.03.2011
Сообщение от Part!zan:
анализируй не готовую фигуру, а процесс рисования.
Можно попробовать замутить с шаблоном направлений.
Например: Влево, влево-вверх, вниз, вправо - вывести пользователю сообщение что он фигнёй страдает[Ответ]
Spectator 15:54 31.03.2011
Почитай, что такое векторизация (vectorization) и интерполяция (interpolation)
[Ответ]
Shtirliz 17:06 31.03.2011
А можно просто не городить велосипед с квадратными колесами. Qt кроссплатформенный, имеет биндинги почти под все популярные ЯП и поддерживает эти ваши жесты из коробки в QGesture.
[Ответ]
Part!zan 19:32 31.03.2011
Сообщение от Shtirliz:
Qt кроссплатформенный
это, конечно, здорово, только, имхо, черезчур громоздко.
[Ответ]
Shtirliz 09:45 01.04.2011
Сообщение от Part!zan:
это, конечно, здорово, только, имхо, черезчур громоздко.
Согласен, что громоздко, но ТС не описал ТЗ, так что я, например, могу счиnать, что проект только зарождается и инструментарий для дальнейшей разработки еще не определен [Ответ]
VanaLuk 21:14 02.04.2011
Сообщение от DeniSS1:
Интересно, как это реализовано в Opera? И сложно ли это сделать в своей программе? Пока единственное, что приходит на ум - разбивать весь экран на поле из квадратов и сравнивать путь, пройденный мышью с зажатой кнопкой по квадратам, с шаблонами. Но при крупных квадратах круг с точки зрения программы будет мало отличаться от квадрата, а при маленьких будет сложно нарисовать жест, попадающий под шаблон. И как быть с масштабированием, если маленький треугольниу и большой треугольник - одно и то же?
это все проблемы распознавания образов. Общая схема такая:
1. Выделяют эталонные классы распознавания;
2. В них выделяют признаки, достаточные для описания любого класса на языке признаков;
3. Строится система принятия решения, которая умеет выделять из поступившего на вход объекта эти признаки и используя их определять степень соответсвия объекта какому-то классу(например применяются нейросети, скрытые марковские модели);
Большую роль в распознавании игрет то, какие признаки вы выделили.
Ну если интересно почитайте про распознавание образов.
[Ответ]
DeniSS1 23:48 02.04.2011
Shtirliz, это не тру VanaLuk, уже нашёл вот это, думаю, то, что нужно.
[Ответ]
VanaLuk 00:27 03.04.2011
Нечеткие множества используются в распознавании картинок, которые могут быть повреждены, но впринципе полезно.
Тебе надо четко сформулировать задачу, которую ты хочешь решить.
Например, если ты хочешь уметь различать фигуры геометрические которые рисует пользователей, то как можно поступить:
1. Формируешь эталонные классы (например круг, треугольник, квадрат)
2. Выделяешь признаки, по которым их удобно различать (например количество углов: у круга их нету, у треугольника три, у квадрата 4)
3. Делаешь механизм ввода объектов(фигур) пользователем и поиск признаков (углов)
4. Если тебе пользователь нарисует ромб или параллелограмм, то система найдет, что угла 4 и скажет, что похоже на квадрат. Если нарисует, овал, то система найдет, что нету углов и скажет, похоже на круг. А дальше уже что-то делай взависимости от этого, что надо.
Если не охото со всем этим заморачиваться, то можно сделать проще. Есть готовые нейросети. Смысл нейросетей в том, что ты им подаешь готовые входные и выходные данные, а она себя настраивает по эти данные(обучается). И потом когда ты ей на вход подашь, что-то она по своей настройке сможет сформировать выходные. И впринципе ничего можно не придумавыть, а пользоваться уже готовым. Для рспознавания образов удобно использовать нейросети типа WTA (Winner take all, типа того) и сети Кохонена.
[Ответ]
Part!zan 00:53 03.04.2011
нейронные сети для распознавания mouse gestures... это жестко...
[Ответ]
VanaLuk 08:25 03.04.2011
Сообщение от Part!zan:
нейронные сети для распознавания mouse gestures... это жестко...
а какая разница? В них нету ничего невероятного и они очень простые в использовании. Проще, чем оценивать, как рисуют это уж точно.
[Ответ]
Нестрашный Му 10:47 03.04.2011
Если честно, вначале представил братановскую распальцовку перед мышью. Извините.
[Ответ]
Part!zan 13:02 03.04.2011
Сообщение от VanaLuk:
Проще, чем оценивать, как рисуют это уж точно
это еще поспорить можно... я уж и не говорю о конечном проценте распознавания.
[Ответ]