US20050238102A1 - Hierarchical motion estimation apparatus and method - Google Patents

Hierarchical motion estimation apparatus and method Download PDF

Info

Publication number
US20050238102A1
US20050238102A1 US11/111,768 US11176805A US2005238102A1 US 20050238102 A1 US20050238102 A1 US 20050238102A1 US 11176805 A US11176805 A US 11176805A US 2005238102 A1 US2005238102 A1 US 2005238102A1
Authority
US
United States
Prior art keywords
pixel data
block
similarity
degrees
blocks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/111,768
Inventor
Jae-Hun Lee
Chan-Sik Park
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020040033118A external-priority patent/KR20050108075A/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Priority to US11/111,768 priority Critical patent/US20050238102A1/en
Assigned to SAMSUNG ELECTRONICS CO., LTD. reassignment SAMSUNG ELECTRONICS CO., LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LEE, JAE-HUN, PARK, CHAN-SIK
Publication of US20050238102A1 publication Critical patent/US20050238102A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture signal circuitry for video frequency region
    • H04N5/144Movement detection
    • H04N5/145Movement estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/53Multi-resolution motion estimation; Hierarchical motion estimation

Definitions

  • the present invention relates to motion estimation, and more particularly, to a motion estimation apparatus and method for efficient hierarchical motion estimation.
  • Motion estimation is a process of searching a previous frame for a macro-block most similar to a macro-block in a current frame using a specified measurement function and obtaining a motion vector, which indicates the difference between the position of the macro-block in the previous frame and that of the macro-block in the current frame.
  • differences between pixel values in the macro-block of a current frame and pixel values in the macro-blocks of the search area are calculated. Then, absolute values of the differences are taken and added. A macro-block having the smallest value obtained as a result of the addition is determined as the most similar macro-block.
  • a degree of similarity between the macro-blocks in the current and previous frames is determined based on a similarity value, i.e., a matched reference value, which is calculated using pixel values included in the macro-blocks of the current and previous frames.
  • the similarity value i.e., the matched reference value, is calculated using a specified measurement function. Examples of the measurement function include a sum of absolute differences (SAD), a sum of absolute transformed differences (SATD), and a sum of squared differences (SSD).
  • Hierarchical motion estimation an original frame is divided into frames with various degrees of resolution, and motion vectors of frames for each degree of resolution are created in a hierarchical manner.
  • One of the known methods of hierarchical motion estimation is a multi-resolution multiple candidate search.
  • the search is categorized into a full search and a local search.
  • the full search searches the entire search area whereas the local search searches a part of the search area.
  • FIG. 1 illustrates conventional hierarchical motion estimation.
  • each of a current frame to be encoded and a previous frame is divided into a lower level 104 having an original degree of resolution, a middle level 102 having a degree of resolution reduced by decimating an image of the lower level 104 by half, and an upper level 100 having a degree of resolution reduced by decimating an image of the middle level by half.
  • motion estimation is performed using images with different degrees of resolution and different search scopes per level. Thus, high-speed motion estimation is possible.
  • a search area is [ ⁇ 16, +16].
  • a macro-block most similar to a current 4 ⁇ 4 macro-block in the current frame which is a quarter of the size of an original macro-block, is searched for in the previous frame.
  • the search area is [ ⁇ 4, +4], which is a quarter of the original search area.
  • a SAD function is used to measure a matched reference value, that is, a degree of similarity.
  • the SAD value is obtained by subtracting pixel values of a search macro-block from those of the current 4 ⁇ 4 macro-block, taking absolute values of the subtracted values, and adding all of the absolute values. In this way, macro-blocks most and second most similar to the current 4 ⁇ 4 macro-block in the current frame are found in the previous frame, and motion vectors for the two cases are obtained.
  • the search area is half the size of the original search area. That is, a search area of [ ⁇ 2, +2] in the previous frame is searched based on three search points.
  • the three search points refer to two search points corresponding to the two motion vectors obtained in the upper level 100 and one search point indicated by a predicted motion vector (PMV) obtained by taking the median of motion vectors of three macro-blocks located to the left, top, and top-right of the current macro-block.
  • PMV predicted motion vector
  • the three macro-blocks have already been encoded and their motion vectors have already been decided.
  • a macro-block most similar to the current macro-block and a motion vector corresponding to the macro-block are obtained by searching the search area of [ ⁇ 2, +2].
  • the search area of [ ⁇ 2, +2] is partly searched based on a search point corresponding to the macro-block found in the middle level 102 , i.e., a top-left apex of the macro-block. Then, a macro-block most similar to the current macro-block and a motion vector corresponding to the macro-block are obtained. In doing so, the search area is reduced, thereby decreasing the amount of time and hardware resources required.
  • H.265 and MPEG-2 support a macro-block adaptive frame field (MBAFF) mode in which frame motion estimation and field motion estimation are conducted in units of macro-blocks, not pictures.
  • MFAFF macro-block adaptive frame field
  • matched reference values must be additionally calculated whenever conducting frame motion estimation and field motion estimation in middle and lower levels. In this case, the amount of calculation required increases sharply.
  • An aspect of the present invention provides a motion estimation apparatus and method, which enables efficient motion estimation for frames and fields of each level.
  • a motion estimation apparatus including: a pixel data storing unit storing pixel data of a block to be searched for and pixel data of blocks in a search area; a two-dimensional processing element array receiving pixel data from the pixel data storing unit and calculating degrees of similarity between the block to be searched for and the blocks in the search area; a merging and comparing unit merging the degrees of similarity, generating degrees of similarity for blocks of various sizes, comparing the generated degrees of similarity, and outputting motion vectors for the blocks of various sizes;
  • an address controlling unit controlling an address of the pixel data storing unit such that the pixel data of the pixel data storing unit can be sequentially transmitted to the two-dimensional processing element array.
  • the pixel data storing unit may store pixel data of an original frame in which the block to be searched for is included and a target frame in which the search area is included, and the resolution of the original frame and the target frame may be respectively reduced to half and a quarter of their original resolution.
  • the pixel data storing unit may include a search target macro-block storing unit storing the pixel data of the block to search in a 4 ⁇ 1-pixel register array; and a search area macro-block data storing unit storing the pixel data of the blocks in the search area in an 11 ⁇ 1-pixel register array.
  • the search area macro-block data storing unit may be a dual port memory to alternately output the pixel data of the blocks in the search area to different ports of the dual port memory at specified clock cycles.
  • the processing element array may calculate the degrees of similarity in 4 ⁇ 8-pixel block units in an upper level in which the resolution of the original frame and the resolution of the target frame are reduced to a quarter of their original resolution and calculate the degrees of similarity in 4 ⁇ 4 block units in a middle level in which the resolution of the original frame and the resolution of the target frame are reduced to half of their original resolution.
  • a motion estimation method including: receiving pixel data of a block to be searched for and pixel data of blocks in a search area and calculating degrees of similarity between the block to be searched for and the blocks in the search area; and merging the degrees of similarity, generating degrees of similarity for blocks of various sizes, comparing the generated degrees of similarity, and outputting motion vectors for the blocks of various sizes.
  • the degree of similarity for each level may be calculated using pixel data of an original frame in which the block to search for is included and a target frame in which the search area is included, and the resolution of the original frame and the target frame may be reduced to half and a quarter of their original resolution.
  • the pixel data of the blocks in the search area may be alternately output to different ports of a dual port memory at specified clock cycles.
  • N ⁇ N processing elements may be used to calculate the degrees of similarity, and the degrees of similarity for N ⁇ N search points may be calculated simultaneously.
  • a motion estimation apparatus including: a pixel data storing unit including a search target macro-block data storing unit storing pixel data of a macro-block in a current frame, and a search area macro-block data storing unit storing pixel data of macro-blocks in a search area of a frame to be searched; a two-dimensional processing element array receiving pixel data from the pixel data storing unit and calculating a degree of similarity between the macro-block in the current frame and macro-blocks in the search area; a merging and comparing unit merging the degree of similarity, generating degrees of similarity values corresponding to various block sizes, comparing the generated degrees of similarity, and outputting motion vectors for the blocks of various sizes; and an address controlling unit determining an address to read in order to retrieve pixel data needed to calculate the degree of similarity from the pixel data storing unit and outputting the address is input to the two-dimensional processing element array.
  • a method of reducing wasted clock cycles in hierarchal motion estimation including: storing in a storage section pixel data of a block to be searched for and pixel data of blocks in a search area; receiving pixel data from the pixel data storing unit and calculating, via a two-dimensional processor, degrees of similarity between the block to be searched for and the blocks in the search area; merging the degrees of similarity, generating degrees of similarity for blocks of various sizes, comparing the generated degrees of similarity, and outputting motion vectors for the blocks of various sizes; and sequentially transmitting the pixel data to the two-dimensional processing element array by controlling a address of the storage section.
  • FIG. 1 illustrates conventional hierarchical motion estimation
  • FIG. 2 is a block diagram of a motion estimation apparatus according to an embodiment of the present invention.
  • FIG. 3 is a detailed block diagram of the motion estimation apparatus of FIG. 2 ;
  • FIG. 4 illustrates the structure of a two-dimensional processing element (PE) array according to an embodiment of the present invention
  • FIG. 5 illustrates a detailed configuration of a PE
  • FIG. 6A illustrates search points processed by a PE array in an upper level
  • FIG. 6B illustrates search points processed by the PE array in a middle level
  • FIG. 6C illustrates search points processed by the PE array in a lower level
  • FIGS. 7A through 7C illustrate the connection between the two-dimensional PE array and an SRAM storing pixel data in a search area
  • FIG. 8 illustrates a search block and a search area processed in the upper level
  • FIG. 9 illustrates the pixel data of the search area, which is input to PE (n, 0) in the upper level
  • FIGS. 10A through 10C illustrate the order of processing pixel data by a PE by dividing the search area in the upper level
  • FIG. 11 illustrates a search block and a search area processed in the middle level
  • FIG. 12 illustrates the pixel data in the search area, which is input to PE (n, 0) in the middle level;
  • FIG. 13 illustrates a search block and a search area processed in the lower level
  • FIG. 14 illustrates the pixel data in the search area, which is input to PE (n, 0) in the lower level.
  • FIG. 2 is a block diagram of a motion estimation apparatus according to an embodiment of the present invention.
  • the motion estimation apparatus includes a pixel data storing unit 205 , a two-dimensional processing element (PE) array 230 , a merging and comparing unit 240 , and an address controlling unit 250 .
  • PE processing element
  • the pixel data storing unit 205 includes a search target macro-block data storing unit 210 storing pixel data of a macro-block in a current frame, i.e., pixel data of a search target macro-block, and a search area macro-block data storing unit 220 storing pixel data of macro-blocks in a search area of a frame to be searched.
  • the search target macro-block data storing unit 210 may be an SDRAM. A detailed description of the search target macro-block data storing unit 210 will be made later with reference to FIG. 3 .
  • the search area macro-block data storing unit 220 may be implemented as a dual port memory to efficiently transmit pixel data in a search area to the two-dimensional PE array 230 .
  • the two-dimensional PE array 230 includes 8 ⁇ 8 PEs.
  • the two-dimensional PE array 230 receives pixel data from the pixel data storing unit 205 and calculates a degree of similarity between the macro-block in the current frame and the macro-blocks in the search area such that a macro-block most similar to the macro-block in the current frame can be found in the search area.
  • a degree of similarity is described using a sum of absolute differences (SAD), and a SAD value is calculated.
  • SAD values for a plurality of search points can be calculated at a time.
  • SAD values are calculated in 4 ⁇ 8 units or 4 ⁇ 4 units according to a level at which SAD calculations are performed.
  • a method of calculating a degree of similarity, i.e., the SAD, using one PE will be described later with reference to FIG. 5 .
  • the merging and comparing unit 240 merges calculated SAD values and creates SAD values corresponding to various block sizes used in H.264, for example, 16 ⁇ 16, 16 ⁇ 8, 8 ⁇ 16, 8 ⁇ 8, 8 ⁇ 4, 4 ⁇ 8, and 4 ⁇ 4.
  • a block size used in the motion estimation is 16 ⁇ 32.
  • a block size used in the motion estimation is 8 ⁇ 16 or 4 ⁇ 8 for each level. Therefore, a SAD value corresponding to a block of a desired size can be created by merging SAD values calculated in 4 ⁇ 8 or 4 ⁇ 4 block units. Using the SAD value, an optimal motion vector is output.
  • the address controlling unit 250 determines an address to read in order to retrieve pixel data needed to calculate SADs from the pixel data storing unit 205 such that the address is input to the two-dimensional PE array 230 .
  • FIG. 3 is a detailed block diagram of the motion estimation apparatus of FIG. 2 .
  • the search target macro-block data storing unit 210 and the search area macro-block data storing unit 220 may be SRAMs.
  • the search target macro-block data storing unit 210 sequentially transmits eight 8-bit data values to an 8 ⁇ 8 register array 260 in synchronization with a system clock. In every clock cycle, the 8 ⁇ 8 register array 260 transmits pixel data stored in each row of the register array 260 to registers in respective next rows of the register array 260 .
  • the 8 ⁇ 8 register array 260 is connected to the two-dimensional PE array 230 in units of rows and sequentially transmits pixel data of a search target macro-block to the two-dimensional PE array 230 .
  • 8 registers in a first row of the 8 ⁇ 8 register array 260 are connected to PEs in a first row of the two-dimensional PE array 230
  • registers in a second row of the 8 ⁇ 8 register array 260 are connected to PEs in a second row of the two-dimensional PE array 230 .
  • the pixel data of the search target macro-block input to PEs in each row of the two-dimensional PE array 230 has been delayed from one another by one clock cycle.
  • the search area macro-block data storing unit 220 in which the pixel data of the macro-blocks in the search area is stored is a dual port SRAM.
  • SDRAM which has two ports, consists of registers of 11 ⁇ 8 bits, and eight of the registers are selectively connected to PEs of the two-dimensional PE array 230 in units of rows, and thus pixel data stored in the eight registers is input to the two-dimensional PE array 230 .
  • the connection state with the registers varies for each row of the two-dimensional PE array 230 , and all the pixel data of the SDRAM is input to the 8 ⁇ 8 PEs simultaneously.
  • the pixel data of the search area is output to different ports every 16 clock cycles so as not to waste time.
  • the connection between the search area macro-block data storing unit 220 and the two-dimensional PE array 230 will be described later with reference to FIGS. 7A through 8C .
  • FIG. 4 illustrates the structure of a two-dimensional PE array according to an embodiment of the present invention.
  • the two-dimensional PE array includes 8 ⁇ 8 PEs. Each PE calculates one SAD for each level, at which SAD calculations are performed, in 4 ⁇ 8 or 4 ⁇ 4 units. Alternatively, one PE may calculate a SAD for one search point or two PEs may calculate a SAD for one search point.
  • FIG. 5 illustrates a detailed configuration of a PE.
  • a PE calculates a SAD value in 4 ⁇ 4 block units.
  • a PE includes four subtractors 510 a through 510 d , four absolute-value calculators 520 a through 520 d , and four adders 530 a through 530 d .
  • the PE receives pixel data of a 4 ⁇ 4 block in units of rows.
  • the PE reads C 00 , C 10 , C 20 , and C 30 , which are pixel values in a first row of a 4 ⁇ 4 block in a current frame, and S 00 , S 10 , S 20 , and S 30 , which are pixel values in a first row of a 4 ⁇ 4 block in a search area of a previous frame, and subtracts S 00 , S 10 , S 20 , and S 30 from C 00 , C 10 , C 20 , and C 30 . Then, the PE takes absolute values of the subtracted pixel values and adds the absolute values.
  • the PE reads C 01 , C 11 , C 21 , and C 31 , which are pixel values in a second row of the 4 ⁇ 4 block in the current frame, and S 01 , S 11 , S 21 , and S 31 , which are pixel values in a second row of the 4 ⁇ 4 block in the search area of the previous frame, and subtracts S 01 , S 11 , S 21 , and S 31 from C 01 , C 11 , C 21 , and C 31 . Then, the PE takes absolute values of the subtracted pixel values and adds the absolute values. A value obtained as a result of the addition is added to a value obtained as a result of the previous addition. The process described above is repeated until a fourth clock cycle passes. After the fourth clock cycle passes, the calculation of the SAD value for the 4 ⁇ 4 block is complete.
  • FIG. 6A illustrates search points processed by a PE array in an upper level.
  • FIG. 6B illustrates search points processed by the PE array in a middle level.
  • FIG. 6C illustrates search points processed by the PE array in a lower level.
  • one PE processes one search point since, in the upper level, motion estimation is performed only in units of frames. In other words, a SAD is calculated for a search area, which is reduced to a quarter of its original size.
  • FIG. 6B in the middle level, a frame is divided into a top field and a bottom field for motion estimation. Thus, two PEs process one search point. One PE calculates a SAD value for the top field in 4 ⁇ 4 block units while the other PE calculates a SAD value for the bottom field in 4 ⁇ 4 block units.
  • SAD values for a top field ME, a bottom field ME, and four field MEs (a top-top field ME, a top-bottom field ME, a bottom-bottom field ME, and a bottom-top field ME) can be obtained.
  • two PEs process one search point.
  • FIGS. 7A-7C illustrates the relationship between the two-dimensional PE array 230 of FIG. 3 and the search area macro-block data storing unit 220 of FIG. 3 storing pixel data in the search area.
  • pixel values of a 4 ⁇ 1 macro-block in the current frame are sequentially input to PE (0, n) in the first row of the two-dimensional PE array 230 via registers.
  • Registers storing pixel data in the search area are 11 ⁇ 8 bit registers.
  • First each of four pixel values is input to the PE (0, n) via a multiplexer (MUX).
  • the other input port of the MUXs are connected to data output from port 1 of the SRAM storing the pixel data in the search area.
  • the pixel data in the search area is repeatedly output to port 0 and port 1 of the SRAM, in turns, for every 16 clock cycles. Therefore, the MUX switches to a port from which pixel data in a current search area is output and connects the port to the PE (0, n).
  • pixel values from the second pixel value in the 11 ⁇ 8 register storing the pixel values of the search area are connected to PE (1, n) in the second row of the two-dimensional PE array 230 through the MUX.
  • a PE (7, n) in an eighth row which is the last row of the two-dimensional PE array 230 , is connected to the last four pixel values of the 11 ⁇ 8 register through the MUX.
  • FIG. 8 illustrates a search block and a search area processed in the upper level.
  • the size of a macro-block to be searched is 4 ⁇ 8, which is a quarter of an original macro-block, i.e., 16 ⁇ 32.
  • the size of a search area is decimated to a matrix measuring [ ⁇ 16, +15] horizontally and [ ⁇ 8, 7] vertically, which is a quarter of an original search area, i.e., [ ⁇ 64, +63] horizontally and [ ⁇ 32, +31] vertically.
  • the two-dimensional PE array 230 processes this search area. Since the two-dimensional PE array 230 includes 8 ⁇ 8 PEs and one PE processes one search point in the upper level, as illustrated in FIG. 8 , the search area is divided into 8 ⁇ 8 units and processed accordingly. If the search area is divided into 8 ⁇ 8 units, eight search areas are created. Since only one 8 ⁇ 8 search area can be processed at a time, the eight search areas are processed in a numeric order illustrated in FIG. 8 .
  • Pixel data in the search area which is input to the PEs and the way in which the pixel data is processed in the upper level will now be described in detail.
  • a SAD for ( ⁇ 16, ⁇ 8) which is a first search point in the search area of [ ⁇ 16, 15] and [ ⁇ 8, 7]
  • pixel values in the search area, which are input to PE (0, 0) are 4 ⁇ 8 pixels based on ( ⁇ 16, ⁇ 8).
  • FIG. 5 since one PE compares four pixel values in the target block of the current frame with four pixel values in the search area of the previous frame at a time, it takes eight clock cycles to calculate the SAD for the 4 ⁇ 8 search block. Thus, only after the eight clock cycles pass is the calculation of the SAD for the 4 ⁇ 8 block is complete for the search point of ( ⁇ 16, ⁇ 8).
  • pixel values in the search area which are input to PE (1, 0) are 4 ⁇ 8 pixels based on ( ⁇ 15, ⁇ 8), which is a second search point, to calculate the SAD for ( ⁇ 15, ⁇ 8).
  • pixel values in the search area which are input to PE (7, 0) are 4 ⁇ 8 pixels based on ( ⁇ 9, ⁇ 8).
  • pixel values in the search area are input to PE (0, 1)
  • pixel values in the search area are input to PE (1, 1).
  • one PE can calculate the SAD for the 4 ⁇ 8 block at each search point, moving the macro-blocks downwards by one pixel.
  • the SAD for a first 8 ⁇ 8 search area indicated by 1 in FIG. 8 can be calculated at one time. In this way, the SAD for the 4 ⁇ 8 block at each search point can be calculated in second through eighth search areas.
  • FIG. 9 illustrates the pixel data of the search area, which is input to PE (n, 0) in the upper level.
  • the pixel data of the search area is stored in an 11 ⁇ 23 register.
  • the time axis points in a downward direction.
  • the SAD for the 4 ⁇ 8 search block at one search point is complete.
  • another 11 ⁇ 23 register is available such that the pixel data can be output to ports 0 and 1 of the SRAM, and the pixel data of the 11 ⁇ 23 register is output to the port 1 .
  • FIGS. 10A through 10C illustrate the order of processing pixel data by a PE by dividing the search area in the upper level. That is, FIGS. 10A through 10C illustrate search points processed by each PE in each area when the search area is divided into 8 areas. It can be seen that each PE processes one search point.
  • FIG. 11 illustrates a search block and a search area processed in the middle level. Since the original frame was decimated by half in the middle level, the size of a macro-block to be searched is 8 ⁇ 16, which is half the size of the original macro-block, i.e., 16 ⁇ 32. In the middle level, not a full but a local search is conducted. Therefore, the search area is [ ⁇ 4, 3] and [ ⁇ 4, 3]. Also, in the middle level, motion estimation is performed in units of fields, each including a top field and a bottom field. In FIG. 11 , “o” denotes top-field pixel data and “x” denotes bottom-field pixel data.
  • two frame MEs for an 8 ⁇ 8-frame top block and an 8 ⁇ 8-frame bottom block and four field MEs (top2top field ME, top2bottom field ME, bottom2top field ME, and bottom2bottom field ME) for an 8 ⁇ 8 field top block and an 8 ⁇ 8-field bottom block are performed to obtain six motion vectors. Since the macro-block most similar to the macro-block in the current frame and two motion vectors are obtained in the upper level and delivered to the middle level, 12 motion vectors, in fact, are obtained.
  • the pixel data of the macro-block in the current frame and the pixel data of the macro-blocks in the search area, which are input to the two-dimensional PE array 230 , are identical to the pixel data used to perform a frame ME in the search area of [ ⁇ 4, 3] horizontally and vertically for an 8 ⁇ 16 block.
  • PEs calculate SADs in 4 ⁇ 4 field units and, by combing the SADs, obtain a SAD for two frame MEs and four field MEs.
  • two PEs are responsible for one search point and obtains the SADs for the 8 ⁇ 4-field blocks as illustrated in FIG. 6B .
  • the SAD for the 8 ⁇ 8-frame block and the SAD for the 8 ⁇ 8-field block can be obtained.
  • FIG. 12 illustrates pixel data in the search area, which is input to PE (n, 0) in the middle level.
  • PE n, 0
  • FIG. 12 it can be seen that, as in the upper level, the pixel data of the search area is input to the 11 ⁇ 23 register.
  • the time axis points in a downward direction.
  • the SAD for the 4 ⁇ 4 search block at a search point is complete for the top field and the bottom field.
  • Another 11 ⁇ 23 register is available such that the pixel data can be output to port of the SRAM, and the pixel data of the 11 ⁇ 23 register is output to port 1 of the SDRAM. There is a 16-clock cycle difference between pixel data output to the ports 0 and 1 .
  • FIG. 13 illustrates a search block and a search area processed in the lower level.
  • the size of a macro-block to be searched is 16 ⁇ 32, which is the size of the original macro-block.
  • the full search is not conducted in the lower level. Rather, the local search is conducted in [ ⁇ 4, 3] and [ ⁇ 2, 2].
  • motion estimation is performed in units of fields, i.e., the top field and the bottom field, in the lower level.
  • two frame MEs for a 16 ⁇ 16 frame top block and a 16 ⁇ 16 frame bottom block and four field MEs (top2top field ME, top2bottom field ME, bottom2top field ME, and bottom2bottom field ME) for a 16 ⁇ 16 field top block and a 16 ⁇ 16 field bottom block are performed to obtain six motion vectors.
  • the SADs are calculated in 4 ⁇ 4-field block units, and two PEs are responsible for one search point.
  • the two PEs calculate the SADs for different 4 ⁇ 4-field blocks at the same search point, as illustrated in FIG. 6C . By merging eight SADs for the 4 ⁇ 4-field blocks, one SAD for a 16 ⁇ 32 block can be obtained.
  • FIG. 14 illustrates pixel data in the search area, which is input to PE (n, 0) in the lower level.
  • PE n, 0
  • the pixel data of the search area is stored in the 11 ⁇ 23 register.
  • the time axis points in a downward direction.
  • four pixel data values at a time are sequentially input to each PE for every clock cycle. After 8 clock cycles, the SAD for the 4 ⁇ 4 search block at a search point is complete for the top field and the bottom field.
  • Another 11 ⁇ 23 register is available such that the pixel data can be output to port of the SRAM, and the pixel data of the 11 ⁇ 23 register is output to port 1 of the SDRAM. There is a 16-clock cycle difference between pixel data output to ports 0 and 1 .
  • each level has a different degree of resolution and search area, and pixel data of a search area is stored in a dual-port memory.
  • wasted clock cycles can be reduced, and motion estimation can be performed on blocks of various sizes.
  • the present invention can also be implemented as a computer program.
  • the program can be recorded on a computer-readable medium, which can be thereafter read and executed by a computer system.
  • Examples of the computer-readable medium include magnetic recording media, optical recording media, and carrier waves.

Abstract

A motion estimation apparatus and method for efficient hierarchical motion estimation. The motion estimation apparatus includes a pixel data storing unit storing pixel data of a block to search for and pixel data of blocks in a search area a two-dimensional processing element array receiving pixel data from the pixel data storing unit and calculating degrees of similarity between the block to search for and the blocks in the search area, a merging and comparing unit merging the degrees of similarity, generating degrees of similarity for blocks of various sizes, comparing the generated degrees of similarity, and outputting motion vectors for the blocks of various sizes, and an address controlling unit controlling an address of the pixel data storing unit such that the pixel data of the pixel data storing unit can be sequentially transmitted to the two-dimensional processing element array.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application claims the benefit of Korean Patent Application No. 2004-0033118, filed on May 11, 2004, in the Korean Intellectual Property Office, and the benefit of U.S. Provisional Patent Application No. 60/564,610, filed on Apr. 23, 2004, in the U.S. Patent and Trademark Office, the disclosures of which are incorporated herein by reference.
  • BACKGROUND OF THE INVENTION
  • 1. Field of the Invention
  • The present invention relates to motion estimation, and more particularly, to a motion estimation apparatus and method for efficient hierarchical motion estimation.
  • 2. Description of Related Art
  • Motion estimation is a process of searching a previous frame for a macro-block most similar to a macro-block in a current frame using a specified measurement function and obtaining a motion vector, which indicates the difference between the position of the macro-block in the previous frame and that of the macro-block in the current frame.
  • There are many ways to find the most similar macro-block. For example, while moving macro-blocks included in a specified search area of a previous frame in units of pixels, degrees of similarity between the macro-blocks in the previous frame and a macro-block in a current frame can be calculated using a specified measurement method to find a macro-block most similar to the macro-block in the current frame.
  • According to an example of the specified measurement method, differences between pixel values in the macro-block of a current frame and pixel values in the macro-blocks of the search area are calculated. Then, absolute values of the differences are taken and added. A macro-block having the smallest value obtained as a result of the addition is determined as the most similar macro-block.
  • Specifically, a degree of similarity between the macro-blocks in the current and previous frames is determined based on a similarity value, i.e., a matched reference value, which is calculated using pixel values included in the macro-blocks of the current and previous frames. The similarity value, i.e., the matched reference value, is calculated using a specified measurement function. Examples of the measurement function include a sum of absolute differences (SAD), a sum of absolute transformed differences (SATD), and a sum of squared differences (SSD).
  • However, a considerable amount of calculation is required to produce such matched reference values, entailing a lot of hardware resources to encode video data in real time. In an effort to reduce the amount of calculation required for motion estimation, so-called hierarchical motion estimation has been studied. In hierarchical motion estimation, an original frame is divided into frames with various degrees of resolution, and motion vectors of frames for each degree of resolution are created in a hierarchical manner. One of the known methods of hierarchical motion estimation is a multi-resolution multiple candidate search.
  • Depending on the scope of a search, the search is categorized into a full search and a local search. The full search searches the entire search area whereas the local search searches a part of the search area.
  • FIG. 1 illustrates conventional hierarchical motion estimation. Referring to FIG. 1, for the hierarchical motion estimation, each of a current frame to be encoded and a previous frame is divided into a lower level 104 having an original degree of resolution, a middle level 102 having a degree of resolution reduced by decimating an image of the lower level 104 by half, and an upper level 100 having a degree of resolution reduced by decimating an image of the middle level by half. In this hierarchical motion estimation, motion estimation is performed using images with different degrees of resolution and different search scopes per level. Thus, high-speed motion estimation is possible.
  • The conventional hierarchical motion estimation will now be described in more detail. It is assumed that motion estimation is conduced in units of 16×16 macro-bocks and a search area is [−16, +16]. In the upper level 100, a macro-block most similar to a current 4×4 macro-block in the current frame, which is a quarter of the size of an original macro-block, is searched for in the previous frame. Here, the search area is [−4, +4], which is a quarter of the original search area.
  • Generally, a SAD function is used to measure a matched reference value, that is, a degree of similarity. The SAD value is obtained by subtracting pixel values of a search macro-block from those of the current 4×4 macro-block, taking absolute values of the subtracted values, and adding all of the absolute values. In this way, macro-blocks most and second most similar to the current 4×4 macro-block in the current frame are found in the previous frame, and motion vectors for the two cases are obtained.
  • In the middle level 102, the search area is half the size of the original search area. That is, a search area of [−2, +2] in the previous frame is searched based on three search points. The three search points refer to two search points corresponding to the two motion vectors obtained in the upper level 100 and one search point indicated by a predicted motion vector (PMV) obtained by taking the median of motion vectors of three macro-blocks located to the left, top, and top-right of the current macro-block. The three macro-blocks have already been encoded and their motion vectors have already been decided. In the middle level 102, a macro-block most similar to the current macro-block and a motion vector corresponding to the macro-block are obtained by searching the search area of [−2, +2].
  • In the lower level 104, that is, in the previous frame of the original size, the search area of [−2, +2] is partly searched based on a search point corresponding to the macro-block found in the middle level 102, i.e., a top-left apex of the macro-block. Then, a macro-block most similar to the current macro-block and a motion vector corresponding to the macro-block are obtained. In doing so, the search area is reduced, thereby decreasing the amount of time and hardware resources required.
  • Most of the conventional moving-image standards are adopting a field motion estimation mode as well as a frame motion estimation mode to support interlaced scanning. In particular, H.265 and MPEG-2 support a macro-block adaptive frame field (MBAFF) mode in which frame motion estimation and field motion estimation are conducted in units of macro-blocks, not pictures.
  • However, if the hierarchical motion estimation is applied to a moving-image standard that supports the MBAFF, matched reference values must be additionally calculated whenever conducting frame motion estimation and field motion estimation in middle and lower levels. In this case, the amount of calculation required increases sharply.
  • BRIEF SUMMARY
  • An aspect of the present invention provides a motion estimation apparatus and method, which enables efficient motion estimation for frames and fields of each level.
  • According to an aspect of the present invention, there is provided a motion estimation apparatus including: a pixel data storing unit storing pixel data of a block to be searched for and pixel data of blocks in a search area; a two-dimensional processing element array receiving pixel data from the pixel data storing unit and calculating degrees of similarity between the block to be searched for and the blocks in the search area; a merging and comparing unit merging the degrees of similarity, generating degrees of similarity for blocks of various sizes, comparing the generated degrees of similarity, and outputting motion vectors for the blocks of various sizes;
  • and an address controlling unit controlling an address of the pixel data storing unit such that the pixel data of the pixel data storing unit can be sequentially transmitted to the two-dimensional processing element array.
  • The pixel data storing unit may store pixel data of an original frame in which the block to be searched for is included and a target frame in which the search area is included, and the resolution of the original frame and the target frame may be respectively reduced to half and a quarter of their original resolution.
  • The pixel data storing unit may include a search target macro-block storing unit storing the pixel data of the block to search in a 4×1-pixel register array; and a search area macro-block data storing unit storing the pixel data of the blocks in the search area in an 11×1-pixel register array.
  • The search area macro-block data storing unit may be a dual port memory to alternately output the pixel data of the blocks in the search area to different ports of the dual port memory at specified clock cycles.
  • The processing element array may calculate the degrees of similarity in 4×8-pixel block units in an upper level in which the resolution of the original frame and the resolution of the target frame are reduced to a quarter of their original resolution and calculate the degrees of similarity in 4×4 block units in a middle level in which the resolution of the original frame and the resolution of the target frame are reduced to half of their original resolution.
  • According to another aspect of the present invention, there is provided a motion estimation method including: receiving pixel data of a block to be searched for and pixel data of blocks in a search area and calculating degrees of similarity between the block to be searched for and the blocks in the search area; and merging the degrees of similarity, generating degrees of similarity for blocks of various sizes, comparing the generated degrees of similarity, and outputting motion vectors for the blocks of various sizes.
  • In the receiving of the pixel data and the calculating of the degrees of similarity, the degree of similarity for each level may be calculated using pixel data of an original frame in which the block to search for is included and a target frame in which the search area is included, and the resolution of the original frame and the target frame may be reduced to half and a quarter of their original resolution.
  • The pixel data of the blocks in the search area may be alternately output to different ports of a dual port memory at specified clock cycles.
  • In the receiving of the pixel data and the calculating of the degrees of similarity, N×N processing elements may be used to calculate the degrees of similarity, and the degrees of similarity for N×N search points may be calculated simultaneously.
  • According to another aspect of the present invention, there is provided a motion estimation apparatus including: a pixel data storing unit including a search target macro-block data storing unit storing pixel data of a macro-block in a current frame, and a search area macro-block data storing unit storing pixel data of macro-blocks in a search area of a frame to be searched; a two-dimensional processing element array receiving pixel data from the pixel data storing unit and calculating a degree of similarity between the macro-block in the current frame and macro-blocks in the search area; a merging and comparing unit merging the degree of similarity, generating degrees of similarity values corresponding to various block sizes, comparing the generated degrees of similarity, and outputting motion vectors for the blocks of various sizes; and an address controlling unit determining an address to read in order to retrieve pixel data needed to calculate the degree of similarity from the pixel data storing unit and outputting the address is input to the two-dimensional processing element array.
  • According to another aspect of the present invention, there is provided a method of reducing wasted clock cycles in hierarchal motion estimation, including: storing in a storage section pixel data of a block to be searched for and pixel data of blocks in a search area; receiving pixel data from the pixel data storing unit and calculating, via a two-dimensional processor, degrees of similarity between the block to be searched for and the blocks in the search area; merging the degrees of similarity, generating degrees of similarity for blocks of various sizes, comparing the generated degrees of similarity, and outputting motion vectors for the blocks of various sizes; and sequentially transmitting the pixel data to the two-dimensional processing element array by controlling a address of the storage section.
  • Additional and/or other aspects and advantages of the present invention will be set forth in part in the description which follows and, in part, will be obvious from the description, or may be learned by practice of the invention.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • These and/or other aspects and advantages of the present invention will become apparent and more readily appreciated from the following detailed description, taken in conjunction with the accompanying drawings of which:
  • FIG. 1 illustrates conventional hierarchical motion estimation;
  • FIG. 2 is a block diagram of a motion estimation apparatus according to an embodiment of the present invention;
  • FIG. 3 is a detailed block diagram of the motion estimation apparatus of FIG. 2;
  • FIG. 4 illustrates the structure of a two-dimensional processing element (PE) array according to an embodiment of the present invention;
  • FIG. 5 illustrates a detailed configuration of a PE;
  • FIG. 6A illustrates search points processed by a PE array in an upper level;
  • FIG. 6B illustrates search points processed by the PE array in a middle level;
  • FIG. 6C illustrates search points processed by the PE array in a lower level;
  • FIGS. 7A through 7C illustrate the connection between the two-dimensional PE array and an SRAM storing pixel data in a search area;
  • FIG. 8 illustrates a search block and a search area processed in the upper level;
  • FIG. 9 illustrates the pixel data of the search area, which is input to PE (n, 0) in the upper level;
  • FIGS. 10A through 10C illustrate the order of processing pixel data by a PE by dividing the search area in the upper level;
  • FIG. 11 illustrates a search block and a search area processed in the middle level;
  • FIG. 12 illustrates the pixel data in the search area, which is input to PE (n, 0) in the middle level;
  • FIG. 13 illustrates a search block and a search area processed in the lower level; and
  • FIG. 14 illustrates the pixel data in the search area, which is input to PE (n, 0) in the lower level.
  • DETAILED DESCRIPTION OF EMBODIMENTS
  • Reference will now be made in detail to embodiments of the present invention, examples of which are illustrated in the accompanying drawings, wherein like reference numerals refer to the like elements throughout. The embodiments are described below in order to explain the present invention by referring to the figures.
  • FIG. 2 is a block diagram of a motion estimation apparatus according to an embodiment of the present invention. Referring to FIG. 2, the motion estimation apparatus includes a pixel data storing unit 205, a two-dimensional processing element (PE) array 230, a merging and comparing unit 240, and an address controlling unit 250.
  • The pixel data storing unit 205 includes a search target macro-block data storing unit 210 storing pixel data of a macro-block in a current frame, i.e., pixel data of a search target macro-block, and a search area macro-block data storing unit 220 storing pixel data of macro-blocks in a search area of a frame to be searched. The search target macro-block data storing unit 210 may be an SDRAM. A detailed description of the search target macro-block data storing unit 210 will be made later with reference to FIG. 3. The search area macro-block data storing unit 220 may be implemented as a dual port memory to efficiently transmit pixel data in a search area to the two-dimensional PE array 230.
  • The two-dimensional PE array 230 includes 8×8 PEs. The two-dimensional PE array 230 receives pixel data from the pixel data storing unit 205 and calculates a degree of similarity between the macro-block in the current frame and the macro-blocks in the search area such that a macro-block most similar to the macro-block in the current frame can be found in the search area.
  • In the present embodiment, since a degree of similarity is described using a sum of absolute differences (SAD), and a SAD value is calculated. Since the two-dimensional PE array 230 includes 8×8 PEs, SAD values for a plurality of search points can be calculated at a time. Here, SAD values are calculated in 4×8 units or 4×4 units according to a level at which SAD calculations are performed. A method of calculating a degree of similarity, i.e., the SAD, using one PE will be described later with reference to FIG. 5.
  • The merging and comparing unit 240 merges calculated SAD values and creates SAD values corresponding to various block sizes used in H.264, for example, 16×16, 16×8, 8×16, 8×8, 8×4, 4×8, and 4×4. When estimating motion in units of fields, since a frame includes a top field and a bottom field, a block size used in the motion estimation is 16×32. In the present embodiment, since the resolution of the frame is reduced to half or a quarter of its original resolution, a block size used in the motion estimation is 8×16 or 4×8 for each level. Therefore, a SAD value corresponding to a block of a desired size can be created by merging SAD values calculated in 4×8 or 4×4 block units. Using the SAD value, an optimal motion vector is output.
  • The address controlling unit 250 determines an address to read in order to retrieve pixel data needed to calculate SADs from the pixel data storing unit 205 such that the address is input to the two-dimensional PE array 230.
  • FIG. 3 is a detailed block diagram of the motion estimation apparatus of FIG. 2. The search target macro-block data storing unit 210 and the search area macro-block data storing unit 220 may be SRAMs. The search target macro-block data storing unit 210 sequentially transmits eight 8-bit data values to an 8×8 register array 260 in synchronization with a system clock. In every clock cycle, the 8×8 register array 260 transmits pixel data stored in each row of the register array 260 to registers in respective next rows of the register array 260. The 8×8 register array 260 is connected to the two-dimensional PE array 230 in units of rows and sequentially transmits pixel data of a search target macro-block to the two-dimensional PE array 230.
  • In other words, 8 registers in a first row of the 8×8 register array 260 are connected to PEs in a first row of the two-dimensional PE array 230, and registers in a second row of the 8×8 register array 260 are connected to PEs in a second row of the two-dimensional PE array 230. Thus, the pixel data of the search target macro-block input to PEs in each row of the two-dimensional PE array 230 has been delayed from one another by one clock cycle.
  • The search area macro-block data storing unit 220 in which the pixel data of the macro-blocks in the search area is stored is a dual port SRAM. SDRAM, which has two ports, consists of registers of 11×8 bits, and eight of the registers are selectively connected to PEs of the two-dimensional PE array 230 in units of rows, and thus pixel data stored in the eight registers is input to the two-dimensional PE array 230. The connection state with the registers varies for each row of the two-dimensional PE array 230, and all the pixel data of the SDRAM is input to the 8×8 PEs simultaneously. Here, the pixel data of the search area is output to different ports every 16 clock cycles so as not to waste time. The connection between the search area macro-block data storing unit 220 and the two-dimensional PE array 230 will be described later with reference to FIGS. 7A through 8C.
  • FIG. 4 illustrates the structure of a two-dimensional PE array according to an embodiment of the present invention. The two-dimensional PE array includes 8×8 PEs. Each PE calculates one SAD for each level, at which SAD calculations are performed, in 4×8 or 4×4 units. Alternatively, one PE may calculate a SAD for one search point or two PEs may calculate a SAD for one search point.
  • FIG. 5 illustrates a detailed configuration of a PE. A PE calculates a SAD value in 4×4 block units. A PE includes four subtractors 510 a through 510 d, four absolute-value calculators 520 a through 520 d, and four adders 530 a through 530 d. The PE receives pixel data of a 4×4 block in units of rows. The PE reads C00, C10, C20, and C30, which are pixel values in a first row of a 4×4 block in a current frame, and S00, S10, S20, and S30, which are pixel values in a first row of a 4×4 block in a search area of a previous frame, and subtracts S00, S10, S20, and S30 from C00, C10, C20, and C30. Then, the PE takes absolute values of the subtracted pixel values and adds the absolute values.
  • In a next clock cycle, the PE reads C01, C11, C21, and C31, which are pixel values in a second row of the 4×4 block in the current frame, and S01, S11, S21, and S31, which are pixel values in a second row of the 4×4 block in the search area of the previous frame, and subtracts S01, S11, S21, and S31 from C01, C11, C21, and C31. Then, the PE takes absolute values of the subtracted pixel values and adds the absolute values. A value obtained as a result of the addition is added to a value obtained as a result of the previous addition. The process described above is repeated until a fourth clock cycle passes. After the fourth clock cycle passes, the calculation of the SAD value for the 4×4 block is complete.
  • FIG. 6A illustrates search points processed by a PE array in an upper level. FIG. 6B illustrates search points processed by the PE array in a middle level. FIG. 6C illustrates search points processed by the PE array in a lower level.
  • Referring to FIG. 6A, one PE processes one search point since, in the upper level, motion estimation is performed only in units of frames. In other words, a SAD is calculated for a search area, which is reduced to a quarter of its original size. Referring to FIG. 6B, in the middle level, a frame is divided into a top field and a bottom field for motion estimation. Thus, two PEs process one search point. One PE calculates a SAD value for the top field in 4×4 block units while the other PE calculates a SAD value for the bottom field in 4×4 block units. By merging the SAD values calculated by the two PEs, SAD values for a top field ME, a bottom field ME, and four field MEs (a top-top field ME, a top-bottom field ME, a bottom-bottom field ME, and a bottom-top field ME) can be obtained. Likewise, referring to FIG. 6C, in the lower level, two PEs process one search point.
  • FIGS. 7A-7C illustrates the relationship between the two-dimensional PE array 230 of FIG. 3 and the search area macro-block data storing unit 220 of FIG. 3 storing pixel data in the search area. Referring to FIGS. 3 and 7A, pixel values of a 4×1 macro-block in the current frame are sequentially input to PE (0, n) in the first row of the two-dimensional PE array 230 via registers. Registers storing pixel data in the search area are 11×8 bit registers. First each of four pixel values is input to the PE (0, n) via a multiplexer (MUX). The other input port of the MUXs are connected to data output from port 1 of the SRAM storing the pixel data in the search area. For time efficiency, the pixel data in the search area is repeatedly output to port 0 and port 1 of the SRAM, in turns, for every 16 clock cycles. Therefore, the MUX switches to a port from which pixel data in a current search area is output and connects the port to the PE (0, n).
  • Referring to FIGS. 3 and 7B, four pixel values from the second pixel value in the 11×8 register storing the pixel values of the search area are connected to PE (1, n) in the second row of the two-dimensional PE array 230 through the MUX. In this way, as shown with reference to FIGS. 3 and 7C, a PE (7, n) in an eighth row, which is the last row of the two-dimensional PE array 230, is connected to the last four pixel values of the 11×8 register through the MUX.
  • FIG. 8 illustrates a search block and a search area processed in the upper level. In the upper level, since an original frame was decimated to a quarter of its original size, the size of a macro-block to be searched is 4×8, which is a quarter of an original macro-block, i.e., 16×32. Accordingly, the size of a search area is decimated to a matrix measuring [−16, +15] horizontally and [−8, 7] vertically, which is a quarter of an original search area, i.e., [−64, +63] horizontally and [−32, +31] vertically.
  • The two-dimensional PE array 230 processes this search area. Since the two-dimensional PE array 230 includes 8×8 PEs and one PE processes one search point in the upper level, as illustrated in FIG. 8, the search area is divided into 8×8 units and processed accordingly. If the search area is divided into 8×8 units, eight search areas are created. Since only one 8×8 search area can be processed at a time, the eight search areas are processed in a numeric order illustrated in FIG. 8.
  • Pixel data in the search area, which is input to the PEs and the way in which the pixel data is processed in the upper level will now be described in detail. To calculate a SAD for (−16, −8), which is a first search point in the search area of [−16, 15] and [−8, 7], pixel values in the search area, which are input to PE (0, 0), are 4×8 pixels based on (−16, −8). As illustrated in FIG. 5, since one PE compares four pixel values in the target block of the current frame with four pixel values in the search area of the previous frame at a time, it takes eight clock cycles to calculate the SAD for the 4×8 search block. Thus, only after the eight clock cycles pass is the calculation of the SAD for the 4×8 block is complete for the search point of (−16, −8).
  • Similarly, pixel values in the search area, which are input to PE (1, 0), are 4×8 pixels based on (−15, −8), which is a second search point, to calculate the SAD for (−15, −8). In this way, when moving the macro-blocks sideways by one pixel, pixel values in the search area, which are input to PE (7, 0), are 4×8 pixels based on (−9, −8).
  • Moving downwards, to calculate the SAD for the 4×8 block at (−16, −7), pixel values in the search area are input to PE (0, 1), and to calculate the SAD for the 4×8 block at (−15, −7), pixel values in the search area are input to PE (1, 1). Thus, one PE can calculate the SAD for the 4×8 block at each search point, moving the macro-blocks downwards by one pixel. Then, the SAD for a first 8×8 search area indicated by 1 in FIG. 8 can be calculated at one time. In this way, the SAD for the 4×8 block at each search point can be calculated in second through eighth search areas.
  • FIG. 9 illustrates the pixel data of the search area, which is input to PE (n, 0) in the upper level. Referring to FIG. 9, it can be seen that the pixel data of the search area is stored in an 11×23 register. In FIG. 9, the time axis points in a downward direction. Of the pixel data stored in the SRAM, four pixel data values at a time are sequentially input to each PE for every clock cycle. After 8 clock cycles, the SAD for the 4×8 search block at one search point is complete. Also, another 11×23 register is available such that the pixel data can be output to ports 0 and 1 of the SRAM, and the pixel data of the 11×23 register is output to the port 1. There is a 16-clock cycle difference between pixel data output to the ports 0 and 1.
  • FIGS. 10A through 10C illustrate the order of processing pixel data by a PE by dividing the search area in the upper level. That is, FIGS. 10A through 10C illustrate search points processed by each PE in each area when the search area is divided into 8 areas. It can be seen that each PE processes one search point.
  • FIG. 11 illustrates a search block and a search area processed in the middle level. Since the original frame was decimated by half in the middle level, the size of a macro-block to be searched is 8×16, which is half the size of the original macro-block, i.e., 16×32. In the middle level, not a full but a local search is conducted. Therefore, the search area is [−4, 3] and [−4, 3]. Also, in the middle level, motion estimation is performed in units of fields, each including a top field and a bottom field. In FIG. 11, “o” denotes top-field pixel data and “x” denotes bottom-field pixel data.
  • In the middle level, for MBAFF coding, two frame MEs for an 8×8-frame top block and an 8×8-frame bottom block and four field MEs (top2top field ME, top2bottom field ME, bottom2top field ME, and bottom2bottom field ME) for an 8×8 field top block and an 8×8-field bottom block are performed to obtain six motion vectors. Since the macro-block most similar to the macro-block in the current frame and two motion vectors are obtained in the upper level and delivered to the middle level, 12 motion vectors, in fact, are obtained.
  • The pixel data of the macro-block in the current frame and the pixel data of the macro-blocks in the search area, which are input to the two-dimensional PE array 230, are identical to the pixel data used to perform a frame ME in the search area of [−4, 3] horizontally and vertically for an 8×16 block. However, PEs calculate SADs in 4×4 field units and, by combing the SADs, obtain a SAD for two frame MEs and four field MEs. In other words, in the middle level, since the SADs are calculated in 4×4-field block units, two PEs are responsible for one search point and obtains the SADs for the 8×4-field blocks as illustrated in FIG. 6B. By merging the SADs for the 8×4-field blocks, the SAD for the 8×8-frame block and the SAD for the 8×8-field block can be obtained.
  • The pixel data in the search area, which is input to the PEs in the middle level, and how the pixel data is processed will now be described in detail. To calculate the SAD for (−4, −4), which is a first search point in the search area of [−4, 3] and [−4, 3], 4×16-pixel data in the search area is input to PE (0, 0). Then, four SADs for 4×4 fields are calculated. Likewise, to calculate the SAD for (−3, −4), which is a second search point, 4×16 pixel data in the search area is input to PE (1, 0) and four SADs for 4×4 fields are calculated.
  • FIG. 12 illustrates pixel data in the search area, which is input to PE (n, 0) in the middle level. Referring to FIG. 12, it can be seen that, as in the upper level, the pixel data of the search area is input to the 11×23 register. In FIG. 12, the time axis points in a downward direction. Of the pixel data stored in the SRAM, four pixel data values at a time are sequentially input to each PE for every clock cycle. After 8 clock cycles, the SAD for the 4×4 search block at a search point is complete for the top field and the bottom field. Also, another 11×23 register is available such that the pixel data can be output to port of the SRAM, and the pixel data of the 11×23 register is output to port 1 of the SDRAM. There is a 16-clock cycle difference between pixel data output to the ports 0 and 1.
  • FIG. 13 illustrates a search block and a search area processed in the lower level. In the lower level, since the size of the original frame is maintained, the size of a macro-block to be searched is 16×32, which is the size of the original macro-block. However, the full search is not conducted in the lower level. Rather, the local search is conducted in [−4, 3] and [−2, 2]. As in the middle level, motion estimation is performed in units of fields, i.e., the top field and the bottom field, in the lower level.
  • In other words, in the lower level, for the MBAFF coding, two frame MEs for a 16×16 frame top block and a 16×16 frame bottom block and four field MEs (top2top field ME, top2bottom field ME, bottom2top field ME, and bottom2bottom field ME) for a 16×16 field top block and a 16×16 field bottom block are performed to obtain six motion vectors. As in the middle level, in the lower level, the SADs are calculated in 4×4-field block units, and two PEs are responsible for one search point. However, unlike the middle level, the two PEs calculate the SADs for different 4×4-field blocks at the same search point, as illustrated in FIG. 6C. By merging eight SADs for the 4×4-field blocks, one SAD for a 16×32 block can be obtained.
  • FIG. 14 illustrates pixel data in the search area, which is input to PE (n, 0) in the lower level. Referring to FIG. 14, it can be seen that, as in the middle and upper levels, the pixel data of the search area is stored in the 11×23 register. In FIG. 14, the time axis points in a downward direction. Of the pixel data stored in the SRAM, four pixel data values at a time are sequentially input to each PE for every clock cycle. After 8 clock cycles, the SAD for the 4×4 search block at a search point is complete for the top field and the bottom field. Also, another 11×23 register is available such that the pixel data can be output to port of the SRAM, and the pixel data of the 11×23 register is output to port 1 of the SDRAM. There is a 16-clock cycle difference between pixel data output to ports 0 and 1.
  • In hierarchical motion estimation according to the above-described embodiment of the present invention, each level has a different degree of resolution and search area, and pixel data of a search area is stored in a dual-port memory. Thus, wasted clock cycles can be reduced, and motion estimation can be performed on blocks of various sizes.
  • The present invention can also be implemented as a computer program.
  • Also, the program can be recorded on a computer-readable medium, which can be thereafter read and executed by a computer system. Examples of the computer-readable medium include magnetic recording media, optical recording media, and carrier waves.
  • Although a few embodiments of the present invention have been shown and described, the present invention is not limited to the described embodiments. Instead, it would be appreciated by those skilled in the art that changes may be made to these embodiments without departing from the principles and spirit of the invention, the scope of which is defined by the claims and their equivalents.

