KR20200037442A - 포인트-클라우드 스트리밍을 위한 방법 및 장치(method and apparatus for point-cloud streaming) - Google Patents
포인트-클라우드 스트리밍을 위한 방법 및 장치(method and apparatus for point-cloud streaming) Download PDFInfo
- Publication number
- KR20200037442A KR20200037442A KR1020207009218A KR20207009218A KR20200037442A KR 20200037442 A KR20200037442 A KR 20200037442A KR 1020207009218 A KR1020207009218 A KR 1020207009218A KR 20207009218 A KR20207009218 A KR 20207009218A KR 20200037442 A KR20200037442 A KR 20200037442A
- Authority
- KR
- South Korea
- Prior art keywords
- view field
- client device
- node
- bandwidth
- level
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 101
- 238000004891 communication Methods 0.000 claims description 27
- 239000011159 matrix material Substances 0.000 claims description 25
- 230000015654 memory Effects 0.000 claims description 20
- 238000012545 processing Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 230000002829 reductive effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000033001 locomotion Effects 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 229910052792 caesium Inorganic materials 0.000 description 1
- TVFDJXOCXUVLDH-UHFFFAOYSA-N caesium atom Chemical compound [Cs] TVFDJXOCXUVLDH-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000004886 head movement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/30—Clipping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
- H04N21/2385—Channel allocation; Bandwidth allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/266—Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
- H04N21/2662—Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/21805—Source of audio or video content, e.g. local disk arrays enabling multiple viewpoints, e.g. using a plurality of cameras
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234345—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements the reformatting operation being performed only on part of the stream, e.g. a region of the image or a time segment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234354—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering signal-to-noise ratio parameters, e.g. requantization
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/24—Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
- H04N21/2402—Monitoring of the downstream path of the transmission network, e.g. bandwidth available
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/65—Transmission of management data between client and server
- H04N21/658—Transmission by the client directed to the server
- H04N21/6587—Control parameters, e.g. trick play commands, viewpoint selection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/816—Monomedia components thereof involving special video data, e.g 3D video
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/16—Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/08—Bandwidth reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2215/00—Indexing scheme for image rendering
- G06T2215/16—Using real world measurements to influence rendering
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Information Transfer Between Computers (AREA)
Abstract
스트리밍할 3차원(three dimensional, 3D) 콘텐츠를 식별하는 시스템 및 방법. 방법은 클라이언트 장치의 뷰 필드를 표시하는 정보를 수신하는 단계 및 클라이언트 장치에 3D 콘텐츠를 스트리밍하는 데 사용할 수 있는 대역폭의 양을 식별하는 단계를 포함한다. 방법은 물체 각각에 대해 각 물체의 위치를 기반으로 하여 각 물체가 클라이언트 장치의 뷰 필드 내에 있는지 여부를 결정하고 뷰 필드 내에 적어도 부분적으로 존재하는 물체에 더 큰 대역폭을 할당함으로써 대역폭을 하나 이상의 물체에 할당하는 단계를 포함한다. 방법은 할당된 대역폭에 따라 클라이언트 장치에 3D 콘텐츠를 스트리밍하는 단계를 포함한다.
Description
본 개시는 일반적으로 뷰 필드 인식 포인트 클라우드 스트리밍(view field-aware point cloud streaming)에 관한 것이다. 보다 구체적으로, 본 개시는 물체 및/또는 노드가 클라이언트 장치의 뷰 필드 내에 존재하는지 여부를 결정하는 방법 및 뷰 필드 내의 물체 및 뷰 필드 밖의 물체를 포함하여 복수의 물체에 비트율(대역폭)을 할당하는 방법에 관한 것이다.
가상 현실(virtual reality, VR) 체험이 두드러지고 있다. 예를 들어, 스마트폰과 같은 강력한 핸드헬드 장치의 손쉬운 가용성으로 인해 몰입형 비디오를 체험하는 새로운 방법으로 360° 비디오가 떠오르고 있다. VR 관련 기술의 발달로, 사용자는 다양한 장치를 사용하여 360°콘텐츠를 볼 수 있다. 비디오 및 이미지와 같은 360° 콘텐츠를 보는 사용자는 그들이 평면 이미지를 볼 때보다 더 몰입감을 느낀다. 360° 비디오는 세계의 360° 뷰를 캡처하여 소비자에게 실감나는 "실제' 경험을 제공한다.
본 개시는 뷰 필드 인식 포인트 클라우드 스트리밍을 위한 방법 및 장치를 제공한다.
제1 실시 예에서는 스트리밍할 3차원(three dimensional, 3D) 콘텐츠를 식별하기 위한 서버가 제공된다. 서버는 3D 콘텐츠 내에 존재하는 복수의 물체에 대한 3D 포인트 클라우드 데이터를 저장하도록 구성된 메모리; 3D 콘텐츠에 대한 클라이언트 장치의 뷰 필드를 표시하는 정보를 클라이언트 장치로부터 수신하도록 구성된 통신 인터페이스; 및 3D 콘텐츠를 클라이언트 장치로 스트리밍하는 데 사용 가능한 대역폭의 양을 식별하고, 3D 포인트 클라우드 데이터를 스트리밍할 사용 가능한 대역폭을 하나 이상의 물체에 할당하도록 구성된 프로세서를 포함하고, 사용 가능한 대역폭을 할당하기 위해, 프로세서는 하나 이상의 물체 각각에 대해, 각 물체의 위치를 기반으로 하여 각 물체가 클라이언트 장치의 뷰 필드 내에 존재하는지 여부를 결정하고; 클라이언트 장치의 뷰 필드 내에 존재하지 않는 물체보다 클라이언트 장치의 뷰 필드 내에 적어도 부분적으로 존재하는 물체에 더 많은 양의 대역폭을 할당하도록 구성되고, 통신 인터페이스는 할당된 대역폭에 따라 클라이언트 장치로 3D 콘텐츠를 스트리밍하도록 더 구성된다.
제2 실시 예에서는 스트리밍할 3차원(three dimensional, 3D) 콘텐츠를 식별하기 위한 방법이 제공된다. 방법은 3D 콘텐츠 내에 존재하는 복수의 물체에 대한 3D 포인트 클라우드 데이터를 저장하는 단계; 3D 콘텐츠에 대한 클라이언트 장치의 뷰 필드를 표시하는 정보를 클라이언트 장치로부터 수신하는 단계; 3D 콘텐츠를 클라이언트 장치로 스트리밍하는 데 사용 가능한 대역폭의 양을 식별하는 단계; 하나 이상의 물체에 대해 3D 포인트 클라우드 데이터를 스트리밍할 대역폭을 할당하는 단계를 포함하고, 하나 이상의 물체 각각에 대해 대역폭을 할당하는 단계는 각 물체의 위치를 기반으로 하여 각 물체가 클라이언트 장치의 뷰 필드 내에 존재하는지 여부를 결정하는 단계; 클라이언트 장치의 뷰 필드 내에 존재하지 않는 물체보다 클라이언트 장치의 뷰 필드 내에 적어도 부분적으로 존재하는 물체에 더 많은 양의 대역폭을 할당하는 단계; 및 할당된 대역폭에 따라 클라이언트 장치로 3D 콘텐츠를 스트리밍하는 단계를 포함한다.
제3 실시 예에서, 스트리밍할 3차원(three dimensional, 3D) 콘텐츠를 식별하기 위한 프로그램 코드를 포함하는 비일시적 컴퓨터 판독 가능한 매체가 제공되고, 상기 프로그램 코드는 프로세서에 의해 실행될 때 프로세서로 하여금 3D 콘텐츠 내에 존재하는 복수의 물체에 대한 3D 포인트 클라우드 데이터를 저장하고, 통신 인터페이스를 통해 3D 콘텐츠에 대한 클라이언트 장치의 뷰 필드를 표시하는 정보를 클라이언트 장치로부터 수신하고, 3D 콘텐츠를 클라이언트 장치로 스트리밍하는 데 사용할 수 있는 대역폭의 양을 식별하고, 하나 이상의 물체에 대해 3D 포인트 클라우드 데이터를 스트리밍할 대역폭을 할당하도록 하고, 대역폭을 할당하는 단계는 하나 이상의 물체 각각에 대해 각 물체의 위치를 기반으로 하여 각 물체가 클라이언트 장치의 뷰 필드 내에 존재하는지 여부를 결정하는 단계, 클라이언트 장치의 뷰 필드 내에 존재하지 않는 물체보다 클라이언트 장치의 뷰 필드 내에 적어도 부분적으로 존재하는 물체에 더 많은 양의 대역폭을 할당하는 단계; 및 할당된 대역폭에 따라 3D 콘텐츠를 클라이언트 장치에 스트리밍하는 단계를 포함한다.
다른 기술적인 특징은 다음의 도면, 설명 및 청구 범위로부터 당업자에게 쉽게 명백해질 수 있다.
본 개시는 뷰 필드 인식 포인트 클라우드 스트리밍을 위한 방법 및 장치를 제공한다.
본 개시 및 본 개시의 장점에 대한 보다 완전한 이해를 위해, 이제 첨부 도면과 함께 제공된 다음의 설명을 참조한다.
도 1은 본 개시의 다양한 실시 예에 따른 예시적인 컴퓨팅 시스템을 도시한다.
도 2 및 도 3은 본 개시의 다양한 실시 예에 따른 컴퓨팅 시스템에서의 예시적인 장치를 도시한다.
도 4는 본 개시의 일 실시 예에 따른 3차원(three dimensional, 3D) 스트리밍 서비스를 위한 시스템(400)의 예시적인 개요를 도시한다.
도 5는 본 개시의 실시 예에 따른 3D 포인트 클라우드의 계층 구조의 예시적인 복수 레벨을 도시한다.
도 6은 본 개시의 일 실시 예에 따른, 서버에 의해 수행될 수 있는, 각 노드가 뷰 필드 영역 내에 존재하는지 여부를 결정하는 방법의 예시적인 흐름도(600)를 도시한다.
도 7a 및 도 7b는 본 개시의 실시 예에 따른 가시 포인트(visible point)를 결정하는 방법을 설명하기 위한 예시적인 다이어그램을 도시한다.
도 8은 본 개시의 일 실시 예에 따른 포인트의 (x,y,z) 윈도우를 계산하는 방법의 예시적인 흐름도를 도시한다.
도 9는 본 개시의 일 실시 예에 따른 복수 물체의 노드의 계층 레벨이 뷰 필드 범위 내에 존재하는지 여부를 결정하는 방법을 설명하기 위한 예시적인 다이어그램을 도시한다.
도 10은 본 개시의 일 실시 예에 따른 복수 물체에 대한 뷰 필드 인식 포인트 클라우드 스트리밍 방법에 대한 예시적인 흐름도이다.
도 11은 본 개시의 일 실시 예에 따른 뷰 필드 인식 포인트 클라우드 스트리밍 방법에 대한 다른 예시적인 흐름도를 도시한다.
도 12a 내지 도 12c는 본 개시의 일 실시 예에 따른 단일 물체의 계층 노드가 뷰 필드 범위 내에 존재하는지 여부를 결정하는 방법을 설명하기 위한 예시적인 다이어그램을 도시한다.
도 13은 본 개시의 일 실시 예에 따른 복수 노드로 구성된 포인트 클라우드 물체에 대한 예시적인 다이어그램(1300)을 도시한다.
도 14는 본 개시의 일 실시 예에 따른 뷰 필드 인식 포인트 클라우드 스트리밍 방법에 대한 예시적인 흐름도(1400)를 도시한다.
도 15는 본 개시의 일 실시 예에 따른 클라이언트 장치로부터의 피드백을 기반으로 하는 뷰 필드 인식 포인트 클라우드 스트리밍에 대한 다른 예시적인 흐름도(1500)를 도시한다.
도 16은 본 개시의 일 실시 예에 따른 비트율 피드백을 기반으로 하여 물체에 비트율(또는 대역폭)을 할당하는 방법의 예시적인 흐름도를 도시한다.
도 1은 본 개시의 다양한 실시 예에 따른 예시적인 컴퓨팅 시스템을 도시한다.
도 2 및 도 3은 본 개시의 다양한 실시 예에 따른 컴퓨팅 시스템에서의 예시적인 장치를 도시한다.
도 4는 본 개시의 일 실시 예에 따른 3차원(three dimensional, 3D) 스트리밍 서비스를 위한 시스템(400)의 예시적인 개요를 도시한다.
도 5는 본 개시의 실시 예에 따른 3D 포인트 클라우드의 계층 구조의 예시적인 복수 레벨을 도시한다.
도 6은 본 개시의 일 실시 예에 따른, 서버에 의해 수행될 수 있는, 각 노드가 뷰 필드 영역 내에 존재하는지 여부를 결정하는 방법의 예시적인 흐름도(600)를 도시한다.
도 7a 및 도 7b는 본 개시의 실시 예에 따른 가시 포인트(visible point)를 결정하는 방법을 설명하기 위한 예시적인 다이어그램을 도시한다.
도 8은 본 개시의 일 실시 예에 따른 포인트의 (x,y,z) 윈도우를 계산하는 방법의 예시적인 흐름도를 도시한다.
도 9는 본 개시의 일 실시 예에 따른 복수 물체의 노드의 계층 레벨이 뷰 필드 범위 내에 존재하는지 여부를 결정하는 방법을 설명하기 위한 예시적인 다이어그램을 도시한다.
도 10은 본 개시의 일 실시 예에 따른 복수 물체에 대한 뷰 필드 인식 포인트 클라우드 스트리밍 방법에 대한 예시적인 흐름도이다.
도 11은 본 개시의 일 실시 예에 따른 뷰 필드 인식 포인트 클라우드 스트리밍 방법에 대한 다른 예시적인 흐름도를 도시한다.
도 12a 내지 도 12c는 본 개시의 일 실시 예에 따른 단일 물체의 계층 노드가 뷰 필드 범위 내에 존재하는지 여부를 결정하는 방법을 설명하기 위한 예시적인 다이어그램을 도시한다.
도 13은 본 개시의 일 실시 예에 따른 복수 노드로 구성된 포인트 클라우드 물체에 대한 예시적인 다이어그램(1300)을 도시한다.
도 14는 본 개시의 일 실시 예에 따른 뷰 필드 인식 포인트 클라우드 스트리밍 방법에 대한 예시적인 흐름도(1400)를 도시한다.
도 15는 본 개시의 일 실시 예에 따른 클라이언트 장치로부터의 피드백을 기반으로 하는 뷰 필드 인식 포인트 클라우드 스트리밍에 대한 다른 예시적인 흐름도(1500)를 도시한다.
도 16은 본 개시의 일 실시 예에 따른 비트율 피드백을 기반으로 하여 물체에 비트율(또는 대역폭)을 할당하는 방법의 예시적인 흐름도를 도시한다.
아래에서 상세한 설명을 시작하기 전에, 본 특허 문서 전반에 걸쳐서 사용된 특정 단어 및 구문의 정의들을 규정하는 것이 유리할 수 있다. 용어 "결합(couple)" 및 그 파생어들은 서로 물리적으로 접촉하든 아니든 두 개 이상의 요소 간의 직접 또는 간접 통신을 의미한다. 용어 "전송하다", "수신하다", "통신하다" 및 그 파생어들은 직접 및 간접 통신 모두를 포함한다. 용어 "포함하다(include)", "포함하다(comprise)" 및 그 파생어들은 제한없는 포함을 의미한다. 용어 "또는"은 "및/또는"을 의미하는 포함이다. 구문 "~와 관련된" 및 그 파생어들은 포함하는(include), ~내에 포함되는(be included within), ~와 상호 연결하는, 포함하는(contain), ~ 내에 포함되는(be contained within), ~와 또는 ~에 연결하는, ~와 또는 ~에 결합하는, ~와 통신할 수 있는, ~와 협력하는, 인터리브하는, 나란히 놓는, ~에 인접하는, ~에 또는 ~와 바인딩하는, 갖는, ~의 속성이 있는, ~에 또는 ~와 관계가 있는 등을 의미한다. 용어 "제어기"는 적어도 하나의 동작을 제어하는 장치, 시스템 또는 그 일부를 의미한다. 그러한 제어기는 하드웨어 또는 하드웨어와 소프트웨어 및/또는 펌웨어의 조합으로 구현될 수 있다. 특정 제어기와 관련된 기능은 국부적으로든 원격으로든 중앙 집중화되거나 분산될 수 있다. 항목들의 목록과 함께 사용될 때 "~의 적어도 하나"라는 구문은 나열된 항목들 중 하나 이상의 상이한 조합들이 사용될 수도 있고, 목록에 있는 하나의 항목만 요구될 수도 있다는 것을 의미한다. 예를 들어, "A, B 및 C 중 적어도 하나"는 다음의 조합, 즉 A, B, C, A와 B, A와 C, B와 C, 및 A와 B와 C 중 어느 하나를 포함한다.
또한, 후술되는 다양한 기능들은 각각 컴퓨터 판독 가능 프로그램 코드로부터 형성되고 컴퓨터 판독 가능 매체에 내장되어 있는 하나 이상의 컴퓨터 프로그램에 의해 구현되거나 지원될 수 있다. 용어 "어플리케이션" 및 "프로그램"은 적절한 컴퓨터 판독 가능 프로그램 코드로 구현하기 위해 적응된 하나 이상의 컴퓨터 프로그램, 소프트웨어 구성 요소, 일련의 명령, 절차, 기능, 오브젝트, 클래스, 인스턴스, 관련 데이터, 또는 이들의 일부를 의미한다. "컴퓨터 판독 가능 코드"는 소스 코드, 목적 코드 및 실행 가능 코드를 포함하여 모든 유형의 컴퓨터 코드를 포함한다. "컴퓨터 판독 가능 매체"는 읽기 전용 메모리(read only memory, ROM), 랜덤 액세스 메모리(random access memory, RAM), 하드 디스크 드라이브, 콤팩트 디스크(compact disc, CD), 디지털 비디오 디스크(digital video disc, DVD), 또는 모든 다른 유형의 메모리와 같이, 컴퓨터에 의해 액세스될 수 있는 모든 유형의 매체를 포함한다. "비일시적" 컴퓨터 판독 가능 매체는 유선, 무선, 광학, 또는 일시적인 전기 신호 또는 다른 신호를 전달하는 다른 통신 링크들을 제외한다. 비일시적 컴퓨터 판독 가능 매체는 데이터를 영구적으로 저장할 수 있는 매체 및 재기록 가능한 광 디스크 또는 소거 가능한 메모리 장치와 같이 데이터를 저장하고 나중에 겹쳐쓸 수 있는 매체를 포함한다.
다른 특정 단어 및 구문들에 대한 정의가 본 특허 문서 전체에 걸쳐서 제공된다. 당업자는 대부분의 경우는 아니지만 많은 경우에 그러한 정의들이 그러한 정의된 단어 및 구문들의 이전 및 이후 사용에 적용된다는 것을 이해해야 한다.
본 특허 문서에서 본 개시의 원리들을 설명하기 위해 사용한 다양한 실시 예 및 아래에서 논의되는 도 1 내지 도 16은 단지 예시를 위한 것이고, 어떠한 방식으로든 본 개시의 범위를 제한하는 것으로 해석되어서는 안된다. 당업자는 본 개시의 원리들이 모든 적절하게 배치된 무선 통신 시스템에서 구현될 수 있음을 이해할 것이다.
1. 시스템 개요
도 1은 본 개시에 따른 예시적인 컴퓨팅 시스템(100)을 도시한다. 도 1에 도시된 컴퓨팅 시스템(100)의 실시 예는 단지 예시를 위한 것이다. 본 개시의 범위에서 벗어나지 않고 컴퓨팅 시스템(100)의 다른 실시 예들이 사용될 수 있다.
도 1에 도시된 바와 같이, 시스템(100)은 시스템(100)의 다양한 구성 요소들 간의 통신을 용이하게 하는 네트워크(102)를 포함한다. 예를 들어, 네트워크(102)는 인터넷 프로토콜(internet protocol, IP) 패킷들, 프레임 중계 프레임들, 비동기식 전송 모드(asynchronous transfer mode, ATM) 셀들, 또는 네트워크 주소들 간의 다른 정보를 통신할 수 있다. 네트워크(102)는 하나 이상의 근거리 통신망(local area network, LAN), 도시권 통신망(metropolitan area network, MAN), 광역 통신망(wide area network, WAN), 인터넷과 같은 글로벌 네트워크 전체 또는 일부, 또는 하나 이상의 위치에 있는 다른 통신 시스템 또는 시스템들을 포함할 수 있다.
네트워크(102)는 적어도 하나의 서버(104)와 다양한 클라이언트 장치(106 내지 115) 간의 통신을 용이하게 한다. 각 서버(104)는 하나 이상의 클라이언트 장치에 컴퓨팅 서비스를 제공할 수 있는 모든 적합한 컴퓨팅 또는 처리 장치를 포함한다. 각 서버(104)는 예를 들어, 하나 이상의 처리 장치, 명령 및 데이터를 저장하는 하나 이상의 메모리, 및 네트워크(102)를 통한 통신을 용이하게 하는 하나 이상의 네트워크 인터페이스를 포함할 수 있다.
각 클라이언트 장치(106 내지 115)는 네트워크(102)를 통해 적어도 하나의 서버 또는 다른 컴퓨팅 장치(들)과 상호작용하는 모든 적합한 컴퓨팅 또는 처리 장치를 나타낸다. 이러한 예에서, 클라이언트 장치(106 내지 115)는 데스크톱 컴퓨터(106), 휴대폰 또는 스마트폰(108), 개인용 정보 단말기(personal digital assistant, PDA)(110), 랩톱 컴퓨터(112), 태블릿 컴퓨터(114), 및 헤드 장착 디스플레이(head-mounted display, HMD)(115)를 포함한다. 그러나, 다른 또는 추가 클라이언트 장치가 컴퓨팅 시스템(100)에 사용될 수 있다.
이러한 예에서, 일부 클라이언트 장치(108 내지 115)는 네트워크(102)와 간접적으로 통신한다. 예를 들어, 클라이언트 장치(108 및 110)는 셀룰러 기지국 또는 eNodeB와 같은 하나 이상의 기지국(116)을 통해 통신한다. 또한, 클라이언트 장치(112 내지 115)는 IEEE 802.11 무선 액세스 지점과 같은 하나 이상의 무선 액세스 지점(118)을 통해 통신한다. 이들은 단지 예시를 위한 것이고, 각 클라이언트 장치는 적합한 중간 장치(들) 또는 네트워크(들)을 통해 네트워크(102)와 직접적으로 또는 네트워크(102)와 간접적으로 통신할 수 있음을 유의해야 한다.
이러한 예시적인 실시 예에서, 컴퓨팅 시스템(100)은 뷰 필드 인식 포인트 클라우드 스트리밍 서비스를 제공한다. 예를 들어, 서버(104)는 3D 콘텐츠의 물체/노드가 클라이언트 장치의 뷰 필드 내에 있는지 여부를 결정하고 결정에 따라 3D 콘텐츠를 스트리밍하는 비디오 프로세서를 나타낼 수 있다. 스마트폰(108)은 예를 들어, 가상 현실 또는 증강 현실 모드에서 헤드업 디스플레이어로 3D 콘텐츠를 재생하는 비디오 플레이어를 나타낼 수 있다.
도 1은 컴퓨팅 시스템(100)의 일 예를 도시하지만, 도 1에 대해 다양한 변경들이 이루어질 수 있다. 예를 들어, 시스템(100)은 각 구성 요소를 얼마든지 적절한 배열로 포함할 수 있다. 일반적으로, 컴퓨팅 시스템 및 통신 시스템은 다양한 구성으로 제공되며, 도 1은 본 개시의 범위를 특정 구성으로 제한하지 않는다. 도 1은 본 특허 문서에 개시된 다양한 특징들이 사용될 수 있는 하나의 운용 환경을 도시하지만, 이들 특징은 다른 적합한 시스템에서 사용될 수 있다.
도 2 및 도 3은 본 개시의 일 실시 예에 따른 뷰 필드 인식 포인트 클라우드 스트리밍 서비스를 위한 컴퓨팅 시스템의 예시적인 장치를 도시한다. 특히, 도 2는 예시적인 서버(200)를 도시하고, 도 3은 예시적인 클라이언트 장치(300)를 도시한다. 서버(200)는 도 1의 서버(104)를 나타낼 수 있고, 클라이언트 장치(300)는 도 1의 클라이언트 장치(106 내지 115) 중 하나 이상을 나타낼 수 있다.
도 2에 도시된 바와 같이, 서버(200)는 적어도 하나의 프로세서(210), 적어도 하나의 저장 장치(215), 적어도 하나의 통신 인터페이스(220) 및 적어도 하나의 입력/출력(input/output, I/O) 유닛(225) 사이의 통신을 지원하는 버스 시스템(205)을 포함한다.
프로세서(210)는 뷰 필드 인식 포인트 클라우드 스트리밍을 수행하는 명령과 같이 메모리(230)에 로딩될 수 있는 명령을 실행한다. 프로세서(210)는 적합한 배열로 적절한 개수(들) 및 적절한 유형(들)의 프로세서 또는 다른 장치를 포함할 수 있다. 프로세서(들)(210)의 예시적인 유형으로는 마이크로프로세서, 마이크로제어기, 디지털 신호 프로세서, FPGA(field programmable gate array), 주문형 반도체(application specific integrated circuit, ASIC), 및 이산 회로가 포함된다. 프로세서(210)는 인증된 웨어러블 장치로 전자 장치를 잠금 해제하는 작업을 수행하도록 구성된다.
메모리(230) 및 영구 저장 장치(235)는 (데이터, 프로그램 코드 및/또는 일시적 또는 영구적인 다른 적합한 정보와 같은) 정보의 검색을 용이하게 하고 저장할 수 있는 구조(들)을 나타내는 저장 장치(215)의 예이다. 메모리(230)는 랜덤 액세스 메모리 또는 다른 적합한 휘발성 또는 비휘발성 저장 장치(들)을 나타낼 수 있다. 영구 저장 장치(235)는 읽기 전용 메모리, 하드 드라이브, 플래시 메모리 또는 광 디스크와 같은 데이터의 장기 저장을 지원하는 하나 이상의 구성 요소 또는 장치를 포함할 수 있다.
통신 인터페이스(220)는 다른 시스템 또는 장치와의 통신을 지원한다. 예를 들어, 통신 인터페이스(220)는 네트워크(102)를 통한 통신을 용이하게 하는 무선 송수신기 또는 네트워크 인터페이스 카드를 포함할 수 있다. 통신 인터페이스(220)는 적합한 물리적 또는 무선 통신 링크(들)을 통한 통신을 지원할 수 있다.
I/O 유닛(225)은 데이터의 입력 및 출력을 가능하게 한다. 예를 들어, I/O 유닛(225)은 키보드, 마우스, 키패드, 터치스크린, 또는 다른 적합한 입력 장치를 통해 사용자 입력을 위한 연결을 제공할 수 있다. 또한, I/O 유닛(225)은 디스플레이, 프린터 또는 다른 적합한 출력 장치에 출력을 전송할 수 있다.
이러한 예시적인 실시 예에서, 서버(200)는 아래에서 더 상세히 논의되는 바와 같이, 뷰 필드 인식 포인트 클라우드 스트리밍을 제공하는 장치를 구현할 수 있다. 도 2는 도 1의 서버(104)를 나타내는 것으로 기술되지만, 클라이언트 장치(106 내지 115) 중 하나 이상에서 동일하거나 유사한 구조가 사용될 수 있음을 유의해야 한다. 예를 들어, 렙톱 또는 데스크톱 컴퓨터는 도 2에 도시된 것과 동일하거나 유사한 구조를 가질 수 있다.
도 3에 도시된 바와 같이, 클라이언트 장치(300)는 안테나(305), 무선 주파수(radio frequency, RF) 송수신기(310), 송신(transmit, TX) 처리 회로(315), 마이크로폰(320) 및 수신(receive, RX) 처리 회로(325)를 포함한다. 또한, 클라이언트 장치(300)는 스피커(330), 하나 이상의 프로세서(340), 입력/출력(input/output, I/O) 인터페이스(interface, IF)(345), 터치스크린(350), 디스플레이(355) 및 메모리(360)를 포함한다. 메모리(360)는 기본 운영 체계(operating system, OS) 프로그램(361) 및 하나 이상의 어플리케이션(362)을 포함한다.
RF 송수신기(310)는 시스템의 다른 구성 요소에 의해 전송된 입력 RF 신호를 안테나(305)로부터 수신한다. RF 송수신기(310)는 입력 RF 신호를 다운 컨버팅하여 중간 주파수(intermediate frequency, IF) 또는 기저대역 신호를 생성한다. 중간 주파수(intermediate frequency, IF) 또는 기저대역 신호는 기저대역 또는 IF 신호를 필터링, 디코딩 또는 디지털화하여 처리된 기저대역 신호를 생성하는 RX 처리 회로(325)에 전송된다. RX 처리 회로(325)는 처리된 기저대역 신호를 (예를 들어, 음성 데이터용) 스피커(330)에 전송하거나 (예를 들어, 웹 브라우징 데이터용) 추가 처리용 프로세서(들)(340)에 전송한다.
TX 처리 회로(315)는 마이크로폰(320)으로부터 아날로그 또는 디지털 음성 데이터를 수신하거나 프로세서(들)(340)로부터의 (웹 데이터, 이메일, 또는 대화형 비디오 게임 데이터와 같은) 다른 출력 기저대역 데이터를 수신한다. TX 처리 회로(315)는 출력 기저대역 데이터를 인코딩, 멀티플렉싱, 디지털화하여 처리된 기저대역 또는 IF 신호를 생성한다. RF 송수신기(310)는 TX 처리 회로(315)로부터 출력 처리된 기저대역 또는 IF 신호를 수신하고, 기저대역 또는 IF 신호를 안테나(305)를 통해 전송되는 RF 신호로 업컨버팅한다.
프로세서(들)(340)은 하나 이상의 프로세서 또는 다른 처리 장치를 포함할 수 있고, 클라이언트 장치(300)의 전반적인 작업을 제어하기 위해 메모리(360)에 저장된 기본 OS 프로그램(361)을 실행할 수 있다. 예를 들어, 프로세서(들)(340)은 잘 알려진 원리에 따라 RF 송수신기(310), RX 처리 회로(325), 및 TX 처리 회로(315)에 의해 순방향 채널 신호의 수신 및 역방향 채널 신호의 전송을 제어할 수 있다. 일부 실시 예에서, 프로세서(들)(340)은 적어도 하나의 마이크로프로세서 또는 마이크로제어기를 포함한다.
또한, 프로세서(들)(340)은 메모리(360)에 상주하는 다른 프로세스 및 프로그램을 실행할 수 있다. 프로세서(들)(340)은 실행하는 프로세스의 요구에 따라 데이터를 메모리(360)의 안으로 또는 밖으로 이동시킬 수 있다. 일부 실시 예에서, 프로세서(들)(340)은 오퍼레이터 또는 외부 장치로부터 수신된 신호에 응답하여 또는 OS 프로그램(361)을 기반으로 하여 어플리케이션(362)을 실행하도록 구성된다. 또한, 프로세서(들)(340)은 클라이언트 장치(300)가 랩톱 컴퓨터 및 핸드헬드 컴퓨터와 같은 다른 장치에 연결될 수 있도록 하는 I/O 인터페이스(345)에 결합된다. I/O 인터페이스(345)는 이들 부속 장치와 프로세서(들)(340) 간의 통신 경로이다.
또한, 프로세서(들)(340)은 터치스크린(350) 및 디스플레이(355)에 결합된다. 클라이언트 장치(300)의 오퍼레이터는 클라이언트 장치(300)에 데이터를 입력하기 위해 터치스크린(350)을 사용할 수 있다. 디스플레이(355)는 액정 디스플레이(liquid crystal display, LCD), 또는 예를 들어, 웹사이트로부터 텍스트 및/또는 적어도 제한된 그래픽을 렌더링할 수 있는 다른 디스플레이일 수 있다.
메모리(360)는 프로세서(들)(340)에 결합된다. 메모리(360)의 일부는 랜덤 액세스 메모리(random access memory, RAM)를 포함할 수 있고, 메모리(360)의 다른 일부는 플래시 메모리 또는 다른 읽기 전용 메모리(read-only memory, ROM)를 포함할 수 있다.
아래에서 더 상세히 후술하겠지만, 본 예시적인 실시 예에서, 클라이언트 장치(300)는 평면 프레임의 관심 영역 및 기하학적 프레임의 형상을 표시하는 신호를 수신한다. 도 2 및 도 3은 컴퓨팅 시스템의 예시적인 장치를 도시하지만, 도 2 및 도 3에 다양한 변형들이 이루어질 수 있다. 예를 들어, 도 2 및 도 3의 다양한 구성 요소들은 결합, 추가 분할 또는 생략될 수 있고, 특정 요구에 따라 추가 구성 요소들이 추가될 수 있다. 특정 예로서, 프로세서(들)(340)은 하나 이상의 중앙 처리 장치(central processing unit, CPU) 및 하나 이상의 그래픽 처리 장치(graphics processing unit, GPU)와 같은 복수의 프로세서들로 나뉠 수 있다. 또한, 도 3은 휴대폰 또는 스마트폰으로서 구성된 클라이언트 장치(300)를 도시하지만, 클라이언트 장치는 다양한 유형의 휴대 또는 고정 장치로서 작동 가능하도록 구성될 수 있다. 또한, 컴퓨팅 및 통신 네트워크와 마찬가지로, 클라이언트 장치 및 서버는 다양한 구성을 가질 수 있고, 도 2 및 도 3은 특정 클라이언트 장치 또는 서버로 본 개시를 제한하지 않는다.
포인트 클라우드는 수백개의 포인트들로 구성되는 3D 모델이다. 포인트 클라우드는 가장 일반적으로 다양한 스캐닝 방법(예를 들어, 레이저 스캐닝 및 사진 측량)을 통해 현실 세계를 스캐닝한 결과로 획득된다. 포인트 클라우드는 3D 지도(예를 들어, 구글맵, 세슘(Cesium) 등)의 생성, 움직임 및 포즈 캡처(예를 들어, Kinect) 및 게임 및 영화용 3D 자산 생성을 포함한 일련의 작업을 위한 어플리케이션에서 널리 사용된다.
옥트리(octree)는 3D 포인트 클라우드 데이터를 나타내는 재귀적 데이터(recursive data) 구조이다. 3D 정점들의 옥트리 구조는 각각의 3D 셀을 동시에 8개로 세분화함으로써 쉽게 형성될 수 있다. 옥트리 코딩 접근 방법[1]에서, 자식 셀(child cell)이 비어 있는지 여부를 표시하기 위해 각각의 자식 셀에 대해 1 비트가 사용된다. 비어 있지 않은 셀은 최고의 해상도에 도달할 때까지 재귀적으로 세분화될 것이고, 비어 있는 셀은 더 이상 세분화되지 않을 것이다. 분할(partitioning) 절차 이후, 서버는 복수 레벨의 계층 구조(예를 들어, 옥트리)를 가질 수 있고, 각 레벨은 상이한 노드 밀도/해상도를 갖는다.
셀 세분 결과를 기반으로 하여, (1) 해당 코덱(codex)으로 각각의 자식 셀과 관련된 비트(예를 들어, 1은 비어 있지 않은 자식 셀 표시, 0은 비어 있는 자식 셀 표시)를 획득하고; (2) 특정 방법으로 세분된 부분 전부에 대한 출력 비트스트림(예를 들어, 각각의 셀 세분에 대해, 왼쪽 상단 자식 셀부터 시작하여 시계 방향으로 모든 자식 셀에 대한 비트 출력)을 획득함으로써 인코딩 절차가 수행된다. 이러한 방식으로, 포인트 클라우드는 공간 분해에 대한 강한 장점을 가지고 인코딩될 수 있다.
스트리밍 기술은 지난 수십 년 동안 지속적으로 개발되었다. 우리는 전통적인 TV, 인터넷 프로토콜 TV(internet protocol television, IPTV), 화상 회의, 라이브 및 모바일 스트리밍 서비스와 같은 다양한 멀티미디어 서비스의 빠른 융합을 보고 있다. 동시에, 인터넷은 멀티미디어 전송을 위한 표준 매체가 되었다. 전송 제어 프로토콜(transmission control protocol, TCP)뿐만 아니라 하이퍼텍스트 전송 프로토콜(hypertext transfer protocol, HTTP)이 인터넷을 통한 멀티미디어 콘텐츠 전송을 위한 기본 프로토콜이 되었다. 비디오와 같은 멀티미디어 콘텐츠의 스트리밍 기술이 많이 개발되었다. 그러나, 포인트 클라우드의 스트리밍은 여전히 연구자들이 연구하고 탐험할 완전 새로운 분야이다.
도 4는 본 개시의 일 실시 예에 따른 3차원(three dimensional, 3D) 스트리밍 서비스를 위한 시스템(400)의 예시적인 개요를 도시한다. 도 4에 도시된 실시 예는 단지 예시이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예가 사용된다.
시스템(410)은 3D 포인트 클라우드 데이터를 저장하는 서버를 포함하고, 다양한 클라이언트 장치 예를 들어, 랩톱, 패드, 스마트폰, 헤드 장착 디스플레이(head-mounted display, HMD), 안경 기반 디스플레이 등에 효율적인 포인트 클라우드 스트리밍을 제공한다.
클라이언트 장치(420)는 사용자 신체(예를 들어, 머리 또는 눈)의 움직임, 위치 또는 방향을 검출하기 위해 하나 이상의 센서가 장착되어 있을 수 있다. 센서는 예를 들어, 관성 센서, 다축 자이로스코프(multi-axis gyroscopic) 센서, 또는 가속 센서를 포함할 수 있다. 클라이언트 장치는 사용자의 머리 움직임을 추적하여, 뷰 필드(view field)에 해당하는, 사용자가 바라보고 있는 위치를 결정한다. 뷰 필드는 클라이언트 장치를 통해 3차원 환경에서 볼 수 있는 필드를 지칭할 수 있다. 뷰 필드는 뷰포트(viewport) 및 뷰포인트(viewpoint)를 기반으로 하여 결정될 수 있다.
서버(410)와 클라이언트 장치(420) 사이의 스트리밍 세션 초기화를 완료한 후에, 클라이언트 장치(420)는 뷰포트, 뷰 필드 및/또는 가용 스크리밍 세션 비트율(또는 대역폭) 중 적어도 하나에 대한 정보를 포함하는 피드백을 전송한다. 일 실시 예에서, 피드백은 채널 상태 정보(channel state information, CSI)를 또한 포함하고, 서버는 채널 상태 정보를 기반으로 하여 가용 비트율 또는 대역폭을 결정할 수 있다.
이후, 서버(410)는 흐름 제어 및 뷰 필드 의존 선택기(view field-dependent selector)(412)라고 불리는 절차를 통해 포인트 클라우드 데이터를 전송하기 시작한다. 이러한 절차는 뷰 필드 및 대역폭/CSI 피드백을 기반으로 하여 포인트 클라우드 데이터(옥트리의 노드)를 선택하도록 설계된다. 또한, 절차는 적절한 대역폭을 유지하기 위해 스트림의 흐름 제어를 제공한다. 다음으로, 클라이언트 장치(420)는 뷰 필드 의존성 적응형 콘텐츠를 수신하여 렌더링하고, 그것을 클라이언트 장치 화면에 디스플레이한다. 마지막으로, 이러한 절차는 사용자에게 양호한 스트리밍 서비스를 제공하기 위해 계속 반복된다.
2. 뷰 필드 인식 포인트 클라우드 스트리밍
계층 노드가 뷰 필드 범위 내에 있는지 여부를 결정하는 방법을 본 섹션에서 제공할 것이다. 방법은 계층적으로 구조화된 포인트 클라우드에서 노드의 경계 박스 및 가상 카메라 뷰 필드 정보에 따라 수행될 수 있다. 이를 통해 서버는 뷰 필드 내의 영역을 스트리밍할 수 있고, 뷰 필드 밖에 있는 영역은 축소되거나 폐기될 것이다. 복수의 물체를 처리하는 방법에서, 결정 절차는 복수의 물체에서 노드의 복수의 경계 박스 및 카메라의 뷰 필드 정보에 따라 수행될 수 있다.
2.1 MPEG 미디어 전송 프로토콜(MPEG media transport protocol, MMT) 시그널링
6DoF 어플리케이션 별 시그널링 메시지는 urn 값이 "urn:mpeg:mmt:app:6dof:2017" 또는 대안적으로 "urn:mpeg:mmt:app:6dof:2018"인 어플리케이션 식별자를 갖는다.
ViewfieldFeedback의 구문을 아래 표에 도시한다.
<표 1>
ViewfieldFeedback 및 BandwidthFeedback
표 1의 필드를 다음에서 설명한다.
Application_type: 본 필드는 본 메시지의 내용을 소비할 어플리케이션을 고유하게 식별하는 urn으로 어플리케이션-유형을 정의한다. 본 필드의 길이는 16 비트이다.
message_type: 본 필드는 표 1에 제공된 바와 같은 메시지 유형을 정의한다. 본 필드의 길이는 8 비트이다.
p11, p13, p22, p23, p33, p34: 본 필드는 4x4 투영 행렬(projection matrix)의 6개 요소들을 정의하고, 모든 요소들은 [-32768, 32767] 범위 내에 있다. 본 필드의 길이는 16 비트이고 65536까지 확장된다.
ModelViewMatrix: 본 필드는 4x4 ModelView 행렬에 16개 요소들을 정의하고, 모든 요소들은 [-32768, 32767] 범위 내에 있다. 본 필드의 길이는 16 비트이고 65536까지 확장된다.
BitrateValue: 본 필드는 클라이언트 측에서 현재의 스트리밍 세션에 할당된 비트율 값을 정의하고, [-32768, 32767] 범위 내에 있다. 본 필드의 길이는 16 비트이고 65536까지 확장된다.
투영 행렬(projection matrix): 원근 투영(perspective projection)에서, 각뿔대(truncated pyramid) 절두체(frustum)의 3D 포인트(시각 좌표)는 큐브(NDC); [l,r]부터 [-1,1]까지의 x 좌표 범위, [b,t]부터 [-1,1]까지의 y 좌표 범위, [n,f]부터 [-1,1]까지의 z 좌표 범위에 매핑된다. 투영 행렬은 OpenGL 변환 함수를 사용하여 다음과 같이 획득될 수 있다. 본 개시에서, 6개의 비-상수 요소들은 p11, p13, p22, p23, p33, p34를 사용하여 표시된다. 일 실시 예에서, 하나의 OpenGL 투영 행렬은 다음의 수학식 1과 같을 수 있다.
<수학식 1>
수학식 1
ModelView 행렬: 투영 행렬은 OpenGL 변환 함수를 사용하여 다음과 같이 획득될 수 있다. 투영 행렬 내의 모든 16개 요소들은 ModelViewMatrix를 사용하여 표시된다.
아래의 표 2 및 표 3은 MMT 웹소켓을 사용하는 6DoF 어플리케이션 별 시그널링 방법을 설명한다.
<표 2>
포인트 클라우드 스트리밍을 위한 MMT 웹소켓 하위 프로토콜 명령
<표 3>
6DoF 어플리케이션 별 JSON 매개변수
뷰 필드 인식 스트리밍 방법에서, 뷰 필드 내에 있는지 여부의 결정은 물체 포인트 레벨 대신 노드 레벨에서 달성될 수 있다.
도 5는 본 개시의 실시 예에 따른 3D 포인트 클라우드의 계층 구조(500)의 예시적인 복수 레벨을 도시한다. 도 5에 계층 구조의 실시 예는 단지 예시이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예가 사용된다.
도 5에 도시된 바와 같이, 레벨 1(510), 레벨 2(520) 및 레벨 3(530)에서 노드 및 그들의 경계 박스는 각각 도시된다. 각각의 레벨에 대해, 노드의 크기는 줄어드는 반면에 포인트 밀도는 증가한다. 물체의 노드의 계층 레벨은 다음과 같이 즉, 물체 자체를 근 노드로 설정하는 단계 및 각 계층 레벨에 대해 각 레벨 노드를 근 노드부터 복수의 하위 레벨 노드로 분할하는 단계를 통해 생성될 수 있다.
분할 절차 후, 서버는 L개 레벨의 계층 구조를 가질 수 있고, 각 레벨은 상이한 노드 밀도/해상도를 갖는다. 일 실시 예에서, 기존 데이터 집합의 각 포인트는 정확하게 하나의 옥트리 노드에 할당되고, 새로운 포인트들 또는 복제본은 생성되지 않는다. 다른 실시 예에서, 기존 데이터의 포인트는 상이한 계층 레벨에서 복수의 옥트리 노드에 할당될 수 있다. 낮은 계층 레벨의 노드에 있는 포인트들은 높은 계층 레벨의 노드에 제공될 수 있다. 뷰 필드 내에 있는지 여부의 결정은 포인트들 레벨 대신 노드 레벨 및/또는 물체 레벨에서 처리되고, 이는 시간 소비 및 계산 비용을 크게 줄일 수 있음을 유의해야 한다.
각각의 물체/노드가 뷰 필드 영역 내에 있는지 여부를 결정하는 하나의 알고리즘은 다음과 같다. 알고리즘의 입력은 주어진 물체/노드의 경계 박스의 8개 정점들{p1,p2,…,p8}의 위치 및 뷰 필드 피드백으로 MModelView 및 Mprojection을 포함하는 카메라 행렬이고, 여기서 pi=(xi,yi,zi)이고 i=1,2,…,8이다. 알고리즘의 출력은 전체 또는 부분 물체/노드가 뷰 필드 내에 있음을 나타내는 NodeInView 값 = TRUE; 물체/노드가 뷰 필드 밖에 있음을 나타내는 NodeInView 값 = FALSE이다. 각각의 물체는 근 노드에서 최대 레벨의 노드까지 복수 계층 레벨의 노드로 구성된다. 일 실시 예에서, 근 노드는 물체 그 자체일 수 있다.
이러한 알고리즘을 구현하기 위한 3 단계는 다음과 같다:
단계 1에서, 알고리즘은 포인트(x,y,z)가 뷰 필드 내에 있는 경우에는 '1'로 돌아가고, 포인트(x,y,z)가 뷰 필드 밖에 있는 경우에는 "0"으로 돌아가는 함수 PointInView(x,y,z)를 정의한다. 다음의 수학식 2에서, (xobj,yobj,zobj,wobj)는 물체 좌표를 나타내고, (xe,ye,ze,we)는 시각 좌표를 나타내고, (xclip,yclip,zclip,wclip)은 클립 좌표를 나타내고, (xndc,yndc,zndc)는 정규화된 장치 좌표(normalized device coordinates, NDC)를 표시한다.
<수학식 2>
상기 수학식 2로부터, 알고리즘은 입력에 따라 클립 좌표(xclip,yclip,zclip) 값을 획득할 수 있다. 그것을 기반으로 하여, 다음의 수학식 3과 같이 정규화된 장치 좌표(xndc,yndc,zndc)를 계산할 수 있다.
<수학식 3>
이후, 다음의 수학식 4와 같이 PointInView(x,y,z)를 획득한다.
<수학식 4>
단계 2에서, 알고리즘은 주어진 물체/노드의 8개 정점들{p1, p2,…,p8} 모두에 대한 PointInView(x,y,z) 값을 계산한다, 여기서 pi=(xi,yi,zi)이고 i=1,2,3…,8이다.
단계 3에서, 알고리즘은 8개의 PointInView(xi,yi,zi)(i=1,2,3…,8) 중 어느 하나가 1인 경우(즉, 뷰 절두체 내에 적어도 하나의 정점이 존재하는 경우)에는 주어진 물체/노드가 뷰 필드 내에 있음을 의미하는 NodeInView = TRUE를 획득하고, 그렇지 않은 경우에는 주어진 물체/노드가 뷰 필드 밖에 있음을 의미하는 NodeInView = FALSE를 획득한다. NodeInView 값은 다음의 수학식 5로 계산할 수 있다.
<수학식 5>
도 6은 본 개시의 일 실시 예에 따른, 서버에 의해 수행될 수 있는 바와 같이, 각 노드가 뷰 필드 영역 내에 있는지 여부를 결정하는 방법의 예시적인 흐름도(600)를 도시한다. 도 6에 도시된 실시 예는 단지 예시이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예가 사용된다. 예를 들어, 일련의 단계로서 도시되었지만, 다양한 단계가 중첩될 수 있고, 동시에 발생할 수 있고, 상이한 순서로 발생할 수 있고, 여러 번 발생할 수 있고, 또는 특정 실시 예에서는 수행되지 않을 수 있다.
방법은 입력 준비 단계(610)에서 시작할 수 있다. 현재 레벨의 각 노드에 대해, 방법은 그 경계 박스의 8개 정점들 위치를 pi=(xi,yi,zi), i=1,2,…8로 나타낸다. 또한, MModelView 및 Mprojection을 포함하는 카메라 행렬이 뷰 필드 피드백으로서 클라이언트 장치로부터 수신된다.
단계 620에서, 각 노드에 대해, 함수 PointInView(x,y,z)에 따라, 주어진 노드에서 8개의 정점들 {p1,p2,…,p8}(여기서, pi=(xi,yi,zi), i=1,2,…8) 모두에 대한 PointInView(x,y,z) 값을 계산하고 이후, NodeInView 값을 계산할 수 있다.
단계 630에서, NodeInView = TRUE인 경우, 방법은 주어진 노드가 뷰 필드 내에 있다(두 가지 경우 즉, 전적으로 내에 있는 경우 및 부분적으로 내에 있는 경우 포함)고 결정하고; 달리 NodeInView = FALSE인 경우, 방법은 주어진 노드가 뷰 필드 밖에 있다고 결정한다.
단계 640에서, 계층 구조(예를 들어, 옥트리)에서 현재 레벨의 각 노드에 대해 단계 620 및 단계 630을 반복하고, 레벨의 모든 노드들에 대해 노드가 뷰 필드 내에 있는지 여부를 결정할 수 있다. 일 실시 예에서, 뷰 필드 내의 노드만 서버에서 클라이언트 장치로 전송될 것이다. 이러한 접근 방법은 물체가 뷰 필드 내에 부분적으로 존재하는 시나리오를 처리할 수 있다. 그러한 시나리오에서, 뷰 필드 내에 부분적으로 존재하는 물체는 뷰 필드 내에 전적으로 존재하는 일부 노드, 뷰 필드 내 부분적으로 존재하는 일부 노드, 및 뷰 필드 밖에 존재하는 다른 노드를 포함한다. 노드가 뷰 필드 내에 있는 것으로 결정될 때(즉, 뷰 필드 내에 부분적으로 존재하는 노드의 NodeInView를 TRUE로 설정), 서버는 뷰 필드 내에 부분적으로 존재하는 노드를 스트리밍할 것이다.
노드가 뷰 필드 내에 존재하는지 여부를 결정할 때, 방법은 다음과 같은 결정 기준을 사용한다 즉, 8개의 PointInView(xi,yi,zi), i=1,2,3…8 중 어느 하나가 1인 경우, NodeInView는 TRUE이고, 이는 주어진 노드가 뷰 필드 내에 있다는 의미이고, 그렇지 않은 경우, NodeInView는 FALSE이고, 주어진 노드가 뷰 필드 밖에 있다는 의미이다.
노드가 뷰 필드 내에 부분적으로 존재하는 경우, 8개의 정점들 중 하나 이상은 뷰 필드 내에 존재해야 하기 때문에, 이러한 노드는 뷰 필드 내에 있다고 결론내린다.
컴퓨터 그래픽 렌더링에서, 사용자가 포인트 클라우드를 바라보는 경우 폐색(occlusion)이 종종 발생한다. 따라서, 가시적 포인트(visible point)들은 사용자의 가상 카메라를 향한 측면의 포인트들로서, 상응하여 비가시적 포인트들은 사용자 뷰의 가시적 포인트들에 의해 차폐된 다른 측면의 포인트들로서 정의된다.
도 7a 및 도 7b는 본 개시의 실시 예에 따른 가시적 포인트를 결정하는 방법을 설명하는 예시적인 다이어그램을 도시한다. 도 7a 및 도 7b에 도시된 방법의 실시 예는 단지 예시이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예가 사용된다.
도 7a에서, 포인트(x,y,z) 및 포인트(x',y',z')는 가상 카메라 위치 포인트를 통해 동일 선(710) 상에 놓여서 (x',y',z')는 가시적 포인트가 되고 (x,y,z)는 비가시적 포인트가 된다. 마찬가지로, 도 7b에서, 점선(720)은 포인트 클라우드의 가시적 부분을 나타내고, 점선(730)은 포인트 클라우드의 비가시적 부분을 나타낸다.
포인트 클라우드의 어느 부분이 폐색(occlusion) 내에 존재하는지를 결정하는 일 실시 예가 다음과 같이 기술된다. 여기서, (포인트 클라우드 파일에 기록된) 좌표 정보 및 카메라 행렬은 가시적인 포인트 클라우드의 포인트 인덱스를 결정하기 위한 입력이다.
제일 먼저, 포인트 클라우드의 모든 포인트는 고유 포인트 인덱스 및 좌표 정보를 갖는다. 각각의 포인트 좌표 정보 및 카메라 행렬 정보의 경우, 방법은 (x,y,z)window라고 불리는 사용자의 윈도우 공간에서 그 좌표를 계산한다.
따라서, 룩업 테이블(lookup table)은 일반적으로 모든 포인트들에 (x,y,z)window를 사용하여 키워드로 (x,y)window를 사용하여 작성된다. 그것을 작성하는 프로세스 동안, (x,y)window가 룩업 테이블에 대해 새로운 것인 경우, 방법은 그 zwindow 정보 및 포인트 인덱스를 룩업 테이블에 남겨둔다. 달리, (x,y)window가 언급되어 있다면, 방법은 해당하는 2개의 zwindow(하나는 현재의 포인트로부터의 것, 다른 하나는 룩업 테이블에 남겨진 것)를 비교한 후 더 작은(즉, 카메라에 더 가까이 있는) zwindow를 사용하여 룩업 테이블을 업데이트할 것이다.
마지막으로, 방법은 룩업 테이블에서 일련의 zwindow 정보 및 포인트 인덱스를 획득할 수 있다. 이들 포인트 인덱스는 모든 가시적 포인트들의 인덱스를 기록하기 때문에, 가시적 포인트 결정 결과를 보여준다.
그러나, 포인트들이 가시적인지 여부를 결정하는 전술한 방법은 룩업 테이블에 저장된 저장된 깊이와 비교하여 각 포인트를 확인하기 때문에 시간이 오래 걸리고 비효율적인 프로세스일 수 잇다.
하나의 스트리밍 방법의 다른 실시 예에서, 스트리밍 될 포인트 클라우드 부분을 결정하는 작업은 서버 측에서 처리될 수 있다. 클라이언트는 지속적으로 또는 클라이언트 뷰 필드 변화가 특정 임계값보다 높아지는 이벤트가 발생할 때 서버에 카메라 행렬을 피드백한다.
카메라 행렬 및 (x,y,z)object(즉, 물체 공간에서의 좌표)를 기반으로 하여 포인트의 (x,y,z)window(즉, 사용자의 윈도우 공간에서의 좌표)를 계산하는 일 실시 예를 다음과 같이 기술한다. 후자는 입력으로 포인트 클라우드에 기록된다.
도 8은 본 개시의 일 실시 예에 따른 포인트의 (x,y,z)window를 계산하는 방법의 예시적인 흐름도(800)를 도시한다. 도 8에 도시된 실시 예는 단지 예시이다. 도 8에 도시된 구성 요소 중 하나 이상은 언급된 기능을 수행하도록 구성된 특수 회로에서 구현될 수 있고, 또는 구성 요소 중 하나 이상은 언급된 기능을 수행하기 위해 명령을 실행하는 하나 이상의 프로세서에 의해 구현될 수 있다. 본 개시의 범위를 벗어나지 않고 다른 실시 예가 사용된다.
도 8에 도시된 바와 같이, 방법은 ModelView 행렬 MModelView을 사용하여 물체 공간(805)을 시각 공간(810)으로 변환한다. 이후, 방법은 시각 공간(810)을 클립 공간(815)으로 변환하기 위해 투영 행렬 Mprojection을 사용한다. 이어서, 클립 공간(815)은 투시 분할(perspective dividing) MDivide을 사용하여 정규화된 장치 좌표(normalized device coordinates, NDC) 공간(820)으로 변환되고, 윈도우 공간(825)으로의 뷰 필드 변환 MViewport을 수행한다. 수학적으로, 포인트 좌표(x,y,z)의 경우, 물체 공간(805)에서 윈도우 공간(825)으로의 변환 절차는 다음의 수학식 6으로 나타낼 수 있다.
<수학식 6>
구체적으로, 사용자가 가상 카메라 방향을 변경하는 경우, 투영 행렬 Mprojection이라고 불리는 카메라 행렬 중 하나만 변경될 것이다. 투영 행렬은 카메라 위치 및 카메라의 방향을 기록하는 4x4 행렬이고, 이러한 여러 카메라 행렬은 웹 브라우저에서 렌더링 기계로부터 쉽게 획득된다. 이러한 방식으로, 방법은 (x,y,z)object로부터 성공적으로 (x,y,z)window를 획득할 수 있다.
2.2 복수의 물체 - 복수 물체의 계층 노드가 뷰 필드 범위 내에 있는지 여부 결정
도 9는 본 개시의 일 실시예에 따른, 복수 물체의 노드의 계층(예를 들어, 옥트리) 레벨이 뷰 필드 범위 내에 있는지 여부를 결정하는 방법을 설명하기 위한 예시적인 다이어그램(900)을 도시한다. 도 9에 도시된 실시 예는 단지 예시이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용된다.
도 9에 도시된 바와 같이, 물체 'a'(910)는 뷰 필드 내에서 전적으로 렌더링되고, 물체 'b'(920)는 뷰 필드 내에서 부분적으로 렌더링되고, 물체 'c'(930)는 뷰 필드 밖에서 전적으로 렌더링된다. 각각의 포인트 클라우드 물체는 그 물체에 대한 경계 박스를 갖고, 경계 박스는 그 공간에 노드의 모든 포인트들을 포함한다.
이들 8개 정점들이 모두 뷰 필드 내에서 렌더링되지 않는 경우, 물체의 포인트들은 모두 뷰 필드 범위에서 렌더링되지 않을 것이다. 이는 큐브의 토폴로지를 기반으로 하는 수학적 결론이다. 각각의 포인트 클라우드 물체는 다수의 포인트들을 포함한다.
일 실시 예에서, 서버는 뷰 필드 내에서 렌더링되는 전적으로 또는 부분적으로 렌더링되는 영역만 전송할 수 있고, 뷰 필드 밖에서 렌더링되는 다른 영역은 완전히 폐기될 수 있다. 이는 필요한 대역폭을 줄이고(즉, 전송할 콘텐츠를 감소시키고) 대기 시간 단축(즉, 전송, 렌더링 및 디스플레이 시간 단축)을 제공할 것이다.
도 10은 본 개시의 일 실시 예에 따른 복수 물체에 대한 뷰 필드 인식 포인트 클라우드 스트리밍 방법에 대한 예시적인 흐름도(1000)이다. 도 10에 도시된 흐름도(1000)는 단지 예시이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예가 사용된다. 예를 들어, 일련의 단계로 도시되어 있지만, 다양한 단계가 중첩되거나, 동시에 발생하거나, 상이한 순서로 발생하거나, 여러 번 발생하거나, 특정 실시 예에서는 수행되지 않을 수 있다.
방법은 단계 1010에서 시작된다. 단계 1010에서, 방법은 처리할 제1 물체를 설정하고 계층 레벨 중 최저 레벨(즉, 최대 해상도 레벨)을 제1 레벨로 설정한다.
단계 1020에서, 현재의 물체의 경우, 주어진 레벨의 각 노드에 대해, 그 경계 박스의 8개 정점들의 위치는 pi=(xi,yi,zi), i=1,2,…8로 표시된다. 또한, MModelView 및 Mprojection를 포함하는 카메라 행렬은 전술한 바와 같이 뷰 필드 피드백으로서 클라이언트로부터 수신된다.
단계 1030에서, 현재의 물체의 경우, NodeInView 값은 해당 계층 구조의 각 노드로 계산된다. 일 실시 예에서, 초기 노드는 해당 계층 구조의 근 노드(root node)일 수 있다. 각 물체에 해당하는 NodeInView가 FALSE인 경우, 이러한 물체는 뷰 필드에 밖에 있는 것으로 결정되고, 그렇지 않은 경우, 물체는 뷰 필드 내에 있는 것으로 결정된다.
단계 1040에서, 뷰 필드 내에 있는 것으로 결정된 각각의 물체에 대해, 흐름도는 계층 구조(예를 들어, 옥트리)에서 선택된 레벨의 각 노드에 대해 NodeInView 값을 계산한다.
단계 1050에서, 방법은 레벨이 최대 레벨 이하이면 하나씩 레벨을 증가시키고, 할당되지 않은 대역폭이 존재하면 단계 1020, 단계 1030 및 단계 1040을 계속 반복한다. 일 실시 예에서, 가용 대역폭이 증가된 계층 레벨의 노드를 수용하는 한 이러한 반복 과정은 계속될 수 있다. 그렇지 않은 경우, 방법은 단계 1060을 진행한다.
단계 1060에서, 방법은 처리할 다음 포인트 클라우드 물체를 선택하고, 처리되지 않은 물체가 존재하는 경우 단계 1020으로 돌아간다. 달리, 계층 노드가 뷰 필드 내에 있는지 여부를 결정하기 위해 모든 물체가 처리되면 방법은 다음 단계 1060을 진행한다.
단계 1060에서, 방법은 아래의 "비트율 피드백 기반 물체 비율 할당"이라는 제목의 섹션 3에서 기술되는 비트율 피드백 기반 비율 할당 알고리즘을 처리한다.
단계 1070에서, 화면의 모든 물체들에 대해, 서버는 제1 레벨에서부터 섹션 3, 비트율 피드백 기반 물체 비율 할당 알고리즘에서 결정된 상위 레벨까지의 레벨을 반복 실행하고, 서버는 클라이언트에 결정된 레벨에 대한 뷰 필드 내에 있는 노드를 전송한다. 이러한 방식으로, 노드가 뷰 필드 내에 있는지 여부에 관계없이, 계층 노드의 레벨의 상한이 결정된다.
도 11은 본 개시의 일 실시 예에 따른 뷰 필드 인식 포인트 클라우드 스트리밍 방법에 대한 다른 예시적인 흐름도(1100)를 도시한다. 도 11에 도시된 흐름도(1100)는 단지 예시이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예가 사용된다. 예를 들어, 일련의 단계로 도시되었지만, 다양한 단계가 중첩될 수 있고, 동시에 발생할 수 있고, 상이한 순서로 발생할 수 있고, 여러 번 발생할 수 있고, 또는 특정 실시 예에서는 수행되지 않을 수 있다.
이러한 실시 예에서, 방법은 뷰 필드 밖의 물체에 대해 거친 레벨(더 낮은 계층 레벨)을 할당하는 것을 제외하고 흐름도(1000)와 대부분이 유사하다. 단계 1110, 단계 1120, 단계 1130, 단계 1140, 단계 1150, 단계 1160, 단계 1170, 단계 1180은 도 10에 도시된 단계 1010, 단계 1020, 단계 1030, 단계 1040, 단계 1050, 단계 1060, 단계 1070 및 단계 1080과 동일하다. 차이점은 흐름도(1100)가 뷰 필드 밖의 물체에 대해 추가로 단계 1185 및 단계 1190을 갖는다는 것이다.
단계 1185에서, 뷰 필드 밖에 존재하는 것으로 결정된 물체 각각에 대해, 방법은 주어진 노드에서 경계 박스 중심{pc}(여기서, pc=(xi,yi,zi))의 정점에 대한 정규화된 장치 좌표(xndc, yndc, zndc) 값을 계산한다.
단계 1190에서, 뷰 필드 밖의 물체 각각에 대해, 방법은 정규화된 장치 좌표의 xndc, yndc, zndc 중 어느 하나가 [-1-Δ, 1+Δ]의 범위 내에 있는 경우, 포인트 클라우드 물체 각각에 대해, 뷰 필드 내의 물체/노드에 할당된 대역폭보다 작은 대역폭 또는 거친 레벨을 할당한다. 델타(Δ)((또는 임계값)은 클라이언트 장치에서의 버퍼링 양, 사용자의 움직임 속도, 또는 가용 대역폭의 크기 중 적어도 하나를 기반으로 하여 결정될 수 있는 변수이다. 달리, 정규화된 장치 좌표의 xndc, yndc, zndc 중 어느 것도 [-1-Δ, 1+Δ]의 범위 내에 없는 경우, 상기 물체에 대한 포인트는 전송되지 않는다. 대안적으로, 정규화된 장치 좌표의 xndc, yndc, zndc에 따라 상이한 대역폭 레벨을 할당하기 위해 여러 델타 범위가 사용된다. 델타 값이 클수록 델타 기간 내의 물체에 할당된 대역폭은 작아진다.
2.3 단일 물체 - 단일 물체의 계층 노드가 뷰 필드 범위 내에 있는지 여부 결정
도 12a 내지 도 12c는 본 개시의 일 실시 예에 따른 단일 물체의 계층 노드가 뷰 필드 범위 내에 있는지 여부를 결정하는 방법을 설명하기 위한 예시적인 다이어그램을 도시한다. 도 12a 내지 도 12c에 도시된 실시 예는 단지 예시이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예가 사용된다.
도 12a는 전적으로 뷰 절두체 내에 있는 물체 'a'(1205)를 도시하고, 도 12b는 부분적으로 뷰 절두체 내에 있는 물체 'b'(1210)를 도시하고, 도 12c는 전적으로 뷰 절두체 밖에 있는 물체 'c'(1215)를 도시한다.
일 실시 예에서, 서버는 뷰 절두체 내의 영역을 전송할 수 있고, 뷰 절두체 밖에 있는 영역은 완전히 폐기될 수 있다. 결과적으로, 필요한 대역폭이 줄어들고(즉, 전송할 콘텐츠가 감소하고) 대기 시간이 단축(즉, 전송, 렌더링 및 디스플레이할 시간 단축)될 것이다.
계층 구조, 예를 들어 옥트리 구조에서, 각각의 노드는 많은 포인트들을 포함하고 그 고유 공간 분포를 갖는다. 각각의 노드는 경계 박스를 갖고, 그 공간에 노드의 모든 포인트들을 포함한다. 모든 경계 박스는 8개의 정점들을 갖는다. 이들 8개 정점들이 모두 뷰 절두체 내에 존재하지 않는 경우, 이들 노드의 포인트들은 모두 뷰 절두체 내에 없을 것이다. 이는 큐브의 토폴로지를 기반으로 하는 수학적 결론이다.
도 13은 본 개시의 일 실시 예에 따른 복수의 노드로 구성된 포인트 클라우드 물체에 대한 예시적인 다이어그램(1300)을 도시한다. 도 13에 도시된 실시 예는 단지 예시이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예가 사용된다.
도 13에 도시된 바와 같이, 물체(1310)는 부분적으로 뷰 필드 내에 있다. 물체(1310)는 노드 'a'(1320), 노드 'b'(1330), 노드 'c'(1340)를 포함하여 복수의 노드를 포함한다. 상기 도면에서, 노드 'a'(1320), 노드 'b'(1330), 노드 'c'(1340)는 각각 뷰 필드 영역과 각 노드의 경계 박스 사이의 상이한 관계를 나타낸다. 도 13은 노드 'a'(1320)의 경계 박스가 뷰 필드 영역 내에 있는 반면에 노드 'b'(1330)는 노드의 경계 박스가 뷰 필드 영역 내에 부분적으로 렌더링됨을 도시한다는 것을 보여준다. 노드 'c'(1340)의 전체 경계 박스는 뷰 영역을 벗어난다.
도 14은 본 개시의 일 실시 예에 따른 뷰 필드 인식 포인트 클라우드 스트리밍 방법에 대한 예시적인 흐름도(1400)를 도시한다. 도 14에 도시된 흐름도(1400)는 단지 예시이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예가 사용된다. 예를 들어, 일련의 단계로 도시되었지만, 다양한 단계가 중첩될 수 있고, 동시에 발생할 수 있고, 상이한 순서로 발생할 수 있고, 여러 번 발생할 수 있고, 또는 특정 실시 예에서는 수행되지 않을 수 있다.
방법은 단계 1410에서 시작된다. 단계 1410에서, 서버는 대역폭 피드백뿐만 아니라 MModelView 및 Mprojection을 포함하는 가상 카메라 행렬을 포함하는 뷰 필드 피드백을 수신한다. 현재의 대역폭 조건을 기반으로 하여, 서버는 다음 섹션에서 기술되는 바와 같이 물체 또는 노드가 뷰 필드 내에 있는지 여부를 결정하는 가용 대역폭을 기반으로 하여 스트리밍할 3D 물체 포인트 클라우드 콘텐츠의 레벨을 선택한다.
단계 1420에서, 3D 물체 포인트 클라우드의 선택된 레벨에 대해, 서버는 선택된 레벨에서 노드의 모든 경계 박스를 획득한다.
단계 1430에서, 현재 레벨의 모든 노드에 대해, 서버는 노드가 뷰 필드 영역 내에 있는지 여부를 결정하기 위해 진행한다.
단계 1440에서, 서버는 현재 레벨이 계층 레벨의 최대 레벨 이하인 경우에는 현재 레벨을 하나씩 증가시키고, 할당되지 않은 대역폭이 존재하는 경우에는 단계 1410, 단계 1420 및 단계 1430을 계속 반복한다. 달리, 현재 레벨이 최대 레벨보다 큰 경우에는 다음 작업을 처리한다.
단계 1450에서, 섹션 3에 기술된 비트율 피드백 기반 비율 할당 알고리즘을 처리한다.
단계 1460에서, 화면의 현재 물체에 대해, 서버는 제1 레벨에서 비트율 피드백 기반 물체 비율 할당 방법이라는 제목의 섹션 3에서 결정된 결정된 상위 레벨까지의 레벨을 반복하고, 서버는 클라이언트에 처리된 레벨(들)에 대한 뷰 필드 내 노드를 전송한다.
도 15는 본 개시의 일 실시 예에 따른 클라이언트 장치로부터의 피드백을 기반으로 하는 뷰 필드 인식 포인트 클라우드 스트리밍에 대한 다른 예시적인 흐름도(1500)를 도시한다. 도 15에 도시된 흐름도(1500)는 단지 예시이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예가 사용된다. 예를 들어, 일련의 단계로 도시되었지만, 다양한 단계가 중첩될 수 있고, 동시에 발생할 수 있고, 상이한 순서로 발생할 수 있고, 여러 번 발생할 수 있고, 또는 특정 실시 예에서는 수행되지 않을 수 있다.
이러한 실시 예에서, 단계 1510, 단계 1520, 단계 1530, 단계 1540, 단계 1550, 및 단계 1560은 도 14에 도시된 흐름도(1400)의 해당 단계 1410, 단계 1420, 단계 1430, 단계 1440, 단계 1450, 및 단계 1460과 동일하다.
차이점은 노드가 뷰 필드 밖에 있는 경우에는 단계 1570에서 서버가 주어진 노드의 경계 박스 중심{pc}(여기서, pc=xi,yi,zi)의 정점에 대한 정규화된 장치 좌표(xndc,yndc,zndc) 값을 계산한다는 것이다.
단계 1580에서, 뷰 필드 밖의 노드에 대해, 노드의 정규화된 장치 좌표의 xndc,yndc,zndc 중 어느 하나가 [-1-Δ, 1+Δ]의 범위 내에 있는 경우, 서버는 포인트 클라우드 물체의 노드에 대해 거친 레벨을 할당한다. 전술한 바와 같이, 델타는 클라이언트 장치에서의 버퍼링 양, 사용자의 움직임 속도, 또는 가용 대역폭의 크기 중 적어도 하나를 기반으로 하여 결정될 수 있는 변수이다. 달리, 노드의 정규화된 장치 좌표의 xndc,yndc,zndc 중 어느 것도 [-1-Δ, 1+Δ]의 범위 내에 없는 경우, 노드는 전송되지 않는다. 이후, 단계 1540, 단계 1550, 및 단계 1560을 계속 처리한다.
3. 비트율 피드백 기반 물체 비율 할당
다음에서, 뷰 필드 내의 물체 및 뷰 필드 밖의 물체를 포함하는 복수 개체에 비트율(대역폭)을 할당하는 단계를 포함하는, 물체 비율 할당을 기반으로 하는 비트율 피드백 방법을 기술할 것이다.
도 16은 본 개시의 일 실시 예에 따른 비트율 피드백을 기반으로 하여 물체에 비트율(또는 대역폭)을 할당하는 방법의 예시적인 흐름도(1600)를 도시한다. 도 16에 도시된 실시 예는 단지 예시이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예가 사용된다. 예를 들어, 일련의 단계로 도시되었지만, 다양한 단계가 중첩될 수 있고, 동시에 발생할 수 있고, 상이한 순서로 발생할 수 있고, 여러 번 발생할 수 있고, 또는 특정 실시 예에서는 수행되지 않을 수 있다.
방법은 단계 1610에서 시작된다. 단계 1610에서, 초기화를 위해, 서버는 전술한 바와 같이 클라이언트로부터 전송되는 Br로 표시된 비트율 피드백을 수신하고, 최대 레벨(lmax) 및 프레임률(f)을 포함하는 매개변수 설정, 뷰 필드 내의 물체, 및 뷰 필드 밖의 물체를 식별한다.
단계 1620에서, 서버는 할당 규칙에 따라 뷰 필드 내의 물체 및 뷰 필드 밖의 물체에 스트리밍 세션 비트율을 할당한다. 일 실시 예에서, 하나의 할당 규칙은 특정 비율, 예를 들어 70:30으로 비트율을 할당할 수 있다. 이러한 예에서, 서버는 뷰 필드 내의 물체에는 세션 비트율(또는 대역폭)의 70%를 할당하고, 뷰 필드 밖의 물체에는 세션 비트율(대역폭)의 30%를 할당할 수 있다. 다른 실시 예에서는 할당 비율이 65:35, 75:25 등과 같이 달라질 수 있다.
단계 1630에서, 서버는 뷰 필드 내의 물체에 대한 할당 규칙에 따라 물체들 사이에서, 뷰 필드 내의 물체에 할당되는 비트율을 할당한다. 일 실시 예에서, 할당 규칙은 뷰 필드 내의 각 포인트 클라우드 물체에 할당된 비트율을 균일하게 할당할 수 있다. 대안적으로, 할당 규칙은 뷰 필드 내의 모든 물체의 총 비트율 및 현재 물체의 비트율 비율에 따라 포인트 클라우드 물체에 할당된 비트율을 할당할 수 있다. 이후, 다음과 같이 뷰 필드 내의 각 물체에 대해 상위 레벨이 도출된다. 물체의 하나의 프레임에 할당된 비트는 비트율을 프레임 비율로 나눔으로써 도출된다. 하나의 프레임의 비트를 도출할 때, 비트 누적이 도출된 하나의 프레임 비트에 도달할 때까지 레벨의 상한은 각 레벨의 노드의 비트를 축적함으로써 결정되고, 비트 누적은 제1 레벨에서 상위 레벨까지 처리된다. 그러한 방법으로, 상위 레벨은 뷰 필드 내의 각 물체에 대해 도출된다.
단계 1640에서, 서버는 뷰 필드 밖의 물체에 대해 할당 규칙에 따라 물체 사이에서 뷰 필드 밖의 물체에 할당되는 비트율을 할당한다. 일 실시 예에서, 규칙은 뷰 필드 밖의 포인트 클라우드 물체 각각에 할당된 비트율을 균일하게 할당할 수 있다. 대안적으로, 할당 규칙은 뷰 필드 밖의 모든 물체의 총 비트율 및 현재 물체의 비트율 비율에 따라 포인트 클라우드 물체에 할당된 비트율을 할당할 수 있다. 이후, 뷰 필드 내의 각 물체의 할당된 비트율을 기반으로 하여 뷰 필드 밖의 각 물체에 대해 상위 레벨이 도출된다. 여기서, 상위 레벨이 0이라는 것은 뷰 필드 밖의 상기 물체에 대해 노드가 전혀 전송되지 않음을 표시한다. 뷰 필드 밖의 물체에 대한 상위 레벨을 설정하는 프로세스는 상기 섹션 2에 기술된다.
상기 실시 예는 서버가 뷰 필드 내에 렌더링된 영역 또는 표시된 계층 노드만을 전송할 수 있게 하고, 뷰 필드 밖에 렌더링되는 계층 노드는 완전히 폐기될 수 있고, 또는 대안적으로, 뷰 필드 내의 노드만을 전송하고 거친 방식으로 뷰 필드 밖의 노드를 전송한다(예를 들어, 사용자에 의한 갑작스러운 뷰 필드 변화를 처리하기 위한 백업으로서 낮은 레벨의 노드). 또한, 실시 예는 시스템이 네트워크 대역폭을 크게 절약하고 포인트 클라우드 프리젠테이션 품질을 향상시킬 수 있게 한다.
뷰 필드 내에 있는지 여부의 결정은 포인트들 레벨 대신 노드 레벨 및/또는 포인트 클라우드 물체 레벨에서 처리되기 때문에 계산 비용 및 시간 소비를 크게 절약할 수 있다. 그에 반해서, 포인트들이 가시적인지 여부를 결정하는 전통적인 광선 추적 방법(raytracing way)은 룩업 테이블에 저장되어 있는 저장된 깊이와 비교하여 각 포인트를 확인하기 때문에 시간이 많이 걸리고 비효율적인 프로세스이다.
본 출원의 어떠한 설명도 특정 요소, 단계 또는 기능이 청구 범위에 포함되어야 하는 필수 요소임을 의미하는 것으로 해석되어서는 안된다. 특허 대상 범위는 청구 범위에 의해서만 정의된다.
본 개시는 예시적인 실시 예로 기술되었지만, 다양한 변경 및 수정이 당업자에게 제안될 수 있다. 본 개시는 첨부된 청구 범위 내에 속하는 그러한 변경 및 수정을 포함하는 것으로 의도된다.
Claims (15)
- 스트리밍할 3차원(three dimensional, 3D) 콘텐츠를 식별하기 위한 서버로서, 상기 서버는
상기 3D 콘텐츠 내에 존재하는 복수의 물체에 대한 3D 포인트 클라우드 데이터를 저장하도록 구성된 메모리;
상기 3D 콘텐츠에서 클라이언트 장치의 뷰 필드를 표시하는 정보를 클라이언트 장치로부터 수신하도록 구성된 통신 인터페이스; 및
상기 3D 콘텐츠를 상기 클라이언트 장치로 스트리밍하는 데 사용할 수 있는 대역폭의 양을 식별하고,
상기 3D 포인트 클라우드 데이터를 스트리밍할 상기 대역폭을 상기 물체 중 하나 이상에 할당하도록 구성된 프로세서를 포함하고,
상기 대역폭을 할당하기 위해, 상기 프로세서는 상기 하나 이상의 물체 각각에 대해,
상기 각 물체의 위치를 기반으로 하여 상기 각 물체가 상기 클라이언트 장치의 상기 뷰 필드 내에 존재하는지 여부를 결정하고;
상기 클라이언트 장치의 상기 뷰 필드 내에 존재하지 않는 물체보다 상기 클라이언트 장치의 상기 뷰 필드 내에 적어도 부분적으로 존재하는 물체에 더 많은 양의 대역폭을 할당하도록 구성되고,
상기 통신 인터페이스는 상기 할당된 대역폭에 따라 상기 클라이언트 장치에 상기 3D 콘텐츠를 스트리밍하도록 더 구성되는 서버. - 제1 항에 있어서, 상기 프로세서는
상기 각 물체의 모든 정점들이 아니라 적어도 하나가 상기 뷰 필드 범위 내에 존재하는 경우, 상기 각 물체는 상기 뷰 필드 내에 부분적으로 존재하는 것으로 결정되고;
상기 각 물체의 모든 정점들이 상기 뷰 필드 범위 내에 존재하지 않는 경우, 상기 각 물체는 상기 뷰 필드를 벗어난 것으로 결정되도록 더 구성되는 클라이언트 장치. - 제1 항에 있어서, 상기 뷰 필드를 표시하는 상기 정보는 투영 행렬 또는 모델 뷰 행렬 중 적어도 하나인 클라이언트 장치.
- 제1 항에 있어서, 상기 3D 포인트 클라우드 데이터는 복수의 물체를 포함하고, 상기 각각의 물체는 근 노드부터 최대 레벨의 노드까지 노드의 하나 이상의 계층 레벨을 포함하고, 물체의 노드의 상기 계층 레벨은 상기 물체를 근 노드로 설정하고, 각각의 계층 레벨에 대해 각각의 레벨 노드를 상기 근 노드부터 복수의 하위 레벨 노드로 분할함으로써 생성되는 클라이언트 장치.
- 제4 항에 있어서, 상기 프로세서는
상기 3D 포인트 클라우드 데이터를 스트리밍할 상기 대역폭을 상기 근 노드부터 상위 레벨의 노드에 할당하도록 더 구성되고,
상기 대역폭을 할당하기 위해, 상기 프로세서는 상기 근 노드의 레벨부터 시작하는 주어진 레벨의 노드 각각에 대해,
상기 각 노드의 위치를 기반으로 하여 상기 각 노드가 상기 클라이언트 장치의 상기 뷰 필드 내에 존재하는지 여부를 결정하고;
상기 클라이언트 장치의 상기 뷰 필드 내에 존재하지 않는 노드보다 상기 클라이언트 장치의 상기 뷰 필드 내에 존재하는 노드에 더 많은 양의 대역폭을 할당하고;
상기 클라이언트 장치의 상기 뷰 필드 밖에 있는 상기 노드 각각에 대해,
상기 각 노드가 상기 클라이언트 장치의 상기 뷰 필드로부터 상기 임계 거리 내에 존재하는지 여부를 결정하고;
상기 클라이언트 장치의 상기 뷰 필드 내에 존재하는 노드보다 상기 클라이언트 장치의 상기 뷰 필드로부터 상기 임계 거리 내에 존재하는 노드에 더 적은 양의 대역폭을 할당하고;
할당되지 않은 대역폭이 존재하는 경우, 상기 최대 레벨까지 한 레벨씩 상기 주어진 레벨을 증가시키도록 구성되는 클라이언트 장치. - 제5 항에 있어서,
상기 각 노드의 정점들 중 적어도 하나가 상기 뷰 필드 범위 내에 있는 경우, 상기 각 노드는 상기 뷰 필드 내에 있는 것으로 결정되고; 상기 노드의 정점들 모두가 상기 뷰 필드 범위 내에 없는 경우, 상기 각 노드는 상기 뷰 필드를 벗어난 것으로 결정되는 클라이언트 장치. - 제5 항에 있어서, 상기 프로세서는
상기 클라이언트 장치의 상기 뷰 필드를 벗어난 상기 물체 각각에 대해,
상기 각 물체가 상기 클라이언트 장치의 상기 뷰 필드로부터 임계 거리 내에 있는지 여부를 결정하고;
상기 뷰 필드 내의 상기 물체보다 상기 뷰 필드로부터 상기 임계 거리 내에 있는 물체에 더 적은 양의 상기 대역폭을 할당하도록 더 구성되는 클라이언트 장치. - 스트리밍할 3차원(three dimensional, 3D) 콘텐츠를 식별하기 위한 방법으로서, 상기 방법은
상기 3D 콘텐츠에 존재하는 복수의 물체에 대한 3D 포인트 클라우드 데이터를 저장하는 단계;
상기 3D 콘텐츠에서 클라이언트 장치의 뷰 필드를 표시하는 정보를 클라이언트 장치로부터 수신하는 단계;
상기 클라이언트 장치로 상기 3D 콘텐츠를 스트리밍하는 데 사용할 수 있는 대역폭의 양을 식별하는 단계;
상기 3D 포인트 클라우드 데이터를 스트리밍할 상기 대역폭을 상기 물체의 하나 이상에 할당하는 단계를 포함하고,
상기 대역폭을 할당하는 단계는 상기 하나 이상의 물체 각각에 대해
상기 각 물체의 위치를 기반으로 하여 상기 각 물체가 상기 클라이언트 장치의 상기 뷰 필드 내에 존재하는지 여부를 결정하는 단계;
상기 클라이언트 장치의 상기 뷰 필드 내에 존재하지 않는 물체보다 상기 클라이언트 장치의 상기 뷰 필드 내에 적어도 부분적으로 존재하는 물체에 더 많은 양의 대역폭을 할당하는 단계; 및
상기 할당된 대역폭에 따라 상기 클라이언트 장치에 상기 3D 콘텐츠를 스트리밍하는 단계를 포함하는 방법. - 제8 항에 있어서, 상기 방법은
상기 각 물체의 모든 정점들이 아니라 적어도 하나가 상기 뷰 필드 범위 내에 존재하는 경우, 상기 각 물체가 상기 뷰 필드 내에 부분적으로 존재한다고 결정하는 단계; 및
상기 각 물체의 모든 정점들이 상기 뷰 필드 범위 내에 존재하지 않는 경우, 상기 각 물체가 상기 뷰 필드를 벗어난 것으로 결정하는 단계를 더 포함하는 방법. - 제8 항에 있어서, 상기 뷰 필드를 표시하는 상기 정보는 투영 행렬 또는 모델 뷰 행렬 중 적어도 하나인 방법.
- 제8 항에 있어서, 상기 3D 포인트 클라우드 데이터는 복수의 물체를 포함하고, 상기 각 물체는 근 노드부터 최대 레벨의 노드까지 노드의 하나 이상의 계층 레벨을 포함하고, 물체의 노드의 상기 계층 레벨은 상기 물체 자체를 근 노드로 설정하고, 각 계층 레벨에 대해 각 레벨 노드를 상기 근 노드부터 복수의 하위 레벨 노드로 분할함으로써 생성되는 방법.
- 제11 항에 있어서, 상기 방법은
상기 3D 포인트 클라우드 데이터를 스트리밍할 상기 대역폭을 상기 근 노드부터 상위 레벨의 노드에 할당하는 단계를 더 포함하고,
상기 대역폭을 할당하는 단계는 상기 근 노드의 레벨부터 시작하는 주어진 레벨의 노드 각각에 대해,
상가 각 노드의 위치를 기반으로 하여 상기 각 노드가 상기 클라이언트 장치의 상기 뷰 필드 내에 존재하는지 여부를 결정하는 단계;
상기 클라이언트 장치의 상기 뷰 필드 내에 존재하지 않는 노드보다 상기 클라이언트 장치의 상기 뷰 필드 내에 존재하는 노드에 더 많은 양의 대역폭을 할당하는 단계; 및
상기 클라이언트 장치의 상기 뷰 필드 밖에 존재하는 상기 노드 각각에 대해,
상기 각 노드가 상기 클라이언트 장치의 상기 뷰 필드로부터 상기 임계 거리 내에 존재하는지 여부를 결정하는 단계;
상기 클라이언트 장치의 상기 뷰 필드 내에 존재하는 노드보다 상기 클라이언트 장치의 상기 뷰 필드로부터 상기 임계 거리 내에 존재하는 노드에 더 적은 양의 대역폭을 할당하는 단계; 및
할당되지 않은 대역폭이 존재하는 경우, 상기 최대 레벨까지 한 레벨씩 상기 주어진 레벨을 증가시키는 단계를 포함하는 방법. - 제12 항에 있어서, 상기 방법은
상기 각 노드의 정점들 중 적어도 하나가 상기 뷰 필드 범위 내에 있는 경우, 상기 각 노드가 상기 뷰 필드 내에 있는 것으로 결정되는 결정 단계; 및
상기 노드의 모든 정점들이 상기 뷰 필드 범위 내에 없는 경우, 상기 각 노드는 상기 뷰 필드 밖에 있는 것으로 결정되는 결정 단계를 더 포함하는 방법. - 제12 항에 있어서, 상기 방법은
상기 클라이언트 장치의 상기 뷰 필드 밖에 있는 상기 물체 각각에 대해,
상기 각 물체가 상기 클라이언트 장치의 상기 뷰 필드로부터 임계 거리 내에 존재하는지 여부를 결정하는 단계; 및
상기 뷰 필드 내에 있는 상기 물체보다 상기 뷰포인트로부터 상기 임계 거리 내에 있는 물체에 더 적은 양의 상기 대역폭을 할당하는 단계를 더 포함하는 방법. - 스트리밍할 3차원(three dimensional, 3D) 콘텐츠를 식별하기 위한 프로그램 코드를 포함하는 비일시적 컴퓨터 판독 가능한 매체로서, 상기 프로그램 코드는 프로세서에 의해 실행될 때, 상기 프로세서로 하여금
상기 3D 콘텐츠에 존재하는 복수의 물체에 대한 3D 포인트 클라우드 데이터를 저장하고;
통신 인터페이스를 통해 상기 3D 콘텐츠에서 클라이언트 장치의 뷰 필드를 표시하는 정보를 클라이언트 장치로부터 수신하고;
상기 클라이언트 장치로 상기 3D 콘텐츠를 스트리밍하는 데 사용할 수 있는 대역폭의 양을 식별하고;
상기 3D 포인트 클라우드 데이터를 스트리밍할 상기 대역폭을 상기 물체의 하나 이상에 할당하도록 하고,
상기 대역폭을 할당하기 위한 상기 프로그램 코드는 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 상기 하나 이상의 물체 각각에 대해
상기 각 물체의 위치를 기반으로 하여 상기 각 물체가 상기 클라이언트 장치의 상기 뷰 필드 내에 있는지 여부를 결정하고;
상기 클라이언트 장치의 상기 뷰 필드 내에 없는 물체보다 상기 클라이언트 장치의 상기 뷰 필드 내에 적어도 부분적으로 존재하는 물체에 더 많은 양의 상기 대역폭을 할당하고;
상기 할당된 대역폭에 따라 상기 클라이언트 장치에 상기 3D 콘텐츠를 스트리밍하도록 하는 프로그램 코드를 포함하는 비일시적 컴퓨터 판독 가능한 매체.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762552094P | 2017-08-30 | 2017-08-30 | |
US62/552,094 | 2017-08-30 | ||
US16/113,855 | 2018-08-27 | ||
US16/113,855 US11290758B2 (en) | 2017-08-30 | 2018-08-27 | Method and apparatus of point-cloud streaming |
PCT/KR2018/010037 WO2019045473A1 (en) | 2017-08-30 | 2018-08-30 | METHOD AND APPARATUS FOR CONTINUOUS DIFFUSION OF POINT CLOUD |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200037442A true KR20200037442A (ko) | 2020-04-08 |
KR102602380B1 KR102602380B1 (ko) | 2023-11-16 |
Family
ID=65438038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207009218A KR102602380B1 (ko) | 2017-08-30 | 2018-08-30 | 포인트-클라우드 스트리밍을 위한 방법 및 장치(method and apparatus for point-cloud streaming) |
Country Status (5)
Country | Link |
---|---|
US (1) | US11290758B2 (ko) |
EP (1) | EP3669547B1 (ko) |
KR (1) | KR102602380B1 (ko) |
CN (1) | CN111052750B (ko) |
WO (1) | WO2019045473A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023068754A1 (ko) * | 2021-10-18 | 2023-04-27 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110163863B (zh) * | 2018-11-06 | 2022-11-04 | 腾讯科技(深圳)有限公司 | 三维物体分割方法、设备和介质 |
US10694239B1 (en) | 2018-12-12 | 2020-06-23 | Sling Media Pvt Ltd | Systems, methods, and devices for optimizing streaming bitrate based on multiclient display profiles |
WO2020189982A1 (ko) * | 2019-03-15 | 2020-09-24 | 엘지전자 주식회사 | 포인트 클라우드 데이터 처리 장치 및 방법 |
WO2020189943A1 (ko) * | 2019-03-15 | 2020-09-24 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
EP3926962A4 (en) * | 2019-03-16 | 2022-04-20 | LG Electronics Inc. | DEVICE AND METHOD FOR PROCESSING POINT CLOUD DATA |
US11825135B2 (en) * | 2019-03-20 | 2023-11-21 | Sony Group Corporation | Information processing apparatus, information processing method, reproduction processing apparatus, and reproduction processing method |
WO2020190075A1 (ko) * | 2019-03-20 | 2020-09-24 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
WO2020246689A1 (ko) * | 2019-06-05 | 2020-12-10 | 엘지전자 주식회사 | 포인트 클라우드 데이터 전송 장치, 포인트 클라우드 데이터 전송 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
WO2021025546A1 (ko) * | 2019-08-08 | 2021-02-11 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
US11363330B2 (en) | 2019-10-01 | 2022-06-14 | Samsung Electronics Co., Ltd. | Method, apparatus and computer-readable recording medium for transmitting or receiving VPCC data |
GB2590422B (en) * | 2019-12-17 | 2024-03-06 | Sony Interactive Entertainment Inc | Content generation system and method |
JP2021100222A (ja) | 2019-12-23 | 2021-07-01 | ソニーグループ株式会社 | 端末装置、アプリケーションサーバ、受信方法及び送信方法 |
US11240570B1 (en) * | 2020-10-08 | 2022-02-01 | International Business Machines Corporation | Object-based video loading |
US11800184B2 (en) | 2021-01-06 | 2023-10-24 | Tencent America LLC | Method and apparatus for media scene description |
CN116724556A (zh) * | 2021-01-06 | 2023-09-08 | Lg电子株式会社 | 点云数据发送装置和方法、点云数据接收装置和方法 |
JP2022137826A (ja) | 2021-03-09 | 2022-09-22 | 株式会社Mawari | 3dオブジェクトのストリーミング方法、装置、及びプログラム |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6118456A (en) * | 1998-04-02 | 2000-09-12 | Adaptive Media Technologies | Method and apparatus capable of prioritizing and streaming objects within a 3-D virtual environment |
CN106874409A (zh) * | 2017-01-19 | 2017-06-20 | 苏州中科图新网络科技有限公司 | 点云数据的存储方法及装置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9773343B2 (en) | 2010-12-24 | 2017-09-26 | Institute Of Automation, Chinese Academy Of Sciences | Method for real-time and realistic rendering of complex scenes on internet |
US9201495B2 (en) | 2012-04-24 | 2015-12-01 | Mobitv, Inc. | Control of perspective in multi-dimensional media |
US9846960B2 (en) | 2012-05-31 | 2017-12-19 | Microsoft Technology Licensing, Llc | Automated camera array calibration |
JP6156770B2 (ja) * | 2013-08-08 | 2017-07-05 | 国立研究開発法人産業技術総合研究所 | キシロースの発酵能が強化された酵母とその利用 |
US9396586B2 (en) | 2014-03-14 | 2016-07-19 | Matterport, Inc. | Processing and/or transmitting 3D data |
US20160198140A1 (en) | 2015-01-06 | 2016-07-07 | 3DOO, Inc. | System and method for preemptive and adaptive 360 degree immersive video streaming |
US10049495B2 (en) * | 2015-01-14 | 2018-08-14 | Hashplay Inc. | System and method for providing virtual reality content |
GB2536025B (en) | 2015-03-05 | 2021-03-03 | Nokia Technologies Oy | Video streaming method |
CN107409203A (zh) | 2015-05-27 | 2017-11-28 | 谷歌公司 | 减小用户头戴式耳机的球形视频带宽的方法和设备 |
US10484621B2 (en) | 2016-02-29 | 2019-11-19 | Gopro, Inc. | Systems and methods for compressing video content |
US10694210B2 (en) * | 2016-05-28 | 2020-06-23 | Microsoft Technology Licensing, Llc | Scalable point cloud compression with transform, and corresponding decompression |
US10223810B2 (en) | 2016-05-28 | 2019-03-05 | Microsoft Technology Licensing, Llc | Region-adaptive hierarchical transform and entropy coding for point cloud compression, and corresponding decompression |
US11297346B2 (en) | 2016-05-28 | 2022-04-05 | Microsoft Technology Licensing, Llc | Motion-compensated compression of dynamic voxelized point clouds |
CN106485772B (zh) | 2016-09-30 | 2019-10-15 | 北京百度网讯科技有限公司 | 全景切换方法及系统 |
US10712555B2 (en) * | 2016-11-04 | 2020-07-14 | Koninklijke Kpn N.V. | Streaming virtual reality video |
US10595069B2 (en) * | 2016-12-05 | 2020-03-17 | Adobe Inc. | Prioritizing tile-based virtual reality video streaming using adaptive rate allocation |
US10231014B2 (en) * | 2017-03-14 | 2019-03-12 | Futurewei Technologies, Inc. | Virtual reality (VR) video distribution using edge resources |
US10198829B2 (en) * | 2017-04-25 | 2019-02-05 | Symbol Technologies, Llc | Systems and methods for extrinsic calibration of a plurality of sensors |
-
2018
- 2018-08-27 US US16/113,855 patent/US11290758B2/en active Active
- 2018-08-30 WO PCT/KR2018/010037 patent/WO2019045473A1/en unknown
- 2018-08-30 CN CN201880056434.XA patent/CN111052750B/zh active Active
- 2018-08-30 EP EP18852191.8A patent/EP3669547B1/en active Active
- 2018-08-30 KR KR1020207009218A patent/KR102602380B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6118456A (en) * | 1998-04-02 | 2000-09-12 | Adaptive Media Technologies | Method and apparatus capable of prioritizing and streaming objects within a 3-D virtual environment |
CN106874409A (zh) * | 2017-01-19 | 2017-06-20 | 苏州中科图新网络科技有限公司 | 点云数据的存储方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023068754A1 (ko) * | 2021-10-18 | 2023-04-27 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP3669547B1 (en) | 2022-09-28 |
US20190069000A1 (en) | 2019-02-28 |
EP3669547A1 (en) | 2020-06-24 |
WO2019045473A1 (en) | 2019-03-07 |
US11290758B2 (en) | 2022-03-29 |
CN111052750A (zh) | 2020-04-21 |
EP3669547A4 (en) | 2020-10-21 |
KR102602380B1 (ko) | 2023-11-16 |
CN111052750B (zh) | 2022-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102602380B1 (ko) | 포인트-클라우드 스트리밍을 위한 방법 및 장치(method and apparatus for point-cloud streaming) | |
EP3695383B1 (en) | Method and apparatus for rendering three-dimensional content | |
AU2017232207B2 (en) | Bandwidth efficient vr video streaming | |
CN108702454B (zh) | 用于视频显示的方法、系统和计算设备 | |
US20180165830A1 (en) | Method and device for determining points of interest in an immersive content | |
CN107667534A (zh) | 在有限的带宽连接中播放球形视频 | |
KR102502794B1 (ko) | 가상 현실 데이터를 맞춤화하기 위한 방법들 및 시스템들 | |
US11595630B2 (en) | Depth codec for real-time, high-quality light field reconstruction | |
GB2557416A (en) | Prioritizing tile-based virtual reality video streaming using adaptive rate allocation | |
CN110996097B (zh) | Vr多媒体的体验质量确定方法及装置 | |
US20230319328A1 (en) | Reference of neural network model for adaptation of 2d video for streaming to heterogeneous client end-points | |
JP2020522801A (ja) | バーチャル・リアリティ・メディア・コンテンツ内に含める目的での現実世界シーンのカスタマイズされるビューの仮想化プロジェクションを生成するための方法及びシステム | |
US11570227B2 (en) | Set up and distribution of immersive media to heterogenous client end-points | |
US20230042078A1 (en) | Encoding and decoding views on volumetric image data | |
EP3564905A1 (en) | Conversion of a volumetric object in a 3d scene into a simpler representation model | |
EP4085397B1 (en) | Reference of neural network model by immersive media for adaptation of media for streaming to heterogenous client end-points | |
US12003792B2 (en) | Adaptation of 2D video for streaming to heterogenous client end-points | |
US20220182597A1 (en) | Adaptation of 2d video for streaming to heterogenous client end-points | |
Tian et al. | Quantization Parameter and Lagrange Multiplier Determination for Virtual Reality 360 Video Source Coding | |
KR20230153468A (ko) | 3d 오브젝트의 스트리밍 방법, 장치, 및 프로그램 | |
CN116916028A (zh) | 使用虚拟分辨率调整的视频流缩放 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |