用于对HDR图像进行编码和解码的方法与流程

文档序号:17291579发布日期:2019-04-03 04:00阅读:658来源:国知局
用于对HDR图像进行编码和解码的方法与流程

本发明涉及用于对图像和视频进行编码和解码的方法。

具体来说,本发明涉及能够对hdr图像进行编码和解码的方法、计算机程序和设备。



背景技术:

从早期数字摄影一直到当前技术大幅度向前迈进。

当今,甚至广泛扩散的装置(例如iphone6)允许拍摄hdr(高动态范围的英文首字母缩写词)照片,其具有比常规8位图像(又称作ldr或低动态范围图像)的颜色范围更高许多的颜色范围。

虽然ldr图像采用8位来表示每个颜色(红、绿或蓝)并且因此允许提供256个不同颜色阴影,但是在hdr图像的情况下,颜色一般通常使用16或更多位通过浮点来表示,以使得具有更高分辨率。浮点表示允许提供多个阴影,其比为8位图像所提供的256阴影更高许多。

为了允许hdr图像通过使用常规jpeg或mpeg编解码器来压缩,文献公开若干方法,其提供以添加用于下列步骤:预处理hdr图像,以便在编码阶段得到令人满意的压缩,并且同时允许它在解码期间如实地重构。

美国专利us8462194描述用于处理hdr图像、提供以通过钳制hdr图像来生成低动态范围(ldr)图像的不同方法。us8462194中描述的方法之一还提供以生成通过将ldr图像的每个rgb分量除以原始hdr图像的相应rgb分量所得到的图像(称作fc帧)。ldr图像和fc帧均通过mpeg编解码器单独编码。因此,传输ldr图像和fc帧的数据文件能够通过传统解码器(其将仅对ldr图像进行解码)以及通过新解码器(其通过使用fc帧和ldr图像将能够重构hdr图像)来解码。

虽然是有效的,但是从us8462194已知的方法仅在ldr图像通过钳制hdr图像来得到时才适用。如果ldr图像按照不同方式得到,则该方法不可正确工作。

此外,从us8462194已知的方法属于有损类型,即,它们不提供用于检查因从16(或更多)位转到8位引起的误差的任何工具。

因此,重构hdr图像对原始图像可能不是如实的。

本发明的目的和概述

本发明的目的是克服现有技术缺陷。

具体来说,本发明的目的是提供一种允许hdr图像被有效压缩和解压缩的方法。

本发明的这些及其他目的通过体现所附权利要求书(其是本描述的整体部分)的特性的编码和解码方法来实现。

在一个实施例中,本发明是一种对hdr图像进行编码的方法,其属于如下类型:其中hdr图像编码为第一数据流(又称作遗留码流),其包含具有比hdr图像的颜色范围更低的颜色范围的ldr图像,以及编码为第二数据流(又称作残余码流),其包含从hdr图像和ldr图像所得到的残余图像。该方法提供以

-处理ldr图像和hdr图像,以便使它们进入具有对数空间中的样本的相同颜色空间;

-通过从具有对数空间中的样本的ldr图像中减去具有对数空间中的样本的hdr图像,来生成对数空间中的残余图像;

-通过处理对数空间中的残余图像以便使它适合如编码器(其在第二数据流中插入残余图像)所输入的所要求格式,来生成残余图像;

-生成第一查找表,其将ldr图像样本的值映射到对数空间中的经处理ldr图像的值;

-生成第二查找表,其将插入第二数据流中的残余图像样本的值映射到对数空间中的残余图像的值;

-在第一或第二数据流中插入第一和第二查找表。

这种解决方案允许hdr图像几乎无损地(无损或近无损)被编码。查找表的使用和对数空间中的数据的处理允许损失被降低并且使原始hdr图像被最佳重构。查找表以及残余图像和基本ldr图像能够通过常规编解码器来编码,并且以低频带占用来传送或者以低存储器占用来存储。

在一个实施例中,通过一些处理操作(其中包括伽马校正或色调映射加伽马校正)从ldr图像来得到ldr图像。在这个实施例中,生成具有对数空间中的样本的ldr图像的步骤包括下列步骤:

a)按照浮点格式来转换ldr图像,

b)与用来得到ldr图像的伽马校正相反地将伽马校正应用于ldr图像;

c)将伽马校正的ldr图像与适合在hdr图像的颜色空间中转换伽马校正的ldr图像的矩阵相乘;

d)在对数空间中转换在步骤c)所生成的ldr图像;

这种解决方案提供另一优点:ldr图像处理成使得在后续比较中与hdr图像全等,以生成残余图像。

在一个实施例中,在步骤d)所生成的ldr图像的值则在从0至1的值范围中缩放,使得保存像素之间的颜色比率,但是防止负值(其在对数空间中的转换中可能生成)被保持。

在另一实施例中,该方法提供以对插入第一数据流中的ldr图像进行解码,并且处理按照这种方式解码的图像,以生成具有对数空间中的样本的ldr图像。

有利地,具有对数空间中的样本的hdr图像通过按照半对数格式转换待编码hdr图像来生成。

在优选实施例中,插入残余码流中的残余图像按照下列步骤从对数空间中的残余图像来得到:

i.将偏移值加入对数空间中的残余图像的全部样本,偏移值为正值,使得合计之后的所生成图像的全部样本具有大于或等于零的值。

ii.采用编码器(其在第二数据流中插入残余图像)所要求的位数来表示(1024)在步骤i所得到的图像的样本;

iii.在编码器(其对第二数据流中的残余图像进行编码)所接受的颜色空间中转换在步骤ii.所得到的图像。

本发明还涉及对通过两个数据流(一个包含基本ldr图像以及一个包含残余图像)所编码的hdr图像进行解码的方法。

在一个实施例中,本发明是一种处理图像数据的方法,包括下列步骤:

-接收包含ldr图像的第一数据流;

-接收包含重构hdr图像所需的残余图像的第二数据流;

-对来自第一数据流的ldr图像进行解码;

-对来自第二数据流的残余图像进行解码;

-从第一和/或第二数据流来提取第一和第二查找表,其中第一查找表将ldr图像样本的值映射到对数空间中的ldr图像(ldr*)的值,以及第二查找表将ycbcr颜色空间中的解码残余图像的样本的值映射到仍然具有ycbcr颜色空间的对数空间中的残余图像的值;

-使用第一查找表从ldr图像来生成对数空间中的ldr图像,以确定对数空间中的ldr图像的样本的值;

-通过使用第二查找表从残余图像开始来生成对数空间中的残余图像,以确定对数空间中的残余图像的样本的值;

-通过从对数空间中的ldr图像中减去对数空间中的残余图像,来重构对数hdr图像;

-将对数hdr图像从对数空间转换成线性空间并且转换成输入hdr图像的原始格式。

通过查找表并且通过对数空间中的图像数据的处理,这种解决方案允许编码hdr图像通过两个数据流(一个流包含基本ldr图像以及一个包含残余图像)如实地重构。

有利地,重构对数空间中的hdr图像的步骤提供以将偏移值加入对数空间中的ldr图像。这种偏移值优选地等于2m+8-1,其中m等于残余图像相对ldr图像的额外位数。

本发明还涉及能够实现上述方法的编码器、解码器和软件,并且在以下描述中更好地描述。

其他有利特性是所附权利要求书(其是本描述的整体部分)的主题。

附图说明

下面将参照在附图中作为举例而不是限制所提供的一些非限制性示例来描述本发明。这些附图示出本发明的不同方面和实施例,并且在适当的情况下,在不同附图中示出相似结构、组件、材料和/或元件的参考标号通过相似参考标号来表示。

图1是用于对hdr图像进行编码和解码的系统;

图2是图1的系统的编码器;

图3是供图2的编码器中使用的查找表;

图4是图3的查找表的备选查找表;

图5是图1的系统的解码器;

图6是图2的编码器的变体。

具体实施方式

虽然本发明可经过各种修改和备选构造,但是一些优选实施例在附图中示出并且在下文详细描述。

但是应当理解,不是意在将本发明限制到具体公开实施例,而是相反,本发明意在涵盖全部修改、备选构造和等效方案,其落入如权利要求书所限定的本发明的范围之内。

“例如”、“等”、“或者”的使用非限制性地指示非排他备选方案,除非另加说明。

“包括”的使用表示“包括但不限于”,除非另加说明。

术语“码流”指的是压缩图像的数据的表示,其包括允许数字图像的样本被(完全或近似)重构所需的全部数据。

定义样本数据的解释的附加数据(例如样本的颜色空间或空间维度)可以是必需的。

术语图像的‘通道’表示其分量之一,例如,rgb图像包括r(红)、g(绿)和b(蓝)色通道。

术语‘像素’表示图像的元素单位,其由等于通道数量的多个标量值来组成,例如在rgb图像中,像素包括三个标量值,一个用于红色、一个用于绿色以及一个用于蓝色。

术语图像的‘样本’表示组成像素的值其中之一。

在以下详细描述中,将公开对图像进行编码和解码的方法,其能够通过适当设置成实现这类方法的编码器和解码器来实现。

本文中参照图1的示例来描述按照本发明的图像处理系统。

图像处理系统100包括编码器101,以用于对高动态范围(hdr)图像102进行编码。编码器101接收作为输入的hdr图像102以及通过对hdr图像102进行色调映射或暴露和钳制所得到的低动态范围(ldr)图像102a。

在一个实施例中,编码器101配置成仅接收作为输入的hdr图像102,并且从hdr图像102来生成图像102a。

编码器101处理hdr和ldr图像(102、102a),并且生成作为输入的遗留码流103(其包含编码ldr图像(优选地对应于ldr图像102a))和残余码流104(其包含能够与编码ldr图像结合用来重构hdr图像的残余图像)。

为了处理遗留码流和残余码流中的hdr图像,编码器101包括电子电路,以实现以下参照图1和图3的非限制性示例所述的编码方法。

处理系统100还包括解码器105,其配置成实现如以下描述中例如参照图2所述的解码过程。

解码器105接收作为输入的遗留码流103和残余码流104,并且生成作为输出的hdr图像106(其对应于原始hdr图像102)。

图2示出按照本发明的第一实施例的编码器101的框图。

图2的编码器101实现对hdr图像102(其在以下所述示例中是按照浮点格式(以下称作浮点)的32位图像)进行编码的方法。

如从以下描述能够更好地推断,该方法提供以将hdr图像中包含的信息分解为两层:低动态范围(ldr)基本图像和残余层,其单独被编码。

因此,该方法提供以生成由遗留解码器(其是能够对ldr图像进行解码的装置,例如jpeg、mpeg、hevc、h264编码器等)可解码的码流(以下称作遗留码流)。

开始于hdr图像102(其在这个示例中为16位图像),通过色调映射,生成8位ldr图像102a。在备选实施例中,ldr图像102a能够作为输入连同hdr图像102一起提供给编码器;在这种情况下,编码器101无需生成ldr图像102a。

因此,ldr图像102a被传递给遗留编码器1010,其在图2的非限制性示例中是无损编码器。

显然,编码器1010要求必须被编码的输入图像的预定颜色空间;编码器101因此能够提供有一个或多个转换框,其预计将ldr图像从预定颜色空间(例如rgb)转换成编码器1010所要求的颜色空间。遗留编码器1010按照本身已知的方式提供作为输出的所述遗留码流103,其是表示编码ldr图像(以下又称作无损基本图像)的数据序列。

为了生成残余层,该方法提供以计算作为hdr与ldr图像之间的对数差的残余图像。

为了计算残余图像,适当地处理hdr和ldr图像。

hdr图像102在框1011按照半对数16位整数格式(其对应于对数空间中的半浮点(半精度浮点格式)的整数表示(log2))来转换。

如上所述,还处理ldr图像102a,以生成残余图像。

ldr图像102a作为输入来提供给处理框1012,其中8位整数图像首先例如通过按照下式(1)将输入样本的值除以255按照浮点格式来转换(框1013):

ldr_float=ldr/255.0(1)

其中等式(1)必须预计将作为对框1013的输入的ldr图像102a的每个样本除以值255。

如果ldr图像102a不是线性的,则该方法提供在虚线框1014(可选)所执行的线性化步骤。

线性化经过伽马校正来得到,伽马校正能够例如通过升到输入样本的幂值或者通过使用查找表或者通过使用众所周知的srgb伽马函数或者任何伽马函数来得到。

在框1014可能应用的伽马校正优选地是生成ldr图像102a的步骤期间所应用的函数的逆。作为举例,如果ldr图像102a通过将色调映射算法应用于hdr图像102,以及如果这种算法应用伽马曲线,例如(x是图像的r、g或b通道,以及ldr_gamma是例如等于2.2的伽马值),则在框1014,反伽马曲线应用于图像的每个通道。

然后通过框1015使在框1014之后线性化的ldr图像进入hdr图像102的颜色空间。框1015包括矩阵(在rgb图像的本文所公开的情况下为3×3),其将ldr输入图像102a的较小颜色空间转换为hdr图像102的较宽颜色空间。

因此,来自框1015的输出ldr图像(ldrwcg)通过下式得到:

(2)

其中,h=是颜色空间转换矩阵,以及ldrin_1015是作为对框1015的输入的线性化图像。

在框1015所执行的空间转换显然仅当ldr图像102a和hdr图像102在两个不同颜色空间中表示(例如,lrd图像在srgb颜色空间中表示,以及hdr图像102在xyz颜色空间或者在其他颜色空间(例如bt2020空间等)中表示)时才是必需的。

如果输入图像102和102a在相同颜色空间下表示,则矩阵h是单位矩阵或者框1015省略。

因此,来自框1015的输出图像通过计算样本的基本2对数在对数空间中转换(框1016);来自框1016的输出ldrlog图像因此通过下式得到:

(3)

由于ldrlog图像可包括负值,所以该方法提供以在范围[0,1]中重新缩放这种图像的样本的值。这个操作在框1017通过下式逐个通道执行:

(4)

其中,ldrscaling是来自框1017的输出图像,项|c用来表示所考虑通道(例如rgb颜色空间中的红、绿和蓝色通道),min(ldrlog|c)和max(ldrlog|c)分别是每个所考虑通道的最小和最大值。

来自框1012的输出ldrscaling图像是其样本在对数空间中通过浮点表示所表达的图像。

为了生成将要用来生成残余图像的ldr*图像,编码器101还包括框1018,其中ldrscaling图像从浮点格式转换成16位整数格式,与hdr*图像一样。在框1018所生成的转换如下:

(5)

ldr*图像然后与ldr图像102a进行比较,以生成查找表(每个通道一个),以便在对图像进行解码并且校正压缩误差时使用。

详细来说,在框1019,对于每个通道,生成查找表(lut),其将ldr图像102a的通道的8位值映射到ldr*图像的16位值。

因此,在框1012和1018所执行的处理之后,通过获取ldr图像102a的样本,查看哪一个是其值(例如00000001),并且通过查看这种样本在ldr*图像中取哪一个值(例如0000000000000100),来填充lut。

在框1019所生成的lut示例在图3中示出。如能够看到,lut是256(28)个索引的表,其指出哪一个16位值用来在这个编码中表示以8位所表达的对应颜色值。显然,图3的lut中的第一列的存在能够省略,以及编码器能够存储图4所示类型的lut,知道该列的索引对应于8位值(以整数所表达)。例如,图4的lut的第一元素对应于8位的值0,第二元素对应于8位的值1,依此类推。

优选地,在框1019所生成的lut插入随遗留码流103所传送的ldr图像的元数据之间。

对数空间中的残余图像reslog作为hdr*图像(如从框1011所输出)与来自框1016的输出ldr*图像之间的差来计算(框1020):

(6)

在传送残余码流中的残余图像之前,编码方法提供以下所述并且在附图的框1021-1026中所示的一些处理步骤。

首先,在框1021,偏移值加入reslog图像的样本,以便使全部样本达到正值

(7)

其中,m等于残余图像reslog相对ldr图像102a的额外位数。

由于偏移的加入可生成比2nbit更高的数值,所以resoffset图像的样本通过17位表示(其在32位容器中携带)来表达,其中前15位设置为0。

在框1022,resoffset图像在ycbcr颜色空间中转换,以允许它与残余图像(其将插入残余码流中,并且使得生成将要用于残余图像的无损重构的lut)正确地比较。

如果resoffset图像处于rgb颜色空间中,则在框1022所执行的颜色空间转换如下:

(8)

其中,t=是从rgb到ycbcr的颜色空间转换的矩阵,以及resycbcr_32是来自框1022的输出图像。

因此,resycbcr_32图像的三个rgb分量能够表达如下:

resycbcr_32_r=b_1·resoffset_r+b_2·resoffset_g+b_3·resoffset_b

resycbcr_32_g=b_4·resoffset_r+b_5·resoffset_g+b_6·resoffset_b

resycbcr_32_b=b_7·resoffset_r+b_8·resoffset_g+b_9·resoffset_b

其中,b_1-b_9是转换矩阵t的系数。

在遗留编码器1026中执行的实际转换之前,resoffset图像在框1024从17位对数空间(在32位中包含)转换成遗留编码器1026所接受的16位空间。因此,在框1024所执行的转换如下:

(9)

16位残余图像然后在框1025在ycbcr空间中转换。这种转换是必需的,因为在这个实施例中,遗留编码器要求作为输入的ycbcr颜色空间中的图像,显然,通过使用其他编码器,适当颜色空间中的转换可以是必需的。

因此,来自框1025的输出图像是下列图像:

resycbcr_16=t·res16(10)

因此,resycbcr_16图像被传递给遗留编码器1026,其生成输出残余码流104。在优选实施例中,遗留编码器1026属于无损的无损类型,例如jpeg、mpeg、png类型的现有编码器。编码器1026中使用的离散余弦变换(dct)优选地根据输入hdr图像的位深度(例如8至16位)来选择。

为了允许残余图像无损地重构,编码器通过框1023来计算另一查找表(lut),其在框1019同样地将resycbcr_16图像的值映射到resycbcr_32图像的值。因此,在框1023所生成的lut将是具有216个元素(其索引是resycbcr_16图像的值,并且其内容是与resycbcr_16中16位元素对应的resycbcr_32的17位值)的表。

至于对低动态范围图像ldr所生成的lut,对残余图像所生成的lut优选地插入遗留码流中编码的基本图像的元数据之间。

这里参照图5,描述解码器105的示例,其能够实现解码步骤和hdr图像的重构。解码器105包括遗留解码器1050,其能够接收作为输入的遗留码流103,并且按照本身已知的方式能够对基本ldr图像进行解码。遗留解码器1050是一种解码器,其执行与遗留编码器1010相反的操作,因此它生成作为输出的rgb颜色空间中的8位整数图像。

类似地,解码器1051接收作为输入的残余码流104,并且按照本身已知的方式对其中包含的残余图像进行解码。遗留解码器1051是一种解码器,其执行与遗留编码器1026相反的操作,并且提供作为输出的ycbcr空间中的16位图像。

对hdr图像进行解码的方法提供以采用对数空间表示将解码ldr图像(即,来自遗留解码器1050的输出图像)从8位整数rgb格式转换成16位格式。这在框1052中通过使用查找表来得到(其在框1019所生成并且包含在遗留码流103的元数据中)。在操作上,对于重构ldr图像的每个像素,从0至255的值用作查找表的索引,以了解从0至65535的哪一个值必须给予重构16位ldr图像的相同像素。来自框1052的输出图像对应于编码阶段中使用的ldr*图像。

同样,重构8位残余图像(即,来自遗留解码器1051的输出图像)通过使用查找表(其在框1023所生成并且在这个实施例中包含在遗留码流103的元数据中)采用对数空间中的值按照17位格式(插入32位容器中)来转换。

因此,来自框1053的17位输出图像在框1054中在rgb颜色空间中转换,并且hdr图像在重构框1055来重构。

首先在框1056,来自框1054的输出图像resrgb从来自框1052的输出ldr*图像中减去,以及加入在编码阶段在框1021所引入的偏移值,因此在框1056所应用的等式为下列等式:

hdrrec=ldr*-resrgb+offset(11)

其中,hdrrec是重构图像,以及在这种情况下的偏移等于2m+8-1,其中m等于从残余码流所提取的、编码阶段中使用的残余图像的额外位数。在这个实施例中为8位。

偏移值能够可能插入遗留码流中传送的基本ldr图像的元数据之间。

因此,得到hdr图像,其样本按照对数标度来表达。

为了完成hdr图像的重构,因此来自框1056的输出图像从对数空间转换成线性空间,并且又使它回到hdr图像102的原始格式,其是浮点或整数格式。为了完成这类操作,使用基本ldr图像的元数据中包含的信息。

根据以上所述,很清楚,对高动态范围(hdr)图像的编码和解码的方法如何允许有效压缩和解压缩以低计算成本来执行,因而实现上述目的。

本发明具有不同有利特性。它允许hdr图像被编码,同时保证与遗留编码器的后向兼容性,而无需高计算复杂度。能够正确地重构hdr图像,而不管用来从hdr图像得到ldr图像的色调映射的类型。查找表用来映射残余图像(ldr*和hdr*)相对发送给编码器的图像的计算中使用的图像允许提供对于几乎无损(近无损)的重构有用的参考元素。由于主要工作在对数空间,所以对计算残余图像所执行的操作则允许损失进一步降低,其相反地是除法操作(当工作在线性空间时原本是必需的)固有的。

虽然参照某些具体实施例描述了本发明,但是本描述将不是被理解为限制性的。对所述实施例的若干修改以及备选实施例能够由阅读本描述的本领域的技术人员来实现。本领域的技术人员清楚地知道,所公开的思路和具体实施例可略微修改或者用作修改或设计其他方法和结构的基础。划分为逻辑块将不是被理解为限制性的,因为逻辑块可相对以上所公开内容以不同方式来编组或组织。

备选解决方案的示例能够是得到用于残余图像的计算的线性化ldr图像(ldr*)的方式。例如,在图6所示的一个实施例中,作为对框1013的输入的图像不是如同图2中一样的ldr图像102a,它而是通过对遗留编码器1010中编码的图像进行解码(框1028)来得到。在这个实施例中,框1019的lut将如从框1018所输出的ldr*的值映射到如从解码框1028所输出的低动态范围图像的值。

虽然这个解决方案要求用于对于在框1010所编码的ldr图像进行解码(框1028)的附加计算成本,但是这个解决方案改进编码性能,因为残余数据从编码ldr图像开始计算。此外,如果编码器1010是有损编码器(例如jpeg),则这个解决方案是有用的,因为它通过查找表来允许插入遗留码流中的有损ldr图像被重构。

此外,虽然上述方法参照数字图像的编码示出,但是显然,相同方法能够扩展到对视频(其按照众所周知的方式由依次再现的多个图像(帧)所组成)进行编码。例如,如果视频是由hdr格式的多个图像i、b、p所组成的mpeg格式,则有可能将上述方法应用于这些图像的每一个。

最后必须注意,本发明并不局限于硬件编码器和/或解码器,它而是还涉及包含代码部分的计算机程序,代码部分在由计算机运行时允许上述编码和/或解码方法被实现。为此,必须注意,这类方法如何允许图像数据被处理和转换,同时减少存储它们的文件的维度(因此节省保存它们的存储器空间和/或节省传输所需的频带),但是保证hdr图像的如实重构。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1