CN109074627A - 球形视频的鱼眼图像拼接 - Google Patents

球形视频的鱼眼图像拼接 Download PDF

Info

Publication number
CN109074627A
CN109074627A CN201780021086.8A CN201780021086A CN109074627A CN 109074627 A CN109074627 A CN 109074627A CN 201780021086 A CN201780021086 A CN 201780021086A CN 109074627 A CN109074627 A CN 109074627A
Authority
CN
China
Prior art keywords
image
texture
network model
group
coordinate
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.)
Pending
Application number
CN201780021086.8A
Other languages
English (en)
Inventor
B·福鲁坦保尔
P·H·L·阮
毕宁
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN109074627A publication Critical patent/CN109074627A/zh
Pending legal-status Critical Current

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/12Panospheric to cylindrical image transformations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • G06T17/205Re-meshing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • 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
    • G06T3/047Fisheye or wide-angle transformations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4038Image mosaicing, e.g. composing plane images from plane sub-images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2215/00Indexing scheme for image rendering
    • G06T2215/06Curved planar reformation of 3D line structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Architecture (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

描述用于将圆形图像覆叠到三维网状模型上以产生360度可观看内容的图像内容的相应部分的实例,其中每一个所述部分是大于所述球体的一半的半胶囊。所述部分被进行渲染,然后基于所述360度可观看内容中的所述图像内容的重叠部分进行混合。

Description

球形视频的鱼眼图像拼接
本申请要求2016年4月5日申请的第62/318,610号美国临时申请的权利,其全部内容以引用的方式并入本文中。
技术领域
本公开涉及球形视频渲染。
背景技术
在某些类型的视频渲染中,例如360度视频,观看者可感知图像内容的多个不同视图。举例来说,当观看者正在观看显示器上的图像内容时,观看者可以选择用来观看内容的不同视图。对于360度视频,观看者可以与显示器介接以改变观看者观看图像内容的角度。
发明内容
大体来说,本公开描述用于通过将由两个相机捕获的图像内容拼接在一起来产生360度图像内容的技术,每一相机具有鱼眼镜头。这两个相机一同捕获360度的图像内容(例如,图像内容球)。在本公开中所描述的实例中,每一相机可捕获超过一半的球,且使用每一个所捕获视频内容的重叠部分来确定拼接所捕获视频内容的方式。
图像内容的这两个所捕获部分可被称作图像内容的第一部分和图像内容的第二部分,且第一部分和第二部分的图像内容可少于整个图像内容球。第一部分的图像内容可超过图像内容球的一半图像内容,且第二部分的图像内容可超过图像内容球的一半图像内容。
图形处理单元(GPU)可利用纹理映射技术来将所捕获图像内容覆叠到3D网状模型上。因为每一部分包含超过一半的图像内容球,所以第一和第二部分存在重叠图像内容。在产生图像内容球的图像内容时,GPU可通过混合重叠部分中的图像内容来说明(accountof)重叠图像内容。
在一个实例中,本公开描述一种用于产生图像内容的方法,所述方法包括:基于第一三维(3D)网状模型的第一组顶点坐标,将第一图像覆叠在第一3D网状模型上以产生图像内容的第一部分;基于第二3D网状模型的第二组顶点坐标,将第二图像覆叠在第二3D网状模型上以产生图像内容的第二部分,其中第一部分和第二部分包含重叠图像内容;分别渲染第一部分和第二部分以产生经渲染第一部分和经渲染第二部分;以及至少部分地基于依据重叠图像内容来混合第一经渲染部分和第二经渲染部分,产生图像内容球。
在另一实例中,本公开描述一种用于产生图像内容的装置,所述装置包括:存储器,其经配置以存储第一图像和第二图像;及图形处理单元(GPU)。GPU包括固定功能或可编程电路中的至少一个,所述电路经配置以进行以下操作:基于第一三维(3D)网状模型的第一组顶点坐标,将存储于存储器中的第一图像覆叠在第一3D网状模型上以产生图像内容的第一部分;基于第二3D网状模型的第二组顶点坐标,将存储于存储器中的第二图像覆叠在第二3D网状模型上以产生图像内容的第二部分,其中第一部分和第二部分包含重叠图像内容;分别渲染第一部分和第二部分以产生经渲染第一部分和经渲染第二部分;以及至少部分地基于依据重叠图像内容来混合第一经渲染部分和第二经渲染部分,产生图像内容球。
在另一实例中,本公开描述一种用于产生图像内容的装置,所述装置包括:用于基于第一三维(3D)网状模型的第一组顶点坐标而将第一图像覆叠在第一3D网状模型上以产生图像内容的第一部分的构件;用于基于第二3D网状模型的第二组顶点坐标而将第二图像覆叠在第二3D网状模型上以产生图像内容的第二部分的构件,其中第一部分和第二部分包含重叠图像内容;用于分别渲染第一部分和第二部分以产生经渲染第一部分和经渲染第二部分的构件;以及用于至少部分地基于依据重叠图像内容来混合第一经渲染部分和第二经渲染部分而产生图像内容球的构件。
在另一实例中,本公开描述一种包括指令的计算机可读存储媒体,所述指令在经执行时使用于产生图像内容的装置的一或多个处理器进行以下操作:基于第一三维(3D)网状模型的第一组顶点坐标,将第一图像覆叠在第一3D网状模型上以产生图像内容的第一部分;基于第二3D网状模型的第二组顶点坐标,将第二图像覆叠在第二3D网状模型上以产生图像内容的第二部分,其中第一部分和第二部分包含重叠图像内容;分别渲染第一部分和第二部分以产生经渲染第一部分和经渲染第二部分;以及至少部分地基于依据重叠图像内容来混合第一经渲染部分和第二经渲染部分,产生图像内容球。
一或多个实例的细节在附图和下面的描述中阐述。其它特征、目标和优点将根据所述描述、图式和权利要求书而变得显而易见。
附图说明
图1是说明根据本公开中所描述的一或多个实例技术的用于捕获360度视频的实例装置的框图。
图2A和2B是说明由图1的装置捕获的图像的直观图。
图3是经配置以执行本公开中所描述的实例技术中的一或多个的装置的框图。
图4是进一步详细说明图3的计算装置的CPU、GPU和存储器的框图。
图5是说明二维(2D)纹理坐标的实例的概念图。
图6是说明三维(3D)几何结构的概念图。
图7是说明包含2D纹理坐标的末尾环的放大2D纹理坐标的概念图。
图8是说明图像内容的直观图。
图9是说明纹理坐标和图像像素之间的关系的直观图。
图10是说明两个3D网状模型的概念图。
图11是说明每一部分中的末尾两个环路的相同半径的概念图。
图12是说明图11的两个部分之间的重叠的概念图。
图13和14是说明用于360度视频的遮罩(mask)的概念图。
图15是说明根据本公开中所描述的一或多个实例技术的实例操作方法的流程图。
具体实施方式
本公开中所描述的实例技术涉及产生360度视频或图像。在360度视频或图像中,视频/图像内容在观看者周围形成概念性球体。观看者可从多个视角(例如,在前面、后面、上面和周围)观看图像内容,并且此类图像内容被称作360度图像。
在本公开中,包含360度图像内容或可观看内容的图像意味着图像包含所有视角的内容(例如,上面、下面、后面、前面和每一侧面的内容)。举例来说,常规图像捕获略小于180度的图像内容,且不会捕获在相机侧面的内容。
大体来说,360度视频由一系列360度图像形成。因此,相对于产生360度图像内容描述本公开中所描述的实例技术。接着,对于360度视频内容,这些360度图像可依序显示。在一些实例中,用户可能想要只拍摄360度图像(例如,作为用户的整个360度周围环境的快照),而本公开中描述的技术同样适用于此类实例情况。
技术可适用于所捕获视频内容、虚拟现实、非cv模块等。技术可用于移动装置,但是技术不应被视为限于移动应用。一般来说,技术可用于虚拟现实应用、视频游戏应用或其中需要360度球形视频/图像环境的其它应用。
可以用包含两个鱼眼镜头(例如,定位成捕获图像内容球的相对部分)的相机装置捕获360度图像内容。这两个鱼眼镜头捕获360度视频的完整球体的相应部分。然而,通过所捕获部分产生的图像是圆形图像(例如,一个图像帧包含两个圆形图像)。
本公开中所描述的实例技术描述使用所述两个圆形图像产生360度图像的方式。图形处理单元(GPU)利用纹理映射技术来渲染各自具有图像内容球的一部分的这两个圆形图像,然后混合图像内容的经渲染部分以产生图像内容球。举例来说,中央处理单元(CPU)产生三维(3D)网状模型,其中3D网状模型包含具有顶点坐标的多个图元。CPU还产生对应于顶点坐标的多个纹理坐标。这些纹理坐标是这两个圆形图像内的图像像素的坐标。通过这种方式,圆形图像形成GPU向3D网状模型进行纹理映射的纹理(例如,色彩纹理)。
GPU可基于纹理坐标和3D网状模型的顶点坐标而将圆形图像覆叠到3D网状模型上。例如,GPU可接收指示3D网状模型的顶点坐标和对应的色彩纹理(例如,圆形图像)的纹理坐标的指令。响应于所述指令,GPU可将圆形图像覆叠在相应的3D网状模型上,以分别产生图像内容的第一部分和图像内容的第二部分。
GPU可渲染图像内容的这两个部分。因为这两个部分表示所述两个圆形图像的图像内容,所以这两个部分的组合表示整个图像内容球(例如,360度可观看内容)。然而,如上文所描述,每一个圆形图像包含超过一半的图像内容球(例如,超过180度的图像内容)。因此,图像内容的这两个部分各自表示超过180度的图像内容。所以这两个部分中存在图像内容球的重叠图像内容。GPU可混合这两个经渲染部分的重叠图像内容以产生图像内容球。
作为一实例,假设第一鱼眼镜头指向第一方向,且捕获200度的图像内容。假设第二鱼眼镜头指向与第一方向相反的第二方向,且捕获200度的图像内容。在本实例中,图像内容的第一部分将包含200度的图像内容,且图像内容的第二部分将包含200度的图像内容。然而,第一和第二部分中将存在大约20度的重叠图像内容。此重叠图像内容将出现在这两个部分的末端上。
在本公开中所描述的实例中,GPU可利用此重叠图像内容来混合第一和第二部分。例如,GPU可向第一和第二部分内的点指派混合因子,并使用这些混合因子来混合第一和第二部分。指派混合因子可存在各种方式,例如基于纹理坐标使用遮罩,如更详细描述的。
如上文所描述,CPU基于圆形图像的图像像素而确定纹理坐标。在一些实例中,CPU可基于形成同心环图案的图元顶点和圆形图像的图像像素而确定纹理坐标。同心环中的环宽度不必一定全部具有相同宽度。例如,一或多个外环的宽度可比其它环的宽度小。
如更详细地描述,通过在纹理坐标中具有更小的宽度,GPU可以在纹理映射期间自然地伸展开对应纹理,这可适用于补偿产生圆形图像的压缩。在圆形图像中,边缘上的图像内容被压缩,且在没有校正的情况下可潜在地导致不良的图像质量。
GPU基于纹理坐标中的较小宽度而伸展开对应纹理。这在概念上可被视为将干瘦的矩形映射到较宽矩形上。举例来说,假设内环中的图元的纹理坐标形成方形图元,且外环中的图元的纹理坐标形成具有较小宽度(例如,减小23%的宽度)的矩形图元。假设3D网状模型中的图元的大小相同。因此,将外环中的图元的纹理坐标映射到3D网状模型中的对应顶点坐标将导致相对于其它环中的图元的纹理坐标到3D网状模型中的对应顶点坐标的映射伸展纹理(例如,圆形图像)。
本公开中所描述的实例技术允许直接从圆形图像产生360度的图像内容(例如,图像内容球)而不必经过将圆形图像转换成非圆形图像的过程。举例来说,一些其它技术需要额外的处理时间来将圆形图像转换成非圆形图像。此外,通过使用具有不同宽度的图元的纹理坐标,本公开中所描述的实例技术可以校正圆形图像中的压缩,由此产生更精确的图像。
图1是说明根据本公开中所描述的一或多个实例技术的用于捕获360度视频的实例装置的框图。有一种新型的相机正在进入市场,在这种相机中,两个鱼眼镜头捕获和记录360球形环境,并创建两个鱼眼视频流。如所说明,计算装置10是视频捕获装置,其包含位于计算装置10的相对侧上以捕获完整的360度视频内容的鱼眼镜头12A和鱼眼镜头12B。鱼眼镜头12A和12B的其它定向可为可能的。如上文所描述,360度视频内容可被视为一系列360度图像(例如,视频帧)。本公开中所描述的实例技术描述与图像相关的技术,其可用于静态图像(例如,360度快照)或形成视频(例如,360度视频)的图像的目的。
观看者可与计算装置10交互以捕获360度视频/图像,其中鱼眼镜头12A和12B中的每一个捕获360度视频/图像的一部分,且来自鱼眼镜头12A和12B的这两个视频/图像流混合在一起以创建360度视频/图像。在一些情况下,将视频/图像流混合在一起可在这两个流之间产生可见缝隙。
可存在各种方式用于观看者与计算装置10交互。作为一个实例,观看者可用位于计算装置10上的按钮与计算装置10交互。作为另一实例,观看者可通过所显示的界面(例如,图形用户界面(GUI))与计算装置10交互。
在一些实例中,计算装置10可为不提供显示器且可能具有也可能不具有机载处理能力的相机装置(例如,鱼眼相机装置)。在一些实例中,计算装置10向另一装置输出所捕获图像以供(例如,处理装置)处理。此处理装置可提供初级或二级机构以用于观看者交互。例如,观看者可在处理装置上执行使计算装置10与处理装置一起隐藏(sink)的应用程序,其中处理装置是主控器,而计算装置10是受控器。观看者可接着通过处理装置使计算装置10捕获360度图像,并且计算装置10将图像输出回到处理装置以供显示。在一些实例中,即使当处理装置用于捕获360度图像时,观看者仍然可以与计算装置10交互以捕获360度图像,但是计算装置10将向处理装置输出图像以供显示。
图2A和2B是说明由图1的装置捕获的图像的直观图。如所说明,由镜头12A和12B捕获的两个图像的输出是圆形图像(例如,圆图像)。例如,图2A表示由镜头12A捕获的图像,且图2B表示由镜头12B捕获的图像。响应于观看者意在捕获图像的交互,图3中所说明的相机处理器接收由镜头12A和12B捕获的图像内容,并处理图像内容以产生图2A和2B。在一些实例中,图2A和2B可以是公共图像帧的一部分。
如所说明,图2A和2B是说明呈现为气泡状的图像内容的圆形图像。如果这两个圆形图像被拼接在一起,那么所得图像内容将为整个图像内容球(例如,360度可观看内容)。
然而,由镜头12A和12B捕获的图像涵盖超过一半的360度可观看内容。为了捕获360度可观看内容的一半,镜头12A将会捕获到360度可观看内容中的180度,且镜头12B将会捕获到360度可观看内容中的另一180度。在一些实例中,镜头12A和12B可各自捕获超过360度可观看内容中的180度。举例来说,镜头12A和12B可捕获大约200度可观看内容(例如,稍后于计算装置10的侧面且在周围扩展的内容)。
因为镜头12A和12B中的每一个捕获超过360度可观看内容中的180度,所以在从由镜头12A和12B捕获的内容产生的图像中存在某一图像内容重叠。在本公开中所描述的实例技术中,如图3中所说明的图形处理单元(GPU)可利用图像内容中的这一重叠来混合图像内容球以供显示。
基于来自镜头12A和12B的所捕捉图像产生图像内容球以供显示的GPU可位于与镜头12A和12B相同的装置(例如,其中计算装置10是鱼眼相机装置的计算装置10的部件)上,或者可位于单独的处理装置(例如,单独的手持式装置或固定装置)中。在其中GPU位于单独的处理装置中的实例中,计算装置10可向处理装置输出图2A和2B的图像内容。计算装置10和处理装置可以无线方式、通过有线链路或通过网络(例如,因特网或LAN)进行耦合。接着,处理装置可根据本公开中所描述的实例技术渲染所捕捉图像并混合所得经渲染图像以供显示。
在一些实例中,计算装置10可向服务器输出所捕获图像(例如,图2A和2B中的图像)。处理装置可下载所捕获图像、渲染图像并混合经渲染图像以产生360度图像。作为一实例,一个人可使用计算装置10捕获关注区域(例如,音乐会、新足球场、国家公园等等)的360度视频(例如,一系列360度图像)。这个人可使计算装置10将所捕获360度视频存储到服务器,且对所捕获360度视频感兴趣的另一个人可使处理装置从服务器下载并产生图像以供显示。
为易于描述,如更详细地描述,相对于捕获360度图像和显示360度图像的计算装置10描述实例。例如,计算装置10包含根据本公开中所描述的实例技术渲染并混合所捕获图像以供显示的GPU。然而,实例技术不受如此限制,且同样设想了其中计算装置10捕获360度图像并向另一处理装置输出360度图像的实例。
在一些实例中,渲染并混合所捕获图像的GPU可位于计算装置10上。计算装置10可渲染并混合所捕获图像以产生图像内容球,而不是输出所捕获图像。计算装置10可接着向另一处理装置输出图像内容球以供显示或向服务器输出图像内容球以供随后下载和显示。
如从图2A和2B可见,所捕获图像中可存在某些伪影。举例来说,由于图2A和2B中所说明的圆形图像的气泡状性质,(例如,沿着图像的圆周)边缘上的图像内容被压缩。在不补偿压缩的情况下,所得图像内容球可能并不显得平滑,且包含经压缩图像内容。如更详细地描述,GPU可利用使用不同大小的纹理图元的纹理映射技术来伸展经压缩图像内容。
本公开中描述的技术不应与全景成像技术混淆。在全景成像中,观看者通过四处移动相机装置来拍摄多个矩形图像,其中每一图像捕获小于180度的图像内容。接着,相机装置将这些不同的图像拼接在一起。在本公开中所描述的实例中,圆形图像包含超过180度的图像内容,且可能但不一定具有沿着图像圆周的图像压缩。
本公开描述提供用于通过两个相机产生的两个视频数据流的高性能、高质量组合的实例技术。结果可具有最小视觉缝隙或不存在视觉缝隙,并且可以容忍用户和环境出现移动。
在本公开中所描述的实例技术中,GPU的处理电路可混合由镜头12A和12B捕获的图像内容的两个部分的视频内容。如上文所描述,GPU可在计算装置10内,或者可在接收由镜头12A和12B捕获的图像内容的另一装置中。
图3是经配置以执行本公开中所描述的实例技术中的一或多个的装置的框图。计算装置10的实例包含计算机(例如,个人计算机、台式计算机或笔记本计算机)、例如平板计算机的移动装置、无线通信装置(如移动电话、蜂窝式电话、卫星电话和/或移动手机)、陆线电话、因特网电话、例如便携式视频游戏装置或个人数字助理(PDA)的手持式装置。计算装置10的额外实例包含个人音乐播放器、视频播放器、显示装置、相机、电视、机顶盒、广播接收器装置、服务器、中间网络装置、主机计算机或处理和/或显示图形数据的任何其它类型的装置。
如图3的实例中所说明,计算装置10包含第一鱼眼镜头12A和第二鱼眼镜头12B、至少一个相机处理器14、中央处理单元(CPU)16、图形处理单元(GPU)18和GPU 18的本地存储器20、用户接口22、提供对系统存储器30的存取的存储器控制器24,以及输出使图形数据在显示器28上显示的信号的显示器接口26。尽管图3将鱼眼镜头12A和12B说明为包含GPU 18的同一装置的一部分,但是本公开中描述的技术不受如此限制。在一些实例中,GPU 18和图3中所说明的各种其它组件中的多个可在不同装置(例如,处理装置)上,其中来自镜头12A和12B的所捕获视频内容被输出到包含GPU 18的处理装置,以供图像内容的后处理和混合,从而产生360度视频/图像。
并且,尽管各种组件被说明为单独的组件,但是在一些实例中,组件可进行组合以形成片上系统(SoC)。作为一实例,相机处理器14、CPU 16、GPU 18和显示器接口26可在公共集成电路(IC)芯片上形成。在一些实例中,相机处理器14、CPU 16、GPU 18和显示器接口26中的一或多个可在单独的IC芯片中。各种其它排列和组合是可能的,且技术不应被视为限于图3中所说明的实例。
图3中所说明的各种组件(不论是在一个装置上形成还是在不同装置上形成)可形成为固定功能或可编程电路中的至少一个,例如在一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效集成或离散逻辑电路中。本地存储器20的实例包含一或多个易失性或非易失性存储器或存储装置,如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
图3中所说明的各种单元使用总线32而与彼此通信。总线32可为多种总线结构中的任一者,例如第三代总线(例如,超传输总线或无线带总线)、第二代总线(例如,高级图形端口总线、外围组件互连标准(PCI)快速总线或高级可扩展接口(AXI)总线),或另一类型的总线或装置互连。应注意,图3中展示的不同组件之间的总线和通信接口的特定配置仅为示例性的,且可使用具有相同或不同组件的计算装置和/或其它图形处理系统的其它配置来实施本公开的技术。
相机处理器14可在计算装置10外部;然而,相机处理器14也有可能在计算装置10内部,如所说明。为易于描述,相对于图3中所说明的配置描述实例。
相机处理器14经配置以从镜头12A和12B相应像素接收电流作为传感器信号,并处理所述电流以产生相应鱼眼图像(例如,圆形图像)的像素数据。尽管示出了一个相机处理器14,但是在一些实例中,可存在多个相机处理器(例如,一个用于镜头12A,一个用于镜头12B)。因此,在一些实例中,在计算装置10中可存在一或多个类似于相机处理器14的相机处理器。
在一些实例中,相机处理器14可被配置为单输入多数据(SIMD)架构。相机处理器14可对从镜头12A和12B中的每一个上的每一个像素接收的电流执行相同操作。SIMD架构的每一通路可包含图像管线。图像管线包含硬线电路和/或可编程电路(例如,固定功能或可编程电路中的至少一个)以处理像素的输出。
例如,相机处理器14的每一图像管线可包含用于将电流转换成电压的相应跨阻抗放大器(TIA)和将模拟电压输出转换成数字值的相应模/数转换器(ADC)。由每个像素输出的电流指示红色、绿色或蓝色分量的强度。
除了将模拟电流输出转换成数字值之外,相机处理器14还可执行某一额外后处理以提高最终图像的质量。例如,相机处理器14可评估相邻图像像素的色彩和亮度数据,并执行去马赛克以更新图像像素的色彩和亮度。作为额外实例,相机处理器14还可执行噪声减少和图像锐化。
相机处理器14通过存储器控制器24向系统存储器30输出所得图像(例如,每一个图像像素的像素值)。每一个图像可组合到一起以形成360度视频/图像。例如,GPU 18或自身包含相机处理器14的某一其它处理单元可执行混合以产生视频内容。为易于描述,相对于执行操作的GPU 18的处理电路描述实例。然而,另一处理电路可经配置以执行实例技术。在一些情况下,GPU 18可实时地组合图像并产生360度视频/图像,但是在其它实例中,组合图像以产生360度视频/图像的操作不需要一定是实时的。
CPU 16可包括控制计算装置10的操作的通用或专用处理器。用户可向计算装置10提供输入以使CPU 16执行一或多个软件应用程序。在CPU 16上执行的软件应用程序可包含例如文字处理器应用程序、网页浏览器应用程序、电子邮件应用程序、图形编辑应用程序、总分析表应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户界面应用程序或另一程序。用户可通过一或多个输入装置(未示出)向计算装置10提供输入,所述输入装置例如键盘、鼠标、麦克风、触摸板或通过用户接口22耦合到计算装置10的另一输入装置。
软件应用程序的一个实例是相机应用程序。CPU 16执行相机应用程序,作为响应,相机应用程序使CPU 16产生显示器28输出的内容。举例来说,显示器28可输出信息,例如光强度、是否启用闪光灯及其它此类信息。计算装置10的用户可与显示器28介接以配置产生图像的方式(例如,具有或不具有闪光灯,及其它参数)。相机应用程序还使CPU 16指示相机处理器14以用户限定的方式处理由镜头12A和12B捕获的图像。
在CPU 16上执行的软件应用程序可包含一或多个图形渲染指令,所述图形渲染指令指示CPU 16以向显示器28渲染图形数据。在一些实例中,软件指令可适合图形应用程序编程接口(API),如开放图形库API、开放图形库嵌入系统(OpenGL ES)API、OpenCL API、Direct3D API、X3D API、RenderMan API、WebGL API或任何其它公共或专用标准图形API。技术不应被视为限于要求特定API。
作为一个实例,用户可执行相机应用程序,并与计算装置10交互以捕获360度视频。在相机处理器14将所得图像(例如,图2A和2B的圆形图像)存储在系统存储器30中之后,相机应用程序可使CPU 16指示GPU 18渲染并混合图像。相机应用程序可使用适合例如OpenGL API的实例API的软件指令,以指示GPU 18渲染并混合图像。作为一实例,相机应用程序可根据OpenGL API发出纹理映射指令以使GPU 18渲染并混合图像。
响应于接收到的指令,GPU 18可接收圆形图像的图像内容并混合图像内容以产生360度视频。显示器28显示360度视频。用户可与用户接口22交互以调节观看视角,使得观看者可以观看完整的360度视频(例如,在上面、后面、前面及在360球体的所有角度处观看)。
存储器控制器24有助于进入和离开系统存储器30的数据传送。例如,存储器控制器24可接收存储器读取和写入命令,且关于存储器30来服务此类命令以便针对计算装置10中的组件提供存储器服务。存储器控制器24以通信方式耦合到系统存储器30。尽管在图3的计算装置10的实例中将存储器控制器24说明为与CPU 16和系统存储器30两者均分开的处理电路,但在其它实例中,存储器控制器24的功能性中的一些或全部可实施于CPU 16和系统存储器30中的一或两个上。
系统存储器30可存储可由相机处理器14、CPU 16和GPU 18存取的程序模块和/或指令和/或数据。例如,系统存储器30可存储用户应用程序(例如,相机应用程序的指令)、来自相机处理器14的所得图像等。系统存储器30可另外存储供计算装置10的其它组件使用和/或通过计算装置10的其它组件产生的信息。例如,系统存储器30可充当相机处理器14的装置存储器。系统存储器30可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
在一些方面,系统存储器30可包含使相机处理器14、CPU 16、GPU 18和显示器接口26执行归于本公开中的这些组件的功能的指令。因此,系统存储器30可为其上存储有指令的计算机可读存储媒体,所述指令在执行时使一或多个处理器(例如,相机处理器14、CPU16、GPU 18和显示器接口26)执行各种功能。
在一些实例中,系统存储器30是非暂时性存储媒体。术语“非暂时性”指示存储媒体不用载波或传播信号实施。然而,术语“非暂时性”不应被解译为意味着系统存储器30是不可移动的或它的内容是静态的。作为一个实例,系统存储器30可从计算装置10移除,并且可移动到另一装置。作为另一实例,基本上类似于系统存储器30,存储器可插入到计算装置10中。在某些实例中,非暂时性存储媒体可(例如,在RAM中)存储可随着时间推移改变的数据。
相机处理器14、CPU 16和GPU 18可在相应的缓冲器中存储图像数据等等,所述缓冲器在系统存储器30内分配。显示器接口26可从系统存储器30获取数据并配置显示器28以显示由产生的图像数据表示的图像。在一些实例中,显示器接口26可包含数/模转换器(DAC),所述DAC经配置以将从系统存储器30获取到的数字值转换成由显示器28消耗的模拟信号。在其它实例中,显示器接口26可将数字值直接传递到显示器28以供处理。
显示器28可包含监视器、电视、投影装置、液晶显示器(LCD)、等离子体显示面板、发光二极管(LED)阵列、阴极射线管(CRT)显示器、电子纸张、表面传导电子发射显示器(SED)、激光电视显示器、纳米晶体显示器或另一类型的显示单元。显示器28可集成于计算装置10内。举例来说,显示器28可为移动手机或平板计算机的屏幕。可替代地,显示器28可为通过有线或无线通信链路耦合到计算装置10的单独装置。举例来说,显示器28可为通过缆线或无线链路连接到个人计算机的计算机监视器或平板显示器。
在本公开中描述的实例技术中,GPU 18包含图形处理管线,所述图形处理管线包含处理电路(例如,可编程电路和/或固定功能电路)。例如,GPU 18可包含用于执行实例技术的操作的纹理硬件电路。GPU 18还可包含用于混合和遮罩产生以执行实例技术的操作的处理电路。
举例来说,GPU 18可使用纹理映射技术来产生将进行渲染和混合的图像内容。纹理映射一般是指图像覆叠在几何结构的顶部上(也被称作“胶合”到几何结构)的过程。将要覆叠的图像可被称作色彩纹理或只称作纹理,且CPU 16可限定几何结构。色彩纹理可为覆叠到3D网状模型上的二维(2D)图像,但是其它维度的色彩纹理是可能的,例如3D图像。
作为一实例,为了帮助大体上理解纹理映射,3D网状模型可为形成墙壁的多个图元的互连,且色彩纹理可为壁画图像的2D图像。在本实例中,色彩纹理覆叠在其上的几何结构是墙壁,且色彩纹理是壁画图像。在纹理映射中,CPU 16向GPU 18输出使形成墙壁的图元的顶点的3D坐标(例如,x、y、z)与色彩纹理的纹理坐标对应的指令。在本实例中,色彩纹理的纹理坐标是归一化成在0和1之间的壁画图像的图像像素坐标。
在本公开中所描述的实例技术中,从由镜头12A和12B捕获的内容产生的图像(例如,如图2A和2B中所说明)形成色彩纹理,所述色彩纹理可表示为位图。GPU 18的纹理硬件电路用纹理坐标执行色彩纹理映射(例如,如图4中所说明)。OpenGL使用具有纹理坐标的位图、几何结构的顶点坐标和连接信息来产生图像内容的各部分的视频内容。
CPU 16可确定纹理坐标、色彩纹理覆叠在其上的几何结构的顶点坐标和连接信息。色彩纹理覆叠在其上的几何结构的一个实例是3D网状模型。3D网状模型的形状可为半球状,但是具有细长末端。例如,3D网状模型的形状可为切成两半的胶囊状(例如,其中额外的环附接在末端处的一半球体)。此类3D网状模型的实例(例如,切成两半的胶囊)被称为半胶囊(sub-capsule)或细长半球体。在半胶囊形状中,中点到顶点的距离大于中点到圆周的距离。作为概念性实例,半胶囊形状是侧向仓(sideways silo)。
半胶囊形状包含纵向轴线,其中纵向轴线包括从形成露面(open-faced)电路的半胶囊的一个末端的中心点延伸到半胶囊的尖端(例如,顶点)的轴线。此露面圆形的半径可小于此露面圆形的中心点到半胶囊的尖端的距离。在本公开中所描述的实例中,具有此半胶囊形状的3D网状模型包含围绕公共纵向轴线安置的多个环。每一个环包含多个图元,且圆形图像覆叠在围绕半胶囊形状的公共纵向轴线安置的这些图元的顶部上。在一些实例中,3D网状模型中的第一环的宽度小于3D网状模型中的第二环的宽度。
术语半胶囊大体上是指半圆形状(例如,一个末端形成露面圆形)。半胶囊形状的一个实例是半卵形,但具有半圆形状的其它此类形状是可能的(例如,半胶囊的其它实例是可能的)。
此外,实例技术不限于3D网状模型的半胶囊形状,且其它形状同样是可能的。举例来说,3D网状模型的形状可为立方形和其它可能形状。在这些实例中的每一个中,存在穿过3D网状模型的纵向轴线,且具有图元的环围绕此公共纵向轴线安置。圆形图像可覆叠在这些图元的顶部上,类似于上文的描述。
可存在各种形状的3D网状模型的图元。作为一个实例,CPU 16(例如,通过在CPU16上执行的相机应用程序或通过预先产生和存储的信息)可将3D网状模型限定为形成有多个图元(例如,方形图元)。举例来说,CPU 16可限定3D网状模型的多个图元的顶点的x、y、z坐标。GPU 18可将第一纹理(例如,图2A或2B中的一个)覆叠到第一3D网状模型上,以产生图像内容的第一部分(例如,图像内容的第一半胶囊)。GPU 18可重复此过程,但是是将第二纹理(例如,图2A或2B中的另一个)覆叠到第二3D网状模型上,以产生图像内容的第二部分(例如,图像内容的第二半胶囊)。第一和第二3D网状模型可为相同的3D网状模型,但是是用于渲染图像内容球的不同部分。
为了覆叠色彩纹理,CPU 16可限定圆形图像内的图像像素的纹理坐标。图像像素大体上归一化成在0和1之间。CPU 16可限定纹理坐标的一个实例方式是基于极坐标。举例来说,纹理图可包含形成同心环的多个纹理图元。纹理坐标的一个实例是纹理图元的顶点的坐标。在一些实例中,纹理图元的顶点的坐标可限定为极坐标,而不是笛卡尔坐标,但是实例技术不受如此限制。
本质上,具有形成同心环的多个纹理图元的纹理图可被视为将圆形图像划分成同心环中的多个图元。举例来说,可以使用纹理图元的顶点的坐标来指代圆形图像中的像素的坐标。换句话说,CPU 16将圆形图像划分成多个图元,其中图元的大小和形状由纹理图限定,在此情况下,这意味着CPU 16将圆形图像划分成形成同心环的多个图元。相对于图5、7、8和9描述此类纹理图和产生纹理图的方式的实例。
形成色彩纹理覆叠在其上的几何结构的3D网状模型(例如,半胶囊)包含形成3D网状模型的多个图元的一组顶点坐标。形成覆叠在几何结构上的色彩纹理的由镜头12A或12B中的一个产生的圆形图像(例如,图2A或2B中的一个)包含一组纹理坐标。
作为一实例,GPU 18可逐图元地将纹理图元覆叠到3D网状模型的图元上。作为非限制性实例,纹理图元和3D网状模型的图元可为四边形。CPU 16可向GPU 18输出使纹理图元的四个纹理坐标顶点与3D网状模型的图元的四个顶点坐标对应的指令。CPU 16还可输出使GPU 18将纹理图元覆叠(例如,胶合)到3D网状模型的图元上的指令。CPU 16和GPU 18可针对3D网状模型中的所有图元而逐图元地重复这些操作。
此纹理映射操作的结果是图像内容球的第一部分(例如,第一半胶囊)。例如,如果CPU 16和GPU 18开始于图2A的圆形图像,那么结果将为图2A的圆形图像覆叠在其上的半胶囊,从而形成整个可观看内容的第一部分。CPU 16和GPU 18可对第二圆形图像(例如,图2B的圆形图像)重复这些操作以产生图像内容球的第二部分(例如,第二半胶囊)。这些部分是3D部分,它们包含形成图像内容球(例如,360度可观看内容)的整个图像内容。
如上文所描述,在一些实例中,沿着从由镜头12A和12B捕获的图像内容产生的圆形图像的圆周的图像内容被压缩。在一些实例中,CPU 16和GPU 18可利用纹理映射来伸展开压缩的图像内容。
同心环中的纹理图元的宽度可为可变的。例如,一或多个外环中的纹理图元的宽度可小于其它环中的纹理图元的宽度。作为一个实例,最外环中的纹理图元的宽度可小于所有其它环的宽度。紧靠着最外环的环的宽度可小于除最外环外的所有其它环的宽度,以此类推。在一些实例中,只除了最外环或末尾几个外环以外,大部分环中的图元的宽度可为相同的。
在映射到3D网状模型中的对应图元时,纹理图元的宽度差异会产生不同伸展量。如上文所描述,纹理图元是指涵盖由纹理图元的纹理坐标形成的区域的圆形图像中的一组图像像素。例如,假设纹理图元的大小和形状与3D网状模型上的对应基元的大小和形状相同。此假设不需要一定是正确的,提供这一假设只是为了帮助理解。在此情况下,当GPU 18将纹理图元纹理映射到3D网状模型上的对应图元时,映射是一对一的(例如,GPU 18可直接将纹理图元覆叠在3D网状模型的对应图元的顶部上。
在另一实例中,假设纹理图元的大小和形状小于3D网状模型上的对应图元的大小和形状。具体地说,假设纹理图元的宽度小于3D网状模型上的对应图元的宽度。举例来说,如果纹理图元和3D网状模型中的图元都是矩形,那么纹理图元的宽度将小于3D网状模型中的图元的宽度,但长度可为相同的。在此情况下,当GPU 18将纹理图元纹理映射到3D网状模式上的对应图元时,映射不是一对一的。相反地,GPU 18逐宽度地伸展开纹理图元以将纹理图元覆叠在3D网状模型中的对应图元的顶部上。作为一实例,如果纹理图元的宽度是3D网状模型的图元的宽度的一半,那么纹理图元中的图像内容将伸展两倍,使得图像内容覆叠在3D网状模型中的图元上。
在本公开中所描述的实例中,在纹理图的一或多个外环中的纹理图元对应于沿着圆形图像的圆周(例如,沿着说明为图2A和2B的图像的圆周)的图像内容。并且,如上文所提到,沿着圆形图像的圆周的图像内容往往会被压缩。因此,因为一或多个外环中的纹理图元的宽度小于其它纹理图元的宽度,所以当GPU 18将来自圆形图像的图像内容覆叠到3D网状模型的对应图元上时,沿着圆形图像的圆周的图像内容的伸展程度可比圆形图像中的其它图像内容高。
通过这种方式,CPU 16和GPU 18可利用纹理映射技术来补偿当镜头12A和12B捕获图像内容且相机处理器14产生圆形图像时所出现的图像内容压缩。用于补偿图像内容压缩的此类技术在所有实例中并不都是必需的。举例来说,CPU 16可限定具有相等宽度的纹理图,或调整3D网状模型的图元,使得不存在伸展。
GPU 18执行将第一圆形图像(例如,图2A中所说明的圆形图像)覆叠到第一3D网状模型上以产生图像内容的第一部分的纹理映射,并执行将第二圆形图像(例如,图2B中所说明的圆形图像)覆叠到第二3D网状模型上以产生图像内容的第二部分的纹理映射。第一和第二3D网状模型可为相同3D网状模型的例子,也可为不同3D网状模型。
GPU 18还可混合第一和第二部分,且GPU 18可具有各种方式来混合第一和第二部分。作为一个实例,GPU 18可基于第一和第二部分中的重叠部分来混合第一和第二部分。如上文所描述,第一和第二部分中的每一个中的图像内容超过180度图像内容,这意味着在第一和第二部分中存在某一重叠图像内容(例如,在第一和第二部分中均出现的图像内容)。
此重叠内容沿着第一和第二部分的缝隙(例如,连同第一和第二半胶囊的最宽区域)出现。GPU 18可混合重叠部分,使得相同图像内容不会在最终图像内容球中出现两次。
例如,GPU 18还可沿着这两个部分的重叠部分执行α混合(alpha blending)。α混合是一种在混合时指派权重的方式,所述权重指示所使用的来自每一部分中的视频内容的百分比。举例来说,假设存在第一部分和第二部分,其中第一部分在第二部分左侧。在本实例中,在混合中使用第一部分中更远离重叠缝隙的大部分图像内容,且使用第二部分中的极少图像内容。类似地,在混合中第二部分中更远离重叠缝隙的大部分图像内容,且使用第一部分的极少图像内容。从左到右移动,越来越多的第二部分的图像内容和越来越少的第一部分的图像内容用于混合。因此,α混合对来自图像内容的第一和第二部分的图像内容的份额进行加权。
举例来说,通过在重叠区域中利用α混合,重叠像素具有经加权份额。如果是在重叠缝隙的左侧,且仍然重叠,那么GPU 18对左侧球体上的像素的加权超过右侧球体上的那些像素(例如,左侧球体上的像素的权重大于右侧球体)。如果是在重叠缝隙的右侧,且仍然重叠,那么GPU 18对右侧球体上的像素的加权超过左侧球体上的那些像素(例如,右侧球体上的像素的权重大于左侧球体)。用于混合的权重通过重叠缝隙逐渐改变。
为了执行α混合,GPU 18可执行另一轮纹理化以产生遮罩纹理。GPU 18可使用此遮罩纹理与色彩纹理来产生360度视频的视频内容球。
例如,CPU 16可限定遮罩纹理。形成遮罩纹理的图元的大小和形状可与形成色彩纹理的图元相同。换句话说,遮罩纹理图可与用于限定圆形图像中的像素的纹理坐标的色彩纹理图相同。然而,遮罩纹理图的值可指示用于第一和第二部分的混合的权重。不同于色彩纹理(例如,圆形图像),遮罩纹理不是具有图像内容的实际图像。相反地,遮罩纹理是一种限定各部分(例如,半胶囊)内的像素的不透明度的方式。
遮罩纹理图在概念上可被视为值在0到1范围内的灰度图像,其中1表示100%的半胶囊用于混合,且0表示0%的半胶囊用于混合。如果遮罩纹理图的值在0和1之间,那么所述值指示施加到半胶囊中的对应像素的权重,且其余权重施加到另一半胶囊中的对应像素(例如,两个半胶囊之间的混合)。
举例来说,假设遮罩纹理图的值在施加到第一半胶囊时是0.4。这意味着GPU 18将第一半胶囊上的像素加权40%,并将第二半胶囊上的对应像素加权60%。
因为第一和第二部分的重叠沿着其中第一和第二半胶囊彼此耦合的缝隙出现,所以CPU 16产生的遮罩纹理可针对遮罩纹理的中心中的值指示权重“一”。这是因为遮罩纹理的中心中的遮罩纹理图元对应于第一和第二半胶囊上不存在重叠的位置。在遮罩纹理图中,针对对应于第一和第二半胶囊上存在重叠的位置的遮罩纹理图中的值,值可小于“一”且大于“零”。举例来说,如果值越来越接近遮罩纹理的圆周,那么值可变得越来越小,直到值达到“零”为止。
在一或多个实例中,CPU 16和GPU 18可利用三个不同纹理来渲染通过由鱼眼镜头12A和12B捕获的图像内容产生的圆形图像。在第一轮中,第一纹理是第一色彩纹理,其是圆形图像中的一个。GPU 18使用第一色彩纹理执行纹理映射以将第一圆形图像覆叠到由CPU16限定的第一3D网状模型上。第一3D网状模型的实例形状是半胶囊,但是其它形状是可能的。在第二轮中,第二纹理是第二色彩纹理,其是圆形图像中的另一个。GPU 18使用第二色彩纹理执行纹理映射以将第二圆形图像覆叠到由CPU 16限定的第二3D网状模型上。第二3D网状模型的实例形状是半胶囊,但是其它形状是可能的。第一和第二3D网状模型可为相同网状模型的例子或不同网状模型。在一些实例中,第一和第二3D网状模型中的第一环的宽度分别小于第一和第二3D网状模型中的第二环的宽度。
如上文所描述,在纹理映射期间,GPU 18可伸展图像内容中在从由镜头12A和12B捕获的图像内容产生的圆形图像中被压缩的部分。
GPU 18可向图像内容的第一和第二部分指派混合因子。例如,GPU 18使用遮罩纹理执行第三轮纹理映射。此遮罩纹理自身不是图像,而是限定混合因子(例如,作为混合的一部分施加到第一和第二部分中的像素的权重)的机制。在其中GPU 18使用来自纹理图的值的这一第三轮期间,GPU 18可向第一和第二部分中的每一个像素指派不透明度。不透明度可限定如何混合第一和第二部分的重叠部分(例如,第一和第二部分中的每一个有多少用于最终图像内容球)。GPU 18的混合器电路可接着混合第一和第二部分以产生图像内容球。
例如,GPU 18执行将第一圆形图像覆叠在3D网状模型上以产生图像内容的第一部分的纹理映射,并使用遮罩纹理在图像内容的第一部分上执行纹理映射。GPU 18可渲染第一部分以产生经渲染第一部分,GPU 18将经渲染第一部分存储在系统存储器30或本地存储器20中。GPU 18重复类似操作以产生经渲染第二部分,GPU 18将经渲染第二部分存储在系统存储器30或本地存储器20中。GPU 18可接着获取第一和第二部分,或至少获取第一和第二部分的子部分,并使用它的混合器电路来混合第一和第二部分以产生图像内容球。
GPU 18可向系统存储器30输出渲染和混合的结果。显示器接口26可从系统存储器30获取图像内容,并在显示器28上显示所得图像内容。在一些实例中,显示器28可显示整个球体的一部分,且观看者可与计算装置10介接(例如,通过显示器28)以选择要观看的球体的部分。
在一些实例中,在混合之前,在第一和第二部分耦合在一起的位置处可出现缝隙。缝隙可显示为图像内容的突然改变或图像内容的未对准。例如,如果第一和第二部分没有对准,那么即使进行了混合,仍然可能存在图像内容的突然改变。GPU 18可检测此类缝隙并执行进一步处理以校正所述缝隙,且在一些实例中,在混合之前执行此类处理。
检测缝隙的一个实例方式是比较重叠区域的相似度。例如,假设第一和第二部分中的重叠部分是N×M像素。GPU 18的处理电路(例如算术逻辑单元(ALU)或基本功能单元(EFU))可从第一和第二部分中减去N×M像素的色彩值。处理电路可基于色彩值的减去而确定相似度。
在一些实例中,GPU 18可实施绝对差最大值(Maximum of AbsoluteDifferences)技术来确定重叠图像内容的相似度。举例来说,GPU 18的处理电路可从第一和第二部分中减去N×M像素的色彩值。处理电路可确定减去结果的绝对值,并且可根据绝对值确定最大值。具有更接近0的最大值指示第一和第二部分的重叠图像内容之间存在高相似度。如果最大值小于阈值(例如,预先存储或确定的阈值),那么GPU 18可确定第一和第二部分正确对准(例如,重叠图像内容之间存在相似度)。
然而,如果重叠图像内容之间不存在相似度,那么CPU 16和GPU 18可重复产生图像内容的一部分的过程,但是是利用调整后的纹理坐标。例如,CPU 16可利用不同纹理图来确定色彩纹理的坐标。除了纹理图元可能已扭曲或移位,或纹理图元的一部分可能改变外,此不同纹理图可类似于原始纹理图。GPU 18可使用来自这一不同纹理图的纹理坐标将第一或第二圆形图像中的一个映射到3D网状模型上,且GPU 18可渲染图像内容的所得部分。GPU18可确定这一所得部分和另一部分之间的相似度,以确定它们的重叠图像内容之间是否存在相似度。CPU 16和GPU 18可重复这些操作,直到重叠图像内容之间的相似度大于阈值为止。
CPU 16可通过选择不同纹理图来调整用于产生第一和第二部分的纹理图元的纹理坐标,或可通过在运行中计算新纹理坐标来调整纹理坐标。例如,CPU 16可改变纹理图中的图元的角度以调整纹理坐标,并且确定这些调整后的图元的纹理坐标。
确定第一和第二部分中的重叠图像内容之间的相似度可存在其它方式,且上文是确定相似度的一个实例方式。并且,上文提供用于如何调整色彩纹理中的纹理图元的纹理坐标的一个实例,且用于调整色彩纹理中的纹理图元的纹理坐标的其它方式是可能的。
图4是进一步详细地说明图3的计算装置10的CPU 16、GPU 18和存储器30的框图。如图4中所示出,CPU 16以通信方式耦合到GPU 18和存储器30,且GPU 18以通信方式耦合到CPU 16和存储器30。在一些实例中,GPU 18可集成到具有CPU 16的母板上。在额外实例中,GPU 18可实施于图形卡上,所述图形卡安装于包含CPU 16的母板的端口中。在其它实例中,GPU 18可并入在经配置以与CPU 16交互操作的外围装置内。在额外实例中,GPU 18可与CPU16位于同一微芯片上,从而形成系统芯片(SoC)。
CPU 16经配置以执行应用程序34、图形API 36和GPU驱动程序38,及操作系统39。GPU 18包含控制器40、着色器核心42和一或多个固定功能单元44。
软件应用程序34可包含使图形内容显示的一或多个指令或使非图形任务(例如,通用计算任务)在GPU 18上执行的一或多个指令中的至少一些。作为一实例,软件应用程序34可使得CPU 16让相机处理器14和镜头12A和12B捕获360度视频或图像,并且让GPU 18渲染360度视频或图像以供显示。软件应用程序34可向图形API 36发出指令。图形API 36可为将从软件应用程序34接收到的指令转化成可由GPU驱动程序38消耗的格式的运行时服务。在一些实例中,图形API 36和GPU驱动程序38可以是相同软件服务的一部分。
GPU驱动程序38通过图形API 36从软件应用程序34接收指令,并控制GPU 18的操作来服务指令。例如,GPU驱动程序38可制定一或多个命令流、将所述命令流放置到存储器30中,并指示GPU 18执行命令流。GPU驱动程序38可将所述命令流放置到存储器30中,并通过操作系统39(例如,通过一或多个系统调用)与GPU 18通信。
GPU 18的控制器40经配置以获取存储在命令流中的命令,并调度命令以在着色器核心42和一或多个固定功能单元44上执行。控制器40可调度来自命令流的命令以在一或多个固定功能单元44或着色器核心42和一或多个固定功能单元44的子集上执行。控制器40可为GPU 18的硬件、固定功能电路,可为用于执行软件或固件的GPU 18的可编程电路,或者可为这两者的组合。
着色器核心42包含可编程电路(例如,软件在其上执行的处理核心)。一或多个固定功能单元44包含固定功能电路,所述固定功能电路经配置以用最小功能灵活性执行有限操作。着色器核心42和一或多个固定功能单元44共同形成经配置以执行图形处理的图形管线。
着色器核心42可经配置以执行从CPU 16下载到GPU 18上的一或多个着色器程序。在一些实例中,着色器程序可为以高级着色语言(例如,OpenGL着色语言(GLSL)、高级着色语言(HLSL)、用于图形的C(Cg)着色语言等)写入的程序的编译版本。在一些实例中,着色器核心42可包含经配置以并行操作的多个处理单元(例如,SIMD管线)。着色器核心42可具有存储着色器程序指令的程序存储器和指示正在执行的程序存储器中的当前指令或将被获取的下一指令的执行状态寄存器(例如,程序计数器寄存器)。在着色器核心42上执行的着色器程序的实例包含例如顶点着色器、像素着色器(也被称作片段着色器)、几何结构着色器、外壳着色器、域着色器、计算着色器和/或统一着色器。
固定功能单元44可包含进行硬接线以执行某些功能的硬件。尽管固定功能硬件可通过一或多个控制信号配置(例如)以执行不同功能,但是固定功能硬件通常不包含能够接收用户编译的程序的程序存储器。在一些实例中,一或多个固定功能单元44可包含例如执行光栅操作(例如,深度测试、交叉测试、α混合等)的处理单元。
CPU 16的GPU驱动程序38可经配置以将命令流写入到存储器30,且GPU 18的控制器40可经配置以从存储器30读取命令流的一或多个命令。在一些实例中,命令流中的一个或两个可作为环形缓冲器存储在存储器30中。环形缓冲器可为利用圆形编址方案的缓冲器,其中CPU 16和GPU 18保持与数据写入到环形缓冲器和从环形缓冲器读取数据相关联的同步状态变量。例如,如果第一命令流是环形缓冲器,那么CPU 16和GPU 18中的每一个可存储指示将写入到环形缓冲器的下一地址的写入指针以及指示将从环形缓冲器读取的下一地址的读取指针。
当CPU 16将新命令写入到环形缓冲器时,CPU 16可更新CPU 16中的写入指针,并指示GPU 18更新GPU 18中的写入指针。类似地,当GPU 18从环形缓冲器读取新命令时,GPU18可更新GPU 18中的读取指针,并指示CPU 16更新CPU 16中的读取指针。其它同步机制是可能的。当读取和/或写入指针到达在针对环形缓冲器分配的地址范围内的最高地址时,读取和/或写入指针可绕回到最低地址以实施圆形编址方案。
现在相对于图4描述实例GPU驱动程序38和实例GPU控制器40的实例操作。GPU驱动程序38从软件应用程序34接收指定将通过GPU 18执行的图形操作和/或通用计算操作的一或多个指令。GPU驱动程序38将输出命令流放置到可由GPU控制器40存取的存储器30中。GPU驱动程序38通知GPU控制器40对应于软件应用程序34的命令流可用于处理。例如,GPU驱动程序38可将指示命令流已准备好执行的一或多个值写入到GPU寄存器(例如,通过GPU 18轮询的GPU硬件寄存器和/或通过GPU 18轮询的GPU存储器映射寄存器)。
在通知命令流已准备好执行后,GPU 18的控制器40可确定当前资源在GPU 18上是否可用于开始执行命令流。如果资源可用,那么控制器40开始调度命令流中的命令。
作为图形处理的一部分,CPU 16可将某些图形处理任务分担到GPU 18。举例来说,应用程序34可产生经互连以形成图形对象的图元的多个顶点的属性的属性数据。应用程序34可将属性数据存储在存储器30中的顶点缓冲器(例如,顶点坐标缓冲器46)中。GPU驱动程序38可指示控制器40获取顶点的属性的属性数据以供处理,从而产生用于显示的图形数据。
作为一实例操作,应用程序34可使镜头12A和12B捕获图像内容,并使相机处理器14产生且在存储器30中存储第一圆形图像48和第二圆形图像50。应用程序34通过图形API36和GPU驱动程序38可产生指示GPU 18执行本公开中所描述的实例技术的命令流。
例如,应用程序34可产生3D网状模型,并在存储器30中的顶点坐标缓冲器46中存储3D网状模型的图元的顶点坐标。在一些实例中,3D网状模型的图元的顶点坐标可预先存储在顶点坐标缓冲器46中。在下文描述产生顶点坐标的一个实例方式。类似地,应用程序34可限定并在纹理坐标缓冲器52中存储色彩纹理图的纹理坐标,或色彩纹理图的纹理坐标可预先存储在纹理坐标缓冲器52中。在下文描述产生纹理坐标的一个实例方式。
为了执行纹理映射,CPU 16可向GPU 18指示哪些纹理坐标对应于3D网状模型的哪些顶点坐标。指示此类对应关系的一个实例方式是通过在着色器核心42的电路上执行的顶点着色器。顶点着色器的功能是对3D网状模型的顶点执行处理。为了执行此类处理,应用程序34通过图形API 36和GPU驱动程序38指示控制器40从顶点坐标缓冲器46获取多批顶点坐标(例如,3D网状模型的图元的顶点坐标)。此外,应用程序34通过图形API 36和GPU驱动程序38可指示控制器40从纹理坐标缓冲器52获取对应于从顶点坐标缓冲器46获取到的顶点坐标的纹理坐标。
控制器40可向顶点缓冲器提供3D网状模型的图元的顶点坐标的x、y、z坐标和对应色彩纹理图元的纹理坐标的s、t坐标作为输入以供处理。此外,应用程序34通过图形API 36和GPU驱动程序38指示纹理硬件电路(其是固定功能单元44的实例)获取位于第一圆形图像48内的纹理坐标处的纹理图元,并将所述纹理图元存储在本地存储器20(在图3中说明本地存储器20)中。
应用程序34通过图形API 36和GPU驱动程序38可向纹理硬件电路发出指示纹理硬件电路将纹理图元覆叠到3D网状模型图元上的命令。纹理硬件电路可伸展纹理图元或以其它方式调整纹理图元的大小(如应用程序34所指示),使得纹理图元在3D网状模型的图元内拟合(例如,通过内插、过滤和用于缩放纹理图元的其它数学操作)。纹理硬件电路可基于纹理图元的顶点属性而向3D网状模型的顶点指派顶点属性(例如,色彩和不透明度值)。
GPU 18的固定功能单元44可使来自顶点着色器的输出光栅化,并向像素着色器输出光栅化图元。应用程序34通过图形API 36和GPU驱动程序38可使GPU 18的控制器40在着色器核心42的电路上执行像素着色器(也称为片段着色器)。像素着色器可将来自纹理图元的像素值指派到光栅化图元中的对应像素以渲染图像内容。
CPU 16和GPU 18可使用第一圆形图像48针对所有3D网状模型的图元和色彩纹理图元重复这些步骤,以产生图像内容的第一经渲染部分。CPU 16和GPU 18可重复这些步骤,但是是利用形成色彩纹理的第二圆形图像50,以产生图像内容的第二经渲染部分。
接着,应用程序34通过图形API和GPU驱动程序38可指示控制器40以使固定功能单元44对第一和第二经渲染部分进行α混合。例如,应用程序34可产生遮罩纹理54,并将遮罩纹理54存储在存储器30中,或遮罩纹理54可预先产生并存储在存储器30中。遮罩纹理54可包含用于指示第一和第二部分中的像素的不透明度的值。
控制器40可从应用程序34接收将遮罩纹理54用作另一轮纹理映射的一部分的指令,其中遮罩纹理54形成被GPU 18的纹理硬件电路映射到第一和第二部分的纹理。在一些实例中,应用程序34可使用存储在纹理坐标缓冲器52中用于纹理映射第一圆形图像48和第二圆形图像50的相同纹理坐标。例如,着色器核心42可执行其中第一和第二部分的顶点坐标连同遮罩纹理54的对应坐标作为输入的顶点着色器,并且GPU 18的纹理硬件电路可执行纹理映射,如上文所描述。
使用存储在纹理坐标缓冲器52中的第一圆形图像48和第二圆形图像50及遮罩纹理54的纹理坐标的纹理坐标的一个可能优势在于纹理映射可极其精确。遮罩纹理54指示不透明度。通过使用纹理坐标缓冲器52的纹理坐标,正确的不透明度值将指派给第一和第二部分中的正确像素。通过这种方式,可通过利用GPU 18的纹理硬件电路渲染每一顶点的色彩来产生极精确的遮罩。
在一些实例中,可能仅需要一个遮罩纹理54。例如,GPU 18的纹理硬件电路可使用遮罩纹理54来将不透明度值指派到第一部分,并使用遮罩纹理54来将不透明度值指派到第二部分。例如,遮罩纹理54的值可为0.0(对于黑色或透明)到1.0(对于白色或不透明),且中间值是0.5。遮罩纹理值被称为α。GPU 18可将遮罩纹理54纹理映射到第一部分或第二部分中的一个,且对于另一部分,遮罩纹理值可为1-α。举例来说,如上文所描述,如果针对第一部分中的像素,遮罩纹理54将α值限定为0.4,那么施加到第二部分中的像素的α值是0.6。
在指派不透明度值之后,固定功能单元44可通过停用深度剔除并使用α混合来混合这两个部分。渲染的结果是由显示器28显示的360度图像。
例如,渲染第一部分和第二部分的一部分是将第一部分和第二部分的像素的3D坐标转换成显示器28上的像素的2D坐标。例如,经渲染第一部分和经渲染第二部分都是像素被限定为二维形式的图像。在一些情况下,经渲染第一部分和经渲染第二部分可分别显示,但是它们的显示将不会出现360视频/图像,直到第一经渲染部分和第二经渲染部分被拼接在一起为止。
拼接第一经渲染部分和第二经渲染部分的一种方法是通过在重叠部分上进行α混合。例如,因为第一经渲染部分和第二经渲染部分中存在重叠图像内容,所以第一经渲染部分中存在多个像素具有与第二经渲染部分中的像素相同的<x,y>坐标(例如,在第一和第二参考部分中的每一个中存在重叠像素)。并且,作为基于遮罩纹理54的纹理映射的一部分,第一经渲染部分和第二经渲染部分中的每一个像素被指派不透明度值(也称为α值)。
固定功能单元44的混合器电路可利用不透明度值来进行α混合。例如,不透明度值可指示像素在最终图像内容球中所占的百分比。混合器电路可基于第一部分和第二部分的不透明度(或α)值而缩放像素值,并基于像素值的缩放而向重叠部分中的像素指派新的值。GPU 18可输出重叠部分中的像素的这些新像素值作为图像内容球的像素值。
例如,对于第一和第二部分中不重叠的像素,它们相应的不透明度值将向混合器电路指示不需要混合(例如,所有份额都来自第一或第二部分中的一个且没有任何份额来自另一部分)。对于第一和第二部分中重叠的像素,它们相应的不透明度值指示像素在最终图像内容中所占的相应份额。因此,GPU 18可至少部分地通过基于重叠图像内容而借助混合器电路混合第一经渲染部分和第二经渲染部分来产生图像内容球。
作为一实例,假设第一部分被称为像素具有ColorA的A,且第二部分被称为像素具有ColorB的B。α混合的公式可为ColorFinal=(Ca*AlphaA+Cb*AlphaB(1-AlphaA))/(AlphaA+AlphaB(1-AlphaA)),其中ColorFinal是运算结果,Ca是第一部分中的像素色彩,Cb是第二部分中的像素色彩,AlphaA和AlphaB是第一和第二部分中的相应部分中的像素的α。如果假设所有色彩值与它们的α值进行自左乘(premultiply),那么ColorFinal=ColorA+ColorB*(1-AlphaA)。在本实例中,GPU 18可被视为执行A在B之上的合成(A over Bcompositing),且不一定是内(in)、外(out)、顶部(atop)和异或(xor)合成,但是此类额外合成可为可能的。
图5是说明二维(2D)纹理坐标的实例的概念图。举例来说,图5说明具有纹理坐标存储在纹理坐标缓冲器52中的纹理图元的纹理图56的一个实例。纹理坐标可配置成图5中说明的图案(例如,配置为纹理图56中的同心环的框)。纹理图56中的同心环的数目和图元的大小可进行预限定或在操作期间进行限定。并且,尽管图元被说明为方形,但是实例不限于此类图元。
例如,作为帮助理解的说明性实例,图5说明纹理图元58。纹理图元58是四边形,且在本实例中为方形。纹理图元包含四个顶点:顶点60A到60D。纹理坐标缓冲器52可存储纹理图元58的顶点60A到60D的顶点坐标。纹理坐标缓冲器52可以类似方式存储纹理图56的其它图元(如图元58)的顶点坐标。在本实例中,因为纹理图56包含多个同心圆,所以图元58的顶点60A到60D的顶点坐标可以极坐标限定。
在一些实例中,除了提供第一圆形图像48和第二圆形图像50之外,相机处理器14还可输出指示镜头12A和12B的相机图像参数的信息。例如,相机图像参数可指示由镜头12A和12B捕获的图像内容的量(例如,200度的图像内容)。CPU 16可利用相机图像参数来确定所说明的纹理图56(例如,顶点60A到60D及纹理图56的所有其它顶点的位置)。作为一实例,存储器30或CPU 16的本地存储器可存储查找表,所述查找表指示不同类型的镜头捕获了多少图像内容及图像的大小。例如,查找表包含镜头类型信息和图像内容的度数,及每一镜头类型所捕获的图像的大小。CPU 16可比较指示相机图像参数的信息与指示所捕获的图像内容的度数和图像大小的信息。
不是在每个实例中都需要存取相机图像参数。在其中对相机图像参数的存取不可用的实例中,CPU 16可利用默认纹理图56。因此,本公开中描述的技术不应被视为限于其中使用相机图像参数的实例。
在一些实例中,并不是由CPU 16动态地确定纹理图56(例如,例如在所有相机图像参数都不可用的情况下),而是可预先产生并在存储器30中预先存储各种不同的纹理图。例如,通过反复试验确定哪些纹理图将产生合乎不同镜头类型需要的图像质量,用户可以在查找表中存储与不同镜头类型相关联的存储器30中的不同纹理图。CPU 16可利用此查找表来确定使用哪一纹理图。在一些实例中,相机图像参数都不可用,对于此类情况,CPU 16可利用默认查找表。
在本公开中,纹理图56的产生可受应用程序34或在CPU 16上执行的某一其它应用程序控制。举例来说,操作系统39可响应于用户执行应用程序34而执行确定纹理图56的应用程序。接着,所述其它应用程序可向应用程序34提供指示将使用哪一纹理图的信息。作为另一实例,所述其它应用程序可向应用程序34提供纹理坐标作为输入,并且反过来,应用程序34包含纹理坐标作为将执行顶点着色器的指令的输入。
图6是说明三维(3D)几何结构的概念图。例如,图6说明3D网状模型62的实例。3D网状模型62具有半胶囊形状(例如,在一个末端上具有圆形且在另一末端上具有尖端的大体半胶囊形状)。在实例技术中,CPU 16使用极坐标产生3D网状模型62的坐标。顶点XYZ位置可配置成图6中所说明的模式,并使用球坐标进行计算。例如,3D网状模型62包含纵向轴线64,所述纵向轴线64从3D网状模型62的半胶囊形状的一个末端的中心点66延伸到3D网状模型62的半胶囊形状的尖端68。3D网状模型62的多个环中的多个图元围绕3D网状模型62的半胶囊形状安置(例如,矩形图元围绕3D网状模型62形成环)。在一些实例中,3D网状模型62的第一环的宽度可小于3D网状模型62的第二环的宽度。
图7是说明图5的2D纹理图56的放大视图70的概念图。具体地说,图7说明图5的同心环72A到72E。在纹理图56中存在比同心环72A到72E大的同心环,且在一些实例中,可存在更少的同心环。因此,仅出于论述的目的,提供同心环72A到72E的论述。
在图7中说明的实例中,如放大视图70中所说明,纹理图56的末尾“环”是环72A。在所说明实例中,环72A的宽度小于环72B到72E的宽度。环72A到72E包含布置成圆形的多个纹理图元(类似于图元58),且多个环可同心排序。纹理坐标可为这些环的顶点(如顶点60A到60D)。
在一些实例中,环72A到72E中的每一个(例如,纹理图56中的所有环)包含具有相同宽度的环。然而,如上文所提到,在一些实例中,环72A具有相对于其它环较短的宽度。
除末尾环72A外的所有环72A到72E不必为相同长度,且在一些实例中,有可能末尾环72A不一定没有所有其它环72B到72E宽。例如,在图7的实例中的环72B到72D中的一个可为具有最小宽度的环,而不是环72A。环72A可保持在相对较小宽度。然而,可能不必在所有实例中都将环72A保持在相对较小宽度。并且,一或多个末尾环(例如,外环)可小于前面的长度(例如,72A小于72B到72E;72B小于72C到72E;72C小于72D和72E,以此类推)。
图8是说明图像内容74的直观图。图像内容74是鱼眼镜头12A或12B中的一个将产生的圆形图像的一部分。例如,图像内容74是鱼眼镜头12A或12B中的一个将产生的圆形图像的放大版。如上文所描述,在圆形图像的边缘处会相对于圆形图像的其它部分有所压缩。举例来说,压缩部分76包含相对于图像内容74的其它部分出现更大压缩的图像内容74的内容。本公开中所描述的实例技术考虑到了压缩部分76。举例来说,作为纹理映射的一部分,GPU 18将压缩部分76伸展到图像内容不再被压缩。
在图7中说明的实例中,给定相机镜头的200度视场可缩短到比其它者短23%(例如,环72A的宽度比环72B到72E的宽度小23%)。这些点(例如,对应于纹理的图像像素)的3D位置保留它们的3D间距,并且可不进行压缩。这使得压缩区域伸展,从而补偿压缩部分76。
例如,在由镜头12A和12B捕获的图像中,图像的边缘被压缩(例如,如由压缩部分76说明)。在360度视频中,经压缩图像内容可对观看者的体验产生不利影响。通过减小外环的大小,可相对于其它环减少外环中的像素数目。然而,处于具有经减小大小的环内的这些点的位置保留它们的间距。当渲染这些点时,渲染使所述点伸展开并解决由捕获图像的方式产生的压缩。
图9是说明纹理坐标和图像像素之间的关系的直观图。举例来说,图9说明其中纹理图56的纹理坐标在图像部分74的顶部上的图8的图像部分74。如上文所描述,纹理坐标(例如,顶点60A到60D的纹理坐标)限定纹理图元,其中纹理图元是圆形图像的图元。图9的图像部分74可被视为说明第一圆形图像48或第二圆形图像50中的一个,且由在图像部分74的顶部上的纹理图56形成的纹理图元是GPU 18的纹理硬件电路覆叠在3D网状模型上以产生图像内容球的第一部分或第二部分的纹理图元。
在图5到9中,对于顶点位置,网状模型(例如,在各部分顶部上示出的网)通过按以下方式使用球坐标程序性地创建。例如,CPU 16可实施实例技术以产生纹理图和3D网状模型。球形几何结构由多个平行环组成。通过在3D空间中创建形成圆形的一组坐标点来创建这些平行环中的每一个。每一圆形含有相同数目个坐标点,也被称为顶点。通过下式针对半径为1的单位半球体来计算每一顶点的X、Y、Z位置:
x=cos(方位角)*sin(高低角)*半径;
y=sin(方位角)*sin(高低角)*半径;
z=cos(方位角)*半径;
其中半径=1,且
其中方位角在0到360度的范围内,且角度以任何所要但恒定的增量(例如,3度)递增,且
其中高低角在0到90度的范围内,且角度以任何所要但恒定的增量(例如,4.5度)递增。
具有相同最大半径的一或多个额外环可通过使高低角保持在90度并产生额外顶点值来创建环形几何结构而创建。
每一对应顶点的2D纹理坐标(表达为U、V)通过下式产生:
U=cos(方位角)*半径*比例;
V=sin(方位角)*半径*比例;
其中方位角在0到360度的范围内,且角度以任何所要但恒定的增量(例如,3度)递增,且
半径在0.0到1.0的范围内,且以恒定值递增,这取决于所要的环数目。
增量值通过1除以环数目来计算。对于除末尾环以外的所有纹理坐标环,都可使用此恒定值。对于末尾环,增量以特定因数减少半径。此“末尾半径增量”针对给定鱼眼镜头以视觉方式手动地确定,且取决于鱼眼镜头的视场。对于200度的视场镜头,已发现适当的值是约0.77。此值可用于基于已知视场而自动确定不同镜头的适当值。
比例(Scale)用于调整半径。半径可能需要减小以免使用可能非所要的像素。非所要像素可能是因为极度压缩、缺少细节、色像差、相机主体的阻挡或其它原因而出现。已手动发现200度视场镜头的这一比例因子是0.954。其它值可针对其它镜头配置手动确定,并且可用于推知任一镜头的值。值可存储在查找表中并基于镜头12A和12B的参数而选择,可进行预先产生和存储,或同样可由用户选择。
当在上文已经计算出值U、V时,值可在-1.0到+1.0的可能范围内。值经(例如)下式归一化成在0.到1.0域的范围内:
Normalized_U=(U/2.0)+0.5
Normalized_V=(V/2.0)+0.5
作为二级调整,可在这一计算阶段期间施加均一或非均一比例,类似于在先前阶段中施加的“比例(Scale)”。这可描述为
Normalized_U=((U/2.0)*adjust_U)+0.5
Normalized_V=((V/2.0)*adjust_V)+0.5
其中adjust_U和adjust_V是浮点值,通常极接近于1.0,例如,1.0025。
以与计算纹理坐标相同的次序计算顶点位置;因此1对1对应关系可用。顶点的连接通过将给定环中的相邻顶点以及具有较大半径的下一邻近环中的2个对应顶点连接在一起来完成。这4个顶点在网状几何结构中形成多边形。
上文相对于手动调整以产生类似于图5的纹理图的纹理图加以描述。然而,在一些实例中,CPU 16或某一其它装置可基于镜头12A和12B的相机参数产生纹理图。例如,CPU 16或某一其它装置可使用描述于斯卡拉穆扎(Scaramuzza)的“OCamCalib:Matlab的全向相机校准工具箱(OCamCalib:Omnidirectional Camera Calibration Toolbox for Matlab)”(其内容以全文引用的方式并入)中的黑白棋盘和过程来确定相较于图5中说明的手动调整的纹理图“经校准”的纹理图。
经校准纹理图可类似于图5中说明的手动调整的纹理图(例如,纹理图56)。然而,经校准纹理图的环的宽度可不同于图5的纹理图56中所说明的那些。例如,一些内环的宽度可宽于或窄于一些外环的宽度。作为一实例,在经校准纹理图中,外环可有可能宽于内环。大体来说,在经校准纹理图中,环的宽度可以变化(例如,一些可相对更窄,而一些可相对更宽)。在其中产生经校准纹理图的实例中,经校准纹理图的纹理坐标可存储在存储器30的纹理坐标缓冲器52中,且其使用类似于图5中说明的纹理图56。
图10是说明两个3D网状模型的概念图。例如,图10说明3D网状模型76A和3D网状模型76B。3D网状模型76A和76B可具有半胶囊形状。在一些实例中,3D网状模型76A中的第一环的宽度小于3D网状模型76A中的第二环的宽度。这一情况同样适用于3D网状模型76B。
3D网状模型76A可为GPU 18将第一圆形图像覆叠在其上以产生图像内容的第一部分的第一3D网状模型。例如,GPU 18可将来自其中纹理图元由纹理图56限定的第一圆形图像的纹理图元纹理映射到如由应用程序34限定的3D网状模型76A的图元上。3D网状模型76B可为GPU 18将第二圆形图像覆叠在其上以产生图像内容的第二部分的第二3D网状模型。举例来说,GPU 18可将来自其中纹理图元由纹理图56限定的第二圆形图像的纹理纹理映射到如由应用程序34限定的3D网状模型76B的图元上。在GPU 18构造两个3D网状模型76A和76B的图像内容的两个部分时,如图10中所说明,这两个部分可能并不恰好是形成360度图像的球体的一半。相反地,这两个部分中的每一个可超过一半球体(例如,半胶囊)。
图11是说明每一部分中的末尾两个环路(例如,由纹理坐标的末尾两个环形成)的相同半径的概念图。举例来说,图11说明3D网状模型76A的末尾环80A和3D网状模型76B的末尾环80B。末尾环80A包含边界81A和81B,且末尾环80B包含边界81C和81D。边界81A、81B、81C、和81D各自针对相应环路,使得末尾环80A和80B形成较薄柱体。在一些实例中,末尾环80A和80B可形成为使得边界81A和81B的半径相同,且边界81C和81D的半径相同。另外,在一些实例中,末尾环80A和80B可形成为使得边界81A、81B、81C和81D的半径全都相同。
举例来说,末尾环80A和80B的纹理坐标可形成为使得末尾环80A和80B的半径与在精确的一半处(例如,所述部分更像是胶囊)的环相同。精确的一半是指球体的中点,使得在精确的一半处的截面将是球体的半径。
图12是说明图11的部分之间的重叠的概念图。例如,GPU 18可拼接从3D网状模型76A产生的第一部分和从3D网状模型76B产生的第二部分以产生由图12的球体82表示的图像内容球。在产生球体82时,GPU 18可能已经渲染并混合了末尾环80A和80B。举例来说,图11的末尾环80A和80B可包含基本上相同的图像内容。因此,当拼接第一部分和第二部分时,末尾环80A或80B中的一个与末尾环80A或80B中的另一个重叠。在图12中说明的实例中,重叠区域84被说明为从3D网状模型76A产生的第一部分与从3D网状模型76B产生的第二部分重叠。如图12中所说明的重叠区域84可用于这两个鱼眼图像的混合和对准。
图13和14是说明用于渲染360度视频的遮罩的概念图。图14中说明的遮罩可与图13中说明的从不同定向示出的遮罩88相同。遮罩88(例如图13中说明的)可用于指派用于混合第一和第二经渲染部分的混合因子。GPU 18可通过渲染每顶点盘的色彩而产生极精确的遮罩,其中GPU 18可使用纹理硬件电路来执行此类操作。
例如,遮罩88的图元可与网状模型76A或76B(例如,在本实例中的3D网状模型76A)的图元相同。遮罩88的图元的位置与第一部分或第二部分的图元相同,因为第一部分或第二部分的图元由3D网状模型76A或76B的图元限定。因此,遮罩88可为用于极其准确的指派混合因子的遮罩。换句话说,用于渲染盘的顶点位置从同样形成盘的半球几何结构的纹理坐标获得它们的值。因为纹理坐标限定几何结构与像素之间的关系,所以此混合遮罩将极为准确。
在图13中说明的实例中,遮罩88包含两个遮罩区域:遮罩区域85和遮罩区域86。遮罩88的值在0(透明)到1(不透明)的范围内。在图13和14中说明的实例中,值1可被视为白色,且值0可被视为黑色。同样,图13和14并不是说明经渲染的实际图像,而是说明如果经渲染那么遮罩88将出现的样子。
如所说明,在遮罩区域85中,色彩是白色。这是因为第一部分或第二部分的图像内容都不会在遮罩区域85中混合(例如,图像内容是不透明的)。然而,在遮罩区域86中,色彩从白色逐渐变成灰色、暗灰色,然后变成黑色。在本实例中,在遮罩区域86中,当区域逐渐变成黑色时,与另一部分出现越来越多的混合(例如,在其中遮罩区域86的值是0.5的区域中,第一部分和第二部分中具有相等份额用于混合图像内容)。
如所提到,图14说明如果经渲染那么图13的遮罩88将出现的样子。如可见,图14的中间说明其中存在极少混合的遮罩区域85。在更接近边缘处,遮罩区域85变成其中存在更大混合的遮罩区域86,如色彩从白色变成灰色色度,接着变成黑色所指示。
因此,在相对于图5到9所说明的实例技术中,可使用极坐标来产生3D多边形网状模型的纹理坐标。纹理坐标可布置为同心环,其中每个环包含多个矩形图元(作为一个实例)。图元的顶点形成纹理坐标。2D纹理坐标的末尾环可短于(例如,薄于)所有其它环;但这不是必须的。在一些实例中,一或多个外环可短于前面的环。在一些实例中,最外环可为最短的,紧接着的外环可大于最外环但短于后面的外环,针对多个环以此类推,且其余环的大小大致相同。
处理电路可混合这两个部分的视频内容以产生360度视频。在实例技术中,处理电路可使用重叠确定如何利用α混合来混合这两个部分以实现无缝混合。此外,因为纹理坐标中的末尾环具有相对于其余环较小的大小,所以为控制混合所依赖的区域量可相对较小,从而允许快速地处理和混合这两个部分的视频内容。
图15是说明根据本公开中所描述的一或多个实例技术的实例操作方法的流程图。CPU 16(例如,通过相机处理器14)可接收相机图像参数(100)。相机图像参数可为例如图像中的像素数目、图像的中心点和其它此类信息的信息。所述信息可在CPU 16存取的表格中获得。相机图像参数不必一直是可用的。
CPU 16可执行用于3D纹理映射的几何结构产生的操作(102)。例如,CPU 16可产生将供GPU 18用于纹理映射的纹理坐标、顶点位置和连接信息。作为一实例,CPU 16可产生第一3D网状模型的第一组顶点坐标,并产生第二3D网状模型的第二组顶点坐标。CPU 16。如上文所描述,产生第一组和第二组顶点坐标的一个实例方式是应用程序34限定3D网状模型的图元并在顶点坐标缓冲器46中存储顶点坐标。
除了3D网状模型之外,CPU 16还可产生纹理图并在纹理坐标缓冲器52中存储纹理图的纹理坐标。在一些实例中,纹理图和它的纹理图元的纹理坐标可预先存储在纹理坐标缓冲器52中。在其它实例中,CPU 16可利用相机图像参数信息(若可用)来确定纹理图元的纹理坐标以存储在纹理坐标缓冲器52中。纹理坐标可基于形成同心环图案的图元的顶点。在一些实例中,同心环中的一或多个外环的宽度小于同心环中的其它环的宽度。
CPU 16还可产生遮罩纹理54并在系统存储器30中存储遮罩纹理54(104)。例如,应用程序34或被操作系统39调用的另一应用程序可产生并在系统存储器30中存储遮罩纹理54。
GPU 18可纹理映射并渲染这两个部分(106)。例如,GPU 18可基于图5中说明的纹理坐标执行映射来自镜头12A和12B的图像的纹理映射,并且GPU 18可执行遮罩映射以产生指示当在这两个部分的重叠图像内容之间进行混合时将包含的视频内容的百分比的遮罩。
作为一实例,控制器40可从应用程序34(例如,通过图形API 36和GPU驱动程序38)接收多个指令中获取第一3D网状模型的第一组顶点坐标的指令。作为响应,控制器40可从顶点坐标缓冲器46接收第一组顶点坐标。
控制器40还可从应用程序34接收使着色器核心42执行顶点着色器的指令,并且作为响应,着色器核心42的可编程电路执行顶点着色器以处理第一组顶点坐标。处理第一组顶点坐标的指令的一部分包含第一网状模型的图元的坐标和来自纹理坐标缓冲器52的对应纹理图元的对应纹理坐标。此对应纹理图元可为第一圆形图像48内的图元。
例如,着色器核心42可执行通过应用程序34发出的使GPU 18基于从纹理坐标缓冲器52获取到的纹理坐标而载入来自第一圆形图像48的纹理图元的指令。纹理硬件电路(例如,固定功能单元44中的一个)可将载入的纹理图元覆叠在由第一组顶点坐标中的顶点坐标限定的第一3D网状模型的图元的顶部上。着色器核心42和纹理硬件电路可针对第一3D网状模型中的不同图元重复这些操作,以基于第一组顶点坐标覆叠第一图像(例如,第一圆形图像48)以产生图像内容的第一部分。
通过这种方式,着色器核心42可接收对应于第一3D网状模型的第一组顶点坐标的第一组纹理坐标,其中第一组纹理坐标是第一图像(例如,第一圆形图像48)内的像素的坐标。为了基于第一组顶点坐标而将第一图像覆叠在第一3D网状模型上,纹理硬件电路可基于第一组纹理坐标而将第一圆形图像48纹理映射在第一3D网状模型上。CPU 16可能已经基于形成同心环图案的图元的顶点产生了第一组纹理坐标,其中同心环中的一或多个外环的宽度小于同心环中的其它环的宽度。同心环中的一或多个外环中的图元的顶点到第一3D网状模型的第一组顶点坐标中的顶点的映射使第一图像(例如,第一圆形图像48)中对应于所述一或多个外环的图像内容伸展到第一3D网状模型上。
控制器40可从应用程序34(例如,通过图形API 36和GPU驱动程序38)接收多个指令中获取第二3D网状模型的第二组顶点坐标的指令。作为响应,控制器40可从顶点坐标缓冲器46接收第二组顶点坐标。
控制器40还可从应用程序34接收使着色器核心42执行顶点着色器的指令,并且作为响应,着色器核心42的可编程电路执行顶点着色器以处理第二组顶点坐标。处理第二组顶点坐标的指令的一部分包含第二网状模型的图元的坐标和来自纹理坐标缓冲器52的对应纹理图元的对应纹理坐标。此对应纹理图元可为第二圆形图像50内的图元。
例如,着色器核心42可执行通过应用程序34发出的使GPU 18基于从纹理坐标缓冲器52获取到的纹理坐标而载入来自第二圆形图像50的纹理图元的指令。纹理硬件电路(例如,固定功能单元44中的一个)可将载入的纹理图元覆叠在由第二组顶点坐标中的顶点坐标限定的第二3D网状模型的图元的顶部上。着色器核心42和纹理硬件电路可针对第二3D网状模型中的不同图元重复这些操作,以基于第二组顶点坐标覆叠第二图像(例如,第二圆形图像50)以产生图像内容的第二部分。
通过这种方式,着色器核心42可接收对应于第二3D网状模型的第二组顶点坐标的第二组纹理坐标,其中第二组纹理坐标是第二图像(例如,第二圆形图像50)内的像素的坐标。为了基于第二组顶点坐标而将第二图像覆叠在第二3D网状模型上,纹理硬件电路可基于第二组纹理坐标而将第二圆形图像50纹理映射在第二3D网状模型上。CPU 16可能已经基于形成同心环图案的图元的顶点产生了第二组纹理坐标,其中同心环中的一或多个外环的宽度小于同心环中的其它环的宽度。同心环中的一或多个外环中的图元的顶点到第二3D网状模型的第一组顶点坐标中的顶点的映射使第二图像(例如,第二圆形图像50)中对应于所述一或多个外环的图像内容伸展到第二3D网状模型上。
图像内容球包含360度可观看内容。第一圆形图像48和第二圆形图像50包含超过180度的图像内容。因此,第一部分和第二部分包含图像内容球的重叠图像内容。
GPU 18可渲染第一部分和第二部分以产生第一经渲染部分和第二经渲染部分。作为渲染的一部分,GPU 18可将3D像素坐标转换成2D屏幕坐标,并执行像素着色器以确定显示器28上的每一个像素的色彩值。基于重叠图像内容,产生图像内容球。
GPU 18可确定是否需要微调缝隙(108)。举例来说,微调缝隙可为质量控制。给定3D渲染相机视线方向,GPU 18可确定这两个部分是否均可见。如果是,那么GPU 18可确定重叠区域,所述重叠区域较窄。例如,重叠区域可为第一和第二经渲染部分中具有相同<x,y>坐标的像素。GPU 18可计算度量以确定两个重叠经渲染像素之间的相似度(例如,绝对差总和或绝对差最大值)。如果类似,那么GPU 18可确定,并在一些实例中输出“质量可接受”,否则输出“质量不可接受”。因为重叠区域较窄,所以计算时间可相对较快,可能是以实时速度计算。
如果质量是可接受的,那么GPU 18可执行α混合(112)(108为否)。例如,GPU 18的混合器电路可基于根据遮罩纹理54的纹理映射确定的相应不透明度值而缩放第一和第二参考部分的像素。GPU 18可接着将这两个像素值加在一起或执行某一其它混合技术以产生第一和第二经渲染部分中的重叠图像内容的经混合像素值。通过这种方式,GPU 18可至少部分地基于依据重叠图像内容来混合第一和第二经渲染部分,产生图像内容球。
然而,如果质量是不可接受的,那么可存在视觉缝隙。如果存在视觉缝隙,那么两个部分中的一或多个的纹理坐标可由CPU 16通过扭曲它们来进行调整(110)(108为是)。所述扭曲可由CPU 16通过利用使用纹理坐标的GPU/OpenGL渲染来完成。通过移动、旋转和/或缩放适当的纹理坐标,可进行调整。一旦进行了调整(通过在一定范围内进行猜测),图像就可被发送回去以确定是否微调以供进一步分析(106)。缝隙的移除不需要一定是完整的,因为混合遮罩隐藏了许多缝隙。几个像素的缝隙不太可能被人眼清楚地辨认出来,这取决于图像内容。
因此,在一些实例中,GPU 18(例如,GPU 18的ALU或EFU)可确定重叠图像内容之间的相似度。CPU 16可调整第一组纹理坐标或第二组纹理坐标中的至少一个。在此类实例中,响应于第一组纹理坐标进行调整,GPU 18可基于调整后的第一组纹理坐标而将第一图像纹理映射在第一3D网状模型上,或响应于第二组纹理坐标进行调整,GPU 18可基于调整后的第二组纹理坐标而将第二图像纹理映射在第二3D网状模型上。
在一些实例中,图15可被视为应用于运行时过程。例如,在制造时,可使用静态校准来确定如何调整纹理坐标。在此类实例中,在运行时可能不需要调整纹理坐标(例如,方框92)。
在一或多个实例技术中,本公开描述执行可能不需要在一开始将圆形鱼眼图像变换成扁平矩形图像以用于中间拼接的圆形鱼眼图像拼接。所述技术可以利用图形处理而不是视觉处理来实施,从而允许视频内容的快速产生。可创建具有考虑到鱼眼图像压缩的2D纹理坐标的3D几何结构。创建胶囊重叠区域实现了可使用GPU 18进行快速混合的明确限定的重叠区域。可创建混合圆形图像所需要的精确遮罩。实例技术可仅根据需要在可见经渲染区域中执行缝隙分析。实例技术可出于图像缝隙校正的目的而使用纹理坐标畸变来使圆形图像畸变。实例技术可通过利用GPU 18以及在先前预先计算大部分计算并将结果内嵌为渲染数据而产生高性能(大约每帧10ms)。
在一或多个实例中,所描述的功能可以用硬件、软件、固件或其任何组合实施。如果用软件实施,那么功能可作为一或多个指令或代码存储在计算机可读媒体上或通过计算机可读媒体传输,并由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于例如数据存储媒体的有形媒体。以此方式,计算机可读媒体大体上可对应于非暂时性的有形计算机可读存储媒体。数据存储媒体可以是任何可用媒体,所述媒体可由一或多个计算机或一或多个处理器存取以获取指令、代码和/或数据结构,从而实施本公开中描述的技术。计算机程序产品可包含计算机可读媒体。
借助于实例而非限制,此类计算机可读存储媒体可包含RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器,或可用以存储呈指令或数据结构形式的所要程序代码且可由计算机存取的任何其它媒体。应理解,计算机可读存储媒体及数据存储媒体并不包含载波、信号或其它暂时性媒体,而是替代地涉及非暂时性有形存储媒体。如本文所使用的磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘及蓝光光盘,其中磁盘通常是以磁性方式再现数据,而光盘是用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
指令可以由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指代上述结构或适用于实施本文中所描述的技术的任何其它结构中的任一者。此外,在一些方面中,本文中所描述的功能性可在经配置以用于编码和解码的专用硬件和/或软件模块内提供,或并入在组合编解码器中。并且,所述技术可完全实施于一或多个电路或逻辑元件中。
本发明的技术可实施于各种装置或设备中,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本公开中描述各种组件、模块或单元是为了强调经配置以执行所公开的技术的装置的功能方面,但未必需要由不同硬件单元实现。确切地说,如上文所描述,各种单元可结合合适的软件和/或固件组合在编解码器硬件单元中,或由互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
已描述了各种实例。这些和其它实例在所附权利要求书的范畴内。

Claims (30)

1.一种用于产生图像内容的方法,所述方法包括:
基于第一三维3D网状模型的第一组顶点坐标,将第一图像覆叠在所述第一3D网状模型上以产生图像内容的第一部分;
基于第二3D网状模型的第二组顶点坐标,将第二图像覆叠在所述第二3D网状模型上以产生所述图像内容的第二部分,其中所述第一部分和所述第二部分包含重叠图像内容;
分别渲染所述第一部分和所述第二部分以产生经渲染第一部分和经渲染第二部分;以及
至少部分地基于依据所述重叠图像内容来混合所述第一经渲染部分和所述第二经渲染部分,产生图像内容球。
2.根据权利要求1所述的方法,进一步包括:
接收所述第一3D网状模型的所述第一组顶点坐标;以及
接收所述第二3D网状模型的所述第二组顶点坐标,
其中所述第一3D网状模型和所述第二3D网状模型是同一3D网状模型。
3.根据权利要求1所述的方法,其中所述第一3D网状模型和所述第二3D网状模型各自包括围绕公共纵向轴线安置的多个环,其中每一个所述环包括多个图元。
4.根据权利要求3所述的方法,其中所述第一3D网状模型中的第一环的宽度小于所述第一3D网状模型中的第二环的宽度,并且其中所述第二3D网状模型中的第一环的宽度小于所述第二3D网状模型中的第二环的宽度。
5.根据权利要求3所述的方法,其中所述第一3D网状模型和所述第二3D网状模型各自具有半胶囊形状,其中所述纵向轴线包括从所述半胶囊的一个末端的中心点延伸到所述半胶囊的尖端的轴线,并且其中所述多个环的所述多个图元安置在所述半胶囊的所述末端和所述半胶囊的所述尖端之间。
6.根据权利要求5所述的方法,其中所述第一3D网状模型和所述第二3D网状模型各自具有半卵形的形状。
7.根据权利要求1所述的方法,其中所述图像内容球包含360度可观看内容,其中所述第一图像包括包含超过180度的所述图像内容的第一圆形图像,并且其中所述第二图像包括包含超过180度的所述图像内容的第二圆形图像。
8.根据权利要求1所述的方法,
其中基于所述第一组顶点坐标将所述第一图像覆叠在所述第一3D网状模型上包括基于对应于所述第一3D网状模型的所述第一组顶点坐标的第一组纹理坐标而将所述第一图像纹理映射在所述第一3D网状模型上,其中所述第一组纹理坐标是所述第一图像内的像素的坐标,且
其中基于所述第二组顶点坐标将所述第二图像覆叠在所述第二3D网状模型上包括基于对应于所述第二3D网状模型的所述第二组顶点坐标的第二组纹理坐标而将所述第二图像纹理映射在所述第二3D网状模型上,其中所述第二组纹理坐标是所述第二图像内的像素的坐标。
9.根据权利要求8所述的方法,进一步包括:
基于形成同心环图案的图元的顶点而产生所述第一组纹理坐标,其中所述同心环中的一或多个外环的宽度小于所述同心环中的其它环的宽度;以及
基于形成所述同心环图案的所述图元的所述顶点而产生所述第二组纹理坐标,
其中纹理映射所述第一图像包括将形成所述同心环图案的所述图元的所述顶点映射到所述第一3D网状模型的所述第一组顶点坐标,其中所述同心环中的所述一或多个外环中的图元的顶点到所述第一3D网状模型的所述第一组顶点坐标中的顶点的映射使所述第一图像中对应于所述一或多个外环的图像内容伸展到所述第一3D网状模型上,且
其中纹理映射所述第二图像包括将形成所述同心环图案的所述图元的所述顶点映射到所述第二3D网状模型的所述第二组顶点坐标,其中所述同心环中的所述一或多个外环中的图元的顶点到所述第二3D网状模型的所述第二组顶点坐标中的顶点的映射使所述第二图像中对应于所述一或多个外环的图像内容伸展到所述第二3D网状模型上。
10.根据权利要求8所述的方法,进一步包括:
基于所述第一组纹理坐标或所述第二组纹理坐标中的至少一个而产生遮罩,所述遮罩指示所述图像内容的所述第一部分和所述图像内容的所述第二部分的混合因子;
将所述遮罩纹理映射在所述第一部分和所述第二部分上以向所述第一部分和所述第二部分的像素指派混合因子,
其中混合所述图像内容的所述第一经渲染部分和所述图像内容的所述第二经渲染部分包括基于所述混合因子而混合所述图像内容的所述第一经渲染部分和所述图像内容的所述第二经渲染部分的所述重叠图像内容。
11.根据权利要求8所述的方法,进一步包括:
确定所述重叠图像内容之间的相似度;以及
调整所述第一组纹理坐标或所述第二组纹理坐标中的至少一个,
其中基于所述第一组纹理坐标而将所述第一图像纹理映射在所述第一3D网状模型上包括响应于所述第一组纹理坐标进行调整,基于调整后的第一组纹理坐标而将所述第一图像纹理映射在所述第一3D网状模型上,且
其中基于所述第二组纹理坐标而将所述第二图像纹理映射在所述第一3D网状模型上包括响应于所述第二组纹理坐标进行调整,基于调整后的第二组纹理坐标而将所述第二图像纹理映射在所述第二3D网状模型上。
12.根据权利要求1所述的方法,其中所述第一图像由第一鱼眼镜头捕获,且所述第二图像由第二鱼眼镜头捕获。
13.根据权利要求1所述的方法,进一步包括:
用鱼眼相机装置的第一鱼眼镜头捕获所述第一图像;以及
用所述鱼眼相机装置的第二鱼眼镜头捕获所述第二图像,
其中混合所述第一经渲染部分和所述第二经渲染部分包括用包含所述第一和第二鱼眼镜头的所述鱼眼相机装置混合所述第一经渲染部分和所述第二经渲染部分。
14.根据权利要求1所述的方法,进一步包括:
用处理装置从包含第一鱼眼镜头和第二鱼眼镜头的鱼眼相机装置接收所述第一图像和所述第二图像,其中所述第一鱼眼镜头捕获所述第一图像,且所述第二鱼眼镜头捕获所述第二图像,
其中混合所述第一经渲染部分和所述第二经渲染部分包括用所述处理装置混合所述第一经渲染部分和所述第二经渲染部分。
15.一种用于产生图像内容的装置,所述装置包括:
存储器,其经配置以存储第一图像和第二图像;以及
图形处理单元GPU,其包括固定功能或可编程电路中的至少一个,所述电路经配置以进行以下操作:
基于第一三维3D网状模型的第一组顶点坐标,将存储于所述存储器中的所述第一图像覆叠在所述第一3D网状模型上以产生图像内容的第一部分;
基于第二3D网状模型的第二组顶点坐标,将存储于所述存储器中的所述第二图像覆叠在所述第二3D网状模型上以产生所述图像内容的第二部分,其中所述第一部分和所述第二部分包含重叠图像内容;
分别渲染所述第一部分和所述第二部分以产生经渲染第一部分和经渲染第二部分;以及
至少部分地基于依据所述重叠图像内容来混合所述第一经渲染部分和所述第二经渲染部分,产生图像内容球。
16.根据权利要求15所述的装置,其中所述第一3D网状模型和所述第二3D网状模型各自包括围绕公共纵向轴线安置的多个环,其中每一个所述环包括多个图元。
17.根据权利要求16所述的装置,其中所述第一3D网状模型和所述第二3D网状模型各自具有半胶囊的形状,其中所述纵向轴线包括从所述半胶囊的一个末端的中心点延伸到所述半胶囊的尖端的轴线,并且其中所述多个环的所述多个图元安置在所述半胶囊的所述末端和所述半胶囊的所述尖端之间。
18.根据权利要求17所述的装置,其中所述第一3D网状模型和所述第二3D网状模型各自具有半卵形的形状。
19.根据权利要求15所述的装置,其中所述图像内容球包含360度可观看内容,其中所述第一图像包括包含超过180度的所述图像内容的第一圆形图像,并且其中所述第二图像包括包含超过180度的所述图像内容的第二圆形图像。
20.根据权利要求15所述的装置,
其中为了基于所述第一组顶点坐标将所述第一图像覆叠在所述第一3D网状模型上,所述GPU经配置以基于对应于所述第一3D网状模型的所述第一组顶点坐标的第一组纹理坐标而将所述第一图像纹理映射在所述第一3D网状模型上,其中所述第一组纹理坐标是所述第一图像内的像素的坐标,以及
其中为了基于所述第二组顶点坐标将所述第二图像覆叠在所述第二3D网状模型上,所述GPU经配置以基于对应于所述第二3D网状模型的所述第二组顶点坐标的第二组纹理坐标而将所述第二图像纹理映射在所述第二3D网状模型上,其中所述第二组纹理坐标是所述第二图像内的像素的坐标。
21.根据权利要求15所述的装置,进一步包括处理器,所述处理器包括固定功能或可编程电路中的至少一个,其中所述处理器或所述GPU中的至少一个经配置以进行以下操作:
基于形成同心环图案的图元的顶点而产生所述第一组纹理坐标,其中所述同心环中的一或多个外环的宽度小于所述同心环中的其它环的宽度;以及
基于形成所述同心环图案的所述图元的所述顶点而产生所述第二组纹理坐标,
其中为了纹理映射所述第一图像,所述GPU经配置以将形成所述同心环图案的所述图元的所述顶点映射到所述第一3D网状模型的所述第一组顶点坐标,其中所述同心环中的所述一或多个外环中的图元的顶点到所述第一3D网状模型的所述第一组顶点坐标中的顶点的映射使所述第一图像中对应于所述一或多个外环的图像内容伸展到所述第一3D网状模型上,且
其中为了纹理映射所述第二图像,所述GPU经配置以将形成所述同心环图案的所述图元的所述顶点映射到所述第二3D网状模型的所述第二组顶点坐标,其中所述同心环中的所述一或多个外环中的图元的顶点到所述第二3D网状模型的所述第二组顶点坐标中的顶点的映射使所述第二图像中对应于所述一或多个外环的图像内容伸展到所述第二3D网状模型上。
22.根据权利要求21所述的装置,
其中所述处理器或所述GPU中的至少一个经配置以基于所述第一组纹理坐标或所述第二组纹理坐标中的至少一个而产生遮罩,所述遮罩指示所述图像内容的所述第一部分和所述图像内容的所述第二部分的混合因子,
其中所述GPU经配置以将所述遮罩纹理映射在所述第一部分和所述第二部分上,以向所述第一部分和所述第二部分的像素指派混合因子,且
其中所述GPU经配置以基于所述混合因子,混合所述图像内容的所述第一经渲染部分和所述图像内容的所述第二经渲染部分的所述重叠图像内容。
23.根据权利要求21所述的装置,其中所述处理器或GPU中的至少一个经配置以进行以下操作:
确定所述重叠图像内容之间的相似度;以及
调整所述第一组纹理坐标或所述第二组纹理坐标中的至少一个,
其中为了基于所述第一组纹理坐标而将所述第一图像纹理映射在所述第一3D网状模型上,所述GPU经配置以响应于所述第一组纹理坐标进行调整,基于调整后的第一组纹理坐标而将所述第一图像纹理映射在所述第一3D网状模型上,且
其中为了基于所述第二组纹理坐标而将所述第二图像纹理映射在所述第一3D网状模型上,所述GPU经配置以响应于所述第二组纹理坐标进行调整,基于调整后的第二组纹理坐标而将所述第二图像纹理映射在所述第二3D网状模型上。
24.根据权利要求15所述的装置,其中所述装置包括相机装置,所述装置进一步包括:
第一鱼眼镜头,其经配置以捕获所述第一图像;以及
第二鱼眼镜头,其经配置以捕获所述第二图像。
25.根据权利要求15所述的装置,其中所述GPU经配置以从包含第一鱼眼镜头和第二鱼眼镜头的鱼眼相机装置接收所述第一图像和所述第二图像,其中所述第一鱼眼镜头捕获所述第一图像,且所述第二鱼眼镜头捕获所述第二图像。
26.根据权利要求15所述的装置,其中所述装置包括相机、计算机、移动装置、广播接收器装置或机顶盒中的一或多个。
27.一种用于产生图像内容的装置,所述装置包括:
用于基于第一三维3D网状模型的第一组顶点坐标而将第一图像覆叠在所述第一3D网状模型上以产生图像内容的第一部分的构件;
用于基于第二3D网状模型的第二组顶点坐标而将第二图像覆叠在所述第二3D网状模型上以产生所述图像内容的第二部分的构件,其中所述第一部分和所述第二部分包含重叠图像内容;
用于分别渲染所述第一部分和所述第二部分以产生经渲染第一部分和经渲染第二部分的构件;以及
用于至少部分地基于依据所述重叠图像内容来混合所述第一经渲染部分和所述第二经渲染部分而产生图像内容球的构件。
28.根据权利要求27所述的装置,
其中用于基于所述第一组顶点坐标将所述第一图像覆叠在所述第一3D网状模型上的所述构件包括用于基于对应于所述第一3D网状模型的所述第一组顶点坐标的第一组纹理坐标而将所述第一图像纹理映射在所述第一3D网状模型上的构件,其中所述第一组纹理坐标是所述第一图像内的像素的坐标,且
其中用于基于所述第二组顶点坐标将所述第二图像覆叠在所述第二3D网状模型上的所述构件包括用于基于对应于所述第二3D网状模型的所述第二组顶点坐标的第二组纹理坐标而将所述第二图像纹理映射在所述第二3D网状模型上的构件,其中所述第二组纹理坐标是所述第二图像内的像素的坐标。
29.一种包括指令的计算机可读存储媒体,所述指令在执行时使用于产生图像内容的装置的一或多个处理器进行以下操作:
基于第一三维3D网状模型的第一组顶点坐标,将第一图像覆叠在所述第一3D网状模型上以产生图像内容的第一部分;
基于第二3D网状模型的第二组顶点坐标,将第二图像覆叠在所述第二3D网状模型上以产生所述图像内容的第二部分,其中所述第一部分和所述第二部分包含重叠图像内容;
分别渲染所述第一部分和所述第二部分以产生经渲染第一部分和经渲染第二部分;以及
至少部分地基于依据所述重叠图像内容来混合所述第一经渲染部分和所述第二经渲染部分,产生图像内容球。
30.根据权利要求29所述的计算机可读存储媒体,
其中使所述一或多个处理器基于所述第一组顶点坐标将所述第一图像覆叠在所述第一3D网状模型上的所述指令包括使所述一或多个处理器基于对应于所述第一3D网状模型的所述第一组顶点坐标的第一组纹理坐标而将所述第一图像纹理映射在所述第一3D网状模型上的指令,其中所述第一组纹理坐标是所述第一图像内的像素的坐标,且
其中使所述一或多个处理器基于所述第二组顶点坐标将所述第二图像覆叠在所述第二3D网状模型上的所述指令包括使所述一或多个处理器基于对应于所述第二3D网状模型的所述第二组顶点坐标的第二组纹理坐标而将所述第二图像纹理映射在所述第二3D网状模型上的指令,其中所述第二组纹理坐标是所述第二图像内的像素的坐标。
CN201780021086.8A 2016-04-05 2017-01-24 球形视频的鱼眼图像拼接 Pending CN109074627A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662318610P 2016-04-05 2016-04-05
US62/318,610 2016-04-05
US15/270,650 2016-09-20
US15/270,650 US10102610B2 (en) 2016-04-05 2016-09-20 Dual fisheye images stitching for spherical video
PCT/US2017/014725 WO2017176345A1 (en) 2016-04-05 2017-01-24 Dual fisheye image stitching for spherical video

Publications (1)

Publication Number Publication Date
CN109074627A true CN109074627A (zh) 2018-12-21

Family

ID=59961148

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780021086.8A Pending CN109074627A (zh) 2016-04-05 2017-01-24 球形视频的鱼眼图像拼接

Country Status (5)

Country Link
US (1) US10102610B2 (zh)
EP (1) EP3440623A1 (zh)
CN (1) CN109074627A (zh)
BR (1) BR112018070336A2 (zh)
WO (1) WO2017176345A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9984436B1 (en) * 2016-03-04 2018-05-29 Scott Zhihao Chen Method and system for real-time equirectangular projection
US10275928B2 (en) 2016-04-05 2019-04-30 Qualcomm Incorporated Dual fisheye image stitching for spherical image content
KR102508663B1 (ko) * 2016-06-02 2023-03-13 삼성전자주식회사 구형 컨텐츠 편집 방법 및 이를 지원하는 전자 장치
GB2553315A (en) * 2016-09-01 2018-03-07 Nokia Technologies Oy Determining inter-view prediction areas
US20180095618A1 (en) * 2016-10-04 2018-04-05 Facebook, Inc. Controls and Interfaces for User Interactions in Virtual Spaces
CN107967665B (zh) * 2016-10-20 2021-07-13 株式会社理光 图像处理方法和图像处理装置
CN107993276B (zh) * 2016-10-25 2021-11-23 杭州海康威视数字技术股份有限公司 一种全景图像的生成方法及装置
JP6900609B2 (ja) * 2016-12-06 2021-07-07 エスゼット ディージェイアイ テクノロジー カンパニー リミテッドSz Dji Technology Co.,Ltd 広角画像を修正するシステム及び方法
US10732989B2 (en) * 2017-02-09 2020-08-04 Yanir NULMAN Method for managing data, imaging, and information computing in smart devices
CN109743892B (zh) * 2017-07-04 2020-10-13 腾讯科技(深圳)有限公司 虚拟现实内容的显示方法和装置
US11244505B2 (en) * 2017-08-31 2022-02-08 Sony Group Corporation Methods of constructing a printable 3D model, and related devices and computer program products
DE102018130770A1 (de) * 2017-12-13 2019-06-13 Apple Inc. Stereoskopische Wiedergabe von virtuellen 3D-Objekten
EP3741126A1 (en) 2018-03-02 2020-11-25 Huawei Technologies Co., Ltd. Apparatus and method for picture coding with selective loop-filtering
WO2019222059A1 (en) * 2018-05-16 2019-11-21 Gopro, Inc. Systems and methods for providing rotational motion correction
CN112313958B (zh) 2018-06-29 2024-05-03 华为技术有限公司 用于编码和解码视频信号的装置和方法
CN108921778B (zh) * 2018-07-06 2022-12-30 成都品果科技有限公司 一种星球效果图生成方法
CN111343446B (zh) * 2018-12-19 2021-11-02 杭州海康威视数字技术股份有限公司 视频图像翻转显示方法及装置
US10810700B2 (en) * 2019-03-05 2020-10-20 Aspeed Technology Inc. Method of adjusting texture coordinates based on control regions in a panoramic image
KR102620783B1 (ko) * 2019-03-10 2024-01-04 구글 엘엘씨 베이스볼 스티치를 갖는 360도 광각 카메라
JP7327478B2 (ja) * 2019-06-13 2023-08-16 日本電気株式会社 画像処理装置、画像処理方法及びプログラム
US11636796B2 (en) * 2020-12-03 2023-04-25 Black Sesame Technologies Inc. Subject segmentation for motion control and textured display

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1580986A2 (en) * 1995-06-23 2005-09-28 Interactive Pictures Corporation Method and apparatus for creating spherical images
US20060050074A1 (en) * 2004-09-09 2006-03-09 Silicon Optix Inc. System and method for representing a general two dimensional spatial transformation
CN1856991A (zh) * 2003-07-03 2006-11-01 物理光学公司 实时无失真成像的全景视频系统
CN1885155A (zh) * 2005-06-20 2006-12-27 钟明 数字球幕电影制作方法
WO2014043814A1 (en) * 2012-09-21 2014-03-27 Tamaggo Inc. Methods and apparatus for displaying and manipulating a panoramic image by tiles
CN104093600A (zh) * 2011-11-30 2014-10-08 株式会社伊美吉内柯斯特 用于生成车辆环境的三维图像的方法和装置
US20160050369A1 (en) * 2013-08-28 2016-02-18 Hirokazu Takenaka Image processing apparatus, image processing method, and image system

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6750860B1 (en) 1998-12-28 2004-06-15 Microsoft Corporation Rendering with concentric mosaics
AU1569201A (en) 1999-09-20 2001-04-24 Trustees Of Columbia University In The City Of New York, The Systems and methods for generating spherical mosaic images
US6643413B1 (en) 2000-03-27 2003-11-04 Microsoft Corporation Manifold mosaic hopping for image-based rendering
WO2002047028A2 (en) 2000-12-07 2002-06-13 Just Iced Cubed Inventions Inc. Systems and methods for registration of hemispheric images for panomaric viewing
JP4211292B2 (ja) 2002-06-03 2009-01-21 ソニー株式会社 画像処理装置および画像処理方法、プログラム並びにプログラム記録媒体
PL2113119T3 (pl) 2007-02-14 2014-05-30 Photint Venture Group Inc Sposób i układ do zszywania obrazów
US9007432B2 (en) 2010-12-16 2015-04-14 The Massachusetts Institute Of Technology Imaging systems and methods for immersive surveillance
US9998659B2 (en) 2012-03-01 2018-06-12 Geo Semiconductor Inc. Method and system for adaptive perspective correction of ultra wide-angle lens images
US10666860B2 (en) 2012-09-11 2020-05-26 Ricoh Company, Ltd. Image processor, image processing method and program, and imaging system
US20140085295A1 (en) * 2012-09-21 2014-03-27 Tamaggo Inc. Direct environmental mapping method and system
US8902322B2 (en) 2012-11-09 2014-12-02 Bubl Technology Inc. Systems and methods for generating spherical images
JP6044328B2 (ja) 2012-12-26 2016-12-14 株式会社リコー 画像処理システム、画像処理方法およびプログラム
ITRM20130063U1 (it) 2013-04-04 2014-10-05 Virtualmind Di Davide Angelelli Sonda per riprese endoscopiche e videoispezioni, denominata realworld360
TWI514320B (zh) 2013-09-11 2015-12-21 Univ Nat Yunlin Sci & Tech Panoramic image splicing method based on variable seam line
US20150131924A1 (en) 2013-11-13 2015-05-14 Microsoft Corporation Creation of Rectangular Images from Input Images
US9760768B2 (en) 2014-03-04 2017-09-12 Gopro, Inc. Generation of video from spherical content using edit maps
US10104361B2 (en) 2014-11-14 2018-10-16 Samsung Electronics Co., Ltd. Coding of 360 degree videos using region adaptive smoothing
KR102465969B1 (ko) 2015-06-23 2022-11-10 삼성전자주식회사 그래픽스 파이프라인을 수행하는 방법 및 장치
US9672586B2 (en) * 2015-10-22 2017-06-06 Texas Instruments Incorporated Image synthesis method with DSP and GPU
US10275928B2 (en) 2016-04-05 2019-04-30 Qualcomm Incorporated Dual fisheye image stitching for spherical image content

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1580986A2 (en) * 1995-06-23 2005-09-28 Interactive Pictures Corporation Method and apparatus for creating spherical images
CN1856991A (zh) * 2003-07-03 2006-11-01 物理光学公司 实时无失真成像的全景视频系统
US20060050074A1 (en) * 2004-09-09 2006-03-09 Silicon Optix Inc. System and method for representing a general two dimensional spatial transformation
CN1885155A (zh) * 2005-06-20 2006-12-27 钟明 数字球幕电影制作方法
CN104093600A (zh) * 2011-11-30 2014-10-08 株式会社伊美吉内柯斯特 用于生成车辆环境的三维图像的方法和装置
WO2014043814A1 (en) * 2012-09-21 2014-03-27 Tamaggo Inc. Methods and apparatus for displaying and manipulating a panoramic image by tiles
US20160050369A1 (en) * 2013-08-28 2016-02-18 Hirokazu Takenaka Image processing apparatus, image processing method, and image system

Also Published As

Publication number Publication date
US20170287107A1 (en) 2017-10-05
BR112018070336A2 (pt) 2019-01-29
EP3440623A1 (en) 2019-02-13
US10102610B2 (en) 2018-10-16
WO2017176345A1 (en) 2017-10-12

Similar Documents

Publication Publication Date Title
CN109074627A (zh) 球形视频的鱼眼图像拼接
US10621767B2 (en) Fisheye image stitching for movable cameras
US10275928B2 (en) Dual fisheye image stitching for spherical image content
KR102455696B1 (ko) 그래픽 처리 시스템
CN110383337B (zh) 可变速率着色
KR101923562B1 (ko) 가변 렌더링 및 래스터화 파라미터 하에서 가변 뷰포트에 대하여 오브젝트를 효율적으로 리렌더링하는 방법
CN109997167B (zh) 用于球面图像内容的定向图像拼接
TWI602148B (zh) 用於紋理映射至非正交網格的梯度調整
CN103946895B (zh) 基于平铺块的呈现中的镶嵌方法和设备
EP3121786B1 (en) Graphics pipeline method and apparatus
US10397481B2 (en) Stabilization and rolling shutter correction for omnidirectional image content
CN110036413A (zh) 平铺架构中的注视点渲染
KR101359011B1 (ko) 지구 환경 3차원 가시화 시스템
CN109413403A (zh) 用于头戴式显示器的单通道渲染
US11276150B2 (en) Environment map generation and hole filling
US20200118253A1 (en) Environment map generation and hole filling
CN106575429A (zh) 图形处理单元中的高阶滤波
US11995795B2 (en) Image processing device and method for operating same
US11727638B1 (en) Adaptive geometric smoothing
US20240233614A1 (en) Waveguide correction
US20240202892A1 (en) Combined tone and gamut mapping for augmented reality display
JP2004078994A (ja) 描画方法
Kooima et al. Real-time Digital Dome Rendering Techniques and Technologies
JP2013084155A (ja) 画像処理方法、画像処理プログラム、画像処理装置及び画像処理システム

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20181221

WD01 Invention patent application deemed withdrawn after publication