GB2456227A - Video motion compensation by transposing pixel blocks and selecting interpolated pixels from a vertical filter - Google Patents

Video motion compensation by transposing pixel blocks and selecting interpolated pixels from a vertical filter Download PDF

Info

Publication number
GB2456227A
GB2456227A GB0900255A GB0900255A GB2456227A GB 2456227 A GB2456227 A GB 2456227A GB 0900255 A GB0900255 A GB 0900255A GB 0900255 A GB0900255 A GB 0900255A GB 2456227 A GB2456227 A GB 2456227A
Authority
GB
United Kingdom
Prior art keywords
line
pixel
motion compensation
output
filtering
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.)
Withdrawn
Application number
GB0900255A
Other versions
GB0900255D0 (en
Inventor
Zhiyong John Gao
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of GB0900255D0 publication Critical patent/GB0900255D0/en
Publication of GB2456227A publication Critical patent/GB2456227A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • 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/513Processing of motion vectors
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/015High-definition television systems
    • H04N7/0152High-definition television systems using spatial or temporal subsampling
    • H04N7/0155High-definition television systems using spatial or temporal subsampling using pixel blocks
    • H04N7/0157High-definition television systems using spatial or temporal subsampling using pixel blocks with motion estimation, e.g. involving the use of motion vectors
    • H04N7/26117
    • H04N7/26441
    • H04N7/26739
    • H04N7/2676
    • H04N7/26861
    • H04N7/364

Abstract

A method for video motion compensation comprises: buffering input pixel lines; selectively transposing lines and columns of an input pixel block; vertically filtering a pixel line from the transposing step, producing an output line of interpolated pixel samples; selecting between interpolated and un-interpolated pixel samples, providing a vertically filtered output, and horizontally filtering an output from the vertical filtering or transposing steps to provide a horizontal filtering output, wherein the selecting steps depend on control signals related to incoming motion vectors. Also independently claimed is a motion compensation system comprising: an input buffer receiving pixel data lines and outputting these to a block transpose unit 52 for selectively transposing the lines and columns of an input block; vertical line filtering unit 58, producing an output line of interpolated pixel samples; first selector 60 to select between an un-interpolated and interpolated output pixel lines; and a second selector 62 to similarly provide pixel lines to a horizontal line filtering unit 66. Selectors 60, 62 receive control signals related to motion vectors in an incoming data stream. Parallel input buffers 54, 56 may be included. The system may apply to a range of standards including H264, VC-1, MPEG and AVS.

Description

* 2456227
VIDEO MOTION COMPENSATION
FIELD OF THE INVENTION
This invention relates to a method and apparatus for motion compensation in video data of the type which can provide multi-standard high definition video motion compensation using a reduced number of processors and memory.
BACKGROUND OF THE INVENTION
In recent years digital video compression and decompression have been widely used in digital video related devices including digital TV, mobile phone, laptop and desktop computers, UMPC (ultra mobile PC), PMP(personal media players), PDA and DVD. In order to compress video, a number of video coding standards have been established, including H.263 by ITU (International Telecommunications Union), MPEG-2 and MPEG-4 by MPEG (Moving Picture Expert Group). The two latest video coding standards, H.264 by ITU and VC-1 by ISO/IEC (International Organization for Standardization/International Electrotechnical Commission), have been adopted as the video coding standards for next generation of high definition DVD, and I-IDTV in US, Europe and Japan. In addition AVS video coding standard has been developed and recently adopted as domestic video standard in China.
A picture compression is typically carried out by splitting a picture into many non-overlapping macroblocks and encoding each of those macroblocks sequentially. These macroblocks are, for example, 16 pixels by 16 pixels. In general each digital video picture is compressor encoded by removing redundancy in the temporal direction and the spatial direction (temporal being
inter field and spatial being intra field).
The temporal redundancy reduction is performed by inter predictive encoding of the current picture in the forward and/or backward directions from a reference pictures. Motion estimation and predictive picture creation are performed on a macroblock basis from one or from several reference pictures. Macroblock compression is then carried out by coding the difference between a current macroblock and its predictive macroblock.
An inter-coded picture with only forward reference pictures is called a P-picture, and an inter-coded picture with both forward and backward reference pictures is called a B-picture. An inter-coded macroblock in a B-picture can refer to a random combination of forward and backward reference pictures. All reference pictures have to be encoded before they are used.
Spatial redundancy reduction is performed by intra field prediction without reference pictures. An intra predictive macroblock is created by interpolation of the pixels surrounding a current macroblock in a current picture. A picture with all intra-coded macroblocks is called an I-picture.
Motion compensation is used in the decoding of inter pictures including P-pictures and B-pictures. Motion compensation comprises creating predictive pixels with sub-pixel accuracy from reference frames based on the motion vectors in the streams and then adding the predictive pixels to the corresponding decoded pixel residuals to form decoded pixels.
Motion compensation is required in both a video encoder and a decoder as a video encoder has to include a local video decoder. As shown in Figure 1. This shows a video motion compensation system. A video input is received by a multiframe buffer 2. This is capable of storing as many frames of data as are required by the video motion compensation system. Motion estimation takes place in a motion estimation unit 4. This compares pixels in macroblocks to determine the best appropriate motion vectors to be used for each macroblock. A motion compensation unit 6 is then used to determine predictive pixel values using the motion vectors. A subtractor 8 then provides a difference value between each predictive pixel and an actual pixel value at the same location as the predictive pixel by subtracting the predictive pixel from the actual pixel value. The actual pixel value is retrieved from the multiframe buffer 2. A motion vector encoding unit 10 and a pixel residual
I
(difference) encoding unit 12 then encodes the motion vectors and pixel differences for each pixel and combines then in a single bitstream. The pixel residual local decoding unit decodes encoded pixel residuals locally and then the motion compensation units creates the predictive pixels and adds them to the decoded residuals to form decoded pixels. Finally the deblocking unit performs smooth filtering for each of 4x4 block edges in a current macroblock and then de-blocked pixels are sent back to multi-frame buffer 2 as the reference frames of the future inter frame encoding.
Figure 2 shows a decoder for decoding data encoded by the system of Figure 1. A motion vector decoding unit 20 and a pixel residual decoding unit 22 decode motion vectors and pixel residual information from an incoming bitstream. Previously decoded reference pictures (not shown) are also stored in a multi-frame buffer 24. The motion vectors and the reference picture data are then combined in a motion compensation unit 26 to derive a motion compensated version of each macroblock in turn. The result is combined with pixel residual data in an adder 28 to provide a better estimate of the current block. The result is sent to the multi-frame buffer 24 via a deblocker 30 to form a final decoded picture for playback and future reference from the multi-frame buffer 24.
In current international video coding standards, the biggest motion vector coverage is for a whole 1 6x 16 macroblock and the smallest coverage is for a 4x4 block within a macroblock. When encoding high definition video, only the H.264 P-picture has a motion vector coverage area smaller than 8x8.
The most complex motion compensation is in B-pictures as inter field prediction of each motion vector in a B-picture needs to be done up to twice, once from a forward reference picture and once from backward reference pictures.
The motion vectors in various video compression standards cover different block sizes. For example, MPEG-2 uses 16x16 and 16x8, VG-1, MPEG-4 and AVS use 16x16, 16x8 and 8x8, and H.264 uses 16x16, 16x8, 8x16, 8x8, 4x5, 8x4 and 4*4. Also, the smallest fractional pixel position in each of the video coding standards is different. For example, MPEG-2 is 1/2W pixel resolution, VC-1 is 14-pixel and H.264 chroma is 118-pixel. Finally, different interpolation methods are used in each of the standards to obtain a predictive sample in a fractional pixel position from pixels in integer positions.
In MPEG-2 a bilinear filter is used to get samples in Yz-pixel positions.
In VC-1 a one or two dimensional 4-tap FIR (Finite Impulse Response filter) is used to get the fractional samples in both 114-pixel and 14-pixel positions. As shown in Figure 3, in H.264 a one or two dimensional 6-tap FIR is used to get the samples in,4-pixel positions (marked in dark grey), and as shown in Figure 4 its 1h-pixel samples (marked in grey) are average of 2 nearest samples with at least one of those two samples being in �-pixel position.
While two dimensional filtering is needed for sub-pixel sample interpolation, different coding standards have different filtering processing order. For example, in VC-1 vertical filtering needs to be done first followed by horizontal filtering, whereas in MPEG-4 ASP (Advanced Simple Profile) horizontal filtering has to be done first. Furthermore in H.264 either horizontal or vertical filtering can go first.
It is common in high definition video encoding/decoding that multiple engines are used to process more than one motion vector in parallel to meet the high speed demand of these systems. Also multi-standard video motion compensation requires a motion compensation engine to be highly programmable. Therefore there is a demand for a system which can efficiently perform sub-pixel motion compensation with a relatively simple implementation architecture.
Conventional motion compensation has two disadvantages. Firstly, multiple programmable interpolation engines dramatically increase the complexity of control with data flowing in the pipeline and SoC (system on chip) areas. Secondly, as the biggest motion vector covers a 16x16 block and the basic coding unit in video compression is a macroblock, the motion compensation needs to deal with a whole 1 6x 16 macroblock so that its
I
reference pixel fetch, input buffer, intermediate buffers and output buffer need to be able to store related data for a whole 16x16 macroblock.
SUMMARY OF THE INVENTION
In accordance with one aspect of the present invention there is provided a video motion compensation system comprising: an input buffer for providing output lines of pixels; a first block transpose unit coupled to the input buffer for selectively transposing the lines and columns of an input block of pixels; a vertical line filtering unit coupled to the first block transpose unit for producing an output line of interpolated pixel samples; a first selector with inputs coupled to the output of the vertical line filtering unit and to the input block transpose unit to select between an uninterpolated output line of pixels and an interpolated output line of pixel samples; a second selector with inputs coupled to the outputs of the first block transpose unit and the vertical line filtering unit to select between lines of pixels from the first input block transpose unit and lines of pixels from the vertical line filtering unit to be input to a horizontal line filtering unit; a horizontal line filtering unit coupled to the selector for producing an output line of interpolated samples; and wherein the first and second selectors receive control signals related to motion vectors in an incoming stream of data to cause each selector to select which input to connect to its output.
Further aspects of the invention are defined in the appended claims to which reference should now be made.
Brief Description of the Drawings
A preferred embodiment of the invention will now be described in detail by way of example with reference to the accompanying drawings in which: Figure 1 shows a motion compensation video encoder as described above; Figure 2 shows a motion compensation video decoder as described above; Figure 3 and 4 show schematically the outputs of a 6-tap FIR filter for 1/2 pixel and 14 pixel positions in H.264; Figure 5 shows a multi standard motion compensation system embodying the invention; Figure 6 shows a 2-dimensional sub-pixel line interpolation engine which may be used in the system of figure 5; Figure 7 shows an output from a H.264 motion compensation system for 8 1/2 pixels samples: Figure 8, 9 and 10 show different embodiments of the invention in a sub-pixel interpolation engine configured to deal with different H.264 1/4 pixel interpolation.
DETAILED DESCRIPTION OF PREFERENED EMBODIMENTS
In order to implement motion compensation, motion vector related control information is required and it comes from the motion vector decoding unit 20 in Figure 2. The information includes the size of each motion vector within a 1 6x1 6 macroblock and specifies the block size that the motion vector covers, the reference index of each motion vector, the reference picture number corresponding to each motion vector, horizontal and vertical component values of each motion vector with up to 1%-pixel accuracy, the location of the reference pixels in the reference picture and whether sub-pixel interpolation is needed. When a motion vector has fractional horizontal or vertical component value, its motion compensation requires horizontal or vertical interpolation. When a motion vector has fractional horizontal and vertical component values, its motion compensation requires both horizontal and vertical interpolations. For different fractional motion vector component values, the motion compensation unit implements different sub-pixel interpolation processes as defined in different video compression standards.
In figure 5 there is shown a multi-standard motion compensation pipeline. This comprises an input buffer 40, coupled to a sub-pixel line interpolation engine 42. The output of this is connected to a line weighted averaging unit 44 and then to a block transpose unit 46 before being provided to an output block buffer 48. There is a feedback loop from the output block buffer to the line weighted averaging unit block in case the output needs to be weighted averaged with a later input block.
A detailed block diagram of the sub-pixel interpolation engine is given in figure 6. This has an input buffer 50 and an input block transpose unit 52.
The input block transpose unit can transpose rows of an input block of pixels to columns and vice versa, or can supply rows and columns of pixels un-transposed Connected to the input block transpose unit 52 are first and second vertical filtering buffers 54 and 56. These are used to store the same pixels in each filtering buffer and may output different lines of pixels for subsequent vertical interpolation in a vertical line interpolation unit 58 to which they are both coupled.
First and second selector units 60 and 62 are connected to the output of the vertical line interpolation unit. Each one receives control signals from an external motion vector decoder 20 that decodes all motion vectors from an incoming bitstream to select one of its two inputs as its output.
The motion vector decoder 20 determines the control signals to apply to a selector unit 60 and 62 from the motion vector. As stated above, this includes the size of each motion vector and the block it covers, a reference index for each motion vector specifying the reference picture number to which it applies, horizontal and vertical component values for each motion vector that specify the location of the reference pixels and the reference picture and determine whether or not sub pixel interpolation is needed. When a motion vector has fractional horizontal or vertical component values, its motion compensation requires horizontal or vertical interpolation and the control signals are applied to units 60 and 62 accordingly. When it has both fractional horizontal and vertical component values both horizontal and vertical interpolations are required as appropriate control signals are applied to selecting 60 and 62. The precise arrangement of interpolators which arises from the application of these control signals will be apparent from the examples of different interpolation schemes which are described below in this
specification.
As horizontal/vertical sub-pixel filtering is needed only if the motion vector has a fractional horizontal/vertical component, the motion vector decoder generates the different selection signals based on the fractional values of two components. The selector unit 60 is used to select whether the vertical line interpolation 58 is needed or not. The selector unit 62 is used to select the input data of a horizontal interpolation unit 66 from two possible sources, input block transpose unit 52 and vertical interpolation unit 58. Using the selector the engine can be configured to operate in horizontal, vertical, and a number of different 2-dimensional interpolation modes. The horizontal line interpolation unit can accommodate a number of pixels in corresponding vertical positions on a horizontal line and can interpolate between them. The result is provided to a horizontal line output buffer 68.
Figure 8, Figure 9 and Figure 10 are examples of the sub-pixel interpolation pipeline configured in different modes to deal with different H.264 �-pixel interpolations.
The apparatus in this example can be configured to one of two basic motion compensation modes: 8x8 or 4x4 motion vector mode although others may be used with appropriate modification. A motion vector that covers a block of more than 8x8 pixels, is processed sequentially as two or four 8x8 motion vectors with the same value. Similarly an 8x4 or 4x8 motion vector is processed as two 4x4 motion vectors sequentially.
The vertical line interpolation filter 58 and horizontal line interpolation filter 66 can be configured to either run in parallel or in serial where vertical line filtering is performed first followed by the horizontal line filtering. The parallel mode can be used to create up to two lines of sub-pixel samples, one only needs horizontal filtering and the other only needs vertical filtering. With an input transpose unit the serial mode can be used to create up to two lines of sub-pixel samples, one needs 2-dimensional filtering and the other only needs I -dimentional filtering.
From Figure 4, depending on different positions the H.264 14-pixel interpolation may need up to two 1/2-pixel samples, one with 2-dimensional filtering and another one with only 1-dimensional filtering. If the line of samples with 1-dimensional filtering can be created based on the middle result of 2-dimensional filtering, two lines of required 1/2-pixel samples can be created by only using the 2-dimensional filtering once. As a result the processing time of 14-pixel interpolation will be halved.
The apparatus gives three benefits. Firstly, it reduces the sizes of the processing related buffers from the 16x16 macroblock level to an 8x8 block level as the pipeline works on the basis of an 8x8 or 4x4 motion vector.
Secondly, it removes the requirement for simultaneously processing multiple motion vectors as it only processes each one of an 8x8 or 4x4 motion vector sequentially. Thirdly, either the horizontal line interpolation filter or the vertical line interpolation filter is in fact a simple pixel line filter that only consists of a line of MAC (Multiplier-Accumulators) with programmable tap values, which outputs a line of interpolated sub-pixel samples each time.
There are a number of reasons why the line processor can go fast, in particular fast enough for most complicated H.264 sub-pixel sample interpolation in HD video compression and decompression. Firstly, with the use of an input block transpose unit the filtering pipeline can be configured so
I
that any two lines of samples in 1/2-pixel positions required by a line of H.264 1h-pixel samples can be derived concurrently by only using the line interpolation pipeline once. One line of /2-pixel samples with 1-dimensional filtering can be derived from vertical line interpolation unit 58 while another line of,4-pixel samples with horizontal filtering only or 2-dimensional filtering can be derived from horizontal line interpolation unit 66 because the line of 1/2..
pixel samples with 2-dimensional filtering can share the vertical dimensional filtering result with the line of Y2-pixel samples with vertical filtering only.
As a result, any single line of 8 or 4 sub-pixel samples within an 8x8 or 4x4 motion vector in MPEG-2, VC-1 and H.264 can also be interpolated by using the line interpolation pipeline once.
Secondly, either the vertical line interpolation filter or the horizontal line interpolation filter can be configured so that any FIR interpolation with evenly symmetric taps can be implemented by half of its taps. For vertical line interpolation, the two input buffer units 54 and 56 can send two lines of pixels with the same taps. A line of adders inside the vertical interpolation unit adds two pixels in the same horizontal position together first and then multiplies by the tap values. For horizontal interpolation, there are two groups of internal line shift buffers and by a line of adders to add two different pixels in the same line together and then multiply the tap values.
With those above two advantages, H.264 1/2-pixel interpolation processing time is halved and the most complicated ft 264 14-pixel interpolation time is only one-fourth of the time take using a conventional approach.
Thirdly there is no time delay between two motion vectors being processed except for a line delay which is needed in H.264, while both line filters are required sequentially by a first motion vector and are then required concurrently by a second motion vector, because the horizontal line filter is one line behind the vertical line interpolation filter in sequential operation mode.
The input block transpose unit plays two roles. Firstly, it is used to transpose an input pixel block so that two different filtering orders, horizontal first and vertical first, can be realized without changing the internal filtering pipeline order. More importantly, the transpose unit also is used in H.264 14 pel interpolation on the basis of an 8x8 or 4x4 motion vector to obtain two 1/3..
pixel pixel lines with only a single pipeline flow.
Furthermore, the line averaging unit 44 in figure 5 can be configured to give weighted averaging predictive blocks of forward and backward predictive blocks in B-picture, or to get a line of 8 or 4 samples in 1%-pixel positions in the H.264 standard.
In the following examples, different H.264 1h-pixel interpolation processes which can be interpolated using the system of figures 5 and 6 are shown as they are the most complicated cases in multi-standard motion compensation.
According to Figure 3, there are 3 different situations where we need to obtain samples in 1,4-pixel positions. For a 1h-pixel sample b which is only horizontally in a sub-pixel position, a 6-tap horizontal FIR is used with the nearest 6 pixels as follows, b, =I_5*J+20*D+20*P_5*Q+R b=(b1 �16)/32 For the %-pixel sample h which is only vertically in a sub-pixel position, a 6-tap vertical FIR is used with the nearest 6 pixels as follows, h, =A_5*B+20*C+20*D_5*E+F h=(h1 +16)/32 For the 1/2-pixel sample J which is horizontally and vertically in a Va-pixel position, a 2-dimentional 6-tap FIR with either horizontal filtering first or vertical filtering first, j=jj1_5*jj1+20*h1+2O*pp1_5*qq1+rr1 or j1 =aa1 _5*bb1 +20*cc1 +20*b1 _5*ee1 �ff1 j=(j1 �512)/1024 Figure 7 shows how a line of 8 sub-pixel samples in position j, is derived by a 2-dimensional filtering pipeline. The 13x6 input pixel block is input to a vertical line filter 58 to get a line of 13 samples in vertical Va-pixel positions, the line of samples then passes through the horizontal line filter 66 to give a final line of 8 samples both horizontally and vertically in Y2-pixel positions.
In Figure 4, there are 3 different situations for obtaining the samples in 1%-pixel positions. The �-pixel samples a and c are only horizontally in sub-pixel positions, so they are derived from a nearest pixel and a V2-pixel sample b. Therefore they require 6-tap horizontal filtering only.
a = (A � b +1) / 2 c = (C + b + 1)/2 The �-pixel samples d and n are only vertically in a sub-pixel position, so they are derived from a nearest pixel and a Va-pixel sample h. Therefore they require 6-tap vertical filtering only.
d = (A + h +1)/2 n = (B + h +1) / 2 The samples e, g, p and r are both horizontally and vertically in 1A-pixel positions: they are derived from the two nearest �-pixel samples, one needs 6-tap horizontal filtering only and another needs 6-tap vertical filtering only as follows
I
e=(b+h+1)/2 g =(b+m+1)/2 p =(s+h+1)/2 r = (s + m +1) / 2 The samples f, i, k and q have one dimension in h-pixel positions and another dimension in a �-pixel position: They are derived from the two nearest 1/2-pixel samples, one is j that needs 2 dimensional 6-tap filtering and another needs either horizontal or vertical 6-tap filtering only as follows f = (j + b �1) / 2 i=(j+h+1)/2 k =(j+m+1)/2 q =(j+s+1)/2 The most complex case is to obtain 14-pixel sample f, i, k and q as it requires two /2-pixel samples including sample j. To get each of them, a different filtering order is needed to get j so that another �-pixel can be derived from a first vertical filtering. The input block transpose unit 52 is used to obtain the correct j filtering order. For example, for sample f the filtering order is horizontal first as 1/pixel sample b also is needed, and for sample i the filtering order is vertical first as a �-pixel sample h is also needed.
Figure 8 shows how a line of 8 sub-pixel samples in position d or n is derived in the line filtering engine. This is an example of the configurable sub-pixel interpolation system of Figure 6 in which the selector 0 60 selects the vertical filtering buffer 54 and the selector 1 62 selects input block transpose unit 52. In this case only a �-pixel sample with 1-diemensional filtering and a pixel in integer position are needed to get a final 1%-pixel sample. To change vertical filtering to horizontal filtering, the 8x13 input pixel block is transposed to a 1 3x8 block and input to the horizontal line interpolation filter line by line.
Also an 8x8 pixel block in position A or B is transposed and sent to vertical buffer for the final line averaging processing.
In Figure 8, the lines from input block buffer 50 are passed through the input block transposing unit 52 to perform a 8 x 8 block transpose first with lines being provided to vertical filtering buffer 54 before they are directly sent to vertical filtering line buffer 58 without vertical filtering. At the same time, input block transpose unit 52 transposes an 8 x 13 block and provides it line by line to horizontal line interpolation filter 66 and then to the horizontal filtering line buffer 68 before also providing this to the 8 pixel averaging unit 44. Pixels are then reconfigured to the correct positions using the block transpose and buffering unit 46.
Figure 9 shows how a line of 8 sub-pixel samples in position e, g, p or r is derived in the filtering engine. It is an example of the configurable sub-pixel interpolation system of Figure 6 in which the both selector 0 60 and select I 62 select the output of vertical interpolation filter 58. In this case, two 114-pixel samples with only 1-dimensional filtering are needed to get a final �-pixel sample. The engine is configured for vertical and horizontal parallel filtering mode without an input block being transposed so that two required lines of Va-pixel samples can be derived concurrently. Of the 13x13 input pixel block required by an 8x8 sub-pixel motion vector, an 8x6 block is input to the vertical line interpolation filter to get a line of 8 samples in vertically Va-pixel positions. Meanwhile a line of 13 pixels is input to the horizontal line filter to get 8 samples in horizontal 1/a-pixel positions. Then a line of 8 14-pixel samples is derived from the line averaging unit. Line by line, finally an 8x8 sub-pixel sample block is derived from line averaging unit.
Pixels from the input block buffer 50 are passed straight through the block transpose unit 52 to vertical filtering buffer 54 and vertical filtering buffer 56. Data from these two filtering buffers passes to vertical line interpolation filter 58 and then to vertical filtering line buffer 64. At the same time data passes straight through to the horizontal line interpolation filter 66 and then to the horizontal filtering line buffer 68. The vertical filtering line buffer 64 and the horizontal filtering line buffer 68 provide the inputs to a pixel averaging unit 44 whose output is provided to a block transpose and buffering unit 46 for reconfiguration to the correct positions.
Figure 10 shows how a line of 8 sub-pixel samples in position f, i, k or q is derived in the filtering engine. It is an example of the configurable sub-pixel interpolation system of Figure 6 in which both selector 060 and selector 1 62 select the output of vertical interpolation filter 58. In this case, two Y2- pixel samples are needed to get a final 1A-pixel sample, one with only 1-dimensional filtering and another with 2-dimensional filtering. The engine is configured for vertical and horizontal sequentially filtering mode with input block transpose so that 2 required lines of 34-pixel samples can be derived concurrently. For example, the 1h-pixel sample line in position f needs to have a line of samples in 1h-pixel position j and a line of samples in 1/2-pixel position b. In order to ensure the vertical filter outputs a line of samples in b and then horizontal filter outputs a line of samples in j, the horizontal filtering has to be done first so that the 1 3x 13 input block has to be transposed as b only needs horizontal filtering. For the 14-pixel sample line in position I, input block transpose is not needed as it requires a line of 34-pixel samples in h and a line of 34-pixel samples in j, so vertical filtering has to be done first.
Pixels from input block buffer 50 are transposed in a 13 x 13 block in input block transpose unit 52 are fed to vertical filtering buffers 54 and 56.
These both provide inputs to vertical line interpolation filter 58 whose output is provided to horizontal line interpolation filter 56 as well as to vertical filtering line buffer 64. The output of the horizontal line interpolation filter 66 is provided to the horizontal filtering line buffer 68.
The outputs of the vertical filtering line buffer 64 and horizontal filtering line buffer 68 are provided to 8 pixel averaging unit 44 which provides output pixels to the block transpose and buffering unit 46 for reconfiguration to the correct pixel positions.
S
For H.264 luma, if 1-tap processing can be done in one cycle the apparatus can process an 8x8 motion vector within 24 cycles, and a 4x4 motion vector within 12 cycles as its 6-tap is halved to 3-taps.
For VC-1 luma, if 1-tap processing can be done in one cycle the apparatus can process an 8x8 motion vector within 16 cycles as its 1A-pixel interpolation requires 4-tap symmetric FIR, and process an 8x8 motion vector within 32 cycles as its 14-pixel interpolation requires 4-tap asymmetric FIR.
The system is operable to encode video data for subsequent transmission by using it as a motion compensation unit in the arrangement of figure 1. It may also be used as the motion compensation unit in a decoder of the type shown in figure 2 which may be incorporated in a receiver. Both encoder and decoder may therefore have their performance improved.
Although embodiments of the invention have been descnbed with reference to particular compression standards for video data, the system may be modified for use with other standards and block sizes in a manner, which will be apparent to those skilled in the art.

Claims (16)

1. A video motion compensation system comprising: an input buffer for providing output lines of pixels; a first block transpose unit coupled to the input buffer for selectively transposing the lines and columns of an input block of pixels; a vertical line filtering unit coupled to the first block transpose unit for producing an output line of interpolated pixel samples; a first selector with inputs coupled to the output of the vertical line filtering unit and to the output of the input block transpose unit to select between an uninterpolated output line of pixels and an interpolated output line of pixel samples; a second selector with inputs coupled to the outputs of the first block transpose unit and the vertical line filtering unit to select between lines of pixels from the first input block transpose unit and lines of pixels from the vertical line filtering unit to be input to a horizontal line filtering unit; a horizontal line filtering unit coupled to the selector for producing an output line of interpolated samples; and wherein the first and second selectors receive control signals related to motion vectors in an incoming stream of data to cause each selector to select which input to connect to its output.
2. A video motion compensation system according to claim I for use in a video compression system.
3. A video motion compensation system according to claim I or 2 including a pair of parallel input buffers coupled between the input block transpose unit and the vertical line filtering unit.
I
4. A video motion compensation system according to any preceding claim wherein the vertical line interpolation filter and the horizontal line interpolation filter operate concurrently.
5. A video motion compensation system according to any preceding claim in which the outputs of the first selector and the horizontal line interpolation filter are coupled to a line weighted averaging unit.
6. A video motion compensation system according to claim 5 in which the output of the line weighted averaging unit is coupled to an output block transpose unit for selectively transposing an output line of pixels.
7. A video motion compensation system according to any preceding claim which derives output pixels to subpixel accuracy.
8. A video motion compensation system according to any preceding claim for use with the H264 coding standard.
9. A video motion compensation system according to any preceding claim for use with the VC-1 coding standard.
10. A video motion compensation system according to any preceding claim for use with the MPEG coding standard.
11. A video motion compensation system according to any preceding claim for use with the AVS coding standard
12. A video motion compensation system according to any preceding claim wherein the local decoding unit derives control signals from the size of a motion vector and the block size that it covers.
13. A video motion compensation system according to any preceding claim in which the local decoding unit derives control signals from a reference index for each motion vector.
14. A video motion compensation system according to any preceding claim in which the local decoding unit derives control signals from horizontal and vertical components of each motion vector.
I
15. A video motion compensation system substantially as herein described with reference to the drawings.
16. A method for video motion compensation comprising the steps of buffering input lines of pixels; selectively transposing lines and columns of an input block of pixels; vertically line filtering a line of pixels provided by the transposing step to produce an output line of interpolated pixel samples; selecting between interpolated and un-interpolated pixel samples to provide a vertically filtered output; horizontally filtering an output from the vertical filtering step or from the transposing step to provide a horizontal filtering output; and wherein the selecting steps are dependent upon control signals related to motion vectors in an incoming stream of data.
GB0900255A 2008-01-08 2009-01-08 Video motion compensation by transposing pixel blocks and selecting interpolated pixels from a vertical filter Withdrawn GB2456227A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GBGB0800277.6A GB0800277D0 (en) 2008-01-08 2008-01-08 Video motion compensation

Publications (2)

Publication Number Publication Date
GB0900255D0 GB0900255D0 (en) 2009-02-11
GB2456227A true GB2456227A (en) 2009-07-15

Family

ID=39111260

Family Applications (2)

Application Number Title Priority Date Filing Date
GBGB0800277.6A Ceased GB0800277D0 (en) 2008-01-08 2008-01-08 Video motion compensation
GB0900255A Withdrawn GB2456227A (en) 2008-01-08 2009-01-08 Video motion compensation by transposing pixel blocks and selecting interpolated pixels from a vertical filter

Family Applications Before (1)

Application Number Title Priority Date Filing Date
GBGB0800277.6A Ceased GB0800277D0 (en) 2008-01-08 2008-01-08 Video motion compensation

Country Status (3)

Country Link
US (1) US20090180541A1 (en)
GB (2) GB0800277D0 (en)
WO (1) WO2009087380A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013173191A1 (en) * 2012-05-14 2013-11-21 Qualcomm Incorporated Unified fractional search and motion compensation architecture across multiple video standards

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130094779A1 (en) * 2011-10-04 2013-04-18 Texas Instruments Incorporated Method and Apparatus for Prediction Unit Size Dependent Motion Compensation Filtering Order
KR20130082304A (en) * 2012-01-11 2013-07-19 한국전자통신연구원 Fine motion estimation device for high resolution
US9792671B2 (en) * 2015-12-22 2017-10-17 Intel Corporation Code filters for coded light depth acquisition in depth images
CN106507118B (en) * 2016-11-28 2019-10-11 浪潮集团有限公司 A kind of bimodulus brightness interpolating filter structure and method
CN108322758A (en) * 2018-01-12 2018-07-24 深圳市德赛微电子技术有限公司 Motion compensation structure in multimode Video Decoder

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6504872B1 (en) * 2000-07-28 2003-01-07 Zenith Electronics Corporation Down-conversion decoder for interlaced video
EP1359763A2 (en) * 2002-04-10 2003-11-05 Microsoft Corporation Approximate bicubic filter
US20060291743A1 (en) * 2005-06-24 2006-12-28 Suketu Partiwala Configurable motion compensation unit

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5223409A (en) 1988-09-02 1993-06-29 Protein Engineering Corp. Directed evolution of novel binding proteins
DE68927933T2 (en) 1988-09-02 1997-08-14 Dyax Corp PRODUCTION AND SELECTION OF RECOMBINANT PROTEINS WITH DIFFERENT BINDING POINTS
GB8823869D0 (en) 1988-10-12 1988-11-16 Medical Res Council Production of antibodies
US5530101A (en) 1988-12-28 1996-06-25 Protein Design Labs, Inc. Humanized immunoglobulins
GB8928874D0 (en) 1989-12-21 1990-02-28 Celltech Ltd Humanised antibodies
AU7247191A (en) 1990-01-11 1991-08-05 Molecular Affinities Corporation Production of antibodies using gene libraries
US5780225A (en) 1990-01-12 1998-07-14 Stratagene Method for generating libaries of antibody genes comprising amplification of diverse antibody DNAs and methods for using these libraries for the production of diverse antigen combining molecules
EP1690935A3 (en) 1990-01-12 2008-07-30 Abgenix, Inc. Generation of xenogeneic antibodies
US5427908A (en) 1990-05-01 1995-06-27 Affymax Technologies N.V. Recombinant library screening methods
GB9015198D0 (en) 1990-07-10 1990-08-29 Brien Caroline J O Binding substance
CA2090126C (en) 1990-08-02 2002-10-22 John W. Schrader Methods for the production of proteins with a desired function
US5633425A (en) 1990-08-29 1997-05-27 Genpharm International, Inc. Transgenic non-human animals capable of producing heterologous antibodies
US5545806A (en) 1990-08-29 1996-08-13 Genpharm International, Inc. Ransgenic non-human animals for producing heterologous antibodies
US5770429A (en) 1990-08-29 1998-06-23 Genpharm International, Inc. Transgenic non-human animals capable of producing heterologous antibodies
US5625126A (en) 1990-08-29 1997-04-29 Genpharm International, Inc. Transgenic non-human animals for producing heterologous antibodies
US5661016A (en) 1990-08-29 1997-08-26 Genpharm International Inc. Transgenic non-human animals capable of producing heterologous antibodies of various isotypes
ES2246502T3 (en) 1990-08-29 2006-02-16 Genpharm International, Inc. TRANSGENIC NON-HUMAN ANIMALS ABLE TO PRODUCE HETEROLOGICAL ANTIBODIES.
US5698426A (en) 1990-09-28 1997-12-16 Ixsys, Incorporated Surface expression libraries of heteromeric receptors
EP0564531B1 (en) 1990-12-03 1998-03-25 Genentech, Inc. Enrichment method for variant proteins with altered binding properties
DE69233367T2 (en) 1991-04-10 2005-05-25 The Scripps Research Institute, La Jolla LIBRARIES OF HETERODIMERIC RECEPTORS BY PHAGEMIDES
GB9113120D0 (en) 1991-06-18 1991-08-07 Kodak Ltd Photographic processing apparatus
ATE275198T1 (en) 1991-12-02 2004-09-15 Medical Res Council PRODUCTION OF ANTIBODIES ON PHAGE SURFACES BASED ON ANTIBODIES SEGMENT LIBRARIES.
US5733743A (en) 1992-03-24 1998-03-31 Cambridge Antibody Technology Limited Methods for producing members of specific binding pairs
WO1995015982A2 (en) 1993-12-08 1995-06-15 Genzyme Corporation Process for generating specific antibodies
PT1231268E (en) 1994-01-31 2005-11-30 Univ Boston BANKS OF POLYCLONE ANTIBODIES
US5516637A (en) 1994-06-10 1996-05-14 Dade International Inc. Method involving display of protein binding pairs on the surface of bacterial pili and bacteriophage
CN1177293A (en) 1995-10-30 1998-03-25 史密丝克莱恩比彻姆公司 Method for inhibiting cathepsin K
JP2978435B2 (en) 1996-01-24 1999-11-15 チッソ株式会社 Method for producing acryloxypropyl silane
CA2258518C (en) 1996-06-27 2011-11-22 Vlaams Interuniversitair Instituut Voor Biotechnologie Vzw Recognition molecules interacting specifically with the active site or cleft of a target molecule
WO2003050531A2 (en) 2001-12-11 2003-06-19 Algonomics N.V. Method for displaying loops from immunoglobulin domains in different contexts
KR100472476B1 (en) * 2002-08-31 2005-03-10 삼성전자주식회사 Interpolation apparatus and method for moving vector compensation
ATE528648T1 (en) 2002-12-03 2011-10-15 Ucb Pharma Sa METHOD FOR DETECTING ANTIBODY PRODUCING CELLS
GB0312481D0 (en) 2003-05-30 2003-07-09 Celltech R&D Ltd Antibodies
CA2527020A1 (en) 2003-07-01 2005-01-13 Celltech R & D Limited Modified antibody fab fragments
GB0315457D0 (en) 2003-07-01 2003-08-06 Celltech R&D Ltd Biological products
GB0315450D0 (en) 2003-07-01 2003-08-06 Celltech R&D Ltd Biological products
GB0411186D0 (en) 2004-05-19 2004-06-23 Celltech R&D Ltd Biological products
WO2007011392A2 (en) 2004-10-14 2007-01-25 Washington University Crystal structure of domain 111 of west nile virus envelope protein-fab fragment of neutralizing antibody complex
US7653132B2 (en) * 2004-12-21 2010-01-26 Stmicroelectronics, Inc. Method and system for fast implementation of subpixel interpolation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6504872B1 (en) * 2000-07-28 2003-01-07 Zenith Electronics Corporation Down-conversion decoder for interlaced video
EP1359763A2 (en) * 2002-04-10 2003-11-05 Microsoft Corporation Approximate bicubic filter
US20060291743A1 (en) * 2005-06-24 2006-12-28 Suketu Partiwala Configurable motion compensation unit

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013173191A1 (en) * 2012-05-14 2013-11-21 Qualcomm Incorporated Unified fractional search and motion compensation architecture across multiple video standards
US9277222B2 (en) 2012-05-14 2016-03-01 Qualcomm Incorporated Unified fractional search and motion compensation architecture across multiple video standards

Also Published As

Publication number Publication date
WO2009087380A2 (en) 2009-07-16
GB0800277D0 (en) 2008-02-13
US20090180541A1 (en) 2009-07-16
WO2009087380A3 (en) 2009-10-15
GB0900255D0 (en) 2009-02-11

Similar Documents

Publication Publication Date Title
US20170374380A1 (en) Image encoding method and image decoding method
JP4120301B2 (en) Image processing apparatus and method
US7653132B2 (en) Method and system for fast implementation of subpixel interpolation
US8743972B2 (en) Coding adaptive deblocking filter and method for use therewith
US8498338B1 (en) Mode decision using approximate ½ pel interpolation
US20060222074A1 (en) Method and system for motion estimation in a video encoder
US20100316129A1 (en) Scaled motion search section with downscaling filter and method for use therewith
WO2020106564A2 (en) Method and device for picture encoding and decoding
GB2456227A (en) Video motion compensation by transposing pixel blocks and selecting interpolated pixels from a vertical filter
US8260075B2 (en) Two-dimensional filter arithmetic device and method
US7929612B2 (en) Image interpolation apparatus and methods that apply quarter pel interpolation to selected half pel interpolation results
US8588305B2 (en) Two-dimensional interpolation architecture for motion compensation in multiple video standards
CN115834904A (en) Inter-frame prediction method and device
GB2459567A (en) Video signal edge filtering
CN116491120A (en) Method and apparatus for affine motion compensated prediction refinement
Azevedo et al. MoCHA: A bi-predictive motion compensation hardware for H. 264/AVC decoder targeting HDTV
KR102309918B1 (en) Apparatus for performing fast motion estimation using interpolation filter in video encoder and method thereof
Wu et al. Hardware-and-memory-sharing architecture of deblocking filter for VP8 and H. 264/AVC
KR101368732B1 (en) Apparatus for estimating motion for h.264/avc encoder with high performance and method thereof
Hyun et al. Efficient memory reuse and sub-pixel interpolation algorithms for ME/MC of H. 264/AVC
Lee et al. Reconfigurable architecture design of motion compensation for multi-standard video coding
Kammoun et al. An efficient hardware architecture for interpolation filter of HEVC decoder
Zatt et al. HP422-MoCHA: a H. 264/AVC High profile motion compensation architecture for HDTV
KR100992599B1 (en) Apparatus and method for decoding image having multi-operating capability
WO2023194106A1 (en) Motion information parameters propagation based on intra prediction direction

Legal Events

Date Code Title Description
WAP Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1)