欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于直線基本手勢的手勢碼的實現(xiàn)方法

文檔序號:6334222閱讀:342來源:國知局
專利名稱:一種基于直線基本手勢的手勢碼的實現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于人機交互的手勢識別技術(shù),尤其涉及一種基于直線基本手勢的手 勢碼的實現(xiàn)方法。
背景技術(shù)
人機交互是計算機技術(shù)的一個重要組成部分,它包括通過鍵盤、鼠標、觸摸屏、語 音和視頻等交互設(shè)備。隨著計算機技術(shù)的發(fā)展,特別是觸摸屏技術(shù)的發(fā)展,手勢識別技術(shù)被 廣泛的用于人機交互,包括基于鼠標軌跡的鼠標手勢,基于觸摸屏或觸摸板的觸摸手勢,基 于手寫筆和手寫板的筆畫手勢,基于視頻捕捉技術(shù)的視頻手勢等等。大多數(shù)手勢識別技術(shù), 都需要計算設(shè)備預(yù)先設(shè)置手勢,建立手勢庫,然后將用戶輸入的手勢與手勢庫進行對比,以 確定該手勢屬于哪種手勢。對于任意一個手勢,用戶和計算設(shè)備無法知道其確切的含義。現(xiàn) 有的手勢及其識別技術(shù)存在如下缺陷1.手勢基于計算設(shè)備內(nèi)建的手勢庫,手勢的數(shù)量有限;2.用戶只能按照手勢庫輸入手勢,即使能夠自定義手勢,也必須新建或者更新手 勢庫,以進行手勢的識別,對于不屬于手勢庫中的手勢,計算設(shè)備將無法識別;3.手勢的意義必須依賴于手勢庫,用戶很難直接識別手勢,不同用戶的自定義手 勢也難以通用;4.手勢識別的準確度隨著手勢庫的增大迅速降低;5.對于任意一個手勢,計算設(shè)備或用戶無法保證給出該手勢的意義。這些問題嚴重的制約了手勢在人機交互中的應(yīng)用。

發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種基于直線基本手勢的手勢碼的實現(xiàn)方法,通過這種 方法,其手勢能夠通過基本手勢衍生出無數(shù)種手勢,對于任意一種基于這種方法的手勢,用 戶和計算設(shè)備都能夠不依賴于手勢庫而直接識別并獲知其對應(yīng)的數(shù)值,從而克服現(xiàn)有技術(shù) 中存在的問題。本發(fā)明采用如下技術(shù)方案一種基于直線基本手勢的手勢碼的實現(xiàn)方法,主要通過以下幾個步驟實現(xiàn)1)用戶向計算設(shè)備輸入手勢;2)計算設(shè)備接收用戶輸入的手勢,并將其分割和擬合為由一條或多條呈標準直線 的基本手勢組成的手勢;3)計算設(shè)備將基本手勢分為一個或者多個類型,并且賦予每一個類型的基本手勢 一個值,根據(jù)這種定義,判斷已擬合成直線的基本手勢屬于哪個類型;;4)計算設(shè)備根據(jù)組成該手勢的基本手勢的類型和順序,計算該手勢的值;5)用戶或計算設(shè)備根據(jù)獲得的手勢值執(zhí)行后續(xù)操作或程序。步驟1)所述,眾所周知的用于手勢輸入方法包括利用鼠標、觸摸屏、觸摸板或者
3利用手寫筆和手寫板等設(shè)備向計算設(shè)備輸入手勢。本發(fā)明要求用戶輸入的手勢盡量由一條 或多條趨勢呈直線基本手勢組成,但不局限于直線,也可以由一條或多條曲線,或者直線加 曲線組成。計算設(shè)備接受輸入后,無論是直線還是曲線,都能夠在手勢完成后由計算設(shè)備記 錄其軌跡坐標和及其時間點,并通過在步驟2)中給出的方法擬合形成由標準直線基本手 勢組成的手勢。步驟2)所述,當用戶輸入手勢時,基本手勢間的分割從用戶角度來說是手勢的停 頓或者手勢前進方向的改變,從本質(zhì)上來講是手勢的加速度的改變(包括加速度的值和加 速度方向),采用數(shù)學(xué)模擬即為加速度向量的改變。基于這一原理,本發(fā)明利用計算設(shè)備記 錄的手勢的坐標點(包括位置和記錄時的時間),通過分析這些坐標點將手勢劃分為一個 或者多個部分,然后將每一個部分擬合為一條直線,從而將該手勢擬合為由一條或多條呈 標準直線的基本手勢連接組成的手勢。具體實現(xiàn)步驟為a)計算設(shè)備每隔一定時間記錄手勢的位置坐標,這里的時間間隔根據(jù)設(shè)備的性能 和類型加以設(shè)定,比如10毫秒;b)計算設(shè)備以橫向(χ)和縱向(y)為軸逐個計算這些點的每相鄰兩點之間的向 量,即從前一坐標點指向后一坐標點的向量,形如ax+by ;c)計算每一個向量的橫向坐標軸參數(shù)值(a)和縱向坐標軸參數(shù)(b)的差的絕對 值,形如a-b ;d)以該絕對值為縱坐標值,以與其對應(yīng)的時間為橫坐標值,通過線性回歸逐個計 算相鄰的多個絕對值的斜率(比如5個),從而獲得一系列斜率值;e)判斷斜率值的大小,將連續(xù)多個斜率大于零作為基本手勢的開始標志,將連續(xù) 多個斜率小于零作為基本手勢的結(jié)束標志,根據(jù)這一方法將一個手勢分割為一個或者多個 基本手勢(這里的連續(xù)多個斜率大于/小于零中的數(shù)量根據(jù)計算設(shè)備的類型和用戶所需的 識別靈敏度設(shè)定,可以是3個、4個、5個或者更多);f)分別分析分割好的每個基本手勢的坐標點,利用最小二乘法或者計算首尾坐標 點的直線向量等數(shù)學(xué)方法將每個基本手勢擬合為一條標準直線,從而將該手勢擬合為由一 條或多條呈標準直線的基本手勢組成的手勢。步驟3)所述,計算設(shè)備利用本發(fā)明將基本手勢擬合為標準直線后,每一個基本手 勢都有一個方向?qū)傩灾?。計算設(shè)備將在一定的方向范圍內(nèi)的基本手勢歸為一個類型。根據(jù) 方向范圍的設(shè)定,所有的基本手勢可以分為一個或者多個類型,計算設(shè)備賦予每一類型的 基本手勢一個任意的值。更進一步,為每一個類型的基本手勢分別賦予一個從零開始,依次加1遞增的自 然數(shù)。優(yōu)選的,將所有的基本手勢分為4個類型,分別賦予0,1,2,3。步驟4)所述,每一個手勢根據(jù)組成其的基本手勢的類型和組成順序,通過一定的 計算可以獲得該手勢的值。這里的計算可以是直接由基本手勢的值按順序組成字符串,也 可以通過某種數(shù)學(xué)運算獲得。比如組成某個手勢的基本手勢的值分別為2、3、1和9,那么采 用字符串直接拼接的方法得到的該手勢的值為2319,采用數(shù)學(xué)累加的方法得到該手勢的值 為 15(2+3+1+9)。更進一步,為了保證手勢的值與手勢的一一對應(yīng)關(guān)系和方便手勢的值的計算,本 發(fā)明為每一個類型的基本手勢分別賦予一個從零開始,依次加1遞增的自然數(shù),并且根據(jù)一定的數(shù)學(xué)進制計算手勢的值,其中進制數(shù)等于基本手勢的類型數(shù)目,每一個手勢在該進 制下的值等于將組成該手勢的基本手勢對應(yīng)的值按順序從高位到低位書寫的值。優(yōu)選的, 將所有的基本手勢分為4個類型,分別賦予0,1,2和3,計算手勢時以四進制計算。比如某 個手勢經(jīng)分割擬合后由5個基本手勢組成,與其類型相對應(yīng)的值按先后順序分別為2、0、1, 0和3,那么該手勢在4進制下的值即為20103。通過這種方法,每一個手勢都有一個唯一的 數(shù)值與其對應(yīng);同時可以判斷,而對于任意一個數(shù)值,經(jīng)進制轉(zhuǎn)換后都可以用一個手勢將其 描述。步驟5)所述,計算設(shè)備一般以二進制進行運算,當計算設(shè)備獲取該手勢值后,通 過進制轉(zhuǎn)換將其轉(zhuǎn)換為二進制以進行后續(xù)程序運算;人通常以十進制進行計算和分析,當 用戶直接讀取該手勢值或通過計算設(shè)備獲得該手勢值后,可以轉(zhuǎn)換為十進制以進行后續(xù)分 析或操作。顯而易見的,用戶在一次操作中可以輸入多個手勢,分別用上述步驟計算其手勢 值。另外一方面,本方法也可以逆向執(zhí)行,即對于任意一個數(shù)值或者字符(串),將其轉(zhuǎn)換為 該手勢對應(yīng)的進制后,根據(jù)基本手勢的定義可以直接將該手勢畫出。本發(fā)明具有如下幾個優(yōu)點a)基于該方法的手勢可以通過基本手勢衍生出無限多種;b)基于該方法的手勢不依賴于手勢庫,能夠直接被計算設(shè)備識別,且識別程序簡 單、高效、準確;c)基于該方法的手勢能夠直接被用戶識別,用戶根據(jù)手勢的軌跡,能夠直接讀取 該手勢的值;d)對于任意一個基于該方法的手勢,都有唯一的一個值與其對應(yīng);e)對于任意一個字符(串)或者數(shù)值,都有基于該方法的手勢與其對應(yīng);基于本發(fā)明的手勢,能夠與現(xiàn)有的數(shù)值、代碼建立廣泛的對應(yīng)關(guān)系,也同時能夠被 計算設(shè)備和用戶直接識別,同時現(xiàn)有的文字代碼經(jīng)轉(zhuǎn)換到該手勢對應(yīng)的數(shù)學(xué)進制下后,能 夠直接被計算設(shè)備和用戶轉(zhuǎn)換為其對應(yīng)的手勢,從而實現(xiàn)一種“手勢碼”的功能。


圖1為基于本發(fā)明的手勢實施示例流程圖;圖2為手勢的分割和擬合的示例流程圖;圖3為用戶輸入的手勢示例及擬合成直線基本手勢后的示意圖;圖4為根據(jù)方向范圍將基本手勢分類的示意圖,其中圖4A分成3個類型,圖4B分 成4個類型;圖5為基于4個類型基本手勢的手勢示例及其用四進制計算的手勢值;圖6為將字符轉(zhuǎn)換為手勢的示例示意圖,其中字符“Love”通過ASCII碼轉(zhuǎn)換成數(shù) 值后轉(zhuǎn)成四進制,然后按優(yōu)選方案的基本手勢定義轉(zhuǎn)換為手勢;圖7為基于本發(fā)明的一個具體實例程序流程圖;圖8為基于本發(fā)明的一個具體實例程序執(zhí)行結(jié)果,圖8A為程序執(zhí)行界面和執(zhí)行結(jié) 果,圖8B為該程序執(zhí)行過程示意圖。
具體實施例方式本發(fā)明旨在提供一種基于直線基本手勢的手勢碼的實現(xiàn)方法,如圖1A,其實施步 驟簡要概括如下1)用戶向計算設(shè)備輸入由一條或多條趨勢呈直線的基本手勢組成手勢,如圖IB 步驟101,用戶輸入一個“心”型手勢;2)計算設(shè)備接收用戶輸入的手勢,利用計算程序(圖2)將其擬合為由一條或多條 呈標準直線的基本手勢組成的手勢,如圖IB步驟102,計算設(shè)備將步驟101中的“心”形手 勢擬合為由a、b、c和d四條直線組成的手勢;3)計算設(shè)備根據(jù)基本手勢的方向,將在一定方向范圍內(nèi)的基本手勢歸為一個類 型,所有的基本手勢根據(jù)方向范圍分為一個或者多個類型,賦予每一個類型的基本手勢一 個值,根據(jù)這種定義,判斷已擬合成直線的基本手勢屬于哪個類型,如圖4B步驟103所示, 基本手勢分為4個類型,分別賦予0,1,2和3,a, b,c和d四個基本手勢分別屬于類型I、 II、II 和 III ;4)計算設(shè)備根據(jù)組成該手勢的基本手勢的類型和組成順序,計算該手勢的值,如 圖4B步驟104所示,計算手勢值時可以直接按基本手勢的值按順序組成字符串,也可以以 四進制組成數(shù)值;5)用戶或計算設(shè)備根據(jù)獲得的手勢值執(zhí)行后續(xù)操作或程序。下面對實施方式作詳細說明。手勢的輸入在本發(fā)明的應(yīng)用中,用戶可以利用鼠標、觸摸屏、觸摸板或者利用手寫筆和手寫板 等設(shè)備向計算設(shè)備輸入手勢。眾所周知的可以適用本發(fā)明的計算系統(tǒng)、環(huán)境和/或配置的 例子包括但不局限于個人計算機、服務(wù)型計算機、手持或膝上型設(shè)備、圖形輸入板設(shè)備、可 編程消費者設(shè)備等。本發(fā)明要求用戶輸入的手勢盡量由一條或多條趨勢呈直線的基本手勢組成,例如 在圖3A中,該手勢由3條大致呈直線的基本手勢組成。但是本發(fā)明不局限于直線,也可以 由一條或多條曲線,或者直線加曲線組成。例如圖3B,該“心”形手勢由多條呈直線或曲線 的基本手勢組成。計算設(shè)備接受輸入后,無論是直線還是曲線,都能夠由計算設(shè)備記錄其軌 跡坐標點和時間點并通過本發(fā)明給出的程序擬合成由標準直線基本手勢組成的手勢(圖 3)。因為本發(fā)明不依賴于手勢庫,對于用戶輸入的任意手勢,通過下述方法都可以將其分割 和擬合,從而獲得該手勢的值。因此,基于本發(fā)明的手勢可以有無數(shù)多種,用戶輸入的手勢 可以是任意的。手勢的分割和擬合對于用戶輸入的手勢,基本手勢間的分割從用戶角度來說是用戶輸入手勢時的停 頓或者手勢前進方向的改變,從本質(zhì)上來講是手勢輸入時加速度的改變(包括加速度的值 和加速度方向),采用數(shù)學(xué)模擬即為加速度向量的改變。本發(fā)明基于這一原理,利用計算設(shè) 備記錄的手勢的坐標點(包括位置和記錄的時間點),通過對這些坐標點做基于向量的分 析,通過程序計算將手勢劃分為一個或者多個部分,然后將每一個部分擬合為一條直線,從 而將該手勢擬合為由一條或多條呈標準直線的基本手勢組成的手勢。如圖2所示,其具體 實現(xiàn)步驟如下
6
a)計算設(shè)備每隔一定時間記錄手勢的位置坐標,這里的時間間隔根據(jù)設(shè)備的性能 和類型加以設(shè)定(步驟201);b)計算設(shè)備以橫向(χ)和縱向(y)為軸逐個計算這些點的每相鄰兩點之間的向 量,即從前一坐標點指向后一坐標點的向量,形如ax+by ;c)計算每一個向量的橫向坐標軸參數(shù)值(a)和縱向坐標軸參數(shù)(b)的差的絕對 值,形如a_b| (步驟202);d)以該絕對值為縱坐標值,以對應(yīng)的時間為橫坐標值,通過線性回歸逐個計算相 鄰的多個絕對值的斜率(比如相鄰的5個絕對值),從而獲得一系列斜率值(步驟203);e)如步驟204所示,判斷斜率值的大小,將連續(xù)多個斜率值大于零作為基本手勢 的開始標志,將連續(xù)多個斜率值小于零作為基本手勢的結(jié)束標志,據(jù)這一方法將一個手勢 劃分為一個或者多個基本手勢(這里的連續(xù)多個斜率大于/小于零中的數(shù)量根據(jù)計算設(shè)備 的類型和用戶所需的識別靈敏度設(shè)定,可以是3個、4個、5個或者更多);f)分別分析分割好的每個基本手勢的點的坐標,利用最小二乘法或者計算首尾兩 點的直線向量等數(shù)學(xué)方法將每個基本手勢擬合為一條標準直線,從而將該手勢擬合為由一 條或多條呈標準直線的基本手勢連接組成的手勢(步驟205)。如圖IB所示,步驟101輸入中輸入的手勢經(jīng)過分割和擬合,形成如步驟102中的 由a、b、c和d四條直線基本手勢組成的手勢。利用上述方法,步驟101中輸入的手勢的基 本手勢間的過渡部分被舍去,而基本手勢被擬合為標準直線,從而形成如步驟102所示的 手勢圖?;臼謩蓊愋偷呐袛鄶M合后的基本手勢作為一條直線,具有方向性。計算設(shè)備將在一定的方向范圍內(nèi) 的基本手勢歸為一個類型,根據(jù)這種方向范圍的設(shè)定,所有的基本手勢可以分為一個或者 多個類型,計算設(shè)備賦予每一類型的基本手勢一個任意的值。如圖4A所示,將所有的基本 手勢分為3個類型,0-120度方向范圍內(nèi)為類型I,賦予值a ; 120-240度方向范圍內(nèi)為類型 II,賦予值b ;240-360度方向范圍內(nèi)為類型III,賦予值8。更進一步的,為了方便計算和識別,為每一個類型的基本手勢分別賦予一個從零 開始,依次加1遞增的自然數(shù)。優(yōu)選的,將基本手勢分為4個類型,分別賦予0,1,2和3,如 圖4B所示。用戶輸入的手勢經(jīng)分割和擬合后,形成由一條或多條呈標準直線的基本手勢組成 的手勢。根據(jù)基本手勢的方向,分別判斷這些基本手勢在哪個方向范圍內(nèi),屬于哪個類型。 例如圖IB步驟103所示,基本手勢分為4個類型,該手勢經(jīng)分割擬合后的基本手勢a、b、c 和d分別屬于類型I、II、II和III。手勢值的計算每一個手勢根據(jù)組成其的基本手勢的類型和組成順序,通過一定的計算可以獲 得該手勢的值。這里的計算可以是直接由基本手勢的值按順序組成字符串,也可以通過 某種數(shù)學(xué)運算獲得。比如組成某個手勢的基本手勢的值分別為2、3、1和9,那么采用字 符串直接拼接的方法得到的該手勢的值為2319,采用數(shù)學(xué)累加的方法得到該手勢的值為 15(2+3+1+9)。更進一步的,為了保證手勢的值與手勢的一一對應(yīng)關(guān)系和方便手勢的值的計算,本發(fā)明為每一個類型的基本手勢分別賦予一個從零開始,依次加1遞增的自然數(shù),并且根 據(jù)一定的數(shù)學(xué)進制計算手勢的值,其中進制數(shù)等于基本手勢的類型數(shù)目,每一個手勢在該 進制下的值等于將組成該手勢的基本手勢對應(yīng)的值按順序從高位到低位書寫的值。優(yōu)選 的,將基本手勢分為4個類型,分別賦予0,1,2和3,計算手勢值時以四進制計算。如圖5所 示,這4個手勢在該計算方法下的手勢值分別是21,212,2123,21230??梢耘袛?,通過這種 方法,對于計算設(shè)備,每一個手勢都有一個唯一的數(shù)值與其對應(yīng)。手勢碼的翻譯基于本發(fā)明的任意手勢都有與其對應(yīng)的值,即每一個手勢具有一個手勢值,我們 將具有這種特性的手勢定義為手勢碼。計算設(shè)備一般以二進制進行運算,當計算設(shè)備獲取 手勢值后,可以通過進制轉(zhuǎn)換將其轉(zhuǎn)換為二進制以進行后續(xù)程序運算;人通常以十進制進 行計算和分析,當用戶直接讀取或通過計算設(shè)備獲得該手勢值后,可以轉(zhuǎn)換為十進制以進 行后續(xù)分析或操作。例如如圖1B,該“心”形手勢所對應(yīng)的四進制值為112,轉(zhuǎn)換為十進制 后的值為22。另外一方面,對于現(xiàn)有的語言文字、數(shù)字等符號,都有數(shù)值與其對應(yīng),將其轉(zhuǎn)換到 某個手勢碼對應(yīng)的進制下后,根據(jù)基本手勢的定義,可以轉(zhuǎn)換為手勢。優(yōu)選的,如圖4B所 示,將基本手勢分為4個類型,分別賦予0,1,2和3,將符號轉(zhuǎn)換為四進制后,計算設(shè)備或用 戶可以依次從高位到低位劃出其所對應(yīng)的手勢。如圖6所示,英文單詞“Love”對應(yīng)的ASCII 碼分別為76、111、118和101,轉(zhuǎn)換為4進制后為1030、1233、1312和1211。根據(jù)基本手勢 的定義(在90度扇形區(qū)內(nèi),向上為0,向右為1,向下為2,向左為3,如圖4B),可以直接劃如 圖6的對應(yīng)手勢。實施例下面進一步結(jié)合具體的實施范例,對本發(fā)明作詳細說明,但本發(fā)明的實施方式不 限于此。本實施例以個人電腦觸摸板或鼠標為手勢輸入設(shè)備,以火狐瀏覽器(產(chǎn)品版本 3. 6. 10)為實施平臺,計算程序用JavaScript編寫。在本實施例中,基本手勢分為4個類型,分別賦予0,1,2和3,如圖4B。具體實施步驟流程圖如圖7所示,分為以下幾步1.計算設(shè)備在鼠標按下后或者手指點擊觸摸板后,每隔10毫秒記錄鼠標滑動或 者手指在觸摸板上滑動的軌跡,將記錄下的坐標數(shù)據(jù)寫入數(shù)組Points,在松開鼠標或者手 指離開觸摸板后停止記錄(步驟701);2.如步驟702所示,計算Points中每相鄰兩點間的向量ax+by (其中χ為橫坐標, y為縱坐標),并計算a和b的差的絕對值ι a-b I,寫入數(shù)組Dtns,例如A,B兩點的坐標分別 為(100,125)禾Π (150,225),那么 A 到 B 的向量為 50x+100y,a-b = 50 ;3.以該絕對值為縱坐標值,以對應(yīng)的時間為橫坐標值,用最小二乘法計算Dtns中 每相鄰5個點的斜率值,寫入數(shù)組Trend (步驟703);4.如步驟704所示,逐個判斷斜率值的大小,將連續(xù)3斜率值大于零作為基本手勢 的開始標志,將連續(xù)3斜率值小于零作為基本手勢的結(jié)束標志,分別記錄這些點對應(yīng)的時 間點并寫入數(shù)組Section;5.如步驟705所示,根據(jù)數(shù)組Section,將該手勢分割為多個部分,計算每一個部分中開始點到結(jié)束點的向量ax+by,通過計算b和a的比值得到每個基本手勢的方向,從而 判斷其屬于哪個類型,然后以四進制記錄該手勢的值Result。6.將該手勢的四進制值轉(zhuǎn)換成十進制。在本實施例中,根據(jù)本發(fā)明提供的方法,用JavaScript編寫相關(guān)計算程序(見附 錄A),并在火狐瀏覽器中執(zhí)行。圖8A為在該配置環(huán)境和程序中進行的一次手勢輸入及其運 算結(jié)果,圖中801為用戶的輸入的手勢,802為計算設(shè)備記錄的該手勢的軌跡,803為用本方 法計算后該手勢在四進制下的值。如圖8B所示,用戶輸入的“五角星”形手勢經(jīng)分割擬合 后形成由5條基本手勢組成的手勢(步驟804),在步驟805中對這些基本手勢進行類型判 斷,其值分別為1、2、0、2和3,用四進制記錄該手勢的值即為12023。雖然在這里結(jié)合附圖和具體實例對本發(fā)明進行了具體的描述,但應(yīng)指出,各種變 化和修改對本領(lǐng)域技術(shù)人員來說都是顯而易見的。這些變化和修改都被本發(fā)明權(quán)利要求所 要求保護的范圍所涵蓋。附錄A 示例性手勢計算程序< body)< script language = “ javascript“ >Points = new Array () // 定義坐標點數(shù)組function mouseMove(ev){document. getElementByldC rtxdocument. getElementByldC rty//獲取坐標點并寫入數(shù)組Pointsfunction getPoints () {Points getElementByldC rtx' ). innerHTML,document. getElementByldC rty' ). innerHTML)) }H用最小二乘法計算相鄰多個點的斜率,并寫入數(shù)組Trendfunction TrendArray () {var Dnts = new Array (0,0,0,0,0), i = 0, Trend = new ArrayO Trend =for(i = 0 :i < (Points, length—1) ;i++)Dnts. push (Math, abs ((Points [i + 1]
-Points [i]
)-(Points [i + 1] [1] Points[i] [1])));for(i = 0 ;i < (Dnts. length—5) ;i++)Trend, push(Trend[i] +(2 * Dnts[i+5]-Dnts[i+4]-Dnts[i+3]-Dnts[i+2]-Dnts [i+l]+2* Dnts[i]))Trend, push (0,0,0);return Trend }H根據(jù)數(shù)組Section分割手勢function SectionArray (Trend, Addup) {var Incr = 0, Decr = 0, Separator = 0, Section = new ArrayO
').innerHTML = ev. clientX ').innerHTML = ev. clientY ;}
.push (Array (document
for (var i = 0 ;i < Trend, length ;i++) {if (Trend [i] > 0) {Incr++ if (Incr = = 1) Separator = i ;else if (Incr == Addup) {Section, push (Separator) :Decr = 0 ;}else if(Incr > Addup)Decr = 0 ;}else{Decr++ ;if (Deer = = 1) Separator = i ;else if (Deer == Addup) {if (Section, length > 0)Section, push(Separator);Incr = 0 ;}else if(Incr > Addup)Incr = 0 ;}}return Section ;}H將分割后的手勢擬合為直線,并計算手勢在四進制下的值function gestureCalculate(Section){var Result = 0,a = 0,b = 0,val = 0 for (var i = 0 ;i < Section, length ;i = i+2) {a = Points[Section[i+1]]
-Points[Section [i]]
;b = Points[Section[i+1]][1]-Points[Section [i]] [1];if (Math. abs(b/a) > 1) {if (b > 0)val = 2 ;else val = 0;}else{if (a > 0)val = 1 ;else val = 3 ;}Result = Result * 10+val ;}return Result ;}H顯示坐標點和運算結(jié)果function gestureVal () {clearlnterval(ilntervalld);document. getElementByld ( ' pos ' ). innerHTML = Points. joinC ‘);
document. getElementByld(/ res' ). innerHTML gestureCalculate (SectionArray (TrendArray0,3));}document, onmousemove = mouseMove ;H每個10毫秒記錄手勢的位置document, onmousedown = function (){Pointsjength = 0 ;ilntervalld = setlnterval (getPoints,10) ;};document, onmouseup = gestureVal ;〈/script〉
sans-serif ;font-size :10pX ;}. status {float :right ;width :272px ;height :592px ;border :#666666thin dashed ;padding :5pX ;} </
style><div style = " font-family Arial,Helvetica, sans-serif ;font-size :10px ; float :right ;width :272px ;border :#666666thin dashed ;padding :5px ; 〃 ><div> 鼠標位置[〈span id = rtx></span>,〈span id = rtyX/span>]</div><div><h2> 手勢軌跡 </h2Xp id = pos></p></div><div><h2> 手勢值〈span id = res></span></h2X/div></div>〈/body〉 〈style type = “ text/ess
>body{font-family Arial, Helvetica,
1權(quán)利要求
一種基于直線基本手勢的手勢碼的實現(xiàn)方法,包括a)用戶向計算設(shè)備輸入手勢;以及b)計算設(shè)備接收用戶輸入的手勢,并通過分割和擬合,將每一個手勢擬合為由一條或多條呈直線的基本手勢組成的手勢;以及c)計算設(shè)備將基本手勢分為一個或者多個類型,并且賦予每一個類型的基本手勢一個值,根據(jù)這種定義,判斷已擬合成直線的基本手勢屬于哪個類型;以及d)計算設(shè)備根據(jù)組成該手勢的基本手勢的類型和順序,計算該手勢的值;以及e)用戶或計算設(shè)備根據(jù)獲得的手勢值執(zhí)行后續(xù)操作或程序。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,用戶用手指向觸摸屏或觸摸板輸入手勢, 或者用戶用手寫筆向觸摸屏或手寫板輸入手勢,或者用戶用鼠標向計算設(shè)備輸入手勢。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,用戶輸入的手勢由一條或多條趨勢呈直 線的基本手勢組成。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,計算設(shè)備將在一定方向范圍內(nèi)的基本手 勢歸為一個類型,并且根據(jù)這些方向范圍的設(shè)定將基本手勢劃分為一個或者多個類型。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,計算設(shè)備為每一個類型的基本手勢分別 賦予一個從零開始,依次加1遞增的自然數(shù)。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,計算設(shè)備將基本手勢分為4個類型,分別 賦值0,1,2和3。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過下述步驟將手勢分割和擬合a)計算設(shè)備每隔一定時間記錄手勢的位置坐標和時間點;以及b)計算設(shè)備以橫向和縱向為軸,逐個計算這些點的每相鄰兩點之間的向量,逐個計算 每一個向量的橫向坐標軸參數(shù)值和縱向坐標軸參數(shù)的差的絕對值;以及c)以該絕對值為縱坐標值,以對應(yīng)的時間為橫坐標值,通過線性回歸逐個計算相鄰的 多個絕對值的斜率,從而獲得一系列斜率值;以及d)判斷斜率值的大小,將連續(xù)多個斜率大于零作為基本手勢的開始標志,將連續(xù)多個 斜率小于零作為基本手勢的結(jié)束標志,根據(jù)這一方法將一個手勢分割為一個或者多個基本 手勢;以及e)分別分析分割好的每個基本手勢的坐標點,利用最小二乘法或者計算首尾坐標點的 直線向量等數(shù)學(xué)方法將每個基本手勢擬合為一條標準直線,從而將該手勢擬合為由一條或 多條呈標準直線的基本手勢組成的手勢。
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,計算設(shè)備根據(jù)一定的數(shù)學(xué)進制計算手勢 的值,其中進制數(shù)等于基本手勢的類型數(shù)目,每一個手勢在該進制下的值等于將組成該手 勢的基本手勢對應(yīng)的值按順序從高位到低位書寫的值。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,計算設(shè)備獲得手勢值后將其轉(zhuǎn)換為其他 進制的數(shù)值或者與其相對應(yīng)的字符,以進行后續(xù)操作或運算。
10.根據(jù)權(quán)利要求1所述的方法,用戶在一次操作中輸入多個手勢,分別計算其手勢
全文摘要
本發(fā)明提供了一種基于直線基本手勢的手勢碼的實現(xiàn)方法。本方法通過對輸入手勢的軌跡進行分析,將其分割并擬合成由一條或者多條呈標準直線的基本手勢組成的手勢;計算設(shè)備將在一定的方向范圍內(nèi)的直線基本手勢歸為一個類型,從而將所有的基本手勢分為一個或者多個類型,并賦予每一類型的基本手勢一個固定的值;每一個手勢根據(jù)組成其的基本手勢的類型和組成順序,通過一定的計算獲得該手勢的值,以用于后續(xù)操作或運算?;诒景l(fā)明的手勢不依賴于手勢庫,能夠通過基本手勢衍生出無數(shù)種手勢,并且任意一個基于本方法的手勢都有一個數(shù)值與其對應(yīng),同時也能夠被計算設(shè)備和用戶直接識別,因而能夠廣泛的用于基于手勢的人機交互。
文檔編號G06F3/01GK101980107SQ20101051485
公開日2011年2月23日 申請日期2010年10月20日 優(yōu)先權(quán)日2010年10月20日
發(fā)明者陸鈺明 申請人:陸鈺明
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
信丰县| 乌鲁木齐县| 高碑店市| 广汉市| 拉孜县| 平泉县| 北海市| 共和县| 视频| 虞城县| 娄底市| 韶山市| 民县| 微山县| 科技| 宁陕县| 曲靖市| 营口市| 东乡族自治县| 方正县| 洞口县| 衡山县| 电白县| 会泽县| 鄱阳县| 深州市| 双牌县| 汉寿县| 花莲县| 贵港市| 改则县| 扶余县| 嵊泗县| 高尔夫| 阿拉尔市| 临澧县| 绥中县| 高雄县| 涞源县| 铁岭县| 临高县|