使用圖形處理器的并行觸摸點(diǎn)檢測的制作方法
【專利說明】
【背景技術(shù)】
[0001]目前許多計(jì)算裝置使用觸摸屏作為用戶輸入的主模式。觸摸計(jì)算能夠提供直觀、高效的用戶交互。使用觸摸界面的計(jì)算裝置通常檢測和解析觸摸屏上的多個同時觸摸的點(diǎn),從而識別觸摸輸入手勢并排除例如用戶手掌擱置在屏幕上等雜散的觸摸。觸摸追蹤和手勢交互應(yīng)是快速和流暢的從而允許人類的交互。
[0002]識別和追蹤觸摸點(diǎn)的典型算法實(shí)質(zhì)上為高度連續(xù)、迭代和/或遞歸的。計(jì)算裝置可通過識別被稱為質(zhì)心(centroid)的峰值觸摸強(qiáng)度的位置、以及識別被稱為簇邊界的觸摸點(diǎn)的區(qū)域,來識別觸摸點(diǎn)。計(jì)算裝置還可以隨時間追蹤觸摸點(diǎn)的運(yùn)動以進(jìn)行手勢識別。例如,觸摸點(diǎn)質(zhì)心邊界檢測的典型算法可涉及遍歷輸入幀內(nèi)相鄰單元的遞歸,并且可順序地對每個可能的觸摸點(diǎn)進(jìn)行重復(fù)。觸摸點(diǎn)追蹤的典型算法可重復(fù)遍及所預(yù)測的觸摸點(diǎn)位置和所檢測的當(dāng)前觸摸點(diǎn)的位置的所有已知的組合。這些典型的算法可能無法很好地?cái)U(kuò)展或者不能夠很好地應(yīng)對并行執(zhí)行。
【附圖說明】
[0003]在附圖中以舉例的方式而非限制的方式示出了本文所述的概念。為了簡單和清楚地說明,圖中所示的元件不一定按比例繪制。在認(rèn)為適當(dāng)時,附圖標(biāo)記可在附圖之間重復(fù)以指示相對應(yīng)的或類似的元件。
[0004]圖1是用于使用圖形處理器并行檢測觸摸點(diǎn)的計(jì)算裝置的至少一個實(shí)施例的簡化框圖;
[0005]圖2是圖1中的計(jì)算裝置的環(huán)境的至少一個實(shí)施例的簡化框圖;
[0006]圖3是可由圖1和2中的計(jì)算裝置執(zhí)行的用于檢測觸摸點(diǎn)的方法的至少一個實(shí)施例的簡化流程圖;
[0007]圖4是可由圖1和2中的計(jì)算裝置的觸摸屏產(chǎn)生的輸入數(shù)據(jù)幀的示意圖;
[0008]圖5是可由圖1和2中的計(jì)算裝置執(zhí)行的用于檢測觸摸點(diǎn)質(zhì)心和簇方法的至少一個實(shí)施例的簡化流程圖;
[0009]圖6是可由圖1和2中的計(jì)算裝置執(zhí)行的用于使用圖形處理器并行遍歷輸入幀的方法的至少一個實(shí)施例的簡化流程圖;
[0010]圖7是可由圖1和2中的計(jì)算裝置執(zhí)行的使用圖形處理器并行識別觸摸點(diǎn)簇邊界的方法的至少一個實(shí)施例的簡化流程圖;
[0011]圖8是在執(zhí)行圖7中的方法的過程中可使用的輸入窗口和比較窗口的示意圖;
[0012]圖9是可由圖1和2中的計(jì)算裝置執(zhí)行的使用圖形處理器并行識別觸摸點(diǎn)簇邊界的另一種方法的至少一個實(shí)施例的簡化流程圖;
[0013]圖10是可由圖1和2中的計(jì)算裝置執(zhí)行的用于追蹤觸摸點(diǎn)位置的方法的至少一個實(shí)施例的簡化流程圖;
[0014]圖11是可作為圖10中方法的一部分進(jìn)行執(zhí)行的、用于使用圖形處理器并行向觸摸點(diǎn)數(shù)據(jù)分配觸摸點(diǎn)識別符的子方法的至少一個實(shí)施例的簡化流程圖;
[0015]圖12是可作為圖10中方法的一部分進(jìn)行執(zhí)行的、用于使用圖形處理器并行移除重復(fù)的觸摸點(diǎn)識別符的子方法的至少一個實(shí)施例的簡化流程圖;以及
[0016]圖13是可作為圖10中方法的一部分進(jìn)行執(zhí)行的、用于使用圖形處理器并行分配未使用的預(yù)測觸摸點(diǎn)識別符的子方法的至少一個實(shí)施例的簡化流程圖。
【具體實(shí)施方式】
[0017]盡管本公開的概念易于進(jìn)行各種修改和替換,并且其具體的實(shí)施例已在附圖中通過示例的方式示出并將在本文中詳細(xì)描述。然而,應(yīng)當(dāng)理解,其并非旨在將本公開的概念限制在所公開的特定形式,相反,其意在覆蓋所有與本公開和所附的權(quán)利要求相一致的修改、等同和替代。
[0018]說明書中提及的“一個實(shí)施例”、“實(shí)施例”、“示例性實(shí)施例”等指示所描述的實(shí)施例可以包括特定的特征、結(jié)構(gòu)或特性,但是每個實(shí)施例可以或可以不包括該特定的特征、結(jié)構(gòu)或特性。此外,這樣的短語不一定指代同一實(shí)施例。此外,當(dāng)結(jié)合實(shí)施例描述特定的特征、結(jié)構(gòu)或特性時,應(yīng)當(dāng)認(rèn)為無論是否明確描述,結(jié)合其它實(shí)施例來實(shí)踐這些特定的特征、結(jié)構(gòu)或特性是在本領(lǐng)域技術(shù)人員中的知識范圍內(nèi)的。
[0019]在一些情況下,所公開的實(shí)施例可以硬件、固件、軟件或它們的任意組合來實(shí)施。所公開的實(shí)施例也可被實(shí)施為由暫時性的或非暫時性的機(jī)器可讀(例如,計(jì)算機(jī)可讀)存儲介質(zhì)承載或存儲的、可由一個或多個處理器讀取并執(zhí)行的指令。機(jī)器可讀存儲介質(zhì)可被實(shí)施為任何存儲設(shè)備、機(jī)制或用于以可由機(jī)器讀取的形式存儲或傳送信息的其它物理結(jié)構(gòu)(例如,易失性或非易失性存儲器、介質(zhì)盤、或其它介質(zhì)裝置)。
[0020]在附圖中,可以以特定的布置和/或順序示出一些結(jié)構(gòu)或方法特征。然而,應(yīng)當(dāng)理解,這種特定的布置和/或順序不是必需的。相反,在一些實(shí)施例中,可以以與圖中所示的不同的方式和/或順序布置這些特征。此外,將結(jié)構(gòu)或方法特征包括在特定的圖中入并不意味著在所有實(shí)施例中均需要所述特征,并且在一些實(shí)施例中,可能不包括所述特征或可與其它特征相結(jié)合。
[0021]現(xiàn)參照圖1,計(jì)算裝置100使用圖形處理器并行處理從觸摸屏中接收的觸摸輸入幀數(shù)據(jù)。處理所述輸入幀數(shù)據(jù)可包括識別觸摸點(diǎn)的質(zhì)心和簇邊界,以及跨輸入幀追蹤觸摸點(diǎn)的運(yùn)動。在圖形處理器上并行處理輸入幀數(shù)據(jù)可改善性能、降低功耗、或它們的任意組合。另外,本文所公開的處理算法對于不同的觸摸輸入的數(shù)量可具有更穩(wěn)定的執(zhí)行時間,并且因此可改善觸摸屏的響應(yīng)性和可預(yù)測性。
[0022]計(jì)算裝置100可被實(shí)施為能夠處理觸摸輸入幀和以其它方式執(zhí)行本文所描述的功能的任何類型的計(jì)算裝置。例如,計(jì)算裝置100可被實(shí)施為但不限于:計(jì)算機(jī)、智能電話、平板計(jì)算機(jī)、膝上型計(jì)算機(jī)、筆記本計(jì)算機(jī)、移動計(jì)算裝置、臺式計(jì)算機(jī)、工作站、蜂窩電話、手機(jī)、消息收發(fā)設(shè)備、車輛遠(yuǎn)程信息處理設(shè)備、網(wǎng)絡(luò)設(shè)備、網(wǎng)頁設(shè)備、分布式計(jì)算系統(tǒng)、多處理器系統(tǒng)、基于處理器的系統(tǒng)、消費(fèi)電子設(shè)備、數(shù)字電視設(shè)備和/或被配置為并行處理觸摸點(diǎn)數(shù)據(jù)的任何其它計(jì)算裝置。如圖1所示,計(jì)算裝置100包括處理器120、I/O子系統(tǒng)130、存儲器132,數(shù)據(jù)存儲設(shè)備134、顯示器136和觸摸屏138。當(dāng)然,在其它實(shí)施例中,計(jì)算裝置100可包括例如在平板計(jì)算機(jī)中常見的其它或附加的組件(例如,各種輸入/輸出裝置)。此外,在一些實(shí)施例中,所示出的一個或多個組件并入到另一組件中或形成為另一組件的一部分。例如,在一些實(shí)施例中,存儲器132或其部分可并入到處理器120中。
[0023]處理器120可被實(shí)施為能夠執(zhí)行本文所描述的功能的任何類型的處理器。處理器120被說明性實(shí)施為具有多個處理器核心122的多核處理器。然而,處理器120可被實(shí)施為單核或多核處理器、數(shù)字信號處理器、微控制器或其它處理器或處理/控制電路。類似地,存儲器132可被實(shí)施為能夠執(zhí)行本文所描述的功能的任何類型的易失性或非易失性存儲器或數(shù)據(jù)存儲設(shè)備。在操作中,存儲器132可存儲在計(jì)算裝置100操作期間所使用的各種數(shù)據(jù)和軟件,例如操作系統(tǒng)、應(yīng)用、程序、庫、和驅(qū)動程序。存儲器132經(jīng)由I/O子系統(tǒng)130通信地耦合到處理器120,I/O子系統(tǒng)130可被實(shí)施為便于與處理器120、存儲器132、以及計(jì)算裝置100的其它組件進(jìn)行輸入/輸出操作的電路和/或組件。例如,I/O子系統(tǒng)130可被實(shí)施為或者另外包括存儲器控制器集線器、輸入/輸出控制集線器、固件裝置、通信鏈路(即,點(diǎn)對點(diǎn)鏈路、總線鏈路、電線、電纜、光導(dǎo)、印刷電路板跡線等)和/或便于輸入/輸出操作的其它組件和子系統(tǒng)。在一些實(shí)施例中,I/O子系統(tǒng)130可形成系統(tǒng)級芯片(SoC)的一部分,并與處理器120、存儲器130以及計(jì)算裝置100的其它組件一起并入到單個集成電路芯片上。
[0024]處理器120包括圖形處理器124。圖形處理器124包括可提供對三維圖形、二維圖形、和各種視頻格式的加速處理和渲染的圖形和媒體處理電路。圖形處理器124的特征通常在于大量地并行計(jì)算資源,并可被實(shí)施為多個執(zhí)行單元126。在一些實(shí)施例中,執(zhí)行單元126可包括完全可編程的執(zhí)行單元或用于幾何處理、轉(zhuǎn)換和光照、光柵化、媒體解碼、媒體編碼等的固定功能執(zhí)行單元的任意組合。
[0025]圖形處理器124可與處理器核心122 —起用于執(zhí)行通用計(jì)算任務(wù)。計(jì)算任務(wù)可被實(shí)施為由一個或多個處理器核心122分派的由圖形處理器124執(zhí)行的線程、內(nèi)核(kernel)或其它可執(zhí)行代碼。所述任務(wù)由圖形處理器124的可編程執(zhí)行單元126和/或固定功能執(zhí)行單元126并行執(zhí)行。執(zhí)行單元126可提供多個單指令多數(shù)據(jù)(SIMD)指令,例如SIMD減指令和S頂D加指令。在一些實(shí)施例中,圖形處理器124可包括例如記分板128等指令調(diào)度器來分派用于執(zhí)行的任務(wù)。在這些實(shí)施例中,處理器核心122將任務(wù)之間的數(shù)據(jù)相關(guān)性記錄到記分板128,圖形處理器124使用記分板128根據(jù)所記錄的數(shù)據(jù)相關(guān)性和可用的執(zhí)行資源來分派任務(wù)。使用圖形處理器124的通用計(jì)算可通過例如計(jì)算著色器、DirectCompute,OpenCL?、CUDA?(也稱為統(tǒng)一計(jì)算裝置架構(gòu))等并行編程接口呈現(xiàn)給用戶。
[0026]在一些實(shí)施例中,圖形處理器124可被包含在與核心處理器122相同的集成電路芯片上,或作為包含在與核心處理器122相同的物理封裝中的獨(dú)立集成電路芯片。在其它實(shí)施例中,圖形處理器124可包含在I/O子系統(tǒng)130中,以下將更詳細(xì)地討論。在其它實(shí)施例中,圖形處理器124可包含在通信耦合到計(jì)算裝置100的母板的獨(dú)立擴(kuò)展板上。
[0027]數(shù)據(jù)存儲設(shè)備134可是實(shí)施為被配置用于數(shù)據(jù)的短期或長期存儲的任何類型的單個或多個設(shè)備。例如,數(shù)據(jù)存儲設(shè)備134可包括任何一個或多個存儲器設(shè)備和電路、存儲卡、硬盤驅(qū)動器、固態(tài)驅(qū)動器、或其它數(shù)據(jù)存儲設(shè)備。在一些實(shí)施例中,如進(jìn)一步描述的,數(shù)據(jù)存儲設(shè)備134可存儲輸入幀數(shù)據(jù)或觸摸點(diǎn)追蹤數(shù)據(jù)。
[0028]計(jì)算裝置100的顯示器136可被實(shí)施為能夠顯示數(shù)據(jù)信息的任何類型的顯示器,例如,液晶顯示器0XD)、發(fā)光二極管(LED)顯示器、離子體顯示器、陰極射線管(CRT)顯示器、或其它類型的顯示設(shè)備。觸摸屏138可被實(shí)施為能夠響應(yīng)于由計(jì)算裝置100的用戶的觸摸而生成輸入數(shù)據(jù)的任何類型的觸摸屏。觸摸屏138可被實(shí)施為電阻式觸摸屏、電容式觸摸屏、或基于相機(jī)的觸摸屏。觸摸屏138對多個同時觸摸的點(diǎn)敏感。
[0029]現(xiàn)參照圖2,在實(shí)施例中,計(jì)算裝置100在操作過程中建立環(huán)境200。所示的環(huán)境200包括質(zhì)心檢測模塊202、輸入幀模塊210、觸摸點(diǎn)追蹤模塊212,以及并行分派模塊218。環(huán)境200的各種模塊和子環(huán)境可被實(shí)施為硬件、固件、軟件或其組合。
[0030]輸入幀模塊210被配置成從觸摸屏138接收數(shù)據(jù)并將所述輸入數(shù)據(jù)格式化為一系列的輸入幀。每個輸入幀可實(shí)施為輸入單元的陣列,每個均包含表示在觸摸屏138上的特定位置處所感測的觸摸值的觸摸數(shù)據(jù)值。輸入幀模塊210連續(xù)產(chǎn)生經(jīng)更新的輸入幀,以使得能夠進(jìn)行高清晰度的觸摸追蹤。
[0031]質(zhì)心檢測模塊202被配置成針對質(zhì)心而搜索從輸入幀模塊210接收到的輸入幀,即,觸摸屏138上大致與每個觸摸點(diǎn)的中心相對應(yīng)的點(diǎn)。質(zhì)心檢測模塊202進(jìn)一步被配置成將鄰近的質(zhì)心合并成單個質(zhì)心,并檢測圍繞每個質(zhì)心的輸入單元的簇邊界。所述簇邊界表示每個觸摸點(diǎn)的范圍。在一些實(shí)施例中,這些功能可由例如質(zhì)心搜索模塊204、質(zhì)心合并模塊206、或簇識別模塊208等子模塊來執(zhí)行。
[0032]觸摸點(diǎn)追蹤模塊212被配置成隨時間、并跨輸入幀而識別和追蹤觸摸點(diǎn)。具體地,觸摸點(diǎn)追蹤模塊212被配置為預(yù)測先前追蹤的觸摸點(diǎn)的位置,然后將來自先前追蹤的觸摸點(diǎn)的識別符分配給由質(zhì)心檢測模塊202在當(dāng)前輸入幀中檢測到的觸摸點(diǎn)。觸摸點(diǎn)追蹤模塊212還可向在當(dāng)前輸入幀中的先前未被追蹤的觸摸點(diǎn)分配特別的識別符。在一些實(shí)施例中,觸摸點(diǎn)追蹤模塊212可對來自輸入幀模塊210的原始輸入幀數(shù)據(jù)進(jìn)行處理。在一些實(shí)施例中,這些功能可由例如觸摸點(diǎn)預(yù)測模塊214或觸摸點(diǎn)分配模塊216等子模塊來執(zhí)行。
[0033]并行分派模塊218被配置為調(diào)度計(jì)算任務(wù)并使用圖形處理器124并行執(zhí)行這些計(jì)算任務(wù)。即,并行分派模塊218分派待使用圖形處理器124的多個執(zhí)行單元126同時執(zhí)行的任務(wù)。并行分派模塊218可利用圖形處理器124的記分板128記錄數(shù)據(jù)相關(guān)性,從而控制執(zhí)行任務(wù)的順序。質(zhì)心檢測模塊202和觸摸點(diǎn)追蹤模塊212兩者均可使用并行分派模塊218來并行執(zhí)行它們各自的部分算法。此外,質(zhì)心檢測模塊202和觸摸點(diǎn)追蹤模塊212兩者均可使用圖形處理器124的SB?指令來執(zhí)行各自的部分算法。例如,質(zhì)心檢測模塊202可使用圖形處理器124并行搜索質(zhì)心、合并質(zhì)心、以及識別簇。類似地,觸摸點(diǎn)追蹤模塊212可使用圖形處理器124并行分配來自預(yù)測的觸摸點(diǎn)的識別符,并可生成新的獨(dú)特的觸摸點(diǎn)。
[0034]現(xiàn)參照圖3,在使用中,計(jì)算裝置100可執(zhí)行用于觸摸點(diǎn)處理的方法300。方法300始于框302,其中,計(jì)算裝置100從觸摸屏138接收輸入幀。如上所述,輸入幀包括表示在短暫的采樣期期間由觸摸屏138感測到的觸摸點(diǎn)強(qiáng)度的值的值陣列。例如,圖4