WO2007113767A1 - Video processor comprising a pixel filter - Google Patents

Video processor comprising a pixel filter Download PDF

Info

Publication number
WO2007113767A1
WO2007113767A1 PCT/IB2007/051186 IB2007051186W WO2007113767A1 WO 2007113767 A1 WO2007113767 A1 WO 2007113767A1 IB 2007051186 W IB2007051186 W IB 2007051186W WO 2007113767 A1 WO2007113767 A1 WO 2007113767A1
Authority
WO
WIPO (PCT)
Prior art keywords
pixels
pixel
weighted
multiplexer
array
Prior art date
Application number
PCT/IB2007/051186
Other languages
French (fr)
Inventor
Aleksandar Beric
Ramanathan Sethuraman
Original Assignee
Koninklijke Philips Electronics N.V.
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 Koninklijke Philips Electronics N.V. filed Critical Koninklijke Philips Electronics N.V.
Publication of WO2007113767A1 publication Critical patent/WO2007113767A1/en

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/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/17Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
    • G06F17/175Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method of multidimensional data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture signal circuitry for video frequency region
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture signal circuitry for video frequency region
    • H04N5/21Circuitry for suppressing or minimising disturbance, e.g. moiré or halo

Definitions

  • Video processor comprising a pixel filter.
  • An aspect of the invention relates to a video processor that comprises a pixel filter.
  • the video processor may be, for example, a video encoder, a video decoder, or a video display system capable of carrying out picture-rate conversion or de-interlacing, or a combination of these operations.
  • Other aspects of the invention relate to a method of video processing, a computer program product for a programmable processor, and a video apparatus.
  • Pixel filtering equates with calculating a weighted sum of pixels, which are present in a particular area of a picture.
  • Examples of types of video processing that involve pixel filtering include video coding with motion estimation and motion compensation, video decoding, video format conversion, picture-rate up-conversion, de-interlacing, de-blocking, up-scaling, and motion- compensated filtering for noise reduction.
  • pixel filtering can be used for the purpose of interpolation.
  • a weighted sum of pixels can be considered to constitute an interpolated pixel, which has a spatial position defined by respective weighting coefficients. The spatial position of the interpolated pixel need not necessarily be precisely on a grid point of a pixel grid. Accordingly, a sub-pixel resolution can be achieved in the aforementioned types of video processing.
  • One parameter is the size of the area in terms of number of pixels for which a weighted sum needs to be calculated.
  • the area may comprise 2, 4, or 8 pixels.
  • Another parameter is the shape of the area.
  • the area may be rectangular or circular- like. Many different shapes are possible.
  • the area has a given aspect ratio, which constitutes yet another parameter.
  • a rectangular area that comprises 4 pixels may be 2 pixels wide (horizontal dimension) and 2 pixels high (vertical dimension).
  • the rectangular area may also be, for example, 4 pixels wide and 1 pixel high.
  • the aspect ratio is 1:1 in the first case and 4:1 in the second case.
  • Yet another parameter relates to sub- sampling, which can be applied in establishing a weighted sum of pixels for a particular area of interest.
  • sub-sampling In case sub-sampling is applied, not all pixels in the area of interest are taken into account for establishing the weighted sum. For example, only 1 out of 2 pixels are taken into account in accordance with a regular pattern. Sub-sampling allows a reduction of computational effort.
  • US patent number 6,526,430 describes a coprocessor that assists in the computation of sum of absolute differences, symmetrical row/column finite impulse response filtering with a downsampling (or upsampling) option, row/column discrete cosine transform and inverse discrete cosine transform, and generic algebraic functions.
  • the coprocessor consists of 8 multiply-accumulate hardware units connected in parallel and routed and multiplexed together.
  • a pixel filter can entirely be implemented by means of software. That is, a processor executes a set of instructions, which define a pixel filtering operation that the processor carries out.
  • a software-based implementation will generally be relatively complex and relatively slow. This is particularly true if the software has to handle many different types of pixel filtering operations, each of which has a particular set of parameters that have been described hereinbefore.
  • a pixel filter can also be implemented in the form of a data path.
  • the coprocessor that the aforementioned US patent describes comprises a data path that consists of 8 multiply-accumulate hardware units connected in parallel and routed and multiplexed together.
  • this data path requires a relatively complicated formatting of pixels for which a weighted sum needs to be calculated. That is, complicated manipulations are required in order to apply appropriate input data to the respective multiply-accumulate hardware units. Consequently, the coprocessor that the aforementioned US patent describes will require relatively complicated software when used for the purpose of pixel filtering. This is particularly true if the co-processor needs to cope with the various different parameters that have been described hereinbefore, in particular sub-sampling. The aforementioned US patent does not explain how sub-sampling could be achieved within the co-processor.
  • a pixel filter comprises a multiplexer arrangement that forms an array of input pixels on the basis of a selection of pixels that are present in a particular area of the picture.
  • An array of multipliers multiplies the array of input pixels with an array of weighting coefficients so as to obtain an array of weighted pixels.
  • An accumulator arrangement forms respective combinations of weighted pixels in the array of weighted pixels.
  • the pixel filter in accordance with the invention can cope with the various parameters that have been mentioned hereinbefore.
  • the pixel filter can provide weighted sums for many different shapes and sizes of picture areas. Many different sub-sampling patterns can be implemented by appropriately controlling the multiplexer arrangement. What is more, the pixel filter can be configured in accordance with a particular set of parameters with relatively simple software.
  • An implementation of the invention advantageously comprises one or more of following additional features, each of which provides advantages in terms of flexibility, scalability, and ease of programming. Different sets of additional features, which correspond with different dependent claims, are presented as different paragraphs.
  • the accumulator arrangement comprises a ring of adders coupled to receive at least a portion of the array of weighted pixels.
  • An adder within the ring provides a combination of weighted pixels.
  • the multiplexer arrangement comprises a first set of multiplexer groups, which receives pixels from odd lines, and a second set of multiplexer groups, which receives pixels from even lines.
  • a multiplexer group comprises a plurality of multiplexers. Each multiplexer of the multiplexer group receives a different group of pixels and selects one of these pixels as an input pixel.
  • the accumulator arrangement comprises a first adder ring and a second adder ring.
  • the first adder ring forms respective combinations of weighted pixels on the basis of input pixels, which the first set of multiplexer groups provides.
  • the second adder ring forms respective combinations of weighted pixels on the basis of input pixels that the second set of multiplexer groups provides.
  • the accumulator arrangement comprises a plurality of composition sections. A composition section receives a plurality of combinations of weighted pixels and comprises different composition units for different pixel windows.
  • FIG. 1 is a block diagram that illustrates a video coding system.
  • FIG. 2 is a pictorial diagram that illustrates a set of pixels from a reference picture, which is used for the purpose of motion estimation.
  • FIG. 3 is a pictorial diagram that illustrates a register memory in which the set of pixels is stored.
  • FIG. 4 is a pictorial diagram that illustrates an interpolated pixel that is formed on the basis of 8 pixels.
  • FIG. 5 is a pictorial diagram that illustrates an interpolated pixel that is formed on the basis of 4 pixels.
  • FIG. 6 is a pictorial diagram that illustrates an interpolated pixel that is formed on the basis of 2 pixels.
  • FIG. 7 is a block diagram that illustrates an interpolator that forms part of the video coding system illustrated in FIG. 1.
  • FIG. 8 is a block diagram that illustrates a multiplexer arrangement that forms part of the interpolator illustrated in FIG. 7.
  • FIG. 9 is a circuit diagram that illustrates a multiplexer group that forms part of the multiplexer arrangement illustrated in FIG. 8.
  • FIG. 10 is a circuit diagram that illustrates another multiplexer group that forms part of the multiplexer arrangement illustrated in FIG. 8.
  • FIG. 11 is a block diagram that illustrates an accumulator arrangement that forms part of the interpolator illustrated in FIG. 7.
  • FIG. 12 is a circuit diagram that illustrates an eight pixel window composition unit that forms part of the accumulator arrangement illustrated in FIG. 11.
  • FIG. 13 is a circuit diagram that illustrates a four pixel window composition unit that forms part of the accumulator arrangement illustrated in FIG. 11.
  • FIG. 14 is a circuit diagram that illustrates a two pixel window composition unit that forms part of the accumulator arrangement illustrated in FIG. 11.
  • FIG. 15 is a pictorial diagram that illustrates a set of interpolated pixels that the interpolator illustrated in FIG. 7 provides.
  • FIG. 16 is a pictorial diagram that illustrates another set of interpolated pixels that the interpolator illustrated in FIG. 7 provides.
  • FIG. 17 is a pictorial diagram that illustrates yet another set of interpolated pixels that the interpolator illustrated in FIG. 7 provides.
  • FIG. 1 illustrates a video coding system VCS, which may be in the form of, for example, a digital camcorder.
  • the video coding system VCS comprises a camera CAM, an input memory MEMI, a reference memory MEMR and various functional entities: a subtractor SUB, a prediction error coder PEC, a motion compensator MC, a motion estimator ME, and a system controller SCT.
  • the motion estimator ME comprises a register memory RGM, an interpolator INT, and a motion vector finder MVF. Any of these functional entities may be implemented by means of software or hardware, or a combination of software and hardware. For example, each of these functional entities may be implemented by suitably programming a processor.
  • a software module may cause the processor to carry out specific operations that belong to a particular functional entity.
  • each of the aforementioned functional entities may be implemented in the form of a dedicated circuit.
  • Hybrid implementations may involve software modules as well as one or more dedicated circuits.
  • the video coding system VCS basically operates as follows.
  • the camera CAM provides an input video VI that represents a scene, which the camera CAM captures.
  • the input memory MEMI temporarily stores the input video VI.
  • the input video VI comprises a sequence of pictures. Each picture is divided into blocks of pixels, which are individually encoded in the following manner.
  • the subtractor SUB receives a block of pixels BI, which forms part of the input video VI.
  • the subtractor SUB subtracts a predicted block of pixels BP from the block of pixels BI that is to be encoded. Accordingly, the subtractor SUB provides a block of prediction error pixels BE.
  • the prediction error coder PEC encodes respective blocks of prediction error pixels BE so as to obtain a coded video VC.
  • the prediction error coder PEC decodes the coded video VC so as to obtain a decoded video VD.
  • the decoded video VD comprises a sequence of decoded pictures.
  • a decoder that receives the coded video VC will produce the same sequence of decoded pictures.
  • the reference memory MEMR stores decoded pictures that serve as a reference for encoding pictures in the input video VI.
  • the motion compensator MC provides the predicted block of pixels BP on the basis of a reference picture RP, which is stored in the reference memory MEMR, and a motion vector MV.
  • the motion vector MV points to an area in the reference picture RP that is similar to block of pixels BI to be encoded. More specifically, the motion vector MV defines a spatial displacement between the block of pixels BI to be encoded and the area in the reference picture RP that is similar.
  • the motion vector MV may define this displacement in sub-pixel units. That is, the motion vector MV has a horizontal component and a vertical component, each of which may comprise an integer part and a fractional part. In case the motion vector MV comprises a fractional part, the predicted block of pixels BP is established by means of interpolation between pixels in the area concerned of the reference picture RP.
  • the motion estimator ME establishes the motion vector MV by means of a search.
  • a search typically involves testing various different candidate motion vectors.
  • Each candidate motion vector defines a particular reference block of pixels, which can be synthesized from the area in the reference picture RP to which the candidate motion vector points.
  • the search aims to establish the reference block of pixels that best matches the block of pixels BI to be encoded.
  • the candidate motion vector that provides this best matching reference block of pixels constitutes the motion vector MV that is applied to the motion compensator MC.
  • the candidate motion vectors may have sub-pixel accuracy. In case a candidate motion vector comprises a fractional part, the reference block of pixels is synthesized by means of interpolation.
  • the search for the motion vector MV involves the following operations.
  • the motion estimator ME reads a set of pixels PS from the reference picture RP that is stored in the reference memory MEMR.
  • the set of pixels PS is stored in the register memory RGM.
  • the interpolator INT receives search data SRD from the motion vector finder MVF, which specifies a candidate motion vector.
  • the interpolator INT provides a set of interpolated pixels XPS on the basis of the search data SRD and the set of pixels PS that is stored in the register memory RGM.
  • the motion vector finder MVF may specify a sequence of various different candidate motion vectors by means of the search data SRD.
  • the interpolator INT may provide various different sets of interpolated pixels for different candidate motion vectors on the basis of a single set of pixels PS that is present in the register memory RGM.
  • a set of interpolated pixels XPS which the interpolated provides for a particular candidate motion vector, represents a portion of the reference block of pixels that the candidate motion vector defines.
  • the motion vector finder MVF uses this portion to establish a degree of matching between the reference block of pixels, which the candidate motion vector defines, and the block of pixels BI to be encoded.
  • FIG. 2 illustrates the set of pixels PS that is stored in the register memory
  • the set of pixels PS comprises 64 pixels, which are organized in the form of a matrix with 16 columns and 4 rows. Each pixel P(i,j) has a column number "i" and a row number "j". Indices “i”, "j” thus denote a horizontal and a vertical position, respectively, of the pixel P 1J within the set of pixels PS.
  • FIG. 2 illustrates this by designating pixels P 1;1 , Pis,i, and P 1;4 .
  • FIG. 2 further illustrates a pixel grid by means of dotted lines.
  • the pixel grid defines integer vertical positions and integer horizontal positions for a pixel. Each pixel is centered on a grid point, which is formed by a crossing of a vertical dotted line and a horizontal dotted line. Consequently, each pixel of the set of pixels PS has an integer vertical position and an integer horizontal position that corresponds with the column number and the row number of the pixel, respectively.
  • FIG. 3 illustrates the register memory RGM in which the set of pixels PS are stored.
  • the register memory RGM comprises 16 registers RGl, RG2, .., RG16.
  • Each register is capable of storing four pixels, which have the same row number "j".
  • Each register may be, for example, 32 bits wide and each pixel may comprise comprises 8 bits so that a register is capable of storing four pixels as FIG. 3 illustrates.
  • FIG. 4 illustrates an interpolated pixel XPi 8 that is formed on the basis of eight pixels, which are within a window of 4 x 2 pixels. A rectangle in broken lines illustrates this 4 x 2 pixel window.
  • the interpolated pixel XPi 8 is a weighted combination of the eight pixels within the 4 x 2 pixel window. Respective weighting coefficients for these respective eight pixels define a position of the interpolated pixel XPi 8 .
  • the interpolated pixel XPi 8 is not necessarily centered on a grid point of the pixel grid, which is illustrated by means of dotted lines as in FIG. 2.
  • the respective weighting factors define, as it were, a center of gravity that need not necessarily correspond with a grid point.
  • FIG. 5 illustrates an interpolated pixel XPi 4 that is formed on the basis of four pixels, which are within a window of 2 x 2 pixels. A rectangle in broken lines illustrates this 2 x 2 pixel window.
  • the interpolated pixel XPi 4 is a weighted combination of the four pixels within the 2 x 2 pixel window.
  • FIG. 6 illustrates an interpolated pixel XPi 2 that is formed on the basis of two pixels, which are within a window of 2 x 1 pixels. A rectangle in broken lines illustrates this 2 x 1 pixel window.
  • the interpolated pixel XPi 2 is a weighted combination of the two pixels within the 2 x 1 pixel window.
  • FIGS. 4, 5, and 6 illustrate three different interpolation functions.
  • Each interpolation function has a particular pixel window and a particular set of weighting coefficients.
  • the set of weighting coefficients defines the center of gravity: the position of an interpolated pixel within the pixel window.
  • the respective interpolated pixels illustrated in FIG. 4, 5, and 6 have respective positions that do not coincide with a grid point of the pixel grid.
  • a set of weighting coefficients that provides such an interpolated pixel corresponds with a particular fractional part in a candidate motion vector.
  • a set of weighting coefficients may correspond with a motion vector of which the horizontal component and the vertical component have fractional parts equal to 0.25 and 0.75, respectively.
  • the interpolator INT illustrated in FIG. 1 can provide numerous various different interpolation functions including the three interpolation functions that FIG. 4, 5, and 6 illustrate.
  • the system controller SCT may specify the pixel window of a particular interpolation function by means of window configuration data WD, which the system controller SCT applies to the interpolator INT.
  • the system controller SCT may specify that the interpolator INT should apply the 4 x 2 pixel window that FIG. 4 illustrates.
  • the search data SRD which the motion vector finder MVF applies to the interpolator INT, may specify the set of weighting coefficients of a particular interpolation function.
  • the motion vector finder MVF may group several candidate motion vectors that have identical fractional parts. An identical set of weighting coefficients can be applied for these candidate motion vectors.
  • FIG. 7 illustrates the interpolator INT in greater detail.
  • the interpolator INT comprises a multiplexer arrangement MUXA, 64 multipliers Ml, M2, .., M64, an accumulator arrangement ACCA, and a control module CTM.
  • the interpolator INT thus comprises a number of multipliers that corresponds with the number of pixels in the set of pixels PS, namely 64.
  • the interpolator INT basically operates as follows.
  • the control module CTM receives the window configuration data WD, which defines a particular pixel window.
  • the control module CTM further receives the search data SRD, which defines a candidate motion vector or a group of candidate motion vectors.
  • the control module CTM derives multiplexer control data MC for the multiplexer arrangement MUXA from the window configuration data WD and the search data SRD.
  • the control module CTM further derives accumulator control data AC for the accumulation arrangement from the window configuration data WD.
  • the control module CTM further derives respective multiplier coefficients K 1 , K 2 , .., K 64 for the respective multipliers Ml, M2, .., M64 from the window configuration data WD and the search data SRD.
  • the multiplexer arrangement MUXA receives the set of pixels PS that FIG. 2 illustrates.
  • the multiplexer arrangement MUXA provides respective input pixels PI 1 , PI 2 , .., PI 64 for the respective multipliers Ml, M2, .., M64.
  • An input pixel for a multiplier corresponds with a particular pixel in the set of pixels PS.
  • the multiplexer control data MC defines for each multiplier which pixel from the set of input pixels constitutes the input pixel for that multiplier. This will be described in greater detail hereinafter.
  • the respective multipliers Ml, M2, .., M64 multiply the respective input pixels P 1 , PI 2 , .., PI 64 with the respective multiplier coefficients K 1 , K 2 , .., K 64 that the control module CTM provides. Accordingly, the respective multipliers Ml, M2, .., M64 provide respective weighted pixels PWi, PW 2 , .., PW 64 . There is a total of 64 weighted pixels; each multiplier produces one weighted pixel, which is the input pixel for that multiplier multiplied by the multiplier coefficient for that multiplier.
  • the accumulator arrangement ACCA effectively forms different sets of weighted pixels. Each set corresponds with a pixel window that has a size and a shape as defined by window configuration data WD.
  • the accumulator arrangement ACCA sums the weighted pixels in each set. Accordingly, respective sums of weighted pixels are obtained. These respective sums constitute respective interpolated pixels XP 1 k_i, .., XPi k N that form the set of interpolated pixels XPS, which the motion vector finder MVF illustrated in FIG. 1 receives.
  • FIG. 8 illustrates the multiplexer arrangement MUXA.
  • the multiplexer arrangement MUXA comprises two sets of multiplexer groups.
  • a first set comprises multiplexer groups MUXGl, .., MUXG8.
  • Each of these multiplexer groups receives pixels that have odd row numbers in the set of pixels PS illustrated in FIG. 2. Accordingly, multiplexer group MUXGl receives pixels Pi 1 I, .., P 16;1 and pixels P 1;3 , .., P 16;3 .
  • the first set of multiplexer groups MUXGl, .., MUXG8 provides input pixels PIi, .. PI 32 for multipliers Ml, ..
  • the first set of multiplexer groups MUXGl, .., MUXG8 provides a first half of the respective input signals for the respective multipliers.
  • the second set comprises multiplexer groups MUXG9, .., MUXG 16. Each of these multiplexer groups receives pixels that have even row numbers. Accordingly, multiplexer group receives pixels Pi 12 , .., P 16 , 2 and pixels P 1;4 , .., P 16;4 . The same applies to the other multiplexer groups in the second set.
  • the second set of multiplexer groups MUXG9, .., MUXG16 provides input pixels PI 33 , .. PI 64 for multipliers M33, .., M64, respectively. That is, the second set of multiplexer groups MUXG9, .., MUXG16 provides a second half of the respective input signals for the respective multipliers.
  • FIG. 9 illustrates multiplexer group MUXGl, which belongs to the first set of multiplexer groups.
  • Multiplexer group MUXGl comprises four multiplexers MUXl 1, MUX12, MUX13, MUX14.
  • Each multiplexer provides an input pixel for a particular multiplier: multiplexers MUXl 1, MUX12, MUX13, MUX14 provide input pixels PIi, PI 2 , PI 3 , PI 4 , respectively.
  • Each multiplexer receives eight different pixels from the set of pixels PS, which is present in the register memory RGM.
  • Multiplexer MUXl receives four pixels from the first row and four pixels from the third row.
  • FIG. 10 illustrates multiplexer group MUXG9, which belongs to the first set of multiplexer groups.
  • Multiplexer group MUXG9 has a structure that is identical to that of multiplexer group illustrated in FIG. 9.
  • Multiplexer group comprises four multiplexers MUX91, MUX92, MUX93, MUX94 that provides input pixels PI 33 , PI 34 , PI 35 , PI 36 , respectively.
  • Each of these four multiplexers receives four different pixels from the second row and four different pixels from the fourth row in the set of pixels PS, which is present in the register memory RGM.
  • the respective pixels that the respective multiplexers MUX91, MUX92, MUX93, MUX94 receive follow a pattern that is identical to that in multiplexer group MUXGl illustrated in FIG. 9. The only difference is a shift of one row with regard to the respective pixels that the respective multiplexers MUXl 1, MUX 12, MUXl 3, MUX 14 receive.
  • the other multiplexer groups of the second set are identical to multiplexer group MUXG9 illustrated in FIG. 10.
  • FIG. 11 illustrates the accumulator arrangement ACCA.
  • the accumulator arrangement ACCA comprises a first adder ring ADDRl, a second adder ring ADDR2, and an interpolated pixel composer IPC.
  • the first adder ring ADDRl comprises 32 adders, which can be divided in eight adder sections, each of which comprises four adders.
  • FIG. 11 illustrates one of these eight adder sections: adder section ADDSl 1.
  • the second adder ring ADDR2 has an identical structure.
  • the second adder ring ADDR2 also comprises 32 adders, which can be divided in eight adder sections, one of which is shown in FIG. 11: adder section ADDS21.
  • the interpolated pixel composer IPC comprises eight composition sections, which are identical.
  • FIG. 11 illustrates the accumulator arrangement ACCA.
  • the accumulator arrangement ACCA comprises a first adder ring ADDRl, a second adder ring ADDR2, and an interpolated pixel composer IPC.
  • composition section COSl comprises three different composition units: an eight pixel window composition unit 8PWl, a four pixel window composition unit 4PWl, and a two pixel window composition unit 2PWl.
  • the other composition sections are identical.
  • the accumulator arrangement ACCA operates as follows.
  • the first adder ring ADDRl receives weighted pixels PWi, .. PW32. These weighted pixels are derived from input pixels PI 1 , .., PI32, which the first set of multiplexer groups MUXGl, .. MUXG8 illustrated in FIG. 8 provides.
  • the first adder ring ADDRl can therefore be associated with the first set of multiplexer groups MUXGl, .. MUXG8 and, as a result, can be associated with the pixels on the first row and the third row of the set of pixels PS, which is present in the register memory RGM as illustrated in FIG. 3.
  • the second adder ring ADDR2 receives weighted pixels PW33, .. PW ⁇ 4. These weighted pixels are derived from input pixels PI33, .., PI ⁇ 4, which the second set of multiplexer groups MUXG9, .. MUXG16 illustrated in FIG. 8 provides.
  • the second adder ring ADDR2 can therefore be associated with the second set of multiplexer groups MUXG9, .. MUXG 16 and, as a result, can be associated with the pixels on the second row and the fourth row of the set of pixels PS, which is present in the register memory RGM as illustrated in FIG. 3.
  • Each adder in the first adder ring ADDRl and the second adder ring ADDR2 adds two weighted pixels so as to provide a weighted pixel combination.
  • FIG. 11 illustrates that adder section ADDSl 1, which comprises four adders, provides four weighted pixel combinations A 1+2 , A2 + 3, A3 + 4, A4 + 5.
  • Weighted pixel combination A1 + 2 results from an addition of weighted pixels PWi and PW 2 .
  • Weighted pixel combination A2 + 3, A3 + 4, and A4 + 5 result from an addition of weighted pixels PW 2 and PW3, PW3 and PW4, and PW4 and PW5, respectively.
  • Another adder which belongs to another adder section, will provide a weighted pixel combination that results from an addition of weighted pixels PW5 and PW 6 .
  • Yet another adder which belongs to yet another adder section, will provide a weighted pixel combination that results from an addition of weighted pixels PW3 2 and PWi, which can be considered as closing the ring.
  • the first adder ring ADDRl provides 32 different weighted pixel combinations.
  • the second adder ring ADDR2 equally provides 32 different weighted pixel combinations.
  • FIG. 11 illustrates that adder section ADDS21, which comprises four adders, provides four weighted pixel combinations A33 + 34, A34 + 35, A35 + 36, A36 + 37.
  • Weighted pixel combination A33 + 34 results from an addition of weighted pixels PW33 and PW34.
  • Weighted pixel combination A34 + 35, A35 + 36, and A36 + 37 result from an addition of weighted pixels PW34 and PW35, PW35 and PW36, and PW36 and PW37, respectively.
  • Composition section COSl receives the four weighted pixel combinations A 1+2 , A 2+3 , A 3+4 , A 4+5 , which adder section ADDSl 1 in the first adder ring ADDRl provides, and receives the four weighted pixel combinations A33 + 34, A34 + 35, A35 + 36, A36 + 37, which adder section ADDS21 in the second adder ring ADDR2 provides.
  • Composition section COSl can thus be associated with adder section ADDSl 1 and adder section ADDS21 in the first adder ring ADDRl and the second adder ring ADDR2, respectively.
  • each of the other composition sections in the interpolated pixel composer IPC can be associated with a particular adder section in the first adder ring ADDRl and a particular adder section in the second adder ring ADDR2.
  • Composition section COSl provides one or more interpolated pixels on the basis of the weighted pixel combinations Ai +2 , A 2+ 3, A 3+4 , A 4+5 , A 33+34 , A 34+35 , A 35+36 , A 36+3 7 that composition section COSl receives. Only one of the three composition units is involved in this process: either the eight pixel window composition unit 8PWl, or the four pixel window composition unit 4PWl , or the two pixel window composition unit 2PWl . The composition unit that is involved in providing one or more interpolated pixels depends on the pixel window that the window configuration data WD specifies.
  • the window configuration data WD specifies a 4 x 2 pixel window, which comprises eight pixels from the set of pixels PS, which is present in the register memory RGM.
  • the eight pixel window composition unit 8PWl will provide one interpolated pixel on the basis of the weighted pixel combinations A 1+2 , A 2+3 , A 3+4 , A 4+5 , A 33+34 , A 34+35 , A 35+36 , A 36+3 7 that composition section COSl receives.
  • the four pixel window composition unit 4PWl will provide two interpolated pixels if the window configuration data WD specifies a 2 x 2 pixel window.
  • the eight pixel window composition unit 8PWl comprises three adders.
  • a first adder provides a sum of weighted pixel combinations.
  • a second adder provides a different sum of weighted pixel combinations.
  • a third adder provides a sum of the respective aforementioned sums. This sum constitutes interpolated pixel XPi 8 i, which is a weighted combination of input pixels PI 1 , PI 2 , PI 3 , PI 4 , PI33, PI 34 , PI35, PI 36 .
  • FIG. 13 illustrates the four pixel window composition unit 4PWl.
  • the four pixel window composition unit 4PWl comprises two identical circuits.
  • a first circuit which comprises two multiplexers MUXl 11, MUXl 12 and an adder, provides interpolated pixel XPi 4 1.
  • a second circuit which comprises two multiplexers MUXl 13, MUXl 14 and an adder, provides interpolated pixel XPi 4 _ 2 .
  • multiplexer MUXl 11 receives weighted pixel combinations A 1+2 , A4 + 5, , A34 + 35, A35 + 36 and applies one of these weighted pixel combinations to the adder.
  • Multiplexer MUXl 12 receives weighted pixel combinations A2 + 3, A 3+4 , A 33+34 , A 36+ 37 and applies one of these weighted pixel combinations to the adder.
  • the adder provides a sum of the respective weighted pixel combinations that the adder receives from multiplexers MUXl 11, MUXl 12.
  • FIG. 14 illustrates the two pixel window composition unit 2PWl .
  • the two pixel window composition unit 2PWl comprises four multiplexers MUXl 15, MUXl 16, MUXl 17, MUXl 18.
  • Each multiplexer receives a different pair of weighted pixel combinations and provides one of the weighted pixel combinations in the pair as an interpolated pixel. More specifically, multiplexer MUXl 15 receives weighted pixel combinations A 1+2 , A2 + 3. One of these weighted pixel combinations is selected to constitute interpolated pixel XPi 2 1. Multiplexer MUXl 16 receives weighted pixel combinations A3 + 4, A4 + 5, one of which is selected to constitute interpolated pixel XPi 2 2- Multiplexer MUXl 17 receives weighted pixel combinations A 33+34 , A 34+35 , one of which is selected to constitute interpolated pixel XPi 2 _ 3 . Multiplexer MUXl 18 receives weighted pixel combinations A 35+36 , A 3 6 +3 7, one of which is selected to constitute interpolated pixel XPi 2 _ 4 .
  • FIG. 15 illustrates eight interpolated pixels XPi s i, XPi 8 _ 2 , XPi s 3, XPi 8 4, XPi 8 5, XPi 8 6, XPi 8 7, XPi 8 8 that have different positions.
  • Each interpolated pixel is formed on the basis of a 4 x 2 pixel window.
  • the respective 4 x 2 pixel windows for the respective interpolated pixels are presented by means of rectangles in broken lines.
  • the interpolator INT can provide the eight interpolated pixels in parallel. This involves the following control actions.
  • the control module CTM illustrated in FIG. 7 appropriately configures the accumulator arrangement ACCA illustrated in FIG. 11 by means of accumulator control data AC. This causes composition section COSl to apply the eight pixel window composition unit 8PWl illustrated in FIG. 12. Seven other composition sections in the interpolated pixel composer IPC will each apply a similar eight pixel window composition unit.
  • the control module CTM further applies appropriate multiplier coefficients K 1 , K 2 , .., K54 to the multipliers Ml, M2, .., M64, respectively, in the interpolator INT.
  • the multiplier coefficients K 1 , K 2 , .., K 64 comprise eight identical sets of eight multiplier coefficients. Each set of multiplier coefficients belongs to a particular 4 x 2 pixel window and a particular interpolated pixel illustrated in FIG. 15.
  • the multipliers Ml, M2, .., M64 may correspondingly be considered to comprise eight sets of eight multipliers. Each set of multipliers receives a set of multiplier coefficients and is associated with a particular interpolated pixel illustrated in FIG. 16.
  • the control module CTM further causes the multiplexer arrangement MUXA to apply appropriate input pixels PI 1 , PI 2 , .., PI 64 to the multipliers Ml, M2, .., M64, respectively.
  • the multiplexer control data MC which the multiplexer arrangement MUXA receives from the control module CTM, effectively causes the multiplexer arrangement MUXA to form the respective pixel windows illustrated in FIG. 15.
  • interpolated pixel XPi s i is formed on the basis of weighted pixel combinations Ai +2 , A3 + 4, A33 + 34, A35 + 36, which is illustrated in FIG. 12. These weighted pixel combinations are formed on the basis of input pixels PI 1 , PI 2 , PI3, PI4, PI33, PI 34 , PI35, PI36, which multiplexer groups MUXGl and MUXG9 illustrated in FIGS. 9 and 10, respectively, provide.
  • the multiplexer control data MC may cause multiplexer MUXl 1 to select pixel Ps ;1 as input pixel PI 1 .
  • Multiplexers MUX12, MUX13, MUX14 may select pixels P 2;1 , P 3;1 , P 4j i as input pixels PI 2 , PI 3 , PI 4 , respectively.
  • multiplexers MUXl 1, MUX12, MUX13, MUX14 may select pixels Ps, 2 , P 2 , 2 , P 3 , 2 , P4, 2 as input pixels PI 33 , PI 34 , PI35, PI 36 , respectively.
  • the multiplexer arrangement MUXA effectively defines the pixel window associated with interpolated pixel XPi s i in response to the multiplexer control data MC.
  • the respective pixel windows for the other interpolated pixels XPi 8 _ 2 , .., XPi 8 _ 8 are defined in a similar fashion through an appropriate configuration of the multiplexer arrangement MUXA.
  • the motion estimator ME illustrated in FIG. 1 is carrying out a motion vector search.
  • This may require the interpolator INT to provide a further eight interpolated pixels similar to those illustrated in FIG. 15 but having different positions. That is, the respective pixel windows illustrated in FIG. 15 may need to be shifted one or more pixel units in a horizontal or in a vertical direction.
  • Such a shift in position only requires a reconfiguration of the multiplexer arrangement MUXA through an appropriate modification of the multiplexer control data MC.
  • the control module CTM need not modify multiplier coefficients K 1 , K 2 , .., K54 or accumulator control data AC.
  • the multiplier coefficients K 1 , K 2 , .., K54 and the accumulator control data AC can be static during at least a portion of the motion vector search. This allows the control module CTM to be of relatively simple design. Moreover, the interpolator INT can provide various different interpolated pixels belonging to various different candidate motion vectors in a relatively fast manner.
  • FIG. 16 illustrates 15 interpolated pixels that have different positions. Only two interpolated pixels XPi 4 1, XPi 4 _ 2 , are designated with a reference sign for reasons of simplicity. Each interpolated pixel is formed on the basis of a 2 x 2 pixel window. The respective 2 x 2 pixel windows for the respective interpolated pixels are presented by means of rectangles in broken lines.
  • the interpolator INT can provide the 15 interpolated pixels in parallel, which involves the following control actions.
  • the control module CTM illustrated in FIG. 7 appropriately configures the accumulator arrangement ACCA illustrated in FIG. 11 by means of accumulator control data AC.
  • Seven other composition sections in the interpolated pixel composer IPC will each apply a similar four pixel window composition unit.
  • Each four pixel window composition unit 4PWl comprises four multiplexers, each of which selects one out of four weighted pixel combinations as illustrated in FIG. 13.
  • the accumulator control data AC controls the respective multiplexers in the respective four pixel window composition units. Accordingly, the accumulator control data AC contributes in defining the respective pixel windows which are associated with the interpolated pixels illustrated in FIG. 16.
  • the control module CTM further applies appropriate multiplier coefficients K 1 , K 2 , .., K54 to the multipliers Ml, M2, .., M64, respectively, in the interpolator INT.
  • the multiplier coefficients K 1 , K 2 , .., K54 comprise 15 identical sets of four multiplier coefficients. Each set of multiplier coefficients belongs to a particular 2 x 2 pixel window and a particular interpolated pixel illustrated in FIG. 16.
  • the multipliers Ml, M2, .., M64 may correspondingly be considered to comprise 15 sets of four multipliers. Each set of multipliers receives a set of multiplier coefficients and is associated with a particular interpolated pixel illustrated in FIG. 16.
  • the control module CTM further causes the multiplexer arrangement MUXA to apply appropriate input pixels PI 1 , PI 2 , .., PI ⁇ 4 to the multipliers Ml, M2, .., M64, respectively.
  • the multiplexer control data MC which the multiplexer arrangement MUXA receives from the control module CTM, and the accumulator control data AC effectively cause the multiplexer arrangement MUXA to form the respective pixel windows illustrated in FIG. 16.
  • interpolated pixel XPi 4 1 is formed as follows. Referring to FIG. 13, multiplexer MUXl 11 selects weighted pixel combination A 34+35 and multiplexer MUXl 12 selects weighted pixel combination A2 + 3. Weighted pixel combination A2 + 3 is formed on the basis of input pixels PI 2 and PI3. Weighted pixel combination A34 + 35 is formed on the basis of input pixels PI34 and PI35. Referring to FIG. 9, multiplexers MUXl 1 and MUX13 select pixels P 2;1 and P 3;1 as input pixels PI 2 and PI 3 , respectively. Referring to FIG.
  • MUX91 and MUX93 select pixels P2,2 and P 3;2 as input pixels PI34 and PI35, respectively.
  • Interpolated pixel XPi 4 2 is formed on the basis of input pixels in a similar manner through appropriate multiplexer control.
  • FIG. 17 illustrates 30 interpolated pixels that have different positions. Only four interpolated pixels XPi 2 1, XPi 2 2, XPi 2 3, XPi 2 4 are designated with a reference sign for reasons of simplicity . Each interpolated pixel is formed on the basis of a 2 x 1 pixel window. The respective 2 x 1 pixel windows for the respective interpolated pixels are presented by means of rectangles in broken lines.
  • the interpolator INT can provide the 30 interpolated pixels in parallel, which involves the following control actions.
  • the control module CTM illustrated in FIG. 7 appropriately configures the accumulator arrangement ACCA illustrated in FIG. 11 by means of accumulator control data AC.
  • This causes composition section to apply the two pixel window composition unit 2PWl illustrated in FIG. 14. Seven other composition sections in the interpolated pixel composer IPC will each apply a similar two pixel window composition unit.
  • Each two pixel window composition unit 2PWl comprises four multiplexers, each of which selects one out of two weighted pixel combinations as illustrated in FIG. 14.
  • the selected weighted pixel combination constitutes an interpolated pixel.
  • the accumulator control data AC controls the respective multiplexers in the respective two pixel window composition units. Accordingly, the accumulator control data AC contributes in defining the respective pixel windows which are associated with the interpolated pixels illustrated in FIG. 17.
  • the control module CTM further applies appropriate multiplier coefficients K 1 , K 2 , .., K ⁇ 4 to the multipliers Ml, M2, .., M64, respectively, in the interpolator INT.
  • the multiplier coefficients K 1 , K 2 , .., K 64 comprise 30 identical sets of two multiplier coefficients. Each set of multiplier coefficients belongs to a particular 2 x 1 pixel window and a particular interpolated pixel illustrated in FIG. 17.
  • the multipliers Ml, M2, .., M64 may correspondingly be considered to comprise 30 sets of two multipliers. Each set of multipliers receives a set of multiplier coefficients and is associated with a particular interpolated pixel illustrated in FIG. 17.
  • the control module CTM further causes the multiplexer arrangement MUXA to apply appropriate input pixels PI 1 , PI 2 , .., PI ⁇ 4 to the multipliers Ml, M2, .., M64, respectively.
  • the multiplexer control data MC which the multiplexer arrangement MUXA receives from the control module CTM, and the accumulator control data AC effectively cause the multiplexer arrangement MUXA to form the respective pixel windows illustrated in FIG. 17.
  • interpolated pixel XPi 2 1 is formed as follows. Referring to FIG. 14, multiplexer MUXl 15 selects weighted pixel combination A2 + 3. Weighted pixel combination A2 + 3 is formed on the basis of input pixels PI 2 and PI3. Referring to FIG. 9, multiplexers MUX12 and MUX 13 select pixels P 2;1 and P 3;1 as input pixels PI 2 and PI 3 , respectively. Interpolated pixels XPi 2 2, XPi 2 3, XPi 2 4 are formed on the basis of input pixels in a similar manner through appropriate multiplexer control. It should be noted that the interpolator INT illustrated in FIG.
  • a sub-sampled grid is obtained, for example, by leaving out even rows and even columns in the pixel grid that FIG. 2 illustrates by means of dotted lines.
  • Such a sub-sampling can be realized without any particular difficulty through an appropriate control of the multiplexer arrangement MUXA.
  • the motion compensator MC in the video coding system VCS may comprise an interpolator similar to the interpolator INT illustrated in FIG. 7.
  • the interpolator can provide the predicted block of pixels BP when the motion vector MV has sub-pixel accuracy.
  • the invention may be applied to advantage in any type of product or method that relates to video processing and which involves pixel filtering, in general, or pixel interpolation in particular.
  • a video encoding system is merely an example.
  • the invention may equally be applied in, for example, a video decoder.
  • Figures 4, 5, and 6 merely illustrate a few examples.
  • a pixel window may be 2 pixels wide and 4 pixels high. Any shape or size is possible. The size need not necessarily be a power of 2, although this is advantageous.
  • Figures 8, 9, and 10 merely illustrate an example, which is based on a set of pixels stored in a register memory as illustrated in figure 3.
  • respective multiplexers receive respective groups of 8 pixels.
  • a multiplexer may receive a greater number of pixels or a smaller number of pixels.
  • a different number of pixels may be appropriate if, for example, a different register memory is used in terms of size or configuration, or both.
  • picture should be understood in a broad sense. This term includes a frame, a field, and any other entity that may wholly or partially constitute an image or a picture.
  • functions by means of items of hardware or software, or both.
  • the drawings are very diagrammatic, each representing only one possible embodiment of the invention. Thus, although a drawing shows different functions as different blocks, this by no means excludes that a single item of hardware or software carries out several functions. Nor does it exclude that an assembly of items of hardware or software or both carry out a function.

Abstract

A video processor comprises a pixel filter (INT) for calculating a weighted sum of pixels that are present in a particular area of a picture. The pixel filter comprises a multiplexer arrangement (MUXA) that forms an array of input pixels (PI1, PI2,.. PI64) on the basis of a selection of pixels that are present in the particular area of the picture. An array of multipliers (Ml, M2,.., M64) multiplies the array of input pixels with an array of weighting coefficients (K1, K2,.., K64) so as to obtain an array of weighted pixels (PW1, PW2,.., PW64). An accumulator arrangement (ACCA) forms respective combinations of weighted pixels in the array of weighted pixels.

Description

Video processor comprising a pixel filter.
FIELD OF THE INVENTION
An aspect of the invention relates to a video processor that comprises a pixel filter. The video processor may be, for example, a video encoder, a video decoder, or a video display system capable of carrying out picture-rate conversion or de-interlacing, or a combination of these operations. Other aspects of the invention relate to a method of video processing, a computer program product for a programmable processor, and a video apparatus.
BACKGROUND OF THE INVENTION There are many types of video processing that involve pixel filtering. Pixel filtering equates with calculating a weighted sum of pixels, which are present in a particular area of a picture. Examples of types of video processing that involve pixel filtering include video coding with motion estimation and motion compensation, video decoding, video format conversion, picture-rate up-conversion, de-interlacing, de-blocking, up-scaling, and motion- compensated filtering for noise reduction. In particular, pixel filtering can be used for the purpose of interpolation. A weighted sum of pixels can be considered to constitute an interpolated pixel, which has a spatial position defined by respective weighting coefficients. The spatial position of the interpolated pixel need not necessarily be precisely on a grid point of a pixel grid. Accordingly, a sub-pixel resolution can be achieved in the aforementioned types of video processing.
There are various parameters that characterize a pixel filtering operation. One parameter is the size of the area in terms of number of pixels for which a weighted sum needs to be calculated. For example, the area may comprise 2, 4, or 8 pixels. Another parameter is the shape of the area. For example, the area may be rectangular or circular- like. Many different shapes are possible. In case the area is rectangular, the area has a given aspect ratio, which constitutes yet another parameter. For example, a rectangular area that comprises 4 pixels may be 2 pixels wide (horizontal dimension) and 2 pixels high (vertical dimension). The rectangular area may also be, for example, 4 pixels wide and 1 pixel high. The aspect ratio is 1:1 in the first case and 4:1 in the second case. Yet another parameter relates to sub- sampling, which can be applied in establishing a weighted sum of pixels for a particular area of interest. In case sub-sampling is applied, not all pixels in the area of interest are taken into account for establishing the weighted sum. For example, only 1 out of 2 pixels are taken into account in accordance with a regular pattern. Sub-sampling allows a reduction of computational effort.
US patent number 6,526,430 describes a coprocessor that assists in the computation of sum of absolute differences, symmetrical row/column finite impulse response filtering with a downsampling (or upsampling) option, row/column discrete cosine transform and inverse discrete cosine transform, and generic algebraic functions. The coprocessor consists of 8 multiply-accumulate hardware units connected in parallel and routed and multiplexed together.
SUMMARY OF THE INVENTION
It is an object of the invention to allow an improvement in video processing, in particular by providing a pixel filter that can efficiently be used in many different applications. The independent claims define various aspects of the invention. The dependent claims define additional features for implementing the invention to advantage.
The invention takes the following points into consideration. In principle, a pixel filter can entirely be implemented by means of software. That is, a processor executes a set of instructions, which define a pixel filtering operation that the processor carries out. Such a software-based implementation will generally be relatively complex and relatively slow. This is particularly true if the software has to handle many different types of pixel filtering operations, each of which has a particular set of parameters that have been described hereinbefore. A pixel filter can also be implemented in the form of a data path. The coprocessor that the aforementioned US patent describes comprises a data path that consists of 8 multiply-accumulate hardware units connected in parallel and routed and multiplexed together. However, this data path requires a relatively complicated formatting of pixels for which a weighted sum needs to be calculated. That is, complicated manipulations are required in order to apply appropriate input data to the respective multiply-accumulate hardware units. Consequently, the coprocessor that the aforementioned US patent describes will require relatively complicated software when used for the purpose of pixel filtering. This is particularly true if the co-processor needs to cope with the various different parameters that have been described hereinbefore, in particular sub-sampling. The aforementioned US patent does not explain how sub-sampling could be achieved within the co-processor.
In accordance with the invention, a pixel filter comprises a multiplexer arrangement that forms an array of input pixels on the basis of a selection of pixels that are present in a particular area of the picture. An array of multipliers multiplies the array of input pixels with an array of weighting coefficients so as to obtain an array of weighted pixels. An accumulator arrangement forms respective combinations of weighted pixels in the array of weighted pixels.
The pixel filter in accordance with the invention can cope with the various parameters that have been mentioned hereinbefore. The pixel filter can provide weighted sums for many different shapes and sizes of picture areas. Many different sub-sampling patterns can be implemented by appropriately controlling the multiplexer arrangement. What is more, the pixel filter can be configured in accordance with a particular set of parameters with relatively simple software. An implementation of the invention advantageously comprises one or more of following additional features, each of which provides advantages in terms of flexibility, scalability, and ease of programming. Different sets of additional features, which correspond with different dependent claims, are presented as different paragraphs.
The accumulator arrangement comprises a ring of adders coupled to receive at least a portion of the array of weighted pixels. An adder within the ring provides a combination of weighted pixels.
The multiplexer arrangement comprises a first set of multiplexer groups, which receives pixels from odd lines, and a second set of multiplexer groups, which receives pixels from even lines. A multiplexer group comprises a plurality of multiplexers. Each multiplexer of the multiplexer group receives a different group of pixels and selects one of these pixels as an input pixel.
The accumulator arrangement comprises a first adder ring and a second adder ring. The first adder ring forms respective combinations of weighted pixels on the basis of input pixels, which the first set of multiplexer groups provides. The second adder ring forms respective combinations of weighted pixels on the basis of input pixels that the second set of multiplexer groups provides. The accumulator arrangement comprises a plurality of composition sections. A composition section receives a plurality of combinations of weighted pixels and comprises different composition units for different pixel windows.
A detailed description with reference to drawings illustrates the invention summarized hereinbefore, as well as the additional features.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram that illustrates a video coding system.
FIG. 2 is a pictorial diagram that illustrates a set of pixels from a reference picture, which is used for the purpose of motion estimation.
FIG. 3 is a pictorial diagram that illustrates a register memory in which the set of pixels is stored.
FIG. 4 is a pictorial diagram that illustrates an interpolated pixel that is formed on the basis of 8 pixels. FIG. 5 is a pictorial diagram that illustrates an interpolated pixel that is formed on the basis of 4 pixels.
FIG. 6 is a pictorial diagram that illustrates an interpolated pixel that is formed on the basis of 2 pixels.
FIG. 7 is a block diagram that illustrates an interpolator that forms part of the video coding system illustrated in FIG. 1.
FIG. 8 is a block diagram that illustrates a multiplexer arrangement that forms part of the interpolator illustrated in FIG. 7.
FIG. 9 is a circuit diagram that illustrates a multiplexer group that forms part of the multiplexer arrangement illustrated in FIG. 8. FIG. 10 is a circuit diagram that illustrates another multiplexer group that forms part of the multiplexer arrangement illustrated in FIG. 8.
FIG. 11 is a block diagram that illustrates an accumulator arrangement that forms part of the interpolator illustrated in FIG. 7.
FIG. 12 is a circuit diagram that illustrates an eight pixel window composition unit that forms part of the accumulator arrangement illustrated in FIG. 11.
FIG. 13 is a circuit diagram that illustrates a four pixel window composition unit that forms part of the accumulator arrangement illustrated in FIG. 11.
FIG. 14 is a circuit diagram that illustrates a two pixel window composition unit that forms part of the accumulator arrangement illustrated in FIG. 11. FIG. 15 is a pictorial diagram that illustrates a set of interpolated pixels that the interpolator illustrated in FIG. 7 provides.
FIG. 16 is a pictorial diagram that illustrates another set of interpolated pixels that the interpolator illustrated in FIG. 7 provides. FIG. 17 is a pictorial diagram that illustrates yet another set of interpolated pixels that the interpolator illustrated in FIG. 7 provides.
DETAILED DESCRIPTION
FIG. 1 illustrates a video coding system VCS, which may be in the form of, for example, a digital camcorder. The video coding system VCS comprises a camera CAM, an input memory MEMI, a reference memory MEMR and various functional entities: a subtractor SUB, a prediction error coder PEC, a motion compensator MC, a motion estimator ME, and a system controller SCT. The motion estimator ME comprises a register memory RGM, an interpolator INT, and a motion vector finder MVF. Any of these functional entities may be implemented by means of software or hardware, or a combination of software and hardware. For example, each of these functional entities may be implemented by suitably programming a processor. In such a software-based implementation, a software module may cause the processor to carry out specific operations that belong to a particular functional entity. As another example, each of the aforementioned functional entities may be implemented in the form of a dedicated circuit. This is a hardware-based implementation. Hybrid implementations may involve software modules as well as one or more dedicated circuits.
The video coding system VCS basically operates as follows. The camera CAM provides an input video VI that represents a scene, which the camera CAM captures. The input memory MEMI temporarily stores the input video VI. The input video VI comprises a sequence of pictures. Each picture is divided into blocks of pixels, which are individually encoded in the following manner. The subtractor SUB receives a block of pixels BI, which forms part of the input video VI. The subtractor SUB subtracts a predicted block of pixels BP from the block of pixels BI that is to be encoded. Accordingly, the subtractor SUB provides a block of prediction error pixels BE.
The prediction error coder PEC encodes respective blocks of prediction error pixels BE so as to obtain a coded video VC. In addition, the prediction error coder PEC decodes the coded video VC so as to obtain a decoded video VD. The decoded video VD comprises a sequence of decoded pictures. A decoder that receives the coded video VC will produce the same sequence of decoded pictures. The reference memory MEMR stores decoded pictures that serve as a reference for encoding pictures in the input video VI.
The motion compensator MC provides the predicted block of pixels BP on the basis of a reference picture RP, which is stored in the reference memory MEMR, and a motion vector MV. The motion vector MV points to an area in the reference picture RP that is similar to block of pixels BI to be encoded. More specifically, the motion vector MV defines a spatial displacement between the block of pixels BI to be encoded and the area in the reference picture RP that is similar. The motion vector MV may define this displacement in sub-pixel units. That is, the motion vector MV has a horizontal component and a vertical component, each of which may comprise an integer part and a fractional part. In case the motion vector MV comprises a fractional part, the predicted block of pixels BP is established by means of interpolation between pixels in the area concerned of the reference picture RP.
The motion estimator ME establishes the motion vector MV by means of a search. A search typically involves testing various different candidate motion vectors. Each candidate motion vector defines a particular reference block of pixels, which can be synthesized from the area in the reference picture RP to which the candidate motion vector points. The search aims to establish the reference block of pixels that best matches the block of pixels BI to be encoded. The candidate motion vector that provides this best matching reference block of pixels constitutes the motion vector MV that is applied to the motion compensator MC. The candidate motion vectors may have sub-pixel accuracy. In case a candidate motion vector comprises a fractional part, the reference block of pixels is synthesized by means of interpolation.
The search for the motion vector MV, which the motion estimator ME carries out, involves the following operations. The motion estimator ME reads a set of pixels PS from the reference picture RP that is stored in the reference memory MEMR. The set of pixels PS is stored in the register memory RGM. The interpolator INT receives search data SRD from the motion vector finder MVF, which specifies a candidate motion vector. The interpolator INT provides a set of interpolated pixels XPS on the basis of the search data SRD and the set of pixels PS that is stored in the register memory RGM. The motion vector finder MVF may specify a sequence of various different candidate motion vectors by means of the search data SRD. Accordingly, the interpolator INT may provide various different sets of interpolated pixels for different candidate motion vectors on the basis of a single set of pixels PS that is present in the register memory RGM. A set of interpolated pixels XPS, which the interpolated provides for a particular candidate motion vector, represents a portion of the reference block of pixels that the candidate motion vector defines. The motion vector finder MVF uses this portion to establish a degree of matching between the reference block of pixels, which the candidate motion vector defines, and the block of pixels BI to be encoded. FIG. 2 illustrates the set of pixels PS that is stored in the register memory
RGM. The set of pixels PS comprises 64 pixels, which are organized in the form of a matrix with 16 columns and 4 rows. Each pixel P(i,j) has a column number "i" and a row number "j". Indices "i", "j" thus denote a horizontal and a vertical position, respectively, of the pixel P1J within the set of pixels PS. FIG. 2 illustrates this by designating pixels P1;1, Pis,i, and P1;4. FIG. 2 further illustrates a pixel grid by means of dotted lines. The pixel grid defines integer vertical positions and integer horizontal positions for a pixel. Each pixel is centered on a grid point, which is formed by a crossing of a vertical dotted line and a horizontal dotted line. Consequently, each pixel of the set of pixels PS has an integer vertical position and an integer horizontal position that corresponds with the column number and the row number of the pixel, respectively.
FIG. 3 illustrates the register memory RGM in which the set of pixels PS are stored. The register memory RGM comprises 16 registers RGl, RG2, .., RG16. Each register is capable of storing four pixels, which have the same row number "j". Each register may be, for example, 32 bits wide and each pixel may comprise comprises 8 bits so that a register is capable of storing four pixels as FIG. 3 illustrates.
FIG. 4 illustrates an interpolated pixel XPi 8 that is formed on the basis of eight pixels, which are within a window of 4 x 2 pixels. A rectangle in broken lines illustrates this 4 x 2 pixel window. The interpolated pixel XPi 8 is a weighted combination of the eight pixels within the 4 x 2 pixel window. Respective weighting coefficients for these respective eight pixels define a position of the interpolated pixel XPi 8. The interpolated pixel XPi 8 is not necessarily centered on a grid point of the pixel grid, which is illustrated by means of dotted lines as in FIG. 2. The respective weighting factors define, as it were, a center of gravity that need not necessarily correspond with a grid point.
FIG. 5 illustrates an interpolated pixel XPi 4 that is formed on the basis of four pixels, which are within a window of 2 x 2 pixels. A rectangle in broken lines illustrates this 2 x 2 pixel window. The interpolated pixel XPi 4 is a weighted combination of the four pixels within the 2 x 2 pixel window.
FIG. 6 illustrates an interpolated pixel XPi 2 that is formed on the basis of two pixels, which are within a window of 2 x 1 pixels. A rectangle in broken lines illustrates this 2 x 1 pixel window. The interpolated pixel XPi 2 is a weighted combination of the two pixels within the 2 x 1 pixel window.
In effect, FIGS. 4, 5, and 6 illustrate three different interpolation functions. Each interpolation function has a particular pixel window and a particular set of weighting coefficients. The set of weighting coefficients defines the center of gravity: the position of an interpolated pixel within the pixel window. The respective interpolated pixels illustrated in FIG. 4, 5, and 6 have respective positions that do not coincide with a grid point of the pixel grid. A set of weighting coefficients that provides such an interpolated pixel, corresponds with a particular fractional part in a candidate motion vector. For example, a set of weighting coefficients may correspond with a motion vector of which the horizontal component and the vertical component have fractional parts equal to 0.25 and 0.75, respectively. Another set of weighting coefficients may correspond with a motion vector of which the horizontal component and the vertical component have fractional parts equal to 0.5 and 0.875, respectively. The interpolator INT illustrated in FIG. 1 can provide numerous various different interpolation functions including the three interpolation functions that FIG. 4, 5, and 6 illustrate. The system controller SCT may specify the pixel window of a particular interpolation function by means of window configuration data WD, which the system controller SCT applies to the interpolator INT. For example, the system controller SCT may specify that the interpolator INT should apply the 4 x 2 pixel window that FIG. 4 illustrates. The search data SRD, which the motion vector finder MVF applies to the interpolator INT, may specify the set of weighting coefficients of a particular interpolation function. In a motion vector search, the motion vector finder MVF may group several candidate motion vectors that have identical fractional parts. An identical set of weighting coefficients can be applied for these candidate motion vectors.
FIG. 7 illustrates the interpolator INT in greater detail. The interpolator INT comprises a multiplexer arrangement MUXA, 64 multipliers Ml, M2, .., M64, an accumulator arrangement ACCA, and a control module CTM. The interpolator INT thus comprises a number of multipliers that corresponds with the number of pixels in the set of pixels PS, namely 64.
The interpolator INT basically operates as follows. The control module CTM receives the window configuration data WD, which defines a particular pixel window. The control module CTM further receives the search data SRD, which defines a candidate motion vector or a group of candidate motion vectors. The control module CTM derives multiplexer control data MC for the multiplexer arrangement MUXA from the window configuration data WD and the search data SRD. The control module CTM further derives accumulator control data AC for the accumulation arrangement from the window configuration data WD. The control module CTM further derives respective multiplier coefficients K1, K2, .., K64 for the respective multipliers Ml, M2, .., M64 from the window configuration data WD and the search data SRD.
The multiplexer arrangement MUXA receives the set of pixels PS that FIG. 2 illustrates. The multiplexer arrangement MUXA provides respective input pixels PI1, PI2, .., PI64 for the respective multipliers Ml, M2, .., M64. An input pixel for a multiplier corresponds with a particular pixel in the set of pixels PS. The multiplexer control data MC defines for each multiplier which pixel from the set of input pixels constitutes the input pixel for that multiplier. This will be described in greater detail hereinafter.
The respective multipliers Ml, M2, .., M64 multiply the respective input pixels P1, PI2, .., PI64 with the respective multiplier coefficients K1, K2, .., K64 that the control module CTM provides. Accordingly, the respective multipliers Ml, M2, .., M64 provide respective weighted pixels PWi, PW2, .., PW64. There is a total of 64 weighted pixels; each multiplier produces one weighted pixel, which is the input pixel for that multiplier multiplied by the multiplier coefficient for that multiplier.
The accumulator arrangement ACCA effectively forms different sets of weighted pixels. Each set corresponds with a pixel window that has a size and a shape as defined by window configuration data WD. The accumulator arrangement ACCA sums the weighted pixels in each set. Accordingly, respective sums of weighted pixels are obtained. These respective sums constitute respective interpolated pixels XP1 k_i, .., XPi k N that form the set of interpolated pixels XPS, which the motion vector finder MVF illustrated in FIG. 1 receives.
FIG. 8 illustrates the multiplexer arrangement MUXA. The multiplexer arrangement MUXA comprises two sets of multiplexer groups. A first set comprises multiplexer groups MUXGl, .., MUXG8. Each of these multiplexer groups receives pixels that have odd row numbers in the set of pixels PS illustrated in FIG. 2. Accordingly, multiplexer group MUXGl receives pixels Pi1I, .., P16;1 and pixels P1;3, .., P16;3. The same applies to the other multiplexer groups in the first set. The first set of multiplexer groups MUXGl, .., MUXG8 provides input pixels PIi, .. PI32 for multipliers Ml, .. M32, respectively. That is, the first set of multiplexer groups MUXGl, .., MUXG8 provides a first half of the respective input signals for the respective multipliers. The second set comprises multiplexer groups MUXG9, .., MUXG 16. Each of these multiplexer groups receives pixels that have even row numbers. Accordingly, multiplexer group receives pixels Pi12, .., P16,2 and pixels P1;4, .., P16;4. The same applies to the other multiplexer groups in the second set. The second set of multiplexer groups MUXG9, .., MUXG16 provides input pixels PI33, .. PI64 for multipliers M33, .., M64, respectively. That is, the second set of multiplexer groups MUXG9, .., MUXG16 provides a second half of the respective input signals for the respective multipliers.
FIG. 9 illustrates multiplexer group MUXGl, which belongs to the first set of multiplexer groups. Multiplexer group MUXGl comprises four multiplexers MUXl 1, MUX12, MUX13, MUX14. Each multiplexer provides an input pixel for a particular multiplier: multiplexers MUXl 1, MUX12, MUX13, MUX14 provide input pixels PIi, PI2, PI3, PI4, respectively. Each multiplexer receives eight different pixels from the set of pixels PS, which is present in the register memory RGM. Multiplexer MUXl receives four pixels from the first row and four pixels from the third row. There is a fixed step size of four pixel units between the pixels that are on the same row. A similar step size exists for the other multiplexers MUX 12, MUX13, MUX 14, which equally receives four pixels from the first row and four pixels from the third row. The other multiplexer groups of the first set are identical to multiplexer group MUXGl illustrated in FIG. 9.
FIG. 10 illustrates multiplexer group MUXG9, which belongs to the first set of multiplexer groups. Multiplexer group MUXG9 has a structure that is identical to that of multiplexer group illustrated in FIG. 9. Multiplexer group comprises four multiplexers MUX91, MUX92, MUX93, MUX94 that provides input pixels PI33, PI34, PI35, PI36, respectively. Each of these four multiplexers receives four different pixels from the second row and four different pixels from the fourth row in the set of pixels PS, which is present in the register memory RGM. The respective pixels that the respective multiplexers MUX91, MUX92, MUX93, MUX94 receive follow a pattern that is identical to that in multiplexer group MUXGl illustrated in FIG. 9. The only difference is a shift of one row with regard to the respective pixels that the respective multiplexers MUXl 1, MUX 12, MUXl 3, MUX 14 receive. The other multiplexer groups of the second set are identical to multiplexer group MUXG9 illustrated in FIG. 10.
FIG. 11 illustrates the accumulator arrangement ACCA. The accumulator arrangement ACCA comprises a first adder ring ADDRl, a second adder ring ADDR2, and an interpolated pixel composer IPC. The first adder ring ADDRl comprises 32 adders, which can be divided in eight adder sections, each of which comprises four adders. FIG. 11 illustrates one of these eight adder sections: adder section ADDSl 1. The second adder ring ADDR2 has an identical structure. The second adder ring ADDR2 also comprises 32 adders, which can be divided in eight adder sections, one of which is shown in FIG. 11: adder section ADDS21. The interpolated pixel composer IPC comprises eight composition sections, which are identical. FIG. 11 illustrates one of these eight composition sections: composition section COSl. Composition section COSl comprises three different composition units: an eight pixel window composition unit 8PWl, a four pixel window composition unit 4PWl, and a two pixel window composition unit 2PWl. The other composition sections are identical.
The accumulator arrangement ACCA operates as follows. The first adder ring ADDRl receives weighted pixels PWi, .. PW32. These weighted pixels are derived from input pixels PI1, .., PI32, which the first set of multiplexer groups MUXGl, .. MUXG8 illustrated in FIG. 8 provides. The first adder ring ADDRl can therefore be associated with the first set of multiplexer groups MUXGl, .. MUXG8 and, as a result, can be associated with the pixels on the first row and the third row of the set of pixels PS, which is present in the register memory RGM as illustrated in FIG. 3.
The second adder ring ADDR2 receives weighted pixels PW33, .. PWό4. These weighted pixels are derived from input pixels PI33, .., PIό4, which the second set of multiplexer groups MUXG9, .. MUXG16 illustrated in FIG. 8 provides. The second adder ring ADDR2 can therefore be associated with the second set of multiplexer groups MUXG9, .. MUXG 16 and, as a result, can be associated with the pixels on the second row and the fourth row of the set of pixels PS, which is present in the register memory RGM as illustrated in FIG. 3.
Each adder in the first adder ring ADDRl and the second adder ring ADDR2 adds two weighted pixels so as to provide a weighted pixel combination. FIG. 11 illustrates that adder section ADDSl 1, which comprises four adders, provides four weighted pixel combinations A1+2, A2+3, A3+4, A4+5. Weighted pixel combination A1+2 results from an addition of weighted pixels PWi and PW2. Weighted pixel combination A2+3, A3+4, and A4+5 result from an addition of weighted pixels PW2 and PW3, PW3 and PW4, and PW4 and PW5, respectively. Another adder, which belongs to another adder section, will provide a weighted pixel combination that results from an addition of weighted pixels PW5 and PW6. Yet another adder, which belongs to yet another adder section, will provide a weighted pixel combination that results from an addition of weighted pixels PW32 and PWi, which can be considered as closing the ring. Accordingly, the first adder ring ADDRl provides 32 different weighted pixel combinations. In a similar fashion, the second adder ring ADDR2 equally provides 32 different weighted pixel combinations. FIG. 11 illustrates that adder section ADDS21, which comprises four adders, provides four weighted pixel combinations A33+34, A34+35, A35+36, A36+37. Weighted pixel combination A33+34 results from an addition of weighted pixels PW33 and PW34. Weighted pixel combination A34+35, A35+36, and A36+37 result from an addition of weighted pixels PW34 and PW35, PW35 and PW36, and PW36 and PW37, respectively.
Composition section COSl receives the four weighted pixel combinations A1+2, A2+3, A3+4, A4+5, which adder section ADDSl 1 in the first adder ring ADDRl provides, and receives the four weighted pixel combinations A33+34, A34+35, A35+36, A36+37, which adder section ADDS21 in the second adder ring ADDR2 provides. Composition section COSl can thus be associated with adder section ADDSl 1 and adder section ADDS21 in the first adder ring ADDRl and the second adder ring ADDR2, respectively. In a similar fashion, each of the other composition sections in the interpolated pixel composer IPC can be associated with a particular adder section in the first adder ring ADDRl and a particular adder section in the second adder ring ADDR2.
Composition section COSl provides one or more interpolated pixels on the basis of the weighted pixel combinations Ai+2, A2+3, A3+4, A4+5, A33+34, A34+35, A35+36, A36+37 that composition section COSl receives. Only one of the three composition units is involved in this process: either the eight pixel window composition unit 8PWl, or the four pixel window composition unit 4PWl , or the two pixel window composition unit 2PWl . The composition unit that is involved in providing one or more interpolated pixels depends on the pixel window that the window configuration data WD specifies.
Let it be assumed, for example, that the window configuration data WD specifies a 4 x 2 pixel window, which comprises eight pixels from the set of pixels PS, which is present in the register memory RGM. In that case, the eight pixel window composition unit 8PWl will provide one interpolated pixel on the basis of the weighted pixel combinations A1+2, A2+3, A3+4, A4+5, A33+34, A34+35, A35+36, A36+37 that composition section COSl receives. As another example, the four pixel window composition unit 4PWl will provide two interpolated pixels if the window configuration data WD specifies a 2 x 2 pixel window. FIG. 12 illustrates the eight pixel window composition unit 8PWl. The eight pixel window composition unit 8PWl comprises three adders. A first adder provides a sum of weighted pixel combinations. A second adder provides a different sum of weighted pixel combinations. A third adder provides a sum of the respective aforementioned sums. This sum constitutes interpolated pixel XPi 8 i, which is a weighted combination of input pixels PI1, PI2, PI3, PI4, PI33, PI34, PI35, PI36.
FIG. 13 illustrates the four pixel window composition unit 4PWl. The four pixel window composition unit 4PWl comprises two identical circuits. A first circuit, which comprises two multiplexers MUXl 11, MUXl 12 and an adder, provides interpolated pixel XPi 4 1. A second circuit, which comprises two multiplexers MUXl 13, MUXl 14 and an adder, provides interpolated pixel XPi 4_2. In the first circuit, multiplexer MUXl 11 receives weighted pixel combinations A1+2, A4+5, , A34+35, A35+36 and applies one of these weighted pixel combinations to the adder. Multiplexer MUXl 12 receives weighted pixel combinations A2+3, A3+4, A33+34, A36+37 and applies one of these weighted pixel combinations to the adder. The adder provides a sum of the respective weighted pixel combinations that the adder receives from multiplexers MUXl 11, MUXl 12. The same applies to the second circuit in which multiplexers MUXl 13, MUXl 14 play the same roles as multiplexers MUXl 11, MUXl 12, respectively, in the first circuit. FIG. 14 illustrates the two pixel window composition unit 2PWl . The two pixel window composition unit 2PWl comprises four multiplexers MUXl 15, MUXl 16, MUXl 17, MUXl 18. Each multiplexer receives a different pair of weighted pixel combinations and provides one of the weighted pixel combinations in the pair as an interpolated pixel. More specifically, multiplexer MUXl 15 receives weighted pixel combinations A1+2, A2+3. One of these weighted pixel combinations is selected to constitute interpolated pixel XPi 2 1. Multiplexer MUXl 16 receives weighted pixel combinations A3+4, A4+5, one of which is selected to constitute interpolated pixel XPi 2 2- Multiplexer MUXl 17 receives weighted pixel combinations A33+34, A34+35, one of which is selected to constitute interpolated pixel XPi 2_3. Multiplexer MUXl 18 receives weighted pixel combinations A35+36, A36+37, one of which is selected to constitute interpolated pixel XPi 2_4.
FIG. 15 illustrates eight interpolated pixels XPi s i, XPi 8_2, XPi s 3, XPi 8 4, XPi 8 5, XPi 8 6, XPi 8 7, XPi 8 8 that have different positions. Each interpolated pixel is formed on the basis of a 4 x 2 pixel window. The respective 4 x 2 pixel windows for the respective interpolated pixels are presented by means of rectangles in broken lines. The interpolator INT can provide the eight interpolated pixels in parallel. This involves the following control actions.
The control module CTM illustrated in FIG. 7 appropriately configures the accumulator arrangement ACCA illustrated in FIG. 11 by means of accumulator control data AC. This causes composition section COSl to apply the eight pixel window composition unit 8PWl illustrated in FIG. 12. Seven other composition sections in the interpolated pixel composer IPC will each apply a similar eight pixel window composition unit.
The control module CTM further applies appropriate multiplier coefficients K1, K2, .., K54 to the multipliers Ml, M2, .., M64, respectively, in the interpolator INT. The multiplier coefficients K1, K2, .., K64 comprise eight identical sets of eight multiplier coefficients. Each set of multiplier coefficients belongs to a particular 4 x 2 pixel window and a particular interpolated pixel illustrated in FIG. 15. The multipliers Ml, M2, .., M64 may correspondingly be considered to comprise eight sets of eight multipliers. Each set of multipliers receives a set of multiplier coefficients and is associated with a particular interpolated pixel illustrated in FIG. 16.
The control module CTM further causes the multiplexer arrangement MUXA to apply appropriate input pixels PI1, PI2, .., PI64 to the multipliers Ml, M2, .., M64, respectively. The multiplexer control data MC, which the multiplexer arrangement MUXA receives from the control module CTM, effectively causes the multiplexer arrangement MUXA to form the respective pixel windows illustrated in FIG. 15.
For example, interpolated pixel XPi s i is formed on the basis of weighted pixel combinations Ai+2, A3+4, A33+34, A35+36, which is illustrated in FIG. 12. These weighted pixel combinations are formed on the basis of input pixels PI1, PI2, PI3, PI4, PI33, PI34, PI35, PI36, which multiplexer groups MUXGl and MUXG9 illustrated in FIGS. 9 and 10, respectively, provide. The multiplexer control data MC may cause multiplexer MUXl 1 to select pixel Ps;1 as input pixel PI1. Multiplexers MUX12, MUX13, MUX14 may select pixels P2;1, P3;1, P4ji as input pixels PI2, PI3, PI4, respectively. In addition, multiplexers MUXl 1, MUX12, MUX13, MUX14 may select pixels Ps,2, P2,2, P3 ,2, P4,2 as input pixels PI33, PI34, PI35, PI36, respectively. Accordingly, the multiplexer arrangement MUXA effectively defines the pixel window associated with interpolated pixel XPi s i in response to the multiplexer control data MC. The respective pixel windows for the other interpolated pixels XPi 8_2, .., XPi 8_8 are defined in a similar fashion through an appropriate configuration of the multiplexer arrangement MUXA.
Let it be assumed that the motion estimator ME illustrated in FIG. 1 is carrying out a motion vector search. This may require the interpolator INT to provide a further eight interpolated pixels similar to those illustrated in FIG. 15 but having different positions. That is, the respective pixel windows illustrated in FIG. 15 may need to be shifted one or more pixel units in a horizontal or in a vertical direction. Such a shift in position only requires a reconfiguration of the multiplexer arrangement MUXA through an appropriate modification of the multiplexer control data MC. The control module CTM need not modify multiplier coefficients K1, K2, .., K54 or accumulator control data AC. That is, the multiplier coefficients K1, K2, .., K54 and the accumulator control data AC can be static during at least a portion of the motion vector search. This allows the control module CTM to be of relatively simple design. Moreover, the interpolator INT can provide various different interpolated pixels belonging to various different candidate motion vectors in a relatively fast manner.
FIG. 16 illustrates 15 interpolated pixels that have different positions. Only two interpolated pixels XPi 4 1, XPi 4_2, are designated with a reference sign for reasons of simplicity. Each interpolated pixel is formed on the basis of a 2 x 2 pixel window. The respective 2 x 2 pixel windows for the respective interpolated pixels are presented by means of rectangles in broken lines. The interpolator INT can provide the 15 interpolated pixels in parallel, which involves the following control actions.
The control module CTM illustrated in FIG. 7 appropriately configures the accumulator arrangement ACCA illustrated in FIG. 11 by means of accumulator control data AC. This causes composition section COSl to apply the four pixel window composition unit 4PWl illustrated in FIG. 13. Seven other composition sections in the interpolated pixel composer IPC will each apply a similar four pixel window composition unit. Each four pixel window composition unit 4PWl comprises four multiplexers, each of which selects one out of four weighted pixel combinations as illustrated in FIG. 13. The accumulator control data AC controls the respective multiplexers in the respective four pixel window composition units. Accordingly, the accumulator control data AC contributes in defining the respective pixel windows which are associated with the interpolated pixels illustrated in FIG. 16.
The control module CTM further applies appropriate multiplier coefficients K1, K2, .., K54 to the multipliers Ml, M2, .., M64, respectively, in the interpolator INT. The multiplier coefficients K1, K2, .., K54 comprise 15 identical sets of four multiplier coefficients. Each set of multiplier coefficients belongs to a particular 2 x 2 pixel window and a particular interpolated pixel illustrated in FIG. 16. The multipliers Ml, M2, .., M64 may correspondingly be considered to comprise 15 sets of four multipliers. Each set of multipliers receives a set of multiplier coefficients and is associated with a particular interpolated pixel illustrated in FIG. 16. The control module CTM further causes the multiplexer arrangement MUXA to apply appropriate input pixels PI1, PI2, .., PIό4 to the multipliers Ml, M2, .., M64, respectively. The multiplexer control data MC, which the multiplexer arrangement MUXA receives from the control module CTM, and the accumulator control data AC effectively cause the multiplexer arrangement MUXA to form the respective pixel windows illustrated in FIG. 16.
For example, interpolated pixel XPi 4 1 is formed as follows. Referring to FIG. 13, multiplexer MUXl 11 selects weighted pixel combination A34+35 and multiplexer MUXl 12 selects weighted pixel combination A2+3. Weighted pixel combination A2+3 is formed on the basis of input pixels PI2 and PI3. Weighted pixel combination A34+35 is formed on the basis of input pixels PI34 and PI35. Referring to FIG. 9, multiplexers MUXl 1 and MUX13 select pixels P2;1 and P3;1 as input pixels PI2 and PI3, respectively. Referring to FIG. 10, MUX91 and MUX93 select pixels P2,2 and P3;2 as input pixels PI34 and PI35, respectively. Interpolated pixel XPi 4 2 is formed on the basis of input pixels in a similar manner through appropriate multiplexer control.
FIG. 17 illustrates 30 interpolated pixels that have different positions. Only four interpolated pixels XPi 2 1, XPi 2 2, XPi 2 3, XPi 2 4 are designated with a reference sign for reasons of simplicity . Each interpolated pixel is formed on the basis of a 2 x 1 pixel window. The respective 2 x 1 pixel windows for the respective interpolated pixels are presented by means of rectangles in broken lines. The interpolator INT can provide the 30 interpolated pixels in parallel, which involves the following control actions.
The control module CTM illustrated in FIG. 7 appropriately configures the accumulator arrangement ACCA illustrated in FIG. 11 by means of accumulator control data AC. This causes composition section to apply the two pixel window composition unit 2PWl illustrated in FIG. 14. Seven other composition sections in the interpolated pixel composer IPC will each apply a similar two pixel window composition unit. Each two pixel window composition unit 2PWl comprises four multiplexers, each of which selects one out of two weighted pixel combinations as illustrated in FIG. 14. The selected weighted pixel combination constitutes an interpolated pixel. The accumulator control data AC controls the respective multiplexers in the respective two pixel window composition units. Accordingly, the accumulator control data AC contributes in defining the respective pixel windows which are associated with the interpolated pixels illustrated in FIG. 17.
The control module CTM further applies appropriate multiplier coefficients K1, K2, .., Kό4 to the multipliers Ml, M2, .., M64, respectively, in the interpolator INT. The multiplier coefficients K1, K2, .., K64 comprise 30 identical sets of two multiplier coefficients. Each set of multiplier coefficients belongs to a particular 2 x 1 pixel window and a particular interpolated pixel illustrated in FIG. 17. The multipliers Ml, M2, .., M64 may correspondingly be considered to comprise 30 sets of two multipliers. Each set of multipliers receives a set of multiplier coefficients and is associated with a particular interpolated pixel illustrated in FIG. 17.
The control module CTM further causes the multiplexer arrangement MUXA to apply appropriate input pixels PI1, PI2, .., PIό4 to the multipliers Ml, M2, .., M64, respectively. The multiplexer control data MC, which the multiplexer arrangement MUXA receives from the control module CTM, and the accumulator control data AC effectively cause the multiplexer arrangement MUXA to form the respective pixel windows illustrated in FIG. 17.
For example, interpolated pixel XPi 2 1 is formed as follows. Referring to FIG. 14, multiplexer MUXl 15 selects weighted pixel combination A2+3. Weighted pixel combination A2+3 is formed on the basis of input pixels PI2 and PI3. Referring to FIG. 9, multiplexers MUX12 and MUX 13 select pixels P2;1 and P3;1 as input pixels PI2 and PI3, respectively. Interpolated pixels XPi 2 2, XPi 2 3, XPi 2 4 are formed on the basis of input pixels in a similar manner through appropriate multiplexer control. It should be noted that the interpolator INT illustrated in FIG. 7 is particularly suited to establish respective weighted sums for pixels on a sub-sampled grid. A sub-sampled grid is obtained, for example, by leaving out even rows and even columns in the pixel grid that FIG. 2 illustrates by means of dotted lines. Such a sub-sampling can be realized without any particular difficulty through an appropriate control of the multiplexer arrangement MUXA.
It should further be noted that the motion compensator MC in the video coding system VCS, which FIG. 1 illustrates, may comprise an interpolator similar to the interpolator INT illustrated in FIG. 7. The interpolator can provide the predicted block of pixels BP when the motion vector MV has sub-pixel accuracy.
CONCLUDING REMARKS
The detailed description hereinbefore with reference to the drawings is merely an illustration of the invention and the additional features, which are defined in the claims. The invention can be implemented in numerous different manners. In order to illustrate this, some alternatives are briefly indicated.
The invention may be applied to advantage in any type of product or method that relates to video processing and which involves pixel filtering, in general, or pixel interpolation in particular. A video encoding system is merely an example. The invention may equally be applied in, for example, a video decoder. There are numerous different pixel windows that a pixel filter in accordance with the invention can provide. Figures 4, 5, and 6 merely illustrate a few examples. As another example, a pixel window may be 2 pixels wide and 4 pixels high. Any shape or size is possible. The size need not necessarily be a power of 2, although this is advantageous. There are numerous different manners to implement a multiplexer arrangement within a pixel filter in accordance with the invention. Figures 8, 9, and 10 merely illustrate an example, which is based on a set of pixels stored in a register memory as illustrated in figure 3. In this example, respective multiplexers receive respective groups of 8 pixels. In other embodiments, a multiplexer may receive a greater number of pixels or a smaller number of pixels. A different number of pixels may be appropriate if, for example, a different register memory is used in terms of size or configuration, or both.
The term "picture" should be understood in a broad sense. This term includes a frame, a field, and any other entity that may wholly or partially constitute an image or a picture. There are numerous ways of implementing functions by means of items of hardware or software, or both. In this respect, the drawings are very diagrammatic, each representing only one possible embodiment of the invention. Thus, although a drawing shows different functions as different blocks, this by no means excludes that a single item of hardware or software carries out several functions. Nor does it exclude that an assembly of items of hardware or software or both carry out a function.
The remarks made herein before demonstrate that the detailed description with reference to the drawings, illustrate rather than limit the invention. There are numerous alternatives, which fall within the scope of the appended claims. Any reference sign in a claim should not be construed as limiting the claim. The word "comprising" does not exclude the presence of other elements or steps than those listed in a claim. The word "a" or "an" preceding an element or step does not exclude the presence of a plurality of such elements or steps.

Claims

CLAIMS:
1. A video processor (ME) comprising a pixel filter (INT) for calculating a weighted sum of pixels that are present in a particular area of a picture (RP), the pixel filter comprising: a multiplexer arrangement (MUXA) for forming an array of input pixels (PI1, PI2, .. PI64) on the basis of a selection of pixels that are present in the particular area of the picture; an array of multipliers (Ml, M2, .., M64) for multiplying the array of input pixels with an array of weighting coefficients (K1, K2, .., K64) so as to obtain an array of weighted pixels (PWi, PW2, .., PW64); - an accumulator arrangement (ACCA) for forming respective combinations of weighted pixels in the array of weighted pixels.
2. A video processor according to claim 1, the accumulator arrangement (ACCA) comprising a ring of adders (ADDRl; ADDR2) couples to receive at least a portion of the array of weighted pixels (PWi, PW2, .., PW64), an adder within the ring providing a combination of weighted pixels.
3. A video processor according to claim 1, the multiplexer arrangement (MUXA) comprising a first set of multiplexer groups (MUXGl, .. MUXG8) coupled to receive pixels from odd lines and a second set of multiplexer groups (MUXG9, .. MUXG 16) coupled to receive pixels from even lines.
4. A video processor according to claim 3, a multiplexer group (MUXGl) comprising a plurality of multiplexers (MUXl 1, MUX12, MUX13, MUX14), each multiplexer of the multiplexer group being coupled to receive a different group of pixels and being arranged to select one of these pixels as an input pixel.
5. A video processor according to claim 2 and 3, the accumulator arrangement (ACCA) comprising a first adder ring (ADDRl) for forming respective combinations of weighted pixels that are formed on the basis of input pixels provided by the first set of multiplexer groups (MUXGl, .. MUXG8), and a second adder ring (ADDR2) for forming respective combinations of weighted pixels that are formed on the basis of input pixels provided by the second set of multiplexer groups (MUXG9, .. MUXG16).
6. A video processor according to claim 2, the accumulator arrangement (ACCA) comprising a plurality of composition sections, a composition section (COSl) being coupled to receive a plurality of combinations of weighted pixels (A1+2, A2+3, A3+4, A4+5, A33+34, A34+35, A35+36, A36+37) and comprising different composition units (8PWl, 4PWl, 2PW1) for different pixel windows.
7. A video processor according to claim 6, a composition section (COSl) comprising: a first composition unit (8PWl ) that comprises an adder tree for summing the plurality of combinations of weighted pixels that the composition section receives; a second composition unit (4PWl ) that comprises multiplexers (MUXl 11, .., MUX 114) for selecting particular combinations of weighted pixels and that comprises adders for summing respective groups of selected combinations of weighted pixels; and a third composition unit (2PW 1) that exclusively comprises multiplexers (MUXl 15, .., MUX 118) for selecting particular combinations of weighted pixels.
8. A method of video processing that involves calculating a weighted sum of pixels that are present in a particular area of a picture (RP), the method comprising: a multiplexer control step for causing a multiplexer arrangement (MUXA) to form an array of input pixels (PI1, PI2, .. PI64) on the basis of a selection of pixels that are present in the particular area of the picture; a multiplier control step for causing an array of multipliers to multiply the array of input pixels with an array of weighting coefficients (K1, K2, .., K54) so as to obtain an array of weighted pixels (PWi, PW2, .., PW64); - an accumulator control step for causing an accumulator arrangement (ACCA) to form respective combinations of weighted pixels in the array of weighted pixels.
9. A computer program product for a programmable processor, the computer program product comprising a set of instructions that, when loaded into the programmable processor, causes the programmable processor to carry out the method according to claim 8.
10. A video apparatus (VCS) comprising a memory (MEMR) for storing at least a portion of a picture (RP) and a video processor (ME) according to claim 1 for providing a set of interpolated pixels (XPS) on the basis of the at least portion of the picture that is stored in the memory.
PCT/IB2007/051186 2006-04-04 2007-04-03 Video processor comprising a pixel filter WO2007113767A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP06300323 2006-04-04
EP06300323.0 2006-04-04

Publications (1)

Publication Number Publication Date
WO2007113767A1 true WO2007113767A1 (en) 2007-10-11

Family

ID=38349450

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2007/051186 WO2007113767A1 (en) 2006-04-04 2007-04-03 Video processor comprising a pixel filter

Country Status (1)

Country Link
WO (1) WO2007113767A1 (en)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4837619A (en) * 1987-10-28 1989-06-06 North American Philips Corporation Scan rate conversion apparatus and method
US5195050A (en) * 1990-08-20 1993-03-16 Eastman Kodak Company Single chip, mode switchable, matrix multiplier and convolver suitable for color image processing
US5801678A (en) * 1996-04-26 1998-09-01 Industrial Technology Research Institute Fast bi-linear interpolation pipeline
GB2337391A (en) * 1998-05-12 1999-11-17 Genesis Microchip Inc Interlaced to progressive scanning conversion with edge enhancement by vertical temporal interpolation
US6078941A (en) * 1996-11-18 2000-06-20 Samsung Electronics Co., Ltd. Computational structure having multiple stages wherein each stage includes a pair of adders and a multiplexing circuit capable of operating in parallel
KR20020006236A (en) * 2000-07-12 2002-01-19 황인길 Apparatus and method for correcting image quality of image scaler
US6483951B1 (en) * 1998-06-26 2002-11-19 Lsi Logic Corporation Digital video filter sequence for bandwidth constrained systems
US6526430B1 (en) * 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
US7107302B1 (en) * 1999-05-12 2006-09-12 Analog Devices, Inc. Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4837619A (en) * 1987-10-28 1989-06-06 North American Philips Corporation Scan rate conversion apparatus and method
US5195050A (en) * 1990-08-20 1993-03-16 Eastman Kodak Company Single chip, mode switchable, matrix multiplier and convolver suitable for color image processing
US5801678A (en) * 1996-04-26 1998-09-01 Industrial Technology Research Institute Fast bi-linear interpolation pipeline
US6078941A (en) * 1996-11-18 2000-06-20 Samsung Electronics Co., Ltd. Computational structure having multiple stages wherein each stage includes a pair of adders and a multiplexing circuit capable of operating in parallel
GB2337391A (en) * 1998-05-12 1999-11-17 Genesis Microchip Inc Interlaced to progressive scanning conversion with edge enhancement by vertical temporal interpolation
US6483951B1 (en) * 1998-06-26 2002-11-19 Lsi Logic Corporation Digital video filter sequence for bandwidth constrained systems
US7107302B1 (en) * 1999-05-12 2006-09-12 Analog Devices, Inc. Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
US6526430B1 (en) * 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
KR20020006236A (en) * 2000-07-12 2002-01-19 황인길 Apparatus and method for correcting image quality of image scaler

Similar Documents

Publication Publication Date Title
US7623575B2 (en) Method and apparatus for sub-pixel motion compensation
US8693548B2 (en) Methods and apparatus for motion search refinement in a SIMD array processor
US8208553B2 (en) Methods and apparatus for quarter-pel refinement in a SIMD array processor
KR101578052B1 (en) Motion estimation device and Moving image encoding device having the same
JPH09102954A (en) Method for calculating picture element value of block from one or two predictive blocks
US8509567B2 (en) Half pixel interpolator for video motion estimation accelerator
US7792192B2 (en) System and method for sub-pixel interpolation in motion vector estimation
US8260075B2 (en) Two-dimensional filter arithmetic device and method
US5550591A (en) Motion compensator for digital image restoration
Lee et al. Multi-pass and frame parallel algorithms of motion estimation in H. 264/AVC for generic GPU
CN100502511C (en) Method for organizing interpolation image memory for fractional pixel precision predication
CN102665080B (en) Electronic device for motion compensation and motion compensation method
US6671318B2 (en) Determining the degree of resemblance between a data sample and interpolations of other data samples
CN110381321B (en) Interpolation calculation parallel implementation method for motion compensation
EP2953365B1 (en) Moving image coding device
WO2007113767A1 (en) Video processor comprising a pixel filter
KR100804451B1 (en) 1/4 quarter pixel interpolation method for imaging process and processor thereof
CN114598877A (en) Inter-frame prediction method and related equipment
CN102215404B (en) Decoding method and system of videos inside embedded system
US5771079A (en) Apparatus and method for predicting pixel data of dynamic image using a half pixel pitch
JP3634878B2 (en) Image encoding device
Pyen et al. An efficient hardware architecture for full-search variable block size motion estimation in H. 264/AVC
JP3295228B2 (en) MOTION VECTOR MOTION VECTOR DETECTION DEVICE, MOTION COMPENSATION PREDICTION DEVICE USING THE SAME, AND MOTION COMPENSATION PREDICTION INTER-FRAME ENCODING DEVICE
JP3374014B2 (en) Image correlator
JP2596352B2 (en) Decimal precision motion vector search device

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 07735366

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 07735366

Country of ref document: EP

Kind code of ref document: A1