CN105247456A - 使用图形处理器的并行触摸点检测 - Google Patents
使用图形处理器的并行触摸点检测 Download PDFInfo
- Publication number
- CN105247456A CN105247456A CN201380076996.8A CN201380076996A CN105247456A CN 105247456 A CN105247456 A CN 105247456A CN 201380076996 A CN201380076996 A CN 201380076996A CN 105247456 A CN105247456 A CN 105247456A
- Authority
- CN
- China
- Prior art keywords
- touch point
- identifier
- barycenter
- unit
- graphic process
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
- G06F3/0416—Control or interface arrangements specially adapted for digitisers
- G06F3/0418—Control or interface arrangements specially adapted for digitisers for error correction or compensation, e.g. based on parallax, calibration or alignment
- G06F3/04186—Touch location disambiguation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
- G06F3/0416—Control or interface arrangements specially adapted for digitisers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0488—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/041—Indexing scheme relating to G06F3/041 - G06F3/045
- G06F2203/04104—Multi-touch detection in digitiser, i.e. details about the simultaneous detection of a plurality of touching locations, e.g. multiple fingers or pen and finger
Abstract
用于触摸点检测的技术,包括计算装置,所述计算装置被配置成从触摸屏接收输入帧、识别触摸点质心和簇边界、并追踪所述触摸点。所述计算装置还将输入帧的单元分组为多个块。使用图形处理器,所述计算装置可给每个块分派一个线程来识别输入帧的局部最大值并合并在触摸距离阈值内的质心。所述计算装置可给每个质心分派一个线程来检测簇边界。所述计算装置可给每个先前被识别的触摸点分派一个线程来向在追踪距离阈值内的触摸点分配先前被追踪的触摸点的识别符,移除重复的识别符,并向最靠近的触摸点分配未被分配的识别符。所述计算装置可给每个块分派一个线程来向每个未被分配的触摸点分配独特的识别符。描述并请求保护其它的实施例。
Description
背景技术
目前许多计算装置使用触摸屏作为用户输入的主模式。触摸计算能够提供直观、高效的用户交互。使用触摸界面的计算装置通常检测和解析触摸屏上的多个同时触摸的点,从而识别触摸输入手势并排除例如用户手掌搁置在屏幕上等杂散的触摸。触摸追踪和手势交互应是快速和流畅的从而允许人类的交互。
识别和追踪触摸点的典型算法实质上为高度连续、迭代和/或递归的。计算装置可通过识别被称为质心(centroid)的峰值触摸强度的位置、以及识别被称为簇边界的触摸点的区域,来识别触摸点。计算装置还可以随时间追踪触摸点的运动以进行手势识别。例如,触摸点质心边界检测的典型算法可涉及遍历输入帧内相邻单元的递归,并且可顺序地对每个可能的触摸点进行重复。触摸点追踪的典型算法可重复遍及所预测的触摸点位置和所检测的当前触摸点的位置的所有已知的组合。这些典型的算法可能无法很好地扩展或者不能够很好地应对并行执行。
附图说明
在附图中以举例的方式而非限制的方式示出了本文所述的概念。为了简单和清楚地说明,图中所示的元件不一定按比例绘制。在认为适当时,附图标记可在附图之间重复以指示相对应的或类似的元件。
图1是用于使用图形处理器并行检测触摸点的计算装置的至少一个实施例的简化框图;
图2是图1中的计算装置的环境的至少一个实施例的简化框图;
图3是可由图1和2中的计算装置执行的用于检测触摸点的方法的至少一个实施例的简化流程图;
图4是可由图1和2中的计算装置的触摸屏产生的输入数据帧的示意图;
图5是可由图1和2中的计算装置执行的用于检测触摸点质心和簇方法的至少一个实施例的简化流程图;
图6是可由图1和2中的计算装置执行的用于使用图形处理器并行遍历输入帧的方法的至少一个实施例的简化流程图;
图7是可由图1和2中的计算装置执行的使用图形处理器并行识别触摸点簇边界的方法的至少一个实施例的简化流程图;
图8是在执行图7中的方法的过程中可使用的输入窗口和比较窗口的示意图;
图9是可由图1和2中的计算装置执行的使用图形处理器并行识别触摸点簇边界的另一种方法的至少一个实施例的简化流程图;
图10是可由图1和2中的计算装置执行的用于追踪触摸点位置的方法的至少一个实施例的简化流程图;
图11是可作为图10中方法的一部分进行执行的、用于使用图形处理器并行向触摸点数据分配触摸点识别符的子方法的至少一个实施例的简化流程图;
图12是可作为图10中方法的一部分进行执行的、用于使用图形处理器并行移除重复的触摸点识别符的子方法的至少一个实施例的简化流程图;以及
图13是可作为图10中方法的一部分进行执行的、用于使用图形处理器并行分配未使用的预测触摸点识别符的子方法的至少一个实施例的简化流程图。
具体实施方式
尽管本公开的概念易于进行各种修改和替换,并且其具体的实施例已在附图中通过示例的方式示出并将在本文中详细描述。然而,应当理解,其并非旨在将本公开的概念限制在所公开的特定形式,相反,其意在覆盖所有与本公开和所附的权利要求相一致的修改、等同和替代。
说明书中提及的“一个实施例”、“实施例”、“示例性实施例”等指示所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例可以或可以不包括该特定的特征、结构或特性。此外,这样的短语不一定指代同一实施例。此外,当结合实施例描述特定的特征、结构或特性时,应当认为无论是否明确描述,结合其它实施例来实践这些特定的特征、结构或特性是在本领域技术人员中的知识范围内的。
在一些情况下,所公开的实施例可以硬件、固件、软件或它们的任意组合来实施。所公开的实施例也可被实施为由暂时性的或非暂时性的机器可读(例如,计算机可读)存储介质承载或存储的、可由一个或多个处理器读取并执行的指令。机器可读存储介质可被实施为任何存储设备、机制或用于以可由机器读取的形式存储或传送信息的其它物理结构(例如,易失性或非易失性存储器、介质盘、或其它介质装置)。
在附图中,可以以特定的布置和/或顺序示出一些结构或方法特征。然而,应当理解,这种特定的布置和/或顺序不是必需的。相反,在一些实施例中,可以以与图中所示的不同的方式和/或顺序布置这些特征。此外,将结构或方法特征包括在特定的图中入并不意味着在所有实施例中均需要所述特征,并且在一些实施例中,可能不包括所述特征或可与其它特征相结合。
现参照图1,计算装置100使用图形处理器并行处理从触摸屏中接收的触摸输入帧数据。处理所述输入帧数据可包括识别触摸点的质心和簇边界,以及跨输入帧追踪触摸点的运动。在图形处理器上并行处理输入帧数据可改善性能、降低功耗、或它们的任意组合。另外,本文所公开的处理算法对于不同的触摸输入的数量可具有更稳定的执行时间,并且因此可改善触摸屏的响应性和可预测性。
计算装置100可被实施为能够处理触摸输入帧和以其它方式执行本文所描述的功能的任何类型的计算装置。例如,计算装置100可被实施为但不限于:计算机、智能电话、平板计算机、膝上型计算机、笔记本计算机、移动计算装置、台式计算机、工作站、蜂窝电话、手机、消息收发设备、车辆远程信息处理设备、网络设备、网页设备、分布式计算系统、多处理器系统、基于处理器的系统、消费电子设备、数字电视设备和/或被配置为并行处理触摸点数据的任何其它计算装置。如图1所示,计算装置100包括处理器120、I/O子系统130、存储器132,数据存储设备134、显示器136和触摸屏138。当然,在其它实施例中,计算装置100可包括例如在平板计算机中常见的其它或附加的组件(例如,各种输入/输出装置)。此外,在一些实施例中,所示出的一个或多个组件并入到另一组件中或形成为另一组件的一部分。例如,在一些实施例中,存储器132或其部分可并入到处理器120中。
处理器120可被实施为能够执行本文所描述的功能的任何类型的处理器。处理器120被说明性实施为具有多个处理器核心122的多核处理器。然而,处理器120可被实施为单核或多核处理器、数字信号处理器、微控制器或其它处理器或处理/控制电路。类似地,存储器132可被实施为能够执行本文所描述的功能的任何类型的易失性或非易失性存储器或数据存储设备。在操作中,存储器132可存储在计算装置100操作期间所使用的各种数据和软件,例如操作系统、应用、程序、库、和驱动程序。存储器132经由I/O子系统130通信地耦合到处理器120,I/O子系统130可被实施为便于与处理器120、存储器132、以及计算装置100的其它组件进行输入/输出操作的电路和/或组件。例如,I/O子系统130可被实施为或者另外包括存储器控制器集线器、输入/输出控制集线器、固件装置、通信链路(即,点对点链路、总线链路、电线、电缆、光导、印刷电路板迹线等)和/或便于输入/输出操作的其它组件和子系统。在一些实施例中,I/O子系统130可形成系统级芯片(SoC)的一部分,并与处理器120、存储器130以及计算装置100的其它组件一起并入到单个集成电路芯片上。
处理器120包括图形处理器124。图形处理器124包括可提供对三维图形、二维图形、和各种视频格式的加速处理和渲染的图形和媒体处理电路。图形处理器124的特征通常在于大量地并行计算资源,并可被实施为多个执行单元126。在一些实施例中,执行单元126可包括完全可编程的执行单元或用于几何处理、转换和光照、光栅化、媒体解码、媒体编码等的固定功能执行单元的任意组合。
图形处理器124可与处理器核心122一起用于执行通用计算任务。计算任务可被实施为由一个或多个处理器核心122分派的由图形处理器124执行的线程、内核(kernel)或其它可执行代码。所述任务由图形处理器124的可编程执行单元126和/或固定功能执行单元126并行执行。执行单元126可提供多个单指令多数据(SIMD)指令,例如SIMD减指令和SIMD加指令。在一些实施例中,图形处理器124可包括例如记分板128等指令调度器来分派用于执行的任务。在这些实施例中,处理器核心122将任务之间的数据相关性记录到记分板128,图形处理器124使用记分板128根据所记录的数据相关性和可用的执行资源来分派任务。使用图形处理器124的通用计算可通过例如计算着色器、DirectCompute、OpenCLTM、CUDATM(也称为统一计算装置架构)等并行编程接口呈现给用户。
在一些实施例中,图形处理器124可被包含在与核心处理器122相同的集成电路芯片上,或作为包含在与核心处理器122相同的物理封装中的独立集成电路芯片。在其它实施例中,图形处理器124可包含在I/O子系统130中,以下将更详细地讨论。在其它实施例中,图形处理器124可包含在通信耦合到计算装置100的母板的独立扩展板上。
数据存储设备134可是实施为被配置用于数据的短期或长期存储的任何类型的单个或多个设备。例如,数据存储设备134可包括任何一个或多个存储器设备和电路、存储卡、硬盘驱动器、固态驱动器、或其它数据存储设备。在一些实施例中,如进一步描述的,数据存储设备134可存储输入帧数据或触摸点追踪数据。
计算装置100的显示器136可被实施为能够显示数据信息的任何类型的显示器,例如,液晶显示器(LCD)、发光二极管(LED)显示器、离子体显示器、阴极射线管(CRT)显示器、或其它类型的显示设备。触摸屏138可被实施为能够响应于由计算装置100的用户的触摸而生成输入数据的任何类型的触摸屏。触摸屏138可被实施为电阻式触摸屏、电容式触摸屏、或基于相机的触摸屏。触摸屏138对多个同时触摸的点敏感。
现参照图2,在实施例中,计算装置100在操作过程中建立环境200。所示的环境200包括质心检测模块202、输入帧模块210、触摸点追踪模块212,以及并行分派模块218。环境200的各种模块和子环境可被实施为硬件、固件、软件或其组合。
输入帧模块210被配置成从触摸屏138接收数据并将所述输入数据格式化为一系列的输入帧。每个输入帧可实施为输入单元的阵列,每个均包含表示在触摸屏138上的特定位置处所感测的触摸值的触摸数据值。输入帧模块210连续产生经更新的输入帧,以使得能够进行高清晰度的触摸追踪。
质心检测模块202被配置成针对质心而搜索从输入帧模块210接收到的输入帧,即,触摸屏138上大致与每个触摸点的中心相对应的点。质心检测模块202进一步被配置成将邻近的质心合并成单个质心,并检测围绕每个质心的输入单元的簇边界。所述簇边界表示每个触摸点的范围。在一些实施例中,这些功能可由例如质心搜索模块204、质心合并模块206、或簇识别模块208等子模块来执行。
触摸点追踪模块212被配置成随时间、并跨输入帧而识别和追踪触摸点。具体地,触摸点追踪模块212被配置为预测先前追踪的触摸点的位置,然后将来自先前追踪的触摸点的识别符分配给由质心检测模块202在当前输入帧中检测到的触摸点。触摸点追踪模块212还可向在当前输入帧中的先前未被追踪的触摸点分配特别的识别符。在一些实施例中,触摸点追踪模块212可对来自输入帧模块210的原始输入帧数据进行处理。在一些实施例中,这些功能可由例如触摸点预测模块214或触摸点分配模块216等子模块来执行。
并行分派模块218被配置为调度计算任务并使用图形处理器124并行执行这些计算任务。即,并行分派模块218分派待使用图形处理器124的多个执行单元126同时执行的任务。并行分派模块218可利用图形处理器124的记分板128记录数据相关性,从而控制执行任务的顺序。质心检测模块202和触摸点追踪模块212两者均可使用并行分派模块218来并行执行它们各自的部分算法。此外,质心检测模块202和触摸点追踪模块212两者均可使用图形处理器124的SIMD指令来执行各自的部分算法。例如,质心检测模块202可使用图形处理器124并行搜索质心、合并质心、以及识别簇。类似地,触摸点追踪模块212可使用图形处理器124并行分配来自预测的触摸点的识别符,并可生成新的独特的触摸点。
现参照图3,在使用中,计算装置100可执行用于触摸点处理的方法300。方法300始于框302,其中,计算装置100从触摸屏138接收输入帧。如上所述,输入帧包括表示在短暂的采样期期间由触摸屏138感测到的触摸点强度的值的值阵列。例如,图4中示出了示例性输入帧402。输入帧402被示出为单元404的正方形阵列。单元404中的每一个包括在触摸屏138的区域上所感测的触摸数据值。每个触摸数据值对应于在该区域上触摸屏138所感测的触摸强度,例如,用户的手指抵靠触摸屏138的电容。触摸数据值可被实施为16位整数值,或足够宽以包含由触摸屏138所感测的强度值范围的任何数字值。
再参照图3,在接收输入帧之后,在框304,计算装置100处理所述输入帧已识别触摸点的质心和簇边界。簇可被实施为与单个触摸点相关联的输入帧的连续的单元的群组。质心可被实施为包含簇的触摸强度的峰值的输入帧的单元。每个簇和相关联的质心表示触摸屏138上的潜在的触摸点。计算装置100可对所述质心和簇数据进行分析以接受或拒绝潜在的触摸点;例如,计算装置100可基于簇边界的尺寸和/或形状来区分指尖和手掌的触摸,接受与指尖触摸相对应的质心并拒绝与手掌接触相对应的质心。以下结合图5-7进一步描述框304的功能。
在框306,在从原始输入帧识别触摸点之后,计算装置100向每个所识别的触摸点分配永久识别符。所述永久识别符逐帧追踪触摸点的运动。这些永久识别符可由计算装置100使用以协助处理手势交互或用于其它用户交互。以下结合图8-11进一步描述框306的功能。在分配永久识别符之后,方法300循环回到框302以接收另一个输入帧。
现参照图5,在使用中,计算装置100可执行用于识别触摸点质心和簇边界的方法500。方法500开始于框502,其中计算装置100将输入帧的单元分组成若干个正方形块。例如,参照图4,输入帧402包括布置成正方形阵列的256个输入单元404。输入单元404被分组成16个(4×4)单元块406。在未示出的其它实施例中,输入单元404可被分组成3×3的单元块。此外,当然,输入帧402可包括任何数量的输入单元404。
再参照图5,在框504,针对每个块406,计算装置100检测包含高于信号阈值的局部最大值的那些单元。换句话说,针对每个块406,计算装置100在所述块中搜索具有也高于所述信号阈值的最大触摸数据值的单元。低于所述信号阈值的触摸数据值表示噪声或触摸屏138检测到的并被拒绝其它伪信号。每个所识别的局部最大值被临时标记为质心。例如,如图4所示,阴影单元450至472表示在每个块中检测到的局部最大值。例如,块410包括在单元450处的局部最大值。每个块可具有至多一个局部最大值,并且一些块,例如块422、428、434、440,可以不包括任何所识别的局部最大值。在一些实施例中,计算装置100可在单独的搜索任务中对块406中的每一个进行搜索,并且这些任务中的每一个可被分派给图形处理器124以并行执行。
在识别质心之后,在框506,计算装置100跨邻近的块将质心合并。在框504,使用来自单个块406的数据来识别每个质心;然而,在块边界的任一侧所识别的质心可以是相同触摸点的一部分。为了消除这种错误的质心,计算装置100遍历块406以寻找在彼此的触摸距离阈值内的触摸点。触摸距离阈值表示在独特的触摸点之间的输入帧单元的最小数目,其可取决于装置或实施方式。在一些实施例中,触摸距离阈值可被配置成近似于人类手指的大小。例如,假设使用64×32单元的输入帧的15英寸的触摸屏138,其触摸距离阈值可为两个单元。通过仅将具有较大触摸数据值的单元标记为质心来合并触摸距离阈值内的质心。在框508,计算装置100垂直地遍历块406;在框510,计算装置100水平地遍历块406;在框512,计算装置100对角地遍历块406。在一些实施例中,计算装置100可在单独的合并任务中遍历每个块406,这些任务中的每一个可被分派给图形处理器124以进行并行执行。以下将结合图6进一步描述一种合并质心的方法。
在合并质心后,在框514,计算装置100检测每个质心周围簇边界。所检测到的簇边界表示所检测到的触摸点的范围。例如,参照图4,实线边界480至492表示簇边界,并且簇边界内的阴影单元被包括在簇中。每个簇可包括单个单元,例如簇480、486、488、492、494,或者可包括多个单元,例如簇482、484、490。在一些实施例中,计算装置100可在单独的检测任务中检测每个质心周围的簇边界,并且这些任务中的每一个可被分派给图形处理器124以进行并行执行。以下将结合图7进一步描述一种用于检测簇边界的方法。在检测簇边界之后,方法500返回,使得计算装置100继续处理所检测到的触摸点。
现参照图6,在使用中,计算装置100可执行用于跨邻近的块合并质心的方法600。方法600始于框602,其中计算装置100在图形处理器124上针对每个块406并行地分派任务。为控制遍历的顺序,计算装置100可使用图形处理器124的记分板128来设置任务间的数据相关性。例如,参照图4,对于垂直遍历,计算装置100可将块418设置成依赖于块410、将块420设置成依赖于块412等,使得按竖直条(verticalstripe)跨输入帧402而执行任务。类似地,对于水平遍历,计算装置100可将块412设置成依赖于块410、将块420设置成依赖于块418等,使得按水平条(horizontalstripe)跨输入帧402而执行任务。对于对角遍历,计算装置可给每四个块的组分派一个任务,任务总体上覆盖输入帧402,而不是给每个块406分派单个任务。例如,第一任务可包括块410、412、418、420,第二任务可包括块412、414、420、422。计算装置100可设置这些任务之间的相关性,以从左到右、从上到下或者以任何一致的顺序进行处理。
对于框602中分派的每个任务,在框604,计算装置100确定在当前块中以及按遍历顺序的下一块中的任何质心的位置。例如,参照图4,当垂直遍历块410时,计算装置100可确定块410中的质心450的位置以及按遍历顺序的下一块418中的质心458的位置。作为另一示例,当水平遍历块410时,计算装置100可确定质心450和块412的质心452的位置。作为第三示例,当对角遍历时,计算装置100可确定块410的质心450的位置和块420的质心460的位置。每个质心的位置可被确定为与包含质心的输入单元404相对应的一对坐标。当然,一些块可不包括任何所识别的质心,例如块422、428、434、440。
在框606,计算装置100确定在框604中所识别的质心之间在遍历方向上的距离。可根据分割所述质心的输入单元404来测量质心之间的距离。可仅测量在遍历方向上对齐(例如,垂直、水平或对角)的质心的距离。例如,参照图4,当在块412中垂直遍历时,单元452、460之间在垂直方向上具有两个输入单元的距离,而在块418,单元458、464之间具有四个输入单元的距离。当在块418中水平遍历时,单元458、460之间具有两个输入单元的距离,而在块430,单元466、468之间具有三个输入单元的距离。当对角遍历时,在块414,单元454、462之间具有两个输入单元的距离,而在块420,单元460、466之间具有五个输入单元的距离。
再参照图6,在框608,计算装置100确定质心之间在遍历方向上的距离是否小于或等于触摸阈值距离。如上所述,所述距离阈值表示独特的触摸点之间的输入帧单元的最小数目。在一些实施例中,触摸距离阈值可以是两个输入单元。如果距离大于该阈值,则方法600返回而不合并任何质心,并完成对当前块的操作。此外,当在当前块和下一块中存在少于两个质心时,方法600返回并完成对当前块的操作。此外,当当前块与下一块的质心未在遍历方向上对齐时,方法600返回并完成对当前块的操作。如果距离小于或等于所述触摸距离阈值,方法600则前进到框610。
在框610,计算装置100将两个质心合并到具有较大触摸数据值的输入单元404中。在合并后,将包含较大触摸数据值的输入帧单元保持标记为质心,另一输入帧单元不再被标记为质心。例如,当在块412中垂直遍历时,对单元452、460的触摸数据值进行比较,假设单元460具有较大的触摸数据值,则可将质心合并到单元460。可在连续的遍历方向上反复合并质心。例如,当在块418中水平遍历时,假设单元460再次具有较大的触摸数据,则可将单元458、460合并到单元460。作为另一示例,当在块414中对角遍历时,可将单元454、462合并。在合并质心后,方法600返回,并完成对当前块的操作。因此,在所有的遍历方向上合并之后,跨越块边界的任何簇包括单个标记的质心。例如,在所有的遍历方向上合并后,输入单元460可以是簇边界482内的唯一标记的质心。
现参照图7,在使用中,计算装置100可执行用于在标记并合并质心之后识别簇边界的方法700。方法700开始于框702,其中计算装置100在图形处理器124上针对每个标记的质心并行地分派任务。对于在框702分派的每个任务,在框704,计算装置100针对围绕所述质心的单元加载输入帧数据。所加载的单元的数量取决于所允许的手指或手掌的大小。在一些实施例中,计算装置100可加载以质心为中心的大致16×16的正方形块单元。
在框706,计算装置100将具有低于信号阈值的触摸数据值的输入单元归零。即,计算装置100将这些单元的值设为零。将低于输入阈值的输入单元归零可改善检测性能。
在框708,计算装置100复制簇的边缘单元来构建比较窗口。在第一次迭代中,簇仅包括先前被标记为质心的单元。计算装置100定义围绕所述簇的输入窗口。例如,在第一次迭代中,输入窗口可被实施为围绕所述质心的3×3单元正方形窗口。在以后的迭代中,输入窗口可被实施为围绕所述质心的5×5单元正方形窗口。尽管所示的实施例使用了正方形窗口,但其它实施例可使用各种大小的窗口,例如3×5的窗口、5×3的窗口等。接着,计算装置100创建与输入窗口同样大小的比较窗口。簇的每个边缘单元被复制到比较窗口中在远离所述质心方向上的邻近边缘单元中。因此,输入窗口的角部单元在三个方向上延伸:对角、水平和垂直。如上所述,在第一次迭代中,质心值延伸到比较窗口的边缘。
现参照图8,图800示出了输入窗口和比较窗口的一个实施例。阵列802示出了输入窗口。单元C包含所识别的质心。簇边界804是一个包含先前已被识别为簇的成员的单元C1到C8的3×3单元正方形。输入窗口802包含16个边缘单元P。阵列806示出了比较窗口。比较窗口806可被实施为存储在存储器中的单独的阵列。簇边界808与簇边界804相对应,其包含单元C1到C8的副本。比较窗口806的边缘单元包含从簇边界808内复制的值。如图所示,单元C1的值被复制到三个角部单元中,单元C2的值被复制到单个边缘单元中,单元C3的值被复制到三个角部单元中等。
再参照图7,在框710,计算装置100从相对应的比较窗口边缘单元中减去输入窗口边缘单元的值。在一些实施例中,计算装置100可使用计算装置100的单指令多数据(SIMD)指令来执行对窗口的所有四个边缘的减法。例如,每个边缘的值可被打包成一个向量,并且计算装置100可使用单个打包的向量减法指令来执行每个边缘的减法。当然,在其它实施例中,计算装置100可针对每个单元执行分立的减法。例如,参照图8,输入窗口802包括上边缘810、下边缘812、左边缘814和右边缘816。比较窗口806包括上边缘818、下边缘820、左边缘822和右边缘824。为计算上边缘的差值,计算装置100可将上边缘810和上边缘818的值打包成向量,并从上边缘818的向量中减去上边缘810的向量。对于其它边缘,计算装置100可以执行类似的计算。
再参照图7,在框712,计算装置100确定在框710计算的减法所得到的任何差值是否小于零。如果是,则意味着对于至少一个边缘单元,输入帧值大于簇内的邻近单元的值。对于第一次迭代,这意味着,围绕质心的单元中的一个大于所述质心。在这种情况下,触摸数据值的斜率为非负的,即,触摸值数据已开始增大。因此,在这种情况下,已找到质心边界。如下所述,如果任何差值小于零,则方法700转移至框718。如果没有任何差值小于零,则方法700前进到框714。
在框714,计算装置100确定比较窗口的大小是否已达到最大窗口大小。该最大窗口大小可基于例如在框704加载的输入帧数据块的大小来定义。例如,最大窗口大小可为15个单元乘以15个单元,这是16个单元的输入帧数据正方形块内可能的最大窗口大小。如下所述,如果已达到最大窗口大小,则方法700转移至框718。如果还未达到最大窗口大小,则方法700前进到框716。
在框716,计算装置100增大比较窗口的大小。由于在框710中计算出的差值没有低于零的,因此,当前比较窗口的每一个单元均包含在质心的边界内。因此,可增大比较窗口的大小和相关的输入窗口大小可以增大以继续搜索边界。在增大比较窗口的大小之后,方法700循环回框708以构建另一比较窗口。
再参照框712,如果任何差值小于零,则方法700转移至框718。此外,再参考框714,如果已达到最大窗口大小,则方法700转移至框718。在框718中,计算装置100对比较窗口中有效单元的数量进行计数。有效单元是指那些在框710中计算出的差值不小于零的单元。在一些实施例中,由于在框706中将低于信号阈值的单元归零,因此,计算装置100可将输入窗口内所有非零单元识别为有效单元。计算装置100可使用SIMD和指令来对有效单元的数量进行计数。计算装置100可使用有效单元的数量确定簇边界;即,围绕质心的触摸点的大小。
现参照图9,在使用中,在标记并合并质心后,计算装置100可执行用于识别簇边界的方法900。方法900可适用于容易产生噪声输入帧的触摸屏138。方法900始于框902,其中计算装置100在图形处理器124上针对每个标记的质心并行分派任务。对于在框902所分派的每个任务,在框904,计算装置100针对围绕质心的单元加载输入帧数据。所加载的单元的数量取决于所允许的手指或手掌的大小。在一些实施例中,计算装置100可加载以质心为中心的大致16×16的正方形单元。
在框906,计算装置100将具有低于信号阈值的触摸数据值的输入单元归零。即,计算装置100将这些单元的值设置为零。将低于输入阈值的输入单元归零可提高检测性能。
在框908,计算装置100计算窗口内的所有边缘单元的和以及所述窗口内的所有边缘单元的最大值。计算装置100可将所述和以及最大值存储在阵列中供以后取回。初始窗口可以是围绕质心的3×3的正方形窗口。例如,参照图8,初始窗口可以由窗口804示出。因此,边缘单元的和为单元C1到C8的和,最大值为单元C1到C8中的最大值。
再参照图9,在框910,计算装置100计算当前窗口中边缘单元的数量和信号阈值的乘积。例如,3×3的窗口包括8个边缘单元,5×5的窗口包括16个边缘单元,依此类推。在框912,计算装置100确定当前窗口边缘单元的和是否小于边缘单元与信号阈值的乘积。如果是,则边缘单元的平均值小于所述阈值信号,这意味着已找到簇边界。如果所述和小于单元的数量乘以信号阈值,则方法900转移至框920,如下所述。如果所述和不小于单元的数量乘以信号阈值,则方法900前进到框914。
在框914,计算装置100确定当前窗口的最大值是否小于或等于先前窗口的最大值。对于初始窗口,计算装置100确定当前窗口的最大值是否小于或等于质心的值。例如,计算装置100可确定5×5窗口(当前窗口)的最大值是否小于或等于3×3窗口(先前窗口)的最大值。如果当前窗口的最大值不小于或等于先前窗口的最大值,即,如果当前窗口的最大值大于先前窗口的最大值,则方法900转移至框920,如下所述。如果当前窗口的最大值小于或等于先前窗口的最大值,则方法900前进到框916。
在框916,计算装置100增大窗口大小。由于当前窗口的最大值小于或等于先前窗口的最大值,因此,当前窗口的每个单元均可包括在质心边界内。因此,可增大窗口的大小以继续搜索边界。在框918,计算装置100确定是否已超过最大窗口大小。所述最大窗口大小例如可基于在框904所加载的输入帧数据块的大小来定义。例如,最大窗口大小可为15个单元乘以15个单元、这是16个单元的输入帧数据正方形块内可能的最大窗口大小。如果未超过最大窗口大小,则方法900循环返回至框908以继续搜索簇边界。如果已超过最大窗口大小,则方法900前进到框920。
在框920,计算装置100对先前窗口中有效单元的数量进行计数。此时,计算装置可能已经在框912确定当前窗口的边缘单元的平均值不超过信号阈值、在框914确定当前窗口的最大值超过先前窗口的最大值、或者在框918确定已超过最大窗口的尺寸。在所有这些情况下,先前的、较小的窗口可被用作簇边界。对于初始窗口,质心可被用作先前的窗口,从而形成单个单元簇。由于在框906将低于信号阈值的单元归零,因此计算装置100可将所选择的窗口内所有非零单元识别为有效单元。计算装置100可使用SIMD指令(例如SIMD求和指令)来对边缘单元进行计数。
现参照图10,在使用中,计算装置100可执行用于向触摸点分配永久识别符的方法1000。如以上结合图3的框306所描述的,一旦执行方法1000,计算装置100可以已经接到收来自触摸屏的输入帧,并已执行质心和簇边界检测来识别输入帧中的当前触摸点。方法1000开始于框1002,其中计算装置100预测所有先前所追踪的触摸点在当前输入帧中的位置。当然,对于方法1000的第一次调用,将不存在先前所追踪的触摸点。在一些实施例中,计算装置100可例如通过确定每个触摸点的速度并根据速度而预测位置来从先前的位置推断预测的位置。然而,在一些实施例中,计算装置100可将每个先前所追踪的触摸点的位置简单地预测为与在先前的输入帧中相同。这一简化的方法可以适合于触摸点很可能是相对缓慢移动的情况。
在框1004,对于每个预测的触摸点,计算装置100向位于预测的触摸点的追踪距离阈值内的当前触摸点分配预测的触摸点的识别符。每个预测的触摸点都与可以用于追踪触摸点在帧之间的位置的独特识别符相关联。追踪距离阈值表示在触摸屏138上触摸点可在输入帧之间移动并被认为是同一触摸点的最大距离。可根据输入帧单元来测量追踪距离阈值。例如,在一些实施例中,阈值可以是七个单元。在一些实施例中,计算装置100可在单独的分配任务中为每个预测的触摸点分配识别符,并且这些任务中的每一个可被分派给图形处理器124以并行执行。以下参照附图11进一步描述分配识别符的方法。
在框1006,对于每个预测的触摸点,计算装置100移除分配给当前触摸点的任何重复的识别符。由于框1004的方法是针对每个预测的触摸点独立执行的,因此相同的识别符可被分配给多个当前触摸点。为解决这一问题,计算装置100移除重复的识别符,保留最靠近预测的触摸点的当前触摸点上的识别符。在一些实施例中,计算装置100在单独的移除任务中为每个预测的触摸点移除重复的识别符,这些任务中的每一个可被分派给图形处理器124以并行执行。以下参照附图12进一步描述移除重复识别符的方法。
在框1008,对于每个预测的触摸点,计算装置100向在阈值距离内最靠近的未被分配的当前触摸点分配任何未使用的预测的触摸点识别符。在一些实施例中,计算装置100在单独的分配任务中为每个预测的触摸点分配未使用的预测的触摸点识别符,这些任务中的每一个可被分派给图形处理器124以并行执行。以下参照附图13进一步描述分配未使用的预测触摸点识别符的方法。
在框1010,对于输入帧中的每个块,计算装置100向每个未被分配的当前触摸点分配新的独特的识别符。如上所述,输入帧可被分组成正方形单元块。在一些实施例中,这些块可以是4×4的单元正方形,在其它实施例中,这些块可以是3×3的单元正方形。在一些实施例中,计算装置100可在图形处理器124上为每个块分派分配任务来给块内的每个未被分配的当前触摸点寻找和分配识别符。例如,该计算装置100可保持一全局计数器并分配增加的整数值作为识别符。该计数器可以足够大以允许典型数量的识别符而不会溢出。例如,在一些实施例中,一个无符号的8位整数可用作计数器,这允许256个独特的识别符。作为另一示例,为确保识别符是独特的,计算装置100可保持识别符的映射图(map)并使用所述映射图来选择未使用的识别符。所述映射图可被实施为总计包括256位的8个无符号的32位整数,该映射图的每一位表示特定的识别符是否已被分配。
在框1012,计算装置100可设置块之间的数据相关性来控制块被评估的顺序。控制执行的顺序允许计算装置100可针对未被分配的当前触摸点生成一组可重复的独特识别符。如上所述,可以由图形处理器124的记分板128使用数据相关性来控制执行顺序。例如,数据相关性可被设置用于按列搜索块,即在前进到下一列之前垂直遍历每一列。数据相关性可包括如上所述的全局计数器或识别符的映射图,这允许每个块基于先前块的结果来计算独特的识别符。
现参照图11,在使用中,计算装置100可用于执行向当前触摸点分配识别符的方法1100。方法1100开始于框1102,其中计算装置100在图形处理器124上针对每个预测的触摸点并行地分派任务。在框1104,对于每个任务,计算装置100在预测的触摸点位置周围的窗口内取回当前输入帧的所有当前触摸点。如上所述,计算装置100可通过将输入帧单元分组为正方形块、例如4×4的块或3×3的单元块来组织存储器中的输入帧。这种分组成块可类似于以上结合图5的框502所描述的质心检测的组织。每个块的触摸点信息可以以容易由图形处理器124加载、存储和以其它方式操作的格式进行存储,例如图像或纹理格式。例如,每个块的触摸点信息可以以32位浮点二维平面的格式进行存储。所述窗口的大小足以包括预测的触摸点的追踪距离阈值内的所有单元。例如,需要两个4×4的块或三个3×3的块来覆盖七个单元的追踪距离阈值,并且该追踪距离阈值可从预测的触摸点的所有方向上均被覆盖。因此,在一些实施例中,对于4×4的单元块,窗口可以是5块的正方形,对于3×3的单元,所述窗口可以是7块的正方形。包含预测的触摸点的块被定位在窗口的中心。
在框1106,计算装置100找到位于窗口内最靠近预测的触摸点的当前触摸点。计算装置100将该最靠近的当前触摸点存储为最佳匹配触摸点以供随后的处理。
在框1108,计算装置100找到窗口内在框1106所确定的最佳匹配触摸点周围的所有预的测触摸点。所述窗口与在框1104搜索的窗口大小相同。然而,因为佳匹配触摸点可能位于不同的块中,因此计算装置100可取回和搜索不同的块。在框1110,计算装置100将最靠近的预测触摸点的识别符分配给最佳匹配触摸点。因此,最佳匹配触摸点可被分配与最初在框1104搜索的预测的触摸点的识别符不同的识别符。在分配识别符后,所述方法1100返回。
参照图12,在使用中,计算装置100可执行用于移除重复的识别符的方法1200。方法1200开始于框1202,其中计算装置100在图形处理器124上针对每个预测的触摸点并行分派任务。在框1204,计算装置100取回在预测的触摸点周围的窗口内的所有当前触摸点。如以上参照图10中的框1104所描述的,所述窗口的大小被设置成包括所有包含在预测的触摸点的追踪距离阈值内的单元的所有块,并且根据块的大小其可被实施为5×5块的正方形窗口或7×7块的正方形窗口。
在框1206,计算装置100找到窗口内具有与预测的触摸点的识别符相匹配的识别符的所有当前触摸点。在框1208,计算装置确定多于一个的当前触摸点是否具有与预测的触摸点相同的识别符。如果没有,则无需移除识别符,方法1200返回。如果有,则方法1200前进到框1210。
在框1210,对于具有匹配的识别符的当前触摸点,计算装置100保留最靠近的当前触摸点的识别符,并移除其余触摸点的识别符。被移除了识别符的每个当前触摸点可恢复到原始的、未被分配的状态。因此,在完成框1210之后,所有重复的识别符已被移除,并且方法1200返回。
现在参照图13,在使用中,计算装置100可执行用于分配未被使用的预测的触摸点识别符的方法1300。方法1300开始于框1302,其中计算装置100在图形处理器124上针对每个预测的触摸点并行地分派任务。在框1304,计算装置100确定预测的触摸点是否未被使用。即,计算装置100确定预测的触摸点的识别符是否已被分配给任何当前触摸点。如果预测的触摸点并非未被使用,也就是说,如果预测的触摸点已经被分配,则方法1300返回。如果预测的触摸点未被使用,则方法1300前进到框1306。
在框1306,计算装置100取回在未被使用的预测的触摸点周围的窗口内的所有当前触摸点。如以上参照图11中的框1104所描述的,窗口的大小被设置成包括包含在预测的触摸点的追踪距离阈值内的单元的所有块,并且根据块的大小其可被实施为5×5块的正方形窗口或7×7块的正方形窗口。在框1308,计算装置100将预测的触摸点识别符分配给最靠近的未被分配的当前触摸点。如果在窗口内未找到未被分配的当前触摸点,则所述预测的触摸点保持未被使用。如果未被使用,则所述预测的触摸点可被删除,或者如果长时间未被使用,则可被老化(ageout)(未示出)。在完成框1308之后,方法1300返回。
示例
以下提供了本文所公开的技术的示例性例子。所述技术的实施例可包括以下所描述的例子中的任何一个或多个以及其任意组合。
示例1包括用于触摸点质心检测的计算装置,所述计算装置包括触摸屏;输入帧模块,其从触摸屏接收输入帧,所述输入帧定义多个单元,每个单元具有触摸数据值;以及质心检测模块,其将输入帧的单元分组为多个块;在所述多个块中的每一个内搜索局部最大单元,所述局部最大单元具有与信号阈值具有预先定义的关系的触摸数据值;将局部最大单元中的每个识别为质心;合并位于彼此的触摸距离阈值内的质心;以及检测在每个合并后的质心周围的簇边界,每个簇边界包括输入帧中的至少一个单元。
示例2包括示例1的主题,并且其中,每一个块包括以下中的一个:16个连续单元的四单元正方形块,或九个连续单元的三单元正方形块。
示例3包括示例1和2中任一的主题,并且其中,搜索局部最大单元包括搜索具有大于或等于所述信号阈值的触摸数据值的局部最大单元。
示例4包括示例1-3中任一的主题,并且其中,所述合并质心包括按竖直条遍历所述块并合并在垂直地分开了小于所述触摸距离阈值的邻近块中的质心;按水平条遍历所述块并合并在水平地分开了小于所述触摸距离阈值的邻近块中的质心;以及按对角相邻的对来遍历所述块并合并在对角地分开了小于所述触摸距离阈值的邻近块中的质心。
示例5包括示例1-4中任一的主题,并且其中,所述合并邻近块中的质心包括识别分开了小于所述触摸距离阈值的一对质心中的第一质心和第二质心,其中所述第一质心包括比所述第二质心的第二触摸数据值大的第一触摸数据值;以及从所述第二质心移除作为质心的标识。
示例6包括示例1-5中任一的主题,并且其中,所述触摸距离阈值包括两个单元。
示例7包括示例1-6中任一的主题,并且进一步包括图形处理器,其中按竖直条遍历所述块包括使用所述图形处理器给每个块分派一个任务,其中每个任务包括合并块内位于与位于邻近块中的另一质心在触摸距离阈值内的质心;并使用图形处理器的记分板来设置任务之间的数据相关性以便按竖直条遍历所述块;其中按水平条遍历所述块包括使用所述图形处理器给每个块分派一个任务,其中每个任务包括合并块内位于与位于邻近块中的另一质心在触摸距离阈值内的质心;并使用图形处理器的记分板来设置任务之间的数据相关性以便按水平条遍历所述块;并且其中按对角相邻的对来遍历所述块包括使用所述图形处理器给每四个块的正方形组分派一个任务,其中每个任务包括合并块的正方形组内位于与位于邻近块中的另一质心在触摸距离阈值内的质心;并使用图形处理器的记分板来设置任务之间的数据相关性以便按对角相邻的对来遍历所述块。
示例8包括示例1-7中任一的主题,并且其中,检测在每个合并后的质心周围的簇边界包括从所述输入帧加载针对围绕质心的单元的数据;将包括小于信号阈值的触摸数据值的单元归零;定义包括围绕所述簇边界的输入帧的单元的输入窗口;复制簇的边缘单元来构建与输入窗口的大小相等的大小的比较窗口;从比较窗口中相对应的复制的边缘单元的触摸数据值中减去输入窗口中每个边缘单元的触摸数据值,以确定多个边缘单元差值;响应于确定没有边缘单元差值小于零,增大所述比较窗口的大小;并且响应于确定边缘单元差值中的任意一个小于零,对所述输入窗口中有效单元的数量进行计数,每个有效单元具有不小于0的相对应的边缘单元差值。
示例9包括示例1-8中任一的主题,并且其中,加载输入帧数据包括从围绕所述质心的16×16正方形单元中加载数据。
示例10包括示例1-9中任一的主题,并且其中,减去每个边缘单元的触摸数据值包括将输入窗口的边缘打包成第一向量;将比较窗口的边缘打包成第二向量;使用图形处理器的单指令多数据指令从所述第二向量减去所述第一向量。
示例11包括示例1-10中任一的主题,并且其中,对有效单元的数量进行计数包括使用图形处理器的单指令多数据指令来隶属所述有效单元的数量。
示例12包括示例1-11中任一的主题,并且其中,所述检测每个合并后的质心周围的簇边界包括从输入帧加载围绕所述质心的单元的数据;将包括小于信号阈值的触摸数据值的单元归零;计算第一个窗口内的边缘单元的第一最大值;计算围绕所述质心的输入帧的第二窗口内的边缘单元的和,所述第二窗口围绕所述第一窗口;计算所述第二窗口内的边缘单元的第二最大值;确定所述和是否小于第二窗口内的边缘单元的数量与所述信号阈值的乘积;确定所述第二最大值是否大于所述第一最大值;响应于确定所述和不小于所述第二窗口内的边缘单元的数量与所述信号阈值的乘积以及确定所述第二最大值不大于所述第一最大值,增大所述第一窗口和第二窗口的大小所;并且响应于确定所述和小于所述第二窗口内的边缘单元的数量与所述信号阈值的乘积或者确定所述第二最大值大于所述第一最大值,对所述第一窗口中有效单元的数量进行计数。
示例13包括示例1-12中任一的主题,并且进一步包括图形处理器;和并行分派模块;其中,搜索局部最大单元包括给每个块分派待由图形处理器执行的一个搜索任务;合并质心包括给每个块分派待由图形处理器执行的一个合并任务;检测每个合并后的质心周围的簇边界包括给每个合并后的质心分派待由图形处理器执行的一个检测任务;其中,所述并行分派模块用于使用所述图形处理器的多个执行单元来(i)并行执行所述搜索任务,(ii)并行执行所述合并任务以及(iii)并行执行所述检测任务。
示例14包括示例1-13中任一的主题,并且其中,所述质心检测模块使用所述图形处理器的单指令多数据指令来执行以下中的至少一个:搜索局部最大单元、合并质心或检测簇边界。
示例15包括一种用于触摸点追踪的计算装置,所述计算装置包括触摸屏;输入帧模块,用于(i)从触摸屏接收先前的输入帧,所述先前的输入帧定义了识别先前被追踪的多个触摸点的多个单元,以及(ii)从触摸屏接收当前输入帧,所述当前输入帧定义了多个单元并识别多个当前触摸点;以及触摸点追踪模块,用于预测所述在先前的输入帧中的、先前被追踪的多个触摸点中的每一个的位置;向具有在先前被追踪的触摸点的预测的位置的追踪距离阈值内的当前位置的当前触摸点分配先前被追踪的触摸点的识别符;移除分配给当前触摸点的重复识别符;向以下这样的当前触摸点分配所述先前被追踪的触摸点的每个未分配的识别符:(i)到在所述追踪距离阈值内的所述先前被追踪的触摸点的最靠近的当前触摸点,和(ii)先前还未被分配所述先前被追踪的触摸点的识别符的当前触摸点;以及向每个未被分配的当前触摸点分配独特的识别符。
示例16包括示例15的主题,并且其中,预测所述先前被追踪的多个触摸点中每一个的位置包括以下中的一个:(i)确定在先前的输入帧中所述先前被追踪的多个触摸点中每一个的位置,或者(ii)确定所述先前被追踪的多个触摸点中每一个的速度并根据所述速度预测所述位置。
示例17包括示例15和16中任一的主题,并且其中,向当前触摸点分配先前被追踪的触摸点的识别符包括取回所述输入帧中位于先前被追踪的触摸点的预测的位置的追踪距离阈值内的所有当前触摸点;识别取回的当前触摸点中到预测的位置的最靠近的当前触摸点;取回具有在所述最靠近的当前触摸点的追踪距离阈值内的预测的位置的所有先前被追踪的触摸点;识别所取回的先前被追踪的触摸点中到所述最靠近的当前触摸点的最靠近的先前被追踪的触摸点;并且向所述最靠近的当前触摸点分配最靠近的先前被追踪的触摸点的识别符。
示例18包括示例15-17中任一的主题,并且其中,移除分配给当前触摸点的重复识别符包括取回所述输入帧中位于先前被追踪的触摸点的预测的位置的追踪距离阈值内的所有当前触摸点;确定所取回的当前触摸点中多于一个的当前触摸点是否具有与先前被追踪的触摸点的识别符相匹配的识别符;并且响应于确定所取回的当前触摸点中有一个以上具有与先前被追踪的触摸点的识别符相匹配的识别符,识别所取回的当前触摸点中具有以下特征的最靠近的当前触摸点:(i)最靠近先前被追踪的触摸点的位置,和(ii)与先前被追踪的触摸点的识别符相匹配的识别符;保留所述最靠近的当前触摸点的识别符;并移除所取回的当前触摸点中具有与先前被追踪的触摸点的识别符相匹配的识别符的其它当前触摸点的识别符。
示例19包括示例15-18中任一的主题,并且其中,所述当前输入帧包括格式化为由计算装置的图形处理器识别的图像数据的当前输入帧。
示例20包括示例15-19中任一的主题,并且其中,所述由图形处理器识别的图像数据包括32位浮点二维平面格式。
示例21包括示例15-20中任一的主题,并且其中,所述追踪距离阈值包括当前输入帧的7个输入单元。
示例22包括示例15-21中任一的主题,并且进一步包括图形处理器和并行分派模块,其中分配先前被追踪的触摸点的识别符包括给每个先前被追踪的触摸点分配待由所述图形处理器执行的一个分配任务;移除重复的识别符包括向每个先前被追踪的触摸点分配待由所述图形处理器执行的一个移除任务;分配每个未使用的先前被追踪的触摸点的识别符包括向每个先前被追踪的触摸点分配待由所述图形处理器执行的一个未使用的识别符分配任务;以及向每个未被分配的当前触摸点分配独特的识别符包括将当前输入帧的单元分组成多个块;给每个块分配待由所述图形处理器执行的一个独特的识别符分配任务;以及使用所述图形处理器的记分板来设置块之间的数据相关性;其中,所述并行分派模块用于使用所述图形处理器的多个执行单元以(i)并行执行分配任务,(ii)并行执行移除任务,(ⅲ)并行执行未使用的识别符分配任务,以及(iv)并行执行独特的识别符分配任务。
示例23包括示例15-22中任一的主题,并且其中,所述触摸点追踪模块使用所述图形处理器的单指令多数据指令执行以下中的至少一个:分配所述先前被追踪的触摸点的识别符,移除重复的识别符,分配每个未被分配的识别符,或向每个未被分配的当前触摸点分配所述独特的识别符。
示例24包括一种用于在计算装置上检测触摸点质心的方法,所述方法包括在所述计算装置上从所述计算装置的触摸屏接收输入帧,所述输入帧定义多个单元,每个单元均具有触摸数据值;在所述计算装置上,将所述输入帧的单元分组为多个块;在所述计算装置上,在所述多个块中的每个内搜索局部最大单元,所述局部最大单元具有与信号阈值具有预先定义的关系的触摸数据值;在所述计算装置上,合并位于彼此的触摸距离阈值内的质心;并在所述计算装置上,检测合并后的质心中的每个周围的簇边界,每个簇边界包括所述输入帧的至少一个单元。
示例25包括示例24的主题,并且其中,分组所述单元包括:将16个连续单元分组成一4个单元的正方形块,或将9个连续单元分组成一3个单元的正方形块。
示例26包括示例24和25中任一的主题,并且其中,搜索局部最大单元包括搜索具有大于或等于所述信号阈值的触摸数据值的局部最大单元。
示例27包括示例24-26中任一的主题,并且其中,合并质心包括按竖直条遍历所述块并合并在垂直地分开了小于所述触摸距离阈值的邻近块中的质心;按水平条遍历所述块并合并在水平地分开了小于所述触摸距离阈值的邻近块中的质心;以及按对角相邻的对来遍历所述块并合并在对角地分开了小于所述触摸距离阈值的邻近块中的质心。
示例28包括示例24-27中任一的主题,并且其中,合并邻近块中的质心包括识别分开了小于所述触摸距离阈值的一对质心中的第一质心和第二质心,其中所述第一质心包括比所述第二质心的第二触摸数据值大的第一触摸数据值;以及从所述第二质心移除作为质心的标识。
示例29包括示例24-28中任一的主题,并且其中,合并质心包括合并在遍历方向上分开了小于两个单元的邻近块中的质心。
示例30包括示例24-29中任一的主题,并且其中,按竖直条遍历所述块包括使用计算装置的图形处理器给每个块分派一个任务,其中每个任务包括合并所述块内位于与所述邻近块中的另一质心在所述触摸距离阈值内的质心;并使用所述图形处理器的记分板来设置所述任务之间的数据相关性以便按竖直条遍历所述块;按水平条遍历所述块包括使用所述图形处理器给每个块分派一个任务,其中每个任务包括合并所述块内位于与所述邻近块中的另一质心在所述触摸距离阈值内的质心;并使用所述图形处理器的所述记分板来设置所述任务之间的数据相关性以便按水平条遍历所述块;以及按对角相邻的对来遍历所述块包括使用所述图形处理器给每四个块的正方形组分派一个任务,其中每个任务包括合并块的正方形组内位于与邻近块中的另一质心在所述触摸距离阈值内的质心;并使用所述图形处理器的所述记分板来设置所述任务之间的数据相关性以便按对角相邻的对来遍历所述块。
示例31包括示例24-30中任一的主题,并且其中,检测合并后的质心中的每个周围的所述簇边界包括从所述输入帧加载针对围绕所述质心的单元的数据;将包括小于所述信号阈值的触摸数据值的单元归零;定义包括在所述簇边界周围的所述输入帧的单元的输入窗口;复制簇的边缘单元来构建具有与所述输入窗口的大小相等的大小的比较窗口;从所述比较窗口中相对应的复制的边缘单元的触摸数据值中减去所述输入窗口中每个边缘单元的触摸数据值,来确定多个边缘单元差值;响应于确定没有所述边缘单元差值小于零,增大所述比较窗口的大小;响应于确定所述边缘单元差值中的任意一个小于零,对所述输入窗口中有效单元的数量进行计数,每个有效单元具有不小于零的相对应的边缘单元差值。
示例32包括示例24-31中任一的主题,并且其中,所述加载输入帧数据包括从围绕所述质心的16×16正方形单元中加载数据。
示例33包括示例24-32中任一的主题,并且其中,减去每个边缘单元的触摸数据值包括将输入窗口的边缘打包成第一向量;将比较窗口的边缘打包成第二向量;使用图形处理器的单指令多数据指令从所述第二向量减去所述第一向量。
示例34包括示例24-33中任一的主题,并且其中,所述对有效单元的数量进行计数包括使用图形处理器的单指令多数据指令对所述有效单元的数量进行计数。
示例35包括示例24-34中任一的主题,并且其中,检测合并后的质心中的每个周围的所述簇边界包括从所述输入帧加载针对围绕所述质心的单元的数据;将包括小于所述信号阈值的触摸数据值的单元归零;计算第一窗口内的边缘单元的第一最大值;计算围绕所述质心的所述输入帧的第二窗口内的边缘单元的和,所述第二窗口围绕所述第一窗口;计算所述第二窗口内的边缘单元的第二最大值;确定所述和是否小于所述第二窗口内的边缘单元的数量与所述信号阈值的乘积;确定所述第二最大值是否大于所述第一最大值;响应于确定所述和不小于所述第二窗口内的边缘单元的数量与所述信号阈值的乘积以及确定所述第二最大值不大于所述第一最大值,增大所述第一窗口和所述第二窗口的大小;响应于确定所述和小于所述第二窗口内的边缘单元的数量与所述信号阈值的乘积或者确定所述第二最大值大于所述第一最大值,对所述第一窗口中有效单元的数量进行计数。
示例36包括示例24-35中任一的主题,并且其中,搜索所述局部最大单元包括给每个块分配待由所述计算装置的图形处理器执行的一个搜索任务;并使用所述图形处理器的多个执行单元并行执行所述搜索任务;合并所述质心包括给每个块分配待由所述图形处理器执行的一个合并任务;使用所述图形处理器的多个执行单元并行执行所述合并任务;检测合并后的质心中的每个周围的所述簇边界包括给每个合并后的质心分配待由所述图形处理器执行的一个检测任务;并使用所述图形处理器的多个执行单元并行执行所述检测任务。
示例37包括示例24-36中任一的主题,并进一步包括使用所述计算装置的所述图形处理器的单指令多数据指令来执行以下中的至少一个:搜索所述局部最大单元、合并所述质心、或检测所述簇边界。
示例38包括一种用于触摸点追踪的方法,所述方法包括在计算装置上预测在从所述计算装置的触摸屏接收到的先前的输入帧中识别的多个先前被追踪的触摸点中的每个的位置,所述先前的输入帧定义多个单元;在所述计算装置上,从所述触摸屏接收当前输入帧,所述当前输入帧定义多个单元并且识别多个当前触摸点;在所述计算装置上,向具有先前被追踪的触摸点的预测的位置的追踪距离阈值内的当前位置的当前触摸点分配所述先前被追踪的触摸点的识别符;在所述计算装置上,移除分配给所述当前触摸点的重复的识别符;在所述计算装置上,向以下这样的当前触摸点分配所述先前被追踪的触摸点的每个未分配的识别符:(i)到在所述追踪距离阈值内的所述先前被追踪的触摸点的最靠近的当前触摸点,和(ii)先前还未被分配所述先前被追踪的触摸点的识别符的当前触摸点;并在所述计算装置上,向每个未被分配的当前触摸点分配独特的识别符。
示例39包括示例38的主题,并且其中,预测所述多个先前被追踪的触摸点中每个的位置包括以下中的一个:(i)确定所述多个先前被追踪的触摸点中每个在所述先前的输入帧中的位置,或者(ii)确定所述多个先前被追踪的触摸点中每个的速度并根据所述速度来预测所述位置。
示例40包括示例38和39中任一的主题,并且其中,向所述当前触摸点分配所述先前被追踪的触摸点的识别符包括取回所述输入帧中位于所述先前被追踪的触摸点的预测的位置的所述追踪距离阈值内的所有当前触摸点;识别所取回的当前触摸点中到所述预测的位置的最靠近的当前触摸点;取回具有在所述最靠近的当前触摸点的所述追踪距离阈值内的预测的位置的所有先前被追踪的触摸点;识别所取回的先前被追踪的触摸点中到所述最靠近的当前触摸点的最靠近的先前被追踪的触摸点;以及向所述最靠近的当前触摸点分配所述最靠近的先前被追踪的触摸点的识别符。
示例41包括示例38-40中任一的主题,并且其中,移除被分配给所述当前触摸点的所述重复的识别符包括取回所述输入帧中位于所述先前被追踪的触摸点的预测的位置的所述追踪距离阈值内的所有当前触摸点;确定所取回的当前触摸点中多于一个的当前触摸点是否具有与所述先前被追踪的触摸点的识别符相匹配的识别符;响应于确定所述所取回的当前触摸点中多于一个的当前触摸点具有与所述先前被追踪的触摸点的识别符相匹配的识别符识别所述所取回的当前触摸点中具有以下特征的最靠近的当前触摸点:(i)最靠近所述先前被追踪的触摸点的位置,和(ii)与所述先前被追踪的触摸点的识别符相匹配的识别符;保留所述最靠近的当前触摸点的识别符;并移除所述所取回的当前触摸点中具有与所述先前被追踪的触摸点的识别符相匹配的识别符的其它当前触摸点的识别符。
示例42包括示例38-41中任一的主题,并且其中,接收当前输入帧包括接收被格式化为由所述计算装置的图形处理器识别的图像数据的当前输入帧。
示例43包括示例38-42中任一的主题,并且其中,接收被格式化为图像数据的当前输入帧包括接收32位浮点二维平面格式的当前输入帧。
示例44包括示例38-43中任一的主题,并且其中,所述追踪距离阈值包括当前输入帧的7个输入单元。
示例45包括示例38-44中任一的主题,并且其中,分配所述先前被追踪的触摸点的识别符包括给每个先前被追踪的触摸点分配待由所述计算装置的所述图形处理器执行的一个分配任务;并使用所述图形处理器的多个执行单元并行执行所述分配任务;移除所述重复的识别符包括给每个先前被追踪的触摸点分配待由所述图形处理器执行的一个移除任务;并使用所述图形处理器的多个执行单元并行执行所述移除任务;分配每个未使用的先前被追踪的触摸点的识别符包括给每个先前被追踪的触摸点分配待由所述图形处理器执行的一个分配任务;并使用所述图形处理器的多个执行单元并行执行所述分配任务;向每个未被分配的当前触摸点分配独特的识别符包括将所述当前输入帧的单元分组成多个块,给每个块分配待由所述图形处理器执行的一个分配任务;使用所述图形处理器的记分板来设置块之间的数据相关性;并使用所述图形处理器的多个执行单元并行执行所述分配任务。
示例46包括示例38-45中任一的主题,并进一步包括使用所述图形处理器的单指令多数据指令执行以下中的至少一个:分配所述先前被追踪的触摸点的识别符,移除重复的识别符,分配每个未被分配的识别符,或向每个未被分配的当前触摸点分配所述独特的识别符。
示例47包括一种计算装置,其包括处理器;其上存储有多个指令的存储器,当所述指令被处理器执行时使得所述计算装置执行示例24-46中任一的方法。
示例48包括一种或多种机器可读存储介质,包括存储在其上的多个指令,响应于所述指令被执行使得计算装置执行示例24-46中任一的方法。
示例48包括一种用于触摸点质心检测的计算装置,所述计算装置包括用于执行示例24-46中任一的方法的单元。
Claims (25)
1.一种用于触摸点质心检测的计算装置,所述计算装置包括:
触摸屏;
输入帧模块,其用于从所述触摸屏接收输入帧,所述输入帧定义多个单元,每个单元具有触摸数据值;以及
质心检测模块,其用于:
将所述输入帧的单元分组为多个块;
在所述多个块中的每个内搜索局部最大单元,所述局部最大单元具有与信号阈值具有预先定义的关系的触摸数据值;
将所述局部最大单元中的每个识别为质心;
合并位于彼此的触摸距离阈值内的质心;以及
检测在合并后的质心中的每个周围的簇边界,每个簇边界包括所述输入帧的至少一个单元。
2.如权利要求1所述的计算装置,其中,合并所述质心包括:
按竖直条遍历所述块并合并在垂直地分开了小于所述触摸距离阈值的邻近块中的质心;
按水平条遍历所述块并合并在水平地分开了小于所述触摸距离阈值的邻近块中的质心;以及
按对角相邻的对来遍历所述块并合并在对角地分开了小于所述触摸距离阈值的邻近块中的质心。
3.如权利要求2所述的计算装置,进一步包括图形处理器,其中:
按竖直条遍历所述块包括:
使用所述图形处理器给每个块分派一个任务,其中每个任务包括合并所述块内位于与所述邻近块中的另一质心在所述触摸距离阈值内的质心;以及
使用所述图形处理器的记分板来设置所述任务之间的数据相关性以便按竖直条遍历所述块;
按水平条遍历所述块包括:
使用所述图形处理器给每个块分派一个任务,其中每个任务包括合并所述块内位于与所述邻近块中的另一质心在所述触摸距离阈值内的质心;以及
使用所述图形处理器的所述记分板来设置所述任务之间的数据相关性以便按水平条遍历所述块;以及
按对角相邻的对来遍历所述块包括:
使用所述图形处理器给每四个块的正方形组分派一个任务,其中每个任务包括合并块的正方形组内位于与邻近块中的另一质心在所述触摸距离阈值内的质心;以及
使用所述图形处理器的所述记分板来设置所述任务之间的数据相关性以便按对角相邻的对来遍历所述块。
4.如权利要求1所述的计算装置,其中,检测合并后的质心中的每个周围的所述簇边界包括:
从所述输入帧加载针对围绕所述质心的单元的数据;
将包括小于所述信号阈值的触摸数据值的单元归零;
定义包括在所述簇边界周围的所述输入帧的单元的输入窗口;
复制簇的边缘单元来构建具有与所述输入窗口的大小相等的大小的比较窗口;
从所述比较窗口中相对应的复制的边缘单元的触摸数据值中减去所述输入窗口中每个边缘单元的触摸数据值,来确定多个边缘单元差值;
响应于确定没有所述边缘单元差值小于零,增大所述比较窗口的大小;以及
响应于确定所述边缘单元差值中的任意一个小于零,对所述输入窗口中有效单元的数量进行计数,每个有效单元具有不小于零的相对应的边缘单元差值。
5.如权利要求1所述的计算装置,其中,检测合并后的质心中的每个周围的所述簇边界包括:
从所述输入帧加载针对围绕所述质心的单元的数据;
将包括小于所述信号阈值的触摸数据值的单元归零;
计算第一窗口内的边缘单元的第一最大值;
计算围绕所述质心的所述输入帧的第二窗口内的边缘单元的和,所述第二窗口围绕所述第一窗口;
计算所述第二窗口内的边缘单元的第二最大值;
确定所述和是否小于所述第二窗口内的边缘单元的数量与所述信号阈值的乘积;
确定所述第二最大值是否大于所述第一最大值;
响应于确定所述和不小于所述第二窗口内的边缘单元的数量与所述信号阈值的乘积以及确定所述第二最大值不大于所述第一最大值,增大所述第一窗口和所述第二窗口的大小;以及
响应于确定所述和小于所述第二窗口内的边缘单元的数量与所述信号阈值的乘积或者确定所述第二最大值大于所述第一最大值,对所述第一窗口中有效单元的数量进行计数。
6.如权利要求1-5中的任意一项所述的计算装置,进一步包括:
图形处理器;以及
并行分派模块;
其中,
搜索所述局部最大单元包括给每个块分配待由所述图形处理器执行的一个搜索任务;
合并所述质心包括给每个块分配待由所述图形处理器执行的一个合并任务;
检测合并后的质心中的每个周围的所述簇边界包括给每个合并后的质心分配待由所述图形处理器执行的一个检测任务;
其中,所述并行分派模块用于使用所述图形处理器的多个执行单元以(i)并行执行所述搜索任务,(ⅱ)并行执行所述合并任务以及(iii)并行执行所述检测任务。
7.如权利要求6所述的计算装置,其中,所述质心检测模块用于使用所述图形处理器的单指令多数据指令来执行以下中的至少一个:搜索所述局部最大单元、合并质心、或检测所述簇边界。
8.一种用于触摸点追踪的计算装置,所述计算装置包括:
触摸屏;
输入帧模块,其用于(i)从所述触摸屏接收先前的输入帧,所述先前的输入帧定义了识别先前被追踪的多个触摸点的多个单元,以及(ii)从所述触摸屏接收当前输入帧,所述当前输入帧定义了多个单元并识别多个当前触摸点;以及
触摸点追踪模块,用于:
预测在所述先前的输入帧中识别的所述先前被追踪的多个触摸点中的每个的位置;
向具有在先前被追踪的触摸点的预测的位置的追踪距离阈值内的当前位置的当前触摸点分配所述先前被追踪的触摸点的识别符;
移除分配给所述当前触摸点的重复的识别符;
向以下这样的当前触摸点分配所述先前被追踪的触摸点的每个未分配的识别符:(i)到在所述追踪距离阈值内的所述先前被追踪的触摸点的最靠近的当前触摸点,和(ii)先前还未被分配所述先前被追踪的触摸点的识别符的当前触摸点;以及
向每个未被分配的当前触摸点分配独特的识别符。
9.如权利要求8所述的计算装置,其中,向所述当前触摸点分配所述先前被追踪的触摸点的识别符包括:
取回所述输入帧中位于所述先前被追踪的触摸点的预测的位置的所述追踪距离阈值内的所有当前触摸点;
识别所取回的当前触摸点中到所述预测的位置的最靠近的当前触摸点;
取回具有在所述最靠近的当前触摸点的所述追踪距离阈值内的预测的位置的所有先前被追踪的触摸点;
识别所取回的先前被追踪的触摸点中到所述最靠近的当前触摸点的最靠近的先前被追踪的触摸点;以及
向所述最靠近的当前触摸点分配所述最靠近的先前被追踪的触摸点的识别符。
10.如权利要求8所述的计算装置,其中,移除分配给所述当前触摸点的所述重复的识别符包括:
取回所述输入帧中位于所述先前被追踪的触摸点的预测的位置的所述追踪距离阈值内的所有当前触摸点;
确定所取回的当前触摸点中多于一个的当前触摸点是否具有与所述先前被追踪的触摸点的识别符相匹配的识别符;以及
响应于确定所述所取回的当前触摸点中多于一个的当前触摸点具有与所述先前被追踪的触摸点的识别符相匹配的识别符:
识别所述所取回的当前触摸点中具有以下特征的最靠近的当前触摸点:(i)最靠近所述先前被追踪的触摸点的位置,和(ii)与所述先前被追踪的触摸点的识别符相匹配的识别符;
保留所述最靠近的当前触摸点的识别符;并且
移除所述所取回的当前触摸点中具有与所述先前被追踪的触摸点的识别符相匹配的识别符的其它当前触摸点的识别符。
11.如权利要求8-10中的任意一项所述的计算装置,进一步包括图形处理器和并行分派模块,其中:
分配所述先前被追踪的触摸点的识别符包括给每个先前被追踪的触摸点分配待由所述图形处理器执行的一个分配任务;
移除所述重复的识别符包括给每个先前被追踪的触摸点分配待由所述图形处理器执行的一个移除任务;
分配每个未使用的先前被追踪的触摸点的识别符包括给每个先前被追踪的触摸点分配待由所述图形处理器执行的一个未使用的识别符分配任务;以及
向每个未被分配的当前触摸点分配独特的识别符包括:
将所述当前输入帧的单元分组成多个块;
给每个块分配待由所述图形处理器执行的一个独特的识别符分配任务;以及
使用所述图形处理器的记分板来设置所述块之间的数据相关性;
其中,所述并行分派模块用于使用所述图形处理器的多个执行单元来(i)并行执行所述分配任务,(ii)并行执行所述移除任务,(iii)并行执行所述未使用的识别符分配任务,以及(iv)并行执行所述独特的识别符分配任务。
12.如权利要求11所述的计算装置,其中,所述触摸点追踪模块用于使用所述图形处理器的单指令多数据指令执行以下中的至少一个:分配所述先前被追踪的触摸点的识别符,移除重复的识别符,分配每个未被分配的识别符,或向每个未被分配的当前触摸点分配所述独特的识别符。
13.一种用于在计算装置上检测触摸点质心的方法,所述方法包括:
在所述计算装置上从所述计算装置的触摸屏接收输入帧,所述输入帧定义多个单元,每个单元均具有触摸数据值;
在所述计算装置上,将所述输入帧的单元分组为多个块;
在所述计算装置上,在所述多个块中的每个内搜索局部最大单元,所述局部最大单元具有与信号阈值具有预先定义的关系的触摸数据值;
在所述计算装置上,将所述局部最大单元中的每个识别为质心;
在所述计算装置上,合并位于彼此的触摸距离阈值内的质心;以及
在所述计算装置上,检测合并后的质心中的每个周围的簇边界,每个簇边界包括所述输入帧的至少一个单元。
14.如权利要求13所述的方法,其中,合并所述质心包括:
按竖直条遍历所述块,其包括:
使用所述计算装置的图形处理器给每个块分派一个任务,其中每个任务包括合并所述块内位于与邻近块中的另一质心在所述触摸距离阈值内的质心;并且
使用所述图形处理器的记分板来设置所述任务之间的数据相关性以便按竖直条遍历所述块;
按水平条遍历所述块,其包括:
使用所述图形处理器给每个块分派一个任务,其中每个任务包括合并所述块内位于与所述邻近块中的另一质心在所述触摸距离阈值内的质心;以及
使用所述图形处理器的所述记分板来设置所述任务之间的数据相关性以便按水平条遍历所述块;以及
按对角相邻的对来遍历所述块包括:
使用所述图形处理器给每四个块的正方形组分派一个任务,其中每个任务包括合并块的正方形组内位于与所述邻近块中的另一质心在所述触摸距离阈值内的质心;以及
使用所述图形处理器的所述记分板来设置所述任务之间的数据相关性以便按对角相邻的对来遍历所述块。
15.如权利要求13所述的方法,其中,检测合并后的质心中的每个周围的所述簇边界包括:
从所述输入帧加载针对围绕所述质心的单元的数据;
将包括小于所述信号阈值的触摸数据值的单元归零;
定义包括在所述簇边界周围的所述输入帧的单元的输入窗口;
复制簇的边缘单元来构建具有与所述输入窗口的大小相等的大小的比较窗口;
从所述比较窗口中相对应的复制的边缘单元的触摸数据值中减去所述输入窗口中每个边缘单元的触摸数据值,来确定多个边缘单元差值;
响应于确定没有所述边缘单元差值小于零,增大所述比较窗口的大小;以及
响应于确定所述边缘单元差值中的任意一个小于零,对所述输入窗口中有效单元的数量进行计数,每个有效单元具有不小于零的相对应的边缘单元差值。
16.如权利要求13所述的方法,其中,检测合并后的质心中的每个周围的所述簇边界包括:
从所述输入帧加载针对围绕所述质心的单元的数据;
将包括小于所述信号阈值的触摸数据值的单元归零;
计算第一窗口内的边缘单元的第一最大值;
计算围绕所述质心的所述输入帧的第二窗口内的边缘单元的和,所述第二窗口围绕所述第一窗口;
计算所述第二窗口内的边缘单元的第二最大值;
确定所述和是否小于所述第二窗口内的边缘单元的数量与所述信号阈值的乘积;
确定所述第二最大值是否大于所述第一最大值;
响应于确定所述和不小于所述第二窗口内的边缘单元的数量与所述信号阈值的乘积以及确定所述第二最大值不大于所述第一最大值,增大所述第一窗口和所述第二窗口的大小;以及
响应于确定所述和小于所述第二窗口内的边缘单元的数量与所述信号阈值的乘积或者确定所述第二最大值大于所述第一最大值,对所述第一窗口中有效单元的数量进行计数。
17.如权利要求13所述的方法,其中:
搜索所述局部最大单元包括:
给每个块分配待由所述计算装置的图形处理器执行的一个搜索任务;以及
使用所述图形处理器的多个执行单元并行执行所述搜索任务;
合并所述质心包括:
给每个块分配待由所述图形处理器执行的一个合并任务;以及
使用所述图形处理器的多个执行单元并行执行所述合并任务;
检测合并后的质心中的每个周围的所述簇边界包括:
给每个合并后的质心分配待由所述图形处理器执行的一个检测任务;以及
使用所述图形处理器的多个执行单元并行执行所述检测任务。
18.如权利要求17所述的方法,进一步包括使用所述计算装置的所述图形处理器的单指令多数据指令来执行以下中的至少一个:搜索所述局部最大单元、合并所述质心、或检测所述簇边界。
19.一种用于触摸点追踪的方法,所述方法包括:
在计算装置上预测在从所述计算装置的触摸屏接收到的先前的输入帧中识别的多个先前被追踪的触摸点中的每个的位置,所述先前的输入帧定义多个单元;
在所述计算装置上,从所述触摸屏接收当前输入帧,所述当前输入帧定义多个单元并且识别多个当前触摸点;
在所述计算装置上,向具有先前被追踪的触摸点的预测的位置的追踪距离阈值内的当前位置的当前触摸点分配所述先前被追踪的触摸点的识别符;
在所述计算装置上,移除分配给所述当前触摸点的重复的识别符;
在所述计算装置上,向以下这样的当前触摸点分配所述先前被追踪的触摸点的每个未分配的识别符:(i)到在所述追踪距离阈值内的所述先前被追踪的触摸点的最靠近的当前触摸点,和(ii)先前还未被分配所述先前被追踪的触摸点的识别符的当前触摸点;以及
在所述计算装置上,向每个未被分配的当前触摸点分配独特的识别符。
20.如权利要求19所述的方法,其中,向所述当前触摸点分配所述先前被追踪的触摸点的识别符包括:
取回所述输入帧中位于所述先前被追踪的触摸点的预测的位置的所述追踪距离阈值内的所有当前触摸点;
识别所取回的当前触摸点中到所述预测的位置的最靠近的当前触摸点;
取回具有在所述最靠近的当前触摸点的所述追踪距离阈值内的预测的位置的所有先前被追踪的触摸点;
识别所取回的先前被追踪的触摸点中到所述最靠近的当前触摸点的最靠近的先前被追踪的触摸点;以及
向所述最靠近的当前触摸点分配所述最靠近的先前被追踪的触摸点的识别符。
21.如权利要求19所述的方法,其中,移除被分配给所述当前触摸点的所述重复的识别符包括:
取回所述输入帧中位于所述先前被追踪的触摸点的预测的位置的所述追踪距离阈值内的所有当前触摸点;
确定所取回的当前触摸点中多于一个的当前触摸点是否具有与所述先前被追踪的触摸点的识别符相匹配的识别符;以及
响应于确定所述所取回的当前触摸点中多于一个的当前触摸点具有与所述先前被追踪的触摸点的识别符相匹配的识别符:
识别所述所取回的当前触摸点中具有以下特征的最靠近的当前触摸点:(i)最靠近所述先前被追踪的触摸点的位置,和(ii)与所述先前被追踪的触摸点的识别符相匹配的识别符;
保留所述最靠近的当前触摸点的识别符;并且
移除所述所取回的当前触摸点中具有与所述先前被追踪的触摸点的识别符相匹配的识别符的其它当前触摸点的识别符。
22.如权利要求19所述的方法,其中:
分配所述先前被追踪的触摸点的识别符包括:
给每个先前被追踪的触摸点分配待由所述计算装置的所述图形处理器执行的一个分配任务;以及
使用所述图形处理器的多个执行单元并行执行所述分配任务;
移除所述重复的识别符包括:
给每个先前被追踪的触摸点分配待由所述图形处理器执行的一个移除任务;以及
使用所述图形处理器的多个执行单元并行执行所述移除任务;
分配每个未使用的先前被追踪的触摸点的识别符包括:
给每个先前被追踪的触摸点分配待由所述图形处理器执行的一个分配任务;以及
使用所述图形处理器的多个执行单元并行执行所述分配任务;并且
向每个未被分配的当前触摸点分配独特的识别符包括:
将所述当前输入帧的单元分组成多个块;
给每个块分配待由所述图形处理器执行的一个分配任务;以及
使用所述图形处理器的记分板来设置块之间的数据相关性;并且
使用所述图形处理器的多个执行单元并行执行所述分配任务。
23.如权利要求22所述的方法,进一步包括使用所述图形处理器的单指令多数据指令执行以下中的至少一个:分配所述先前被追踪的触摸点的识别符,移除重复的识别符,分配每个未被分配的识别符,或向每个未被分配的当前触摸点分配所述独特的识别符。
24.一种计算装置,包括:
处理器;以及
其上存储有多个指令的存储器,当所述指令被处理器执行时使得所述计算装置执行权利要求13-23中的任意一项所述的方法。
25.一种或多种机器可读存储介质,包括存储在其上的多个指令,响应于所述指令被执行使得计算装置执行权利要求13-23中的任意一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/048435 WO2014209335A1 (en) | 2013-06-28 | 2013-06-28 | Parallel touch point detection using processor graphics |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105247456A true CN105247456A (zh) | 2016-01-13 |
CN105247456B CN105247456B (zh) | 2018-06-26 |
Family
ID=52142469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380076996.8A Active CN105247456B (zh) | 2013-06-28 | 2013-06-28 | 使用图形处理器的并行触摸点检测 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9448663B2 (zh) |
EP (1) | EP3014401A4 (zh) |
JP (1) | JP6099234B2 (zh) |
KR (1) | KR101784758B1 (zh) |
CN (1) | CN105247456B (zh) |
WO (1) | WO2014209335A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912166A (zh) * | 2016-04-15 | 2016-08-31 | 惠州Tcl移动通信有限公司 | 一种移动终端触摸屏检测方法及系统 |
CN105975119A (zh) * | 2016-04-21 | 2016-09-28 | 北京集创北方科技股份有限公司 | 多目标追踪方法、触摸屏控制方法及系统 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9983738B2 (en) | 2013-10-14 | 2018-05-29 | Parade Technologies, Ltd. | Contact detection mode switching in a touchscreen device |
US9213458B2 (en) * | 2013-10-14 | 2015-12-15 | Parade Technologies, Ltd. | Hover position calculation in a touchscreen device |
JP6303575B2 (ja) * | 2014-02-18 | 2018-04-04 | 日本電産リード株式会社 | タッチパネルのタッチ位置検出方法、タッチパネル検査方法、及びタッチパネル検査装置 |
US9778789B2 (en) * | 2014-05-21 | 2017-10-03 | Apple Inc. | Touch rejection |
JP6532128B2 (ja) * | 2015-09-14 | 2019-06-19 | 株式会社東海理化電機製作所 | 操作検出装置 |
US20210166053A1 (en) * | 2016-01-26 | 2021-06-03 | Hewlett Packard Enterprise Development Lp | Merging object detections using graphs |
US10521880B2 (en) * | 2017-04-17 | 2019-12-31 | Intel Corporation | Adaptive compute size per workload |
WO2019039984A1 (en) * | 2017-08-23 | 2019-02-28 | Flatfrog Laboratories Ab | ENHANCED PEN ENHANCEMENT |
JP2023512682A (ja) | 2020-02-10 | 2023-03-28 | フラットフロッグ ラボラトリーズ アーベー | 改良型タッチ検知装置 |
KR20210116936A (ko) * | 2020-03-18 | 2021-09-28 | 주식회사 실리콘웍스 | 터치 감지 장치 및 그 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100315372A1 (en) * | 2009-06-12 | 2010-12-16 | Stmicroelectronics Asia Pacific Pte Ltd. | Touch coordinate calculation for a touch-sensitive interface |
CN102622127A (zh) * | 2011-02-12 | 2012-08-01 | 微软公司 | 基于预测的触摸接触跟踪 |
CN102929458A (zh) * | 2011-08-08 | 2013-02-13 | 新唐科技股份有限公司 | 多点触控检测模块、多点触控检测方法及电脑程序产品 |
CN103098012A (zh) * | 2010-09-15 | 2013-05-08 | 高端硅公司 | 用于检测多点触控设备上任意数量触摸的方法 |
CN103180804A (zh) * | 2010-10-21 | 2013-06-26 | 艾勒博科技股份有限公司 | 输入装置以及其触控位置检测方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7916126B2 (en) * | 2007-06-13 | 2011-03-29 | Apple Inc. | Bottom-up watershed dataflow method and region-specific segmentation based on historic data to identify patches on a touch sensor panel |
US8482536B1 (en) * | 2008-07-23 | 2013-07-09 | Cypress Semiconductor Corporation | Compensation of signal values for a touch sensor |
US20100079385A1 (en) * | 2008-09-29 | 2010-04-01 | Smart Technologies Ulc | Method for calibrating an interactive input system and interactive input system executing the calibration method |
CA2778774A1 (en) * | 2009-10-16 | 2011-04-21 | Rpo Pty Limited | Methods for detecting and tracking touch objects |
US8913018B2 (en) * | 2010-06-21 | 2014-12-16 | N-Trig Ltd. | System and method for finger resolution in touch screens |
US9013441B2 (en) * | 2010-08-24 | 2015-04-21 | Cypress Semiconductor Corporation | Smart scanning for a capacitive sensing array |
GB2485220A (en) * | 2010-11-05 | 2012-05-09 | Promethean Ltd | Tracking touch inputs across a touch sensitive surface |
US9122341B2 (en) * | 2010-11-08 | 2015-09-01 | Microsoft Technology Licensing, Llc | Resolving merged touch contacts |
CN102467284B (zh) * | 2010-11-13 | 2016-05-25 | 宸鸿科技(厦门)有限公司 | 一种多触摸点的真坐标侦测装置及其侦测方法 |
WO2012087308A1 (en) | 2010-12-22 | 2012-06-28 | Intel Corporation | Touch sensor gesture recognition for operation of mobile devices |
CN102890576B (zh) * | 2011-07-22 | 2016-03-02 | 宸鸿科技(厦门)有限公司 | 触控屏触摸轨迹检测方法及检测装置 |
US8674962B2 (en) * | 2011-11-30 | 2014-03-18 | Silicon Integrated Systems Corp. | Touch coordinate calculation method for touch panel |
KR101429923B1 (ko) * | 2011-12-06 | 2014-08-13 | 엘지디스플레이 주식회사 | 터치 영역 라벨링 방법 및 그를 이용한 터치 센서 구동 장치 |
US9213052B2 (en) * | 2012-08-01 | 2015-12-15 | Parade Technologies, Ltd. | Peak detection schemes for touch position detection |
-
2013
- 2013-06-28 EP EP13887631.3A patent/EP3014401A4/en not_active Withdrawn
- 2013-06-28 KR KR1020157033863A patent/KR101784758B1/ko active IP Right Grant
- 2013-06-28 US US14/129,427 patent/US9448663B2/en active Active
- 2013-06-28 CN CN201380076996.8A patent/CN105247456B/zh active Active
- 2013-06-28 WO PCT/US2013/048435 patent/WO2014209335A1/en active Application Filing
- 2013-06-28 JP JP2016521391A patent/JP6099234B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100315372A1 (en) * | 2009-06-12 | 2010-12-16 | Stmicroelectronics Asia Pacific Pte Ltd. | Touch coordinate calculation for a touch-sensitive interface |
CN103098012A (zh) * | 2010-09-15 | 2013-05-08 | 高端硅公司 | 用于检测多点触控设备上任意数量触摸的方法 |
CN103180804A (zh) * | 2010-10-21 | 2013-06-26 | 艾勒博科技股份有限公司 | 输入装置以及其触控位置检测方法 |
CN102622127A (zh) * | 2011-02-12 | 2012-08-01 | 微软公司 | 基于预测的触摸接触跟踪 |
US20120206380A1 (en) * | 2011-02-12 | 2012-08-16 | Microsoft Corporation | Prediction-based touch contact tracking |
CN102929458A (zh) * | 2011-08-08 | 2013-02-13 | 新唐科技股份有限公司 | 多点触控检测模块、多点触控检测方法及电脑程序产品 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912166A (zh) * | 2016-04-15 | 2016-08-31 | 惠州Tcl移动通信有限公司 | 一种移动终端触摸屏检测方法及系统 |
CN105912166B (zh) * | 2016-04-15 | 2019-03-26 | 惠州Tcl移动通信有限公司 | 一种移动终端触摸屏检测方法及系统 |
CN105975119A (zh) * | 2016-04-21 | 2016-09-28 | 北京集创北方科技股份有限公司 | 多目标追踪方法、触摸屏控制方法及系统 |
CN105975119B (zh) * | 2016-04-21 | 2018-11-30 | 北京集创北方科技股份有限公司 | 多目标追踪方法、触摸屏控制方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20160098148A1 (en) | 2016-04-07 |
WO2014209335A1 (en) | 2014-12-31 |
KR101784758B1 (ko) | 2017-10-12 |
US9448663B2 (en) | 2016-09-20 |
CN105247456B (zh) | 2018-06-26 |
KR20160003166A (ko) | 2016-01-08 |
EP3014401A1 (en) | 2016-05-04 |
EP3014401A4 (en) | 2017-02-08 |
JP6099234B2 (ja) | 2017-03-22 |
JP2016522522A (ja) | 2016-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105247456A (zh) | 使用图形处理器的并行触摸点检测 | |
CN108829610B (zh) | 一种神经网络前向计算过程中的内存管理方法及设备 | |
US8793669B2 (en) | Pattern extraction from executable code in message passing environments | |
JP4727614B2 (ja) | 画像処理装置、制御プログラム、コンピュータ読み取り可能な記録媒体、電子機器及び画像処理装置の制御方法 | |
WO2014014486A1 (en) | Pattern matching process scheduler in message passing environment | |
JP2008250949A5 (zh) | ||
CN110597414B (zh) | 触摸屏的触控检测方法及相关设备 | |
WO2014147450A1 (en) | A haar calculation system, an image classification system, associated methods and associated computer program products | |
JP2014191621A (ja) | 情報処理装置およびメモリアクセス制御方法 | |
CN110580506A (zh) | 基于密度的聚类计算方法、装置、设备和存储介质 | |
CN109298809A (zh) | 一种触控动作识别方法、装置及终端设备 | |
CN105892895A (zh) | 多指滑动手势的识别方法、装置及终端设备 | |
CN111949145A (zh) | 智能笔图像处理方法、装置及电子设备 | |
Sugano et al. | Optimized parallel implementation of pedestrian tracking using HOG features on GPU | |
US20120293432A1 (en) | Method for touch device to transmit coordinates, method for touch device to transmit displacement vector and computer-readable medium | |
Mohamed et al. | Multi-core (CPU and GPU) for permutation-based indexing | |
US20140292644A1 (en) | Image processing device and method | |
CN104461174A (zh) | 光学触控系统及光学触控控制方法 | |
CN110895679A (zh) | 机器视觉图像数据处理方法和装置 | |
CN108491156A (zh) | 指纹导航方法及装置 | |
CN109032432A (zh) | 一种书写笔种类识别的方法、装置及终端设备 | |
CN115147856B (zh) | 一种表格信息提取的方法及电子设备 | |
JP6160445B2 (ja) | 分析装置、分析方法および分析プログラム | |
CN115587140B (zh) | 基于大数据的电子工程项目数据可视化管理方法及装置 | |
US20150100607A1 (en) | Apparatus and method for data management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |