JP2008125078A - Motion compensation method and apparatus supporting multi-codec - Google Patents
Motion compensation method and apparatus supporting multi-codec Download PDFInfo
- Publication number
- JP2008125078A JP2008125078A JP2007290086A JP2007290086A JP2008125078A JP 2008125078 A JP2008125078 A JP 2008125078A JP 2007290086 A JP2007290086 A JP 2007290086A JP 2007290086 A JP2007290086 A JP 2007290086A JP 2008125078 A JP2008125078 A JP 2008125078A
- Authority
- JP
- Japan
- Prior art keywords
- pixel
- value
- motion compensation
- filter
- pixels
- 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
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
本発明は、動画を復号化する方法及び装置に係り、特に、動きを補償する方法及び装置に関する。 The present invention relates to a method and apparatus for decoding a moving image, and more particularly, to a method and apparatus for compensating for motion.
動画の復号化は、色々な処理過程を経る。このような過程は、エントロピー復号化、逆変換、逆量子化、及び動き補償で構成される。これらのうち動き補償が、最長のプロセシング時間がかかる。動き補償とは、現在画像のブロックと参照画像の対応ブロックとの間の変位を表す動きベクトルを参照して、参照画像から参照画像と現在画像との間に共有される部分を抽出し、このように抽出されたデータ(以下“動き補償データ”という)と、参照画像と現在画像との差データ(以下“レジデューデータ”という)とを合算することによって、現在画像を復元する過程を意味する。このように、動き補償処理過程は、多くの画像データを処理せねばならないため、メモリアクセス量及び演算量が非常に多い。このような動き補償の処理量は、画像のサイズに比例するため、画像のサイズが大きくなれば、最悪の場合には、所望の時間内に画像全体が処理されず、その結果、自然な動画再生が不可能になることもある。 Decoding a moving image goes through various processes. Such a process includes entropy decoding, inverse transform, inverse quantization, and motion compensation. Of these, motion compensation takes the longest processing time. Motion compensation refers to a motion vector that represents a displacement between a block of a current image and a corresponding block of a reference image, extracts a portion shared between the reference image and the current image from the reference image, Means the process of restoring the current image by adding the extracted data (hereinafter referred to as “motion compensation data”) and the difference data between the reference image and the current image (hereinafter referred to as “residue data”). To do. In this way, the motion compensation process requires a large amount of memory access and computation because a lot of image data must be processed. Since the amount of processing for such motion compensation is proportional to the size of the image, if the size of the image increases, in the worst case, the entire image is not processed within the desired time, resulting in natural video. Reproduction may be impossible.
ほとんどの動画コーデックエンジニアは、動画コーデックをソフトウェアの形態で具現することを好む。これは、動画コーデックをハードウェアで具現する場合に比べて、その開発期間が短縮され、かつコストが低下し、動画コーデックの再使用が容易であり、特に、動画コーデック自体の柔軟性に優れて動画コーデックにエラーが発生する場合に、これを容易に修正しうるという長所があるためである。しかし、動画コーデックの核心は、リアルタイム処理にある。たとえソフトウェアの具現が多くの長所を有しているとしても、動画コーデックが画像の符号化及び復号化をリアルタイムで処理できなければ、無駄になる。一方、動画コーデックをハードウェアで具現する場合には、開発期間が長くなり、コストが上昇し、柔軟性が低くて、動画コーデックの修正をせねばならない場合に、動画コーデックの全体構造を変更する危険が伴うこともある。しかし、何よりも動画コーデックをハードウェアで具現する場合には、ターゲットに最適化された具現が可能であるため、ソフトウェアで処理する場合より動画符号化及び復号化の速度が飛躍的に速くなるという長所がある。 Most video codec engineers prefer to implement video codecs in software form. Compared to the case where the video codec is implemented in hardware, the development period is shortened, the cost is reduced, and the video codec can be easily reused. In particular, the video codec itself has excellent flexibility. This is because when an error occurs in the video codec, this can be easily corrected. However, the heart of video codecs is real-time processing. Even if the implementation of the software has many advantages, it will be useless if the video codec cannot process the encoding and decoding of images in real time. On the other hand, if the video codec is implemented in hardware, the development period will be long, the cost will increase, the flexibility will be low, and the video codec's overall structure will change if the video codec needs to be modified It can be dangerous. However, above all, when the video codec is implemented in hardware, it can be optimized for the target, so the video encoding and decoding speed is dramatically faster than when processing with software. There are advantages.
前記のようなハードウェア具現方式及びソフトウェア具現方式のそれぞれの相反した長短所によって、ほとんどの動画コーデックエンジニアは、この2つの方式を混合して多用する。すなわち、動画コーデックを構成するモジュールは、各特徴によってS/Wで処理する部分とH/Wで処理する部分とに分けて具現される。この場合、必須的にハードウェアで具現せねばならない部分が動き補償である。動き補償に要求されるデータ演算量も多いが、何よりもメモリアクセスが他の部分に比べてはるかに多いため、ソフトウェア的な処理が不適合であった。 Due to the conflicting advantages and disadvantages of the hardware implementation method and the software implementation method as described above, most video codec engineers mix and use these two methods. That is, the modules constituting the moving image codec are implemented by dividing each part into a part to be processed by S / W and a part to be processed by H / W. In this case, motion compensation is an essential part that must be implemented in hardware. The amount of data computation required for motion compensation is large, but above all, memory access is much larger than other parts, so software processing is incompatible.
最近、動画コーデック具現の重要なイッシュは、一つの動画プレイヤで多様な動画フォーマットを再生可能にすることである。主に多く使われる動画フォーマットは、MPEG4、VC1、H.264/AVCである。しかし、このような3つのコーデックを一つの機器に具現しようとするとき、それぞれのコーデックに対する動き補償をそれぞれ具現すれば、ソフトウェアで処理する場合には、データ演算量及びメモリアクセス量が大きく増加するという問題が発生し、ハードウェアで具現する場合にも、ハードウェアの大きさ及び製作コストが上昇するという問題点が発生する。 Recently, an important issue for implementing a video codec is to enable a variety of video formats to be played back by a single video player. Video formats that are mainly used are MPEG4, VC1, and H.264 / AVC. However, when implementing these three codecs on a single device, if the motion compensation for each codec is implemented, the amount of data computation and memory access will greatly increase when processed by software. Even when implemented in hardware, there is a problem in that the size and manufacturing cost of hardware increase.
本発明が解決しようとする技術的課題は、データ演算量及びメモリアクセスを減らし、ハードウェアの大きさ及び製作コストを減少させるためのマルチコーデックを支援しつつも、動画の再生をリアルタイムで処理可能にし、動き補償のためのチップのサイズ縮小及びチップ製作コストを低下させる装置及び方法を提供することである。また、前記の方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供することである。 The technical problem to be solved by the present invention is that the playback of moving images can be processed in real time while supporting multi-codecs to reduce the amount of data calculation and memory access, and reduce the size and production cost of hardware It is another object of the present invention to provide an apparatus and method for reducing the chip size and reducing the chip manufacturing cost for motion compensation. Another object of the present invention is to provide a computer-readable recording medium on which a program for causing the computer to execute the method is recorded.
本発明が解決しようとする技術的課題は、前記のような技術的課題に限定されず、さらに他の技術的課題が存在しうる。これは、当業者ならば、下記の記載から明確に分かる。 The technical problem to be solved by the present invention is not limited to the technical problem as described above, and other technical problems may exist. This can be clearly understood by those skilled in the art from the following description.
前記課題を解決するための本発明による動き補償方法は、(a)複数のコーデックのうち何れか一つを表すコーデック情報によって、現在画像に対応する参照画像の画素を補間する複数の方式のうち少なくとも一つの方式を利用して、前記参照画像の画素の値から前記画素の間に位置した画素の値を算出するステップと、(b)前記算出された画素値を含む動き補償データと、前記参照画像と前記現在画像との差とを合算することによって前記現在画像を復元するステップとを含む。 The motion compensation method according to the present invention for solving the above-described problem is: (a) Among a plurality of methods for interpolating pixels of a reference image corresponding to a current image by codec information representing any one of a plurality of codecs. Calculating a value of a pixel located between the pixels from a value of a pixel of the reference image using at least one method; and (b) motion compensation data including the calculated pixel value; Restoring the current image by adding a difference between a reference image and the current image.
前記(a)ステップは、(a1)前記コーデック情報によって、選択的に前記参照画像の何れか一ブロックの何れか一つの垂直ラインに位置した画素の値から、前記垂直ラインに位置した画素の間に位置した画素の値を算出するステップと、(a2)前記コーデック情報によって、選択的に前記ブロックの何れか一つの水平ラインに位置した画素の値から、前記水平ラインに位置した画素の間に位置した画素の値を算出するステップと、(a3)前記コーデック情報によって、選択的に前記ブロックの何れか一つのキュービックに位置した画素の値から、前記キュービックに位置した画素の間に位置した画素の値を算出するステップと、を含む。 In the step (a), (a1) a value between pixels positioned on any one vertical line of any one block of the reference image is selectively determined based on the codec information. Calculating a value of a pixel located at a position between (a2) a pixel value located on any one horizontal line of the block and a pixel located on the horizontal line according to the codec information. A step of calculating a value of a pixel located; and (a3) a pixel located between pixels located in the cubic from a value of a pixel located in any one of the blocks selectively according to the codec information Calculating a value of.
前記課題を解決するために、本発明は、前記の動き補償方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供する。 In order to solve the above-mentioned problems, the present invention provides a computer-readable recording medium on which a program for causing a computer to execute the motion compensation method is recorded.
前記課題を解決するための本発明による動き補償装置は、複数のコーデックのうち何れか一つを表すコーデック情報によって、現在画像に対応する参照画像の画素を補間する複数の方式のうち少なくとも一つの方式を利用して、前記参照画像の画素の値から前記画素の間に位置した画素の値を算出する動き補償エンジンと;前記算出された画素値を含む動き補償データと、前記参照画像と前記現在画像との差とを合算することによって前記現在画像を復元する加算器とを備える。 A motion compensation apparatus according to the present invention for solving the above-described problem is provided by at least one of a plurality of methods for interpolating pixels of a reference image corresponding to a current image by codec information representing any one of a plurality of codecs. A motion compensation engine that calculates a value of a pixel located between the pixels from a value of a pixel of the reference image using a method; motion compensation data including the calculated pixel value; the reference image; An adder for restoring the current image by adding the difference with the current image.
前記動き補償エンジンは、前記コーデック情報によって選択的に前記参照画像の何れか一ブロックの何れか一つの垂直ラインに位置した画素の値から前記垂直ラインに位置した画素の間に位置した画素の値を算出する垂直フィルタと、前記コーデック情報によって選択的に前記ブロックの何れか一つの水平ラインに位置した画素の値から前記水平ラインに位置した画素の間に位置した画素の値を算出する水平フィルタと、前記コーデック情報によって選択的に前記ブロックの何れか一つのキュービックに位置した画素の値から前記キュービックに位置した画素の間に位置した画素の値を算出するキュービックフィルタとを備える。 The motion compensation engine may be configured to select a value of a pixel located between a value of a pixel located on any one vertical line of any one block of the reference image and a pixel located on the vertical line according to the codec information. And a horizontal filter that calculates a value of a pixel located between pixels located on the horizontal line from a value of a pixel located on any one horizontal line of the block selectively according to the codec information And a cubic filter that calculates a value of a pixel located between pixels located in the cubic from a value of a pixel located in any one of the blocks selectively according to the codec information.
本発明によれば、MPEG4、H.264/AVC、VC1のような複数のコーデックのうち何れか一つを表すコーデック情報によって、垂直フィルタリング、水平フィルタリング、キュービックフィルタリングなどの複数のコーデック間の共通的な部分を選択的に行うことによって、マルチコーデックを支援する動き補償をハードウェアで具現することによってチップサイズを最小化しうる。特に、前記のように、共通的な部分が選択的に行えるようにモジュール化することにより、ハードウェアへの具現を容易にし、これと共にチップに所要される部品の数の減少によってチップの製作コストが低下する。 According to the present invention, a common codec among a plurality of codecs such as vertical filtering, horizontal filtering, cubic filtering, etc., according to codec information representing any one of a plurality of codecs such as MPEG4, H.264 / AVC, and VC1. By selectively performing this part, the chip size can be minimized by implementing the motion compensation supporting the multi-codec in hardware. In particular, as described above, by modularizing so that common parts can be selectively performed, implementation in hardware is facilitated, and at the same time, the number of parts required for the chip is reduced, and the manufacturing cost of the chip is reduced. Decreases.
また、本発明によれば、外部メモリからデータを受信するために待機する区間及び外部メモリからデータを受信する区間の間、垂直フィルタリング、水平フィルタリング、キュービックフィルタリングがパイプライン形態で行われることによって動き補償処理時間を最小化し、これにより、マルチコーデックを支援しつつも、画像の符号化及び復号化がリアルタイムで処理されて、マルチコーデックを支援するDMB再生装置を容易に製作しうる。 In addition, according to the present invention, vertical filtering, horizontal filtering, and cubic filtering are performed in a pipeline form during a period of waiting to receive data from the external memory and a period of receiving data from the external memory. The compensation processing time is minimized, so that a DMB playback device supporting multi-codec can be easily manufactured by encoding and decoding images in real time while supporting multi-codec.
以下、図面を参照して本発明の実施形態を詳細に説明する。 Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
図1は、多様な動画圧縮コーデックのそれぞれで使われる動き補償のためのフィルタの特性を表で示す図である。さらなる高解像度の画像を復元するために、現在動画圧縮コーデックでは、動きベクトルが参照画像内の画素、すなわち整数画素のみを指示せず、整数画素の間の1/2に位置した1/2画素または整数画素の間の1/4に位置した1/4画素も指示するようにしている。しかし、1/2画素及び1/4画素は、参照画像に本来存在しない画素であるため、この画素の値は、画素補間法を利用して生成される。図1は、このような画素補間に使われるフィルタの特性を動画圧縮コーデック別に示す。 FIG. 1 is a table showing characteristics of a filter for motion compensation used in each of various video compression codecs. In order to restore a higher resolution image, the current video compression codec has a motion vector that does not indicate only pixels in the reference image, i.e., integer pixels, but 1/2 pixels located in 1/2 between integer pixels. Alternatively, a ¼ pixel located at ¼ between integer pixels is also indicated. However, since the ½ pixel and the ¼ pixel are pixels that do not originally exist in the reference image, the value of this pixel is generated using a pixel interpolation method. FIG. 1 shows the characteristics of a filter used for such pixel interpolation for each moving image compression codec.
図1を参照するに、MPEG4、H.264/AVC、VC1の色差成分(chrominance component)は、何れもキュービックフィルタ(cubic filter)を使用しており、VC1は、リニアフィルタ(linear filter)を共に使用する。また、輝度成分(luminance component)については、MPEG4は、キュービックフィルタを使用し、H.264/AVCは、リニアフィルタを使用し、VC1は、キュービックフィルタとリニアフィルタとを共に使用しているということが分かる。以下では、MPEG4、H.264/AVC、VC1による画素補間の形を図2Aないし図2Eを参照しつつ詳細に説明する。 Referring to FIG. 1, the chrominance components of MPEG4, H.264 / AVC, and VC1 all use a cubic filter, and VC1 has both a linear filter and a linear filter. use. Regarding luminance components, MPEG4 uses a cubic filter, H.264 / AVC uses a linear filter, and VC1 uses both a cubic filter and a linear filter. I understand. Hereinafter, the form of pixel interpolation by MPEG4, H.264 / AVC, and VC1 will be described in detail with reference to FIGS. 2A to 2E.
図2Aは、H.264/AVCによる輝度成分の画素補間の形を示す図である。図2Aに示された大文字アルファベットは、整数画素を表し、小文字アルファベットは、サブ画素を表す。整数画素は、画素補間に使われる本来の画素を意味し、サブ画素は、整数画素を利用して画素補間によって生成された値を有する画素、すなわち1/2画素、1/4画素を意味する。図2Aを参照するに、H.264/AVCの輝度成分に対する画素補間は、1/4画素単位までなされる。まず、図2Aに示された1/2画素、すなわち、b、h、m、s位置の画素は、次のような式(1)によって6個の係数を有する6タップフィルタを利用して計算される。 2A is a diagram illustrating a form of pixel interpolation of luminance components according to H.264 / AVC. The uppercase alphabet shown in FIG. 2A represents an integer pixel, and the lowercase alphabet represents a subpixel. The integer pixel means an original pixel used for pixel interpolation, and the sub-pixel means a pixel having a value generated by pixel interpolation using the integer pixel, that is, 1/2 pixel or 1/4 pixel. . Referring to FIG. 2A, pixel interpolation for luminance components of H.264 / AVC is performed up to 1/4 pixel unit. First, the 1/2 pixel shown in FIG. 2A, that is, the pixel at the b, h, m, and s positions is calculated using a 6-tap filter having 6 coefficients according to the following equation (1). Is done.
b1=(E−5*F+20*G+20*H−5*I+J)
h1=(A−5*C+20*G+20*M−5*R+T)
b=Clip1Y((b1+16)>>5)
h=Clip1Y((h1+16)>>5) (1)
j1=cc−5*dd+20*h1+20*m1−5*ee+ff、または
j1=aa−5*bb+20*b1+20*s1−5*gg+hh
j=Clip1Y((j1+512)>>10)
s=Clip1Y((s1+16)>>5)
m=Clip1Y((m1+16)>>5)
前記数式で“*”は、乗算演算を表す。以下でも同様である。
b1 = (E-5 * F + 20 * G + 20 * H-5 * I + J)
h1 = (A-5 * C + 20 * G + 20 * M-5 * R + T)
b = Clip1Y ((b1 + 16) >> 5)
h = Clip1Y ((h1 + 16) >> 5) (1)
j1 = cc-5 * dd + 20 * h1 + 20 * m1-5 * ee + ff, or j1 = aa-5 * bb + 20 * b1 + 20 * s1-5 * gg + hh
j = Clip1Y ((j1 + 512) >> 10)
s = Clip1Y ((s1 + 16) >> 5)
m = Clip1Y ((m1 + 16) >> 5)
In the above formula, “*” represents a multiplication operation. The same applies to the following.
次いで、図2Aに示された1/4画素、すなわち、残りの画素は、次のような式(2)によって平均フィルタを利用して計算される。この平均フィルタは、2個の係数を有する2タップフィルタの一種であって、以下でも同様である。 Next, the ¼ pixel shown in FIG. 2A, that is, the remaining pixels are calculated using an average filter according to the following equation (2). This average filter is a kind of 2-tap filter having two coefficients, and the same applies to the following.
a=(G+b+1)>>1
c=(H+b+1)>>1
d=(G+h+1)>>1
n=(M+h+1)>>1
f=(b+j+1)>>1
i=(h+j+1)>>1
k=(j+m+1)>>1 (2)
q=(j+s+1)>>1
e=(b+h+1)>>1
g=(b+m+1)>>1
p=(h+s+1)>>1
r=(m+s+1)>>1
前記の式(1)及び(2)のうち、表記“>>”は、右側シフト演算を意味し、“>>”の次の数字は、何ビットをシフトするかを表す。例えば、“>>1”は、1ビットシフトを意味し、二等分と同等である。以下でも同様である。
a = (G + b + 1) >> 1
c = (H + b + 1) >> 1
d = (G + h + 1) >> 1
n = (M + h + 1) >> 1
f = (b + j + 1) >> 1
i = (h + j + 1) >> 1
k = (j + m + 1) >> 1 (2)
q = (j + s + 1) >> 1
e = (b + h + 1) >> 1
g = (b + m + 1) >> 1
p = (h + s + 1) >> 1
r = (m + s + 1) >> 1
In the above formulas (1) and (2), the notation “>>” means a right shift operation, and the number after “>>” represents how many bits are shifted. For example, “>> 1” means 1-bit shift, which is equivalent to bisection. The same applies to the following.
図2Bは、H.264/AVCによる色差成分の画素補間の様子を示す図である。図2Bに示されたP1、P2、P3、P4は、整数画素を表し、4個の矢印の収斂点は、サブ画素を表す。図2Bを参照するに、H.264/AVCの色差成分に対する画素補間は、固定された位置ではない、任意の位置でなされる。すなわち、図2Bに示された任意の位置の画素は、次のような式(3)によってキュービックフィルタを使用して計算される。このキュービックフィルタは、4個の係数を有する4タップフィルタの一種であって、以下でも同様である。 2B is a diagram illustrating a state of pixel interpolation of color difference components by H.264 / AVC. P1, P2, P3, and P4 shown in FIG. 2B represent integer pixels, and the convergence points of the four arrows represent sub-pixels. Referring to FIG. 2B, pixel interpolation for the color difference component of H.264 / AVC is performed at an arbitrary position, not a fixed position. That is, a pixel at an arbitrary position shown in FIG. 2B is calculated using a cubic filter according to the following equation (3). This cubic filter is a kind of 4-tap filter having four coefficients, and the same applies to the following.
P=((8−xFrc)*(8−yFrc)*P1+xFrc*(8−yFrc)*P2+(8−xFrc)*yFrc*P3+xFrc*yFrc*P4+32)>>6 (3)
図2Cは、VC1によってリニアフィルタを使用した画素補間の形を示す図である。図2Cに示されたP1、P2、P3、P4は、整数画素を表し、整数画素P2とP3との間に位置した点は、サブ画素を表す。図2Cを参照するに、VC1によってリニアフィルタを使用した画素補間は、1/4画素単位までなされる。すなわち、図2Cに示された黒点に該当する1/2画素及び1/4画素は、次のような式(4)によってキュービックフィルタを使用して計算される。
P = ((8−xFrc) * (8−yFrc) * P1 + xFrc * (8−yFrc) * P2 + (8−xFrc) * yFrc * P3 + xFrc * yFrc * P4 + 32) >> 6 (3)
FIG. 2C is a diagram illustrating a form of pixel interpolation using a linear filter by VC1. P1, P2, P3, and P4 shown in FIG. 2C represent integer pixels, and points located between the integer pixels P2 and P3 represent sub-pixels. Referring to FIG. 2C, pixel interpolation using a linear filter by VC1 is performed up to 1/4 pixel unit. That is, the ½ pixel and ¼ pixel corresponding to the black dots shown in FIG. 2C are calculated using a cubic filter according to the following equation (4).
P=(a*P1+b*P2+c*P3+d*P4+rc)>>s (4)
前記の式(4)のうち、表記“a”、“b”、“c”、“d”は、キュービックフィルタの4個のタップのそれぞれの係数であって、サブ画素の位置によってその値が決定される。また、表記“s”も、サブ画素の位置によってその値が決定される。
P = (a * P1 + b * P2 + c * P3 + d * P4 + rc) >> s (4)
In the above equation (4), the notations “a”, “b”, “c”, and “d” are the coefficients of the four taps of the cubic filter, and their values depend on the position of the sub-pixel. It is determined. Also, the value of the notation “s” is determined by the position of the sub-pixel.
図2Dは、MPEG4による画素補間の様子を示す図である。図2Dに示されたP1、P2、P3、P4は、整数画素を表し、整数画素の間に位置した黒点は、サブ画素を表す。図2Dを参照するに、MPEG4の輝度成分及び色差成分に対する画素補間は、1/2画素単位までなされる。例えば、P1の位置をdx=0、dy=0とすれば、図2Cに示された黒色点に該当する1/2画素は、次のような式(5)によってキュービックフィルタを使用して計算される。 FIG. 2D is a diagram showing a state of pixel interpolation by MPEG4. P1, P2, P3, and P4 shown in FIG. 2D represent integer pixels, and black dots positioned between the integer pixels represent sub-pixels. Referring to FIG. 2D, pixel interpolation for MPEG4 luminance and chrominance components is performed up to ½ pixel unit. For example, if the position of P1 is dx = 0 and dy = 0, the ½ pixel corresponding to the black point shown in FIG. 2C is calculated using a cubic filter according to the following equation (5). Is done.
dx=1、dy=0:P=(P1+P2+1−rc)>>1
dx=0、dy=1:P=(P1+P3+1−rc)>>1 (5)
dx=1、dy=1:P=(P1+P2+P3+P4−rc)>>1
前記の式(5)のうち、表記“rc”は、ラウンド制御(rounding control)を意味し、0または1を有する。以下でも同様である。
dx = 1, dy = 0: P = (P1 + P2 + 1−rc) >> 1
dx = 0, dy = 1: P = (P1 + P3 + 1−rc) >> 1 (5)
dx = 1, dy = 1: P = (P1 + P2 + P3 + P4-rc) >> 1
In the above formula (5), the notation “rc” means rounding control and has 0 or 1. The same applies to the following.
図2Eは、VC1によってキュービックフィルタを使用した画素補間の様子を示す図である。図2Eに示されたP1、P2、P3、P4は、整数画素を表し、4個の矢印の収斂点は、サブ画素を表す。図2Eを参照するに、H.264/AVCの色差成分に対する画素補間は、固定され位置ではない、任意の位置でなされる。すなわち、図2Bに示された任意の位置の画素は、次のような式(6)によってキュービックフィルタを使用して計算される。 FIG. 2E is a diagram illustrating a state of pixel interpolation using a cubic filter by VC1. P1, P2, P3, and P4 shown in FIG. 2E represent integer pixels, and the convergence points of the four arrows represent sub-pixels. Referring to FIG. 2E, pixel interpolation for the color difference component of H.264 / AVC is performed at an arbitrary position that is not a fixed position. That is, a pixel at an arbitrary position shown in FIG. 2B is calculated using a cubic filter according to the following equation (6).
P=(a*P1+b*P2+c*P3+d*P4+rc)>>s (6)
前記の式(6)のうち、表記“a”、“b”、“c”、“d”は、キュービックフィルタの4個のタップのそれぞれの係数であって、サブ画素の位置によってその値が決定される。また、表記“s”も、サブ画素の位置によってその値が決定される。
P = (a * P1 + b * P2 + c * P3 + d * P4 + rc) >> s (6)
In the above equation (6), the notations “a”, “b”, “c”, and “d” are the coefficients of the four taps of the cubic filter, and the values depend on the position of the sub-pixel. It is determined. Also, the value of the notation “s” is determined by the position of the sub-pixel.
前記のように、MPEG4、H.264/AVC、VC1で使われるフィルタのそれぞれのタップ数と係数値とは異なるが、このような係数値は、調整が可能であり、あるタップの係数値を0にすることによってタップ数も調整が可能である。例えば、6タップフィルタを構成する6個のタップのうち、2個のタップの係数値を0にすることによって、この6タップフィルタは、4タップフィルタとして使われる。また、4タップフィルタを構成する4個のタップのうち、2個のタップの係数値を0にすることによって、この4タップフィルタは、2タップフィルタ、すなわち平均フィルタとして使われる。したがって、MPEG4、H.264/AVC、VC1のそれぞれで使われるフィルタの間には、相互共有できる部分が存在するということが分かり、これを利用すれば、前記の3つのコーデック(CODEC)を何れもさらに小さい数のフィルタを利用して動き補償を効率的に処理しうる。 As described above, the number of taps and the coefficient values of the filters used in MPEG4, H.264 / AVC, and VC1 are different from each other, but such coefficient values can be adjusted. By setting it to 0, the number of taps can be adjusted. For example, the 6-tap filter is used as a 4-tap filter by setting the coefficient value of 2 taps out of 6 taps constituting the 6-tap filter to 0. Further, by setting the coefficient value of two taps out of four taps constituting the 4-tap filter to 0, this 4-tap filter is used as a 2-tap filter, that is, an average filter. Therefore, it can be seen that there is a part that can be mutually shared between the filters used in MPEG4, H.264 / AVC, and VC1, and if this is used, any of the above three codecs (CODEC) can be used. However, motion compensation can be efficiently processed using a smaller number of filters.
前記の3つのコーデックのうち、H.264/AVCが最も複雑な方式で画素を補間する。しかし、H.264/AVCは、輝度成分に対してリニアフィルタリング方式の6タップフィルタを使用し、色差成分に対しては、キュービックフィルタリング方式の4タップフィルタを使用するため、これらは、MPEG4、VC1のキュービックフィルタリング方式の4タップフィルタ及びVC1のリニアフィルタリング方式の4タップフィルタに使われる。したがって、MPEG4、VC1の画素補間法は、H.264/AVCの画素補間法のサブセットと言える。 Among the above three codecs, H.264 / AVC interpolates pixels in the most complicated manner. However, since H.264 / AVC uses a linear filtering 6-tap filter for the luminance component and a cubic filtering 4-tap filter for the chrominance component, these are MPEG4 and VC1. This is used for the cubic filtering type 4-tap filter and the VC1 linear filtering type 4-tap filter. Therefore, the pixel interpolation method of MPEG4 and VC1 can be said to be a subset of the pixel interpolation method of H.264 / AVC.
すなわち、6個のタップを有する一つのリニアフィルタは、その6個のタップのそれぞれの係数値を調整することにより、MPEG4のリニアフィルタ、H.264/AVCのリニアフィルタ、VC1のリニアフィルタの何れにも使われる。また、4個のタップを有するキュービックフィルタは、その4個のタップのそれぞれの係数値を調整することにより、MPEG4のキュービックフィルタ、H.264/AVCのキュービックフィルタ、VC1のキュービックフィルタの何れもに使われる。しかし、H.264/AVCによる輝度成分の画素補間過程は、式(2)による平均フィルタリング過程を要求している。 In other words, one linear filter having six taps can be selected from the MPEG4 linear filter, the H.264 / AVC linear filter, and the VC1 linear filter by adjusting the coefficient value of each of the six taps. Also used for. In addition, a cubic filter having four taps is adjusted to each of the MPEG4 cubic filter, the H.264 / AVC cubic filter, and the VC1 cubic filter by adjusting the coefficient values of the four taps. used. However, the luminance component pixel interpolation process according to H.264 / AVC requires an average filtering process according to Equation (2).
しかし、式(2)によって算出される1/4画素のそれぞれは、その位置によって画素補間時に利用される周辺の画素が異なる。すなわち、e、g、p、r位置の画素の値は、そのそれぞれの画素を中心にしたダイアモンド位置の画素値を利用して算出され、f、i、k、g位置の画素の値は、そのそれぞれの画素を中心にした十字位置の画素値を利用して算出される。このように、H.264/AVCの1/4画素補間過程は、画素の位置による複雑なフィルタリング過程であるため、ハードウェアとして具現されるのが容易でなかった。 However, each of the ¼ pixels calculated by the equation (2) differs in surrounding pixels used at the time of pixel interpolation depending on the position. That is, the values of the pixels at the e, g, p, and r positions are calculated using the pixel values at the diamond positions centered on the respective pixels, and the values of the pixels at the f, i, k, and g positions are It is calculated using the pixel value at the cross position centered on each pixel. As described above, the 1/4 pixel interpolation process of H.264 / AVC is a complicated filtering process according to the position of the pixel, so that it was not easy to be implemented as hardware.
図3は、本発明の一実施形態によるキュービックフィルタを示す図である。図3を参照するに、本実施形態では、前記のようなH.264/AVCの1/4画素補間過程を、図3に示したように、キュービックフィルタに適用した。図3に示された形態のキュービックフィルタを利用すれば、H.264/AVCの1/4画素補間過程は、キュービックフィルタという共通モジュールを通じてなされる。 FIG. 3 is a diagram illustrating a cubic filter according to an embodiment of the present invention. Referring to FIG. 3, in the present embodiment, the H.264 / AVC 1/4 pixel interpolation process as described above is applied to a cubic filter as shown in FIG. If the cubic filter shown in FIG. 3 is used, the H.264 / AVC 1/4 pixel interpolation process is performed through a common module called a cubic filter.
一般的に、キュービックフィルタは、キュービックの頂点のそれぞれに位置した整数画素(Integer pel)の値を利用して、キュービックの辺のそれぞれの中心に位置した1/2画素の値及びキュービックの中心に位置した1/2画素(Half pel)の値を算出する。本実施形態では、このようなキュービックフィルタの特性を利用して前記の式(2)に該当する計算を処理する。例えば、a位置の1/4画素(Quater pel)の値は、G位置の整数画素の値、b位置の1/2画素の値を、図3に示されたキュービックフィルタに適用することによって算出される。当業者ならば、他の位置の1/4画素の値も、図3に示したように算出されるということが分かる。 In general, a cubic filter uses the value of an integer pixel located at each of the cubic vertices, and uses the value of a half pixel located at the center of each of the cubic sides and the center of the cubic. The value of the located half pixel (Half pel) is calculated. In the present embodiment, the calculation corresponding to the equation (2) is processed using such a characteristic of the cubic filter. For example, the value of the quarter pixel at position a (Quater pel) is calculated by applying the value of the integer pixel at position G and the value of the half pixel at position b to the cubic filter shown in FIG. Is done. Those skilled in the art will understand that the values of ¼ pixels at other positions are also calculated as shown in FIG.
図4は、本発明の一実施形態によるマルチコーデック支援動き補償装置の構成図である。図4を参照するに、本実施形態によるマルチコーデック支援動き補償装置は、スレーブインターフェース(スレーブI/F)10、マスターインターフェース(マスターI/F)20、DMA(Direct Memory Access)I/F 30、動き補償エンジン40、第1メモリ50、第2メモリ60、及び加算器70で構成される。
FIG. 4 is a block diagram of a multi-codec assisted motion compensation apparatus according to an embodiment of the present invention. Referring to FIG. 4, the multi-codec support motion compensation apparatus according to the present embodiment includes a slave interface (slave I / F) 10, a master interface (master I / F) 20, a DMA (Direct Memory Access) I /
スレーブI/F 10は、本実施形態によるマルチコーデック支援動き補償装置を備える動画復号化装置(図示せず)のシステムバスを経由して、外部動画符号化装置(図示せず)から伝送されたレジデューデータをフェッチし、フェッチされたレジデューデータを第2メモリ60に出力する。また、スレーブI/F 10は、システムバスを経由して、外部動画符号化装置から動き補償のために必要なパラメータであるMC(Motion Compensation)パラメータをフェッチし、フェッチされたMCパラメータをマスターI/F 20に出力する。
The slave I /
マスターI/F 20は、スレーブI/F 10から入力されたMCパラメータを解釈し、その解釈結果に基づいて、MCパラメータを選別してDMA I/F 30及び動き補償エンジン40に出力することにより、DMA I/F 30を構成するDMAモジュール31及びFIFO(First−In First−Out)モジュール32のそれぞれの動作を制御し、動き補償エンジン40を構成する垂直フィルタ41、第1水平フィルタ42、第2水平フィルタ43、キュービック整列部44、及びキュービックフィルタ45のそれぞれの動作を制御する。
The master I /
第1メモリ50は、動き補償エンジン40によって生成された動き補償データを保存し、第2メモリ60は、スレーブI/F 10から入力されたレジデューデータを保存する。一般的に、第1メモリ50及び第2メモリ60は、SRAM(スタティックランダムアクセスメモリ)で具現される。加算器70は、第1メモリ50に保存された動き補償データと第2メモリ60に保存されたレジデューデータとを合算することによって現在画像を復元し、復元された現在画像のデータをDMA I/F 30に出力する。
The first memory 50 stores motion compensation data generated by the
DMA I/F 30は、DMAモジュール31及びFIFOモジュール32で構成される。DMAモジュール31は、マスターI/F 20から入力されたMCパラメータのうち、現在画像のブロックと参照画像の対応ブロックとの間の変位を表す動きベクトルを参照して、システムバスを経由して外部メモリ(図示せず)から、参照画像と現在画像との間に共有される参照画像の32ビット単位のデータをフェッチし、加算器70によって復元された現在画像を外部メモリに保存する。
The DMA I /
FIFOモジュール32は、DMAモジュール31によってフェッチされた32ビット単位のデータを8ビット単位で抽出して順次に動き補償エンジン40に出力する。特に、FIFOモジュール32は、実際に動き補償のために必要なデータのみを動き補償エンジン40に出力する8ビットアンパッキング以外に、参照画像に動きベクトルが指示するデータが存在しない場合、この動きベクトルによるパッディングも共に行う。
The
動き補償エンジン40は、DMA I/F 30から入力された8ビット単位のデータに対する動き補償を行う。さらに詳細に説明すると、動き補償エンジン40は、マスターI/F 20から入力されたMCパラメータ中の複数のコーデックのうち何れか一つを表すコーデック情報、複数の色成分のうち何れか一つを表す色情報、及び複数のフィルタのうち何れか一つを表すフィルタ情報によって現在画像に対応する参照画像の画素を補間する複数の方式、すなわち、垂直リニアフィルタリング、水平リニアフィルタリング、キュービックフィルタリングのうち少なくとも一つの方式を利用して、参照画像の画素の値からその画素の間に位置した画素の値を算出する。
The
図4を参照するに、動き補償エンジン40は、さらに垂直フィルタ41、第1水平フィルタ42、第2水平フィルタ43、キュービック整列部44、及びキュービックフィルタ45で構成される。
Referring to FIG. 4, the
垂直フィルタ41は、マスターI/F 20から入力されたMCパラメータ中の複数のコーデックのうち何れか一つを表すコーデック情報、複数の色成分のうち何れか一つを表す色情報、及び複数のフィルタのうち何れか一つを表すフィルタ情報によって、選択的にDMA I/F 30から入力された参照画像の何れか一ブロックの何れか一つの垂直ラインに位置した整数画素の値から、この垂直ラインに位置した整数画素の間に位置した1/2画素の値を算出する。特に、垂直フィルタ41は、6個のタップを有するリニアフィルタで具現され、前記の垂直ラインに位置した整数画素の値を6個のタップに適用することにより、マスターI/F 20から入力されたMCパラメータのうち前記のブロックの動きベクトルが指示する1/2画素の値を算出する。
The
第1水平フィルタ42は、マスターI/F 20から入力されたMCパラメータのうちコーデック情報、色情報、及びフィルタ情報によって、選択的にDMA I/F 30から入力された参照画像の何れか一ブロックの何れか一つの水平ラインに位置した整数画素の値から、その水平ラインに位置した整数画素の間に位置した1/2画素の値を算出する。特に、第1水平フィルタ42は、6個のタップを有するリニアフィルタで具現され、前記の水平ラインに位置した画素の値を6個のタップに適用することにより、マスターI/F 20から入力されたMCパラメータのうち前記のブロックの動きベクトルが指示する1/2画素の値を算出する。
The first
第2水平フィルタ43は、マスターI/F 20から入力されたMCパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的に第1水平フィルタ42によって処理される水平ラインでない他の水平ラインに位置した整数画素または1/2画素の値から、その水平ラインに位置した整数画素の間に位置した1/2画素の値を算出する。ここで、1/2画素は、周辺の整数画素から算出される。特に、第2水平フィルタ43は、6個のタップを有するリニアフィルタで具現され、前記の水平ラインに位置した整数画素または1/2画素の値を6個のタップに適用することにより、マスターI/F 20から入力されたMCパラメータのうち前記のブロックの動きベクトルが指示する1/2画素の値を算出する。
The second horizontal filter 43 is another horizontal line that is not a horizontal line that is selectively processed by the first
キュービック整列部44は、マスターI/F 20から入力されたMCパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的に前記のブロックの動きベクトルが指示する1/2画素、1/4画素、または任意の位置の画素の値を生成するために要求されるキュービック位置に、DMA I/F 30から入力された整数画素または1/2画素の値を整列する。
The
キュービックフィルタ45は、マスターI/F 20から入力されたMCパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的に図3に示されたところによって、キュービック整列部44によって整列された4個の整数画素の値から、この整列された画素の間に位置した1/2画素、1/4画素、または任意の位置の画素の値を算出する。また、キュービックフィルタ45は、マスターI/F 20から入力されたMCパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的に第1水平フィルタ42及び第2水平フィルタ43から入力された輝度成分のブロックの何れか一つのキュービックに位置した2個の整数画素または1/2画素の値から、このキュービックに位置した2個の画素の間に位置した1/2画素または1/4画素の値を算出する。特に、キュービックフィルタ45は、4個のタップを有するキュービックフィルタで具現され、前記のキュービック位置の2個または4個の画素の値をこのキュービック位置に対応する2個のタップまたは4個のタップに適用することにより、マスターI/F 20から入力されたMCパラメータのうち、前記のブロックの動きベクトルが指示する1/2画素、1/4画素、任意の位置の画素の値を算出する。
The
垂直フィルタ41、第1水平フィルタ42、第2水平フィルタ43、キュービック整列部44及びキュービックフィルタ45のそれぞれは、全ての画素に対して動作するのではなく、動きベクトルの値によって動作する。それは、マスターI/F 20から入力されたMCパラメータのうち動きベクトルが整数画素の位置を指示する場合には、参照画面と予測画面との間の動きが正確に整数画素間隔の倍数に該当する場合であるため、参照画面を構成する整数画素の値が予測画面を構成する画素の値となるので、垂直フィルタ41、第1水平フィルタ42、第2水平フィルタ43、キュービック整列部44、及びキュービックフィルタ45による画素値補間が不要である。しかし、マスターI/F 20から入力されたMCパラメータのうち動きベクトルが1/2画素または1/4画素の位置を指示する場合には、参照画面と予測画面との間の動きが正確に整数画素間隔の倍数に該当しない場合であるため、参照画面を構成する整数画素の値を利用して補間された値が予測画面を構成する画素の値となるので、垂直フィルタ41、第1水平フィルタ42、第2水平フィルタ43、キュービック整列部44及びキュービックフィルタ45による画素値補間が必要である。
Each of the
垂直フィルタ41、第1水平フィルタ42、第2水平フィルタ43、キュービック整列部44及びキュービックフィルタ45による画素値補間が参照画像全体に対して行われば、垂直フィルタ41、第1水平フィルタ42、第2水平フィルタ43及びキュービックフィルタ45によって処理されず、そのまま通過された整数画素の値、これらフィルタによって算出された1/2画素の値、1/4画素の値及び任意の位置の画素の値全体は、前記の参照画像に対応する現在画像の動き補償データとして完成される。
If pixel value interpolation by the
図5ないし図7は、図4に示された動き補償装置での各コーデック別動作シナリオを示す図である。図5ないし図7を参照するに、H.264/AVCの輝度成分とVC1とは、リニアフィルタリングを行うために、水平フィルタリングと垂直フィルタリングとを行い、その他の場合には、キュービック整列を通じてキュービックフィルタリングを行う。 5 to 7 are diagrams illustrating operation scenarios for each codec in the motion compensation apparatus illustrated in FIG. 5 to 7, the luminance component of H.264 / AVC and VC1 are subjected to horizontal filtering and vertical filtering to perform linear filtering, and in other cases, cubic filtering through cubic alignment. I do.
図5は、図4に示された動き補償装置でのH.264/AVCのリニアフィルタ及びキュービックフィルタの動作シナリオを示す図である。図5を参照するに、図4に示された動き補償装置は、次のような動作シナリオによってH.264/AVCの輝度成分フィルタリングを行う。 5 is a diagram illustrating an operation scenario of the H.264 / AVC linear filter and the cubic filter in the motion compensation apparatus illustrated in FIG. Referring to FIG. 5, the motion compensator shown in FIG. 4 performs H.264 / AVC luminance component filtering according to the following operation scenario.
DMA I/F 30は、マスターI/F 20から入力されたMCパラメータのうち、現在画像のブロックと参照画像の対応ブロックとの間の変位を表す動きベクトルを参照して、システムバスを経由して外部メモリから参照画像の輝度成分を所定サイズのブロック単位でフェッチし、フェッチされた輝度成分のブロックを垂直フィルタ41に出力する。
The DMA I /
垂直フィルタ41は、マスターI/F 20から入力されたMCパラメータのうち、コーデック情報がH.264/AVCを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表せば、DMA I/F 30から入力された輝度成分のブロックを構成する整数画素のうち何れか一つの垂直ラインに位置した整数画素の値から、この垂直ラインに位置した整数画素の間に位置した1/2画素の値を算出する。特に、垂直フィルタ41は、前記の垂直ラインに位置した整数画素の値を6個のタップに適用することにより、マスターI/F 20から入力されたMCパラメータのうち、前記のブロックの動きベクトルが指示する1/2画素の値を算出し、算出された1/2画素の値を第1水平フィルタ42または第2水平フィルタ43に出力する。垂直フィルタ41は、前記のブロックの動きベクトルが整数画素を指示すれば、DMA I/F 30から入力された輝度成分のブロックを構成する整数画素の値をそのまま第1水平フィルタ42または第2水平フィルタ43に出力する。
Of the MC parameters input from the master I /
例えば、動きベクトルが指示する画素の位置が図2Aに示されたhである場合ならば、垂直フィルタ41は、A、C、G、M、R、T位置の整数画素値を6個のタップに適用して、h1=(A−5*C+20*G+20*M−5*R+T)、h=Clip1Y((h1+16)>>5)を計算することによってh位置の1/2画素の値を算出する。
For example, if the position of the pixel indicated by the motion vector is h shown in FIG. 2A, the
第1水平フィルタ42は、マスターI/F 20から入力されたMCパラメータのうち、コーデック情報がH.264/AVCを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表せば、垂直フィルタ41を経由してDMA I/F 30から入力された輝度成分のブロックを構成する整数画素のうち何れか一つの水平ラインに位置した整数画素の値から、この水平ラインに位置した整数画素の間に位置した1/2画素の値を算出する。特に、第1水平フィルタ42は、前記の水平ラインに位置した整数画素の値を6個のタップに適用することにより、マスターI/F 20から入力されたMCパラメータのうち、前記のブロックの動きベクトルが指示する1/2画素の値を算出し、算出された1/2画素の値をキュービックフィルタ45に出力する。また、第1水平フィルタ42は、前記のブロックの動きベクトルが整数画素を指示すれば、DMA I/F 30から入力された輝度成分のブロックを構成する整数画素の値をそのままキュービックフィルタ45に出力する。また、第1水平フィルタ42は、垂直フィルタ41から入力された1/2画素の値をそのままキュービックフィルタ45に出力する。
Of the MC parameters input from the master I /
例えば、動きベクトルが指示する画素の位置が図2に示されたbである場合ならば、第1水平フィルタ42は、E、F、G、H、I、J位置の整数画素値を6個のタップに適用してb1=(E−5*F+20*G+20*H−5*I+J)、b=Clip1Y((b1+16)>>5)を計算することによってb位置の1/2画素の値を算出する。
For example, if the position of the pixel indicated by the motion vector is b shown in FIG. 2, the first
第2水平フィルタ43は、マスターI/F 20から入力されたMCパラメータのうち、コーデック情報がH.264/AVCを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表せば、垂直フィルタ41を経由してDMA I/F 30から入力された輝度成分のブロックを構成する整数画素のうち、前記の水平ラインでない他の水平ラインに位置した整数画素または1/2画素の値からこの水平ラインに位置した整数画素または1/2画素の間に位置した1/2画素の値を算出する。特に、第2水平フィルタ43は、この水平ラインに位置した整数画素または1/2画素の値を6個のタップに適用することにより、マスターI/F 20から入力されたMCパラメータのうち、前記のブロックの動きベクトルが指示する1/2画素の値を算出し、算出された1/2画素の値をキュービックフィルタ45に出力する。また、第2水平フィルタ43は、前記のブロックの動きベクトルが整数画素を指示すれば、DMA I/F 30から入力された輝度成分のブロックを構成する整数画素の値をそのままキュービックフィルタ45に出力する。また、第2水平フィルタ43は、垂直フィルタ41から入力された1/2画素の値をそのままキュービックフィルタ45に出力する。
Of the MC parameters input from the master I /
例えば、動きベクトルが指示する画素の位置が図2に示されたjである場合ならば、第2水平フィルタ43は、cc、dd、h1、m1、ee、ff位置の1/2画素値を6個のタップに適用して、j1=cc−5*dd+20*h1+20*m1−5*ee+ff、j=Clip1Y((j1+512)>>10)を計算することによってj位置の1/2画素の値を算出する。前記の式(2)のうち、f=(b+j+1)>>1のように、ある1/4画素の値を求めるためには、同時に二つの1/2画素の値が要求される場合がある。このような場合、b位置の1/2画素の値を算出する過程とj位置の1/2画素の値を算出する過程とを同時に処理するために、第1水平フィルタ42と第2水平フィルタ43とが別途に存在する。
For example, if the position of the pixel indicated by the motion vector is j shown in FIG. 2, the second horizontal filter 43 sets the half pixel value at the cc, dd, h1, m1, ee, and ff positions. Apply to 6 taps and calculate j1 = cc-5 * dd + 20 * h1 + 20 * m1-5 * ee + ff, j = Clip1Y ((j1 + 512) >> 10), the value of 1/2 pixel at j position Is calculated. In the above equation (2), in order to obtain the value of a certain ¼ pixel as in f = (b + j + 1) >> 1, the value of two ½ pixels may be required at the same time. . In such a case, the first
キュービックフィルタ45は、マスターI/F 20から入力されたMCパラメータのうち、コーデック情報がH.264/AVCを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表せば、第1水平フィルタ42及び第2水平フィルタ43から入力された輝度成分のブロックの何れか一つのキュービックに位置した整数画素または1/2画素の値から、このキュービックに位置した2個の画素の間に位置した1/4画素の値を算出する。特に、キュービックフィルタ45は、前記のキュービック位置の2個の画素の値を、4個のタップのうち前記のキュービック位置に対応する2個のタップに適用することにより、マスターI/F 20から入力されたMCパラメータのうち前記のブロックの動きベクトルが指示する1/4画素の値を算出し、算出された1/4画素の値を第1メモリ50に出力する。また、キュービックフィルタ45は、第1水平フィルタ42または第2水平フィルタから入力された整数画素または1/2画素の値をそのまま第1メモリ50に出力する。
In the
例えば、動きベクトルが指示する画素の位置が図2に示されたaである場合ならば、キュービックフィルタ45は、G位置の整数画素値及びb位置の1/2画素値を、4個のタップのうち前記キュービック位置に対応する2個のタップに適用して、a=(G+b+1)>>1を計算することによってa位置の1/4画素の値を算出する。
For example, if the position of the pixel indicated by the motion vector is a shown in FIG. 2, the
図5を参照するに、図4に示された動き補償装置は、次のような動作シナリオによって、H.264/AVCの色差成分Cbフィルタリングを行う。 Referring to FIG. 5, the motion compensator shown in FIG. 4 performs H.264 / AVC color difference component Cb filtering according to the following operation scenario.
DMA I/F 30は、マスターI/F 20から入力されたMCパラメータのうち、現在画像のブロックと参照画像の対応ブロックとの間の変位を表す動きベクトルを参照して、システムバスを経由して外部メモリから参照画像の色差成分Cbを所定サイズのブロック単位でフェッチし、フェッチされた色差成分Cbのブロックをキュービック整列部44に出力する。
The DMA I /
キュービック整列部44は、マスターI/F 20から入力されたMCパラメータのうち、コーデック情報がH.264/AVCを表し、色情報が色差成分Cbを表し、フィルタ情報がキュービックフィルタを表せば、マスターI/F 20から入力された動きベクトルが指示する任意の位置の画素の値を生成するために要求されるキュービック位置に、DMA I/F 30から入力された色差成分Cbのブロックを構成する整数画素の値のうち4個を整列し、整列された4個の整数画素の値をキュービックフィルタ45に出力する。
Of the MC parameters input from the master I /
キュービックフィルタ45は、マスターI/F 20から入力されたMCパラメータのうち、コーデック情報がH.264/AVCを表し、色情報が色差成分Cbを表し、フィルタ情報がキュービックフィルタを表せば、図3に示されたところによって、キュービック整列部44によって整列された4個の整数画素の値から、この整列された画素の間に位置した任意の位置の画素の値を算出する。特に、キュービックフィルタ45は、前記のキュービック位置の4個の画素の値を前記キュービック位置に対応する4個のタップに適用することにより、マスターI/F 20から入力されたMCパラメータのうち前記ブロックの動きベクトルが指示する1/4画素の値を算出し、算出された1/4画素の値を第1メモリ50に出力する。
In the
例えば、動きベクトルが指示する画素の位置が図2Bに示された4つの矢印の収斂点である場合ならば、キュービックフィルタ45は、P1、P2、P3及びP4位置の整数画素値を4個のタップに適用して、P=((8−xFrc)*(8−yFrc)*P1+xFrc*(8−yFrc)*P2+(8−xFrc)*yFrc*P3+xFrc*yFrc*P4+32)>>6を計算することによって、任意の位置の画素の値を算出する。
For example, if the position of the pixel indicated by the motion vector is the convergence point of the four arrows shown in FIG. 2B, the
図5を参照するに、DMA I/F 30、キュービック整列部44、キュービックフィルタ45のそれぞれは、色差成分Crに対しても、前記色差成分Cbの動作シナリオと同一に動作する。したがって、H.264/AVCの色差成分Cbフィルタリングの動作シナリオについての詳細な説明は省略する。
Referring to FIG. 5, each of the DMA I /
図6は、図4に示された動き補償装置でのVC1のリニアフィルタの動作シナリオを示す図である。図6を参照するに、図4に示された動き補償装置は、次のような動作シナリオによってVC1の輝度成分フィルタリングを行う。 FIG. 6 is a diagram illustrating an operation scenario of the linear filter of VC1 in the motion compensation apparatus illustrated in FIG. Referring to FIG. 6, the motion compensation apparatus shown in FIG. 4 performs luminance component filtering of VC1 according to the following operation scenario.
DMA I/F 30は、マスターI/F 20から入力されたMCパラメータのうち、現在画像のブロックと参照画像の対応ブロックとの間の変位を表す動きベクトルを参照して、システムバスを経由して外部メモリから参照画像の輝度成分を所定サイズのブロック単位でフェッチし、フェッチされた輝度成分のブロックを垂直フィルタ41に出力する。
The DMA I /
垂直フィルタ41は、マスターI/F 20から入力されたMCパラメータのうち、コーデック情報がV1を表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表せば、DMA I/F 30から入力された輝度成分のブロックを構成する整数画素のうち何れか一つの垂直ラインに位置した整数画素の値から、この垂直ラインに位置した整数画素の間に位置した1/2画素または1/4画素の値を算出する。特に、垂直フィルタ41は、前記の垂直ラインに位置した整数画素の値を4個のタップに適用することにより、マスターI/F 20から入力されたMCパラメータのうち、前記ブロックの動きベクトルが指示する1/2画素または1/4画素の値を算出し、算出された1/2画素または1/4画素の値を第1水平フィルタ42に出力する。垂直フィルタ41は、4タップフィルタの係数値を調整することによって1/2画素または1/4画素の値を算出しうる。また、垂直フィルタ41は、前記ブロックの動きベクトルが整数画素を指示すれば、DMA I/F 30から入力された輝度成分のブロックを構成する整数画素の値をそのまま第1水平フィルタ42に出力する。
Of the MC parameters input from the master I /
図5に示された実施形態では、垂直フィルタ41及び第1水平フィルタ42として6タップフィルタが使われた。6タップフィルタは、6個のタップのうち2個のタップが使われずに、ハードウェア構造の変更なしに4タップフィルタとして使われるため、図6に示された実施形態では、垂直フィルタ41及び第1水平フィルタ42は、4タップフィルタとなりうる。
In the embodiment shown in FIG. 5, a 6-tap filter is used as the
第1水平フィルタ42は、マスターI/F 20から入力されたMCパラメータのうち、コーデック情報がV1を表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表せば、垂直フィルタ41を経由してDMA I/F 30から入力された輝度成分のブロックを構成する整数画素のうち何れか一つの水平ラインに位置した整数画素値から、この水平ラインに位置した整数画素の間に位置した1/2画素または1/4画素の値を算出する。特に、第1水平フィルタ42は、前記水平ラインに位置した整数画素値を4個のタップに適用することにより、マスターI/F 20から入力されたMCパラメータのうち、前記ブロックの動きベクトルが指示する1/2画素または1/4画素の値を算出し、算出された1/2画素または1/4画素の値をキュービックフィルタ45に出力する。また、第1水平フィルタ42は、前記ブロックの動きベクトルが整数画素を指示すれば、垂直フィルタ41を経由してDMA I/F 30から入力された輝度成分のブロックを構成する整数画素の値をそのまま第1メモリ50に出力する。また、第1水平フィルタ42は、垂直フィルタ41から入力された1/2画素または1/4画素の値をそのまま第1メモリ50に出力する。
Of the MC parameters input from the master I /
例えば、動きベクトルが指示する画素の位置が図2Cに示された黒点である場合ならば、第1水平フィルタ42は、P1、P2、P3及びP4位置の整数画素値を4個のタップに適用してP=(a*P1+b*P2+c*P3+d*P4+rc)>>sを計算することにより、図2Cに示された黒色点に該当する1/2画素または1/4画素の値を算出する。垂直フィルタ41の具体的な例は、示されていないが、水平フィルタリングが垂直フィルタリングに変わることを除いては、前記の通りである。また、図6を参照するに、DMA I/F 30、垂直フィルタ41、第2水平フィルタ43のそれぞれは、色差成分Cb、Crに対しても、前記輝度成分の動作シナリオと同一に動作する。
For example, if the position of the pixel indicated by the motion vector is the black dot shown in FIG. 2C, the first
VC1のリニアフィルタとして参照画像の輝度成分に対する動きを補償する過程は、二つの水平フィルタが同時に使われねばならない場合がないため、何れか一つの水平フィルタのみが使われればよい。特に、本実施形態では、第1水平フィルタ42及び第2水平フィルタ43のうち、第1水平フィルタ42を使用するとしたが、当業者ならば、第2水平フィルタ43を使用することもあるということが分かる。
In the process of compensating for the luminance component of the reference image as a VC1 linear filter, there is no case where two horizontal filters have to be used at the same time. Therefore, only one of the horizontal filters may be used. In particular, in the present embodiment, the first
図7は、図4に示された動き補償装置でのMPEG4及びVC1のキュービックフィルタの動作シナリオを示す図である。図7を参照するに、図4に示された動き補償装置は、次のような動作シナリオによってMPEG4及びVC1の輝度成分フィルタリングを行う。 FIG. 7 is a diagram showing an operation scenario of the cubic filter of MPEG4 and VC1 in the motion compensation apparatus shown in FIG. Referring to FIG. 7, the motion compensation apparatus shown in FIG. 4 performs luminance component filtering of MPEG4 and VC1 according to the following operation scenario.
DMA I/F 30は、マスターI/F 20から入力されたMCパラメータのうち、現在画像のブロックと参照画像の対応ブロックとの間の変位を表す動きベクトルを参照して、システムバスを経由して外部メモリから参照画像の色差成分Cbを所定サイズのブロック単位でフェッチし、フェッチされた輝度成分のブロックをキュービック整列部44に出力する。
The DMA I /
キュービック整列部44は、マスターI/F 20から入力されたMCパラメータのうち、コーデック情報がMPEG4またはVC1を表し、色情報が輝度成分を表し、フィルタ情報がキュービックフィルタを表せば、マスターI/F 20から入力された動きベクトルが指示する1/2画素または任意の位置の画素の値を生成するために要求されるキュービック位置に、DMA I/F 30から入力された輝度成分のブロックを構成する整数画素の値のうち4個を整列し、整列された4個の整数画素の値をキュービックフィルタ45に出力する。
If the codec information represents MPEG4 or VC1, the color information represents the luminance component, and the filter information represents the cubic filter among the MC parameters input from the master I /
キュービックフィルタ45は、マスターI/F 20から入力されたMCパラメータのうち、コーデック情報がMPEG4またはVC1を表し、色情報が輝度成分を表し、フィルタ情報がキュービックフィルタを表せば、図3に示されたところによって、キュービック整列部44によって整列された4個の整数画素の値から、この整列された画素の間に位置した1/2画素または任意の位置の画素の値を算出する。特に、キュービックフィルタ45は、前記キュービック位置の4個の画素の値を前記キュービック位置に対応する4個のタップに適用することにより、マスターI/F 20から入力されたMCパラメータのうち、前記ブロックの動きベクトルが指示する1/2画素または任意の位置の画素の値を算出し、算出された1/2画素または任意の位置の画素の値を第1メモリ50に出力する。
The
例えば、動きベクトルが指示する画素の位置が図2Dに示された黒点である場合ならば、キュービックフィルタ45は、P1、P2、P3及びP4位置の整数画素値を4個のタップに適用して、P=(P1+P2+1−rc)>>1、P=(P1+P3+1−rc)>>1、P=(P1+P2+P3+P4−rc)>>1を計算することにより、図2Dに示された黒色点に該当する画素の値を算出する。また、動きベクトルが指示する画素の位置が図2Eに示された4つの矢印の収斂点である場合ならば、キュービックフィルタ45は、P1、P2、P3及びP4位置の整数画素値を4個のタップに適用して、P=(a*P1+b*P2+c*P3+d*P4+rc)>>sを計算することにより、任意の位置の画素の値を算出する。
For example, if the pixel position indicated by the motion vector is the black dot shown in FIG. 2D, the
図7を参照するに、DMA I/F 30、キュービック整列部44、キュービックフィルタ45のそれぞれは、色差成分Cb、Crに対しても、前記輝度成分の動作シナリオと同一に動作する。
Referring to FIG. 7, each of the DMA I /
特に、本実施形態は、レジスターアレイ方式を採択している。第1水平フィルタ42または第2水平フィルタ43による水平フィルタリング及び垂直フィルタ41による垂直フィルタリングを何れも行う場合には、水平フィルタリングの結果値を垂直フィルタリングで使用するか、または垂直フィルタリングの結果値を水平フィルタリングで使用する。
In particular, this embodiment adopts a register array system. When performing both horizontal filtering by the first
図8は、図4に示された垂直フィルタ41の内部のレジスターアレイチェーンを示す図である。図8を参照するに、図4に示された垂直フィルタ41の内部のレジスターアレイチェーンは、H.264/AVCの場合に、何れか一つのブロックの何れか一つのラインを構成する画素の数が21個であることを考慮して、21個の8ビットレジスターで構成される。H.264/AVC以外の他のコーデックの場合には、何れか一つのブロックの何れか一つのラインを構成する画素の数が21個未満である。特に、H.264/AVCは、6タップフィルタを使用するため、このようなレジスターアレイチェーンが5個必要であり、相互直列に連結される。何れか一つのレジスターアレイチェーンの出力値は、これに連結された他のレジスターアレイチェーンの入力値となる。
FIG. 8 is a diagram showing a register array chain inside the
図4に示された垂直フィルタ41の内部のレジスターアレイチェーンは、DMA I/F 30からクロックごとに8ビットに該当する一画素の値を入力され、入力された画素値をR0レジスターに保存すると同時に、21個のレジスターのそれぞれに現在保存された画素値を右側に一つずつシフトし、これにより、R20レジスターに保存された画素値を送出する。
The register array chain inside the
特に、図4に示された垂直フィルタ41の内部のレジスターアレイチェーンは、H.264/AVC、VC1のそれぞれの動きベクトルが指示する画素の位置が整数画素である場合、クロックごとに8×1
MUXを通じてブロックサイズによって、R3レジスターに保存された画素値、R7レジスターに保存された画素値、R15レジスターに保存された画素値のうち何れか一つを出力する。例えば、図4に示された垂直フィルタ41の内部のレジスターアレイチェーンは、動き補償エンジン40によって4x4ブロック単位で動き補償がなされる場合には、R3レジスターに保存された画素値を出力し、8×8ブロック単位で動き補償がなされる場合には、R7レジスターに保存された画素値を出力し、16×16ブロック単位で動き補償がなされる場合には、R15レジスターに保存された画素値を出力する。
In particular, the register array chain inside the
Depending on the block size, one of the pixel value stored in the R3 register, the pixel value stored in the R7 register, and the pixel value stored in the R15 register is output through the MUX. For example, when the
もし、H.264/AVCの動きベクトルが指示する画素の位置が整数画素ではない場合、図4に示された垂直フィルタ41の内部のレジスターアレイチェーンは、ブロックサイズによってR8レジスターに保存された画素値、R12レジスターに保存された画素値、R20レジスターに保存された画素値のうち何れか一つを出力する。例えば、図4に示された垂直フィルタ41の内部のレジスターアレイチェーンは、動き補償エンジン40によって4×4ブロック単位で動き補償がなされる場合には、R8レジスターに保存された画素値を出力し、8×8ブロック単位で動き補償がなされる場合には、R12レジスターに保存された画素値を出力し、16×16ブロック単位で動き補償がなされる場合には、R20レジスターに保存された画素値を出力する。
If the position of the pixel indicated by the H.264 / AVC motion vector is not an integer pixel, the register array chain in the
もし、VC1コーデックで動きベクトルが指示する画素の位置が整数画素ではない場合、図4に示された垂直フィルタ41の内部のレジスターアレイチェーンは、ブロックサイズによって、R10レジスターの出力値、R18レジスターの出力値のうち何れか一つを出力する。例えば、図4に示された垂直フィルタ41の内部のレジスターアレイチェーンは、動き補償エンジン40によって8×8ブロック単位で動き補償がなされる場合には、R10レジスターに保存された画素値を出力し、16×16ブロック単位で動き補償がなされる場合には、R20レジスターに保存された画素値を出力する。VC1の場合には、4×4ブロックモードを支援しない。
If the position of the pixel indicated by the motion vector in the VC1 codec is not an integer pixel, the register array chain in the
図9は、図4に示された垂直フィルタ41の内部の6タップフィルタの構成図である。図9を参照するに、図4に示された垂直フィルタ41の内部の6タップフィルタは、図8に示されたレジスターアレイチェーンの出力値を入力される。すなわち、図4に示された垂直フィルタ41の内部の6タップフィルタは、図8に示されたレジスターアレイチェーンから6個のクロックの間に出力されて累積された6個の画素値、すなわち、レジスター1〜5に保存された5個の整数画素値及び現在入力された一つの画素値から、この画素の間に位置した1/2画素の値を算出する。一つのレジスターアレイチェーンからの出力値は、6タップフィルタの一つのレジスターに保存されるため、6タップフィルタの5個のレジスターに対応してレジスターアレイチェーンが5個が必要である。すなわち、図9に示された6タップフィルタは、式(1)に示された演算、例えば、b1=(E−5*F+20*G+20*H−5*I+J)を計算するために、9個のレジスター、4個の乗算器、5個の加算器を備えている。図9に示された最も左側の加算器の二つの入力端子と4個の乗算器のそれぞれの入力端子とが6個のタップに該当する。
FIG. 9 is a configuration diagram of a 6-tap filter inside the
図10は、図4に示された動き補償装置の内部でのデータ処理についてのタイミング図である。図10を参照するに、外部メモリに対して参照画像に該当する32ビット単位のデータを伝送することを要請した後に、このデータを受信するために待機するデータレーテンシ区間と外部メモリから32ビット単位のデータを受信するデータ伝達区間との間、DMA I/F 30、垂直フィルタ41、第1水平フィルタ42、第2水平フィルタ43、及びキュービックフィルタ45は、パイプライン形態でそのそれぞれの動作を行う。一般的に、データレーテンシ区間及びデータ伝達区間が非常に長いため、垂直フィルタ41、第1水平フィルタ42、第2水平フィルタ43、及びキュービックフィルタ45のフィルタリング動作がこの区間に隠されて行われる。これにより、動き補償をさらに高速で処理しうる。
FIG. 10 is a timing diagram for data processing inside the motion compensation apparatus shown in FIG. Referring to FIG. 10, after requesting the external memory to transmit 32-bit unit data corresponding to the reference image, a data latency period for waiting to receive this data and the 32-bit unit from the external memory. The DMA I /
図11は、本発明の望ましい一実施形態によるマルチコーデック支援動き補償方法のフローチャートである。図11を参照するに、本実施形態によるマルチコーデック支援動き補償方法は、図4に示されたマルチコーデック支援動き補償装置で時系列的に処理されるステップで構成される。したがって、以下省略された内容であっても、図11に示されたマルチコーデック支援動き補償装置について前述した内容は、本実施形態によるマルチコーデック支援動き補償方法にも適用される。 FIG. 11 is a flowchart illustrating a multi-codec assisted motion compensation method according to an exemplary embodiment of the present invention. Referring to FIG. 11, the multi-codec support motion compensation method according to the present embodiment includes steps processed in a time series by the multi-codec support motion compensation device shown in FIG. Therefore, even if the contents are omitted below, the contents described above for the multi-codec support motion compensation apparatus shown in FIG. 11 are also applied to the multi-codec support motion compensation method according to the present embodiment.
ステップ100で、マルチコーデック支援動き補償装置は、システムバスを経由して外部符号化装置から、参照画像と現在画像との差に該当するレジデューデータ及び動き補償のために必要なパラメータのMCパラメータをフェッチする。
In
ステップ200で、マルチコーデック支援動き補償装置は、ステップ100でフェッチされたレジデューデータを保存する。
In
ステップ300で、マルチコーデック支援動き補償装置は、ステップ100でフェッチされたMCパラメータのうち、現在画像のブロックと参照画像の対応ブロックとの間の変位を表す動きベクトルを参照して、システムバスを経由して外部メモリから参照画像と現在画像との間に共有される参照画像の32ビット単位のデータをフェッチする。
In
ステップ400で、マルチコーデック支援動き補償装置は、ステップ300でフェッチされた32ビット単位のデータに対して、8ビットアンパッキング及び動きベクトルによるパッディングを行う。
In
ステップ500で、マルチコーデック支援動き補償装置は、ステップ100でフェッチされたMCパラメータのうち、複数のコーデックのうち何れか一つを表すコーデック情報、複数の色成分のうち何れか一つを表す色情報、及び複数のフィルタのうち何れか一つを表すフィルタ情報によって、選択的にステップ400での処理結果に該当する参照画像の何れか一つのブロックの何れか一つの垂直ラインに位置した整数画素の値から、この垂直ラインに位置した整数画素の間に位置した1/2画素の値を算出する。
In
さらに詳細に説明すれば、ステップ500で、マルチコーデック支援動き補償装置は、コーデック情報がH.264/AVCを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表す場合、またはコーデック情報がVC1を表し、色情報が輝度成分または色差成分を表し、フィルタ情報がリニアフィルタを表す場合に、ステップ400での処理結果に該当する参照画像の何れか一つのブロックの何れか一つの垂直ラインに位置した整数画素の値から、この垂直ラインに位置した整数画素の間に位置した1/2画素の値を算出する。残りの場合については、前記のようなステップ500での垂直フィルタリングは、行われない。
More specifically, in
ステップ600で、マルチコーデック支援動き補償装置は、ステップ100でフェッチされたMCパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的にステップ400での処理結果に該当する参照画像の何れか一つのブロックの何れか一つの水平ラインに位置した整数画素の値から、この水平ラインに位置した整数画素の間に位置した1/2画素または1/4画素の値を算出する。
In
さらに詳細に説明すれば、ステップ600で、マルチコーデック支援動き補償装置は、コーデック情報がH.264/AVCを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表す場合、またはコーデック情報がVC1を表し、色情報が輝度成分または色差成分を表し、フィルタ情報がリニアフィルタを表す場合に、ステップ400での処理結果に該当する参照画像の何れか一つのブロックの何れか一つの垂直ラインに位置した整数画素の値から、この垂直ラインに位置した整数画素の間に位置した1/2画素または1/4画素の値を算出する。残りの場合については、前記のようなステップ600での垂直フィルタリングは、行われない。
More specifically, in
ステップ700で、マルチコーデック支援動き補償装置は、ステップ100でフェッチされたMCパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的にステップ600で処理される水平ラインでない他の水平ラインに位置した整数画素または1/2画素の値から、この水平ラインに位置した整数画素または1/2画素の間に位置した1/2画素の値を算出する。
In
さらに詳細に説明すると、ステップ700で、マルチコーデック支援動き補償装置は、コーデック情報がH.264/AVCを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表す場合に、ステップ600で処理される水平ラインでない他の水平ラインに位置した整数画素または1/2画素の値から、この水平ラインに位置した整数画素または1/2画素の間に位置した1/2画素の値を算出する。残りの場合については、前記のようなステップ700での垂直フィルタリングは、行われない。
More specifically, in
ステップ800で、マルチコーデック支援動き補償装置は、ステップ100でフェッチされたMCパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的に輝度成分のブロックの何れか一つのキュービックに位置した整数画素またはステップ600及びステップ700で算出された1/2画素の値から、このキュービックに位置した2個の画素の間に位置した1/4画素の値を算出する。
In
さらに詳細に説明すると、ステップ800で、マルチコーデック支援動き補償装置は、コーデック情報がH.264/AVCを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表す場合に、輝度成分のブロックの何れか一つのキュービックに位置した整数画素またはステップ600及びステップ700で算出された1/2画素の値から、このキュービックに位置した2個の画素の間に位置した1/4画素の値を算出する。残りの場合については、前記のようなステップ800でのキュービックフィルタリングは行われない。
More specifically, in
ステップ900で、マルチコーデック支援動き補償装置は、ステップ100でフェッチされたMCパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的に前記ブロックの動きベクトルが指示する1/2画素、1/4画素、または任意の位置の画素の値を生成するために要求されるキュービック位置に、ステップ400での処理結果に該当する整数画素の値を整列する。
In
さらに詳細に説明すると、ステップ900で、マルチコーデック支援動き補償装置は、コーデック情報がH.264/AVCを表し、色情報が色差成分を表し、フィルタ情報がキュービックフィルタを表す場合、コーデック情報がMPEG4を表し、色情報が輝度成分または色差成分を表し、フィルタ情報がキュービックフィルタを表す場合、またはコーデック情報がVC1を表し、色情報が輝度成分または色差成分を表し、フィルタ情報がキュービックフィルタを表す場合に、前記ブロックの動きベクトルが指示する1/2画素、1/4画素、または任意の位置の画素の値を生成するために要求されるキュービック位置に、ステップ400での処理結果に該当する整数画素の値を整列する。残りの場合については、前記のようなステップ900でのキュービック整列は行われない。
More specifically, in
ステップ1000で、マルチコーデック支援動き補償装置は、図3に示されたところによって、ステップ900で整列された4個の整数画素の値から、この整列された画素の間に位置した1/2画素、1/4画素、または任意の位置の画素の値を算出する。
In
ステップ1100で、マルチコーデック支援動き補償装置は、ステップ300からステップ1000までの過程が参照画像全体に対して完了されたか否かを確認し、その結果、完了されたならば、ステップ1200に進み、完了されていなければ、ステップ300に戻る。
In
ステップ1200で、マルチコーデック支援動き補償装置は、ステップ300からステップ1000までの過程によって生成された動き補償データを保存する。
In
ステップ1300で、マルチコーデック支援動き補償装置は、ステップ1200で保存された動き補償されたデータとステップ200で保存されたレジデューデータとを合算することによって現在画像を復元する。
In
一方、前述した本発明の実施形態は、コンピュータで実行できるプログラムで作成可能であり、コンピュータで読み取り可能な記録媒体を利用して、前記プログラムを動作させる汎用デジタルコンピュータで具現される。また、前述した本発明の実施形態で使われたデータの構造は、コンピュータで読み取り可能な記録媒体に色々な手段を通じて記録される。前記コンピュータで読み取り可能な記録媒体は、マグネチック保存媒体(例えば、ROM(リードオンリメモリ)、フロッピー(登録商標)ディスク、ハードディスクなど)、光学的判読媒体(例えば、CD−ROM、DVDなど)のような保存媒体を含む。 On the other hand, the embodiment of the present invention described above can be created by a program that can be executed by a computer, and is embodied by a general-purpose digital computer that operates the program using a computer-readable recording medium. Further, the data structure used in the above-described embodiment of the present invention is recorded through various means on a computer-readable recording medium. The computer-readable recording medium is a magnetic storage medium (for example, a ROM (Read Only Memory), a floppy (registered trademark) disk, a hard disk, etc.), or an optically readable medium (for example, a CD-ROM, DVD, etc.). Including such storage media.
以上、本発明についてその望ましい実施形態を中心に説明した。当業者は、本発明が本発明の本質的な特性から逸脱しない範囲で変形された形態で具現されるということが分かるであろう。したがって、開示された実施形態は、限定的な観点でなく、説明的な観点で考慮されねばならない。本発明の範囲は、前述した説明でなく、特許請求の範囲に現れており、それと同等な範囲内にある全ての差異点は、本発明に含まれていると解釈されねばならない。 In the above, this invention was demonstrated centering on the desirable embodiment. Those skilled in the art will appreciate that the present invention may be embodied in variations that do not depart from the essential characteristics of the invention. Accordingly, the disclosed embodiments should be considered in an illustrative, not a limiting sense. The scope of the present invention is shown not in the above description but in the claims, and all differences within the equivalent scope should be construed as being included in the present invention.
本発明は、動画を復号化するデバイス、例えば、デジタルTV、コンピュータ、携帯電話などに適用可能である。 The present invention can be applied to a device for decoding a moving image, such as a digital TV, a computer, a mobile phone, and the like.
10 スレーブI/F
20 マスターI/F
30 DMA I/F
31 DMAモジュール
32 FIFOモジュール
40 動き補償エンジン
41 垂直フィルタ
42 第1水平フィルタ
43 第2水平フィルタ
44 キュービック整列部
45 キュービックフィルタ
50 第1メモリ
60 第2メモリ
70 加算器
10 Slave I / F
20 Master I / F
30 DMA I / F
31
Claims (19)
(b)前記算出された画素値を含む動き補償データ、及び前記参照画像と前記現在画像との差を合算することによって前記現在画像を復元するステップと、を含むことを特徴とする動き補償方法。 (A) By using at least one method among a plurality of methods for interpolating pixels of a reference image corresponding to the current image by codec information representing any one of a plurality of codecs, Calculating a value of a pixel located between the pixels from the value;
(B) motion compensation data including the calculated pixel value, and restoring the current image by adding a difference between the reference image and the current image. .
(a1)前記コーデック情報によって、選択的に前記参照画像の何れか一ブロックの何れか一垂直ラインに位置した画素の値から、前記垂直ラインに位置した画素の間に位置した画素の値を算出するステップと、
(a2)前記コーデック情報によって、選択的に前記ブロックの何れか一水平ラインに位置した画素の値から、前記水平ラインに位置した画素の間に位置した画素の値を算出するステップと、
(a3)前記コーデック情報によって、選択的に前記ブロックの何れか一キュービックに位置した画素の値から、前記キュービックに位置した画素の間に位置した画素の値を算出するステップと、を含むことを特徴とする請求項1に記載の動き補償方法。 The step (a) includes:
(A1) Based on the codec information, a value of a pixel positioned between pixels positioned on the vertical line is calculated from a value of a pixel positioned on any one vertical line of any one block of the reference image. And steps to
(A2) calculating a value of a pixel positioned between pixels positioned on the horizontal line from a value of a pixel positioned selectively on any one horizontal line of the block according to the codec information;
(A3) calculating a value of a pixel located between the pixels located in the cubic from a value of a pixel located in any one of the blocks selectively according to the codec information. The motion compensation method according to claim 1, wherein:
前記(a2)ステップは、前記水平ラインに位置した画素の値を6個のタップに適用することにより、前記水平ラインに位置した画素の間に位置した画素の値を算出し、
前記(a3)ステップは、前記キュービックに位置した2個の画素の値を4個のタップのうち、2個のタップに適用することにより、前記キュービックに位置した画素の間に位置した画素の値を算出することを特徴とする請求項4に記載の動き補償方法。 The step (a1) calculates values of pixels positioned between pixels positioned on the vertical line by applying the values of pixels positioned on the vertical line to six taps.
The step (a2) calculates the values of pixels positioned between the pixels positioned on the horizontal line by applying the values of the pixels positioned on the horizontal line to six taps.
In the step (a3), the value of the pixel located between the pixels located in the cubic is obtained by applying the value of the two pixels located in the cubic to the two taps among the four taps. The motion compensation method according to claim 4, wherein the motion compensation method is calculated.
前記コーデック情報によって選択的に前記整列された画素の値から前記整列された画素の間に位置した画素の値を算出するステップと、をさらに含むことを特徴とする請求項2に記載の動き補償方法。 Aligning the pixel values to the cubic positions required to selectively generate pixel values indicated by the block motion vector according to the codec information;
The motion compensation of claim 2, further comprising: calculating values of pixels positioned between the aligned pixels from the values of the aligned pixels selectively according to the codec information. Method.
前記(a2)ステップは、前記水平ラインに位置した整数画素の値から前記水平ラインに位置した画素の間に位置した1/2画素の値を算出し、
前記(a3)ステップは、前記ブロックを構成する何れか一つの整数画素、前記(a)ステップで算出された1/2画素の値及び前記(b)ステップで算出された1/2画素の値から前記キュービックに位置した画素の間に位置した1/4画素の値を算出することを特徴とする請求項2に記載の動き補償方法。 The step (a1) calculates a value of a half pixel located between pixels located on the vertical line from a value of an integer pixel located on the vertical line,
The step (a2) calculates a value of a half pixel located between pixels located on the horizontal line from a value of an integer pixel located on the horizontal line,
The step (a3) includes any one integer pixel constituting the block, a value of 1/2 pixel calculated in the step (a), and a value of 1/2 pixel calculated in the step (b). The motion compensation method according to claim 2, further comprising: calculating a value of a ¼ pixel located between the pixels located in the cubic.
前記(a)ステップは、所定数のクロックの間に出力されて累積された画素の値から前記画素の間に位置した画素の値を算出することを特徴とする請求項1に記載の動き補償方法。 A step of selectively outputting a pixel value stored in a register at a predetermined position among a plurality of registers according to a position of a pixel indicated by each motion vector of the codec;
The motion compensation according to claim 1, wherein the step (a) calculates a value of a pixel located between the pixels from a value of the pixels output and accumulated during a predetermined number of clocks. Method.
前記算出された画素値を含む動き補償データと、前記参照画像と前記現在画像との差とを合算することによって前記現在画像を復元するステップと、を含むことを特徴とする動き補償方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体。 Based on codec information representing any one of a plurality of codecs, using at least one of a plurality of methods for interpolating a pixel of a reference image corresponding to a current image, the pixel value of the reference image Calculating a value of a pixel located between the pixels;
A motion compensation method comprising: calculating motion compensation data including the calculated pixel value; and restoring the current image by adding a difference between the reference image and the current image. A computer-readable recording medium on which a program to be executed on the computer is recorded.
前記算出された画素値を含む動き補償データと、前記参照画像と前記現在画像との差とを合算することによって前記現在画像を復元する加算器と、を備えることを特徴とする動き補償装置。 Based on codec information representing any one of a plurality of codecs, using at least one of a plurality of methods for interpolating a pixel of a reference image corresponding to a current image, the pixel value of the reference image A motion compensation engine that calculates the values of pixels located between the pixels;
A motion compensation apparatus comprising: motion compensation data including the calculated pixel value; and an adder that restores the current image by adding a difference between the reference image and the current image.
前記コーデック情報によって、選択的に前記参照画像の何れか一ブロックの何れか一つの垂直ラインに位置した画素の値から、前記垂直ラインに位置した画素の間に位置した画素の値を算出する垂直フィルタと、
前記コーデック情報によって、選択的に前記ブロックの何れか一つの水平ラインに位置した画素の値から、前記水平ラインに位置した画素の間に位置した画素の値を算出する水平フィルタと、
前記コーデック情報によって、選択的に前記ブロックの何れか一つのキュービックに位置した画素の値から、前記キュービックに位置した画素の間に位置した画素の値を算出するキュービックフィルタと、を備えることを特徴とする請求項18に記載の動き補償装置。 The motion compensation engine is:
Vertically calculating the value of pixels located between pixels located on the vertical line from the value of pixels located on any one vertical line of any one block of the reference image according to the codec information Filters,
A horizontal filter for calculating a value of a pixel located between pixels located on the horizontal line from a value of a pixel located on any one horizontal line of the block selectively according to the codec information;
A cubic filter that calculates a value of a pixel located between the pixels located in the cubic from a value of a pixel located in any one of the blocks selectively according to the codec information. The motion compensation apparatus according to claim 18.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2006-0110224 | 2006-11-08 | ||
KR20060110224 | 2006-11-08 | ||
KR10-2007-0108448 | 2007-10-26 | ||
KR1020070108448A KR101354659B1 (en) | 2006-11-08 | 2007-10-26 | Method and apparatus for motion compensation supporting multicodec |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008125078A true JP2008125078A (en) | 2008-05-29 |
JP5698428B2 JP5698428B2 (en) | 2015-04-08 |
Family
ID=39509310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007290086A Expired - Fee Related JP5698428B2 (en) | 2006-11-08 | 2007-11-07 | Motion compensation method, recording medium, and motion compensation device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5698428B2 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010143583A1 (en) * | 2009-06-09 | 2010-12-16 | ソニー株式会社 | Image processing device and method |
JP2011049619A (en) * | 2009-08-25 | 2011-03-10 | Fujitsu Ltd | Image processing circuit and image encoder |
JP2011061704A (en) * | 2009-09-14 | 2011-03-24 | Fujitsu Ltd | Image processing circuit and image encoding apparatus |
CN102014287A (en) * | 2010-12-23 | 2011-04-13 | 芯原微电子(北京)有限公司 | Operating method used for interpolating calculation of H.264 luminance |
JP2016116039A (en) * | 2014-12-12 | 2016-06-23 | Nttエレクトロニクス株式会社 | Decimal pixel generation method |
US10993194B2 (en) | 2014-05-08 | 2021-04-27 | Ntt Docomo, Inc. | User terminal, radio base station and radio communication method |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11266460A (en) * | 1994-03-24 | 1999-09-28 | Discovision Assoc | Video information processing circuit |
JP2007316844A (en) * | 2006-05-24 | 2007-12-06 | Nec Electronics Corp | Filter processor, multiplier and motion compensation processor |
-
2007
- 2007-11-07 JP JP2007290086A patent/JP5698428B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11266460A (en) * | 1994-03-24 | 1999-09-28 | Discovision Assoc | Video information processing circuit |
JP2007316844A (en) * | 2006-05-24 | 2007-12-06 | Nec Electronics Corp | Filter processor, multiplier and motion compensation processor |
Non-Patent Citations (1)
Title |
---|
JPN6013026039; SMTPTE STANDARD VC-1 Compressed Video Bitstream Format and Decoding Process , 20060224, p.159-164, SMPTE * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010143583A1 (en) * | 2009-06-09 | 2010-12-16 | ソニー株式会社 | Image processing device and method |
JP2011049619A (en) * | 2009-08-25 | 2011-03-10 | Fujitsu Ltd | Image processing circuit and image encoder |
JP2011061704A (en) * | 2009-09-14 | 2011-03-24 | Fujitsu Ltd | Image processing circuit and image encoding apparatus |
CN102014287A (en) * | 2010-12-23 | 2011-04-13 | 芯原微电子(北京)有限公司 | Operating method used for interpolating calculation of H.264 luminance |
US10993194B2 (en) | 2014-05-08 | 2021-04-27 | Ntt Docomo, Inc. | User terminal, radio base station and radio communication method |
JP2016116039A (en) * | 2014-12-12 | 2016-06-23 | Nttエレクトロニクス株式会社 | Decimal pixel generation method |
Also Published As
Publication number | Publication date |
---|---|
JP5698428B2 (en) | 2015-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101354659B1 (en) | Method and apparatus for motion compensation supporting multicodec | |
JP4987884B2 (en) | Video data processing | |
US7623575B2 (en) | Method and apparatus for sub-pixel motion compensation | |
JP5698428B2 (en) | Motion compensation method, recording medium, and motion compensation device | |
US8212823B2 (en) | Systems and methods for accelerating sub-pixel interpolation in video processing applications | |
JP4824703B2 (en) | Two-dimensional filter arithmetic apparatus and method | |
JP2008123479A (en) | Simd (single instruction multiple data) and memory array structure for the same | |
WO2019041264A1 (en) | Image processing apparatus and method, and related circuit | |
US7929612B2 (en) | Image interpolation apparatus and methods that apply quarter pel interpolation to selected half pel interpolation results | |
US8412003B2 (en) | Image processing methods, apparatus and computer program products using interdependent pixel interpolation operations | |
US8014618B2 (en) | High-speed motion compensation apparatus and method | |
US20050047502A1 (en) | Method and apparatus for the efficient representation of interpolated video frames for motion-compensated coding | |
JP4963220B2 (en) | Filter calculator and motion compensation device | |
JP2009015637A (en) | Computational unit and image filtering apparatus | |
US6728313B1 (en) | Method and apparatus for performing MPEG II dequantization and IDCT | |
CN102215404B (en) | Decoding method and system of videos inside embedded system | |
KR102664387B1 (en) | Apparatus and Method of processing image | |
JP2007249791A (en) | Image processor, image processing method and program | |
JP2001103482A (en) | Motion compensation device for digital video down- converter using orthogonal transformation | |
JP2007535869A (en) | Method and apparatus for vertically scaling pixel data | |
KR100656644B1 (en) | Apparatus for motion compensation in video codec | |
US9848188B1 (en) | Video coding transform systems and methods | |
JP2001086366A (en) | Digital filter and processing method thereof | |
JP2011249986A (en) | Motion compensation apparatus | |
JP2005348176A (en) | Image processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20101028 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111019 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120628 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120724 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121024 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130910 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140408 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140708 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150120 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150213 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5698428 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |