中示出了示例性輸入幀402。輸入幀402被示出為單元404的正方形陣列。單元404中的每一個包括在觸摸屏138的區(qū)域上所感測的觸摸數(shù)據(jù)值。每個觸摸數(shù)據(jù)值對應(yīng)于在該區(qū)域上觸摸屏138所感測的觸摸強(qiáng)度,例如,用戶的手指抵靠觸摸屏138的電容。觸摸數(shù)據(jù)值可被實(shí)施為16位整數(shù)值,或足夠?qū)捯园捎|摸屏138所感測的強(qiáng)度值范圍的任何數(shù)字值。
[0035]再參照圖3,在接收輸入幀之后,在框304,計算裝置100處理所述輸入幀已識別觸摸點(diǎn)的質(zhì)心和簇邊界。簇可被實(shí)施為與單個觸摸點(diǎn)相關(guān)聯(lián)的輸入幀的連續(xù)的單元的群組。質(zhì)心可被實(shí)施為包含簇的觸摸強(qiáng)度的峰值的輸入幀的單元。每個簇和相關(guān)聯(lián)的質(zhì)心表示觸摸屏138上的潛在的觸摸點(diǎn)。計算裝置100可對所述質(zhì)心和簇數(shù)據(jù)進(jìn)行分析以接受或拒絕潛在的觸摸點(diǎn);例如,計算裝置100可基于簇邊界的尺寸和/或形狀來區(qū)分指尖和手掌的觸摸,接受與指尖觸摸相對應(yīng)的質(zhì)心并拒絕與手掌接觸相對應(yīng)的質(zhì)心。以下結(jié)合圖5-7進(jìn)一步描述框304的功能。
[0036]在框306,在從原始輸入幀識別觸摸點(diǎn)之后,計算裝置100向每個所識別的觸摸點(diǎn)分配永久識別符。所述永久識別符逐幀追蹤觸摸點(diǎn)的運(yùn)動。這些永久識別符可由計算裝置100使用以協(xié)助處理手勢交互或用于其它用戶交互。以下結(jié)合圖8-11進(jìn)一步描述框306的功能。在分配永久識別符之后,方法300循環(huán)回到框302以接收另一個輸入幀。
[0037]現(xiàn)參照圖5,在使用中,計算裝置100可執(zhí)行用于識別觸摸點(diǎn)質(zhì)心和簇邊界的方法500。方法500開始于框502,其中計算裝置100將輸入幀的單元分組成若干個正方形塊。例如,參照圖4,輸入幀402包括布置成正方形陣列的256個輸入單元404。輸入單元404被分組成16個(4X4)單元塊406。在未示出的其它實(shí)施例中,輸入單元404可被分組成3X3的單元塊。此外,當(dāng)然,輸入幀402可包括任何數(shù)量的輸入單元404。
[0038]再參照圖5,在框504,針對每個塊406,計算裝置100檢測包含高于信號閾值的局部最大值的那些單元。換句話說,針對每個塊406,計算裝置100在所述塊中搜索具有也高于所述信號閾值的最大觸摸數(shù)據(jù)值的單元。低于所述信號閾值的觸摸數(shù)據(jù)值表示噪聲或觸摸屏138檢測到的并被拒絕其它偽信號。每個所識別的局部最大值被臨時標(biāo)記為質(zhì)心。例如,如圖4所示,陰影單元450至472表示在每個塊中檢測到的局部最大值。例如,塊410包括在單元450處的局部最大值。每個塊可具有至多一個局部最大值,并且一些塊,例如塊422、428、434、440,可以不包括任何所識別的局部最大值。在一些實(shí)施例中,計算裝置100可在單獨(dú)的搜索任務(wù)中對塊406中的每一個進(jìn)行搜索,并且這些任務(wù)中的每一個可被分派給圖形處理器124以并行執(zhí)行。
[0039]在識別質(zhì)心之后,在框506,計算裝置100跨鄰近的塊將質(zhì)心合并。在框504,使用來自單個塊406的數(shù)據(jù)來識別每個質(zhì)心;然而,在塊邊界的任一側(cè)所識別的質(zhì)心可以是相同觸摸點(diǎn)的一部分。為了消除這種錯誤的質(zhì)心,計算裝置100遍歷塊406以尋找在彼此的觸摸距離閾值內(nèi)的觸摸點(diǎn)。觸摸距離閾值表示在獨(dú)特的觸摸點(diǎn)之間的輸入幀單元的最小數(shù)目,其可取決于裝置或?qū)嵤┓绞?。在一些?shí)施例中,觸摸距離閾值可被配置成近似于人類手指的大小。例如,假設(shè)使用64X32單元的輸入幀的15英寸的觸摸屏138,其觸摸距離閾值可為兩個單元。通過僅將具有較大觸摸數(shù)據(jù)值的單元標(biāo)記為質(zhì)心來合并觸摸距離閾值內(nèi)的質(zhì)心。在框508,計算裝置100垂直地遍歷塊406 ;在框510,計算裝置100水平地遍歷塊406 ;在框512,計算裝置100對角地遍歷塊406。在一些實(shí)施例中,計算裝置100可在單獨(dú)的合并任務(wù)中遍歷每個塊406,這些任務(wù)中的每一個可被分派給圖形處理器124以進(jìn)行并行執(zhí)行。以下將結(jié)合圖6進(jìn)一步描述一種合并質(zhì)心的方法。
[0040]在合并質(zhì)心后,在框514,計算裝置100檢測每個質(zhì)心周圍簇邊界。所檢測到的簇邊界表示所檢測到的觸摸點(diǎn)的范圍。例如,參照圖4,實(shí)線邊界480至492表示簇邊界,并且簇邊界內(nèi)的陰影單元被包括在簇中。每個簇可包括單個單元,例如簇480、486、488、492、494,或者可包括多個單元,例如簇482、484、490。在一些實(shí)施例中,計算裝置100可在單獨(dú)的檢測任務(wù)中檢測每個質(zhì)心周圍的簇邊界,并且這些任務(wù)中的每一個可被分派給圖形處理器124以進(jìn)行并行執(zhí)行。以下將結(jié)合圖7進(jìn)一步描述一種用于檢測簇邊界的方法。在檢測簇邊界之后,方法500返回,使得計算裝置100繼續(xù)處理所檢測到的觸摸點(diǎn)。
[0041]現(xiàn)參照圖6,在使用中,計算裝置100可執(zhí)行用于跨鄰近的塊合并質(zhì)心的方法600。方法600始于框602,其中計算裝置100在圖形處理器124上針對每個塊406并行地分派任務(wù)。為控制遍歷的順序,計算裝置100可使用圖形處理器124的記分板128來設(shè)置任務(wù)間的數(shù)據(jù)相關(guān)性。例如,參照圖4,對于垂直遍歷,計算裝置100可將塊418設(shè)置成依賴于塊410、將塊420設(shè)置成依賴于塊412等,使得按豎直條(vertical stripe)跨輸入幀402而執(zhí)行任務(wù)。類似地,對于水平遍歷,計算裝置100可將塊412設(shè)置成依賴于塊410、將塊420設(shè)置成依賴于塊418等,使得按水平條(horizontal stripe)跨輸入幀402而執(zhí)行任務(wù)。對于對角遍歷,計算裝置可給每四個塊的組分派一個任務(wù),任務(wù)總體上覆蓋輸入幀402,而不是給每個塊406分派單個任務(wù)。例如,第一任務(wù)可包括塊410、412、418、420,第二任務(wù)可包括塊412、414、420、422。計算裝置100可設(shè)置這些任務(wù)之間的相關(guān)性,以從左到右、從上到下或者以任何一致的順序進(jìn)行處理。
[0042]對于框602中分派的每個任務(wù),在框604,計算裝置100確定在當(dāng)前塊中以及按遍歷順序的下一塊中的任何質(zhì)心的位置。例如,參照圖4,當(dāng)垂直遍歷塊410時,計算裝置100可確定塊410中的質(zhì)心450的位置以及按遍歷順序的下一塊418中的質(zhì)心458的位置。作為另一示例,當(dāng)水平遍歷塊410時,計算裝置100可確定質(zhì)心450和塊412的質(zhì)心452的位置。作為第三示例,當(dāng)對角遍歷時,計算裝置100可確定塊410的質(zhì)心450的位置和塊420的質(zhì)心460的位置。每個質(zhì)心的位置可被確定為與包含質(zhì)心的輸入單元404相對應(yīng)的一對坐標(biāo)。當(dāng)然,一些塊可不包括任何所識別的質(zhì)心,例如塊422、428、434、440。
[0043]在框606,計算裝置100確定在框604中所識別的質(zhì)心之間在遍歷方向上的距離。可根據(jù)分割所述質(zhì)心的輸入單元404來測量質(zhì)心之間的距離??蓛H測量在遍歷方向上對齊(例如,垂直、水平或?qū)?的質(zhì)心的距離。例如,參照圖4,當(dāng)在塊412中垂直遍歷時,單元452,460之間在垂直方向上具有兩個輸入單元的距離,而在塊418,單元458、464之間具有四個輸入單元的距離。當(dāng)在塊418中水平遍歷時,單元458、460之間具有兩個輸入單元的距離,而在塊430,單元466、468之間具有三個輸入單元的距離。當(dāng)對角遍歷時,在塊414,單元454、462之間具有兩個輸入單元的距離,而在塊420,單元460、466之間具有五個輸入單元的距離。
[0044]再參照圖6,在框608,計算裝置100確定質(zhì)心之間在遍歷方向上的距離是否小于或等于觸摸閾值距離。如上所述,所述距離閾值表示獨(dú)特的觸摸點(diǎn)之間的輸入幀單元的最小數(shù)目。在一些實(shí)施例中,觸摸距離閾值可以是兩個輸入單元。如果距離大于該閾值,則方法600返回而不合并任何質(zhì)心,并完成對當(dāng)前塊的操作。此外,當(dāng)在當(dāng)前塊和下一塊中存在少于兩個質(zhì)心時,方法600返回并完成對當(dāng)前塊的操作。此外,當(dāng)當(dāng)前塊與下一塊的質(zhì)心未在遍歷方向上對齊時,方法600返回并完成對當(dāng)前塊的操作。如果距離小于或等于所述觸摸距離閾值,方法600則前進(jìn)到框610。
[0045]在框610,計算裝置100將兩個質(zhì)心合并到具有較大觸摸數(shù)據(jù)值的輸入單元404中。在合并后,將包含較大觸摸數(shù)據(jù)值的輸入幀單元保持標(biāo)記為質(zhì)心,另一輸入幀單元不再被標(biāo)記為質(zhì)心。例如,當(dāng)在塊412中垂直遍歷時,對單元452、460的觸摸數(shù)據(jù)值進(jìn)行比較,假設(shè)單元460具有較大的觸摸數(shù)據(jù)值,則可將質(zhì)心合并到單元460??稍谶B續(xù)的遍歷方向上反復(fù)合并質(zhì)心。例如,當(dāng)在塊418中水平遍歷時,假設(shè)單元460再次具有較大的觸摸數(shù)據(jù),則可將單元458、460合并到單元460。作為另一示例,當(dāng)在塊414中對角遍歷時,可將單元454、462合并。在合并質(zhì)心后,方法600返回,并完成對當(dāng)前塊的操作。因此,在所有的遍歷方向上合并之后,跨越塊邊界的任何簇包括單個標(biāo)記的質(zhì)心。例如,在所有的遍歷方向上合并后,輸入單元460可以是簇邊界482內(nèi)的唯一標(biāo)記的質(zhì)心。
[0046]現(xiàn)參照圖7,在使用中,計算裝置100可執(zhí)行用于在標(biāo)記并合并質(zhì)心之后識別簇邊界的方法700。方法700開始于框702,其中計算裝置100在圖形處理器124上針對每個標(biāo)記的質(zhì)心并行地分派任務(wù)。對于在框702分派的每個任務(wù),在框704,計算裝置100針對圍繞所述質(zhì)心的單元加載輸入幀數(shù)據(jù)。所加載的單元的數(shù)量取決于所允許的手指或手掌的大小。在一些實(shí)施例中,計算裝置100可加載以質(zhì)心為中心的大致16X16的正方形塊單元。
[0047]在框706,計算裝置100將具有低于信號閾值的觸摸數(shù)據(jù)值的輸入單元?dú)w零。SP,計算裝置100將這些單元的值設(shè)為零。將低于輸入閾值的輸入單元?dú)w零可改善檢測性能。
[0048]在框708,計算裝置100復(fù)制簇的邊緣單元來構(gòu)建比較窗口。在第一次迭代中,簇僅包括先前被標(biāo)記為質(zhì)心的單元。計算裝置100定義圍繞所述簇的輸入窗口。例如,在第一次迭代中,輸入窗口可被實(shí)施為圍繞所述質(zhì)心的3X3單元正方形窗口。在以后的迭代中,輸入窗口可被實(shí)施為圍繞所述質(zhì)心的5X5單元正方形窗口。盡管所示的實(shí)施例使用了正方形窗口,但其它實(shí)施例可使用各種大小的窗口,例如3X5的窗口、5X3的窗口等。接著,計算裝置100創(chuàng)建與輸入窗口同樣大小的比較窗口。簇的每個邊緣單元被復(fù)制到比較窗口中在遠(yuǎn)離所述質(zhì)心方向上的鄰近邊緣單元中。因此,輸入窗口的角部單元在三個方向上延伸:對角、水平和垂直。如上所述,在第一次迭代中,質(zhì)心值延伸到比較窗口的邊緣。
[0049]現(xiàn)參照圖8,圖800示出了輸入窗口和比較窗口的一個實(shí)施例。陣列802示出了輸入窗口。單元C包含所識別的質(zhì)心。簇邊界804是一個包含先前已被識別為簇的成員的單元(;到(:8的3X3單元正方形。輸入窗口 802包含16個邊緣單元P。陣列806示出了比較窗口。比較窗口 806可被實(shí)施為存儲在存儲器中的單獨(dú)的陣列。簇邊界808與簇邊界804相對應(yīng),其包含單元(^到(:8的副本。比較窗口 806的邊緣單元包含從簇邊界808內(nèi)復(fù)制的值。如圖所示,單元(^的值被復(fù)制到三個角部單元中,單元(:2的值被復(fù)制到單個邊緣單元中,單元C3的值被復(fù)制到三個角部單元中等。
[0050]再參照圖7,在框710,計算裝置100從相對應(yīng)的比較窗口邊緣單元中減去輸入窗口邊緣單元的值。在一些實(shí)施例中,計算裝置100可使用計算裝置100的單指令多數(shù)據(jù)(SIMD)指令來執(zhí)行對窗口的所有四個邊緣的減法。例如,每個邊緣的值可被打包成一個向量,并且計算裝置100可使用單個打包的向量減法指令來執(zhí)行每個邊緣的減法。當(dāng)然,在其它實(shí)施例中,計算裝置100可針對每個單元執(zhí)行分立的減法。例如,參照圖8,輸入窗口 802包括上邊緣810、下邊緣812、左邊緣814和右邊緣816。比較窗口 806包括上邊緣818、下邊緣820、左邊緣822和右邊緣824。為計算上邊緣的差值,計算裝置100可將上邊緣810和上邊緣818的值打包成向量,并從上邊緣818的向量中減去上邊緣810的向量。對于其它邊緣,計算裝置100可以執(zhí)行類似的計算。
[0051]再參照圖7,在框712,計算裝置100確定在框710計算的減法所得到的任何差值是否小于零。如果是,則意味著對于至少一個邊緣單元,輸入幀值大于簇內(nèi)的鄰近單元的值。對于第一次迭代,這意味著,圍繞質(zhì)心的單元中的一個大于所述質(zhì)心。在這種情況下,觸摸數(shù)據(jù)值的斜率為非負(fù)的,即,觸摸值數(shù)據(jù)已開始增大。因此,在這種情況下,已找到質(zhì)心邊界。如下所述,如果任何差值小于零,則方法700轉(zhuǎn)移至框718。如果沒有任何差值小于零,則方法700前進(jìn)到框714。
[0052]在框714,計算裝置100確定比較窗口的大小是否已達(dá)到最大窗口大小。該最大窗口大小可基于例如在框704加載的輸入幀數(shù)據(jù)塊的大小來定義。例如,最大窗口大小可為15個單元乘以15個單元,這是16個單元的輸入幀數(shù)據(jù)正方形塊內(nèi)可能的最大窗口大小。如下所述,如果已達(dá)到最大窗口大小,則方法700轉(zhuǎn)移至框718。如果還未達(dá)到最大窗口大小,則方法700前進(jìn)到框716。
[0053]在框716,計算裝置100增大比較窗口的大小。由于在框710中計算出的差值沒有低于零的,因此,當(dāng)前比較窗口的每一個單元均包含在