具体实施方式
为让本发明的目的、特征、和优点能更明显易懂,特举出下文实施例,并配合附图,作详细说明如下。注意的是,本章节所叙述的实施例目的在于说明本发明的实施方式而非用以限定本发明的保护范围,任何熟悉此项技术者,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视所附的权利要求所界定者为准。应理解下列实施例可经由软件、硬件、固件、或上述任意组合来实现。
本发明实施例提供一种纹理贴图的压缩方法及其相关图像数据处理系统与产生360度全景视频的方法,可以根据球体上不同纬度圆周的大小决定纹理贴图像素行上的压缩比,将现有技术中所使用的矩形纹理贴图压缩成非矩形纹理贴图(例如:近似椭圆状的纹理贴图),以达到球体上分辨率的各向同性,因而可有效解决现有技术中纹理贴图在球体模型上南北两极出现的冗余信息过多的问题。
图1为依据本发明实施例的图像数据处理系统的示意图。图像数据处理系统100可为能够处理图像或数据的桌上型计算机、一体成型(All-In-One,AIO)计算机、一般笔电、触控笔电、或一便携式装置或手持装置,例如是数字个人助理(PDA)、智能型手机(smartphone)、平板电脑(tablet)、移动电话、移动上网装置(Mobile Internet Device,MID)、笔记本电脑、车用计算机、数字相机、数字媒体播放器、游戏装置或任何类型的移动计算装置、或者图像数据处理系统100可以由多个设备来提供。然而,本领域熟习技术人员应可理解本发明并不限于此。于一些实施例中,图像数据处理系统100也可由多个芯片或单芯片来实现,例如,片上系统(SOC)或在移动设备中放置的移动处理器。举例来说,图像数据处理系统100包含处理器110、接口(interface)120、图形处理单元(graphics processingunit,GPU)130、储存单元140以及显示装置150。处理器110、图形处理单元130、储存单元140以及显示装置150可通过接口120而彼此耦接。举例来说,于一实施例中,接口120可为一系统总线,此系统总线耦接各种系统元件如图形处理单元130、储存单元140以及显示装置150等到处理器110。
处理器110可为中央处理单元(central processing unit,CPU)、通用处理器、微处理器(Micro-Control Unit,MCU)、数字信号处理器(Digital Signal Processor,DSP)、或任意等效电路等,用以提供数据分析、处理及运算的功能,但是本发明并非限于此。储存单元140可以包含易失性存储器(volatile memory)141、以及非易失性存储器142,用以储存相关数据,例如运算过程中的中间数据及执行结果数据等。易失性存储器141可为动态随机存取存储器(Dynamic Radom Access Memory,DRAM)、或静态随机存取存储器(SRAM),以及非易失性存储器142可为只读存储器(Read-Only Memory,ROM)、快闪存储器(Flashmemory)、硬盘、固态硬盘等。储存单元140也可用以储存可供处理器110与图形处理单元130执行的指令集和/或程序代码程序模块。一般而言,程序模块包含常序(routines)、程序(program)、物件(object)、元件(component)等。举例来说,在图像数据处理系统100上使用的应用的程序代码可预先储存于非易失性存储器142中。处理器110可自非易失性存储器142下载程序至易失性存储器141,并执行应用的程序代码。处理器110也可传输图形数据至图形处理单元130,以及图形处理单元130可确定将呈现在显示装置150上的图形数据。需要注意的是,易失性存储器141以及非易失性存储器142可描述为储存单元,并且可分别作为不同的储存单元。
显示装置150可为显示电路或被耦接以用于控制显示设备(未图示)的硬件。显示装置150可包含驱动电路、显示面板中的一个或组合,以及显示装置150可置于图像数据处理系统100中或之外。显示装置150可显示相关数据,例如是文字、图形、界面和/或各种信息如显示或呈现结果等。举例来说,显示装置150可用以呈现结果的画面,例如:液晶显示器(LCD)。应理解的是,于一些实施例中,显示装置150结合触碰感应装置(未图示)的屏幕。触控感应装置具有一触控表面,其包括至少一维度的传感器以侦测靠近或在触控表面上的一输入工具如手指或触控笔等在其表面上的接触及动作。因此,使用者可通过显示装置150来进行触控输入命令或信号。
于一些实施例中,图像数据处理系统100可还包括一图像输入接口(未图示),用以接收源图像,例如原始纹理贴图图像数据或视频数据。在一个实施例中,图像输入接口可具有图像撷取装置以用于撷取源图像。图像撷取装置可包含图像感测器,该图像感测器可为单一感测器,或包含多个独立的或分开的感测单元的感测阵列。举例来说,图像撷取装置可为具有鱼眼镜头(fisheye lens)的多个摄像头。在其他实施例中,图像输入接口可自外部图像撷取装置接收源图像。此图像输入接口可获得源图像(例如,鱼眼图)并提供源图像至处理器110。
在一些实施例中,处理器110可进一步包含编码器(未图示)以获得源图像并编码该源图像以在与当前视频标准(例如标准H.264(MPEG-4AVC)或标准H.265)兼容的任何合适的媒体格式中产生已编码的图像,例如,已编码的视频比特流。举例来说,编码器可以为标准图像/视频编码器或具有预扭曲(pre-warping)功能的图像/视频编码器,但是本发明并非以此为限。当编码器为具有预扭曲功能的图像/视频编码器时,编码器可进一步在编码期间对已编码的视频比特流执行重新映射(remapping)或扭曲操作,以移除原始源图像或视频数据中的失真。在一些实施例中,处理器110可进一步包含译码器(未图示)以解码已编码的视频比特流,以利用由已编码的视频比特流使用的视频标准(例如,标准H.264(MPEG-4AVC)或标准H.265)兼容的合适的媒体格式而获得源图像。
在一些实施例中,尽管未图示,图像数据处理系统100可包含其他功能单元,例如键盘、鼠标、触控板、或通讯单元(例如,以太网卡或芯片组)、无线网卡或芯片组、基频芯片组以及射频芯片组以用于蜂窝通讯。
处理器110可从储存单元140中载入并执行指令集和/或程序代码,以控制储存单元140与显示装置150的运作来执行本发明所述的纹理贴图的压缩方法。上述方法包括以下步骤:接收用于一球体模型的一原始纹理贴图,其中原始纹理贴图为一矩形图像且包括多个像素行且每一像素行于球体模型上有一对应球体位置;依据每一像素行的对应球体位置,决定每一像素行的一压缩比;以及以各像素行的各压缩比,压缩各像素行,以产生一非矩形的一压缩纹理贴图,其中压缩纹理贴图被映射至球体模型以产生360度全景视频,其细节将于后进行说明。
具体来说,每个原始纹理贴图为一具有一高度以及一宽度的矩形图像且此原始纹理贴图可随后用以产生一360度全景视频,如图2所示。图2为依据本发明实施例的原始纹理贴图200的示意图。如图2所示,原始纹理贴图200可为宽高比为2:1的矩形图像,其为一个经过特殊处理后得到的适合应用于球体表面的纹理贴图且其宽度映射为球体的赤道周长,高度映射为球体模型上连接南北两极经线的长度。每个原始纹理贴图可以以相同的方式划分。此外,原始纹理贴图图像可以储存在存储器单元140中,例如,储存在易失性存储器141中。易失性存储器141可储存原始纹理贴图200的每个像素的相应信息,例如:各像素的像素值及此像素在哪一像素行与在此像素行的哪一对应像素位置等信息。
在此实施例的纹理采样阶段,原始纹理贴图200可依纬度划分为多个像素行且每一像素行于球体模型上有一对应球体位置。例如,球体上纬度为0°的赤道在原始纹理贴图200的一第一像素行的宽度范围内采样颜色值,纬度为90°的南北极同样在原始纹理贴图200的第二像素行的宽度范围内进行颜色采样(即:0°纬度的圆周和90°纬度的圆周都映射到原始纹理贴图200的相同区域大小上)。因此,原始纹理贴图200被应用在球体模型上以产生360度全景视频时会有南北两极的冗余信息过多的问题。如前述,360度全景视频为一个水平和纵向都是360°的视频集合,观者的观看视角在中心位置上,是一种主动视角的观看,同时想看哪里就看哪里,这种观感是一种环境所包围的浸入式体验,可让观者体会到一种身临其境的感受。在此实施例中,原始纹理贴图被映射至一球体模型以产生该360度全景视频。因此,为解决前述问题,本公开的处理器110可以从易失性存储器141获得原始纹理贴图的每个像素的相应信息,并根据各像素球体上不同纬度圆周大小决定纹理贴图上各像素行的压缩比,以产生一压缩纹理贴图。藉此将矩形的原始贴图压缩成非矩形纹理贴图(例如:近似椭圆状的纹理贴图),以有效解决现有技术中纹理贴图在球体模型上南北两极出现的冗余信息过多的问题。
图3为依据本发明实施例的纹理贴图像素行至球体的映射示意图。如图3所示,假设原始纹理贴图上的宽度值为width,高度值为height且原始纹理贴图上的每个像素行(于图中表示为i)映射到球面上的纬线圆周上,其中,原始纹理贴图最中间像素行(于图中表示为j)映射到球体的赤道圆周上。接着,处理器110根据纬线圆周大小来确定压缩纹理贴图上各像素行的像素数,纬线圆周的大小与纬线的高度线性相关,如图3中的δ角的大小直接决定纬线圆周大小。因此,利用δ角的大小与原始纹理贴图的宽度width,处理器110可通过如下公式(1)、公式(2)以及公式(3)计算得到压缩纹理贴图第i行像素行的像素数PixelOfLine[i]:
δ=i*θ (2)
PixelOfLine[i]=min((sin(δ)+offset)*width,width) (3)
其中,width与height分别为原始纹理贴图的宽度和高度值,offset是为了保留南北极信息所设置的一偏移量,此偏移量的取值范围在0~1之间(例如:设置为0.05),偏移量的取值决定着压缩效果。
接着,处理器110利用公式(3)所计算得到的压缩纹理贴图第i行像素行的像素数PixelOfLine[i],可以分别通过以下公式(4)与公式(5)计算得到压缩纹理贴图第i行像素行中有效像素储存的开始索引值StartPixel[i]和结束索引值EndPixel[i]:
EndPixel[i]=StartPixel[i]+PixelOfLine[i]-1 (5)
其中,各像素行的开始索引值StartPixel[i]以及结束索引值EndPixel[i]分别表示该对应像素行中有效像素储存的开始像素位置以及结束像素位置。也就是说,开始索引值StartPixel[i]与结束索引值EndPixel[i]分别表示第i行像素行的有效像素采样范围。
之后,处理器110便可利用公式(3)所计算得到的压缩纹理贴图第i行像素行的像素数PixelOfLine[i]与宽度width,通过以下公式(6)计算得到各像素行的压缩比ratio[i]为:
图4显示本发明一实施例的纹理贴图压缩方法的流程图。请同时参照图1、图2、图3与图4。依据本发明实施例的纹理贴图压缩方法可以适用于一图像数据处理系统,举例来说,可适用于图1的图像数据处理系统100并由处理器110加以执行。
首先,如步骤S402,处理器110接收用于一球体模型的一原始纹理贴图,其中原始纹理贴图(如图2所示的原始纹理贴图200)为一矩形图像且包括多个像素行并且每一像素行于球体模型上有一对应球体位置。
接着,如步骤S404,处理器110依据每一像素行的对应球体位置,决定每一像素行的一压缩比。其中压缩比表示原始纹理贴图与压缩纹理贴图之间的像素数量差异,压缩比越大则两者的像素数量差异越大。具体来说,处理器110可通过前述公式(1)至公式(6)来决定压缩纹理贴图的各像素行的参数值,例如第i行像素行的像素数PixelOfLine[i]、原始纹理贴图第i行像素行中压缩纹理贴图第i行像素行中有效像素储存的开始索引值StartPixel[i]和结束索引值EndPixel[i],从而据此决定每一像素行的一压缩比ratio[i]。
于一些实施例中,原始纹理贴图可具有一高度值与一宽度值,球体模型可沿纬线方向分为多个纬线圆周,其中,同一像素行的所有像素对应于这些纬线圆周中的其中一纬线圆周的位置。其中,处理器110还可对各像素行,依据各像素行的对应球体位置,由这些纬线圆周中决定一对应纬线圆周,依据高度值、宽度值以及各像素行的对应纬线圆周的一圆周长,决定一像素数,以及依据各像素行的像素数以及宽度值,决定各像素行的压缩比,以便依据每一像素行的对应球体位置,决定每一像素行的压缩比,其中各像素行的压缩比反比于像素数。举例来说,处理器110可经由公式(1)至公式(3)决定压缩纹理贴图第i行像素行中的像素数PixelOfLine[i],经由公式(4)至公式(5)得到原始纹理贴图第i行像素行中有效像素储存的开始索引值StartPixel[i]和结束索引值EndPixel[i],再经由公式(6)决定像素行i的压缩比。
于一些实施例中,像素行中至少包括其对应球体位置靠近球体模型的两极的一第一像素行以及其对应球体位置远离球体模型的两极的一第二像素行且靠近球体模型的两极的第一像素行的压缩比大于其对应球体位置远离球体模型的两极该第二像素行的压缩比。举例来说,于一实施例中,球体上纬度为0°的赤道在原始纹理贴图200的第二像素行的宽度范围内采样颜色值,纬度为90°的南北极会在原始纹理贴图200的第一像素行的少数宽度范围内进行颜色采样。
于一些实施例中,原始纹理贴图的各像素行于压缩纹理贴图中有一对应像素行,并且各像素行的开始索引值以及结束索引值分别表示对应像素行中有效像素储存的开始像素位置以及结束像素位置。于一些实施例中,其中原始纹理贴图的各像素行于压缩纹理贴图中的对应像素行中包括多个像素以及各像素具有一像素位置,且处理器110还可依据各像素行的开始索引值以及结束索引值以及各像素的像素位置,决定对应像素行中各像素位置的像素值。
关于如何依据前述公式(1)至公式(6)来决定压缩纹理贴图的各像素行的参数值,例如第i行像素行的像素数PixelOfLine[i]、原始纹理贴图第i行像素行中压缩纹理贴图第i行像素行中有效像素储存的开始索引值StartPixel[i]和结束索引值EndPixel[i],从而据此决定每一像素行的压缩比ratio[i]的步骤可参阅前述公式(1)至公式(6)的产生各项参数的相关说明,其细节不在此赘述。
于决定每一像素行的压缩比之后,接着,如步骤S406,处理器110以各像素行的各压缩比,压缩各像素行,以产生一非矩形的一压缩纹理贴图,其中压缩纹理贴图映射至球体模型以产生360度全景视频。举例来说,假设原始纹理贴图具有N个像素行且第1像素行具有第一压缩比,第2像素行具有第二压缩比,第3像素行具有第三压缩比,则处理器110将依据第一压缩比与前述对应参数值采样原始纹理贴图的第一行像素行,以产生压缩纹理贴图的第1像素行。类似地,处理器110将分别依据第二压缩比与第三压缩比与对应参数值采样原始纹理贴图的第2像素行以及第3像素行,以产生压缩纹理贴图的第2像素行与第3像素行,依此类推,直到原始纹理贴图的N个像素行都依其对应压缩比采样后得到压缩纹理贴图的对应像素行,产生一非矩形的一压缩纹理贴图,最后新压缩纹理贴图映射至球体模型以产生360度全景视频。
具体来说,于决定用于压缩纹理贴图各像素行的对应参数值之后,处理器110从左到右依序遍历原始纹理贴图的各像素行的各像素位置,并依据各像素行的对应参数值及其所对应像素位置,决定第i行的第j个像素位置New[i][j]的像素值。其中,依据各像素行的对应参数值及其所对应像素位置,决定第i行的第j个像素位置New[i][j]的像素值的步骤包括:当j<StartPixel[i]或j>EndPixel[i]时,处理器110将New[i][j]的像素值设置为黑色像素值;以及当StartPixel[i]≤j≤EndPixel[i]时,处理器110还执行一分组程序,依据原始纹理贴图像素行的压缩比,将原始纹理贴图第i行分为多个群组并将New[i][j]的像素值设置为原始纹理贴图第i行中第(j-Start[i])个群组的指定像素位置的像素值。其中,群组的划分系根据该像素行的压缩比确定的,每ratio[i]个像素设置为一个群组,如图5所示。
图5为依据本发明实施例的原始纹理贴图分组的结果的示意图。如图5所示,假设原始纹理贴图的第i行像素行510有100个像素且其压缩比为5,则原始纹理贴图的第i行可以每5个像素为一群组,分成20个群组,而原始纹理贴图的第i行像素行510对应的压缩纹理贴图第i行像素行520可以根据分组结果产生,其中,压缩纹理贴图第i行520的像素位置StartPixel[i]的像素值设为第0个群组(如图所示的群组0)的第1个像素值,像素位置StartPixel[i]+1的像素值设为第1个群组(如图所示的群组1)的第1个像素值,像素位置StartPixel[i]+2的像素值设为第2个群组(如图所示的群组2)的第1个像素值,依此类推。其中,i、j、StartPixel[i]、EndPixel[i]以及(j-Start[i])均从0开始计数。详细的纹理贴图压缩方法细节参见图6。
图6显示本发明另一实施例的纹理贴图压缩方法的流程图。请同时参照图1、图2、图3与图6。依据本发明实施例的纹理贴图压缩方法可以适用于一图像数据处理系统,举例来说,可适用于图1的图像数据处理系统100并由处理器110加以执行。于此实施例中,处理器110可从左到右依序遍历各像素行的各像素位置,并依据原始纹理贴图各像素行的对应参数值及其所对应像素位置,决定压缩纹理贴图第i行的第j个像素位置New[i][j]的像素值。
首先,处理器110准备开始对原始纹理贴图进行压缩,于是如步骤S602,建立压缩纹理贴图New的储存空间New[height][width]。接着,如步骤S604,处理器110计算压缩纹理贴图各像素行的参数,这些参数至少包括像素数PixelOfLine[i]、开始索引值StartPixel[i]、以及结束索引值EndPixel[i]。于一些实施例中,各像素行i的像素数PixelOfLine[i]可依据各像素行的高度值、宽度值以及对应纬线圆周的一圆周长所决定,如公式(3)所示。于一些实施例中,开始索引值StartPixel[i]可依据各像素行的像素数以及宽度值决定,结束索引值EndPixel[i]可依据各像素行的像素数以及开始索引值,如公式(4)以及公式(5)所示。
于决定用于压缩纹理贴图各像素行的对应参数值之后,处理器110开始从左到右依序遍历各像素行的各像素位置,并依据各像素行的对应参数值及其所对应像素位置,决定第i行的第j个像素位置New[i][j]的像素值。如步骤S606,处理器110判断是否已遍历完各像素行i。若是,表示已经压缩完原始纹理贴图的所有像素,因此处理器110继续执行步骤S612,将压缩纹理图像New储存至一储存装置(如储存单元140)上。若尚未遍历完各像素行i(步骤S604的否),处理器110继续执行步骤S608,计算目前像素行i所对应的压缩比ratio[i],其中ratio[i]=width/PixelOfLine[i](如公式6所示),且每ratio[i]个像素组成一群组,如图5所示。
于算出目前像素行i所对应的压缩比ratio[i]之后,处理器110接着判断是否遍历完各像素位置j(步骤S610)。若目前像素行i的所有像素位置j均已遍历(步骤S610的是),表示目前像素行i已全部压缩处理完毕,因此处理器110回到步骤S606继续判断是否还有其他待处理的像素行i。若目前像素行i仍有至少一像素位置j尚未遍历(步骤S610的否),表示目前像素行i尚有未被压缩的像素位置j,处理器110接着执行步骤S614至S618,以依据各像素行i的开始索引值StartPixel[i]以及结束索引值EndPixel[i]以及各像素的像素位置j,决定对应像素行中各像素位置j的像素值。
如步骤S614,处理器110判断像素位置j的值是否小于开始索引值StartPixel[i]对应的像素位置值或像素位置j的值是否大于结束索引值EndPixel[i]对应的像素位置值。若判定符合步骤S614的条件(即:“j<StartPixel[i]||j>EndPixel[i]”)则处理器110执行步骤S618,若判定为不符合步骤S614的条件则处理器110执行步骤S616。于像素位置j的值小于开始索引值StartPixel[i]对应的像素位置值或像素位置j的值大于结束索引值EndPixel[i]时(即:j<StartPixel[i]或j>EndPixel[i])(步骤S614的否),如步骤S618,处理器110设定New[i][j]的像素值为黑色像素值。于像素位置j的值的值介于开始索引值StartPixel[i]与结束索引值EndPixel[i]之间时(步骤S614的否),如步骤S616,处理器110执行如图5所示的分组程序以依据开始索引值StartPixel[i]对应的像素行i的压缩比,将像素行分为多个群组并将New[i][j]的像素值设为这些群组中对应一者的指定像素位置的像素值,例如设定New[i][j]的像素值为原始纹理贴图第i行像素行中第j个群组的第一个像素值。重复步骤S614、S616以及S618,直到像素行i的所有像素位置j均已全部遍历完成。
举例来说,假设原始纹理贴图的宽度width为360且公式(3)所计算得到的压缩纹理贴图第i行像素行的像素数PixelOfLine[i]的值为180时,则可藉由公式(4)、公式(5)与公式(6),分别计算出其开始索引值StartPixel[i]为90、结束索引值EndPixel[i]为269、以及压缩比ratio[i]为2。也就是说,于此实施例中,原始纹理贴图第i行中的360个像素以2个像素为一组进行分组,分为180个群组,其中原始纹理贴图第i行对应的压缩纹理贴图第i行的数目为180个像素并且压缩纹理贴图第i行的开始索引值所表示的像素位置(即第90个像素位置)的像素值为原始纹理贴图第i行中的第0个群组的第一个像素值,第91个像素位置的像素值为原始纹理贴图第i行中的第1个群组的第一个像素值,第92个像素位置的像素值为原始纹理贴图第i行中的第2个群组的第一个像素值,依此类推。第89个像素位置以前的像素值设为黑色像素值以及第270个像素位置以后的像素值亦设为黑色像素值。如此一来,压缩纹理贴图第i行所需储存的有效像素数仅为原始纹理贴图第i行的有效像素数的一半,可有效减少有效纹理范围的像素数。
图7为依据本发明实施例的压缩纹理贴图700的示意图,其中压缩纹理贴图700表示原始纹理贴图200的压缩结果。请同时参阅图2与图7。如图7所示,压缩纹理贴图700根据纹理贴图像素行在球体上对应球体位置的不同纬度圆周的大小决定纹理贴图像素行上的压缩比,其中对应球体位置靠近球体模型的南北两极的一第一像素行的压缩比大于对应球体位置远离球体模型的两极的一第二像素行的压缩比,因而将原先使用的矩形纹理贴图压缩成近似椭圆状的纹理贴图。比较图2与图7可知,将原始纹理贴图200压缩后的压缩纹理贴图700中的有效纹理范围的像素数约为原始纹理贴图200的68%。因此,本公开的纹理贴图的压缩方法可根据纬线圆周大小来确定非矩形的一压缩纹理贴图上各像素行的像素数,使得对应于球体模型上南北两极附近只会储存少数必要的信息,可有效解决现有技术中纹理贴图在球体模型上南北两极出现的冗余信息过多的问题。
本发明另一实施例更提供应用前述压缩纹理贴图以产生360度全景视频的方法。于此实施例中,压缩纹理贴图映射至一球体模型的对应位置,以便应用压缩后的非矩形纹理贴图创建球体模型,产生360度全景视频,从而进行360度全景视频的播放。
由于应用压缩后的非矩形纹理贴图创建球体模型以产生360度全景视频时需要先行计算出来的各像素行的参数值进行纹理坐标的映射,因此必须先建构球体模型。参见图8A、图8B以及图8C。图8A、图8B以及图8C为依据本发明实施例的球体模型建构示意图。其中,图8A为球体模型的坐标系统示意图,图8B为图8A的球体模型从y轴正方向俯视结果示意图,图8C则为球体模型上经纬线交点生成的细分三角形顶点示意图。
如图8A所示,为了创建球体模型,图形处理单元130先将球体沿纬线方向分为iRings份以及沿经线方向分为iSectors份,因此球面上有iRings条纬线与iSectors条经线相交。假设pVertices[i][j]表示第i条纬线与第j条经线的交点,则可应用如下公式计算球体模型参数,其包括交点坐标(x,y,z)与交点纹理坐标(u,v),用于球体模型的创建以及纹理贴图的采样。其中,PixelLineOfRing[i]表示第i条纬线所对应纹理贴图的像素行,fRadius为球体半径,frRing[i]为第i条纬线圈的半径,如图8A与图8B所示。每一iRing与iSector相交于一细分三角形,此细分三角形的顶点坐标为两者的交点坐标pVertices[i][j],再利用交点坐标构建如图8C所示的球体模型,并根据先行计算出来的压缩纹理贴图上的各像素行的参数值StartPixel[i]、PixelOfLine[i],设置球体上各细分三角形的纹理坐标属性。
首先,处理器110依据所分的经线数iSector与纬线数,以下面公式(7)计算如图8A所示的第一角度θ:
处理器110再依据高度height与所分的纬线数iRings,经由以下公式(8)决定第i条纬线对应的纹理贴图上的像素行PixelLineOfiRing[i],第i条纬线上的点的像素值采样自该行:
处理器110再依据第i条纬线对应的纹理贴图像素行PixelLineOfiRing[i]与高度height,经由以下公式(9)计算出第二角度δ:
处理器110可再依据第二角度δ与球体半径,计算出第i条纬线圈的半径frRing[i]:
frRing[i]=fRadius*sin(δ) (10)
接着,处理器110依据第i条纬线圈的半径、第一角度、第二角度与球体半径,通过以下公式(11)-(13)计算出交点pVertices[i][j]的三维球体坐标(x,y,z):
pVertices[i][j].x=frRing*sin(θ) (11)
pVertices[i][j].y=fRadius*cos(δ) (12)
pVertices[i][j].z=frRing*cos(θ) (13)
之后,处理器110再依据该对应行的开始索引值(StartPixel[i])、第i条纬线对应的纹理贴图像素行的像素数(PixelOfLine[i]),通过以下公式(14)计算交点pVertices[i][j]在第i条纬线对应的纹理贴图像素行中的像素索引值(PixelIndexInLine[j]):
其中,
PixelLineOfiRing[i]为该点的行号(行索引值);
PixelOfLine[PixelLineOfiRing[i]]是压缩纹理贴图第PixelLineOfiRing[i]行的像素数(有效像素数量);
表示该行有效像素数分成(iSectors-1)份;
先计算得到该对应点在有效像素中的索引值(第一个有效像素值的索引值为0);
再根据该行第一个有效像素的坐标StartPixel[PixelLineOfiRing[i]],计算该对应点在所在像素行(包含无效像素)中的坐标索引值PixelIndexInLine[j],并且交点pVertices[i][j]会对应到纹理贴图上的一个点。以上公式仅为计算纹理贴图上该对应点坐标的一个示例方法,但本发明不限于此。
最后,处理器110便可依据交点pVertices[i][j]在第i条纬线对应的纹理贴图像素行中的像素索引值(PixelIndexInLine[j])与宽度值width,通过以下公式(15)计算对应的纹理坐标u值,同时依据交点pVertices[i][j]在第i条纬线对应的纹理贴图像素行(PixelLineOfiRing[i])与高度值height,通过以下公式(16)计算对应的纹理坐标v值:
之后,图形处理单元(GPU)130可应用前述公式(11)-(13)所算出的各交点的球体坐标(x,y,z)与前述公式(15)-(16)所算出映射纹理坐标(u,v)之间的对应关系,将压缩纹理贴图作为球体模型的纹理图,将压缩纹理贴图的各点映射于球体模型的一对应位置上,进而产生360度全景视频。
图9显示本发明一实施例的产生360度全景视频的方法流程图。请同时参照图1、图7、第8A-图8C以及图9。依据本发明实施例的产生360度全景视频方法可以适用于一图像数据处理系统,举例来说,可适用于图1的图像数据处理系统100并由处理器110或图形处理单元(GPU)130加以执行。可理解的是,图1的图像数据处理系统100用于解释流程图,但本发明并非仅应用于图像数据处理系统100。于此实施例中,处理器110或图形处理单元130可自一储存单元(如储存单元140)中取出一非矩形的压缩纹理贴图(如图7所示的压缩纹理贴图700)并将此压缩纹理贴图映射至球体模型以产生一360度全景视频。
首先,如步骤S902,图形处理单元130可接收压缩纹理贴图,其中压缩纹理图像具有多个像素行i,各像素行i包括一第一数量的像素且各像素行i包括多个参数值,其中参数值包括对应于像素行i的一取样像素数量、一第一索引值、以及一第二索引值。具体来说,于此实施例中,压缩纹理图像为非矩形的纹理贴图(例如:图7所示的压缩纹理贴图700),压缩纹理图像的各像素行i具有不同的像素数且其有效像素的储存位置也有所不同,因此各像素行i有对应的一取样像素数量、开始索引值(第一索引值)以及结束索引值(第二索引值),其中各像素行的开始索引值以及结束索引值分别表示该对应像素行中有效像素储存的开始像素位置以及结束像素位置。也就是说,开始索引值与结束索引值分别表示第i行像素行的有效像素采样范围。这些参数值可于产生压缩纹理贴图时一起记录于储存单元140中,因此处理器110可由储存单元140读取压缩纹理贴图以接收压缩纹理贴图时并直接读取这些相关记录以取得前述参数值。于另一实施例中,处理器110可分析所接收的压缩纹理贴图的各像素行的参数值,过滤掉预设的固定值(例如:黑色像素值)的像素,以取得前述参数值。
接着,如步骤S904,处理器110依据各像素行i的上述参数值,执行一纹理坐标映射,得到各像素行i的一映射纹理坐标。得到各像素行i的映射纹理坐标之后,如步骤S906,处理器110依据参数值,设置球体模型上各细分三角形的纹理坐标属性。于此步骤中,处理器110可通过前述公式(7)-(14),依据交点pVertices[i][j]在第i条纬线对应的纹理贴图像素行中的像素索引值PixelIndexInLine[j]与高度值height,计算对应的映射纹理坐标u值,同时依据交点pVertices[i][j]在第i条纬线对应的纹理贴图像素行的值(PixelLineOfiRing[i])与宽度值width,计算对应的映射纹理坐标v值。举例来说,处理器110可通过公式(15)-(16)得到映射纹理坐标(u,v),但本发明并不限于此。
设置完球体模型上各细分三角形的纹理坐标属性之后,如步骤S908,图形处理单元130将压缩纹理贴图依据各参数值与映射纹理坐标,映射于球体模型的一对应位置上以产生360度全景视频。于此步骤中,图形处理单元130可依据各交点的球体坐标(x,y,z)与映射纹理坐标(u,v)之间的对应关系,将压缩纹理贴图作为球体模型的纹理图,将压缩纹理贴图的各点映射于球体模型的一对应位置上,进而产生360度全景视频。
图10显示本发明一实施例的360度全景视频的播放方法流程图。依据本发明实施例的360度全景视频的播放方法可以适用于一图像数据处理系统,举例来说,可适用于图1的图像数据处理系统100并由一GPU如图形处理单元130加以执行。可理解的是,图1的图像数据处理系统100用于解释流程图,但本发明并非仅应用于图像数据处理系统100。于此实施例中,假设储存单元140可包括一系统存储器(未图示)且系统存储器中储存有处理器110所产生的非矩形的压缩纹理贴图(如图7所示的压缩纹理贴图700)以及对应的球体模型参数,GPU可自系统存储器中取出此非矩形的压缩纹理贴图至GPU内建的本地存储器中并将此压缩纹理贴图映射至对应球体参数的球体模型以产生一360度全景视频,之后再依据一使用者观看的视角选择,决定360度全景视频的当前视口图像并将当前视口图像在显示装置150上显示。
首先,如步骤S1002,GPU加载系统存储器中的压缩纹理贴图图像至其本地存储器中。
于加载压缩纹理贴图影像至本地存储器之后,如步骤S1004,GPU加载系统存储器中的相应的球体模型参数并依据球体模型参数建立一球体模型(如图8C所示)。
如步骤S1006,GPU将一帧帧的压缩纹理贴图映射到球体模型上,产生一360°视频流作为360度全景视频,此360°视频流为一个水平和纵向都是360°的视频集合。
于产生360°视频流之后,此时使用者的观看视角默认在中心位置且当前视口图像为中心位置所对应的默认图像。当使用者观者的观看视角改变时,会产生一个使用者的视角选择。当GPU接收使用者的视角选择之后,表示使用者欲改变观看的图像,于是如步骤S1008,GPU根据使用者的视角选择,决定360°视频流的一当前视口图像并将当前视口图像在显示装置150上显示。藉此,GPU便可利用本案的纹理贴图的压缩方法所产生的压缩纹理贴图与球体模型之间映射产生360°视频流并随着使用者的视角选择的变化改变所显示的当前视口图像,从而实现360度全景视频的播放。
因此,依据本发明的纹理贴图的压缩方法及其相关图像数据处理系统与产生360度全景视频的方法可根据球体上不同纬度圆周的大小决定纹理贴图像素行上的压缩比,将现有技术中所使用的矩形纹理贴图压缩成非矩形纹理贴图,使得压缩纹理贴图所需储存的有效像素数可大幅减少,因而可有效解决现有技术中纹理贴图在球体模型上南北两极出现的冗余信息过多的问题,实现球面上纹理像素分辨率的统一,可达到降低纹理贴图上的数据冗余度与降低传输所需的频宽的目的。此外,依据本发明的产生360度全景视频的方法可进一步应用压缩后的非矩形纹理贴图创建球体模型,并据此产生一360度全景视频,再随着使用者的视角选择的变化改变所显示的当前视口图像,从而实现360度全景视频的播放。
本发明的方法,或特定型态或其部份,可以以程序代码的型态存在。程序代码可以包含于实体媒体,如软盘、光盘片、硬盘、或是任何其他机器可读取(如计算机可读取)储存媒体,亦或不限于外在形式的计算机程序产品,其中,当程序代码被机器,如计算机载入且执行时,此机器变成用以参与本发明的装置。程序代码也可通过一些传送媒体,如电线或电缆、光纤、或是任何传输型态进行传送,其中,当程序代码被机器,如计算机接收、载入且执行时,此机器变成用以参与本发明的装置。当在一般用途图像处理器实作时,程序代码结合图像处理器提供一操作类似于应用特定逻辑电路的独特装置。
虽然本发明已以较佳实施例公开如上,然其并非用以限定本发明,任何所属技术领域中包括通常知识者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰。举例来说,本发明实施例所述的系统以及方法可以硬件、软件或硬件以及软件的组合的实体实施例加以实现。因此本发明的保护范围当视所附的权利要求所界定者为准。