用于有效过滤数字信号的方法和系统的制作方法

文档序号:7505222阅读:191来源:国知局
专利名称:用于有效过滤数字信号的方法和系统的制作方法
技术领域
本发明一般涉及用于执行整数运算的技术,尤其涉及用于在视频编码器和解码器中执行量化和预测计算的技术。
背景技术
在视频通信(例如电视、电视会议、流媒体等等)中,图像帧流是经由传输信道传送到接收机的。根据特定应用,还可以传送与视频相关联的音频信息。视频数据通常很大。例如,典型的电视图像具有每帧大约720×480个像素的空间分辨率。如果使用8个比特来以数字方式表示一个像素并以每秒30帧的速度传送视频,则需要大约83Mb/s的数据速率。然而,传输信道的带宽通常是有限的。因此,原始数字视频数据的实时传输通常是不可行的。同样,由于用来存储的存储器数量通常也是有限的,因此原始数字视频数据的存储同样受到抑制。
这样一来,在传输和/或存储视频数据之前通常会对其进行压缩。目前已经出现了多种视频压缩标准,例如H.261、MPEG-1、MPEG-2、MPEG-4、H.263等等。这些压缩技术通常利用了视频流每个画面内部以及视频流画面之间的信息冗余度。例如,一种通常用于压缩视频数据的技术包含了对画面数据执行一种将其变换到二维空间频域中的数学转换(例如离散余弦变换)。然后则对经过变换的画面进行量化(也就是降低数据的分辨率,从而只需要较少的比特就能表示数据),从而利用了人类视觉通常较少感测到较高空间频率这一事实(也就是说,与那些对应于较低空间频率的已变换视频数据相比,那些与更高空间频率相对应的已变换画面数据将会受到更严格的量化)。在接收机上则对接收到的视频数据施加逆变换,以便再现视频。
在另一种常规技术中,所传送的是新画面与先前画面之间的差值,而不是视频流中的新画面。由于一个视频流中的连续画面通常是相似的,因此可以使用远远少于传送画面自身所需要的比特来传送这些差值信息。
通过在编码器和解码器上使用预测技术,可以进一步减少传送视频所需要的比特数目。例如,编码器可以基于先前画面来“预测”视频流中的当前画面,然后对其预测画面与实际画面之间的误差进行计算。预测画面与实际画面之间的误差往往小于实际画面与先前画面之间的误差。由于误差较小,因此只需要较少的比特来表示误差,从而减少了需要传送的比特的数目。在接收机上,解码器产生一个预测画面并将其与接收到的误差信息相结合,从而产生实际画面。
此外,在一种用于产生视频流中的画面预测的技术中包含了运动估计。在一种运动估计技术中,当前画面划分为8×8的像素块。对每个块来说,在一个基准画面内部搜索所述块的最佳适配,其中举例来说,所述基准画面可以是视频流中与当前画面相邻的另一个实际或预测画面。一旦发现最佳适配,则确定一个主要表示最佳适配块在基准画面中的位置的运动矢量。然后则将涉及每个帧块的运动矢量和误差都传送到接收机。而在接收机上则是使用基准画面、运动矢量和误差信息来重建当前画面的。
与上述及其他技术相类似的技术可以结合起来,以便在没有将视频质量降低到预期等级之外的情况下实现更高的压缩度。例如,在MPEG-1、MPEG-2和MPEG-4标准中预测了视频流中的画面,并且计算了实际画面与预测画面之间的差值。然后则是对所述差值的离散余弦变换(DCT)进行计算并对DCT系数进行量化。
在典型的视频系统中,视频数据是作为整数来进行表示和处理的。而目前需要的则是那些能够更有效地处理定点数据的技术。

发明内容
在依照本发明的一个实施例中,提供了一种用于在信号处理器中对数字信号中的取样进行过滤的方法。该方法包括依照一个少于四个数字信号取样的函数产生近似过滤取样。此外,该方法还依照一个少于四个取样的函数产生校正值,并且通过使用该校正值来修改近似过滤取样,以便产生一个已过滤取样。
在依照本发明的另一个实施例中,提供了一个包括计算机可读存储介质的计算机程序产品,其中所述介质包含了用于量化数字信号的计算机程序代码。所述计算机程序代码包括用于依照一个少于四个数字信号取样的函数产生近似过滤取样。所述计算机程序代码还包括用于依照一个少于四个取样的函数产生校正值的代码,以及通过使用所述校正值修改近似过滤取样,从而产生一个已过滤样本的代码。
在依照本发明的另一个实施例中,提供了一个用于过滤数字信号中的取样的系统。该系统包括一个保存了数字信号中的取样的存储器以及一个与存储器相耦合的处理器。该处理器可以进行操作,以便执行步骤A)依照一个少于四个数字信号取样的函数产生近似过滤取样。所述处理器还可以进行操作,以便执行步骤B)依照一个少于四个取样的函数产生校正值,以及C)通过使用校正值来修改近似过滤取样,以便产生一个已过滤取样。
依照本发明的第二个方面,提供了一种在信号处理器中过滤数字信号中的取样的方法。该方法包括依照一个第一取样A、第二取样B、第三取样C和第四取样D的函数产生近似过滤取样,其中A、B、C和D都是定点数。该方法还包括依照((AB)AND(CD))OR(MN)来产生一个校正值,其中M=A+B+1>>1并且N=C+D+1>>1,此外还包括遮蔽所述校正值。此外,该方法还包括使用校正值来修改近似过滤取样,以便产生一个已过滤取样。
在根据本发明的另一个实施例中,提供了一种包含计算机可读存储介质的计算机程序产品,其中该介质包含了用于量化数字信号的计算机程序代码。所述计算机程序代码包括用于依照一个第一取样A、第二取样B、第三取样C和第四取样D的函数产生近似过滤取样的代码,其中A、B、C和D都是定点数,此外还包括依照((AB)AND(CD))OR(MN)来产生一个校正值的代码,其中M=A+B+1>>1并且N=C+D+1>>1。此外,所述计算机程序代码还包括用于遮蔽所述校正值的代码,以及通过使用校正值来修改近似过滤取样,从而产生一个已过滤取样的代码。
根据本发明的第三个方面,提供了另一种在信号处理器中过滤数字信号中的取样的方法。该方法包括依照一个与第一取样A、第二取样B、第三取样C和第四取样D的函数产生近似过滤取样,其中A、B、C和D都是整数。该方法还包括依照((AB)OR(CD)OR(MN)来产生一个校正值,其中M=A+B+1>>1并且N=C+D+1>>1,并且该方法遮蔽所述校正值。此外,所述方法还包括通过使用所述校正值来修改近似过滤取样,从而产生一个已过滤取样。
根据本发明的第四个方面,提供了另一种在信号处理器中过滤数字信号中的取样的方法。该方法包括产生M1=(A+B+1)>>1,其中A和B都是数字信号中的取样,以及产生M2=(C+D+1)>>1,其中C和D也是数字信号中的取样。该方法还包括产生M3=(E+F+1)>>1,其中E和F是数字信号中的取样,以及产生M4=(G+H+1)>>1,其中G和H也是数字信号中的取样。所述方法还包括产生N1=(M1+(M3>>1)+(M3>>2))>>2,以及产生N2=(M2+(M2>>1)+(M4>>2))>>2。此外,该方法还包括产生一个如M1+N1-N2所示的已过滤取样。
借助于本发明,可以实现很多益处。例如,在一个特定实施例中,与常规的过滤技术相比,数字取样过滤是以较少的计算费用来执行的。从以下的详细描述和附图中很容易了解本发明的其他特征和优点。


图1是一个视频编码器实例的简化数据流程图;图2是一个描述了可以实施依照本发明不同实施例的方法的典型计算机系统中的基础子系统的简化框图;图3是一个描述了带有流式SIMD扩展(SSE)或流式SIMD扩展2(SSE2)的IntelTM处理器的紧缩平均指令操作的简化图示;图4是一个描述了用于对运算指令(A+B)>>1进行计算的常规方法的简化流程图,其中A和B都是无符号的八比特整数;图5是一个根据本发明实施例而在两个值A和B之间插值的方法的简化流程图;图6是一个根据本发明实施例而在两个整数A和B之间产生一个插值的方法的简化流程图;图7是一个描述了用于对运算指令(A+B)>>2进行计算的常规方法的简化流程图,其中A、B、C和D都是无符号八比特整数;图8是一个根据本发明实施例而在四个定点值A、B、C和D之间产生一个插值的方法的简化流程图;图9是一个根据本发明另一个实施例而在四个整数A、B、C和D之间产生一个插值的方法的简化流程图;图10是一个根据本发明实施例而对数字取样进行过滤的方法的简化流程图;图11是一个根据本发明另一种实施例而对数字取样进行过滤的方法的简化流程图;图12是一个根据本发明另一个实施例而对数字取样进行过滤的方法的简化流程图;图13是一个根据本发明另一个实施例以及依照函数(A+B+2)>>1来过滤数字取样的方法的简化流程图;图14是一个根据本发明另一个实施例以及依照函数(2A+B+C+1)>>2来过滤数字取样的方法的简化流程图;图15是一个根据本发明另一个实施例以及依照函数(3A+B+1)>>2来过滤数字取样的方法的简化流程图;图16是一个根据本发明另一个实施例以及依照函数(A+B+C+1)>>2来过滤数字取样的方法的简化流程图;图17是一个根据本发明另一个实施例以及依照函数(2A+B+C)>>2来过滤数字取样的方法的简化流程图;图18是一个根据本发明另一个实施例以及依照函数(3A+B)>>2来过滤数字取样的方法的简化流程图;以及图19是一个根据本发明另一个实施例以及依照函数(A+B+C)>>2来过滤数字取样的方法的简化流程图。
具体实施例方式
系统概述图1是可以使用本发明某些实施例的视频编码器100的一个实例的简化数据流程图。视频编码器100接收那些将要编码的视频数据并且产生经过编码的视频。所要编码的视频包含了多个画面,并且视频编码器100产生一系列经过编码的画面。举例来说,一个画面可以是一个非交织视频帧(有时也称为非交织视频场),一个交织视频帧,一个交织视频场等等。每一个输入画面都包含了一个像素阵列,并且通常使用了16个比特的8比特而将每一个像素表示成一个无符号整数。此外,每一个输入画面都提供到一个减法器110,该减法器通过从输入画面中减去一个预测画面来产生一个预测误差。而预测画面则是由预测器132产生的。
正如本领域技术人员公知的那样,并非视频流中的所有画面都要通过使用预测来进行编码。因此预测器132并没有为某些画面产生一个预测画面。在下文中,在没有进行预测的情况下进行编码的画面称为“帧内”画面,而通过使用预测来进行编码的画面则称为“非帧内”画面。因此,对帧内画面来说,所述预测误差仅仅是输入画面。
然后,预测误差被提供到一个生成预测误差的离散余弦变换(DCT)系数的DCT计算器112。而DCT系数则被提供到一个量化DCT系数的量化器114。对典型的视频信息来说,量化器114产生的很多量化DCT系数通常都为零。经过量化的DCT系数则提供到一个可变长度编码器116,其中举例来说,该编码器使用了霍夫曼编码等方法来对经过量化的DCT系数进行编码,以便产生一个经过编码的画面。
此外,量化器114产生的经过量化的DCT系数还被提供给一个逆量化器120,而逆量化器输出则提供到一个逆DCT计算器122。逆DCT计算器122产生一个经过解码的预测误差,该预测误差则被提供到一个加法器124。加法器124向经过解码的预测误差中添加一个相应的预测画面,以便产生一个经过解码的画面。此外,输入画面还被提供给一个运动估计器130,其中所述运动估计器产生的是提供给预测器132的运动矢量和模式信息。而预测器132则是根据运动矢量、模式信息和解码画面来产生预测画面的。
如图1所述编码器100之类的视频编码器可以用硬件、软件或是硬件与软件相结合的方式来实施。图2是一个典型计算机系统150的简化框图,其中在所述计算机系统上可以执行那些实现了某些或所有那些如图1所述的编码器部件的软件。这个图示只是一个例示并且不对权利要求的范围构成限制。而本领域普通技术人员则可以想到其他的变化、修改和替换。
在某些实施例中,子系统是经由系统总线152相互连接的。在这里显示的是打印机、键盘,硬盘154等附加子系统。外部设备和输入/输出(I/O)设备可以通过本领域已知的多种方式与计算机系统相连,例如串行端口156。举例来说,在这里可以使用串行端口156将计算机系统与一个调制解调器相连,该调制解调器转而连接到因特网之类的广域网。经由系统总线152的相互连接则允许中央处理器160与每一个子系统进行通信,并且允许中央处理器对来自系统存储器162或硬盘154的指令的执行以及子系统之间的信息交换进行控制。本领域普通技术人员很容易就能实现这些子系统以及相互连接的其他方案。系统存储器162和硬盘154则是用于保存计算机程序的有形介质实例。其它类型的有形介质还包括软盘,可卸载硬盘,CD-ROM与条形码之类的光存储介质,以及半导体存储器,例如闪速存储器、只读存储器(ROM)以及由电池支持的存储器。
中央处理器160可以是任何一种适于处理特定视频编码实施方式所需要的吞吐量的处理器。举例来说,中央处理器160可以是单指令多数据(SIMD)处理器,例如具有MMXTM媒体增强技术以及流式SIMD扩展(SSE)或流式SIMD扩展2(SSE2)的IntelTM处理器(下文中将其称为“具有MMXTM/SSE的IntelTM处理器”),NEC VR5234处理器,Equator MAP-CATM处理器以及菲利浦公司的TM-1300处理器等等。
运动估计/补偿运动估计/补偿是在利用视频流画面之间的相似性而对视频数据进行压缩/解压缩的过程中使用的一系列技术。通常,运动估计指的是在编码过程中应用的技术,而运动补偿则是在解码过程中应用的技术。在这些技术中,当前画面是使用一个或多个先前或后续画面来“预测”的。
在运动估计中,通常把那些将要“预测”的画面划分成了名为宏块的像素块。对每个宏块来说,在这里将会选择相邻画面(称为基准画面)中与所述宏块相类似的一个像素块(称为基准块)。在基准画面内部,这个相似的像素块的位置是由一个运动矢量来表示的。然后则将该宏块与基准块之间的差值以及运动矢量一起发送到接收机,而不是发送宏块自身。在接收机上则可以通过使用运动矢量来定位基准块,随后则使用差值信息来对其进行修改,从而重建所述宏块。
目前已经开发出多种用于在基准画面内部选择基准块的技术。通常,基准块是通过尝试将一个对宏块与基准块之间的失配进行测量的价值函数(cost function)减至最小来进行选择的。在很多技术中也可以对一个以子像素精度进行定位的基准块加以选择。例如,在半像素运动估计中(有时也称为半取样模式),可以使用半像素的分辨率来定位基准块。在半取样模式中,如果基准块位于半像素边界,则构成基准块的像素是通过在基准图像的像素之间进行插值来加以确定的。举例来说,如果基准块中的像素处于两个实际像素之间,则可以选择基准决中的像素值作为这两个实际像素的平均值。如果基准块中的像素处于四个实际像素中心,则可以选择基准块中的像素值作为这四个实际像素的平均值。因此,在半取样模式中,构成基准块的像素是通过在基准画面中的像素之间进行插值来确定的。
在四分之一像素运动估计中(有时也称为四分之一取样模式),基准块可以使用一个四分之一像素的分辨率来进行定位。与半取样模式一样,如果基准块位于半像素或四分之一像素边界,则构成基准块的像素是通过在基准画面中的像素之间插值来确定的。正如本领域技术人员已知的那样,通常通过对基准画面中的多个像素进行过滤而产生一个位于四分之一像素边界的像素。
全局运动补偿(GMC)是另一种用于运动估计/补偿的技术。正如本领域技术人员已知的那样,GMC使用全局空间变换来产生一个基于基准画面的预测宏块。并且正如本领域技术人员已知的那样,GMC变换通常包括对基准画面中的多个像素进行过滤,以便产生一个预测像素。
在本公开中描述的是能够用于有效插值和/或过滤像素的技术。
有效求取两个像素的平均值如上所述,视频编码和解码通常要对两个或更多像素之间的插值和/或多个像素的过滤进行计算。具有MMXTM/SSE的IntelTM处理器提供了可以用于有效计算这种插值的指令紧缩(packed)平均指令PAVGB(八比特数)以及PAVGW(十六比特数)。紧缩平均指令对“紧缩”64位或128位寄存器或存储器位置的操作数执行运算。这些指令计算的是如(A+B+1)>>1所示的两个无符号整数A和B的平均值,其中运算符“>>1”表示右移一位。因此,紧缩平均指令求取A、B和1的和,然后将结果右移一位。
的结果可以用n个比特来表示,其中A和B都是n比特整数。然而,n比特定点数A和B之和可能会产生一个溢出(也就是需要n+1个比特来表示这个总和)。如果先计算了和数(A+B+1)并且然后才进行右移,则这个溢出将会导致在计算(A+B+1)>>1的过程中出现错误。因此,具有MMXTM/SSE的IntelTM处理器在执行紧缩平均指令的过程中对这种情况进行了考虑,由此即使A+B+1之和会产生溢出,也能够产生正确的结果。特别地,通过使用PAVGB指令,中间和数(A+B+1)是作为一个九比特数字来计算的,此外,通过使用PAVGW指令,中间和数(A+B+1)是作为一个十七比特数来计算的。
通过在右移一位之前向A与B的和中加一,可以将操作结果四舍五入到最接近的整数。举例来说,如果A是3并且B是4,那么平均A和B的浮点结果将是3.5。而紧缩平均指令将会产生一个结果4。因此,紧缩平均指令将浮点结果3.5四舍五入成4。
图3是描述PAVGW指令操作的简化图示。在这个实例中,涉及PAVGW指令的操作数保存在64位寄存器180和182中,操作结果则保存到寄存器180中。在执行指令之前,寄存器180包括“紧缩”到寄存器的四个无符号定点十六比特数A1、A2、A3和A4。同样,寄存器182包含了四个紧缩的无符号定点十六比特数字B1、B2、B3和B4。然后如图3所示,在寄存器180和182中对各个相应数字对计算函数(A+B+1)>>1,随后则将结果保存在寄存器180中,以此作为紧缩的无符号定点十六比特数字,如图3所示。
然而在某些情况下,将两个整数平均值的浮点结果四舍五入成零(也就是计算(A+B)>>1)有可能才是合乎需要的。诸如IntelTM处理器这样的通用处理器并未提供执行这种操作的指令。因此,这种计算必须使用多个指令来完成。图4是一个描述了用于对运算指令(A+B)>>1进行计算的常规方法的简化流程图,其中A和B都是无符号八比特整数。首先在步骤202中将值A和B移入16比特存储位置,由此可以使用16个比特来执行它们的加法。如上所述,这两个八比特整数之和可能会产生溢出。因此,在这里使用了十六个比特来避免出现溢出错误。随后,在步骤204对数字对A和B进行求和。接下来在步骤206中将所述和数右移一位。最终在步骤208将结果保存在一个八比特存储位置。
在下文中提供了依照常规方法(也就是图4流程)来执行(A+B)>>1的计算机代码(IntelTMIA-32汇编语言)的一个实例。在这个实例中,计算机代码、定点八比特值A1、A2、......都紧缩到寄存器mm0中,而定点八比特值B1、B2、......则紧缩到寄存器mm1中。此外在这里还对(A1+B1)>>1、(A2+B2)>>1、......的值进行了计算并将其作为紧缩定点八比特值而加以保存

可以看出的是,在这个实例中使用了11条指令来计算(A+B)>>1。
图5是一个描述了根据本发明的方法的一个实施例的简化流程图。特别地,图5描述的是一种能够用于依照某些预期函数而在A和B这两个值之间产生一个插值的方法252。其中举例来说,预期函数可以是(A+B)>>1。在步骤252中,基于A和B而产生了一个插值近似。在步骤254中,基于A和B而产生校正值。然后在步骤256中使用步骤254中生成的校正值来修改步骤252中产生的近似值,从而根据预期函数来产生插值。
图6是一个描述了依照本发明的特定实施例的简化流程图。特别地,图6描述的是一种用于依照预期函数(A+B)>>1而在两个整数A和B之间产生一个插值的方法300。在步骤302中产生如(A+B+1)>>1所示的(A+B)>>1的近似值X。在步骤304中则通过按位异或(在下文中称为“XOR”或“”)A和B以及按位与掩码0x01进行“与”(AND)运算而产生校正值Q。本领域技术人员可以了解,根据A和B的值,步骤304中产生的校正值为0或1。然后则在步骤306中从近似值X中减去校正值Q,以便依照预期函数(A+B)>>1来产生插值。
如上所述,IntelTMIA-32处理器提供用于计算(A+B+1)>>1的紧缩平均指令。因此,在使用IA-32处理器的实施方式中可以使用一个紧缩平均指令来执行图6的步骤302。在下文中提供了实施图6所描述的流程的计算机代码(IntelTMIA-32汇编语言)的一个实例。在这个例示计算机代码中,八比特整数A1、A2、......紧缩到寄存器mm0中,而8比特整数B1、B2、......则紧缩到寄存器mm1中。此外还计算(A1+B1)>>1、(A2+B2)>>1、......的值并将其存储为紧缩的八比特整数

其中mm_0101是包含紧缩八比特值0x01的常数,举例来说,对于八个紧缩整数,mm_0101则是0x0101010101010101。此外还可以看出,在这个实例中使用了5条指令来计算(A+B)>>1。与之相比,以上参考图4所描述的常规计算机代码则需要用到11条指令。因此,这个特定实施例在近似速度方面提升了120%(11条指令/5条指令)。
有效求取四个像素的平均值上述实施例提供的是用于对两个像素值进行有效插值或求取平均值的方法。在视频编码和解码中,通常还要对四个像素值求平均值。例如在运动估计/补偿中,有可能需要在2×2的像素矩阵中心内插一个像素值。例如,依照函数(A+B+C+D)>>2,有可能希望在四个定点像素值A、B、C和D之间计算插值。这个函数则将这四个值的浮点平均值四舍五入为零。同样,依照函数(A+B+C+D+1)>>2,有可能希望计算四个定点像素值A、B、C和D之间的插值。如果浮点平均值小于一个整数0.75,则该函数将这四个值的浮点平均值四舍五入为零。否则对这个浮点平均值进行四舍五入,使之不为零。例如,浮点平均值3.5将会四舍五入为3,而浮点平均值3.75则四舍五入为4。
图7是一个描述了用于对运算指令(A+B+C+D)>>2进行计算的常规方法的简化流程图、其中A、B、C和D都是无符号八比特整数。首先在步骤402中将值A、B、C和D移入16比特存储位置,由此可以使用十六个比特来计算其加法,以免出现溢出错误。然后则在步骤404中对数字A、B、C以及D进行求和。接下来在步骤406中将这个和数右移一位。最终则在步骤408中将结果存入一个八比特存储位置。
在下文中提供了依照常规方法(也就是图7)来执行函数(A+B+C+D)>>2的计算机代码(IntelTMIA-32汇编语言)的一个实例。在这个例示计算机代码中,八比特整数A1、A2、......紧缩到寄存器mm0中,八比特整数B1、B2、......紧缩到寄存器mm1中,八比特整数C1、C2、......紧缩到寄存器mm2中,八比特整数D1、D2、......紧缩到寄存器mm3中。此外还对数值(A1+B1+C1+D1)>>2、(A2+B2+C2+D2)>>2、.....进行计算并且将其存储为紧缩的八比特整数

可以看出,在这个实例中使用了21条指令来计算(A+B+C+D)>>2。
同样,在下文中提供了依照常规方法来实施函数(A+B+C+D+1)>>2的计算机代码(IntelTMIA-32汇编语言)的一个实例。这其中对数值(A1+B1+C1+D1+1)>>2、(A2+B2+C2+D2+1)>>2、......进行计算并且将其存储为紧缩的八比特整数

可以看出,在这个实例中使用了23条指令来计算(A+B+C+D+1)>>2。
图8是一个描述了依照本发明的另一个实施例的简化流程图。特别地,图8描述的是一种用于根据预期函数(A+B+C+D)>>2而在四个整数A、B、C和D之间产生一个插值的方法450。在步骤452中根据(A+B+1)>>1产生值M,并且在步骤454根据(C+D+1)>>1产生值N。然后在步骤456中则根据(M+N+1)>>1来计算预期平均值的近似值X。并且在步骤458中如下产生一个校正值Q
Q=((AB)OR(CD)OR(MN))AND(0x01) (1)其中“OR”表示一个按位的OR(或)操作。然后在步骤460中从近似值X中减去校正值Q,以便依照预期函数(A+B+C+D)>>1来产生插值。
在下文中提供了用于执行图8所述流程的计算机代码(IntelTMIA-32汇编语言)的一个实例。在这个例示计算机代码中,将八比特整数A1、A2、......紧缩到寄存器mm0中,将八比特整数B1、B2、......紧缩到寄存器mm1,将八比特整数C1、C2、......紧缩到寄存器mm2,以及将八比特整数D1、D2、......紧缩到寄存器mm3。此外还对数值(A1+B1+C1+D1)>>2、(A2+B2+C2+D2)>>2、......进行计算并且将其存储为紧缩的八比特整数

其中mm_0101是包含了用于八个紧缩整数的紧缩八比特值0x01的常数,mm_0101是0x0101010101010101。可以看出,在这个实例中使用了13条指令来计算(A+B+C+D)>>1。与之相比,上文中参考图7所描述的常规计算机代码则需要用到21条指令。因此,这个特定实施例在近似速度方面提升了60%(21条指令/13条指令)。
图9是一个描述了依照本发明的另一个实施例的简化流程图。特别地,图9描述的是一种用于根据预期函数(A+B+C+D+1)>>2而在四个整数A、B、C和D之间产生一个插值的方法480。在步骤482中根据(A+B+1)>>1来产生值M,并且在步骤454中根据(C+D+1)>>1来产生值N。然后在步骤486中根据(M+N+1)>>1来计算预期平均值的近似值X。并且在步骤488中如下产生一个校正值QQ=(((AB)AND(CD))OR(MN))AND(0x01)(2)其中“OR”表示的是一个按位OR(或)操作。然后则在步骤490中从近似值X中减去校正值Q,以便依照预期函数(A+B+C+D+1)>>1来产生插值。
在下文中提供了用于执行图9所描述的流程的计算机代码(IntelTMIA-32汇编语言)的一个实例。在这个例示计算机代码中,将八比特整数A1、A2、......紧缩到寄存器mm0,将八比特整数B1、B2、......紧缩到寄存器mm1,将八比特整数C1、C2、......紧缩到寄存器mm2,以及将八比特整数D1、D2、......紧缩到寄存器mm3。此外还对数值(A1+B1+C1+D1+1)>>2、(A2+B2+C2+D2+2)>>2、......进行计算并将其存储为紧缩的八比特整数

其中mm_0101是包含了紧缩八比特值0x01的常数。可以看出,在这个实例中使用了13条指令来计算(A+B+C+D+1)>>1。与之相比,以上参考图7所描述的常规计算机代码需要用到23条指令。因此,这个特定实施例在近似速度方面提升了80%(23条指令/13条指令)。
其它过滤函数的有效实施方式在内插像素值的环境中已经对上述实施例进行了描述。然而应该了解,上述实施例也可以用于其他环境。例如,上述实施可以用于为不同类型的数据(例如视频、音频、地震数据、通信数据等等)实施不同的过滤函数。
1.F=K(A+B+1)>>N其他实施例提供了用于过滤数据的其他函数的有效实施方式。其中一个函数是F=K(A+B+1)>>N (3)其中A和B是无符号整数,K和N是无符号定点过滤参数。举例来说,这个函数可以在视频过滤和插值、调整图像大小等应用中使用。
图10是一个描述了依照本发明的另一个实施例的简化流程图。特别地,图10描述的是一种用于实施等式(3)中阐述的函数的方法500,其中K可以表示为2S+2R,S和R则是无符号整数并且S>R。目前已经用实验方法确定,当值A、B、K均为范围
以内的整数时,并且在N是处于范围
以内的定点数字的情况下,这个实施例将会产生没有差错的结果。然而应该了解,这个实施例同样可以为不同的范围产生精确的结果。
在步骤504中依照函数M=(A+B+1)>>1来产生值M。在使用IA-32处理器的实施方式中,可以通过使用一个PAVGB或PAVGW指令来产生M。并且在步骤506中如下产生值QQ=(~(AB))AND(0x01) (4)其中符号“~”表示的是按位补码。
在步骤508中,值E是根据M<<S来产生的,其中“<<S”表示左移S位。同样,在步骤510中,值F是根据M<<R而产生的。在步骤512,值G是根据Q<<(S-1)而产生的,并且在步骤514,值H是根据Q<<(R-1)而产生的。然后在步骤516中则根据E、F、G和H之和来计算X。最终,在步骤518,通过将X右移(N-1)位而产生预期结果。
图11是一个描述了依照本发明的另一个实施例的简化流程图。与图10相似,图11描述的是一种用于实施等式(3)中所阐述的函数的方法550,其中K可以表示为2S+2R,S和R则是无符号整数并且S>R。此外与图10相似的是,值A、B、K都是处于范围
以内的整数,并且N是一个处于范围
以内的定点数。但是,图11描述的是在(A+B+1)<256且S≤N时实施等式(3)中所描述的函数的另一种更有效的方法550。
在步骤552和554中分别如参考图10的步骤504和506所述而产生值M和Q。在步骤556中判定(N-1-S)是否小于零。如果不小于零,则流程进行到步骤558,其中根据M>>(N-1-S)来产生值E。如果小于零,则流程进行到步骤560,其中根据M<<1来产生值E。接着则是在步骤562中根据M>>(N-1-R)来产生值F。在步骤568中则根据Q>>(N-S)来产生值G,并且在步骤570中根据Q>>(N-R)来产生值H。最终在步骤572根据E、F、G、H之和来计算X。
在使用IA-32处理器的实施方式中发现,与传统的实施方式相比,参考图11描述的方法提供了140%的近似速度优势。
2.F=(40(A+B+1)-12(C+D+1)+6(E+F+1)-2(G+H+1))>>6通常用于在MPEG-4视频编码中实施四分之一像素插值的另一个有效函数是F=(40(A+B+1)-12(C+D+1)+6(E+F+1)-2(G+H+1))>>6(5)其中A、B、C、D、E、F、G、H都是无符号整数。
图12是一个描述了依照本发明的另一个实施例的简化流程图。特别地,图12描述的是一种用于实施等式(5)中所描述的函数的方法600。通过实验确定,方法600为八比特值产生了60%的正确时间结果,30.5%的时间值一的误差以及0.5%的时间值二的误差。
在步骤602、604,606和608中,值M1、M2、M3、M4分别是依照(A+B+1)>>1、(C+D+1)>>1、(E+F+1)>>1和(G+H+1)>>1而产生的。如果方法600是在一个IA-32处理器中执行的,那么举例来说,可以使用紧缩平均指令来执行步骤602、604、606和608。
接下来在步骤610中依照(M1+(M3>>1)+(M3>>2))>>2来产生值N1。在步骤612中依照(M2+(M2>>1)+(M4>>2))>>2来产生值N2。最终在步骤614依照M1+N1-N2来产生近似结果X。如上所述,由于X可能不同于某些值A、B、C、D、E、F、G和H的预期结果,因此X是近似值。在附录中提供了用于执行参考图12所描述的实施例的IA-32汇编语言代码的一个实例。
3.F=(A+B+2)>>1图13是一个描述了依照本发明的另一个特定实施例的简化流程图。特别地,图13描述的是一种基于两个整数A和B并且依照预期函数(A+B+2)>>1来产生一个值的方法650。其中举例来说,该实施例可以作为实施更复杂过滤函数的过程中的一个步骤来加以使用。
在步骤652中,(A+B+2)>>1的近似值X是依照(A+B+1)>>1产生的。在步骤654中,校正值Q是依照AB的按位补码(下文中称为“~”)以及与掩码0x01所进行的按位AND(与)运算而产生的。然后,在步骤656中将校正值Q添加给近似值X,以便产生预期函数(A+B+2)>>1的结果。
在附录中提供了用于实施图13所述流程的计算机代码(IntelTMIA-32汇编语言)的一个实例。与常规技术相比,这个特定实施例在近似速度方面提升了大约160%(13条指令/5条指令)。
4.F=(2A+2B+1)>>2目前已经发现,可以依照参考图6所描述的实施例(也就是对值(A+B)>>1进行计算)来对值(2A+2B+1)>>2进行计算。其中举例来说,该实施例可以被用作是执行更复杂过滤函数的一个步骤。
5.F=(2A+B+C+1)>>2
图14是一个描述了根据本发明的另一个特定实施例的简化流程图。特别地,图14描述的是一种基于三个整数A、B、C并且依照预期函数(2A+B+C+1)>>2来产生一个值的方法700。其中举例来说,该实施例可以用作是执行更复杂的过滤函数的过程中的一个步骤。
在步骤702中,值M是依照(B+C+1)>>1而产生的。在步骤704,近似值X是依照(A+M+1)>>1产生的。在步骤706,校正值Q是依照AM并与掩码0x01进行按位AND(与)运算而产生的。接着,在步骤708中从近似值X中减去校正值Q,从而产生预期函数(2A+B+C+1)>>2的结果。
在附录中提供了用于实施图14所描述的流程的计算机代码(IntelTMIA-32汇编语言)的一个实例。与常规技术相比,这个特定实施例在近似速度方面提升了大约230%(20条指令/6条指令)。
6.F=(3A+B+1)>>2图15是一个描述了依照本发明的另一个特定实施例的简化流程图。特别地,图15描述的是一种基于整数A和B并且依照预期函数(3A+B+1)>>2来产生一个值的方法750。其中举例来说,该实施例可被用作是执行更复杂的过滤函数的过程中的一个步骤。
在步骤752中,值M是依照(A+B+1)>>1而产生的。然后在步骤704中,近似值X是依照(A+M+1)>>1而产生的。在步骤756中,校正值Q是依照AM以及与掩码0x01进行按位AND(与)运算而产生的。接着在步骤758中从近似值X中减去校正值Q,以便产生预期函数(3A+B+1)>>2的结果。
在附录中提供了用于实施图15所描述的流程的计算机代码(IntelTMIA-32汇编语言)的一个实例。与常规技术相比,这个特定实施例在近似速度方面提升了220%(19条指令/6条指令)。
7.F=(A+B+C+1)>>2图16是一个描述了依照本发明的另一个实施例的简化流程图。特别地,图16描述的是一种基于三个整数A、B、C并且根据预期函数(A+B+C+1)>>2来产生一个值的方法800。其中举例来说,该实施例可被用作是执行更复杂的过滤函数的过程的一个步骤。
在步骤802中,值M是依照(A+B+1)>>1而产生的。在步骤804中,值N是依照(C+0+1)>>1而产生的。然后在步骤806中,近似值X是依照(M+N+1)>>1而产生的。并且在步骤800中,校正值Q是如下产生Q=(((AB)AND(C))OR(MN))AND(0x01)(6)接下来则在步骤810中从近似值X中减去校正值Q,以便产生预期函数(A+B+C+1)>>2的结果。
在附录中提供了用于实施图16所描述的流程的计算机代码(IntelTMIA-32汇编语言)的一个实例。与常规技术相比,这个特定实施例在近似速度方面提升了60%(18条指令/11条指令)。
8.F=(2A+2B)>>2目前已经发现,可以依照参考图6所描述的实施例(也就是对值(A+B)>>1进行计算)来对值(2A+2B)>>2进行计算。举例来说,该实施例可被用作是执行更复杂的过滤函数的过程的一个步骤。
9.F=(2A+B+C)>>2图17是一个描述了依照本发明的另一个特定实施例的简化流程图。特别地,图17描述的是一种基于三个整数A、B、C并且依照预期函数(2A+B+C)>>2来产生一个值的方法850。其中举例来说,该实施例可被用作是执行更复杂的过滤函数的过程的一个步骤。
在步骤852中,值M是依照(B+C+1)>>1而产生的。然后在步骤854中,近似值X是依照(A+M+1)>>1而产生的。并且在步骤856中,校正值Q则是如下产生的Q=((BC)OR(AM))AND(0x01) (7)接下来则在步骤858中从近似值X中减去校正值Q,以便产生预期函数(2A+B+C)>>2的结果。
在附录中提供了用于实施图17所描述的流程的计算机代码(IntelTMIA-32汇编语言)的一个实例。与常规技术相比,这个特定实施例在近似速度上提升了大约100%(18条指令/9条指令)。
10.F=(3A+B)>>2图18是一个描述了依照本发明的另一个特定实施例的简化流程图。特别地,图18描述的是一种基于整数A和B并且依照预期函数(3A+B)>>2来产生一个值的方法900。其中举例来说,该实施例可被用作是执行更复杂的过滤函数的过程的一个步骤。
在步骤902中,值M是依照(A+B+1)>>1而产生的。然后在步骤904中,近似值X是依照(A+M+1)>>1而产生的。并且在步骤906中,校正值Q是如下产生的Q=((AB)OR(AM))AND(0x01) (8)接下来则在步骤908中从近似值X中减去校正值Q,以便产生预期函数(3A+B)>>2的结果。
在附录中提供了用于实施图18所描述的流程的计算机代码(IntelTMIA-32汇编语言)的一个实例。与常规技术相比,这个特定实施例在近似速度方面提升了40%(13条指令/9条指令)。
11.F=(A+B+C)>>2图19是一个描述了依照本发明的另一个特定实施例的简化流程图。特别地,图19描述的是一种基于三个整数A、B、C并且依照预期函数(A+B+C)>>2来产生一个值的方法950。其中举例来说,该实施例可被用作是执行更复杂的过滤函数的过程的一个步骤。
在步骤952中,值M是依照(A+B+1)>>1而产生的。在步骤954中,值N是依照(C+0+1)>>1而产生的。然后,在步骤956中,近似值X是依照(M+N+1)>>1而产生的。并且在步骤958,校正值Q是如下产生Q=((AB)OR C OR(MN))AND(0x01) (9)接下来则在步骤960中从近似值X中减去校正值Q,以便产生预期函数(A+B+C)>>2的结果。
在附录中提供了用于实施图19所描述的流程的计算机代码(IntelTMIA-32汇编语言)的一个实例。与常规技术相比,这个特定实施例在近似速度方面提升了大约50%(16条指令/11条指令)。
变化在这里已经参考那些使用了带有MMXTM/SSE的IntelTM处理器的具体实施方式
而对上述实施例进行了描述。然而应该了解,在这里也可以使用其他处理器来实施不同的实施例。例如,在这里可以使用任何一种提供了用于计算(A+B+1)>>1的指令的处理器。此外还可以用硬件方式来实施特定实施例的某些或全部步骤。另外,尽管在整数环境中对依照本发明的实施例进行了描述,但是应该理解,也可以将其他实施例与整数结合使用。而本领域技术人员将会认识到多种其他的变化、替换和等价物。
在本发明的其他实施例中可以对以上公开的发明进行有利组合或子组合。为了便于理解,在这里对架构框图和流程图步骤进行了聚合。然而应该了解,在本发明的替换实施例中还预期对块进行组合、添加新块以及重新调整所述块等等。
当前已经参考具体实施例而对本发明进行了说明。对本领域普通技术人员来说,其他实施例同样是显而易见的。因此除了附加权利要求所指示的限制之外,在这里并没有意图对本发明进行限制。
附录源代码列表Ftnction(40(A+B+1)-12(C+D+1)+6(E+F+1)-2(G+H+1))>>6


Function(A+B+2)>>1

Function(3A+B+1)>>2


Function(A+B+C+1)>>2

Function(2A+B+C)>>2

Function(3A+B)>>2


Function(A+B+C)>>2

权利要求
1.一种用于在信号处理器中过滤数字信号中的取样的方法,所述方法包括依照一个少于四个数字信号取样的函数产生近似过滤取样;依照一个少于四个取样的函数产生校正值;以及通过使用该校正值来修改近似过滤取样,以便产生一个已过滤取样。
2.权利要求1的方法,其中少于四个的取样仅仅是两个取样。
3.权利要求2的方法,其中这两个取样是第一定点数A以及第二定点数B,并且其中产生近似过滤取样包括计算(A+B+1)>>1。
4.权利要求3的方法,其中信号处理器是一个具有用于计算函数(X+Y+1)>>1的指令的微处理器,并且其中使用该指令来执行计算A+B+1>>1。
5.权利要求4的方法,其中微处理器是带有SSE或SSE2的IntelTM微处理器,并且其中该指令是PAVGB指令。
6.权利要求4的方法,其中微处理器是带有SSE或SSE2的IntelTM微处理器,并且其中该指令是PAVGW指令。
7.权利要求3的方法,其中产生近似过滤取样还包括计算(A+((A+B+1)>>1)+1)>>1。
8.权利要求3的方法,其中产生近似过滤取样还包括计算E=((A+B+1)>>1)<<S;计算F=((A+B+1)>>1)<<R;以及依照E+F来计算近似过滤取样;其中S和R是正定点数。
9.权利要求8的方法,其中产生校正值包括计算Q=~(AB);使用数字1来遮蔽Q;计算G=Q<<(S-1);计算H=Q<<(R-1);以及依照G+H来计算校正值。
10.权利要求9的方法,其中产生已过滤取样包括依照添加了校正值的近似过滤取样来计算已过滤取样;以及将已过滤取样右移N-1位,其中N是一个正定点数。
11.权利要求3的方法,其中产生近似过滤取样还包括计算E=((A+B+1)>>1)>>(N-1-S);计算F=((A+B+1)>>1)>>(N-1-R);以及将E与F相加;其中N、S、R都是正定点数并且其中N≥S>R。
12.权利要求11的方法,其中产生校正值包括计算Q=~(AB);使用数字1来遮蔽Q;计算G=Q>>(N-S);计算H=Q>>(N-R);以及依照G+H来计算校正值。
13.权利要求12的方法,其中产生已过滤取样包括依照添加了校正值的近似过滤取样来计算已过滤取样。
14.权利要求2的方法,其中这两个取样是定点数并且产生校正值包括依照对这两个取样执行异或(XOR)运算来计算校正值;以及使用整数1来遮蔽校正值。
15.权利要求14的方法,其中产生校正值还包括在遮蔽步骤之前产生所述校正值的按位补码。
16.权利要求2的方法,其中这两个取样是定点数A、B,并且其中产生校正值包括依照(AB)OR(A(A+B>>1))来计算校正值;以及使用数字1来遮蔽校正值。
17.权利要求2的方法,其中这两个校正值是定点数A、B,并且其中产生校正值包括依照(A(A+B>>1))来计算校正值;以及对校正值与数字1执行按位的“与”运算。
18.权利要求1的方法,其中产生已过滤取样包括将校正值添加给近似过滤取样。
19.权利要求1的方法,其中产生已过滤取样包括从近似插值取样中减去校正值。
20.权利要求2的方法,其中微处理器是一个具有MMXTM/SSE的微处理器,并且其中这两个取样是八比特定点数,此外,产生近似过滤取样、产生校正值以及产生已过滤取样的步骤包括执行以下指令Pxor C_REG,A_REG;pand C_REG,CONST;pavgb A_REG,B_REG;psubb A_REG,C_REG;其中A_REG是初始包含了两个取样之一的寄存器,B_REG是包含了两个取样中的另一个取样的寄存器,C_REG是初始包含了两个取样中的另一个取样的寄存器,以及CONST是一个包含了八比特数字0x01的常数。
21.权利要求2的方法,其中微处理器是一个具有MMXTM/SSE的微处理器,并且其中这两个取样是八比特整数,此外,产生近似过滤取样、产生校正值以及产生已过滤取样的步骤包括执行以下指令Pxor C_REG,A_REG;pandn C_REG,CONST;pavgb A_REG,B_REG;paddb A_REG,C_REG;其中A_REG是初始包含了两个取样之一的寄存器,B_REG是包含了两个取样中的另一个取样的寄存器,C_REG是初始包含了两个取样中的另一个取样的寄存器,以及CONST是一个包含了八比特数字0x01的常数。
22.权利要求1的方法,其中少于四个的取样仅仅是三个取样。
23.权利要求22的方法,其中这两个取样是第一定点数A,第二定点数B以及第三定点数C,其中产生近似过滤取样包括计算M=(A+B+1)>>1;计算N=(C+0+1)>>1;以及依照X=(M+N+1)>>1来计算近似过滤取样。
24.权利要求23的方法,其中产生校正值包括依照((AB)AND(C))OR(MN)来计算校正值;以及使用数字1来遮蔽校正值。
25.权利要求23的方法,其中产生校正值包括依照(AB)OR C OR(MN)来计算校正值;以及使用数字1来遮蔽校正值。
26.权利要求22的方法,其中这两个取样是第一定点数A、第二定点数B以及第三定点数C,其中产生近似过滤取样包括计算M=(B+C+1)>>1;以及依照X=(A+M+1)>>1来计算近似过滤取样。
27.权利要求26的方法,其中产生校正值包括依照AM来计算校正值;以及使用数字1来遮蔽校正值。
28.权利要求26的方法,其中产生校正值包括依照(BC)OR(AM)来计算校正值;以及使用数字1来遮蔽校正值。
29.一种用于在信号处理器中过滤数字信号中的取样的方法,所述方法包括依照一个第一取样A、第二取样B、第三取样C以及第四取样D的函数产生近似过滤取样,其中A、B、C和D是定点数;依照((AB)AND(CD))OR(MN)来产生一个校正值,其中M=A+B+1>>1并且N=C+D+1>>1;遮蔽校正值;以及通过使用校正值修改近似过滤取样来产生一个已过滤取样。
30.权利要求29的方法,其中产生近似过滤取样包括计算M=A+B+1>>1;计算N=C+D+1>>1;以及依照M+N+1>>1来计算近似过滤取样。
31.权利要求30的方法,其中信号处理器是一个具有用于计算函数X+Y+1>>1的指令的微处理器,其中计算M的步骤是使用这个指令执行的,计算N的步骤是使用这个指令执行的,以及计算近似过滤取样的步骤是使用这个指令执行的。
32.权利要求31的方法,其中微处理器是带有SSE或SSE2的IntelTM微处理器,并且其中该指令是PAVGB指令。
33.权利要求31的方法,其中微处理器是带有SSE或SSE2的IntelTM微处理器,并且其中该指令是PAVGW指令。
34.权利要求29的方法,其中微处理器是一个具有MMXTM/SSE的微处理器,并且其中A、B、C、D是八比特定点数,其中产生近似过滤取样、产生校正值、遮蔽校正值以及产生已过滤取样的步骤包括执行以下指令pxor A_REG,B_REG;pxor C_REG,D_REG;pand A_REG,C_REG;pavgb M_REG,B_REG;pavgb N_REG,D_REG;movq B_REG,M_REG;pxor B_REG,N_REG;pand B-REG,CONST;pavgb M_REG,N_REG;psubb M_REG,B_REG;其中A_REG是一个初始包含A的寄存器,B_REG是初始包含B的寄存器,C_REG是初始包含C的寄存器,D_REG是包含D的寄存器,CONST是包含八比特数字0x01的常数,M_REG是初始包含A的寄存器,N_REG是初始包含C的寄存器。
35.一种用于在信号处理器中过滤数字信号中的取样的方法,所述方法包括依照一个第一取样A、第二取样B、第三取样C和第四取样D的函数产生近似过滤取样,其中A、B、C和D都是整数;依照((AB)OR(CD)OR(MN)来产生一个校正值,其中,M=A+B>>1以及N=C+D+1>>1;遮蔽该校正值;以及通过使用校正值修改近似过滤取样来产生一个已过滤取样。
36.权利要求35的方法,其中产生近似过滤取样包括计算M=A+B+1>>1;计算N=C+D+1>>1;以及依照计算M+N+1>>1来计算近似插值取样。
37.权利要求36的方法,其中信号处理器是一个具有用于计算函数X+Y+1>>1的指令的微处理器,其中计算M的步骤是使用这个指令执行的,计算N的步骤是使用这个指令执行的,以及计算近似过滤取样的步骤是使用这个指令执行的。
38.权利要求37的方法,其中微处理器是带有SSE或SSE2的IntelTM微处理器,并且其中该指令是PAVGB指令。
39.权利要求37的方法,其中微处理器是带有SSE或SSE2的IntelTM微处理器,并且其中该指令是PAVGW指令。
40.权利要求35的方法,其中微处理器是一个具有MMXTM/SSE的微处理器,并且其中A、B、C、D是八比特数,其中产生近似过滤取样、产生校正值、遮蔽校正值以及产生已过滤取样的步骤包括执行以下指令pxor A_REG,B_REG;pxor C_REG,D_REG;por A_REG,C_REG;pavgb M_REG,B_REG;pavgb N_REG,D_REG;movq B_REG,M_REG;pxor B_REG,N_REG;pand B_REG,CONST;pavgb M_REG,N_REG;psubb M_REG,B_REG;其中A_REG是初始包含A的寄存器,B_REG是初始包含B的寄存器,C_REG是初始包含C的寄存器,D_REG是包含D的寄存器,CONST是包含八比特整值数一的常数,M_REG是初始包含A的寄存器,N_REG是初始包含C的寄存器。
41.一种用于在信号处理器中过滤数字信号中的取样的方法,所述方法包括依照一个第一取样A、第二取样B、第三取样C和第四取样D的函数产生近似过滤取样,其中A、B、C和D都是定点数;依照(AB)OR(CD)OR(MN)而产生一个校正值,其中M=A+B+1>>1并且N=C+D+1>>1;遮蔽该校正值;以及通过使用该校正值来修改近似过滤取样,从而产生一个已过滤取样。
42.一种用于在信号处理器中过滤数字信号中的取样的方法,该方法包括产生M1=(A+B+1)>>1,其中A和B是数字信号中的取样;产生M2=(C+D+1)>>1,其中C和D是数字信号中的取样;产生M3=(E+F+1)>>1,其中E和F是数字信号中的取样;产生M4=(G+H+1)>>1,其中G和H是数字信号中的取样;产生N1=(M1+(M3>>1)+(M3>>2))>>2;产生N2=(M2+(M2>>1)+(M4>>2))>>2;以及依照M1+N1-N2来产生一个已过滤取样。
43.一种计算机程序产品,包括一种计算机可读存储介质,其中包含了用于量化数字信号的计算机程序代码,所述计算机程序代码包括用于依照一个少于四个数字信号取样的函数产生近似过滤取样的代码;用于依照一个少于四个取样的函数产生校正值的代码;以及通过使用校正值修改近似过滤取样来产生已过滤取样的代码。
44.一种用于过滤数字信号中的取样的系统,该系统包括一个保存数字信号中的取样的存储器;以及一个与存储器耦合并且能够执行以下步骤的处理器A)依照一个少于四个数字信号取样的函数产生近似过滤取样;B)依照一个少于四个取样的函数产生校正值,以及C)通过使用所述校正值来修改近似过滤取样,以便产生一个已过滤取样。
45.一种计算机程序产品,包括一个计算机可读存储介质,其中包含了用于量化数字信号的计算机程序代码,所述计算机程序代码包括用于依照一个第一取样A、第二取样B、第三取样C和第四取样D的函数产生近似过滤取样的代码,其中A、B、C和D都是定点数;用于依照((AB)AND(CD))OR(MN)来产生一个校正值的代码,其中M=A+B+1>>1并且N=C+D+1>>1;用于遮蔽所述校正值的代码,以及;通过用所述校正值修改近似过滤取样来产生一个已过滤取样的代码。
46.一种用于过滤数字信号中的取样的系统,该系统包括一个保存数字信号中的取样的存储器;以及一个与存储器耦合并且能够执行以下步骤的处理器A)依照一个第一取样A、第二取样B、第三取样C和第四取样D的函数产生近似过滤取样,其中A、B、C和D都是定点数;B)依照((AB)AND(CD))OR(MN)来产生一个校正值,其中M=A+B+1>>1并且N=C+D+1>>1;C)遮蔽所述校正值;以及D)通过使用该校正值来修改近似过滤取样,以便产生一个已过滤取样。
全文摘要
本发明涉及一种用于在信号处理器中过滤数字信号中的取样的方法。依照一个少于四个数字信号取样的函数产生近似过滤取样。此外还依照一个少于四个取样的函数产生校正值,并且通过使用该校正值来修改近似过滤取样,从而产生一个已过滤取样。
文档编号H03H17/02GK1778042SQ03803630
公开日2006年5月24日 申请日期2003年1月23日 优先权日2002年1月23日
发明者畅查尔·查特吉 申请人:通用仪器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1