KR20180130505A - 동적 및 확률적 작업 트리밍에 의한 기하학적 작업 스케줄링 - Google Patents

동적 및 확률적 작업 트리밍에 의한 기하학적 작업 스케줄링 Download PDF

Info

Publication number
KR20180130505A
KR20180130505A KR1020187028004A KR20187028004A KR20180130505A KR 20180130505 A KR20180130505 A KR 20180130505A KR 1020187028004 A KR1020187028004 A KR 1020187028004A KR 20187028004 A KR20187028004 A KR 20187028004A KR 20180130505 A KR20180130505 A KR 20180130505A
Authority
KR
South Korea
Prior art keywords
work
processor
areas
image
task
Prior art date
Application number
KR1020187028004A
Other languages
English (en)
Inventor
투샤르 쿠마르
원하오 지아
아룬 라만
후이 차오
원지아 롼
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20180130505A publication Critical patent/KR20180130505A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4038Image mosaicing, e.g. composing plane images from plane sub-images
    • G06K9/36
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/30Determination of transform parameters for the alignment of images, i.e. image registration
    • G06T7/33Determination of transform parameters for the alignment of images, i.e. image registration using feature-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/64Computer-aided capture of images, e.g. transfer from script file into camera, check of taken image quality, advice or proposal for image composition or decision on when to take image
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/698Control of cameras or camera modules for achieving an enlarged field of view, e.g. panoramic image capture
    • H04N5/23222
    • H04N5/23238

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Editing Of Facsimile Originals (AREA)

Abstract

다양한 실시형태들은 지오메트리 기반 작업 실행 우선순위화를 위한 컴퓨팅 디바이스들의 프로세서들에 의해 실행되는 방법들을 포함한다. 프로세서는 이미지들과 같은 이벤트들을 수신한다. 프로세서는 경계 형상 외측에 놓여 있는 이벤트의 폐기 영역들을 식별하기 위해 이벤트 상에 경계 형상을 오버레이할 수도 있다. 프로세서는 작업 경계 형상 내에 놓여 있는 이벤트들의 작업 영역들을 식별할 수도 있다. 디바이스들은 이벤트들의 식별된 작업 영역들의 각각에 대해 소거 가능도를 결정할 수도 있다. 프로세서는 결정된 소거 가능도들에 기초하여 식별된 작업 영역들의 각각에 트리밍 가중치를 할당할 수도 있다. 프로세서는 그 후 할당된 트리밍 가중치들에 기초한 순서로 실행 작업 리스트에 작업 아이템들로서 식별된 작업 영역들의 각각을 부가할 수도 있다. 작업 아이템들은 트리밍 가중치 우선순위의 순서로 프로세싱될 수도 있다.

Description

동적 및 확률적 작업 트리밍에 의한 기하학적 작업 스케줄링
본 출원은 2016 년 3 월 31 일에 출원된 명칭이 "Geometric Work Scheduling with Dynamic and Probabilistic Work Trimming" 인 U.S. 가출원 제 62/316,235 호의 35 U.S.C.§119(e) 하의 우선권 이익을 주장하며, 그 전체 내용은 모두 본 명세서에 참조로서 통합된다.
이미지를 캡처하고 비디오 콘텐츠를 기록하는 모바일 디바이스 카메라의 사용은 많은 수의 어플리케이션들은 사용자들이 멀티미디어 콘텐츠를 사용하거나 공유하도록 허용함에 따라 계속 증가하고 있다. 컴퓨터 프로세싱 리소스에 대한 상당한 요구들이 있는 이미지 프로세싱 및 이미지 생성의 많은 어플리케이션들이 있다. 2 가지 예들은 이미지 프레임들을 함께 스티칭하는 한편 사용자는 셀 폰을 팬 (pan) 하여 파노라마 이미지, 및 가상 현실 이미징을 생성한다. 양자의 기법들은 단일 이미지 프로덕트를 생성하기 위해 다수의, 때때로 많은 이미지들을 필요로 한다. 이미지 데이터를 효률적으로 프로세싱하거나 프리 프로세싱하는 방법들은 빠른 이미지 프로세싱을 수행하고 비주얼 래그 (visual lag) 를 감소시키기 위해 필요한 프로세싱 전력을 감소시키는데 바람직할 수 있다. 이것은 특히 제한된 프로세싱 및 전력 리소스들을 가질 수도 있는, 스마트 폰과 같은 모바일 디바이스에 대한 경우이다.
다양한 실시형태들은 컴퓨팅 디바이스 상에서 지오메트리 기반 작업 우선순위화를 위한 방법들, 그 방법들을 구현하기 위한 디바이스들, 및 프로세서로 하여금 그 방법들의 동작들을 실행하게 하도록 구성된 명령들을 포함하는 비일시적 프로세서 판독가능 저장 매체들을 포함할 수도 있다. 다양한 실시형태들은, 제 1 이미지를 획득하는 것, 작업 경계 형상을 초기화하고 작업 경계 형상 외측에 놓여 있는 폐기 영역을 식별하기 위해 제 1 이미지 상에 디폴트 경계 형상을 오버레이하는 것을 포함할 수도 있다. 다양한 실시형태들은, 작업 경계 형상 내에 놓여 있는 작업 영역들을 식별하는 것, 식별된 작업 영역들의 각각에 대한 소거 가능도를 결정하는 것, 소거 가능도를 사용하여 식별된 작업 영역들의 각각에 대한 트리밍 가중치를 결정하는 것, 및 결정된 트리밍 가중치들에 적어도 부분적으로 기초한 순서로 실행 작업 리스트에 식별된 작업 영역들의 각각과 연관된 작업 아이템들을 부가하는 것을 더 포함할 수도 있다.
일부 실시형태들은, 제 2 이미지를 획득하는 것, 작업 경계 형상의 포지션을 업데이트하는 것, 업데이트된 작업 경계 형상 외측에 놓여 있는 폐기 영역에 대한 업데이트들을 식별하기 위해 제 2 이미지 상에 업데이트된 작업 경계 형상을 오버레이하는 것, 및 임의의 작업 아이템들이 폐기 영역을 오버랩하는 작업 영역들과 연관되는지 여부를 결정하는 것을 더 포함할 수도 있다. 그러한 실시형태들은, 작업 아이템이 폐기 영역을 오버랩하는 것을 결정하는 것에 응답하여 작업 아이템을 소거하는 것, 및 업데이트된 작업 경계 형상 내에 놓여 있는 작업 영역들을 업데이트하는 것을 더 포함할 수도 있다. 그러한 실시형태들은, 업데이트된 작업 영역들의 각각에 대한 소거 가능도를 결정하는 것, 소거 가능도에 적어도 부분적으로 기초하여 식별된 작업 영역들의 각각에 대한 트리밍 가중치를 결정하는 것, 및 결정된 트리밍 가중치들에 적어도 부분적으로 기초한 순서로 실행 작업 리스트에 식별된 작업 영역들의 각각과 연관된 작업 아이템들을 부가하는 것을 더 포함할 수도 있다.
그러한 실시형태들에서, 업데이트된 작업 영역들의 각각에 대한 소거 가능도를 결정하는 것은, 획득된 이미지들의 포커스가 이동하고 있는 방향을 결정하는 것, 및 모션의 결정된 방향에 적어도 부분적으로 기초하여 소거 가능도를 결정하는 것을 포함할 수도 있다. 그러한 실시형태들에서, 소거 가능도들은 모션의 방향에 가장 근접하여 놓여 있는 작업 영역들에 대한 소거의 가능도가 모션의 방향으로부터 가장 멀리 놓여 있는 작업 영역들에 대한 소거 가능도보다 작도록 결정될 수도 있다.
일부 실시형태들은 최종 업데이트된 작업 경계 형상 내에 놓여 있는 각각의 획득된 이미지의 부분들로부터 합성 이미지를 생성하는 것을 포함할 수도 있다. 일부 실시형태들에서, 합성 이미지는 파노라마일 수도 있다. 일부 실시형태들에서, 합성 미지지는 가상 현실 렌더링일 수도 있다.
일부 실시형태들은, 작업 경계 형상의 오버레이의 포지션에 대한 제 1 이미지 상의 업데이트된 작업 경계 형상의 오버레이의 포지션의 비교에 적어도 부분적으로 기초하여 작업 영역들의 각각의 소거 가능도를 재결정하는 것, 소거 가능도들에 적어도 부분적으로 기초하여, 작업 영역들에 대한 업데이트된 트리밍 가중치들을 결정하는 것, 및 실행 작업 리스트에서의 작업 아이템들에 대해 결정된 업데이트된 트리밍 가중치들에 적어도 부분적으로 기초하여, 실행 작업 리스트에서의 작업 아이템들의 순서를 조정하는 것을 더 포함할 수도 있다.
일부 실시형태들은, 실행 작업 리스트에서의 각각의 작업 아이템에 대한 작업 점수를 결정하는 것, 및 작업 점수에 기초하여 제 2 프로세서 상에서 실행하기 위해 작업 아이템을 결정하는 것을 더 포함할 수도 있다. 그러한 실시형태들에서, 작업 점수는 작업 아이템의 결정된 트리밍 가중치, 작업 아이템의 사이즈, 작업 아이템의 형상, 및 다른 작업 아이템들과의 프로세싱 엘리먼트들의 공통성 중 하나 이상에 적어도 부분적으로 기초하여 결정될 수도 있다. 그러한 실시형태들은, 각각의 작업 아이템이 각각의 프로세싱 유닛에 관한 프로세싱 적합성을 표시하는 다수의 작업 접수들을 갖도록, 컴퓨팅 디바이스의 매 프로세서에 대해, 실행 작업 리스트에서의 각각의 작업 아이템에 대한 작업 점수를 결정하는 것을 더 포함할 수도 있다. 다른 그러한 실시형태들에서, 실행 작업 리스트에서의 각각의 작업 아이템에 대한 작업 점수를 결정하는 것은 또한, 작업 아이템의 론치 오버헤드, 작업 아이템을 프로세싱하는 것과 연관된 배터리 소모, 작업 아이템 소거의 용이성, 및 프로세서의 활용성으로 이루어진 그룹으로부터 선택된 적어도 하나의 멤버에 적어도 부분적으로 기초할 수도 있다.
일부 실시형태들에서, 소거 가능도는 이미지의 중심으로부터의 작업 영역의 거리에 적어도 부분적으로 기초할 수도 있다.
일부 실시형태들에서, 식별된 작업 영역들의 각각에 대한 소거 가능도를 결정하는 것은, 타임아웃 지속기간을 결정하는 것, 및 타임아웃 지속기간을 초과하는 기간 동안 후속 이미지가 작업 영역 내에 놓이지 않을 가능도를 결정하는 것을 포함할 수도 있다. 그러한 실시형태들에서, 프로세서에 의해, 타임아웃 지속기간을 초과하는 기간 동안 후속 이미지가 작업 영역 내에 놓이지 않을 가능도를 결정하는 것은, 후속 이미지의 포지션을 예측하기 위해 하나 이상의 칼만 (Kalman) 필터들을 실행하는 것을 포함할 수도 있다.
일부 실시형태들에서, 다수의 작업 경계 형상들이 있을 수도 있다.
일부 실시형태들에서, 제 1 이미지는 가상 현실 뷰 공간의 뷰포트일 수도 있다.
일부 실시형태들에서, 업데이트된 작업 경계 형상 내에 놓여 있는 작업 영역들을 업데이트하는 것은, 업데이트된 작업 경계 형상 내에 놓여 있는 하나 이상의 새로운 작업 영역들을 식별하는 것, 및 업데이트된 작업 경계 형상 내에 맞도록 작업 영역들의 경계들을 변화시키는 것을 포함할 수도 있다.
추가의 실시형태들은 위에 요약된 방법들의 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성된 하나 이상의 프로세서들을 갖는 통신 디바이스들을 포함할 수도 있다. 추가의 실시형태들은 위에 요약된 방법들의 기능들을 수행하는 수단을 갖는 통신 디바이스를 포함할 수도 있다. 추가 실시형태들은 통신 디바이스의 프로세서로 하여금 위에 요약된 방법들의 동작들을 수행하게 하도록 구성된 프로세서 실행가능 명령들이 저장된 비일시적 프로세서 판독가능 저장 매체를 포함할 수도 있다.
본 명세서의 부분을 구성하고 본 명세서에 통합되는 첨부 도면들은, 방법들 및 디바이스들의 예시적인 실시형태들을 도시한다. 위에 주어진 일반적인 설명 및 하기에 주어진 상세한 설명과 함께, 도면들은 방법들 및 디바이스들의 피처들을 설명하기 위해 제공되며, 개시된 실시형태들을 제한하지 않는다.
도 1 은 다양한 실시형태들과 사용하기에 적합한 컴퓨팅 디바이스를 도시하는 블록 다이어그램이다.
도 2 는 다양한 실시형태들에 따른 기하학적 작업 스케줄링을 위한 예시적인 실시형태 방법들을 도시하는 프로세스 플로우이다.
도 3 은 다양한 실시형태들에 따른 3 차원 공간으로 검출된 이벤트들의 매핑을 도시하는 다이어그램이다.
도 4 는 파노라마 이미지를 생성하기 위해 캡처된 프레임들을 스티칭하기 위한 종래의 방법들을 도시하는 다이어그램이다.
도 5 는 파노라마 이미지를 생성하기 위해 캡처된 프레임들을 스티칭하기 위한 종래의 방법들을 도시하는 다이어그램이다.
도 6 은 다양한 실시형태들에 따른 컴퓨팅 디바이스 상에서 작업 영역들로 이미지를 분할하고 각각의 영역을 우선순위화된 실행 작업 리스트에 삽입하기 위한 일 구현을 도시하는 블록 다이어그램이다.
도 7 은 다양한 실시형태들에 따른 컴퓨팅 디바이스 상에서 구현되는 기하학적 기반 작업 우선순위화 방법에서의 작업 플로우의 개요를 도시하는 블록 다이어그램이다.
도 8 은 다양한 실시형태들에 따른 기하학적 기반 영역 폐기 또는 보유의 가능도를 결정하기 위한 모션 추적을 도시하는 블록 다이어그램이다.
도 9 는 다양한 실시형태들에 따른 이미지 프로세싱에서 작업 프로세싱의 기하학적 기반 우선순위화를 위한 방법을 도시하는 프로세스 플로우 다이어그램이다.
도 10 은 다양한 실시형태들에 따른 다수의 프로세싱 유닛들에 걸친 작업 영역들에 기초하여 우선순위화된 작업의 실행을 위한 방법을 도시하는 프로세스 플로우 다이어그램이다.
도 11 은 가상 현실 환경에서 기하학적 작업 스케줄링을 구현하기 위한 일반적인 방법을 도시하는 프로세스 플로우 다이어그램이다.
도 12 는 일부 실시형태들에 따른 컴퓨터 게임에서 기하학적 작업 스케줄링의 구현을 도시하는 다이어그램이다.
다양한 실시형태들이 첨부 도면들을 참조하여 상세하게 기재될 것이다. 가능한 곳 어디서든 동일하거나 비슷한 부분들을 지칭하기 위해 도면들 전체에 걸쳐 동일한 참조 번호들이 사용될 것이다. 특정 예들 및 구현들에 대해 이루어진 언급들은 예시적인 목적들을 위해서이며, 청구항들의 범위를 제한하도록 의도되지 않는다.
용어 "컴퓨팅 디바이스" 는 다양한 컴퓨터 및 컴퓨팅 디바이스, 디지털 카메라, 디지털 비디오 레코딩 디바이스 중 임의의 하나 또는 모두를 지칭하는데 사용되며, 그 비제한적인 예는 스마트 디바이스, 웨어러블 스마트 디바이스, 데스크톱 컴퓨터, 서버, 셀룰러 전화기, 스마트 폰, 웨어러블 컴퓨팅 디바이스, 개인용 또는 모바일 멀티미디어 플레이어, 개인용 데이터 보조기 (PDA), 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 북, 팜톱 컴퓨터, 무선 전자 메일 수신기, 멀티미디어 인터넷 인에이블형 셀룰러 전화기, 무선 게이밍 제어기, 모바일 로봇 및 프로그램가능한 프로세서 및 메모리를 포함하는 유사한 개인용 전자 디바이스들을 포함한다.
용어 "기하학적으로 바운딩된 영역들" 은 본 명세서에서 N 차원 공간 내의 임의의 공간적 매핑을 지칭한다. 기하학적으로 바운딩된 영역들은 실행될 가능성이 없는 "작업 영역들" 에 매핑된 실행가능 작업 아이템들 또는 "폐기 영역들" 에 매핑된 리던턴트 작업 아이템들, 그리고 "트림 영역들" 에 매핑된 잠재적 실행가능 또는 폐기가능 작업 아이템들과 연관된 트림 가중치들을 포함할 수도 있다.
용어 "파노라마" 는 다수의 이미지 또는 비디오 파일들의 조합 (예를 들어, 스티칭) 을 통해 생성되는 임의의 합성 이미지 또는 비디오를 지칭하기 위해 본 명세서에서 사용된다. 이미지 및 비디오 파일들은 컴퓨팅 디바이스, 스캐닝 디바이스, 또는 컴퓨팅 디바이스와 통신하는 다른 이미지 및 비디오 캡처 디바이스에 의해 캡처될 수도 있다. 각각의 이미지 또는 비디오의 부분들은 원래 컴포넌트 이미지들보다 큰 치수를 갖는 확장된 이미지를 생성하기 위해 다른 이미지들 또는 비디오들에 스티칭될 수도 있다. 파노라마들은 확장된 축 치수를 갖는 이미지들 또는 비디오들을 포함할 수도 있다.
개요에서, 다양한 실시형태들 및 구현들은, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법들, 그러한 방법들을 구현하는 컴퓨팅 디바이스들, 및 그러한 방법들을 구현하는 프로세서 실행가능 명령들을 저장하는 비일시적 프로세서 판독가능 매체들을 포함할 수도 있다. 다양한 구현들은 컴퓨팅 디바이스의 프로세서에 의해, 컴퓨팅 디바이스 상에서 실행하는 어플리케이션 내의 키 이벤트의 발생을 검출하는 것을 포함할 수도 있다. 프로세서는 N 차원 공간 내에 기하학적으로 바운딩된 제 1 작업 영역에 키 이벤트를 매핑할 수도 있다. 프로세서는 그 후 제 1 작업 영역을 디폴트 경계 영역과 비교하여 작업 경계를 초기화하고 제 1 작업 영역 내에 그리고 디폴트 경계 영역 외측에 놓여 있는 하나 이상의 폐기 영역들을 식별할 수도 있다. 방법들은 작업 경계 영역 내에 놓여 있는 하나 이상의 작업 영역들을 식별하는 것을 포함할 수도 있고 제 1 작업 영역의 식별된 작업 영역들의 각각에 대해 소거 가능도를 결정할 수도 있다. 방법은 프로세서에 의해, 계산된 소거 가능도에 기초하여 식별된 작업 영역들의 각각에 대해 트리밍 가중치를 결정하는 것을 포함할 수도 있다. 다양한 구현들은, 프로세서에 의해, 실행될 준비가 된 작업 아이템으로서 식별된 작업 영역들의 각각을 제출하는 것을 포함할 수도 있다.
다양한 구현들은 현재 실행 준비가 된 작업 아이템들의 일부 또는 모두를 선택 및/또는 우선순위화하고 우선순위의 결정된 순서에 기초하여 선택된 작업 아이템들의 실행을 시작하기 위한 방법들을 포함할 수도 있다. 프로세서는 준비가 된 작업 아이템들과 연관된 트리밍 가중치들, (CPU 코더들 및 GPU들과 같은) 작업 아이템들을 실행할 수 있는 프로세서들의 가용 수 및 유형들, 그리고 (작업 아이템의 기하학적 형상 및 디폴트 경계 영역 내의 그 위치와 같은) 작업 아이템들 그 자신의 부가 특성들에 기초하여 선택 및 우선순위화를 수행할 수도 있다. 기재된 바와 같이, 다양한 구현들은 모든 준비된 작업 아이템들을 즉시 실행할 수 없을 수도 있다. 장래의 키 이벤트의 발생 및 후속 분석은 하나 이상의 폐기 영역들의 식별을 초래할 수도 있다. 이러한 폐기 영역들은 이전 키 이벤트의 검출에 응답하여 프로세서에 의해 더 일찍 제출된 준비된 작업 아이템의 작업 공간과 공간 (즉, 작업 아이템들 및 폐기 영역들이 매핑되는 N 차원 공간) 에서 오버랩할 수도 있다. 이러한 오버랩이 검출되는 경우, 작업 아이템은 실행 없이 폐기될 수도 있다. 부가적으로, 다양한 구현들에서, 장래의 키 이벤트의 발생 및 분석은 프로세서가 새로운 작업 영역들 (즉, 작업 아이템들) 및 대응 트리밍 가중치들을 식별하는 것을 야기할 수도 있다. 새롭게 식별된 작업 영역과 오버랩하는 이전 키 이벤트의 발생의 결과로서 실행을 위해 제출된 것들을 포함한, 실행을 위해 준비된 작업 아이템들의 트림 가중치들은 새롭게 식별된 작업 영역 (즉, 작업 아이템) 과 연관된 트림 가중치들로 변경될 수도 있다. 최종적으로, 다양한 구현들에서, 프로세서는 업데이트된 트림 가중치들에 기초하여 현재 준비된 작업 아이템들 모두로부터 작업 아이템들을 선택하고 우선순위화할 수도 있다.
일부 구현들은 예컨대, 캡처된 포토 또는 비디오에 의해, 또는 렌더링된 이미지의 수신에 의해, 제 1 이미지를 획득하는 것을 포함할 수도 있다. 그러한 구현들은 작업 경계 형상을 초기화하고 그 작업 경계 형상 외측에 놓여 있는 제 1 이미지의 제 1 폐기 영역을 식별하기 위해 제 1 이미지 상에 디폴트 경계 형상을 오버레이하는 것을 포함할 수도 있다. 일부 구현들은 작업 경계 형상 내에 놓여 있는 제 1 이미지의 작업 영역들을 식별하는 것을 더 포함할 수도 있다. 그러한 영역들은 직사각형, 초평면, 3 차원 또는 다른 기하학적 형상일 수도 있으며, 임의의 축, 방사상 또는 구형 배향으로 배향될 수도 있다. 일부 실시형태들은 제 1 이미지의 식별된 작업 영역들의 각각에 대해 소거 가능도을 계산하거나 그렇지 않으면 결정하는 것을 포함할 수도 있다. 소거 가능도는 작업 영역이 폐기되고 최종 프로덕트를 생성하는데 사용되지 않을 가능도를 나타내거나, 작업 영역이 최종 프로덕트에 보유되고 사용될 가능도를 나타낼 수도 있다. 일부 실시형태들은 계산된 소거 가능도에 기초하여 식별된 작업 영역들의 각각에 트리밍 가중치를 할당하는 것을 포함할 수도 있다. 트리밍 가중치는 미리 결정된 스케일 상에 놓여 있는 숫자 또는 퍼센티지일 수도 있지만, 작업 영역의 보유 또는 소거의 수학적으로 정확한 기회를 나타내지 않을 수도 있다. 일부 실시형태들은 할당된 트리밍 가중치들에 기초한 순서로 실행 작업 리스트에 작업 아이템으로서 식별된 작업 영역들의 각각을 부가하는 것을 포함할 수도 있다. 이들 동작들은 후속 이미지들 또는 비디오들이 획득될 때 반복될 수도 있고, 오버랩 영역들 (예를 들어, 폐기 영역들) 은 작업 리스트로부터 폐기되거나 제거될 수도 있다. 실행 작업 리스트는 수신되고 분석된 매 이미지 및/또는 프로세서가 새로운 작업 아이템을 수행할 수 있게 될 각각의 시간으로 재순서화되거나 재우선순위화될 수도 있다.
다양한 구현들에서, 컴퓨팅 디바이스는 각각의 이미지 내에서 식별된 작업 영역들에 기초하여 프로세싱 이벤트들, 비디오, 및 이미지들 (캡처된 또는 렌더링된) 을 우선순위화하는 방법들을 구현할 수도 있다. 컴퓨팅 디바이스는 파노라마, 비디오 세그먼트, 또는 어플리케이션 API 콜과 같은 최종 작업 프로덕트를 생성하는데 있어서 식별된 작업 영역들이 폐기될 (예를 들어, 트리밍, 소거, 또는 결코 사용되지 않게 될) 또는 폐기되지 않게 될 가능도를 결정할 수도 있다. 트리밍 가중치는 그 영역이 최종 파노라마의 생성에서 보유되고 및/또는 활용될 가능도를 표시하기 위해 식별된 작업 영역들의 각각에 할당될 수도 있다. 작업 영역들 및/또는 그들의 연관된 작업 아이템들은 할당된 트리밍 가중치들에 기초하여, 그룹들로 또는 개별적으로 실행 작업 리스트에 부가될 수도 있다. 트리밍 가중치들은 새로운 이벤트들이 검출 (예를 들어, 이미지들이 캡처) 될 때 재평가될 수도 있고, 실행 작업 리스트는 다양한 작업 영역들의 실행 우선순위에서의 변화들을 프로세싱하기 위해 재순서화될 수도 있다. 따라서, 적어도 소거될 또는 폐기될 가능성이 있는 것으로 여겨지는 그러한 작업 영역들은 프로세싱 리소스들이 이용가능하자 마자 프로세싱될 실행 작업 리스트의 전방으로 연속적으로 이동될 수도 있다. 이러한 방식으로, 다양한 구현들은 이미지 캡처의 완료 이전에 함께 그러한 영역들을 스티칭하기 위한 프로세싱 및 캡처된 이미지들의 프리 프로세싱과 같은 어플리케이션 부하의 실질적인 부분들의 프리 프로세싱을 가능하게 할 수도 있다.
다양한 실시형태들 및 구현들은 최종 프로덕트 또는 동작에 필요한 확률적 가능도에 따라 프로세싱될 수 있는 기하학적 영역들로 임의의 종류의 작업을 분할하기 위한 일반적인 방법들, 디바이스들, 및 비일시적 프로세서 판독가능 매체들 상에 저장된 프로세서 실행가능 명령들에 관련된다. 다양한 실시형태들은 일반적으로 예시적인 구현들을 제공하기 위해 이미지 프로세싱 및 가상 현실 어플리케이션들의 특정 예를 참조하여 설명된다.
다양한 실시형태들에서, 컴퓨팅 디바이스는 하나 이상의 프로세서들에 걸쳐 어플리케이션의 작업부하를 분할할 수도 있다. 작업은 어플리케이션 동작들을 수행하거나 최종 프로덕트를 생성하기 위해 필요한 전력 소비를 감소시키고 프로세싱 효율을 증가시키기 위해 분리되고 스케줄링될 수도 있다.
일 예로서, 컴퓨팅 디바이스 상에서 실행하는 어플리케이션은 다수의 이미지들을 간헐적으로 캡처할 수도 있고 이미지들을 함께 스티칭하여 파노라마 이미지를 형성할 수도 있다. 활성 이미지 캡처 세션들 동안, 컴퓨팅 디바이스는 이미지들이 캡처될 때 캡처된 이미지의 작업 영역들을 식별할 수도 있다, 컴퓨팅 디바이스는 이미지의 별도의 영역들을 식별하기 위해 들어오는 캡처된 이미지/프레임에 하나 이상의 기하학적으로 형상화된 경계들을 적용할 수도 있다. 예를 들어, 컴퓨팅 디바이스는 이미지의 주변부에 더 근접한 점진적으로 더 작은 슬라이스들 및 최대 슬라이스들을 포함하는 이미지의 중심 부분을 갖는 직사각형 슬라이스들로 캡처된 이미지를 분할할 수도 있다. 컴퓨팅 디바이스는 작업을 식별된 영역들의 각각과 연관시킬 수도 있고 그 작업을 최종 프로덕트로부터 폐기될 각각의 영역의 가능도에 기초하여 실행 작업 리스트 (즉, 프로세싱 큐) 에 삽입할 수도 있다. 작업 영역이 최종 파노라마 프로덕트로부터 폐기 또는 소거될 가능도는 그 영역에 할당된 트리밍 가중치에 의해 표시될 수도 있다. 각각의 작업 영역에 할당된 트리밍 가중치는 새로운 이미지들이 캡처되고 현재 이미지에 비교될 때 업데이트될 수도 있다.
다양한 실시형태들에서, 컴퓨팅 디바이스는 최종 프로세싱된 이미지 (예를 들어, 합성 파노라마 뷰) 에서 사용될 가능성이 가장 적은 (즉, 폐기될 가능성이 가장 큰) 작업 영역들을 결정할 수도 있다. 대안의 실시형태들에서, 컴퓨팅 디바이스는 대신 최종 프로세싱된 이미지에 보유될 가능성이 가장 큰 작업 영역들을 결정할 수도 있다. 영역들은 그 후 결정된 최종 프로덕트에 보유될 가능도와 일치하는 순서로 실행 작업 리스트 (즉, 작업 프로세싱 큐) 에 할당될 수도 있다. 예를 들어, 캡처된 이미지의 둘레 근방의 영역들은 작업 프로세싱 큐에서 마지막일 수도 있는데, 이는 캡처된 이미지의 그러한 영역들은 이미지들의 파노라마 시퀀스가 취해지는 동안 카메라의 수직 드리프트 (상하) 로 인해 최종 프로덕트 (예를 들어, 합성 파노라마 이미지) 에서 컷 아웃될 가능성이 가장 크기 때문이다
다양한 구현들에서, 컴퓨팅 디바이스는 소거되어야 하는 프로세싱 작업을 결정하기 위해 작업 영역들 (예를 들어, 디폴트 경계 형상) 을 사용할 수도 있다. 작업 영역들 (예를 들어, 디폴트 경계 형상) 이 들어오는 캡처된 이미지들에 적용된 후, 컴퓨팅 디바이스는 오버랩하거나, 교차하거나, 손상되거나 또는 그렇지 않으면 불필요한 영역들을 검출하기 위해 수신된 이미지들의 일부 또는 모두를 비교할 수도 있다. 프로세싱 리소스들을 보존하기 위해, 컴퓨팅 디바이스는 최종 프로덕트에서 나중에 크롭될 이미지들의 렌더링 및 프로세싱 시 프로세싱 리소스들을 소비하기 보다는, 최종 프로덕트에 사용될 가능성이 없는 것으로 여겨지는 작업을 소거하거나 그렇지 않으면 폐기할 수도 있다. 소거된 영역들은 프로세싱되지 않으며 그 결과 최종 프로덕트에 부재일 것이다.
이동, 드리프트, 속도, 방향 등에 관한 정보는 또한, 보유 또는 폐기의 가능도에 기초하여 작업 영역들의 프로세싱을 추가로 우선순위화하는데 사용된다. 예를 들어, 컴퓨팅 디바이스에 의해 수집된 가속도계 데이터는 헤드 이동에 기초하여 헤드 장착 가상 현실 디스플레이에서 렌더링될 가능성이 가장 큰 프레임들에서의 작업 영역들을 식별하는데 사용될 수도 있다. 폐기 영역들과 연관된 작업 아이템들의 소거는 프로세싱 요건들을 현저히 감소시키고 본질적 영역들의 더 빠른 프리 프로세싱을 가능하게 하며, 이로써 지터로서 인식되는 시각적 효과를 감소시킬 수도 있다. 다른 예로서, 가속도계 데이터 및/또는 프레임 대 프레임 수직 시프트들의 분석은 사용자가 카메라를 팬 (pan) 할 때 상향 또는 하향 드리프트로 인해 파노라마에 보유될 가능성이 가장 큰 프레임들 내의 작업 영역들을 우선순위화된 프로세싱에 대해 식별하기 위해 사용될 수도 있다. 따라서, 카메라가 팬 업하고 있다면, 하단 에지 슬라이스들은 우선순위화에서 해제된다.
다양한 구현들은 식별된 프로세싱 유사성들에 기초하여 컴퓨팅 디바이스의 다수의 프로세싱 유닛들에 걸쳐 작업의 우선순위화된 스케줄링을 가능하게 할 수도 있다. 컴퓨팅 디바이스는 n 차원 공간에 어플리케이션들의 프로세싱 작업을 매핑할 수도 있으며, 여기서 "n" 은 어플리케이션 프로그래밍 인터페이스 (API) 콜들의 수이다. n 차원 공간의 영역들은 유사한 프로세싱 필요성들을 갖는 것으로 식별된 작업의 클러스터들을 가질 수도 있다. 예를 들어, 동일한 타겟의 비디오, 또는 이미지들의 유사한 유형들을 프로세싱할 필요가 있는 비디오 편집 소프트웨어 어플리케이션들은 유사한 프로세싱 필요성을 갖는 것으로 식별될 수도 있다. 식별된 영역들과 연관된 작업은 중앙 프로세싱 유닛 또는 그래픽 프로세싱 유닛과 같은, 프로세싱 유닛에 총괄적으로 할당될 수도 있다. 따라서, 상이한 어플리케이션들의 유사한 작업은 프로세싱 리던던시를 감소시키기 위한 그룹으로서의 실행을 위해 스케줄링될 수도 있다. 상이한 프로세싱 유닛들로의 작업의 할당은 프로세싱 작업의 사이즈 및 복잡도에 의존할 수도 있다. 예를 들어, 그래픽 프로세싱 유닛은 높은 우선순위의 상대적으로 큰 프로세싱 태스크들과 연관된 작업을 할당받을 수도 있는데, 이는 GPU 큐로부터의 태스크들의 소거 및 제거가 집중적인 리소스일 수도 있기 때문이다.
최종 프로덕트에서 사용/보유될 가능성이 가장 큰 그러한 영역들 또는 유사성의 식별된 영역들에 기초하여 작업을 프리 프로세싱, 스케줄링, 및 우선순위화함으로써, 다양한 구현들은 이미지들의 프로세싱 및 스티칭, 사운드의 프로세싱, 이미지들의 렌더링 (예를 들어, 가상 현실 어플리케이션에서) 등에 필요한 시간 및 프로세싱 리소스들을 감소시킬 수도 있다.
다양한 구현들은 렌더링되고 있는 프레임들 (예를 들어, 가상 현실 디스플레이들) 또는 캡처된 이미지들 (예들 들어, 스티칭 파노라마) 에서 작업 영역 식별을 사용하는 것을 포함할 수도 있다. 식별된 작업 영역들은 기하학적 영역이 최종 프로덕트에서 보유될 결정된 가능도/확률 및 따라서 캡처된 이미지들 및 소프트웨어 어플리케이션들에 대한 작업 프로세싱의 스케줄링/우선순위화와 태그되거나 연관될 수도 있다. 따라서, 다양한 구현들은 영역 보유 또는 폐기의 가능도에 기초하여 캡처된/렌더링된 이미지들의 작업 영역들의 프로세싱을 우선순위화할 수도 있다. 영역들은 그 후 프로세싱을 위해 스케줄링될 수도 있어서 보유될 가능성이 없는 영역들이 마지막에 프로세싱되고, 따라서 프로세싱이 시작하기 전에 소거될 수도 있다.
다양한 구현들은 보유 또는 폐기의 가능도를 결정하는데 사용될 수도 있는 정보를 제공하는 활성 이미지 지오메트리들 및/또는 다른 데이터 (예를 들어, 가속도계) 에 기초하여 작업 영역들의 이미지 프로세싱의 동적 재우선순위화를 가능하게 할 수도 있다. 작업은 캡처되거나 렌더링된 이미지의 기하학적 영역이 불필요한 것으로 식별될 때 프로세싱 큐로부터 소거됨으로써, 보유될 가능성이 없는 우선순위화 해제 영역들을 레버리징할 수도 있다. 추가로 성능을 개선하기 위해, 작업은 n 차원 공간 내에서 식별된 유사성의 기하학적 영역들에 기초하여 프로세싱 유닛들에 걸쳐 스케줄링될 수도 있다. 이러한 방식으로, 다양한 구현들은 최종 파노라마에서 보유될 가능성이 있는 이미지 영역들의 예측들에 기초하여 캡처된 이미지들의 스티칭의 프리 프로세싱을 가능하게 할 수도 있다.
도 1 은 다양한 실시형태들과 함께 사용하기에 적합한 컴퓨팅 디바이스 (100) 를 도시한다. 컴퓨팅 디바이스 (100) 는 버스 (105) 를 통해 전기적으로 커플링될 수 있는 (또는 그렇지 않으면 적절하게 통신할 수도 있는) 하드웨어 엘리먼트들을 포함하는 것으로 나타나 있다. 하드웨어 엘리먼트들은 하나 이상의 범용 프로세서들 및/또는 하나 이상의 특수 목적 프로세서들 (예컨대 디지털 신호 프로세싱 칩들, 그래픽스 가속화 프로세서들 등) 을 제한없이 포함하는 하나 이상의 프로세서(들)(110); 터치 스크린 (115) 을 포함하고, 하나 이상의 카메라들, 하나 이상의 디지털 비디오 레코더들, 마우스, 키보드, 키패드, 마이크로폰 등을 제한없이 더 포함하는 하나 이상의 입력 디바이스들; 및 외부 출력 디바이스들, 디스플레이 디바이스, 스피커 (116), 프린터 등에 커플링하기 위한 인터페이스 (120)(예를 들어, 유니버셜 시리얼 버스 (USB)) 를 제한없이 포함하는 하나 이상의 출력 디바이스들을 포함한다.
컴퓨팅 디바이스 (100) 는, 로컬 및/또는 네트워크 액세스가능 스토리지를 제한없이 포함할 수 있는, 및/또는 디스크 드라이브, 드라이브 어레이, 광학 저장 디바이스, 고체 상태 저장 디바이스, 예컨대 프로그램가능, 플래시 업데이트 가능 등일 수 있는, 랜덤 액세스 메모리 (RAM) 및/또는 리드 온니 메모리 (ROM) 를 제한없이 포함할 수 있는 비휘발성 메모리 (125) 와 같은 하나 이상의 비일시적 저장 디바이스들을 더 포함 (및/또는 이들과 통신) 할 수도 있다. 그러한 저장 디바이스들은 다양한 파일 시스템들, 데이터베이스 구조들 등을 제한없이 포함하는 임의의 적절한 데이터 스토어들을 구현하도록 구성될 수도 있다.
컴퓨팅 디바이스 (100) 는 또한 모뎀, 네트워크 카드 (무선 또는 유선), 적외선 통신 디바이스, 무선 통신 디바이스 및/또는 칩셋 (예컨대 블루투스 디바이스, 802.11 디바이스, Wi-Fi 디바이스, WiMAX 디바이스, 셀룰러 통신 설비들 등) 등을 제한없이 포함할 수 있는, 통신 서브시스템 (130) 을 포함할 수도 있다. 통신 서브시스템 (130) 은 데이터가 네트워크, 다른 디바이스들, 및/또는 본 명세서에 기재된 임의의 다른 디바이스들과 교환되도록 할 수도 있다. 컴퓨팅 디바이스 (예를 들어, 100) 는 상술한 바와 같은 RAM 또는 ROM 을 포함할 수도 있는, 휘발성 메모리를 더 포함할 수도 있다. 메모리 (135) 는 오퍼레이팅 시스템 (140) 및 어플리케이션들 (145) 의 실행을 지원하는 데이터 뿐만 아니라, 오퍼레이팅 시스템 (140) 및 어플리케이션 소프트웨어 (어플리케이션들)(145) 의 형태로 프로세서 실행가능 명령들을 저장할 수도 있다. 컴퓨팅 디바이스 (100) 는 모바일 컴퓨팅 디바이스 또는 비모바일 컴퓨팅 디바이스일 수도 있고, 무선 및/또는 유선 네트워크 접속들을 가질 수도 있다.
컴퓨팅 디바이스 (100) 는 일회용 또는 재충전가능한 배터리와 같은 프로세서 (110) 에 커플링된 전원 (122) 을 포함할 수도 있다. 재충전가능한 배터리는 또한 컴퓨팅 디바이스 (100) 외부의 소스로부터 충전 전류를 수신하기 위해 주변 디바이스 접속 포트에 커플링될 수도 있다.
컴퓨팅 디바이스 (100) 는 가속도계, 기압계, 온도계 등과 같은 다양한 외부 조건 센서들을 포함할 수도 있다. 이러한 외부 센서들은 컴퓨팅 디바이스 (100) 에 의해 사용되어 획득된 이미지들 및 비디오가 이미지에서 이미지로 또는 비디오에서 비디오로 변화하는지 여부 및 어떻게 변화하는지에 관한 결정에서 사용될 수도 있는 정보를 제공할 수도 있다.
도 2 는 다양한 실시형태들 및 구현들에 따른 임의의 어플리케이션에서의 작업 프로세싱의 기하학적 기반 우선순위화를 위한 방법 (200) 의 프로세스 플로우 다이어그램을 도시한다. 방법 (200) 은 컴퓨팅 디바이스 (예를 들어, 100) 상에서 구현되고 통신 서브시스템 (예를 들어, 130) 및 메모리 (예를 들어, 125) 와 통신하는 프로세서 (예를 들어, 110) 에 의해 수행될 수도 있다..
블록 (202) 에서, 컴퓨팅 디바이스는 어플리케이션 초기화 시퀀스, 어플리케이션을 실행하기 위한 요청, 어플리케이션 설정들에서의 변화, 파노라마 스티칭 어플리케이션에서의 새로운 키 이미지 프레임의 수신 또는 비디오 게임 내의 풍경에서의 변화와 같은, 키 이벤트를 검출할 수도 있다. 키 이벤트는 컴퓨팅 디바이스의 프로세서에 의해 검출될 수도 있다. 키 이벤트는 모든 임의의 어플리케이션 프로그래밍 인터페이스 (API) 콜일 수도 있다. 또한, 키 이벤트는 가상 현실 시뮬레이션, 비디오 게임 또는 이미지 프로세싱 어플리케이션과 같은 소프트웨어 어플리케이션의 런타임 동안 프로세서에 의해 생성된 또는 컴퓨팅 디바이스의 통신 서브시스템 (예를 들어, 130) 에 의해 수신된 요청일 수도 있다.
블록 (204) 에서, 컴퓨팅 디바이스는 키 이벤트를 N 차원 공간에 매핑할 수도 있다. 일부 구현들에서, 어플리케이션 프로그래머는 소프트웨어 개발 동안 "N" 을 정의할 수 있어서, "N" 은 작업 영역의 경계들을 정의하는데 필요한 엘리먼트들의 수를 나타낸다. 예를 들어, 2 차원 그래픽스 프로세싱 어플리케이션에서, 작업 영역 (예를 들어, 캡처된 이미지의 바운딩된 영역) 을 정의하기 위해 수직 및 수평 (x, y) 좌표들만이 필요할 수도 있다. 가상 현실 게이밍 환경에서, 수직, 수평, 및 깊이 또는 시간과 같은 작업 영역의 경계들을 정의하는데 3 차원이 필요할 수도 있다. 기하학적 스케줄링에 종속되는 작업이 API 콜들을 포함하는 구현들은 프로세싱 요건들, 사이즈, 실행 지속기간, 메모리 할당 등과 같은 작업의 경계들을 정의하기 위해 임의의 수의 좌표들을 필요로 할 수도 있다. 프로세서는 N 차원 공간 내에서 키 이벤트의 포지션을 나타내는 N-튜플 (tuple) 의 각각의 엘리먼트에 대한 키 이벤트의 좌표 "값" 을 어셋할 수도 있다. 각각의 키 이벤트는 그와 연관된 다수의 작업 아이템들을 가질 수도 있고, 따라서 N 차원 공간으로 작업 아이템들과 관련된 기하학적으로 바운딩된 영역들의 다수의 매핑들을 가질 수도 있다.
다양한 영역들 (예컨대 작업 아이템의 경계들을 정의하는데 또는 임의의 인클로징된 작업 아이템들을 폐기하는 영역을 식별하거나 인클로징된 작업 아이템들에 대한 새로운 트림 가중치를 적용하는 영역을 식별하는데 사용된 것들) 은 하나 이상의 바운드들 (예를 들어, 둘레, 표면 등) 에 의해 정의된 인클로징된 면적들, 체적들 등일 수도 있다. 예시의 영역들은 직사각형, 초평면, 구형 등을 포함할 수도 있다. 직사각형 영역들은 일반적으로 A1≤x1≤B1, A2≤x2≤B2, ... AN≤xN≤BN 으로 정의될 수도 있으며, 여기서 "A" 및 "B" 는 어플리케이션 프로그래머에 의해 설정된 경계 상수들이다. 초평면 작업 영역들은 공간의 체적에서 박싱하는 다수의 부등식들에 의해 정의될 수도 있다. 이러한 영역들은 a1 (i) x1 + a2 (i) x2…+ aN (i) xN ≤ b(i) 에 의해 정의될 수도 있으며, 여기서 "a" 및 "b" 는 i 번째 부등식들과 연관된 상수들이다. 추가 예에서, 구형 작업 영역은 a1 (i) x1 2 + a2 (i) x2 2…+ aN (i)xN 2 ≤ b(i) 에 의해 정의될 수도 있으며, 여기서 "a" 및 "b" 는 i 번째 부등식과 연관된 상수들이다.
다양한 구현들에서, N 차원 공간, 작업 영역 경계들 및 작업 영역 형상들은 모두 어플리케이션 프로그래머에 의해 정의되거나 실행 동안 랜덤으로 선택되고 정제될 수도 있다. 작업 영역은 N 차원 공간 내의 이벤트를 나타내는 N 튜플을 둘러싸고 그 중심에 있는 공간 체적일 수도 있다. 작업 영역 면적/체적/등은 모든 작업 영역들에 걸쳐 동일하거나 유사할 수도 있다. 유사하게, 각각의 작업 영역은 동일한 기하학적 형상을 가질 수도 있다. 따라서, 검출된 이벤트들과 연관된 모든 실행가능한 작업은 이벤트의 작업 아이템들을 설명하는 결정된 N 튜플을 사용하여 N 차원 공간에 매핑될 수도 있고, N 튜플로부터 동일하거나 유사한 형상의 연관된 작업 영역 경계들을 가질 수도 있다. 예를 들어, 3 차원 공간은 3 튜플 (x, y, t) 에 의해 나타낸 지점들을 중심으로 구형, 직사각형 또는 다면체 형상의 작업 영역들을 가질 수도 있다. 일부 구현들에서, 프로그래머는 검출된 이벤트의 유형에 기초하여 작업 영역들의 상이한 형상들 및 사이즈들을 특정할 수도 있다 (즉, 이벤트들의 상이한 카테고리들은 작업 영역들의 상이한 형상들 및 사이즈들과 연관될 수도 있음). 다른 구현들에서, 작업 영역들 (즉, 작업 영역들, 폐기 영역들 및 트림 영역들) 의 특징들은 컴퓨팅 디바이스에 의해 랜덤으로 선택되고 다양한 구현들의 실행 동안 조정될 수도 있다.
블록 (206) 에서, 컴퓨팅 디바이스의 프로세서는 제 1 작업 영역의 경계들 (예를 들어, 새로 검출된 이벤트의 경계) 을 디폴트 경계 영역의 경계와 비교할 수도 있다. 프로세서는 어플리케이션에 일반적인 치수들을 갖는 직사각형 또는 구형 경계 영역과 같은 디폴트 경계 영역을 메모리 (예를 들어, 125) 에 저장할 수도 있다. 작업 영역의 형상 및 사이즈와 같이, 디폴트 경계 작업 영역의 치수들 및 경계들은 어플리케이션 프로그래머에 의해 결정될 수도 있다. 프로세서는 이 디폴트 경계 영역을 제 1 작업 영역과 비교하여 제 1 작업 영역의 임의의 부분들이 디폴트 경계 영역의 경계들의 외측에 놓여 있는지 여부를 결정할 수도 있다. 디폴트 경계 영역 외부에 놓여 있는 제 1 작업 영역의 임의의 부분들은 폐기 영역으로 분류될 수도 있다. 유사하게, 프로세서 (예를 들어, 110) 는 제 1 작업 영역 및 디폴트 경계 영역 내에 놓여 있지만 공간적 관계를 갖는 그러한 영역들과 같은 하나 이상의 트림 영역들을 결정할 수도 있어서 트림 영역들 내의 작업 영역들과 연관된 작업 아이템들은 작업 프로세싱의 완료 전에 폐기될 가능성이 있다.
폐기 영역들은 기하학적 스케줄러의 런타임 환경 (예를 들어, 기하학적 스케줄링 런타임 환경 (522)) 에 의해 유지된 메모리 (예를 들어, 125) 에 저장된 데이터 구조 내의 폐기 영역을 오버랩하는 다양한 작업 영역들과 연관되거나, 그에 링크되거나, 또는 그 내의 메모리에 저장될 수도 있다. 폐기 영역들을 오버랩하는 작업 영역들은 작업 경계 영역이 어떻게 업데이트되는지에 의존하여, 프로세싱 작업 리스트 (예를 들어, 실행 작업 리스트) 로부터 소거될 수도 있다.
블록 (208) 에서, 컴퓨팅 디바이스 (예를 들어, 100) 의 프로세서 (예를 들어, 110) 는 제 1 작업 영역 내의 다수의 더 작은 작업 영역들을 식별할 수도 있다. 더 작은 작업 영역들은 직사각형, 초평면, 큐브 또는 서브섹션들 또는 조각들로의 작업 영역을 분할할 수 있는 임의의 다른 형상일 수도 있다. 다양한 구현들에서, 더 작은 작업 영역들은 중심 영역 및 다수의 외부 영역을 포함할 수도 있다. 각각의 작업 영역의 중심 영역은 검출된 이벤트들과 연관된 작업의 프로세싱을 생성하는데 있어서 궁극적으로 보유될 가능성이 높기 때문에, 중심 영역은 가장 많은 영역 또는 체적을 점유할 수도 있다. 외부 영역들은 중심 영역으로부터 외측으로 연장할 수도 있고, 제 1 작업 영역의 지오메트리에 맞도록 치수가 감소하거나 또는 형상/치수를 완전히 변화시킬 수도 있다. 다수의 작업 영역들로의 이미지 분할의 일 예는 도 3 에 나타나 있다.
블록 (210) 에서, 프로세서는 제 1 작업 영역의 식별된 더 작은 작업 영역들의 각각에 대한 소거 가능도를 결정 (예를 들어, 계산) 할 수도 있다. 소거 가능도는 제 1 작업 영역의 중심으로부터의 거리 또는 각각의 더 작은 작업 영역의 중심으로부터 폐기 영역의 경계까지의 거리 중 하나 이상에 기초하여 계산될 수도 있다. 따라서, 소거 가능도는 폐기 영역에 충분히 근접하여 놓여 있거나 또는 제 1 작업 영역의 중심으로부터 충분히 멀리 떨어져 있는 그러한 더 작은 작업 영역들에 대해 더 높을 수도 있어서 연관된 작업이 트리밍될 가능도가 높다. 다양한 실시형태들에서, 소거 가능도는 어플리케이션 프로그래머에 의해 지향된 바와 같은 다른 공간적 관계들에 의해 결정될 수도 있다. 예를 들어, 특정 어플리케이션의 특징들은 작업 영역 내에서 캐티코너 (cattycorner) 에 놓여 있는 트림 영역들로의 더 큰 소거 가능도들의 할당을 보증할 수도 있으며, 또는 그 소거 가능도들이 상이한 작업 영역들 사이에서 오버랩하는 트림 영역들의 수에 기초하여 결정될 수도 있다. 소거 가능도들의 계산은 어플리케이션 특정일 수도 있으며 어플리케이션에 걸쳐 달라질 수도 있다.
블록 (212) 에서, 프로세서는 계산된 소거 가능도에 기초하여 식별된 더 작은 작업 영역들의 각각에 대한 트리밍 가중치를 결정할 수도 있다. 소거 가능도는 근사 값일 수도 있으며 보유 또는 폐기의 기회의 정확한 계산을 나타낼 필요는 없다. 트리밍 가중치는 폐기되거나 보유될 작업 영역의 가능도의 영숫자 표현일 수도 있다. 예를 들어, 글자 A-Z 는 우선순위의 순서를 표시하는데 사용될 수도 있다. 유사하게, 숫자 랭킹들은 더 작은 작업 영역들에 할당될 수도 있다. 따라서, 트리밍 가중치들은 연관된 더 작은 작업 영역의 실행 우선순위 뿐만 아니라, 폐기 또는 보유 양자의 가능도를 표시하기 위해 생성될 수도 있다.
블록 (214) 에서, 프로세서는 작업 영역들의 각각과 연관된 작업 아이템들을 실행 작업에 부가하거나 그렇지 않으면 삽입할 수도 있다. 각각의 작업 영역은 그 영역과 연관된 다수의 작업 아이템들을 가질 수도 있다. 작업 아이템들은 이미지의 청크들, 오디오 파일의 스니펫 (snippet), 프린트 잡 프로세싱 또는 컴퓨팅 디바이스 (예를 들어, 100) 의 하나 이상의 프로세서들 (예를 들어, 110) 의 리소스들을 필요로 하는 다른 태스크와 같은 프로세싱 작업의 "블록들" 일 수도 있다. 실행 작업 리스트 내의 작업 아이템들의 순서는 각각의 작업 영역에 할당된 트리밍 가중치들에 기초할 수도 있다. 즉, 각각의 작업 아이템은 그것이 속하는 작업 영역의 트림 가중치를 갖도록 고려될 수도 있다. 더 높은 우선순위를 갖는 작업 아이템들 (즉, 폐기, 소거, 또는 트리밍될 가능도가 가장 적은 것들) 은 실행 작업 리스트 내에 먼저 포지셔닝될 수도 있다. 일부 구현들에서, 실행 작업 리스트는 다수의 프로세서들을 서비스할 수도 있고, 또는 단일 프로세서를 서비스할 수도 있다. 멀티프로세서 구현들에서, 각각의 프로세서는 그와 연관된 별도의 실행 작업 리스트를 가질 수도 있다.
블록 (216) 에서, 프로세서는 또 다른 (즉, 제 2 또는 후속) 이벤트의 발생 또는 개시를 검출할 수도 있다. 제 2 및 후속 이벤트들은 블록 (202) 를 참조하여 논의된 것과 유사한 방식으로 검출될 수도 있다.
블록 (218) 에서, 프로세서는 특징적인 N 튜플을 결정하고, 미리 결정된 형상 및 치수를 갖는 연관된 작업 영역을 생성하는 것에 의해 N 차원 공간에 제 2 또는 후속 이벤트를 매핑할 수도 있다. 제 2 이벤트는 블록 (204) 을 참조하여 논의한 것과 유사한 방식으로 매핑될 수도 있다.
블록 (220) 에서, 프로세서는 다양한 작업 영역들의 폐기 및 트림 영역들을 업데이트할 수도 있다. 이 동작에서, 프로세서는 선재하는 폐기 영역들 및 트림 영역들 중 임의의 부분이 제 1 작업 영역, 임의의 작은 작업 영역들 및 제 2 또는 후속 작업 영역 모두에 공통인지 여부를 결정할 수도 있다. 제 2 작업 영역이 N 차원 공간 내의 제 1 작업 영역과 정확하게 축 방향으로 정렬되지 않으면, 오프셋은 개개의 작업 영역들의 경계들 사이에 존재할 수도 있다. 임의의 폐기 영역들 및 트림 영역들의 치수는 그 후 어플리케이션 특정 업데이트 규칙들에 따라 수정될 수도 있다. 업데이트된 폐기 및 트림 영역들은 새로운 이벤트가 검출되고 새로운 이벤트의 작업 영역이 폐기 및 트림 영역들의 경계들의 현재 인스턴스과 또는 대안으로 이전의 작업 영역들 모두의 경계들과 비교될 때마다 업데이트될 수도 있다. 따라서, 업데이트된 폐기 및 트림 영역들은 임의의 주어진 시간에 모든 매핑된 작업 영역들의 공통 공유 영역들의 부분들을 오버랩할 수도 있다.
블록 (222) 에서, 프로세서는 업데이트된 폐기 및 트림 영역들을 제 2 이미지와 비교할 수도 있고 임의의 오버랩 영역들의 절반 (예를 들어, 제 2 작업 영역과 연관된 부분) 을 폐기 영역으로서 분류할 수도 있다.
블록 (224) 에서, 프로세서는 실행 작업 리스트 내의 임의의 활성 작업 아이템들이 제 2 작업 영역의 폐기 영역들을 오버랩하는 작업 영역과 연관되는지 여부를 결정할 수도 있다. 각각의 새로운 이벤트에 대해, 새로운 이벤트의 폐기 영역들은 이제 폐기 영역으로서 분류되는 작업 영역과 연관된 임의의 작업 아이템들을 프로세싱하는 것으로부터 지연 또는 제거하기 위해 기존의 작업 아이템들에 대해 비교될 수도 있다. 프로세서는 이전에 검출된 이벤트들의 작업 영역들을 새롭게 검출된 이벤트의 폐기 영역들과 간단하게 비교함으로써 이러한 결정을 달성 할 수도 있다.
블록 (226) 에서, 프로세서는 제 2 작업 영역의 폐기 영역 또는 후속 작업 영역들을 오버랩하는 작업 영역들과 연관된 임의의 작업 아이템들을 소거할 수도 있다. 작업을 소거하기 위해, 프로세서 (예를 들어, 110) 는 작업 리스트 및 임의의 관련된 프로세싱 큐로부터 작업 아이템을 단순히 제거할 수도 있다.
프로세서는 블록 (208) 에서 작업 영역들을 다시 식별하고, 블록 (210) 에서 각각의 작업 영역에 대한 소거 가능도를 계산하며, 블록 (212) 에서 각각의 작업 영역에 트리밍 가중치들을 할당할 수도 있다.
블록 (214) 에서, 프로세서는 제 1 작업 영역 및 제 2 작업 영역의 트리밍 가중치들 모두에 기초하여 실행 작업 리스트에 작업 영역들을 부가할 수도 있다. 따라서, 제 2 작업 영역의 작업 아이템들은 실행 작업 리스트에 산재될 수도 있고, 우선순위를 공유하거나, 제 1 작업 영역의 작업 아이템들보다 더 낮은 우선순우를 가지거나 또는 더 높은 우선순위를 가질 수도 있다. 기하학적 기반 작업 아이템들의 획득 및 우선순위화는 모든 이벤트들이 검출되고 모든 작업 아이템들이 스케줄링될 때까지 계속될 수도 있다.
도 3 은 N 차원 공간에서의 이벤트 매핑 (300) 의 일 예를 도시한다. 도시된 이벤트 매핑 (300) 에서, 컴퓨팅 디바이스 (예를 들어, 컴퓨팅 디바이스 (예를 들어, 100) 는 수평 (예를 들어, x), 수직 (예를 들어, y), 및 시간 (예를 들어, t) 좌표를 포함한 특징적인 트리플에 기초하여 제 1 작업 영역 (304) 에 제 1 이벤트를 매핑하였다. 제 1 작업 영역 (304) 은 경량 선 경계들에 의해 정의되는 직사각형 형상을 갖는다. 디폴트 경계 영역 (302) 은 그 개개의 경계들의 공간적 관계를 비교하기 위해 제 1 작업 영역 상에 오버레이된다. 디폴트 경계 영역 내에 놓여 있는 제 1 작업 영역 (304) 의 모든 부분들은 후속 작업 영역들과 비교될 수도 있는 초기화된 작업 경계 영역에 포함될 것이다. 디폴트 경계 영역 (302) 의 하부 경계 아래에 놓여 있는 제 1 작업 영역 (304) 의 부분 (즉, 가장 낮은 표면/평면) 은 폐기 영역 (306) 으로서 분류될 수도 있다. 새로운 이벤트가 검출될 때, 새로운 작업 영역들은 3 차원 공간에 매핑될 수도 있고 오버랩 및 배제의 새로운 영역들이 후속 비교들을 통해 결정될 수도 있다.
다양한 구현들에서, 제 1 작업 영역의 수학적 중심은 작업 이벤트를 특징화하는 N 튜플일 수도 있다. 더 작은 작업 영역들 (미도시) 은 제 1 작업 영역 (304) 내에 정의될 수도 있고, 소거 가능도에 기초하여 트림 가중치를 할당받을 수도 있다. 도 2 를 참조하여 논의된 바와 같이, 소거 가능도는 제 1 작업 영역 (304) 의 중심으로부터 또는 제 1 작업 영역의 영역으로부터 폐기 영역 (306) 의 경계까지의 거리일 수도 있다. 거리들은 p 규준 또는 마할라노비스 (mahalanobis) 거리와 같은 알려진 방법들을 사용하여 계산될 수도 있다. 일부 구현들에서, 다양한 작업 영역들은 더 큰 클러스터 내의 서브 클러스터들과 유사할 수도 있고, 클러스터 가중화 기법들이 적용되어 소거 가능도를 계산할 수도 있다.
방법 (200) 의 예시적인 예들은 이미지 프로세싱, 파노라마 생성을 위한 이미지 스티칭, 게이밍 엔진 동작, 3 차원 보셀 프로세싱, 머신 비전 프로세싱 및 가상 현실 어플리케이션들을 포함한다. 도 4 내지 도 11 은 파노라마 이미지 생성 및 가상 현실 장면 관리를 위한 특정 어플리케이션에 대한 기하학적 작업 스케줄링을 위한 방법 (200) 의 어플리케이션을 개시한다. 다양한 실시형태들 및 구현들의 어플리케이션들의 범위는 이러한 활동들에 제한되지 않으며 예들은 예시적인 목적으로 제공된다.
도 4 는 파노라마를 렌더링하기 위한 종래의 이미지 프로세싱 방법을 도시한다. 도시된 종래의 이미지 스티칭 기법 (400) 에 있어서, 컴퓨팅 디바이스 (예를 들어, 컴퓨팅 디바이스 (예컨대, 100)) 는 변화하는 정도의 수직 또는 수평 포지션 시프트들을 갖는 다수의 이미지 프레임들 (402 내지 410) 을 수신한다. 컴퓨팅 디바이스는 이미지 프로세싱 동작들을 시작하기 전에 모든 이미지 프레임들이 수신될 때까지 대기할 수도 있다. 컴퓨팅 디바이스 (예를 들어, 100) 는 프레임들 (402-410) 을 엔드 투 엔드 방식으로 정렬할 수도 있고, 그 후 최대 중심 영역이 획득될 때까지 프레임들 (402-410) 의 포지션을 조정할 수도 있다. 이러한 기법들에서, 컴퓨팅 디바이스 (예컨대, 100) 는 모든 프레임들 (402-410) 에 대한 최대 공유 수직 거리를 둘러싸는 전역 동기화된 경계 박스를 그릴 수도 있다. 컴퓨팅 디바이스 (예를 들어, 100) 는 프레임의 초과 영역들, 예를 들어, 전역 동기화된 경계 박스 내에 놓여 있지 않은 각각의 프레임의 그러한 부분들을 트리밍할 수도 있다. 따라서, 컴퓨팅 디바이스는 트리밍된 프레임들 (412-420) 로부터 완료된 파노라마를 생성하는 부분으로서 트리밍하기 위해 영역들을 결정하기 전에 각각의 이미지 프레임 (402-410) 을 수신하고 완전히 프로세싱한다. 이러한 기법들은 파노라마 스티칭 산출들의 시작을 상당히 지연시켜서, 가용 리소스들의 비효율적인 사용을 유도하며, 여기서 리소스들은 모든 프레임들이 도착할 때까지 리소스들이 초기에 유휴 상태로 남게 되고, 그 후 리소스들은 후속 스티칭 시간을 최소화하기 위한 시도에서 최대로 과세되며, 이들 모두는 시각적 래그의 발생을 유도할 수도 있다.
도 5 는 또 다른 종래의 이미지 프로세싱 방법의 다이어그램을 도시한다. 도 5 에 도시된 종래의 이미지 스티칭 기법 (500) 에 있어서, 컴퓨팅 디바이스 (예를 들어, 컴퓨팅 디바이스 (예를 들어, 100)) 는 변화하는 정도의 수직 또는 수평 포지션 시프들을 갖는 다수의 이미지 프레임들 (502-510) 을 수신한다. 컴퓨팅 디바이스는 프레임들이 캡처될 때 이미지 프레임들 (502-510) 의 부분들을 소거 또는 트리밍을 시작할 수도 있다. 새로운 프레임이 캡처될 때, 새로운 프레임은 이전 프레임과 비교되고 돌출 부분들이 제거된다. 예를 들어, 도 5 에서, 이미지 프레임 (512) 은 모든 수신된 프레임들에 의해 공유되는 중심 공통 영역, 및 회색 및 흑색으로 도시된 2 개의 돌출 영역들을 포함한다. 제 2 프레임의 수신 시, 컴퓨팅 디바이스 (예를 들어, 100) 는 이미지 프레임의 회색 영역을 제거하기 시작하여 이미지 프레임 (512) 을 생성할 수도 있다. 유사하게, 다음 이미지 프레임의 수신 시, 컴퓨팅 디바이스 (예를 들어, 100) 는 프레임들 (516-520) 이 프로세싱되고 최종 이미지가 생성될 때까지 프레임 (514) 등을 생성하기 위해 이전 프레임으로부터 흑색 음영 영역을 제거하기 시작할 수도 있다. 이러한 기법들은 프리 프로세싱 동작들을 통합함으로써 프로세싱 속도를 증가시키지만, 이러한 기법들은 궁극적으로 폐기될 이미지 프레임들의 영역의 리던던트 프로세싱 때문에 프로세싱 리소스 소비를 상당히 감소시키지는 않는다.
도 6 은 다양한 실시형태들 및 구현들에 따른 이미지 프레임 및 결과의 실행 작업 리스트의 기하학적 분할의 블록 다이어그램을 도시한다. 다양한 구현들은 획득된 이미지 프레임을 컴퓨팅 디바이스 (예를 들어, 100) 의 프로세서 (예를 들어, 110) 에 의해 다수의 작업 영역으로 분할하는 것을 포함할 수도 있다. 다양한 구현들에서, 이미지 프레임 (600) 은 다수의 작업 영역들 (602-610) 로 분할될 수도 있다. 각각의 작업 영역 (602-610) 은 특정 작업 영역 (예를 들어, a-e) 에 대한 소거 가능도를 나타내는 트리밍 가중치를 할당받을 수도 있다. 다양한 구현들에서, 컴퓨팅 디바이스의 프로세서는 그들의 개개의 트리밍 가중치들에 기초한 순서로 실행 작업 리스트에 작업 영역들 (602-610) 을 부가하거나 그렇지 않으면 삽입할 수도 있다.
다양한 구현들에서, 작업 영역들 (602-610) 은 각각 새롭게 획득된 이미지 프레임 (600) 에 대해 식별될 수도 있다. 작업 영역들은 디폴트로 직사각형 일 수도 있지만, 다른 평행육면체, 초평면, 큐브, 구, 원, 다각형, 다면체 등을 포함할 수도 있다.
각각의 이미지 프레임 (600) 은 N 튜플 (x1, x2, ..., xN) 로 나타낼 수도 있으며, 여기서 N 은 작업 영역들 (602-610) 의 수이다. 실행 어플리케이션이 이미지 프로세싱 어플리케이션인 구현들에서, 작업 영역들 (602-610) 은 경계선들에 의해 묘사된 이미지 프레임 (600) 의 영역들로서 쉽게 시각화될 수도 있다. 하지만, 프로세싱을 위한 작업 아이템이 데이터 또는 API 콜들인 구현들에서, 작업 영역은 n 차원 클러스터일 수도 있다.
다양한 실시형태들에서, 컴퓨팅 디바이스 (예를 들어, 100) 의 프로세서 (예를 들어, 110) 는 임의의 활성 작업 아이템들 (즉, 프로세싱되기 위해 대기하고 있는 작업 영역들) 이 현재 작업 이미지 프레임에 대해 새롭게 식별된 작업 영역들 (602-610) 을 오버랩하는지 여부를 결정할 수도 있다. 이러한 영역들은 다양한 수학적 표현들로 나타낼 수도 있다. 예를 들어, 직사각형 영역들은 일반적으로 A1 ≤ x1 ≤ B1, A2 ≤ x2 ≤ B2, ... AN ≤ xN ≤ BN 으로 정의될 수도 있으며, 여기서 "A" 및 "B" 는 어플리케이션 프로그래머에 의해 설정된 경계 상수들이다. 초평면 작업 영역들은 공간의 체적에서 박싱하는 다수의 부등식들로 정의될 수도 있다. 이러한 영역들은 a1 (i)x1 + a2 (i) x2…+ aN (i)xN ≤ b(i) 로 정의될 수도 있으며, 여기서 "a" 및 "b" 는 i 번째 부등식과 연관된 상수들이다. 추가 예에서, 구형 작업 영역은 a1 (i)x1 2 + a2 (i) x2 2…+ aN (i)xN 2 ≤ b(i) 로 정의될 수도 있으며, 여기서 "a" 및 "b" 는 i 번째 부등식과 연관된 상수들이다.
컴퓨팅 디바이스의 프로세서는 작업 영역들 (602-610) 을 분석하고 각각의 영역에 대한 소거 가능도를 계산할 수도 있다. 각각의 소거 가능도는 특정 작업 영역 (601-610) 이 폐기되거나, 또는 대안으로 최종 프로덕트 (예를 들어, 파노라마 또는 가상 현실 렌더링) 을 생성하는데 사용하기 위해 보유될 가능도일 수도 있다. 영역 (R) 의 소거 가능도는 트리밍 가중치 (L) 로 나타낼 수도 있으며, 이 트리밍 가중치 (L) 는 영역 (R) 이 최종 프로덕트의 프로세싱을 위해 보유되기 위해 폐기될 가능도를 나타내는 영숫자 표시자일 수도 있다.
링크된 리스트 또는 공간 분할된 트리들, BVH (Bound Volume Hierarchies), 쿼드트리들 (QuadTrees), 옥트트리들 (OctTrees) 또는 Kd-트리들과 같은 데이터 구조에서 작업 영역들의 수 및 관계가 추적될 수도 있다. 예를 들어, 작업 영역들 (602-610) 은 N 차원 공간 내의 그들의 매핑된 포지션에 기초하여 상단 레벨 트리 노드에 연속적으로 저장될 수도 있는 한편, 제 2 레벨 트리 노드는 N 차원 공간 내의 상이한 포지션을 갖는 작업 영역들 (602-610) 의 그루핑들을 포함한다. 제 3 레벨 트리 노드들은 모션의 방향, 이미지 프레임 (600) 의 중심으로부터의 거리, 또는 다른 포지션/치수 기준에 의해 그룹핑들을 더 분할할 수도 있다. 이러한 트리 데이터 구조의 사용은 소거 (또는 보유) 가능도들이 업데이트되고 영역들이 폐기됨에 따라 로그 기반 룩업 시간 및 거기에 저장된 데이터의 신속한 재구성을 가능하게 할 수도 있다. 추가 예에서, 작업 영역 (608) 이 다음 이미지 프레임의 임의의 영역을 오버랩하지 않는 것으로 결정되면, 작업 영역 (608) 은 폐기될 수도 있다. 이와 같이, 영역과 관련된 데이터 (즉, 영역 "d") 는 트리로부터 제거될 수도 있고 관련 포인터들은 새로운 노드들로 재지향될 수도 있다.
일부 구현들에서, 트리밍 가중치들 (a-e) 을 갖는 작업 영역들 (602-610) 은 상단 레벨 트리 노드에 연속적으로 저장될 수도 있는 한편, 제 2 레벨 트리 노드는 유사하거나 동일한 트리밍 가중치들을 갖는 작업 영역들 (602-610) 의 그룹핑들을 포함하며, 예를 들어 a 는 제 1 노드에 포함될 수도 있고, b 및 d 는 제 2 노드에 포함될 수도 있으며, c 및 e 는 제 3 노드에 포함될 수도 있다. 제 3 레벨 트리 노드들은 모션의 방향, 이미지 프레임 (600) 의 중심으로부터의 거리 또는 다른 기준에 의해 그룹핑들을 추가로 분할할 수도 있다.
다양한 구현들에서, 컴퓨팅 디바이스의 프로세서는 하나 이상의 이미지 프레임들 (600) 의 작업 영역들 (602-610) 을 실행 작업 리스트에 부가할 수도 있다. 이러한 실행 작업 리스트는 반복 공간 또는 다른 프로세싱 큐일 수도 있다. 일부 구현들에서, 실행 작업 리스트는 다수의 프로세싱 유닛들 (예를 들어, CPU, GPU 및/또는 DSP) 에 서빙하는 단일 프로세싱 큐일 수도 있다. 다른 구현들에서, 실행 작업 리스트는 작업 아이템들을 우선순위화하고 작업 아이템이 실행 힙 (heap) 의 상단에 도달할 때 프로세싱 유닛에 아이템들을 전달하는 소팅 큐일 수도 있다. 일부 구현들에서, 실행 작업 리스트는 최상위 우선순위의 아이템들이 먼저 실행을 위해 제거되는 우선순위 힙으로서 구현될 수도 있다. 다양한 구현들에서, 우선순위화는 트림 가능도들의 감소하는 순서로 수행될 수도 있으며, 즉 최하위 트림 가능도를 갖는 아이템들이 먼저 실행을 위해 제거될 수도 있다. 일부 구현들은 부가 양태들에서 작업 아이템의 기하학적 형상과 같은 우선순위화를 고려할 수도 있다.
도 6 에 나타낸 바와 같이, 작업 영역들 (602-610) 과 연관된 작업 아이템들은 소거될 가능도가 가장 작은 (즉, 사용될 가능성이 가장 큰) 작업 아이템들이 먼저 실행을 위해 힙으로부터 벗어나게 되는 방식으로 실행 작업 리스트에 부가되거나 삽입될 수도 있다. 반대로, 소거의 높은 가능도와 연관된 작업 아이템들은 실행 작업 리스트의 종단 근방에 포지셔닝될 수도 있으며, 이로써 이러한 아이템들의 프로세싱을 지연시킨다. 소거될 가능성이 있는 작업 아이템들의 프로세싱을 작업 리스트의 하단에 이들을 배치함으로써 지연시키면, 작업 아이템들이 프로세싱되기 전에 폐기될 가능도를 증가시킴으로써, 프로세싱이 불필요하게 되는 것을 회피한다. 다양한 구현들에서, 하나 이상의 프로세서들 (예를 들어, 110) 은 이미지 프레임들이 여전히 캡처되고 있거나, 비디오가 여전히 기록되고 있거나, 또는 API 콜들이 여전히 만들어지고 있는 동안, 작업 아이템들의 실행을 시작할 수도 있다. 따라서 다양한 구현들은 낭비된 작업을 최소화하도록 어플리케이션 특정 지식을 사용하면, 선행 동시성을 최대화하고 판정 의존성을 파괴하기 위해 작업을 추측적으로 실행할 수도 있다.
도 7 은 다양한 구현들에 따른 기하학적 기반 작업 우선순위화 프로세스의 런타임 환경을 통한 작업 플로우의 블록 다이어그램을 도시한다. 기하학적 작업 스케줄링 스킴 (700) 은 일반적인 환경 (720) 및 어플리케이션 특정 동작들 (710, 712, 714) 모두를 갖는 것으로 나타나 있다. 다양한 실시형태들은 컴퓨팅 디바이스 (예를 들어, 100) 에서, 이미지 프레임, 비디오 세그먼트, 어플리케이션 API 콜들의 세트, 또는 하나 이상의 프로세서들 (예를 들어, 110) 을 통해 실행될 다른 프로세싱 작업을 수신하거나 그렇지 않으면 획득하는 것을 포함할 수도 있다.
다양한 구현들에서, 일반적인 환경 (720) 은 비 어플리케이션 특정 동작들을 제어 및 유지할 수도 있고 식별된 작업 영역들 (예를 들어, 작업 영역들 (402-410)) 에 관한 정보를 추적하는 데이터 구조를 유지할 수도 있다. 일반적인 환경 (720) 은 예를 들어, 도 4 를 참조하여 논의된 바와 같이, 식별된 작업 영역들을 추적하는 데이터 구조를 유지하는 런타임 기하학적 스케줄링 환경 (722) 을 포함할 수도 있다. 각각의 점선 박스들 (730 및 732) 은 획득된 이미지 프레임, 비디오 세그먼트, 어플리케이션 콜 그룹, 또는 다른 프로세싱 작업 세트의 시각적 표현을 제공한다. 각각의 점선 박스 (730, 732) 는 몇몇 컴포넌트 작업 영역들 및 그들의 연관된 트리밍 가중치들을 포함할 수도 있다. 다양한 구현들은 공간 파티셔닝된 트리들 또는 같은 데이터 구조들에 이러한 정보를 저장할 수도 있다. 기하학적 스케줄링 런타임 환경은 트리밍 가중치들이 수정되고 작업 아이템들이 완료되거나 폐기될 때 이러한 데이터 구조들을 유지 및 업데이트할 수도 있다. 다양한 구현들에서, 일반적인 환경 (720) 은 또한 하나 이상의 프로세서들 (예를 들어, 110) 에 의한 실행을 위해 개별 작업 아이템들을 스케줄링하는 스케줄링 루프 (724) 를 관리할 수도 있다.
블록 (710) 에서 컴퓨팅 디바이스 (예를 들어, 100) 의 프로세서 (예를 들어, 110) 는 새로운 작업 아이템들을 생성할 수도 있다. 도 4 및 도 6 을 참조하여 논의된 바와 같이, 프로세서 (예를 들어, 110) 는 이미지, 비디오, API 콜들의 그룹, 또는 다른 프로세싱 작업 세트를 획득하는 것; 경계 형상 (예를 들어, 바운딩 박스) 을 획득된 아이템에 적용하여, 경계 형상 내에 포함되는 작업 영역들을 식별하는 것; 각각의 작업 영역에 대한 소거 가능도를 결정하는 것; 및 소거 가능도에 기초하여 각각의 작업 영역에 트리밍 가중치를 할당하는 것에 의해 새로운 작업 아이템들을 생성할 수도 있다. 할당된 트리밍 가중치들을 갖는 결과의 작업 영역들은 작업 아이템들로서 해석될 수도 있다. 각각의 작업 아이템은 다음 정보를 더 포함할 수도 있다: N 차원 공간 내의 작업 아이템의 중심 (즉, 연관된 작업 영역의 중심); 작업 아이템의 치수들 (즉, 연관된 작업 영역의 치수들). 작업 아이템은 선택적으로 특정 프로세싱 유닛 (예를 들어, GPU) 상의 작업 아이템의 실행과 연관된 성능 멀티플라이어, 및 특정 프로세싱 유닛 상의 실행에 기초하여 증가된 전력 효율을 표시하는 전력 멀티플라이어에 관한 정보를 포함할 수도 있다. 또한, 작업 아이템은 일반적인 환경 (720) 에 작업 아이템에 대해 폐기 요청이 이루어지는 이벤트에서 무엇을 해야 하는지를 명령하는 어플리케이션 특정 콜백 기능 (예를 들어, 폐기 동작) 을 포함할 수도 있다.
부모 소프트웨어 어플리케이션의 런타임 동안 임의의 시간에, 컴퓨팅 디바이스 (예를 들어, 100) 의 프로세서 (예를 들어, 110) 는 새로운 작업 아이템들 (710) 을 생성할 수도 있고 일반적인 환경에 대한 + 작업 콜과 같은 API 콜을 행할 수도 있다. 기하학적 스케줄링 런타임 환경은 새로운 작업 아이템을 수신할 수도 있고, 그것을 부모 이미지, 비디오 세그먼트, API 콜 그룹, 또는 다른 프로세싱 작업 세트에 속하는 다른 작업 아이템들과 연관하여 저장할 수도 있다. 다양한 구현들에서, 기하학적 스케줄링 런타임 환경은 또한, 작업 아이템들의 효율적인 실행을 위해 상이한 프로세싱 유닛들에 전송될 수도 있는 프로세싱 그룹들을 형성하기 위해, 상이한 이미지들, 비디오 세그먼트들, API 콜 그룹들, 또는 다른 프로세싱 작업 세트들에 걸쳐 공통 엘리먼트들에 관한 정보를 유지하고 추적할 수도 있다
부모 소프트웨어 어플리케이션의 런타임 동안 임의의 시간에, 컴퓨팅 디바이스 (예를 들어, 100) 의 프로세서 (예를 들어, 110) 는 하나 이상의 폐기 영역들 (712) 을 오버랩하는 작업 아이템들을 폐기할 수도 있다. 도 7 을 참조하여 논의된 바와 같이, 컴퓨팅 디바이스 (예를 들어, 100) 의 프로세서 (예를 들어, 110) 는 최종 프로덕트의 생성에 불필요한 것으로 여겨지는 이미지, 비디오, API 콜 그룹 등의 영역들을 폐기, 취소 또는 트리밍할 수도 있다. 컴퓨팅 디바이스는 수신된 이미지 프레임을 더 이상 오버랩하지 않는 임의의 작업 영역 (예를 들어, 402-410 에서 돌출된 작업 영역) 을 폐기할 수도 있다.
불필요한 작업 영역들과 연관된 작업 아이템들을 폐기하는 것은 수동으로 또는 자동으로 행해질 수도 있다. 수동 폐기를 활용하는 구현들은 어플리케이션 측 상에서 실행되거나 그렇지 않으면 사용자 코드에 의해 관리되는 폐기 기능을 포함할 것이다. 이러한 구현들에서, 폐기 콜이 일반적인 환경 (720) 에 부모 소프트웨어 어플리케이션에 의해 이루어진 후, 리턴된 응답은 작업 아이템의 현재 스테이터스 (예를 들어, 실행되지 않음, 실행 중, 완료됨) 을 포함할 수도 있다. 작업 아이템의 생성 시 작업 아이템과 함께 패키징될 수도 있는 어플리케이션 "콜백" 기능은 이미 완료된 임의의 작업을 "실행 취소" 하기 위해 실행될 수도 있다. 예를 들어, 이미 프로세싱을 행한 이미지의 부분들은 폐기되고 그들의 픽셀들은 컴퓨팅 디바이스 메모리로부터 삭제될 수도 있다. 이러한 방식으로, 소프트웨어 어플리케이션들은 폐기된 작업 아이템들이 핸들링되어야 하는 방식을 지시할 수도 있다. 이러한 접근법은 어플리케이션 개발자들이 소프트웨어 어플리케이션의 프로세싱 및 전력 소비 필요성들의 지식에 기초하여 프로세싱 리소스들을 최상으로 활용하는 방법에 관한 판정들을 행하는 것을 가능하게 할 수도 있다. 예를 들어, 특정 어플리케이션은, 프로세서 (예를 들어, 110) 에 그것이 실행되지 않는 경우에만 작업 아이템을 소거하고, 이미 실행중이거나 완료된 작업 아이템은 그대로 유지하도록 명령하는 수동 폐기 동작을 포함할 수도 있다. 반대로, 다른 소프트웨어 어플리케이션은 더 많이 필요한 프로세싱 리소스들을 보존하고, 메모리로부터 즉시 임의의 완료된 폐기 작업 아이템들을 삭제하기 위해 컴퓨팅 디바이스에 즉시 임의의 실행 작업을 중단하도록 명령할 수도 있다.
다양한 구현들에서, 자동 폐기는 실행 소프트웨어 어플리케이션의 지식이 일반적인 환경 (720) 에 알려질 때 구현될 수도 있다. 예를 들어, 이미지 및 비디오 프로세싱 어플리케이션들은 컴퓨팅 디바이스 (예를 들어, 100) 의 프로세서 (예를 들어, 110) 가 프로세싱 작업의 유형 및 콘텐츠 (즉, 이미지 또는 비디오) 를 쉽게 식별할 수 있기 때문에, 리던던트 작업 영역들의 자동 폐기에 매우 적합할 수도 있다. 또한, 컴퓨팅 디바이스 (예를 들어, 100) 의 프로세서 (예를 들어, 110) 는 이미지들 또는 비디오 세그먼트들에 걸쳐 지역적 오버랩이 있는지 여부를 신속하게 결정할 수도 있다. 도 7 을 참조하여 논의된 구현들은 자동 폐기 기능을 포함하지만 이에 제한되지 않는다.
블록 (714) 에서, 컴퓨팅 디바이스 (예를 들어, 100) 의 프로세서 (예를 들어, 110) 는 활성 작업 아이템과 연관된 트리밍 가중치들을 업데이트할 수도 있다. 새로운 작업 아이템들이 생성될 때, 관련된 이미지들, 비디오 세그먼트들, API 콜 그룹들 등에 의해 공유되는 공통 치수들을 정의하는 작업 경계 형상 (예를 들어, 경계 박스) 의 치수 및 포지션이 조정될 수도 있다. 이와 같이, 이전에 작업 경계 형상 내에 놓이는 이미지 또는 비디오 세그먼트의 부분들은 더 이상 작업 경계 형상 내에 놓이지 않을 수도 있다. 반대로, 이전에 폐기 영역들로서 표시되었던 이미지 또는 비디오의 영역들은 이제 작업 경계 형상의 둘레 내에 놓일 수도 있다. 다른 예에서, 작업 경계 박스의 외부 에지를 따라 이전에 포지셔닝되었던 작업 영역은 이제 작업 경계 박스의 중심 내에 놓일 수도 있으며, 이로써 작업 영역이 폐기될 가능도를 감소시킨다. 다양한 구현들에서, 소거 가능도의 재평가가 소프트웨어 어플리케이션 측 상에서 발생할 수도 있고, 연관된 API 콜이 일반적인 환경 (720) 에 만들어져서 공간 파티셔닝된 트리/데이터 구조 내의 데이터를 업데이트할 수도 있다.
다양한 구현들에서, 컴퓨팅 디바이스 (예를 들어, 100) 의 프로세서 (예를 들어, 110) 는 작업 아이템들의 프로세싱을 실행하기 위한 스케줄링 루프 (724) 를 구현할 수도 있다. 프로세서는 런타임 기하학적 스케줄링 환경 (722) 에 의해 관리되는 실행 힙을 참조하고, 힙으로부터 "소거될 가능성이 가장 낮은" 작업 아이템을 끌어낼 수도 있으며, 예를 들어 프로세서가 실행 작업 리스트에서 제 1 작업 아이템을 선택할 수도 있다. 도 7 을 참조하여 논의된 바와 같이, 프로세서 (예를 들어, 110) 는 관리 프로세서 상에서 단일 작업 아이템을 실행할 수도 있거나, 또는 다수의 프로세싱 유닛들 (예를 들어, CPU, GPU 및 DSP) 에 걸쳐 실행을 위해 힙으로부터 하나 이상의 작업 아이템들을 끌어낼 수도 있다. 크로스 프로세서 실행을 활용한 구현들에서, 각각의 프로세싱 유닛에 대한 작업 큐잉에 관한 결정은 각각의 작업 아이템에 대한 작업 점수에 기초할 수도 있다. 작업 점수는 특정 프로세싱 유닛에 의한 실행에 대한 각각의 작업 아이템의 적합성을 표시할 수도 있다. 작업 아이템이 완료되면, 그 스테이터스가 작업 아이템 프로세싱이 완료된 것을 표시하기 위해 런타임 기하학적 스케줄링 환경 (722) 에 의해 유지되는 데이터 구조 내에서 업데이트될 수도 있다.
도 8 은 다양한 실시형태들 및 구현들에 따른 캡처된 이미지 프레임의 모션 추적 (800) 의 블록 다이어그램을 도시한다. 다양한 구현들은 컴퓨팅 디바이스 (예를 들어, 100) 의 프로세서 (예를 들어, 110) 에 의해 획득된 이미지 프레임들의 모션 방향을 추적하는 것을 포함할 수도 있다. 다양한 구현들에서, 컴퓨팅 디바이스는 포지션에서의 변화를 감지하도록 구성된 가속도계 또는 다른 센서를 가질 수도 있다. 이미지 캡처 디바이스 (예를 들어, 카메라) 가 이동함에 따라, 획득된 이미지 프레임들 (802-810) 내에 도시된 엘리먼트들은 서로 참조하여 시프트할 수도 있다. 예를 들어, 사용자가 카메라로 사진을 찍고 포물선 궤적으로 카메라를 이동할 때, 캡처된 이미지 프레임들은 도 8 에 도시된 바와 같이 정렬될 수도 있다.
다양한 구현들에서, 각각의 새로운 이미지 프레임 (802-810) 이 캡처됨에 따라, 이미지 프레임들의 공통 공유 치수들을 정의하는 작업 경계 형상 (예를 들어, 바운딩 박스) 는 수정된다 (즉, 업데이트된다). 카메라가 상향 방향으로 이동함에 따라, 작업 경계 형상의 둘레 또한 상향 방향으로 이동하여, 최고 이미지 (예를 들어, 이미지 프레임 (806)) 의 하부 에지 아래에 포지셔닝된 영역들을 컷 아웃할 것이다. 따라서, 최고 이미지 프레임의 하부 에지 아래에 포지셔닝된 작업 영역들의 소거 가능도는 작업 경계 형상의 둘레 내에 이전에 포함될 수 있었지만, 이제 둘레 외측에 놓일 수도 있으며, 이로써 폐기 영역들로서 재분류될 수도 있다. 유사하게, 이미지 프레임들 (808 및 810) 이 획득되고 분석됨에 따라, 작업 경계 형상의 상부 경계는 최저 이미지 프레임 (예를 들어, 이미지 프레임 (810)) 의 상부 에지로 낮아질 수도 있다.
도 9 는 다양한 실시형태들 및 구현들에서 이미지 프로세싱 어플리케이션에서의 작업 프로세싱의 기하학적 기반 우선 순위화를 위한 방법 (900) 의 프로세스 플로우 다이어그램을 도시한다. 방법 (900) 은 통신 서브시스템 (예를 들어, 130) 및 메모리 (예를 들어, 125) 와 통신하는 프로세서 (예를 들어, 110) 에 의해 수행되는 컴퓨팅 디바이스 상에서 구현될 수도 있다.
블록 (902) 에서, 컴퓨팅 디바이스는 제 1 이미지를 획득할 수도 있다. 제 1 이미지는 컴퓨팅 디바이스의 프로세서와 통신하는 카메라를 통해 획득될 수도 있다. 제 1 이미지는 또한, 렌더링된 이미지일 수도 있고 컴퓨팅 디바이스의 통신 서브시스템 (예를 들어, 130) 에 의해 획득되거나 가상 현실 시뮬레이션과 같은 소프트웨어 어플리케이션의 런타임 동안 프로세서에 의해 생성될 수도 있다.
블록 (904) 에서, 컴퓨팅 디바이스의 프로세서는 제 1 이미지 상에 경계 형상을 오버레이할 수도 있다. 프로세서는 파노라마 이미지들에 일반적인 치수들을 갖는 직사각형 박스 경계와 같은 디폴트 경계 형상을 메모리 (예를 들어, 125) 에 저장할 수도 있다. 프로세서는 획득된 제 1 이미지 상에 이러한 디폴트 경계 형상을 오버레이하여 제 1 이미지의 임의의 부분들이 디폴트 경계 형상의 둘레 외측에 놓이는지 여부를 결정할 수도 있다. 디폴트 경계 형상 외측에 놓여 있는 제 1 이미지의 임의의 부분들은 폐기 영역들로서 분류될 수도 있다. 폐기 영역들은 기하학적 스케줄러의 런타임 환경 (예를 들면, 런타임 기하학적 스케줄링 환경) 에 의해 유지되는 메모리 (예를 들어, 125) 에 저장된 데이터 구조 내의 이미지 프레임과 관련하여 저장될 수도 있다. 폐기 영역들은 도 5 및 도 6 을 참조하여 논의된 바와 같이, 경계 형상이 어떻게 업데이트되는지에 의존하여 프로세싱으로부터 나중에 소거될 수도 있다.
블록 (906) 에서, 컴퓨팅 디바이스 (예를 들어, 100) 의 프로세서 (예를 들어, 110) 는 디폴트 경계 박스 내의 다수의 작업 영역들을 식별할 수도 있다. 작업 영역들은 직사각형, 초평면, 큐브 또는 이미지를 조각으로 분할할 수 있는 다른 형상일 수도 있다. 다양한 구현들에서, 작업 영역들은 중심 영역 및 다수의 외부 영역들을 포함할 수도 있다. 각각의 이미지의 중심 영역이 최종 파노라마 이미지를 생성하는데 있어서 보유될 가능성이 가장 높기 때문에, 중심 영역은 가장 큰 면적 또는 체적을 점유할 수도 있다. 외부 영역들은 중심 영역으로부터 외측으로 연장할 수도 있고, 획득된 이미지의 지오메트리에 맞도록 치수가 감소되거나 또는 형상/치수를 완전히 변화시킬 수도 있다. 다수의 작업 영역들로의 이미지 분할의 일 예는 도 4 에 나타나 있다.
블록 (908) 에서, 프로세서는 식별된 작업 영역들의 각각에 대한 소거 가능도를 계산할 수도 있다. 소거 가능도는 제 1 이미지의 중심으로부터의 거리, 제 1 이미지 상에 오버레이될 때 경계 형상의 중심으로부터의 거리, 또는 이미지 캡처 디바이스의 모션의 투영된 방향 중 하나 이상에 기초하여 계산될 수도 있다. 소거 가능도는 근사 값일 수도 있으며 보유 또는 폐기의 기회의 정확한 계산을 나타낼 필요는 없다.
가상 현실 어플리케이션들을 포함한 구현들에서, 소거 가능도는 각각의 작업 영역에 할당된 지속기간에 기초할 수도 있다. 지속기간은 가상 현실의 시야가 작업 영역과 오버랩할 것으로 예상되지 않는 시간을 나타낼 수도 있다. 지속기간이 높으면, 가상 현실 뷰포트가 지속기간 주기의 만료 전에 영역과 오버랩할 가능성이 없이 때문에, 소거 가능도가 높을 수도 있다.
블록 (910) 에서, 프로세서는 계산된 소거 가능도에 기초하여 식별된 작업 영역들 각각에 트리밍 가중치를 할당할 수도 있다. 트리밍 가중치는 폐기되거나 보유될 작업 영역의 가능도의 영숫자 표현일 수도 있다. 예를 들어, 글자들 A-Z 는 우선순위의 순서를 표시하는데 사용될 수도 있다. 유사하게, 작업 영역들에 숫자 랭킹들이 할당될 수도 있다. 따라서, 트리밍 가중치들은 연관된 작업 영역의 실행 우선순위 뿐만 아니라 폐기 또는 보유의 가능도 양자 모두를 표시하기 위해 생성될 수도 있다.
블록 (912) 에서, 프로세서는 작업 영역들을 작업 아이템들로서 실행 작업리스트에 부가하거나 그렇지 않으면 삽입할 수도 있다. 실행 작업 리스트 내의 작업 아이템들의 순서는 각각의 작업 영역에 할당된 트리밍 가중치들에 기초할 수도 있다. 더 높은 우선순위를 갖는 작업 아이템들 (즉, 폐기, 소거 또는 트리밍될 가능성이 가장 적은 것들) 은 실행 작업 리스트 내에 먼저 포지셔닝될 수도 있다. 일부 구현들에서, 실행 작업 리스트는 다수의 프로세서들을 서비스할 수도 있고, 또는 단일 프로세서를 서비스할 수도 있다. 멀티 프로세서 구현들에서, 각각의 프로세서는 그와 연관된 별도의 실행 작업 리스트를 가질 수도 있다.
블록 (914) 에서, 프로세서는 제 2 이미지 또는 부가 이미지 (예를 들어, 제 3, 제 4, 제 5 이미지 등) 를 획득할 수도 있다. 제 2 이미지는 블록 (902) 을 참조하여 논의된 것과 유사한 방식으로 획득될 수도 있다.
블록 (916) 에서, 프로세서는 작업 경계 형상을 업데이트할 수도 있다. 즉, 프로세서는 작업 경계 형상이 제 1 이미지 및 제 2 이미지 양자 모두에 맞는지 여부를 결정할 수도 있다. 제 2 이미지가 제 1 이미지와 정확하게 축 방향으로 정렬되지 않는 경우, 오프셋이 이미지 프레임들 사이에 존재할 수도 있다. 그 후, 작업 경계 박스의 치수들은 경계 형상의 둘레 내에 빈 공간이 놓여 있지 않도록 수정될 수도 있다. 이 수정된 경계 형상은 업데이트된 작업 경계 형상으로 지칭될 수도 있다. 새로운 이미지가 획득될 때마다, 업데이트된 작업 경계 형상은 다시 업데이트될 수도 있다. 따라서, 업데이트된 작업 경계 형상은 임의의 주어진 시간에 모든 획득된 이미지들의 공통 공유 영역을 오버랩할 수도 있다. 업데이트 작업 경계 형상 외측에 놓여 있는 이미지의 임의의 부분들은 폐기 영역들로서 분류될 수도 있다.
블록 (918) 에서, 프로세서는 제 2 이미지 상에 업데이트된 작업 경계 형상을 오버레이할 수도 있고, 업데이트된 작업 경계 형상 외측에 놓여 있는 영역들을 폐기 영역들에 속하는 것으로 분류할 수도 있다. 따라서, 새로운 이미지들이 획득됨에 따라 폐기 영역의 사이즈는 증가하거나 감소할 수도 있다.
블록 (920) 에서, 프로세서는 실행 작업리스트 내의 임의의 활성 작업 아이템들이 폐기 영역들을 오버랩하는 작업 영역들과 연관되는지 여부를 결정할 수도 있다. 획득되는 각각의 새로운 이미지에 대해, 폐기 영역들은 이제 폐기 영역으로서 분류되는 영역을 오버랩하는 임의의 작업 아이템들을 프로세싱으로부터 지연시키거나 제거하기 위해서 작업 아이템들에 대해 비교될 수도 있다. 프로세서는 작업 영역들과 폐기 영역의 간단한 비교에 의해 이러한 결정을 달성할 수도 있다. 블록 (922) 에서, 프로세서는 폐기 영역을 오버랩하는 임의의 작업 아이템들을 소거할 수도 있다.
프로세서는 블록 (906) 에서 작업 영역들을 다시 식별하고, 블록 (908) 에서 각각의 작업 영역에 대한 소거 가능도를 계산하며, 블록 (910) 에서 각각의 작업 영역에 트리밍 가중치들을 할당할 수도 있다.
블록 (912) 에서, 프로세서는 제 1 이미지 및 제 2 이미지의 트리밍 가중치들 양자 모두에 기초하여 작업 영역들을 실행 작업 리스트에 부가할 수도 있다. 따라서, 제 2 이미지의 작업 아이템들은 실행 작업 리스트에 산재될 수도 있고, 제 1 이미지의 작업 아이템들의 우선순위를 공유하거나, 이들보다 더 낮은 우선순위를 갖거나, 또는 이들보다 더 높은 우선순위를 가질 수도 있다. 기하학적 기반 작업 아이템들의 획득 및 우선순위화는 모든 이미지들이 획득되고 모든 작업 아이템들이 스케줄링될 때까지 계속될 수도 있다. 제 2 및 후속 이미지들에 대한 작업 영역들을 식별하는 것은 현재 업데이트된 작업 경계 형상에 기초하여 새로운 작업 영역들을 식별하는 것, 및/또는 업데이트된 작업 경계 형상의 경계들의 일부에 순응하기 위해 기존의 작업 영역들의 경계를 변화시키는 것을 포함할 수도 있다.
도 10 은 다양한 실시형태들 및 구현들에서 다수의 프로세싱 유닛들에 걸쳐 작업 영역들에 기초하여 우선순위화된 작업의 실행을 위한 방법 (1000) 의 프로세스 플로우 다이어그램을 도시한다. 방법 (1000) 은 컴퓨팅 디바이스 (예를 들어, 100) 상에서 구현되고 통신 서브시스템 (예를 들어, 130) 및 메모리 (예를 들어, 125) 와 통신하는 프로세서 (예를 들어, 110) 에 의해 수행될 수도 있다.
블록 (1002) 에서, 컴퓨팅 디바이스는 도달 작업 아이템에 대한 작업 점수를 계산할 수도 있다. 작업 점수는 각각의 작업 아이템이 가용 프로세싱 유닛들 각각에 대해 프로세싱을 위한 그 작업 아이템의 적합성을 표시하는, 다수의 작업 점수들을 갖도록 각각의 가용 프로세싱 유닛에 특정될 수도 있다. 작업 점수는 예를 들어, 작업 아이템과 연관된 작업 영역의 사이즈 및/또는 형상, 작업 아이템의 프로세싱을 완료하는데 필요한 배터리 수명, 및 작업 아이템의 트리밍 가중치를 포함하는 몇몇 론치 팩터들 중 하나 이상을 사용하여 계산될 수도 있다. 예를 들어, 큰 및/또는 직사각형 작업 영역과 연관된 작업 아이템들은 그래픽 프로세싱 유닛 (GPU) 상에서 프로세싱을 위해 아주 적합할 수도 있으며, 이는 사이즈가능하고, 예측가능하게 형상화된 이미지 영역들의 프로세싱을 위해 잘 적응될 수도 있다. 하지만, GPU 는 불규칙하게 형상화된 작업 영역들 또는 많은 작은 작업 아이템들의 비효율적인 프로세서일 수도 있다. 유사하게, 중앙 프로세싱 유닛 (CPU) 은 소거의 높은 가능도를 표시하는 트리밍 가중치를 갖는 작업 아이템들의 프로세싱에 가장 적합할 수도 있는데, 이는 디지털 신호 프로세서 (DSP) 또는 GPU 에 대해서일 수도 있는 것보다 CPU 상에서 실행하는 것을 시작한 작업 아이템들을 소거하는 것이 더 용이할 수도 있기 때문이다.
블록 (1004) 에서, 프로세서는 작업 아이템의 작업 점수에 기초하여 프로세싱 유닛에 작업 아이템을 할당할 수도 있다. 블록 (1004) 에서의 동작들은 작업 아이템이 할당되어야 하는 프로세싱 유닛을 결정하기 위해 구현될 수도 있는 몇몇 동작들을 포함할 수도 있다.
블록 (1006) 에서, 프로세서는 작업 아이템이 각각의 가용 프로세싱 유닛 (예를 들어, 110) 에 대해 계산된 작업 점수를 갖는지 여부를 결정할 수도 있다.
작업 아이템이 각각의 가용 프로세싱 유닛에 대한 작업 점수를 가지지 않는 것을 결정하는 것에 응답하여 (블록 (1006) = "아니오"), 프로세서는 블록 (1008) 에서 작업 아이템에 대한 론치 팩터들을 결정, 계산 또는 룩업할 수도 있다. 블록 (1010) 에서, 프로세서는 작업 점수가 누락되는 특정 프로세서와 관련된 작업 아이템에 대한 작업 점수를 계산할 수도 있다. 프로세서는 결정 블록 (1006) 에서 작업 아이템이 각각의 프로세싱 유닛에 대한 작업 점수를 갖는지 여부를 다시 결정할 수도 있다. 다양한 구현들에서, 론치 팩터들은 특정 프로세서 유형에 대한 작업 아이템에 대한 론치 오버헤드 (예를 들어, 작업 아이템을 론칭하는데 필요한 프로세싱 리소스들), 특정 프로세서 상의 작업을 프로세싱하는 것과 연관된 열적 응답 및/또는 배터리 소모, 특정 프로세서 또는 프로세서 유형 큐로부터의 작업 소거의 용이성, 및 작업 아이템의 "형상" 에 기초한 프로세서의 활용성을 포함할 수도 있다.
각각의 가용 프로세싱 유닛에 대해 작업 아이템과 연관된 작업 점수가 있는 것을 결정하는 것에 응답하여 (블록 (1006) = "예"), 프로세서는 블록 (1012) 에서 작업 아이템과 연관된 최상의 작업 점수를 결정할 수도 있다. 이것은 최고 점수, 최저 점수 또는 0 에 가장 근접한 점수일 수도 있다. 프로세서는 작업 아이템과 연관된 작업 점수의 간단한 수학적 비교를 통해 최상의 작업 점수를 결정할 수도 있다.
블록 (1014) 에서, 프로세서는 작업 아이템이 가장 적합한 (즉, 최상의 작업 점수를 갖는) 프로세싱 유닛의 반복 공간 또는 실행 큐에 작업 아이템을 할당할 수도 있다. 프로세서 (예를 들어, 110) 는 모든 작업이 완료되고 최종 이미지가 생성될 때까지 상이한 프로세싱 유닛들에 작업 아이템들을 할당하는 것을 계속할 수도 있다.
다양한 구현들에서, 프로세서 특정 작업 점수들의 계산은 특정 프로세서 유형 상의 작업 아이템에 대한 하나 이상의 론치 오버헤드 (예를 들어, 작업 아이템을 론칭하는데 필요한 프로세싱 리소스들), 특정 프로세서 상에서 작업을 프로세싱하는 것과 연관된 열적 응답 및/또는 배터리 소모, 특정 프로세서 또는 프로세서 유형 큐로부터의 작업 소거의 용이성, 및 작업 아이템의 "형상" 에 기초한 프로세서의 활용성 중 하나 이상에 기초할 수도 있다.
가상 현실 및 게이밍 어플리케이션을 포함하는 구현들에서, 물리적 모션을 겪는 이미지 프레임들의 실시간 생성은 상당한 프로세싱 리소스들을 필요로 한다. 이미지 프레임들을 충분히 빨리 생성하는 능력이 없으면 시각적 래그 또는 지터를 유도할 수 있다. 이러한 시각적 효과들은 종종 가상 현실 사용자들을 매스껍게 하거나 눈이 피곤하고 불편하게 한다. 다양한 유형의 게이밍 및 가상 현실 어플리케이션들에서, 많은 수의 세계 오브젝트들 및 오브젝트들을 포함한 게임 내 액션들 (예를 들어, 충돌, 파편, 연기 화재 효과들) 이 있을 수도 있다. 이들 액션들 및 오브젝트들의 일부는 상호작용 사용자에게 가시적이지 않을 수도 있다. 사용자에게 가시적이게 될 가능성이 있는 그러한 오브젝트들 및 액션들만을 효율적으로 프로세싱하는 것을 가능하게 함으로써, 다양한 실시형태들 및 구현들은 래그 및 지터 영향들을 감소시킬 수도 있으며, 이로써 게이밍 및 가상 현실 사용자들에 대한 전반적인 사용자 경험을 개선할 수도 있다. 다양한 구현들은 특히 최종 "새로운" 시각을 획득하기 위해 모든 세계 오브젝트들이 프로세싱되어야 하는, 파편 비주얼 및 뷰 내 (in-view) 충돌들을 어드레싱하기에 아주 적합할 수도 있다. 다양한 구현들에서, 모든 세계 (즉, 게임 내 또는 뷰 내) 오브젝트들이 게임 세상을 나타내는 2-D 또는 3-D 이미지를 점유하는 것으로 고려될 수도 있다. 따라서, 다양한 실시형태들 및 구현들은 작업 프로세싱이 시간 프레임 내에서 사용자에 의해 뷰잉될 가능성이 있는 이미지의 영역들로 제한되는 것을 가능하게 한다. 오브젝트들 및 액션들은 시간의 지속기간 내에 뷰잉되지 않으면, 타임아웃 (즉, 관련성이 없어지게) 할 수도 있다. 타임아웃 지속기간은 오브젝트 및 액션들의 성질에 기초하여 미리 결정될 수도 있다. 대응 타임아웃 전에 사용자에 의해 보여질 가능성이 있는 이미지의 영역들 내에 놓여 있는 오브젝트들 및 액션들의 프로세싱은 컴퓨팅 디바이스의 하나 이상의 프로세서들에 의해 우선순위화될 수도 있다. 반대로, 다른 오브젝트들 및 액션들 (즉, 타이 프레임 동안 뷰잉될 가능성이 없는 것들) 의 프로세싱은 연기되거나 완전히 스킵될 수도 있다.
가상 현실 어플리케이션에서, 새로운 오브젝트들이 사용자의 시야 내에 주기적으로 나타날 수도 있고, 새로운 액션들이 시작될 수도 있다 (예를 들어, 2 개의 오브젝트들 사이의 충돌 후 파편, 바운스, 충돌 후의 버닝 등). 그러한 시간에, 프로세서는 결정된 관심 영역들 내에 포함되는 오브젝트들 및 액션들의 프로세싱을 제한하도록 어느 영역들이 관심이 있는지에 관하여 새로운 결정을 행할 수도 있다.
도 11 은 가상 현실 게이밍 어플리케이션에서 작업 프로세싱의 기하학적 기반 우선순위화를 위한 방법 (1100) 의 프로세스 플로우 다이어그램을 도시한다. 방법 (1100) 은 컴퓨팅 디바이스 (예를 들어, 100) 상에서 구현되고 통신 서브시스템 (예를 들어, 130) 및 메모리 (예를 들어, 125) 와 통신하는 프로세서 (예를 들어, 110) 에 의해 수행될 수도 있다.
블록 (1102) 에서, 컴퓨팅 디바이스는 어플리케이션으로부터 이미지 프레임을 획득할 수도 있다. 프로세서 (예를 들어, 110) 는 하나 이상의 칼만 필터링 기법들의 사용과 같은 임의의 표준 모션 예측 기법을 사용하여 사용자의 뷰포트의 예상된 포지션 및 이동의 예상의 방향을 계산할 수도 있다. 모션의 방향은 뷰포트 (즉, 가상 현실 시야) 가 특정 영역에 액세스하지 않을 시간의 예측된 지속기간을 계산하는데 사용될 수도 있다. 이 지속기간 "t" 는 획득된 이미지에 할당될 수도 있으며, 따라서 이미지들에 대한 좌표 표현은 (x, y, t) 일 수도 있다.
블록 (1104) 에서, 컴퓨팅 디바이스는 새로운 키 이벤트를 검출할 수도 있다. 프로세서 (110) 는 블록 (1106) 에서 이벤트의 성질을 결정할 수도 있다. 이벤트들은 화면 상 (on-screen) 충돌들, 주기적인 포지션 업데이트들, 및 장면 변화들을 포함할 수도 있다. 그래픽스 프로세싱 구현들 (예를 들어, 가상 현실 뷰 공간 어플리케이션들) 의 키 이벤트들은 충돌, 파편, 장면 변화들 및 시각적 필드에 대한 다른 실질적인 변화들과 같은, 뷰포트의 재구성 또는 재배열을 초래하는 이벤트들일 수도 있다.
이벤트가 충돌인 경우, 프로세서 (예를 들어, 110) 는 블록 (1116) 에서 획득된 이미지의 경계를 결정하고, 파편 패턴 (예를 들어, 작업 영역) 을 결정하고, 방법들 (200 및 900) 에 따라 각각의 작업 형상 또는 영역에 대한 트리밍 가중치들을 결정할 수도 있다.
블록 (1118) 에서, 프로세서 (예를 들어, 110) 는 작업 형상들 또는 영역들과 연관된 작업 아이템들을 프로세싱을 위해 작업 리스트에 등록할 수도 있다. 작업 아이템을 프로세싱하기 전에 지속기간 "t" 가 타임아웃하는 작업 아이템들이 작업 리스트 및 임의의 연관된 프로세서 큐들로부터 제거될 수도 있다. 그 후 컴퓨팅 디바이스는 하기에 기재되는 바와 같이 블록 (1114) 에서 동작들을 수행할 수도 있다.
이벤트가 주기적인 포지션 업데이트인 경우, 블록 (1108) 에서, 컴퓨팅 디바이스는 뷰포트 내의 풍경에 대한 주기적인 업데이트들을 수행할 수도 있다. 방법들 (200 및 900) 에 따라, 프로세서 (예를 들어, 110) 는 작업 경계 형상 또는 영역을 업데이트할 수도 있으며, 각각의 활성 영역 (즉, "t"가 만료되지 않은 그러한 영역들) 에 대해 "t" 를 재계산할 수도 있다. "t" 의 재평가는 다양한 작업 영역들에 대한 트리밍 가중치의 수정을 초래할 수도 있다. 일부 경우들에서, 지속기간 "t" 의 재평가는 작업 아이템들의 폐기를 초래할 수도 있다.
블록 (1110) 에서, 컴퓨팅 디바이스는 지속기간이 타임아웃된 작업 아이템들을 폐기할 수도 있다. 또한, 컴퓨팅 디바이스 (예를 들어, 100) 의 프로세서 (예를 들어, 110) 는 지속기간 타임아웃 시 작업 경계 형상 또는 영역의 시간 성분을 리셋할 수도 있다. 그 후, 컴퓨팅 디바이스는 하기에 기재된 바와 같이 블록 (1114) 에서 동작들을 수행할 수도 있다.
검출된 이벤트가 전체 시야가 변화되는 장면 변화인 경우, 블록 (1112) 에서 컴퓨팅 디바이스는 작업 리스트에서의 모든 작업 아이템들을 폐기하고 디폴트 경계 형상 또는 영역을 리셋할 수도 있다. 이전에 큐잉된 이미지 세그먼트들 (예를 들어, 작업 아이템들) 은 현재 장면에 더 이상 적용가능하지 않기 때문에, 연관된 작업 아이템들을 프로세싱할 필요가 없을 수도 있다. 따라서, 프로세서 (110) 는 트리밍 가중치들에 관계없이 모든 작업 아이템들을 폐기할 수도 있다.
블록 (1114) 에서, 컴퓨팅 디바이스는 액션을 위해 남아있는 이벤트들이 있는지 여부를 결정할 수도 있다. 이벤트들이 존재하는 경우 (즉, 블록 (1114) = "예"), 프로세서 (예를 들어, 110) 는 블록 (1106) 에서 잔여 이벤트의 성질을 다시 결정할 수도 있다.
잔여 이벤트들이 없는 경우 (즉, 블록 (1114) = "아니오"), 컴퓨팅 디바이스는 작업 리스트로부터 "K" 개의 최상의 작업 아이템들을 선택할 수도 있고, 블록 (1120) 에서 하나 이상의 프로세서들을 통해 그러한 작업 아이템들을 프로세싱할 수도 있다. 프로세서는 모든 이미지들이 프로세싱되거나 어플리케이션이 종료할 때까지 이미지들을 획득하고 예측된 모션을 계산하는 것을 계속할 수도 있다.
다양한 실시형태들에서, 소프트웨어 어플리케이션들은 폐기 영역들 (즉, 모든 작업 아이템들이 폐기될 수도 있는 기하학적으로 형상화된 영역) 및 경계 영역들 (즉, 모든 작업 아이템들이 폐기를 위해 업데이트된 가능도에 기초하여 새로운 트림 가중치를 할당받을 수도 있는 기하학적으로 형상화된 영역들) 을 구축하기 위해 상이한 전략들을 사용할 수도 있다. 어플리케이션 특정 경계 전략들을 채용하는 능력은 작업 아이템들의 기하학적 스케줄링을 위한 다양한 구현들 및 실시형태들을 이용하기 위해 다양한 유형들 및 용도들의 소프트웨어 어플리케이션들을 가능하게 할 수도 있다.
폐기 영역들 및 경계 영역들은 소프트웨어 어플리케이션이 파노라마 이미지 프로세싱 소프트웨어 어플리케이션에서 새로운 "키 이미지 프레임"의 도착과 같은 "키 이벤트" 를 직면할 때 재산출될 수도 있다. 핵심적인 이미지 프레임을 프로세싱하는데 필요한 작업의 평가는 형상 또는 사이즈에서의 변화 (수축) 경험하는 작업 경계 박스 형상을 초래할 수도 있다. 이전의 작업 경계 형상과 업데이트된 작업 경계 형상 사이의 기하학적으로 형상화된 영역은 그러한 파노라마 프로세싱 소프트웨어 어플리케이션에 의한 평가 동안 폐기 영역이 될 수도 있다.
다양한 구현들 및 실시형태들에서, 폐기 영역에 가장 근접한 업데이트된 작업 경계 형상의 영역들이 업데이트된 작업 경계 형상에 관한 폐기 영역의 위치는 후속 키 이벤트의 도착 시 폐기될 가능성이 더 크게 되는 것을 표시할 수도 있다. 반대로, 작업 경계 형상 내에 놓여 있고 폐기 영역(들)로부터 가장 멀리 포지셔닝된 기하학적으로 바운딩된 영역들은 후속 키 이벤트의 도착 시 폐기될 가능성이 적을 수도 있다. 이러한 구현들에서, 모든 기하학적으로 바운딩된 영역들의 트림 가중치들은 개개의 소프트웨어 어플리케이션에 의해 채용된 바운딩 스킴에 따라 업데이트될 수도 있다.
다양한 구현들은 컴퓨터 게임들, 가상 현실, 증강 현실, 혼합 현실, 컴퓨터 비전, 실시간 카메라 이미지 프로세싱 등과 같은, 광범위한 범주의 소프트웨어 어플리케이션에 대한 기하학적 작업 스케줄링을 포함할 수도 있다.
일부 구현들에서, 작업 경계 형상이 사용될 수도 있다. 소프트웨어 어플리케이션들은 과도하게 큰 형상으로 초기화될 수도 있는 작업 경계 형상을 유지할 수도 있고 새로운 키 이벤트들의 프로세싱의 결과로서 수축하는 것을 계속할 수도 있다. 키 이벤트 업데이트들 동안 작업 경계 형상의 내부에서 작업 경계 형상의 외부로 이동되는 기하학적으로 바운딩된 영역들은 폐기 영역들이 된다.
폐기 영역의 근접도는 업데이트된 작업 경계 형상 내의 가능도 업데이트 영역들의 형상/위치를 결정할 수도 있다. 즉, 작업 경계 형상 내에 놓여 있지만 작업 경계 형상의 둘레/외부에 근접하여 포지셔닝되는 그러한 기하학적으로 바운딩된 영역들은 "업데이트될 가능성이 있는" 것으로 고려될 수도 있는데, 이는 그들의 포지션이 그들의 트림 가중치들이 새로운 키 이벤트의 프로세싱 시 업데이트하는 것을 필요로 하게 될 가능성이 있게 하기 (또는 이들이 폐기 영역들로 이동될 수도 있음) 때문이다. (예를 들어, 위치 및 형상 특성들을 예측하기 위해 모션 예측 기법들을 사용하여) 후속 키 이벤트 특성들을 예측하기 위한 부가 소프트웨어 어플리케이션 특정 기능들은 또한 가능도 업데이트 영역들의 결정을 도울 수도 있다.
다양한 구현들에서, 미리 결정된 영역 경계들이 사용될 수도 있다. 소프트웨어 어플리케이션은 선험적으로 큰 기하학적 공간을 다수의 영역들로 분할할 수도 있다. 각각의 미리 결정된 영역 또는 기하학적으로 인접한 미리 결정된 영역들의 집합은 폐기 영역 또는 가능도 업데이트 영역이 될 수도 있다. 예를 들어, 가상 현실 게이밍 소프트웨어 어플리케이션은 전체 헤드셋 뷰 공간을 동일한 사이즈의 미리 결정된 영역들로 사전 분할할 수도 있다. 소프트웨어 어플리케이션은 헤드 추적 모션 예측 (예를 들어, 칼만 필터) 을 사용하여 다음 "T" 밀리초 내에 헤드셋에 의해 뷰잉될 가능성이 없는 것으로서 하나 이상의 미리 결정된 영역들을 폐기할 수도 있다. 소프트웨어 어플리케이션은 사용자가 거의 확실히 보지 않게 되는 것을 초래하는 모든 작업 아이템들을 폐기하기로 판정할 수도 있으며, 다음 T 밀리초에서 뷰잉될 가능성이 많거나 적을 때 헤드셋의 현재 뷰 포지션에 더 근접한 미리 결정된 영역들을 업데이트할 수도 있다. 가능도 업데이트 영역의 트림 가중치는 그에 따라 조정될 수도 있다.
다양한 구현들에서, 경계 스킴은 포커스 영역 전략을 채용할 수도 있다. 소프트웨어 어플리케이션과 상호작용하는 사용자의 주의는 전형적인 컴퓨터 게임에서의 더 큰 세계 뷰 공간 내의 스크린 공간 뷰, 또는 가상 현실 어플리케이션의 전체 360 도 뷰 공간 내의 헤드셋과 같은 큰 기하학적 공간의 제한된 부분 상에서 시간에 대해 포커싱될 수도 있다. 포커스의 포인트는 소프트웨어 어플리케이션의 기능에 의해 또는 사용자가 얼마나 빨리 가상 현실 헤드셋을 이동할 수 있는지와 같은 물리적 제한들로 인해 정의될 수도 있다. 폐기 영역 및 가능도 업데이트 영역들은 현재 포커스 영역에 대한 그들 개개의 근접도 뿐만 아니라, 사용자 포커스가 주어진 시간 프레임 내에서 현재 포커스 영역을 넘어/그 주변의 더 큰 영역으로 진입할 가능도의 예측들에 기초하여 결정될 수도 있다. 폐기 영역 및 가능도 업데이트 영역의 형상 및 사이즈는 미리 결정된 전략과 대비하여 각각의 키 이벤트 후에 동적으로 결정될 수도 있다.
복잡한 소프트웨어 어플리케이션들은 다수의 피처들 및 기능들을 통해 기하학적 스케줄링을 일관성있게 구현하기 위해 전략들의 하이브리드를 채용할 수도 있다. 기하학적 스케줄링 공간은 물리적 뷰 공간들 뿐만 아니라 시간과 같은 다른 차원들, 및 게임 캐릭터의 건강과 같은 어플리케이션 특정 차원들로 구성될 수도 있다. 폐기 및 가능도 업데이트 영역들은 어플리케이션의 성질 및 기하학적 스케줄링에 종속되는 피처에 기초하여 차원들 모드 또는 서브세트에 걸치도록 선택될 수도 있다.
도 12 는 작업 프로세싱의 우선순위화에 기초하여 기하학적으로 구현하는 컴퓨터 게임을 위한 컴퓨터 게임 스크린샷 (1200) 의 다이어그램을 도시한다. 스크린샷 (1200) 에 도시된 컴퓨터 게임은 방법들 (200, 1000 및 1100) 의 일부 또는 전부를 사용할 수도 있고 컴퓨팅 디바이스 (예를 들어, 100) 상에 구현되고 통신 서브시스템 (예를 들어, 130) 및 메모리 (예를 들어, 125) 와 통신하는 프로세서 (예컨대, 110) 에 의해 수행될 수도 있다.
다양한 구현들에서, 컴퓨터 게임은 작업 아이템들의 기하학적 스케줄링의 다수의 실시형태들을 채용할 수도 있다. 도 9 및 도 11 을 참조하여 논의된 바와 같이, 기하학적 스케줄링은 프로세싱 속도 및 효율을 개선할 수도 있는 방식으로 그래픽스/이미지 프로세싱을 핸들링하는데 사용될 수도 있다. 도시된 스크린샷 (1200) 에서, 다수의 플레이어 캐릭터들 (1202-1210) 이 드래곤 (1212) 비-플레이어 적과 게임 싸움에 관여될 수도 있다.
하나 이상의 프로세서들 (예를 들어, 프로세서 (110), 다중 프로세서 및/또는 GPU) 는 전투 장면을 렌더링하고 사용자 입력들이 수신되고 전투가 진행됨에 따라 캐릭터 (1202-1210) 및 드래곤 (1212) 이동의 이미지를 업데이트할 수도 있다. 주어진 시점에서 플레이어 캐릭터 (1202-1210) 중 임의의 하나에 디스플레이된 특정 스크린샷은 드래곤 (1212) 및 환경 주변들에 대한 그의/그녀의 유리한 포인트에 의존한다. 플레이어 캐릭터 (1202-1210) 의 상이한 클래스들은 드래곤 (1212) 에 가까울 가능성이 더 높을 수도 있고, 플레이어 캐릭터 (1202-1210) 의 다른 클래스들보다 이동할 가능성이 많거나 적을 수도 있다. 예를 들어, 도시 된 스크린샷 (1200) 에서, 전사 플레이어 캐릭터 (1202) 는 소프트웨어 어플리케이션에 알려져 있을 수도 있듯이, 드래곤 (1212) 에 아주 근접하여 서있을 가능성이 있지만, 드래곤 (1212) 을 "레인지" 플레이어 캐릭터들 (1206-1210) 로부터 멀어지게 하기 위해 주위로 이동할 가능성이 있을 수도 있다. 따라서, 컴퓨터 게임 소프트웨어 어플리케이션은 드래곤으로부터 멀리 떨어져 있는 주변 환경의 부분들이 폐기될 가능성이 있다고 결정할 수도 있다. 즉, 드래곤 (1212) 은 전사 플레이어 캐릭터 (1202) 뷰의 포커스 영역일 수도 있고, 드래곤 (1212) 포커스 영역으로부터 멀리 놓여 있는 영역들은 드래곤 (1212) 으로부터의 거리가 증가함에 다라 폐기될 가능성이 증가한다. 하지만, 전사 플레이어 캐릭터 (1202) 는 드래곤 (1212) 에 아주 근접한 곳에서 이동성이 높기 때문에, 포커스 영역 내의 영역들의 가중치 (즉, 소거의 가능도), 심지어 외부 근방의 것들도 낮을 수도 있다.
반대로, 레인지 플레이어 캐릭터들 (1206-1210) 은 드래곤 (1212) 으로부터 긴 거리를 유지할 수도 있지만, 매우 빈번하게 이동하지 않을 수도 있다. 이러한 플레이어 캐릭터들 (1206-1210) 은 큰 포커스 영역들 (예를 들어, 보다 파노라마적인 뷰) 을 가질 수도 있고, 따라서 작은 폐기 영역들을 가질 수도 있다. 하지만, 이들 특성들은 상대적으로 부동성이기 때문에, 그들의 시야의 외부 근방의 영역들이 폐기될 가능도는 높을 수도 있다 (예를 들어, 높은 트림 가중치들). 동시에, 장갑한 성직자 플레이어 캐릭터 (1204) 는 고도의 이동성을 가질 수도 있고, 일반적으로 떨어져서 서있을 수도 있으므로, 소프트웨어 어플리케이션이 그의/그녀의 시야 내의 영역들의 더 많은 폐기를 수행하는 것을 어렵게 한다.
작업 아이템들의 기하학적 스케줄링의 다른 예에서, 컴퓨터 게임은 폐기될 가능성이 있는 작업 및 큐잉되어야 하는 작업을 결정하기 위해 드래곤 (1212) 의 인공지능 엔진을 모니터할 수도 있다. 스크린샷 (1200) 에 도시된 바와 같이, 적의 스테이터스 표시자 (1214) 는 드래곤 (1212) 의 잔여 건강 포인트 (HP) 에 관한 정보를 제공할 수도 있으며, 이 경우 230,000 포인트 중 10,000 이 남아 있다. 플레이어 캐릭터 (1202-1210) 의 각각의 공격은 나머지 잔액으로부터 포인트를 감산할 수도 있다.
드래곤 (1212) 에 대한 액션 큐 (1216) 는 드래곤에 의해 수행될 다가오는 공격들 (즉, 컴퓨터 게임 소프트웨어 어플리케이션에 의해 수행되는 기능들) 을 도시한다. 도시된 예에서, "클리브(cleave)" 및 "테일 윕(tail whip)" 와 같은 기능들이 각각 20 초 및 45 초의 규칙적인 간격들로 발생하며, 이는 표준의 낮은 프로세싱 비용 기능들이라는 것을 의미한다. 하지만, "플레임 브레쓰(flame breath)" 기능은 또 다른 2 분 동안 발생하도록 스케줄링되지 않으며, 이는 플레이어 캐릭터들 (1202-1210) 에 대한 더 치명적인 공격일 수 있고, 따라서 더 큰 이미지 및 AI 프로세싱을 필요로 할 수도 있음을 의미한다.
예를 들어, "플레임 브레쓰" 공격의 프로세싱은 플레임의 시각적 표현, 드래곤의 전신 움직임, 공격을 받는 플레이어 캐릭터들의 반응적인 움직임의 프로세싱 뿐만 아니라, 플레이어 캐릭터 (1202-1210) 메트릭들 및 드래곤 (1212) 메트릭들의 업데이팅을 포함할 수도 있다. 하지만, "플레임 브레쓰" 실행은 드래곤 (1212) 이 다음 2 분 내에 죽는 경우 불필요하고 낭비이다.
작업 아이템들의 불필요한 큐잉 및 프리 프로세싱을 감소시키기 위해, 컴퓨터 게임 소프트웨어 어플리케이션은 평균 초당 플레이어 캐릭터들 (1202-1210) 에 의해 생성된 드래곤 (1212) 상의 공격들의 값의 초당 손상 (damage-per-second; DSP) 및 드래곤 (1212) 의 HP 를 모니터할 수도 있다. 컴퓨팅 디바이스는 그 후 "남은 전투 시간" (예를 들어, 드래곤이 무력화될 때까지의 시간) 의 이동 타겟을 계산할 수도 있다. 컴퓨터 게임 소프트웨어 어플리케이션은 이러한 예측된 시간 프레임을 AI 작업 큐와 비교할 수도 있고, 시간 프레임의 만료에 더 근접하여 또는 시간 프레임 외부에 놓여 있는 기능들이 발생할 가능성이 적은 것을 결정할 수도 있다. 시간이 흐르고 HP 또는 DPS 레이트들이 변화함에 따라 기능들 (예를 들어, 드래곤 공격들) 이 폐기될 가능성이 변화할 수도 있다. 컴퓨팅 디바이스는 이러한 정보를 사용하여 프로세서 작업 리스트들 내의 작업 아이템들을 조직화할 수도 있으며, 따라서 예측된 "남은 전투 시간" 이 2 분 시간 프레임보다 짧은 높은 가능성이 있는 경우 "플레임 브레쓰" 공격을 큐잉하는 것을 회피할 수도 있다.
기하학적 작업 스케줄링의 그러한 구현들은 모든 비-플레이어 캐릭터들, 액션들, API 콜들, 심지어 자동 플레이어 캐릭터 (1202-1210) 액션들에도 적용될 수도 있다. 기하학적 작업 스케줄링의 구현들은 게임 내 "래그" (즉, 느린 프레임 업데이팅 또는 지터 트랜지션들) 을 감소시킬 수도 있고, 플레이어 입력에 대한 응답성을 강화할 수도 있어서, 전반적인 사용자 경험을 개선할 수도 있다.
상기 방법 기재들 및 프로세스 플로우 다이어그램들은 예시적인 예들로서만 제공되고 다양한 실시형태들의 동작들이 제시된 순서로 수행되어야 하는 것을 요구하거나 의미하도록 의도되지 않는다. 당업자에 의해 이해될 바와 같이, 상기 실시형태들에서의 동작들의 순서는 임의의 순서로 수행될 수도 있다. "그 후에", "그 후", "다음" 등과 같은 단어들은 동작들의 순서를 제한하도록 의도되지 않으며; 이들 단어들은 방법들의 기재를 통해 독자를 안내하기 위해 간단히 사용된다. 게다가, 예를 들어 관사들 "a", "an" 또는 "the" 를 사용한, 청구항 엘리먼트들의 단수로의 임의의 참조는 엘리먼트를 단수로 제한하는 것으로 해석되지 않아야 한다.
용어들 "제 1" 및 "제 2" 는 본 명세서에서 상이한 가입과 연관된 가입 및 데이터 수신과 관련된 데이터 송신을 설명하기 위해 사용되지만, 그러한 식별자들은 단지 편의를 위한 것이며 다양한 실시형태들을 특정 순서, 시퀀스, 네트워크 또는 캐리어의 유형에 제한하는 것을 의미하지 않는다.
본 명세서에 개시된 실시형태들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들 및 알고리즘 동작들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합으로서 구현될 수도 있다. 이러한 하드웨어 및 소프트웨어의 상호교환 가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 동작들이 일반적으로 그 기능의 관점에서 설명되었다. 그러한 기능성이 하드웨어 또는 소프트웨어로 구현되는지 여부는 전체 시스템에 부과 된 설계 제약들 및 특정 어플리케이션에 의존한다. 당업자는 각각의 특정 어플리케이션에 대해 다양한 방식들로 설명된 기능성을 구현할 수도 있지만, 그러한 구현 판정들은 청구항의 범위로부터 벗어남을 야기하는 것으로 해석되지 않아야 한다.
본 명세서에 개시된 양태들과 관련하여 설명된 다양한 예시적인 로직들, 논리 블록들, 모듈들 및 회로들을 구현하는데 사용된 하드웨어는 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC ), 필드 프로그램가능 게이트 어레이 (FPGA) 또는 다른 프로그램가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본 명세서에 기재된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안으로 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합 (예를 들어, DSP 및 마이크로 프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 협력하는 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성) 으로 구현될 수도 있다. 대안으로, 일부 동작들 또는 방법들은 주어진 기능에 특정한 회로에 의해 수행될 수도 있다.
하나 이상의 예시적인 양태들에서, 기재된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 기능들은 하나 이상의 명령들 또는 코드로서 비일시적 컴퓨터 판독가능 매체 또는 비일시적 프로세서 판독가능 매체 상에 저장될 수도 있다. 본 명세서에 개시된 방법 또는 알고리즘의 동작들은 비일시적 컴퓨터 판독가능 또는 프로세서 판독가능 저장 매체 상에 상주할 수도 있는 프로세서 실행가능 소프트웨어 모듈로 구현될 수도 있다. 비일시적 컴퓨터 판독가능 또는 프로세서 판독가능 저장 매체들은 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 임의의 저장 매체 일 수도 있다. 한정이 아닌 예시로서, 그러한 비일시적 컴퓨터 판독가능 또는 프로세서 판독가능 매체들은 RAM, ROM, EEPROM, 플래시 메모리, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장 또는 다른 자기 저장 디바이스, 또는 데이터 구조들 및 명령들의 형태로 원하는 프로그램 코드를 저장하는데 사용될 수도 있는 컴퓨터에 의해 액세스될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 본 명세서에 사용된 바와 같이, 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루-레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 보통 데이터를 자기 적으로 재생하는 한편, 디스크 (disc) 들은 데이터를 레이저로 광학적으로 재생한다. 상기의 조합은 또한 비일시적 컴퓨터 판독가능 및 프로세서 판독가능 매체들의 범위 내에 포함된다. 또한, 방법 또는 알고리즘의 동작들은 컴퓨터 프로그램 제품에 통합될 수도 있는, 비일시적 프로세서 판독가능 매체 및/또는 컴퓨터 판독가능 매체 상의 코드들 및/또는 명령들 중 하나 또는 임의의 조합 또는 세트로서 상주할 수도 있다.
개시된 실시형태들의 앞선 기재는 당업자가 청구항들을 만들거나 사용하는 것을 가능하게 하기 위해 제공된다. 이러한 실시형태들에 대한 다양한 수정들이 당업자에게 쉽게 자명할 것이고, 본 명세서에서 정의된 일반적인 원리들은 청구항들의 범주를 벗어나지 않으면서 다른 실시형태들에 적용될 수도 있다. 따라서, 본 개시물은 본 명세서에 나타낸 실시형태들에 제한되도록 의도되는 것이 아니라 본 명세서에 개시된 원리들 및 신규 피처들 및 다음의 청구항들에 부합하는 최광의 범위를 따르는 것이다.

Claims (30)

  1. 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법으로서,
    상기 컴퓨팅 디바이스의 프로세서에 의해, 제 1 이미지를 획득하는 단계;
    상기 프로세서에 의해, 작업 경계 형상을 초기화하고 상기 작업 경계 형상 외측에 놓여 있는 폐기 영역을 식별하기 위해 상기 제 1 이미지 상에 디폴트 경계 형상을 오버레이하는 단계;
    상기 프로세서에 의해, 상기 작업 경계 형상 내에 놓여 있는 작업 영역들을 식별하는 단계;
    상기 프로세서에 의해, 식별된 상기 작업 영역들의 각각에 대한 소거 가능도를 결정하는 단계;
    상기 프로세서에 의해, 상기 소거 가능도를 사용하여 상기 식별된 작업 영역들의 각각에 대한 트리밍 가중치를 결정하는 단계; 및
    상기 프로세서에 의해, 결정된 상기 트리밍 가중치들에 적어도 부분적으로 기초한 순서로 실행 작업 리스트에 상기 식별된 작업 영역들의 각각과 연관된 작업 아이템들을 부가하는 단계를 포함하는, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  2. 제 1 항에 있어서,
    상기 프로세서에 의해, 제 2 이미지를 획득하는 단계;
    상기 프로세서에 의해, 상기 작업 경계 형상의 포지션을 업데이트하는 단계;
    상기 프로세서에 의해, 업데이트된 상기 작업 경계 형상 외측에 놓여 있는 상기 폐기 영역에 대한 업데이트들을 식별하기 위해 상기 제 2 이미지 상에 상기 업데이트된 작업 경계 형상을 오버레이하는 단계;
    상기 프로세서에 의해, 임의의 작업 아이템들이 상기 폐기 영역을 오버랩하는 작업 영역들과 연관되는지 여부를 결정하는 단계;
    상기 프로세서에 의해, 상기 작업 아이템이 상기 폐기 영역을 오버랩하는 것을 결정하는 것에 응답하여 작업 아이템을 소거하는 단계;
    상기 프로세서에 의해, 상기 업데이트된 작업 경계 형상 내에 놓여 있는 상기 작업 영역들을 업데이트하는 단계;
    상기 프로세서에 의해, 업데이트된 상기 작업 영역들의 각각에 대한 소거 가능도를 결정하는 단계;
    상기 프로세서에 의해, 상기 소거 가능도에 적어도 부분적으로 기초하여 상기 식별된 작업 영역들의 각각에 대한 트리밍 가중치를 결정하는 단계; 및
    상기 프로세서에 의해, 결정된 상기 트리밍 가중치들에 적어도 부분적으로 기초한 순서로 상기 실행 작업 리스트에 상기 식별된 작업 영역들의 각각과 연관된 작업 아이템들을 부가하는 단계를 더 포함하는, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  3. 제 2 항에 있어서,
    상기 업데이트된 작업 영역들의 각각에 대한 상기 소거 가능도를 결정하는 단계는,
    상기 프로세서에 의해, 상기 획득된 이미지들의 포커스가 이동하고 있는 방향을 결정하는 단계; 및
    상기 프로세서에 의해, 모션의 결정된 상기 방향에 적어도 부분적으로 기초하여 상기 소거 가능도를 결정하는 단계를 포함하는, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  4. 제 3 항에 있어서,
    소거 가능도들은, 모션의 방향에 가장 근접하여 놓여 있는 상기 작업 영역들에 대한 소거의 가능도가 상기 모션의 방향으로부터 가장 멀리 놓여 있는 상기 작업 영역들에 대한 소거 가능도보다 작도록 결정되는, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  5. 제 2 항에 있어서,
    상기 프로세서에 의해, 최종 업데이트된 작업 경계 형상 내에 놓여 있는 각각의 획득된 이미지의 부분들로부터 합성 이미지를 생성하는 단계를 더 포함하는, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  6. 제 5 항에 있어서,
    상기 합성 이미지는 파노라마인, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  7. 제 5 항에 있어서,
    상기 합성 이미지는 가상 현실 렌더링인, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  8. 제 1 항에 있어서,
    상기 프로세서에 의해, 상기 작업 경계 형상의 오버레이의 포지션에 대한 상기 제 1 이미지 상의 업데이트된 상기 작업 경계 형상의 오버레이의 포지션의 비교에 적어도 부분적으로 기초하여 상기 작업 영역들의 각각의 상기 소거 가능도를 재결정하는 단계;
    상기 프로세서에 의해, 상기 소거 가능도들에 적어도 부분적으로 기초하여, 상기 작업 영역들에 대한 업데이트된 트리밍 가중치들을 결정하는 단계; 및
    상기 프로세서에 의해, 상기 실행 작업 리스트에서의 상기 작업 아이템들에 대해 결정된 상기 업데이트된 트리밍 가중치들에 적어도 부분적으로 기초하여, 상기 실행 작업 리스트에서의 상기 작업 아이템들의 순서를 조정하는 단계를 더 포함하는, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  9. 제 1 항에 있어서,
    상기 프로세서에 의해, 상기 실행 작업 리스트에서 각각의 작업 아이템에 대한 작업 점수를 결정하는 단계; 및
    상기 프로세서에 의해, 상기 작업 점수에 기초하여 제 2 프로세서 상에서 실행하기 위한 작업 아이템을 결정하는 단계를 더 포함하고,
    상기 작업 점수는 상기 작업 아이템의 상기 결정된 트리밍 가중치, 상기 작업 아이템의 사이즈, 상기 작업 아이템의 형상, 및 다른 작업 아이템들과의 프로세싱 엘리먼트들의 공통성 중 하나 이상에 적어도 부분적으로 기초하여 결정되는, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  10. 제 9 항에 있어서,
    상기 프로세서에 의해, 각각의 작업 아이템이 각각의 프로세싱 유닛에 관하여 프로세싱 적합성을 표시하는 다수의 작업 점수들을 갖도록, 상기 컴퓨팅 디바이스의 매 프로세서에 대해, 상기 실행 작업 리스트에서의 각각의 작업 아이템에 대한 작업 점수를 결정하는 단계를 더 포함하는, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  11. 제 9 항에 있어서,
    상기 실행 작업 리스트에서, 각각의 작업 아이템에 대해 작업 점수를 결정하는 단계는 또한, 상기 작업 아이템에 대한 론치 오버헤드; 상기 작업 아이템을 프로세싱하는 것과 연관된 배터리 소모, 작업 아이템의 소거의 용이성, 및 상기 프로세서의 활용성으로 이루어진 그룹으로부터 선택된 적어도 하나의 멤버에 적어도 부분적으로 기초하는, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  12. 제 1 항에 있어서,
    상기 소거 가능도는 이미지의 중심으로부터의 작업 영역의 거리에 적어도 부분적으로 기초하는, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  13. 제 1 항에 있어서,
    상기 식별된 작업 영역들의 각각에 대한 상기 소거 가능도를 결정하는 단계는,
    상기 프로세서에 의해, 타임아웃 지속기간을 결정하는 단계; 및
    상기 프로세서에 의해, 상기 타임아웃 지속기간을 초과하는 기간 동안 후속 이미지가 작업 영역 내에 놓이지 않을 가능도를 결정하는 단계를 포함하는, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  14. 제 13 항에 있어서,
    상기 프로세서에 의해, 상기 타임아웃 지속기간을 초과하는 기간 동안 상기 작업 영역 내에 후속 이미지가 놓이지 않을 가능도를 결정하는 단계는, 상기 후속 이미지의 포지션을 예측하기 위해, 하나 이상의 칼만 (Kalman) 필터들을 실행하는 단계를 포함하는, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  15. 제 1 항에 있어서,
    다수의 작업 경계 형상들이 있는, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  16. 제 1 항에 있어서,
    상기 제 1 이미지는 가상 현실 뷰 공간의 뷰포트인, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  17. 제 2 항에 있어서,
    상기 업데이트된 작업 경계 형상 내에 놓여 있는 상기 작업 영역들을 업데이트하는 단계는,
    상기 프로세서에 의해, 상기 업데이트된 작업 경계 형상 내에 놓여 있는 하나 이상의 새로운 작업 영역들을 식별하는 단계; 및
    상기 프로세서에 의해, 상기 업데이트된 작업 경계 형상 내에 맞도록 상기 작업 영역들의 경계들을 변화시키는 단계를 포함하는, 컴퓨팅 디바이스 상의 지오메트리 기반 작업 실행 우선순위화를 위한 방법.
  18. 지오메트리 기반 작업 실행 우선순위화를 위해 구성된 컴퓨팅 디바이스로서,
    제 1 이미지를 획득하고;
    작업 경계 형상을 초기화하고 상기 작업 경계 형상 외측에 놓여 있는 폐기 영역을 식별하기 위해 상기 제 1 이미지 상에 디폴트 경계 형상을 오버레이하고;
    상기 작업 경계 형상 내에 놓여 있는 작업 영역들을 식별하고;
    식별된 상기 작업 영역들의 각각에 대한 소거 가능도를 결정하고;
    상기 소거 가능도를 사용하여 상기 식별된 작업 영역들의 각각에 대한 트리밍 가중치를 결정하며; 그리고
    결정된 상기 트리밍 가중치들에 적어도 부분적으로 기초한 순서로 실행 작업 리스트에 상기 식별된 작업 영역들의 각각과 연관된 작업 아이템들을 부가하도록 구성된,
    하나 이상의 프로세서들을 포함하는, 지오메트리 기반 작업 실행 우선순위화를 위해 구성된 컴퓨팅 디바이스.
  19. 제 18 항에 있어서,
    상기 하나 이상의 프로세서들은 또한,
    제 2 이미지를 획득하고;
    상기 작업 경계 형상의 포지션을 업데이트하고;
    업데이트된 상기 작업 경계 형상 외측에 놓여 있는 상기 폐기 영역에 대한 업데이트들을 식별하기 위해 상기 제 2 이미지 상에 상기 업데이트된 작업 경계 형상을 오버레이하고;
    임의의 작업 아이템들이 상기 폐기 영역을 오버랩하는 작업 영역들과 연관되는지 여부를 결정하고;
    상기 작업 아이템이 상기 폐기 영역을 오버랩하는 것을 결정하는 것에 응답하여 작업 아이템을 소거하고;
    상기 업데이트된 작업 경계 형상 내에 놓여 있는 상기 작업 영역들을 업데이트하고;
    업데이트된 상기 작업 영역들의 각각에 대한 소거 가능도를 결정하고;
    상기 소거 가능도에 적어도 부분적으로 기초하여 상기 식별된 작업 영역들의 각각에 대한 트리밍 가중치를 결정하며; 그리고
    결정된 상기 트리밍 가중치들에 적어도 부분적으로 기초한 순서로 상기 실행 작업 리스트에 상기 식별된 작업 영역들의 각각과 연관된 작업 아이템들을 부가하도록 구성되는, 지오메트리 기반 작업 실행 우선순위화를 위해 구성된 컴퓨팅 디바이스.
  20. 제 19 항에 있어서,
    상기 하나 이상의 프로세서들은 또한,
    상기 획득된 이미지들의 포커스가 이동하고 있는 방향을 결정하고; 그리고
    모션의 결정된 상기 방향에 적어도 부분적으로 기초하여 상기 소거 가능도를 결정하는 것에 의해
    상기 업데이트된 작업 영역들의 각각에 대한 소거 가능도를 결정하도록 구성되는, 지오메트리 기반 작업 실행 우선순위화를 위해 구성된 컴퓨팅 디바이스.
  21. 제 20 항에 있어서,
    상기 하나 이상의 프로세서들은 또한, 모션의 방향에 가장 근접하여 놓여 있는 상기 작업 영역들에 대한 소거의 가능도가 상기 모션의 방향으로부터 가장 멀리 놓여 있는 상기 작업 영역들에 대한 소거 가능도보다 작도록 상기 소거 가능도들을 결정하도록 구성되는, 지오메트리 기반 작업 실행 우선순위화를 위해 구성된 컴퓨팅 디바이스.
  22. 제 19 항에 있어서,
    상기 하나 이상의 프로세서들은 또한,
    최종 업데이트된 작업 경계 형상 내에 놓여 있는 각각의 획득된 이미지의 부분들로부터 합성 이미지를 생성하도록 구성되는, 지오메트리 기반 작업 실행 우선순위화를 위해 구성된 컴퓨팅 디바이스.
  23. 제 18 항에 있어서,
    상기 하나 이상의 프로세서들은 또한,
    상기 작업 경계 형상의 오버레이의 포지션에 대한 상기 제 1 이미지 상의 업데이트된 상기 작업 경계 형상의 오버레이의 포지션의 비교에 적어도 부분적으로 기초하여 상기 작업 영역들의 각각의 상기 소거 가능도를 재결정하고;
    재결정된 상기 소거 가능도들에 적어도 부분적으로 기초하여, 상기 작업 영역들에 대한 업데이트된 트리밍 가중치들을 결정하며; 그리고
    상기 실행 작업 리스트에서의 상기 작업 아이템들에 대해 결정된 상기 업데이트된 트리밍 가중치들에 적어도 부분적으로 기초하여, 상기 실행 작업 리스트에서의 상기 작업 아이템들의 순서를 조정하도록 구성되는, 지오메트리 기반 작업 실행 우선순위화를 위해 구성된 컴퓨팅 디바이스.
  24. 제 18 항에 있어서,
    상기 하나 이상의 프로세서들은 또한,
    상기 실행 작업 리스트에서 각각의 작업 아이템에 대한 작업 점수를 결정하고; 그리고
    결정된 상기 작업 점수에 적어도 부분적으로 기초하여 제 2 프로세서 상에서 실행하기 위한 작업 아이템을 결정하도록 구성되며,
    상기 작업 점수는 상기 작업 아이템의 상기 결정된 트리밍 가중치, 상기 작업 아이템의 사이즈, 상기 작업 아이템의 형상, 및 다른 작업 아이템들과의 프로세싱 엘리먼트들의 공통성 중 하나 이상에 적어도 부분적으로 기초하여 결정되는, 지오메트리 기반 작업 실행 우선순위화를 위해 구성된 컴퓨팅 디바이스.
  25. 제 24 항에 있어서,
    상기 하나 이상의 프로세서들은 또한, 각각의 작업 아이템이 각각의 프로세싱 유닛에 관하여 프로세싱 적합성을 표시하는 다수의 작업 점수들을 갖도록, 상기 컴퓨팅 디바이스의 매 프로세서에 대해, 상기 실행 작업 리스트에서의 각각의 작업 아이템에 대한 작업 점수를 결정하도록 구성되는, 지오메트리 기반 작업 실행 우선순위화를 위해 구성된 컴퓨팅 디바이스.
  26. 제 18 항에 있어서,
    상기 하나 이상의 프로세서들은 또한,
    타임아웃 지속기간을 결정하는 것; 및
    상기 타임아웃 지속기간을 초과하는 기간 동안 후속 이미지가 작업 영역 내에 놓이지 않을 가능도를 결정하는 것에 의해,
    상기 식별된 작업 영역들의 각각에 대한 상기 소거 가능도를 결정하도록 구성되는, 지오메트리 기반 작업 실행 우선순위화를 위해 구성된 컴퓨팅 디바이스.
  27. 제 19 항에 있어서,
    상기 하나 이상의 프로세서들은 또한,
    상기 업데이트된 작업 경계 형상 내에 놓여 있는 하나 이상의 새로운 작업 영역들을 식별하는 것; 및
    상기 업데이트된 작업 경계 형상 내에 맞도록 상기 작업 영역들의 경계들을 변화시키는 것에 의해,
    상기 업데이트된 작업 경계 형상 내에 놓여 있는 상기 작업 영역들을 업데이트하도록 구성되는, 지오메트리 기반 작업 실행 우선순위화를 위해 구성된 컴퓨팅 디바이스.
  28. 지오메트리 기반 작업 실행 우선순위화를 위해 구성된 컴퓨팅 디바이스로서,
    제 1 이미지를 획득하는 수단;
    작업 경계 형상을 초기화하고 상기 작업 경계 형상 외측에 놓여 있는 폐기 영역을 식별하기 위해 상기 제 1 이미지 상에 디폴트 경계 형상을 오버레이하는 수단;
    상기 작업 경계 형상 내에 놓여 있는 작업 영역들을 식별하는 수단;
    식별된 상기 작업 영역들의 각각에 대한 소거 가능도를 결정하는 수단;
    상기 소거 가능도를 사용하여 상기 식별된 작업 영역들의 각각에 대한 트리밍 가중치를 결정하는 수단; 및
    결정된 상기 트리밍 가중치들에 적어도 부분적으로 기초한 순서로 실행 작업 리스트에 상기 식별된 작업 영역들의 각각과 연관된 작업 아이템들을 부가하는 수단을 포함하는, 지오메트리 기반 작업 실행 우선순위화를 위해 구성된 컴퓨팅 디바이스.
  29. 프로세서 실행가능 명령들이 저장된 비일시적 프로세서 판독가능 저장 매체로서,
    상기 명령들은, 프로세서로 하여금,
    제 1 이미지를 획득하는 것;
    작업 경계 형상을 초기화하고 상기 작업 경계 형상 외측에 놓여 있는 폐기 영역을 식별하기 위해 상기 제 1 이미지 상에 디폴트 경계 형상을 오버레이하는 것;
    상기 작업 경계 형상 내에 놓여 있는 작업 영역들을 식별하는 것;
    식별된 상기 작업 영역들의 각각에 대한 소거 가능도를 결정하는 것;
    상기 소거 가능도를 사용하여 상기 식별된 작업 영역들의 각각에 대한 트리밍 가중치를 결정하는 것; 및
    결정된 상기 트리밍 가중치들에 적어도 부분적으로 기초한 순서로 실행 작업 리스트에 상기 식별된 작업 영역들의 각각과 연관된 작업 아이템들을 부가하는 것
    을 포함하는, 지오메트리 기반 작업 실행 우선순위화를 위한 동작들을 수행하게 하는, 비일시적 프로세서 판독가능 저장 매체.
  30. 제 29 항에 있어서,
    상기 프로세서로 하여금,
    제 2 이미지를 획득하는 것;
    상기 작업 경계 형상의 포지션을 업데이트하는 것;
    업데이트된 상기 작업 경계 형상 외측에 놓여 있는 상기 폐기 영역에 대한 업데이트들을 식별하기 위해 상기 제 2 이미지 상에 상기 업데이트된 작업 경계 형상을 오버레이하는 것;
    임의의 작업 아이템들이 상기 폐기 영역을 오버랩하는 작업 영역들과 연관되는지 여부를 결정하는 것;
    상기 작업 아이템이 상기 폐기 영역을 오버랩하는 것을 결정하는 것에 응답하여 작업 아이템을 소거하는 것;
    업데이트된 상기 작업 경계 형상 내에 놓여 있는 상기 작업 영역들을 업데이트하는 것;
    상기 업데이트된 작업 영역들의 각각에 대한 소거 가능도를 결정하는 것;
    상기 소거 가능도에 적어도 부분적으로 기초하여 상기 식별된 작업 영역들의 각각에 대한 트리밍 가중치를 결정하는 것; 및
    결정된 상기 트리밍 가중치들에 적어도 부분적으로 기초한 순서로 상기 실행 작업 리스트에 상기 식별된 작업 영역들의 각각과 연관된 작업 아이템들을 부가하는 것
    을 더 포함하는 동작들을 수행하게 하는 프로세서 실행가능 명령들이 저장된, 비일시적 프로세서 판독가능 저장 매체.
KR1020187028004A 2016-03-31 2017-01-24 동적 및 확률적 작업 트리밍에 의한 기하학적 작업 스케줄링 KR20180130505A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662316235P 2016-03-31 2016-03-31
US62/316,235 2016-03-31
US15/192,051 US10325390B2 (en) 2016-03-31 2016-06-24 Geometric work scheduling with dynamic and probabilistic work trimming
US15/192,051 2016-06-24
PCT/US2017/014709 WO2017171992A1 (en) 2016-03-31 2017-01-24 Geometric work scheduling with dynamic and probabilistic work trimming

Publications (1)

Publication Number Publication Date
KR20180130505A true KR20180130505A (ko) 2018-12-07

Family

ID=59961788

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187028004A KR20180130505A (ko) 2016-03-31 2017-01-24 동적 및 확률적 작업 트리밍에 의한 기하학적 작업 스케줄링

Country Status (9)

Country Link
US (2) US10198838B2 (ko)
EP (2) EP3437065A1 (ko)
JP (1) JP2019519015A (ko)
KR (1) KR20180130505A (ko)
CN (2) CN108885779A (ko)
BR (1) BR112018070113A2 (ko)
CA (1) CA3015516A1 (ko)
TW (2) TW201737200A (ko)
WO (2) WO2017171994A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10198838B2 (en) 2016-03-31 2019-02-05 Qualcomm Incorporated Geometric work scheduling with dynamic and probabilistic work trimming
US11272160B2 (en) * 2017-06-15 2022-03-08 Lenovo (Singapore) Pte. Ltd. Tracking a point of interest in a panoramic video
US11675617B2 (en) * 2018-03-21 2023-06-13 Toshiba Global Commerce Solutions Holdings Corporation Sensor-enabled prioritization of processing task requests in an environment
CN110826572B (zh) * 2018-08-09 2023-04-21 京东方科技集团股份有限公司 多目标检测的非极大值抑制方法、装置及设备
US11945123B2 (en) 2020-04-28 2024-04-02 Altec Industries, Inc. Head mounted display for remote operation of machinery
CN111736904B (zh) 2020-08-03 2020-12-08 北京灵汐科技有限公司 多任务并行处理方法、装置、计算机设备及存储介质
US20240127458A1 (en) * 2021-02-25 2024-04-18 Hewlett-Packard Development Company, L.P. Bounding shape estimation
US11794359B1 (en) * 2022-07-28 2023-10-24 Altec Industries, Inc. Manual operation of a remote robot assembly
US11997429B2 (en) 2022-07-28 2024-05-28 Altec Industries, nc. Reducing latency in head-mounted display for the remote operation of machinery

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2370438A (en) * 2000-12-22 2002-06-26 Hewlett Packard Co Automated image cropping using selected compositional rules.
US7298923B2 (en) 2003-11-03 2007-11-20 Siemens Medical Solutions Usa, Inc. Method and system for focus-adaptive reconstruction of spine images
US7693304B2 (en) * 2005-05-12 2010-04-06 Hewlett-Packard Development Company, L.P. Method and system for image quality calculation
US7609955B2 (en) * 2005-11-22 2009-10-27 Panasonic Corporation Image taking device, portable terminal device, image taking method, and program
JP4413235B2 (ja) * 2006-02-22 2010-02-10 三洋電機株式会社 電子カメラ
US7778491B2 (en) 2006-04-10 2010-08-17 Microsoft Corporation Oblique image stitching
US20080005332A1 (en) * 2006-06-08 2008-01-03 Georgia Tech Research Corporation Method for Opportunistic Computing
GB2451483B (en) * 2007-07-31 2012-05-30 Hewlett Packard Development Co Image processing method, system and computer readable medium
JP5156571B2 (ja) * 2008-10-10 2013-03-06 キヤノン株式会社 画像処理装置、画像処理方法
JP4715909B2 (ja) * 2008-12-04 2011-07-06 ソニー株式会社 画像処理装置及び方法、画像処理システム、並びに、画像処理プログラム
JP5218071B2 (ja) * 2009-01-07 2013-06-26 ソニー株式会社 画像処理装置、画像処理方法およびプログラム
WO2010087449A1 (ja) * 2009-02-02 2010-08-05 株式会社 エヌ・ティ・ティ・ドコモ 移動通信システムにおける基地局装置及び方法
US9020298B2 (en) 2009-04-15 2015-04-28 Microsoft Technology Licensing, Llc Automated image cropping to include particular subjects
US8180178B2 (en) 2009-06-24 2012-05-15 Hewlett-Packard Development Company, L.P. Autocropping and autolayout method for digital images
US8947502B2 (en) 2011-04-06 2015-02-03 Qualcomm Technologies, Inc. In camera implementation of selecting and stitching frames for panoramic imagery
JP2011119974A (ja) * 2009-12-03 2011-06-16 Sony Corp パノラマ画像合成装置、パノラマ画像合成方法、及びプログラム
JP5387905B2 (ja) 2009-12-25 2014-01-15 ソニー株式会社 画像処理装置および方法、並びにプログラム
JP5619885B2 (ja) * 2010-06-08 2014-11-05 パナソニックインテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 情報表示装置、表示制御用集積回路、及び表示制御方法
JP5406813B2 (ja) 2010-10-05 2014-02-05 株式会社ソニー・コンピュータエンタテインメント パノラマ画像表示装置およびパノラマ画像表示方法
US9152616B2 (en) * 2011-04-28 2015-10-06 Flipboard, Inc. Template-based page layout for web content
US9762794B2 (en) 2011-05-17 2017-09-12 Apple Inc. Positional sensor-assisted perspective correction for panoramic photography
US20120293607A1 (en) 2011-05-17 2012-11-22 Apple Inc. Panorama Processing
US9088714B2 (en) 2011-05-17 2015-07-21 Apple Inc. Intelligent image blending for panoramic photography
AU2011205087B2 (en) 2011-07-29 2014-09-25 Canon Kabushiki Kaisha Multi-hypothesis projection-based shift estimation
US8553942B2 (en) * 2011-10-21 2013-10-08 Navteq B.V. Reimaging based on depthmap information
WO2013121471A1 (ja) * 2012-02-16 2013-08-22 パナソニック株式会社 映像生成装置
US8902335B2 (en) 2012-06-06 2014-12-02 Apple Inc. Image blending operations
JP6071289B2 (ja) * 2012-07-09 2017-02-01 キヤノン株式会社 画像処理装置、画像処理方法、およびプログラム
JP5884723B2 (ja) * 2012-12-21 2016-03-15 カシオ計算機株式会社 画像合成装置、画像合成方法及びプログラム
US9712746B2 (en) 2013-03-14 2017-07-18 Microsoft Technology Licensing, Llc Image capture and ordering
JP6186184B2 (ja) * 2013-06-21 2017-08-23 株式会社ソニー・インタラクティブエンタテインメント 画像処理装置、画像処理システム、および画像処理方法
US9185284B2 (en) * 2013-09-06 2015-11-10 Qualcomm Incorporated Interactive image composition
WO2016109450A1 (en) 2014-12-29 2016-07-07 Neon Labs Inc. Selecting a high-valence representative image
JP6569263B2 (ja) * 2015-03-27 2019-09-04 カシオ計算機株式会社 画像処理装置、画像処理方法及びプログラム
US11263769B2 (en) * 2015-04-14 2022-03-01 Sony Corporation Image processing device, image processing method, and image processing system
US20160357364A1 (en) * 2015-06-07 2016-12-08 Apple Inc. Graphical User Interface for a Document Viewing Application
US10198838B2 (en) 2016-03-31 2019-02-05 Qualcomm Incorporated Geometric work scheduling with dynamic and probabilistic work trimming
US10678398B2 (en) * 2016-03-31 2020-06-09 Intel Corporation Prioritization for presentation of media based on sensor data collected by wearable sensor devices

Also Published As

Publication number Publication date
TW201737200A (zh) 2017-10-16
CA3015516A1 (en) 2017-10-05
EP3437065A1 (en) 2019-02-06
US10325390B2 (en) 2019-06-18
TW201737064A (zh) 2017-10-16
US20170287185A1 (en) 2017-10-05
EP3437064A1 (en) 2019-02-06
US10198838B2 (en) 2019-02-05
US20170289445A1 (en) 2017-10-05
JP2019519015A (ja) 2019-07-04
WO2017171992A1 (en) 2017-10-05
WO2017171994A1 (en) 2017-10-05
CN108885780A (zh) 2018-11-23
BR112018070113A2 (pt) 2019-02-12
CN108885779A (zh) 2018-11-23

Similar Documents

Publication Publication Date Title
US10198838B2 (en) Geometric work scheduling with dynamic and probabilistic work trimming
US11580705B2 (en) Viewpoint dependent brick selection for fast volumetric reconstruction
US20170287227A1 (en) Mixed reality data collaboration
US11587298B2 (en) Caching and updating of dense 3D reconstruction data
US10338879B2 (en) Synchronization object determining method, apparatus, and system
JP2018526698A (ja) ローカライゼーション・エリア記述ファイルのプライバシ機密クエリ
CN110494848A (zh) 任务处理方法、设备及机器可读存储介质
EP2051208A2 (en) Generating an asset for interactive entertainment using digital image capture
CN107308641B (zh) 一种游戏对象管理方法、装置和移动终端
US20230147759A1 (en) Viewpoint dependent brick selection for fast volumetric reconstruction
WO2021218460A1 (zh) 虚拟对象的控制方法、装置、终端及存储介质
CN111357034A (zh) 点云生成方法、系统和计算机存储介质
JP2014516187A (ja) 奥行きに基づく質量の中心からの頭部回転のトラッキング
CN104378620A (zh) 一种图像处理方法及电子设备
US20180144521A1 (en) Geometric Work Scheduling of Irregularly Shaped Work Items
JP2024518182A (ja) 動作効果の表示方法と装置、コンピュータ機器及びコンピュータプログラム
EP3809314A1 (en) 3d object detection from calibrated 2d images background
CN112016609A (zh) 一种图像聚类方法、装置、设备及计算机存储介质
KR20230054491A (ko) 멀티플레이어 온라인 비디오 게임의 복수의 객체 중 개별 객체의 타겟팅 개선
CN105718037A (zh) 一种识别目标对象状态的方法及其装置