CN114009048B - 视频译码中的滤波装置和方法 - Google Patents

视频译码中的滤波装置和方法 Download PDF

Info

Publication number
CN114009048B
CN114009048B CN202080044073.4A CN202080044073A CN114009048B CN 114009048 B CN114009048 B CN 114009048B CN 202080044073 A CN202080044073 A CN 202080044073A CN 114009048 B CN114009048 B CN 114009048B
Authority
CN
China
Prior art keywords
block
current
samples
reconstructed
neighboring
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202080044073.4A
Other languages
English (en)
Other versions
CN114009048A (zh
Inventor
谢尔盖·尤里耶维奇·伊科宁
维克多·阿列克谢耶维奇·斯蒂平
亚历山大·亚历山德罗维奇·卡拉布托夫
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN114009048A publication Critical patent/CN114009048A/zh
Application granted granted Critical
Publication of CN114009048B publication Critical patent/CN114009048B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本公开涉及滤波器、使用该滤波器的编码器和解码器、滤波方法和对应的程序、以及使用该滤波方法或该滤波器的编码和解码。滤波包括通过扩展当前重建块以包括至少来自当前重建块的填充样本,来获得扩展重建块。在填充之后,将扩展重建块的当前像素和当前像素的相邻像素加载到线性缓冲器中,并进行1D变换。使用查找表在频域中执行滤波,并且将经滤波的像素变换回来。

Description

视频译码中的滤波装置和方法
相关申请的交叉引用
本申请要求于2019年6月18日提交的申请号为PCT/RU2019/050091、发明名称为“视频译码中的滤波装置和方法”的PCT申请和2019年6月18日提交的申请号为PCT/RU2019/050090、发明名称为“视频译码中的滤波装置和方法”的PCT申请的优先权,通过引用将其结合在本申请中。
技术领域
本发明总体上涉及视频译码领域。更具体地,本发明涉及用于视频译码的滤波器、用于对重建视频帧进行滤波的方法、实现该方法的程序、以及包括这种用于视频译码的滤波器的编码装置和解码装置。
背景技术
自DVD光盘问世以来,数字视频就得到了广泛应用。在传输之前对视频进行编码,并使用传输介质传输。观看者接收该视频,并使用观看设备对视频进行解码和显示。多年以来,由于例如更高的分辨率、色深、以及帧速率,视频质量得到了提高。这产生了更大的数据流,这些数据流如今通常通过互联网和/或移动通信网络进行传输。
然而,由于高分辨率视频承载更多信息,因此通常需要更多带宽。为了降低带宽需求,引入了包括视频压缩的视频译码标准。在对视频进行编码后,带宽需求(或存储情况下对应的内存需求)会降低。带宽需求的降低通常以质量为代价。因此,视频译码标准试图在带宽需求和质量之间找到平衡。
由于需要不断提高质量并且降低带宽需求,因此在不断寻找能够在降低带宽需求的同时维持质量或是在维持带宽需求的同时提高质量的解决方案。此外,有时可以接受折中方案。例如,如果质量改善明显,则可能可以接受带宽需求提高。
高效视频译码(high efficiency video coding,HEVC)是本领域技术人员公知的视频译码标准的示例。在HEVC中,译码单元(coding unit,CU)将被分割为预测单元(prediction unit,PU)或变换单元(transform unit,TU)。通用视频译码(versatilevideo coding,VVC)下一代标准是ITU-T视频译码专家组(video coding experts group,VCEG)和ISO/IEC运动图像专家组(moving picture experts group,MPEG)标准化组织在称为联合视频探索小组(joint video exploration team,JVET)的伙伴关系中合作开展的最新联合视频项目。VVC也称为ITU-T H.266/下一代视频译码(next generation videocoding,NGVC)标准。VVC中去掉了多种划分类型的概念,即去掉了对CU、PU、以及TU概念的区分(除非CU的尺寸对于最大变换长度而言过大),并且VVC支持更灵活的CU划分形状。
图像滤波常常用于强调图像的特定特征或用于增强经滤波的图像的客观质量或感观质量。图像滤波需要处理各种噪声源。因此,提出了用于增强质量的各种方法,且这些方法目前正在使用。例如,在自适应环路滤波(adaptive loop filter,ALF)方法中,每个重建帧被划分为小的宏块(超像素)的集合,并且通过该自适应环路滤波器对每个宏块进行滤波,使得经滤波的重建帧中的每个像素是在生成经过滤波的像素的位置周围,从重建帧中的像素的连接区域内的几个像素的加权和。加权系数(也称为滤波系数)具有中心对称的属性,并从编码器侧传输到解码器侧。边缘通常具有较大尺寸,因此传输的加权系数的数量会变多,导致无法进行高效处理。在编码器侧,大量的加权系数需要进行复杂的率失真优化(rate-distortion optimization,RDO),以减少传输的加权系数的数量。在解码器侧,ALF需要实现通用乘法,需要为每个2x2像素块重新加载这些乘法。
因此,需要改进的滤波器和方法,以在低复杂度的情况下提高预测质量,从而提高视频译码效率。
发明内容
本发明的目的是提供一种改进的滤波器和方法,能够以有限的复杂度提高滤波效率,从而提高视频译码效率。
通过独立权利要求的主题实现上述目的和其他目的。进一步的实施方式在从属权利要求、说明书、以及附图中是显而易见的。
根据一些实施例,对当前重建块进行扩展以包括填充样本,在频域中对扩展重建块进行滤波之前,从当前重建块中获得该填充样本。
即使对于没有可用的相邻样本的像素,这种扩展也有利于进行高效和统一的滤波。
根据一个方面,提供了一种滤波器,该滤波器在视频编码装置或视频解码装置中使用以处理当前重建块,当前重建块包括多个像素,其中,滤波器用于:通过扩展当前重建块以包括一个或多个填充样本来获得扩展重建块,一个或多个填充样本基于至少一个来自当前重建块的样本获得;根据预定义的扫描模板,将扩展重建块中的当前像素和当前像素的相邻像素加载到线性缓冲器中;对线性缓冲器中的像素执行1D变换,获得频谱分量;基于获得的频谱分量,通过使用查找表获得经滤波的频谱分量;对经滤波的频谱分量执行1D逆变换,获得经滤波的像素;以及基于经滤波的像素生成经滤波的重建块。
频域中的滤波器有利于低复杂度的实施方式,而当前重建块的扩展可以提高滤波的质量,并且能够对块的所有像素应用相同的滤波操作(例如,相同尺寸/形状的滤波器)。然而,需要注意的是,本公开不仅限于实际应用这种统一的滤波操作。
当前重建块是通过当前块的重建获得的。当前重建块是指当前块的经重建的样本。重建可以是分别由视频编码器和/或解码器执行的视频编码和/或视频解码的一部分,特别是由视频编码器的重建单元和/或视频解码器的重建单元执行的视频编码和/或视频解码的一部分。
在一个实施例中,扩展当前重建块以进一步包括一个或多个填充样本,该一个或多个填充样本基于来自与当前重建块相邻的相邻重建块的至少一个样本获得。
提供基于相邻样本和基于当前重建块样本的两种填充类型有利于在块的边界上获得更平滑的滤波结果。
例如,在相邻重建块可用时,扩展当前重建块以包括一个或多个填充样本,该一个或多个填充样本基于来自相邻重建块的至少一个样本获得,和/或在相邻重建块不可用时,扩展当前重建块以包括来自当前重建块的样本。
因此,由于相邻像素包含更多信息,可以尽可能地使用相邻像素。对于不可用的相邻样本,基于当前重建块的填充仍然可以使滤波器统一(对于当前重建块的像素是相同的)并改进滤波的结果。
在这个示例中,填充样本可以从当前重建块中选取,并用作填充样本。然而,本公开不限于此,填充样本可以从当前重建块的样本中推导出。例如,可以基于当前重建块的一个或多个样本推导出填充样本。推导可以是通过滤波、选择特定样本或样本的组合等。
根据示例性实施方式,滤波器还用于基于以下一项或多项,确定相邻重建块对于当前重建块是否可用:块译码顺序;当前重建块和所述相邻重建块属于同一图像组,其中同一图像组包括同一条带、同一图块、或同一图块组;或,相邻重建块的位置超出图像边界。
这样确定可用性考虑到了图像边界的限制,并且通过支持独立的图像部分(例如,图块、条带等),可以有利于提供并行处理。
例如,滤波器用于按以下方式推导出相邻重建块的可用性:如果以下条件中的一个或多个为真,则将相邻重建块的可用性确定为假:(i)相邻重建块与当前重建块被包含在不同的图块中,(ii)相邻重建块的位置超出图像边界,(iii)指示相邻重建块是否已经重建的变量等于假;否则,将相邻重建块的可用性确定为真。例如,指示相邻重建块是否已经重建的变量值可以取真或假。变量的值可以基于块译码顺序(块重建顺序)确定。特别地,块译码顺序表示块以何种顺序进行译码,并且因此也表示在当前块之前对哪些块进行了译码。
根据示例性实施方式,一个或多个填充样本是来自相邻重建块的经滤波的样本,相邻重建块是与当前重建块相邻的先前重建的块。
填充样本的预滤波可以进一步提高滤波质量。
例如,当前重建块在左侧和上方扩展以包括一个或多个填充样本,一个或多个填充样本基于来自左侧的相邻重建块和来自上方的相邻重建块的样本获得。例如,相邻的重建块是,在左侧和上方与当前重建块相邻的先前重建的块。
附加地或替代地,当前重建块在右侧和下方扩展以包括一个或多个填充样本,一个或多个填充样本基于来自当前重建块的至少一个样本获得。
这种扩展可以轻松用在具有从左到右以及从上到下的块扫描顺序的系统中,在这种系统中,通常左侧和上方的相邻块可用,而下方和右侧的块可能不可用。
在一个实施例中,获得扩展重建块包括扩展当前重建块以在当前重建块的每一侧上(例如,上方、下方、右侧、左侧)包括:来自在该侧与当前重建块相邻的相邻重建块的相邻重建样本(在相邻重建块可用时),或,离当前重建块最近的样本(在相邻重建块不可用时)。
换句话说,滤波器用于通过以下获得扩展重建块:扩展当前重建块以在当前重建块的每一侧上包括:来自在该侧与当前重建块相邻的相邻重建块的相邻重建样本(在相邻重建块可用时),或,离当前重建块最近的样本(在相邻重建块不可用时)。
这种方式有利于通过适当的填充样本在当前重建块的所有边界上扩展当前重建块,这样可以改进滤波质量。特别地,通过将来自相邻块的样本纳入滤波过程,可以获得相邻块之间更平滑的过渡。另一个益处是对当前块的边界样本和内部样本进行统一的滤波处理,能够避免滤波期间的条件检查和条件性处理。
例如,获得扩展重建块recSamplesPad[x][y](其中样本的x=-1..nCbW,y=-1..nCbH)包括:对于当前重建块recSamples[x][y],其中(xCb,yCb)表示重建块的左上角样本,并且nCbW和nCbH表示当前重建块的宽度和高度:当0≤x≤nCbW–1且0≤y≤nCbH–1,则recSamplesPad[x][y]=recSamples[x][y],以及,否则,对于(xCb+x,yCb+y):将变量dx设为0,并且将变量dy设置为0,当x==-1且样本(xCb+x,yCb+y)不可用时,dx=1,当x==nCbW且样本(xCb+x,yCb+y)不可用时,dx=-1,当y==-1且样本(xCb+x,yCb+y)不可用时,dy=1,当y==nCbH且样本(xCb+x,yCb+y)不可用时,dy=-1,recSamplesPad[x][y]=recSamples[x+dx][y+dy]。
需要注意的是,recSamplesPad对应于扩展重建块样本,而recSamples对应于当前重建块样本。
在一些实施例中,滤波器还用于确定相邻重建块对于当前重建块是否可用,其中,在当前重建块是帧间预测块时,如果相邻重建块不是帧间预测块,则将相邻重建块的可用性确定为假。
考虑预测模式(例如,帧间预测模式)有利于提供并行处理(例如,为帧间译码样本和帧内译码样本提供单独的处理流水线等)。
在示例性实施方式中,基于当前重建块的量化参数(quantization parameter,Qp)获得查找表。这有利于无需复杂计算的高效实施方式。
在一个实施例中,基于来自相邻块的至少一个样本获得的一个或多个填充样本是用于当前重建块的当前图像块的帧内预测的参考样本,其中,当前图像块的重建块是当前重建块。一个或多个填充样本是用于当前图像块的帧内预测的参考样本,其中,当前图像块的当前重建块是基于预测块生成或获得的,该预测块是从帧内预测(和残差块)生成或获得的。
帧内预测参考样本的重复使用可以有利于实施方式的更高效率、更好的内存利用率、以及更低的延迟。
例如,滤波器还用于基于帧内参考样本推导的结果获得一个或多个填充样本。具体地,帧内参考样本推导包括:推导相邻重建样本的可用性,并且在相邻重建样本可用时提取相邻重建样本;在相邻重建样本不可用时,用其他可用的相邻重建样本替换相邻重建样本。
这种特定帧内参考样本的可用性确定也可以重复用于填充样本的可用性确定。
以下示例出对应的方法实施例。以下方法实施例可以实现与上述对应滤波器实施例类似的优点。
根据一方面,提供了一种用于处理当前重建块的方法,其中,当前重建块包括多个像素,其中,该滤波方法包括:通过扩展当前重建块以包括一个或多个填充样本来获得扩展重建块,一个或多个填充样本基于来自当前重建块的至少一个样本获得;根据预定义的扫描模板,将扩展重建块中的当前像素和当前像素的相邻像素加载到线性缓冲器中;对线性缓冲器中的像素执行1D变换,获得频谱分量;通过将每个频谱分量乘以增益系数或通过使用查找表获得经滤波的频谱分量,其中增益系数取决于对应的频谱分量和滤波参数;对经滤波的频谱分量执行1D逆变换,获得经滤波的像素;以及,基于经滤波的像素生成经滤波的重建块。
例如,扩展当前重建块以进一步包括一个或多个填充样本,该一个或多个填充样本基于来自与当前重建块相邻的相邻重建块的至少一个样本获得。
根据实施例,在相邻重建块可用时,扩展当前重建块以包括一个或多个填充样本,该一个或多个填充样本基于来自相邻重建块的至少一个样本获得,和/或在相邻重建块不可用时,扩展当前重建块以包括来自当前重建块的样本。
另外或可选地,该方法还包括基于以下一项或多项,确定相邻重建块对于当前重建块是否可用:块译码顺序;当前重建块和所述相邻重建块属于同一图像组,其中同一图像组包括同一条带、同一图块、或同一图块组;或,相邻重建块的位置超出图像边界。
根据示例性实施方式,该方法还包括按以下方式推导出相邻重建块的可用性:如果以下条件中的一个或多个为真,则将相邻重建块的可用性确定为假:相邻重建块与当前重建块被包含在不同的图块中,相邻重建块的位置超出图像边界,指示相邻重建块是否已经重建的变量等于假;否则,将相邻重建块的可用性确定为真。
例如,一个或多个填充样本是来自相邻重建块的经滤波的样本,该相邻重建块是与当前重建块相邻的先前重建的块。
当前重建块可以在左侧和上方扩展以包括样本,这些样本基于来自左侧的先前重建相邻块和来自上方的先前重建相邻块的样本获得。
可选地或另外地,当前重建块可以在右侧和下方扩展以包括一个或多个填充样本,该一个或多个填充样本基于来自当前重建块的至少一个样本。
根据实施例,获得扩展重建块包括扩展当前重建块以在当前重建块的每一侧上包括:来自在该侧与当前重建块相邻的相邻重建块的相邻重建样本(在相邻重建块可用时),或,离当前重建块最近的样本(在相邻重建块不可用时)。
特别地,获得扩展重建块recSamplesPad[x][y](其中样本的x=-1..nCbW,y=-1..nCbH)包括:对于当前重建块recSamples[x][y],其中(xCb,yCb)表示重建块的左上角样本,并且nCbW和nCbH表示当前重建块的宽度和高度:当0≤x≤nCbW–1且0≤y≤nCbH–1,则recSamplesPad[x][y]=recSamples[x][y],以及,否则,对于(xCb+x,yCb+y):将变量dx设为0,并且将变量dy设置为0,当x==-1且样本(xCb+x,yCb+y)不可用时,dx=1,当x==nCbW且样本(xCb+x,yCb+y)不可用时,dx=-1,当y==-1且样本(xCb+x,yCb+y)不可用时,dy=1,当y==nCbH且样本(xCb+x,yCb+y)不可用时,dy=-1,recSamplesPad[x][y]=recSamples[x+dx][y+dy]。
在一些实施例中,该方法还包括确定相邻重建块对于当前重建块是否可用,其中,在当前重建块是帧间预测块时,如果相邻重建块不是帧间预测块,则将相邻重建块的可用性确定为假。
在示例性实施方式中,基于当前重建块的量化参数Qp获得查找表。
在一个实施例中,基于来自相邻块的至少一个样本获得的一个或多个填充样本是用于当前重建块的当前图像块的帧内预测的参考样本。
特别地,基于帧内参考样本推导的结果获得一个或多个填充样本。
在示例性实施方式中,帧内参考样本推导包括:推导相邻重建样本的可用性,并且在相邻重建样本可用时提取相邻重建样本;在相邻重建样本不可用时,用其他可用的相邻重建样本替换相邻重建样本。
根据一个方面,提供了一种编码方法,用于对来自输入视频流中的当前块进行编码,其中,该编码方法包括根据上述方面、实施例、以及示例中的任一个对当前块的当前重建块进行滤波。
根据一个方面,提供了一种解码方法,用于对来自接收的位流中的当前重建块进行解码,其中,该解码方法包括根据上述方面、实施例、以及示例中的任一个进行滤波的方法。
根据一个方面,本发明涉及一种编码装置,用于对来自输入视频流中的当前帧进行编码,其中,该编码装置包括根据上述方面、实施例、以及示例中的任一个的滤波器。
根据一个方面,本发明涉及一种解码装置,用于对来自接收的位流中的当前重建帧进行解码,其中,该解码装置包括上述方面、实施例、以及示例中的任一个的滤波器。
根据一个方面,本发明涉及一种计算机程序产品,包括程序代码,当程序代码在计算机上或处理器上执行时,用于执行根据上述方面、实施例、以及示例中的任一个的方法。
根据一个方面,提供一种解码器,包括:一个或多个处理器;以及,与处理器耦合的非暂时性计算机可读存储介质,存储由处理器执行的程序,其中,当程序由处理器执行时,使得解码器执行根据上述方面、实施例、以及示例中的任一个的方法。
根据另一方面,提供了一种编码器,包括:一个或多个处理器;以及,与处理器耦合的非暂时性计算机可读存储介质,存储由处理器执行的程序,其中,当程序由处理器执行时,使得编码器执行根据上述方面、实施例、以及示例中的任一个的方法。
根据一个方面,提供了一种非暂时性计算机可读介质,携带程序代码,当程序代码由计算机设备执行时,使得计算机设备执行根据上述方面、实施例、以及示例中的任一个的方法。
因此,提供了能够提高视频译码效率的滤波器。更具体地,根据本发明实施例的改进滤波器根据重建帧自身估计滤波器参数而无需滤波器参数信令,因此,需要的信令明显少于传统滤波器,传统滤波器发信号传输加权系数以用于在图像域中进行滤波。
附图说明
将参照以下附图描述本发明的其他实施例,在附图中:
图1为示出根据实施例的编码装置的示意图,该编码装置包括根据实施例的滤波器;
图2为示出根据实施例的解码装置的示意图,该解码装置包括根据实施例的滤波器;
图3A为示出在根据实施例的滤波器中实现的滤波过程的各方面的示意图;
图3B为示出在根据实施例的滤波器中实现的滤波过程的各方面的示意图;
图4A示出了用于方形重建块内的不同像素位置的模板;
图4B示出了一个像素的等效滤波器形状;
图5为示出根据实施例的滤波方法的步骤的流程图;
图6是示出根据实施例的装置的示例性结构的示意图;
图7示出了左侧和上方的填充;
图8示出了左侧、上方、右侧、和下方的填充;
图9示出了根据另一实施例的装置的示例性结构;
图10为示出根据另一实施例的编码装置的示意图,该编码装置包括根据另一实施例的滤波器;
图11为示出根据另一实施例的解码装置的示意图,该解码装置包括根据另一实施例的滤波器;
图12是示出左侧、上方、右侧、和下方的填充以及使用填充样本进行滤波的示意图;
图13是示出根据实施例的方法的流程图;
图14是示出实现内容交付服务的内容供应系统3100的示例性结构的框图;以及
图15是示出终端设备示例的结构的框图。
在各种附图中,相同的附图标记用于表示相同或功能上等同的特征。
具体实施方式
在以下描述中,参考附图,这些附图形成本公开的一部分,并且通过图示的方式示出了可以在其中实施的本发明的特定方面。可以理解的是,在不脱离本发明范围的情况下,可以利用其他方面并且可以进行结构或逻辑上的改变。因此,由于本发明的范围由所附权利要求界定,所以以下具体实施方式不应视为具有限制意义。
例如,可以理解的是,与所描述的方法有关的公开内容同样适用于配置为执行该方法的对应设备或系统,反之亦然。例如,如果描述了特定的方法步骤,则即使用于执行所描述的方法步骤的单元未在附图中明确描述或示出,对应的设备也可以包括这样的单元。此外,可以理解的是,除非另外特别指出,否则本文描述的各种示例性方面的特征之间可以彼此结合。
图1示出了根据实施例的编码装置100,该编码装置100包括根据实施例的滤波器120。编码装置100用于对视频信号的帧中的块进行编码,该视频信号包括多个帧(本文中也称为图像(picture/image)),其中,每个帧可划分为多个块,且每个块包括多个像素。在实施例中,这些块可以是宏块、编码树单元、编码单元、预测单元、和/或预测块。
本公开中的术语“块”适用于任何类型或任何深度的块,例如,术语“块”包括但不限于根块、块、子块、叶节点等。待译码的块不一定具有相同的尺寸。一幅图像可以包括不同尺寸的块,且视频序列中的不同图像的块栅格也可以不同。在本公开中,术语“块”可以是指MxN(M列×N行)的样本阵列,或是指MxN的变换系数阵列。
可以将视频的帧看作是(数字)图像,数字图像可以看作是具有强度值的样本的二维阵列或矩阵。阵列中的样本也可以称为像素(pixel/pel)(图像元素的简称)。阵列或图像在水平和垂直方向(或轴)上的样本数量定义了图像的尺寸和/或分辨率。为了表示颜色,通常采用三种颜色分量,即图像可以用三种样本阵列表示或包括三种样本阵列。在RBG格式或颜色空间中,图像包括对应的红色、绿色和蓝色的样本阵列。然而,在视频译码中,每个像素通常用亮度和色度格式或颜色空间表示,例如,YCbCr包括由Y指示的亮度分量(有时也用L代替)以及由Cb和Cr指示的两个色度分量。亮度(luminance,简称为luma)分量Y表示亮度或灰度级强度(例如,像在灰度图像中),而两个色度(chrominance,简称为chroma)分量Cb和Cr表示色度或颜色信息分量。因此,YCbCr格式的图像包括亮度样本值(Y)的亮度样本阵列和两个色度值(Cb和Cr)的色度样本阵列。RGB格式的图像可以转换或变换成YCbCr格式,反之亦然,这一过程也称为颜色的变换或转换。如果图像是单色的,则该图像可以仅包括亮度样本阵列。可以理解的是,本公开适用于任何一个或多个(或全部)颜色分量的样本(像素)。
需要注意的是,术语视频译码通常适用于视频编码和/或视频解码。
在图1所示的示例性实施例中,编码装置100以混合视频译码编码器的形式实现。通常,视频信号的第一帧是帧内编码的帧,帧内编码的帧仅使用帧内预测进行编码。为此,图1所示的编码装置100实施例包括用于帧内预测的帧内预测单元154。解码帧内编码的帧可以无需来自其他帧的信息。基于帧内估计单元152提供的信息,帧内预测单元154可以对块执行帧内预测。需要注意的是,在另一示例中,帧内估计单元152和帧内预测单元154可以不是单独地出现在编码装置100中,例如,帧内估计单元152和帧内预测单元154可以集成在一起。
在一个示例中,帧内预测单元154可负责参考样本的推导,参考样本的推导包括的逻辑为:检查相邻的重建样本的可用性,如果可用则提取相邻重建样本(例如,在一些特定的实施方式中从列缓冲器116提取),如果不可用则用其他可用的(相邻)样本替代。将这些参考样本用作帧内预测的输入。
第一帧内编码的帧之后的后续帧中的块可以使用由模式选择单元160选择的帧间预测或帧内预测进行译码。为此,图1所示的编码装置100还包括帧间预测单元144。通常,帧间预测单元144可以用于基于帧间估计单元142提供的运动估计执行块的运动补偿。需要注意的是,在另一示例中,帧间估计单元142和帧间预测单元144可以不是单独地出现在编码装置100中,例如,帧间估计单元142和帧间预测单元144可以集成在一起。
此外,在图1所示的混合编码器实施例中,残差计算单元104确定原始块与原始块的预测之间的差值(即定义了帧内/帧间预测的预测误差的残差块)。变换单元106对该残差块进行变换(例如,使用DCT),量化单元108对变换系数进行量化。熵编码单元170进一步对量化单元108的输出以及例如由帧内预测单元154、帧间预测单元144、和滤波器120提供的译码信息或边信息进行编码。
混合视频编码器通常复制解码器的处理,使得两者生成相同的预测。因此,在图1所示的实施例中,反量化单元110和逆变换单元112执行变换单元106和量化单元108的逆操作,并复制残差块的解码近似值。之后,重建单元114将解码的残差块数据与预测的结果(即,预测块)相加。接着,重建单元114的输出可以提供给列缓冲器116以用于帧内预测,并由滤波器120进一步处理,将在下文中对此进行详细描述。最终的图像存储在解码图像缓冲器130中,并且可以用于后续帧的帧间预测。
图2示出了根据实施例的解码装置200,该解码装置200包括根据实施例的滤波器220。解码装置200用于对经编码的视频信号的帧中的块进行解码。在图2所示的实施例中,解码装置200实现为混合解码器。熵解码单元204对编码图像数据执行熵解码,该编码图像数据通常可以包括预测误差(即,残差块)、运动数据、和其他边信息,这些信息(特别)是帧内预测单元254、帧间预测单元244、以及解码装置200中的其他部件(例如,滤波器220)所需要的。通常,图2所示的解码装置200的帧内预测单元254和帧间预测单元244由模式选择单元260选择,并且与图1所示的编码装置100的帧内预测单元154和帧间预测单元144功能相同,使得编码装置100和解码装置200可以生成相同的预测。帧内预测单元154、254可负责参考样本的推导,参考样本的推导包括的逻辑为:检查相邻的重建样本的可用性,如果可用则提取相邻的重建样本(例如,在一些特定的实施方式中从列缓冲器216,116中提取),如果不可用则用其他可用的相邻的样本替代。将这些参考样本用作帧内预测的输入。解码装置200的重建单元214用于基于反量化单元210和逆变换单元212提供的经滤波的预测块和残差块来重建块。与编码装置100的情况一样,可以将重建块提供给列缓冲器216用于帧内预测,且可以由滤波器220将经滤波的块/帧提供给解码图像缓冲器230以用于帧间预测。
如上所述,滤波器120、220可以在帧的级别使用,例如,滤波器120、220可以用于处理来自解码后的重建视频流中的重建帧,以生成经滤波的重建帧,其中,该重建帧包括多个块。滤波器120、220也可以在块重建(或后重建滤波器)之后在块的级别使用,而无需等待整个帧,例如,滤波器120,220可以用于处理重建块以生成经滤波的重建块,并且将经滤波的重建样本提供给列缓冲器1016和1116(如图10所示),或者将经滤波的重建样本提供给列缓冲器1116(如图11所示),其中,该重建块包括多个像素。
图10示出了根据另一实施例的编码装置1000的示例,其中,滤波器用作块重建之后(例如,紧接块重建之后)的重建后滤波器1018。可以将重建单元1014的结果提供给重建后滤波器1018。之后,重建后滤波器1018的结果可以提供给列缓冲器1016,并且由环路滤波器1020进一步处理,或者直接提供给解码图像缓冲器1030。
图11示出了根据另一实施例的解码装置1100的示例,其中,滤波器用作块重建之后(例如,紧接块重建之后)的重建后滤波器1118。可以将重建单元1114的结果提供给重建后滤波器1118。之后,重建后滤波器1118的结果可以提供给列缓冲器1116,并且由环路滤波器1120进一步处理,或者直接提供给解码图像缓冲器1130。
在实施例中,滤波器120、220、1018、1118包括一个或多个处理器(或一个或多个处理单元或处理电路)。如将在下文中进一步解释的,该一个或多个处理器(或一个或多个处理单元或处理电路)用于:根据预定义的扫描模板(或者说扫描顺序或扫描模式)将当前像素和当前像素的相邻像素加载到线性缓冲器中;通过对线性缓冲器中的每个像素执行1D变换,获得频谱分量;通过将每个频谱分量与增益系数相乘,得到经滤波的频谱,其中,增益系数取决于对应的频谱分量和滤波参数;通过对经滤波的频谱执行1D逆变换,获得经滤波的像素;以及,基于由先前的处理步骤估计出的经滤波的像素,生成经滤波的重建块。在一个示例中,增益系数取决于对应的频谱分量和滤波参数。在另一示例中,增益系数取决于一个或多个滤波参数以及一个或多个对应的频谱分量。在另一示例中,相应的增益系数可以取决于一个或多个滤波参数、对应的频谱分量、以及该频谱分量的左侧和右侧的相邻频谱分量。
在另一实施例中,滤波器120、220、1018、1118(在实施例中)包括一个或多个处理器(或一个或多个处理单元或处理电路)。如将在下文中进一步解释的,该一个或多个处理器(或一个或多个处理单元或处理电路)用于,通过扩展当前重建块以包括一个或多个填充样本来获得扩展后的重建块,该一个或多个填充样本基于来自当前重建块的至少一个样本获得;根据预定义的扫描模板,将扩展重建块的当前像素和当前像素的相邻像素加载到线性缓冲器中;通过对线性缓冲器中的像素执行1D变换,获得频谱分量;基于获得的频谱分量,通过使用查找表,获得经滤波的频谱分量;通过对经滤波的频谱分量执行1D逆变换,获得经滤波的像素;以及,基于经滤波的像素,生成经滤波的重建块。本公开描述了用于有损视频编解码的环内滤波器,该环内滤波器对重建帧中的重建块执行局部滤波和/或非局部滤波。根据一示例,重建帧被划分成一组非重叠的小矩形宏块(CU块)。在下一步骤中,每个重建宏块(重建CU块)在频域中独立于其他重建宏块而进行滤波,特别是独立于其他重建宏块的滤波而进行滤波。该滤波器还可以在变换和重建之后使用,并且滤波的结果既可以用于输出,也可以用于空间预测和时间预测。
在处理的第一步,可以彼此独立地处理重建块内的所有像素。对像素r(0)的处理要用到相邻的像素。例如,如图3A所示,对像素r(0)的处理要用到像素r(1)至像素r(7),并且像素r(0)到r(7)形成一个处理组。
图3A或图3B为示出滤波过程各方面的示意图300、300’,该滤波过程在根据实施例的滤波器中实现。在步骤302、302’中,根据预定义的扫描模板,将来自重建块的一个当前像素和该当前像素的相邻像素加载到线性缓冲器(例如,线性缓冲器116、216、1016、1116)。
在步骤304、304’,对线性缓冲器中的像素r(0)和像素r(0)的相邻像素r(1)至r(7)执行1D变换,以获得频谱分量R:
R=1D_Transform(r)
作为示例,1D变换可以是阿达马(Hadamard)变换。
在步骤306、306’,基于每个频谱分量R(i)与对应的增益系数G(i,σ)的相乘(本文中用“*”表示),在频域中执行滤波,以获得经滤波的频谱分量F(i):F(i)=R(i)*G(i,σ)。
所有频谱分量的增益系数集合为滤波器的频率脉冲响应。
如上所述,在一个示例中,增益系数G(i,σ)取决于对应的频谱分量R(i)以及滤波参数(例如,σ)。
在另一示例中,增益系数G(i,σ)取决于一个或多个滤波参数以及一个或多个对应的频谱分量。在其他示例中,相应的增益系数可以取决于一个或多个滤波参数、对应的频谱分量、以及该频谱分量的左侧和右侧的相邻频谱分量。如果每个增益系数G(i,σ)为重建块的频谱分量与滤波参数的函数,则可以通过以下公式为例对增益系数G(i,σ)进行描述:
Figure GDA0003872823450000091
其中,(i)为频谱分量的索引,R(i)为对应索引(i)的频谱分量,G(i,σ)为对应于R(i)的增益系数,σ为滤波参数,m为等于频谱分量的数量的归一化常数。例如,m对应于1D变换的长度。m的示例性和限制性数值是4。然而,本公开适用于任何大小的1D变换。不同频谱分量的增益系数可以相同,也可以不同。
参数σ作为滤波参数,例如,可以使用以下公式从编码器侧和解码器侧的编解码量化参数(quantization parameter,QP)中推导:
σ=k*2(n*(QP-s))
其中,k、n、s是常数,例如,具有以下数值:k=2.64,n=0.1296,s=11。这些数值只是示例性的,在一些实施方式中可能有不同。
不同频谱分量的滤波参数可以相同,也可以不同。
根据图3A中所示的方法300(或图3B中所示的方法300’),每个频率的增益系数都是从重建像素的频谱分量中推导出的。因此,方法300、300’不需要滤波参数的传输,并且可以在无需额外信令的情况下用于任何重建块。
由于频谱增益系数小于1,因此可以根据以下公式,基于查阅短的查找表(look uptable,LUT)实现滤波:
Figure GDA0003872823450000101
其中,
Figure GDA0003872823450000102
(i)是频谱分量的索引,R(i)为对应索引(i)的频谱分量,σ为滤波参数,THR为阈值,m为等于频谱分量的数量的归一化常数。F(i,σ)表示第(i)个经滤波器滤波的频谱分量,该滤波器使用参数σ进行参数化。
作为示例,可以根据以下公式计算THR,
其中,C为接近1的值(例如,0.9)。
Figure GDA0003872823450000103
在频域中进行滤波之后,在步骤308,对经滤波的频谱分量F执行1D逆变换,以获得经滤波的像素f:
f=1D_Inverse_Transform(F)
在步骤310,将1D逆变换的结果放置在经滤波的重建像素的线性缓冲器中。
在步骤312(图3A或图3B中未示出),基于由先前的处理步骤估计出的经滤波的像素,生成经滤波的重建块。
如图3A所示,作为一个实施例,在滤波步骤306之后,根据预定义的扫描模板将经滤波的像素f(0)放置到该像素f(0)的原始位置处。不使用其他经滤波的样本f(1)至f(7)。在另一实施例中,根据在图3A或图3B的步骤302、302’中使用的预定义的扫描模板,将一个以上的经滤波的像素(例如,经滤波的样本的线性缓冲器中的所有经滤波的像素)添加到累加缓冲器中。累加缓冲器应在滤波步骤之前初始化为0。在最后的归一化步骤中,使累加缓冲器中的累积值除以增加到累加缓冲器当前位置的像素的数量(换句话说,即在前面的处理步骤中增加到累加缓冲器当前位置的像素值的数量),以获得最终的经滤波的像素。之后基于最终的经滤波的像素生成经滤波的重建块。
如果使用了1D阿达马变换,并且根据预定义的扫描模板将经滤波的像素放置到该像素的原始位置处,则用以下伪代码描述方法300的滤波过程:
//重建像素扫描
const int x0=pIn[p0];
const int x1=pIn[p1];
const int x2=pIn[p2];
const int x3=pIn[p3];//p0-p3定义扫描模式
//1D前向阿达马变换
const int y0=x0+x2;
const int y1=x1+x3;
const int y2=x0-x2;
const int y3=x1-x3;
const int t0=y0+y1;
const int t1=y0-y1;
const int t2=y2+y3;
const int t3=y2-y3;
//频域滤波
const int z0=pTbl[t0];
const int z1=pTbl[t1];
const int z2=pTbl[t2];
const int z3=pTbl[t3];
//后向阿达马变换
const int iy0=z0+z2;
const int iy1=z1+z3;
const int iy2=z0-z2;
const int iy3=z1-z3;
//输出经滤波的像素
pOut[p0_out]=iy0+iy1;
如果使用了1D阿达马变换,并且将来自经滤波的样本的线性缓冲器中的一个以上的经滤波的像素添加到累加缓冲器中,则用以下伪代码描述该场景中的滤波过程:
//重建像素扫描
const int x0=pIn[p0];
const int x1=pIn[p1];
const int x2=pIn[p2];
const int x3=pIn[p3];//p0-p3定义扫描模式
//1D前向阿达马变换
const int y0=x0+x2;
const int y1=x1+x3;
const int y2=x0-x2;
const int y3=x1-x3;
const int t0=y0+y1;
const int t1=y0-y1;
const int t2=y2+y3;
const int t3=y2-y3;
//频域滤波
const int z0=pTbl[t0];
const int z1=pTbl[t1];
const int z2=pTbl[t2];
const int z3=pTbl[t3];
//后向阿达马变换
const int iy0=z0+z2;
const int iy1=z1+z3;
const int iy2=z0-z2;
const int iy3=z1-z3;
//经滤波的像素累加
pOut[p0]+=iy0+iy1//p0-p3定义扫描模式
pOut[p1]+=iy0-iy1
pOut[p2]+=iy2+iy3
pOut[p3]+=iy2-iy3
在替代实施例中,累加缓冲器应初始化为未滤波像素值乘以待添加到块中的像素值的最大数量的乘积。待添加到块中的像素值的最大数量根据扫描模板确定。实际上,扫描模板定义了添加到每个位置的像素值的数量。在此基础上,在累加缓冲器初始化期间,可以选择并使用块中的所有位置中的最大数量。然后,在每个累加步骤中,将未滤波像素值从对应经滤波的值中减去并添加到累加缓冲器中:
//经滤波的像素累加
pOut[p0]+=iy0+iy1-x0
pOut[p1]+=iy0-iy1-x1
pOut[p2]+=iy2+iy3-x2
pOut[p3]+=iy2-iy3-x3
本实施例能够避免存储添加到当前位置的多个像素,并且如果添加的像素值的最大数值为2的幂(例如,2、4、8等),则在最后的归一化步骤和累加缓冲器初始化步骤中,允许使用移位运算对应地替换除法和乘法。
对于重建块内的每个像素,在步骤302和步骤310中,基于经滤波的像素在重建块内的位置选择扫描模板。扫描模板的选择是为了保证所有像素都在重建的CU内,并且放置于(位于)正在处理的像素附近。模板内部可以使用任意的扫描顺序。例如,预定义的扫描模板被定义为与当前像素在重建块内的位置相对的空间偏移或栅格偏移的集合,其中,指向相邻像素的偏移位于重建块内部。
需要注意的是,对于如图3B所示的方法300’的有关部分,可以参考如图3A所示的方法300。
图4A示出了用于方形重建块(方形的CU重建块)内部不同像素位置的模板。根据本图,可以基于4点变换对边界像素进行滤波,并且可以基于8点变换对中心像素进行滤波。
对于一边的尺寸大于另一边的矩形重建块,应该沿着长边进行扫描。例如,对于水平矩形块,可以使用以下扫描顺序:
(0,-3),(0,-2),(0,-1),(0,0),(0,1),(0,2),(0,3),(0,4),
其中,在每对(y,x)中,x是相对于滤波重建块内部的滤波像素位置的水平偏移,y是相对于该位置的垂直偏移。
可以根据以下条件,选择性地应用上述滤波器:
·重建块具有非零残差信号;
·根据块的尺寸,例如对于小的重建块(最小尺寸小于阈值);
·根据重建块的长宽比;
·根据重建块的预测模式(帧内预测或帧间预测);或者
·根据上述条件的任意结合。
滤波参数sigma(σ)和扫描模式可以根据上面所列出的条件变化。
图4B示出了对于示例性扫描模板(0,0),(0,1),(1,0),(1,1),考虑了当前块内部的一个像素的等效滤波器的形状。使用3x3像素的方形区域(在3x3方形的中心用深灰色标记了当前像素)对当前像素进行滤波。通过组合来自四个2x2处理组的变换域滤波样本,获得经滤波的像素,换句话说,经滤波的像素是通过组合来自四个处理组的变换域滤波样本获得的,其中每个处理组的形状/尺寸为2x2。可以理解的是,如果当前像素位于块边界(例如上边界),则左上方和右上方的2x2处理组不可用,只有两个2x2处理组(左下方和右下方)可以用于滤波。此外,如果当前像素位于块角落(例如左上角),则只有一个2x2处理组(右下角)可以用于滤波。
为了提高块边缘附近的滤波质量,以及通过对边界像素和角落像素使用相同的2x2组以进行统一处理,可以用额外的样本填充当前块。图7给出了在左侧和上方进行填充的示例。特别地,图7示出了包括4x8个像素(样本)的当前块,并对当前块的左上角像素进行了高亮显示。需要注意的是,在本文中,通常提及的是当前块。然而,在滤波器应用于视频编码和/或视频解码的情况下,更特别地,将当前块称为当前重建块。这是因为如上文中参考图1和图2已经简要解释的,滤波通常应用于重建之后的编码期间和/或解码期间。图7还示出了填充在当前块的上方和左侧的已填充样本。这些已填充样本有助于将滤波器(由图7中的虚线指示)应用到位于当前块的边界处的像素(当前块的样本)。可以将位于当前块的边界处的像素视为当前块的外像素,或视为具有不属于同一(当前)块的一个或多个相邻像素的像素,或是完全不具有相邻像素的像素(例如,由于这些像素位于图像的边界处)。
可以从已经重建的块中获取填充样本,例如,可以从与当前块相邻的块(例如,相邻块)中获取填充样本。需要注意的是,根据处理组的形状(例如,2x2或3x3),可以使用一条或多条填充线。例如,对于2x2处理组,在每侧使用一条填充线。对于3x3处理组,在每侧使用两条填充线。
可以理解的是,填充样本(padding sample)是用于填充的样本。在这些填充样本完成填充后,这些样本是已填充样本(padded sample)。
为了进一步统一块中所有像素的滤波处理(例如,四个2x2处理组用于对当前块中的所有像素进行滤波),如图8所示,除了左上方的填充之外,还可以通过右下方的填充扩展当前块。由于通过排除角落像素和/或边界像素的特殊处理情况而简化了实施方式,所以统一滤波是有益的。
与图7的当前块类似,图8示出了4x8个像素的当前块。在图7的基础上,图8示出了当前块的下方和右侧的已填充样本(包括右下角的像素)。图12基于图8,并且图12包括进一步的说明。中心为右下角像素的虚线方形1260示出了用3x3滤波器进行滤波,该3x3滤波器与应用于左上角的滤波器类似。可以看出,这些已填充样本被用于滤波,例如,被用于导出经滤波的右下角样本和/或左上角样本1250。在本文中,当前块1200通过已填充样本1210和1220在所有四条侧边上扩展。已填充样本1210和1220是当前块1200的外边界上的样本,特别地,是当前块的外边界上的一条样本线。如上所述,已填充样本可以通过四侧(上方、下方、右侧、左侧)中每侧上的一条以上的样本线扩展当前块。
填充样本优先从已重建块的相邻样本中选取。在最新的视频编解码器中,根据块的重建顺序,已重建的块可以位于当前块的左侧或上方,也可以位于右侧或下方。使用来自调整样本的更多信息提高了滤波的质量,并且使块与块之间的过渡更加平滑。需要注意的是,本公开不限于任何特定的块扫描顺序。通常情况下,可以使用来自任何可用相邻块的相邻样本。可用性可以由块的扫描顺序给出。特别地,块的扫描顺序可以对应于块的处理(例如,重建)顺序。换句话说,块的扫描顺序可以定义在对当前块进行滤波时,有哪些块是先前已经重建的(可用的)。
对于硬件或软件实施方式,从相邻块或先前重建的块中提取重建样本可能需要额外的内存负载。为了最小化或省去额外内存,使用预期用于对当前块进行帧内预测的样本是有利的,这些样本通常选取自与当前块的边界相邻的相邻块的一行、两行或更多行以及一列、两列、或更多列。这些样本通常存储在闪存(也称为“列”缓冲器)中,以便在进行帧内预测时能容易地访问,并且这些样本被称为帧内预测的参考样本。
还需要注意的是,在一些实施方式中,在执行帧内预测之前,对参考样本(帧内参考样本)进行预测之前的预处理(例如,滤波),例如,进行平滑、锐化、去振铃、或双边滤波。在这种情况下,使用经过预处理的样本填充当前块是有利的。
如果由于相邻块的重建顺序,或由于当前块相对于图像边界/条带(slice)边界/图块(tile)边界或图块组边界的位置,导致填充区域中的一些样本不可用,则可以如图8和图12所示通过将边界像素扩展到填充区域,以从当前块中填充所需样本。特别地,在图12中,通过将下边界像素和右边界像素扩展到填充区域,获得已填充样本1220。例如,在当前块1200的下方相邻块和右侧相邻块不可用(例如,尚未重建完成、属于其他图块而非当前块、或位于图像边界处)的场景中,这种方法是有利的。已填充样本1210可从相邻块获得。换句话说,填充过程包括检查相邻样本的可用性。如果相邻样本可用,则使用样本(可用的相邻样本)进行填充。否则,使用当前块的样本进行填充。例如,给定待填充区域中的像素位置,可以用来自当前块的样本填充该像素位置,这一样本(在当前块的样本之中)与该给定像素位置的距离最近。
检查相邻样本可用性的逻辑可以与帧内参考样本的推导过程的逻辑相同。以下是包括6.4.1条(用于检查相邻块可用性的推导过程)的帧内参考样本(p[x][y])推导过程的示例:当sps_suco_flag等于1时,适用以下内容:
nCbW*3+nCbH*4+2个相邻样本p[x][y]为后重建滤波过程之后和/或环内滤波过程之前构建的样本,其中x=-1,y=-1..nCbH+nCbW-1、x=0..nCbW+nCbH-1,y=-1、x=nCbW,y=-1..nCbH+nCbW–1、和x=-nCbH..-1,y=-1,这些样本按如下方式推导:
–相邻位置(xNbCmp,yNbCmp)按如下方式指定:
(xNbCmp,yNbCmp)=(xCbCmp+x,yCbCmp+y)  (8-1)
–当前亮度位置(xCbY,yCbY)和相邻亮度位置(xNbY,yNbY)按如下方式推导:
(xCbY,yCbY)=(cIdx==0)?(xCbCmp,yCbCmp):(xCbCmp*SubWidthC,yCbCmp*SubHeightC)  (8-2)
(xNbY,yNbY)=(cIdx==0)?(xNbCmp,yNbCmp):(xNbCmp*SubWidthC,yNbCmp*SubHeightC)(8-3)
–调用6.4.1条中指定的按Z扫描顺序的块的可用性推导过程,将设置为等于(xCbY,yCbY)的当前亮度位置(xCurr,yCurr)和相邻亮度位置(xNbY,yNbY)作为输入,并将输出赋值给availableN。
–每个样本p[x][y]按如下方式推导:
–如果变量availableN为假,则将样本p[x][y]标记为“不可用于帧内预测”,适用以下内容:
–否则(变量availableN为真),将样本p[x][y]标记为“可用于帧内预测”,并且将位置(xNbCmp,yNbCmp)处的样本赋值给p[x][y]。
–当至少一个样本p[x][y]标记为“不可用于帧内预测”,其中x=-1,y=-1..nCbH+nCbW-1、x=0..nCbW+nCbH-1,y=-1、x=nCbW,y=-1..nCbH+nCbW–1、和x=-nCbH..-1,y=-1,调用8.4.4.2条中用于帧内样本预测的参考样本替换过程,其中对于样本p[x][y],有x=-1,y=-1..nCbH+nCbW-1、x=0..nCbW+nCbH-1,y=-1、x=nCbW,y=-1..nCbH+nCbW–1、和x=-nCbH..-1,y=-1,将样本p[x][y]、nCbW、nCbH、以及cIdx作为输入,并且将修改后的样本p[x][y]作为输出,其中x=-1,y=-1..nCbH+nCbW-1、x=0..nCbW+nCbH-1,y=-1、x=nCbW,y=-1..nCbH+nCbW–1、和x=-nCbH..-1,y=-1。
否则,当sps_suco_flag等于0时,适用以下内容:
nCbW*2+nCbH*2+1个相邻样本p[x][y]为环内滤波过程之前构建的样本,
其中x=-1,y=-1..nCbH+nCbW-1和x=0..nCbW+nCbH-1,y=-1,这些样本按如下方式推导:
–相邻位置(xNbCmp,yNbCmp)按如下方式指定:
(xNbCmp,yNbCmp)=(xCbCmp+x,yCbCmp+y)(8-4)
–当前亮度位置(xCbY,yCbY)和相邻亮度位置(xNbY,yNbY)按以下方式推导:
(xCbY,yCbY)=
(cIdx==0)?(xCbCmp,yCbCmp):(xCbCmp*SubWidthC,yCbCmp*SubHeightC)(8-5)
(xNbY,yNbY)=(cIdx==0)?(xNbCmp,yNbCmp):(xNbCmp*SubWidthC,yNbCmp*SubHeightC)  (8-6)
–调用6.4.1条中指定的按Z扫描顺序的块的可用性推导过程,将设置为等于(xCbY,yCbY)的当前亮度位置(xCurr,yCurr)和相邻样本位置(xNbY,yNbY)作为输入,并将输出赋值给availableN。
–每个样本p[x][y]按如下方式推导:
–如果变量availableN为假,则将样本p[x][y]标记为“不可用于帧内预测”,适用以下内容:
–否则(变量availableN为真),将样本p[x][y]标记为“可用于帧内预测”,并且将位置(xNbCmp,yNbCmp)处的样本赋值给p[x][y]。
–当至少一个样本p[x][y]标记为“不可用于帧内预测”,其中x=-1,y=-1..nCbH+nCbW-1和x=0..nCbW+nCbH-1,y=-1,调用8.4.4.2条中用于帧内样本预测的参考样本替换过程,其中对于样本p[x][y],有x=-1,y=-1..nCbH+nCbW-1和x=0..nCbW+nCbH-1,y=-1,将样本p[x][y]、nCbW、nCbH、以及cIdx作为输入,并且将修改后的样本p[x][y]作为输出,其中,x=-1,y=-1..nCbH+nCbW-1、x=0..nCbW+nCbH-1,y=-1。
6.4.1条相邻块可用性的推导过程
该过程的输入为:
–当前块的左上角样本相对于当前图像的左上角亮度样本的亮度位置(xCurr,yCurr),
–相对于当前图像的左上角亮度样本的被相邻块覆盖的亮度位置(xNbY,yNbY)。
该过程的输出为覆盖该位置(xNbY,yNbY)的相邻块的可用性,表示为availableN。
相邻块的可用性availableN按如下方式推导:
–如果相邻块与当前块包含在不同的图块中,则将availableN设置为等于假
–如果相邻块的译码顺序在当前块之前,则将availableN设置为等于假
从上面的示例中可以看出,6.4.1条“相邻块可用性的推导过程”可用于帧内参考样本的推导。填充过程期间的可用性检查过程可以相同或类似。由于在两个模块之间重复使用逻辑,有利节省了实施方式的成本。以下是填充过程的示例性逻辑:
该过程的输入为:
–指定当前亮度块的左上角样本相对于当前图像的左上角样本的位置(xCb,yCb),
–指定当前亮度译码块的宽度和高度的两个变量nCbW和nCbH,
–指定当前块的重建亮度样本的阵列recSamples,
当前块的已填充重建亮度样本的输出阵列为recSamplesPad[x][y],其中x=1..nCbW,y=–1..nCbH,按如下方式推导:
当0≤x≤nCbW–1和0≤y≤nCbH–1时,适用以下内容:
recSamplesPad[x][y]=recSamples[x][y]
否则,
–调用6.4.1条中指定的按Z扫描顺序的块的可用性推导过程,将设置为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)和设置为等于(xCb+x,yCb+y)的相邻亮度位置(xNbY,yNbY)作为输入,并将输出赋值给availableN。
–将变量dx设置为0,并将变量dy设置为0
–当x==-1且availableN为假时,dx=1,
–当x==nCbW且availableN为假时,dx=-1,
–当y==-1且availableN为假时,dy=1,
–当y==nCbH且availableN为假时,dy=-1,
recSamplesPad[x][y]=recSamples[x+dx][y+dy]
其中,在x<0或x>=nCbW或y<0或y>=nCbH位置处的样本属于相邻块,并且其中,可用性的推导过程基于例如块译码顺序、当前块和相邻块属于相同的条带、图块、图块组、相邻块的位置超出图像边界等,定义了该相邻块是否可用于当前块。“availableN”指示了对应的相邻块的可用性。变量dx和dy用于指定当填充区域中的相邻样本不可用时(availableN=false)用于在填充区域中的像素位置进行填充的来自当前块的样本。
例如,当x==-1时,填充当前块的左侧。如果对于左侧,availableN等于FALSE,则将dx设为1(dx=1)。然后,将来自当前块的样本recSamples[0][y+dy](即当前块中的第一条垂直线上的样本,也即当前块的左侧边界上的样本)分配给x的值为-1的recSamplesPad[-1][y](即,当前块左侧的填充区域)。
类似地,当x==nCbW时,则dx=-1,当前块在右侧扩展。特别地,用来自第(nCbW-1)列的样本填充第nCbW列(与当前块的右侧相邻),第(nCbW-1)列是当前块的最后一条线,并且包括来自当前块右边界的样本。
当y==-1时,则dy=1,当前块在上方扩展。特别地,用来自第0行的样本填充第(-1)行(与当前块的上方相邻),第0行是当前块的第一条线,并且包括来自当前块的上边界的样本。
当y==nCbH时,则dy=-1,当前块在下方延伸。特别地,用来自第(nCbH-1)行的样本填充第(nCbH)行(与当前块的下侧相邻),第(nCbH-1)行是当前块的最后一条线,并且包括来自当前块下边界的样本。
当来自相邻块中的特定样本可用(availableN=true)时,变量dx和dx保持为0(如同初始化时一样)。并且通过使用方程recSamplesPad[x][y]=recSamples[x+dx][y+dy],对于x<0和x>=nCbW且y<0和y>=nCbH,从相邻块中获取样本。
换句话说,获得经扩展(重建)的块包括扩展当前(重建)块,以在当前重建块的每侧(左、右、上、下)包括:如果相邻重建块可用,则包括来自在上述一侧(左、右、上、下)与当前重建块相邻的相邻重建块的相邻重建样本,否则包括离当前重建块最近的样本。
需要注意的是,本公开不限于以上描述的示例性的具体实施方式。特别地,示例性变量和条件仅用作具体示例。例如,可以基于其他额外的或替代的条件进行检查。例如,可以基于其他额外的或替代的变量和参数进行检查。此外,本公开可以以任何适应于一些特定编解码参数的方式来实现可用性的推导。
例如,基于块译码顺序确定对应的相邻块是否可用于当前块。在另一示例中,在当前块和相邻块属于同一条带、图块、图块组的情况下,对应的相邻块可用于当前块。在另一示例中,在相邻块的位置超出图像边界的情况下,对应的相邻块不可用于当前块。
块译码顺序可以视为块编码顺序和/或块解码顺序,由于编码和解码对块应用了重建,因此块编码顺序和/或块解码顺序可以视为块重建顺序。如上所述,块重建顺序对应于块扫描顺序,即,对应于扫描图像的块以进行处理(编码、解码、重建)的顺序。
在本公开的一些实施方式中,用于填充过程的相邻样本的可用性检查对于帧间块和帧内块的滤波可能是不同的。对于帧间块,还要进一步检查可用样本属于帧内预测块还是帧间预测块。如果样本属于帧间预测块,则可以用于填充,否则不能用于填充。这对于在不同的流水线中使用不同的操作存储器重建帧内块和帧间块的一些硬件实施方式可能是有利的。在帧间块的后重建滤波期间仅使用来自帧间块的相邻样本,使得能够避免不同流水线之间的依赖,从而简化了逻辑,使整体的处理流水线加速。
为了执行帧内预测,现有的解码器通常包括帧内参考样本推导单元(或过程),将该帧内参考样本推导单元(或过程)用作帧内预测的源。帧内参考样本推导单元(或过程)可以包括执行相邻样本可用性检查的逻辑,该相邻样本与当前块相邻,或例如在多参考线预测技术中其相距更远。如果样本可用,则将其纳入参考样本。否则,由相邻的可用样本替换该不可用样本。在一些有利的实施方式中,如图9所示,用于滤波的填充过程可以重复使用帧内参考样本推导单元(或过程)的结果。这降低了实现成本,使得相同的推导逻辑既可以用于帧内预测也可以用于滤波器填充。
图9是示出本公开实施例的框图。特别地,图9示出了帧内预测单元(模块)930。例如,该帧内预测单元930可以实现为图1中的154、图2中的254、图10中的1054、和/或图11中的1154。帧内预测单元930包括参考样本推导单元(模块)910和预测推导单元920。特别地,将先前重建的块901输入该参考样本推导单元910。该参考样本推导单元910用于推导/确定参考样本935。参考样本935是随后可被预测推导单元920用于推导出当前块的预测值的样本。之后,预测推导单元920输出预测块925。需要注意的是,在本文中,术语“先前重建的块(previously reconstructed block)”901是指用于预测当前块且可用的块(通常是当前块的相邻块)。更特别地,在当前块的重建之前(和预测之前),该先前重建的块已经被重建。
在本示例性实施例中,为预测推导单元920推导出的参考样本935被重复使用,即被传递到填充单元940。填充单元940的另一输入的是(当前)重建块903。例如,该当前重建块包括通过帧内预测920重建的当前块的样本。填充单元将当前重建块903扩展为包括参考样本935。之后,将经扩展的重建块945提供给滤波处理单元/模块950以用于滤波。滤波处理单元950的输出是经滤波的重建块955。
滤波处理模块950和填充单元940都可以被认为是滤波器单元/模块960的一部分。在本公开中,滤波器单元/模块960可以对应于滤波器120、220、1018、1118,并且滤波器120、220、1018、1118的结构包括但不限于以上描述的示例性实施方式。
以下是包括6.4.1条(用于相邻块可用性检查的推导过程)和8.4.4.2条(用于不可用样本的参考样本替换过程)的帧内参考样本(p[x][y])推导过程的示例:
8.4.4.2条用于帧内样本预测的参考样本替换过程
……
当sps_suco_flag等于1时,适用以下内容:
nCbW*3+nCbH*4+2个相邻样本p[x][y]为后重建滤波过程之后和/或环内滤波过程之前构建的样本,其中x=-1,y=-1..nCbH+nCbW-1、x=0..nCbW+nCbH-1,y=-1、x=nCbW,y=-1..nCbH+nCbW–1、和x=-nCbH..-1,y=-1,这些样本按如下方式推导:
–相邻位置(xNbCmp,yNbCmp)按如下方式指定:
(xNbCmp,yNbCmp)=(xCbCmp+x,yCbCmp+y)  (8-7)
–当前亮度位置(xCbY,yCbY)和相邻亮度位置(xNbY,yNbY)按如下方式推导:
(xCbY,yCbY)=(cIdx==0)?(xCbCmp,yCbCmp):(xCbCmp*SubWidthC,yCbCmp*SubHeightC)(8-8)
(xNbY,yNbY)=(cIdx==0)?(xNbCmp,yNbCmp):(xNbCmp*SubWidthC,yNbCmp*SubHeightC)(8-9)
–调用6.4.1条中指定的按Z扫描顺序的块的可用性推导过程,将设置为等于(xCbY,yCbY)的当前亮度位置(xCurr,yCurr)和相邻亮度位置(xNbY,yNbY)作为输入,并将输出赋值给availableN。
–每个样本p[x][y]按如下方式推导:
–如果变量availableN为假,则将样本p[x][y]标记为“不可用于帧内预测”,适用以下内容:
–否则(变量availableN为真),将样本p[x][y]标记为“可用于帧内预测”,并且将位置(xNbCmp,yNbCmp)处的样本赋值给p[x][y]。
–当至少一个样本p[x][y]标记为“不可用于帧内预测”,其中x=-1,y=-1..nCbH+nCbW-1、x=0..nCbW+nCbH-1,y=-1、x=nCbW,y=-1..nCbH+nCbW–1、和x=-nCbH..-1,y=-1,调用8.4.4.2条中用于帧内样本预测的参考样本替换过程,其中对于样本p[x][y],有x=-1,y=-1..nCbH+nCbW-1、x=0..nCbW+nCbH-1,y=-1、x=nCbW,y=-1..nCbH+nCbW–1、和x=-nCbH..-1,y=-1,将样本p[x][y]、nCbW、nCbH、以及cIdx作为输入,并且将修改后的样本p[x][y]作为输出,其中x=-1,y=-1..nCbH+nCbW-1、x=0..nCbW+nCbH-1,y=-1、x=nCbW,y=-1..nCbH+nCbW–1、和x=-nCbH..-1,y=-1。
否则,当sps_suco_flag等于0时,适用以下内容:
nCbW*2+nCbH*2+1个相邻样本p[x][y]为环内滤波过程之前构建的样本,
其中x=-1,y=-1..nCbH+nCbW-1和x=0..nCbW+nCbH-1,y=-1,这些样本按如下方式推导:
–相邻位置(xNbCmp,yNbCmp)按如下方式指定:
(xNbCmp,yNbCmp)=(xCbCmp+x,yCbCmp+y)(8-10)
–当前亮度位置(xCbY,yCbY)和相邻亮度位置(xNbY,yNbY)按以下方式推导:
(xCbY,yCbY)=(cIdx==0)?(xCbCmp,yCbCmp):(xCbCmp*SubWidthC,yCbCmp*SubHeightC)(8-11)
(xNbY,yNbY)=(cIdx==0)?(xNbCmp,yNbCmp):(xNbCmp*SubWidthC,yNbCmp*SubHeightC)(8-12)
–调用6.4.1条中指定的按Z扫描顺序的块的可用性推导过程,将设置为等于(xCbY,yCbY)的当前亮度位置(xCurr,yCurr)和相邻亮度位置(xNbY,yNbY)作为输入,并将输出赋值给availableN。
–每个样本p[x][y]按如下方式推导:
–如果变量availableN为假,则将样本p[x][y]标记为“不可用于帧内预测”,适用以下内容:
–否则(变量availableN为真),将样本p[x][y]标记为“可用于帧内预测”,并且将位置(xNbCmp,yNbCmp)处的样本赋值给p[x][y]。
–当至少一个样本p[x][y]标记为“不可用于帧内预测”,其中x=-1,y=-1..nCbH+nCbW-1和x=0..nCbW+nCbH-1,y=-1,调用8.4.4.2条中用于帧内样本预测的参考样本替换过程,其中对于样本p[x][y],有x=-1,y=-1..nCbH+nCbW-1和x=0..nCbW+nCbH-1,y=-1,将样本p[x][y]、nCbW、nCbH、以及cIdx作为输入,并且将修改后的样本p[x][y]作为输出,其中x=-1,y=-1..nCbH+nCbW-1和x=0..nCbW+nCbH-1,y=-1。
6.4.1条相邻块可用性的推导过程
该过程的输入为:
–当前块的左上角样本相对于当前图像的左上角亮度样本的亮度位置(xCurr,yCurr),
–相对于当前图像的左上角亮度样本的被相邻块覆盖的亮度位置(xNbY,yNbY)。
该过程的输出为覆盖该位置(xNbY,yNbY)的相邻块的可用性,表示为availableN。
相邻块的可用性availableN按如下方式推导:
–如果相邻块与当前块包含在不同的图块中,则将availableN设置为等于假
–如果相邻块的译码顺序在当前块之前,则将availableN设置为等于假
8.4.4.2条用于帧内样本预测的参考样本替换过程
该过程的输入为:
–在sps_suco_flag等于1的情况下,用于帧内样本预测的参考样本p[x][y],其中
x=-1,y=-1..nCbH+nCbW-1、x=0..nCbW+nCbH–1,y=-1,x=nCbW,y=-1..nCbH+nCbW–1和x=-nCbH..-1,y=-1,
–指定当前译码块的宽度和高度的变量nCbW和nCbH,
–指定当前译码块的颜色分量的变量cIdx。
在sps_suco_flag等于1的情况下,该过程的输出为用于帧内样本预测的修改后的参考样本p[x][y],
其中x=-1,y=-1..nCbH+nCbW-1、x=0..nCbW+nCbH-1,y=-1,并且x=nCbW,
y=-1..nCbH+nCbW–1、和x=-nCbH..-1,y=-1。
变量bitDepth按如下方式推导:
–如果cIdx等于0,则将bitDepth设置为等于BitDepthY
–否则,将bitDepth设置为等于BitDepthC.
当sps_suco_flag等于1,适用以下内容:
按如下方式修改样本p[x][y]的数值,其中x=-1,y=-1..nCbH+nCbW-1、x=0..nCbW+nCbH-1,y=-1、x=nCbW,y=-1..nCbH+nCbW–1、和x=-nCbH..-1,y=-1:
–如果所有样本p[x][y]都被标记为“不可用于帧内预测”,其中x=-1,y=-1..nCbH+nCbW-1、x=0..nCbW+nCbH-1,y=-1、x=nCbW,y=-1..nCbH+nCbW–1、和x=-nCbH..-1,y=-1,则用数值1<<(bitDepth-1)替换所有样本p[x][y]的数值。
–否则(至少一个但并非所有样本p[x][y]被标记为“不可用于帧内预测”),适用以下有序步骤:
1.如果p[0][-1]被标记为“不可用于帧内预测”,则用数值1<<(bitDepth-1)替换样本p[x][y]的数值,其中x=-nCbH..nCbW+nCbH-1,y=-1。
2.否则(p[0][-1]被标记为“可用于帧内预测”),以下适用:
–从x=nCbW,y=–1开始,到x=nCbW+nCbH–1,y=–1,依次搜索。一旦有样本p[x][y]被标记为“不可用于帧内预测”,则终止搜索,并用从p[x][y]到p[nCbW+nCbH–1][y]给p[x–1][y]的数值进行赋值。
–如果p[-1][-1]被标记为“不可用于帧内预测”,则用p[0][-1]的数值替换样本p[x][y]的数值,其中x=-nCbH..-1,y=-1。
–否则(p[-1][-1]被标记为“可用于帧内预测”),从x=-1,y=-1开始,到x=-nCbH,y=-1,依次搜索。一旦有样本p[x][y]被标记为“不可用于帧内预测”,则终止搜索,并用从[x][y]到p[-nCbH][y]给p[x+1][y]的数值赋值。
3.如果p[-1][0]被标记为“不可用于帧内预测”,适用以下内容:
–如果p[-1][-1]被标记为“不可用于帧内预测”,则用数值1<<(bitDepth-1)替换样本p[x][y]的数值,其中x=-1,y=-1..nCbH+nCbW–1。
–否则,用p[-1][-1]替换样本p[x][y]的数值,其中x=-1,y=-1..nCbH+nCbW–1。
4.否则(p[-1][0]被标记为“可用于帧内预测”),从x=-1,y=0开始,到x=-1,y=nCbH+nCbW
–1,依次搜索。一旦有样本p[x][y]被标记为“不可用于帧内预测”,则终止搜索,并用从p[x][y]到p[x][nCbH+nCbW–1]给p[x][y–1]的数值赋值。
5.如果p[nCbW][0]被标记为“不可用于帧内预测”,适用以下内容:
–如果p[nCbW][-1]被标记为“不可用于帧内预测”,则用数值1<<(bitDepth-1)替换样本p[x][y]的数值,其中x=nCbW,y=-1..nCbH+nCbW–1。
–否则,用p[nCbW][-1]替换样本p[x][y]的数值,其中x=nCbW,y=-1..nCbH+nCbW–1。
6.否则(p[nCbW][0]被标记为“可用于帧内预测”),从x=nCbW,y=0开始,到x=nCbW,y=nCbH+nCbW–1,依次搜索。一旦有样本p[x][y]被标记为“不可用于帧内预测”,则终止搜索,并用从p[x][y]到p[x][nCbH+nCbW–1],给p[x][y–1]的数值赋值。
否则,当sps_suco_flag等于0,适用以下内容:
按如下方式修改样本p[x][y]的数值,其中x=-1,y=-1..nCbH+nCbW-1和x=0..nCbW+nCbH-1,y=-1:
–如果所有样本p[x][y]都被标记为“不可用于帧内预测”,其中x=-1,y=-1..nCbH+nCbW-1和x=0..nCbW+nCbH-1,y=-1,则用数值1<<(bitDepth-1)替换所有样本p[x][y]的数值。
–否则(至少一个但并非所有样本p[x][y]被标记为“不可用于帧内预测”),适用以下有序步骤:
1.如果p[0][-1]被标记为“不可用于帧内预测”,则用数值1<<(bitDepth-1)替换样本p[x][y]的数值,其中x=0..nCbW+nCbH-1,y=-1。
2.否则(p[0][-1]被标记为“可用于帧内预测”),从x=nCbW,y=–1开始,到x=nCbW+nCbH–1,y=–1,依次搜索。一旦有样本p[x][y]被标记为“不可用于帧内预测”,则终止搜索,并用从p[x][y]到p[nCbW+nCbH–1][y]给p[x–1][y]的数值进行赋值。
3.当p[-1][0]被标记为“不可用于帧内预测”时,适用以下内容:–如果p[-1][-1]被标记为“不可用于帧内预测”,则
用数值1<<(bitDepth-1)替换样本p[x][y]的数值,其中x=-1,y=-1..nCbH+nCbW–1]。
–否则,用p[-1][-1]替换样本p[x][y]的数值,其中x=-1,y=-1..nCbH+nCbW–1。
4.否则,从x=-1,y=0开始,到x=-1,y=nCbH+nCbW–1,依次搜索。一旦有样本p[x][y]被标记为“不可用于帧内预测”,则终止搜索,并用从p[x][y]到p[x][nCbH+nCbW–1]给p[x][y–1]的数值赋值。
从以上示例可以看出,帧内参考样本(p[x][y])的推导过程可能相当复杂。由于逻辑在两个模块之间重复使用,因此,将这一过程的输出(p[x][y])用于当前的滤波填充,有利地节省了实现成本。
需要注意的是,在本公开中,先前重建的相邻块是指与当前块离得最近的块,例如与当前块共享边界。先前重建是指在重建当前块之前重建。
图5为示出根据实施例的对应的环内滤波方法500的步骤的流程图。重建块包括多个像素。方法500包括以下步骤:根据预定义的扫描模板,将当前像素和当前像素的相邻像素加载502到线性缓冲器中;对线性缓冲器中的像素执行1D变换,获得504频谱分量;将每个频谱分量乘以增益系数,获得506经滤波的频谱分量,其中,增益系数取决于对应的频谱分量和滤波参数;对经滤波的频谱分量执行1D逆变换,获得508经滤波的像素;以及,基于由先前的处理步骤估计出的经滤波的像素,生成510经滤波的重建块。方法500可以由图1所示的编码装置和图2所示的解码装置执行。图3A或图3B的300、300’的具体信息也适用于图5所示的方法500。
图13为示出根据实施例的对应的滤波方法(环内滤波或后滤波)1300的步骤的流程图。重建块包括多个像素(样本)。方法1300包括以下步骤:通过扩展当前重建块以包括一个或多个填充样本,获得1310经扩展的重建块,该一个或多个填充样本基于来自当前重建块的至少一个样本获得;根据预定义的扫描模板,将经扩展的重建块的当前像素和该当前像素的相邻像素加载1320到线性缓冲器中;对线性缓冲器中的像素执行1D变换,获得1330频谱分量;通过使用查找表,获得1340经滤波的频谱分量;对经滤波的频谱分量执行1D逆变换,获得1350经滤波的像素;以及,基于经滤波的像素生成1360经滤波的重建块。方法1300可以由图1或图10所示的编码装置和图2或图11所示的解码装置执行。图3A或图3B的300、300’的具体信息也适用于图13所示的方法1300。
图6是可用于实现各种实施例的装置600的框图。装置600可以是图1或图10所示的编码装置和图2或图11所示的解码装置。此外,装置600可以托管一个或多个上述元件。在一些实施例中,装置600配备有一个或多个输入/输出设备,例如扬声器、麦克风、鼠标、触摸屏、小键盘、键盘、打印机、显示器等。装置600可以包括连接到总线的一个或多个中央处理单元(central processing unit,CPU)610、存储器620、大容量存储器630、视频适配器640、以及I/O接口660。总线是包括存储器总线或存储器控制器、外围总线、视频总线等的任何类型的若干总线架构中的一种或多种。
CPU 610可以具有任何类型的电子数据处理器。存储器620可以具有或可以是任何类型的系统存储器,例如静态随机存取存储器(static random access memory,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)、同步DRAM(synchronousDRAM,SDRAM)、只读存储器(read-only memory,ROM)、或以上的组合等。在实施例中,存储器620可以包括在启动时使用的ROM,以及在执行程序时用于存储程序和数据的DRAM。在实施例中,存储器620是非暂时性的。大容量存储器630包括存储数据、程序和其他信息并使得数据、程序和其他信息可经由总线访问的任何类型的存储设备。大容量存储器630包括例如固态驱动器、硬盘驱动器、磁盘驱动器、光盘驱动器等的一种或多种。
视频适配器640和I/O接口660提供接口,以将外部输入和输出设备耦合到装置600。例如,装置600可以向客户端提供SQL命令接口。如图所示,输入和输出设备的示例包括耦合到视频适配器640的显示器690以及耦合到I/O接口660的鼠标/键盘/打印机670的任何组合。其他设备可以耦合到装置600,并且可以利用更多或更少的接口卡。例如,可以使用串行接口卡(未示出)为打印机提供串行接口。
装置600还包括一个或多个网络接口650,该网络接口650包括诸如以太网电缆等有线链路和/或无线链路,以接入节点或一个或多个网络680。网络接口650允许装置600经由网络680与远端单元通信。例如,网络接口650可以提供与数据库的通信。在实施例中,装置600耦合到局域网或广域网,以进行数据处理和与远端设备(例如,其他处理单元、互联网、远端存储设施等)通信。
相较于传统的ALF方法,所提出的环内滤波器的设计具有以下优点:
所提出的频域滤波器在解码器侧从重建帧中推导出滤波参数(频域增益系数),因此不需要将滤波参数从编码器端传输到解码器端。
ALF需要在编码器端进行复杂的率失真优化(rate distortion optimization,RDO),以减少要传输的加权系数的数量。所提出的方法不需要在编码器端进行复杂的RDO(没有参数传输),并且适用于所有满足预定条件的块。
ALF是像素域中的线性滤波器。对于每个1D频谱分量,由于其增益系数取决于该频谱分量的数值,所以提出的滤波器是非线性的。从非线性的处理中能够取得额外的译码增益。
ALF在解码器端需要通用乘法。由于每个频谱系数的增益都小于1,因此在所提出的方法中,可以将滤波器实现为查找表。因此,所提出的方法无需任何乘法运算即可实现。
因此,提供了能够用低复杂度提高视频译码效率的滤波器。
尽管可能已经仅针对若干实施方式或实施例之一公开了本公开的特定特征或方面,但是这种特征或方面可以与其他实施方式或实施例的一个或多个其他特征或方面组合,这对于任何给定的或特定的申请是所期望的或有利的。此外,就说明书或权利要求书中使用的术语“包括”、“具有”、“有”或其他变体而言,这些术语在说明书和权利要求书中使用,旨在作为包含性的,其方式类似于术语“包括”。同样,术语“示例性”、“例如”、和“如”仅是示例性的,而不是最佳或最优的。使用了术语“耦合”和“连接”以及其派生词。应当理解,这些术语可能已经被用于指示两个元件彼此协作或相互作用,而不管这些元件是直接物理接触还是电接触,或者不是彼此直接接触。
尽管本文已经图示和描述了特定方面,但是本领域普通技术人员将理解,在不脱离本公开范围的情况下,各种替代和/或等效实现方式可以替代所示出和描述的特定方面。本申请旨在覆盖本文讨论的特定方面的任何变体或变型。
尽管权利要求中的元素以带有相应标记的特定顺序来叙述,但除非权利要求书中的引用暗含了用于实现这些元素中的某些或全部的特定顺序,否则这些元素并不一定要局限于以该特定序列来实现。
根据上述教导,许多替代、修改和变化对于本领域技术人员将是显而易见的。当然,本领域技术人员容易认识到,本发明的许多应用超出了本文所述的范围。尽管已经参考一个或多个特定实施例描述了本发明,但是本领域技术人员认识到可以在不脱离本发明范围的情况下对其进行许多改变。因此,应当理解,在所附权利要求书及其等同物的范围内,本发明可以不同于本文具体描述的方式实施。
以下总结了一些示例性实施例和实施方式。在第一示例性实施例中,提供了一种在视频编码装置或视频解码装置中使用的滤波器,该滤波器用于处理当前重建块,当前重建块包括多个像素,其中,滤波器用于:根据预定义的扫描模板,将当前重建块中的当前像素和当前像素的相邻像素加载到线性缓冲器中;对线性缓冲器中的像素执行1D变换,获得频谱分量;通过将每个频谱分量乘以增益系数或通过使用查找表获得经滤波的频谱分量,其中增益系数取决于对应的频谱分量和滤波参数;对经滤波的频谱分量执行1D逆变换,获得经滤波的像素;以及,基于经滤波的像素生成经滤波的重建块。
在第二示例中,当前重建块由一个或多个样本填充,该一个或多个样本包含基于来自先前重建的相邻块的至少一个样本获得的至少一个样本。
在第三示例中,填充样本是来自先前重建的相邻块的样本。
在第四示例中,填充样本是来自先前重建的相邻块的经滤波的样本。
在第五示例中,填充样本是用于当前图像块的帧内预测的样本。
在第六示例中,滤波器还用于获得填充样本(例如,图9所示的参考样本),其中,填充样本基于帧内参考样本推导的结果。
在第七示例中,帧内参考样本推导包括:
检查相邻重建样本的可用性,并且在相邻重建样本可用时提取相邻重建样本;在相邻重建样本不可用时,则用其他可用的相邻样本替换该相邻重建样本。
在第八示例中,当前重建块是帧内预测块。
在第九示例中,当前重建块是帧间预测块。
在第十示例中,重建块由样本填充,该样本包含来自当前重建块的至少一个样本。
在第十一示例中,当前重建块是帧内预测块。
在第十二示例中,当前重建块是帧间预测块。
在第十三示例中,重建块由基于来自先前重建的相邻块的样本(例如,相邻样本或参考样本)获得的样本填充,并且由来自当前重建块的样本填充。
在第十四示例中,由基于来自先前重建的相邻块的样本获得的样本填充重建块的左侧和上方。
在第十五示例中,由来自当前重建块的样本填充重建块的右侧和下方。
在第十六示例中,在先前重建的相邻块可用时,由至少一个样本填充重建块,该至少一个样本基于来自至少一个先前重建相邻块的样本获得,和/或
当先前重建的相邻块不可用时,用来自当前重建块的样本填充当前重建块。
在第十七示例中,对于至少属于相邻块的相邻样本(例如,位于x<0或x>=nCbW或y<0或y>=nCbH的样本),基于以下一项或多项,确定相邻重建块对于当前重建块是否可用:块译码顺序;当前重建块和所述相邻重建块属于同一图像组,其中同一图像组包括同一条带、同一图块、或同一图块组;或,相邻重建块的位置超出图像边界。
在第十八示例中,当前重建块是帧间预测块,并且仅当先前重建的相邻块是帧间预测块时,才由基于来自先前重建的相邻块的样本获得的样本填充重建块。
在第十九示例中,根据预定义的扫描模板,将所有经滤波的像素和对应的未滤波像素之间的差值添加到累加缓冲器中,并且其中,通过将未滤波像素与待添加到块中的像素值的最大数量相乘,对累加缓冲器进行初始化。
在第二十示例中,累加缓冲器中的累加值除以待添加到块中的像素值的最大数量,获得最终经滤波的像素。
在第二十一示例中,根据条件应用滤波器,其中,条件包括以下至少之一:(i)重建块具有非零残差信号;(ii)重建块的尺寸;(iii)重建块的长宽比;或(iv)重建块的预测模式。
在第二十二示例中,滤波参数sigma和预定义扫描模式取决于上述条件。
在第二十三示例中,1D变换是阿达马变换。
在另一示例中,基于当前块的量化参数Qp获得查找表。
在另一示例中,增益系数取决于基于当前块的Qp获得的对应的频谱分量和滤波参数;或者,增益系数取决于对应的频谱分量和当前块的Qp。
在第二十四示例性实施例中,提供了一种用于处理当前重建块的方法,其中,当前重建块包括多个像素,其中,该滤波方法包括:根据预定义的扫描模板,将当前重建块中的当前像素和当前像素的相邻像素加载到线性缓冲器中;对线性缓冲器中的像素执行1D变换,获得频谱分量;通过将每个频谱分量乘以增益系数或通过使用查找表获得经滤波的频谱分量,其中增益系数取决于对应的频谱分量和滤波参数;对经滤波的频谱分量执行1D逆变换,获得经滤波的像素;以及,基于经滤波的像素生成经滤波的重建块。
在第二十五示例中,当前重建块由一个或多个样本填充,该一个或多个样本包含基于来自先前重建的邻接块的至少一个样本获得的至少一个样本。
在第二十六示例中,其中,填充样本是来自先前重建的相邻块的样本。
在第二十七示例中,填充样本是来自先前重建的相邻块的经滤波的样本。
在第二十八示例中,填充样本是用于当前图像块的帧内预测的样本。
在第二十九示例中,其中,滤波器还用于获得填充样本(例如,图9所示的参考样本),其中,填充样本基于帧内参考样本推导的结果。
在第三十示例中,帧内参考样本推导包括:检查相邻重建样本的可用性,并且在相邻重建样本可用时提取相邻重建样本;以及,在相邻重建样本不可用时,则用其他可用的相邻样本替换该相邻重建样本。
在第三十一示例中,当前重建块是帧内预测块。
在第三十二示例中,其中,当前重建块是帧间预测块。
在第三十三示例中,重建块由样本填充,该样本包含来自当前重建块的至少一个样本。
在第三十四示例中,其中,当前重建块是帧内预测块。
在第三十五示例中,当前重建块是帧间预测块。
在第三十六示例中,重建块由基于来自先前重建的相邻块的样本(例如,相邻样本或参考样本)获得的样本填充,并且由来自当前重建块的样本填充。
在第三十七示例中,由基于来自先前重建的相邻块的样本获得的样本填充当前重建块的左侧和上方。
在第三十八示例中,其中,由来自当前重建块的样本填充当前重建块的右侧和下方。
在第三十九示例中,在先前重建的相邻块可用时,由至少一个样本填充当前重建块,该至少一个样本基于来自先前重建邻接块的至少一个样本获得,和/或当先前重建的邻接块不可用时,用来自当前重建块的样本填充当前重建块。
在第四十示例中,对于至少属于相邻块的相邻样本(例如,位于x<0或x>=nCbW或y<0或y>=nCbH的样本),基于以下一项或多项,确定相邻重建块对于当前重建块是否可用:块译码顺序;当前重建块和所述相邻重建块属于同一图像组,其中同一图像组包括同一条带、同一图块、或同一图块组;或,相邻重建块的位置超出图像边界。
在第四十一示例中,当前重建块是帧间预测块,并且仅当先前重建的邻接块是帧间预测块时,才由基于来自先前重建的邻接块的样本获得的样本填充当前重建块。
在第四十二示例中,根据预定义的扫描模板,将所有经滤波的像素和对应的未滤波像素之间的差值添加到累加缓冲器中,并且其中,在获得经滤波的频谱分量之前,将未滤波像素与待添加到块中的像素值的最大数量相乘,对累加缓冲器进行初始化。
在第四十三示例中,累加缓冲器中的累加值除以待添加到块中的像素值的最大数量,获得最终经滤波的像素;并且其中,一个或多个处理器用于基于最终经滤波的像素生成经滤波的重建块。
在第四十四示例中,1D变换是阿达马变换。
在另一示例中,基于当前块的Qp获得查找表。
在另一示例中,增益系数取决于基于当前块的Qp获得的对应的频谱分量和滤波参数;或者,增益系数取决于对应的频谱分量和当前块的Qp。
在第四十五示例性实施例中,提供了一种在编码装置或解码装置中使用的滤波器,其中,该滤波器用于处理当前重建块,当前重建块包括多个样本,并且其中,该滤波器包括:一个或多个处理器或一个或多个处理电路,用于:根据预定义的扫描模板,将当前样本和当前样本的相邻样本加载到线性缓冲器中,其中,相邻样本包括与当前样本相邻且来自当前重建块的M个样本,以及与当前样本相邻且来自先前重建的相邻块的N个样本,且N>=0;对线性缓冲器中的像素执行1D变换,获得频谱分量;
通过将每个频谱分量乘以增益系数或通过使用查找表获得经滤波的频谱分量,其中增益系数取决于对应的频谱分量和滤波参数;对经滤波的频谱分量执行1D逆变换,获得经滤波的像素;以及,基于经滤波的像素生成经滤波的重建块。
在第四十六示例中,M+N=3,或M+N=8。
在第四十七示例中,N个样本包括与当前重建块的上方相邻的样本,和/或与当前重建块的左侧相邻的样本。
在第四十八示例中,N个样本包括与当前重建块的下方相邻的N1个样本,和/或与当前重建块的右侧相邻的N2个样本,其中,N1个样本由位于对应的下方位置且来自当前重建块的可用样本填充,并且其中,N2个样本由位于对应的右侧位置且来自当前重建块的可用样本填充。
在第四十九示例中,当前重建块由一个或多个样本填充,该一个或多个样本包含基于来自先前重建的邻接块的至少一个样本获得的至少一个样本。
在第五十示例中,填充样本是来自先前重建的相邻块的样本。
在第五十一示例中,填充样本是来自先前重建的相邻块的经滤波的样本。
在第五十二示例中,填充样本是用于当前图像块的帧内预测的样本。
在第五十三示例中,滤波器还用于获得填充样本(例如,图9所示的参考样本),其中,填充样本基于帧内参考样本推导的结果。
在第五十四示例中,帧内参考样本推导包括:
检查相邻重建样本的可用性,并且在相邻重建样本可用时提取相邻重建样本;以及,在相邻重建样本不可用时,则用其他可用的相邻样本替换该相邻重建样本。
在第五十五示例中,当前重建块是帧内预测块或当前重建块是帧间预测块。
在第五十七示例中,当前重建块由样本填充,该样本包含来自当前重建块的至少一个样本。
在第五十八示例中,当前重建块是帧内预测块或当前重建块是帧间预测块。
在第六十示例中,当前重建块由基于来自先前重建的相邻块的样本(例如,相邻样本或参考样本)获得的样本填充,并且由来自当前重建块的样本填充。
在第六十一示例中,由基于来自先前重建的相邻块的样本获得的样本填充当前重建块的左侧和上方。
在第六十二示例中,由来自当前重建块的样本填充重建块的右侧和下方。
在第六十三示例中,先前重建的相邻块可用时,由至少一个样本填充当前重建块,该至少一个样本基于来自先前重建邻接块的至少一个样本获得,和/或当先前重建的邻接块不可用时,用来自当前重建块的样本填充当前重建块。
在第六十四示例中,对于属于至少相邻块的相邻样本(例如,位于x<0或x>=nCbW或y<0或y>=nCbH的样本),基于以下一项或多项,确定相邻重建块对于当前重建块是否可用:块译码顺序;当前重建块和所述相邻重建块属于同一图像组,其中同一图像组包括同一条带、同一图块、或同一图块组;或,相邻重建块的位置超出图像边界。
在第六十五示例中,当前重建块是帧间预测块,并且仅当先前重建的邻接块是帧间预测块时,才由基于来自先前重建的相邻块的样本获得的样本填充当前重建块。
在另一示例中,基于当前块的Qp获得查找表。
在另一示例中,增益系数取决于基于当前块的Qp获得的对应的频谱分量和滤波参数;或者,增益系数取决于对应的频谱分量和当前块的Qp。
在第六十六示例性实施例中,提供了用于对来自输入视频流中的当前块进行编码的编码装置,其中,该编码装置包括根据上述实施例和示例中的任一个的滤波器。
在第六十七示例性实施例中,提供了用于对来自接收的位流中的当前重建块进行解码的解码装置,其中,该解码装置包括根据上述实施例和示例中的任一个的滤波器。
根据第六十八示例性实施例,提供了一种计算机程序产品,包括程序代码,当程序代码在计算机上执行时,用于执行根据上述实施例和示例中的任一个的方法。
本公开涉及滤波器、使用该滤波器的编码器和解码器、滤波方法和对应的程序、以及使用该滤波方法或该滤波器的编码和解码。滤波包括通过扩展当前重建块以包括至少来自当前重建块的填充样本,来获得扩展重建块。在填充之后,将扩展重建块的当前像素和当前像素的相邻像素加载到线性缓冲器中,并进行1D变换。使用查找表在频域中执行滤波,并且将经滤波的像素变换回来。
下面是对上述实施例中给出的编码方法和解码方法的应用以及使用该编码方法和解码方法的系统的说明。
图14是示出用于实现内容分发服务的内容供应系统3100的框图。该内容供应系统3100包括捕获设备3102、终端设备3106,并且可选地包括显示器3126。捕获设备3102通过通信链路3104与终端设备3106进行通信。该通信链路可以包括上述通信信道13。通信链路3104包括但不限于WIFI、以太网、电缆、无线(3G/4G/5G)、USB或者其任何组合等。
捕获设备3102生成数据,并且可以通过如上述实施例所示的编码方法对数据进行编码。或者,捕获设备3102可以将数据分发给流服务器(图中未示出),服务器对数据进行编码并将经编码的数据发送给终端设备3106。捕获设备3102包括但不限于摄像机、智能手机或平板电脑、计算机或笔记本电脑、视频会议系统、PDA、车载设备,或它们的任何组合等。例如,捕获设备3102可以包括如上所述的源设备12。当数据包括视频时,捕获设备3102中包括的视频编码器20实际上可以执行视频编码处理。当数据包括音频(即,语音)时,捕获设备3102中包括的音频编码器实际上可以执行音频编码处理。对于一些实际场景,捕获设备3102通过将经编码的视频和音频数据复用在一起来进行分发。对于其它实用场景,例如在视频会议系统中,不复用经编码的音频数据和经编码的视频数据。捕获设备3102将编码音频数据和编码视频数据分别分发给终端设备3106。
在内容供应系统3100中,终端设备310接收并再现编码数据。终端设备3106可以是具有数据接收和恢复能力的设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络录像机(network video recorder,NVR)/数字录像机(digital videorecorder,DVR)3112、TV 3114、机顶盒(set top box,STB)3116、视频会议系统3118、视频监控系统3120、个人数字助理(personal digital assistant,PDA)3122、车载设备3124或其任何组合,或者能够解码上述编码数据的设备。例如,终端设备3106可以包括如上所述的目的地设备14。当经编码的数据包括视频时,终端设备中包括的视频解码器30优先进行视频解码。当经编码的数据包括音频时,终端设备中包括的音频解码器优先进行音频解码处理。
对于带有显示器的终端设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、NVR/DVR 3112、TV 3114、PDA 3122、或车载设备3124,终端设备可以将经解码的数据馈送到该终端设备的显示器。对于没有显示器的终端设备(例如STB 3116、视频会议系统3118、或视频监控系统3120),连接外部显示器3126以接收并显示解码数据。
该系统中的每个设备在进行编码或解码时,可以使用如上述实施例中所示的图像编码设备或图像解码设备。
图15是为终端设备3106的一个示例的结构的图。在终端设备3106从捕获设备3102接收流之后,协议处理单元(protocol proceeding unit)3202分析流的传输协议。协议包括但不限于实时流协议(real time streaming protocol,RTSP)、超文本传输协议(hypertext transfer protocol,HTTP)、HTTP直播协议(HTTP live streaming protocol,HLS)、MPEG-DASH、实时传输协议(real-time transport protocol,RTP)、实时消息协议(realtime messaging protocol,RTMP)或其任何组合等。
协议处理单元3202对流进行处理后,生成流文件。将文件输出到解复用单元3204。解复用单元3204可以将复用数据分为经编码的音频数据和经编码的视频数据。如上所述,对于一些实际场景,例如在视频会议系统中,不复用经编码的音频数据和经编码的视频数据。在这种情况下,将经编码的数据发送到视频解码器3206和音频解码器3208,无需经过解复用单元3204。
通过解复用处理,生成视频基本流(elementary stream,ES)、音频ES和可选的字幕。视频解码器3206包括如上述实施例中所说明的视频解码器30,通过如上述实施例中所示的解码方法对视频ES进行解码以生成视频帧,并将该数据馈送到同步单元3212。音频解码器3208,解码音频ES以生成音频帧,并将该数据馈送到同步单元3212。或者,在将视频帧馈送到同步单元3212之前,可以将该视频帧存储在缓冲器(图15中未示出)中。类似地,在将音频帧馈送到同步单元3212之前,可以将该音频帧存储在缓冲器(图15中未示出)中。
同步单元3212同步视频帧和音频帧,并将视频/音频提供给视频/音频显示器3214。例如,同步单元3212同步视频和音频信息的呈现。可以使用关于经译码的音频和视频数据的表示的时间戳和关于数据流本身的传递的时间戳在语法中对信息进行译码。
如果流中包括字幕,则字幕解码器3210解码字幕,并使字幕与视频帧和音频帧同步,并将视频/音频/字幕提供给视频/音频/字幕显示器3216。
本发明并不限于上述系统,上述实施例中的图像编码设备或图像解码设备都可以结合到其它系统,例如汽车系统。
尽管主要基于视频译码描述了本发明的实施例,但应当注意的是,译码系统10、编码器20、和解码器30(以及对应地,系统10)的实施例以及其他本文中描述的实施例还可以用于静止图像处理或译码,即独立于视频译码中的任何之前或连续的图像的单个图像的处理或译码。一般而言,在图像处理译码仅限于单个图像17的情况下,只有帧间预测244(编码器)和344(解码器)不可用。视频编码器20和视频解码器30的所有其它功能(也称为工具或技术)可以等同地用于静止图像处理,这些功能例如是残差计算204/304、变换206、量化208、反量化210/310、(逆)变换212/312、分割262/362、帧内估计254/354、和/或环路滤波220、320、以及熵译码270和熵解码304。
例如,编码器20和解码器30的实施例以及本文中描述的功能(例如,参考编码器20和解码器30)可以通过硬件、软件、固件或其任何组合实现。如果通过软件实现,则这些功能可以作为一个或多个指令或代码存储在计算机可读介质上或经由计算机可读介质传输,并由基于硬件的处理单元执行。计算机可读介质可以包括与有形介质(如数据存储介质)对应的计算机可读存储介质,或包括任何便于将计算机程序从一处传送到另一处的介质(例如根据通信协议)的通信介质。以此方式,计算机可读介质通常可以对应(1)非瞬时性的有形计算机可读存储介质,或(2)如信号或载波等通信介质。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问以检索用于实现本发明中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
作为示例而非限制,计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁性存储设备、闪存,或可以用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其它介质。此外,任何连接都可以称为计算机可读介质。例如,如果指令是从网站、服务器或其它远程源通过同轴电缆、光纤电缆、双绞线、数字用户线(digital subscriber line,DSL)或无线技术(例如红外、无线电、微波等)发送的,则介质的定义包括同轴电缆、光纤电缆、双绞线、DSL或无线技术(例如红外、无线电和微波等)。但是,应理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它瞬时介质,而是指非瞬时有形存储介质。本文使用的磁盘和光盘包括压缩光盘(compact disc,CD)、激光光盘、光盘、数字通用光盘(digital versatile disc,DVD)、软盘和蓝光光盘,盘通常磁性地再现数据,而光盘则用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
指令或程序代码可以由一个或多个处理器执行,例如一个或多个数字信号处理器(digital signal processor,DSP)、通用微处理器、专用集成电路(application-specificintegrated circuit,ASIC)、现场可编程逻辑阵列(field programmable logic array,FPGA)或其它等效的集成或分立逻辑电路。因此,本文使用的术语“处理器”可以指任何上述结构或任何适合于实现本文所描述的技术的任何其它结构。另外,在一些方面中,本文所描述的功能可以在用于编码和解码的专用硬件和/或软件模块中提供,或者结合在组合编解码器中。另外,这些技术可以在一个或多个电路或逻辑元件中完全实现。
本发明的技术可以在多种设备或装置中实现,包括无线手持电话、集成电路(integrated circuit,IC)或一组IC(例如芯片组)。本发明描述各种组件、模块或单元以强调用于执行所公开技术的设备的功能方面,但这些组件、模块或单元不一定要求通过不同的硬件单元实现。相反,如上所述,各种单元可以组合在编解码器硬件单元中,或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合结合合适的软件和/或固件来提供。