Claims (27)

1. A motion estimation apparatus comprising:
a pixel data storing unit storing pixel data of a block to be searched for and pixel data of blocks in a search area;
a two-dimensional processing element array receiving pixel data from the pixel data storing unit and calculating degrees of similarity between the block to be searched for and the blocks in the search area;
a merging and comparing unit merging the degrees of similarity, generating degrees of similarity for blocks of various sizes, comparing the generated degrees of similarity, and outputting motion vectors for the blocks of various sizes; and
an address controlling unit controlling an address of the pixel data storing unit such that the pixel data of the pixel data storing unit is sequentially transmitted to the two-dimensional processing element array.
2. The apparatus of claim 1, wherein the pixel data storing unit also stores pixel data of an original frame which includes the block to be searched for and a target frame which includes the search area, and the resolution of the original frame and the target frame are respectively reduced to a half and a quarter of their original resolution.
3. The apparatus of claim 1, wherein the pixel data storing unit includes:
a search target macro-block storing unit storing the pixel data of the block to be searched in a 4×1-pixel register array; and
a search area macro-block data storing unit storing the pixel data of the blocks in the search area in an 11×1-pixel register array.
4. The apparatus of claim 3, wherein the first four registers from a first row of the 11×1-pixel register array of the search area macro-block data storing unit are connected to processing elements in a first row of the two-dimensional processing element, and a next four registers excluding the first one register are connected to processing elements in a second row of the two-dimensional processing element.
5. The apparatus of claim 3, wherein the search area macro-block data storing unit is formed of a dual port memory to alternately output the pixel data of the blocks in the search area to different ports of the dual port memory at specified clock cycles.
6. The apparatus of claim 1, wherein the block to search for is a 16×32-pixel macro-block adaptive frame field.
7. The apparatus of claim 1, wherein the processing element array includes N×N processing elements arranged in a matrix form.
8. The apparatus of claim 7, wherein N is eight.
9. The apparatus of claim 1, wherein the processing element array calculates the degrees of similarity in 4×8-pixel block units in an upper level in which the resolution of the original frame and the resolution of the target frame are reduced to a quarter of their original resolution and calculates the degrees of similarity in 4×4 block units in a middle level in which the resolution of the original frame and the resolution of the target frame are reduced to half of their original resolution.
10. The apparatus of claim 9, wherein the merging and comparing unit merges the degrees of similarity calculated in the 4×4-pixel block units in the middle level and calculate degrees of similarity for the blocks of various sizes and motion vectors corresponding to the calculated degrees of similarity.
11. A motion estimation method comprising:
receiving pixel data of a block to be searched for and pixel data of blocks in a search area and calculating degrees of similarity between the block to be searched for and the blocks in the search area; and
merging the degrees of similarity, generating degrees of similarity for blocks of various sizes, comparing the generated degrees of similarity, and outputting motion vectors for the blocks of various sizes.
12. The method of claim 11, wherein, in the receiving of the pixel data and the calculating of the degrees of similarity, the degree of similarity for each level is calculated using pixel data of an original frame which includes the block to be searched for and a target frame which includes the search area, and the resolution of the original frame and the target frame are respectively reduced to a half and a quarter of their original resolution.
13. The method of claim 11, wherein the pixel data of the blocks in the search area is alternately output to different ports of a dual port memory at specified clock cycles.
14. The method of claim 11, wherein, in the receiving of the pixel data and the calculating of the degrees of similarity, N×N processing elements are used to calculate the degrees of similarity, and the degrees of similarity for N×N search points are calculated simultaneously.
15. The method of claim 11, wherein, in the receiving of the pixel data and the calculating of the degrees of similarity, the degrees of similarity are calculated in 4×8-pixel block units in an upper level in which the resolution of the original frame and the resolution of the target frame are reduced to a quarter of their original resolution and the degrees of similarity are calculated in 4×4 block units in a middle level in which the resolution of the original frame and the resolution of the target frame are reduced to half of their original resolution.
16. A computer-readable recording medium on which a program causing a processor to execute a motion estimation method, the method comprising:
receiving pixel data of a block to be searched for and pixel data of blocks in a search area and calculating degrees of similarity between the block to be searched for and the blocks in the search area; and
merging the degrees of similarity, generating degrees of similarity for blocks of various sizes, comparing the generated degrees of similarity, and outputting motion vectors for the blocks of various sizes.
17. A motion estimation apparatus comprising:
a pixel data storing unit including a search target macro-block data storing unit storing pixel data of a macro-block in a current frame, and a search area macro-block data storing unit storing pixel data of macro-blocks in a search area of a frame to be searched;
a two-dimensional processing element array receiving pixel data from the pixel data storing unit and calculating a degree of similarity between the macro-block in the current frame and macro-blocks in the search area;
a merging and comparing unit merging the degree of similarity, generating degrees of similarity values corresponding to various block sizes, comparing the generated degrees of similarity, and outputting motion vectors for the blocks of various sizes; and
an address controlling unit determining an address to read in order to retrieve pixel data needed to calculate the degree of similarity from the pixel data storing unit and outputting the address is input to the two-dimensional processing element array.
18. The apparatus of claim 17, wherein the search target macro-block data storing unit is an SDRAM.
19. The apparatus of claim 17, wherein the two-dimensional PE array includes 64 processing elements in an 8×8 array.
20. The apparatus of claim 17, wherein the degree of similarity is calculated using a sum of absolute differences (SAD).
21. The apparatus of claim 17, wherein the merging and comparing unit merges calculated SAD values and generates SAD values corresponding to various block sizes used in an H.264 standard.
22. The apparatus of claim 17, wherein the search target macro-block data storing unit and the search area macro-block data storing unit are SRAMs.
23. The apparatus of claim 17, wherein the search target macro-block data storing unit 210 sequentially transmits eight 8-bit data values to an 8×8 register array connected to the two-dimensional PE array in synchronization with a system clock.
24. The apparatus of claim 23, wherein the 8×8 register array is connected to the two-dimensional PE array in units of rows and sequentially transmits pixel data of a search target macro-block to the two-dimensional PE array.
25. The apparatus of claim 24, wherein, during every clock cycle, the 8×8 register array transmits pixel data stored in each row of the register array to registers in respective next rows of the register array.
26. The apparatus of claim 17, wherein the search area macro-block data storing unit is a dual port SRAM.
27. A method of reducing wasted clock cycles in hierarchal motion estimation, comprising:
storing in a storage section pixel data of a block to be searched for and pixel data of blocks in a search area;
receiving pixel data from the pixel data storing unit and calculating, via a two-dimensional processor, degrees of similarity between the block to be searched for and the blocks in the search area;
merging the degrees of similarity, generating degrees of similarity for blocks of various sizes, comparing the generated degrees of similarity, and outputting motion vectors for the blocks of various sizes; and
sequentially transmitting the pixel data to the two-dimensional processing element array by controlling a address of the storage section.
US11/111,768 2004-04-23 2005-04-22 Hierarchical motion estimation apparatus and method Abandoned US20050238102A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/111,768 US20050238102A1 (en) 2004-04-23 2005-04-22 Hierarchical motion estimation apparatus and method

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US56461004P 2004-04-23 2004-04-23
KR2004-0033118 2004-05-11
KR1020040033118A KR20050108075A (en) 2004-05-11 2004-05-11 Hierarchical motion estimation apparatus and method
US11/111,768 US20050238102A1 (en) 2004-04-23 2005-04-22 Hierarchical motion estimation apparatus and method

Publications (1)

Publication Number Publication Date
US20050238102A1 true US20050238102A1 (en) 2005-10-27

Family

ID=35136396

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/111,768 Abandoned US20050238102A1 (en) 2004-04-23 2005-04-22 Hierarchical motion estimation apparatus and method

Country Status (1)

Country Link
US (1) US20050238102A1 (en)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080101473A1 (en) * 2006-10-26 2008-05-01 Matsushita Electric Industrial Co., Ltd. Transcoding apparatus and transcoding method
US20080225948A1 (en) * 2007-03-13 2008-09-18 National Tsing Hua University Method of Data Reuse for Motion Estimation
US20080232474A1 (en) * 2007-03-20 2008-09-25 Sung Ho Park Block matching algorithm operator and encoder using the same
US20090207915A1 (en) * 2008-02-15 2009-08-20 Freescale Semiconductor, Inc. Scalable motion search ranges in multiple resolution motion estimation for video compression
US20100135416A1 (en) * 2008-12-03 2010-06-03 Yu-Wen Huang Method for performing parallel coding with ordered entropy slices, and associated apparatus
US20100142761A1 (en) * 2008-12-10 2010-06-10 Nvidia Corporation Adaptive multiple engine image motion detection system and method
US20100295922A1 (en) * 2008-01-25 2010-11-25 Gene Cheung Coding Mode Selection For Block-Based Encoding
GB2474546A (en) * 2009-10-19 2011-04-20 Intel Corp 2D adder architecture for various block sizes
CN103096063A (en) * 2011-11-03 2013-05-08 财团法人工业技术研究院 Motion estimation method and parallax estimation method for adaptively adjusting estimation search range
US20130188731A1 (en) * 2010-10-04 2013-07-25 Korea Advanced Institute Of Science And Technology Method for encoding/decoding block information using quad tree, and device for using same
US8660380B2 (en) 2006-08-25 2014-02-25 Nvidia Corporation Method and system for performing two-dimensional transform on data value array with reduced power consumption
US8660182B2 (en) 2003-06-09 2014-02-25 Nvidia Corporation MPEG motion estimation based on dual start points
US8724702B1 (en) 2006-03-29 2014-05-13 Nvidia Corporation Methods and systems for motion estimation used in video coding
US8731071B1 (en) 2005-12-15 2014-05-20 Nvidia Corporation System for performing finite input response (FIR) filtering in motion estimation
US8756482B2 (en) 2007-05-25 2014-06-17 Nvidia Corporation Efficient encoding/decoding of a sequence of data frames
US20140286586A1 (en) * 2010-01-14 2014-09-25 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding image by using large transform unit
US8873625B2 (en) 2007-07-18 2014-10-28 Nvidia Corporation Enhanced compression in representing non-frame-edge blocks of image frames
US9118927B2 (en) 2007-06-13 2015-08-25 Nvidia Corporation Sub-pixel interpolation and its application in motion compensated encoding of a video signal
US9330060B1 (en) 2003-04-15 2016-05-03 Nvidia Corporation Method and device for encoding and decoding video image data
CN108900846A (en) * 2018-07-17 2018-11-27 珠海亿智电子科技有限公司 A kind of the two-dimensional directional motion estimation hardware circuit and its method of Video coding
US11102436B2 (en) * 2016-10-31 2021-08-24 Sony Semiconductor Solutions Corporation Solid-state imaging device and signal processing method thereof, and electronic device
US11842541B1 (en) * 2020-11-16 2023-12-12 Ben Group, Inc. Multi-resolution attention network for video action recognition

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5400087A (en) * 1992-07-06 1995-03-21 Mitsubishi Denki Kabushiki Kaisha Motion vector detecting device for compensating for movements in a motion picture
US5761398A (en) * 1995-12-26 1998-06-02 C-Cube Microsystems Inc. Three stage hierarchal motion vector determination
US5963259A (en) * 1994-08-18 1999-10-05 Hitachi, Ltd. Video coding/decoding system and video coder and video decoder used for the same system
US5987178A (en) * 1996-02-22 1999-11-16 Lucent Technologies, Inc. Apparatus and method for a programmable video motion estimator
US6122320A (en) * 1997-03-14 2000-09-19 Cselt-Centro Studi E Laboratori Telecomunicazioni S.P.A. Circuit for motion estimation in digitized video sequence encoders
US6256343B1 (en) * 1996-10-30 2001-07-03 Hitachi, Ltd. Method and apparatus for image coding
US6418166B1 (en) * 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
US6697427B1 (en) * 1998-11-03 2004-02-24 Pts Corporation Methods and apparatus for improved motion estimation for video encoding
US20050013366A1 (en) * 2003-07-15 2005-01-20 Lsi Logic Corporation Multi-standard variable block size motion estimation processor
US20050226337A1 (en) * 2004-03-31 2005-10-13 Mikhail Dorojevets 2D block processing architecture

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5400087A (en) * 1992-07-06 1995-03-21 Mitsubishi Denki Kabushiki Kaisha Motion vector detecting device for compensating for movements in a motion picture
US5963259A (en) * 1994-08-18 1999-10-05 Hitachi, Ltd. Video coding/decoding system and video coder and video decoder used for the same system
US5761398A (en) * 1995-12-26 1998-06-02 C-Cube Microsystems Inc. Three stage hierarchal motion vector determination
US5987178A (en) * 1996-02-22 1999-11-16 Lucent Technologies, Inc. Apparatus and method for a programmable video motion estimator
US6256343B1 (en) * 1996-10-30 2001-07-03 Hitachi, Ltd. Method and apparatus for image coding
US6122320A (en) * 1997-03-14 2000-09-19 Cselt-Centro Studi E Laboratori Telecomunicazioni S.P.A. Circuit for motion estimation in digitized video sequence encoders
US6697427B1 (en) * 1998-11-03 2004-02-24 Pts Corporation Methods and apparatus for improved motion estimation for video encoding
US6418166B1 (en) * 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
US20050013366A1 (en) * 2003-07-15 2005-01-20 Lsi Logic Corporation Multi-standard variable block size motion estimation processor
US20050226337A1 (en) * 2004-03-31 2005-10-13 Mikhail Dorojevets 2D block processing architecture

Cited By (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9330060B1 (en) 2003-04-15 2016-05-03 Nvidia Corporation Method and device for encoding and decoding video image data
US8660182B2 (en) 2003-06-09 2014-02-25 Nvidia Corporation MPEG motion estimation based on dual start points
US8731071B1 (en) 2005-12-15 2014-05-20 Nvidia Corporation System for performing finite input response (FIR) filtering in motion estimation
US8724702B1 (en) 2006-03-29 2014-05-13 Nvidia Corporation Methods and systems for motion estimation used in video coding
US8660380B2 (en) 2006-08-25 2014-02-25 Nvidia Corporation Method and system for performing two-dimensional transform on data value array with reduced power consumption
US8666166B2 (en) 2006-08-25 2014-03-04 Nvidia Corporation Method and system for performing two-dimensional transform on data value array with reduced power consumption
US20080101473A1 (en) * 2006-10-26 2008-05-01 Matsushita Electric Industrial Co., Ltd. Transcoding apparatus and transcoding method
US20080225948A1 (en) * 2007-03-13 2008-09-18 National Tsing Hua University Method of Data Reuse for Motion Estimation
US20080232474A1 (en) * 2007-03-20 2008-09-25 Sung Ho Park Block matching algorithm operator and encoder using the same
US8756482B2 (en) 2007-05-25 2014-06-17 Nvidia Corporation Efficient encoding/decoding of a sequence of data frames
US9118927B2 (en) 2007-06-13 2015-08-25 Nvidia Corporation Sub-pixel interpolation and its application in motion compensated encoding of a video signal
US8873625B2 (en) 2007-07-18 2014-10-28 Nvidia Corporation Enhanced compression in representing non-frame-edge blocks of image frames
US20100295922A1 (en) * 2008-01-25 2010-11-25 Gene Cheung Coding Mode Selection For Block-Based Encoding
US20090207915A1 (en) * 2008-02-15 2009-08-20 Freescale Semiconductor, Inc. Scalable motion search ranges in multiple resolution motion estimation for video compression
US9467699B2 (en) * 2008-12-03 2016-10-11 Hfi Innovation Inc. Method for performing parallel coding with ordered entropy slices, and associated apparatus
US20100135416A1 (en) * 2008-12-03 2010-06-03 Yu-Wen Huang Method for performing parallel coding with ordered entropy slices, and associated apparatus
US20100142761A1 (en) * 2008-12-10 2010-06-10 Nvidia Corporation Adaptive multiple engine image motion detection system and method
US8666181B2 (en) * 2008-12-10 2014-03-04 Nvidia Corporation Adaptive multiple engine image motion detection system and method
US9658829B2 (en) * 2009-10-19 2017-05-23 Intel Corporation Near optimal configurable adder tree for arbitrary shaped 2D block sum of absolute differences (SAD) calculation engine
US20110093518A1 (en) * 2009-10-19 2011-04-21 Karthikeyan Vaithianathan Near optimal configurable adder tree for arbitrary shaped 2d block sum of absolute differences (sad) calculation engine
GB2474546A (en) * 2009-10-19 2011-04-20 Intel Corp 2D adder architecture for various block sizes
GB2474546B (en) * 2009-10-19 2012-02-22 Intel Corp A near optimal configurable adder tree for arbitrary shaped 2D block sum of absolute differences (SAD) calculation engine
CN102075744A (en) * 2009-10-19 2011-05-25 英特尔公司 Near optimal configurable adder tree for arbitrary shaped 2D block sum of absolute differences (SAD) calculation engine
US8891893B2 (en) * 2010-01-14 2014-11-18 Samsung Electronics Co. Ltd. Method and apparatus for encoding and decoding image by using large transform unit
US20140294069A1 (en) * 2010-01-14 2014-10-02 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding image by using large transform unit
US20140286419A1 (en) * 2010-01-14 2014-09-25 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding image by using large transform unit
US8885959B2 (en) * 2010-01-14 2014-11-11 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding image by using large transform unit
US20140286586A1 (en) * 2010-01-14 2014-09-25 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding image by using large transform unit
US8923641B2 (en) * 2010-01-14 2014-12-30 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding image by using large transform unit
US9860546B2 (en) * 2010-10-04 2018-01-02 Electronics And Telecommunications Research Institute Method for encoding/decoding block information using quad tree, and device for using same
US11223839B2 (en) * 2010-10-04 2022-01-11 Electronics And Telecommunications Research Institute Method for encoding/decoding block information using quad tree, and device for using same
US11706430B2 (en) * 2010-10-04 2023-07-18 Electronics And Telecommunications Research Institute Method for encoding/decoding block information using quad tree, and device for using same
US20130188731A1 (en) * 2010-10-04 2013-07-25 Korea Advanced Institute Of Science And Technology Method for encoding/decoding block information using quad tree, and device for using same
US9544595B2 (en) * 2010-10-04 2017-01-10 Electronics And Telecommunications Research Institute Method for encoding/decoding block information using quad tree, and device for using same
US20170111646A1 (en) * 2010-10-04 2017-04-20 Electronics And Telecommunications Research Institute Method for encoding/decoding block information using quad tree, and device for using same
US20220094958A1 (en) * 2010-10-04 2022-03-24 Electronics And Telecommunications Research Institute Method for encoding/decoding block information using quad tree, and device for using same
US10567782B2 (en) * 2010-10-04 2020-02-18 Electronics And Telecommunications Research Institute Method for encoding/decoding block information using quad tree, and device for using same
US10110912B2 (en) * 2010-10-04 2018-10-23 Electronics And Telecommunications Research Institute Method for encoding/decoding block information using quad tree, and device for using same
US10674169B2 (en) * 2010-10-04 2020-06-02 Electronics And Telecommunications Research Institute Method for encoding/decoding block information using quad tree, and device for using same
US20190020887A1 (en) * 2010-10-04 2019-01-17 Electronics And Telecommunications Research Instit Ute Method for encoding/decoding block information using quad tree, and device for using same
US20190037229A1 (en) * 2010-10-04 2019-01-31 Electronics And Telecommunications Research Institute Method for encoding/decoding block information using quad tree, and device for using same
US20190037228A1 (en) * 2010-10-04 2019-01-31 Electronics And Telecommunications Research Institute Method for encoding/decoding block information using quad tree, and device for using same
US10560709B2 (en) * 2010-10-04 2020-02-11 Electronics And Telecommunications Research Institute Method for encoding/decoding block information using quad tree, and device for using same
US20130114689A1 (en) * 2011-11-03 2013-05-09 Industrial Technology Research Institute Adaptive search range method for motion estimation and disparity estimation
CN103096063A (en) * 2011-11-03 2013-05-08 财团法人工业技术研究院 Motion estimation method and parallax estimation method for adaptively adjusting estimation search range
TWI461066B (en) * 2011-11-03 2014-11-11 Ind Tech Res Inst Motion estimation method and disparity estimation method for adaptive search range
US8817871B2 (en) * 2011-11-03 2014-08-26 Industrial Technology Research Institute Adaptive search range method for motion estimation and disparity estimation
US11102436B2 (en) * 2016-10-31 2021-08-24 Sony Semiconductor Solutions Corporation Solid-state imaging device and signal processing method thereof, and electronic device
CN108900846A (en) * 2018-07-17 2018-11-27 珠海亿智电子科技有限公司 A kind of the two-dimensional directional motion estimation hardware circuit and its method of Video coding
US11842541B1 (en) * 2020-11-16 2023-12-12 Ben Group, Inc. Multi-resolution attention network for video action recognition

Similar Documents

Publication Publication Date Title
US20050238102A1 (en) Hierarchical motion estimation apparatus and method
US6765965B1 (en) Motion vector detecting apparatus
US7929609B2 (en) Motion estimation and/or compensation
US8218635B2 (en) Systolic-array based systems and methods for performing block matching in motion compensation
US7889795B2 (en) Method and apparatus for motion estimation
US20050249284A1 (en) Method and apparatus for generating motion vector in hierarchical motion estimation
JP5089610B2 (en) Block-based motion estimation method and apparatus
US8345764B2 (en) Motion estimation device having motion estimation processing elements with adder tree arrays
JP3089165B2 (en) Motion vector search device
GB2378345A (en) Method for scanning a reference macroblock window in a search area
US8451901B2 (en) High-speed motion estimation apparatus and method
TW502535B (en) Methods and apparatus for motion estimation in compressed domain
US8135224B2 (en) Generating image data
Cetin et al. An adaptive true motion estimation algorithm for frame rate conversion of high definition video and its hardware implementations
US7324596B2 (en) Low complexity block size decision for variable block size motion estimation
JPWO2006006489A1 (en) Motion detection device
US6160850A (en) Motion estimator employing a three-step hierachical search block-matching algorithm
JP4597103B2 (en) Motion vector search method and apparatus
JP4377693B2 (en) Image data search
US6931066B2 (en) Motion vector selection based on a preferred point
US20040120402A1 (en) Motion estimation apparatus for image data compression
KR100205146B1 (en) Motion estimation method in digital video encoder
JP3115511B2 (en) Motion vector search device
KR20060089667A (en) Method and device for scanning in a data frame
JPH07107485A (en) Method for detecting moving vector

Legal Events

Date Code Title Description
AS Assignment

Owner name: SAMSUNG ELECTRONICS CO., LTD., KOREA, REPUBLIC OF

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LEE, JAE-HUN;PARK, CHAN-SIK;REEL/FRAME:016506/0198

Effective date: 20050422

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION