CN110663068B - 用于渲染全景场景的坐标映射 - Google Patents

用于渲染全景场景的坐标映射 Download PDF

Info

Publication number
CN110663068B
CN110663068B CN201880034456.6A CN201880034456A CN110663068B CN 110663068 B CN110663068 B CN 110663068B CN 201880034456 A CN201880034456 A CN 201880034456A CN 110663068 B CN110663068 B CN 110663068B
Authority
CN
China
Prior art keywords
projection
rendering
image
coordinate
panoramic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201880034456.6A
Other languages
English (en)
Other versions
CN110663068A (zh
Inventor
M.O.范德文特
H.N.欣里克斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nederlandse Organisatie voor Toegepast Natuurwetenschappelijk Onderzoek TNO
Koninklijke KPN NV
Original Assignee
Nederlandse Organisatie voor Toegepast Natuurwetenschappelijk Onderzoek TNO
Koninklijke KPN NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nederlandse Organisatie voor Toegepast Natuurwetenschappelijk Onderzoek TNO, Koninklijke KPN NV filed Critical Nederlandse Organisatie voor Toegepast Natuurwetenschappelijk Onderzoek TNO
Publication of CN110663068A publication Critical patent/CN110663068A/zh
Application granted granted Critical
Publication of CN110663068B publication Critical patent/CN110663068B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/16Spatio-temporal transformations, e.g. video cubism
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/2628Alteration of picture size, shape, position or orientation, e.g. zooming, rotation, rolling, perspective, translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/04Context-preserving transformations, e.g. by using an importance map
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/111Transformation of image signals corresponding to virtual viewpoints, e.g. spatial image interpolation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/161Encoding, multiplexing or demultiplexing different image signal components
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/172Processing image signals image signals comprising non-image signal components, e.g. headers or format information
    • H04N13/178Metadata, e.g. disparity information

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

提供了一种投影元数据系统和方法,该投影元数据系统和方法用于向渲染系统提供投影元数据以供在渲染全景场景时使用。提供了一种渲染系统和方法,该渲染系统和方法用于使用该投影元数据渲染该全景场景。该投影元数据可以包括机器可读数据,该机器可读数据可以直接提供将由该渲染系统用来渲染该全景场景的坐标映射。例如,可以提供可执行脚本,该可执行脚本当被执行时进行该坐标映射。相比于用信号向渲染系统传输要使用哪个投影的已知方法,这些方法可能通常涉及从多个预定义投影中选择某个投影以及用信号传输该选择,投影元数据的使用可以提供高度灵活性,因为可以为例如该全景场景的不同空间和/或时间部分、不同渲染技术等定义不同投影。

Description

用于渲染全景场景的坐标映射
技术领域
本发明涉及一种用于使渲染系统能够渲染全景场景的方法和系统,并且涉及一种用于渲染全景场景的方法和渲染系统。本发明进一步涉及一种包括供渲染系统用来渲染全景场景的投影元数据的计算机可读介质。本发明进一步涉及一种计算机可读介质,该计算机可读介质包括用于执行这些方法中的一个或多个的计算机程序。
背景技术
虚拟现实(VR)涉及使用计算机技术来模拟用户在虚拟环境中的物理存在。通常,VR渲染设备利用头戴式显示器(HMD)向用户渲染虚拟环境,尽管还可以使用其他类型的VR显示器和渲染技术,包括但不限于全息术和洞穴状自动虚拟环境。
使用这种VR渲染设备来渲染VR图像或VR视频是已知的。VR图像或VR视频可以显示全景场景,其中术语“全景场景”指例如场景的至少180度视图。VR图像或VR视频甚至可以提供场景的更大视图,例如,高达360度,从而为用户提供甚至更沉浸式的体验。
全景场景还可以以沉浸式方式被渲染和显示,该沉浸式方式通常不被理解为VR。例如,全景场景可以显示在曲面显示器、圆顶形显示器等上。另一个示例是增强现实,其中全景场景可以被渲染和显示以增强物理现实世界环境的实时取景。
通常,渲染全景场景涉及将全景场景的图像数据投影到虚拟主体(如球面)上,并从虚拟主体内的或面向虚拟主体的视点渲染全景场景。
例如,通常通过将多个图像(例如,使用鱼眼镜头捕获的两个180°图像)拼接在一起来创建360°视频。当要渲染360°视频时,通常将视频图像映射到虚拟主体上,该虚拟主体可以是球面、盒子或其他几何图元或形状。这样做之后,可以从虚拟主体内的或面向虚拟主体的视点渲染全景场景。
为了将视频图像投影到虚拟主体上,使用投影。这种投影可以涉及从视频图像的典型直角坐标到与虚拟主体相关联的坐标系的坐标映射。例如,如果虚拟主体是球面并且与球面坐标系相关联,则坐标映射可以将坐标从视频图像的直角坐标系映射到球面坐标系,反之亦然。
坐标映射因此可以涉及将图像投影到虚拟主体的表面上,反之亦然,这取决于哪个坐标系被用作输入。将球面投影到平面上还是制图学中遇到的问题,并且存在许多不同的解决方案,每种解决方案都有其自己的优点和缺点以及计算复杂度、失真、均匀性等之间的权衡。
例如,可以使用等距柱状投影,该等距柱状投影是其中所有子午线和纬度线都被映射成直线的圆柱投影。由于此平直度,投影的数学定义可能相对简单,并且因此在许多360°视频编码系统中使用。此投影的缺点可能是在所得图像中引入变形。因此,此投影不能保存比例或距离。
已知投影的另一个示例是方位角正交投影,该方位角正交投影类似于从无限远距离处观察球面物体。当使用正交投影将球面投影到平面上时,直线从平面投射到球面上,导致投影正好覆盖球面的一半,例如,半球。这样,可能需要第二图像来覆盖球面的另一半。此投影的缺点可能是被投影图像边缘附近的增加的变形。
计算机系统中图像的离散表示固有的另一个问题是,由投影引起的任何失真都可能导致图像信息的丢失。例如,在输入图像的鱼眼投影中,在输出图像的边缘处的区域相比于在输出图像的中心中的相同区域覆盖更大的输入图像区域。给定图像中像素的均匀分布,输出图像边缘处相比于其中心处可用于输入图像的图像信息的像素更少。
还存在各种其他类型的投影,包括但不限于立方体贴图投影和棱锥体投影,后者在Kuzyakov等人2016年1月21日发表的网络文章“Next-generation video encodingtechniquesfor360 video and VR(用于360°视频和VR的下一代视频编码技术)”中进行描述,该网络文章在https://code.facebook.com/posts/1126354007399553/next-generation-video-encodin g-techniques-for-360-video-and-vr/处找到。
已知向渲染设备发信号通知在特定的360°视频的渲染中渲染设备将使用多个预定义投影中的哪个投影。即,定义360°视频(的编码)的标准的MPEG全向媒体应用格式(MPEG-OMAF)包含针对两类投影的定义:1)等距柱状投影,其中视球的可配置旋转被定义为偏航角和俯仰角,以及2)支持任何数量的圆形图像的全向鱼眼视频。前者被定义为“投影全向视频盒”,并且后者被定义为“鱼眼全向视频盒”,两者都可以包括在“方案信息盒”中。
以上述方式在MPEG-OMAF中进行信号传输的缺点是信号传输不灵活,因为其涉及固定数量的预定义投影。
发明内容
将有利的是,获得到渲染系统的关于将在渲染全景场景时使用哪个投影(其更具灵活性)的信号传输。
本发明的以下方面涉及向渲染系统提供投影元数据以供在渲染全景场景时使用。该投影元数据可以包括机器可读数据,该机器可读数据可以直接提供将由该渲染系统用来渲染该全景场景的坐标映射。例如,可以提供可执行脚本,该可执行脚本当被执行时进行该坐标映射。这提供了高度灵活性,因为可以为例如该全景场景的不同空间和/或时间部分、不同类型的虚拟主体、不同渲染技术等定义不同投影。
根据本发明的第一方面,可以提供一种用于使渲染系统能够渲染全景场景的方法,其中,该全景场景可以由至少一个图像表示,其中,该渲染系统可以被配置成将该至少一个图像投影到虚拟主体上,并且从该虚拟主体内的或面向该虚拟主体的视点渲染该全景场景。该方法可以包括:
-向该渲染系统提供该至少一个图像的图像数据;
-向该渲染系统提供投影元数据,该投影元数据包括提供坐标映射的机器可读数据,该坐标映射将被该渲染系统用来将该至少一个图像投影到该虚拟主体上,该坐标映射介于与该至少一个图像相关联的第一坐标系和与该虚拟主体相关联的第二坐标系之间。
根据本发明的另一方面,可以提供一种用于渲染全景场景的方法,其中,该全景场景可以由至少一个图像表示。该方法可以包括:
-获得该至少一个图像的图像数据;
-经由通信接口获得与该图像数据相关联的投影元数据,该投影元数据包括提供坐标映射的机器可读数据,该坐标映射将用于将该至少一个图像投影到虚拟主体上,该坐标映射介于与该至少一个图像相关联的第一坐标系和与该虚拟主体相关联的第二坐标系之间;
-使用该坐标映射将该至少一个图像投影到该虚拟主体上;以及
-从该虚拟主体内的或面向该虚拟主体的视点渲染该全景场景。
根据本发明的另一方面,可以提供一种暂态或非暂态计算机可读介质,该暂态或非暂态计算机可读介质包括供渲染系统用来渲染全景场景的投影元数据,其中,该全景场景可以由至少一个图像表示,其中,该渲染系统可以被配置成将该至少一个图像投影到虚拟主体上,并且从该虚拟主体内的或面向该虚拟主体的视点渲染该全景场景,
其中,该投影元数据可以包括提供坐标映射的机器可读数据,该坐标映射将被该渲染系统用来将该至少一个图像投影到该虚拟主体上,该坐标映射介于与该至少一个图像相关联的第一坐标系和与该虚拟主体相关联的第二坐标系之间。
根据本发明的另一方面,可以提供一种用于使渲染系统能够渲染全景场景的投影元数据系统,其中,该全景场景可以由至少一个图像表示,其中,该渲染系统可以被配置成将该至少一个图像投影到虚拟主体上,并且从该虚拟主体内的或面向该虚拟主体的视点渲染该全景场景。该投影元数据系统可以包括:
-数据存储装置,该数据存储装置存储该至少一个图像的图像数据;
-通信接口,该通信接口用于向该渲染系统提供该图像数据和投影元数据,该投影元数据包括提供坐标映射的机器可读数据,该坐标映射将被该渲染系统用来将该至少一个图像投影到该虚拟主体上,该坐标映射介于与该至少一个图像相关联的第一坐标系和与该虚拟主体相关联的第二坐标系之间。
根据本发明的另一方面,可以提供一种用于渲染全景场景的渲染系统,其中,该全景场景可以由至少一个图像表示。该渲染系统可以包括:
-通信接口,该通信接口被配置成:
-获得该至少一个图像的图像数据;
-获得与该图像数据相关联的投影元数据,该投影元数据包括提供坐标映射的机器可读数据,该坐标映射将用于将该至少一个图像投影到虚拟主体上,该坐标映射介于与该至少一个图像相关联的第一坐标系和与该虚拟主体相关联的第二坐标系之间;
-处理器,该处理器被配置成:
-使用该坐标映射将该至少一个图像投影到该虚拟主体上;并且
-从该虚拟主体内的或面向该虚拟主体的视点渲染该全景场景。
以上措施涉及向渲染系统提供投影元数据。投影元数据可以与全景场景的图像数据相关联,因为该投影元数据可以定义用于将图像数据投影到用于渲染全景场景的虚拟主体上的坐标映射。坐标映射可以以机器可读数据的形式提供。如此,当由渲染系统或其他接收者处理时,数据可以允许渲染系统执行坐标映射。非限制性示例是投影元数据可以包括可执行脚本,该可执行脚本当由渲染系统执行时可以计算坐标映射。例如,可执行脚本可以与图像坐标一起作为输入来执行,并且提供虚拟主体坐标作为输出,反之亦然。另一个非限制性示例是投影元数据可以提供表示坐标映射的查找表,或可以以另一种方式直接定义坐标映射。
发明人已经考虑到每个投影都有其自己的优点和缺点,因为没有普遍的“最佳”投影。如此,投影应该优选地适于其正在被使用的上下文,该上下文可以根据例如全景场景的哪个空间和/或时间部分被投影、虚拟主体的类型、渲染技术的类型、显示器的类型等而不同。通过提供将投影本身提供给渲染系统的投影元数据,获得了高度灵活性。即,投影可以被定制用于具体的上下文,因为可以为例如全景场景的不同空间和/或时间部分、不同类型的虚拟主体、不同类型的渲染技术、不同类型的显示器等提供不同投影。优点可能是不需要标准化每种不同类型的投影。相反,标准化投影元数据的格式可能就足够了,这可以允许在投影元数据的格式内自由定义投影。
在实施例中,该全景场景可以是全景视频的一部分,其中,该图像数据可以是该全景视频的视频数据的一部分,并且该方法可以包括:
-编码该视频数据以获得经编码视频数据;
-格式化该经编码视频数据以获得流;
-将该投影元数据包括在该流中;以及
-向该渲染系统提供该流。
投影元数据可以包括在还承载视频数据的媒体流中,而不是单独向渲染系统提供投影元数据。此实施例的优点在于,渲染系统或另一个实体可能不需要单独获得特定视频或其一部分的投影元数据。相反,投影元数据可以与视频数据一起固有地获得。另一个优点可以是,包含在同一流中可以固有地将投影元数据与特定视频或其一部分相关联,从而避免渲染系统或其他实体标识哪个投影元数据将用于渲染特定视频的需要。
例如,将该投影元数据包括在该流中可以包括将该投影元数据与该流中的该经编码视频数据多路复用。
在实施例中,投影元数据可以包括可执行脚本,并且该方法可以包括执行可执行脚本以获得坐标映射。有效地,可以向渲染系统提供程序或可执行函数,以使渲染系统能够通过执行程序或调用函数来本地地计算坐标映射。例如,可执行脚本可以以如JavaScript、Python、Java、GLSL(OpenGL着色语言)脚本等形式提供。提供可执行脚本可能比例如通过查找表直接定义坐标映射有优势。例如,可执行脚本可能比查找表需要更少的数据,因为该可执行脚本可能只需要定义坐标系之间的数学关系。另一个优点是可执行脚本可以允许运行时间期间的动态行为。例如,可以提供可执行脚本,该可执行脚本使坐标映射适于渲染系统使用的虚拟主体、渲染技术或显示器的类型。另一个示例是,可执行脚本可以在运行时间期间从互联网检索信息,以适应或完成坐标映射。
注意,脚本可以以然后由渲染系统在执行之前编译的源代码的形式提供,还可以以编译的形式提供,例如,作为二进制可执行文件。前者的优点可能在于可执行脚本可以不绑定到特定处理架构或操作系统。后者的优点可能在于当以编译形式执行可执行脚本时,可以提高执行速度和/或减少存储器使用率。
在实施例中,该可执行脚本可以被配置成在执行期间实时计算给定坐标的坐标映射,或在第一次执行时预先计算所有坐标的坐标映射。后者的优点可能在于一旦坐标映射已经被预先计算,运行时的计算复杂度就相对较低,因为其可能仅涉及在输入坐标的基础上的输出坐标的查找或类似检索。
在实施例中,该投影元数据可以提供多个投影以供与以下各项中的至少一项一起使用:
-不同类型的虚拟主体;
-用于渲染该全景场景的不同类型的渲染技术;
-渲染该全景场景的不同类型的显示器;
-该全景场景的不同空间部分;以及
-当该全景场景是全景视频的一部分时,该全景视频的不同时间部分,如场景改变之前和之后的部分。
提供不同投影可能涉及提供各自提供不同坐标映射的不同可执行脚本、查找表等。另外地或可替代地,可以提供提供不同坐标映射的可执行脚本、查找表等。投影元数据因此可以提供不同投影,这些投影可以由渲染系统选择,还可以由如可执行脚本本身等另一个实体选择。这允许投影适应于其正被使用的上下文,包括但不限于虚拟主体的类型(例如,球体或立方体形状)、全景场景的空间部分(例如,球面的极点的与赤道的投影不同的投影)或场景本身(例如,场景改变之前/之后的不同投影)。投影元数据因此可以在一系列上下文中使用,而不是仅在一个预定上下文中使用。注意,“不同投影”可以包括可执行脚本在运行时间期间调整第一投影,从而有效地生成第二投影。
在实施例中,该投影元数据可以包括提供该坐标映射的查找表。可能期望以查找表的形式或类似形式直接向渲染系统提供坐标映射,例如,当查找表相对较小时、当带宽约束很少时、当渲染系统无法执行可执行脚本时等。此实施例的优点可以是渲染系统可能不需要能够执行可执行脚本或可能不允许这种执行,这可以提高安全性并降低可利用性。又另一个优点可能在于渲染系统的计算复杂度可以降低,因为在运行时不需要执行复杂计算来获得坐标映射。
在实施例中,该查找表可以提供稀疏坐标映射,在将该至少一个图像投影到该虚拟主体上之前或之时,该稀疏坐标映射将由该渲染系统进行内插。例如,可以为图像坐标系和/或虚拟主体坐标系中的规则或不规则坐标网格提供坐标映射,其中可以通过空间内插为剩余坐标获得坐标映射。例如,可以使用双线性、三线性、双三次或各向异性过滤(或内插),例如如由渲染系统的图形处理单元提供。此实施例的优点可能在于查找表的大小可以减小,从而需要更少的带宽来传输至渲染系统,并且在该渲染系统处需要更少的存储。
本领域技术人员将认识到,可以以任何认为有用的方式组合上文提及的本发明的实施例、实施方式、和/或方面中的两个或更多个。
本领域技术人员能够基于本说明书执行(多个)方法、渲染系统、投影元数据系统、投影元数据和/或计算机程序的修改和变化,这些修改和变化对应于针对所述实体中的另一个描述的修改和变化。作为非限制性示例,渲染系统可以被配置成解析和/或执行,并且投影元数据系统可以被配置成生成所描述的投影元数据中的任何投影元数据。
附图说明
参考下文所描述的实施例,本发明的这些和其他方面是显而易见的并且将被阐明。在附图中,
图1示出了被生成用于包括可执行投影脚本形式的投影元数据的投影增强视频文件,并且该可执行投影脚本被接收器解析并用来投影经解码视频;
图2示出了用于向渲染系统提供投影元数据以使渲染系统能够渲染全景场景的投影元数据系统的实施例;
图3示出了渲染系统的实施例;
图4示出了经由如互联网等网络向渲染系统提供投影元数据的投影元数据系统;
图5示出了与图像数据一起编码在如文件或流等数据容器中或单独提供的投影元数据的示例;
图6示出了使用投影元数据进行渲染的方法;
图7示出了包括非暂态数据的计算机可读介质;
图8示出了示例性数据处理系统。
应该注意的是,在不同的附图中具有相同附图标记的项具有相同的结构特征和相同的功能,或是相同的信号。在已经解释了这种项的功能和/或结构的情况下,不必在详细描述中重复解释。
参考和缩写的列表
以下参考和缩写的列表被提供以便于解释附图,不应被解释为对权利要求的限制。
1视频捕获器
2编码器
3投影脚本生成器
4投影多路复用器
5解复用器
6投影脚本解析器
7解码器
8投影脚本执行器
9渲染器
10显示器
100用于使渲染系统能够渲染全景场景的投影元数据系统
110数据存储装置
120通信接口
130处理器
200用于渲染全景场景的渲染系统
210通信接口
220处理器
300网络
400数据容器
410图像数据
420、422投影元数据
500用于渲染全景场景的方法
510获得图像数据
520获得投影元数据
530使用投影元数据投影图像
540呈现全景场景
600计算机可读介质
610非暂态数据
1000示例性数据处理系统
1002处理器
1004存储器元件
1006系统总线
1008本地存储器
1010大容量存储设备
1012输入设备
1014输出设备
1016网络适配器
1018应用
具体实施方式
在下文中,参考图1描述了用于提供和使用投影元数据的多个具体实施例,而图3至图5涉及投影元数据系统和与投影元数据相关联的渲染系统的更一般的实施例。此后,描述了可以由投影元数据系统提供并由渲染系统使用的各种类型的投影元数据。
术语“虚拟主体”可以指不是被定义为物理实体而是被定义为图形对象的主体。主体可以是盒子、球面、圆柱体等,并且通常可以提供一个或多个图像可以投影到其上并且可以从主体内的或面向主体的视点渲染的表面。图形对象可以以本身已知的任何方式被定义为例如一组坐标、线框模型、多边形网格、体积网格等。注意,虚拟主体和渲染本身在虚拟现实领域是已知的。
投影可以以“元数据”的形式提供,该元数据可以指提供与图像数据相关联或可相关联的投影的数据。
图像数据的实施例可以是视频数据,因为该视频数据表示不同时间实例的图像数据。这样,对“图像数据”的任何参考还可以被理解为对“视频数据”的参考,并且在适当的情况下反之亦然。
术语“提供坐标映射的机器可读数据”可以指当由渲染系统处理时提供坐标映射作为输出的投影元数据。这种处理可以包括解析(例如,当投影元数据是可执行脚本时)或代码执行(例如,当投影元数据是已编译代码时)或数据查找(例如,当投影元数据是查找表时)。前两个示例可以被认为是“程序定义的”投影。提供坐标映射的各种其他形式的机器可读数据也是可以想象的。该术语可以排除仅仅指示坐标映射而没有至少部分地定义该坐标映射的数据。
图1示出了正在生成的所谓“投影增强的视频文件”。此视频文件是“投影增强的”,因为该文件包括投影元数据。在此示例中,投影元数据是可以被渲染系统解析并用来将经解码视频投影到虚拟主体上的可执行脚本。
图1可以参考以下步骤进行解释,这些步骤的编号与图1所示出的功能实体的附图标记相关联。如稍后还将解释的,图1的功能实体可以由不同类型的系统和设备来体现。然而,通常,功能实体1至4可以被认为表示“生成侧”,其中所选功能实体可以由如服务器等系统和设备、如相机等内容生成设备等来体现。同样地,功能实体5至10可以表示“接收侧”,其中所选功能实体可以由如机顶盒、游戏控制台、智能电话、个人计算机、膝上型计算机、平板设备、电视、监测器、投影仪、媒体播放器和记录器等系统和设备等来体现。如果系统至少体现功能实体9,则该系统可以被认为是渲染系统。
图1可以如以下进行解释。
1.全景视频可以由视频捕获器1捕获。
2.经捕获视频数据然后可以由编码器2接收和编码,该编码器可以生成经编码视频数据作为输出。
3.投影脚本可以由投影脚本生成器3生成。例如,投影脚本可以具有JavaScript程序的形式,并为整个全景视频定义投影。
4.投影多路复用器4可以将经编码视频数据和投影脚本封装到投影增强的视频文件中。
投影增强的视频文件可以例如经由网络或其他通信信道提供给包括解复用器5的接收器。
5.解复用器5可以将投影增强的视频文件解复用到投影脚本和经编码视频数据中。
6.投影脚本可以由投影脚本解析器6解析,并提供给投影脚本执行器8以供执行。
7.与步骤5和步骤6并行,可以将经编码视频数据提供给解码器7,该解码器可以解码经编码视频数据以获得经解码视频数据,并将经解码视频数据提供给投影脚本执行器8(在一些实施例中,该投影脚本执行器还可以包括在解码器7中)。
8.投影脚本执行器8可以接收投影脚本和经解码视频数据,并且执行作为输入的投影脚本连同经解码视频数据。投影脚本可以将投影应用于经解码视频数据,这可以导致被投影映射的经解码视频。投影脚本执行器8可以将被投影映射的经解码视频传递至渲染器9。
9.渲染器9可以渲染被投影映射的经解码视频。可以将所得到的经渲染图像发送至显示器10。
10.经渲染图像可以在显示器10上示出。
继续参考图1,在甚至更具体的实施例中,以上步骤可以如下进行。在此,功能实体1至4由内容生成设备体现,在此示例中,该内容生成设备是三星Gear360相机,而功能实体5至9由渲染系统体现,该渲染系统被配置成解析和执行JavaScript程序。功能实体10可以是连接至渲染系统的显示器,如头戴式显示器。
1.使用三星Gear 360相机可以捕获360°视频。由于其镜头的配置,得到的图像相对于图像的画布可能具有等距柱状投影。
2.来自传感器的图像(例如,经捕获视频数据)可以由相机根据HEVC/H.265标准编码。
3.三星Gear 360可以生成投影脚本。该脚本可以具有JavaScript程序的形式,并且可以为整个视频定义(逆)等距柱状投影,如下所示:
投影脚本的第一行定义了脚本期望来自原始视频的坐标对(x,y),以及提供视频的元数据的视频对象。在脚本的第2行和第3行中,x和y坐标对在[-0.5,0.5]的范围内缩放,并且y坐标被镜像,以确保来自图像顶部的图像数据被投影到球面顶部,并且对于图像数据的底部也是如此。脚本的第4行和第5行计算水平(lambda)和竖直(phi)角度,这些角度定义了球面上(x,y)坐标应该映射到的点。因为这是等距柱状投影,所以这相当于将预缩放的x坐标缩放到范围[-π,+π],并将预缩放的y坐标缩放到范围[-0.5π,+0.5π],从而确保球面的所有竖直部分都被覆盖。第7行指定经计算的球面角度(例如,lambda和phi)应该返回到投影脚本执行器。
4.投影多路复用器可以将HEVC/H.265编码的视频数据和投影脚本封装到MP4文件中。
可以将MP4文件发送至包括解复用器的接收器。
5.解复用器可以将MP4文件分割成投影脚本和HEVC/H.265编码的视频数据。
6.JavaScript程序可以由如Spidermonkey JavaScript引擎等解析器解析,并准备以供执行。当此步骤完成时,可以将经解析投影脚本发送至投影脚本执行器。
7.与步骤5和步骤6并行,可以将HEVC/H.265编码的视频数据发送至解码器,该解码器可以解码经编码视频数据以获得经解码视频数据。然后可以将经解码视频数据发送至投影脚本执行器。
8.投影脚本执行器可以接收经解析投影脚本和经解码视频数据,并使用Spidermonkey JavaScript引擎以执行作为其输入的投影脚本连同经解码视频数据。
投影脚本可以在经解码视频数据的宽度和高度的基础上计算用于经解码视频数据的投影,从而产生从(x,y)坐标对到(lambda,phi)球面角度的映射列表。视频图像可以与映射一起发送至渲染器。
9.渲染器可以渲染被投影映射的经解码视频,从而将图像数据投影到虚拟球面上。由于用户可以仅查看球面的一部分,因此渲染器可以仅渲染所述球面的此部分。
10.经渲染图像可以在显示器上示出。
图2示出了投影元数据系统100的实施例,该投影元数据系统用于向渲染系统提供投影元数据,以使渲染系统能够渲染由图像数据表示的全景场景。投影元数据系统被示出为包括用于存储至少一个图像的图像数据的数据存储装置110以及用于向渲染系统提供图像数据和投影元数据的通信接口120。
投影元数据系统100的数据存储装置110可以采取各种形式,包括但不限于易失性存储器和非易失性存储器、硬盘驱动器或硬盘驱动器阵列、固态驱动器或固态驱动器阵列等。同样地,通信接口120可以采取各种形式,如到局域网或广域网(例如,互联网)的网络接口、到移动网络(例如,4G或5G网络)的移动通信接口、到内部数据存储装置或外部数据存储装置的存储装置接口等。术语“向渲染系统提供(…)”因此可以包括投影元数据系统100经由如互联网等网络,但是还经由如蓝光或USB驱动器等物理存储介质向渲染系统提供投影元数据。
投影元数据可以以提供坐标映射的机器可读数据的形式生成,该坐标映射将由渲染系统用来将该至少一个图像投影到虚拟主体上。在一些实施例中,投影元数据系统100可以生成投影元数据本身。示例实施例可以包括创作工作站、服务器、如相机等内容创建设备等。在一些实施例中,投影元数据系统100可以是被配置成执行执行所描述功能的软件的处理器系统。例如,作为软件,可以提供视频编码程序,该视频编码程序生成经编码视频和投影脚本。另一个示例是拼接程序,该拼接程序基于多个输入图像创建全向图像,并且其中此图像的创建由生成适当投影脚本的拼接程序隐式地执行。又另一个示例可以是虚拟相机类型的3D计算机应用,该3D计算机应用基于某些虚拟相机属性生成和记录图像数据。虚拟相机类型的3D计算机应用可以生成投影脚本来匹配这些属性。
在这种实施例中,投影元数据系统100可以包括被配置成生成投影元数据的处理器130。处理器130可以与数据存储装置110和通信接口120内部地通信。例如,处理器130可以被配置成执行参考图1所描述的投影脚本生成器的功能。投影元数据可以由处理器130自动地生成。例如,在相机中,投影元数据可以基于内部陀螺仪读数自动地生成。另一个示例是可以在视频中检测到(移动的)兴趣点。然后,可以使用投影对视频进行重新编码,该投影将更多的数据专用于(移动的)兴趣点,而将更少的数据专用于原始视频的其他区域。在重新编码期间,投影可以通过生成相应的投影脚本来指定。又另一个示例是,如果(虚拟或真实)相机动态地改变其镜头参数,例如,通过对其镜头进行交换或变形,则已记录图像可能会受到影响。这些动态参数可以用于为每个图像生成匹配投影脚本。投影元数据还可以基于用户输入半自动地或手动地生成。例如,如果投影元数据系统是创作工作站,则投影元数据可以基于来自用户的用户输入,例如,基于用户在图形用户接口中使用的投影类型的手动选择来生成。
在一些实施例中,投影元数据系统100可以不生成投影元数据本身,而是从另一个实体(例如,上述投影脚本生成器)获得投影元数据,但是以具体方式向渲染系统提供投影元数据。例如,投影元数据系统100可以将投影元数据与图像数据多路复用。为此和类似目的,投影元数据系统100可以包括处理器130,该处理器可以与数据存储装置110和通信接口120通信。在具体示例中,处理器130可以被配置成执行如参考图1所描述的投影多路复用器的功能。投影元数据系统100还可以以各种其他方式(例如,经由单独的信号传输)向渲染系统提供投影元数据,如提供包含投影元数据的单独的ISO BMFF(基础媒体文件格式)文件。另一个示例是使用外部编排服务器(external orchestration server),该外部编排服务器为给定的图像或视频提供要使用的投影脚本。又另一个示例是投影脚本生成器服务器/服务,渲染系统可以查询该投影脚本生成器服务器/服务以为给定图像或视频计算/生成合适的投影脚本。通常,投影元数据系统100可以体现为任何合适的实体(如设备或装置)或这些实体的集中式或分布式系统。在具体示例中,投影元数据系统100可以是如网络高速缓存、网络代理等网络元件。
图3示出了渲染系统200的实施例。渲染系统200被示出为包括通信接口210和处理器220,该通信接口被配置成获得图像数据和与该图像数据相关联的投影元数据,并且该处理器被配置成使用由投影元数据提供的坐标映射将至少一个图像投影到虚拟主体上,并且从虚拟主体内的或面向虚拟主体的视点渲染由该至少一个图像表示的全景场景。通信接口210可以采取各种形式,如到局域网或广域网(例如,互联网)的网络接口、到移动网络(例如,4G或5G网络)的移动通信接口、到内部数据存储装置或外部数据存储装置的存储装置接口等。处理器220可以由软件配置以执行所描述的功能。例如,软件可以存储在渲染系统200的存储器中(图3中未示出)。尽管未在图3中明确示出,但是渲染系统可以包括用于将经渲染图像输出至显示器的显示输出。渲染系统的示例包括如机顶盒、游戏控制台、智能电话、个人计算机、膝上型计算机、平板设备、电视、监测器、投影仪、媒体播放器和记录器等设备。渲染系统还可以由两个或更多个这种设备组成,这些设备经由如HDMI、USB等通信接口连接。在这种情况下,坐标映射可以由一个设备计算,而渲染可以由另一个设备执行。显示器可以是外部显示器或内部显示器(例如,分别是渲染系统的外部或一部分),并且通常可以是头戴式或非头戴式的。前者的示例包括GearVR、HTC Vive、Oculus Rift和PlaystationVR虚拟现实耳机和增强现实耳机,如谷歌眼镜(Google Glass)和微软全息透镜(MicrosoftHoloLens)。后者的示例包括全景显示器和曲面显示器。通常,显示器可以是单视场的、立体的或全息的或其他类型的。
图4示出了经由网络(在此示例中是互联网300)向渲染系统200提供投影元数据422的投影元数据系统100。然而,如先前所描述的,这不是限制,因为投影元数据还可以以各种其他方式(例如,经由不同类型的网络、经由物理存储介质等)提供给渲染系统200。
图5示出了被提供作为数据容器400(如文件或流)中的投影元数据420连同图像数据410的投影数据(在此示例中为先前参考图1描述的JavaScript程序)。例如,如果图像数据410和投影元数据420包含在同一ISO BMFF文件中,则ISO BMFF内的标识符机制可以将投影元数据420与图像数据410相关联。投影元数据还可以经由单独的路线提供给例如单独的数据容器400中的渲染系统。在这种情况下,投影元数据422可以例如在应用级通过标识符与特定图像数据相关联或可相关联。例如,HbbTV(混合广播宽带TV)具有用于分发app以及用于经由互联网将例如来自广播的视频与音频相结合的机制。这种和类似的机制是技术人员已知的,并且是技术人员能够达到的。
在一些实施例中,投影元数据可以包括可执行脚本(例如,“投影脚本”)或由其构成,该可执行脚本可以使用不同的机制和语言来定义。这种投影脚本可以定义当前不受如MPEG-OMAF等标准支持并且可以提供动态功能(包括但不限于从网站检索配置参数)的投影。以下提供了脚本语言、投影类型和动态功能的具体组合的若干示例,但是这些示例不应被理解为限制所要求保护的本发明。
Java
在此示例中,假设用于投影脚本的有状态执行环境,因为在投影脚本的早期调用期间设置的值会在后续调用中执行,并且投影脚本保持跟踪定时。以下脚本使用这些功能来实施旋转动画。
第1行定义了实施投影接口的Java类。这意味着此类可以展示所述接口中定义的所有行为和属性。在此示例中,这是project(x,y,c)函数。
第2至3行定义了指示帧速率和每帧旋转数(每秒1次旋转)的常数。第4行定义了投影脚本的瞬时状态,该瞬时状态用于跟踪调用之间的持续时间。
第6至19行包括投影函数。该投影函数将两个图像坐标作为输入并且采用上下文对象,我们假设该投影函数包含该上下文对象的视频的更多状态变量(特别是先前的旋转状态)和元数据。
第8至14行负责记录帧之间的时间,并基于已定义的常数计算所需的旋转。
第15至18行构造包含旋转角度的对象(Java不支持返回多个参数),并基于第8至14行中计算的值计算新的横向旋转。
Python
第1至2行从Python环境加载库。第3行加载了虚构的“投影”库,该库可以用于稍后登记投影。
投影在第5至13行中定义。从第6至9行开始,脚本从网站下载配置参数。这些参数应用于第10行。第11至13行执行与先前的JavaScript示例相同的功能,因为这些行根据逆等距柱状投影计算投影角度。
第13行返回计算结果。
第15行使用“投影”库登记投影。
GLSL
在较低的抽象层次上,投影脚本还可以实施为图形着色器,该图形着色器允许直接对图形卡的图形处理进行编程,从而允许整合到现有视频解码器中。
以下是GLSL中投影脚本的示例,该GLSL是针对OpenGL开发的,并且有点类似于C。此特定脚本是顶点着色器,这意味着该脚本能够仅访问和操作顶点数据。
第1行定义OpenGL的最低要求版本是3.3
第3至4行指定对着色器的输入和输出。脚本接收顶点作为输入,并输出UV坐标,这些坐标用于定位图像内3D模型每个顶点的颜色位置。此程序旨在覆写现有着色器程序,因此,第5至8行定义了多个默认的3D渲染步骤。
最后,第9行执行实际投影,将来自输入球面的3D坐标投射到2D图像上。
十二面体投影脚本
此投影脚本是用Python编写的,假设:
·矩形上12个五边形的预定义可缩放布局
·来自矩形视频的图像数据被投影到十二面体上(在此示例中,包围球面的半径为√3)。
作为提醒,边长√5-1的3D十二面体的角坐标如下定义(第24行使用此列表中的5个坐标):
坐标=[(-1,-1,-1),(-1,-1,1),(-1,1,-1),(-1,1,1),
(1,-1,-1),(1,-1,1),(1,1,-1),(1,1,1),
(0,1/PHI,PHI),(0,1/PHI,-PHI),(0,-1/PHI,PHI),(0,-1/PHI,-PHI),
(1/PHI,PHI,0),(1/PHI,-PHI,0),(-1/PHI,PHI,0),(-1/PHI,-PHI,0),
(PHI,0,1/PHI),(PHI,0,-1/PHI),(-PHI,0,1/PHI),(-PHI,0,-1/PHI)]
第1至3行请求多个用于执行计算的库。
第5行计算黄金比例。
第7至11行定义了辅助函数,该辅助函数用于针对球面(具有根据向量(x,y,z)的长度的半径)上的给定3D坐标(x,y,z)计算所述球面上的phi和theta角。
第13至21行定义了用于生成五边形的坐标的辅助函数,该坐标可以被平移。
第23至25行定义了3D十二面体的12个面(为简洁起见,只指定了一个面)。
第26至28行定义了对应于12个十二面体面的12个2D五边形(为简洁起见,只指定了一个五边形)。
第30行计算十二面体每个面的每个顶点的球面角度;sphereAngles辅助函数用于此目的。
第33至35行提供五边形到十二面体的映射(通过索引,还可以使用其他映射机制)。
第36至55行定义了实际投影函数。
第37至40行判定所提供的x-y坐标是否位于12个五边形之一内。如果情况并非如此,则返回空结果(第55行)。如果找到此类五边形,则脚本在第41行继续。
第41至43行计算从所提供的x-y坐标到五边形的每个顶点的距离。距离被归一化,使得这些距离加起来为1,这对于稍后的线性缩放是有利的。
第44至48行将五边形的顶点映射到十二面体的相关角度。然后根据第39至40行中计算的归一化距离缩放角度。
第50至52行对经缩放角度求和,导致原始角度被内插。
最后,在第53行中,返回已计算角度。
所有这些坐标都位于球面上(虽然不是单位球面,但目前不需要调整这些坐标,尽管缩放这些坐标很简单,因为这些坐标共享同一个原点),这意味着可以计算每个顶点的球面角度。视频中落入12个五边形之一中的任何x-y坐标都可以映射到十二面体的12个面之一。此脚本使用线性内插来计算对应于每个经请求坐标(x-y)的球面角度(phi,theta)。也可以使用其他类型的内插。
球面到平面投影脚本
替代或除平面到球面投影之外,投影脚本也可以用于描述从球面到平面的投影。如果投影环境需要确定对应于观察球面上的点的像素,则这可能是有利的。以下投影脚本实施了布劳恩(Braun)立体投影,该投影是来自圆柱投影族的投影。此投影是通过围绕投影球面缠绕圆柱体并且对于球面上的每个点确定球面上与此点相对的点来实现的。投影后,圆柱体被切割和展开,形成平面。
第1行指定使用数学库。
第3行定义了投影脚本函数,该投影脚本函数需要一对球面角度以及包含关于源视频的信息的视频对象。
第4行计算视频的对应于所提供角度的x坐标。当使用圆柱投影时,这相当于theta角(在[0,2π]范围)到[0,w]范围的线性缩放,其中w是源视频的宽度。
第5行计算视频的对应于所提供角度的y坐标。使用tan函数,该函数返回[-1,1]范围内的值,然后将该范围缩放到[0,h]范围,其中h为视频的高度。该值还被反转以与视频的坐标系(这些视频具有反转的y轴)相匹配。
最后,第6行返回对应于视频平面上的点的已计算坐标对。注意,这些值不一定是整数,可能需要内插以从源图像中获得真实样本。由于这可能超出了投影的范围,因此投影脚本不执行此步骤。
查找表投影
用Python编写的此投影脚本假设用于预定义输入分辨率静态大小的查找表。此假设是为了简化脚本,但根据实施方式的风格可能不是必需的。例如,只要输入分辨率已知,就可以开始填充查找表。
第1至7行提供了定义坐标映射的投影函数。注意,此处也可以使用任何其他类型的投影函数。
第9、10行定义了静态查找表(网格)大小。
第13至18行通过对网格中的每个坐标执行预定义的投影函数来填充查找表。
第20至21行定义了基于查找表的投影函数,该投影函数在查找表被填充之后(例如,在运行时间期间)通过在查找表中查找来提供坐标映射。注意,如果输入视频提供有与查找表不同的大小,则可以在查找之前缩放坐标。
在替代性实施例中,查找表本身可以作为投影元数据提供给渲染系统。例如,可以在内容生成侧执行以上脚本或类似功能,然后将所得查找表编码为投影元数据并提供给渲染系统。
投影切换用例
通常,不同投影可以用于不同用例,例如,不同类型的虚拟主体、用于渲染全景场景的不同类型的渲染技术、渲染全景场景的不同类型的显示器、全景场景的不同空间部分,以及当全景场景是全景视频的一部分时,全景视频的不同时间部分,如场景改变之前和之后的部分。这种不同投影可以例如由投影元数据单独定义、由投影元数据动态生成、作为单独的投影元数据提供等。因此,投影可以例如根据用例以自适应方式“切换”。
以下提供了这种不同用例的示例,以及在对应用例中如何使用不同投影。
现场直播,相机切换:在音乐活动的现场直播期间,导演可能会决定从舞台上的360°相机切换到鼓手后面的360°相机。此相机可能是不同品牌的,并且可能使用不同格式对其视频进行编码,而该格式恰好使用不同投影。因此,当相机从舞台上切换到鼓手后面时,可以将不同投影脚本连同视频流提供给渲染系统。
感兴趣区域跟踪:在此示例中,假设如Nokia Ozo等多相机设置,该多相机设置的图像被拼接,并且因此在录制过程中被投影。导演可以指示拼接软件来优化当前投影,以确保当前感兴趣区域由于投影而失真/变形最小。例如,在场景开始时,可以使用等距柱状投影来允许用户自由地环顾四周,并且在所有向前的方向上具有平均图像质量。只要感兴趣的人进入场景,投影可以改变为聚焦在感兴趣的人处的棱锥体投影。这可以确保感兴趣的人和周围区域清晰可见。
减少面板变形:如广告牌、文件、文本等矩形对象当投影到球面上时,可能总是变形。为了减少编码期间的变形,这种对象可以例如使用非球面正交投影被编码为图像的非投影部分。这可能发生的一种情况是,当向视频添加经渲染覆盖物时。也可以包括在视频中的投影脚本可以被指定为利用此编码,并且从而减少矩形对象的视觉失真。
时间参数化投影脚本
作为投影脚本的动态或自适应行为的示例,投影脚本可以考虑当前回放时间。以下示例在视频的前四秒期间使用时间来使用等距柱状投影,并且在那之后切换到圆柱形立体投影。此外,圆柱投影沿着投影球面的极旋转其切割点。
在此示例中,时间参数化是通过假设向脚本提供对应于自视频开始以来经过的毫秒量的时间戳值来实施的。
第1行指定使用数学库
第3行通过以秒为单位表示期望的时间来定义圆柱投影的旋转速度。
第4行定义了投影应该被切换的时间,该时间在此假设为毫秒,但通常可以是任何类型的时间单位。
第6至10行测试切换时间是否已经发生,并因此选择正确的投影。除时间参数外,还将输入参数传递给未经修改的其他投影。对于此参数,减去切换时间,以便将圆柱形时间线移位等待时间。
第12至16行实施了被称为布劳恩投影的圆柱投影(参见“球面到平面投影脚本”以获得更深入的解释)。
第18至23行定义了球面到平面的等距柱状正交投影。假设源视频包含两个并排的半球面。因此,在第19行中,x坐标被缩放到视频宽度的一半。第21至22行基于输入纵向角度选择正确的半球面。图像的左侧包含用于上半球面的图像数据,而右侧用于下半球面。
投影脚本接口
为了确保不同软件实体之间的正确通信,接口的概念可以用来定义消息交换的通用格式。在许多知名度高的面向对象的语言(例如,Java、PHP、Python和C#)中都可以明确地找到接口。
作为非限制性示例,以下接口可以用于投影脚本,在此示例中以Java风格指定:
第1行说明此文件描述了名为“Projection”的接口。
第2行说明实施(例如,支持)此接口的任何对象都应该提供名为“project”的公共可访问函数。此函数应该接收两个浮点(x和y)和继承上下文类型的对象(假设此类型定义了具有用于查询源视频的状态和属性的方法的类)。最后,函数应该返回SphereAngles对象作为结果,或空结果(称为“空值(null)”)。
SphereAngles对象定义了用于存储输出角度的不可变的对象。此类可以如下定义:
第2行和第3行定义了两个名为“phi”和“theta”的内部不可变(即初始化后)数据字段,这些数据字段被定义为浮点数。这些数据字段可以用于存储用于定义球面上的点的角度。
第5至8行包括SphereAngles类的构造函数,该构造函数用所提供的角度初始化此类的实例。
第10至12行和第14至16行定义了两种公共可访问方法,可以调用这两种方法来获得角度值。
作为另一个非限制性示例,在球面到平面投影的情况下,可以使用以下接口,同样以Java的风格指定:
以上接口说明实施此接口的任何类都应该定义名为“project”的函数,该函数接收一个SphereAngles实例和一个Context实例,并返回点类的实例。
点类定义了用于存储输出数据(坐标)的不可变对象。此类可以如下定义:
除了命名差异之外,此类与SphereAngles类具有相同或相似的功能。
MPEG-4标准化
发明人已经设想了将如本说明书中描述的投影元数据的概念嵌入MPEG-4标准中的各种方式。
例如,本发明可以通过引入另外的投影类型嵌入MPEG-OMAF中,该投影类型可以根据所提供的投影元数据来定义。另外,可以定义元数据如何用于执行实际投影的方法。例如,可以定义API——或者如果元数据以脚本语言编写,则定义语言特征——或者如果元数据被体现为查找表,则定义对查找表的输入和输出的定义等。
具体的示例是可以将投影元数据封装到来自ISO BMFF(ISO/IEC 14496-12-MPEG-4部分12)族的现有标准中。
经编码投影元数据可以作为(多个)样本携带在MPEG-4ISOBMFF的“mdat”盒中。MPEG-4部分17可以用于包括使用由此标准化文档定义的字幕流以原始形式(例如,UTF-8、UTF-16、ASCII)进行编码的投影元数据。代替使用原始编码,还可以使用表示投影元数据的结构化编码(例如,XML/JSON、二进制序列化)。
MPEG-4部分11为3D场景的动态描述定义了BIFS(用于场景的二进制格式)、XMT(可扩展MPEG-4文本格式)和MPEG-J。用于此目的的其他标准为3DML(W)、3DXML和X3D。对于这些标准中的所有标准,可以进行添加,通过该添加,将投影脚本或通常如本说明书中描述的投影元数据添加到场景描述中。
针对谷歌的MP4(ISOBMFF)和WebM(Matroska)的Spherical Video V2RFC是用于投影的规范。RFC提供了将新的投影包括到标准中(尽管非动态地)所必需的结构。目前,已定义的投影方法为:使用标准化渲染技术(UV映射)、等距柱状和立方体映射的多个网格(3D模型)。对WebM标准的扩展可以涉及引入新的投影盒,包括投影脚本或通常如本说明书中描述的投影元数据,以及用于使用此投影元数据来执行其定义的投影的方法。
MPEG-4具体示例
MPEG标准化的具体但非限制性的示例可以是以下,以下示例针对ISOBMFF标准ISO/IEC 23001-10。
然而,对于MPEG-2传输流标准ISO/IEC 13818-1也可以作出类似的贡献。注意,后一标准使用“访问单元”代替“样本”,使用“描述符”代替“样本条目”。
另一个示例涉及OMAF标准ISO/IEC 23000-20。在此,示出了对ISO/IEC 23000-20条款7.2.3的提议修改,下划线指示对该条款的补充。
其他一般方面
投影元数据可以以几何图元的形式定义虚拟主体上的投影。然而,还可以投影到网格上。
投影可以应用于多于一个图像或多于一个视频。例如,投影可以为多个输入源提供坐标映射,或投影可以在多个输入源之间进行选择。
作为由投影脚本实现的动态行为的进一步示例,投影脚本可以考虑观看环境的参数,例如,显示器宽度/高度、观看者年龄、背景亮度、天气、当日时间等。
投影脚本可以例如由相机在内容源处生成,但是还可以例如由创作工作站单独生成。
可以生成投影脚本来匹配源相机在已记录视频中任何点处的投影。
投影脚本可以用编程语言定义,该编程语言被限制为针对图灵机(TuringMachine)定义的程序的子集,以便降低复杂性(例如,仅支持可判定的程序)并提高性能。
对于没有“副作用”的投影脚本,例如,纯/原子脚本,坐标映射可以通过预先评估这些脚本来预先计算。
使用投影元数据并且特别是投影脚本来定义投影的技术还可以应用于编码阶段,例如,当已记录360°图像通过投影投影到矩形上时。
投影元数据可以逐渐调整投影,例如,将投影聚焦在场景中感兴趣的移动点上,和/或例如,在空间上或时间上建立投影之间的逐渐过渡。这可能涉及在有状态执行环境内执行一个或多个投影脚本。
可以使用多个投影脚本,例如,使得脚本可以相互调用和/或相互影响、使得多路复用器决定何时运行每个脚本、使得解复用器决定何时运行每个脚本和/或使得观看环境的能力被考虑在内。
多个投影脚本可以连接在一起,例如,以通过将每个单独的脚本集中在单个项目上来简化这些脚本的实施方式。当使用多个投影脚本时,通过减少冗余操作,例如,通过仅执行一次具有相同效果的成对操作,进一步优化是可能的。
在编码投影脚本(例如,用于包含在视频流中)之前,可以对该投影脚本进行优化以提高执行效率。
投影元数据可以定义球面到平面的投影,而不是在各种示例中描述的平面到球面的投影。
投影元数据可以通过使用媒体容器的时间戳特征来计时。这可以允许与包含在这种容器中的其他媒体流(例如,视频/音频流)同步。例如,PTS时间戳可以用于MPEG-2容器,并且CTS时间戳可用于MPEG-4容器。
图6示出了使用投影元数据渲染全景场景的方法500。方法500可以对应于参考图3所描述的渲染系统的操作。然而,这不是限制,因为方法500还可以由另一个实体或实体的分布式系统来执行。
方法500可以包括在题为“OBTAINING IMAGE DATA(获得图像数据)”的操作510中获得该至少一个图像的图像数据。方法500可以进一步包括在题为“OBTAINING PROJECTIONMETADATA(获得投影元数据)”的操作520中,经由通信接口获得与图像数据相关联的投影元数据。投影元数据可以是如本说明书中描述的类型。方法500可以进一步包括在题为“PROJECTING IMAGE USING PROJECTION METADATA(使用投影元数据投影图像)”的操作530中使用坐标映射将该至少一个图像投影到虚拟主体上。方法500可以进一步包括在题为“RENDERINGPANORAMIC SCENE(渲染全景场景)”的操作540中从虚拟主体内的或面向虚拟主体的视点渲染全景场景。
应当理解,上述操作可以以任何合适的顺序来执行,例如,连续地、同时地或其组合,在适用的情况下取决于例如输入/输出关系需要的特定顺序。例如,操作510和520可以并行或顺序地执行。
尽管在附图中没有明确示出,但是可以提供一种用于使得渲染系统能够渲染由至少一个图像表示的全景场景的方法。该方法可以包括在题为“PROVIDING IMAGE DATA(提供图像数据)”的操作中向渲染系统提供该至少一个图像的图像数据。该方法可以进一步包括在题为“PROVIDING PROJECTION METADATA(提供投影元数据)”的操作中向渲染系统提供投影元数据。投影元数据可以是如本说明书中描述的类型。
每个方法可以在处理器系统上实施,例如,作为计算机实施的方法、作为专用硬件或作为两者的组合在计算机上实施。
图7示出了计算机可读介质600。例如,用于处理器系统的指令(例如,可执行代码)可以例如以一系列机器可读物理标记610的形式和/或作为一系列具有不同电(例如,磁或光)属性或值的元件存储在计算机可读介质600上。可执行代码可以以暂态或非暂态的方式存储。计算机可读介质的示例包括存储器设备、光学存储设备、集成电路、服务器、在线软件等。
可替代地,计算机可读介质600可以包括如本说明书中描述的投影元数据。
图8是框图,展示了可以在本披露的实施例中使用的示例性数据处理系统。这种数据处理系统包括本披露中描述的数据处理实体,这些数据处理实体包括但不限于投影元数据系统和渲染系统。数据处理系统1000可以包括通过系统总线1006耦合至存储器元件1004的至少一个处理器1002。这样,数据处理系统可以在存储器元件1004内存储程序代码。进一步地,处理器1002可以执行经由系统总线1006从存储器元件1004访问的程序代码。在一方面,数据处理系统可以被实施为适合于存储和/或执行程序代码的计算机。然而,应当理解,数据处理系统1000可以以包括能够执行本说明书中描述的功能的处理器和存储器的任何系统的形式实施。
存储器元件1004可以包括一个或多个物理存储器设备,如例如,本地存储器1008和一个或多个大容量存储设备1010。本地存储器可以指在程序代码的实际执行期间通常使用的随机存取存储器或其他(多个)非持久性存储设备。大容量存储设备可以被实施为硬盘驱动器、固态硬盘或其他持久性数据存储设备。处理系统1000还可以包括一个或多个高速缓冲存储器(未示出),这些高速缓存存储器提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储设备1010检索程序代码的次数。
被描绘为输入设备1012和输出设备1014的输入/输出(I/O)设备可以任选地耦合至数据处理系统。输入设备的示例可以包括但不限于,例如,麦克风、键盘、如鼠标等定点设备等。输出设备的示例可以包括但不限于,例如,监测器或显示器、扬声器等。输入设备和/或输出设备可以直接或通过中间I/O控制器耦合至数据处理系统。网络适配器1016还可以耦合至数据处理系统,以使其能够通过中间私有或公共网络耦合至其他系统、计算机系统、远程网络设备和/或远程存储设备。网络适配器可以包括用于接收由所述系统、设备和/或网络向所述数据传输的数据的数据接收器和用于向所述系统、设备和/或网络传输数据的数据发射器。调制解调器、电缆调制解调器和以太网卡是可以与数据处理系统1000一起使用的不同类型的网络适配器的示例。
如图8所示,存储器元件1004可以存储应用1018。应当理解,数据处理系统1000可以进一步执行能够促进应用执行的操作系统(未示出)。以可执行程序代码的形式实施的应用可以由数据处理系统1000(例如,由处理器1002)执行。响应于执行应用,数据处理系统可以被配置成执行将在本文进一步详细描述的一个或多个操作。
一方面,例如,数据处理系统1000可以表示用于使渲染系统能够渲染全景场景的投影元数据系统。在这种情况下,应用1018可以表示当被执行时配置数据处理系统1000来执行本文参考此系统所描述的各种功能的应用。另一方面,数据处理系统1000可以表示渲染系统。在这种情况下,应用1018可以表示当被执行时配置数据处理系统1000来执行本文参考渲染系统所描述的各种功能的应用。
在权利要求中,置于括号间的任何附图标记不应被解释为限制权利要求。动词“包括(comprise)”及其词形变化的使用不排除权利要求中所述的元件或步骤之外的元件或步骤的存在。元件前面的冠词“一个(a)”或“一种(an)”不排除存在多个这种元件。本发明可以通过包括若干不同元件的硬件以及通过适当编程的计算机来实施。在列举了若干装置的设备权利要求中,这些装置中的若干装置可以由同一个硬件项体现。在相互不同的从属权利要求中陈述某些措施这一事实,并不表示不能有利地使用这些措施的组合。

Claims (15)

1.一种用于使渲染系统能够渲染全景场景的方法,其中,该全景场景是全景视频的一部分并且由至少一个图像表示,其中,该渲染系统被配置成将该至少一个图像投影到虚拟主体上,并且被配置成从该虚拟主体内的或面向该虚拟主体的视点渲染该全景场景,该方法包括:
-向该渲染系统提供该至少一个图像的图像数据;
-向该渲染系统提供投影元数据,该投影元数据包括提供坐标映射的机器可读数据,该坐标映射将被该渲染系统用来将该至少一个图像投影到该虚拟主体上,该坐标映射介于与该至少一个图像相关联的第一坐标系和与该虚拟主体相关联的第二坐标系之间;
其中该投影元数据提供多个不同投影,以供以下至少一种情况使用:
不同类型的虚拟主体;
用于渲染该全景场景的不同类型的渲染技术;
渲染该全景场景的不同类型的显示器;以及
该全景视频的不同时间部分。
2.根据权利要求1所述的方法,其中,该图像数据是该全景视频的视频数据的一部分,并且其中,该方法包括:
-编码该视频数据以获得经编码视频数据;
-格式化该经编码视频数据以获得流;
-将该投影元数据包括在该流中;以及
-向该渲染系统提供该流。
3.根据权利要求2所述的方法,其中,所述将该投影元数据包括在该流中的步骤包括多路复用该投影元数据与该流中的该经编码视频数据。
4.一种用于渲染全景场景的方法,其中,该全景场景是全景视频的一部分并由至少一个图像表示,该方法包括:
-获得该至少一个图像的图像数据;
-经由通信接口获得与该图像数据相关联的投影元数据,该投影元数据包括提供坐标映射的机器可读数据,该坐标映射将用于将该至少一个图像投影到虚拟主体上,该坐标映射介于与该至少一个图像相关联的第一坐标系和与该虚拟主体相关联的第二坐标系之间;
-使用该坐标映射将该至少一个图像投影到该虚拟主体上;以及
-从该虚拟主体内的视点或面向该虚拟主体的视点渲染该全景场景;
其中,该投影元数据提供多个不同投影,以供以下至少一种情况使用:
不同类型的虚拟主体;
用于渲染该全景场景的不同类型的渲染技术;
渲染该全景场景的不同类型的显示器;以及
该全景视频的不同时间部分。
5.根据权利要求4所述的方法,其中,该投影元数据包括可执行脚本,并且其中,该方法包括执行该可执行脚本以获得该坐标映射。
6.一种包括计算机程序的暂态或非暂态计算机可读介质,该计算机程序包括用于使处理器系统执行根据权利要求1至5中任一项所述的方法的指令。
7.一种暂态或非暂态计算机可读介质,该暂态或非暂态计算机可读介质包括供渲染系统用来渲染全景场景的投影元数据,其中,该全景场景是全景视频的一部分并且由至少一个图像表示,其中,该渲染系统被配置成将该至少一个图像投影到虚拟主体上,并且被配置成从该虚拟主体内的视点或面向该虚拟主体的视点渲染该全景场景,
其中,该投影元数据包括提供坐标映射的机器可读数据,该坐标映射将被该渲染系统用来将该至少一个图像投影到该虚拟主体上,该坐标映射介于与该至少一个图像相关联的第一坐标系和与该虚拟主体相关联的第二坐标系之间;
其中,该投影元数据提供多个不同投影,以供以下至少一种情况使用:
不同类型的虚拟主体;
用于渲染该全景场景的不同类型的渲染技术;
渲染该全景场景的不同类型的显示器;以及
该全景视频的不同时间部分。
8.根据权利要求7所述的计算机可读介质,其中,该投影元数据包括可执行脚本,该可执行脚本当由该渲染系统执行时提供该坐标映射。
9.根据权利要求8所述的计算机可读介质,其中,该可执行脚本被配置成在执行期间实时计算给定坐标的坐标映射,或在第一次执行时预先计算所有坐标的坐标映射。
10.根据权利要求7所述的计算机可读介质,其中该全景视频的不同时间部分是场景改变之前和之后的部分。
11.根据权利要求7所述的计算机可读介质,其中,该投影元数据包括提供该坐标映射的查找表。
12.根据权利要求11所述的计算机可读介质,其中,该查找表提供了稀疏坐标映射,在将该至少一个图像投影到该虚拟主体上之前或之时,该稀疏坐标映射将由该渲染系统进行内插。
13.一种用于使渲染系统能够渲染全景场景的投影元数据系统,其中,该全景场景是全景视频的一部分并且由至少一个图像表示,其中,该渲染系统被配置成将该至少一个图像投影到虚拟主体上,并且从该虚拟主体内的或面向该虚拟主体的视点渲染该全景场景,该投影元数据系统包括:
-数据存储装置,该数据存储装置存储该至少一个图像的图像数据;
-通信接口,该通信接口用于向该渲染系统提供该图像数据和投影元数据,该投影元数据包括提供坐标映射的机器可读数据,该坐标映射将被该渲染系统用来将该至少一个图像投影到该虚拟主体上,该坐标映射介于与该至少一个图像相关联的第一坐标系和与该虚拟主体相关联的第二坐标系之间,
其中,该投影元数据提供多个不同投影,以供以下至少一种情况使用:
不同类型的虚拟主体;
用于渲染该全景场景的不同类型的渲染技术;
渲染该全景场景的不同类型的显示器;以及
该全景视频的不同时间部分。
14.一种用于渲染全景场景的渲染系统,其中,该全景场景是全景视频的一部分并且由至少一个图像表示,该渲染系统包括:
-通信接口,该通信接口被配置成:
-获得该至少一个图像的图像数据;
-获得与该图像数据相关联的投影元数据,该投影元数据包括提供坐标映射的机器可读数据,该坐标映射将用于将该至少一个图像投影到虚拟主体上,该坐标映射介于与该至少一个图像相关联的第一坐标系和与该虚拟主体相关联的第二坐标系之间;
其中,该投影元数据提供多个不同投影,以供以下至少一种情况使用:
不同类型的虚拟主体;
用于渲染该全景场景的不同类型的渲染技术;
渲染该全景场景的不同类型的显示器;以及
该全景视频的不同时间部分;
-处理器,该处理器被配置成:
-使用该坐标映射将该至少一个图像投影到该虚拟主体上;以及
-从该虚拟主体内的或面向该虚拟主体的视点渲染该全景场景。
15.根据权利要求14所述的渲染系统,其中,该投影元数据包括可执行脚本,并且其中,该处理器被配置成执行该可执行脚本以获得该坐标映射。
CN201880034456.6A 2017-05-23 2018-05-23 用于渲染全景场景的坐标映射 Active CN110663068B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17172399 2017-05-23
EP17172399.2 2017-05-23
PCT/EP2018/063434 WO2018215502A1 (en) 2017-05-23 2018-05-23 Coordinate mapping for rendering panoramic scene

Publications (2)

Publication Number Publication Date
CN110663068A CN110663068A (zh) 2020-01-07
CN110663068B true CN110663068B (zh) 2024-02-02

Family

ID=59061790

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880034456.6A Active CN110663068B (zh) 2017-05-23 2018-05-23 用于渲染全景场景的坐标映射

Country Status (4)

Country Link
US (1) US11182875B2 (zh)
EP (1) EP3632101A1 (zh)
CN (1) CN110663068B (zh)
WO (1) WO2018215502A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11348315B2 (en) * 2019-03-19 2022-05-31 Obsess, Inc. Generating and presenting a 3D virtual shopping environment
WO2020261690A1 (ja) * 2019-06-28 2020-12-30 ソニー株式会社 情報処理装置、情報処理方法、再生処理装置及び再生処理方法
CN110717964B (zh) * 2019-09-26 2023-05-02 深圳市名通科技股份有限公司 场景建模方法、终端及可读存储介质
EP4070553A1 (en) 2019-12-06 2022-10-12 Koninklijke KPN N.V. Encoding and decoding views on volumetric image data
CN114051151B (zh) * 2021-11-23 2023-11-28 广州博冠信息科技有限公司 直播互动方法、装置、存储介质与电子设备
CN114756798B (zh) * 2022-06-13 2022-10-18 中汽创智科技有限公司 基于Web端的点云渲染方法、系统及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014043814A1 (en) * 2012-09-21 2014-03-27 Tamaggo Inc. Methods and apparatus for displaying and manipulating a panoramic image by tiles
CN104408989A (zh) * 2014-11-27 2015-03-11 南京南车浦镇城轨车辆有限责任公司 一种用于车辆模拟驾驶系统的后视镜仿真方法
CN106375748A (zh) * 2016-09-07 2017-02-01 深圳超多维科技有限公司 立体虚拟现实全景视图拼接方法、装置及电子设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090044203A1 (en) * 2007-08-10 2009-02-12 Warren Patrick Acker Apparatus and Method for Generating Programming Interactions for a Computer Program from an Incoming Data Structure
JP5347673B2 (ja) * 2009-04-14 2013-11-20 ソニー株式会社 情報処理装置、情報処理方法及びプログラム
US8695021B2 (en) * 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
JP6917710B2 (ja) * 2014-07-01 2021-08-11 ソニーグループ株式会社 情報処理装置および方法
US9894350B2 (en) * 2015-02-24 2018-02-13 Nextvr Inc. Methods and apparatus related to capturing and/or rendering images
US9460175B1 (en) * 2015-06-03 2016-10-04 Palantir Technologies Inc. Server implemented geographic information system with graphical interface
US10887574B2 (en) * 2018-07-31 2021-01-05 Intel Corporation Selective packing of patches for immersive video

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014043814A1 (en) * 2012-09-21 2014-03-27 Tamaggo Inc. Methods and apparatus for displaying and manipulating a panoramic image by tiles
CN104408989A (zh) * 2014-11-27 2015-03-11 南京南车浦镇城轨车辆有限责任公司 一种用于车辆模拟驾驶系统的后视镜仿真方法
CN106375748A (zh) * 2016-09-07 2017-02-01 深圳超多维科技有限公司 立体虚拟现实全景视图拼接方法、装置及电子设备

Also Published As

Publication number Publication date
US20200160488A1 (en) 2020-05-21
WO2018215502A1 (en) 2018-11-29
CN110663068A (zh) 2020-01-07
US11182875B2 (en) 2021-11-23
EP3632101A1 (en) 2020-04-08

Similar Documents

Publication Publication Date Title
CN110663068B (zh) 用于渲染全景场景的坐标映射
US10242714B2 (en) Interface for application-specified playback of panoramic video
RU2711591C1 (ru) Способ, устройство и компьютерная программа для адаптивной потоковой передачи мультимедийного контента виртуальной реальности
CN107454468B (zh) 对沉浸式视频进行格式化的方法、装置和流
CN112585978B (zh) 生成用于在vr中显示的复合视频流
KR102261559B1 (ko) 정보 처리 방법 및 장치
US20200389640A1 (en) Method and device for transmitting 360-degree video by using metadata related to hotspot and roi
US11647177B2 (en) Method, apparatus and stream for volumetric video format
CN113243112B (zh) 流式传输体积视频和非体积视频
US20210321058A1 (en) Method for transmitting 360-degree video, method for providing a user interface for 360-degree video, apparatus for transmitting 360-degree video, and apparatus for providing a user interface for 360-degree video
US10965928B2 (en) Method for 360 video processing based on multiple viewpoints and apparatus therefor
US20170186243A1 (en) Video Image Processing Method and Electronic Device Based on the Virtual Reality
CN110663067B (zh) 用于生成现实世界场景的定制视图的虚拟化投影以包括在虚拟现实媒体内容中的方法和系统
US11348307B2 (en) Method and device for processing content
TW201803358A (zh) 將沈浸式視訊格式化用於傳統及沈浸式顯像元件之方法、裝置及串流
US20210321083A1 (en) An apparatus, a method and a computer program for viewing volume signalling for volumetric video
US20200204785A1 (en) Method for transmitting 360-degree video, method for receiving 360-degree video, device for transmitting 360-degree video, and device for receiving 360-degree video
CN112771878A (zh) 处理媒体数据的方法、客户端和服务器
CN115883871A (zh) 媒体文件封装与解封装方法、装置、设备及存储介质
TWI817273B (zh) 即時多視像視訊轉換方法和系統
Alain et al. Introduction to immersive video technologies
WO2022037423A1 (zh) 点云媒体的数据处理方法、装置、设备及介质
CN116643643A (zh) 一种沉浸媒体的数据处理方法、装置、设备及存储介质
JP2024538232A (ja) データ処理方法、記憶媒体、及びプログラム製品
CN116643644A (zh) 一种沉浸媒体的数据处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant