背景技术:
数字视频流可以使用一系列帧或静止图像来表示视频。数字视频可用于各种应用,包括例如视频会议、高清视频娱乐、视频广告或用户生成的视频共享。数字视频流可以包含大量数据,并且消耗用于处理、传输或存储视频数据的计算设备的大量计算或通信资源。已经提出了各种方法来减少视频流中的数据量,包括压缩和其他编码技术。
可通过将帧或图像分解成基于相同帧或图像内的其他块来预测的块来执行基于空间相似性的编码。块和预测块之间的差异(即,残余误差)被压缩并编码在比特流中。解码器使用差异和参考帧来重构帧或图像。
技术实现要素:
本申请涉及对图像进行编码和解码。本文公开了用于使用匹配的锐化和模糊滤波器对图像进行编码和解码的系统、方法和装置的方面。
所公开的实现的一方面是一种用于解码图像的系统。该系统包括存储器和处理器。存储器存储指令,所述指令可由处理器执行以使得系统进行下述操作:接收编码比特流,其是至少部分地通过对输入图像应用锐化滤波器以获得锐化图像并将块式(blockwise)编码器应用于所述锐化图像而生成的;使用块式解码器对来自所述编码比特流的数据进行解码,以获得多个图像数据块;组合所述多个图像数据块以形成组块图像;以及,将与所述锐化滤波器匹配的模糊滤波器应用于所述组块图像,以获得输出图像。
另一方面是一种用于解码图像的方法。该方法包括:接收编码比特流,所述编码比特流是至少部分地通过对输入图像应用锐化滤波器以获得锐化图像并且对所述锐化图像应用块式编码器而生成的;使用块式解码器对来自所述编码比特流的数据进行解码以获得多个图像数据块;组合所述多个图像数据块以形成组块图像;以及,将与锐化滤波器匹配的模糊滤波器应用于组块图像以获得输出图像。
另一个方面是一种用于编码图像的系统。该系统包括存储器和处理器。存储器存储指令,所述指令可由处理器执行以使系统执行以下操作:将锐化滤波器应用于输入图像以获得锐化图像,其中,所述锐化滤波器与模糊滤波器匹配;使用块式编码器对所述锐化图像进行编码以生成编码比特流的数据;以及,在所述编码比特流中编码所述模糊滤波器的指示。
另一方面是一种用于编码图像的方法。该方法包括:将锐化滤波器应用于输入图像以获得锐化图像,其中,所述锐化滤波器与模糊滤波器匹配;使用块式编码器对所述锐化图像进行编码以生成编码比特流的数据;以及,在所述编码比特流中编码所述模糊滤波器的指示。
在对实施例、所附权利要求书和附图的以下详细描述中公开了本公开的这些和其他方面。
附图说明
这里的描述参考了附图,其中,若干视图中,相似的附图标记指代相似的部分。
图1是视频编码和解码系统的示意图。
图2是可以实现发送站或接收站的计算设备的示例的框图。
图3是待编码并随后解码的视频流的图。
图4是根据本公开的实施方式的编码器的框图。
图5是根据本公开的实施方式的解码器的框图。
图6是用于对图像进行编码的系统的示例的框图。
图7是用于解码图像的系统的示例的框图。
图8是用于对图像进行编码的过程的示例的流程图。
图9是用于解码图像的过程的示例的流程图。
图10a是模糊滤波器的系数的阵列的示例。
图10b是锐化滤波器的系数的阵列的示例。
图11a是模糊滤波器的系数的阵列的示例。
图11b是锐化滤波器的系数的阵列的示例。
具体实施方式
当使用块式编解码器来压缩具有异常低比特率的图像(例如,视频的帧)时,构块伪像开始出现得更加明显。块边界在空间上是高频的,并形成在人类视网膜中增强的视觉线索。用于处理该现象的先前策略具有缺点。在其出现后对其进行平滑处理的策略倾向于稍微破坏图像,并可能删除所需的实际细节。此外,重叠变换解码更慢,消耗更多的计算资源(例如,存储器、处理器周期和电池电量)。复杂的跨块预测会使格式更加复杂,并且无法始终产生良好的结果。此外,离散正弦变换(dst)仅解决了构块伪像问题到一半。变换的另一半仍然悬而未决,下一个块需要对其进行补偿。最后,更高的数据速率已用于减少由离散余弦变换(dct)产生的构块伪像。
在更低的数据速率(例如,更高的压缩率)下,构块伪像可以成为图像中的主要特征。使用以下描述的新方法,即使在极低信息密度的情况下,也可以抑制构块伪像(blockingartifact),并且可以观察到图像中的更多细节。这种方法可用于增强现有的编解码器,例如当前的jpeg图像格式(例如,通过准备特殊的jpeg图像并在浏览器中应用模糊滤波器)。
该方法是:(1)将锐化滤波器应用于输入图像(例如,视频的帧或静止图像)以获得锐化图像;(2)使用传统的块式编码器(例如,基于dct的编码器)对锐化图像进行编码;(3)发送和/或存储所得的编码比特流;(4)使用传统的块式解码器(例如,基于逆dct的编码器)对来自编码比特流的数据进行解码,以基于输入图像来获得组块(blocked)图像;(5)将与锐化滤波器匹配的模糊滤波器(例如,模糊滤波器是锐化滤波器的逆)应用于组块滤波器,以获得输出图像。这种方法实际上类似于在编解码器中使用离散gabor变换(dgt),而不是在大多数标准编解码器中使用的传统dct,但其复杂度比实现基于dgt的编解码器低得多。该方法还可以轻松地用于现有的标准化编解码器,从而降低了开发成本并允许向后兼容。
使用这种方法,量化可能发生在人眼难以观察到误差的空间中。作为结果,可以使用更粗糙的量化来获得更低的数据速率,而对主观图像质量的影响很小。如果使用相同的量化,则可能会出现较更的可见构块伪像和更高的主观图像质量。这种方法可以将其用于视频和静止图像编码。
与其他方法相比,该方法可能具有许多优点。例如,可以在相同的数据速率下获得更好的视觉质量。增强编解码器可以容易地实现为现有标准化编解码器的附件。使用此方法的系统可能与更旧的编解码器兼容——仅需应用高斯模糊滤波器作为标准解码器的后处理即可。
本文中,将在首先描述其中可以实现本文公开的改进的用于压缩的图像处理的环境之后描述具体细节。
图1是视频编码和解码系统100的示意图。发送站102可以是例如具有诸如图2中所描述的硬件的内部配置的计算机。然而,发送站102的其他适当的实施方式也是可能的。例如,发送站102的处理可以分布在多个设备之间。
网络104可以连接发送站102和接收站106,以对视频流进行编码和解码。具体地,可以在发送站102中对视频流进行编码,并且可以在接收站106中对编码的视频流进行解码。网络104可以是例如互联网。网络104还可以是局域网(lan)、广域网(wan)、虚拟专用网(vpn)、蜂窝电话网络或将视频流从发送站102传输到在本示例中的接收站106的任何其他手段。
在一个示例中,接收站106可以是具有诸如在图2中描述的硬件的内部配置的计算机。然而,接收站106的其他合适的实施方式也是可能的。例如,接收站106的处理可以分布在多个设备之间。
视频编码和解码系统100的其他实施方式也是可能的。例如,一个实施方式可以省略网络104。在另一个实施方式中,可以对视频流进行编码,然后将其存储以在以后的时间传输到接收站106或具有存储器的任何其他设备。在一个实施方式中,接收站106(例如,经由网络104、计算机总线和/或某种通信路径)接收编码的视频流,并存储该视频流以用于以后的解码。在一个示例实施方式中,实时传输协议(rtp)用于在网络104上传输编码的视频。在另一实施方式中,可以使用除rtp以外的传输协议,例如,基于超文本传输协议(http)的视频流送协议。
例如,当在视频会议系统中使用时,发送站102和/或接收站106可以包括如下所述的对视频流进行编码和解码的能力。例如,接收站106可以是视频会议参与者,其从视频会议服务器(例如,发送站102)接收编码的视频比特流以解码和观看,并将其自己的视频比特流进一步编码并发送给视频会议服务器,以供其他参与者解码和查看
图2是可以实现发送站或接收站的计算设备200的示例的框图。例如,计算设备200可以实现图1的发送站102和接收站106之一或两者。计算设备200可以是包括多个计算设备的计算系统的形式,也可以是单个计算设备的形式,例如,移动电话、平板计算机、膝上型计算机、笔记本计算机和台式计算机等。
计算设备200中的cpu202可以是中央处理单元。替选地,cpu202可以是能够操纵或处理现在存在或以后开发的信息的任何其他类型的设备或多个设备。虽然所公开的实施方式可以用所示的单个处理器(例如,cpu202)来实践,但是可以使用多个处理器来实现速度和效率上的优势。
在一个实施方式中,计算设备200中的存储器204可以是只读存储器(rom)设备或随机存取存储器(ram)设备。任何其他合适类型的存储设备可以用作存储器204。存储器204可以包括由cpu202使用总线212访问的代码和数据206。存储器204可以进一步包括操作系统208和应用程序210,应用程序210包括允许cpu202执行本文所述的方法的至少一个程序。例如,应用程序210可以包括应用1至n,其还包括执行本文描述的方法的视频代码化应用。计算设备200还可以包括辅助存储214,其可以例如是与移动的计算设备200一起使用的存储卡。由于视频通信会话可能包含大量信息,因此它们可以全部或部分存储在辅助存储214中,并根据需要将其加载到存储器204中以用于处理。
计算设备200还可以包括一个或多个输出设备,例如显示器218。在一个示例中,显示器218可以是将显示器与可操作用于感测触摸输入的触敏元件组合的触敏显示器。显示器218可以经由总线212耦合到cpu202。除显示器218之外或作为显示器218的替选,可以提供允许用户编程或以其他方式使用计算设备200的其他输出设备。当输出设备是显示器或包括显示器时,则该显示器可以以各种方式实现,包括通过液晶显示器(lcd)、阴极射线管(crt)显示器或发光二极管(led)显示器(例如有机led(oled)显示器)实现。
计算设备200还可以包括下述或与之通信:图像感测设备220,例如相机或者现在存在或以后开发的任何其他图像感测设备220,其可以感测诸如操作该计算设备200的用户的图像之类的图像。图像感测设备220可以被定位成使得其指向操作计算设备200的用户。在一个示例中,图像感测设备220的位置和光轴可以被配置成使得视场包括与显示器218直接相邻并且从中可见显示器218的区域。
计算设备200还可以包括下述或与之通信:声音感测设备222,例如麦克风或现在存在或以后开发的能够感测在计算设备200附近的声音的任何其他声音感测设备。声音感测设备222可以被定位成使得其指向操作计算设备200的用户,并且可以被配置成接收用户在用户操作计算设备200时发出的声音,例如语音或其他话语。
虽然图2将计算设备200的cpu202和存储器204描绘为集成到单个单元中,但是可以利用其他配置。cpu202的操作可以分布在可以直接耦合或跨局域网或其他网络耦合的多个机器(其中,每个机器具有处理器中的一个或多个)上。存储器204可以跨多个机器分布,诸如基于网络的存储器或执行计算设备200的操作的多个机器中的存储器。虽然在这里被描述为单条总线,但是计算设备200的总线212可以由多条总线组成。此外,辅助存储214可以直接耦合到计算设备200的其他组件,或者可以经由网络被访问,并且可以包括诸如存储卡的单个集成单元或诸如多个存储卡的多个单元。因此,可以以多种配置来实现计算设备200。
图3是要被编码并且随后被解码的视频流300的示例的图。视频流300包括视频序列302。在下一层级,视频序列302包括多个相邻帧304。在一些情况下,帧可以被称为画面。虽然将三个帧描绘为相邻帧304,但是视频序列302可以包括任意数目的相邻帧304。然后,可以将相邻帧304进一步细分为个体帧,例如,帧306。在下一层级,可以将帧306划分为一系列分段308或平面。例如,分段308可以是允许并行处理的帧的子集。分段308也可以是可以将视频数据分离成分开的颜色的帧的子集。例如,彩色视频数据的帧306可以包括亮度平面和两个色度平面。可以以不同的分辨率对分段308进行采样。
不管帧306是否被划分为分段308,帧306都可以进一步细分为块310,其可以包含与例如帧306中的16x16像素相对应的数据。还可以布置块310以包括来自像素数据的一个或多个分段308的数据。块310还可以具有任何其他合适的大小,例如4x4像素、8x8像素、16x8像素、8x16像素、16x16像素、4x32像素、8x32像素、16x32像素、32x4像素、32x8像素、32x16像素、32x32像素、64x64像素或者通常的nxm像素,其中,n、m可以是2的整数次幂,例如2、4、8、16、32、64、128、256或更大。
图4是根据本公开的实施方式的编码器400的框图。如上所述,编码器400可以在发送站102中实现,例如通过提供存储在诸如存储器204的存储器中的计算机软件程序来实现。计算机软件程序可以包括机器指令,该机器指令当由诸如cpu202之类的处理器执行时使发送站102以在此描述的方式编码视频数据。编码器400还可以被实现为例如包括在发送站102中的专用硬件。编码器400具有以下级以在前向路径(由实线连接线示出)中执行各种功能,以使用视频流300作为输入来产生编码或压缩比特流420:帧内/帧间预测级402、变换级404、量化级406和熵编码级408。编码器400还可包括重构路径(由虚线连接线示出),以重构用于对未来块进行编码的帧。在图4中,编码器400具有以下级以执行在重构路径中的各种功能:去量化级410、逆变换级412、重构级414和环路滤波级416。编码器400的其他结构变体可以用于对视频流300进行编码。
当呈现视频流300以进行编码时,可以以块为单位处理帧306。在帧内/帧间预测级402,可以使用帧内预测或帧间预测或两者的组合对块进行编码。无论如何,都可以形成预测块。在帧内预测的情况下,可以由当前帧中的先前已编码和重构的样本形成预测块的全部或部分。在帧间预测的情况下,可以由使用运动向量确定的一个或多个先前构造的参考帧中的样本形成预测块的全部或部分。
接着,仍然参考图4,可在帧内/帧间预测级402处从当前块减去预测块以产生残差块(也称为残差)。变换级404使用基于块的变换在例如频域中将残差变换为变换系数。这种基于块的变换包括例如dct和非对称dst。其他基于块的变换(例如,身份变换、转置、旋转和karhunen-loève变换(klt))也是可能的。此外,可以将不同变换的组合应用于单个残差。在变换的应用的一个示例中,dct将残差块变换到频域,其中,变换系数值基于空间频率。最低频率(dc)系数在矩阵左上角和最高频率系数在矩阵右下角。值得注意的是,预测块的大小以及因此产生的残差块的大小可能与变换块的大小不同。例如,可以将预测块分为更小的块,对其应用单独的变换。
量化级406使用量化器值或量化水平将所述变换系数转换为离散量子值,其被称为量化变换系数。例如,可以将变换系数除以量化器值并截断。然后,量化变换系数由熵编码级408进行熵编码。可以使用包括令牌树和二进制树在内的任何数目的技术来执行熵代码化。然后,将熵编码的系数以及用于解码块的其他信息(其可以包括例如所使用的预测的类型、变换类型、运动向量和量化器值)一起输出至压缩比特流420。用于解码块的信息可以被熵代码化为压缩比特流420内的块、帧、片和/或区段报头。压缩比特流420也可以被称为编码视频流或编码视频比特流,并且这些术语在本文中可以互换使用。
图4中的重构路径(由虚线连接线示出)可用于确保编码器400和解码器500(以下将进行描述)使用相同的参考帧和块来解码压缩比特流420。重构路径执行与在解码过程期间发生的功能(下面将更详细描述)类似的功能,包括在去量化级410处对量化变换系数进行去量化以及在逆变换级412处对经去量化变换系数进行逆变换以产生推导残差块(也称为推导残差)。在重构级414处,在帧内/帧间预测级402所预测的预测块可以添加到推导残差以创建重构块。可以将环路滤波级416应用于重构的块,以减少诸如构块伪像的失真。
编码器400的其他变型可以用于编码压缩比特流420。例如,基于非变换的编码器400可以针对某些块或帧直接量化残差信号,而无需变换级404。在另一个实施方式中,编码器400可以具有被组合为单个级的量化级406和去量化级410。
图5是根据本公开的实现的解码器500的框图。例如,通过提供存储在存储器204中的计算机软件程序,可以在接收站106中实现解码器500。该计算机软件程序可以包括机器指令,当由诸如cpu202的处理器执行时,该机器指令使得接收站106以在此描述的方式解码视频数据。解码器500还可以以例如包括在发送站102或接收站106中的硬件来实现。类似于以上讨论的编码器400的重构路径,解码器500在一个示例中包括以下级以执行各种功能以从压缩比特流420产生输出视频流516:熵解码级502、去量化级504、逆变换级506、帧内/帧间预测级508、重构级510、环路滤波级512和后处理级514(例如,包括去块滤波)。解码器500的其他结构变型可以用于解码压缩比特流420。
当提供压缩比特流420以进行解码时,压缩比特流420内的数据元素可以由熵解码级502解码以产生一组量化变换系数。去量化级504对量化变换系数进行去量化(例如,通过将量化变换系数乘以量化器值),逆变换级506使用所选择的变换类型对去量化变换系数进行逆变换,以产生可以与由编码器400中的逆变换级412所创建的推导残差完全相同的推导残差。使用从压缩比特流420解码的报头信息,解码器500可以使用帧内/帧间预测级508来创建与在编码器400中例如在帧内/帧间预测级402处创建的预测块相同的预测块。在重构级510处,可以将预测块添加到推导残差以创建重构块。环路滤波级512可以应用于重构块以减少构块伪像。可以将其他滤波应用于重构块。在本示例中,后处理级514将去块滤波应用于重构块以减少块失真,并且结果被输出为输出视频流516。输出视频流516也可以被称为解码视频流,并且将在本文中互换使用这些术语。
解码器500的其他变型可以用于解码压缩比特流420。例如,解码器500可以在没有后处理级514的情况下产生输出视频流516。在解码器500的一些实施方式中,环路滤波级512之前应用后处理级514(例如,包括去块滤波)。另外或替选地,编码器400除了环路滤波级416之外还包括去块滤波级。
图6是用于对图像进行编码的系统600的示例的框图。例如,系统600可以实现图8的过程800。如上所述,系统600可以在发送站102中实现,例如通过提供存储在存储器(例如,存储器204)中的计算机软件程序来实现。计算机软件程序可以包括机器指令,该机器指令在由诸如cpu202之类的处理器执行时使发送站102以本文描述的方式对图像数据进行编码。系统600也可以被实现为例如包括在发射站102中的专用硬件。
系统600将输入图像602(例如,灰度图像或彩色图像)作为输入。例如,输入图像602可以是视频的帧。例如,输入图像602可以是静止图像。
输入图像602被传递到锐化滤波器模块610,锐化滤波器模块610将锐化滤波器应用于输入图像602以获得锐化图像620。锐化图像620被传递到块式编码器630,其被配置为压缩和编码编码比特流640中的锐化图像620。例如,块式编码器630可以是jpeg编码器、x264编码器、x265编码器、vp9编码器或av1编码器。例如,块式编码器630可以包括图4的编码器400,其中,锐化的图像620是图4的视频流300中的视频的帧。块式编码器630可将输入图像602分区为块以作为压缩和编码的一部分。例如,块式编码器630可以将变换(例如,dct)应用于锐化图像620的块。与锐化滤波器模块610所应用的锐化滤波器匹配的模糊滤波器可以应用于从编码比特流640解码的对应的解码的图像以减轻高频块代码化伪像,同时对原始输入图像602几乎没有失真。例如,模糊滤波器的传递函数可以是锐化滤波器的传递函数的近似逆。
锐化滤波器模块610生成与所应用的锐化滤波器匹配的模糊滤波器的指示650。例如,模糊滤波器的指示650可以包括模糊滤波器系数的列表。例如,模糊滤波器的指示650可以包括码本索引,该码本索引指定由接收站存储在码本中的一组模糊滤波器中的、与所应用的锐化滤波器匹配的一个模糊滤波器。在该示例系统中,模糊滤波器的指示650由熵编码器660编码,并且所得到的模糊滤波器的压缩指示650被包括在编码比特流640中。例如,模糊滤波器的压缩指示650可以包括在编码比特流640的报头部分中。
可以基于一个或多个质量设置634(例如,jpeg质量设置)来配置块式编码器630。例如,一个或多个质量设置634可以确定块式编码器所使用的块大小和/或块式编码器630的其他参数。锐化滤波器模块610还可以使用一个或多个质量设置634来确定锐化滤波器和将使用的匹配的模糊滤波器。在一些实施方式中,可以基于模糊滤波器的指示650来修改块式编码器630的量化矩阵。例如,可以修改块式编码器630的量化矩阵以将更少的比特分配给锐化滤波器模块610的锐化滤波器所强调的频率。
锐化滤波器模块610可以确定要在输入图像602上应用的锐化滤波器以及接收站在解码基于输入图像602的图像时要使用的对应的匹配模糊滤波器。在一些实施方式中,锐化滤波器和匹配的模糊滤波器是通过从匹配的滤波器对的码本中选择来确定的。例如,可以基于一个或多个质量设置634来选择匹配的一对锐化滤波器和模糊滤波器。在一些实施方式中,锐化滤波器和模糊滤波器的系数是通过搜索对输入图像602导致低的端到端失真的系数来确定。例如,可以使用梯度下降搜索算法(例如,使用端到端平方误差成本函数)来确定锐化滤波器和模糊滤波器的系数。在一些实施方式中,模糊滤波器的内核大小小于锐化滤波器的内核大小。例如,模糊滤波器可以具有来自图10a的阵列1000的系数,并且锐化滤波器可以具有来自图10b的阵列1050的系数。例如,模糊滤波器可以具有来自图10a的阵列1100的系数,并且锐化滤波器可以具有来自图10b的阵列1150的系数。
图7是用于解码图像的系统700的示例的框图。系统700被配置为对已经由图6的系统600编码的编码比特流702进行解码。例如,系统700可以实现图9的过程900。系统700可以例如通过提供存储在存储器204中的计算机软件程序来在接收站106中实现。计算机软件程序可以包括机器指令,当由诸如cpu202之类的处理器执行时,该机器指令使接收站106以这里描述的方式解码图像数据。系统700还可以以例如在发送站102或接收站106中包括的硬件来实现。
系统700将编码比特流702作为输入,并输出与由对应的编码系统(例如,系统600)编码的输入图像(例如,输入图像602)非常近似的输出图像740。例如,输出图像740可以是视频的帧。例如,输出图像740可以是静止图像。例如,实现系统700的接收站(例如,接收站106)可以存储、显示或发送输出图像740。
系统700包括块式解码器710,其被配置为对来自编码比特流702的数据进行解码以获得组合以形成组块图像720的多个图像数据的块。例如,块式解码器710可为jpeg解码器、x264解码器、x265解码器、vp9解码器或av1解码器。例如,块式解码器710可以将逆变换(例如,逆dct)应用于组块图像720的块。例如,块式解码器710可以包括图5的解码器500,其中,组块图像720是图5的输出视频流516中的视频的帧。组块图像720可以表现出构块伪像,其包括由对应的编码系统(例如,系统600)编码的输入图像(例如,输入图像602)的高频失真。
组块图像720被传递到模糊滤波器模块730,该模糊滤波器模块730将模糊滤波器应用于组块图像720以获得输出图像740(例如,视频的帧或静止图像)。可以将模糊滤波器与应用到编码比特流702中编码的对应输入图像(例如,输入图像602)的锐化滤波器(例如,锐化滤波器模块610的锐化滤波器)进行匹配。通过匹配在编码之前应用的锐化滤波器,模糊滤波器可以用来减轻高频块代码化伪像,同时对原始输入图像(例如,输入图像602)的失真很小。例如,模糊滤波器的传递函数可以是锐化滤波器的传递函数的近似逆。在一些实施方式中,模糊滤波器的内核大小小于匹配的锐化滤波器的内核大小,这可以促进低复杂度的接收站。在一些实施方式中,将模糊滤波器模块730的模糊滤波器应用于组块图像720的亮度通道以获得输出图像740的亮度通道。在一些实施方式中,将模糊滤波器模块730的模糊滤波器应用于组块图像720的多个通道以获得输出图像740。例如,模糊滤波器可具有来自图10a的阵列1000的系数,并且,对应的锐化滤波器可以具有来自图10b的阵列1050的系数。例如,模糊滤波器可以具有来自图10a的阵列1100的系数,并且,对应的锐化滤波器可以具有来自图10b的阵列1150的系数。
系统700包括熵解码器750,该熵解码器750用于对来自编码比特流702的数据进行解码以获得将由模糊滤波器模块730应用的模糊滤波器的指示760。例如,模糊滤波器的指示760可以包括模糊滤波器系数的列表。例如,模糊滤波器的指示760可以包括码本索引,该码本索引指定与在编码期间应用的锐化滤波器(例如,锐化滤波器模块610的锐化滤波器)匹配的、由接收站存储在码本中的一组模糊滤波器中的一个。在一些实施方式中,模糊滤波器的指示760包括编码比特流702的图像质量设置(例如,jpeg质量设置)。例如,可以基于编码比特流702的图像质量设置的指示来从一组可用的模糊滤波器(例如,存储在接收站代码本中)中选择模糊滤波器模块730的模糊滤波器。
在一些实施方式中,可以基于模糊滤波器的指示760来修改块式解码器710的量化矩阵。例如,可以修改块式解码器710的量化矩阵,以匹配对于与在编码比特流702的编码期间使用的量化矩阵的修改和/或将更多的比特分配给模糊滤波器强调的频率。
图8是用于对图像进行编码的过程800的示例的流程图。该过程包括:确定810锐化滤波器;生成820与锐化滤波器匹配的模糊滤波器的指示;修改830块式编码器的量化矩阵;将锐化滤波器应用840于输入图像以获得锐化图像;编码850锐化图像以生成编码比特流的数据;在编码比特流中对匹配的模糊滤波器的指示进行编码860;以及,存储或传输870编码比特流。例如,过程800可以由图6的系统600实现。例如,过程800可以由图2的计算设备200实现。例如,过程800可以由图1的发送站102实现。
过程800包括确定810锐化滤波器。在一些实施方式中,确定810锐化滤波器包括通过搜索导致输入图像的低的端到端失真的系数来确定810锐化滤波器和模糊滤波器的系数。例如,可以采用梯度下降搜索算法(例如,使用端到端平方误差成本函数)来确定810锐化滤波器和模糊滤波器的系数。在一些实施方式中,模糊滤波器的内核大小小于锐化滤波器的内核大小。例如,可以以这种方式搜索具有匹配的锐化滤波器(例如,具有作为相应模糊滤波器的近似逆的传递函数的锐化滤波器)的高斯模糊滤波器(例如,标准偏差在0.8到1.5像素范围内)的空间。在一些实施方式中,基于块式编码器的图像质量设置(例如,jpeg质量设置),从一组可用的锐化滤波器(例如,具有接收站存储在码本中的匹配的模糊滤波器的一组锐化滤波器)中选择锐化滤波器。例如,什么程度的模糊是适当的可以取决于块式编码器在对通过将锐化滤波器应用于输入图像而获得的锐化图像进行编码时所使用的块大小。
从期望的模糊滤波器导出锐化滤波器的过程可以构造为特定类型的反卷积。例如,模糊滤波器可以首先被确定为具有基于所选图像质量水平来确定的标准偏差(sigma)的高斯滤波器。然后可以将锐化滤波器确定810为模糊滤波器的逆。请注意,此过程可能与图像无关。可以通过求解使l2(i-b(s(i))最小化的锐化滤波器的系数来确定810匹配的锐化滤波器;其中,l2(x)是图像x中所有值的平方和,i是中心为单一值1.0的全零图像;b(x)将模糊滤波器应用于图像x,s(x)将锐化滤波器应用于图像x。这涉及拟合线性函数以最小化均方误差。例如,这可以使用共轭梯度方法来求解,以确定810锐化滤波器。
过程800包括生成与所确定810的锐化滤波器匹配的模糊滤波器的指示。例如,模糊滤波器的指示可以包括模糊滤波器系数的列表。在一些实施方式中,模糊滤波器的指示包括码本索引,该码本索引指定接收站存储在码本中的一组模糊滤波器中的、与所确定810的锐化滤波器匹配的一个模糊滤波器。在一些实施方式中(例如,其中,使用块式编码器的质量设置来确定810锐化滤波器),块式编码器的质量设置用作模糊滤波器的指示。可以生成或从用户或另一系统接收质量设置(例如,jpeg质量设置)。
过程800包括基于模糊滤波器的指示来修改830块式编码器的量化矩阵。例如,可以修改830块式编码器的量化矩阵,以将更多的比特分配给模糊滤波器所强调的频率。例如,可以修改830块式编码器的量化矩阵,以将更少的比特分配给锐化滤波器模块610的锐化滤波器所强调的频率。
过程800包括将锐化滤波器应用840于输入图像以获得锐化图像。锐化滤波器与模糊滤波器匹配。例如,模糊滤波器的传递函数可以是锐化滤波器的传递函数的近似逆。例如,模糊滤波器可以具有来自图10a的阵列1000的系数,并且锐化滤波器可以具有来自图10b的阵列1050的系数。例如,模糊滤波器可以具有来自图10a的阵列1100的系数,并且锐化滤波器可以具有来自图10b的阵列1150的系数。输入图像可以是灰度图像或具有多个颜色通道(例如,红色、绿色、蓝色或亮度通道和色度通道)的彩色图像。例如,输入图像可以是视频帧。例如,输入图像可以是静止图像。例如,可以通过使锐化滤波器的脉冲响应与输入图像卷积来应用840锐化滤波器。
过程800包括使用块式编码器(例如,块式编码器630)对锐化图像进行编码850,以生成编码比特流的数据。例如,块式编码器可以是jpeg编码器、x264编码器、x265编码器、vp9编码器或av1编码器。例如,块式编码器可以包括图4的编码器400,其中,锐化图像是图4的视频流300中的视频帧。作为压缩和编码的一部分,块式编码器可以将输入图像分区成块。例如,块式编码器可以将变换(例如,dct)应用于锐化图像的块。
过程800包括在编码比特流中编码860模糊滤波器的指示。例如,模糊滤波器的指示可以由熵编码器编码860,并且模糊滤波器的所得的压缩指示可以包括在编码比特流中。在一些实施方式中,可以将模糊滤波器的指示编码860(将该指示复用或插入而不压缩)到编码比特流中的一位置。例如,模糊滤波器的指示(压缩或未压缩的)可以在编码比特流的报头部分中被编码860。
过程800包括存储或传输870编码比特流。例如,编码比特流可以被存储870在辅助存储器214或存储器204中。例如,编码比特流可以经由网络接口从发送站102通过网络104被传输870到接收站106。
图9是用于解码图像的过程900的示例的流程图。过程900包括:接收910编码比特流;确定920模糊滤波器;修改930块式解码器的量化矩阵;从编码比特流解码940数据以获得图像数据的块;组合950图像数据的块以获得组块图像;将模糊滤波器应用960于组块图像以获得输出图像;以及,存储、显示或传输输出图像。例如,过程900可以由图7的系统700实现。例如,过程900可以由图2的计算设备200实现。例如,过程900可以由图1的接收站106来实现。
过程900包括接收910编码比特流,所述编码比特流是至少部分通过下述操作而生成的:将锐化滤波器应用于输入图像以获得锐化图像,并将块式编码器应用于锐化图像。例如,可以从发送站102通过网络104经由在接收站106处的网络接口接收编码比特流。
过程900包括确定920与锐化滤波器匹配的模糊滤波器。例如,确定920模糊滤波器可以包括:对来自编码比特流的数据进行解码以获得模糊滤波器。在一些实施方式中,可以从编码比特流中解码模糊滤波器系数的列表以确定920模糊滤波器。在一些实施方式中,从编码比特流中解码码本索引,以确定920模糊滤波器。码本索引可以指定由接收站存储在码本中的一组模糊滤波器中、与在编码期间应用的锐化滤波器匹配的一个模糊滤波器。例如,可以通过以下操作来确定920模糊滤波器:基于编码比特流的图像质量设置(例如,jpeg质量设置)的指示来从一组可用的模糊滤波器中选择模糊滤波器。发送站可能已经使用了相同的图像质量设置以从一组匹配的可用的锐化滤波器中选择匹配的锐化滤波器。
过程900包括:基于模糊滤波器的指示来修改930块式解码器的量化矩阵。例如,可以修改930块式解码器的量化矩阵,以匹配在编码比特流的编码期间使用的对量化矩阵的修改和/或将更多的比特分配给模糊滤波器强调的频率。在一些实施方式中,使用存储在表中的、由码本索引所索引的参数来修改930量化矩阵,该码本索引也用于确定920模糊滤波器。
过程900包括使用块式解码器(例如,块式解码器710)对来自编码比特流的数据进行解码940,以获得多个图像数据的块。例如,块式解码器可以是jpeg解码器、x264解码器、x265解码器、vp9解码器或av1解码器。例如,块式解码器可以将逆变换(例如,逆dct)应用于图像数据的块。
过程900包括组合950多个图像数据的块以形成组块图像。该组块图像可以表现出构块伪像,其包括在编码比特流中被编码的输入图像的高频失真。块可以由块式解码器(例如,块式解码器710)组合950。例如,块式解码器可以包括图5的解码器500,其中,组块图像是图5的输出视频流516中的视频的帧。
过程900包括将与锐化滤波器匹配的模糊滤波器应用960于组块图像以获得输出图像。通过匹配在编码之前应用的锐化滤波器,模糊滤波器可以用于减轻高频块代码化伪像,同时对原始输入图像(例如,输入图像602)的失真很小。例如,模糊滤波器的传递函数可以是锐化滤波器的传递函数的近似逆。在一些实施方式中,模糊滤波器具有比锐化滤波器更小的内核大小,这可以促进低复杂度的接收站。在一些实施方式中,将模糊滤波器应用960于组块图像的亮度通道,以获得输出图像的亮度通道。在一些实施方式中,将模糊滤波器应用960于组块图像的多个通道以获得输出图像。例如,模糊滤波器可以具有来自图10a的阵列1000的系数,并且相应的锐化滤波器可以具有来自图10b的阵列1050的系数。例如,模糊滤波器可以具有来自图10a的阵列1100的系数,并且相应的锐化滤波器可以具有来自图10b的阵列1150的系数。输出图像可以是灰度图像或具有多个颜色通道(例如,红色、绿色、蓝色或亮度通道和色度通道)的彩色图像。例如,输出图像可以是视频的帧。例如,输出图像可以是静止图像。例如,可以通过使模糊滤波器的脉冲响应与组块图像卷积来应用960模糊滤波器。
过程900包括存储、显示或传输970输出图像。例如,输出图像可以被存储970在辅助存储器214或存储器204中。例如,输出图像可以被显示970在显示器218上。例如,输出图像可以经由网络接口或串行端口(例如,高清多媒体接口(hdmi))被传输970到另一个设备进行显示。
图10a是模糊滤波器的系数的阵列1000的示例。阵列1000为模糊滤波器指定5×5像素内核。阵列1000的模糊滤波器是标准偏差(sigma)为0.8的高斯滤波器。例如,阵列1000可以存储在接收站(例如,接收站106)中的码本中,并应用于以jpeg质量设置为20解码的组块图像。
图10b是锐化滤波器的系数的阵列1050的示例。阵列1050为锐化滤波器指定9×9像素的内核。阵列1050的锐化滤波器与阵列1000的模糊滤波器匹配。阵列1050的锐化滤波器是阵列1000的模糊滤波器的近似逆(就最小均方误差而言)。
例如,输入图像可以通过以下操作编码:(1)应用阵列1050的锐化滤波器(与之卷积)以获得锐化图像;(2)使用质量设置等于20的jpeg编码器对锐化的图像进行编码。对应的解码步骤为:(1)使用jpeg解码器进行解码;以及(2)应用阵列1000的模糊滤波器(与之卷积),以获得相对于输入图像具有低失真的输出图像。
图11a是模糊滤波器的系数的阵列1100的示例。阵列1100为模糊滤波器指定5×5像素内核。阵列1100的模糊滤波器是标准偏差(sigma)为0.9的高斯滤波器。例如,阵列1100可以存储在接收站(例如,接收站106)中的码本中,并且可以应用于以jpeg质量设置为15解码的组块图像。与图11b的模糊滤波器相比,图11a的滤波器使用更大的标准偏差,以便补偿在将更低质量设置(即,15对20)用于编码方案时可能出现的更多高频构块伪像,
图11b是锐化滤波器的系数的阵列1150的示例。阵列1150为锐化滤波器指定9×9像素的内核。阵列1150的锐化滤波器与阵列1100的模糊滤波器匹配。阵列1150的锐化滤波器是阵列1100的模糊滤波器的近似逆(就最小均方误差而言)。
例如,可以通过以下操作对输入图像进行编码:(1)应用阵列1150的锐化滤波器(与之卷积)以获得锐化图像;(2)使用质量设置等于15的jpeg编码器对锐化的图像进行编码。对应的解码步骤为:(1)使用jpeg解码器解码;(2)应用阵列1100的模糊滤波器(与之卷积)以获得相对于输入图像具有低失真的输出图像。
上面描述的编码和解码的方面示出了一些编码和解码技术。然而,应当理解,如在权利要求书中使用的那些术语,编码和解码可以表示压缩、解压缩、变换或数据的任何其他处理或改变。
词语“示例”或“实施方式”在本文中用来表示用作示例、实例或例示。本文中被描述为“示例”或“实施方式”的任何方面或设计不必被解释为相对于其他方面或设计优选或有利。相反,使用词语“示例”或“实施方式”旨在以具体方式呈现概念。如在本申请中使用的,术语“或”旨在意指包括性的“或”而不是排他性的“或”。也就是说,除非另外指定或从上下文清楚可知,否则“x包括a或b”旨在表示任何自然的包含性排列组合。也就是说,如果x包括a;x包括b;或x包括a和b,则在任何上述情况下均满足“x包括a或b”。另外,在本申请和所附权利要求书中使用的冠词“一”和“一个”通常应当被解释为意指“一个或多个”,除非上另外指出或从上下文清楚是针对单数形式。此外,在整个本公开中,贯穿本公开的术语“实施方式”或“一个实施方式”的使用并不旨在表示相同的实施例或实施方式,除非如此描述。
发送站102和/或接收站106的实施方式(以及存储在其上和/或由其(包括由编码器400和解码器500)执行的算法、方法、指令等,)可以以硬件、软件或其任何组合实现。硬件可以包括例如计算机、知识产权(ip)核心、专用集成电路(asic)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或任何其他合适的电路。在权利要求中,术语“处理器”应被理解为单独地或组合地包括任何前述硬件。可互换使用术语“信号”和“数据”。此外,发送站102和接收站106的部分不必一定以相同的方式实现。
另外,在一方面,例如,可以使用具有计算机程序的计算机或处理器来实现发送站102或接收站106,该计算机程序在被执行时执行在此描述的任何相应方法、算法和/或指令。另外或替选地,例如,可以利用专用计算机/处理器,其可以包含用于执行本文所述的任何方法、算法或指令的其他硬件。
发送站102和接收站106可以例如在视频会议系统中的计算机上实现。替选地,发送站102可以在服务器上实现,而接收站106可以在与服务器分开的设备(例如,手持通信设备)上实现。在这种情况下,发送站102可以使用编码器400来将内容编码为编码视频信号,并将编码视频信号发送给通信设备。进而,通信设备然后可以使用解码器500对编码视频信号进行解码。替选地,通信设备可以解码本地存储在通信设备上的内容,例如,未由发送站102发送的内容。其他发送站102和接收站106实现方案是可用的。例如,接收站106可以是大体上固定的个人计算机,而不是便携式通信设备,和/或包括编码器400的设备也可以包括解码器500。
此外,本公开的全部或部分实施方式可以采取可从例如有形计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质可以是例如可以有形地包含、存储、通信或传输程序以供任何处理器使用或与其结合使用的任何设备。介质可以是例如电子、磁性、光学、电磁或半导体设备。也可获得其他合适的介质。
已经描述了上述实施例、实施方式和方面,以允许容易理解本公开并且不限制本公开。相反,本公开意图覆盖包括在所附权利要求书的范围内的各种修改和等同布置,该范围应被赋予最宽泛的解释,以涵盖法律允许的所有这样的修改和等同结构。