Claims (33)

1.一种滤波器(120、220、1018、1118、960),所述滤波器在视频编码装置或视频解码装置中使用以处理当前重建块,所述当前重建块包括多个像素,其中,所述滤波器(120、220、1018、1118、960)用于:
在与所述当前重建块相邻的相邻重建块可用时,扩展所述当前重建块以包括一个或多个填充样本来获得扩展重建块,所述一个或多个填充样本基于来自所述相邻重建块的至少一个样本获得;
在所述相邻重建块不可用时,通过扩展所述当前重建块以包括一个或多个填充样本来获得扩展重建块,所述一个或多个填充样本基于来自所述当前重建块的至少一个样本获得;
根据预定义的扫描模板,将所述扩展重建块中的当前像素和所述当前像素的相邻像素加载到线性缓冲器中;
对所述线性缓冲器中的像素执行1D变换,获得频谱分量;
基于获得的所述频谱分量,通过使用查找表获得经滤波的频谱分量;
对所述经滤波的频谱分量执行1D逆变换,获得经滤波的像素;以及
基于所述经滤波的像素生成经滤波的重建块。
2.根据权利要求1所述的滤波器(120、220、1018、1118、960),其中,所述滤波器(120、220、1018、1118)还用于基于以下一项或多项确定所述相邻重建块对于所述当前重建块是否可用:
-块译码顺序,
-所述当前重建块和所述相邻重建块属于同一图像组,其中所述同一图像组包括同一条带、同一图块、或同一图块组,或
-所述相邻重建块的位置超出图像边界。
3.根据权利要求1所述的滤波器(120、220、1018、1118、960),其中,所述滤波器(120、220、1018、1118、960)还用于按以下方式推导出所述相邻重建块的可用性:
如果以下条件中的一个或多个条件为真,则将所述相邻重建块的可用性确定为假:
-所述相邻重建块与所述当前重建块包括在不同的图块中,
-所述相邻重建块的位置超出图像边界,
-指示所述相邻重建块是否已经重建的变量等于假;
否则,将所述相邻重建块的可用性确定为真。
4.根据权利要求1至3中任一项所述的滤波器(120、220、1018、1118、960),其中,所述一个或多个填充样本是来自所述相邻重建块的经滤波的样本,所述相邻重建块是与所述当前重建块相邻的先前重建块。
5.根据权利要求1至3中任一项所述的滤波器(120、220、1018、1118、960),其中,所述当前重建块在左侧和上方扩展以包括一个或多个填充样本,所述一个或多个填充样本基于来自左侧的相邻重建块和上方的相邻重建块的样本获得。
6.根据权利要求1至3中任一项所述的滤波器(120、220、1018、1118、960),其中,所述当前重建块在右侧和下方扩展以包括一个或多个填充样本,所述一个或多个填充样本基于来自所述当前重建块的至少一个样本获得。
7.根据权利要求1至3中任一项所述的滤波器(120、220、1018、1118、960),其中,所述滤波器(120、220、1018、1118、960)用于通过扩展所述当前重建块来获得所述扩展重建块,所述滤波器扩展所述当前重建块以在所述当前重建块的每一侧上包括:
-在所述相邻重建块可用时,来自在所述一侧上与所述当前重建块相邻的相邻重建块的相邻重建样本,或
-在所述相邻重建块不可用时,离所述当前重建块最近的样本。
8.根据权利要求1至3中任一项所述的滤波器(120、220、1018、1118、960),其中,所述滤波器(120、220、1018、1118、960)用于获得所述扩展重建块recSamplesPad[x][y],其中样本的x=–1..nCbW,y=–1..nCbH,包括:对于所述当前重建块recSamples[x][y],其中(xCb,yCb)表示所述重建块的左上角样本,并且nCbW和nCbH表示所述当前重建块的宽度和高度,
当0≤x≤nCbW–1且0≤y≤nCbH–1,则
recSamplesPad[x][y]=recSamples[x][y],以及
否则,对于(xCb+x,yCb+y):
-将变量dx设为0,并且将变量dy设置为0,
-当x==-1且样本(xCb+x,yCb+y)不可用时,dx=1,
-当x==nCbW且样本(xCb+x,yCb+y)不可用时,dx=-1,
-当y==-1且样本(xCb+x,yCb+y)不可用时,dy=1,
-当y==nCbH且样本(xCb+x,yCb+y)不可用时,dy=-1,
recSamplesPad[x][y]=recSamples[x+dx][y+dy]。
9.根据权利要求1至3中任一项所述的滤波器(120、220、1018、1118、960),还用于确定所述相邻重建块对于所述当前重建块是否可用,其中,在所述当前重建块是帧间预测块时,如果所述相邻重建块不是帧间预测块,则将所述相邻重建块的可用性确定为假。
10.根据权利要求1至3中任一项所述的滤波器(120、220、1018、1118、960),其中,基于所述当前重建块的量化参数Qp获得所述查找表。
11.根据权利要求1至3中任一项所述的滤波器(120、220、1018、1118、960),其中,基于来自相邻块的至少一个样本获得的所述一个或多个填充样本是用于当前图像块的帧内预测的参考样本,其中,所述当前图像块的重建块是所述当前重建块。
12.根据权利要求7所述的滤波器(120、220、1018、1118、960),其中,所述滤波器还用于,基于所述当前重建块的当前图像块的帧内预测中的帧内参考样本推导的结果获得所述一个或多个填充样本。
13.根据权利要求12所述的滤波器(120、220、1018、1118、960),其中,所述帧内参考样本推导包括:
推导所述相邻重建样本的可用性,并且在所述相邻重建样本可用时,提取所述相邻重建样本;
在所述相邻重建样本不可用时,用其他可用的相邻重建样本替换所述相邻重建样本。
14.一种用于处理当前重建块的方法(300,300’,500),其中,所述当前重建块包括多个像素,其中所述方法(300,300’,500)包括:
在与所述当前重建块相邻的相邻重建块可用时,扩展所述当前重建块以包括一个或多个填充样本来获得扩展重建块,所述一个或多个填充样本基于来自所述相邻重建块的至少一个样本获得;
在所述相邻重建块不可用时,通过扩展所述当前重建块以包括一个或多个填充样本来获得扩展重建块,所述一个或多个填充样本基于来自所述当前重建块的至少一个样本获得;
根据预定义的扫描模板,将所述扩展重建块中的当前像素和所述当前像素的相邻像素加载到线性缓冲器中;
对所述线性缓冲器中的像素执行1D变换,获得频谱分量;
通过将每个所述频谱分量乘以增益系数或通过使用查找表,获得经滤波的频谱分量,其中所述增益系数取决于对应的频谱分量和滤波参数;
对所述经滤波的频谱分量执行1D逆变换,获得经滤波的像素;以及
基于所述经滤波的像素生成经滤波的重建块。
15.根据权利要求14所述的方法(300,300’,500),其中,所述方法还包括基于以下一项或多项确定所述相邻重建块对于所述当前重建块是否可用的步骤:
-块译码顺序,
-所述当前重建块和所述相邻重建块属于同一图像组,其中所述同一图像组包括同一条带、同一图块、或同一图块组,或
-所述相邻重建块的位置超出图像边界。
16.根据权利要求14所述的方法(300,300’,500),其中,所述方法还包括按以下方式推导出所述相邻重建块的可用性:
如果以下条件中的一个或多个条件为真,则将所述相邻重建块的可用性确定为假:
-所述相邻重建块与所述当前重建块包括在不同的图块中,
-所述相邻重建块的位置超出图像边界,
-指示所述相邻重建块是否已经重建的变量等于假;
否则,将所述相邻重建块的可用性确定为真。
17.根据权利要求14至16中任一项所述的方法(300,300’,500),其中,所述一个或多个填充样本是来自所述相邻重建块的经滤波的样本,所述相邻重建块是与所述当前重建块相邻的先前重建块。
18.根据权利要求14至16中任一项所述的方法(300,300’,500),其中,所述当前重建块在左侧和上方扩展以包括样本,所述样本基于来自左侧的先前重建相邻块和上方的先前重建相邻块的样本获得。
19.根据权利要求14至16中任一项所述的方法(300,300’,500),其中,所述当前重建块在右侧和下方扩展以包括一个或多个填充样本,所述一个或多个填充样本基于来自所述当前重建块的至少一个样本。
20.根据权利要求14至16中任一项所述的方法(300,300’,500),其中,所述获得所述扩展重建块包括扩展所述当前重建块以在所述当前重建块的每一侧上包括:
-在所述相邻重建块可用时,来自在所述一侧上与所述当前重建块相邻的相邻重建块的相邻重建样本,或
-在所述相邻重建块不可用时,离所述当前重建块最近的样本。
21.根据权利要求14至16中任一项所述的方法(300,300’,500),其中,所述扩展重建块为recSamplesPad[x][y],其中样本的x=–1..nCbW,y=–1..nCbH,所述获得所述扩展重建块包括:对于所述当前重建块recSamples[x][y],其中(xCb,yCb)表示所述重建块的左上角样本,并且nCbW和nCbH表示所述当前重建块的宽度和高度,
当0≤x≤nCbW–1且0≤y≤nCbH–1,则
recSamplesPad[x][y]=recSamples[x][y],以及
否则,对于(xCb+x,yCb+y):
-将变量dx设为0,并且将变量dy设置为0,
-当x==-1且样本(xCb+x,yCb+y)不可用时,dx=1,
-当x==nCbW且样本(xCb+x,yCb+y)不可用时,dx=-1,
-当y==-1且样本(xCb+x,yCb+y)不可用时,dy=1,
-当y==nCbH且样本(xCb+x,yCb+y)不可用时,dy=-1,
recSamplesPad[x][y]=recSamples[x+dx][y+dy]。
22.根据权利要求14至16中任一项所述的方法(300,300’,500),其中,所述方法还包括确定所述相邻重建块对于所述当前重建块是否可用,其中,在所述当前重建块是帧间预测块时,如果所述相邻重建块不是帧间预测块,则将所述相邻重建块的可用性确定为假。
23.根据权利要求14至16中任一项所述的方法(300,300’,500),其中,基于所述当前重建块的量化参数Qp获得所述查找表。
24.根据权利要求14至16所述的方法(300,300’,500),其中,基于来自相邻块的至少一个样本获得的所述一个或多个填充样本是用于当前图像块的帧内预测的样本,其中,所述当前图像块的重建块是所述当前重建块。
25.根据权利要求20所述的方法(300,300’,500),其中,基于所述当前重建块的当前图像块的帧内预测中的帧内参考样本推导的结果获得所述一个或多个填充样本。
26.根据权利要求25所述的方法(300,300’,500),其中,所述帧内参考样本推导包括:
推导所述相邻重建样本的可用性,并且在所述相邻重建样本可用时,提取所述相邻重建样本;
在所述相邻重建样本不可用时,用其他可用的相邻重建样本替换所述相邻重建样本。
27.一种编码方法,用于对来自输入视频流中的当前块进行编码,其中,所述编码方法包括根据权利要求14至26中任一项对当前块的当前重建块进行滤波。
28.一种解码方法,用于对来自接收的位流中的当前重建块进行解码,其中,所述解码方法包括根据权利要求14至26中任一项所述的用于处理当前重建块的方法。
29.一种编码装置(100),用于对来自输入视频流中的当前块进行编码,其中,所述编码装置(100)包括根据权利要求1至13中任一项的用于对所述当前块的当前重建块进行滤波的滤波器(120)。
30.一种解码装置(200),用于对来自接收的位流中的当前重建块进行解码,其中,所述解码装置(200)包括根据权利要求1至13中任一项所述的滤波器(220)。
31.一种解码器,包括:
一个或多个处理器;以及
与所述处理器耦合的非暂时性计算机可读存储介质,存储由所述处理器执行的程序,其中,当所述程序由所述处理器执行时,使得所述解码器执行根据权利要求14至26以及28中任一项所述的方法。
32.一种编码器,包括:
一个或多个处理器;以及
与所述处理器耦合的非暂时性计算机可读存储介质,存储由所述处理器执行的程序,其中,当所述程序由所述处理器执行时,使得所述编码器执行根据权利要求14至27中任一项所述的方法。
33.一种非暂时性计算机可读介质,携带程序代码,当所述程序代码由计算机设备执行时,使得所述计算机设备执行权利要求14至26中任一项所述的方法。
CN202080044073.4A 2019-06-18 2020-06-18 视频译码中的滤波装置和方法 Active CN114009048B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
RU2019050091 2019-06-18
RUPCT/RU2019/050091 2019-06-18
RU2019050090 2019-06-18
RUPCT/RU2019/050090 2019-06-18
PCT/RU2020/050127 WO2020256596A1 (en) 2019-06-18 2020-06-18 Apparatus and method for filtering in video coding

Publications (2)

Publication Number Publication Date
CN114009048A CN114009048A (zh) 2022-02-01
CN114009048B true CN114009048B (zh) 2023-05-16

Family

ID=74040633

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080044073.4A Active CN114009048B (zh) 2019-06-18 2020-06-18 视频译码中的滤波装置和方法

Country Status (12)

Country Link
US (1) US20220116597A1 (zh)
EP (1) EP3973711A4 (zh)
JP (1) JP7383736B2 (zh)
KR (1) KR20220019288A (zh)
CN (1) CN114009048B (zh)
AU (1) AU2020297260B9 (zh)
BR (1) BR112021025435A2 (zh)
CA (1) CA3155487A1 (zh)
IL (1) IL289092A (zh)
MX (1) MX2021015943A (zh)
WO (1) WO2020256596A1 (zh)
ZA (1) ZA202110751B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105872539B (zh) * 2015-02-08 2020-01-14 同济大学 图像编码方法和装置及图像解码方法和装置
KR20220003113A (ko) * 2019-06-21 2022-01-07 삼성전자주식회사 제한된 예측 모드에서 복원후 필터링을 수행하는 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
WO2023200214A1 (ko) * 2022-04-12 2023-10-19 현대자동차주식회사 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2024002168A1 (en) * 2022-06-28 2024-01-04 Douyin Vision (Beijing) Co., Ltd. Padding methods for adaptive loop filter in video coding

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2192786A1 (en) 2008-11-27 2010-06-02 Panasonic Corporation Frequency domain filters for video coding
CN107277539B (zh) * 2011-05-27 2020-11-06 寰发股份有限公司 减少用于上下文自适应熵解码中的行缓存的方法及装置
US20130343447A1 (en) * 2012-06-25 2013-12-26 Broadcom Corporation Adaptive loop filter (ALF) padding in accordance with video coding
CN113473120A (zh) * 2015-06-11 2021-10-01 英迪股份有限公司 使用自适应去块滤波编码和解码图像的方法及其装置
US20180332292A1 (en) * 2015-11-18 2018-11-15 Mediatek Inc. Method and apparatus for intra prediction mode using intra prediction filter in video and image compression
WO2020009619A1 (en) * 2018-07-02 2020-01-09 Huawei Technologies Co., Ltd. Apparatus and method for filtering in video coding
WO2020185747A1 (en) * 2019-03-11 2020-09-17 Vid Scale, Inc. Methods and systems for post-reconstruction filtering

Also Published As

Publication number Publication date
CN114009048A (zh) 2022-02-01
ZA202110751B (en) 2023-06-28
JP2022537749A (ja) 2022-08-29
MX2021015943A (es) 2022-03-22
US20220116597A1 (en) 2022-04-14
EP3973711A4 (en) 2022-08-31
AU2020297260B9 (en) 2024-02-01
WO2020256596A1 (en) 2020-12-24
BR112021025435A2 (pt) 2022-02-01
KR20220019288A (ko) 2022-02-16
AU2020297260B2 (en) 2023-12-14
AU2020297260A1 (en) 2022-01-27
JP7383736B2 (ja) 2023-11-20
EP3973711A1 (en) 2022-03-30
IL289092A (en) 2022-02-01
CA3155487A1 (en) 2020-12-24

Similar Documents

Publication Publication Date Title
JP6316487B2 (ja) エンコーダ、デコーダ、方法、及びプログラム
CN114009048B (zh) 视频译码中的滤波装置和方法
KR20220116339A (ko) 루마 및 크로마 성분에 대한 ibc 전용 버퍼 및 디폴트 값 리프레싱을 사용하는 인코더, 디코더 및 대응하는 방법들
TW201611578A (zh) 區塊可適性顏色空間轉換寫碼
JP7314281B2 (ja) イントラ・サブパーティション・コーディング・ツールによって引き起こされるサブパーティション境界のためのデブロッキングフィルタ
KR20230165354A (ko) 디블로킹 필터의 경계 강도를 도출하는 인코더, 디코더 및 대응 방법
KR20210126771A (ko) 인트라 예측 모드에 관련된 인코더, 디코더 및 대응하는 방법들
KR20220127314A (ko) 적응적 루프 필터링을 위한 인코더, 디코더, 및 대응하는 방법
CN116016932A (zh) 用于视频译码中去块效应滤波器的装置和方法
CN113660489B (zh) 用于帧内子划分的解码方法、装置、解码器和存储介质
JP2023085337A (ja) イントラ予測のためのクロスコンポーネント線形モデリングの方法、装置、デコーダ、エンコーダおよびプログラム
CN116830576A (zh) 视频编解码中用于帧内预测的参考像素上采样
KR102657540B1 (ko) 변환 프로세스를 위해 사용되는 인코더, 디코더 및 대응하는 방법
CN113228632B (zh) 用于局部亮度补偿的编码器、解码器、以及对应方法
RU2786086C1 (ru) Способ и устройство кросс-компонентного линейного моделирования для внутреннего предсказания
CN116830575A (zh) 用于对具有不同位深度的视频信号进行哈达玛变换域滤波的方法和装置

Legal Events

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