СПОСОБ И УСТРОЙСТВО ДЛЯ ОБНАРУЖЕНИЯ ВВОДОВ ПРИ ПОМОЩИ ЖЕСТОВ
METHOD AND DEVICE FOR DETECTING INPUT USING GESTURES

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее изобретение относится к пользовательскому интерфейсу, а конкретнее, к способу обнаружения вводов при помощи жестов.
УРОВЕНЬ ТЕХНИКИ ИЗОБРЕТЕНИЯ
Распознавание жестов, особенно распознавание жестов руками, дает людям возможность связываться с вычислительной машиной и взаимодействовать естественным образом без каких-либо механических устройств. Распознавание жестов может проводиться при помощи методик из машинного зрения и обработки изображений. Используя концепцию распознавания жестов, возможно направлять палец на экран компьютера так, что курсор будет перемещаться соответствующим образом. Жест включает в себя статический жест, например знак победы (жест рукой, в котором указательный палец и средний палец выпрямлены и разведены, а большой палец и остальные пальцы сжаты), и динамический жест, т.е. в течение периода одного допустимого ввода при помощи жестов форма (например, выпрямить некоторые пальцы или сжать некоторые пальцы) и/или положение руки пользователя изменяется для создания допустимого ввода при помощи жестов. И иногда последовательное изменение формы руки и/или движение руки может быть интерпретировано как две или более команд для устройства.
Ввод при помощи жестов применяется во многих областях. Одним применением ввода при помощи жестов руками является применения для чтения книг. Например, при горизонтальном ходе руки пользователя (траектория движения руки является по существу горизонтальной, и расстояние движения превышает определенное значение, например, 15 сантиметров) перед фото-/видеокамерой устройство интерпретирует такой ввод при помощи жестов как команду перевернуть страницу книги. Перелистывание книги вперед или назад зависит от ориентации движения. Фиг.1 - схема, иллюстрирующая, как жест вправо подает сигнал перелистнуть книгу назад согласно известному уровню техники. Как видно на Фиг.1, чтобы сделать жест вправо, пользователь должен сначала поместить его правую руку перед фото-/видеокамерой, а затем переместить вправо на некоторое расстояние. Когда жест закончен, т.е. рука приходит в положение остановки, как показано на Фиг.1, пользователю необходимо быстро отвести свою руку перед камерой. Рассмотрим сценарий, когда пользователь хочет перевернуть несколько страниц, скажем пять страниц, сразу, ему нужно пять раз выполнить подъем его руки, движение, остановку и отведение. Это крайне неудобно для пользователя и поэтому ухудшает удобство работы.
Необходим новый способ вводов при помощи последовательных жестов.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Согласно одному аспекту настоящего изобретения обеспечен способ обнаружения вводов при помощи жестов в ответ на последовательное возвратно-поступательное движение, причем последовательное возвратно-поступательное движение содержит по меньшей мере один жест первого типа и по меньшей мере один жест второго типа, причем каждый может распознаваться устройством обнаружения для вывода разного управляющего сигнала, при этом способ содержит этапы, на которых принимают последовательное возвратно-поступательное движение, начинающееся с жеста первого типа из двух типов, причем жест первого типа и жест второго типа происходят поочередно, и выводят управляющие сигналы, соответствующие жесту первого типа с количеством раз, равным количеству жестов первого типа, содержащемуся в последовательном возвратно-поступательном движении.
Согласно другому аспекту настоящего изобретения обеспечено устройство для обнаружения вводов при помощи жестов в ответ на последовательное возвратно-поступательное движение, где последовательное возвратно-поступательное движение содержит по меньшей мере один жест первого типа и по меньшей мере один жест второго типа, причем каждый может распознаваться для вывода разного управляющего сигнала, причем устройство содержит модуль захвата для захвата последовательного возвратно-поступательного движения, которое начинается с жеста первого типа из двух типов, причем жест первого типа и жест второго типа происходят поочередно, и модуль обработки для вывода на основании захваченного последовательного возвратно-поступательного движения управляющих сигналов, соответствующих жесту первого типа с количеством раз, равным количеству жестов первого типа, содержащемуся в последовательном возвратно-поступательном движении.
Должно быть понятно, что в следующем далее подробном описании изобретения будет приведено больше аспектов и преимуществ изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Прилагаемые чертежи, которые включены для обеспечения лучшего понимания, иллюстрируют варианты осуществления изобретения вместе с описанием, которое служит для пояснения принципа изобретения. Таким образом, изобретение не ограничено этими вариантами осуществления. На чертежах:
Фиг.1 - схема, иллюстрирующая движение руки перед камерой согласно известному уровню техники;
Фиг.2A, 2B - схемы, показывающие траекторию одного взмаха руки согласно варианту осуществления настоящего изобретения;
Фиг.3 - схема, показывающая две точки, соответствующие двум соседним кадрам изображений согласно варианту осуществления настоящего изобретения;
Фиг.4 - схема, показывающая траекторию руки от начала согласно варианту осуществления настоящего изобретения;
Фиг.5 - схема, показывающая другую траекторию руки от начала согласно варианту осуществления настоящего изобретения;
Фиг.6 - блок-схема алгоритма, показывающая способ обнаружения вводов при помощи жестов по последовательному возвратно-поступательному движению согласно варианту осуществления настоящего изобретения;
Фиг.7 - блок-схема, показывающая устройство для обнаружения вводов при помощи жестов по последовательному возвратно-поступательному движению согласно варианту осуществления настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
Теперь совместно с чертежами будет подробно описан вариант осуществления настоящего изобретения. В нижеследующем описании некоторые подробные описания известных функций и конфигураций могут быть опущены для ясности и краткости.
Задача этого изобретения состоит в обеспечении легкого способа подачи идентичных команд путем последовательного возвратно-поступательного движения руки. Последовательное возвратно-поступательное движение может распознаваться устройством как набор последовательных субдвижений, причем любые два соседние субдвижения имеют противоположные направления ориентации. Тип команды, получающейся в результате последовательного возвратно-поступательного движения, определяется по первому из набора последовательных субдвижений, а количество получающихся в результате команд является таким же, как количество субдвижений с таким же направлением ориентации, что и у первого из этого набора (в том числе первого).
Ниже будет описан подробный пример в соответствии с вариантом осуществления настоящего изобретения. Система содержит фото-/видеокамеру для захвата последовательных изображений ввода при помощи жестов и устройство обработки, соединяющееся с фото-/видеокамерой. Устройство обработки использует последовательные изображения для генерации соответствующих команд. В этом варианте осуществления траектория базового жеста для распознавания жестов является по существу прямой линией (фактическое движение жеста не может быть таким же прямым, как линия). В этом примере жест горизонтального взмаха рукой используется для иллюстрирования принципа настоящего изобретения. Тем не менее следует заметить, что принцип настоящего изобретения может также применяться для других следующих один за другим возвратно-поступательных движений, например вертикального взмаха руки, наклонного взмаха руки и даже движения с вытягиванием и отведением руки перед камерой с функцией обнаружения глубины.
Методика распознавания жестов относится к обработке изображений, и поэтому распознавание жестов может осуществляться как в реальном времени на основе кадров изображений реального времени, так и не в реальном времени, т.е. используя фото-/видеокамеру, захватывая набор кадров изображений, а затем анализируя набор кадров изображений.
На самом деле, любое распознавание статических жестов (распознавание поз) может осуществляться в реальном времени, основываясь на кадрах изображений реального времени. К примеру, при обнаружении позы знака победы устройству на основе анализа выпуклого контура формы руки нужно всего лишь решить, является ли поза знаком или нет. Для распознавания динамических жестов устройству необходимо захватить набор кадров изображений, найти центроид руки в каждом кадре и после анализа кривой, сформированной этой серией центроидов руки, решить, какой это тип жеста.
Фиг.2 - схема, показывающая траекторию одного взмаха руки согласно варианту осуществления настоящего изобретения, где на Фиг.2A показано движение руки влево, а на Фиг.2B показано движение руки вправо. В этом примере предполагается, что фото-/видеокамера находится в верхнем левом углу системы координат. Следует отметить, что в распознавании жестов сплошной кривой (или, как она называется здесь, по существу прямой линии) не существует. Центр масс руки в каждом кадре эквивалентен точке на кривой. Поэтому для всех кадров изображений для любого направления движения, например движения руки влево, будет записываться ряд последовательных точек, для удобства описания для соединения всех этих точек используется линия. Количество дискретных точек зависит от скорости захвата кадров.
Фиг.3 - схема, показывающая две точки, соответствующие двум соседним кадрам изображений согласно варианту осуществления настоящего изобретения. Точка A соответствует предшествующему из двух кадров изображений, а точка B соответствует последующему из двух кадров изображений. В этой заявке точка A называется последней точкой положения, а точка B - текущей точкой положения.
В этом примере используются четыре направления перемещения, а именно наверх, книзу, налево и направо. Как показано на Фиг.3, точка B лежит справа от точки A. Устройство может легко это определить, потому что обе точки имеют значения координат в одной и той же системе координат.
В настоящем варианте осуществления для хранения траектории руки для анализа жестов пользователя используются два массива данных. Если направленность перемещения не становится реверсивной (изменяется на обратную), например, как показано на Фиг.2A, данные траектории руки хранятся в первом массиве. После обнаружения того, что направленность перемещения стала реверсивной, данные траектории руки с момента реверса направленности перемещения сохраняются во втором массиве, а затем данные в первом массиве используются для определения, какой жест происходит, и вывода соответствующей команды. Кроме этого, для определения наступления реверсивного перемещения используются пороговое значение реверса и четыре счетчика направлений. Поскольку последовательный жест пользователя, такой как горизонтальный взмах рукой, имеет определенную закономерность, например, когда люди делают взмах, если это махание влево, сначала должно быть движение влево на некоторое расстояние, затем движение вправо на некоторое расстояние, и повторение несколько раз; если это махание вправо, сначала должно быть движение вправо на некоторое расстояние, затем движение влево на некоторое расстояние, и тоже повтор несколько раз, так что счетчик направлений можно выбирать на основе предыдущего субжеста. Помимо этого в этом варианте осуществления в качестве основы для принятия решения о жесте всегда используется первый массив данных.
Ниже описаны этапы обработки, осуществляемые для точки положения из числа точек положения, сгенерированных по движению руки, согласно варианту осуществления настоящего изобретения.
Этап 1. В момент времени в течение ввода при помощи следующего один за другим жестов устройство определяет значения координат последней точки положения и текущей точки положения руки. Псевдокод показан ниже:
X координаты последнего положения (old_x)=(реверс направленности пути руки произошел)? получены последние сохраненные данные во втором массиве (pPointBuf1.x):получены последние сохраненные данные в первом массиве (pPointBuf0.x);
Y координаты последнего положения (old_y)=(реверс направленности пути руки произошел)? получены последние сохраненные данные во втором массиве (pPointBuf1.y):получены последние сохраненные данные в первом массиве (pPointBuf0.y);
X координаты текущего положения (cur_x) получена X координата руки в текущем кадре;
Y координаты текущего положения (cur_y)=получена Y координата руки в текущем кадре.
Из вышеприведенного псевдокода видно, что для определения значения координат текущей точки положения используется текущий кадр, соответствующий моменту времени.
Что касается последней точки положения, которая соответствует кадру изображения непосредственно предшествующему этому моменту времени, устройству необходимо сначала определить, произошел ли реверс направленности перемещения. Если происходит, то для определения значения координат последней точки положения будут использованы данные во втором массиве, в противном случае для определения значения координат последней точки положения будут использоваться данные в первом массиве.
Этап 2. Четыре счетчика ориентации для определения направленности перемещения у движения руки обновляются на основе отношения положения текущей точки положения и последней точки положения. В этом варианте осуществления используются четыре счетчика ориентации для записи направления вверх, направления вниз, направления влево и направления вправо соответственно. Но в варианте, если в устройстве не заявлено вертикального жеста рукой, счетчики ориентации вверх и вниз являются излишними.
Два счетчика ориентации, соответствующие противоположному направлению, работают в группе. Например, если местоположение текущей точки положения относительно последней точки положения находится в направлении налево, тогда к счетчику ориентации влево будет прибавлена единица, и в то же самое время, если счетчик ориентации вправо не равен нулю, тогда из этого счетчика будет вычтена единица. И этот же принцип применяется для счетчиков ориентации вверх и вниз. Соответствующий псевдокод для определения счетчиков влево и вправо (orientation_l и orientation_r), на основе значений оси абсцисс, показан ниже. Аналогичный принцип может применяться для определения счетчиков вверх и вниз на основе значений оси ординат.
If(cur_x>old_x) {//координаты оси абсцисс текущего положения больше, чем у последнего положения
orientation_r++;// счетчик ориентации НАПРАВО увеличивается на единицу
If (orientation_l > 0) {// счетчик ориентации НАЛЕВО больше нуля
Orientation_l--;
} else {
Orientation_l = 0;
}
}
If(cur_x<old_x) {//координаты оси абсцисс текущего положения меньше, чем у последнего положения
orientation_l++;// счетчик ориентации НАЛЕВО увеличивается на единицу
If (orientation_r>0) {// счетчик ориентации НАПРАВО больше нуля
Orientation_r--;
} else {
Orientation_r=0;
}
}
Фиг.4 - схема, на которой показана траектория руки от начала согласно настоящему варианту осуществления. Как видно на Фиг.4, до точки реверса (способ для определения точки реверса будет описан ниже) есть 14 точек. Точка реверса может считаться начальной точкой жеста реверсирования. Следовательно, согласно вышеупомянутому способу обработки для Orientation_l и Orientation_r (в этом примере опущена обработка для счетчиков ориентации вверх и вниз) в точке перед точкой реверса, т.е. самой правой точкой, Orientation_l равен 0, а Orientation_r равен 13. Когда он движется к точке реверса, где cur_X<old_X, Orientation_l увеличивается на единицу и становится равным 1, а Orientation_r уменьшается на единицу и становится равным 12.
Этап 3. Каждый раз, когда устройство захватывает кадр изображения во время ввода при помощи жестов, устройство определяет, имеется ли реверс направленности перемещения. Во время ввода при помощи жестов устройство захватывает жест с определенной скоростью захвата как набор кадров изображений. Для каждого кадра изображения устройство сначала определяет точку положения руки пользователя на кадре изображения и использует эту точку положения и ее предшествующую точку положения для обновления соответствующих счетчиков ориентации. После того как счетчики ориентации обновлены, устройство использует счетчики ориентации и пороговое значение ориентации, чтобы определять, происходит ли реверс направленности перемещения. Пороговое значение ориентации - это заданное значение, в этом примере, оно установлено равным 6. Псевдокод для определения, имеется ли реверс направленности перемещения, показан ниже. В этой заявке для записи ориентации последнего жеста из ввода при помощи последовательных жестов или последовательного возвратно-поступательного движения руки используются набор указателей ориентации субжестов, т.е. gesture_l, gesture_r, gesture_u и gesture_d. Перед тем как пользователь вводит последовательный жест, эти параметры устанавливаются в «ложь». А после того как устройство обнаруживает первый субжест среди ввода при помощи последовательных жестов, соответствующий параметр будет установлен в «истина».
Перед тем как первый субжест обнаружен, из четырех счетчиков выбирается максимальный счетчик для сравнения с пороговым значением ориентации. Если максимальный счетчик больше порогового значения, а счетчик ориентации с противоположной максимальному счетчику ориентацией равен 1, то тогда определяют, что происходит реверс, и указатель ориентации субжестов, соответствующий противоположной ориентации первого субжеста, устанавливается равным «ИСТИНА». Согласно варианту для замены четырех указателей, принимающих значения «истина-ложь», может использоваться один указатель с выбором четырех значений.
If (~(gesture_l | gesture_r | gesture_u | gesture_d)) {//реверс траектории для четырех ориентаций не происходит
Получен максимальный счетчик ориентации;
If (максимальный счетчик ориентации > THRESHOLD && счетчик противоположной ориентации == 1) {
reverse = true;// произошел реверс траектории на обратную
}
}
Здесь для иллюстрации по-прежнему используется Фиг.4. В самой правой точке Orientation_l равен 0, а Orientation_r равен 13. Хотя Orientation_r как максимальный счетчик больше порогового значения ориентации, равного 6, счетчик противоположной ориентации, т.е. Orientation_l равен 0. Таким образом определяют, что реверса не происходит. Но в точке реверса оба условия удовлетворены. Соответственно, устройство может определить, что происходит реверс.
Что же касается определения реверса после указателей ориентации первого субжеста, устройство определяет, удовлетворяются ли следующие два условия: 1) счетчик ориентации с такой же ориентацией, как указатель ориентации последнего субжеста, превышает пороговое значение; и 2) счетчик ориентации с противоположной указателю ориентации последнего субжеста ориентацией равен 1. Если оба они удовлетворены, определяют, что происходит реверс. Это снизит сложность вычисления. Псевдокод для определения реверса после полученного gesture_l показан ниже. Псевдокод для других указателей ориентации аналогичен.
If (gesture_l) {//последний жест НАЛЕВО
If((orientation_l>THRESHOLD) && (orientation_r==1)) {
Reverse = true;
}
}
До того как реверс обнаружен, данные сохраняются в первый массив pPointBuf0.
Как только первый реверс происходит, данные в pPointBuf0 используются для интерпретации жеста, чтобы выводить сигнал, указывающий значение жеста. В это время для определения, что это за жест, нельзя использовать всего лишь две соседние точки или основываться на числе счетчика ориентации для всех точек в pPointBuf0.
В противном случае могут быть ошибки. На Фиг.5 показана такая ситуация. Если пользователь делает субжест вправо, это может также сопровождаться движением вниз, хотя в точке реверса счетчик ориентации вниз больше счетчика ориентации вправо, нельзя определять этот субжест как жест вниз. Если взглянуть на этот жест в целом, очевидно, что расстояние движения вправо гораздо больше расстояния движения вниз, и этот субжест следует расценивать, как жест вправо. После того как первый реверс произойдет, данные будут сохраняться во втором массиве pPointBuf1. И для определения наступления второго реверса будет использоваться соответствующий счетчик ориентации.
Следует отметить, что в этом примере для определения жеста не используются данные массива pPointBuf1. Данные в массиве pPointBuf1 используются только для определения наступления второго реверса, четвертого реверса, шестого реверса и т.д. Можно легко прийти к выводу, что первый массив используется для хранения данных о движениях субжестов, имеющих такую же ориентацию, что и движение первого субжеста, а второй массив используется для хранения данных движений субжестов, имеющих ориентацию противоположную движению первого субжеста, поскольку движения жестов являются возвратно-поступательными. Определение третьего реверса, пятого реверса, седьмого реверса и т.д. аналогично определению первого реверса. А определение четвертого реверса, шестого реверса, восьмого реверса и т.п. аналогично определению второго реверса. Для принятия решения о том, какой жест имел место, используется разница координат оси абсцисс и оси ординат начальной точки и точки останова (использование отношения амплитуд оси абсцисс и оси ординат траектории жеста для определения типа жестов - это другой способ).
Приведенный ниже псевдокод показывает, как определять, какой жест происходит.
Function calcAction():
If (nPointBufLength > 0) {//длина массива данных больше нуля
nDiffx = pPointBuf0[nPointBufLength-1].x - pPointBuf0[0].x;//получена разница оси абсцисс nDiffx;
nDiffy = pPointBuf0[nPointBufLength-1].y - pPointBuf0[0].y;//получена разница оси ординат nDiffy;
If (abs(nDiffx) > abs(nDiffy))
If(nDiffx < 0) произошел жест НАЛЕВО ;
Else произошел жест НАПРАВО;
} else {
If(nDiffy < 0) произошел жест КНИЗУ;
Else произошел жест НАВЕРХ;
}
Return жест;
Из вышеприведенного видно, что для определения, какое основное движение происходит из горизонтального движения и вертикального движения, сравниваются абсолютные значения nDiffx и nDiffy. Потому что движение руки пользователя может не быть точно горизонтальным движением или вертикальным движением. Несмотря на то что при намерении сделать горизонтальное движение разница по вертикали неизбежна, абсолютное значение разницы по горизонтали должно быть больше, чем по вертикали. После того как определено, что это горизонтальное движение, nDiffx используется для определения, какой это жест из жеста налево и жеста направо.
Приведенный ниже псевдокод показывает, как обрабатывать после того, как происходит первый реверс:
If произошел реверс (reversal) {
Call calcAction;
Очистить все четыре счетчика ориентации;
gesture_l = произошел жест НАЛЕВО;
gesture_r = произошел жест НАПРАВО;
gesture_u = произошел жест НАВЕРХ;
gesture_d = произошел жест КНИЗУ;
Установить длину pPointBuf0 равной нулю;
Поместить текущие данные в pPointBuf1;
Установить длину pPointBuf1 равной нулю;
} else {
Поместить данные в pPointBuf0;
PointBufLength0++;// увеличить длину pPointBuf0
}
Нижеприведенный псевдокод показывает, как обрабатывать после того, как происходит второй реверс:
If (reverse) {//после того как происходит первый реверс, логическая переменная reverse устанавливается в значение true (ИСТИНА)
Получены четыре счетчика ориентации;
Получен максимальный счетчик ориентации;
If (максимальный счетчик ориентации > THRESHOLD && связанный исключающий счетчик ориентации == 1) {
reverse =false;// произошло второй реверс, после того как случается второй реверс, логическая переменная reverse устанавливается в значение false (ЛОЖЬ)
}
If(!reserve) {
Очистить четыре счетчика ориентации;
Поместить текущую точку в pPointBuf0[0];
PointBufLength0 = 1;
} else {
Поместить текущую точку в pPointBuf1;
PointBufLength1++;// увеличить длину pPointBuf1
}
}
После того как возвратно-поступательные движения руки останавливаются (рука задерживается на некоторое время в воздухе, к примеру 2 секунды, или для указания остановки используется специальная поза, или пользователь быстро отводит его руку), если количество достоверных данных в первом массиве pPointBuf0 больше определенной пороговой величины (обычно по меньшей мере 3, иначе траектория жеста слишком коротка и может не учитываться), эти данные будут использованы для определения, что за жест происходит. Нижеприведенный псевдокод показывает, как обрабатывать после того, как один непрерывный жест останавливается:
If(gesture_stop) {
If(PointBufLength0 > 2) {
Call calcAction;
}
Очистить все четыре счетчика ориентации;
Установить все четыре указателя ориентации в значение false (ЛОЖЬ);
PointBufLength0 = 0;
PointBufLength1 = 0;
}
Фиг.6 - блок-схема алгоритма, изображающая способ обнаружения вводов при помощи жестов по последовательному возвратно-поступательному движению согласно настоящему варианту осуществления. Здесь последовательное возвратно-поступательное движение состоит из двух типов распознаваемых устройством жестов, причем каждое происходит несколько раз.
Этап 601. Устройство принимает последовательное возвратно-поступательное движение посредством использования фото-/видеокамеры для захвата этого движения и выводит результат последовательности кадров изображений. Следует отметить, что здесь этап 601 охватывает по меньшей мере два сценария: 1) устройство продолжает захватывать движение до тех пор, пока движение не остановится, а затем захватывающий модуль выводит последовательность кадров изображений; 2) захватывающий модуль выводит кадр изображения немедленно в ответ на захват изображения во время движения.
Этап 602. Устройство определяет по меньшей мере одну точку реверса, используя последовательность кадров изображений. Конкретно, этот этап дополнительно содержит этап 6021, на котором определяют значение координаты, соответствующей положению руки для каждого кадра изображения для получения последовательности значений координат. Что касается определения значения координаты, можно, например, преобразовывать захваченное RGB-изображение в цветовое пространство HSV и делать вычитание фона, основываясь на цвете кожи. Если необходимо, могут производиться некоторые морфологические операции, а затем можно находить контур руки. Масса этого контура будет значением координаты, соответствующей положению руки для этого изображения. Этап 6022, на котором на основе последовательности значений координат определяют точку реверса, используя вышеупомянутые этапы с 1-го по 3-й.
Этап 603. Устройство разбивает, основываясь на определенной точке (точках) реверса, последовательное возвратно-поступательное движение на субдвижения. Поскольку точка (точки) реверса определена и последовательность кадров изображений соответствует последовательному возвратно-поступательному движению, субдвижения разделяются по точке (точкам) реверса в последовательности кадров изображений, а точка реверса является начальной точкой для любого субдвижения кроме первого субдвижения. Кроме этого, следует отметить, что все разбитые субдвижения являются распознаваемыми жестами.
Этап 604. Устройство выводит на основе разбитых субдвижений по меньшей мере один сигнал. А именно, устройство сначала определяет количество субдвижений, включая первое субдвижение, имеющих такую же ориентацию, что и первое субдвижение, а затем выводит сигналы со значением, соответствующим распознаваемому первому субдвижению, и количеством, равным количеству субдвижений, имеющий такую же ориентацию, как первое субдвижение.
Следует заметить, что если устройство обрабатывает кадры изображения в реальном времени, т.е. соответствуя сценарию 2, как заявлено на этапе 601, устройству может быть необходимо определять в ответ на каждый ввод кадра изображения первое субдвижение, находя первую точку реверса, и выводить сигнал, соответствующий первому субдвижению. После определения первого субдвижения устройство будет поочередно определять в ответ на каждый ввод кадра изображения второе субдвижение, третье субдвижение, четвертое субдвижение и т.д., находя вторую точку реверса, третью точку реверса, четвертую точку реверса и т.д., сравнивая по отдельности второе субдвижение, третье субдвижение, четвертое субдвижение и т.д. с первым субдвижением для определения, имеют ли они одинаковый тип жеста, и, если они имеют, устройство выведет такой же сигнал, как для первого субдвижения.
Согласно варианту, так как это последовательное возвратно-поступательное движение, то не нужно сравнивать второе субдвижение, четвертое субдвижение, шестое субдвижение и т.д. Таким образом, устройству необходимо всего лишь определять первое субдвижение, третье субдвижение, пятое субдвижение. Конечно, устройству для разбиения последовательного возвратно-поступательного движения на субдвижения необходимо определять каждую точку реверса. После получения третьего субдвижения, пятого субдвижения и т.д. устройство сравнивает их с первым субдвижением и выводит после каждого положительного сравнения сигнал, соответствующий первому субдвижению. Помимо этого, так как движение является возвратно-поступательным, может не требоваться сравнение нечетных субдвижений. Вместо этого в каждой второй точке реверса, начиная с первой точки реверса, устройство выводит сигнал, соответствующий первому субдвижения.
Фиг.7 - блок-схема, показывающая устройство для обнаружения вводов пользователя. Как видно на фиг 7, обеспечено устройство для обнаружения вводов при помощи жестов в ответ на последовательное возвратно-поступательное движение, где последовательное возвратно-поступательное движение состоит из распознаваемых жестов двух типов, т.е. жеста первого типа (например, движение влево) и жеста второго типа (например, движение вправо), причем каждый может распознаваться для вывода разного управляющего сигнала, где устройство содержит модуль захвата для захвата последовательного возвратно-поступательного движения, которое начинается с жеста первого типа из двух типов, причем жест первого типа и жест второго типа происходят поочередно, и модуль обработки для вывода на основании захваченного последовательного возвратно-поступательного движения управляющих сигналов, соответствующих жесту первого типа с количеством раз, равным количеству жестов первого типа, содержащемуся в последовательном возвратно-поступательном движении.
Кроме этого, модуль обработки выполнен с возможностью определения для последовательного возвратно-поступательного движения точек реверса.
Дополнительно, модуль обработки выполнен с возможностью разбивания, используя точки реверса, последовательного возвратно-поступательного движения на по меньшей мере два субдвижения, причем каждое субдвижение соответствует одному из двух типов жеста; сравнения его с первым субдвижением для каждого субдвижения; и вывода в ответ на определение, что сравниваемое субдвижение имеет такой же тип, как первое субдвижение, управляющего сигнала, соответствующего жесту первого типа.
Помимо этого модуль обработки выполнен с возможностью вывода управляющего сигнала, соответствующего жесту первого типа, в ответ на каждую нечетную точку реверса.
Был описан ряд вариантов исполнения. Тем не менее должно быть понятно, что могут быть сделаны различные модификации. К примеру, элементы разных вариантов исполнения могут объединяться, дополняться, модифицироваться или удаляться для создания других вариантов исполнения. Кроме того, специалисту в области техники будет понятно, что раскрытые структуры и процессы могут быть заменены другими структурами и процессами, а получающиеся в результате варианты исполнения будут выполнять по меньшей мере по существу такую же функцию (функции) по меньшей мере по существу таким же способом (способами) для достижения по меньшей мере по существу такого же результата (результатов), как раскрытые варианты исполнения. Таким образом, эти и другие варианты исполнения входят в объем этого изобретения.