CN101374236A - 用于视频运动估计加速器的半像素插值器 - Google Patents

用于视频运动估计加速器的半像素插值器 Download PDF

Info

Publication number
CN101374236A
CN101374236A CN200810133053.5A CN200810133053A CN101374236A CN 101374236 A CN101374236 A CN 101374236A CN 200810133053 A CN200810133053 A CN 200810133053A CN 101374236 A CN101374236 A CN 101374236A
Authority
CN
China
Prior art keywords
array
shift register
pixel value
interpolation filter
interpolation
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.)
Granted
Application number
CN200810133053.5A
Other languages
English (en)
Other versions
CN101374236B (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.)
Analog Devices Inc
Original Assignee
Analog Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Analog Devices Inc filed Critical Analog Devices Inc
Publication of CN101374236A publication Critical patent/CN101374236A/zh
Application granted granted Critical
Publication of CN101374236B publication Critical patent/CN101374236B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • 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

Abstract

提供了用于在具有像素行和列的像素阵列中进行像素插值的方法和设备。所述设备包括:移位寄存器阵列,用于将所述像素阵列的像素值移位,所述移位寄存器阵列包括两个或者更多个移位寄存器;插值滤波器阵列,与所述移位寄存器阵列互连,所述插值滤波器阵列包括一个或更多个插值滤波器;及控制器,被配置成在第一模式下向相应的插值滤波器提供来自所述移位寄存器阵列的像素阵列的列中的像素值,并且被配置成在第二模式下向相应的插值滤波器提供来自所述移位寄存器阵列的像素阵列的行中的像素值。所述控制器可被配置成:在第二模式下向所述插值滤波器提供来自所述移位寄存器阵列的垂直子像素值,以产生对角线子像素值。

Description

用于视频运动估计加速器的半像素插值器
技术领域
本发明涉及图像数据的压缩,更具体地,涉及用于运动估计单元中的半像素插值的方法和设备。
背景技术
视频序列由一系列帧构成。每个帧由诸如720×480像素等的像素阵列表示,并且每个像素用数据值来表示。因此,为了生成每个帧,使用了大量的数据。
越来越多的视频产品依赖于视频压缩来减少存储和/或传输视频序列所需的比特的数量,仅举几个例子,所述视频产品诸如DVD播放机、数字电视、个人录像机、多媒体点播机、可视频的蜂窝电话等。为了改善视频数据压缩的效率,可以进行运动估计。已经证明,运动估计在下述方面是有效的:通过提取在相邻帧之间的相关性而利用视频序列的时间冗余性。在帧序列内,根据被称为参考帧的前一帧来预测当前帧。当前帧通常被划分为多个块或者宏块。宏块的大小通常是16×16像素,但是,宏块的大小可以依赖于所使用的压缩标准而变化。通过利用指定的误差准则,将当前帧内的每个宏块与参考帧内的相同大小的区域相比较,以便定位最佳匹配的宏块。使用运动向量来表示参考帧内的宏块与当前帧内的匹配宏块之间的位移。
为了满足对可视通信应用的需求,已经开发了许多视频压缩标准。运动估计是许多视频压缩方案的核心部分。MPEG-4部分10/H.264视频编码标准的关键部分要求:编码器产生运动向量,以表示两个或者更多个帧之间的运动。该标准允许编码器以一半或者四分之一像素的精度来产生运动向量,其中,通过对现有的整数值的插值滤波来产生子像素值。该滤波过程被称为子像素插值,是极其计算密集和存储密集的,但是,其对于获得高质量编码是关键的。以硬件来执行任务要求在循环计数与大的帧尺寸、功耗、电路复杂度、芯片面积和存储器带宽之间进行权衡,所述循环计数必须足够低,以支持低的时钟频率。
因此,需要改进的用于子像素插值的方法和设备。
发明内容
根据本发明的第一方面,提供了一种用于在具有像素行和列的像素阵列中进行像素插值的设备。所述设备包括:移位寄存器阵列,用于将像素阵列的像素值移位,所述移位寄存器阵列包括两个或者更多个移位寄存器;插值滤波器阵列,与所述移位寄存器阵列互连,所述插值滤波器阵列包括一个或更多个插值滤波器;以及控制器,被配置成在第一模式下向相应的插值滤波器提供来自所述移位寄存器阵列的像素阵列的列中的像素值,并且被配置成在第二模式下向相应的插值滤波器提供来自所述移位寄存器阵列的像素阵列的行中的像素值。
在一些实施例内,所述控制器被配置成在第一模式下向相应的插值滤波器提供所述像素阵列的列中的整数像素值,以产生垂直子像素值,并且被配置成在第二模式下向相应的插值滤波器提供所述像素阵列的行中的整数像素值,以产生水平子像素值。所述控制器可以被配置成在第二模式下向相应的插值滤波器提供垂直子像素值,以产生对角线子像素值。
所述控制器可以被配置成:在第一阶段中顺序通过(sequencethrough)像素阵列,以产生垂直子像素值,在第二阶段中顺序通过像素阵列,以产生水平子像素值,并且在第三阶段中顺序通过垂直子像素值,以产生对角线子像素值。
根据本发明的第二方面,提供了一种在具有像素行和列的像素阵列中插值像素的方法。所述方法包括:提供包括两个或者更多个移位寄存器的移位寄存器阵列及与所述移位寄存器阵列互连的插值滤波器阵列,所述插值滤波器阵列包括一个或更多个插值滤波器;通过所述移位寄存器阵列中的移位寄存器将所述像素阵列的像素值移位;在第一模式下向相应的插值滤波器提供来自所述移位寄存器阵列的像素阵列的列中的像素值,以产生垂直子像素值,并且,在第二模式下向相应的插值滤波器提供来自所述移位寄存器阵列的像素阵列的行中的像素值,以产生水平子像素值。
根据本发明的第三方面,提供了一种用于对具有数据值的行和列的数据阵列中的数据值进行滤波的设备。所述设备包括:移位寄存器阵列,用于将所述数据阵列的数据值移位;至少一个数字滤波器,与所述移位寄存器阵列互连;以及控制器,用于在第一模式下向数字滤波器提供来自所述移位寄存器阵列的数据阵列的列中的数据值,并且被配置成在第二模式下向数字滤波器提供所述移位寄存器阵列的数据阵列的行中的数据值。
附图说明
为了更好地理解本发明,现在参见附图,这些附图通过引用而合并于此,其中:
图1是示出根据本发明的实施例的半像素插值的一部分图像的示意图;
图2是根据本发明一实施例的半像素插值模块的示意框图;
图3是图2中所示的半像素插值器的示意框图;
图4是图3中所示的插值滤波器阵列的示意框图;
图5是图3中所示的移位寄存器阵列的示意框图;
图6A是示出像素阵列的9×6像素块内的像素值的一个示例的示意图;
图6B-6G是示出将图6A中的像素值装载到图3的半像素插值器中的示意图;
图7是示出根据本发明一实施例的垂直半像素插值的过程的流程图;
图8是示出根据本发明一实施例的水平半像素插值的过程的流程图;
图9是示出根据本发明一实施例的对角线半像素插值的过程的流程图;
图10A是根据本发明的实施例的二维数字滤波器的示意框图;以及
图10B是图10A的数字滤波器的级的示意框图。
具体实施方式
图1中示出了像素阵列10中的几个像素的示意图。像素阵列10由排列在具有行和列的阵列中的整数像素12构成。为了说明的目的,图1中放大了像素之间的间隔。完整的像素阵列可以具有任何数量的像素,并且可以表示图像的一部分或者整个图像。在一个实施例中,对像素阵列的24×24像素块进行处理,以产生用于16×16像素块的半像素。使用24×24像素块是为了在16×16像素块的边缘附近产生半像素。整数像素12的每个都具有一个像素值,如8比特的值。
可以利用插值来产生子像素值,如产生半像素值或者四分之一像素值。在此所述的实施例涉及半像素值的产生。但是,本发明不限于半像素值的产生。
半像素插值过程在水平对准的整数像素12之间产生水平半像素20,而在垂直对准的整数像素之间产生垂直半像素22。另外,所述半像素产生过程可选地可以在连接整数像素的每个2×2组的对角线26的相交处产生对角线半像素24。通过对附近像素的插值来产生半像素。H.264视频编码标准规定:通过使用具有规定的滤波器系数的6抽头的插值滤波器来产生水平半像素和垂直半像素。如下所述,可以通过对附近的垂直半像素的插值来产生对角线半像素。在6抽头的插值滤波器的情况下,每个半像素的值基于6个附近像素的值。
在确定子像素值的过程中,滤波器系数的值确定了赋予每个附近像素的加权。按照H.264标准,以如下的方式来计算半像素值:
z=(A-5B+20C+20D-5E+F)/32
其中,z是半像素值,
在用于计算垂直半像素值时,A、B、C、D、E和F是列中6个最接近的整数像素值,
在用于计算水平半像素值时,A、B、C、D、E和F是行中6个最接近的整数像素值,并且
在用于计算对角线半像素值时,A、B、C、D、E和F是行中的6个最接近的垂直半像素值。
在这些实施例内,通过对被计算的水平半像素的左边的三个最接近的整数像素和被计算的水平半像素的右边的三个最接近的整数像素的插值,来计算每个水平半像素。通过对被计算的垂直半像素以上的三个最接近的整数像素和被计算的垂直半像素以下的三个最接近的整数像素的插值,来计算每个垂直半像素。通过对被计算的对角线半像素的左边的三个最接近的垂直半像素以及被计算的对角线半像素的右边的三个最接近的垂直半像素的插值,可以计算每个对角线半像素。
图2中示出了根据本发明一个实施例的半像素插值模块的框图。所述半像素插值模块可以是实施于集成电路芯片上的运动估计加速器的一部分。所述运动估计加速器可以与数字信号处理器(DSP)或者其他的可编程处理器(如微控制器单元(MCU))一起工作,或者可以作为它们的一部分。所述半像素插值模块包括半像素插值器40、整数像素缓冲器42、垂直半像素缓冲器44、水平半像素缓冲器46、对角线半像素缓冲器48和控制器50。
半像素插值器40从整数像素缓冲器42接收整数像素值,并且从垂直半像素缓冲器44接收垂直半像素值。半像素插值器40产生垂直半像素值并将垂直半像素值存储在垂直半像素缓冲器44中,产生水平半像素并将水平半像素值存储在水平半像素缓冲器46中,并且可产生对角线半像素值并可将对角线半像素值存储在对角线半像素缓冲器48中。如上所述,可以通过垂直半像素的插值来产生对角线半像素。因此,将存储在垂直半像素缓冲器44中的所计算的垂直半像素值提供给半像素插值器40的输入,用于产生对角线半像素。控制器50对半像素插值器40以及缓冲器42、44、46和48进行控制,以执行半像素的产生,如下所述。
在一个实施例中,整数像素缓冲器42保存24×24的整数像素值块,并且每个像素值具有8比特。在这个实施例内,垂直半像素缓冲器44的容量为24×19个半像素值(每个半像素值具有16比特),水平半像素缓冲器46的容量为19×20个半像素值(每个半像素值具有8比特),而对角线半像素缓冲器48的容量为19×19个半像素值(每个半像素值具有8比特)。可以理解,在不同的应用中,可以使用不同的缓冲器大小。
图3中示出了根据本发明一个实施例的半像素插值器40的示意框图。依赖于所计算的半像素,输入缓冲器70从整数像素缓冲器42(图2)或者从垂直半像素缓冲器44接收像素值。通过插值滤波器阵列72和移位寄存器阵列74来执行半像素插值。在图3的实施例中,插值滤波器阵列72包括四个数字滤波器F0-F3,所述数字滤波器中的每个具有6级S0-S5,并且移位寄存器阵列74包括9个移位寄存器R0-R8,所述移位寄存器中的每个具有6级S0-S5。每个数字滤波器F0-F3可以是FIR(有限脉冲响应)插值滤波器。可以明白,这种配置仅仅是示例性的,并非对本发明的范围的限制。
从输入缓冲器70向移位寄存器阵列74提供像素值,并且像素值在连续的时钟周期向下移位通过移位寄存器阵列74的各级。移位寄存器阵列74连接到插值滤波器阵列72,如下所述。在第一或垂直模式,插值滤波器阵列72中的插值滤波器从移位寄存器阵列74中选择与像素阵列的列对应的像素值。在第二或水平模式,插值滤波器阵列72中的插值滤波器从移位寄存器阵列74中选择与像素阵列的行对应的像素值。插值滤波器阵列72执行所选像素值的插值,并且向输出缓冲器76提供半像素值。按照半像素的类型,半像素值从输出缓冲器76中被存储到在图2所示的半像素缓冲器44、46或者48之一。在图3的实施例中,输入缓冲器70具有9个寄存器位置[I0:I8],这9个寄存器位置保存16比特的像素值,而输出缓冲器76具有四个寄存器位置[O0:O3],这四个寄存器位置保存16比特的半像素值[O0:O3]。
单个插值滤波器阵列72执行垂直半像素的插值、水平半像素的插值和对角线半像素的插值。这是通过将移位寄存器阵列74中的移位寄存器的级连接到插值滤波器阵列72中的插值滤波器的对应级而实现的。如图3所示,移位寄存器R0-R3的第一级S0分别连接到插值滤波器F0-F3的第一级S0;移位寄存器R1-R4的第二级S1分别连接到插值滤波器F0-F3的第二级S1;依此类推。
图3中,连接通过移位寄存器阵列74中的各级中的数字来表示。因此,例如,移位寄存器R0的级S0连接到滤波器F0的级S0;移位寄存器R1的级S0连接到滤波器F1的级0;移位寄存器R2的级0连接到滤波器F2的级0;且移位寄存器R3的级S0连接到滤波器F3的级S0。类似地,移位寄存器R5的级S5连接到滤波器F1的级S5;移位寄存器R6的级S5连接到滤波器F1的级S5;移位寄存器F7的级S5连接到滤波器F2的级S5;且移位寄存器R8的级S5连接到滤波器F3的级S5。可以注意到,移位寄存器阵列74的各级连接到插值滤波器阵列72的对应的各级。移位寄存器阵列74和插值滤波器阵列72中的“对应的各级”具有相同的级数。另外,可以注意到,沿移位寄存器阵列74的对角线的各级连接到插值滤波器的对应的各级。该配置允许水平插值和对角线插值,如下所述。垂直插值分别通过移位寄存器R0-R3的第一级S0和插值滤波器F0-F3的第一级S0之间的连接来实现。
图4示出了根据本发明一个实施例的插值滤波器阵列72的示意框图。如图所示,滤波器阵列72包括四个插值滤波器F0、F1、F2和F3。每个插值滤波器包括6个抽头或者级。每个插值滤波器的每个级可以包括锁存器、加法器、乘法器和多工器,如下所述。在图4的实施例中,相乘是通过比特移位而实现的,并不使用乘法器。第一级不需要加法器。而且,第一级中可以省略多工器,原因是,第一级在第一和第二工作模式中接收相同的输入。
每个插值滤波器具有在垂直半像素插值期间使用的第一输入和在水平半像素插值和对角线半像素插值期间使用的第二输入。第一输入连接到移位寄存器阵列74中的对应的移位寄存器的第一级S0。第二输入连接到移位寄存器阵列74中的预定的移位寄存器中的对应的各级。因此,例如,插值滤波器F0在线100a上接收第一输入,并在线100a、111a、112a、113a、114a和115a上接收第二输入。到滤波器F0的第一级S0的线100a在第一和第二模式中接收相同的输入,并且不需要数据选择。
插值滤波器F0的第二级包括锁存器108、加法器110和多工器111。加法器110接收前一级的输出和多工器111的输出,并将和提供给锁存器108。多工器111在线100a上接收来自移位寄存器R0的级S0的第一输入,并且在线111a上接收来自移位寄存器R1的第一级S1的第二输入。插值滤波器F0在第二到第六级内分别包括多工器111、112、113、114和115。根据工作模式来控制每个多工器。在第一模式,每个多工器向插值滤波器的每级提供线100a上的第一输入。在第二模式,每个多工器向移位寄存器的对应的各级提供来自移位寄存器阵列74的像素值。在这个实施例中,通过对提供给加法器110的像素值进行比特移位,来实现每个像素值与滤波器系数的相乘。每个插值滤波器F0、F1、F2和F3可以具有相同的结构,其中具有适当的不同的输入。
图5示出了根据本发明一个实施例的移位寄存器阵列74的示意框图。移位寄存器阵列74包括移位寄存器R0-R8,每个移位寄存器具有级S0-S5。在图5的实施例中,移位寄存器阵列74包括9个移位寄存器。每个移位寄存器对应于输入缓冲器70中的各像素值,并且每个移位寄存器具有6级,每级对应于插值滤波器的各级。如下所述,可以省略未使用的移位寄存器级。
输入像素值从输入缓冲器70被移位到移位寄存器阵列74的第一级S0中,并且在连续的时钟周期被移位通过每个移位寄存器的各级。移位寄存器R0-R3的第一级S0分别连接到插值滤波器F0-F3的第一输入。所选择的移位寄存器R1-R8的级S1-S5分别连接到插值滤波器F0-F3的第二输入。移位寄存器阵列74中的各移位寄存器的各级按照惯例“[级,移位寄存器]”来标注,其中,在这个实施例内,“级”具有从0到5的值,且“移位寄存器”具有从0到8的值。这样,第四移位寄存器的第三级就被标注为[2,3]。
虚线140、142、144和146所包围的是耦接到插值滤波器阵列72的移位寄存器阵列74的各级。虚线140所包围的各级耦接到插值滤波器F0;虚线142所包围的各级耦接到插值滤波器F1;虚线144所包围的各级耦接到插值滤波器F2;而虚线146所包围的各级耦接到插值滤波器F3。因此,移位寄存器R0的级S0(级[0,0])耦接到插值滤波器F0的第一级;移位寄存器R1的级S1(级[1,1])耦接到在插值滤波器F0的第二级内的多工器111;移位寄存器R2的级S2(级[2,2])耦接到插值滤波器F0的第三级内的多工器112;移位寄存器R3的级S3(级[3,3])耦接到插值滤波器F0的第四级内的多工器113;移位寄存器R4的级S4(级[4,4])耦接到插值滤波器F0的第五级内的多工器114;而移位寄存器R5的级S5(级[5,5])耦接到插值滤波器F0的第六级内的多工器115。虚线142、144和146所包围的移位寄存器级以类似的方式分别连接到插值滤波器F1-F3。由移位寄存器阵列74提供给插值滤波器阵列72的输入具有在像素阵列中水平递增的效果,虽然所述过程实际上在所述像素阵列中从上向下递增。
图6A示出了9×6像素块的一个示例,其中在每个像素位置处示出了一个像素值。图6B-6G示出了在连续的时钟周期上向移位寄存器阵列74中装载图6A的9×6像素块。对于移位寄存器阵列中的每级,被提供给插值滤波器F0-F3的像素值用像素值下的标记F0-F3来表示。水平半像素值在第六行像素值被装载到移位寄存器阵列74中之后产生。
通过跟踪图6A中的一行像素值通过如滤波器F0的所述插值滤波器之一,即可理解水平插值。在图6B中,来自图6A的第一行像素值被装载到移位寄存器阵列74的第一级S0中,并且像素值“12”被提供给滤波器F0的级S0。在图6C中,第一行像素值被移位到移位寄存器阵列74的第二级S1,并且像素值“65”被提供给滤波器F0的级S1。在滤波器F0的级S1中,根据滤波器系数的值对像素值“12”和“65”进行组合。这个过程持续,直至通过移位寄存器阵列74和滤波器F0-F3中的每个。在图6G中,第一行像素值被移位到移位寄存器阵列74的第六级S5,并且向滤波器F0的级S5提供像素值“34”。在6个时钟周期之后,滤波器F0输出水平半像素值,该水平半像素值表示图6A的像素阵列的第一行中的像素值“12”、“65”、“34”、“14”、“86”和“34”的插值。在下一个时钟周期,滤波器F0输出用于表示图6A的像素阵列的第二行中最初的6个像素值的插值的水平半像素值。因此,在六个时钟周期的初始延迟之后,滤波器F0在每个时钟周期输出水平半像素值。
半像素插值模块将以从前一整数搜索中产生的运动向量为中心的24×24像素块作为输入,并且产生针对随后的半像素和四分之一像素搜索的、与H.264标准所要求的插值滤波相对应的半像素值。H.264标准需要6抽头的水平和垂直滤波器用于半像素插值。如上所述,所述半像素插值模块使用在水平和垂直模式下工作的四个插值滤波器,两个模式之间的差别在于:(a)装载到滤波器中的输入数据(即整数或者半像素数据),(b)从阵列装载每个插值滤波器的方式,以及(c)是否对输出进行了削波处理。
半像素插值器可由控制器5(图2)控制,所述控制器50被实施为有限状态机,该有限状态机循环通过三种操作(如下结合图7-9所述的),以产生所有的半像素,包括垂直半像素、水平半像素和对角线半像素(其对应于H.264标准内的“j”个像素)。
第一种操作包括垂直地、从上向下地6遍通过24×24像素块,以产生垂直半像素。这些半像素是通过向在第一或者垂直模式下配置的插值滤波器F0、F1、F2和F3中装载整数像素数据而产生的。在第一模式,每个插值滤波器在其第一输入接收像素数据。到每级的输入是从整数像素缓冲器42装载到输入缓冲器70中然后装载到移位寄存器阵列74中的新的一行的像素数据。在6个周期后,在每个时钟周期产生输出,且结果以全分辨率(16比特)存储到垂直半像素缓冲器44(图2)中。垂直半像素用于进一步的插值(全分辨率),并用于随后的半像素和四分之一像素搜索(被截短成8比特)。
半像素插值的第二种操作是以垂直的、从上向下的5遍通过24×24像素块而产生水平半像素。每一新行的像素数据从整数像素缓冲器42装载到输入缓冲器70中,然后装载到移位寄存器阵列74中。输入缓冲器70用于向半像素插值器中装载像素,但是所述插值滤波器被配置成工作于第二或者水平模式。在第二模式,每个插值滤波器在其第二输入接收像素数据。到每个插值滤波器的第二输入来自如上所述沿着对角线的移位寄存器阵列74的对应的各级。因为进一步的插值不需要水平半像素,所以每个滤波操作的最终结果被截短成8比特,并被存储在水平半像素缓冲器46中。
半像素插值的第三种操作是以垂直的、从上向下的5遍通过24×24像素块而产生对角线半像素。以类似的方式,对水平半像素执行对角线半像素的产生,不同之处在于,输入像素数据是以全分辨率存储在垂直半像素缓冲器44中的先前产生的垂直半像素数据。垂直半像素数据从垂直半像素缓冲器44装载到输入缓冲器70中,然后装载到移位寄存器阵列74中。在这个操作中,插值滤波器再次被配置成工作于第二或者水平模式。并且第二输入是从像素移位寄存器74接收的。结果被输出到对角线半像素缓冲器48,并且被截短成8比特而存储。
图7的流程图中示出了垂直半像素插值的过程的一个实施例。在动作200中,插值滤波器F0、F1、F2和F3被配置成工作于第一或者垂直模式。在第一模式,各插值滤波器中的多工器从移位寄存器R0-R3的第一级S0选择该插值滤波器的第一输入。在动作202中,整数像素从整数像素缓冲器42装载到输入缓冲器70中、从输入缓冲器70装载到移位寄存器R0-R3中、然后从移位寄存器R0-R3装载到插值滤波器F0-F3中。在动作204中,插值滤波器在初始延迟后输出垂直半像素值。在6级插值滤波器的情况下,输出是在6个时钟周期的初始延迟后提供的。在动作206中,确定处理是否已到达像素阵列的底部。如果该处理还没有到达阵列的底部,则在动作208中该处理向下递增一行,并且返回动作202,以装载用于像素阵列的下一行的整数像素。在将包括动作202、204、206和208的循环执行了六次后,在动作204输出垂直半像素。如果在动作206确定已经到达阵列的底部,则在动作210中确定是否已经处理了整个阵列。如果整个阵列还没有被处理完,则在动作212中,该处理向阵列的右边递增四列。然后,所述处理返回动作202,以装载第二组的四列的第一行中的像素。该处理以这种方式继续,直到整个24×24像素块被处理完。在24×24像素块和四个插值滤波器的情况下,图7的过程使用了垂直的、从上向下的6遍。当整个阵列已被处理完时,所述过程在动作214进行至水平处理。
可以注意到,在每一组的四列被处理后,动作212涉及向像素阵列的右边递增四列。相对照地,图3-5示出了了从右向左增加的像素编号。所述的明显的不一致是由于像素值通常被存储在存储器中的方式而导致的。因此,例如,插值滤波器F0处理像素阵列的第一列,插值滤波器F1处理像素阵列的第二列等。
图8的流程图中示出了水平半像素处理的过程的一个实施例。在动作240中,插值滤波器F0、F1、F2和F3被配置成工作于第二或者水平模式。在第二模式,各插值滤波器中的多工器从移位寄存器阵列74选择输入,如上所述。在动作242中,整数像素从整数像素缓冲器42装载到输入缓冲器70中、然后从输入缓冲器70装载到移位寄存器阵列74中。具体地,9个像素值被装载到移位寄存器阵列74中的9个移位寄存器R0-R8中。移位寄存器阵列74中的像素值被提供给插值滤波器F0、F1、F2和F3的对应的各级,如上所述。在动作244中,插值滤波器在初始延迟后输出水平半像素。在6级插值滤波器的情况下,水平半像素是在6个时钟周期的初始延迟后输出的。在动作246中,确定是否已经到达像素阵列的底部。如果还没有到达阵列的底部,则在动作248中该处理向下递增一行,并返回动作242。在包括动作242、244、246和248的循环已被执行六次后,在动作244输出水平半像素。当处理到达阵列底部时,在动作250中确定是否已经处理了整个阵列。如果整个阵列还没有被处理完,则在动作252中,该处理向右递增四列,并且返回动作242,以处理下一组的四列。所述过程继续进行,直到处理了整个24×24像素块。在24×24像素块和四个插值滤波器的情况下,图8的过程使用了垂直的、从上向下的5遍。当已经处理了整个阵列时,该过程在动作254进行至对角线处理。
图9的流程图中示出了对角线半像素产生的过程的一个实施例。在动作270中,插值滤波器被配置成工作于第二或者水平模式。在第二模式,各插值滤波器中的多工器从移位寄存器阵列74接收输入,如上所述。在动作272中,在图7的过程中产生的垂直半像素从垂直半像素缓冲器44装载到输入缓冲器70中、然后从输入缓冲器70装载到移位寄存器阵列74中。移位寄存器阵列74向插值滤波器F0、F1、F2和F3的相应的各级提供像素值,如上所述。在动作274中,插值滤波器在初始延迟后输出对角线半像素。在6级插值滤波器的情况下,初始延迟是6个时钟周期。在动作276中,确定是否已经到达像素阵列的底部。如果还没有到达像素阵列的底部,则在动作278中,该处理在阵列中向下递增一行,并且返回动作272。在包括动作272、274、276和278的循环已被执行六次后,由插值滤波器输出对角线半像素。当已经到达阵列的底部时,在动作280中确定是否已经处理了整个阵列。如果整个阵列还没有被处理完,则在动作282中该处理向右递增四列,并且返回到动作272。所述过程继续进行,直到已经处理了整个24×24像素块。在24×24像素块和四个插值滤波器的情况下,图9的过程使用垂直的、从上向下的5遍。在已经处理了整个阵列后,所述过程在动作284完成。
总之,用于执行半像素插值的电路可以使用小数量的6抽头的FIR滤波器,从而使电路面积很小,所述滤波器处理像素阵列的垂直和水平方向上的像素数据。使用四个专用存储器,以提供对插值像素值和整数像素数据的存储。通过使用四个FIR滤波器,对于每个模式,数据被装载在5个或者6个垂直的条中,而不是将输入的像素阵列以水平的方式逐行地提供给插值滤波器(这需要24个滤波器)。使用状态机,以控制滤波器的模式,所述滤波器执行垂直插值并存储全尺寸的结果,随后进行水平插值,然后进行对角线半像素插值。尽管所述FIR滤波器的数量小,但是插值器仅以734个循环即可完成对24×24整数像素块的处理。
图10A的示意框图内示出了用于对数据阵列300中的数据值进行滤波的设备。可存储在存储器中的数据阵列300具有数据值的行和列,并且图10A的滤波设备提供对数据阵列的数据值的二维滤波。输入缓冲器302接收数据阵列的行中的数据值。所述数据值被提供给移位寄存器阵列310,该移位寄存器阵列310具有移位寄存器320、321、322、323、324和325,其中每个移位寄存器具有6级S0-S5。在连续的时钟周期,成行的数据值向下移位通过移位寄存器阵列310。移位寄存器320-325的预定的各级连接到数字滤波器330,该数字滤波器330具有级S0-S5。数字滤波器330可以被配置为与图4所示且如上所述的插值滤波器之一对应的FIR滤波器。在第一模式,移位寄存器320的级S0耦接到滤波器330的各级S0-S5。在第二模式,被标注以“×”的移位寄存器320-325的各级连接到滤波器330的对应的各级。
在工作中,在第一模式下对数据阵列中的一列或更多列的数据值进行处理。然后,滤波器可切换到第二模式,而来自移位寄存器阵列的预定的各级的数据值被提供给滤波器330,以提供对数据值的水平处理。因此,可以提供使用单个数字滤波器、利用图10A的设备来处理数据阵列的行和列中的数据值。
图10B的示意框图中示出了数字滤波器级的另一个实施例。滤波器级350包括锁存器352、加法器354、乘法器356和多工器358。多工器358在第一或者垂直模式下提供垂直数据值V,并在第二或者水平模式下提供水平数据值H,如上所述。乘法器356将所选择的数据值与滤波器系数Cn相乘。加法器354将乘法器356的输出与前一级的输出组合起来,以提供存储在锁存器352中的和。在数字滤波器的第一级内,可以省去加法器354。在可以通过比特移位而实现与滤波器系数相乘的情况下,在数字滤波器的每级中,可省去乘法器356。
应该理解,在此所述的半像素插值器可以利用不同数量的插值滤波器以及每个插值滤波器中的不同数量的级来实现。已经发现,四个插值滤波器即可提供良好的结果。选择6级是基于H.264视频编码标准的。但是,其他标准或者设计考虑因素可能要求不同数量的级。另外,参见图5,可以省略移位寄存器R0-R4的在虚线140右下边的级,因为在所述实施例中不使用这些移位寄存器的输出。
虽然已经将插值处理描述为以垂直的方式多遍通过像素阵列,但是本发明不限于此。在其他实施例中,可以将半像素插值实施为以水平的方式多遍通过像素阵列。另外,可以通过对水平半像素的垂直插值来获得对角线半像素。
已经描述了本发明的至少一个实施例的几个方面,应当理解,本领域内的普通技术人员容易认识到,可进行各种改变、修改和改进。这样的改变、修改和改进旨在作为本公开的一部分,并且旨在处于本发明的精神和范围内。因此,上述的说明和附图仅仅是示例性的。

Claims (20)

1.一种用于在具有像素行和列的像素阵列中进行像素插值的设备,包括:
移位寄存器阵列,用于将所述像素阵列的像素值移位,所述移位寄存器阵列包括两个或者更多个移位寄存器;
插值滤波器阵列,与所述移位寄存器阵列互连,所述插值滤波器阵列包括一个或更多个插值滤波器;及
控制器,被配置成在第一模式下向相应的插值滤波器提供来自所述移位寄存器阵列的像素阵列的列中的像素值,并且被配置成在第二模式下向相应的插值滤波器提供来自所述移位寄存器阵列的像素阵列的行中的像素值。
2.根据权利要求1所述的设备,其中所述移位寄存器的级连接到所述插值滤波器的对应的级。
3.根据权利要求2所述的设备,还包括输入缓冲器,用于保存所述像素阵列的像素值,所述输入缓冲器耦接到所述移位寄存器阵列。
4.根据权利要求2所述的设备,其中所述插值滤波器阵列包括4个有限脉冲响应FIR插值滤波器,每个插值滤波器具有6级,并且所述移位寄存器阵列包括9个移位寄存器。
5.根据权利要求2所述的设备,其中所述插值滤波器阵列包括m个插值滤波器,其中每个插值滤波器具有n级,并且其中所述移位寄存器阵列包括m+n-1个移位寄存器。
6.根据权利要求1所述的设备,其中所述控制器被配置成在第一模式下向相应的插值滤波器提供所述像素阵列的列中的整数像素值,以产生垂直子像素值,并且被配置成在第二模式下向相应的插值滤波器提供所述像素阵列的行中的整数像素值,以产生水平子像素值。
7.根据权利要求6所述的设备,其中所述控制器被进一步配置成:在第二模式下向相应的插值滤波器提供垂直子像素值,以产生对角线子像素值。
8.根据权利要求1所述的设备,其中所述插值滤波器中的每个在第一模式下从所述移位寄存器阵列选择第一输入,并且在第二模式下从所述移位寄存器阵列选择第二输入。
9.根据权利要求3所述的设备,其中所述控制器被配置成:在垂直子像素值的产生期间以及在水平子像素值的产生期间向所述输入缓冲器中装载整数像素值,并且在对角线子像素值的产生期间向所述输入缓冲器内中装载垂直子像素值。
10.根据权利要求1所述的设备,其中所述控制器被配置成:在第一阶段中顺序通过所述像素阵列,以产生垂直子像素值,在第二阶段中顺序通过所述像素阵列,以产生水平子像素值,并且在第三阶段中顺序通过所述垂直子像素值,以产生对角线子像素值。
11.一种用于在具有像素行和列的像素阵列中进行像素插值的方法,包括:
提供包括两个或者更多个移位寄存器的移位寄存器阵列及与所述移位寄存器阵列互连的插值滤波器阵列,所述插值滤波器阵列包括一个或更多个插值滤波器;
通过所述移位寄存器阵列中的移位寄存器,将所述像素阵列的像素值移位;
在第一模式下向相应的插值滤波器提供来自所述移位寄存器阵列的像素阵列的列中的像素值,以产生垂直子像素值;以及
在第二模式下向相应的插值滤波器提供来自所述移位寄存器阵列的像素阵列的行中的像素值,以产生水平子像素值。
12.根据权利要求11所述的方法,还包括:将来自所述移位寄存器的级的垂直子像素值提供给所述插值滤波器的对应的级,以产生对角线子像素值。
13.根据权利要求11所述的方法,其中提供插值滤波器阵列包括:提供4个有限脉冲响应FIR数字滤波器,每个数字滤波器具有6级,并且其中提供移位寄存器阵列包括:提供9个移位寄存器。
14.根据权利要求11所述的方法,其中提供来自所述移位寄存器阵列的像素值包括:将来自所述移位寄存器的级的像素值提供给所述插值滤波器的对应的级。
15.根据权利要求12所述的方法,还包括:提供耦接到所述移位寄存器阵列的输入缓冲器,以及在垂直子像素值的产生期间及在水平子像素值的产生期间向所述输入缓冲器中装载整数像素值,并且在对角线子像素值的产生期间向所述输入缓冲器中装载垂直子像素值。
16.根据权利要求12所述的方法,还包括:在第一阶段中顺序通过所述像素阵列,以产生垂直子像素值,在第二阶段中顺序通过所述像素阵列,以产生水平子像素值,以及在第三阶段中顺序通过所述垂直子像素值,以产生对角线子像素值。
17.一种用于对具有数据值的行和列的数据阵列中的数据值进行滤波的设备,包括:
移位寄存器阵列,用于将所述数据阵列的数据值移位;
至少一个数字滤波器,与所述移位寄存器阵列互连;以及
控制器,用于在第一模式下向所述数字滤波器提供来自所述移位寄存器阵列的数据阵列的列中的数据值,并在第二模式下向所述数字滤波器提供来自所述移位寄存器阵列的数据阵列的行中的数据值。
18.根据权利要求17所述的设备,其中所述移位寄存器的级连接到所述数字滤波器的对应的级。
19.根据权利要求17所述的设备,其中所述移位寄存器阵列与所述数字滤波器互连,以便在第一模式下在连续的时钟周期将所述数据阵列的列中的数据值提供给所述数字滤波器的级。
20.根据权利要求17所述的设备,其中,所述移位寄存器阵列与所述数字滤波器互连,以便在连续的时钟周期将所述数据阵列的行中的数据值提供给所述数字滤波器的连续的级。
CN200810133053.5A 2007-07-09 2008-07-08 用于视频运动估计加速器的半像素插值器 Active CN101374236B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US95881007P 2007-07-09 2007-07-09
US60/958,810 2007-07-09
US12/136,492 US8509567B2 (en) 2007-07-09 2008-06-10 Half pixel interpolator for video motion estimation accelerator
US12/136,492 2008-06-10

Publications (2)

Publication Number Publication Date
CN101374236A true CN101374236A (zh) 2009-02-25
CN101374236B CN101374236B (zh) 2013-06-19

Family

ID=40253173

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200810133053.5A Active CN101374236B (zh) 2007-07-09 2008-07-08 用于视频运动估计加速器的半像素插值器

Country Status (2)

Country Link
US (1) US8509567B2 (zh)
CN (1) CN101374236B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103237211A (zh) * 2013-04-07 2013-08-07 福建星网视易信息系统有限公司 一种基于fpga的视频亚像素亮度插值的方法及其装置

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8509567B2 (en) * 2007-07-09 2013-08-13 Analog Devices, Inc. Half pixel interpolator for video motion estimation accelerator
CN102025985A (zh) * 2009-09-23 2011-04-20 鸿富锦精密工业(深圳)有限公司 视频编解码装置及其插值计算方法
US8437581B2 (en) * 2011-03-04 2013-05-07 General Instrument Corporation Method and system for interpolating fractional video pixels
US20120230407A1 (en) 2011-03-11 2012-09-13 General Instrument Corporation Interpolation Filter Selection Using Prediction Index
US9264725B2 (en) 2011-06-24 2016-02-16 Google Inc. Selection of phase offsets for interpolation filters for motion compensation
US9319711B2 (en) 2011-07-01 2016-04-19 Google Technology Holdings LLC Joint sub-pixel interpolation filter for temporal prediction
CN103139561A (zh) * 2011-12-05 2013-06-05 朱洪波 半像素与四分之一像素插值滤波器
US10009622B1 (en) 2015-12-15 2018-06-26 Google Llc Video coding with degradation of residuals

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6097855A (en) * 1993-02-19 2000-08-01 Levien; Raphael L. Method and apparatus for image rotation
US5594675A (en) * 1994-07-14 1997-01-14 Industrial Technology Research Institute Reduced signal processing requirement sample and hold linear phase interpolative fir filter
KR100226684B1 (ko) * 1996-03-22 1999-10-15 전주범 반화소 움직임 추정장치
US6690835B1 (en) 1998-03-03 2004-02-10 Interuniversitair Micro-Elektronica Centrum (Imec Vzw) System and method of encoding video frames
TW548470B (en) * 1998-08-03 2003-08-21 Seiko Epson Corp Substrate for electro-optical device, electro-optical device, electronic machine, and projection type display device
FR2790344B1 (fr) * 1999-02-26 2001-05-18 St Microelectronics Sa Demodulateur cofdm avec compensation de deplacement de fenetre d'analyse fft
GB2365646B (en) * 2000-07-31 2004-10-13 Sony Uk Ltd Image processor and method of processing images
US6427158B1 (en) * 2000-12-14 2002-07-30 Texas Instruments Incorporated FIR decimation filter and method
US6765578B2 (en) * 2001-08-30 2004-07-20 Micron Technology, Inc. Graphics resampling system and method for use thereof
US6950469B2 (en) 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
KR100472476B1 (ko) * 2002-08-31 2005-03-10 삼성전자주식회사 움직임 보상을 위한 보간 방법 및 그 장치
US7548941B2 (en) * 2004-06-18 2009-06-16 Analog Devices, Inc. Digital filter using memory to emulate variable shift register
US7792192B2 (en) 2004-11-19 2010-09-07 Analog Devices, Inc. System and method for sub-pixel interpolation in motion vector estimation
US7653132B2 (en) 2004-12-21 2010-01-26 Stmicroelectronics, Inc. Method and system for fast implementation of subpixel interpolation
JP2006311051A (ja) * 2005-04-27 2006-11-09 Matsushita Electric Ind Co Ltd 固体撮像素子用の信号処理回路および固体撮像装置
CN100493192C (zh) * 2006-12-01 2009-05-27 清华大学 一种h.264解码器的运动补偿插值方法
US7890564B2 (en) * 2007-01-30 2011-02-15 Himax Technologies Limited Interpolation FIR filter and method thereof
US8509567B2 (en) * 2007-07-09 2013-08-13 Analog Devices, Inc. Half pixel interpolator for video motion estimation accelerator

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103237211A (zh) * 2013-04-07 2013-08-07 福建星网视易信息系统有限公司 一种基于fpga的视频亚像素亮度插值的方法及其装置

Also Published As

Publication number Publication date
US20090016634A1 (en) 2009-01-15
US8509567B2 (en) 2013-08-13
CN101374236B (zh) 2013-06-19

Similar Documents

Publication Publication Date Title
CN101374236B (zh) 用于视频运动估计加速器的半像素插值器
CN100542258C (zh) 图像信息转换装置和方法、以及信息信号处理装置
EP0825780A2 (en) Coding system
EP1120747A2 (en) Motion estimator
WO1996007987A1 (fr) Circuit integre pour le traitement des signaux numeriques
US6516031B1 (en) Motion vector detecting device
US20100111432A1 (en) Device and Method for Coding a Transformation Coefficient Block
CN101625849B (zh) 图像处理装置及方法
JPH09198373A (ja) 逆離散コサイン変換プロセッサおよびmpegデコーダ
JPH07191966A (ja) 行列掛け算回路
US20080279274A1 (en) Circuit and method for generating fixed point vector dot product and matrix vector values
JP3855827B2 (ja) 2次元サブバンド符号化装置
US5844631A (en) Motion estimation method and apparatus for calculating a motion vector
US5668748A (en) Apparatus for two-dimensional discrete cosine transform
CN112639839A (zh) 神经网络的运算装置及其控制方法
JPH09198371A (ja) パラレルデータワード・シリアルワード変換装置および分配演算装置
EP0474246A2 (en) Image signal processor
JP4516051B2 (ja) フィルタ処理装置、乗算器及び動き補償処理装置
JP4519807B2 (ja) 乗算器及びフィルタ処理装置
CN100469146C (zh) 视频图像运动补偿装置
CN101662598A (zh) 一种连续视频数据流的缩放系统
CN107277551A (zh) 一种近似离散余弦变换方法
KR20000013653A (ko) 정/역 최적화 정수형 여현변환장치 및 그 방법
CN105898334B (zh) 一种应用于视频编解码的dc预测电路及其方法
JPS60112141A (ja) 乗算回路

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant