KR101784758B1 - 프로세서 그래픽을 사용하는 병렬 터치 포인트 검출 - Google Patents
프로세서 그래픽을 사용하는 병렬 터치 포인트 검출 Download PDFInfo
- Publication number
- KR101784758B1 KR101784758B1 KR1020157033863A KR20157033863A KR101784758B1 KR 101784758 B1 KR101784758 B1 KR 101784758B1 KR 1020157033863 A KR1020157033863 A KR 1020157033863A KR 20157033863 A KR20157033863 A KR 20157033863A KR 101784758 B1 KR101784758 B1 KR 101784758B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- touch
- touch point
- window
- cells
- Prior art date
Links
Images
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/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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
- Image Processing (AREA)
Abstract
터치 포인트 검출을 위한 기술은 터치 스크린으로부터 입력 프레임을 수신하고, 터치 포인트 센트로이드 및 클러스터 경계를 식별하고, 터치 포인트를 추적하도록 구성되는 컴퓨팅 디바이스를 포함한다. 컴퓨팅 디바이스는 입력 프레임의 셀을 블록으로 그룹화할 수 있다. 프로세서 그래픽을 사용하여, 컴퓨팅 디바이스는 입력 프레임의 극댓값을 식별하기 위해 블록마다 하나의 스레드를 디스패치하고 터치 거리 임계값 내의 센트로이드를 병합할 수 있다. 컴퓨팅 디바이스는 클러스터 경계를 검출하기 위해 센트로이드마다 하나의 스레드를 디스패치할 수 있다. 컴퓨팅 디바이스는 추적 거리 임계값 내의 터치 포인트에 이전에 추적된 터치 포인트의 식별자를 할당하고, 복제된 식별자를 제거하고, 할당되지 않은 식별자를 가장 가까운 터치 포인트에 할당하기 위해 이전에 식별된 터치 포인트마다 하나의 스레드를 디스패치할 수 있다. 컴퓨팅 디바이스는 고유의 식별자를 각 할당되지 않은 터치 포인트에 할당하기 위해 블록마다 하나의 스레드를 디스패치할 수 있다. 다른 실시형태가 서술 및 청구된다.
Description
많은 현재의 컴퓨팅 디바이스는 사용자로부터의 입력의 기본 모드로서 터치 스크린을 사용한다. 터치 컴퓨팅은 직감적이고 효율적인 사용자 상호작용을 제공하는 능력을 갖는다. 터치 인터페이스를 채용하는 컴퓨팅 디바이스는 전형적으로 터치 스크린에서 많은 동시의 터치 포인트를 검출 및 해석하여 터치 입력 제스처를 인식하고 또한 스크린에서의 사용자의 팜 레스팅(palm resting)과 같은 잘못된 접촉을 거부한다. 자연스러운 사람의 상호작용을 가능하게 하도록, 터치 추적 및 제스처 상호작용은 빠르고 부드러워야 한다.
터치 포인트 식별 및 추적을 위한 전형적인 알고리즘은 사실상 매우 순차적이고, 반복적이고(iterative), 또한/또는 회귀적이다(recursive). 컴퓨팅 디바이스는 센트로이드(centroid)라고 불리는 최고 터치 강도의 위치를 식별하고, 또한 클러스터 경계(cluster boundary)라고 불리는 터치 포인트의 범위를 식별함으로써 터치 포인트를 식별할 수 있다. 컴퓨팅 디바이스는 또한 제스처 인식을 가능하게 하기 위해 시간에 따른 터치 포인트의 움직임을 추적할 수 있다. 예컨대, 터치 포인트 센트로이드 경계 검출을 위한 전형적인 알고리즘은 입력 프레임에서 인접한 셀의 회귀적인 순회(traversal)를 포함할 수 있고, 각 잠재적인 터치 포인트에 대하여 순차적으로 반복될 수 있다. 또한, 터치 포인트 추적을 위한 전형적인 알고리즘은 예측된 터치 포인트 위치 및 검출된 현재의 터치 포인트 위치의 모든 알려진 조합에 걸쳐서 반복될 수 있다. 이들 전형적인 알고리즘은 잘 조정되지 않을 수 있거나 잘 조정되더라도 병렬 실행에 잘 대처할 수 없다.
본 명세서에 서술된 개념은 예시의 형태로 또한 한정하지 않는 형태로 첨부 도면에 도시된다. 도시의 단순성 및 명료성을 위해, 도면에 도시되는 요소는 반드시 일정한 축척으로 그려지지는 않는다. 적절하게 고려되는 경우, 대응하는 또는 유사한 요소를 나타내기 위해 도면 사이에서 참조 부호가 반복되었다.
도 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의 방법의 일부로서 실행될 수 있는 프로세서 그래픽을 사용하여 병렬로 터치 포인트 식별자를 터치 포인트 데이터에 할당하는 부분 방법(sub-method)의 적어도 한 실시형태의 간략화된 흐름도이다.
도 12는 도 10의 방법의 일부로서 실행될 수 있는 프로세서 그래픽을 사용하여 병렬로 복제된 터치 포인트 식별자를 제거하는 부분 방법의 적어도 한 실시형태의 간략화된 흐름도이다.
도 13은 도 10의 방법의 일부로서 실행될 수 있는 프로세서 그래픽을 사용하여 병렬로 사용되지 않는 예측된 터치 포인트 식별자를 할당하는 보조 방법의 적어도 한 실시형태의 간략화된 흐름도이다.
도 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의 방법의 일부로서 실행될 수 있는 프로세서 그래픽을 사용하여 병렬로 터치 포인트 식별자를 터치 포인트 데이터에 할당하는 부분 방법(sub-method)의 적어도 한 실시형태의 간략화된 흐름도이다.
도 12는 도 10의 방법의 일부로서 실행될 수 있는 프로세서 그래픽을 사용하여 병렬로 복제된 터치 포인트 식별자를 제거하는 부분 방법의 적어도 한 실시형태의 간략화된 흐름도이다.
도 13은 도 10의 방법의 일부로서 실행될 수 있는 프로세서 그래픽을 사용하여 병렬로 사용되지 않는 예측된 터치 포인트 식별자를 할당하는 보조 방법의 적어도 한 실시형태의 간략화된 흐름도이다.
본 개시의 개념은 다양한 수정 및 대체 형태에 영향을 받기 쉽지만, 그 특정한 실시형태는 도면에 예로서 나타내어졌고 본 명세서에 상세하게 서술될 것이다. 하지만, 본 개시의 개념을 개시된 특정한 형태로 한정하려는 의도는 없음이 이해되어야 하고, 그와는 반대로, 본 개시 및 첨부한 청구범위와 일치하는 모든 수정, 등가물, 및 대안을 포함하는 것을 의도한다.
명세서에서 "한 실시형태", "실시형태", "예시적인 실시형태" 등에 대한 언급은 서술된 실시형태가 특정한 특성, 구조, 또는 특징을 포함할 수 있음을 나타내지만, 모든 실시형태는 그 특정한 특성, 구조, 또는 특징을 포함할 수 있거나 또는 반드시 포함하는 것은 아닐 수 있다. 또한, 그러한 문구는 반드시 동일한 실시형태를 언급하고 있는 것은 아니다. 또한, 특정한 특성, 구조, 또는 특징이 실시형태와 관련되어 서술될 때, 그것은 명확하게 서술되는지 여부와 관계없이 다른 실시형태와 관련되어 그러한 특성, 구조, 또는 특징을 달성하기 위한 당업자의 지식 내에 있다고 생각된다.
개시된 실시형태는 몇몇의 경우에 하드웨어, 펌웨어, 소프트웨어, 또는 그 임의의 조합으로 구현될 수 있다. 개시된 실시형태는 또한 하나 이상의 프로세서에 의해 판독 및 실행될 수 있는 일시적 또는 비 일시적 머신 판독 가능(예컨대, 컴퓨터 판독 가능) 저장 매체에 의해 보유되거나 또는 저장되는 명령으로서 구현될 수 있다. 머신 판독 가능 저장 매체는 머신에 의해 판독 가능한 형태로 정보를 저장하는 임의의 저장 디바이스, 메커니즘, 또는 다른 물리적 구조(예컨대, 휘발성 또는 비 휘발성 메모리, 미디어 디스크, 또는 다른 미디어 디바이스)로서 구현될 수 있다.
도면에서, 몇몇의 구조적 또는 방법 특성은 특정한 배치 및/또는 순서화(ordering)로 나타내어질 수 있다. 하지만, 그러한 특정한 배치 및/또는 순서화는 요구되지 않을 수 있음이 이해되어야 한다. 오히려, 몇몇의 실시형태에서, 그러한 특성은 예시적인 도면에 나타내어진 것과 상이한 방식 및/또는 순서로 배치될 수 있다. 또한, 특정한 도면에 구조적 또는 방법 특성을 포함시키는 것은, 그러한 특성이 모든 실시형태에서 요구된다는 것을 의미하도록 의도되는 것이 아니고, 몇몇의 실시형태에서는, 포함되지 않을 수 있거나 또는 다른 특성과 조합될 수 있다.
도 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)는 프로세서(120), 메모리(132), 및 컴퓨팅 디바이스(100)의 다른 요소와의 입력/출력 동작을 가능하게 하기 위한 회로 및/또는 요소로서 구현될 수 있는 I/O 서브시스템(130)을 거쳐서 프로세서(120)에 통신 가능하게 연결된다. 예컨대, I/O 서브시스템(130)은 메모리 컨트롤러 허브, 입력/출력 제어 허브, 펌웨어 디바이스, 통신 링크(즉, 점대점(point-to-point) 링크, 버스 링크, 와이어, 케이블, 광 가이드, 인쇄 회로 기판 배선 등) 및/또는 입력/출력 동작을 가능하게 하기 위한 다른 요소 및 서브시스템으로서 구현되거나, 또는 이것들을 포함할 수 있다. 몇몇의 실시형태에서, I/O 서브시스템(130)은 시스템 온 칩(SoC)의 일부를 형성할 수 있고 하나의 집적 회로 칩에서 프로세서(120), 메모리(132), 및 컴퓨팅 디바이스(100)의 다른 요소와 함께 포함될 수 있다.
프로세서(120)는 프로세서 그래픽(124)을 포함한다. 프로세서 그래픽(124)은 3차원 그래픽, 2차원 그래픽, 및 다양한 비디오 포맷의 가속화된 처리 및 렌더링을 제공할 수 있는 그래픽 및 미디어 처리 회로를 포함한다. 프로세서 그래픽(124)은 일반적으로 대량의 병렬 컴퓨팅 리소스에 의해 특징지어지고 복수의 실행 유닛(126)으로서 구현될 수 있다. 몇몇의 실시형태에서, 실행 유닛(126)은 완전히 프로그램 가능한 실행 유닛 또는 기하학 처리(geometry processing), 변환 및 조명(transform and lighting), 래스터화(rasterization), 미디어 디코딩, 미디어 인코딩 등을 위한 고정된 기능의 실행 유닛의 임의의 조합을 포함할 수 있다.
프로세서 그래픽(124)은 범용 컴퓨팅 작업을 행하기 위해 프로세서 코어(들)(122)와 함께 사용될 수 있다. 컴퓨팅 작업은 스레드, 커널, 또는 프로세서 그래픽(124)에 의한 실행을 위해 하나 이상의 프로세서 코어(122)에 의해 디스패치되는 다른 실행 가능한 코드로서 구현될 수 있다. 작업은 프로세서 그래픽(124)의 프로그램 가능한 실행 유닛(126) 및/또는 고정된 기능의 실행 유닛(126)에 의해 병렬로 실행된다. 실행 유닛(126)은 SIMD 감산 및 SIMD 가산 명령과 같은 다수의 단일-명령-다중-데이터(SIMD : single-instruction-multiple-data) 명령을 제공할 수 있다. 몇몇의 실시형태에서, 프로세서 그래픽(124)은 실행을 위한 작업을 디스패치하는 스코어보드(128)와 같은 명령 스케줄러를 포함할 수 있다. 그들 실시형태에서, 프로세서 코어(들)(122)는 작업 사이의 데이터 의존성을 스코어보드(128)에 기록하고, 프로세서 그래픽(124)은 스코어보드(128)를 사용하여 그 기록된 데이터 의존성 및 사용 가능한 실행 리소스에 따라서 작업을 디스패치한다. 프로세서 그래픽(124)을 사용하는 범용 컴퓨팅은 컴퓨트 셰이더, 다이렉트컴퓨트, OpenCL™, CUDA™(컴퓨트 유니파이드 디바이스 아키텍처로도 알려짐) 등과 같은 병렬 프로그래밍 인터페이스에 의해 사용자에게 알려져 있을 수 있다.
몇몇의 실시형태에서, 프로세서 그래픽(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), 및 병렬 디스패치(dispatch) 모듈(218)을 포함한다. 환경(200)의 다양한 모듈 및 부분 환경(sub-environment)은 하드웨어, 펌웨어, 소프트웨어, 또는 그 조합으로서 구현될 수 있다.
입력 프레임 모듈(210)은 터치 스크린(138)으로부터 데이터를 수신하고 일련의 입력 프레임으로서 입력 데이터를 포맷하도록 구성된다. 각 입력 프레임은 각각이 터치 스크린(138)에서의 특정한 위치에서 감지되는 터치 값을 나타내는 터치 데이터 값을 포함하는 입력 셀의 어레이로서 구현될 수 있다. 입력 프레임 모듈(210)은 고해상도 터치 추적을 가능하게 하기 위해 갱신된 입력 프레임을 계속해서 생성한다.
센트로이드 검출 모듈(202)은 센트로이드, 즉, 각 터치 포인트의 중심에 대략 대응하는 터치 스크린(138)에서의 포인트에 대하여 입력 프레임 모듈(210)로부터 수신되는 입력 프레임을 탐색하도록 구성된다. 센트로이드 검출 모듈(202)은 인접한 센트로이드를 하나의 센트로이드에 병합하고, 각 센트로이드를 둘러싸는 입력 셀의 클러스터의 경계를 검출하도록 더 구성된다. 클러스터 경계는 각 터치 포인트의 범위를 나타낸다. 몇몇의 실시형태에서, 그들 기능은 서브모듈에 의해, 예컨대 센트로이드 탐색 모듈(204), 센트로이드 병합 모듈(206), 또는 클러스터 식별 모듈(208)에 의해 행해질 수 있다.
터치 포인트 추적 모듈(212)은 시간에 따라 입력 프레임에 걸쳐서 특정한 터치 포인트를 식별 및 추적하도록 구성된다. 특히, 터치 포인트 추적 모듈(212)은 이전에 추적된 터치 포인트의 위치를 예측하고, 이전에 추적된 터치 포인트로부터 센트로이드 검출 모듈(202)에 의해 현재의 입력 프레임에서 검출된 터치 포인트에 식별자를 할당하도록 구성된다. 터치 포인트 추적 모듈(212)은 또한 이전에 추적되지 않은 현재의 입력 프레임에서 터치 포인트에 고유의 식별자를 할당할 수 있다. 몇몇의 실시형태에서, 터치 포인트 추적 모듈(212)은 입력 프레임 모듈(210)로부터의 미처리(raw) 입력 프레임 데이터를 처리할 수 있다. 몇몇의 실시형태에서, 그들 기능은 서브모듈에 의해, 예컨대 터치 포인트 예측 모듈(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)에 의해 감지되는 터치 포인트 강도를 나타내는 값의 어레이를 포함한다. 예컨대, 예시적인 입력 프레임(402)이 도 4에 도시된다. 입력 프레임(402)은 셀(404)의 정사각형 어레이로서 도시된다. 셀(404)의 각각은 터치 스크린(138)의 영역에서 감지되는 터치 데이터 값을 포함한다. 각 터치 데이터 값은 그 영역에서 터치 스크린(138)에 의해 감지되는 터치 강도, 예컨대, 터치 스크린(138)에 대한 사용자의 손가락의 커패시턴스에 대응한다. 터치 데이터 값은 16비트 정수 값, 또는 터치 스크린(138)에 의해 감지되는 강도 값의 범위를 포함하기에 충분히 넓은 임의의 디지털 값으로서 구현될 수 있다.
다시 도 3을 참조하면, 입력 프레임을 수신한 후, 블록(304)에서 컴퓨팅 디바이스(100)는 터치 포인트 센트로이드 및 클러스터 경계를 식별하기 위해 입력 프레임을 처리한다. 클러스터는 하나의 터치 포인트와 관련된 입력 프레임의 인접한 셀의 그룹으로서 구현될 수 있다. 센트로이드는 클러스터에 대한 터치 강도의 피크를 포함하는 입력 프레임의 셀로서 구현될 수 있다. 각 클러스터 및 관련된 센트로이드는 터치 스크린(138)에서의 잠재적인 터치 포인트를 나타낸다. 컴퓨팅 디바이스(100)는 잠재적인 터치 포인트를 수용 또는 거부하기 위해 센트로이드 및 클러스터 데이터를 분석할 수 있다. 예컨대, 컴퓨팅 디바이스(100)는 클러스터 경계의 사이즈 및/또는 모양에 근거하여 손가락 끝 터치와 손바닥 터치를 구별하여, 손가락 끝 터치에 대응하는 센트로이드를 수용하고, 손바닥 터치에 대응하는 센트로이드를 거부할 수 있다. 블록(304)의 기능은 도 5~7에 관련하여 이하에 더 서술된다.
블록(306)에서, 미처리 입력 프레임으로부터 터치 포인트를 식별한 후, 컴퓨팅 디바이스(100)는 각 식별된 터치 포인트에 지속적인(persistent) 식별자를 할당한다. 지속적인 식별자는 프레임에서 프레임으로의 터치 포인트의 움직임을 추적한다. 이들 지속적인 식별자는 몸짓의 상호작용 또는 다른 사용자 상호작용을 처리하는 것을 돕기 위해 컴퓨팅 디바이스(100)에 의해 사용될 수 있다. 블록(306)의 기능은 도 8~11에 관련하여 이하에 더 서술된다. 지속적인 식별자를 할당한 후, 방법(300)은 블록(302)으로 돌아가서 다른 입력 프레임을 수신한다.
도 5를 참조하면, 사용 중에, 컴퓨팅 디바이스(100)는 터치 포인트 센트로이드 및 클러스터 경계의 식별을 위해 방법(500)을 실행할 수 있다. 방법(500)은 블록(502)에서 시작되어, 컴퓨팅 디바이스(100)는 입력 프레임의 셀을 다수의 정사각형 블록으로 그룹화한다. 예컨대, 도 4를 참조하면, 입력 프레임(402)은 정사각형 어레이로 배열된 256개의 입력 셀(404)을 포함한다. 입력 셀(404)은 16개의 4×4 셀 블록(406)으로 그룹화된다. 도시되지 않은 다른 실시형태에서, 입력 셀(404)은 3×3 셀 블록으로 그룹화될 수 있다. 그리고, 물론, 입력 프레임(402)은 임의의 수의 입력 셀(404)을 포함할 수 있다.
다시 도 5를 참조하면, 블록(504)에서, 컴퓨팅 디바이스(100)는, 블록(406)의 각각에 대하여, 신호 임계값을 넘는 극댓값(local maximum)을 포함하는 셀을 검출한다. 다시 말해서, 블록(406)의 각각에 대하여, 컴퓨팅 디바이스(100)는 신호 임계값을 넘는 가장 큰 터치 데이터 값을 갖는 블록 내의 셀을 탐색한다. 신호 임계값 아래의 터치 데이터 값은 터치 스크린(138)에 의해 검출되는 노이즈 또는 다른 잘못된 신호(spurious signal)를 나타내고, 이것들은 거부된다. 식별된 극댓값의 각각은 임시적으로 센트로이드로서 마킹된다. 예컨대, 도 4에 도시된 바와 같이, 빗금의 셀(450~472)은 각 블록에서 검출되는 극댓값을 나타낸다. 예컨대, 블록(410)은 셀(450)에서 극댓값을 포함한다. 각 블록은 많아야 하나의 극댓값을 가질 수 있고, 몇몇의 블록, 예컨대 블록(422, 428, 434, 440)은 어떤 식별된 극댓값도 포함하지 않을 수 있다. 몇몇의 실시형태에서, 컴퓨팅 디바이스(100)는 개별 탐색 작업에 있어서 블록(406)의 각각을 탐색할 수 있고, 이들 작업의 각각은 병렬 실행을 위해 프로세서 그래픽(124)에 디스패치될 수 있다.
센트로이드를 식별한 후, 블록(506)에서, 컴퓨팅 디바이스(100)는 인접한 블록에 걸쳐서 센트로이드를 병합한다. 센트로이드의 각각은 하나의 블록(406)으로부터의 데이터를 사용하여 블록(504)에서 식별되지만, 블록 경계의 양쪽에서 식별되는 센트로이드는 동일한 터치 포인트의 일부일 수 있다. 그러한 잘못된 센트로이드를 제거하기 위해, 컴퓨팅 디바이스(100)는 블록(406)을 순회하여 서로 터치 거리 임계값 내에 있는 터치 포인트를 찾는다. 터치 거리 임계값은 고유의 터치 포인트 사이의 입력 프레임 셀의 최소수를 나타내며, 디바이스 또는 구현에 따라 다를 수 있다. 몇몇의 실시형태에서 터치 거리 임계값은 사람 손가락 사이즈에 근사하도록 구성될 수 있다. 예컨대, 64×32 셀 입력 프레임을 사용하는 15인치의 터치 스크린(138)을 가정하면, 터치 거리 임계값은 2개의 셀일 수 있다. 터치 거리 임계값 내의 센트로이드는 보다 큰 터치 데이터 값을 갖는 셀만을 센트로이드로서 마킹함으로써 병합된다. 블록(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)는 블록(406)의 각각을 위한 병렬 작업을 프로세서 그래픽(124)에 디스패치한다. 순회의 순서를 제어하기 위해, 컴퓨팅 디바이스(100)는 프로세서 그래픽(124)의 스코어보드(128)를 사용하여 작업 사이의 데이터 의존성을 설정할 수 있다. 예컨대, 도 4를 참조하면, 수직 순회에 대하여, 컴퓨팅 디바이스(100)는 블록(418)을 블록(410)에 의존하도록, 블록(420)을 블록(412)에 의존하도록 하는 등과 같이 설정하여 작업이 입력 프레임(402)에 걸쳐서 수직 줄무늬(stripe)로 실행하도록 할 수 있다. 마찬가지로, 수평 순회에 대하여, 컴퓨팅 디바이스(100)는 블록(412)을 블록(410)에 의존하도록, 블록(420)을 블록(418)에 의존하도록 하는 등과 같이 설정하여 작업이 입력 프레임(402)에 걸쳐서 수평 줄무늬로 실행하도록 할 수 있다. 대각선 순회에 대하여, 블록(406)마다 하나의 작업을 디스패치하는 대신에, 컴퓨팅 디바이스는 4개의 블록의 그룹마다 하나의 작업을 디스패치할 수 있고, 그 작업은 입력 프레임(402)을 집합적으로 커버한다. 예컨대, 제 1 작업은 블록(410, 412, 418, 420)을 포함할 수 있고, 제 2 작업은 블록(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)은 수직 방향으로 그들 사이에서 2개의 입력 셀의 거리를 갖는 한편, 블록(418)에서 셀(458, 464)은 그들 사이에서 4개의 입력 셀의 거리를 갖는다. 블록(418)에서 수평으로 순회할 때, 셀(458, 460)은 그들 사이에서 2개의 입력 셀의 거리를 갖는 한편, 블록(430)에서 셀(466, 468)은 그들 사이에서 3개의 입력 셀의 거리를 갖는다. 대각선으로 순회할 때, 블록(414)에서, 셀(454, 462)은 그들 사이에서 2개의 입력 셀의 거리를 갖는 한편, 블록(420)에서 셀(460, 466)은 그들 사이에서 5개의 입력 셀의 거리를 갖는다.
다시 도 6을 참조하면, 블록(608)에서, 컴퓨팅 디바이스(100)는 센트로이드 사이의 순회 방향에서의 거리가 터치 임계값 거리보다 작거나 같은지 여부를 결정한다. 상술한 바와 같이, 거리 임계값은 고유의 터치 포인트 사이의 입력 프레임 셀의 최소수를 나타낸다. 몇몇의 실시형태에서, 터치 거리 임계값은 2개의 입력 셀일 수 있다. 거리가 임계값보다 크다면, 방법(600)은 어떤 센트로이드도 병합하지 않고서 리턴하고 현재의 블록에 대하여 완료된다. 또한, 2개 미만의 센트로이드가 현재의 블록 및 다음의 블록에 존재하는 경우, 방법(600)은 리턴하고 현재의 블록에 대하여 완료된다. 또한, 현재의 블록 및 다음의 블록의 센트로이드가 순회 방향으로 정렬되지 않는 경우, 방법(600)은 리턴하고 현재의 블록에 대하여 완료된다. 거리가 터치 거리 임계값보다 작거나 같다면, 방법(600)은 블록(610)으로 진행한다.
블록(610)에서, 컴퓨팅 디바이스(100)는 2개의 센트로이드를 보다 큰 터치 데이터 값을 갖는 입력 셀(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)는 신호 임계값 아래의 터치 데이터 값을 갖는 입력 셀을 0으로 한다. 즉, 컴퓨팅 디바이스(100)는 그러한 셀의 값을 0으로 설정한다. 입력 임계값 아래의 입력 셀을 0으로 하는 것은 검출 성능을 향상시킬 수 있다.
블록(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의 값은 3개의 코너 셀에 복사되고, 셀 C2의 값은 하나의 에지 셀에 복사되고, 셀 C3의 값은 3개의 코너 셀에 복사되는 등이다.
다시 도 7을 참조하면, 블록(710)에서, 컴퓨팅 디바이스(100)는 대응하는 비교 윈도우 에지 셀로부터 입력 프레임 에지 셀의 값을 감산한다. 몇몇의 실시형태에서, 컴퓨팅 디바이스(100)는 컴퓨팅 디바이스(100)의 단일-명령-다중-데이터(SIMD) 명령을 사용하여 윈도우의 모든 4개의 에지에 대하여 그 감산을 행할 수 있다. 예컨대, 각 에지의 값은 벡터로 압축될(packed) 수 있고, 컴퓨팅 디바이스(100)는 하나의 압축된 벡터 감산 명령을 사용하여 각 에지의 감산을 행할 수 있다. 물론, 다른 실시형태에서, 컴퓨팅 디바이스(100)는 각 셀에 대하여 개별 감산을 행할 수 있다. 예컨대, 도 8을 참조하면, 입력 윈도우(802)는 상단 에지(810), 하단 에지(812), 좌측 에지(814), 및 우측 에지(816)를 포함한다. 비교 윈도우(806)는 상단 에지(818), 하단 에지(820), 좌측 에지(822), 및 우측 에지(824)를 포함한다. 상단 에지에 대한 차분을 계산하기 위해, 컴퓨팅 디바이스(100)는 상단 에지(810) 및 상단 에지(818)의 값을 벡터로 압축하고, 상단 에지(818)에 대한 벡터로부터 상단 에지(810)에 대한 벡터를 감산할 수 있다. 컴퓨팅 디바이스(100)는 다른 에지에 대하여 유사한 계산을 행할 수 있다.
다시 도 7을 참조하면, 블록(712)에서, 컴퓨팅 디바이스(100)는 블록(710)에서 계산되는 감산에 기인하는 차분 중 하나가 0보다 작은지 여부를 결정한다. 작다면, 에지 셀의 적어도 하나에 대하여, 입력 프레임 값은 클러스터 내의 인접하는 셀의 값보다 크다는 것을 의미한다. 처음의 반복에 대하여, 그것은 센트로이드를 둘러싸는 셀의 하나가 센트로이드보다 크다는 것을 의미한다. 그 상황에서, 터치 데이터 값의 기울기는 음이 아니다. 즉, 터치 값 데이터는 증가하기 시작하였다. 따라서, 그 상황에서, 센트로이드 경계는 발견되었다. 차분 중 하나가 0보다 작다면, 방법(700)은 이하에 서술되는 블록(718)으로 분기한다. 차분 중 어느 것도 0보다 작지 않다면, 방법(700)은 블록(714)으로 진행한다.
블록(714)에서, 컴퓨팅 디바이스(100)는 비교 윈도우 사이즈가 최대 윈도우 사이즈에 도달하였는지 여부를 결정한다. 최대 윈도우 사이즈는, 예컨대, 블록(704)에서 로드된 입력 프레임 데이터 블록의 사이즈에 근거하여 정의될 수 있다. 예컨대, 최대 윈도우 사이즈는 입력 프레임 데이터의 16셀 정사각형 블록 내에서 가능한 최대 윈도우 사이즈인 15셀×15셀일 수 있다. 최대 윈도우 사이즈에 도달하였다면, 방법(700)은 이하에 서술되는 블록(781)으로 분기한다. 최대 윈도우 사이즈가 도달하지 않았다면, 방법(700)은 블록(716)으로 진행한다.
블록(716)에서, 컴퓨팅 디바이스(100)는 비교 윈도우 사이즈를 증가시킨다. 블록(710)에서 계산된 차분 중 어느 것도 0 아래가 아니었기 때문에, 현재의 비교 윈도우의 모든 셀은 센트로이드 경계 내에 포함된다. 따라서, 비교 윈도우 사이즈 및 관련된 입력 윈도우 사이즈는 경계를 계속 탐색하기 위해 증가될 수 있다. 비교 윈도우 사이즈를 증가시킨 후, 방법(700)은 블록(708)로 돌아가서 다른 비교 윈도우를 만든다.
다시 블록(712)을 참조하면, 임의의 차분이 0보다 작다면, 방법(700)은 블록(718)으로 분기한다. 또한, 다시 블록(714)을 참조하면, 최대 윈도우 사이즈에 도달하였다면, 방법(700)은 블록(718)으로 분기한다. 블록(718)에서, 컴퓨팅 디바이스(100)는 비교 윈도우에서의 유효한 셀의 수를 카운트한다. 유효한 셀은 블록(710)에서 계산된 차분이 0보다 작지 않은 것이다. 몇몇의 실시형태에서, 신호 임계값 아래의 셀은 블록(716)에서 0이 되었기 때문에, 컴퓨팅 디바이스(100)는 입력 윈도우 내의 모든 0이 아닌 셀을 유효한 셀로서 식별할 수 있다. 컴퓨팅 디바이스(100)는 SIMD 합계 명령을 사용하여 유효한 셀의 수를 카운트할 수 있다. 유효한 셀의 수는 클러스터 경계, 즉, 센트로이드를 둘러싸는 터치 포인트의 사이즈를 결정하기 위해 컴퓨팅 디바이스(100)에 의해 사용될 수 있다.
도 9를 참조하면, 사용 중에, 컴퓨팅 디바이스(100)는 센트로이드가 마킹 및 병합된 후에 클러스터 경계를 식별하는 방법(900)을 실행할 수 있다. 방법(900)은 잡음성(noisy) 입력 프레임을 생성하는 경향이 있는 터치 스크린(138)과의 사용에 적합할 수 있다. 방법(900)은 블록(902)에서 시작되어, 컴퓨팅 디바이스(100)는 마킹된 센트로이드의 각각에 대한 병렬 작업을 프로세서 그래픽(124)에 디스패치한다. 블록(902)에서 디스패치된 작업의 각각에 대하여, 블록(904)에서, 컴퓨팅 디바이스(100)는 센트로이드를 둘러싸는 셀에 대한 입력 프레임 데이터를 로드한다. 로드된 셀의 수는 허용된 손가락 또는 손바닥 사이즈에 의존한다. 몇몇의 실시형태에서, 컴퓨팅 디바이스(100)는 대략 센트로이드를 중심으로 하는 16×16 정사각형 블록의 셀을 로드할 수 있다.
블록(906)에서, 컴퓨팅 디바이스(100)는 신호 임계값 아래의 터치 데이터 값을 갖는 입력 셀을 0으로 한다. 즉, 컴퓨팅 디바이스(100)는 그러한 셀의 값을 0으로 설정한다. 입력 임계값 아래의 입력 셀을 0으로 하는 것은 검출 성능을 향상시킬 수 있다.
블록(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)에서 로드되는 입력 프레임 데이터 블록의 사이즈에 근거하여 정의될 수 있다. 예컨대, 최대 윈도우 사이즈는 입력 프레임 데이터의 16셀 정사각형 블록 내에서 가능한 가장 큰 윈도우 사이즈인 15셀×15셀일 수 있다. 최대 윈도우 사이즈를 초과하지 않았다면, 방법(900)은 블록(908)으로 돌아가서 클러스터 경계를 계속 탐색한다. 최대 윈도우 사이즈를 초과하였다면, 방법(900)은 블록(920)으로 진행한다.
블록(920)에서, 컴퓨팅 디바이스(100)는 이전의 윈도우에서의 유효한 셀의 수를 카운트한다. 이 시점에서, 컴퓨팅 디바이스는, 블록(912)에서 현재의 윈도우의 에지 셀의 평균값이 신호 임계값을 초과하지 않는다는 것, 블록(914)에서 현재의 윈도우의 최댓값이 이전의 윈도우의 최댓값을 초과한다는 것, 또는 블록(918)에서 최대 윈도우 사이즈를 초과하였다는 것을 결정하였을 수 있다. 이들 상황의 전부에 있어서, 이전의, 보다 작은 윈도우가 클러스터 경계로서 사용될 수 있다. 초기 윈도우에 대하여, 센트로이드는 이전의 윈도우로서 사용될 수 있고, 이는 단일 셀 클러스터이다. 신호 임계값 아래의 셀은 블록(906)에서 0이 되었기 때문에, 컴퓨팅 디바이스(100)는 선택된 윈도우 내의 모든 0이 아닌 셀을 유효한 셀로서 식별할 수 있다. 컴퓨팅 디바이스(100)는 SIMD 명령, 예컨대, SIMD 합계 명령을 사용하여 에지 셀을 카운트할 수 있다.
도 10을 참조하면, 사용 중에, 컴퓨팅 디바이스(100)는 지속적인 식별자를 터치 포인트에 할당하는 방법(1000)을 실행할 수 있다. 도 3의 블록(306)에 관련하여 상술한 바와 같이, 방법(1000)을 실행할 때, 컴퓨팅 디바이스(100)는 터치 스크린으로부터 입력 프레임을 이미 수신하였을 수 있고 또한 입력 프레임에서 현재의 터치 포인트를 식별하기 위해 센트로이드 및 클러스터 경계 검출을 이미 행하였을 수 있다. 방법(1000)은 블록(1002)에서 시작되어, 컴퓨팅 디바이스(100)는 모든 이전에 추적된 터치 포인트에 대하여 현재의 입력 프레임에서의 위치를 예측한다. 물론, 방법(1000)의 처음 기동에 있어서는, 이전에 추적된 터치 포인트는 없을 것이다. 몇몇의 실시형태에서, 컴퓨팅 디바이스(100)는, 예컨대 각 터치 포인트의 속도를 결정하고 그 속도에 따라서 위치를 예측함으로써 이전의 위치로부터 예측된 위치를 추론할 수 있다. 하지만, 몇몇의 실시형태에서, 컴퓨팅 디바이스(100)는 단지 이전에 추적된 각 터치 포인트의 위치를 이전의 입력 프레임에서와 동일한 것으로서 예측할 수 있다. 이 단순화된 접근법은 터치 포인트가 비교적 느리게 움직일 가능성이 있는 경우에 적합할 수 있다.
블록(1004)에서, 예측된 터치 포인트의 각각에 대하여, 컴퓨팅 디바이스(100)는 예측된 터치 포인트의 식별자를 예측된 터치 포인트의 추적 거리 임계값 내에 위치한 현재의 터치 포인트에 할당한다. 각 예측된 터치 포인트는 프레임 사이의 터치 포인트의 위치를 추적하기 위해 사용될 수 있는 고유의 식별자와 관련된다. 추적 거리 임계값은 터치 포인트가 입력 프레임 사이에서 움직일 수 있고 동일한 터치 포인트로 간주될 수 있는 터치 스크린(138)에서의 최대 거리를 나타낸다. 추적 거리 임계값은 입력 프레임 셀로서 측정될 수 있다. 예컨대, 몇몇의 실시형태에서, 임계값은 7개의 셀일 수 있다. 몇몇의 실시형태에서, 컴퓨팅 디바이스(100)는 개별 할당 작업에 있어서 예측된 터치 포인트의 각각에 대하여 식별자를 할당할 수 있고, 이들 작업의 각각은 병렬 실행을 위해 프로세서 그래픽(124)에 디스패치될 수 있다. 식별자를 할당하는 방법은 이하에 도 11에 대하여 더 서술된다.
블록(1006)에서, 예측된 터치 포인트의 각각에 대하여, 컴퓨팅 디바이스(100)는 현재의 터치 포인트에 할당된 임의의 복제된 식별자를 제거한다. 블록(1004)의 방법은 각 예측된 터치 포인트에 대하여 독립적으로 실행되기 때문에, 동일한 식별자가 복수의 현재의 터치 포인트에 할당될 수 있다. 이 문제를 바로잡기 위해, 컴퓨팅 디바이스(100)는 복제된 식별자를 제거하여, 예측된 터치 포인트에 가장 가까운 현재의 터치 포인트에서의 식별자를 유지한다. 몇몇의 실시형태에서, 컴퓨팅 디바이스(100)는 개별 제거 작업에서 각 예측된 터치 포인트에 대하여 복제된 식별자를 제거하고, 이들 작업의 각각은 병렬 실행을 위해 프로세서 그래픽(124)에 디스패치될 수 있다. 복제된 식별자를 제거하는 방법은 이하에 도 12에 대하여 더 서술된다.
블록(1008)에서, 각 예측된 터치 포인트에 대하여, 컴퓨팅 디바이스(100)는 임의의 사용되지 않는 예측된 터치 포인트 식별자를 임계값 거리 내의 가장 가까운 할당되지 않은 현재의 터치 포인트에 할당한다. 몇몇의 실시형태에서, 컴퓨팅 디바이스(100)는 개별 할당 작업에 있어서 각 예측된 터치 포인트에 대하여 사용되지 않는 예측된 터치 포인트 식별자를 할당할 수 있고, 이들 작업의 각각은 병렬 실행을 위해 프로세서 그래픽(124)에 디스패치될 수 있다. 사용되지 않는 예측된 터치 포인트 식별자를 할당하는 방법은 이하에 도 13에 대하여 더 서술된다.
블록(1010)에서, 입력 프레임의 각 블록에 대하여, 컴퓨팅 디바이스(100)는 각 할당되지 않은 현재의 터치 포인트에 새로운 고유의 식별자를 할당한다. 상술한 바와 같이, 입력 프레임은 셀의 정사각형 블록으로 그룹화될 수 있다. 몇몇의 실시형태에서, 블록은 4×4 셀 정사각형일 수 있고, 다른 실시형태에서, 블록은 3×3 셀 정사각형일 수 있다. 몇몇의 실시형태에서, 컴퓨팅 디바이스(100)는 식별자를 찾아서 블록 내의 각 할당되지 않은 현재의 터치 포인트에 할당하기 위해 프로세서 그래픽(124)에서 각 블록에 대한 할당 작업을 디스패치할 수 있다. 예컨대, 컴퓨팅 디바이스(100)는 글로벌 카운터를 보유하고 증가하는 정수값을 식별자로서 할당할 수 있다. 카운터는 롤오버하는 일 없이 전형적인 고유의 식별자의 수를 허용하기에 충분히 클 수 있다. 예컨대, 몇몇의 실시형태에서 부호 없는(unsigned) 8비트 정수가 카운터로서 사용되어, 256개의 고유의 식별자를 허용할 수 있다. 다른 예로서, 식별자가 고유한 것을 보장하기 위해, 컴퓨팅 디바이스(100)는 식별자의 맵을 보유하고 그 맵을 사용하여 사용되지 않는 식별자를 선택할 수 있다. 맵은 합계 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비트 플로트(float) 2차원 표면 형식(surface format)으로 저장될 수 있다. 윈도우는 예측된 터치 포인트의 추적 거리 임계값 내에 모든 셀을 포함하기에 충분히 크도록 크기가 조정된다. 예컨대, 7셀 추적 거리 임계값을 커버하기 위해 2개의 4×4 블록 또는 3개의 3×3 블록이 필요하게 되고, 추적 거리 임계값은 예측된 터치 포인트로부터 모든 방향에서 커버될 수 있다. 따라서 몇몇의 실시형태에서, 4×4 셀 블록에 대하여, 윈도우는 5개 블록 정사각형일 수 있고, 3개의 3×3 블록에 대하여, 윈도우는 7개 블록 정사각형일 수 있다. 예측된 터치 포인트를 포함하는 블록은 윈도우의 중심에 위치된다.
블록(1106)에서, 컴퓨팅 디바이스(100)는 윈도우 내에 위치하는 예측된 터치 포인트에 대한 가장 가까운 현재의 터치 포인트를 찾는다. 컴퓨팅 디바이스(100)는 이후의 처리를 위해 그 가장 가까운 현재의 터치 포인트를 가장 잘 매칭된(best-matched) 터치 포인트로서 저장한다.
블록(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)에서, 컴퓨팅 디바이스는 2개 이상의 현재의 터치 포인트가 예측된 터치 포인트와 동일한 식별자를 갖는지 여부를 결정한다. 갖지 않는다면, 식별자는 제거될 필요가 없고 방법(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)는 예측된 터치 포인트 식별자를 가장 가까운 할당되지 않은 현재의 터치 포인트에 할당한다. 할당되지 않은 현재의 터치 포인트가 윈도우 내에서 발견되지 않으면, 예측된 터치 포인트는 사용되지 않는 채로 남는다. 예측된 터치 포인트는 사용되지 않는다면 삭제될 수 있거나, 또는 얼마간 사용되지 않는다면 만료(age-out)될 수 있다(도시하지 않음). 블록(1308)을 완료한 후, 방법(1300)은 리턴한다.
예
본 명세서에 개시된 기술의 예시적인 예가 이하에 제공된다. 기술의 실시형태는 이하에 서술되는 예의 임의의 하나 이상, 및 그 임의의 조합을 포함할 수 있다.
예 1은 터치 포인트 센트로이드(centroid) 검출을 위한 컴퓨팅 디바이스로서, 상기 컴퓨팅 디바이스는, 터치 스크린과, 상기 터치 스크린으로부터 입력 프레임을 수신하기 위한 입력 프레임 모듈-상기 입력 프레임은 복수의 셀을 규정하고, 각 셀은 터치 데이터 값을 가짐-과, 상기 입력 프레임의 상기 셀을 복수의 블록으로 그룹화하고, 상기 복수의 블록의 각각 내의 극댓값(local maximum) 셀을 탐색하고-상기 극댓값 셀은 신호 임계값과의 미리 정해진 관계를 갖는 터치 데이터 값을 가짐-, 상기 극댓값 셀의 각각을 센트로이드로서 식별하고, 서로의 터치 거리 임계값 내에 위치한 센트로이드를 병합하고, 상기 병합된 센트로이드의 각각의 주변의 클러스터 경계(boundary)를 검출-각 클러스터 경계는 상기 입력 프레임의 적어도 하나의 셀을 포함함-하기 위한 센트로이드 검출 모듈을 구비한다.
예 2는 예 1의 내용을 포함하고, 상기 블록의 각각은 16개의 연속하는 셀의 4셀 정사각형 블록, 또는 9개의 연속하는 셀의 3셀 정사각형 블록 중 하나를 구비한다.
예 3은 예 1 및 2 중 하나의 내용을 포함하고, 상기 극댓값 셀을 탐색하는 것은, 상기 신호 임계값 보다 크거나 같은 터치 데이터 값을 갖는 극댓값 셀을 탐색하는 것을 포함한다.
예 4는 예 1~3 중 하나의 내용을 포함하고, 상기 센트로이드를 병합하는 것은, 수직 줄무늬(stripe)로 상기 블록을 순회하고(traverse) 인접하는 블록에서 상기 터치 거리 임계값보다 적게 수직으로 떨어진 센트로이드를 병합하는 것과, 수평 줄무늬로 상기 블록을 순회하고 인접하는 블록에서 상기 터치 거리 임계값보다 적게 수평으로 떨어진 센트로이드를 병합하는 것과, 대각선으로 인접하는 쌍(pair)에서 상기 블록을 순회하고 인접하는 블록에서 상기 터치 거리 임계값보다 적게 대각선으로 떨어진 센트로이드를 병합하는 것을 포함한다.
예 5는 예 1~4 중 하나의 내용을 포함하고, 인접하는 블록에서 상기 센트로이드를 병합하는 것은, 상기 터치 거리 임계값보다 적게 떨어진 센트로이드의 쌍의 제 1 센트로이드 및 제 2 센트로이드를 식별하는 것-상기 제 1 센트로이드는 상기 제 2 센트로이드의 제 2 터치 데이터 값보다 큰 제 1 터치 데이터 값을 포함함-과, 상기 제 2 센트로이드로부터 센트로이드로서의 상기 식별을 제거하는 것을 포함한다.
예 6은 예 1~5 중 하나의 내용을 포함하고, 상기 터치 거리 임계값은 2개의 셀을 구비한다.
예 7은 예 1~6 중 하나의 내용을 포함하고, 프로세서 그래픽을 더 포함하고, 수직 줄무늬로 상기 블록을 순회하는 것은, 상기 프로세서 그래픽을 사용하여 블록마다 하나의 작업을 디스패치(dispatch)하는 것-각 작업은 상기 인접하는 블록에 위치한 다른 센트로이드로부터 상기 터치 거리 임계값 내에 위치하는 상기 블록 내의 센트로이드를 병합하는 것을 구비함-과, 수직 줄무늬로 상기 블록을 순회하기 위해 상기 프로세서 그래픽의 스코어보드를 사용하여 상기 작업 사이의 데이터 의존성을 설정하는 것을 구비하고; 수평 줄무늬로 상기 블록을 순회하는 것은, 상기 프로세서 그래픽을 사용하여 블록마다 하나의 작업을 디스패치하는 것-각 작업은 상기 인접하는 블록에 위치한 다른 센트로이드로부터 상기 터치 거리 임계값 내에 위치하는 상기 블록 내의 센트로이드를 병합하는 것을 구비함-과, 수평 줄무늬로 상기 블록을 순회하기 위해 상기 프로세서 그래픽의 상기 스코어보드를 사용하여 상기 작업 사이의 데이터 의존성을 설정하는 것을 구비하고; 대각선으로 인접하는 쌍에서 상기 블록을 순회하는 것은, 상기 프로세서 그래픽을 사용하여 4개의 블록의 정사각형 그룹마다 하나의 작업을 디스패치하는 것-각 작업은 인접하는 블록에 위치한 다른 센트로이드로부터 상기 터치 거리 임계값 내에 위치하는 상기 블록의 정사각형 그룹 내의 센트로이드를 병합하는 것을 구비함-과, 대각선으로 인접하는 쌍에서 상기 블록을 순회하기 위해 상기 프로세서 그래픽의 상기 스코어보드를 사용하여 상기 작업 사이의 데이터 의존성을 설정하는 것을 구비한다.
예 8은 예 1~7 중 하나의 내용을 포함하고, 상기 병합된 센트로이드의 각각의 주변의 상기 클러스터 경계를 검출하는 것은, 상기 센트로이드를 둘러싸는 셀에 대하여 상기 입력 프레임으로부터 데이터를 로드하는 것과, 상기 신호 임계값보다 작은 터치 데이터 값을 포함하는 셀을 0으로 하는 것과, 상기 클러스터 경계를 둘러싸는 상기 입력 프레임의 셀을 포함하는 입력 윈도우를 정의하는 것과, 상기 입력 윈도우의 사이즈와 동일한 사이즈를 갖는 비교 윈도우를 만들기 위해 상기 클러스터의 에지 셀을 복제하는 것과, 복수의 에지 셀 차분을 결정하기 위해 상기 비교 윈도우의 대응하는 복제된 에지 셀의 터치 데이터 값으로부터 상기 입력 윈도우의 각 에지 셀의 터치 데이터 값을 감산하는 것과, 상기 에지 셀 차분 중 어느 것도 0보다 작지 않다는 결정에 응답하여 상기 비교 윈도우 사이즈를 증가시키는 것과, 상기 에지 셀 차분 중 어느 하나가 0보다 작다는 결정에 응답하여 상기 입력 윈도우에서 유효한 셀의 수를 카운트하는 것-각 유효한 셀은 0보다 작지 않은 대응하는 에지 셀 차분을 가짐-
을 구비한다.
예 9는 예 1~8 중 하나의 내용을 포함하고, 상기 입력 프레임 데이터를 로드하는 것은, 상기 센트로이드를 둘러싸는 16×16 정사각형의 셀로부터 데이터를 로드하는 것을 구비한다.
예 10은 예 1~9 중 하나의 내용을 포함하고, 각 에지 셀의 터치 데이터 값을 감산하는 것은, 상기 입력 윈도우의 에지를 제 1 벡터로 압축하는 것과, 상기 비교 윈도우의 에지를 제 2 벡터로 압축하는 것과, 상기 프로세서 그래픽의 단일-명령-다중-데이터 감산 명령을 사용하여 상기 제 2 벡터로부터 상기 제 1 벡터를 감산하는 것을 구비한다.
예 11은 예 1~10 중 하나의 내용을 포함하고, 상기 유효한 셀의 수를 카운트하는 것은, 상기 프로세서 그래픽의 단일-명령-다중-데이터 합계 명령을 사용하여 상기 유효한 셀의 수를 카운트하는 것을 구비한다.
예 12는 예 1~11 중 하나의 내용을 포함하고, 상기 병합된 센트로이드의 각각의 주변의 상기 클러스터 경계를 검출하는 것은, 상기 센트로이드를 둘러싸는 셀에 대하여 상기 입력 프레임으로부터 데이터를 로드하는 것과, 상기 신호 임계값보다 작은 터치 데이터 값을 포함하는 셀을 0으로 하는 것과, 제 1 윈도우 내의 에지 셀의 제 1 최댓값을 계산하는 것과, 상기 센트로이드를 둘러싸는 상기 입력 프레임의 제 2 윈도우 내의 에지 셀의 합계를 계산하는 것-상기 제 2 윈도우는 상기 제 1 윈도우를 둘러쌈-과, 상기 제 2 윈도우 내의 에지 셀의 제 2 최댓값을 계산하는 것과, 상기 합계가 상기 신호 임계값을 곱한 상기 제 2 윈도우 내의 상기 에지 셀의 수보다 작은지 여부를 결정하는 것과, 상기 제 2 최댓값이 상기 제 1 최댓값보다 큰지 여부를 결정하는 것과, 상기 합계가 상기 신호 임계값을 곱한 상기 제 2 윈도우 내의 상기 에지 셀의 수보다 작지 않다는 결정 및 상기 제 2 최댓값이 상기 제 1 최댓값보다 크지 않다는 결정에 응답하여 상기 제 1 윈도우 및 상기 제 2 윈도우의 사이즈를 증가시키는 것과, 상기 합계가 상기 신호 임계값을 곱한 상기 제 2 윈도우 내의 상기 에지 셀의 수보다 작다는 결정 또는 상기 제 2 최댓값이 상기 제 1 최댓값보다 크다는 결정에 응답하여 상기 제 1 윈도우에서 유효한 셀의 수를 카운트하는 것을 구비한다.
예 13은 예 1~12 중 하나의 내용을 포함하고, 프로세서 그래픽과, 병렬 디스패치 모듈을 더 포함하고, 상기 극댓값 셀을 탐색하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 탐색 작업을 블록마다 할당하는 것을 구비하고, 상기 센트로이드를 병합하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 병합 작업을 블록마다 할당하는 것을 구비하고, 상기 병합된 센트로이드의 각각의 주변의 상기 클러스터 경계를 검출하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 검출 작업을 병합된 센트로이드마다 할당하는 것을 구비하고, 상기 병렬 디스패치 모듈은 상기 프로세서 그래픽의 복수의 실행 유닛을 사용하여 (ⅰ) 상기 탐색 작업을 병렬로 실행하고, (ⅱ) 상기 병합 작업을 병렬로 실행하고, (ⅲ) 상기 검출 작업을 병렬로 실행한다.
예 14는 예 1~13 중 하나의 내용을 포함하고, 상기 센트로이드 검출 모듈은 상기 프로세서 그래픽의 단일-명령-다중-데이터 명령을 사용하여 상기 극댓값 셀을 탐색하는 것, 센트로이드를 병합하는 것, 또는 상기 클러스터 경계를 검출하는 것 중 적어도 하나를 행한다.
예 15는 터치 포인트 추적을 위한 컴퓨팅 디바이스로서, 상기 컴퓨팅 디바이스는, 터치 스크린과, (ⅰ) 상기 터치 스크린으로부터 이전의 입력 프레임을 수신하고-상기 이전의 입력 프레임은 복수의 이전에 추적된 터치 포인트를 식별하는 복수의 셀을 정의함-, (ⅱ) 상기 터치 스크린으로부터 현재의 입력 프레임을 수신하는-상기 현재의 입력 프레임은 복수의 셀을 정의하고 복수의 현재의 터치 포인트를 식별함- 입력 프레임 모듈과, 상기 이전의 입력 프레임에서 식별된 상기 복수의 이전에 추적된 터치 포인트의 각각의 위치를 예측하고, 이전에 추적된 터치 포인트의 식별자를 상기 이전에 추적된 터치 포인트의 상기 예측된 위치의 추적 거리 임계값 내에 현재의 위치를 갖는 현재의 터치 포인트에 할당하고, 상기 현재의 터치 포인트에 할당된 복제된 식별자를 제거하고, 상기 이전에 추적된 터치 포인트의 각 할당되지 않은 식별자를 (ⅰ) 상기 추적 거리 임계값 내에 상기 이전에 추적된 터치 포인트에 대한 가장 가까운 현재의 터치 포인트이고, (ⅱ) 상기 이전에 추적된 터치 포인트의 식별자를 이전에 할당받지 않은 현재의 터치 포인트에 할당하고, 고유의 식별자를 각 할당되지 않은 현재의 터치 포인트에 할당하는 터치 포인트 추적 모듈을 구비하는 컴퓨팅 디바이스를 포함한다.
예 16은 예 15의 내용을 포함하고, 상기 복수의 이전에 추적된 터치 포인트의 각각의 상기 위치를 예측하는 것은, (ⅰ) 상기 이전의 입력 프레임에서 상기 복수의 이전에 추적된 터치 포인트의 각각의 위치를 결정하는 것, 또는 (ⅱ) 상기 복수의 이전에 추적된 터치 포인트의 각각의 속도를 결정하고 상기 속도에 따라서 상기 위치를 예측하는 것 중 하나를 구비한다.
예 17은 예 15 및 16 중 하나의 내용을 포함하고, 상기 이전에 추적된 터치 포인트의 상기 식별자를 상기 현재의 터치 포인트에 할당하는 것은, 상기 이전에 추적된 터치 포인트의 상기 예측된 위치의 상기 추적 거리 임계값 내에 위치한 상기 입력 프레임의 모든 현재의 터치 포인트를 검색하는 것과, 상기 예측된 위치에 대하여 상기 검색된 현재의 터치 포인트의 가장 가까운 현재의 터치 포인트를 식별하는 것과, 상기 가장 가까운 현재의 터치 포인트의 상기 추적 거리 임계값 내에 예측된 위치를 갖는 모든 이전에 추적된 터치 포인트를 검색하는 것과, 상기 가장 가까운 현재의 터치 포인트에 대하여 상기 검색된 이전에 추적된 터치 포인트의 가장 가까운 이전에 추적된 터치 포인트를 식별하는 것과, 상기 가장 가까운 이전에 추적된 터치 포인트의 식별자를 상기 가장 가까운 현재의 터치 포인트에 할당하는 것을 구비한다.
예 18은 예 15~17 중 하나의 내용을 포함하고, 상기 현재의 터치 포인트에 할당된 상기 복제된 식별자를 제거하는 것은, 상기 이전에 추적된 터치 포인트의 상기 예측된 위치의 상기 추적 거리 임계값 내에 위치한 상기 입력 프레임의 모든 현재의 터치 포인트를 검색하는 것과, 상기 검색된 현재의 터치 포인트 중 2개 이상이 상기 이전에 추적된 터치 포인트의 상기 식별자와 매칭하는 식별자를 갖는지 여부를 결정하는 것과, 상기 검색된 현재의 터치 포인트 중 2개 이상이 상기 이전에 추적된 터치 포인트의 상기 식별자와 매칭하는 식별자를 갖는다는 결정에 응답하여, (ⅰ) 상기 이전에 추적된 터치 포인트에 가장 가까운 위치 및 (ⅱ) 상기 이전에 추적된 터치 포인트의 상기 식별자와 매칭하는 식별자를 갖는 상기 검색된 현재의 터치 포인트의 가장 가까운 현재의 터치 포인트를 식별하는 것과, 상기 가장 가까운 현재의 터치 포인트의 상기 식별자를 유지하는 것과, 상기 이전에 추적된 터치 포인트의 상기 식별자와 매칭하는 식별자를 갖는 상기 검색된 현재의 터치 포인트의 다른 현재의 터치 포인트의 상기 식별자를 제거하는 것을 구비한다.
예 19는 예 15~18 중 하나의 내용을 포함하고, 상기 현재의 입력 프레임은 상기 컴퓨팅 디바이스의 프로세서 그래픽에 의해 인식되는 이미지 데이터로서 포맷된 현재의 입력 프레임을 구비한다.
예 20은 예 15~19 중 하나의 내용을 포함하고, 상기 프로세서 그래픽에 의해 인식되는 상기 이미지 데이터는 32비트 플로트(float) 2차원 표면 형식을 구비한다.
예 21은 예 15~20 중 하나의 내용을 포함하고, 상기 추적 거리 임계값은 상기 현재의 입력 프레임의 7개의 입력 셀을 구비한다.
예 22는 예 15~21 중 하나의 내용을 포함하고, 프로세서 그래픽 및 병렬 디스패치 모듈을 더 포함하고, 상기 이전에 추적된 터치 포인트의 상기 식별자를 할당하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 할당 작업을 이전에 추적된 터치 포인트마다 할당하는 것을 구비하고, 상기 복제된 식별자를 제거하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 제거 작업을 이전에 추적된 터치 포인트마다 할당하는 것을 구비하고, 각 사용되지 않는 이전에 추적된 터치 포인트의 상기 식별자를 할당하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 사용되지 않는 식별자 할당 작업을 이전에 추적된 터치 포인트마다 할당하는 것을 구비하고, 고유의 식별자를 각 할당되지 않은 현재의 터치 포인트에 할당하는 것은, 상기 현재의 입력 프레임의 셀을 복수의 블록으로 그룹화하는 것과, 상기 프로세서 그래픽에 의해 실행될 하나의 고유의 식별자 할당 작업을 블록마다 할당하는 것과, 상기 프로세서 그래픽의 스코어보드를 사용하여 상기 블록 사이의 데이터 의존성을 설정하는 것을 구비하고, 상기 병렬 디스패치 모듈은 상기 프로세서 그래픽의 복수의 실행 유닛을 사용하여 (ⅰ) 병렬로 상기 할당 작업을, (ⅱ) 병렬로 상기 제거 작업을, (ⅲ) 병렬로 상기 사용되지 않는 식별자 할당 작업을, (ⅳ) 병렬로 상기 고유의 식별자 할당 작업을 실행한다.
예 23은 예 15~22 중 하나의 내용을 포함하고, 상기 터치 포인트 추적 모듈은 상기 프로세서 그래픽의 단일-명령-다중-데이터 명령을 사용하여 상기 이전에 추적된 터치 포인트의 상기 식별자를 할당하는 것, 복제된 식별자를 제거하는 것, 각 할당되지 않은 식별자를 할당하는 것, 또는 상기 고유의 식별자를 각 할당되지 않은 현재의 터치 포인트에 할당하는 것 중 적어도 하나를 행한다.
예 24는 컴퓨팅 디바이스에서 터치 포인트 센트로이드를 검출하는 방법으로서, 상기 방법은, 상기 컴퓨팅 디바이스에서, 상기 컴퓨팅 디바이스의 터치 스크린으로부터 입력 프레임을 수신하는 것-상기 입력 프레임은 복수의 셀을 규정하고, 각 셀은 터치 데이터 값을 가짐-과, 상기 컴퓨팅 디바이스에서, 상기 입력 프레임의 상기 셀을 복수의 블록으로 그룹화하는 것과, 상기 컴퓨팅 디바이스에서, 상기 복수의 블록의 각각 내의 극댓값 셀을 탐색하는 것-상기 극댓값 셀은 신호 임계값과의 미리 정해진 관계를 갖는 터치 데이터 값을 가짐-과, 상기 컴퓨팅 디바이스에서, 상기 극댓값 셀의 각각을 센트로이드로서 식별하는 것과, 상기 컴퓨팅 디바이스에서, 서로의 터치 거리 임계값 내에 위치한 센트로이드를 병합하는 것과, 상기 컴퓨팅 디바이스에서, 상기 병합된 센트로이드의 각각의 주변의 클러스터 경계를 검출하는 것-각 클러스터 경계는 상기 입력 프레임의 적어도 하나의 셀을 포함함-을 포함한다.
예 25는 예 24의 내용을 포함하고, 상기 셀을 그룹화하는 것은, 16개의 인접한 셀을 4셀 정사각형 블록으로 그룹화하는 것, 또는 9개의 인접한 셀을 3셀 정사각형 블록으로 그룹화하는 것 중 하나를 구비한다.
예 26은 예 24 및 25 중 하나의 내용을 포함하고, 상기 극댓값 셀을 탐색하는 것은, 상기 신호 임계값보다 크거나 같은 터치 데이터 값을 갖는 극댓값 셀을 탐색하는 것을 구비한다.
예 27은 예 24~26 중 하나의 내용을 포함하고, 상기 센트로이드를 병합하는 것은, 수직 줄무늬로 상기 블록을 순회하고 인접하는 블록에서 상기 터치 거리 임계값보다 적게 수직으로 떨어진 센트로이드를 병합하는 것과, 수평 줄무늬로 상기 블록을 순회하고 인접하는 블록에서 상기 터치 거리 임계값보다 적게 수평으로 떨어진 센트로이드를 병합하는 것과, 대각선으로 인접하는 쌍에서 상기 블록을 순회하고 인접하는 블록에서 상기 터치 거리 임계값보다 적게 대각선으로 떨어진 센트로이드를 병합하는 것을 구비한다.
예 28은 예 24~27 중 하나의 내용을 포함하고, 인접하는 블록에서 상기 센트로이드를 병합하는 것은, 상기 터치 거리 임계값보다 적게 떨어진 센트로이드의 쌍의 제 1 센트로이드 및 제 2 센트로이드를 식별하는 것-상기 제 1 센트로이드는 상기 제 2 센트로이드의 제 2 터치 데이터 값보다 큰 제 1 터치 데이터 값을 포함함-과, 상기 제 2 센트로이드로부터 센트로이드로서의 상기 식별을 제거하는 것을 구비한다.
예 29는 예 24~28 중 하나의 내용을 포함하고, 상기 센트로이드를 병합하는 것은, 순회의 방향으로 2개의 셀보다 적게 떨어진 인접하는 블록에서 센트로이드를 병합하는 것을 구비한다.
예 30은 예 24~29 중 하나의 내용을 포함하고, 수직 줄무늬로 상기 블록을 순회하는 것은, 상기 컴퓨팅 디바이스의 프로세서 그래픽을 사용하여 블록마다 하나의 작업을 디스패치하는 것-각 작업은 인접하는 블록에 위치한 다른 센트로이드로부터 상기 터치 거리 임계값 내에 위치하는 상기 블록 내의 센트로이드를 병합하는 것을 구비함-과, 수직 줄무늬로 상기 블록을 순회하기 위해 상기 프로세서 그래픽의 스코어보드를 사용하여 상기 작업 사이의 데이터 의존성을 설정하는 것을 구비하고, 수평 줄무늬로 상기 블록을 순회하는 것은, 상기 프로세서 그래픽을 사용하여 블록마다 하나의 작업을 디스패치하는 것-각 작업은 상기 인접하는 블록에 위치한 다른 센트로이드로부터 상기 터치 거리 임계값 내에 위치하는 상기 블록 내의 센트로이드를 병합하는 것을 구비함-과, 수평 줄무늬로 상기 블록을 순회하기 위해 상기 프로세서 그래픽의 상기 스코어보드를 사용하여 상기 작업 사이의 데이터 의존성을 설정하는 것을 구비하고, 대각선으로 인접하는 쌍에서 상기 블록을 순회하는 것은, 상기 프로세서 그래픽을 사용하여 4개의 블록의 정사각형 그룹마다 하나의 작업을 디스패치하는 것-각 작업은 인접하는 블록에 위치한 다른 센트로이드로부터 상기 터치 거리 임계값 내에 위치하는 상기 블록의 정사각형 그룹 내의 센트로이드를 병합하는 것을 구비함-과, 대각선으로 인접하는 쌍에서 상기 블록을 순회하기 위해 상기 프로세서 그래픽의 상기 스코어보드를 사용하여 상기 작업 사이의 데이터 의존성을 설정하는 것을 구비한다.
예 31은 예 24~30 중 하나의 내용을 포함하고, 상기 병합된 센트로이드의 각각의 주변의 상기 클러스터 경계를 검출하는 것은, 상기 센트로이드를 둘러싸는 셀에 대하여 상기 입력 프레임으로부터 데이터를 로드하는 것과, 상기 신호 임계값보다 작은 터치 데이터 값을 포함하는 셀을 0으로 하는 것과, 상기 클러스터 경계를 둘러싸는 상기 입력 프레임의 셀을 포함하는 입력 윈도우를 정의하는 것과, 상기 입력 윈도우의 사이즈와 동일한 사이즈를 갖는 비교 윈도우를 만들기 위해 상기 클러스터의 에지 셀을 복제하는 것과, 복수의 에지 셀 차분을 결정하기 위해 상기 비교 윈도우의 대응하는 복제된 에지 셀의 터치 데이터 값으로부터 상기 입력 윈도우의 각 에지 셀의 터치 데이터 값을 감산하는 것과, 상기 에지 셀 차분 중 어느 것도 0보다 작지 않다고 결정하는 것에 응답하여 상기 비교 윈도우 사이즈를 증가시키는 것과, 상기 에지 셀 차분 중 어느 하나가 0보다 작다고 결정하는 것에 응답하여 상기 입력 윈도우에서 유효한 셀의 수를 카운트하는 것-각 유효한 셀은 0보다 작지 않은 대응하는 에지 셀 차분을 가짐-을 구비한다.
예 32는 예 24~31 중 하나의 내용을 포함하고, 상기 입력 프레임 데이터를 로드하는 것은, 상기 센트로이드를 둘러싸는 16×16 정사각형의 셀로부터 데이터를 로드하는 것을 구비한다.
예 33은 예 24~32 중 하나의 내용을 포함하고, 각 에지 셀의 터치 데이터 값을 감산하는 것은, 상기 프로세서 그래픽의 단일-명령-다중-데이터 감산 명령을 사용하여 상기 입력 윈도우의 에지를 제 1 벡터로 압축하는 것과, 상기 비교 윈도우의 에지를 제 2 벡터로 압축하는 것과, 상기 제 2 벡터로부터 상기 제 1 벡터를 감산하는 것을 구비한다.
예 34는 예 24~33 중 하나의 내용을 포함하고, 상기 유효한 셀의 수를 카운트하는 것은, 상기 프로세서 그래픽의 단일-명령-다중-데이터 합계 명령을 사용하여 상기 유효한 셀의 수를 카운트하는 것을 구비한다.
예 35는 예 24~34 중 하나의 내용을 포함하고, 상기 병합된 센트로이드의 각각의 주변의 상기 클러스터 경계를 검출하는 것은, 상기 센트로이드를 둘러싸는 셀에 대하여 상기 입력 프레임으로부터 데이터를 로드하는 것과, 상기 신호 임계값보다 작은 터치 데이터 값을 포함하는 셀을 0으로 하는 것과, 제 1 윈도우 내의 에지 셀의 제 1 최댓값을 계산하는 것과, 상기 센트로이드를 둘러싸는 상기 입력 프레임의 제 2 윈도우 내의 에지 셀의 합계를 계산하는 것-상기 제 2 윈도우는 상기 제 1 윈도우를 둘러쌈-과, 상기 제 2 윈도우 내의 에지 셀의 제 2 최댓값을 계산하는 것과, 상기 합계가 상기 신호 임계값을 곱한 상기 제 2 윈도우 내의 상기 에지 셀의 수보다 작은지 여부를 결정하는 것과, 상기 제 2 최댓값이 상기 제 1 최댓값보다 큰지 여부를 결정하는 것과, 상기 합계가 상기 신호 임계값을 곱한 상기 제 2 윈도우 내의 상기 에지 셀의 수보다 작지 않다고 결정하는 것 및 상기 제 2 최댓값이 상기 제 1 최댓값보다 크지 않다고 결정하는 것에 응답하여 상기 제 1 윈도우 및 상기 제 2 윈도우의 사이즈를 증가시키는 것과, 상기 합계가 상기 신호 임계값을 곱한 상기 제 2 윈도우 내의 상기 에지 셀의 수보다 작다고 결정하는 것 또는 상기 제 2 최댓값이 상기 제 1 최댓값보다 크다고 결정하는 것에 응답하여 상기 제 1 윈도우에서 유효한 셀의 수를 카운트하는 것을 구비한다.
예 36은 예 24~35 중 하나의 내용을 포함하고, 상기 극댓값 셀을 탐색하는 것은, 상기 컴퓨팅 디바이스의 프로세서 그래픽에 의해 실행될 하나의 탐색 작업을 블록마다 할당하는 것과, 상기 프로세서 그래픽의 복수의 실행 유닛을 사용하여 병렬로 상기 탐색 작업을 실행하는 것을 구비하고, 상기 센트로이드를 병합하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 병합 작업을 블록마다 할당하는 것과, 상기 프로세서 그래픽의 복수의 실행 유닛을 사용하여 병렬로 상기 병합 작업을 실행하는 것을 구비하고, 상기 병합된 센트로이드의 각각의 주변의 상기 클러스터 경계를 검출하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 검출 작업을 병합된 센트로이드마다 할당하는 것과, 상기 프로세서 그래픽의 복수의 실행 유닛을 사용하여 병렬로 상기 검출 작업을 실행하는 것을 구비한다.
예 37은 예 24~36 중 하나의 내용을 포함하고, 상기 프로세서 그래픽의 단일-명령-다중-데이터 명령을 사용하여 상기 극댓값 셀을 탐색하는 것, 센트로이드를 병합하는 것, 또는 상기 클러스터 경계를 검출하는 것 중 하나를 행하는 것을 더 포함한다.
예 38은 터치 포인트 추적을 위한 방법으로서, 상기 방법은, 컴퓨팅 디바이스에서, 상기 컴퓨팅 디바이스의 터치 스크린으로부터 수신된 이전의 입력 프레임에서 식별된 복수의 이전에 추적된 터치 포인트의 각각의 위치를 예측하는 것-상기 이전의 입력 프레임은 복수의 셀을 정의함-과, 상기 컴퓨팅 디바이스에서, 상기 터치 스크린으로부터 현재의 입력 프레임을 수신하는 것-상기 현재의 입력 프레임은 복수의 셀을 정의하고 복수의 현재의 터치 포인트를 식별함-과, 상기 컴퓨팅 디바이스에서, 이전에 추적된 터치 포인트의 식별자를 상기 이전에 추적된 터치 포인트의 상기 예측된 위치의 추적 거리 임계값 내에 현재의 위치를 갖는 현재의 터치 포인트에 할당하는 것과, 상기 컴퓨팅 디바이스에서, 상기 현재의 터치 포인트에 할당된 복제된 식별자를 제거하는 것과, 상기 컴퓨팅 디바이스에서, 상기 이전에 추적된 터치 포인트의 각 할당되지 않은 식별자를 (ⅰ) 상기 추적 거리 임계값 내에 상기 이전에 추적된 터치 포인트에 대한 가장 가까운 현재의 터치 포인트이고 (ⅱ) 상기 이전에 추적된 터치 포인트의 식별자를 이전에 할당받지 않은 현재의 터치 포인트에 할당하는 것과, 상기 컴퓨팅 디바이스에서, 고유의 식별자를 각 할당되지 않은 현재의 터치 포인트에 할당하는 것을 구비한다.
예 39는 예 38의 내용을 포함하고, 상기 복수의 이전에 추적된 터치 포인트의 각각의 상기 위치를 예측하는 것은, (ⅰ) 상기 이전의 입력 프레임에서 상기 복수의 이전에 추적된 터치 포인트의 각각의 위치를 결정하는 것, 또는 (ⅱ) 상기 복수의 이전에 추적된 터치 포인트의 각각의 속도를 결정하고 상기 속도에 따라서 상기 위치를 예측하는 것 중 하나를 구비한다.
예 40은 예 38 및 39 중 하나의 내용을 포함하고, 상기 이전에 추적된 터치 포인트의 상기 식별자를 상기 현재의 터치 포인트에 할당하는 것은, 상기 이전에 추적된 터치 포인트의 상기 예측된 위치의 상기 추적 거리 임계값 내에 위치한 상기 입력 프레임의 모든 현재의 터치 포인트를 검색하는 것과, 상기 예측된 위치에 대하여 상기 검색된 현재의 터치 포인트의 가장 가까운 현재의 터치 포인트를 식별하는 것과, 상기 가장 가까운 현재의 터치 포인트의 상기 추적 거리 임계값 내에 예측된 위치를 갖는 모든 이전에 추적된 터치 포인트를 검색하는 것과, 상기 가장 가까운 현재의 터치 포인트에 대하여 상기 검색된 이전에 추적된 터치 포인트의 가장 가까운 이전에 추적된 터치 포인트를 식별하는 것과, 상기 가장 가까운 이전에 추적된 터치 포인트의 식별자를 상기 가장 가까운 현재의 터치 포인트에 할당하는 것을 구비한다.
예 41은 예 38~40 중 하나의 내용을 포함하고, 상기 현재의 터치 포인트에 할당된 상기 복제된 식별자를 제거하는 것은, 상기 이전에 추적된 터치 포인트의 상기 예측된 위치의 상기 추적 거리 임계값 내에 위치한 상기 입력 프레임의 모든 현재의 터치 포인트를 검색하는 것과, 상기 검색된 현재의 터치 포인트 중 2개 이상이 상기 이전에 추적된 터치 포인트의 상기 식별자와 매칭하는 식별자를 갖는지 여부를 결정하는 것과, 상기 검색된 현재의 터치 포인트 중 2개 이상이 상기 이전에 추적된 터치 포인트의 상기 식별자와 매칭하는 식별자를 갖는다고 결정하는 것에 응답하여, (ⅰ) 상기 이전에 추적된 터치 포인트에 가장 가까운 위치 및 (ⅱ) 상기 이전에 추적된 터치 포인트의 상기 식별자와 매칭하는 식별자를 갖는 상기 검색된 현재의 터치 포인트의 가장 가까운 현재의 터치 포인트를 식별하는 것과, 상기 가장 가까운 현재의 터치 포인트의 상기 식별자를 유지하는 것과, 상기 이전에 추적된 터치 포인트의 상기 식별자와 매칭하는 식별자를 갖는 상기 검색된 현재의 터치 포인트의 다른 현재의 터치 포인트의 상기 식별자를 제거하는 것을 구비한다.
예 42는 예 38~41 중 하나의 내용을 포함하고, 상기 현재의 입력 프레임을 수신하는 것은, 상기 컴퓨팅 디바이스의 프로세서 그래픽에 의해 인식되는 이미지 데이터로서 포맷된 상기 현재의 입력 프레임을 수신하는 것을 구비한다.
예 43은 예 38~42 중 하나의 내용을 포함하고, 이미지 데이터로서 포맷된 상기 현재의 입력 프레임을 수신하는 것은, 32비트 플로트 2차원 표면 형식으로 포맷된 상기 현재의 입력 프레임을 수신하는 것을 구비한다.
예 44는 예 38~43 중 하나의 내용을 포함하고, 상기 추적 거리 임계값은 상기 현재의 입력 프레임의 7개의 입력 셀을 구비한다.
예 45는 예 38~44 중 하나의 내용을 포함하고, 상기 이전에 추적된 터치 포인트의 상기 식별자를 할당하는 것은, 상기 컴퓨팅 디바이스의 프로세서 그래픽에 의해 실행될 하나의 할당 작업을 이전에 추적된 터치 포인트마다 할당하는 것과, 상기 프로세서 그래픽의 복수의 실행 유닛을 사용하여 병렬로 상기 탐색 작업을 실행하는 것을 구비하고, 상기 복제된 식별자를 제거하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 제거 작업을 이전에 추적된 터치 포인트마다 할당하는 것과, 상기 프로세서 그래픽의 복수의 실행 유닛을 사용하여 병렬로 상기 제거 작업을 실행하는 것을 구비하고, 각 사용되지 않는 이전에 추적된 터치 포인트의 상기 식별자를 할당하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 할당 작업을 이전에 추적된 터치 포인트마다 할당하는 것과, 상기 프로세서 그래픽의 복수의 실행 유닛을 사용하여 병렬로 상기 할당 작업을 실행하는 것을 구비하고, 고유의 식별자를 각 할당되지 않은 현재의 터치 포인트에 할당하는 것은, 상기 현재의 입력 프레임의 셀을 복수의 블록으로 그룹화하는 것과, 상기 프로세서 그래픽에 의해 실행될 하나의 할당 작업을 블록마다 할당하는 것과, 상기 프로세서 그래픽의 스코어보드를 사용하여 상기 블록 사이의 데이터 의존성을 설정하는 것과, 상기 프로세서 그래픽의 복수의 실행 유닛을 사용하여 병렬로 상기 할당 작업을 실행하는 것을 구비한다.
예 46은 예 38~45 중 하나의 내용을 포함하고, 상기 프로세서 그래픽의 단일-명령-다중-데이터 명령을 사용하여 상기 이전에 추적된 터치 포인트의 상기 식별자를 할당하는 것, 복제된 식별자를 제거하는 것, 각 할당되지 않은 식별자를 할당하는 것, 또는 상기 고유의 식별자를 각 할당되지 않은 현재의 터치 포인트에 할당하는 것 중 적어도 하나를 행하는 것을 더 포함한다.
예 47은 컴퓨팅 디바이스로서, 프로세서와, 상기 프로세서에 의해 실행될 때에 상기 컴퓨팅 디바이스가 예 24~46 중 하나의 방법을 행하게 하는 복수의 명령이 저장된 메모리를 구비하는 컴퓨팅 디바이스를 포함한다.
예 48은 실행되는 것에 응답하여 컴퓨팅 디바이스가 예 24~46 중 하나의 방법을 행하게 하는 저장된 복수의 명령을 구비하는 하나 이상의 머신 판독 가능 저장 매체를 포함한다.
예 49는 터치 포인트 센트로이드 검출을 위한 컴퓨팅 디바이스로서, 예 24~46 중 하나의 방법을 행하는 수단을 구비하는 컴퓨팅 디바이스를 포함한다.
Claims (25)
- 터치 포인트 센트로이드(centroid) 검출을 위한 컴퓨팅 디바이스로서,
프로세서 그래픽과,
터치 스크린과,
상기 터치 스크린으로부터 입력 프레임을 수신하기 위한 입력 프레임 모듈-상기 입력 프레임은 복수의 셀을 규정하고, 각 셀은 터치 데이터 값을 가짐-과,
센트로이드 검출 모듈과,
병렬 디스패치 모듈을 구비하되,
상기 센트로이드 검출 모듈은
상기 입력 프레임의 상기 셀을 복수의 블록으로 그룹화 -각 블록은 미리 결정된 수의 셀을 포함함- 하고,
상기 복수의 블록의 각각 내의 극댓값(local maximum) 셀을 탐색 -상기 극댓값 셀은 신호 임계값과의 미리 정해진 관계를 갖는 터치 데이터 값을 가지고, 상기 극댓값 셀을 탐색하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 탐색 작업을 블록마다 할당하는 것을 포함함- 하고,
상기 극댓값 셀의 각각을 센트로이드로서 식별하고,
서로의 터치 거리 임계값 내에 위치한 센트로이드를 병합 -상기 센트로이드를 병합하는 것은 상기 서로의 터치 거리 임계값 내에 위치한 둘 또는 그 이상의 센트로이드로부터 병합된 센트로이드를 선택하는 것을 포함하고, 상기 센트로이드를 병합하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 병합 작업을 블록마다 할당하는 것을 포함함- 하고,
상기 병합된 센트로이드의 각각의 주변의 클러스터 경계(boundary)를 검출 -각 클러스터 경계는 상기 입력 프레임의 적어도 하나의 셀을 포함하고, 상기 병합된 센트로이드의 각각의 주변의 상기 클러스터 경계를 검출하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 검출 작업을 병합된 센트로이드마다 할당하는 것을 포함함- 하며,
상기 병렬 디스패치 모듈은 상기 프로세서 그래픽의 복수의 실행 유닛을 사용하여 (ⅰ) 상기 탐색 작업을 병렬로 실행하고, (ⅱ) 상기 병합 작업을 병렬로 실행하고, (ⅲ) 상기 검출 작업을 병렬로 실행하는
컴퓨팅 디바이스.
- 제 1 항에 있어서,
상기 센트로이드를 병합하는 것은,
수직 줄무늬(stripe)로 상기 블록을 순회하고(traverse) 인접하는 블록에서 상기 터치 거리 임계값보다 적게 수직으로 떨어진 센트로이드를 병합하는 것과,
수평 줄무늬로 상기 블록을 순회하고 인접하는 블록에서 상기 터치 거리 임계값보다 적게 수평으로 떨어진 센트로이드를 병합하는 것과,
대각선으로 인접하는 쌍(pair)에서 상기 블록을 순회하고 인접하는 블록에서 상기 터치 거리 임계값보다 적게 대각선으로 떨어진 센트로이드를 병합하는 것
을 포함하는 컴퓨팅 디바이스.
- 제 2 항에 있어서,
수직 줄무늬로 상기 블록을 순회하는 것은,
상기 프로세서 그래픽을 사용하여 블록마다 하나의 작업을 디스패치(dispatch)하는 것-각 작업은 상기 인접하는 블록에 위치한 다른 센트로이드로부터 상기 터치 거리 임계값 내에 위치하는 상기 블록 내의 센트로이드를 병합하는 것을 포함함-과,
수직 줄무늬로 상기 블록을 순회하기 위해 상기 프로세서 그래픽의 스코어보드를 사용하여 상기 작업 사이의 데이터 의존성을 설정하는 것
을 포함하고,
수평 줄무늬로 상기 블록을 순회하는 것은,
상기 프로세서 그래픽을 사용하여 블록마다 하나의 작업을 디스패치하는 것-각 작업은 상기 인접하는 블록에 위치한 다른 센트로이드로부터 상기 터치 거리 임계값 내에 위치하는 상기 블록 내의 센트로이드를 병합하는 것을 포함함-과,
수평 줄무늬로 상기 블록을 순회하기 위해 상기 프로세서 그래픽의 상기 스코어보드를 사용하여 상기 작업 사이의 데이터 의존성을 설정하는 것
을 포함하고,
대각선으로 인접하는 쌍에서 상기 블록을 순회하는 것은,
상기 프로세서 그래픽을 사용하여 4개의 블록의 정사각형 그룹마다 하나의 작업을 디스패치하는 것-각 작업은 인접하는 블록에 위치한 다른 센트로이드로부터 상기 터치 거리 임계값 내에 위치하는 상기 블록의 정사각형 그룹 내의 센트로이드를 병합하는 것을 포함함-과,
대각선으로 인접하는 쌍에서 상기 블록을 순회하기 위해 상기 프로세서 그래픽의 상기 스코어보드를 사용하여 상기 작업 사이의 데이터 의존성을 설정하는 것
을 포함하는
컴퓨팅 디바이스.
- 제 1 항에 있어서,
상기 병합된 센트로이드의 각각의 주변의 상기 클러스터 경계를 검출하는 것은,
상기 센트로이드를 둘러싸는 셀에 대하여 상기 입력 프레임으로부터 데이터를 로드하는 것과,
상기 신호 임계값보다 작은 터치 데이터 값을 포함하는 셀을 0으로 하는 것과,
상기 클러스터 경계를 둘러싸는 상기 입력 프레임의 셀을 포함하는 입력 윈도우를 정의하는 것과,
상기 입력 윈도우의 사이즈와 동일한 사이즈를 갖는 비교 윈도우를 만들기 위해 상기 클러스터의 에지 셀을 복제하는 것과,
복수의 에지 셀 차분을 결정하기 위해 상기 비교 윈도우의 대응하는 복제된 에지 셀의 터치 데이터 값으로부터 상기 입력 윈도우의 각 에지 셀의 터치 데이터 값을 감산하는 것과,
상기 에지 셀 차분 중 어느 것도 0보다 작지 않다는 결정에 응답하여 상기 비교 윈도우 사이즈를 증가시키는 것과,
상기 에지 셀 차분 중 어느 하나가 0보다 작다는 결정에 응답하여 상기 입력 윈도우에서 유효한 셀의 수를 카운트하는 것-각 유효한 셀은 0보다 작지 않은 대응하는 에지 셀 차분을 가짐-
을 포함하는
컴퓨팅 디바이스.
- 제 1 항에 있어서,
상기 병합된 센트로이드의 각각의 주변의 상기 클러스터 경계를 검출하는 것은,
상기 센트로이드를 둘러싸는 셀에 대하여 상기 입력 프레임으로부터 데이터를 로드하는 것과,
상기 신호 임계값보다 작은 터치 데이터 값을 포함하는 셀을 0으로 하는 것과,
제 1 윈도우 내의 에지 셀의 제 1 최댓값을 계산하는 것과,
상기 센트로이드를 둘러싸는 상기 입력 프레임의 제 2 윈도우 내의 에지 셀의 합계를 계산하는 것-상기 제 2 윈도우는 상기 제 1 윈도우를 둘러쌈-과,
상기 제 2 윈도우 내의 에지 셀의 제 2 최댓값을 계산하는 것과,
상기 합계가 상기 신호 임계값을 곱한 상기 제 2 윈도우 내의 상기 에지 셀의 수보다 작은지 여부를 결정하는 것과,
상기 제 2 최댓값이 상기 제 1 최댓값보다 큰지 여부를 결정하는 것과,
상기 합계가 상기 신호 임계값을 곱한 상기 제 2 윈도우 내의 상기 에지 셀의 수보다 작지 않다는 결정 및 상기 제 2 최댓값이 상기 제 1 최댓값보다 크지 않다는 결정에 응답하여 상기 제 1 윈도우 및 상기 제 2 윈도우의 사이즈를 증가시키는 것과,
상기 합계가 상기 신호 임계값을 곱한 상기 제 2 윈도우 내의 상기 에지 셀의 수보다 작다는 결정 또는 상기 제 2 최댓값이 상기 제 1 최댓값보다 크다는 결정에 응답하여 상기 제 1 윈도우에서 유효한 셀의 수를 카운트하는 것
을 포함하는
컴퓨팅 디바이스.
- 삭제
- 제 1 항에 있어서,
상기 센트로이드 검출 모듈은 상기 프로세서 그래픽의 단일-명령-다중-데이터(single-instruction-multiple-data) 명령을 사용하여 상기 극댓값 셀을 탐색하는 것, 센트로이드를 병합하는 것, 또는 상기 클러스터 경계를 검출하는 것 중 적어도 하나를 행하는 컴퓨팅 디바이스.
- 컴퓨팅 디바이스에서 터치 포인트 센트로이드를 검출하는 방법으로서,
상기 컴퓨팅 디바이스에서, 상기 컴퓨팅 디바이스의 터치 스크린으로부터 입력 프레임을 수신하는 것-상기 입력 프레임은 복수의 셀을 규정하고, 각 셀은 터치 데이터 값을 가짐-과,
상기 컴퓨팅 디바이스에서, 상기 입력 프레임의 상기 셀을 복수의 블록으로 그룹화하는 것 -각 블록은 미리 결정된 수의 셀을 포함함- 과,
상기 컴퓨팅 디바이스에서, 상기 복수의 블록의 각각 내의 극댓값 셀을 탐색하는 것 -상기 극댓값 셀은 신호 임계값과의 미리 정해진 관계를 갖는 터치 데이터 값을 갖고, 상기 극댓값 셀을 탐색하는 것은, 상기 컴퓨팅 디바이스의 프로세서 그래픽에 의해 실행될 하나의 탐색 작업을 블록마다 할당하는 것과 상기 프로세서 그래픽의 복수의 실행 유닛을 사용하여 상기 탐색 작업을 병렬로 실행하는 것을 포함함- 과,
상기 컴퓨팅 디바이스에서, 상기 극댓값 셀의 각각을 센트로이드로서 식별하는 것과,
상기 컴퓨팅 디바이스에서, 서로의 터치 거리 임계값 내에 위치한 센트로이드를 병합하는 것 - 상기 센트로이드를 병합하는 것은 상기 서로의 터치 거리 임계값 내에 위치한 둘 또는 그 이상의 센트로이드로부터 병합된 센트로이드를 선택하는 것을 포함하고, 상기 센트로이드를 병합하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 병합 작업을 블록마다 할당하는 것과 상기 프로세서 그래픽의 복수의 실행 유닛을 사용하여 상기 병합 작업을 병렬로 실행하는 것을 포함함- 과,
상기 컴퓨팅 디바이스에서, 상기 병합된 센트로이드의 각각의 주변의 클러스터 경계를 검출하는 것 -각 클러스터 경계는 상기 입력 프레임의 적어도 하나의 셀을 포함하고, 상기 병합된 센트로이드의 각각의 주변의 상기 클러스터 경계를 검출하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 검출 작업을 병합된 센트로이드마다 할당하는 것과 상기 프로세서 그래픽의 복수의 실행 유닛을 사용하여 상기 검출 작업을 병렬로 실행하는 것을 포함함- 을 포함하는
방법.
- 제 8 항에 있어서,
상기 센트로이드를 병합하는 것은,
수직 줄무늬로 상기 블록을 순회하고 인접하는 블록에서 상기 터치 거리 임계값보다 적게 수직으로 떨어진 센트로이드를 병합하는 것과,
수평 줄무늬로 상기 블록을 순회하고 인접하는 블록에서 상기 터치 거리 임계값보다 적게 수평으로 떨어진 센트로이드를 병합하는 것과,
대각선으로 인접하는 쌍에서 상기 블록을 순회하고 인접하는 블록에서 상기 터치 거리 임계값보다 적게 대각선으로 떨어진 센트로이드를 병합하는 것
을 포함하는
방법.
- 제 8 항에 있어서,
상기 병합된 센트로이드의 각각의 주변의 상기 클러스터 경계를 검출하는 것은,
상기 센트로이드를 둘러싸는 셀에 대하여 상기 입력 프레임으로부터 데이터를 로드하는 것과,
상기 신호 임계값보다 작은 터치 데이터 값을 포함하는 셀을 0으로 하는 것과,
상기 클러스터 경계를 둘러싸는 상기 입력 프레임의 셀을 포함하는 입력 윈도우를 정의하는 것과,
상기 입력 윈도우의 사이즈와 동일한 사이즈를 갖는 비교 윈도우를 만들기 위해 상기 클러스터의 에지 셀을 복제하는 것과,
복수의 에지 셀 차분을 결정하기 위해 상기 비교 윈도우의 대응하는 복제된 에지 셀의 터치 데이터 값으로부터 상기 입력 윈도우의 각 에지 셀의 터치 데이터 값을 감산하는 것과,
상기 에지 셀 차분 중 어느 것도 0보다 작지 않다고 결정하는 것에 응답하여 상기 비교 윈도우 사이즈를 증가시키는 것과,
상기 에지 셀 차분 중 어느 하나가 0보다 작다고 결정하는 것에 응답하여 상기 입력 윈도우에서 유효한 셀의 수를 카운트하는 것-각 유효한 셀은 0보다 작지 않은 대응하는 에지 셀 차분을 가짐-
을 포함하는
방법.
- 제 8 항에 있어서,
상기 병합된 센트로이드의 각각의 주변의 상기 클러스터 경계를 검출하는 것은,
상기 센트로이드를 둘러싸는 셀에 대하여 상기 입력 프레임으로부터 데이터를 로드하는 것과,
상기 신호 임계값보다 작은 터치 데이터 값을 포함하는 셀을 0으로 하는 것과,
제 1 윈도우 내의 에지 셀의 제 1 최댓값을 계산하는 것과,
상기 센트로이드를 둘러싸는 상기 입력 프레임의 제 2 윈도우 내의 에지 셀의 합계를 계산하는 것-상기 제 2 윈도우는 상기 제 1 윈도우를 둘러쌈-과,
상기 제 2 윈도우 내의 에지 셀의 제 2 최댓값을 계산하는 것과,
상기 합계가 상기 신호 임계값을 곱한 상기 제 2 윈도우 내의 상기 에지 셀의 수보다 작은지 여부를 결정하는 것과,
상기 제 2 최댓값이 상기 제 1 최댓값보다 큰지 여부를 결정하는 것과,
상기 합계가 상기 신호 임계값을 곱한 상기 제 2 윈도우 내의 상기 에지 셀의 수보다 작지 않다고 결정하는 것 및 상기 제 2 최댓값이 상기 제 1 최댓값보다 크지 않다고 결정하는 것에 응답하여 상기 제 1 윈도우 및 상기 제 2 윈도우의 사이즈를 증가시키는 것과,
상기 합계가 상기 신호 임계값을 곱한 상기 제 2 윈도우 내의 상기 에지 셀의 수보다 작다고 결정하는 것 또는 상기 제 2 최댓값이 상기 제 1 최댓값보다 크다고 결정하는 것에 응답하여 상기 제 1 윈도우에서 유효한 셀의 수를 카운트하는 것
을 포함하는
방법.
- 삭제
- 실행되는 것에 응답하여 컴퓨팅 디바이스가,
상기 컴퓨팅 디바이스의 터치 스크린으로부터 입력 프레임을 수신하고 -상기 입력 프레임은 복수의 셀을 규정하고, 각 셀은 터치 데이터 값을 갖고, 각 블록은 미리 결정된 수의 셀을 포함함-,
상기 입력 프레임의 상기 셀을 복수의 블록으로 그룹화하고,
상기 복수의 블록의 각각 내의 극댓값 셀을 탐색하고 -상기 극댓값 셀은 신호 임계값과의 미리 정해진 관계를 갖는 터치 데이터 값을 갖고, 상기 극댓값 셀을 탐색하는 것은, 상기 컴퓨팅 디바이스의 프로세서 그래픽에 의해 실행될 하나의 탐색 작업을 블록마다 할당하는 것을 포함함-,
상기 극댓값 셀의 각각을 센트로이드로서 식별하고,
서로의 터치 거리 임계값 내에 위치한 센트로이드를 병합 -상기 센트로이드를 병합하는 것은 상기 서로의 터치 거리 임계값 내에 위치한 둘 또는 그 이상의 센트로이드로부터 병합된 센트로이드를 선택하는 것을 포함하고, 상기 센트로이드를 병합하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 병합 작업을 블록마다 할당하는 것을 포함함- 하고,
상기 병합된 센트로이드의 각각의 주변의 클러스터 경계를 검출 -각 클러스터 경계는 상기 입력 프레임의 적어도 하나의 셀을 포함하고, 상기 병합된 센트로이드의 각각의 주변의 상기 클러스터 경계를 검출하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 검출 작업을 병합된 센트로이드마다 할당하는 것을 포함함- 하고,
상기 프로세서 그래픽의 복수의 실행 유닛을 사용하여 (ⅰ) 상기 탐색 작업을 병렬로 실행하고, (ⅱ) 상기 병합 작업을 병렬로 실행하고, (ⅲ) 상기 검출 작업을 병렬로 실행하게 하는
복수의 명령을 구비하는
하나 이상의 머신 판독 가능 저장 매체.
- 제 13 항에 있어서,
상기 센트로이드를 병합하는 것은,
수직 줄무늬로 상기 블록을 순회하고 인접하는 블록에서 상기 터치 거리 임계값보다 적게 수직으로 떨어진 센트로이드를 병합하는 것과,
수평 줄무늬로 상기 블록을 순회하고 인접하는 블록에서 상기 터치 거리 임계값보다 적게 수평으로 떨어진 센트로이드를 병합하는 것과,
대각선으로 인접하는 쌍에서 상기 블록을 순회하고 인접하는 블록에서 상기 터치 거리 임계값보다 적게 대각선으로 떨어진 센트로이드를 병합하는 것
을 포함하는
머신 판독 가능 저장 매체.
- 제 14 항에 있어서,
수직 줄무늬로 상기 블록을 순회하는 것은,
상기 컴퓨팅 디바이스의 프로세서 그래픽을 사용하여 블록마다 하나의 작업을 디스패치하는 것-각 작업은 실행되는 것에 응답하여 상기 컴퓨팅 디바이스가 상기 인접하는 블록에 위치한 다른 센트로이드로부터 상기 터치 거리 임계값 내에 위치하는 상기 블록 내의 센트로이드를 병합하게 하는 복수의 명령을 구비함-과,
수직 줄무늬로 상기 블록을 순회하기 위해 상기 프로세서 그래픽의 스코어보드를 사용하여 상기 작업 사이의 데이터 의존성을 설정하는 것
을 포함하고,
수평 줄무늬로 상기 블록을 순회하는 것은,
상기 프로세서 그래픽을 사용하여 블록마다 하나의 작업을 디스패치하는 것-각 작업은 실행되는 것에 응답하여 상기 컴퓨팅 디바이스가 상기 인접하는 블록에 위치한 다른 센트로이드로부터 상기 터치 거리 임계값 내에 위치하는 상기 블록 내의 센트로이드를 병합하게 하는 복수의 명령을 구비함-과,
수평 줄무늬로 상기 블록을 순회하기 위해 상기 프로세서 그래픽의 상기 스코어보드를 사용하여 상기 작업 사이의 데이터 의존성을 설정하는 것
을 포함하고,
대각선으로 인접하는 쌍에서 상기 블록을 순회하는 것은,
상기 컴퓨팅 디바이스의 프로세서 그래픽을 사용하여 4개의 블록의 정사각형 그룹마다 하나의 작업을 디스패치하는 것-각 작업은 실행되는 것에 응답하여 상기 컴퓨팅 디바이스가 인접하는 블록에 위치한 다른 센트로이드로부터 상기 터치 거리 임계값 내에 위치하는 상기 블록의 정사각형 그룹 내의 센트로이드를 병합하게 하는 복수의 명령을 구비함-과,
대각선으로 인접하는 쌍에서 상기 블록을 순회하기 위해 상기 프로세서 그래픽의 스코어보드를 사용하여 상기 작업 사이의 데이터 의존성을 설정하는 것
을 포함하는
머신 판독 가능 저장 매체.
- 제 13 항에 있어서,
상기 병합된 센트로이드의 각각의 주변의 상기 클러스터 경계를 검출하는 것은,
상기 센트로이드를 둘러싸는 셀에 대하여 상기 입력 프레임으로부터 데이터를 로드하는 것과,
상기 신호 임계값보다 작은 터치 데이터 값을 포함하는 셀을 0으로 하는 것과,
상기 클러스터 경계를 둘러싸는 상기 입력 프레임의 셀을 포함하는 입력 윈도우를 정의하는 것과,
상기 입력 윈도우의 사이즈와 동일한 사이즈를 갖는 비교 윈도우를 만들기 위해 상기 클러스터의 에지 셀을 복제하는 것과,
복수의 에지 셀 차분을 결정하기 위해 상기 비교 윈도우의 대응하는 복제된 에지 셀의 터치 데이터 값으로부터 상기 입력 윈도우의 각 에지 셀의 터치 데이터 값을 감산하는 것과,
상기 에지 셀 차분 중 어느 것도 0보다 작지 않다고 결정하는 것에 응답하여 상기 비교 윈도우 사이즈를 증가시키는 것과,
상기 에지 셀 차분 중 어느 하나가 0보다 작다고 결정하는 것에 응답하여 상기 입력 윈도우에서 유효한 셀의 수를 카운트하는 것-각 유효한 셀은 0보다 작지 않은 대응하는 에지 셀 차분을 가짐-
을 포함하는
머신 판독 가능 저장 매체.
- 제 13 항에 있어서,
상기 병합된 센트로이드의 각각의 주변의 상기 클러스터 경계를 검출하는 것은,
상기 센트로이드를 둘러싸는 셀에 대하여 상기 입력 프레임으로부터 데이터를 로드하는 것과,
상기 신호 임계값보다 작은 터치 데이터 값을 포함하는 셀을 0으로 하는 것과,
제 1 윈도우 내의 에지 셀의 제 1 최댓값을 계산하는 것과,
상기 센트로이드를 둘러싸는 상기 입력 프레임의 제 2 윈도우 내의 에지 셀의 합계를 계산하는 것-상기 제 2 윈도우는 상기 제 1 윈도우를 둘러쌈-과,
상기 제 2 윈도우 내의 에지 셀의 제 2 최댓값을 계산하는 것과,
상기 합계가 상기 신호 임계값을 곱한 상기 제 2 윈도우 내의 상기 에지 셀의 수보다 작은지 여부를 결정하는 것과,
상기 제 2 최댓값이 상기 제 1 최댓값보다 큰지 여부를 결정하는 것과,
상기 합계가 상기 신호 임계값을 곱한 상기 제 2 윈도우 내의 상기 에지 셀의 수보다 작지 않다고 결정하는 것 및 상기 제 2 최댓값이 상기 제 1 최댓값보다 크지 않다고 결정하는 것에 응답하여 상기 제 1 윈도우 및 상기 제 2 윈도우의 사이즈를 증가시키는 것과,
상기 합계가 상기 신호 임계값을 곱한 상기 제 2 윈도우 내의 상기 에지 셀의 수보다 작다고 결정하는 것 또는 상기 제 2 최댓값이 상기 제 1 최댓값보다 크다고 결정하는 것에 응답하여 상기 제 1 윈도우에서 유효한 셀의 수를 카운트하는 것
을 포함하는
머신 판독 가능 저장 매체.
- 삭제
- 제 13 항에 있어서,
상기 복수의 명령은 상기 프로세서 그래픽의 단일-명령-다중-데이터 명령을 구비하는 머신 판독 가능 저장 매체.
- 터치 포인트 추적을 위한 컴퓨팅 디바이스로서,
터치 스크린과,
프로세서 그래픽과,
(ⅰ) 상기 터치 스크린으로부터 이전의 입력 프레임을 수신하고-상기 이전의 입력 프레임은 복수의 이전에 추적된 터치 포인트를 식별하는 복수의 셀을 정의함-, (ⅱ) 상기 터치 스크린으로부터 현재의 입력 프레임을 수신하는-상기 현재의 입력 프레임은 복수의 셀을 정의하고 복수의 현재의 터치 포인트를 식별함- 입력 프레임 모듈과,
상기 이전의 입력 프레임에서 식별된 상기 복수의 이전에 추적된 터치 포인트의 각각의 위치를 예측하고,
이전에 추적된 터치 포인트의 식별자를 상기 이전에 추적된 터치 포인트의 상기 예측된 위치의 추적 거리 임계값 내에 현재의 위치를 갖는 현재의 터치 포인트에 할당하고 -상기 이전에 추적된 터치 포인트의 상기 식별자를 할당하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 할당 작업을 이전에 추적된 터치 포인트마다 할당하는 것을 포함함-,
상기 현재의 터치 포인트에 할당된 복제된 식별자를 제거하고 -상기 복제된 식별자를 제거하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 제거 작업을 이전에 추적된 터치 포인트마다 할당하는 것을 포함함- ,
상기 이전에 추적된 터치 포인트의 각 할당되지 않은 식별자를 (ⅰ) 상기 추적 거리 임계값 내에 상기 이전에 추적된 터치 포인트에 대한 가장 가까운 현재의 터치 포인트이고, (ⅱ) 상기 이전에 추적된 터치 포인트의 식별자를 이전에 할당받지 않은 현재의 터치 포인트에 할당하고 -각 사용되지 않는 이전에 추적된 터치 포인트의 상기 식별자를 할당하는 것은, 상기 프로세서 그래픽에 의해 실행될 하나의 사용되지 않는 식별자 할당 작업을 이전에 추적된 터치 포인트마다 할당하는 것을 포함함-,
고유의 식별자를 각 할당되지 않은 현재의 터치 포인트에 할당 -고유의 식별자를 각 할당되지 않은 현재의 터치 포인트에 할당하는 것은, 상기 현재의 입력 프레임의 셀을 복수의 블록으로 그룹화하는 것과, 상기 프로세서 그래픽에 의해 실행될 하나의 고유의 식별자 할당 작업을 블록마다 할당하는 것과, 상기 프로세서 그래픽의 스코어보드를 사용하여 상기 블록 사이의 데이터 의존성을 설정하는 것을 포함함- 하는
터치 포인트 추적 모듈과
상기 프로세서 그래픽의 복수의 실행 유닛을 사용하여 (ⅰ) 병렬로 상기 할당 작업을, (ⅱ) 병렬로 상기 제거 작업을, (ⅲ) 병렬로 상기 사용되지 않는 식별자 할당 작업을, (ⅳ) 병렬로 상기 고유의 식별자 할당 작업을 실행하는 병렬 디스패치 모듈
을 구비하는 컴퓨팅 디바이스.
- 제 20 항에 있어서,
상기 이전에 추적된 터치 포인트의 상기 식별자를 상기 현재의 터치 포인트에 할당하는 것은,
상기 이전에 추적된 터치 포인트의 상기 예측된 위치의 상기 추적 거리 임계값 내에 위치한 상기 입력 프레임의 모든 현재의 터치 포인트를 검색하는 것과,
상기 예측된 위치에 대하여 상기 검색된 현재의 터치 포인트의 가장 가까운 현재의 터치 포인트를 식별하는 것과,
상기 가장 가까운 현재의 터치 포인트의 상기 추적 거리 임계값 내에 예측된 위치를 갖는 모든 이전에 추적된 터치 포인트를 검색하는 것과,
상기 가장 가까운 현재의 터치 포인트에 대하여 상기 검색된 이전에 추적된 터치 포인트의 가장 가까운 이전에 추적된 터치 포인트를 식별하는 것과,
상기 가장 가까운 이전에 추적된 터치 포인트의 식별자를 상기 가장 가까운 현재의 터치 포인트에 할당하는 것
을 포함하는
컴퓨팅 디바이스.
- 제 20 항에 있어서,
상기 현재의 터치 포인트에 할당된 상기 복제된 식별자를 제거하는 것은,
상기 이전에 추적된 터치 포인트의 상기 예측된 위치의 상기 추적 거리 임계값 내에 위치한 상기 입력 프레임의 모든 현재의 터치 포인트를 검색하는 것과,
상기 검색된 현재의 터치 포인트 중 2개 이상이 상기 이전에 추적된 터치 포인트의 상기 식별자와 매칭하는 식별자를 갖는지 여부를 결정하는 것과,
상기 검색된 현재의 터치 포인트 중 2개 이상이 상기 이전에 추적된 터치 포인트의 상기 식별자와 매칭하는 식별자를 갖는다는 결정에 응답하여,
(ⅰ) 상기 이전에 추적된 터치 포인트에 가장 가까운 위치 및 (ⅱ) 상기 이전에 추적된 터치 포인트의 상기 식별자와 매칭하는 식별자를 갖는 상기 검색된 현재의 터치 포인트의 가장 가까운 현재의 터치 포인트를 식별하는 것과,
상기 가장 가까운 현재의 터치 포인트의 상기 식별자를 유지하는 것과,
상기 이전에 추적된 터치 포인트의 상기 식별자와 매칭하는 식별자를 갖는 상기 검색된 현재의 터치 포인트의 다른 현재의 터치 포인트의 상기 식별자를 제거하는 것
을 포함하는
컴퓨팅 디바이스.
- 제 20 항에 있어서,
상기 현재의 입력 프레임은 상기 컴퓨팅 디바이스의 프로세서 그래픽에 의해 인식되는 이미지 데이터로서 포맷된 현재의 입력 프레임을 구비하는 컴퓨팅 디바이스.
- 삭제
- 제 20 항에 있어서,
상기 터치 포인트 추적 모듈은 상기 프로세서 그래픽의 단일-명령-다중-데이터 명령을 사용하여 상기 이전에 추적된 터치 포인트의 상기 식별자를 할당하는 것, 복제된 식별자를 제거하는 것, 각 할당되지 않은 식별자를 할당하는 것, 또는 상기 고유의 식별자를 각 할당되지 않은 현재의 터치 포인트에 할당하는 것 중 적어도 하나를 행하는 컴퓨팅 디바이스.
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 |
---|---|
KR20160003166A KR20160003166A (ko) | 2016-01-08 |
KR101784758B1 true KR101784758B1 (ko) | 2017-10-12 |
Family
ID=52142469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157033863A KR101784758B1 (ko) | 2013-06-28 | 2013-06-28 | 프로세서 그래픽을 사용하는 병렬 터치 포인트 검출 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9448663B2 (ko) |
EP (1) | EP3014401A4 (ko) |
JP (1) | JP6099234B2 (ko) |
KR (1) | KR101784758B1 (ko) |
CN (1) | CN105247456B (ko) |
WO (1) | WO2014209335A1 (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9213458B2 (en) * | 2013-10-14 | 2015-12-15 | Parade Technologies, Ltd. | Hover position calculation in a touchscreen device |
US9983738B2 (en) | 2013-10-14 | 2018-05-29 | Parade Technologies, Ltd. | Contact detection mode switching 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 |
CN105912166B (zh) * | 2016-04-15 | 2019-03-26 | 惠州Tcl移动通信有限公司 | 一种移动终端触摸屏检测方法及系统 |
CN105975119B (zh) * | 2016-04-21 | 2018-11-30 | 北京集创北方科技股份有限公司 | 多目标追踪方法、触摸屏控制方法及系统 |
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 |
US11893189B2 (en) | 2020-02-10 | 2024-02-06 | Flatfrog Laboratories Ab | Touch-sensing apparatus |
KR20210116936A (ko) * | 2020-03-18 | 2021-09-28 | 주식회사 실리콘웍스 | 터치 감지 장치 및 그 방법 |
Citations (1)
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 |
Family Cites Families (18)
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 |
KR20120094929A (ko) * | 2009-10-16 | 2012-08-27 | 알피오 피티와이 리미티드 | 터치 오브젝트를 감지하고 추적하는 방법 |
EP2583159B1 (en) * | 2010-06-21 | 2017-05-31 | Microsoft Technology Licensing, LLC | 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 |
CN103098012B (zh) * | 2010-09-15 | 2016-06-08 | 先进矽有限公司 | 用于检测多点触控设备上任意数量触摸的方法 |
KR101201979B1 (ko) * | 2010-10-21 | 2012-11-15 | 주식회사 애트랩 | 입력 장치 및 이 장치의 접촉 위치 검출 방법 |
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 |
US9542092B2 (en) * | 2011-02-12 | 2017-01-10 | Microsoft Technology Licensing, Llc | Prediction-based touch contact tracking |
CN102890576B (zh) * | 2011-07-22 | 2016-03-02 | 宸鸿科技(厦门)有限公司 | 触控屏触摸轨迹检测方法及检测装置 |
KR20130018600A (ko) * | 2011-08-08 | 2013-02-25 | 누보톤 테크놀로지 코포레이션 | 표면-정전용량형 터치 패널들에서 다수의 터치 포인트들을 검출하기 위한 시스템들 및 방법들 |
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 JP JP2016521391A patent/JP6099234B2/ja active Active
- 2013-06-28 CN CN201380076996.8A patent/CN105247456B/zh active Active
- 2013-06-28 US US14/129,427 patent/US9448663B2/en active Active
- 2013-06-28 WO PCT/US2013/048435 patent/WO2014209335A1/en active Application Filing
- 2013-06-28 KR KR1020157033863A patent/KR101784758B1/ko active IP Right Grant
Patent Citations (1)
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 |
Also Published As
Publication number | Publication date |
---|---|
EP3014401A1 (en) | 2016-05-04 |
KR20160003166A (ko) | 2016-01-08 |
EP3014401A4 (en) | 2017-02-08 |
JP2016522522A (ja) | 2016-07-28 |
US20160098148A1 (en) | 2016-04-07 |
JP6099234B2 (ja) | 2017-03-22 |
US9448663B2 (en) | 2016-09-20 |
WO2014209335A1 (en) | 2014-12-31 |
CN105247456B (zh) | 2018-06-26 |
CN105247456A (zh) | 2016-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101784758B1 (ko) | 프로세서 그래픽을 사용하는 병렬 터치 포인트 검출 | |
US8717304B2 (en) | Apparatus, method, and medium for multi-touch decision | |
US9762834B2 (en) | Configurable hardware for computing computer vision features | |
US9746975B2 (en) | Capacitive measurement processing for mode changes | |
EP3035241B1 (en) | Performing object detection | |
CN105740078B (zh) | 一种内存管理方法、装置及终端 | |
US20150002405A1 (en) | Input object classification | |
KR101544309B1 (ko) | 스트림 기반의 비휘발성 메모리 제어 방법 및 장치 | |
TW201303686A (zh) | 電容式觸控螢幕系統及其操作方法 | |
KR20160109992A (ko) | 커널 퓨징, 리사이징 및 인터리빙 자동 연산 방법 | |
KR101996641B1 (ko) | 메모리 오버레이 장치 및 방법 | |
CN113625973A (zh) | 数据写入方法、装置、电子设备及计算机可读存储介质 | |
CN104252263A (zh) | 电子设备及其触摸感测方法 | |
US20150277609A1 (en) | Touch data segmentation method of touch controller | |
Park et al. | A vision processor with a unified interest-point detection and matching hardware for accelerating a stereo-matching algorithm | |
US11507290B2 (en) | Method and apparatus for storage device management | |
CN105892895A (zh) | 多指滑动手势的识别方法、装置及终端设备 | |
CN109298809A (zh) | 一种触控动作识别方法、装置及终端设备 | |
GB2517335A (en) | Information processing device, program, and method for identifying result of joining plurality of elements | |
KR102647885B1 (ko) | 전자 장치와 그 제어 방법 및 디스플레이 장치 | |
KR101549213B1 (ko) | 터치 스크린 상에서 터치 포인트를 검출하기 위한 장치 및 그 방법 | |
CN114201729A (zh) | 一种矩阵运算方式的选择方法、装置、设备以及存储介质 | |
KR102179399B1 (ko) | 다양한 속성들에 근거한 스마트 입/출력 스트림 검출 | |
CN111897632A (zh) | 一种中断处理方法、装置、电子设备及存储介质 | |
US20240256080A1 (en) | Method and apparatus for separating touches from merged touch data in capacitive touch screens |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |