KR20210158381A - 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법 - Google Patents
가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법 Download PDFInfo
- Publication number
- KR20210158381A KR20210158381A KR1020217038744A KR20217038744A KR20210158381A KR 20210158381 A KR20210158381 A KR 20210158381A KR 1020217038744 A KR1020217038744 A KR 1020217038744A KR 20217038744 A KR20217038744 A KR 20217038744A KR 20210158381 A KR20210158381 A KR 20210158381A
- Authority
- KR
- South Korea
- Prior art keywords
- region
- image
- scaled
- complexity map
- video
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 83
- 238000006243 chemical reaction Methods 0.000 title description 6
- 230000008569 process Effects 0.000 claims description 16
- 230000002123 temporal effect Effects 0.000 claims description 14
- 230000008859 change Effects 0.000 claims description 5
- 230000009471 action Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 52
- 238000012545 processing Methods 0.000 description 38
- 238000010586 diagram Methods 0.000 description 26
- 238000009877 rendering Methods 0.000 description 24
- 239000000872 buffer Substances 0.000 description 22
- 238000013507 mapping Methods 0.000 description 17
- 230000004044 response Effects 0.000 description 17
- 238000004458 analytical method Methods 0.000 description 15
- 101100122750 Caenorhabditis elegans gop-2 gene Proteins 0.000 description 10
- 239000003086 colorant Substances 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000009466 transformation Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 5
- 238000002156 mixing Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000000844 transformation Methods 0.000 description 5
- 101100476639 Caenorhabditis elegans gop-3 gene Proteins 0.000 description 4
- 230000001186 cumulative effect Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 238000003672 processing method Methods 0.000 description 4
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 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
- 230000008901 benefit Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 101000946275 Homo sapiens Protein CLEC16A Proteins 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 102100034718 Protein CLEC16A Human genes 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000020169 heat generation Effects 0.000 description 1
- 208000013057 hereditary mucoepithelial dysplasia Diseases 0.000 description 1
- 238000007654 immersion Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
-
- H04L65/607—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/194—Transmission of image signals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/147—Digital output to display device ; Cooperation and interconnection of the display device with other functional units using display panels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/391—Resolution modifying circuits, e.g. variable screen formats
-
- H04L65/602—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/752—Media network packet handling adapting media to network capabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/762—Media network packet handling at the source
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/111—Transformation of image signals corresponding to virtual viewpoints, e.g. spatial image interpolation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/161—Encoding, multiplexing or demultiplexing different image signal components
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
-
- 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/698—Control of cameras or camera modules for achieving an enlarged field of view, e.g. panoramic image capture
-
- H04N5/23238—
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2310/00—Command of the display device
- G09G2310/04—Partial updating of the display screen
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/04—Changes in size, position or resolution of an image
- G09G2340/045—Zooming at least part of an image, i.e. enlarging it or shrinking it
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2350/00—Solving problems of bandwidth in display systems
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2354/00—Aspects of interface with display user
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/121—Frame memory handling using a cache memory
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/18—Use of a frame buffer in a display terminal, inclusive of the display panel
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2370/00—Aspects of data communication
- G09G2370/02—Networking aspects
- G09G2370/022—Centralised management of display operation, e.g. in a server instead of locally
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/14—Display of multiple viewports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Databases & Information Systems (AREA)
- Information Transfer Between Computers (AREA)
- Controls And Circuits For Display Device (AREA)
- Processing Or Creating Images (AREA)
- User Interface Of Digital Computer (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
비디오 서버는 구체 이미지 프레임 데이터를 클라이언트 디바이스로부터 수신한 시청 각도에 대응되는 제1 영역이 중간 영역에 배치된 이퀴렉탱귤러 프레임 데이터로 변환하도록 구성된다. 상기 비디오 서버는 제1 해상도로 제1 영역을 스케일링하고, 상기 제1 영역에 인접한 상기 이퀴렉탱귤러 이미지의 제2 영역을 제1 해상도보다 낮은 제2 해상도로 스케일링하고, 상기 제1 영역에 인접하고 상기 제2 영역에 인접하지 않은 상기 이퀴렉탱귤러 이미지의 제 3 영역을 상기 제1 해상도보다 낮은 제3 해상도로 스케일링하며, 상기 스케일링 된 제 2 영역과 상기 스케일링 된 제 3 영역이 각각 인접하도록 상기 스케일링 된 제 1 영역, 상기 스케일링 된 제 2 영역 및 상기 스케일링 된 제 3 영역을 재배치하도록 더 구성된다. 그 결과, 리포맷팅 된 이퀴렉탱귤러 이미지 프레임 데이터가 생성된다.
Description
본 발명은 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법에 관한 것이다. 보다 자세하게는, 본 발명은 가상 현실(virtual reality; VR) 비디오 데이터에 대한 다운스케일링(downscaling), 리포맷팅(reformatting), 인코딩(encoding) 및 스트리밍(streaming)을 수행하는 시스템 및 방법에 관한 것이다.
가상 현실(virtual reality; VR) 비디오 콘텐츠는 일반적으로 360도 비디오 데이터를 제공하기 위해 매우 높은 해상도를 갖는다. 예를 들어, 360도 비디오 데이터에는 초당 프레임(frame per second; FPS)이 30 ~ 60이고, 2K(2560x1440) 또는 4K(3840x1920) 이상의 고해상도를 갖는 UHD(ultra high definition) 비디오 데이터가 포함될 수 있다.
VR 비디오 스트리밍은 전체 프레임 데이터(e.g. H.264/AAC 등의 압축된 미디어 포맷의 데이터)를 클라이언트 디바이스(e.g. 스마트폰 또는 헤드 마운트 디스플레이(head mount display))로 전송하고, 클라이언트 디바이스에서 구체 이미지 프레임(spherical image frame)을 렌더링(rendering) 함으로써 구현될 수 있다. 이러한 고해상도 데이터 전송 및 렌더링 방법에 대한 개선은 여전히 요구된다.
본 발명이 해결하고자 하는 기술적 과제는, 가상 현실 비디오의 처리 및 스트리밍 성능을 향상시킬 수 있는 가상 현실 비디오 변환 및 스트리밍 방법과 상기 방법을 수행하는 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상술한 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 가상 현실 비디오 처리 시스템은, 클라이언트 디바이스로부터 제1 FOV(field of view)에 관한 제1 정보를 수신하는 통신 서버, 상기 제1 정보를 이용하여 인코딩(encoding) 된 제1 이퀴렉탱귤러 이미지를 생성하는 일련의 동작을 수행하는 비디오 서버 및 상기 인코딩 된 제1 이퀴렉탱귤러 이미지를 상기 클라이언트 디바이스로 스트리밍하는 스트리밍 서버를 포함할 수 있다. 이때, 상기 통신 서버, 상기 비디오 서버 및 상기 스트리밍 서버 각각은 프로세서에 의해 구현되고, 상기 비디오 서버는, 제1 구체 이미지를 변환하여 제1 이퀴렉탱귤러 이미지 - 상기 제1 이퀴렉탱귤러 이미지의 중간 영역을 가리키는 제1 영역에 상기 제1 FOV에 대응되는 이미지가 배치됨 - 를 생성하는 제1 동작, 상기 제1 이퀴렉탱귤러 이미지의 상기 제1 영역을 제1 해상도로 스케일링(scaling)하는 제2-1 동작, 상기 제1 영역에 인접한 제2 영역을 제1 해상도보다 낮은 제2 해상도로 스케일링하는 제2-2 동작, 상기 제1 영역에 인접하고 상기 제2 영역에 인접하지 않은 제3 영역을 상기 제1 해상도보다 낮은 제3 해상도로 스케일링하는 제2-3 동작, 상기 스케일링 된 제1 영역, 상기 스케일링 된 제2 영역 및 상기 스케일링 된 제3 영역이 인접하도록 재배치를 수행하여 리포맷팅(reformatting) 된 제1 이퀴렉탱귤러 이미지를 생성하는 제3 동작 및 상기 리포맷팅 된 제1 이퀴렉탱귤러 이미지에 대한 인코딩을 수행하여 상기 인코딩 된 제1 이퀴렉탱귤러 이미지를 생성하는 제4 동작을 수행할 수 있다.
상술한 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 가상 현실 비디오 처리 방법은, 통신 서버, 비디오 서버 및 스트리밍 서버를 포함하는 가상 현실 비디오 처리 시스템에 의해 수행되는 가상 현실 비디오 처리 방법에 있어서, 상기 통신 서버가, 클라이언트 디바이스로부터 제1 FOV에 관한 제1 정보를 수신하는 제1 단계, 상기 비디오 서버가, 제1 구체 이미지를 제1 이퀴렉탱귤러 이미지로 변환하되, 상기 제1 이퀴렉탱귤러 이미지의 중간 영역을 가리키는 제1 영역에 상기 제1 FOV에 대응되는 이미지가 배치되는 것인, 제2 단계, 상기 비디오 서버가, 상기 제1 이퀴렉탱귤러 이미지의 상기 제1 영역을 제1 해상도로 스케일링하는 제3-1 단계, 상기 비디오 서버가, 상기 제1 영역에 인접한 제2 영역을 상기 제1 해상도보다 낮은 제2 해상도로 스케일링하는 제3-2 단계, 상기 비디오 서버가, 상기 제1 영역에 인접하고 상기 제2 영역에 인접하지 않는 제3 영역을 상기 제1 해상도보다 낮은 제3 해상도로 스케일링하는 제3-3 단계, 상기 비디오 서버가, 상기 스케일링 된 제1 영역, 상기 스케일링 된 제2 영역 및 상기 스케일링 된 제3 영역에 대한 재배치를 수행하여 리포맷팅 된 제1 이퀴렉탱귤러 이미지를 생성하되, 상기 스케일링 된 제2 영역과 상기 스케일링 된 제3 영역이 서로 인접하도록 재배치되는 것인, 제4 단계, 상기 비디오 서버가, 상기 리포맷팅 된 제1 이퀴렉탱귤러 이미지에 대한 인코딩을 수행하여 인코딩 된 제1 이퀴렉탱귤러 이미지를 생성하는 제5 단계 및 상기 스트리밍 서버가, 상기 인코딩 된 제1 이퀴렉탱귤러 이미지를 상기 클라이언트 디바이스로 스트리밍하는 제6 단계를 포함할 수 있다.
상술한 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 가상 현실 비디오 스트리밍 시스템은, 메모리, 복수의 시청 각도(view angle)에 대응되는 복수의 파일을 생성하고, 상기 복수의 파일을 상기 메모리에 저장하되, 상기 복수의 파일 각각은 동일한 시청 각도로부터 동일한 FOV(field of view)를 갖는 비디오 스트림을 형성하는 복수의 GOP(group of picture)를 포함하는 것인, 비디오 서버, 클라이언트 디바이스로부터 시청 각도에 관한 정보를 수신하는 통신 서버 및 상기 클라이언트 디바이스로 비디오 스트림을 스트리밍하는 스트리밍 서버를 포함할 수 있다. 이때, 상기 스트리밍 서버는, 상기 통신 서버에 의해 제1 시청 각도에 관한 제1 정보가 수신됨에 응답하여, 상기 복수의 파일 중에서 상기 제1 시청 각도에 가장 가까운 시청 각도에 대응되는 제1 비디오 스트림이 포함된 제1 파일을 선정하고, 상기 제1 파일을 이용하여 상기 제1 비디오 스트림을 상기 클라이언트 디바이스로 스트리밍하며, 상기 제1 비디오 스트림이 스트리밍되는 동안, 상기 통신 서버에 의해 제2 시청 각도에 관한 제2 정보가 수신됨에 응답하여, 상기 복수의 파일 중에서 상기 제2 시청 각도에 가장 가까운 시청 각도에 대응되는 제2 비디오 스트림이 포함된 제2 파일을 선정하고, 스트리밍 소스를 상기 제1 파일에서 상기 제2 파일로 전환하며, 상기 제2 파일을 이용하여 상기 제2 비디오 스트림을 상기 클라이언트 디바이스로 스트리밍할 수 있다.
상술한 본 발명의 실시예에 따르면, 시청자가 집중하지 않는 영역에 대한 다운스케일링이 수행될 수 있다. 이에 따라, 가상 현실 비디오 스트리밍에 요구되는 데이터 전송 비용과 대역폭 요구량이 크게 절감될 수 있다.
또한, 스트리밍 되는 데이터를 절약함으로써 클라이언트 디바이스(e.g. 스마트폰)의 전력 소모와 발열을 줄일 수 있다.
또한, 종래의 스트리밍 방식으로 재생이 불가능한 고해상도의 영상이 재생될 수 있고, 이에 따라 가상 현실 비디오를 감상하는 사용자의 몰입감 및 만족도가 향상될 수 있다.
또한, 더 적은 수의 클라우드 서버를 이용하여 스트리밍 서비스 제공이 가능하기 때문에, 서비스 비용이 크게 절감될 수 있다.
또한, 요청된 시청 각도에 기초하여 프레임의 콘텐츠가 이미지의 중간에 위치하도록 이동된다. 이러한 방식으로 데이터 전송 크기를 줄임과 동시에 VR 비디오 포맷이 최적화될 수 있다.
또한, 다운스케일링이 수행된 이후에, 리포맷팅 된 이퀴렉탱귤러 프레임 데이터는 이퀴렉탱귤러 포맷으로 유지될 수 있고, 이퀴렉탱귤러 포맷으로 클라이언트 디바이스로 전송 될 수 있다. 이에 따라, 클라이언트 디바이스에서의 디코딩 및 렌더링 처리가 단순화될 수 있다.
또한, 리포맷팅 된 이미지를 재구성하지 않고 구체 이미지로 형성할 수 있다. 이에 따라, 재구성에 소요되는 GPU 처리 비용을 절약할 수 있다.
또한, 현재의 시야각(Field of View; FOV)에 대응되는 비디오 부분만을 전송함으로써 네트워크 대역폭 요구량이 크게 절감될 수 있다.
또한, FOV가 반영된 비디오 부분만을 전송함으로써 낮은 데이터 전송 속도로 스트리밍 서비스를 제공할 수 있다. 그렇게 함으로써, 데이터 버퍼링을 제거하고 클라이언트 디바이스의 배터리 소모를 감소시킬 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상술한 본 발명 또는 상술한 본 발명과 관련된 목적, 특징 및/또는 이점은 아래의 도면과 함께 후술할 상세한 설명을 참조하면 더욱 명확하게 이해될 것이다.
도 1은 본 발명의 일부 실시예에 따른 클라이언트 디바이스 및 VR 비디오 스트리밍 시스템을 포함하는 네트워크 환경의 블록도이다.
도 2는 예시적인 컴퓨팅 시스템의 블록도이다.
도 3은 예시적인 VR 비디오 스트리밍 시스템의 블록도이다.
도 4는 이퀴렉탱귤러 이미지 프레임과 구체 이미지 프레임 사이의 예시적인 매핑 관계를 도시한다.
도 5는 이퀴렉탱귤러 이미지 프레임과 이에 대응되는 구체 이미지 프레임의 예시도이다.
도 6, 도 7 및 도 8은 본 발명의 일부 실시예에 따라, 예시적인 VR 비디오 처리 시스템에서 수행되는 예시적인 다운스케일링 리포맷팅 방법의 동작을 나타내는 흐름도이다.
도 9, 도 10, 도 11 및 도 12는 본 발명의 일부 실시예에 따라 예시적인 VR 비디오 처리 시스템에서 이미지 프레임을 다운스케일링 및 리포맷팅하는 방법의 예시도이다.
도 13, 도 14 및 도 15는 본 발명의 일부 실시예에 따라, 예시적인 VR 비디오 처리 시스템에서 수행되는 다운스케일링 된 영역의 너비 및 높이를 결정하는 예시적인 방법을 설명하기 위한 도면이다.
도 16, 도 17, 도 18, 도 19 및 도 20은 본 발명의 일부 실시예에 따라, 예시적인 VR 비디오 처리 시스템에서 재배치된(또는 리포맷팅 된) 영역들 사이의 경계에서 아티팩트를 감소시키는 예시적인 방법을 설명하기 위한 도면이다.
도 21, 도 22 및 도 23은 본 발명의 일부 실시예에 따라, 예시적인 VR 클라이언트 디바이스에서 수행되는 예시적인 비디오 프로세싱 및 렌더링 방법의 동작을 도시하는 흐름도이다.
도 24, 도 25 및 도 26은 본 발명의 일부 실시예에 따라, 예시적인 VR 클라이언트 디바이스에서 수행되는 비디오 프로세싱 및 렌더링 방법을 설명하기 위한 도면이다.
도 27, 도 28 및 도 29는 본 발명의 일부 실시예에 따라, 예시적인 VR 비디오 처리 시스템에서 수행되는 예시적인 스트리밍 방법의 동작을 나타내는 흐름도이다.
도 30 및 도 31은 본 발명의 일부 실시예에 따라, 예시적인 VR 비디오 처리 시스템에서 수행되는 예시적인 비디오 처리 방법을 설명하기 위한 도면이다.
도 1은 본 발명의 일부 실시예에 따른 클라이언트 디바이스 및 VR 비디오 스트리밍 시스템을 포함하는 네트워크 환경의 블록도이다.
도 2는 예시적인 컴퓨팅 시스템의 블록도이다.
도 3은 예시적인 VR 비디오 스트리밍 시스템의 블록도이다.
도 4는 이퀴렉탱귤러 이미지 프레임과 구체 이미지 프레임 사이의 예시적인 매핑 관계를 도시한다.
도 5는 이퀴렉탱귤러 이미지 프레임과 이에 대응되는 구체 이미지 프레임의 예시도이다.
도 6, 도 7 및 도 8은 본 발명의 일부 실시예에 따라, 예시적인 VR 비디오 처리 시스템에서 수행되는 예시적인 다운스케일링 리포맷팅 방법의 동작을 나타내는 흐름도이다.
도 9, 도 10, 도 11 및 도 12는 본 발명의 일부 실시예에 따라 예시적인 VR 비디오 처리 시스템에서 이미지 프레임을 다운스케일링 및 리포맷팅하는 방법의 예시도이다.
도 13, 도 14 및 도 15는 본 발명의 일부 실시예에 따라, 예시적인 VR 비디오 처리 시스템에서 수행되는 다운스케일링 된 영역의 너비 및 높이를 결정하는 예시적인 방법을 설명하기 위한 도면이다.
도 16, 도 17, 도 18, 도 19 및 도 20은 본 발명의 일부 실시예에 따라, 예시적인 VR 비디오 처리 시스템에서 재배치된(또는 리포맷팅 된) 영역들 사이의 경계에서 아티팩트를 감소시키는 예시적인 방법을 설명하기 위한 도면이다.
도 21, 도 22 및 도 23은 본 발명의 일부 실시예에 따라, 예시적인 VR 클라이언트 디바이스에서 수행되는 예시적인 비디오 프로세싱 및 렌더링 방법의 동작을 도시하는 흐름도이다.
도 24, 도 25 및 도 26은 본 발명의 일부 실시예에 따라, 예시적인 VR 클라이언트 디바이스에서 수행되는 비디오 프로세싱 및 렌더링 방법을 설명하기 위한 도면이다.
도 27, 도 28 및 도 29는 본 발명의 일부 실시예에 따라, 예시적인 VR 비디오 처리 시스템에서 수행되는 예시적인 스트리밍 방법의 동작을 나타내는 흐름도이다.
도 30 및 도 31은 본 발명의 일부 실시예에 따라, 예시적인 VR 비디오 처리 시스템에서 수행되는 예시적인 비디오 처리 방법을 설명하기 위한 도면이다.
상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 및/또는 동작은 하나 이상의 다른 구성 요소, 단계 및/또는 동작의 존재 또는 추가를 배제하지 않는다.
이하, 도면들을 참조하여 본 발명의 몇몇 실시예들을 설명한다.
"통신 서버(communication server)", "비디오 서버(video server)" 및 "스트리밍 서버(streaming server)"는 물리적으로 서로 다른 서버로 구현되거나, 동일한 물리적 서버에서 기능적으로 구분되는 서로 다른 기능 요소로 구현될 수 있다.
본 발명은 가상 현실(virtual reality; VR) 비디오 변환 및 스트리밍을 위한 시스템 및 방법에 관한 것으로, 보다 자세하게는 VR 비디오 데이터를 다운스케일링(downscaling), 리포맷팅(reformatting) 및 인코딩(encoding) 하는 시스템 및 방법에 관한 것이다. 고품질의 VR 비디오/오디오 콘텐츠(e.g. 360도 뷰 비디오 데이터)는 고해상도(e.g. 2K(2560x1440), 4K(3840x2160 또는 3840x1920) 등)이기 때문에 데이터 용량이 매우 크다. VR 비디오 스트리밍은 비디오 데이터(e.g. H.264/AAC 등의 압축된 미디어 포맷) 전체를 클라이언트 디바이스(e.g. 스마트폰 또는 헤드 마운트 디스플레이)로 전송하고, 클라이언트 디바이스에서 구체 이미지(spherical image)를 렌더링(rendering) 함으로써 구현될 수 있다. 예를 들어, 도 4를 참조하면, VR 비디오 스트리밍은 이퀴렉탱귤러 이미지 프레임(410, equirectangular image frame)의 전체 데이터를 클라이언트 디바이스(client device)로 전송함으로써 구현될 수 있다. 그러면, 클라이언트 디바이스는 이퀴렉탱귤러 이미지 프레임(410)의 상단 영역(421), 중간 영역(422) 및 하단 영역(423)을 구체 이미지 프레임(430)의 상단 부분(431), 중간 부분(432) 및 하단 부분(433)에 각각 매핑함으로써 이퀴렉탱귤러 이미지 프레임(410)에 대응되는 구체 이미지 프레임(430)을 렌더링 할 수 있다. 이 경우, 360 VR 비디오는 렌더링 된 구체 이미지 프레임에서 작은 원형 부분만 화면에 표시하면서 이퀴렉탱귤러 이미지 프레임의 상단 영역 및 하단 영역이 전체 영역의 상당 부분(e.g. 50 %)을 차지하는 방식으로 구성된다(구체 이미지 프레임(430)의 상단 부분(431) 및 하단 부분(433) 참조). 도 5는 이퀴렉탱귤러 이미지 프레임과 이에 대응되는 구체 이미지 프레임의 예를 도시한다. 도 5에 도시된 바와 같이, 렌더링 된 구체 이미지 프레임(e.g. 도 5의 우측 그림에서 부분(406))에서 작은 원형의 상단 부분만 화면에 표시하는 동안, 이퀴렉탱귤러 이미지 프레임의 상단 영역(e.g. 도 5의 좌측 그림에서 부분(405))이 전체 영역의 상당 부분을 차지한다. 게다가, VR 비디오의 시청자는 대게 중간 영역(e.g. 수직 고도 -45도 ~ +45도에 해당하는 부분)에 훨씬 더 집중한다. 따라서, 이러한 360 VR 비디오 데이터 전송 및 렌더링 방법에서 이퀴렉탱귤러 이미지 프레임의 상단 영역 및 하단 영역에 대한 해상도를 감소시키는 것이 여전히 바람직하다.
일부 실시예에서, 프레임 상에서 주요하지 않은 다른 영역(e.g. 상단 및 하단 영역)이 다운스케일링(downscaling) 되는 동안, 해당 프레임의 주요 영역(e.g. 중간 영역)의 해상도는 원본 소스(e.g. 4K(3840x2160) 소스)와 1:1 품질로 유지 된다. 일부 실시예에서, 서버는 클라이언트 디바이스로부터 제1 시야각(FOV; field of view) 또는 시청자(viewer)의 시청 각도(view angle)에 관한 제1 정보를 수신한다. 예를 들어, 시청 각도는, 도 9에 도시된 바와 같이, 시청자의 시선(LOS; line of sight)에 대한 방향을 가리키는 기준 벡터 또는 방향(e.g. 도 9에서 0도 방향)으로부터 방위각(e.g. 도 9에서 α도)으로 정의될 수 있다. 일부 실시예에서, FOV는 시청자가 클라이언트 디바이스로 볼 수 있는 2 개의 방위각 사이의 범위(e.g. 도 9에서 3α도(n-1)α도 사이의 범위)로 정의될 수 있다. 오프-FOV(off-field-of-view)는 시청자가 클라이언트 디바이스로 볼 수 없는 방위각 범위(e.g. 도 9에서 FOV 범위 이외의 방위각 범위)로 정의될 수 있다. 일부 실시예에서, FOV는 시청자가 클라이언트 디바이스로 볼 수 있는 2 개의 수직 또는 고도 각 사이의 범위(e.g. 고도 -45도와 +45도 사이의 범위)로 정의될 수 있다. 유사하게, 오프-FOV는 시청자가 클라이언트 디바이스로 볼 수 없는 수직 또는 고도 각 사이의 범위(e.g. FOV에 해당하는 수직 또는 고도 각 사이의 범위 이외의 범위)로 정의될 수 있다. 일부 실시예에서, 서버는 제1 구체 이미지의 프레임 데이터를 제1 이퀴렉탱귤러 이미지의 프레임 데이터로 변환한다. 이때, 제1 이퀴랙탱귤러 이미지의 중간 영역이 제1 FOV에 대응되는 제1 영역이 될 수 있다. 일부 실시예에서, 서버는 제1 이퀴렉탱귤러 이미지의 제1 영역(e.g. 중간 영역)을 제1 해상도(e.g. 원본 소스 비디오와 동일한 해상도)로 스케일링(scaling) 한다. 일부 실시예에서, 서버는 제1 해상도보다 낮은 제2 해상도로 제1 영역에 인접한 제1 이퀴렉탱귤러 이미지의 제2 영역(e.g. 상단 영역)을 스케일링(또는 다운스케일링) 한다. 일부 실시예에서, 서버는 또한 제1 영역(e.g. 중간 영역)에 인접하고 제2 영역에 인접하지 않은 제1 이퀴렉탱귤러 이미지의 제3 영역(e.g. 하단 영역)을 제1 해상도보다 낮은 제3 해상도로 스케일링(또는 다운스케일링) 한다. 일부 실시예에서, 서버는 오프-FOV 영역(e.g. 도 9에 도시된 오프-FOV 영역에 포함된 영역)을 제1 해상도보다 낮은 제4 해상도로 다운스케일링 한다. 일부 실시예에서, 오프-FOV 영역은 제1 이퀴렉탱귤러 이미지의 중간 FOV 영역을 기준으로 좌측 영역 또는 우측 영역이 될 수 있다. 이와 같은 다운스케일링 방법에 의하면, 이퀴렉탱귤러의 상단 부분 또는 하단 영역, 좌측 또는 우측 영역의 해상도가 감소될 수 있다. 이에 따라, VR 비디오에 관한 데이터 전송 시 데이터 전송량이 크게 절약될 수 있다.
일부 실시예에서, 스케일링 된 제1 영역(e.g. 중간 또는 FOV 영역), 스케일링 된 제2 영역(e.g. 다운스케일링 된 상단 영역) 및 스케일링 된 제3 영역(e.g. 다운스케일링 된 하단 영역) 중에서 스케일링 된 제2 영역과 스케일링 된 제3 영역이 서로 인접하도록 리포맷팅(reformatting) 된 제1 이퀴렉탱귤러 이미지 프레임 데이터가 생성된다. 일부 실시예에서, 서버는 리포맷팅 된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 인코딩하여 인코딩 된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 형성한다. 일부 실시예에서, 서버는 인코딩 된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 클라이언트 디바이스로 스트리밍 한다. 이와 같은 리포맷팅 방법에 의하면, 다운스케일링이 수행된 이후에, 리포맷팅 된 이퀴렉탱귤러 프레임 데이터는 이퀴렉탱귤러 포맷으로 유지될 수 있고, 이퀴렉탱귤러 포맷으로 클라이언트 디바이스로 전송 될 수 있다. 이에 따라, 클라이언트 디바이스에서의 디코딩(decoding) 및 렌더링 처리가 단순화될 수 있다.
도 1은 VR 비디오 스트리밍 시스템(100) 및 클라이언트 디바이스(200A, 200B) 및 VR 콘텐츠 서버(750)로 구성되는 예시적인 네트워크 환경(1000)의 블록도이다. 개략적으로 살펴보면, 도시된 네트워크 환경은 네트워크 노드(e.g. 클라이언트 디바이스, VR 비디오 스트리밍 시스템)를 상호 연결하는 네트워크(650)와 네트워크 노드(e.g. VR 비디오 스트리밍 시스템, VR 콘텐츠 서버)를 상호 연결하는 네트워크(650')를 포함할 수 있다. 일부 실시예에서, 네트워크(650)는 네트워크(650')와 동일한 네트워크로 구현될 수 있다. 보다 자세하게는, 도 1에 도시된 바와 같이, 네트워크(650 또는 650')는 참여하는 디바이스 간의 인터랙션(interaction)을 용이하게 하는 네트워크이다. 예시적인 네트워크(650 또는 650')는 인터넷(internet)이다. 그러나, 다른 실시예에서, 네트워크(650)는 데이터 센터 내의 로컬 네트워크(local network), 네트워크 패브릭(network fabric), 또는 임의의 다른 로컬 영역 또는 광역 네트워크와 같은 또 다른 네트워크일 수 있다. 네트워크(650 또는 650')는 다수의 연결된 서브 네트워크 또는 자율적인 네트워크로 구성될 수 있다. 네트워크(650 또는 650')는 기업의 인트라넷과 같은 LAN(local area network), MAN(metropolitan area network), WAN(wide area network), 인터넷과 같은 네트워크 간 네트워크, 또는 애드 혹(ad hoc) WiFi P2P(peer-to-peer) 네트워크와 같은 P2P 네트워크일 수 있다. 임의의 유형 및/또는 형태의 데이터 네트워크 및/또는 통신 네트워크가 네트워크(650 또는 650')에 이용될 수 있다. 또한, 네트워크(650 또는 650')는 공용 네트워크(public network), 사설 네트워크(private network) 또는 공용 및 사설 네트워크의 조합일 수도 있다 일반적으로, 네트워크(650 또는 650')는 컴퓨팅 장치들, 예를 들어 클라이언트 디바이스(200A, 200B), VR 비디오 스트리밍 시스템(100)과 VR 콘텐츠 서버(750), 사이에서 정보를 전달하는데 이용된다.
도 1을 참조하면, VR 비디오 스트리밍 시스템(100)은 비디오 서버(120) 및 스트리머(180)를 포함한다. 일부 실시예에서, 비디오 서버(120)는 VR 비디오 데이터를 로컬에(e.g. 비디오 파일로) 저장하거나 VR 콘텐츠 서버(750)로부터 스트리밍 비디오 데이터를 수신한다. 일부 실시예에서, 스트리머(180)는 통신 서버(130)와 스트리밍 서버(140)를 포함한다. 일부 실시예에서, 통신 서버(130)는 스트리밍 시스템(100)의 서비스에 관한 정보(e.g. 사용자 로그인, VR 비디오 콘텐츠 선택, 저-지연 비디오 스트리밍, FOV에 관한 정보 등)를 각각의 클라이언트 디바이스(200A, 200B)와 통신한다. 일부 실시예에서, 스트리밍 서버(140)는 VR 비디오 프레임 데이터를 각 클라이언트 디바이스(200A, 200B)로 스트리밍한다. 일부 실시예에서, VR 비디오 스트리밍 시스템(100)은 도 2에 도시된 바와 같은 컴퓨팅 시스템(300)의 구성과 유사한 구성을 갖는다. 컴퓨팅 시스템(300)은 도 2를 참조하여 후술하도록 한다. 다만, 도 2에 도시된 컴퓨팅 시스템(300)의 모든 구성 요소가 도 1에 도시된 VR 비디오 스트리밍 시스템(100)의 일부 실시예에 존재할 필요는 없다. 일부 실시예에서, 비디오 서버(120) 및 스트리머(180)(그리고 스트리밍 서버(140)) 각각은 도 2에 도시된 컴퓨팅 시스템(300)의 구성과 유사한 구성을 갖는다. 그래서, 비디오 서버(120), 스트리머(180) 및 클라이언트 디바이스(200A, 200B)는 네트워크(650)와 유사한 네트워크를 통해 서로 통신할 수 있다. 이러한 구성에 의해, 비디오 서버(120)에 의한 비디오 프로세싱 및 스트리머(180)에 의해 제공되는 스트리밍 서비스는 개별적으로(e.g. 개별적인 물리 서버에서) 수행될 수 있다. 일부 실시예에서, 스트리머(180)는 클라이언트 디바이스가 비디오 서버(120)와의 통신을 통해 자신의 비디오 스트림을 제공할 수 있도록 클라이언트 디바이스(200A 및 200B)에 포함될 수 있다.
다시 도 1을 참조하면, 각각의 클라이언트 디바이스(200A, 200B)는 VR 비디오 스트리밍 시스템(100)으로부터 비디오 스트리밍 데이터를 수신할 수 있다. 보다 자세하게는, 클라이언트 디바이스(200A, 200B)는 스트리머(180)의 스트리밍 서버(140)로부터 비디오 스트리밍 데이터를 수신할 수 있다. 일부 실시예에서, 각각의 클라이언트 디바이스(200A, 200B)는 디스플레이(e.g. HMD(head mounted display), 광학 HMD), 입력 장치(e.g. 카메라, 헤드셋) 및 센서(e.g. 모션 센서, 위치/방향 센서, 모션 시뮬레이터, 제스처 추적 시스템 등)를 가진 장치일 수 있다. 일부 실시예에서, 클라이언트 디바이스(200A, 200B) 각각은 또한 VR 비디오 스트리밍 시스템(100)의 서비스에 관련된 정보를 교환하기 위해 통신 서버(130)와 통신할 수 있다. 예를 들어, 각각의 클라이언트 디바이스(200A, 200B)는 통신 서버(130)에 방위각 및 피치각을 가리키는 시청 각도 데이터의 형태로 사용자의 현재 FOV를 제공한다. 일부 실시예에서, 클라이언트 디바이스(200A, 200B)는 도 2에 도시된 바와 같은 컴퓨팅 시스템(300)의 구성과 유사한 구성을 갖는다. 컴퓨팅 시스(300)은 도 2를 참조하여 상세하게 설명하도록 한다. 다만, 도 2에 도시된 컴퓨팅 시스템(300)의 모든 구성 요소가 도 2에 도시된 클라이언트 디바이스(200A, 200B)의 일부 실시예에 모두 존재할 필요는 없다.
도 2는 예시적인 컴퓨팅 시스템(300)의 블록도이다. 예시적인 컴퓨팅 시스템(300)은 예시적인 실시예에 따라 본 명세서에 기재된 컴퓨터 구성 요소를 구현하는데 용도로 적합하다. 개략적으로 살펴보면, 컴퓨팅 시스템(300)은 명령(instruction)에 따른 동작을 수행하기위한 적어도 하나의 프로세서(310)및 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스(360 또는 320)를 포함한다. 컴퓨팅 시스템(300)은 또한 이하에서 후술되는 바와 같이 적어도 하나의 GPU(370, graphic processing unit) 및 비디오 메모리(380)를 포함한다.
도 2를 참조하면, 예시적인 컴퓨팅 시스템(300)은 통신 시스템(340)(e.g. 버스)을 통해 메모리(360)와 통신하는 하나 이상의 프로세서(310), 네트워크(미도시)에 연결하기 위한 네트워크 인터페이스 포트를 갖는 적어도 하나의 네트워크 인터페이스 컨트롤러(330) 및 I/O(input/output) 컴포넌트(350)와 같은 기타 컴포넌트를 포함할 수 있다. 일반적으로, 프로세서(들)(310)는 메모리로부터 수신된 명령들(또는 컴퓨터 프로그램)을 실행한다. 도시된 프로세서(들)(310)는 캐시 메모리(320)를 포함하거나 캐시 메모리(320)와 직접적으로 연결된다. 일부 예시에서, 명령들은 메모리(360)에서 읽어와 캐시 메모리(320)에 적재되고 캐시 메모리(320)로부터 프로세서(310)에 의해 실행된다.
보다 자세하게는, 프로세서(들)(310)는 예를 들어 메모리(360) 또는 캐시(320)로부터 인출된 명령들과 같은 명령들을 처리하는 임의의 논리 회로일 수 있다. 많은 실시예에서, 프로세서(들)(310)는 마이크로 프로세서 유닛(micro processor unit) 또는 특수 목적의 프로세서가 될 수 있다. 컴퓨팅 장치(300)는 본 명세서에 설명된 바와 같이 동작할 수 있는 임의의 프로세서 또는 프로세서들의 집합에 기반하여 구현될 수 있다. 프로세서(들)(310)는 싱글-코어(single-core) 또는 멀티-코어(multi-core) 프로세서(들)일 수 있다. 프로세서(들)(310)는 다수의 별개의 프로세서일 수 있다.
메모리(360)는 컴퓨터 판독 가능 데이터를 저장하기에 적합한 임의의 장치일 수 있다. 메모리(360)는 고정식 저장 장치 또는 착탈식 저장 매체를 판독하는 장치일 수 있다. 메모리(360)는 예를 들어 모든 유형의 비휘발성 메모리(non-volatile memory), 매체 및 메모리 장치, 반도체 메모리 장치(e.g. EPROM, EEPROM, SDRAM 및 플래시 메모리 장치), 자기 디스크, 광자기 디스크 및 광 디스크(e.g. CD ROM, DVD -ROM 또는 Blu-Ray® 디스크)이 될 수 있다. 컴퓨팅 시스템(300)은 임의의 수의 메모리 장치(360)를 가질 수 있다.
캐시 메모리(320)는 일반적으로 빠른 판독 시간을 위해 프로세서(들)(310)에 근접하여 배치된 컴퓨터 메모리의 한 유형이다. 일부 실시예에서, 캐시 메모리(320)는 프로세서(들)(310)의 일부이거나 동일한 칩(chip) 상에 존재한다. 일부 실시예에서, L2 및 L3 캐시 레이어와 같이 다수 레벨의 캐시(320)가 존재할 수 있다.
네트워크 인터페이스 컨트롤러(330)는 네트워크 인터페이스(네트워크 인터페이스 포트와 혼용되어 사용될 수 있음)를 통해서 데이터 교환을 제어한다. 네트워크 인터페이스 컨트롤러(330)는 네트워크 통신을 위한 OSI 모델의 물리 및 데이터 링크 레이어를 처리한다. 일부 실시예에서, 네트워크 인터페이스 컨트롤러(330)는 프로세서(310)의 작업 중 일부는 하나 이상의 프로세서(들)(310)에 의해 처리된다. 일부 실시예에서, 네트워크 인터페이스 컨트롤러(330)는 프로세서(310)의 일부일 수 있다. 일부 실시예에서, 컴퓨팅 시스템(300)은 단일 네트워크 인터페이스 컨트롤러(330)에 의해 제어되는 다수의 네트워크 인터페이스를 포함한다. 일부 실시예에서, 다수의 네트워크 인터페이스 컨트롤러(330)를 포함한다. 일부 실시예에서, 각각의 네트워크 인터페이스는 물리적 네트워크 링크(e.g. cat-5 이더넷 링크)에 대한 접속 점(connection point)이다. 일부 실시예에서, 네트워크 인터페이스 컨트롤러(330)는 무선 네트워크 접속을 지원하고, 네트워크 인터페이스 포트는 무선(e.g. 라디오) 수신기/송신기(e.g. IEEE 802.11 프로토콜들, NFC(near field communication), 블루투스(bluetooth), ANT, 또는 다른 무선 프로토콜)가 된다. 일부 실시예에서, 네트워크 인터페이스 컨트롤러(330)는 이더넷과 같은 하나 이상의 네트워크 프로토콜을 구현한다. 일반적으로, 컴퓨팅 시스템(300)은 네트워크 인터페이스를 이용하고 물리적 또는 무선 링크를 통해서 다른 컴퓨팅 장치와 데이터를 교환한다. 네트워크 인터페이스는 다른 장치에 직접 연결될 수 있고, 예를 들어, 컴퓨팅 시스템(300)은 인터넷과 같은 데이터 네트워크에 연결시키는 허브, 브릿지, 스위치 또는 라우터와 같은 중계 장치를 통해 다른 장치와 연결될 수 있다.
컴퓨팅 시스템(300)은 하나 이상의 입력 장치 또는 출력 장치를 포함하거나 그에 대한 인터페이스를 제공할 수 있다. 입력 장치는 키보드, 마이크, 터치 스크린, 풋 페달, 센서, MIDI 장치 및 마우스 또는 트랙볼과 같은 포인팅 장치를 포함할 수 있으나, 이에 한정되지 않는다. 출력 장치는 비디오 디스플레이, 스피커, 점자 단말기, 조명, MIDI 장치 및 2-D 또는 3-D 프린터를 포함할 수 있으나, 이에 한정되지 않는다.
컴퓨팅 시스템(300)의 다른 구성 요소에는 I/O 인터페이스, 외부 직렬 장치 포트 및 임의의 부가적인 코프로세서(co-processor)가 포함될 수 있다. 예를 들어, 컴퓨팅 시스템(300)은 입력 장치, 출력 장치, 또는 추가의 메모리 장치(e.g. 휴대용 플래시 드라이브 또는 외부 미디어 드라이브)에 연결하기 위한 인터페이스(e.g. USB(universal serial bus) 인터페이스)를 포함 할 수 있다. 일부 실시예에서, 컴퓨팅 시스템(300)은 코프로세서와 같은 부가 장치를 포함한다. 예를 들어, 코프로세서는 수학 코프로세서와 같이 높은 정밀도 또는 복잡한 계산을 수행함으로써 프로세서(310)를 보조하는 장치를 포함한다.
GPU(370)는 그래픽 가속기 칩, 프로세서, ASIC(application specific integrated circuit), 아날로그 회로, 디지털 회로, 가속기 카드 또는 이들의 조합일 수 있다. 일부 실시예에서, GPU(370)는 nVidia, ATI 또는 Matrox에 의해 제조된 것과 같은 퍼스널 컴퓨터 그래픽 가속기 카드 또는 컴포넌트일 수 있다. GPU(370)는 3차원 텍스처 매핑(3D texture mapping)을 위한 API(Application Programming Interface)를 이용하는 것과 같이, 볼륨 렌더링(volume rendering) 프로세스들을 가속화하기 위한 하드웨어 장치를 제공한다. 예를 들어, 그러한 API들은 OpenGL 및 DirectX를 포함하지만, 다른 API들도 GPU(370)와 독립적으로 또는 GPU(370)와 함께 이용될 수 있다. nVidia GPU에 대한 예시적인 API는 http://docs.nvidia.com/cuda/#axzz40TIGVdNL에서 이용 가능한 "CUDA Toolkit Documentation v. 7.5"라는 제목의 웹 문서에 설명되어 있으며, 상기 웹 문서에 개시된 내용 중에서 본 특허 출원에서 설명된 기능을 수행하도록 GPU를 구성하는 방법에 대한 자세한 내용은 본 명세서에 참조로 포함된다. 일부 실시예에서, API 또는 API를 제어하는 애플리케이션(application)에 기초하여, GPU(370)는 컴퓨터 그래픽에 대한 변형(transformation), 투영(projection) 및 매핑(e.g. 구체 투영(spherical projection) 및 좌표계 변환)을 수행하도록 동작할 수 있다.
비디오 메모리(380)는 VRAM(video random access memory), RAM(random access memory), RAM 드라이브 또는 RAM 디스크, 또는 데이터 또는 비디오 정보를 저장하기 위한 다른 메모리 장치를 포함한다. 일부 실시예에서, 비디오 메모리(380)는 GPU(370)의 VRAM이다. GPU(370) 용 드라이버 또는 메모리 드라이버는 비디오 메모리(380)에 의한 데이터 저장을 제어한다. 비디오 메모리(380)는 드라이버에 응답하여 데이터를 저장, 전송 및 인출한다. 비디오 메모리(380)는 데이터의 서브셋(subset) 또는 블록을 저장하도록 동작할 수 있다.
도 3은 VR 비디오 스트리밍 시스템을 예시적으로 나타내는 블록도이다. 도 3을 참조하면, 일부 실시예에서, VR 비디오 스트리밍 시스템(100)은 제1 프로세서(101), 제1 메모리(110), GPU(102) 및 제2 메모리(150)를 포함한다. 또한, 제2 메모리(150)는 예를 들어 디코딩 된 프레임 버퍼(160), 후처리 된 프레임 버퍼(165), 인코딩 된 프레임 버퍼(166), 리포맷팅 된 프레임 버퍼(167) 등의 복수의 프레임 버퍼를 포함한다. 일부 실시예에서, 제1 프로세서(101)는 도 2에 도시된 프로세서(310)와 유사한 구성을 갖는다. 일부 실시예에서, GPU(102)는 도 2에 도시된 GPU(370)와 유사한 구성을 갖는다. 일부 실시예에서, 제1 메모리(110)는 도 2에 도시된 메모리(360)와 유사한 구성을 갖는다. 일부 실시예에서, 제2 메모리(150)는 도 2에 도시된 비디오 메모리(380)와 유사한 구성을 갖는다. 일부 실시예에서, VR 비디오 스트리밍 시스템(100)은 제1 메모리(110) 또는 제2 메모리(150)에 상주할 수 있는 소스 비디오 메모리(source video memory, 115)를 포함한다.
도 3을 참조하면, 일부 실시예에서, 비디오 서버(120)는 제1 프로세서(101) 또는 GPU(102)에 의해 실행되거나 구현될 수 있다. 예를 들어, 비디오 서버(120)는 제1 프로세서(101)를 통해 소스 비디오 데이터(e.g. 비디오 서버(120)의 로컬에 저장된 비디오 파일 또는 VR 콘텐츠 서버(750)로부터 스트리밍 된 비디오 데이터)를 읽어오도록 구성될 수 있다. 일부 실시예에서, 소스 비디오 데이터는 다수의 구체 이미지 프레임 데이터(e.g. 360도 4K UHD 프레임 데이터)를 포함한다. 일부 실시예에서, 비디오 서버(120)는 소스 비디오 데이터를 소스 비디오 메모리(115)에 저장할 수 있다.
일부 실시예에서, 비디오 서버(120)는 GPU(102)에 의해 실행되거나 구현될 수 있는 파서(121, parser), 디코더(122, decoder), 후처리기(123, post-processor), 인코더(125, encoder) 및 리포맷터(126, reformatter)를 포함할 수 있다. 일부 실시예에서, 파서(121)는 GPU(102)를 통해 소스 비디오 메모리(115)에 저장된 소스 비디오 데이터를 파싱하고, 상기 소스 비디오 데이터로부터 서로 다른 구체 이미지 프레임을 식별한다. 일부 실시예에서, 디코더(122)는 GPU(102)를 통해 파싱 된 구체 이미지 프레임을 디코딩하고, 디코딩 된 구체 이미지 프레임을 디코딩 된 프레임 버퍼(160)에 저장한다. 일부 실시예에서, 디코더(122) 및 인코더(125)는 H.264, H.265/HEVC(High Efficiency Video Coding)와 같은 산업 표준(industrial standard)의 압축/압축해제 기술을 이용할 수 있다. 일부 실시예에서, 디코더(122)는 제1 구체 이미지 프레임 데이터를 디코딩하고, 디코딩 된 데이터를 디코딩 된 프레임 버퍼(160)에 저장한다. 예시적인 디코더는 2015년 11월 "NVIDIA VIDEO DECODER(NVCUVID) INTERFACE Programming Guide "라는 제목의 문서에 설명되어 있으며, 상기 웹 문서에 개시된 내용 중에서 본 특허 출원에서 설명된 디코딩 기능을 달성하기 위해 디코더를 구성하는 방법에 대한 자세한 내용은 본 명세서에 참조로 포함된다. 일부 실시예에서, 후처리기(123)는 컬러 포맷 변환(color format conversion)을 수행한다. 예를 들어, 후처리기(123)는 디코딩 된 프레임 버퍼(160)에 저장된 프레임 데이터를 휘도(luminance)/색차(chrominance) 포맷에서 ARGB(Alpha Red Green Blue) 컬러 포맷으로 변환할 수 있다. 일부 실시예에서, 후처리기(123)는 컬러 포맷 변환된 프레임 데이터를 후처리 된 프레임 버퍼(162)에 저장한다. 일부 실시예에서, 후처리기(123)는 GPU(102)를 통해 구체-이퀴렉탱귤러 변환(e.g. 구체/이퀴렉탱귤러 투영 또는 매핑 방법 이용)을 수행한다. 예시적인 구체/이퀴렉탱귤러 투영은 Paul Bourke에 의해 작성된 "Transformations and projections"이라는 제목의 문서에 설명되어 있으며, 상기 웹 문서에 개시된 내용 중에서 본 특허 출원에서 설명된 기능을 달성하기 위해 투영, 전환 및 매핑하는 방법에 대한 자세한 내용은 본 명세서에 참조로 포함된다. 일부 실시예에서, 제1 구체 이미지 프레임 데이터가 디코딩 된 프레임 버퍼(160)에 저장되는 것에 응답하여, 후처리기(123)는 GPU(102)를 통해 제1 구체 이미지 프레임 데이터를 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환한다. 예를 들어, 후처리기(123)는 GPU(102)를 통해 360도 4K UHD 이미지 프레임 데이터를 보정되거나(corrected) 왜곡(undistorted)되지 않은 이퀴렉탱귤러 이미지 프레임 데이터로 변환한다. 일부 실시예에서, 후처리기(123)는 GPU(102)를 통해 제1 구체 이미지 프레임 데이터(e.g. 360도 4K UHD 이미지 프레임 데이터)를 제1 구체 이미지 프레임 데이터에 의해 표시되는 구체 이미지의 일부분에 대응되는 제1 이퀴렉탱귤러 이미지 프레임 데이터(e.g. 클라이언트 디바이스에서 사용자의 현재 FOV에 대응되는 360도 4K UHD 이미지 프레임 데이터의 일부분)로 변환한다. 일부 실시예에서, 후처리기(123)는 GPU(102)를 통해 제1 구체 이미지 프레임 데이터(e.g. 360도 4K UHD 이미지 프레임 데이터)를 제1 구체 이미지 프레임 데이터(e.g. 360도 4K UHD 이미지 프레임 데이터의 전체 부분)에 의해 표시되는 구체 이미지의 전체에 대응되는 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환한다.
일부 실시예에서, 후처리기(123)는 또한 GPU를 통해 증강 현실(Augmented Reality; AR)을 위한 이미지 처리를 수행한다. 예를 들어, 후처리기(123)는 변환된 제1 이퀴렉탱귤러 이미지 프레임을 그래픽 콘텐츠(e.g. 도로 이미지를 차량 이미지와 블렌딩) 또는 텍스트/그래픽 정보(e.g. 거리 이미지를 상점 이미지와 블렌딩)와 함께 블렌딩(blending)할 수 있다. 일부 실시예에서, 후처리 동작(e.g. 구체-이퀴렉탱귤러 변환)의 완료에 응답하여, 후처리기(123)는 후처리 된 프레임 데이터를 후처리 된 프레임 버퍼(162)에 저장한다.
일부 실시예에서, 리포맷터(126)는 GPU(102) 또는 프로세서(101)를 통해 이퀴렉탱귤러 이미지 프레임에 대한 다운스케일링 및 재배치(또는 리포맷팅)를 수행한다. 일부 실시예에서, 리포맷터(126)는 GPU(102) 또는 프로세서(101)를 통해 복잡도 분석에 기초하여 이퀴렉탱귤러 이미지 프레임의 다운스케일링 된 영역의 너비 및 높이를 결정한다. 예를 들어, 도 13을 참조하면, 복잡도 분석을 위해, 리포맷터(126)는 공간 복잡도 분석기(702), 공간 복잡도 누산기(704), 시간 복잡도 분석기(703), 시간 복잡도 누산기(705) 및 너비/높이 계산기(710)를 포함할 수 있다. 복잡도 분석에 대한 자세한 내용은 도 13 내지 도 15를 참조하여 후술하도록 한다. 일부 실시예에서, 리포맷터(126)는 GPU(102) 또는 프로세서(101)를 통해 아티팩트(artifacts) 처리를 수행한다. 아티팩트 처리에 대한 자세한 내용은 도 16 내지 도 20을 참조하여 후술하도록 한다. 일부 실시예에서, 리포맷터(126)는 리포맷팅 된 프레임 버퍼(167)에 리포맷팅 된 프레임 데이터를 저장한다.
일부 실시예에서, 인코더(125)는 GPU(102)를 통해 후처리 된 프레임 버퍼(162)에 저장된 후처리 된 프레임 데이터를 인코딩 하고, 인코딩 된 프레임 데이터를 인코딩 된 프레임 버퍼(166)에 저장한다. 일부 실시예에서, 인코더(125)는 GPU(102)를 통해 리포맷팅 된 프레임 버퍼(167)에 저장된 리포맷팅 된 프레임을 인코딩 하고, 인코딩 된 프레임 데이터를 인코딩 된 프레임 버퍼(166)에 저장한다. 예시적인 인코더는 "NVIDIA VIDEO ENCODER(NVENC) INTERFACE Programming Guide"라는 제목의 문서에 설명되어 있으며, 상기 웹 문서에 개시된 내용 중에서 본 특허 출원에서 설명된 인코딩 기능을 달성하기 위해서 인코더를 구성하는 방법에 대한 자세한 내용은 본 명세서에 참조로 포함된다. 일부 실시예에서, 파서(121), 디코더(122), 후처리기(123), 리포맷터(126) 및 인코더(125)는 VR 비디오 스트리밍 시스템(100)의 GPU(102)에 의해 실행된다. 일부 실시예에서, 파서(121), 디코더(122), 후처리기(123), 리포맷터(126) 및 인코더(125)의 일부 동작은 제1 프로세서(101)에 의해 실행되고, 다른 동작은 GPU(102)에 의해 실행된다.
도 3을 참조하면, 일부 실시예에서, VR 비디오 스트리밍 시스템(100)은 제1 프로세서(101) 또는 GPU(102) 중 적어도 하나에 의해 실행되거나 구현되는 통신 서버(130)를 포함한다. 일부 실시예에서, 통신 서버(130)는 제1 프로세서(101)를 통해 클라이언트 디바이스(e.g. 클라이언트 디바이스(200A))와 연결(connection)을 설정한다. 일부 실시예에서, 설정된 연결은 예를 들어 웹 소켓 프로토콜과 같이 전이중 채널 프로토콜(full-duplex channel protocol)을 이용한다. 이에 따라, 많은 양의 프로토콜 헤더(e.g. http 헤더)를 통신하지 않고 약간의 프레임(e.g. 웹 소켓 프레임)을 이용하여 연결이 설정될 수 있기 때문에 지연 시간이 감소될 수 있다. 일부 실시예에서, 통신 서버(130)는 후처리기(123)에 의해 변환 및/또는 리포맷터(126)에 의해 리포맷팅 된 제1 이퀴렉탱귤러 이미지 프레임 데이터에 대응되는 제1 FOV에 관한 제1 정보를 클라이언트 디바이스로 전송할 수 있다. 일부 실시예에서, 통신 서버(130)는 클라이언트 디바이스로부터 제2 FOV(e.g. 클라이언트 디바이스의 사용자의 현재 FOV)에 관한 제2 정보를 수신할 수 있다. 일부 실시예에서, 클라이언트 디바이스(200A) 및 VR 비디오 스트리밍 시스템(100) 양쪽 모두에서, 초기 FOV는 디폴트로 사용자가 현재 보고 있는 이미지 프레임의 중심에서 일직선으로 오른쪽을 향하는 각도로 설정될 수 있다. 일부 실시예에서, FOV에 관한 정보는 피치각 및 방위각을 가리키는 시청 각도를 포함한다. 일부 실시예에서, FOV에 관한 정보는 시청자의 시선(line-of-sight)를 나타내는 방위각 기준 시청 각도(azimuth view angle, 도 9 참조)와 시청자가 볼 수 있는 방위각 범위를 나타내는 방위각 기준 FOV(azimuth FOV, 도 9 참조)를 포함한다. 일부 실시예에서, FOV에 관한 정보는 시청자의 시선을 나타내는 수직 또는 고도 기준 시청 각도와 시청자가 볼 수 있는 수직 또는 고도 각 범위를 나타내는 수직 또는 고도 기준 FOV(e.g. 고도 -45도와 +45도 사이의 범위)를 포함한다. 일부 실시예에서, GPU(102)가 비디오 서버(120)의 동작(e.g. 파서(121), 디코더(122), 후처리기(123), 리포맷터(126) 및 인코더(125)에 의해 수행되는 동작)을 처리하는 동안, 통신 서버(130)는 클라이언트 디바이스의 요청에 따라(e.g. 웹 소켓 프로토콜을 통해) 제1 프로세서(101)를 통해 클라이언트 디바이스 사용자의 현재 FOV를 업데이트할 수 있다. 일부 실시예에서, 클라이언트 디바이스는 통신 서버(130)와 안정된 연결 방법(e.g. jetty 기반의 웹 소켓 프로토콜)을 통해 클라이언트 디바이스 사용자의 현재 시야 각도에 대해 통신 서버(130)를 업데이트할 수 있다. 그렇게 함으로써 일정한 연결 상태가 제공될 수 있고, 보안 오버 헤드 및 지연 시간이 감소될 수 있다.
일부 실시예에서, 클라이언트 디바이스는 특정 VR 이미지/비디오 데이터를 통신 서버(130)로 요청할 수 있다. 예를 들어, 클라이언트 디바이스는 웹 소켓 프로토콜을 통해 통신 서버(130)에 VR 이미지를 요청할 수 있다. 일부 실시예에서, 이러한 클라이언트 디바이스의 요청에 따라, 통신 서버(130)는 제1 프로세서(101)를 통해 요청에 대응되는 소스 비디오 데이터(e.g. 로컬 파일에 저장되거나 VR 콘텐츠 서버(750)에 의해 스트리밍 된 소스 비디오 데이터)를 인출하고, GPU(102)로 인출된 소스 비디오 데이터를 제공할 수 있다. GPU(102)는 인출된 소스 비디오 데이터에 대하여 상술한 디코딩/후처리/리포맷팅/인코딩 동작을 수행할 수 있다. 일부 실시예에서, 통신 서버(130)는 VR 비디오 스트리밍 시스템(100)의 서비스를 관리하기 위한 용도로 웹 서비스를 제공 할 수 있다(e.g. 서비스에 대한 사용자 로그인 및 인증서(credential) 검사 관리, 사용자 계정/프로파일 관리 및 사용자가 시청할 비디오 콘텐츠를 선택할 수 있도록 하기 위한 VR 비디오 콘텐츠 리스팅).
도 3을 참조하면, VR 비디오 스트리밍 시스템(100)은 스트리밍 서버(140)를 포함할 수 있다. 또한, 스트리밍 서버(140)는 제1 프로세서(101) 또는 GPU(102) 중 적어도 하나에 의해 실행되거나 구현될 수 있다. 일부 실시예에서, 스트리밍 서버(140)는 제1 프로세서(101)를 통해 클라이언트 디바이스(e.g. 클라이언트 디바이스(200A))와 제1 연결을 설정한다. 일부 실시예에서, 스트리밍 서버(140)는 클라이언트 디바이스의 사용자에게 비디오 데이터를 적시에 전달하기 위해 RTSP(Real Time Streaming Protocol)를 이용한다. 일부 실시예에서, 스트리밍 서버(140)는 인코딩 된 프레임 버퍼(166)로부터 인코딩 된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 읽어오고, 인코딩 된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 제1 연결을 통해 클라이언트 디바이스(200A)로 스트리밍 한다. 일부 실시예에서, 비디오 서버(120)와 스트리밍 서버(140)는 별개의 프로세스로서 실행된다. 일부 실시예에서, 통신 서버(130) 스트리밍 서버(140)는 단일 프로세스로서 실행되도록 구성될 수 있다. 일부 실시예에서, 통신 서버(130)는 웹 소켓 프로토콜을 통해 클라이언트 디바이스와 직접적으로 인터랙션 하고 비디오 서버(120)와 동일한 물리적 서버 상에서 실행된다. 그렇게 함으로써 피드백 및 통신 지연 시간이 감소될 수 있다. 일부 실시예에서, 스트리밍 서버(140)와 통신 서버(130)(통칭하여 "스트리머"(180))는 동일한 단일 프로세스로 실행되는 반면, 비디오 서버(120)는 스트리머(180)에 의해 시작되고 관리될 수 있는 별도의 프로세스로 실행된다. 이러한 이중 프로세스 구성은 네트워크 응답성(지연 감소에 의해) 및 시스템 안정성을 향상시킬 수 있다. 일부 실시예에서, 스트리밍 서버(140)와 비디오 서버(120)는 RAM 드라이브 또는 RAM 디스크를 통해 비디오 스트림 데이터(최종적으로 클라이언트 디바이스에 제공되는)를 공유할 수 있다. 이러한 RAM 드라이브 또는 RAM 디스크는 실제 데이터가 시스템 RAM에 있는 동안 파일로 액세스(access) 될 수 있으므로 하드웨어 I/O 오버 헤드 및 지연 시간이 제거된다.
도 6은 일부 실시예에 따라 VR 비디오 처리 시스템에서 수행되는 예시적인 다운스케일링 및 리포맷팅 방법의 동작을 도시하는 흐름도이다. 개략적으로 살펴보면, 방법(500)은 제1 FOV에 관한 정보가 클라이언트 디바이스로부터 수신될 수 있는 단계(510)에서 시작된다. 단계(520)에서, 수신 된 제1 FOV 정보에 기초하여 제1 구체 이미지 프레임 데이터가 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환될 수 있다. 단계(530)에서, 제1 이퀴렉탱귤러 이미지 프레임 데이터의 다운스케일링 된 상단 영역, 하단 영역, 좌측 영역 또는 우측 영역의 너비 및 높이가 결정될 수 있다. 단계(540)에서, 제1 이퀴렉탱귤러 이미지 프레임 데이터의 상단 영역, 하단 영역, 좌측 영역 또는 우측 영역은 결정된 너비 및 높이를 갖도록 다운스케일링 될 수 있다. 단계(550)에서, 제1 이퀴렉탱귤러 이미지 프레임 데이터의 스케일링 된 중간 영역, 하단 영역, 좌측 영역 또는 우측 영역이 재배치(또는 리포맷팅) 될 수 있다. 단계(560)에서, 영역(e.g. 중간 영역, 하단 영역, 좌측 영역 또는 우측 영역) 간의 경계에서 아티팩트가 처리될 수 있다. 단계(570)에서, 리포맷팅 된 제1 이퀴렉탱귤러 이미지 프레임 데이터가 인코딩 될 수 있다. 단계(580)에서, 인코딩 된 프레임 데이터는 클라이언트 디바이스로 스트리밍 될 수 있다. 도 6에 도시된 흐름도는 이후 도 9 내지 도 13을 참조하여 보다 상세하게 설명하도록 한다.
도 9, 도 10, 도 11 및 도 12는 일부 실시예에 따라 예시적인 VR 비디오 처리 시스템에서 이미지 프레임을 다운스케일링 및 리포맷팅하는 방법의 예시도이다. 구체적으로, 도 9는 시청자(601)의 시선 방향을 나타내는 기준 벡터 또는 방향(e.g. 도 9에 도시된 0도 방향)을 기준으로 방위각으로 정의될 수 있는 예시적인 (방위각 기준) 시선 각도(602)(e.g. 도 9에서 α도)를 도시한다. 도 9는 시청자(601)가 클라이언트 디바이스로 시청하는 2 개의 방위각 사이의 범위(e.g. 도 9에서 3α도와 (n-1)α도 사이의 범위)로서 정의될 수 있는 예시적인 (방위각 기준) FOV를 도시한다. 오프-FOV(604)는 시청자가 클라이언트 디바이스로 볼 수 없는 방위각 범위(e.g. 도 9에서 FOV 범위 이외의 방위각 범위)로 정의될 수 있다.
도 10은 원본 이퀴렉탱귤러 이미지 프레임 데이터(610)(다운스케일링 및 리포맷팅이 수행되기 전)와 리포맷터(126)(도 3 참조)에 의해 다운스케일링 되고 리포맷팅 된 예시적인 리포맷팅 된 이퀴렉탱귤러 이미지 프레임 데이터(620)를 도시한다. 원본 이퀴렉탱귤러 이미지 프레임 데이터(610)는 중간 부분(611), 좌측 부분(612), 우측 부분(613), 상단 부분(614) 및 하단 부분(615)을 포함한다. 일부 실시예에서, 중간 부분(611)은 방위각 기준의 FOV(e.g. 도 9에서 3α도와 (n-1)α도 사이의 범위) 및 수직 또는 고도 기준의 FOV(e.g. 고도 -45도 ~ +45도 사이의 범위)에 모두 대응된다. 일부 실시예에서, 서버(e.g. 도 3에 도시된 통신 서버(130))는 클라이언트 디바이스(e.g. 도 3 에 도시된 클라이언트 디바이스(200A))로부터 방위각 기준 FOV와 수직 또는 고도 기준 FOV 중 적어도 하나를 수신할 수 있다. 일부 실시예에서, 리포맷터(126)는 방위각 기준 FOV 및 수직 또는 고도 기준 FOV 중 적어도 하나에 기초하여 중간 부분(611)의 너비 및 높이를 결정한다. 일부 실시예에서, 리포맷터(126)는 수신된 방위각 기준 FOV와 고도 기준 FOV로부터 계산될 수 있는 오프-FOV(도 9에 도시된 오프-FOV(604) 참조)에 기초하여 좌측 부분(614) 및 우측 부분(615) 각각의 너비 및 높이를 결정한다. 일부 실시예에서, 리포맷터(126)는 결정된 중간 부분(611)의 높이에 기초하여 상단 부분(612) 및 하단 부분(613) 각각의 높이를 결정한다.
일부 실시예에서, 리포맷터(126)는 중간 부분(611) 중간 부분(611)을 제1 해상도(e.g. 중간 부분(611)의 원래 해상도와 거의 동일한 해상도)로 스케일링 하여 (스케일링 된) 중간 영역(621)을 형성할 수 있다. 일부 실시예에서, 다운스케일링이 수행되기 전에, 다운스케일링 된 영역(e.g. 다운스케일링 된 상단 부분/하단/좌측/우측 영역)의 너비와 높이가 결정될 수 있다. 일부 실시예에서, 다운스케일링 된 영역의 너비 및 높이는 복잡도 분석에 기초하여 결정될 수 있다. 스케일링 된 영역의 복잡도 분석과 너비 및 높이 결정에 대한 자세한 설명은 도 13 내지 도 15를 참조하여 후술하도록 한다. 일부 실시예에서, 각각의 다운스케일링 된 영역(e.g. 도 10의 좌측 영역(622), 우측 영역(623), 상단 영역(624), 하단 영역(625))의 너비 및 높이를 결정한 후에, 제2 해상도, 제3 해상도, 제4 해상도 및 제 5 해상도로 좌측 부분(612), 우측 부분(613), 상단 부분(614), 하단 부분(615)을 다운스케일링 할 수 있다. 일부 실시예에서, 제2 내지 제5 해상도는 제1 해상도보다 낮은 해상도이다.
일부 실시예에서, 스케일링 된 중간 영역(621), 좌측 영역(622), 우측 영역(623), 상단 영역(624) 및 하단 영역(625)을 형성한 후에, 리포맷터(126)는 영역(621 내지 625)을 재배치하여 리포맷팅 된 이퀴렉탱귤러 이미지 프레임 데이터(620)를 형성할 수 있다. 예를 들어, 도 10에 도시된 바와 같이, 리포맷팅 된 이퀴렉탱귤러 이미지 프레임 데이터(620)에서, 상단 영역(624) 및 하단 영역(625)은 서로 인접하고, 중간 영역(621)의 윗부분과도 인접하도록 재배치된다. 일부 실시예에서, 도 11에 도시된 바와 같이, 리포맷팅 된 이퀴렉탱귤러 이미지 프레임 데이터(630)에서, 상단 영역(624) 및 하단 영역(625)은 서로 인접하고 중간 영역(621)의 아랫부분과 인접하도록 재배치된다.
도 12는 상이한 FOV로 리포맷팅이 수행된 예를 도시한다. 일부 실시예에서, 이퀴렉탱귤러 이미지 프레임 데이터(610)(이퀴렉탱귤러 포맷)는 방위각(또는 y 축)에서 수평 방향으로 360도를 커버(cover)한다. 도 12는 상이한 시청 각도(α도, 2α도, 3α도, ..., (n-1)α도 (e.g. α = 30)를 도시한다. 일부 실시예에서, 리포맷터(126)는 주어진 시청 각도에 대응되는 FOV를 계산하고, 계산된 FOV에 기초하여 중간 부분(611)(및 좌측 및 우측 부분(612 및 613))의 너비 및 높이를 결정하고, 중간 부분(611)의 높이에 기초하여 상단 부분(614) 및 하단 부분(615) 각각의 높이를 결정하며, 다운스케일링 된 영역 각각의 너비 및 높이를 결정하고, 결정된 너비 및 높이를 갖도록 이미지를 다운스케일링 하며, 다운스케일링 된 영역을 재배치(또는 리포맷팅) 한다. 도 12는 시청 각도 α도, 2α도, 3α도, 4α도 및 5α도 각각에 기초하여 이미지를 다운스케일링 및 리포맷팅 한 결과로 생성된 리포맷팅 된 이미지(641 내지 645)를 도시한다.
일부 실시예에서, 이미지 포맷(620, 도 10 참조) 또는 이미지 포맷(630, 도 11 참조)과 같은 이미지 포맷으로 프레임을 구성하기 전에, 요청된 시청 각도에 기초하여 프레임의 콘텐츠가 이미지의 중간에 위치하도록 이동된다. 이러한 방식으로 데이터 전송 크기를 줄임과 동시에 VR 비디오 포맷이 최적화될 수 있다. 일부 실시예에서, 대부분의 HMD가 (방위각 기준) 75 내지 95도의 FOV를 제공한다는 관찰에 기초하여, (방위각 기준) FOV의 너비가 75 내지 95 도로 설정(e.g. 미리 설정)된다. 일부 실시예에서, 주어진 시청 각도에 대응되는 FOV는 미리 설정된 방위각 기준의 FOV 너비에 기초하여 결정될 수 있다. 예를 들어, 시청 각도가 0도 및 방위각 기준의 FOV 너비가 90도로 주어지면, 대응되는 방위각 기준 FOV는 -45도와 +45도 사이이다. 일부 실시예에서, 오프-FOV는 FOV에 기초하여 계산될 수 있으므로 오프-FOV 영역(e.g. 좌측 및 우측 영역)은 다운스케일링 될 수 있고, 그렇게 함으로써 데이터 전송량을 크게 감소시킬 수 있다. 일부 실시예에서, 오프-FOV 영역은 수직으로 -90 ~ -50도, 50 ~ 90도의 범위에 있고, 수평으로는 -180 ~ -50도, 50 ~ 180도의 범위에 있다. 일부 실시예에서, 상단 부분과 하단 부분은 수평 및 수직으로 모두 다운스케일링 되고, 다운스케일링 된 상단 영역 및 하단 영역은 중간 영역의 윗부분(도 10 참조) 또는 중간 영역의 아랫부분(도 11 참조)에 나란하게 배치될 수 있다. 시청자는 일반적으로 오프-FOV 영역을 볼 수 없거나 오프-FOV 영역에 초점을 맞추지 않기 때문에, 원본 해상도의 오프-FOV 영역은 업스케일링 된 영역으로 간주될 수 있다. 따라서, 서버에서 오프-FOV 영역을 다운스케일링 한 후에도, 클라이언트 디바이스에서의 다운스케일링 된 오프-FOV 영역의 재구성은 시청자가 인지한 오프-FOV 영역의 비디오 품질을 저하시키지 않을 것이다. 시청자가 통상적으로 이미지의 중간 부분(e.g. 도 10에서 중간 부분(611))을 보기 때문에, 일부 실시예에서, 서버(e.g. 도 3에 도시된 통신 서버(130) 또는 스트리밍 서버(140))는 주기적으로 시청자의 FOV 데이터를 실시간 수집하고 다운스케일링 없이 중간 부분을 이용한다. 일부 실시예에서, 클라이언트 디바이스에서, 오프-FOV 영역의 좌측 및 우측 부분은 시청자가 자신의 FOV를 돌리고 변경하지 않는 한 보이지 않는 영역이다. 일부 실시예에서, 이들 숨겨진 부분은 (e.g. 2:1 ~ 4:1 비율로) 다운스케일링 되고 인코딩 된다. 일부 실시예에서, 클라이언트 디바이스에서, 숨겨진 부분은 시청자가 회전할 때만 일시적으로 디스플레이 되고, 클라이언트 디바이스의 GPU는 시청자가 회전을 멈출 때 렌더링 시 숨겨진 부분을 다시 원래의 해상도로 업스케일링 한다. 일부 실시예에서, 시청자가 회전을 멈추면 새로운 비디오 프레임(갱신된 FOV 포함)이 비교적 짧은 시간 안에 높은 품질로 디스플레이 된다. 예를 들어 비디오 프레임에 대한 새로운 FOV의 갱신 지연 시간은 내부 네트워크에서 약 200 ~ 300ms이고 공용 네트워크에서 300ms ~ 1sec이다. 일부 실시예에서, 새로운 FOV의 갱신 지연 시간은 다음의 방법에 의해 감소될 수 있다. 예를 들어, (1) 웹 소켓에 의해 FOV 값을 전달하기 위한 빠르고 안전한 피드백 채널을 사용하는 방법, (2) 비디오 파일 간에 전환할 수 있는 가능한 최소의 GOP(group of picture)를 이용하는 방법(e.g. 일부 실시예에서, 스위칭 시간은 임의의 순간에 FOV 변경이 발생하더라도 500ms 보다 길지 않음), (3) 클라이언트 디바이스에서 스트림 버퍼의 버퍼 레벨을 제어하여 크기를 최소화할 뿐만 아니라 낮은 버퍼링으로 인한 반복적 재생 중지 현상을 방법에 의해 갱신 지연 시간이 감소될 수 있다. 일부 실시예에서, 크기 최소화하는 것과 반복적 재생 중지 현상을 방지하는 것 사이에는 트레이드 오프(trade off)가 있기 때문에, 그 당시의 네트워크 상태에 기초하여 트레이드 오프가 제어될 수 있다.
이하에서는, 도 6 내지 도 12를 참조하여 도 6에 도시된 흐름도에 대하여 상세하게 설명하도록 한다. 단계(510)에서, 제1 FOV에 관한 제1 정보가 클라이언트 디바이스(e.g. 도 3에 도시된 클라이언트 디바이스(200A))로부터 수신될 수 있다. 일부 실시예에서, 제1 FOV에 관한 제1 정보는 시청자의 시청 각도(e.g. 도 9에 도시된 시청 각도(602)), 방위각 기준 FOV(e.g. 도 9에 도시된 FOV(603), 수직 또는 고도 기준 FOV 또는 피치각 중에서 적어도 하나를 포함할 수 있다.. 일부 실시예에서, 제1 프로세서(e.g. 도 3에 도시된 프로세서(101))에 의해 구현되는 통신 서버(e.g. 도 3에 도시된 통신 서버(130))는 제1 프로세서로 하여금 클라이언트 디바이스로부터 제1 FOV에 관한 제1 정보를 수신하도록 구성된다. 일부 실시예에서, 통신 서버는 웹 소켓 프로토콜에 의해 설정된 제1 접속을 통해 클라이언트 디바이스로부터 FOV 정보를 수신한다.
단계(520)에서, 제1 구체 이미지 프레임 데이터는 수신된 제1 FOV에 관한 제1 정보에 기초하여 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환될 수 있다. 일부 실시예에서, 제1 프로세서(e.g. 도 3에 도시된 프로세서(101)) 또는 GPU(e.g. 도 3에 도시된 GPU(102))에 의해 구현되는 비디오 서버(e.g. 도 3에 도시된 비디오 서버(120))는 제1 프로세서 또는 GPU로 하여금 제1 구체 이미지 프레임 데이터를 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환하도록 구성될 수 있다. 이때, 제1 이퀴렉탱귤러 이미지 프레임 데이터(e.g. 도 10 및 도 11에 도시된 이미지(610))의 중간 영역(e.g. 도 10 및 도 11에 도시된 중간 부분(611))은 제1 FOV(e.g. 도 9에 도시된 FOV(603))에 대응되는 제1 영역이 될 수 있다. 일부 실시예에서, 다른 영역(e.g. 좌측 부분(612) 및 우측 부분(613))의 너비 및 높이는 제1 FOV에 관한 제1 정보에 기초하여 결정될 수 있다. 일부 실시예에서, 다른 영역(e.g. 상단 부분(614) 및 하단 부분(615))의 높이는 중간 부분(611)의 높이에 기초하여 결정될 수 있다. 일부 실시예에서, 상술한 이퀴렉탱귤러 이미지 프레임으로의 변환은 비디오 서버(120)의 후처리기(123)(도 3 참조)에 의해 수행된다.
단계 530에서, 스케일링 된 제1 이퀴렉탱귤러 이미지 데이터(620)의 다운스케일링 된 영역(e.g. 도 10의 상단 영역(624), 하단 영역(625), 좌측 영역(622) 및 우측 영역(623))의 너비 및 높이가 결정될 수 있다. 각 다운스케일링 된 영역의 너비 및 높이 결정에 대한 자세한 설명은 도 13 내지 도 15를 참조하여 후술하도록 한다.
단계(540)에서, 도 10에 도시된 바와 같이, 제1 이퀴렉탱귤러 프레임 데이터(610)의 상단 부분(614), 하단 부분(615), 좌측 부분(612) 또는 우측 부분(613)은 다 스케일링 된다. 이때, 다운스케일링 된 상단 영역(624), 하단 영역(625), 좌측 영역(622) 또는 우측 영역(623) 각각은 단계(530)에서 결정된 너비 및 높이를 갖는다. 비디오 서버는 제1 FOV에 대응되는 제1 이퀴렉탱귤러 이미지의 제1 또는 중간 영역(e.g. 중간 영역(611))을 제1 해상도(e.g. 제1 이퀴렉탱귤러 이미지 프레임 데이터(610)의 원래 해상도와 대략 동일한 해상도)로 스케일링 할 수 있다. 비디오 서버는 중간 영역에 인접한 제1 이퀴렉탱귤러 이미지의 제2 또는 상단 영역(e.g. 상단 부분(614))을 제1 해상도보다 낮은 제2 해상도(e.g. 2:1 ~ 4:1 다운스케일링 비율)로 스케일링할 수 있다. 그 결과, 다운스케일링 된 상단 영역은 단계(530)에서 결정된 너비 및 높이를 가질 수 있다. 비디오 서버는 제1 또는 중간 영역에 인접하고 제2 또는 상단 영역에 인접하지 않은 제1 이퀴렉탱귤러 이미지의 제3 또는 하단 영역(e.g. 하단 부분(615))을 제1 해상도보다 낮은 제3 해상도(e.g. 2:1 ~ 4:1 다운스케일링 비율)로 스케일링 할 수 있다. 그 결과, 다운스케일링 된 하단 영역은 단계(530)에서 결정된 너비 및 높이를 가질 수 있다. 일부 실시예에서, 비디오 서버는 제1 프로세서로 하여금 중간 영역의 좌측에 인접한 제1 이퀴렉탱귤러 이미지의 좌측 영역(e.g. 좌측 부분(612))을 제1 해상도보다 낮은 제4 해상도(e.g. 2:1 ~ 4:1 다운스케일링 비율)로 스케일링 하고, 중간 영역의 우측에 인접한 제1 이퀴렉탱귤러 이미지의 우측 영역(e.g. 우측 부분(613))을 제1 해상도보다 낮은 제5 해상도(e.g. 2:1 ~ 4:1 다운스케일링 비율)로 스케일링 하도록 더 구성될 수 있다. 그 결과, 다운스케일링 된 좌측 영역과 우측 영역 각각은 단계(530)에서 결정된 너비와 높이를 갖는다.
단계(550)에서, 도 10에 도시된 바와 같이, 제1 이퀴렉탱귤러 이미지 프레임 데이터의 스케일링 된 중간 영역(e.g. 중간 영역(621)), 다운스케일링 된 상단 영역(e.g. 상단 영역(624)), 다운스케일링 된 하단 영역(e.g. 하단 영역(625)), 다운스케일링 된 좌측 영역(e.g. 좌측 영역(622)) 또는 다운스케일링 된 우측 영역(e.g. 우측 영역(623))이 재배치(또는 리포맷팅)될 수 있다. 재배치 결과, 재배치된 이퀴렉탱귤러 이미지 프레임 데이터(620)가 형성될 수 있다. 일부 실시예에서, 비디오 서버는 스케일링 된 중간 영역, 다운스케일링 된 상단 영역 및 다운스케일링 된 하단 영역을 재배치할 수 있다. 그 결과, 다운스케일링 된 상단 영역과 다운스케일링 된 하단 영역이 서로 나란히 인접하도록 배치된 리포맷팅 된 제1 이퀴렉탱귤러 이미지 프레임 데이터(610)가 생성될 수 있다. 일부 실시예에서, 재배치 이후에, 다운스케일링 된 상단 영역 및 다운스케일링 된 하단 영역은 스케일링 된 중간 영역의 윗부분에 인접한다(도 10 참조). 일부 실시예에서, 재배치 이후에, 다운스케일링 된 상단 영역 및 다운스케일링 된 하단 영역은 스케일 된 중간 영역의 아랫부분에 인접한다(도 11 참조).
단계(560)에서, 도 10에 도시된 바와 같이, 스케일링 된 영역(e.g. 중간 영역(621), 상단 영역(624), 하단 영역(625), 좌측 영역(622) 또는 우측 영역(625)) 사이의 경계에서 아티팩트가 처리될 수 있다. MPEG-4 AVC(H.264) 코덱과 같은 표준 형식을 사용하는 인코더가 인트라 프레임 예측(intra frame prediction) 및 인터 프레임 예측(inter frame prediction)에 의해 블록의 컬러를 최적화 하는 경우, 스케일링 된 영역의 경계에서 아티팩트가 발생할 수 있다. 이러한 최적화에 의해, 특정 블록에 이웃한 블록의 컬러가 특정 블록의 컬러에 영향을 미치고, 이로 인해 스케일링 된 영역 사이의 경계(e.g. 상단 영역(624)와 하단 영역(625) 사이의 경계, 상단 영역(624)과 중간 영역(621)사이의 경계 또는 하단 영역(625)과 중간 영역(621) 사이의 경계)에서 아티팩트가 발생한다. 아티팩트 처리에 대한 자세한 설명은 도 16 내지 도 20을 참조하여 후술하도록 한다.
단계(570)에서, 리포맷팅 된 제1 이퀴렉탱귤러 이미지 프레임 데이터가 인코딩 될 수 있다. 일부 실시예에서, 인코딩은 아티팩트 처리(단계 560)를 수행 한 후에 수행될 수 있다. 일부 실시예에서, 도 10에 도시된 바와 같이, 비디오 서버는 스케일링 된 중간 영역, 스케일링 된 상단 영역, 스케일링 된 하단 영역, 스케일링 된 좌측 영역 및 스케일링 된 우측 영역을 포함하는 리포맷팅 된 제1 이퀴렉탱귤러 이미지 프레임 데이터(e.g. 도 3에 도시된 리포맷팅 된 프레임 버퍼(167)에 저장된 이미지 프레임 데이터(620))를 인코딩 할 수 있다. 그 결과, 인코딩 된 제1 이퀴렉탱귤러 이미지 프레임 데이터가 생성될 수 있다. 일부 실시예에서, 인코딩 된 제1 이퀴렉탱귤러 이미지 프레임 데이터는 인코딩 된 프레임 버퍼(166)(도 3 참조)에 저장된다.
단계(580)에서, 인코딩 된 프레임 데이터는 클라이언트 디바이스로 스트리밍 될 수 있다. 제1 프로세서(e.g. 프로세서(101)) 또는 GPU(e.g. GPU(102))에 의해 구현되는 스트리밍 서버(e.g. 도 3에 도시된 스트리밍 서버(140))는 제1 프로세서로 하여금 인코딩 된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 클라이언트 디바이스로 전송하도록 구성된다. 일부 실시예에서, 스트리밍 서버는 RTSP를 이용하여 인코딩 된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 클라이언트 디바이스로 스트리밍 한다.
도 7은 일부 실시예에 따라, 제1 이퀴렉탱귤러 이미지 프레임 데이터의 각 스케일링 된 영역(e.g. 스케일링 된 상단/하단/좌측/우측 영역)의 너비 및 높이를 결정하는 동작을 도시하는 흐름도이다. 개략적으로 살펴보면, 방법(530)은 단계(531)에서 시작되며, 여기서 제1 이퀴렉탱귤러 이미지 프레임 데이터의 시간 복잡도 맵(time complexity map)이 생성될 수 있다. 단계(532)에서, 제1 이퀴렉탱귤러 이미지 프레임 데이터의 공간 복잡도 맵이 생성될 수 있다. 단계(533)에서, 시간 복잡도 맵 및 공간 복잡도 맵을 결합함으로써 결합된 복합도 맵이 생성될 수 있다. 단계(534)에서, 제1 이퀴렉탱귤러 이미지 프레임 데이터의 다운스케일링 된 상단 영역, 다운스케일링 된 하단 영역, 다운스케일링 된 좌측 영역 또는 다운스케일링 된 우측 영역 각각의 너비 및 높이가 결합된 복잡도 맵에 기초하여 결정될 수 있다. 도 7에 도시된 흐름도는 이후 도 13 내지 도 15를 더 참조하여 상세하게 설명하도록 한다.
도 13, 도 14 및 도 15는 일부 실시예에 따라, 예시적인 VR 비디오 처리 시스템에서 수행되는 다운스케일링 된 영역의 너비 및 높이를 결정하는 예시적인 방법을 설명하기 위한 도면이다. 구체적으로, 도 13은 프로세서 또는 GPU에 의해 구현되고 다운스케일링 된 영역의 너비 및 높이 결정을 수행하는 예시적인 모듈(module) 또는 장치를 도시한다. 일부 실시예에서, 리포맷터(126)(도 3 참조)는, 너비 및 높이 결정 모듈 또는 장치로서, 공간 복잡도 분석기(702, spatial complexity analyzer), 시간 복잡도 분석기(703, temporal complexity analyzer), 공간 복잡도 누산기(704, spatial complexity accumulator), 시간 복잡도 누산기(705, temporal complexity analyzer) 및 너비 및 높이 계산기(710, width and height calculator)를 포함한다. 일부 실시예에서, 비디오 디코더(122)(도 3 참조)는 이퀴렉탱귤러 이미지 프레임 데이터를 생성하기 위해 비디오 스트림(701)(e.g. 구체 이미지 프레임 데이터 또는 360도 UHD 4K 프레임 데이터)을 디코딩 한다. 일부 실시예에서, 너비 및 높이 계산기(710)는 기 정의된 너비 및 높이 값에 기초하여 스케일링 된 상단 영역(e.g. 도 10의 상단 영역(624)) 또는 스케일링 된 하단 영역(e.g. 하단 영역(625))의 너비 및 높이를 결정한다. 일부 실시예에서, 너비 및 높이 계산기(710)는 공간 복잡도 분석 결과(e.g. 공간 복잡도 분석기(702)에 의해 수행된 분석의 결과) 또는 시간 복잡도 분석 결과(e.g. 시간 복잡도 분석기(703)에 의해 수행된 분석의 결과)에 기초하여 스케일링 된 상단 영역 또는 스케일링 된 하단 영역의 너비 및 높이를 결정한다. 일부 실시예에서, 공간 복잡도 분석기(702) 및 시간 복잡도 분석기(703)는 (1) 비디오 디코더(122)로부터 제공된 이퀴렉탱귤러 이미지 프레임에서 공간적으로 또는 시간적으로 복잡한 영역을 결정하고, (2) 더 복잡한 영역에 더 큰 너비 및/또는 높이를 할당한다.
일부 실시예에서, 공간 복잡도 분석기(702)는 이미지 프레임으로부터 노이즈(noise)을 제거함으로써 공간 복잡도 분석을 수행한다. 일부 실시예에서, 공간 복잡도 분석기(702)는 팔레트(palette)(e.g. 컬러 세트 - 예를 들어 24 비트 RGB 컬러는 1600만개의 컬러로 구성됨)를 적용함으로써 노이즈를 제거한다. 그 결과 각각의 원본 컬러가 대략적으로 팔레트 상의 특정 컬러로 재지정된다. 예를 들어, 8(R)x8(G)x8(B) 컬러의 팔레트를 이용하여 각 원본 컬러가 8(R)x8(G)x8(B) 중에 어느 하나의 컬러로 재지정될 수 있다. 일부 실시예에서, 공간 복잡도 분석기(702)는 하나의 이미지 프레임을 n x n 블록으로 분할하고 각 블록에서 상이한 컬러의 수를 카운트(count) 한다. 일부 실시예에서, 공간 복잡도 누산기(704)는 블록 당 카운트(e.g. 다수의 이미지 프레임들로부터)를 합산하거나 누적하여 블록 당 누적 카운트를 나타내는 공간 복잡도 맵(706)을 생성한다. 도 14는 스크린 샷(721)에 도시된 바와 같은 이미지 프레임 세트로부터 생성된 예시적인 공간 복잡도 맵(723)을 도시한다. 도 15는 스크린 샷(731)에 도시된 바와 같은 이미지 프레임 세트로부터 생성된 또 다른 예시적인 공간 복잡도 맵(733)을 도시한다. 일부 실시예에서, 그러한 공간 복잡도 맵으로부터, 너비 및 높이 계산기(710)는 더 많은 컬러를 갖는 객체(object)/영역을 더 많은 시각 정보(visual information)를 갖고 있는 복잡한 객체/영역으로 결정한다. 그리고, 너비 및 높이 계산기(710)는 (공간적으로) 더 복잡한 객체/영역에 더 큰 너비 및/또는 높이 값을 할당한다. 일부 실시예에서, 공간 복잡 분석기(702)는 OpenGL 또는 Directx와 같은 그래픽 API(application programming interface)를 이용하거나 GPU 상의 CUDA 또는 OpenCL과 같은 gpgpu API를 이용하여 공간 복잡도 분석을 수행한다.
일부 실시예에서, 시간 복잡도 분석기(703)는 영역 내에서 하나의 영상 프레임의 픽셀 값(e.g. 픽셀의 휘도 값 또는 RGB 값)이 이전 이미지 프레임의 동일한 픽셀 값에서 임계 값 이상 변화(e.g. 2개의 픽셀 휘도 값 또는 2개의 RGB 값의 차이)하는 픽셀의 수를 카운팅 하여 시간 복잡도 분석을 수행한다. 예를 들어, 두 프레임 사이에서, 임계 값보다 많은 양만큼 픽셀 값이 변하는 상단 영역의 픽셀의 수는 임계 값보다 더 많은 양만큼 값이 변하는 하단 영역의 픽셀의 수와 비교될 수 있다. 일부 실시예에서, 시간 복잡도 누산기(705)는 복수 개의 시간적으로 연속하는 이미지 프레임으로부터 각 픽셀 당 카운트(e.g. 각 픽셀의 값이 임계 값 이상으로 변화하는 횟수)를 유지하고, 각 픽셀 당 누적 카운트를 나타내는 시간 복잡도 맵(707)을 생성한다. 도 14는 스크린 샷(721)에 도시된 바와 같은 이미지 프레임 세트로부터 생성된 예시적인 시간 복잡도 맵(722)을 도시한다. 도 15는 스크린 샷(731)에 도시된 바와 같은 이미지 프레임 세트로부터 생성된 또 다른 예시적인 시간 복잡도 맵(732)을 도시한다. 일부 실시예에서, 그러한 시간 복잡도 맵으로부터, 너비 및 높이 계산기(710)는 더 빈번하게 변경된 픽셀들을 갖는 객체/영역을 보다 많은 시각 정보를 갖고 있는 더 복잡한 객체/영역으로 결정하고, (시간적으로) 더 복잡한 객체/영역에 더 큰 너비 및/또는 높이를 할당한다. 예를 들어, 복수 개의 시간적으로 연속하는 이미지 프레임으로부터, 상단 영역에서 각 픽셀 당 평균 카운트(e.g. 각 픽셀의 값이 임계 값보다 더 많이 변화하는 평균 횟수)가 하단 영역의 각 픽셀 당 평균 카운트와 비교될 수 있다. 일부 실시예에서, 시간 복잡도 분석기는 OpenGL 또는 DirectX와 같은 그래픽 API 또는 GPU 상의 CUDA 또는 OpenCL과 같은 gpgpu API를 이용하여 시간 복잡도 분석을 수행한다.
일부 실시예에서, 도 13에 도시된 결합 단계(709)에서, 너비 및 높이 계산기(710)는 공간 복잡도 맵(706)으로부터 계산된 공간 복잡도와 시간 복잡도 맵(707)으로부터 계산된 시간 복잡도를 결합함으로써 다운스케일링 된 영역의 너비 및 높이를 계산한다. 일부 실시예에서, 상단 영역과 하단 영역의 전체 너비 대비 주어진 영역(area)의 너비 비율(width ratio)를 가리키는 W(area)는 하기의 수학식 1 및 수학식 2에 의해 정의된다.
상기 수학식 1 및 상기 수학식 2에서, W(area)는 주어진 영역(area)의 너비 비율을 가리키고, Ct(area)는 주어진 영역(area)의 시간 복잡도를 가리킨다. Cs(area)는 주어진 영역(area)의 공간적 복잡도를 가리키고, Coefftemporal은 시간 복잡도의 비율을 조절하는 계수 인자(또는 가중치)를 가리키며(기본값은 0.5). Coeffspatial은 공간 복잡도의 비율을 조절하는 계수 인자(또는 가중치)를 가리킨다 (기본값은 0.5). 예를 들어, 상단 영역의 너비 비율은 하기의 수학식 3에 의해 계산될 수 있다.
하단 영역의 너비 비율은 Ct(p) 및 Cs(top)를 Ct(bottom) 및 Cs(bottom)로 대체하여 유사하게 계산될 수 있다. 일부 실시예에서, 상기 수학식 1 및 상기 수학식 2를 이용하여 주어진 영역(area)의 너비 비율을 결정하는 상기 방법과 유사한 방식으로, 다운스케일링 된 좌측 영역 및 우측 영역 각각의 너비가 스케일링 된 중간 영역의 너비에 대하여 결정될 수 있다.
일부 실시예에서, 주어진 영역의 너비 비율이 기 정의된 임계 값(e.g. 0.7)보다 큰 경우, 너비 및 높이 계산기(710)는 전체 너비(e.g. 상단 영역 및 하단 영역의 원래 너비)를 상단 영역 및 하단 영역 모두에 할당할 수 있다. 왜냐하면, (하나의 영역이 너무 큰 너비로 할당되는 경우) 다른 영역의 너비는 너무 작아지게 될 수 있기 때문이다. 예를 들어, 상단 영역의 너비가 기 정의된 임계 값보다 큰 경우, 상단 영역과 하단 영역 모두 원래 너비가 각각 할당되거나(너비가 변경되지 않음) 둘다 중간 영역의 너비와 동일한 너비가 할당된다.
일부 실시예에서, 도 14에 도시된 시간 복잡도 맵(722) 및 공간 복잡도 맵(723)으로부터, Ct(Top), Ct(Bottom), Cs(Top) 및 Cs(Bottom)는 다음과 같이 계산된다.
Ct(Top) = 156.81, Ct(Middle) = 293.68, Ct(Bottom) = 711.44
Cs(Top) = 23.01, Cs(Middle) = 44.15, Cs(Bottom) = 49.34
디폴트 계수 값(Coefftemporal = Coeffspatial = 0.5)으로 수학식 1 및 수학식 2를 적용하면, W(Top)은 0.25가 산출되고 W(Bottom)은 0.75가 산출된다. 즉, 너비 및 높이 계산기(710)는 상단 영역보다 하단 영역에 3배 이상의 너비를 할당할 수 있다.
일부 실시예에서, 너비 및 높이 계산기(710)는 상기 수학식 2 및 하기 수학식 4를 이용하여 주어진 영역(area) 및 중간 영역의 전체 높이 대비 주어진 영역의 높이 비율(height ratio)을 가리키는 H(area)를 결정할 수 있다.
상기 수학식 4에서, H(area)는 주어진 영역(area)과 중간 영역의 전체 높이 대비 주어진 영역(area)의 높이 비율을 가리킨다. Ct(area)는 주어진 영역(area)의 시간 복잡도를 가리키고, Cs(area)은 주어진 영역(area)의 공간 복잡도를 가리킨다. Coefftemporal은 시간 복잡도의 비중을 조절하는 계수 인자(또는 가중치)를 가리키고 (기본값은 0.5), Coeffspatial은 공간 복잡도의 비중을 조절하는 계수 인자(또는 가중치)를 가리킨다(기본값은 0.5). 일부 실시예에서, 너비 및 높이 계산기(710)는 리포맷팅 된 이미지의 (전체) 높이의 기 설정된 퍼센티지(e.g. 25%)를 상단 영역 및 하단 영역 각각에 할당할 수 있다. 그러나, 상기 수학식 2 및 상기 수학식 4을 이용하여 계산된 상단 부분 영역 또는 하단 영역의 높이 비율이 기 정의된 임계 값 이상인 경우라면 더 큰 높이를 각각의 영역에 할당할 수도 있다.
일부 실시예에서, 도 13에 도시된 바와 같이, 스케일링 된 영역의 너비 및 높이를 계산할 때, 사용자 통계(708)(e.g. 클라이언트 디바이스를 통한 사용자의 행동을 가리키는 데이터)가 적용될 수 있다. 예를 들어, 클라이언트 디바이스는 시청 각도의 값이 변경될 때마다 사용자의 시청 각도가 포함된 FOV 정보를 전송할 수 있으므로, 사용자가 각 프레임마다 사용자가 보고 있는 것과 관련한 정보가 수집될 수 있다(e.g. 서버에서). 보다 구체적인 예를 들어, 클라이언트 디바이스의 요(yaw) (또는 x-축) 각도(또는 헤드 기어의 요 각도)가 45도 보다 크거나 -45도 보다 작을 때, 클라이언트의 요 각도가 포함된 FOV 정보를 수신하면 너비 및 높이 계산기(710)는 (클라이언트 디바이스의) 사용자가 현재 프레임의 상단 또는 하단을 각각 보고 있는 것을 결정할 수 있다. 그러한 사용자의 행동 데이터를 충분히 수집한 후에, 너비 및 높이 계산기(710)는 수학식 1 및 2에서 항(term)이 추가된 하기 수학식 5 및 하기 수학식 6을 이용함으로써, 사용자 통계 데이터에 기초하여 갱신된 너비 및 높이를 계산하고, 갱신된 너비 및 높이로 FOV 별 비디오 파일을 재생성할 수 있다.
상기 수학식 5 및 상기 수학식 6에서, F(area)는 사용자(또는 사용자들)가 주어진 영역(area)을 보는 프레임의 개수를 가리키고, Coeffstat는 사용자 통계의 비중을 조절하는 계수 인자 (또는 가중치)를 가리킨다.
이하에서는, 도 13 내지 도 15를 참조하여, 도 7에 도시된 흐름도에 대하여 보다 상세하게 설명하도록 한다. 도 7을 참조하면, 단계(531)에서, 제1 이퀴렉탱귤러 이미지 프레임 데이터의 시간 복잡도 맵(e.g. 시간 복잡도 맵(707))이 생성될 수 있다. 일부 실시예에서, 비디오 서버는 제1 프로세서로 하여금 시간 복잡도에 기초하여 제1 이퀴렉탱귤러 이미지의 복잡도 맵을 생성하도록 더 구성된다. 구체적으로, 동일한 픽셀의 값이 한 프레임과 다음 프레임 사이에서 임계 값 이상으로 변동되는, 그러한 픽셀의 변화가 카운팅 됨으로써 시간 복잡도 맵이 생성된다. 도 13을 참조하면, 시간 복잡도 분석기(703)는 하나의 영상 프레임의 픽셀 값이 이전 영상 프레임의 동일 픽셀 값에서 임계 값 이상으로 변동되는 그러한 픽셀에서의 변화를 카운팅 함으로써 시간 복잡도 분석을 수행할 수 있다. 일부 실시예에서, 시간 복잡도 누산기(705)는 복수 개의 시간적으로 연속하는 이미지 프레임으로부터 각 픽셀 당 카운트를 유지하고 각 픽셀 당 누적 카운트를 나타내는 시간 복잡도 맵(707)을 생성한다.
단계(532)에서, 제1 이퀴렉탱귤러 이미지 프레임 데이터의 공간 복잡도 맵(e.g. 공간 복잡도 맵(706))이 생성될 수 있다. 일부 실시예에서, 비디오 서버는 제1 프로세서로 하여금 공간 복잡도에 기초하여 제1 이퀴렉탱귤러 이미지의 복잡도 맵을 생성하도록 구성된다. 일부 실시예에서, 비디오 서버는 제1 이퀴렉탱귤러 이미지에 포함된 복수의 블록 각각에서 상이한 컬러의 수를 카운트 함으로써 제1 프로세서로 하여금 공간 복잡도에 기초한 제1 이퀴렉탱귤러 이미지의 복잡도 맵을 생성하도록 더 구성된다. 예를 들어, 도 13에 도시된 바와 같이, 공간 복잡도 분석기(702)는 팔레트(e.g. 컬러 세트 - 예를 들어, 24 비트 RGB 컬러가 1600만 컬러로 구성됨)를 적용함으로써 노이즈를 제거할 수 있다. 그 결과, 각각의 원본 컬러는 대략적으로 팔레트에서 하나의 컬러로 재지정될 수 있다. 예를 들어, 8(R)x8(G)x8(B) 컬러의 팔레트를 이용하여 각 원본 컬러가 8(R)x8(G)x8(B) 컬러 중에 하나의 컬러로 재지정될 수 있다. 일부 실시예에서, 공간 복잡도 분석기(702)는 하나의 이미지 프레임을 n x n 블록으로 분할하고 각 블록에서 상이한 컬러의 수를 카운트 한다. 일부 실시예에서, 공간 복잡도 누산기(704)는 블록 당 카운트를 합산하거나 누적하고 (e.g. 다수의 이미지 프레임으로부터) 블록 당 누적 카운트를 나타내는 공간 복잡도 맵(706)을 생성한다.
단계(533)에서, 시간 복잡도 맵 및 공간 복잡도 맵을 결합함으로써 결합된 복잡도 맵이 생성될 수 있다. 일부 실시예에서, 결합된 복잡도 맵은 시간 복잡도 맵 및 공간 복잡도 맵의 가중치 합(weighted sum)으로 산출될 수 있다. 예를 들어, 특정 블록(block)에 대한 결합된 복잡도 맵은 제1 수학식(Coefftemporal x Ct(block) + Coeffspatial x Cs(block))과 제2 수학식(Coefftemporal + Coeffspatial = 1.0)을 이용하여 산출될 수 있으며, 상기 제1 수학식 및 상기 제2 수학식에서 Coefftemporal 및 Coeffspatial는 시간 복잡도 맵과 공간 복잡도 맵 각각의 비중을 조절하는 계수 인자(또는 가중치)를 가리키고, Cs(block)는 블록(block) 내의 상이한 색의 누적 합계를 가리키며, Ct(block)는 한 프레임과 그 다음 프레임 사이에 블록(block) 내의 픽셀에서 픽셀 값 변화에 대한 카운트의 누적 합계를 가리킨다.
단계(534)에서, 제1 이퀴렉탱귤러 이미지 프레임 데이터의 다운스케일링 된 상단 영역, 하단 영역, 좌측 영역 또는 우측 영역 각각의 너비 및 높이는 결합된 복잡도 맵에 기초하여 결정될 수 있다. 비디오 서버는, 제2 영역 및 제3 영역에 대한 스케일링을 수행하기 전에, 생성된 복잡도 맵에 기초하여 스케일링 된 제2 영역 및 스케일링 된 제3 영역 각각의 너비 및 높이를 결정하고, 결정된 너비 및 높이를 갖는 스케일링 된 제2 영역 및 스케일링 된 제3 영역을 각각 형성하도록 구성된다. 예를 들어, 일부 실시예에서, 다운스케일링 된 상단 영역과 하단 영역 각각의 너비는 상기 수학식 1 및 상기 수학식 2를 이용하여 계산될 수 있다. 일부 실시예에서, 다운스케일링 된 상단 영역 및 하단 영역 각각의 높이는 상기 수학식 4를 이용하여 계산될 수 있다.
도 8은 일부 실시예에 따라 리포맷팅 된 제1 이퀴렉탱귤러 이미지의 영역 사이의 경계에서 아티팩트를 처리하는 동작을 도시하는 흐름도이다. 개략적으로 살펴보면, 방법(560)은 재배치된(리포맷팅 된) 상단 영역과 재배치된 하단 영역 사이의 경계에 리던던트 픽셀(redundant pixel)이 추가될 수 있는 단계(561)에서 시작된다. 단계(562)에서, 재배치된 중간 영역과 재배치된 상단 영역 사이의 경계에 리던던트 픽셀이 추가될 수 있다. 도 8에 도시된 흐름도는 이하 도 16 내지 도 20을 참조하여 보다 상세하게 설명하도록 한다.
도 16, 도 17, 도 18, 도 19 및 도 20은 일부 실시예에 따라, 예시적인 VR 비디오 처리 시스템에서 재배치된(또는 리포맷팅 된) 영역들 사이의 경계에서 아티팩트를 감소시키는 예시적인 방법을 설명하기 위한 도면이다. MPEG-4 AVC(H.264) 코덱과 같은 표준 형식을 사용하는 인코더가 인트라 프레임 예측(intra frame prediction) 및 인터 프레임 예측(inter frame prediction)에 의해 블록의 컬러를 최적화 하는 경우, 스케일링 된 영역의 경계에서 아티팩트가 발생할 수 있다. 이러한 최적화에 의해, 도 10에 도시된 바와 같이, 특정 블록에 이웃한 블록의 컬러가 특정 블록의 컬러에 영향을 미치고, 이로 인해 스케일링 된 영역 사이의 경계(e.g. 상단 영역(624)와 하단 영역(625) 사이의 경계, 상단 영역(624)과 중간 영역(621)사이의 경계 또는 하단 영역(625)과 중간 영역(621) 사이의 경계)에서 아티팩트가 발생한다. 이러한 아티팩트를 줄이기 위해, 일부 실시예에서, 리던던트 픽셀(e.g. 중복 픽셀, 반복 픽셀) 이 경계 부근에 추가된다(e.g. 4 내지 8개의 픽셀). 이러한 리던던트 픽셀은 이미지의 재구성에 이용되지 않고, 해당 픽셀의 이웃한 픽셀의 컬러에 영향을 미치지 않는다. 일부 실시예에서, 마지막 픽셀(e.g. 가장 왼쪽 픽셀)에 추가된 리더던트 픽셀은 첫 번째 픽셀(e.g. 가장 오른쪽 픽셀)을 반복한다. 그 결과, 구형 비디오의 본질에 의해 마지막 픽셀이 첫번째 픽셀에 연속적으로 연결된다. 이와 같은 경우, "예측" 모듈이 작동하면 연결된 픽셀의 컬러가 멋지게 혼합된다. 예를 들어, 상단 영역의 가장 오른쪽 부분에 추가된 리던던트 픽셀은 상단 영역의 가장 왼쪽 부분에서 복사된다. 이는, 상단 영역의 가장 오른쪽 부분에 위치한 픽셀은 상단 영역의 가장 왼쪽 부분에 위치한 픽셀과 연결되기 때문이다. 이와 유사하게, 상단 영역의 하단 부분에 추가된 리던던트 픽셀은 중간 영역의 상단 부분에서 복사된다. 이는, 상단 영역의 하단 부분에 위치한 픽셀은 중간 영역의 상단 부분에 위치한 픽셀과 연결되기 때문이다. 상단 영역의 하단 부분의 픽셀은 중간 영역의 상단 부분의 픽셀에 연결됩니다. 이와 유사하게, 일부 실시예에서, 하단 영역의 상단 부분에 추가된 리던던트 픽셀은 중간 영역의 하단 부분에서 복사된다. 이는, 하단 영역의 상단 부분에 위치한 픽셀은 중간 영역의 하단 부분에 위치한 픽셀과 연결되기 때문이다.
일부 실시예에서, "예측" 모듈은 H.264와 같은 인코더의 일부입니다. 일부 실시예에서, 경계 근처의 블록에 대한 "예측 모듈"의 예측 행동을 제어하여 아티팩트가 제거될 수 있다. 이를 위해, 인트라 프레임 예측 또는 인터 프레임 예측을 처리하는 컨트롤러 로직이 추가될 수 있다. 예측 모듈의 예측 행동에 대한 예시적인 제어는 http://slideplayer.com/slide/3819249/에서 이용 가능한 "H.264 비디오 표준에 대한 소개"라는 제목의 웹 문서에 설명되어 있으며, 상기 웹 문서에 개시된 내용 중에서 본 특허 출원에서 설명된 기능을 달성하기 위해 예측 모듈에서 예측 행동을 제어하는 방법에 대한 자세한 내용은 본 명세서에 참조로 포함된다. 일부 실시예에서, 영역 사이의 경계에서 아티팩트를 피하거나 줄이기 위해, 컨트롤러 로직(logic)을 추가함으로써 인코더 내의 예측 모듈이 수정될 수 있다. 추가된 컨트롤러 로직에 의해, 인코더에 포함된 예측 모듈이 경계 근처의 특정 블록을 스킵(skip)하도록 제어될 수 있다.
도 16은 예시적인 이퀴렉탱귤러 이미지 프레임 데이터(420')(좌측) 및 이에 대응되는 리포맷팅 된 이미지 프레임 데이터(629')(우측)를 도시한다. 이미지 프레임 데이터(420')는 (m x n) 픽셀의 해상도를 가지고, (m x tb_n) 해상도를 갖는 상단 부분(421), (m x mid_n) 해상도를 갖는 중간 부분(422), 및 (m x tb_n) 해상도를 갖는 하단 부분(423)을 포함한다. 리포맷팅 된 이미지 프레임 데이터(620')는 (2m' x (tb_n' + mid_n)) 픽셀의 해상도를 가지고, 상단 영역(624)(상단 부분(421)에서 다운스케일링 됨), 하단 영역(625)(하단 부분(423)에서 다운스케일링 됨) 및 그 아래에 있는 중간 영역(621)(중간 부분(422)에서 스케일링 됨)을 포함한다. 상단 영역(624) 및 하단 영역(625)은 서로 나란하게 인접하고, 중간 영역(621)은 상단 영역(624) 및 하단 영역(625)의 아래에 인접한다. 상단 영역(624) 및 하단 영역(625)은 각각 (m' x tb_n') 해상도를 갖고, 중간 영역(621)은 (2m' x mid_n) 해상도를 갖는다. 도 16 내지 도 20에 도시된 바와 같은 리포맷팅 된 이미지 프레임 데이터는 설명의 편의를 위해 왼쪽 영역 또는 오른쪽 영역을 포함하지 않는다. 그러나, 도 16 내지 도 20을 참조하여 후술할 영역 경계 내의 아티팩트 감소 방법은 리포맷팅 된 이미지 프레임 데이터가 좌측 영역 또는 우측 영역 또는 이들 모두를 포함하는 경우에도 적용될 수 있음에 유의한다. 도 16을 참조하면, (m x tb_n) 픽셀을 갖는 상단 부분(421)은 (m' x tb_n') 픽셀을 갖는 상단 영역(624)으로 다운스케일링 되고, (m x tb_n) 픽셀을 갖는 하단 부분(423)은 (m' x tb_n') 픽셀을 갖는 하단 영역(625)으로 다운스케일링 되며, (m x mid_n) 픽셀을 갖는 중간 부분(422)은 (2m' x mid_n) 픽셀을 갖는 중간 영역(621)으로 다운스케일링 된다.
도 17은 일부 실시예에 따라, 재배치된(또는 리포맷팅 된) 상단 영역과 재배치된 하단 영역 사이의 경계에서 아티팩트를 감소시키는 예시적인 방법을 설명하기 위한 도면이다. 일부 실시예에서, 리포맷팅 된 이미지 프레임 데이터는 리포맷팅 된 영역들 사이의 경계 근처에서 아티팩트를 피하기 위해 마진(margin, e.g. 수평 마진(h_margin) 및 수직 마진(v_margin))을 갖는 레이아웃을 이용한다. 예를 들어, 도 17에 도시된 바와 같이, (m x tb_n) 픽셀을 갖는 상단 부분(421)은 ((m' - h_margin) x tb_n') 픽셀을 갖는 상단 영역(624)으로 다운스케일링 되고, (m x tb_n) 픽셀을 갖는 하단 부분(423)은 ((m' - h_margin) x tb_n') 픽셀을 갖는 하단 영역(625)으로 다운스케일링 되며, (m x mid_n) 픽셀을 갖는 중간 부분(422)은 (2m' x mid_n) 픽셀을 갖는 중간 영역(621)으로 다운스케일링 된다. 일부 실시예에서, 상단 영역(624)의 h_margin 부분(804)은 원래의 상단 부분(421)의 가장 왼쪽 부분(801)으로부터 다운스케일링 된 상단 영역(624)의 가장 왼쪽 부분(803)으로부터 복사된다. 일부 실시예에서, 하단 영역(625)의 h_margin 부분(805)은 원래의 하단 부분(423)의 가장 오른쪽 부분(802)으로부터 다운스케일링 된 하단 영역(625)의 가장 오른쪽 부분(806)으로부터 복사된다. 도 18은 상단 영역(624)과 하단 영역(625)의 상세 레이아웃(layout)을 도시한다. 예를 들어, 상단 영역(624)의 h_margin 부분(804)은 상단 영역(624)의 가장 왼쪽 부분(803)에 위치한 4개의 픽셀 열(T0,j, T1,j , T2,j, T3,j)로부터 복사된다. 유사하게, 하단 영역(625)의 h_margin 부분 (805)은 하단 영역(625)의 가장 오른쪽 부분(806)에 위치한 4개의 픽셀 열(BN-1,j, BN-2,j, BN-3,j, BN-4,j)로부터 복사된다.
도 19는 일부 실시예에 따라, 재배치된(또는 리포맷팅 된) 상단 영역과 재배치된 중간 영역 사이의 경계에서 아티팩트를 감소시키는 예시적인 방법을 설명하기 위한 도면이다. 예를 들어, 도 19에 도시된 바와 같이, (m x tb_n) 픽셀을 갖는 상단 부분(421)은 ((m'x (tb_n' - v_margin)) 픽셀을 갖는 상단 영역(624)으로 다운스케일링 되고, (m x mid_n) 픽셀을 갖는 중간 부분(422)은 ((m' - h_margin) x tb_n') 픽셀을 갖는 하단 영역(625)으로 다운스케일링 되며, (m x mid_n) 픽셀을 갖는 중간 부분(422)은 ((2m'x (mid_n - v_margin)) 픽셀을 갖는 중간 영역(621)으로 스케일링 또는 다운스케일링 된다. 일부 실시예에서, 상단 영역(624)의 v_margin 부분(814)은 원래의 중간 부분(422)의 가장 위쪽 부분(812)으로부터 다운스케일링 된 중간 영역(621)의 가장 위쪽 부분(816)에서 복사된다. 일부 실시예에서, 중간 영역(621)의 v_margin 부분(815)은 원래의 상단 부분(421)의 가장 아래쪽 부분(811)으로부터 다운스케일링 된 상단 영역(624)의 가장 아래쪽 부분(813)에서 복사된다.
일부 실시예에서, 도 17 내지 도 19에 도시된 마진을 갖는 레이아웃은 결합될 수 있다. 즉, 마진이 있는 결합된 레이아웃을 이용하여, (1) 재배치된(또는 리포맷팅 된) 상단 영역과 재배치된 하단 영역 사이의 경계와 (2) 재배치된 상단 영역과 재배치된 중간 영역 사이의 경계에서 모두 아티팩트가 감소될 수 있다. 예를 들어, (m x tb_n) 픽셀을 갖는 상단 부분은 ((m' - h_margin) x (tb_n' - v_margin)) 픽셀을 갖는 상단 영역으로 다운스케일링 되고, (m x tb_n) 픽셀을 갖는 하단 부분은 ((m' - h_margin) x (tb_n' - v_margin)) 픽셀을 갖는 하단 영역으로 다운스케일링 되고, (m x mid_n) 픽셀을 갖는 중간 부분(422)은 ((2m' x (mid_n - v_margin)) 픽셀을 갖는 중간 영역(621)으로 다운스케일링 또는 스케일링 된다. 일부 실시예에서, 이와 같은 레이아웃으로, 상단 영역의 가장 오른쪽 h_margin 부분은 상단 영역의 가장 왼쪽 부분에서 복사되고, 하단 영역의 가장 왼쪽 h_margin 부분은 하단 영역의 가장 오른쪽 부분에서 복사된다. 일부 실시예에서, 상단 영역의 가장 아래쪽 v_margin 부분은 중간 영역의 가장 위쪽 부분에서 복사되고, 중간 영역의 가장 위쪽 v_margin은 상단 영역의 가장 아래쪽 부분에서 복사된다. 일부 실시예에서, 어떤 영역도 상단 영역의 위쪽 부분에 연속적으로 연결되지 않기 때문에(그리고 상단 영역의 위쪽 부분이 북극 영역이기 때문에), v_margin 부분이 상단 영역의 위쪽 부분에 추가되지 않는다. 또는, 일부 실시예에서, 상단 영역의 위쪽 부분에 있는 v_margin 부분은 "돈 케어(DON'T CARE)" 콘텐츠로 채워진다. 일부 실시예에서, 어떤 영역도 하단 영역의 아래쪽 부분에 연속적으로 연결되지 않기 때문에(그리고 하단 영역의 아래쪽 부분이 남극 영역이기 때문에), v_margin 부분이 하단 영역의 아래쪽 부분에 추가되지 않는다. 또는, 일부 실시예에서, 하단 영역의 아래쪽 부분에 있는 v_margin 부분은 "돈 케어(DON'T CARE)" 콘텐츠로 채워진다.
도 20은 일부 실시예에 따라, 중첩된 수직 마진(overlapped vertical margin)을 갖는 레이아웃을 이용하여 재배치된(또는 리포맷팅 된) 하단 영역과 재배치된 중간 영역 사이의 경계에서 아티팩트를 감소시키는 예시적인 방법을 설명하기 위한 도면이다. 일부 실시예에서, 도 20에 도시된 바와 같이, (리포맷팅 된 이미지 프레임(620")으로 스케일링 되고 리포맷팅 되는) 원래의 이미지 프레임 데이터(420")에서, 상단 부분(421) 및 중간 부분(422)은 중첩된 마진 부분(832)을 공유한다. 그리고, 하단 부분(423)과 중간 부분(422)은 중첩된 마진 부분(833)을 공유한다. 도 20에 도시된 바와 같이, 이와 같은 중첩된 수직 마진을 갖는 레이아웃에서, 재배치된 상단 영역(624)과 재배치된 중간 영역(621)의 경계 근처 및 재배치된 중간 영역(621)과 재배치된 하단 영역(625) 사이의 경계 근처에서 (색) 품질의 급격한 변화가 감소될 수 있다. 일부 실시예에 따르면, 이와 같은 중첩된 수진 마진을 갖는 레이아웃에서, (m x tb_n) 픽셀을 갖는 상단 부분(421)은 ((m' - h_margin) x tb_n') 픽셀을 갖는 상단 영역(624)으로 다운스케일링 되고, (m x tb_n) 픽셀을 갖는 하단 부분(423)은 ((m' - h_margin) x tb_n') 픽셀을 갖는 하단 영역(625)으로 다운스케일링 되며, (m x mid_n) 픽셀을 갖는 중간 부분(422)은 (2m' x mid_n) 픽셀을 갖는 중간 영역(621)으로 다운스케일링 또는 스케일링 된다. 일부 실시예에 따르면, 이와 같은 레이아웃에서, 공유된 v_margin 영역(832)은 상단 영역(624)의 대응 부분(837)으로 다운스케일링 되고. 중간 영역(621)의 대응 부분(841)으로 다운스케일링 또는 스케일링 된다. 유사하게, 공유된 v_margin 영역(833)은 하단 영역(625)의 대응 부분(838)으로 다운스케일링 되고 중간 영역(621)의 대응 부분 (842)으로 다운스케일링 또는 스케일링 된다. 일부 실시예에서, 상단 영역(624)의 h_margin 부분(836)은 원래 상단 부분(421)의 가장 왼쪽 부분(831)으로부터 다운스케일링 된 상단 영역(624)의 가장 왼쪽 부분(835)에서 복사된다. 일부 실시예에서, 하단 영역(625)의 h_margin 부분(839)은 원래 하단 부분(423)의 가장 오른쪽 부분(834)으로부터 다운스케일링 된 하단 영역(625)의 가장 오른쪽 부분(840)에서 복사된다. 도 16 내지 도 20에 도시된 레이아웃 및 방법은 도 11에 도시된 리포맷팅 된 레이아웃에 기반한다. 도 11에서 리포맷팅 된 상단 영역 및 하단 영역은 리포맷팅 된 중간 영역에 인접하여 위치한다. 일부 실시예에서, 유사한 레이아웃 및 방법이 도 12에 도시된 리포맷팅 된 레이아웃에도 적용될 수 있다. 도 12에서 리포맷팅 된 상단 영역 및 하단 영역은 리포맷팅 된 중간 영역에 인접하고, 리포맷팅 된 중간 영역은 리포맷팅 된 상단 영역 및 하단 영역 아래에 위치한다.
이하에서는, 도 16 내지 도 20을 참조하여 도 8에 도시된 흐름도에 대하여 보다 상세하게 설명하도록 한다. 도 8에 도시된 바와 같이, 단계(561)에서, 일부 실시예에 따라, 리던던트 픽셀(e.g. 도 17 및 도 18에 도시된 h_margin 부분(804, 805)의 픽셀)은 다운스케일링 된 상단 영역(e.g. 도 17에서 상단 영역(624)) 및 다운스케일링 된 하단 영역(e.g. 도 17에서 하단 영역(625))에 추가될 수 있다. 일부 실시예에서, 인코딩(e.g. 도 6에 도시된 단계(570)) 이전 및 재배치(e.g. 도 6에 도시된 단계(550)) 이후에, 비디오 서버는, 제1 프로세서로 하여금 스케일링 된 상단 영역(e.g. 도 17의 상단 영역(624))과 스케일링 된 하단 영역(e.g. 도 17에서 하단 영역(625)) 사이의 경계에 리던던트 픽셀(e.g. h_margin 부분(도 17 및 도 18에서 804, 805)의 픽셀들) 추가하도록 더 구성된다. 일부 실시예에서, 상단 영역(624)의 h_margin 부분(804)은 원래의 상단 부분(421)의 가장 왼쪽 부분(801)으로부터 다운스케일링 된 상단 영역(624)의 가장 왼쪽 부분(803)에서 복사된다. 일부 실시예에서, 하단 영역(625)의 h_margin 부분(805)은 원래의 하단 부분(423)의 가장 오른쪽 부분(802)으로부터 다운스케일링 된 하단 영역(625)의 가장 오른쪽 부분(806)에서 복사된다.
도 19에 도시된 바와 같이, 단계(562)에서, 일부 실시예에 따라, 리던던트 픽셀(e.g. v_margin 부분(814 및 815)의 픽셀)이 스케일링 된 중간 영역(e.g. 중간 영역(621))과 다운스케일링 된 상단 영역(e.g. 상단 영역(624) 사이의 경계에 추가될 수 있다. 도 19에 도시된 바와 같이, 일부 실시예 따르면, 비디오 서버는 인코딩(e.g. 도 A6의 단계(570)) 이전 및 재배치(e.g. 도 6의 단계(550)) 이후에 제1 프로세서로 하여금 리던던트 픽셀을 스케일링 된 중간 영역의 제1 부분(e.g. v_margin 부분(815)) 및 스케일링 된 상단 영역의 제2 부분(e.g. v_margin 부분(814))에 추가하도록 더 구성된다. 이때, 제1 부분 및 제2 부분은 서로 인접한다(e.g. v_margin 부분(815) 및 v_margin 부분(814)이 서로 인접함). 도 19에 도시된 바와 같이, 일부 실시예에서, 상단 영역(624)의 v_margin 부분(814)은 원래 중간 부분(422)의 가장 위쪽 부분(812)으로부터 다운스케일링 또는 스케일링 된 중간 영역(621)의 가장 위쪽 부분(816)에서 복사된다. 도 19에 도시된 바와 같이, 일부 실시예에서, 중간 영역(621)의 v_margin 부분(815)은 원래의 상단 부분(421)의 가장 아래쪽 부분(811)으로부터 다운스케일링 된 상단 영역(624)의 가장 아래쪽 부분(813)에서 복사된다.
도 21은 일부 실시예에 따라, 예시적인 VR 클라이언트 디바이스에서 수행되는 예시적인 비디오 프로세싱 및 렌더링 방법의 동작을 도시하는 흐름도이다. 개략적으로 살펴보면, 방법(900)은 클라이언트 디바이스가 현재 FOV에 관한 정보를 서버에 전송할 수 있는 단계(910)에서 시작된다. 단계(920)에서, 클라이언트 디바이스는 서버로부터 프레임 및 프레임과 관련된 갱신된 FOV에 관한 정보를 수신할 수 있다. 단계(930)에서, 클라이언트 디바이스는 서버에 의해 결정된 다운스케일링 된 영역의 너비 및 높이와 리포맷 정보를 수신할 수 있다. 단계(940)에서, 수신된 프레임은 클라이언트 디바이스의 메모리에 버퍼링 될 수 있다. 단계(950)에서, 수신된 프레임은 FOV, 다운스케일링 된 영역의 너비/높이 및 리포맷 정보에 기초하여 디코딩 될 수 있다. 단계(960)에서, 프레임은 상기 프레임을 대응되는 FOV 및 타임스탬프와 매핑함으로써 동기화될 수 있다. 단계(970)에서, 프레임의 구체 이미지가 재구성될 수 있다. 단계(980)에서, 프레임의 구체 이미지가 렌더링 될 수 있다.
이하에서는, 도 24 내지 도 26을 참조하여 도 21에 도시된 흐름도에 대하여 보다 상세하게 설명하도록 한다. 도 24, 도 25 및 도 26은 일부 실시예에 따라, 예시적인 VR 클라이언트 디바이스에서 수행되는 비디오 프로세싱 및 렌더링 방법을 설명하기 위한 도면이다. 구체적으로, 도 24는 예시적인 VR 클라이언트 디바이스(200A)와 예시적인 VR 비디오 스트리밍 시스템(100) 사이의 예시적인 데이터 통신 방법을 도시한다. 일부 실시예에서, 클라이언트 디바이스(200A)는 현재의 시청 각도(e.g. 도 9에 도시된 시청 각도(602))를 서버로(또는 도 3에 도시된 서버(100)의 통신 서버(130)) 송신할 수 있다. 일부 실시예에서, 도 24에 도시된 바와 같이, 클라이언트 디바이스(200A)는 현재의 FOV(e.g. 방위각 기준 FOV, 수직 각도 기준 FOV 또는 피치 각)에 관한 정보를 서버(100)에 전송할 수 있다(단계 1001). 일부 실시예에서, 클라이언트 디바이스(200A)가 현재 시청 각도를 송신하는 것에 응답하여, 서버(100)(또는 도 3에 도시된 스트리밍 서버(140))는 클라이언트 디바이스(200A)에 의해 송신된 현재 시청 각도에 대응되는 새로운 비디오 프레임 또는 GOP 이미지 GOP(GOP)를 클라이언트 디바이스(200A)로 송신한다(단계 1002). 일부 실시예에서, 서버(100)는 또한 새로운 비디오 프레임 또는 GOP에 대응되는 프레임 시퀀스 번호(frame sequence number, frame#)를 클라이언트 디바이스(200A)로 송신할 수 있다. 일부 실시예에서, 서버(100)(또는 도 3에 도시된 통신 서버(130))는 시청 각도 또는 FOV를 갱신하고 갱신된 시청 각도 또는 갱신된 FOV를 클라이언트 디바이스(200)로 되돌려 보낼 수 있다(단계 1003 참조). 일부 실시예에서, 서버(100)는 웹 소켓 프로토콜을 통해 프레임 시퀀스 번호와 함께 시청 각도를 송신함으로써 실시간으로 시청 각도를 클라이언트 디바이스로 되돌려 보낼 수 있다. 일부 실시예에서, 서버(100)는 예를 들어 비디오 스트림의 서브 타이틀(subtitle)을 이용하여 비디오 스트림의 메타데이터(metadata)로서 시청 각도를 송신함으로써 시청 각도를 되돌려 보낼 수 있다. 일부 실시예에서, 모든 비디오 프레임 각각은 (1) 웹 소켓 (2) 메타데이터(e.g. 서브타이틀)를 통해 방위각 값으로 프레임의 시청 각도를 전달한다. 어느 경우이든지, 서버에 의해 전송된 시청 각도는 현재 시청자의 FOV에 대해 계산되고 적용될 수 있다. 일부 실시예에서, 각 프레임 또는 GOP의 프레임은 클라이언트 디바이스(200A)에서 적절하게 렌더링 되기 위해 대응되는 시청 각도 또는 FOV를 갖는다. 일부 실시예에서, 서버(100)는 리포맷 정보(e.g. 도 13 내지 도 15에 도시된 방법을 이용하여 계산된 상단/하단/좌측/우측 영역의 너비 및 높이, 도 10 및 도 11에 4에 도시된 바와 같이 리포맷팅 된 프레임 데이터 내의 상단/하단/좌측/우측 영역의 상대적 위치 및 도 16 내지 도 20에 도시된 바와 같이 마진 또는 중첩된 마진을 갖는 레이아웃에 대한 정보)를 클라이언트 디바이스(200A)로 송신할 수 있다. 일부 실시예에서, 비디오 프레임, 대응되는 시청 각도 또는 FOV 및 기타 리포맷 정보의 수신에 응답하여, 클라이언트 디바이스(200A)는 비디오 프레임을 버퍼링 및 디코딩 하고, 디코딩 된 비디오 프레임을 정확하게 구체 프레임을 렌더링 하기 위한 타임스탬프와 동기화한다.
도 25는 일부 실시예에 따라, 예시적인 VR 클라이언트 디바이스에서 수행되는 예시적인 프레임 동기화 방법을 설명하기 위한 도면이다. 일부 실시예에서, 프레임과 시청 각도 간의 매칭을 보장하기 위해, 서버(100)(또는 도 3에 도시된 통신 서버(130))는 (키, 값) 쌍으로 구성된 데이터를 클라이언트 디바이스(200A)로 송신한다. 여기서, 키는 프레임 시퀀스 번호로 설정되고 해당 값이 대응되는 시청 각도로 설정된다. 예를 들어, 도 25에 도시된 바와 같이, 클라이언트 디바이스(200A)는 프레임 #1(1011), 프레임 #2(1012), 프레임 #3(1013), ..., 프레임 #N(1014)을 포함하는 N개의 프레임을 수신한다. 일부 실시예에서, 클라이언트 디바이스(200A)는 또한 서버(100)로부터 (프레임 #1, VA_1), (프레임 #2, VA_2), (프레임 #3, VA_3), ..., (프레임 #N, VA_N)을 포함하는 N개의 (키, 값) 쌍을 수신한다. 일부 실시예에서, N개의 프레임을 버퍼링 한 후에, 클라이언트 디바이스(200A)는 프레임을 디코딩하고 각각의 프레임에 대응되는 디스플레이 타임스탬프(display timestamp)를 획득한다. 일부 실시예에서, 정확하게 구체 프레임을 렌더링(또는 디스플레이) 하는 목적으로 비디오 프레임을 동기화하기 위해, 클라이언트 디바이스(200A)는 디스플레이 타임스탬프를 새로운 프레임 ID로 이용하고 (키 = 프레임 번호, 값 = 시청 각도) 쌍을 (키 = 새로운 프레임 ID (또는 디스플레이 타임스탬프), 값 = 시청 각도) 쌍과 매핑한다. 도 25는 (키 = 프레임 번호, 값 = 시청 각도) 쌍과 (TS_1(타임스탬프), VA_1)(1021), (TS_2, VA_2)(1022), (TS_3, VA_3)(1023), ..., (TS_N, VA_N)(1024)을 포함하는 (키 = 새로운 프레임 ID (또는 디스플레이 타임스탬프), 값 = 시청 각도) 쌍과의 매핑 관계를 도시한다.
일부 실시예에서, 프레임을 디스플레이 타임스탬프(및 대응되는 시청 각도)와 동기화한 후에, 클라이언트 디바이스(200A)는 프로세서(e.g. 도 2d에 도시된 프로세서(310)) 또는 GPU(e.g. 도 2에 도시된 GPU(370))를 통해 구체 프레임을 렌더링 한다. 이때, 서버(100) 로부터 수신된 타임스탬프 및 다른 포맷팅 정보 또는 렌더링 정보(e.g. 도 13 내지 도 15에 도시된 방법을 이용하여 계산된 상단/하단/중간/좌측/우측 영역의 너비 및 높이, 도 10 및 도 11에 도시된 바와 같은 리포맷팅 된 프레임 데이터에서 상단/하단/좌측/우측 영역의 상대적 위치, 및 도 16 내지 도 200에 도시된 바와 같은 마진 또는 중첩된 마진을 갖는 레이아웃에 대한 정보)가 이용된다.
일부 실시예에서, 클라이언트 디바이스(200A)는 리포맷팅 된 이미지 프레임(e.g. 도 26에 도시된 리포맷팅 된 이미지 프레임(620))으로부터 원래의 구체 이미지 프레임 데이터(e.g. 도 26에 도시된 구체 이미지 프레임 데이터(430))를 재구성할 수 있고, 재구성된 이미지 프레임 데이터에 기초하여 구체 이미지 프레임을 렌더링 할 수 있다. 다시 말하면, 일부 실시예에서, 360 VR 비디오는 재구성된 이미지 프레임을 구체(sphere) 상에 맵핑하거나 텍스쳐 매핑(texture mapping)함으로써 렌더링 된다. 예시적인 텍스처 맵핑은 http://cse.csusb.edu/tongyu/courses/cs520/notes/texture.php에서 이용 가능한 "Texture Mapping"이라는 제목의 웹 문서에 설명되어 있으며, 상기 웹 문서에 개시된 내용 중에서 본 특허 출원에서 설명된 기능을 달성하기 위해 재구성된 프레임을 텍스처 매핑하는 방법에 대한 자세한 내용은 본 명세서에 참조로 포함된다.
일부 실시예에서, 도 26에 도시된 바와 같이, 클라이언트 디바이스는 구체 이미지 프레임 데이터를 재구성하지 않고 리포맷팅 된 이미지 프레임(620)에 기초하여 구체 이미지 프레임(430)을 렌더링 할 수 있다. 일부 실시예에서, 원래의 구체 이미지를 재구성하거나 저장하지 않고, 클라이언트 디바이스는 리포맷팅 된 이미지 프레임을 구체 상에 매핑하기 위해 텍스처 좌표를 다시 계산한다. 일부 실시예에서, 새로운 텍스처 좌표를 얻은 후에, 클라이언트 디바이스는 새로운 텍스처 좌표를 적용하여 구체 이미지를 렌더링 할 수 있다. 일부 실시예에서, 클라이언트 디바이스는 서버(100)로부터 수신된 포맷팅 정보 또는 렌더링 정보에 기초하여 텍스처 좌표를 다시 계산한다. 그 다음, 클라이언트 디바이스는 구체 이미지 프레임(430)을 렌더링하고, 리포맷팅 된 이미지 프레임(620)의 각각의 리포맷팅 된 영역을 구체 상에 매핑한다. 예를 들어, 클라이언트 디바이스(200A)는 구체의 중간 영역(432) 상에 리포맷팅 된 중간 영역(621)을 매핑함으로써 구체의 중간 영역(432)을 렌더링 할 수 있다(단계 1050). 유사하게, 클라이언트 디바이스(200A)는 리포맷팅 된 하단 영역(625)에 기초하여 구체의 하단 영역(431)을 렌더링 하고(단계 1052), 리포맷팅 된 상단 영역(624)에 기초하여 구체의 상단 영역(431)을 렌더링 하며(단계 1054), 리포맷팅 된 좌측 영역(622)에 기초하여 구체의 중간 영역(432)의 일 부분을 렌더링 하고(단계 1056), 리포맷팅 된 우측 영역(623)에 기초하여 구체의 중간 영역(432)의 일 부분을 렌더링 할 수 있다(단계 1058). 렌더링 순서는 설명된 순서대로 또는 임의의 다른 순서로 수행될 수 있다. 재구성 기반 렌더링 방법에서, 원본 구체 이미지는 동일한 m x n 쿼드(quad)로 간주되고, 각 쿼드는 구체의 한 조각으로 변형된다. 그렇게 함으로써 텍스처 좌표가 직접 계산될 수 있다. 예를 들어, (i, j)th 쿼드의 텍스처 좌표는 (i/m, j/n)으로 계산된다. 한편, 리포맷팅 된 이미지-기반 렌더링 방법에서, 클라이언트 디바이스는 리포맷팅 된 이미지의 각 영역이 매핑되는 부분을 식별할 수 있다. 예를 들어, 구체의 상단 영역(e.g. 45도 ~ 90도)에 대해, 클라이언트 디바이스는 0 내지 0.5의 "u" 텍스처 좌표와 0 내지 0.2의 "v" 텍스처 좌표를 이용할 수 있다. 왜냐하면, 새로운 텍스처 좌표는 상수(constant)이기 때문에 오프라인(offline)으로 미리 계산될 수 있기 때문이다. 따라서, 재구성 기반의 방법과 비교하여 리포맷팅 된 이미지 기반 방법은 재구성 및 추가 GPU 메모리 이용을 위한 GPU 시간을 절약할 수 있다. 반면에, 구체 객체를 만드는 것이 애플리케이션(application)이 의존하는 SDK의 일부인 경우 리포맷팅 된 이미지 기반 방법의 구현은 더 복잡할 수 있다.
이하에서는 도 24, 도 25 및 도 26을 참조하여 도 21에 도시된 흐름도에 대하여 보다 상세하게 설명하도록 한다. 도 21를 참조하면, 단계(910)에서 클라이언트 디바이스는 현재의 FOV를 서버로 송신할 수 있다. 예를 들어, 도 24에 도시된 바와 같이, 클라이언트 디바이스(200A)는 서버(100)(또는 도 3에 도시된 서버(100)의 통신 서버(130))로 현재의 시청 각도(e.g. 도 9에 도시된 시청 각도(602))를 전송할 수 있다. 일부 실시예에서, 도 24에 도시된 바와 같이, 클라이언트 디바이스(200A)는 서버(100)로 현재 FOV에 관한 정보(e.g. 방위각 기준 FOV, 수직 각도 기준 FOV 또는 피치각)를 전송할 수 있다(도 24에 도시된 단계 1001).
단계(920)에서, 클라이언트 디바이스는 서버로부터 프레임 및 프레임과 관련하여 갱신된 FOV를 수신할 수 있다. 예를 들어, 도 24에 도시된 바와 같이, 클라이언트 디바이스(200A)가 현재 시청 각도를 전송하는 것에 응답하여, 서버(100)(또는 도 3에 도시된 스트리밍 서버(140))는 클라이언트 디바이스(200A)로 새로운 비디오 프레임 또는 새로운 GOP를 전송할 수 있다. 이때, 전송된 새로운 비디오 프레임 또는 새로운 GOP는 클라이언트 디바이스(200A)에 의해 전송된 현재 시청 각도에 대응된다(도 A24에 도시된 단계(1002)). 일부 실시예에서, 서버(100)는 또한 클라이언트 디바이스(200A)로 새로운 비디오 프레임 또는 GOP에 대응되는 프레임 시퀀스 번호를 전송할 수 있다. 일부 실시예에서, 서버(100)(또는 도 3에 도시된 통신 서버(130))는 시청 각도 또는 FOV를 갱신하고 클라이언트 디바이스(200A)로 갱신된 시청 각도 또는 갱신된 FOV를 되돌려 보낼 수 있다(도 24에 도시된 단계 1003 참조).
단계(930)에서, 클라이언트 디바이스는 서버에 의해 결정된 다운스케일링 된 영역의 너비 및 높이와 리포맷 정보를 수신할 수 있다. 예를 들어, 일부 실시예에서, 서버는 리포맷 정보(e.g. 도 13 내지 도 15에 도시된 방법을 이용하여 계산된 상단/하단/중간/좌측/우측 영역의 너비 및 높이, 도 10 및 도 11에 도시된 바와 같이 리포맷팅 된 프레임 데이터의 상단/하단/중간/좌측/우측 영역의 상대적 위치 및 도 16 내지 도 20에 도시된 바와 같이 마진 또는 중첩된 마진을 갖는 레이아웃에 대한 정보)를 클라이언트 디바이스(200A)로 되돌려 보낼 수 있다.
단계(940)에서, 클라이언트 디바이스는 서버(e.g. 도 3에 도시된 스트리밍 서버(140)) 로부터 수신된 프레임을 클라이언트 디바이스(e.g. 도 3에 도시된 클라이언트 디바이스(200A))의 메모리(e.g. 도 2에 도시된 메모리(360))에 버퍼링 할 수 있다.
단계(950)에서, 클라이언트 디바이스는 단계(920)에서 서버로부터 수신된 프레임을 디코딩 할 수 있다. 일부 실시예에서, 클라이언트 디바이스의 디코더는 버퍼링 된 프레임을 디코딩하고, 디코딩 된 프레임을 (e.g. 도 26에 도시된 리포맷팅 된 이미지(620)의 포맷으로) 클라이언트 디바이스의 메모리에 저장한다.
단계(960)에서, 프레임과 대응되는 FOV 및 타임스탬프를 매핑함으로써 프레임이 동기화될 수 있다. 도 22는 일부 실시예에 따라 프레임을 대응되는 FOV 및 타임스탬프와 매핑함으로써 프레임을 동기화하는 상세한 동작을 도시하는 흐름도이다.
도 22를 참조하면, 단계(961)에서, 프레임을 버퍼링 한 후에, 클라이언트 디바이스는 각각의 프레임에 대한 디스플레이 타임스탬프를 획득할 수 있다. 예를 들어, 프레임을 버퍼링 한 후에, 클라이언트 디바이스(200)는 프레임들을 디코딩하고 각각의 프레임들에 대응되는 디스플레이 타임스탬프를 획득한다.
단계(962)에서, 클라이언트 디바이스는 획득된 디스플레이 타임스탬프에 기초하여 새로운 프레임 ID를 생성할 수 있다. 예를 들어, 도 25에 도시된 바와 같이, 클라이언트 디바이스는 n개의 프레임(e.g. 프레임 번호 #1, #2, ..., #N을 갖는 프레임)에 대응되는 획득된 디스플레이 타임스탬프에 기초하여 새로운 프레임 ID(e.g. T1, T2, ..., Tn)를 생성할 수 있다.
단계(963)에서, 클라이언트 디바이스는 새로운 프레임 ID와 대응되는 FOV와 매칭시킬 수 있다. 예를 들어, 프레임과 시청 각도 간의 매칭을 보장하기 위해, 서버(100)(또는 도 3에 도시된 통신 서버(130))는 (키, 값) 쌍으로 구성된 데이터를 클라이언트 디바이스(200A)로 송신한다. 여기서, 키는 프레임 시퀀스 번호로 설정되고 해당 값이 대응되는 시청 각도로 설정된다. 도 25를 참조하면, 클라이언트 디바이스(200A)는 프레임 #1(1011), 프레임 #2(1012), 프레임 #3(1013), ..., 프레임 #N(1014)을 포함하는 N개의 프레임을 수신한다. 일부 실시예에서, 클라이언트 디바이스(200A)는 또한 서버(100)로부터 (프레임 #1, VA_1), (프레임 #2, VA_2), (프레임 #3, VA_3), ..., (프레임 #N, VA_N)을 포함하는 N개의 (키, 값) 쌍을 수신한다. 일부 실시예에서, N개의 프레임을 디코딩 한 후에, 정확하게 구체 프레임을 렌더링(또는 디스플레이) 하는 목적으로 비디오 프레임을 동기화하기 위해, 클라이언트 디바이스(200A)는 디스플레이 타임스탬프를 새로운 프레임 ID로 이용하고, (키 = 프레임 번호, 값 = 시청 각도) 쌍을 (키 = 새로운 프레임 ID (또는 디스플레이 타임스탬프), 값 = 시청 각도) 쌍과 매핑한다. 도 25는 (키 = 프레임 번호, 값 = 시청 각도) 쌍과 (TS_1(타임스탬프), VA_1)(1021), (TS_2, VA_2)(1022), (TS_3, VA_3)(1023), ..., (TS_N, VA_N)(1024)을 포함하는 (키 = 새로운 프레임 ID (또는 디스플레이 타임스탬프), 값 = 시청 각도) 쌍과의 매핑 관계를 도시한다.
다시 도 21을 참조하면, 단계(970)에서, 클라이언트 디바이스는 단계(930)에서 수신된 FOV, 다운스케일링 된 영역의 너비/높이 및 리포맷 정보에 기초하여 프레임의 구체 이미지를 재구성할 수 있다. 예를 들어, 도 26에 도시된 바와 같이, 클라이언트 디바이스(200A)는 리포맷팅 된 이미지 프레임(e.g. 리포맷팅 된 이미지 프레임(620))으로부터 원래의 구체 이미지 프레임 데이터(e.g. 구체 이미지 프레임(430)에 대한 데이터)를 재구성할 수 있다. 일부 실시예에서, 재구성은 리포맷팅 된 이미지(e.g. 리포맷팅 된 이미지 프레임(620))의 다운스케일링 된 영역을 해당 영역의 원래 해상도로 다시 업 스케일링 하는 것을 포함할 수 있다. 일부 실시예에서, 재구성은 리포맷팅 된 영역(e.g. 리포맷팅 된 이미지 프레임(620)의 상단/하단/중간/좌측/우측 영역)을 원래의 배치(e.g. 도 10dop 도시된 원본 이미지 프레임(610)의 상단/하단/중간 영역)로 다시 재배치하는 것을 포함할 수 있다. 일부 실시예에서, 단계(970)에서의 재구성은 생략될 수 있다.
단계(980)에서, 클라이언트 디바이스는 프레임의 구체 이미지를 렌더링 할 수 있다. 도 23은 프레임의 구체 이미지를 렌더링하는 상세한 동작을 도시하는 흐름도이다. 이하에서는, 도 23을 참조하여 렌더링 방법에 대하여 상세하게 설명하도록 한다.
도 23을 참조하면, 단계(981)에서, 클라이언트 디바이스는 서버에서 프레임을 인코딩 한 시점에 리던던트 픽셀이 추가된 경계 영역이 존재했는지 여부를 결정할 수 있다. 일부 실시예에서, 클라이언트 디바이스는 단계(930)에서 서버로부터 수신된 리포맷 정보(e.g. 도 13 내지 도 15에 도시된 방법을 이용하여 계산된 상단/하단/중간/좌측/우측 영역의 너비 및 높이, 도 10 및 도 11에 도시된 바와 같이 리포맷팅 된 프레임 데이터의 상단/하단/중간/좌측/우측 영역의 상대적 위치 및 도 16 내지 도 20에 도시된 바와 같이 마진 또는 중첩된 마진을 갖는 레이아웃에 대한 정보)에 기초하여 리던던트 픽셀이 추가된 경계 영역이 존재했는지 여부를 결정할 수 있다.
단계(982)에서, 프레임을 인코딩 할 때 리던던트 픽셀이 추가된 경계 영역이 존재했다고 결정되면, 클라이언트 디바이스는 리던던트 픽셀을 스킵(또는 생략)하고 프레임을 렌더링 한다.
단계(983)에서, 그러한 경계 영역이 존재하지 않는다고 결정되면, 클라이언트 디바이스는 중첩된 수직 마진이 경계 영역에 존재하는지 여부를 결정할 수 있다. 일부 실시예에서, 클라이언트 디바이스는 단계(930)에서 서버로부터 수신된 리포맷 정보에 기초하여 중첩된 수직 마진이 경계 영역에 존재하는지 여부를 결정할 수 있다.
단계(984)에서, 중첩된 수직 마진이 경계 영역에 존재하는 것으로 결정되면, 중첩된 수직 마진(또는 중첩된 수직 영역)에 알파 블렌딩(alpha blending)이 적용될 수 있다. 일부 실시예에서, 재구성 이후에, 알파 블렌딩은 중첩된 영역들에 적용될 수 있다. 예를 들어, 클라이언트 디바이스는 재구성된 프레임으로부터 상단 영역의 아래쪽 부분을 중간 영역의 위쪽 부분과 블렌딩 할 수 있다. 유사하게, 클라이언트 디바이스는 재구성된 프레임으로부터 하단 영역의 위쪽 부분을 중간 영역의 아래쪽 부분과 블렌딩 할 수 있다. 일부 실시예에서, 재구성이 수행되지 않는 경우, 클라이언트 디바이스는 리포맷팅 된 이미지 프레임(e.g. 도 26에 도시된 프레임(620))으로부터 중첩된 영역을 추출한 다음, 추출된 중첩 영역에 알파 블렌딩을 적용한다. 예를 들어, 클라이언트 디바이스는 상단 영역의 아래쪽 부분(e.g. 도 20에 도시된 부분(837))을 중간 영역의 위쪽 부분(e.g. 도 20에 도시된 부분(841))과 블렌딩 할 수 있다. 유사하게, 클라이언트 디바이스는 하단 영역의 위쪽 부분(e.g. 도 20의 부분(838))을 중간 영역의 아래쪽 부분(e.g. 도 20에 도시된 부분(842))과 블렌딩 할 수 있다.
단계(985)에서, 클라이언트 디바이스는 프레임의 비-경계 영역으로부터 프레임의 구체 이미지를 렌더링 할 수 있다. 일부 실시예에서, 360 VR 비디오(e.g. 도 26에 도시된 구체 이미지 프레임(430))는 단계(970)에서 재구성된 이미지 프레임을 구체 상에 맵핑 또는 텍스쳐 매핑함으로써 렌더링 된다. 대안적으로, 도 26에 도시된 바와 같이, 클라이언트 디바이스는 구체 이미지 프레임 데이터를 재구성하지 않고 리포맷팅 된 이미지 프레임(620)에 기초하여 구체 이미지 프레임(430)을 렌더링 할 수 있다. 예를 들어, 원래의 구체 이미지를 재구성하거나 저장하지 않고, 클라이언트 디바이스는 리포맷팅 된 이미지 프레임을 구체 상에 매핑하기 위해 텍스처 좌표를 다시 계산한다. 일부 실시예에서, 새로운 텍스처 좌표를 얻은 후에, 클라이언트 디바이스는 새로운 텍스처 좌표를 적용하여 구체 이미지를 렌더링 할 수 있다. 일부 실시예에서, 클라이언트 디바이스는 서버(100)로부터 수신된 포맷팅 정보 또는 렌더링 정보에 기초하여 텍스처 좌표를 다시 계산한다. 그 다음, 클라이언트 디바이스는 구체 이미지 프레임(430)을 렌더링하고, 리포맷팅 된 이미지 프레임(620)의 각각의 리포맷팅 된 영역을 구체 상에 매핑한다. 예를 들어, 도 26에 도시된 바와 같이, 클라이언트 디바이스(200A)는 구체의 중간 영역(432) 상에 리포맷팅 된 중간 영역(621)을 매핑함으로써 구체의 중간 영역(432)을 렌더링 할 수 있다(단계 1050). 유사하게, 클라이언트 디바이스(200A)는 리포맷팅 된 하단 영역(625)에 기초하여 구체의 하단 영역(431)을 렌더링 하고(단계 1052), 리포맷팅 된 상단 영역(624)에 기초하여 구체의 상단 영역(431)을 렌더링 하며(단계 1054), 리포맷팅 된 좌측 영역(622)에 기초하여 구체의 중간 영역(432)의 일 부분을 렌더링 하고(단계 1056), 리포맷팅 된 우측 영역(623)에 기초하여 구체의 중간 영역(432)의 일 부분을 렌더링 할 수 있다(단계 1058). 렌더링 순서는 설명된 순서대로 또는 임의의 다른 순서로 수행될 수 있다. 일부 실시예에서, 렌더링은 리포맷팅 된 이미지(e.g. 리포맷팅 된 이미지 프레임(620))에서 다운스케일링 된 영역을 해당 영역의 원래 해상도로 다시 업스케일링 하는 것을 포함 할 수 있다.
도 27은 일부 실시예에 따라, 예시적인 VR 비디오 처리 시스템에서 수행되는 예시적인 스트리밍 방법의 동작을 나타내는 흐름도이다. 개략적으로 살펴보면, 방법(1100)은 비디오 서버가 서로 다른 시청 각도에 대응되는 다수의 파일을 생성할 수 있는 단계(1110)에서 시작된다. 단계(1120)에서, 시청 각도는 클라이언트 디바이스로부터 수신될 수 있다. 단계(1130)에서, 스트리밍 서버는 클라이언트 디바이스로부터 수신된 시청 각도에 가장 가까운 시청 각도를 갖는 파일을 선정하고, 선정된 파일을 이용하여 비디오 스트림을 클라이언트 디바이스로 스트리밍 할 수 있다.
이하에서는, 도 30 및 도 31을 참조하여 도 27에 도시된 흐름도에 대하여 보다 상세하게 설명하도록 한다. 구체적으로, 도 30은 예시적인 VR 비디오 처리 시스템에서 수행되는 예시적인 비디오 처리 방법을 도시한다. 일부 실시예에서, VR 비디오 처리 시스템(e.g. 도 3에 도시된 시스템 서버(100))은 오프라인 생성되고 미리 인코딩 된 비디오 파일을 이용하여 스트리밍을 수행한다. 일부 실시예에서, 비디오 처리 시스템의 인코더(e.g. 인코더(125))는 비디오 프레임에 대하여 라이브(live), 실시간(real-time) 인코딩을 수행하지 않는다. 일부 실시예에서, 도 30에 도시된 바와 같이, 비디오 처리 시스템은 상이한 시청 각도(1202)(e.g. 0도, α도, 2α도, ..., (n-1)α도)를 갖는 다수의 파일(1205)(e.g. File_0, File_α, File_2α, ..., File_(n-1)α)을 생성할 수 있다. 다시 도 30을 참조하면, 일부 실시예에서, 다수의 파일(1205)은 각각의 시청 각도(1202)(e.g. 0도, α도, 2α도, ..., (n-1)α도)에 대응되는 상이한 FOV(1203)(e.g. FOV(0도), FOV(α도), FOV(2α도), ..., FOV((n-1)α도)와 연관된다. 일부 실시예에서, 도 30에 도시된 바와 같이, 시청 각도(1202)(e.g. α도)는 시청자(1201)의 시선(LOS)의 방향을 나타내는 기준 벡터 또는 방향(e.g. 0도 방향)을 기준으로 한 방위각으로 정의될 수 있다. 일부 실시예에서, FOV는 시청자가 클라이언트 디바이스로 보는 2개의 방위각 사이의 범위(e.g. 도 30에 도시된 3α도와 (n-1)α도 사이의 범위)로 정의될 수 있다. 오프-FOV는 시청자가 클라이언트 디바이스로 볼 수 없는 방위각 범위(e.g. FOV 범위 이외의 방위각 범위; 도 30 참조)로 정의될 수 있다. 일부 실시예에서, 상이한 시청 각도(e.g. 도 12에 도시된 α도, 2α도, 3α도, 4α도, 5α도)에 대응되는 리포맷팅 된 이미지 포맷을 갖는 비디오 프레임(e.g. 도 12에 도시된 프레임(641, 642, 643, 644, 645)) 또는 파일이 생성될 수 있다. 일부 실시예에서, 비디오 프레임 또는 파일의 포맷은 도 10 및 도 11에 도시된 바와 같이 리포맷팅 된 포맷 또는 FOV 영역만을 보여주는 포맷일 수 있다. 일부 실시예에서, 파일의 수는 단일 파일에 의해 커버되는 단위 시청 각도(e.g. 도 30에 도시된 예의 경우 30도)에 종속한다. 예를 들어, 단위 시청 각도가 30도이면, 12 개의 비디오 파일(360/30 = 12)이 생성될 수 있다.
도 31은 예시적인 VR 비디오 처리 시스템에서 수행되는 예시적인 비디오 스트리밍 방법을 설명하기 위한 도면이다. 일부 실시예에서, 시청자의 시청 각도가 계속 갱신됨에 따라, 비디오 처리 시스템의 스트리밍 서버(e.g. 도 3에 도시된 스트리밍 서버(140))는 시청자의 현재 시청 각도(e.g. α도)에 가장 가까운 시청 각도를 갖는 비디오 파일(e.g. File_α)을 선정하고, 해당 파일을 클라이언트 디바이스로 스트리밍 한다. 일부 실시예에서, 도 30 및 도 31에 도시된 바와 같이, 시청자의 시청 각도가 α도에서 3α도로 변경되면, 스트리밍 서버는 스트리밍 소스를 File_α에서 File_3α로 전환한다. 일부 실시예에서, 클라이언트 디바이스가 VR 비디오 시스템(e.g. 도 3에 도시된 통신 서버(130))으로 새로운 시청 각도 3α도(이전 시청 각도 α도에서 갱신된 시청 각도)를 전송하면, 스트리밍 서버가 스트리밍 소스를 File_α에서 File_3α로 전환하고, File_3α를 클라이언트 디바이스로 스트리밍 한다.
도 31에 도시된 바와 같이, 일부 실시예에서, 비디오 압축의 성질에 의해, 제1 시청 각도를 갖는 하나의 파일에서 제2 시청 각도를 갖는 다른 파일로 전환하는 것은 다음 GOP(e.g. 코딩 된 비디오 스트림 내의 연속적인 픽처(picture)의 다음 그룹)의 시작 부분에서 수행될 수 있다. 일부 실시예에서, 각각의 GOP의 앞 부분에 키 프레임(key frame)이 존재한다. 예를 들어, 도 31에 도시된 바와 같이, 시청자의 시청 각도가 α도일 때(또는 클라이언트 디바이스가 VR 비디오 시스템으로 시야 각도 α도를 전송할 때), 스트리밍 서버는 File_α(또는 시청 각도가 α도에 가장 가까운 파일)를 읽고, t0 시점에 File_α에 포함된 제1 GOP(e.g. GOP1)에 대한 스트리밍을 시작한다. 일부 실시예에서, 각각의 GOP를 스트리밍하는 지속 시간은 T(e.g. 도 31에 도시된 예의 경우 500ms)로 설정된다. 그 결과, 예를 들어, 스트리밍 서버가 시간 t0 = 0인 시점에 제1 GOP에 대한 스트리밍을 시작하면, 각각 T 및 2T 시점에 제2 GOP 및 제3 GOP에 대한 스트리밍이 시작된다. 예를 들어, 도 31에 도시된 바와 같이, 시청자의 시청 각도가 t1(T <t1 <2T) 시간에 α도에서 3α도로 변경되고(또는 클라이언트 디바이스가 새로운 시청 각도 3α도(이전 시청 각도 α도에서 갱신된) VR 비디오 시스템으로 송신할 때), 스트리밍 서버는 t1 시간에 File_α에서 제2 GOP(e.g. GOP2)를 스트리밍하고 있다. 일부 실시예에서, 시청 각도의 변화에 응답하여, 스트리밍 서버는 현재(시간 t1) 스트리밍 중인 프레임이 현재 GOP(e.g. GOP2)의 마지막 프레임인지 여부를 판정한다. 일부 실시예에서, 현재 스트리밍 중인 비디오 프레임이 현재 비디오 스트림(e.g. File_α로부터)의 현재 GOP(e.g. GOP2)의 마지막 프레임이 아니라는 판정에 응답하여, 스트리밍 서버는 시간 t2(= 2T)에서 현재의 GOP(e.g. GOP2)의 스트리밍이 완료될 때까지 현재 GOP(e.g. GOP2)의 비디오 프레임을 계속 스트리밍 한다(그리고 스트리밍 소스를 File_α에서 File_3α로 전환하지 않는다). 일부 실시예에서, 도 31에 도시된 바와 같이, 스트리밍 서버는 현재 스트리밍 중인 프레임이 현재 GOP(e.g. GOP2)의 마지막 프레임이라고 판정하면, File_3α(또는 3α도에 가장 가까운 시청 각도를 갖는 파일)를 선택하고, 스트리밍 소스를 File_α에서 File_3α로 전환한다. 일부 실시예에서, 도 31에 도시된 바와 같이, 현재 GOP의 스트리밍이 완료되었다는 스트리밍 서버의 판정에 응답하여, 예를 들어, 시간 t2에서, 스트리밍 서버는 File_3α로부터 데이터를 읽어와 (File_3α로부터) 제2 비디오 스트림의 제1 GOP(e.g. GOP3)를 클라이언트 디바이스로 스트리밍 한다. 일부 실시예에서, File_3α로부터 데이터 읽기를 시작하기 전에, 시간 t2에서, 스트리밍 서버는 시청 각도가 여전히 3α로 유지되는지 여부를 결정할 수 있고, 시청 각도가 여전히 3α로 유지된다고 결정되면 GOP3을 스트리밍할 수 있다.
이하에서는, 도 30 및 도 31을 참조하여 도 27에 도시된 흐름도에 대하여 보다 상세하게 설명하도록 한다. 도 27을 참조하면, 단계(1110)에서, 비디오 서버가 서로 다른 시청 각도에 대응되는 다수의 파일을 생성할 수 있다. 일부 실시예에서, 비디오 서버는 프로세서에 의해 구현되며, 프로세서로 하여금 다수의 시청 각도에 대응하는 복수의 파일을 생성하고 메모리에 복수의 파일을 저장하게 하도록 구성된다. 예를 들어, 도 30에 도시된 바와 같이, 일부 실시예에서, 비디오 처리 시스템은 상이한 시청 각도(1202)(e.g. 0도, α도, 2α도, ..., (n-1)α도)를 갖는 다수의 파일(1205)(e.g. File_0, File_α, File_2α, ..., File_(n-1)α)을 생성할 수 있다. 다시 도 30을 참조하면, 다수의 파일(1205)은 각각의 시청 각도(1202)(e.g. 0도, α도, 2α도, ..., (n-1)α도)에 대응되는 상이한 FOV(1203)(e.g. FOV(0도), FOV(α도), FOV(2α도), ..., FOV((n-1)α도)와 연관될 수 있다. 일부 실시예에서, 복수의 파일 각각은 복수의 GOP를 포함할 수 있고, 복수의 GOP는 동일한 시청 각도로부터 동일한 FOV를 갖는 비디오 스트림을 형성할 수 있다.
단계(1120)에서, 시청 각도는 클라이언트 디바이스로부터 수신될 수 있다. 예를 들어, 통신 서버(e.g. 도 3에 도시된 140)는 프로세서에 의해 구현되고, 프로세서로 하여금 제1 연결을 통해 클라이언트 디바이스로부터 제1 시청 각도(e.g. α도)에 관한 제1 정보를 수신하도록 구성된다.
단계(1130)에서, 스트리밍 서버는 클라이언트 디바이스로부터 수신된 시청 각도에 가장 가까운 시청 각도를 갖는 파일을 선정하고, 선정된 파일을 이용하여 비디오 스트림을 클라이언트 디바이스로 스트리밍 할 수 있다. 통신 서버의 제1 시청 각도 수신에 응답하여, 스트리밍 서버는 프로세서로 하여금 복수의 파일 중에서 수신된 제1 시청 각도에 가장 가까운 시청 각도에 대응되는 제1 비디오 스트림을 포함하는 제1 파일을 읽어오고, 제1 파일로부터 제1 비디오 스트림을 제2 연결을 통해 클라이언트 디바이스로 스트리밍 하도록 구성된다. 예를 들어, 도 31에 도시된 바와 같이, 스트리밍 서버(140)(도 3 참조)는 시청자의 현재 시청 각도(e.g. α도)에 가장 가까운 시청 각도를 갖는 비디오 파일(e.g. File_α)을 선정하고, 선정된 파일을 이용하여 클라이언트 디바이스로 스트리밍 한다. 통신 서버는 프로세서로 하여금 스트리밍 서버가 제1 비디오 스트림을 스트리밍 하는 동안 클라이언트 디바이스로부터 제2 시청 각도에 관한 제2 정보를 수신하도록 더 구성된다. 예를 들어, 도 31에 도시된 바와 같이, 통신 서버(130)(도 3 참조)는 클라이언트 디바이스로부터 제2 시야각(e.g. 3α도)에 관한 제2 정보를 수신한다. 통신 서버의 제2 정보 수신에 응답하여, 스트리밍 서버는 프로세서로 하여금 스트리밍 소스를 제1 파일로부터 제2 시청 각도에 가장 가까운 시야각에 대응되는 제2 비디오 스트림을 포함하는 제2 파일로 전환하게 하고, 제2 파일을 읽어오며, 제2 파일로부터 제2 연결을 통해 클라이언트 디바이스로 제2 비디오 스트림을 스트리밍 한다. 예를 들어, 도 30 및 도 31에 도시된 바와 같이, 시청자의 시청 각도가 α도에서 3α도로 변경되면 스트리밍 서버는 File_α에서 File_3α로 스트리밍 소스로 전환한다. 일부 실시예에서, 클라이언트 디바이스가 VR 비디오 시스템(e.g. 도 3에 도시된 통신 서버(130))로 새로운 시청 각도 3α도(이전 시청 각도 α도에서 갱신된 시청 각도)를 전송하면, 스트리밍 서버는 스트리밍 소스를 File_α에서 File_3α로 전환하고, File_3α를 이용하여 클라이언트 디바이스로 스트리밍 한다.
도 28은 클라이언트 디바이스로부터 수신된 시청 각도에 가장 가까운 시청 각도를 갖는 파일로부터 비디오 스트림을 스트리밍하는 상세한 동작을 나타내는 흐름도이다. 도 28을 참조하면, 단계(1131)에서, 서버는 현재(제2) 시청 각도가 현재 스트리밍 중인 프레임의 이전의 제1 시청 각도에서 변경되었는지 여부를 판정한다. 예를 들어, 도 31에 도시된 바와 같이, 시각 t1에서, 서버는 현재 시청 각도(3α도)이 이전 시청 각도(α도)로부터 변경되는 것인지 여부를 판정한다.
단계(1132)에서, 현재(제2) 시청 각도가 현재 스트리밍 중인 프레임의 제1 시청 각도로부터 변경된 것이라고 판정되면, 서버는 현재 스트리밍 중인 프레임이 현재 GOP의 마지막 프레임인지 여부를 판정한다. 예를 들어, 도 31에 도시된 바와 같이, 시간 t1에서, 서버는 현재 시청 각도(3α도)이 이전 시청 각도(α도)로부터 변경된 것이라고 판정하고, (시간 t1에서) 현재 스트리밍 중인 프레임이 현재 GOP(e.g. GOP2)의 마지막 프레임인지 여부를 판정한다.
단계(1133)에서, 현재 시청 각도가 현재 스트리밍 중인 프레임의 제1 시청 각도로부터 변경되지 않은 것이라고 판정되면, 서버는 (제1 시청 각도를 갖는) 현재 GOP를 계속 스트리밍 한다.
단계(1134)에서, 현재 스트리밍 중인 프레임이 현재 GOP의 마지막 프레임인 것으로 판정되면, 서버는 클라이언트 디바이스로부터 수신된 시청 각도에 가장 가까운 시청 각도를 갖는 새로운 파일로 현재 비디오 파일을 전환한다. 예를 들어, 현재 스트리밍 중인 비디오 프레임이 제1 비디오 스트림의 제1 GOP의 마지막 프레임이라는 결정에 응답하여, 스트리밍 서버는 스트리밍 소스를 제1 파일로부터 제2 파일로 전환하도록 구성될 수 있다. 예를 들어, 도 31에 도시된 바와 같이, 스트리밍 서버가 현재 스트리밍 중인 프레임이 현재 GOP(e.g. GOP2)의 마지막 프레임이라고 판정하면, File_3α(또는 3α도에 가장 가까운 시청 각도를 갖는 파일)을 선택하고, 스트리밍 소스를 File_α에서 File_3α로 전환한다. 현재 스트리밍 중인 프레임이 현재 GOP의 마지막 프레임이 아니라고 판정되면, 서버는 예를 들어 제1 시청 각도를 갖는 현재 GOP를 계속 스트리밍하는 단계(1133)의 동작을 수행한다. 예를 들어, 도 31에 도시된 바와 같이, 현재 스트리밍 중인 비디오 프레임이 (e.g. File_α로부터) 현재 비디오 스트림의 현재 GOP(e.g. GOP2)의 마지막 프레임이 아니라는 판정에 응답하여, 스트리밍 서버는 시간 t2(= 2T)에서 현재 GOP의 스트리밍이 완료될 때까지 현재 비디오 스트림의 현재 GOP(e.g. GOP2)의 비디오 스트림을 계속 스트리밍 한다(그리고 File_α에서 File_3α로 전환하지 않는다).
단계(1135)에서, 서버는 현재 GOP의 스트리밍이 완료되었는지 여부를 결정하고, 완료 결정에 응답하여, 새로운 비디오 파일의 GOP을 클라이언트 디바이스에 스트리밍 한다. 일부 실시예에서, 스트리밍 서버는 제1 비디오 스트림의 제1 GOP의 스트리밍의 완료를 결정한 후에, 제2 비디오 스트림의 GOP를 제2 연결을 통해 클라이언트 디바이스로 스트리밍 할 수 있다. 예를 들어, 도 31에 도시된 바와 같이, 현재 GOP 스트리밍 완료 결정에 응답하여, 시간 t2에서, 스트리밍 서버는 File_3α로부터 데이터를 읽어오고, (File_3α로부터) 제2 비디오 스트림의 제1 GOP(e.g. GOP3)를 클라이언트 디바이스로 스트리밍 한다. 일부 실시예에서, File_3α로부터 데이터 읽기를 시작하기 전에, 시간 t2에서, 스트리밍 서버는 시청 각도가 여전히 3α도로 유지되는지 여부를 결정할 수 있고, 시청 각도가 여전히 3α로 유지된다고 결정되면, GOP3를 스트리밍 한다.
도 29는 일부 실시예에 따라, 예시적인 VR 클라이언트 디바이스에서 수행되는 예시적인 스트리밍 방법의 동작을 나타내는 흐름도이다. 도 29를 참조하면, 단계(1155)에서, 클라이언트 디바이스는 시청자의 시청 각도(또는 FOV)를 획득할 수 있다. 예를 들어, 도 30에 도시된 바와 같이, 클라이언트 디바이스는 시청자의 시선(LOS) 방향을 나타내는 기준 벡터 또는 방향(e.g. 0도 방향)을 기준으로 한 방위각으로 정의되는 시청 각도(1202)(e.g. α도)를 획득할 수 있다. 일부 실시예에서, 클라이언트 디바이스는 시청자가 클라이언트 디바이스로 보는 2개의 방위각 사이의 범위(e.g. 도 30에서 3α도 및 (n-1)α도 사이의 범위)로 정의되는 FOV를 획득할 수 있다. 단계(1160)에서, 클라이언트 디바이스는 획득된 시청 각도(또는 FOV)를 서버(e.g. 도 3에 도시된 통신 서버(130))로 전송할 수 있다. 도 30에 도시된 바와 같이, 클라이언트 디바이스는 획득된 시청 각도(e.g. α도)를 서버에 전송하고, 서버는 시간 t0 또는 그 이전에 시청 각도 α도를 수신한다. 단계(1165)에서, 클라이언트 디바이스는 서버에 전송된 시청 각도와 가장 가까운 시청 각도에 대응되는 비디오 스트림을 수신할 수 있다. 단계(1170)에서, 클라이언트 디바이스는 수신된 비디오 스트림의 비디오 프레임을 렌더링 할 수 있다. 예를 들어, 도 31에 도시된 바와 같이, 스트리밍 서버(140)(도 3 참조)가 시청자의 현재 시청 각도(e.g. α도)와 가장 가까운 시청 각도를 갖는 비디오 파일(e.g. File_α)을 스트리밍 하면, 클라이언트 디바이스는 비디오 스트림을 수신하고 비디오 파일(e.g. File_αα로부터 스트리밍 된 비디오 스트림의 비디오 프레임을 렌더링 한다.
다양한 실시예들을 설명하기 위해 본 명세서에서 사용된 "예시" 또는 "예시적인"이라는 용어는 그러한 실시예들이 가능한 실시예들의 가능한 예들, 표현들 및/또는 예시들임을 가리키는 것일 뿐임에 유의하여 한다(그리고 이러한 용어가 그러한 실시예들이 필연적으로 대단한, 최상의 또는 최선의 예라는 것을 의도하는 것은 아니다).
본 명세서에 사용된 바와 같이, "결합된", "연결된" 등과 같은 용어는 2 개의 부재 또는 성분을 서로 직접 또는 간접적으로 결합시키는 것을 의미한다. 이러한 결합은 정지(e.g. 영구적) 또는 이동 가능(e.g. 제거 가능, 해제 가능 등)한 결합일 수 있다. 이러한 결합은 2 개의 부재 또는 2 개의 부재 및 임의의 부가적인 중간 부재가 서로 또는 하나의 단일체로서 또는 2 개의 부재 또는 2 개의 부재 및 임의의 추가적인 중간 부재가 서로 부착되어 일체로 형성될 수 있다.
본 발명은 다양한 동작들을 달성하기 위해서 임의의 기계 판독 가능 매체 상의 방법, 시스템 및 프로그램 제품을 고려한다. 본 발명의 실시예들은 기존의 컴퓨터 프로세서를 이용하여 구현될 수 있다. 또는 본 발명의 목적 또는 다른 목적을 위해 통합된 적절한 시스템에 대한 전용 컴퓨터 프로세서 또는 하드와이어드 시스템(hardwired system)에 의해 수행될 수도 있다. 본 개시의 범위 내의 실시예는 기계 실행 가능 명령어 집합 또는 데이터 구조들을 전달하기 위해서 기계 판독 가능 매체가 포함된 프로그램 제품들을 포함한다. 이러한 기계 판독 가능 매체는 범용 또는 특수한 목적의 컴퓨터 또는 프로세서를 갖는 다른 기계에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 예를 들어, 그러한 기계 판독 가능 매체는 RAM, ROM, EPROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장 장치, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 임의의 다른 비휘발성 매체를 포함할 수 있다. 상술한 기계 판독 가능 매체는 기계 실행 가능 명령어의 집합 또는 데이터 구조의 형태로 원하는 프로그램 코드를 저장하거나 전달하는데 이용될 수 있다. 또한, 상술한 기계 판독 가능 매체는 범용 또는 특수한 목적의 컴퓨터 또는 프로세서를 갖는 다른 기계에 의해 액세스될 수 있다. 정보가 네트워크 또는 다른 통신 연결(유선, 무선 또는 유선 또는 무선의 조합)을 통해 임의의 기계로 전송되거나 제공되면 상기 기계는 해당 연결을 컴퓨터가 읽을 수 있는 매체로 간주한다. 따라서, 그러한 연결은 적절하게 기계 판독 가능 매체라고 지칭된다. 상술한 것들의 조합들 또한 기계 판독 가능 매체의 범위 내에 포함된다. 기계 실행 가능 명령어의 집합은 예를 들어 범용 컴퓨터, 특수 목적의 컴퓨터들 또는 특수 목적의 처리 기계들로 하여금 특정 기능들 또는 기능들의 그룹을 수행하게 하는 명령어들 및 데이터를 포함한다.
예시적인 실시예에 도시된 방법들 및 시스템들의 구성과 상기 방법들 및 시스템들의 구성 요소의 배열은 단지 예시적인 것임을 유의하는 것이 중요하다. 비록 본 발명의 단지 몇몇 실시예가 상세히 설명되었지만, 본 개시를 검토하는 당해 기술 분야의 통상의 기술자라면 본 명세서에 열거된 발명 주제의 신규한 교시 및 이점으로부터 실질적으로 벗어나지 않고도 많은 수정이 가능하다는 것을 용이하게 이해할 것이다. 예를 들어, 일체로 형성된 것으로 도시된 구성 요소들은 다수의 부분 또는 구성 요소로 구성될 수 있다. 따라서, 이러한 모든 수정은 본 발명의 범위 내에 포함되는 것으로 의도된다. 본 발명의 범위 또는 첨부된 특허 청구 범위의 사상을 벗어나지 않고 바람직한 실시예들 또는 다른 대표적인 실시예들에 대한 설계, 작동 조건들 및 배열에서 기타 치환, 수정, 변경 및 생략이 이루어질 수 있다.
Claims (20)
- 하나 이상의 프로세서; 및
메모리
를 포함하는 시스템으로서,
상기 메모리는 명령어를 저장하고,
상기 명령어는 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금,
이미지에 액세스 하는 동작 - 상기 이미지 내의 제1 영역은 제2 영역 및 제3 영역에 인접하며, 상기 제2 영역과 상기 제3 영역은 서로 인접하지 않음 - ;
상기 제1 영역, 상기 제2 영역, 및 상기 제3 영역을 포함하는 상기 이미지에 기초하여, 복잡도 맵(complexity map)을 생성하는 동작;
상기 생성된 복잡도 맵에 기초하여, 상기 이미지의 상기 제2 영역과 상기 제3 영역이 스케일링될 크기(dimensions)를 결정하는 동작;
상기 이미지에 기초하여 생성된 상기 복잡도 맵에 기초하여 결정된 상기 크기로, 상기 이미지의 상기 제2 영역 및 상기 제3 영역을 스케일링하는 동작; 및
상기 이미지의 수정 버전을 생성하는 동작 - 상기 이미지의 수정 버전은 상기 제1 영역, 상기 스케일링된 제2 영역, 및 상기 스케일링된 제3 영역을 포함하며, 상기 이미지의 수정 버전 내에서 상기 스케일링된 제2 영역은 상기 스케일링된 제3 영역에 인접하게 위치하고, 상기 스케일링된 제2 영역 및 상기 스케일링된 제3 영역은, 상기 이미지에 기초하여 생성된 상기 복잡도 맵에 기초하여 결정된 상기 크기로 스케일링된 것임 -
을 수행하도록 하는,
시스템. - 제1항에 있어서,
상기 이미지에 기초하여 상기 복잡도 맵을 생성하는 동작은, 상기 이미지의 공간 복잡도(spatial complexity)를 나타내는 공간 복잡도 맵을 생성하고,
상기 제2 영역과 상기 제3 영역이 스케일링될 크기를 결정하는 동작은, 상기 생성된 공간 복잡도 맵에 기초하여 수행되며,
상기 이미지의 상기 제2 영역 및 상기 제3 영역을 스케일링하는 동작은, 상기 공간 복잡도 맵에 기초하여 결정된 상기 크기에 기초하여 수행되는,
시스템. - 제1항에 있어서,
상기 이미지에 기초하여 상기 복잡도 맵을 생성하는 동작은, 상기 이미지의 시간 복잡도(temporal complexity)를 나타내는 시간 복잡도 맵을 생성하고,
상기 제2 영역과 상기 제3 영역이 스케일링될 크기를 결정하는 동작은, 상기 생성된 시간 복잡도 맵에 기초하여 수행되며,
상기 이미지의 상기 제2 영역 및 상기 제3 영역을 스케일링하는 동작은, 상기 시간 복잡도 맵에 기초하여 결정된 상기 크기에 기초하여 수행되는,
시스템. - 제1항에 있어서,
상기 하나 이상의 프로세서는 상기 이미지의 상기 제1 영역을 스케일링하는 동작을 더 수행하며,
상기 이미지의 상기 수정 버전은 상기 이미지의 상기 스케일링된 제1 영역을 포함하는,
시스템. - 제4항에 있어서,
상기 이미지의 상기 제1 영역을 스케일링하는 동작은, 상기 이미지의 상기 스케일링된 제2 영역 및 상기 스케일링된 제3 영역의 해상도(resolution)보다 높은 해상도로 상기 제1 영역을 스케일링하며,
상기 이미지의 상기 수정 버전은, 상기 이미지의 상기 스케일링된 제2 영역 및 상기 스케일링된 제3 영역의 해상도보다 높은 상기 해상도로 스케일링된 상기 제1 영역을 포함하는,
시스템. - 제1항에 있어서,
상기 이미지의 상기 제2 영역과 상기 제3 영역이 스케일링될 크기를 결정하는 동작은, 상기 제2 영역 및 상기 제3 영역이 스케일링될 폭과 높이 중 적어도 하나를 결정하는 동작을 포함하는,
시스템. - 제1항에 있어서,
상기 이미지에 기초하여 상기 복잡도 맵을 생성하는 동작은, 공간 복잡도 맵을 생성하는 동작을 포함하되, 상기 공간 복잡도 맵을 생성하는 동작은, 상기 이미지 내에 포함된 각각의 블록의 컬러를 수량화(quantifying)하는 동작을 포함하고,
상기 이미지의 상기 제2 영역과 상기 제3 영역이 스케일링될 크기를 결정하는 동작은, 상기 이미지 내에 포함된 각각의 블록의 상기 수량화된 컬러에 기초하여 수행되는,
시스템. - 제1항에 있어서,
상기 이미지에 기초하여 상기 복잡도 맵을 생성하는 동작은, 시간 복잡도 맵을 생성하는 동작을 포함하되, 상기 시간 복잡도 맵을 생성하는 동작은, 상기 이미지와 상기 이미지에 시간적으로 인접한 후속 이미지(temporally adjacent further image) 사이에 임계량 이상 변화하는 픽셀을 수량화하는 동작을 포함하고,
상기 이미지의 상기 제2 영역과 상기 제3 영역이 스케일링될 크기를 결정하는 동작은, 상기 임계량 이상 변화하는 픽셀의 수량에 기초하여 수행되는,
시스템. - 제1항에 있어서,
상기 액세스된 이미지 내에서, 상기 제2 영역 및 상기 제3 영역은 상기 제1 영역에 의해서 분리되고,
상기 액세스된 이미지의 상기 수정 버전 내에서, 상기 스케일링된 제2 영역은 상기 스케일링된 제3 영역에 인접하게 위치하는,
시스템. - 제1항에 있어서
상기 액세스된 이미지 내에서, 상기 제2 영역은 상기 이미지의 상단 영역(top region)이고,
상기 액세스된 이미지 내에서, 상기 제3 영역은 상기 이미지의 하단 영역(bottom region)이며,
상기 액세스된 이미지의 상기 수정 버전 내에서, 상기 스케일링된 상단 영역은 상기 스케일링된 하단 영역과 인접하게 위치하는,
시스템. - 하나 이상의 프로세서에 의해 이미지를 액세스하는 단계 - 상기 이미지 내의 제1 영역은 제2 영역 및 제3 영역에 인접하며, 상기 제2 영역과 상기 제3 영역은 서로 인접하지 않음 -;
상기 하나 이상의 프로세서에 의해, 상기 제1 영역, 상기 제2 영역, 및 상기 제3 영역을 포함하는 상기 이미지에 기초하여, 복잡도 맵을 생성하는 단계;
상기 하나 이상의 프로세서에 의해, 상기 생성된 복잡도 맵에 기초하여 상기 이미지의 상기 제2 영역과 상기 제3 영역이 스케일링될 크기를 결정하는 단계;
상기 하나 이상의 프로세서에 의해, 상기 이미지에 기초하여 생성된 상기 복잡도 맵에 기초하여 결정된 상기 크기로, 상기 이미지의 상기 제2 영역 및 상기 제3 영역을 스케일링하는 단계; 및
상기 하나 이상의 프로세서에 의해, 상기 이미지의 수정 버전을 생성하는 단계 - 상기 이미지의 수정 버전은 상기 제1 영역, 상기 스케일링된 제2 영역, 및 상기 스케일링된 제3 영역을 포함하며, 상기 이미지의 수정 버전 내에서 상기 스케일링된 제2 영역은 상기 스케일링된 제3 영역에 인접하게 위치하고, 상기 스케일링된 제2 영역 및 상기 스케일링된 제3 영역은, 상기 이미지에 기초하여 생성된 상기 복잡도 맵에 기초하여 결정된 상기 크기로 스케일링된 것임 -
를 포함하는,
비디오 처리 방법. - 제11항에 있어서,
상기 이미지에 기초하여 상기 복잡도 맵을 생성하는 단계는, 상기 이미지의 공간 복잡도를 나타내는 공간 복잡도 맵을 생성하는 단계를 포함하고,
상기 제2 영역과 상기 제3 영역이 스케일링될 크기를 결정하는 단계는, 상기 생성된 공간 복잡도 맵에 기초하여 수행되며,
상기 이미지의 상기 제2 영역 및 상기 제3 영역을 스케일링하는 단계는, 상기 공간 복잡도 맵에 기초하여 결정된 상기 크기에 기초하여 수행되는,
비디오 처리 방법. - 제11항에 있어서,
상기 이미지에 기초하여 상기 복잡도 맵을 생성하는 단계는, 상기 이미지의 시간 복잡도를 나타내는 시간 복잡도 맵을 생성하는 단계를 포함하고,
상기 제2 영역과 상기 제3 영역이 스케일링될 크기를 결정하는 단계는, 상기 생성된 시간 복잡도 맵에 기초하여 수행되며,
상기 이미지의 상기 제2 영역 및 상기 제3 영역을 스케일링하는 단계는, 상기 시간 복잡도 맵에 기초하여 결정된 상기 크기에 기초하여 수행되는,
비디오 처리 방법. - 제11항에 있어서,
상기 이미지의 상기 제1 영역을 스케일링하는 단계를 더 포함하며,
상기 이미지의 상기 수정 버전은 상기 이미지의 상기 스케일링된 제1 영역을 포함하고,
상기 이미지의 상기 제1 영역을 스케일링하는 단계는, 상기 이미지의 상기 스케일링된 제2 영역 및 상기 스케일링된 제3 영역의 해상도보다 높은 해상도로 상기 제1 영역을 스케일링하는 단계를 포함하며,
상기 이미지의 상기 수정 버전은, 상기 이미지의 상기 스케일링된 제2 영역 및 상기 스케일링된 제3 영역의 해상도보다 높은 상기 해상도로 스케일링된 상기 제1 영역을 포함하는,
비디오 처리 방법. - 제11항에 있어서,
상기 이미지에 기초하여 상기 복잡도 맵을 생성하는 단계는, 공간 복잡도 맵을 생성하는 단계를 포함하되, 상기 공간 복잡도 맵을 생성하는 단계는, 상기 이미지 내에 포함된 각각의 블록의 컬러를 수량화하는 동작을 포함하고,
상기 이미지의 상기 제2 영역과 상기 제3 영역이 스케일링될 크기를 결정하는 단계는, 상기 이미지 내에 포함된 각각의 블록의 상기 수량화된 컬러에 기초하여 수행되는,
비디오 처리 방법. - 제11항에 있어서,
상기 이미지에 기초하여 상기 복잡도 맵을 생성하는 단계는, 시간 복잡도 맵을 생성하는 단계를 포함하되, 상기 시간 복잡도 맵을 생성하는 단계는, 상기 이미지와 상기 이미지에 시간적으로 인접한 후속 이미지 사이에 임계량 이상 변화하는 픽셀을 수량화하는 단계를 포함하고,
상기 이미지의 상기 제2 영역과 상기 제3 영역이 스케일링될 크기를 결정하는 단계는, 상기 임계량 이상 변화하는 픽셀의 수량에 기초하여 수행되는,
비디오 처리 방법. - 제11항에 있어서,
상기 액세스된 이미지 내에서, 상기 제2 영역 및 상기 제3 영역은 상기 제1 영역에 의해서 분리되고,
상기 액세스된 이미지의 상기 수정 버전 내에서, 상기 스케일링된 제2 영역은 상기 스케일링된 제3 영역에 인접하게 위치하는,
비디오 처리 방법. - 제11항에 있어서,
상기 액세스된 이미지 내에서, 상기 제2 영역은 상기 이미지의 상단 영역(top region)이고,
상기 액세스된 이미지 내에서, 상기 제3 영역은 상기 이미지의 하단 영역(bottom region)이며,
상기 액세스된 이미지의 상기 수정 버전 내에서, 상기 스케일링된 상단 영역은 상기 스케일링된 하단 영역과 인접하게 위치하는,
비디오 처리 방법. - 명령어를 포함하는 컴퓨터 판독 가능한 비일시적 저장 매체로서,
상기 명령어는 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금,
이미지에 액세스 하는 동작 - 상기 이미지 내의 제1 영역은 제2 영역 및 제3 영역에 인접하며, 상기 제2 영역과 상기 제3 영역은 서로 인접하지 않음 - ;
상기 제1 영역, 상기 제2 영역, 및 상기 제3 영역을 포함하는 상기 이미지에 기초하여, 복잡도 맵(complexity map)을 생성하는 동작;
상기 생성된 복잡도 맵에 기초하여, 상기 이미지의 상기 제2 영역과 상기 제3 영역이 스케일링될 크기(dimensions)를 결정하는 동작;
상기 이미지에 기초하여 생성된 상기 복잡도 맵에 기초하여 결정된 상기 크기로, 상기 이미지의 상기 제2 영역 및 상기 제3 영역을 스케일링하는 동작; 및
상기 이미지의 수정 버전을 생성하는 동작 - 상기 이미지의 수정 버전은 상기 제1 영역, 상기 스케일링된 제2 영역, 및 상기 스케일링된 제3 영역을 포함하며, 상기 이미지의 수정 버전 내에서 상기 스케일링된 제2 영역은 상기 스케일링된 제3 영역에 인접하게 위치하고, 상기 스케일링된 제2 영역 및 상기 스케일링된 제3 영역은, 상기 이미지에 기초하여 생성된 상기 복잡도 맵에 기초하여 결정된 상기 크기로 스케일링된 것임 -
을 수행하도록 하는,
컴퓨터 판독 가능한 비일시적 저장 매체. - 제19항에 있어서,
상기 하나 이상의 프로세서는 상기 이미지의 상기 제1 영역을 스케일링하는 동작을 더 수행하며,
상기 이미지의 상기 수정 버전은 상기 이미지의 상기 스케일링된 제1 영역을 포함하고,
상기 이미지의 상기 제1 영역을 스케일링하는 동작은, 상기 이미지의 상기 스케일링된 제2 영역 및 상기 스케일링된 제3 영역의 해상도보다 높은 해상도로 상기 제1 영역을 스케일링하며,
상기 이미지의 상기 수정 버전은, 상기 이미지의 상기 스케일링된 제2 영역 및 상기 스케일링된 제3 영역의 해상도보다 높은 상기 해상도로 스케일링된 상기 제1 영역을 포함하는,
컴퓨터 판독 가능한 비일시적 저장 매체.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662297394P | 2016-02-19 | 2016-02-19 | |
US15/268,111 | 2016-09-16 | ||
US15/268,111 US9912717B2 (en) | 2016-02-19 | 2016-09-16 | Systems and method for virtual reality video conversion and streaming |
KR1020207025921A KR102333398B1 (ko) | 2016-02-19 | 2017-09-18 | 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법 |
PCT/KR2017/010197 WO2018052259A1 (ko) | 2016-02-19 | 2017-09-18 | 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207025921A Division KR102333398B1 (ko) | 2016-02-19 | 2017-09-18 | 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210158381A true KR20210158381A (ko) | 2021-12-30 |
KR102506000B1 KR102506000B1 (ko) | 2023-03-03 |
Family
ID=59625327
Family Applications (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207027413A KR102272859B1 (ko) | 2016-02-19 | 2017-02-17 | Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템 |
KR1020187023908A KR102160992B1 (ko) | 2016-02-19 | 2017-02-17 | Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템 |
KR1020217013537A KR102358205B1 (ko) | 2016-02-19 | 2017-02-17 | Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템 |
KR1020227003157A KR102502546B1 (ko) | 2016-02-19 | 2017-02-17 | Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템 |
KR1020197013504A KR102155681B1 (ko) | 2016-02-19 | 2017-09-18 | 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법 |
KR1020217038744A KR102506000B1 (ko) | 2016-02-19 | 2017-09-18 | 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법 |
KR1020207025921A KR102333398B1 (ko) | 2016-02-19 | 2017-09-18 | 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법 |
Family Applications Before (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207027413A KR102272859B1 (ko) | 2016-02-19 | 2017-02-17 | Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템 |
KR1020187023908A KR102160992B1 (ko) | 2016-02-19 | 2017-02-17 | Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템 |
KR1020217013537A KR102358205B1 (ko) | 2016-02-19 | 2017-02-17 | Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템 |
KR1020227003157A KR102502546B1 (ko) | 2016-02-19 | 2017-02-17 | Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템 |
KR1020197013504A KR102155681B1 (ko) | 2016-02-19 | 2017-09-18 | 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207025921A KR102333398B1 (ko) | 2016-02-19 | 2017-09-18 | 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법 |
Country Status (6)
Country | Link |
---|---|
US (10) | US10334224B2 (ko) |
EP (1) | EP3419293B1 (ko) |
JP (3) | JP6663043B2 (ko) |
KR (7) | KR102272859B1 (ko) |
CN (5) | CN113286168B (ko) |
WO (2) | WO2017142354A1 (ko) |
Families Citing this family (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170026659A1 (en) * | 2015-10-13 | 2017-01-26 | Mediatek Inc. | Partial Decoding For Arbitrary View Angle And Line Buffer Reduction For Virtual Reality Video |
WO2017068926A1 (ja) * | 2015-10-21 | 2017-04-27 | ソニー株式会社 | 情報処理装置及びその制御方法、並びにコンピュータ・プログラム |
US10334224B2 (en) | 2016-02-19 | 2019-06-25 | Alcacruz Inc. | Systems and method for GPU based virtual reality video streaming server |
EP3249928A1 (en) * | 2016-05-23 | 2017-11-29 | Thomson Licensing | Method, apparatus and stream of formatting an immersive video for legacy and immersive rendering devices |
CN105915990B (zh) * | 2016-05-25 | 2022-11-15 | 歌尔光学科技有限公司 | 一种虚拟现实头盔及其使用方法 |
DE102016213494A1 (de) * | 2016-07-22 | 2018-01-25 | Conti Temic Microelectronic Gmbh | Kameravorrichtung sowie Verfahren zur Erfassung eines Umgebungsbereichs eines eigenen Fahrzeugs |
DE102016213493A1 (de) * | 2016-07-22 | 2018-01-25 | Conti Temic Microelectronic Gmbh | Kameravorrichtung zur Aufnahme eines Umgebungsbereichs eines eigenen Fahrzeugs sowie Verfahren zur Bereitstellung einer Fahrerassistenzfunktion |
US10410320B2 (en) | 2016-09-30 | 2019-09-10 | Sony Interactive Entertainment Inc. | Course profiling and sharing |
US10679511B2 (en) | 2016-09-30 | 2020-06-09 | Sony Interactive Entertainment Inc. | Collision detection and avoidance |
US11125561B2 (en) | 2016-09-30 | 2021-09-21 | Sony Interactive Entertainment Inc. | Steering assist |
US10850838B2 (en) | 2016-09-30 | 2020-12-01 | Sony Interactive Entertainment Inc. | UAV battery form factor and insertion/ejection methodologies |
CN109362242B (zh) | 2016-10-10 | 2021-05-14 | 华为技术有限公司 | 一种视频数据的处理方法及装置 |
KR102498598B1 (ko) * | 2016-10-18 | 2023-02-14 | 삼성전자주식회사 | 영상 처리 장치 및 그 영상 처리 방법 |
US10306180B2 (en) * | 2016-10-21 | 2019-05-28 | Liquidsky Software, Inc. | Predictive virtual reality content streaming techniques |
KR102598082B1 (ko) * | 2016-10-28 | 2023-11-03 | 삼성전자주식회사 | 영상 표시 장치, 모바일 장치 및 그 동작방법 |
US10631012B2 (en) * | 2016-12-02 | 2020-04-21 | Centurylink Intellectual Property Llc | Method and system for implementing detection and visual enhancement of video encoding artifacts |
US10999602B2 (en) | 2016-12-23 | 2021-05-04 | Apple Inc. | Sphere projected motion estimation/compensation and mode decision |
CN108282449B (zh) * | 2017-01-06 | 2020-10-09 | 华为技术有限公司 | 一种应用于虚拟现实技术的流媒体的传输方法和客户端 |
WO2018131813A1 (en) * | 2017-01-10 | 2018-07-19 | Samsung Electronics Co., Ltd. | Method and apparatus for generating metadata for 3d images |
WO2018151977A1 (en) * | 2017-02-14 | 2018-08-23 | Axon Enterprise, Inc. | Systems and methods for determining a field of view |
US11259046B2 (en) | 2017-02-15 | 2022-02-22 | Apple Inc. | Processing of equirectangular object data to compensate for distortion by spherical projections |
US10924747B2 (en) | 2017-02-27 | 2021-02-16 | Apple Inc. | Video coding techniques for multi-view video |
CN108513119A (zh) * | 2017-02-27 | 2018-09-07 | 阿里巴巴集团控股有限公司 | 图像的映射、处理方法、装置和机器可读介质 |
US10467775B1 (en) * | 2017-05-03 | 2019-11-05 | Amazon Technologies, Inc. | Identifying pixel locations using a transformation function |
US11093752B2 (en) | 2017-06-02 | 2021-08-17 | Apple Inc. | Object tracking in multi-view video |
MX2019014416A (es) | 2017-06-02 | 2020-02-05 | Vid Scale Inc | Suministro de video en 360 grados a través de la red de próxima generación. |
US11107177B1 (en) * | 2017-06-16 | 2021-08-31 | Amazon Technologies, Inc. | Data/metadata synchronization using metadata queue statistics |
US10754242B2 (en) * | 2017-06-30 | 2020-08-25 | Apple Inc. | Adaptive resolution and projection format in multi-direction video |
US11521349B2 (en) | 2017-09-21 | 2022-12-06 | Faro Technologies, Inc. | Virtual reality system for viewing point cloud volumes while maintaining a high point cloud graphical resolution |
US10623791B2 (en) | 2018-06-01 | 2020-04-14 | At&T Intellectual Property I, L.P. | Field of view prediction in live panoramic video streaming |
US10812774B2 (en) | 2018-06-06 | 2020-10-20 | At&T Intellectual Property I, L.P. | Methods and devices for adapting the rate of video content streaming |
US10636118B2 (en) * | 2018-06-25 | 2020-04-28 | Microsoft Technology Licensing, Llc | Input scaling to keep controller inside field of view |
US10616621B2 (en) | 2018-06-29 | 2020-04-07 | At&T Intellectual Property I, L.P. | Methods and devices for determining multipath routing for panoramic video content |
US20210183127A1 (en) * | 2018-06-29 | 2021-06-17 | Eifeninteractive Co., Ltd | System for performing real-time parallel rendering of motion capture image by using gpu |
US20200022632A1 (en) * | 2018-07-17 | 2020-01-23 | Limbix Health, Inc. | Digital content processing and generation for a virtual environment |
US10360713B1 (en) * | 2018-07-17 | 2019-07-23 | Disney Enterprises, Inc. | Event enhancement using augmented reality effects |
US11019361B2 (en) | 2018-08-13 | 2021-05-25 | At&T Intellectual Property I, L.P. | Methods, systems and devices for adjusting panoramic view of a camera for capturing video content |
US10708494B2 (en) | 2018-08-13 | 2020-07-07 | At&T Intellectual Property I, L.P. | Methods, systems and devices for adjusting panoramic video content |
US10735778B2 (en) | 2018-08-23 | 2020-08-04 | At&T Intellectual Property I, L.P. | Proxy assisted panoramic video streaming at mobile edge |
CN110876082B (zh) * | 2018-08-31 | 2020-12-29 | 网宿科技股份有限公司 | 一种视频帧的复杂度的确定方法及装置 |
US10560759B1 (en) | 2018-10-23 | 2020-02-11 | At&T Intellectual Property I, L.P. | Active network support on adaptive virtual reality video transmission |
US10536666B1 (en) * | 2019-01-22 | 2020-01-14 | Facebook Technologies, Llc | Systems and methods for transmitting aggregated video data |
US10742882B1 (en) * | 2019-05-17 | 2020-08-11 | Gopro, Inc. | Systems and methods for framing videos |
US11076158B2 (en) * | 2019-09-09 | 2021-07-27 | Facebook Technologies, Llc | Systems and methods for reducing WiFi latency using transmit opportunity and duration |
WO2021162446A1 (en) * | 2020-02-14 | 2021-08-19 | Samsung Electronics Co., Ltd. | Method and apparatus for streaming vr image |
KR20210107409A (ko) | 2020-02-24 | 2021-09-01 | 삼성전자주식회사 | 엣지 컴퓨팅 서비스를 이용한 영상 컨텐츠 전송 방법 및 장치 |
WO2021194483A1 (en) * | 2020-03-25 | 2021-09-30 | Alcacruz Inc. | Generating a representation of a spherical image |
US20210349308A1 (en) * | 2020-05-05 | 2021-11-11 | Szu Wen FAN | System and method for video processing using a virtual reality device |
US11188902B1 (en) * | 2020-05-20 | 2021-11-30 | Louise Dorothy Saulog Sano | Live time connection application method and devices |
CN113766272B (zh) * | 2020-06-04 | 2023-02-10 | 腾讯科技(深圳)有限公司 | 一种沉浸媒体的数据处理方法 |
JP7470387B2 (ja) * | 2020-06-08 | 2024-04-18 | 株式会社大一商会 | 遊技機 |
CN113839908B (zh) * | 2020-06-23 | 2023-07-11 | 华为技术有限公司 | 视频传输方法、装置、系统及计算机可读存储介质 |
US11494951B2 (en) | 2020-07-24 | 2022-11-08 | At&T Intellectual Property I, L.P. | Policy definition and enforcement for extended reality media sessions |
CN114071150B (zh) | 2020-07-31 | 2023-06-16 | 京东方科技集团股份有限公司 | 图像压缩方法及装置、图像显示方法及装置和介质 |
KR20220037617A (ko) * | 2020-09-18 | 2022-03-25 | 삼성전자주식회사 | 엣지 컴퓨팅 서비스를 이용한 동영상 처리 방법 및 장치 |
US11908364B2 (en) * | 2020-09-23 | 2024-02-20 | Samsung Electronics Co., Ltd. | Low-power display driving circuit performing internal encoding and decoding and operating method thereof |
CN112774193A (zh) * | 2021-01-14 | 2021-05-11 | 江苏卫健信息科技有限公司 | 一种云游戏的图像渲染方法 |
US11924393B2 (en) * | 2021-01-22 | 2024-03-05 | Valeo Comfort And Driving Assistance | Shared viewing of video among multiple users |
CN112954442B (zh) * | 2021-03-18 | 2023-07-18 | 北京字节跳动网络技术有限公司 | 视频播放方法、装置、设备和存储介质 |
CN113094019A (zh) * | 2021-04-30 | 2021-07-09 | 咪咕文化科技有限公司 | 交互方法、装置、电子设备及存储介质 |
GB2609013A (en) * | 2021-07-16 | 2023-01-25 | Sony Interactive Entertainment Inc | Video recording and playback systems and methods |
EP4120238A1 (en) * | 2021-07-16 | 2023-01-18 | Sony Interactive Entertainment Inc. | Video processing and playback systems and methods |
CN113676753B (zh) * | 2021-10-21 | 2022-02-15 | 北京拾音科技文化有限公司 | Vr场景中展示视频的方法、装置、电子设备和存储介质 |
US12112687B2 (en) * | 2021-12-07 | 2024-10-08 | Kyndryl, Inc. | Dynamic display for image-enabled clothing |
KR20230094587A (ko) | 2021-12-21 | 2023-06-28 | 서강대학교산학협력단 | 마이크로 배치 스트리밍 처리 시스템 및 상기 시스템에서의 동적 데이터 배치 및 쿼리 계획 방법 |
CN114938456A (zh) * | 2022-01-20 | 2022-08-23 | 上海瞳观智能科技有限公司 | Vr直播系统及方法 |
WO2023141313A2 (en) * | 2022-01-21 | 2023-07-27 | Arizona Board Of Regents On Behalf Of The University Of Arizona | Wavelength and diffractive multiplexed expansion of field of view for display devices |
US11983822B2 (en) | 2022-09-02 | 2024-05-14 | Valeo Comfort And Driving Assistance | Shared viewing of video with prevention of cyclical following among users |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5880734A (en) * | 1996-10-03 | 1999-03-09 | Intel Corporation | Peripheral vision simulator for immersive 3D virtual environments |
KR100613752B1 (ko) | 2004-03-11 | 2006-08-22 | 경북대학교 산학협력단 | 파노라마 영상의 스트리밍 방법 |
US20160012855A1 (en) * | 2014-07-14 | 2016-01-14 | Sony Computer Entertainment Inc. | System and method for use in playing back panorama video content |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62168102A (ja) | 1986-12-30 | 1987-07-24 | Furukawa Electric Co Ltd:The | 光フアイバ融着接続用スリツプホルダ |
US5185667A (en) | 1991-05-13 | 1993-02-09 | Telerobotics International, Inc. | Omniview motionless camera orientation system |
JPH10191355A (ja) * | 1996-12-26 | 1998-07-21 | Sony Corp | 映像信号切換装置およびその方法 |
US6043837A (en) * | 1997-05-08 | 2000-03-28 | Be Here Corporation | Method and apparatus for electronically distributing images from a panoptic camera system |
US6466254B1 (en) * | 1997-05-08 | 2002-10-15 | Be Here Corporation | Method and apparatus for electronically distributing motion panoramic images |
US6778211B1 (en) * | 1999-04-08 | 2004-08-17 | Ipix Corp. | Method and apparatus for providing virtual processing effects for wide-angle video images |
WO2000060857A1 (en) * | 1999-04-08 | 2000-10-12 | Internet Pictures Corporation | Virtual theater |
JP2003101989A (ja) * | 2001-09-25 | 2003-04-04 | Matsushita Electric Ind Co Ltd | 仮想鑑賞方法、鑑賞サーバ装置、端末、プログラム |
GB0230328D0 (en) * | 2002-12-31 | 2003-02-05 | British Telecomm | Video streaming |
JP2005341093A (ja) | 2004-05-26 | 2005-12-08 | Mitsubishi Electric Corp | コンテンツ適応化装置、コンテンツ適応化システム、コンテンツ適応化方法 |
KR100677142B1 (ko) * | 2004-08-13 | 2007-02-02 | 경희대학교 산학협력단 | 파노라마 영상의 움직임 추정 및 보상 |
US20060055807A1 (en) * | 2004-09-14 | 2006-03-16 | Pemer Frederick A | Imaging methods, image sensors, imaging systems, and articles of manufacture |
CN101000461B (zh) * | 2006-12-14 | 2010-09-08 | 上海杰图软件技术有限公司 | 一种鱼眼图像生成立方体全景的方法 |
JP5115150B2 (ja) * | 2007-11-02 | 2013-01-09 | ソニー株式会社 | 情報提示装置及び情報提示方法 |
US8747116B2 (en) | 2008-08-21 | 2014-06-10 | Lincoln Global, Inc. | System and method providing arc welding training in a real-time simulated virtual reality environment using real-time weld puddle feedback |
US8851896B2 (en) | 2008-08-21 | 2014-10-07 | Lincoln Global, Inc. | Virtual reality GTAW and pipe welding simulator and setup |
TW201044185A (en) | 2009-06-09 | 2010-12-16 | Zillians Inc | Virtual world simulation systems and methods utilizing parallel coprocessors, and computer program products thereof |
US8270473B2 (en) * | 2009-06-12 | 2012-09-18 | Microsoft Corporation | Motion based dynamic resolution multiple bit rate video encoding |
JP2012014676A (ja) | 2010-05-31 | 2012-01-19 | Sony Computer Entertainment Inc | 仮想現実空間提供システム、仮想現実空間提供方法およびそのプログラム |
US8619005B2 (en) | 2010-09-09 | 2013-12-31 | Eastman Kodak Company | Switchable head-mounted display transition |
US20120092348A1 (en) | 2010-10-14 | 2012-04-19 | Immersive Media Company | Semi-automatic navigation with an immersive image |
US20120212491A1 (en) | 2011-02-22 | 2012-08-23 | Sony Computer Entertainment Inc. | Indirect lighting process for virtual environments |
WO2013038679A1 (ja) * | 2011-09-13 | 2013-03-21 | パナソニック株式会社 | 符号化装置、復号装置、再生装置、符号化方法、及び復号方法 |
CN202257030U (zh) * | 2011-10-19 | 2012-05-30 | 广东工业大学 | 大视场直接投影式激光光刻光学系统 |
EP2777273B1 (en) * | 2011-11-11 | 2019-09-04 | GE Video Compression, LLC | Efficient multi-view coding using depth-map estimate for a dependent view |
US9516225B2 (en) * | 2011-12-02 | 2016-12-06 | Amazon Technologies, Inc. | Apparatus and method for panoramic video hosting |
JP5861499B2 (ja) * | 2012-03-01 | 2016-02-16 | 大日本印刷株式会社 | 動画提示装置 |
EP2645713A1 (en) * | 2012-03-30 | 2013-10-02 | Alcatel Lucent | Method and apparatus for encoding a selected spatial portion of a video stream |
US10514541B2 (en) | 2012-12-27 | 2019-12-24 | Microsoft Technology Licensing, Llc | Display update time reduction for a near-eye display |
US20160205341A1 (en) * | 2013-08-20 | 2016-07-14 | Smarter Tv Ltd. | System and method for real-time processing of ultra-high resolution digital video |
US9774881B2 (en) * | 2014-01-08 | 2017-09-26 | Microsoft Technology Licensing, Llc | Representing motion vectors in an encoded bitstream |
JP6075889B2 (ja) * | 2014-06-10 | 2017-02-08 | 日本電信電話株式会社 | 映像配信装置及び映像再生装置 |
KR101953679B1 (ko) * | 2014-06-27 | 2019-03-04 | 코닌클리즈케 케이피엔 엔.브이. | Hevc-타일드 비디오 스트림을 기초로 한 관심영역 결정 |
US9917877B2 (en) * | 2014-10-20 | 2018-03-13 | Google Llc | Streaming the visible parts of a spherical video |
US10104361B2 (en) | 2014-11-14 | 2018-10-16 | Samsung Electronics Co., Ltd. | Coding of 360 degree videos using region adaptive smoothing |
GB2536025B (en) * | 2015-03-05 | 2021-03-03 | Nokia Technologies Oy | Video streaming method |
US9848212B2 (en) * | 2015-07-10 | 2017-12-19 | Futurewei Technologies, Inc. | Multi-view video streaming with fast and smooth view switch |
US10674205B2 (en) * | 2015-11-17 | 2020-06-02 | Rovi Guides, Inc. | Methods and systems for selecting a preferred viewpoint for media assets |
US20170147830A1 (en) * | 2015-11-24 | 2017-05-25 | Comcast Cable Communications, Llc | Adaptive Rights Management System |
US10334224B2 (en) | 2016-02-19 | 2019-06-25 | Alcacruz Inc. | Systems and method for GPU based virtual reality video streaming server |
-
2016
- 2016-04-08 US US15/094,336 patent/US10334224B2/en active Active
- 2016-09-16 US US15/268,111 patent/US9912717B2/en active Active
-
2017
- 2017-02-17 KR KR1020207027413A patent/KR102272859B1/ko active IP Right Grant
- 2017-02-17 WO PCT/KR2017/001790 patent/WO2017142354A1/ko active Application Filing
- 2017-02-17 JP JP2018562485A patent/JP6663043B2/ja active Active
- 2017-02-17 CN CN202110538794.7A patent/CN113286168B/zh active Active
- 2017-02-17 KR KR1020187023908A patent/KR102160992B1/ko active IP Right Grant
- 2017-02-17 CN CN201780013448.9A patent/CN108702522B/zh active Active
- 2017-02-17 KR KR1020217013537A patent/KR102358205B1/ko active IP Right Grant
- 2017-02-17 CN CN202110538787.7A patent/CN113286167B/zh active Active
- 2017-02-17 EP EP17753515.0A patent/EP3419293B1/en active Active
- 2017-02-17 KR KR1020227003157A patent/KR102502546B1/ko active IP Right Grant
- 2017-09-18 WO PCT/KR2017/010197 patent/WO2018052259A1/ko active Application Filing
- 2017-09-18 KR KR1020197013504A patent/KR102155681B1/ko active IP Right Grant
- 2017-09-18 KR KR1020217038744A patent/KR102506000B1/ko active IP Right Grant
- 2017-09-18 KR KR1020207025921A patent/KR102333398B1/ko active IP Right Grant
- 2017-09-18 CN CN201780071089.2A patent/CN110226316B/zh active Active
- 2017-09-18 CN CN202210587265.0A patent/CN115225882A/zh active Pending
-
2018
- 2018-01-23 US US15/877,799 patent/US20180152690A1/en not_active Abandoned
-
2019
- 2019-04-23 US US16/391,486 patent/US10904511B2/en active Active
- 2019-11-20 US US16/689,520 patent/US10939087B2/en active Active
-
2020
- 2020-02-13 JP JP2020022170A patent/JP7041440B2/ja active Active
- 2020-05-07 US US16/868,974 patent/US11050996B2/en active Active
-
2021
- 2021-01-26 US US17/158,654 patent/US11470301B2/en active Active
- 2021-05-10 US US17/315,995 patent/US11375172B2/en active Active
-
2022
- 2022-03-03 JP JP2022032850A patent/JP2022091767A/ja active Pending
- 2022-04-26 US US17/729,225 patent/US20220264069A1/en not_active Abandoned
- 2022-08-31 US US17/899,756 patent/US11843759B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5880734A (en) * | 1996-10-03 | 1999-03-09 | Intel Corporation | Peripheral vision simulator for immersive 3D virtual environments |
KR100613752B1 (ko) | 2004-03-11 | 2006-08-22 | 경북대학교 산학협력단 | 파노라마 영상의 스트리밍 방법 |
US20160012855A1 (en) * | 2014-07-14 | 2016-01-14 | Sony Computer Entertainment Inc. | System and method for use in playing back panorama video content |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102333398B1 (ko) | 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법 | |
US10897614B2 (en) | Method and an apparatus and a computer program product for video encoding and decoding | |
US10469873B2 (en) | Encoding and decoding virtual reality video | |
US10567464B2 (en) | Video compression with adaptive view-dependent lighting removal | |
CN109983757B (zh) | 全景视频回放期间的视图相关操作 | |
KR102013403B1 (ko) | 구면 영상 스트리밍 | |
CN112204993B (zh) | 使用重叠的被分区的分段的自适应全景视频流式传输 | |
US20170244948A1 (en) | Spatial random access enabled video system with a three-dimensional viewing volume | |
CN108780584B (zh) | 用于流传输和渲染的球形视频的转换和预处理 | |
JP2020509647A (ja) | 画像のマッピングと処理方法、装置、及び、機械可読媒体 | |
CN113243112B (zh) | 流式传输体积视频和非体积视频 | |
CN109983500A (zh) | 重新投影全景视频图片的平板投影以通过应用进行渲染 | |
CN112703737A (zh) | 多向视频流的可扩展性 | |
JP7555698B2 (ja) | 画像データ転送装置および画像データ転送方法 | |
JP7496677B2 (ja) | 画像データ転送装置、画像表示システム、および画像圧縮方法 | |
JP7491676B2 (ja) | 画像データ転送装置および画像圧縮方法 | |
US20230388542A1 (en) | A method and apparatus for adapting a volumetric video to client devices | |
CN114930812B (zh) | 用于解码3d视频的方法和装置 | |
Champel et al. | The special challenges of offering high quality experience for VR video | |
KR102499900B1 (ko) | 고해상도 영상의 스트리밍을 위한 영상 전송 장치와 영상 재생 장치 및 그 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |