WO2022021310A1 - 编码方法、装置、计算处理设备、计算机程序及存储介质 - Google Patents

编码方法、装置、计算处理设备、计算机程序及存储介质 Download PDF

Info

Publication number
WO2022021310A1
WO2022021310A1 PCT/CN2020/106168 CN2020106168W WO2022021310A1 WO 2022021310 A1 WO2022021310 A1 WO 2022021310A1 CN 2020106168 W CN2020106168 W CN 2020106168W WO 2022021310 A1 WO2022021310 A1 WO 2022021310A1
Authority
WO
WIPO (PCT)
Prior art keywords
pixel
motion vector
sub
prediction data
integer
Prior art date
Application number
PCT/CN2020/106168
Other languages
English (en)
French (fr)
Inventor
周焰
郑萧桢
Original Assignee
深圳市大疆创新科技有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 深圳市大疆创新科技有限公司 filed Critical 深圳市大疆创新科技有限公司
Priority to PCT/CN2020/106168 priority Critical patent/WO2022021310A1/zh
Publication of WO2022021310A1 publication Critical patent/WO2022021310A1/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock

Definitions

  • the present application relates to the technical field of video coding, and in particular, to a coding method, a coding apparatus, a computing processing device, a computer program, and a computer-readable storage medium.
  • Video encoding and decoding technology includes compression at the encoding end and decompression at the decoding end.
  • the compression at the encoding end is to compress and encode the original video file through some encoding techniques to form a code stream, and then the decompression at the decoding end is to decode and reconstruct the code stream to form a video file.
  • the decoding process can be regarded as the reverse process of the encoding process.
  • the video coding technology includes stages such as predictive coding, transform coding, quantization, and entropy coding.
  • predictive coding includes intra-frame prediction and inter-frame prediction. For I-frames, intra-frame prediction is used for coding.
  • inter-frame prediction For B frames (Bidirectionally predicted picture frames) and P frames (Predictive-coded Picture, forward predictive encoded picture frames), in addition to intra-frame prediction, inter-frame prediction can also be used. coding.
  • the computing resources that can be utilized by video codec processing are often limited. Therefore, how to improve the compression rate of codec processing as much as possible under the condition of limited computing resources becomes a problem to be solved.
  • the present application is made in order to provide an encoding method, encoding apparatus, computing processing device, computer program, and computer-readable storage medium that overcome the above problems or at least partially solve the above problems.
  • a coding method comprising:
  • a second integer-pixel search is performed on the current processing block in the reference frame to obtain a second integer-pixel motion vector and a second integer-pixel motion vector corresponding to the second integer-pixel motion vector.
  • a first sub-pixel search is performed for the current processing block in the reference frame, and a first sub-pixel is obtained.
  • the current processing block is performed in the reference frame.
  • Two sub-pixel search to obtain the second sub-pixel motion vector and the second sub-pixel prediction data corresponding to the second sub-pixel motion vector;
  • the current processing block is encoded according to the first sub-pixel motion vector, the first sub-pixel prediction data, the second sub-pixel motion vector and the second sub-pixel prediction data.
  • an encoding method comprising:
  • the first pixel search and the second pixel search are both integer pixel searches, or both the first pixel search and the second pixel search are sub-pixel searches.
  • an encoding apparatus includes a processor and a memory;
  • the processor is used to:
  • a second integer-pixel search is performed on the current processing block in the reference frame to obtain a second integer-pixel motion vector and a second integer-pixel motion vector corresponding to the second integer-pixel motion vector.
  • a first sub-pixel search is performed for the current processing block in the reference frame, and a first sub-pixel is obtained.
  • the current processing block is performed in the reference frame.
  • Two sub-pixel search to obtain the second sub-pixel motion vector and the second sub-pixel prediction data corresponding to the second sub-pixel motion vector;
  • the current processing block is encoded according to the first sub-pixel motion vector, the first sub-pixel prediction data, the second sub-pixel motion vector and the second sub-pixel prediction data.
  • an encoding apparatus includes a processor and a memory;
  • the processor is used to:
  • the first pixel search and the second pixel search are both integer pixel searches, or both the first pixel search and the second pixel search are sub-pixel searches.
  • a computing processing device comprising:
  • One or more processors when the computer readable code is executed by the one or more processors, the computing processing device performs the encoding method described above.
  • a computer program comprising computer readable code which, when executed on a computing processing device, causes the computing processing device to execute the encoding method described above.
  • the compression rate of codec can be improved.
  • FIG. 1 shows a flowchart of steps of an encoding method according to an embodiment of the present application
  • FIG. 2 shows a flowchart of steps of an encoding method according to an embodiment of the present application
  • Fig. 3 shows the step flow chart of the first integer pixel search process
  • FIG. 4 shows a flowchart of steps of an encoding method according to an embodiment of the present application
  • FIG. 5 shows a flowchart of steps of an encoding method according to an embodiment of the present application
  • FIG. 6 shows a flowchart of steps of an encoding method according to an embodiment of the present application
  • FIG. 7 shows a flowchart of steps of an encoding method according to an embodiment of the present application.
  • FIG. 8 shows a flowchart of steps of an encoding method according to an embodiment of the present application.
  • FIG. 9 shows a structural block diagram of an encoding apparatus according to an embodiment of the present application.
  • FIG. 10 shows a structural block diagram of an encoding apparatus according to an embodiment of the present application.
  • Figure 11 schematically shows a block diagram of a computing processing device for performing the method according to the present application.
  • Figure 12 schematically shows a storage unit for holding or carrying program code implementing the method according to the application.
  • Video encoding and decoding technology includes compression at the encoding end and decompression at the decoding end.
  • the compression at the encoding end is to compress and encode the original video file through some encoding techniques to form a code stream, and then the decompression at the decoding end is to decode and reconstruct the code stream to form a video file.
  • the decoding process can be regarded as the reverse process of the encoding process.
  • a frame of image can be divided into multiple processing blocks.
  • the processing block is used as the unit, and the processing blocks are encoded one by one to organize into a continuous video stream.
  • the processing block includes the coding unit proposed in the HEVC (High Efficiency Video Coding) standard, the macro block (Macro Block) proposed in the H.264 standard (a highly compressed digital video codec standard), or any other Applicable processing blocks are not limited in this embodiment of the present application.
  • the image is first divided into several coding tree units (Coding Tree Unit, CTU), the size of CTU is generally 64 ⁇ 64, for each
  • CTU Coding Tree Unit
  • the CTU can be divided into coding units (Coding Unit, CU) according to the quadtree division method, and the size of the CU can be 8 ⁇ 8, 16 ⁇ 16 , 32 ⁇ 32, 64 ⁇ 64.
  • the current CU may be further divided into prediction units (Prediction Unit, PU) to perform intra-frame or inter-frame prediction to obtain a prediction block.
  • the current CU can be divided into transform units (Transform Unit, TU) for transform coding and quantization when performing transform coding.
  • each frame of the image sequence is divided into multiple processing blocks (for example, coding units or macroblocks), and then each processing block is searched for a specific range in adjacent frames. According to certain matching criteria, the block most similar to the current processing block is searched out, and the adjacent frame that needs to be referenced for encoding the current frame is recorded as the reference frame.
  • processing blocks for example, coding units or macroblocks
  • a motion vector (MotionVector, MV) is used to represent the relative displacement between the currently processed block and the most similar block searched in the reference frame.
  • MV MotionVector
  • Each divided block has corresponding motion information that needs to be transmitted to the decoding end.
  • the current processing block can be completely restored by only saving the motion vector and residual data.
  • first search with integer pixel precision after finding the most similar block, then search around the position with sub-pixel precision to find the most similar block. For example, first search with integer pixel precision, then with 1/2 pixel precision, then with 1/4 pixel precision.
  • the integer-pixel search performed in the frame before the playback order is usually recorded as the forward integer-pixel search, and the integer-pixel search performed in the frame after the playback order is recorded as the rearward integer search.
  • Integer pixel search in the forward direction the sub-pixel search performed in the frame before the playback order is recorded as the forward sub-pixel search, and the sub-pixel search performed in the frame after the playback order is recorded as the backward sub-pixel search.
  • Pixel search In an embodiment of the present application, it is proposed to perform two integer pixel searches in the same reference frame, which are respectively recorded as the first integer pixel search and the second integer pixel search, and two sub-pixel searches are respectively recorded as the first integer search. Subpixel search and second subpixel search.
  • Integer pixel search or sub-pixel search can obtain the motion vector and the prediction data corresponding to the motion vector, and the prediction data includes the pixel data in the block corresponding to the motion vector in the reference frame, the chrominance data of the pixel, the luminance data of the pixel, or other Any applicable data is not limited in this embodiment of the present application.
  • the present application provides an encoding mechanism, by performing a first integer pixel search in a reference frame for the current processing block, to obtain a first integer pixel motion vector and a first integer pixel corresponding to the first integer pixel motion vector Prediction data, according to the first integer pixel prediction data, perform a second integer pixel search on the current processing block in the reference frame, and obtain a second integer pixel motion vector and the corresponding second integer pixel motion vector.
  • Second integer-pixel prediction data according to the first integer-pixel motion vector and the first integer-pixel prediction data corresponding to the first integer-pixel motion vector, the current processing block in the reference frame is subjected to the first subclassification Pixel search to obtain the first sub-pixel motion vector and the first sub-pixel prediction data corresponding to the first sub-pixel motion vector, according to the first sub-pixel prediction data, the second integer pixel motion vector and the first sub-pixel motion vector
  • a second subpixel search is performed on the current processing block in the reference frame to obtain the second subpixel motion vector and the corresponding second subpixel motion vector
  • the second sub-pixel prediction data according to the first sub-pixel motion vector, the first sub-pixel prediction data, the second sub-pixel motion vector and the second sub-pixel prediction data, the current processing block is encoded, so that the original The search in two different frames is changed to be carried out in the same reference frame, which not only realizes the high accuracy brought by the motion estimation of bidirectional prediction, thereby improving the
  • FIG. 1 a flowchart of steps of an encoding method according to an embodiment of the present application is shown, which may specifically include the following steps:
  • Step 101 perform a first integer pixel search in the reference frame for the current processing block to obtain a first integer pixel motion vector and first integer pixel prediction data corresponding to the first integer pixel motion vector.
  • only one reference frame is used to implement the bidirectional prediction mode of the B frame.
  • a candidate MV is obtained respectively according to the MV result of the integer pixel search on the adjacent block on the left and the adjacent block on the upper side of the current CU, or the CU at the corresponding position of the current CU in the reference frame can be obtained.
  • Get a candidate MV Taking the candidate MV as the starting point, the matching cost of the surrounding integer pixels is searched, where the search range can be configured, for example, it can be set to 4.
  • the search range can be configured, for example, it can be set to 4.
  • the sum of absolute error SAD
  • Motion Vector Difference Motion Vector Difference
  • the MV corresponding to the point with the smallest SAD ie, the first integer pixel motion vector
  • the optimal integer pixel search result is selected as the optimal integer pixel search result.
  • Step 102 According to the first integer pixel prediction data, perform a second integer pixel search for the current processing block in the reference frame, and obtain a second integer pixel motion vector and a corresponding second integer pixel motion vector. Second integer pixel prediction data.
  • a second integer pixel search process is performed on the basis of the first integer pixel search.
  • the entire second integer pixel search process is basically the same as the first integer pixel search process.
  • the first integer pixel prediction data obtained by the first integer pixel search needs to be used to perform an integer pixel search for the current processing block in the reference frame to obtain the motion.
  • the vector and the prediction data corresponding to the motion vector, the motion vector is denoted as the second integer pixel motion vector
  • the prediction data is denoted as the second integer pixel prediction data.
  • the second integer pixel search according to the first integer pixel prediction data. For example, when calculating the similarity data between the predicted data and the current processing block, calculate the first The similarity data, according to the first similarity data, determine the second integer pixel motion vector and the second integer pixel prediction data.
  • the optimal motion vector obtained during the first integer pixel search can be selected as the motion vector of the first integer pixel search, that is, the first integer pixel motion vector, and the first integer pixel search time
  • the obtained suboptimal motion vector is used as the optimal motion vector for the second integer pixel search, that is, the second integer pixel motion vector, and the corresponding second integer pixel prediction data can be obtained according to the second integer pixel motion vector.
  • any other applicable implementation manner may be adopted, which is not limited in this embodiment of the present application.
  • Step 103 According to the first integer-pixel motion vector and the first integer-pixel prediction data corresponding to the first integer-pixel motion vector, perform a first sub-pixel search on the current processing block in the reference frame to obtain The first sub-pixel motion vector and the first sub-pixel prediction data corresponding to the first sub-pixel motion vector.
  • the current processing block is subjected to a first sub-pixel method according to the first integer pixel motion vector and the first integer pixel prediction data. After searching, a more accurate motion vector and prediction data corresponding to the motion vector are obtained, the motion vector is recorded as the first sub-pixel motion vector, and the prediction data is recorded as the first sub-pixel prediction data.
  • the luminance component of each CU obtain the result of the first integer pixel search, that is, the first integer pixel motion vector and the first integer pixel prediction data, and perform the sub-pixel search process according to the method specified in the standard, Including 1/2 pixel precision search and 1/4 pixel precision search, by comparing the absolute transformation difference sum (Sum of Absolute Transformed Difference, SATD) of each search point to obtain the optimal 1/4 pixel precision MV (ie The first sub-pixel motion vector) and the corresponding predicted value (ie, the first sub-pixel motion vector), and record the predicted optimal cost value.
  • SATD Absolute Transformed Difference
  • the absolute transformation difference sum refers to the summation of absolute values after transformation. It should be noted that SAD and SATD are different cost values.
  • Step 104 According to the first sub-pixel prediction data, the second integer-pixel motion vector, and the second integer-pixel prediction data corresponding to the second integer-pixel motion vector, perform an analysis on the current processing block in the reference frame. A second sub-pixel search is performed in , to obtain a second sub-pixel motion vector and second sub-pixel prediction data corresponding to the second sub-pixel motion vector.
  • a second sub-pixel search process is performed on the basis of the first sub-pixel search.
  • the entire second sub-pixel search process is basically the same as the first sub-pixel search process.
  • the first sub-pixel search is required to obtain The first subpixel prediction data of .
  • the current processing block is subjected to sub-pixel search in the reference frame to obtain the motion vector and the prediction data corresponding to the motion vector, the motion vector is denoted as the second sub-pixel motion vector, and the prediction data is denoted as the second sub-pixel prediction data .
  • the implementation of the second sub-pixel search includes various implementations. For example, when calculating the prediction data and the current When processing the similarity data between blocks, calculate the second similarity data according to the difference between the average value of the first sub-pixel prediction data and the predicted data searched by the second sub-pixel and the current processing block, and calculate the second similarity data according to the second similarity data. degree data, determine the second sub-pixel motion vector and the second sub-pixel prediction data, or any other applicable implementation manner, which is not limited in this embodiment of the present application.
  • Step 105 Encode the current processing block according to the first sub-pixel motion vector, the first sub-pixel prediction data, the second sub-pixel motion vector, and the second sub-pixel prediction data.
  • the current processing block can be encoded.
  • the process of encoding the current processing block may include: the decision of the prediction method, the decision of the division method of the processing block, the decision of the inter-frame coding method, entropy coding, loop filtering and other processing, or any other suitable processing. The embodiment does not limit this.
  • the first sub-pixel prediction data and the second sub-pixel prediction data may be averaged and shifted to obtain the final prediction data of the current processing block, and the prediction data and the current processing block may be differenced to obtain the residual error Then, the residual value is further compressed through the transformation coding and quantization process to obtain the residual coefficient, and finally the residual coefficient and some prediction mode information generated by the prediction process are entropy encoded to obtain the encoded code stream.
  • the first integer pixel motion vector and the first integer pixel prediction data corresponding to the first integer pixel motion vector are obtained.
  • the first integer pixel prediction data, the second integer pixel search is performed on the current processing block in the reference frame, and the second integer pixel motion vector and the second integer pixel prediction data corresponding to the second integer pixel motion vector are obtained.
  • the second integer-pixel motion vector and the second integer-pixel motion vector correspond to The second integer pixel prediction data of the current processing block is subjected to a second sub-pixel search in the reference frame to obtain a second sub-pixel motion vector and a second sub-pixel prediction corresponding to the second sub-pixel motion vector.
  • the current processing block is encoded, so that the original in two different frames
  • the search carried out in the same reference frame is changed to be carried out in the same reference frame, which not only realizes the high accuracy brought by the motion estimation of the bidirectional prediction, thereby improving the compression ratio of the encoding, and avoids the high bandwidth consumption caused by the two frames. Solved the problem that searching in two frames is not suitable for some devices or application scenarios with limited bandwidth resources.
  • the existing B-frame bidirectional prediction methods generally go through forward integer pixel search and sub-pixel search, and then generate the forward optimal prediction result on this basis, and then use the forward optimal prediction result to do backward.
  • the integer-pixel search and sub-pixel search of the algorithm obtain the optimal backward prediction result, and finally the weighted average of the forward and backward results is used to generate the optimal prediction result.
  • the above motion estimation process requires a relatively large amount of computation. Performing motion estimation according to the above execution sequence, that is, implementing it in the same pipeline level in hardware implementation, will result in a large timing pressure on the pipeline level, which in turn leads to low coding efficiency.
  • step 103 includes: while performing a second integer pixel search in the reference frame for the current processing block, according to the first integer pixel motion vector and the first integer pixel
  • One integer pixel prediction data perform the first subpixel search in the reference frame for the current processing block, and obtain the first subpixel motion vector and the first subpixel prediction data, that is, the second integer pixel search and the first subpixel search can be performed in parallel deal with.
  • Both the second integer pixel search and the first sub-pixel search can be started only after the first integer pixel search obtains the first integer pixel prediction data.
  • the first sub-pixel search can be started as long as the second integer pixel search ends.
  • the pixel search enables parallel processing of the second integer pixel search and the first sub-pixel search, reducing processing time and improving coding efficiency.
  • the method of inter-frame prediction in stages is divided into 4 pipeline stages, including the Integer Motion Estimation (IME) stage, the Fractional Motion Estimation (FME) stage, the coding unit decision ( Coding Unit Decision, CUD) stage and Mode Decision (Mode Decision, MD) stage.
  • IME Integer Motion Estimation
  • FME Fractional Motion Estimation
  • CUD Coding Unit Decision
  • MD Mode Decision
  • an integer pixel search process is mainly performed to determine the optimal integer pixel MV of each CU, and the optimal first integer pixel MV (ie, the first integer pixel motion vector) and the second integer pixel MV (ie, the first integer pixel MV) of each CU optimal Two integer pixel motion vectors), and the corresponding prediction data are passed to the FME stage.
  • the sub-pixel search process is mainly performed to determine the optimal sub-pixel MV of each CU, and then it is decided whether the current CU chooses forward prediction or bidirectional prediction (choose the prediction method with a smaller cost), and the prediction method of each CU is determined. (forward prediction or bidirectional prediction), and its corresponding MV and luma component prediction values are passed to the CUD stage.
  • the main decision-making method of CU division is made. For example, the RD (Rate Distortion) cost value of the 16 ⁇ 16 CU and the sum of the RD cost values of the corresponding four 8 ⁇ 8 CUs are compared, and the current 16 ⁇ 8 CU is determined. Whether the 16 CUs are to be divided into 4 8 ⁇ 8 CUs for coding, select the mode with a smaller RD cost value, and then pass the CU division mode of the current CTU and the corresponding coding mode information of each CU to the MD stage.
  • RD Rate Distortion
  • the correction of the Advanced Motion Vector Prediction (AMVP) mode and the encoding process of the merge mode and skip prediction mode are mainly performed, and the AMVP mode, merge mode, skip mode of the current CU are compared.
  • the RD cost value of the mode determines the inter-frame coding mode of the current CU, and after completing the above process of each CU in the current CTU, the coding mode information and coefficients of the current CTU are subjected to entropy coding and the subsequent loop filtering process.
  • the IME stage and the FME stage are in different pipeline stages.
  • the pipeline stage used to execute the FME stage of the previous CTU and the pipeline stage used to execute the IME stage of the current CTU can be parallelized, that is, the second integer pixel search and the first subpixel search can be parallelized, reducing processing time , which improves the coding efficiency.
  • using this phased inter-frame coding method to realize the bidirectional prediction of the B frame can reduce the timing pressure in the hardware implementation of the previous level, and is also convenient for the hardware implementation.
  • step 101 includes: step 201 and step 202 .
  • Step 201 Determine the available data range of the reference frame stored in the line buffer according to the position in the image of the processing block group to which the current processing block belongs and the global motion vector.
  • the current frame is divided into processing block groups, and then the processing block groups are divided into processing blocks.
  • the image is first divided into several CTUs (ie, processing block groups), and then the CTUs are divided into CUs (ie, processing blocks) according to the quadtree division method.
  • the Global Motion Vector (GMV) is a motion vector obtained by global motion estimation between the current frame and the reference frame. A part of the data in the reference frame is stored in the Line Buffer, and this part of the data is available.
  • the reference frame storage can be determined according to the position of the processing block group in the image of the current frame and the global motion vector between the current frame and the reference frame.
  • the available data range of the line buffer so that the data within the available data range can most easily search for the block most similar to the current processing block.
  • the size of the available data range can be set reasonably. For example, the size of the processing block can be expanded by 32 rows and columns. Specifically, a reasonable size of the available data range can be set to improve the search accuracy.
  • Step 202 within the available data range, perform a first integer-pixel search on the current processing block to obtain the first integer-pixel motion vector and first integer-pixel prediction data.
  • the search is not performed in the entire current frame, but within the available data range, and data is obtained from the line buffer according to the available data range, and the search is performed in the obtained data.
  • Step 102 includes: Step 203 .
  • Step 203 within the available data range, according to the first integer-pixel prediction data, perform a second integer-pixel search on the current processing block to obtain the second integer-pixel motion vector and second integer-pixel prediction data .
  • the search is not performed in the entire current frame, but within the available data range.
  • step 202 includes:
  • Step 2021 modifying the candidate motion vector according to the available data range to obtain a modified candidate motion vector.
  • the candidate motion vector In order to limit the pixel data of the reference frame during the search to the available data range, if the predicted data obtained from the candidate motion vector exceeds the available data range, the candidate motion vector needs to be modified so that the modified candidate motion vector The forecast data obtained from the row buffer is within the available data range.
  • Step 2022 Acquire prediction data of the corresponding position of the modified candidate motion vector from the line buffer according to the modified candidate motion vector and the position of the current processing block in the image.
  • the address of reading data from the line buffer is determined, and the prediction data of the corresponding position of the corrected candidate motion vector can be obtained from the line buffer according to the address.
  • Step 2023 using the modified candidate motion vector as a starting point, perform a first integer pixel search according to the predicted data, and obtain the first integer pixel motion vector and the first integer pixel prediction data;
  • Step 203 includes:
  • Step 2031 starting from the modified candidate motion vector, perform a second integer pixel search according to the prediction data and the first integer pixel prediction data, and obtain the second integer pixel motion vector and the second integer pixel prediction data.
  • the CTU size is 32 ⁇ 32, 8 ⁇ 8, 16 ⁇ 16, and 32 ⁇ 32 CUs are supported, and only the 2N ⁇ 2N PU division mode is supported. If multiple PU division modes are supported, the IME stage and the FME stage need to search for each PU division mode respectively, and finally select the adopted division mode in the FME stage.
  • the reference frame data is managed by means of line buffer. Before starting inter-frame prediction, it is necessary to determine the available data range of the current CTU according to the position of the current CTU in the image and the GMV. Subsequent searches are limited to the available data range when taking the pixel data of the reference frame. If the obtained prediction If the data exceeds the available data range, the MV needs to be corrected or the current MV is determined to be unavailable.
  • a candidate MV can be obtained according to the MV results of the integer pixel search of the adjacent block on the left of the current CU and the adjacent block above the current CU. Get a candidate MV.
  • Revise the candidate MV Modify the candidate MV according to the available data range of the current CTU. If the pixel of the search point is not within the available data range of the current CTU when performing an integer pixel search with the current candidate MV, then modify the current candidate MV to the available data of the current CTU. within the range.
  • Integer pixel search results By comparing the SAD cost value of each integer pixel search point, the MV corresponding to the point with the smallest SAD cost value is selected as the optimal integer pixel search result.
  • the current CU performs the second integer pixel search after completing the first integer pixel search.
  • the search range is also within the available data range of the current CTU, that is, it is the same as the available data during the first integer pixel search.
  • the range is the same, and the candidate MV used is also the same as the first integer pixel search.
  • step 102 includes:
  • Step 301 Calculate first similarity data according to the difference between the average value of the first integer-pixel prediction data and the second integer-pixel search prediction data and the current processing block.
  • Step 302 Determine the second integer-pixel motion vector and second integer-pixel prediction data according to the first similarity data.
  • the similarity data includes SAD, SATD, etc., or any other applicable similarity data, which is not limited in this embodiment of the present application.
  • the similarity data in the second integer pixel search is recorded as the first similarity data.
  • the entire process of the second integer pixel search is basically the same as that of the first integer pixel search, except that when calculating the SAD cost value of each search point in the second integer pixel search, the optimal predicted value of the first integer pixel search and the After the predicted value of the second integer pixel search is averaged, the difference is made with the original pixel value of the current processing block to obtain the SAD (ie, the first similarity data).
  • the optimal predicted value of the first integer pixel search is predFw
  • the original pixel value is pOrg.
  • the pOrg when calculating the SAD is replaced by 2*pOrg-predFw, and then after calculating the SAD, the SAD result is divided by 2 to get the final SAD value.
  • step 104 includes:
  • Step 401 Calculate second similarity data according to the difference between the average value of the first sub-pixel prediction data and the prediction data searched by the second sub-pixel and the current processing block.
  • Step 402 Determine the second sub-pixel motion vector and second sub-pixel prediction data according to the second similarity data.
  • the similarity data in the second sub-pixel search is recorded as the second similarity data.
  • the entire second sub-pixel search process is basically the same as the first sub-pixel search, except that during the second sub-pixel search, when calculating the SATD cost value of each sub-pixel search point, it is necessary to first After averaging the optimal prediction value of the first sub-pixel search and the current prediction value of the second sub-pixel search, the SATD (ie the second similarity data) is calculated by difference with the original pixel value of the current processing block.
  • the original pixel value in the calculation of SATD is replaced by 2 times the difference between the original pixel value and the optimal predicted value of the first sub-pixel search, and then after the SATD is calculated, the SATD value is divided by 2 to obtain the final SATD value.
  • step 105 it further includes:
  • Step 106 by comparing the optimal cost value of the first sub-pixel search method and the optimal cost value of the bi-directional sub-pixel search method, select the first sub-pixel search method or the bi-directional sub-pixel search method.
  • the constraints of the bit rate and the distortion degree are considered at the same time, and the low bit rate is guaranteed while the low distortion degree is guaranteed, which is more conducive to the transmission of the video stream.
  • the optimal cost value is the cost value corresponding to the optimal result of the sub-pixel search. Select the search method adopted by the current processing block by comparing the optimal cost value.
  • the optimal SATD cost value of the two sub-pixel searches is added to the corresponding MVD of the two sub-pixel searches to obtain the cost value of the two-way sub-pixel search, and then the cost value of the first sub-pixel search is calculated.
  • the cost value of the two-way sub-pixel search it is determined whether the current CU selects the first sub-pixel search mode or the two-way sub-pixel search mode (selects the search mode with less cost).
  • Step 107 If the first sub-pixel search mode is selected, the current processing block is encoded according to the first sub-pixel motion vector and the first sub-pixel prediction data.
  • the optimal prediction value of the first sub-pixel search is directly used as the prediction value of the current CU.
  • the specific implementation manner of encoding the current processing block according to the first sub-pixel motion vector and the first sub-pixel prediction data is the same as the encoding manner corresponding to the current search manner, and details are not described herein.
  • Step 108 If the bidirectional sub-pixel search mode is selected, execute the described first sub-pixel motion vector, the first sub-pixel prediction data, the second sub-pixel motion vector and the second sub-pixel prediction data. The encoding step of the current processing block.
  • step 105 includes:
  • Step 501 according to the first sub-pixel motion vector, the first sub-pixel prediction data, the second sub-pixel motion vector and the second sub-pixel prediction data, determine the current processing block corresponding to the bidirectional sub-pixel search mode.
  • Bidirectional prediction data for the luma component Bidirectional prediction data for the luma component.
  • the predicted value is obtained by performing the interpolation prediction process of the luminance component according to the standard, and the predicted value is obtained by performing the interpolation prediction process of the luminance component according to the standard.
  • the vector and the second sub-pixel prediction data are subjected to the interpolation prediction process of the luminance component according to the standard to obtain the predicted value, and then the two predicted values are averaged and shifted to obtain the final predicted value as the bidirectional prediction of the luminance component corresponding to the current processing block data.
  • a high-precision interpolation prediction process is carried out according to the standard to obtain the predicted values of the two sub-pixel searches respectively, and then the prediction value is obtained. The values are averaged and shifted to obtain the final predicted value as the predicted value of the current CU.
  • the search modes first sub-pixel search mode or bidirectional sub-pixel search mode
  • the MV and luma component prediction value ie, the bidirectional prediction data of luma component
  • CCD coding unit decision
  • Step 502 according to the first sub-pixel motion vector, the first sub-pixel prediction data, the second sub-pixel motion vector and the second sub-pixel prediction data, determine the current processing block corresponding to the bidirectional sub-pixel search mode.
  • Bidirectional prediction data for the chroma components are used.
  • the chrominance component For each processing block, according to the bidirectional sub-pixel search method, the first sub-pixel motion vector and the corresponding prediction data, the second sub-pixel motion vector and the corresponding prediction data, the chrominance component is predicted by interpolation according to the standard.
  • the predicted value of the chrominance component that is, the bidirectional prediction data of the chrominance component corresponding to the current processing block.
  • the interpolation prediction of the chrominance component is carried out according to the standard to obtain the predicted value of the chrominance component (that is, the bidirectional prediction of the chrominance component). data). Then calculate the residual with the original pixel value of the current CU, and perform the transformation quantization and inverse quantization and inverse transformation process to obtain the reconstructed value, then calculate the distortion, and perform the bit estimation to obtain the bit rate estimation value, and then calculate the rate distortion (Rate Distortion, RD) cost value. After the RD cost value of each CU is calculated, the division method of the CU is decided. For the specific decision method, reference may be made to the description in the above embodiment, which will not be repeated here.
  • Step 503 Encode the current processing block according to the bidirectional prediction data of the luminance component and the bidirectional prediction data of the chrominance component.
  • the subsequent encoding steps are performed according to the bidirectional prediction data of the luminance component and the bidirectional prediction data of the chrominance component, which will not be described in detail here.
  • step 503 before step 503, the method further includes:
  • Step 504 Obtain a candidate first motion vector list and a candidate second motion vector list of various coding modes of the current processing block, respectively.
  • Step 505 Combine the candidate first motion vectors in the candidate first motion vector lists of the various coding modes and the candidate second motion vectors in the candidate second motion vector lists to generate a candidate bidirectional motion vector list.
  • Step 506 Determine the target coding mode adopted by the current processing block according to the candidate bidirectional motion vector list.
  • the encoding mode includes an AMVP mode, a merge mode, a skip mode, etc., or any other applicable encoding mode, which is not limited in this embodiment of the present application.
  • the encoding mode will create a motion vector list for the current processing block, and denote the list of motion vectors obtained by the first sub-pixel search as the candidate first motion vector list, and the list of motion vectors obtained by the second sub-pixel search as the candidate list. Second motion vector list.
  • the candidate first motion vectors in the candidate first motion vector list and the candidate second motion vectors in the candidate second motion vector list are respectively combined to generate the candidate bidirectional motion vector list.
  • There are various ways of combining for example, combining all candidate first motion vectors and candidate second motion vectors into a pair of motion vectors, and finally obtain a candidate bidirectional motion vector list;
  • the first candidate first motion vector and each candidate second motion vector are respectively combined into a pair of motion vectors, and finally a candidate bidirectional motion vector list is obtained, or any other applicable combination manner, which is not limited in this embodiment of the present application.
  • the candidate bidirectional motion vector list corresponding to each encoding mode and the corresponding search method perform interpolation prediction to obtain the predicted value, and then calculate the RD cost value of each encoding mode respectively, and compare the RD cost value of various encoding modes of the current processing block. , decides the encoding mode of the current processing block, and determines the target encoding mode adopted by the current processing block.
  • the final coding mode information of the adjacent blocks can only be obtained in the MD stage, it is necessary to recalculate the MVD according to the coding mode information of the adjacent blocks, and at the same time modify the AMVP mode according to the new MVD bit consumption.
  • RD cost value Obtain the candidate MV list of the AMVP mode of the current CU according to the method specified in the standard, and then select the candidate MV with a smaller MVD cost as the MVP of the current CU.
  • the candidate MV determination of the first sub-pixel search and the MVD calculation process need to be performed. If the two-way search method is selected, the candidate MV determination of the second sub-pixel search and the MVD calculation process are also required. In this process, the candidate MV list of the first sub-pixel search and the second sub-pixel search are also required. The candidate MV list is combined to obtain a bidirectional candidate MV list.
  • merge mode and skip mode For merge mode and skip mode, obtain the candidate MV list of merge mode and skip mode according to the standard method, perform interpolation prediction according to the candidate MV and the corresponding search mode to obtain the predicted value, and then calculate the merge mode and skip mode respectively.
  • RD cost value In this process, it is also necessary to combine the candidate MV list of the first sub-pixel search and the candidate MV list of the second sub-pixel search to obtain a bidirectional candidate MV list.
  • the coding mode of the current CU is determined by comparing the RD cost values of the current CU amvp, merge, and skip modes.
  • Step 503 includes:
  • Step 5031 According to the bidirectional prediction data of the luminance component and the bidirectional prediction data of the chrominance component, use the target encoding mode to encode the current processing block.
  • the coding mode and the coefficients, entropy coding and the subsequent loop filtering process are performed to complete the coding of the current processing block.
  • the encoding mode and coefficients of the current CTU are subjected to entropy encoding and the subsequent loop filtering process.
  • FIG. 8 a flowchart of steps of an encoding method according to an embodiment of the present application is shown, which may specifically include the following steps:
  • Step 601 Perform a first pixel search in a reference frame for the current processing block to obtain a first motion vector and first prediction data corresponding to the first motion vector.
  • both the first pixel search and the second pixel search are integer pixel searches, or both the first pixel search and the second pixel search are sub-pixel searches.
  • the first pixel search when both the first pixel search and the second pixel search are integer pixel searches, the first pixel search may be the first integer pixel search, and the second pixel search may be the second integer pixel search .
  • the first motion vector may be the first integer pixel motion vector
  • the second motion vector may be the second integer pixel motion vector
  • the first prediction data may be the first integer pixel prediction data
  • the second prediction data may be the second integer pixel prediction data.
  • the first pixel search when both the first pixel search and the second pixel search are sub-pixel searches, the first pixel search may be the first sub-pixel search, and the second pixel search may be the second sub-pixel search .
  • the first motion vector may be the first sub-pixel motion vector
  • the second motion vector may be the second sub-pixel motion vector
  • the first prediction data may be the first sub-pixel prediction data
  • the second prediction data may be the second sub-pixel prediction data.
  • the specific implementation manner of performing the first pixel search on the current processing block in the reference frame may include various methods, for example, without performing an integer pixel search, directly performing a sub-pixel search on the current processing block in the reference frame; or According to the method specified in the standard, the sub-pixel search is performed according to the first motion vector and the first prediction data; or referring to the method in the foregoing embodiment, the first sub-pixel search is performed according to the first integer-pixel motion vector and the first integer-pixel prediction data. search, or any other applicable manner, which is not limited in this embodiment of the present application.
  • Step 602 Perform a second pixel search on the current processing block in the reference frame according to the first prediction data, to obtain a second motion vector and second prediction data corresponding to the second motion vector.
  • the current processing block is subjected to a second search in the reference frame.
  • the pixel search reference may be made to the descriptions in the foregoing embodiments.
  • the current processing block is subjected to a second search in the reference frame.
  • the specific implementation of the pixel search may include various, for example, according to the method specified in the standard, but in the same reference frame, the sub-pixel search is performed according to the second motion vector and the second prediction data; method, according to the first sub-pixel prediction data, the second integer-pixel motion vector and the second integer-pixel prediction data, perform a second sub-pixel search in the reference frame for the current processing block, or any other suitable method, the embodiment of the present application There is no restriction on this.
  • Step 603 Code the current processing block according to the second motion vector and the second prediction data.
  • the specific method of encoding the current processing block can include multiple ways, for example, according to the coding mode of the P frame, the current processing block is coded according to the second motion vector and the second prediction data; or according to the coding mode of the B frame, according to the first motion vector and the first motion vector.
  • the prediction data, as well as the second motion vector and the second prediction data, encode the current processing block, or any other applicable manner, which is not limited in this embodiment of the present application.
  • a first motion vector and first prediction data corresponding to the first motion vector are obtained by performing a first pixel search on a current processing block in a reference frame.
  • a second pixel search is performed on the current processing block in the reference frame to obtain a second motion vector and second prediction data corresponding to the second motion vector.
  • the current processing block is encoded according to the second motion vector and the second prediction data.
  • a pixel search can be performed again to obtain a more accurate result than the previous one, thereby improving the compression rate of the encoding;
  • the original search in two different frames can be changed to be carried out in the same reference frame, which not only realizes the high accuracy brought by the motion estimation of bidirectional prediction, thus improves the compression rate of encoding, and avoids two
  • the high bandwidth consumption caused by one frame solves the problem that searching in two frames is not suitable for some devices or application scenarios with limited bandwidth resources.
  • step 603 when the first pixel search and the second pixel search are both integer pixel searches, step 603 includes:
  • Step 6031 according to the second motion vector and the second prediction data, perform a sub-pixel search on the current processing block in the reference frame to obtain a fourth motion vector and a fourth prediction corresponding to the fourth motion vector data;
  • Step 6032 Encode the current processing block according to the fourth motion vector and the fourth prediction data.
  • the specific implementation of the sub-pixel search for the current processing block in the reference frame may include various methods, for example, according to the method specified in the standard, but in the same reference frame, according to Perform sub-pixel search on the second motion vector and the second prediction data to obtain the fourth motion vector and the corresponding fourth prediction data;
  • the processing block performs the first sub-pixel search in the reference frame to obtain the third motion vector and the third prediction data corresponding to the third motion vector, and then according to the third prediction data, the second motion vector and the second prediction data, the current processing
  • the block performs the second sub-pixel search in the reference frame to obtain the fourth motion vector and the fourth prediction data; or any other applicable manner, which is not limited in this embodiment of the present application.
  • the specific implementation manner of encoding the current processing block may include various, for example, according to the encoding mode of the P frame, according to the fourth motion vector and the fourth prediction data, Encode the current processing block; or encode the current processing block according to the B frame encoding method, according to the third motion vector and the third prediction data, and the fourth motion vector and the fourth prediction data, or any other suitable method , which is not limited in the embodiments of the present application.
  • step 6031 includes: performing a first sub-pixel search on the current processing block in the reference frame according to the first motion vector and the first prediction data, to obtain the first sub-pixel search.
  • the second sub-pixel search obtains the fourth motion vector and fourth prediction data.
  • the third motion vector may be the first sub-pixel motion vector
  • the third prediction data may be the first sub-pixel prediction data
  • the fourth motion vector may be the second sub-pixel motion vector
  • the fourth prediction data may be For the prediction data of the fourth sub-pixel, the specific implementation of this step may refer to the description in the foregoing embodiments, which will not be repeated here.
  • a first sub-pixel search is performed for the current processing block in the reference frame to obtain a third motion vector and The third prediction data corresponding to the third motion vector
  • a specific implementation method of this step may include: while performing a second pixel search for the current processing block in the reference frame, according to the first motion vector and first prediction data, perform a first sub-pixel search in the reference frame for the current processing block to obtain a third motion vector and third prediction data corresponding to the third motion vector.
  • step 601 includes: according to the position in the image of the processing block group to which the current processing block belongs and the global motion vector, determining the available data stored in the line buffer of the reference frame range; within the available data range, perform a first pixel search on the current processing block to obtain the first motion vector and first prediction data.
  • Step 602 includes: within the available data range, according to the first prediction data, performing a second pixel search on the current processing block to obtain the second motion vector and second prediction data.
  • the search is not performed in the entire current frame, but within the available data range. Since the reference frame data is managed by the line buffer, the two searches are limited to the range of the line buffer available for the current processing block group, which simplifies the reference frame data management complexity and facilitates hardware implementation.
  • step 602 includes: calculating similarity data according to the difference between the average value of the first prediction data and the prediction data searched by the second pixel and the current processing block ; According to the similarity data, determine the second motion vector and the second prediction data.
  • the similarity data can be calculated by using the first prediction data.
  • the similarity data can be calculated by using the first prediction data.
  • FIG. 9 a structural block diagram of an encoding apparatus of the present application is shown, and the apparatus includes: a processor 701 and a memory 702;
  • the processor 701 is used for:
  • a second integer-pixel search is performed on the current processing block in the reference frame to obtain a second integer-pixel motion vector and a second integer-pixel motion vector corresponding to the second integer-pixel motion vector.
  • a first sub-pixel search is performed for the current processing block in the reference frame, and a first sub-pixel is obtained.
  • the current processing block is performed in the reference frame.
  • Two sub-pixel search to obtain the second sub-pixel motion vector and the second sub-pixel prediction data corresponding to the second sub-pixel motion vector;
  • the current processing block is encoded according to the first sub-pixel motion vector, the first sub-pixel prediction data, the second sub-pixel motion vector and the second sub-pixel prediction data.
  • the processor according to the first integer-pixel motion vector and the first integer-pixel prediction data corresponding to the first integer-pixel motion vector, performs When the first sub-pixel search is performed in the reference frame to obtain the first sub-pixel motion vector and the first sub-pixel prediction data corresponding to the first sub-pixel motion vector, it is used for:
  • the first sub-pixel search is performed in , to obtain the first sub-pixel motion vector and the first sub-pixel prediction data.
  • the processor performs a first integer pixel search for the current processing block in the reference frame, and obtains a first integer pixel motion vector and a corresponding value of the first integer pixel motion vector.
  • predicting data for the first integer pixel it is used to:
  • the processor performs a second integer-pixel search on the current processing block in the reference frame according to the first integer-pixel prediction data to obtain a second integer-pixel motion vector and the second integer-pixel motion vector
  • the corresponding second integer pixel prediction data it is used to include:
  • a second integer-pixel search is performed on the current processing block to obtain the second integer-pixel motion vector and second integer-pixel prediction data.
  • the processor performs a first integer pixel search on the current processing block within the available data range to obtain the first integer pixel motion vector and the first integer pixel
  • a first integer pixel search on the current processing block within the available data range to obtain the first integer pixel motion vector and the first integer pixel
  • the candidate motion vector is modified to obtain the modified candidate motion vector
  • the modified candidate motion vector and the position of the current processing block in the image obtain the prediction data of the corresponding position of the modified candidate motion vector from the line buffer;
  • the processor performs a second integer-pixel search on the current processing block according to the first integer-pixel prediction data, to obtain the second integer-pixel motion vector and the second integer-pixel motion vector
  • a second integer-pixel search on the current processing block according to the first integer-pixel prediction data, to obtain the second integer-pixel motion vector and the second integer-pixel motion vector
  • a second integer-pixel search is performed according to the prediction data and the first integer-pixel prediction data to obtain the second integer-pixel motion vector and second integer-pixel prediction data.
  • the processor performs a second integer pixel search in the reference frame for the current processing block according to the first integer pixel prediction data, to obtain a second integer pixel.
  • a second integer pixel search in the reference frame for the current processing block according to the first integer pixel prediction data, to obtain a second integer pixel.
  • the second integer-pixel motion vector and second integer-pixel prediction data are determined according to the first similarity data.
  • the processor is, according to the first sub-pixel prediction data, the second integer pixel motion vector and the second integer pixel corresponding to the second integer pixel motion vector Prediction data, when performing a second sub-pixel search in the reference frame for the current processing block to obtain a second sub-pixel motion vector and second sub-pixel prediction data corresponding to the second sub-pixel motion vector, used for include:
  • the second sub-pixel motion vector and second sub-pixel prediction data are determined according to the second similarity data.
  • the processor is further configured to:
  • the first sub-pixel prediction data, the second sub-pixel motion vector and the second sub-pixel prediction data by comparing the first sub-pixel
  • the optimal cost value of the search method and the optimal cost value of the two-way sub-pixel search method select the first sub-pixel search method or the two-way sub-pixel search method;
  • the first sub-pixel search mode is selected, encoding the current processing block according to the first sub-pixel motion vector and the first sub-pixel prediction data;
  • the current processing block is executed according to the first sub-pixel motion vector, the first sub-pixel prediction data, the second sub-pixel motion vector and the second sub-pixel prediction data. Steps for encoding.
  • the first sub-pixel prediction data is obtained by performing a first sub-pixel search on the luminance component
  • the second sub-pixel prediction data is obtained by performing a second sub-pixel search on the luminance component obtained from the search, when the processor encodes the current processing block according to the first sub-pixel motion vector, the first sub-pixel prediction data, the second sub-pixel motion vector, and the second sub-pixel prediction data, Used for:
  • the first sub-pixel prediction data, the second sub-pixel motion vector and the second sub-pixel prediction data determine the value of the luminance component corresponding to the current processing block when the bidirectional sub-pixel search method is adopted.
  • Bidirectional forecast data
  • the first sub-pixel prediction data, the second sub-pixel motion vector and the second sub-pixel prediction data determine the chrominance component corresponding to the current processing block when the bidirectional sub-pixel search method is adopted bidirectional forecast data;
  • the current processing block is encoded according to the bidirectional prediction data of the luminance component and the bidirectional prediction data of the chrominance component.
  • the processor is further configured to:
  • the candidate bidirectional motion vector list determine the target coding mode adopted by the current processing block
  • the current processing block is encoded using the target encoding mode according to the bidirectional prediction data of the luminance component and the bidirectional prediction data of the chrominance component.
  • the first integer pixel motion vector and the first integer pixel prediction data corresponding to the first integer pixel motion vector are obtained.
  • the first integer pixel prediction data, the second integer pixel search is performed on the current processing block in the reference frame, and the second integer pixel motion vector and the second integer pixel prediction data corresponding to the second integer pixel motion vector are obtained.
  • the second integer-pixel motion vector and the second integer-pixel motion vector correspond to The second integer pixel prediction data of the current processing block is subjected to a second sub-pixel search in the reference frame to obtain a second sub-pixel motion vector and a second sub-pixel prediction corresponding to the second sub-pixel motion vector.
  • the current processing block is encoded, so that the original in two different frames
  • the search carried out in the same reference frame is changed to be carried out in the same reference frame, which not only realizes the high accuracy brought by the motion estimation of the bidirectional prediction, thereby improving the compression ratio of the encoding, and avoids the high bandwidth consumption caused by the two frames. Solved the problem that searching in two frames is not suitable for some devices or application scenarios with limited bandwidth resources.
  • FIG. 9 a structural block diagram of an encoding apparatus of the present application is shown, and the apparatus includes: a processor 801 and a memory 802;
  • the processor 801 is used for:
  • the first pixel search and the second pixel search are both integer pixel searches, or both the first pixel search and the second pixel search are sub-pixel searches.
  • the processor is based on the second motion vector and the second prediction data.
  • the current processing block is encoded according to the fourth motion vector and fourth prediction data.
  • the processor performs a sub-pixel search on the reference frame for the current processing block according to the second motion vector and the second prediction data, to obtain a fourth
  • the motion vector and the fourth prediction data corresponding to the fourth motion vector are used for:
  • a first sub-pixel search is performed on the current processing block in the reference frame to obtain a third motion vector and third prediction data corresponding to the third motion vector ;
  • a second sub-pixel search is performed on the current processing block in the reference frame to obtain the fourth motion vector and the fourth prediction data.
  • the processor performs a first sub-pixel search in the reference frame for the current processing block according to the first motion vector and the first prediction data, to obtain When the third motion vector and the third prediction data corresponding to the third motion vector are used for:
  • While performing a second pixel search on the current processing block in the reference frame perform a first sub-pixel search on the current processing block in the reference frame according to the first motion vector and the first prediction data Pixel search is performed to obtain a third motion vector and third prediction data corresponding to the third motion vector.
  • a second pixel search is performed on the current processing block to obtain the second motion vector and second prediction data.
  • the processor performs a second pixel search in the reference frame for the current processing block according to the first prediction data, to obtain a second motion vector and the When the second prediction data corresponding to the second motion vector is described, it is used for:
  • the second motion vector and second prediction data are determined.
  • a first motion vector and the first prediction data corresponding to the first motion vector are obtained.
  • the current processing block performs a second pixel search in the reference frame to obtain a second motion vector and second prediction data corresponding to the second motion vector, and according to the second motion vector and the second prediction data,
  • the current processing block is encoded, and for the encoding method of the P frame, based on the result of the first pixel search, a pixel search is performed again, and a more accurate result can be obtained than the previous one, thereby improving the compression rate of encoding; and
  • the search originally performed in two different frames can be changed to be performed in the same reference frame, which not only realizes the high accuracy brought by the motion estimation of bidirectional prediction, thus improves the coding accuracy.
  • the compression ratio avoids the high bandwidth consumption caused by two frames, and solves the problem that searching in two frames is not suitable for some devices or application scenarios with limited bandwidth resources.
  • the device embodiments described above are only illustrative, wherein the units described as separate components may or may not be physically separated, and the components shown as units may or may not be physical units, that is, they may be located in One place, or it can be distributed over multiple network elements. Some or all of the modules may be selected according to actual needs to achieve the purpose of the solution in this embodiment. Those of ordinary skill in the art can understand and implement it without creative effort.
  • Various component embodiments of the present application may be implemented in hardware, or in software modules running on one or more processors, or in a combination thereof.
  • a microprocessor or a digital signal processor (DSP) may be used in practice to implement some or all of the functions of some or all of the components in the computing processing device according to the embodiments of the present application.
  • DSP digital signal processor
  • the present application can also be implemented as an apparatus or apparatus program (eg, computer programs and computer program products) for performing part or all of the methods described herein.
  • Such a program implementing the present application may be stored on a computer-readable medium, or may be in the form of one or more signals. Such signals may be downloaded from Internet sites, or provided on carrier signals, or in any other form.
  • Figure 11 shows a computing processing device that can implement methods according to the present application.
  • the computing processing device traditionally includes a processor 1010 and a computer program product or computer readable medium in the form of a memory 1020 .
  • the memory 1020 may be electronic memory such as flash memory, EEPROM (Electrically Erasable Programmable Read Only Memory), EPROM, hard disk, or ROM.
  • the memory 1020 has storage space 1030 for program code 1031 for performing any of the method steps in the above-described methods.
  • the storage space 1030 for program codes may include various program codes 1031 for implementing various steps in the above methods, respectively. These program codes can be read from or written to one or more computer program products.
  • These computer program products include program code carriers such as hard disks, compact disks (CDs), memory cards or floppy disks. Such computer program products are typically portable or fixed storage units as described with reference to FIG. 12 .
  • the storage unit may have storage segments, storage spaces, etc. arranged similarly to the memory 1020 in the computing processing device of FIG. 11 .
  • the program code may, for example, be compressed in a suitable form.
  • the storage unit includes computer readable code 1031', ie code readable by a processor such as 1010 for example, which when executed by a computing processing device, causes the computing processing device to perform any of the methods described above. of the various steps.
  • any reference signs placed between parentheses shall not be construed as limiting the claim.
  • the word “comprising” does not exclude the presence of elements or steps not listed in a claim.
  • the word “a” or “an” preceding an element does not exclude the presence of a plurality of such elements.
  • the application can be implemented by means of hardware comprising several different elements and by means of a suitably programmed computer. In a unit claim enumerating several means, several of these means may be embodied by one and the same item of hardware.
  • the use of the words first, second, and third, etc. do not denote any order. These words can be interpreted as names.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请公开了一种编码方法、装置、程序、设备和介质。对当前处理块进行整像素搜索得到第一整像素运动矢量及预测数据,根据第一整像素预测数据进行整像素搜索得到第二整像素运动矢量及预测数据,根据第一整像素运动矢量及预测数据进行亚像素搜索得到第一亚像素运动矢量及预测数据,根据第一亚像素预测数据,第二整像素运动矢量及预测数据进行亚像素搜索得到第二亚像素运动矢量及预测数据,对当前处理块进行编码。本申请提出的编码方法、装置、程序、设备和介质,能够提高编解码的压缩率。

Description

编码方法、装置、计算处理设备、计算机程序及存储介质 技术领域
本申请涉及视频编码技术领域,具体涉及一种编码方法、一种编码装置、一种计算处理设备、一种计算机程序,一种计算机可读存储介质。
背景技术
视频编解码技术包括编码端的压缩和解码端的解压缩,其中编码端的压缩是通过一些编码技术将原始的视频文件进行压缩编码形成码流,然后解码端的解压缩就是将码流进行解码重建形成视频文件,解码过程可以看作是编码过程的逆过程。其中,视频编码技术包括预测编码,变换编码,量化,熵编码等阶段。并且,预测编码包括帧内预测和帧间预测。对于I帧而言,采用帧内预测方式进行编码。对于B帧(Bidirectionally predicted Picture,双向预测编码图像帧)和P帧(Predictive-coded Picture,前向预测编码图像帧)而言,除可以采用帧内预测之外,还可以采用帧间预测方式进行编码。然而,由于电子装置的硬件和软件的处理能力有限,视频编解码处理往往能够利用的计算资源是有限的。因此,如何在有限的计算资源的情况下,尽可能地提高编解码处理的压缩率成为需要解决的问题。
发明内容
鉴于上述问题,提出了本申请以便提供一种克服上述问题或者至少部分地解决上述问题的编码方法、编码装置、计算处理设备、计算机程序、计算机可读存储介质。
依据本申请的一个方面,提供了一种编码方法,包括:
对当前处理块在参考帧中进行第一整像素搜索,得到第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据;
根据所述第一整像素预测数据,对所述当前处理块在所述参考帧中进行第二整像素搜索,得到第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据;
根据所述第一整像素运动矢量及所述第一整像素运动矢量对应的第一 整像素预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第一亚像素运动矢量及所述第一亚像素运动矢量对应的第一亚像素预测数据;
根据所述第一亚像素预测数据,所述第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据,对所述当前处理块在所述参考帧中进行第二亚像素搜索,得到第二亚像素运动矢量及所述第二亚像素运动矢量对应的第二亚像素预测数据;
根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码。
依据本申请的另一个方面,提供了一种编码方法,包括:
对当前处理块在参考帧中进行第一像素搜索,得到第一运动矢量及所述第一运动矢量对应的第一预测数据;
根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索,得到第二运动矢量及所述第二运动矢量对应的第二预测数据;以及
根据所述第二运动矢量和第二预测数据,对所述当前处理块进行编码;
其中,所述第一像素搜索和所述第二像素搜索均为整像素搜索,或者所述第一像素搜索和所述第二像素搜索均为亚像素搜索。
依据本申请的另一个方面,提供了一种编码装置,所述装置包括处理器和存储器;
所述处理器用于:
对当前处理块在参考帧中进行第一整像素搜索,得到第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据;
根据所述第一整像素预测数据,对所述当前处理块在所述参考帧中进行第二整像素搜索,得到第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据;
根据所述第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第一亚像素运动矢量及所述第一亚像素运动矢量对应的第一亚像素预测数据;
根据所述第一亚像素预测数据,所述第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据,对所述当前处理块在所述参考帧 中进行第二亚像素搜索,得到第二亚像素运动矢量及所述第二亚像素运动矢量对应的第二亚像素预测数据;
根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码。
依据本申请的另一个方面,提供了一种编码装置,所述装置包括处理器和存储器;
所述处理器用于:
对当前处理块在参考帧中进行第一像素搜索,得到第一运动矢量及所述第一运动矢量对应的第一预测数据;
根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索,得到第二运动矢量及所述第二运动矢量对应的第二预测数据;以及
根据所述第二运动矢量和第二预测数据,对所述当前处理块进行编码;
其中,所述第一像素搜索和所述第二像素搜索均为整像素搜索,或者所述第一像素搜索和所述第二像素搜索均为亚像素搜索。
依据本申请的另一个方面,提供了一种计算处理设备,包括:
存储器,其中存储有计算机可读代码;
一个或多个处理器,当所述计算机可读代码被所述一个或多个处理器执行时,所述计算处理设备执行上述的编码方法。
依据本申请的另一个方面,提供了一种计算机程序,包括计算机可读代码,当所述计算机可读代码在计算处理设备上运行时,导致所述计算处理设备执行上述的编码方法。
依据本申请的另一个方面,提供了一种计算机可读介质,其中存储了如上所述的计算机程序。
依据本申请的实施例,能够提高编解码的压缩率。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面 描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一个实施例的一种编码方法的步骤流程图;
图2示出了本申请一个实施例的一种编码方法的步骤流程图;
图3示出了第一整像素搜索流程的步骤流程图;
图4示出了本申请一个实施例的一种编码方法的步骤流程图;
图5示出了本申请一个实施例的一种编码方法的步骤流程图;
图6示出了本申请一个实施例的一种编码方法的步骤流程图;
图7示出了本申请一个实施例的一种编码方法的步骤流程图;
图8示出了本申请一个实施例的一种编码方法的步骤流程图;
图9示出了本申请一个实施例的一种编码装置的结构框图;
图10示出了本申请一个实施例的一种编码装置的结构框图;
图11示意性地示出了用于执行根据本申请的方法的计算处理设备的框图;以及
图12示意性地示出了用于保持或者携带实现根据本申请的方法的程序代码的存储单元。
具体实施例
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为使本领域技术人员更好地理解本申请,以下对本申请涉及的概念进行说明:
视频编解码技术包括编码端的压缩和解码端的解压缩,其中编码端的压缩是通过一些编码技术将原始的视频文件进行压缩编码形成码流,然后解码端的解压缩就是将码流进行解码重建形成视频文件,解码过程可以看作是编码过程的逆过程。
在编码端,一帧图像可以划分成多个处理块,视频编码时以处理块为单 位,逐个处理块进行编码,组织成连续的视频码流。处理块包括HEVC(High Efficiency Video Coding,高效视频编码)标准中提出的编码单元、H.264标准(一种高度压缩数字视频编解码器标准)中提出的宏块(Macro Block),或者其他任意适用的处理块,本申请实施例对此不做限制。
例如,高效视频编码标准(High Efficiency Video Coding,HEVC)中,对于一帧图像,首先将图像划分成若干个编码树单元(Coding Tree Unit,CTU),CTU的大小一般是64×64,对于每个CTU进行编码处理,在处理当前CTU时,有个树划分过程,可以将CTU按照四叉树划分方式划分成编码单元(Coding Unit,CU),CU的大小可以是8×8,16×16,32×32,64×64。在处理当前CU时,又可以将当前CU划分成预测单元(Prediction Unit,PU)进行帧内或者帧间预测得到预测块。当前CU在做变换编码时又可以划分成变换单元(Transform Unit,TU)进行变换编码和量化过程。
由于相邻视频帧的图像存在相似性,所以将图像序列的每一帧分成多个处理块(例如,编码单元或宏块),然后对每个处理块到相邻帧中某一特定搜索范围内根据一定的匹配准则搜索出与当前处理块最相似的块,将对当前帧进行编码所需参考的相邻帧记为参考帧。
在帧间编码中,用运动矢量(MotionVector,MV)表示当前处理块与在参考帧中搜索的最相似的块之间的相对位移。每个划分的块都有相应的运动信息需要传送到解码端。视频压缩的时候,只需保存运动矢量和残差数据就可以完全恢复出当前处理块。
在参考帧中搜索与当前处理块最相似的块时,先以整像素精度进行搜索,找到最相似的块之后,再在该位置周围以亚像素精度进行搜索,找到最相似的块。例如,先以整像素精度进行搜索,再以1/2像素精度进行搜索,再以1/4像素精度进行搜索。
现有的B帧预测方式中,通常将在播放顺序在前的帧中进行的整像素搜索记为前向的整像素搜索,将在播放顺序在后的帧中进行的整像素搜索记为后向的整像素搜索,将在播放顺序在前的帧中进行的亚像素搜索,记为前向的亚像素搜索,将在播放顺序在后的帧中进行的亚像素搜索记为后向的亚像素搜索。而本申请的一种实施例中提出在同一个参考帧中进行两次整像素搜索,分别记为第一整像素搜索和第二整像素搜索,以及两次亚像素搜索, 分别记为第一亚像素搜索和第二亚像素搜索。
整像素搜索或亚像素搜索可以得到运动矢量及运动矢量对应的预测数据,预测数据包括该运动矢量在参考帧中对应的块中的像素数据、像素的色度数据、像素的亮度数据,或者其他任意适用的数据,本申请实施例对此不做限制。
根据本申请的一种实施例,在帧间预测时,两个不同的参考帧需要更多的带宽消耗,导致对于一些带宽资源比较紧张的设备或应用场景不太适用。为此,本申请提供了一种编码机制,通过对当前处理块在参考帧中进行第一整像素搜索,得到第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据,根据所述第一整像素预测数据,对所述当前处理块在所述参考帧中进行第二整像素搜索,得到第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据,根据所述第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第一亚像素运动矢量及所述第一亚像素运动矢量对应的第一亚像素预测数据,根据所述第一亚像素预测数据,所述第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据,对所述当前处理块在所述参考帧中进行第二亚像素搜索,得到第二亚像素运动矢量及所述第二亚像素运动矢量对应的第二亚像素预测数据,根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码,使得原本在两个不同的帧中进行的搜索改为在同一个参考帧中进行,既实现了双向预测的运动估计带来的高精确度,从而提高了编码的压缩率,又避免了两个帧带来的高带宽消耗,解决了在两个帧中进行搜索对一些带宽资源比较紧张的设备或应用场景不太适用的问题。本申请适用但不局限于上述应用场景。
参照图1,示出了本申请实施例的一种编码方法的步骤流程图,具体可以包括如下步骤:
步骤101,对当前处理块在参考帧中进行第一整像素搜索,得到第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据。
在本申请实施例中,在对当前处理块进行编码时,仅使用一个参考帧来 实现B帧的双向预测方式。先对当前处理块在参考帧中进行整像素搜索,得到运动矢量及该运动矢量对应的预测数据,将该运动矢量记为第一整像素运动矢量,将该预测数据记为第一整像素预测数据。
例如,按照HEVC标准,根据对当前CU的左边的相邻块和上边的相邻块进行整像素搜索的MV结果,分别获取一个候选MV,也可以从当前CU在参考帧中对应的位置的CU获取一个候选MV。以候选MV为起始点,搜索周围的整像素点的匹配代价,其中,搜索范围(search range)可以配置,比如可以设置为4。在搜索每个整像素点时,根据当前CU的预测值与原始值以及对应的运动矢量差值(Motion Vector Difference,MVD),计算出绝对误差和(Sum of Absolute Difference,SAD)。然后通过比较每个整像素搜索点的SAD,选择SAD最小的点对应的MV(即第一整像素运动矢量)为最优的整像素搜索结果。最后,将当前CU的最优整像素精度的MV保存下来作为下一个CU的候选MV使用。
步骤102,根据所述第一整像素预测数据,对所述当前处理块在所述参考帧中进行第二整像素搜索,得到第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据。
在本申请实施例中,在第一整像素搜索的基础上,进行第二整像素搜索过程。整个第二整像素搜索过程与第一整像素搜索过程基本一致。只是对当前处理块在参考帧中进行第二整像素搜索时,还需要利用第一整像素搜索得到的第一整像素预测数据,来对当前处理块在参考帧中进行整像素搜索,得到运动矢量及该运动矢量对应的预测数据,将该运动矢量记为第二整像素运动矢量,将该预测数据记为第二整像素预测数据。
在本申请实施例中,根据第一整像素预测数据进行第二整像素搜索的实现方式包括多种。例如,在计算预测数据和当前处理块之间的相似度数据时,根据第一整像素预测数据和第二整像素搜索的预测数据的平均值与当前处理块之间的差值,计算第一相似度数据,根据第一相似度数据,确定第二整像素运动矢量和第二整像素预测数据。又例如,为了进一步节省计算资源,可以选择将第一整像素搜索时得到的最优运动矢量作为第一整像素搜索的运动矢量,即第一整像素运动矢量,并将第一整像素搜索时得到的次优运动矢量作为第二整像素搜索的最优运动矢量,即第二整像素运动矢量,根据第 二整像素运动矢量可以得到对应的第二整像素预测数据。具体可以采用其他任意适用的实现方式,本申请实施例对此不做限制。
步骤103,根据所述第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第一亚像素运动矢量及所述第一亚像素运动矢量对应的第一亚像素预测数据。
在本申请实施例中,在得到第一整像素搜索的结果后,为了提高运动估计的精度,再根据第一整像素运动矢量和第一整像素预测数据,对当前处理块进行第一亚像素搜索,得到更加准确的运动矢量及该运动矢量对应的预测数据,将该运动矢量记为第一亚像素运动矢量,将该预测数据记为第一亚像素预测数据。
例如,按照HEVC标准,对每个CU的亮度分量,获取第一整像素搜索的结果,即第一整像素运动矢量和第一整像素预测数据,根据标准中规定的方式进行亚像素搜索过程,包括1/2像素精度的搜索和1/4像素精度的搜索,通过比较每个搜索点的绝对变换差和(Sum of Absolute Transformed Difference,SATD)得到最优的1/4像素精度的MV(即第一亚像素运动矢量)以及对应的预测值(即第一亚像素运动矢量),并记录预测的最优的代价值。其中,绝对变换差和是指变换后再绝对值求和。需要说明的是,SAD和SATD为不同的代价值。
步骤104,根据所述第一亚像素预测数据,所述第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据,对所述当前处理块在所述参考帧中进行第二亚像素搜索,得到第二亚像素运动矢量及所述第二亚像素运动矢量对应的第二亚像素预测数据。
在本申请实施例中,在第一亚像素搜索的基础上,进行第二亚像素搜索过程。整个第二亚像素搜索过程与第一亚像素搜索过程基本一致。只是对当前处理块在参考帧中进行第二亚像素搜索时,不仅需要利用第二整像素搜索得到的第二整像素运动矢量和第二整像素预测数据,还需要利用第一亚像素搜索得到的第一亚像素预测数据。对当前处理块在参考帧中进行亚像素搜索,得到运动矢量及该运动矢量对应的预测数据,将该运动矢量记为第二亚像素运动矢量,将该预测数据记为第二亚像素预测数据。
在本申请实施例中,根据第一亚像素预测数据、第二整像素运动矢量和第二整像素预测数据,进行第二亚像素搜索的实现方式包括多种,例如,在计算预测数据和当前处理块之间的相似度数据时,根据第一亚像素预测数据和第二亚像素搜索的预测数据的平均值与当前处理块之间的差值,计算第二相似度数据,根据第二相似度数据,确定第二亚像素运动矢量和第二亚像素预测数据,或者其他任意适用的实现方式,本申请实施例对此不做限制。
步骤105,根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码。
在本申请实施例中,通过搜索得到第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据后,可以开始对当前处理块进行编码。对当前处理块进行编码的过程中可以包括:预测方式的决策,处理块的划分方式的决策,帧间编码方式的决策,熵编码,环路滤波等处理,或者其他任意适用的处理,本申请实施例对此不做限制。
在一种实现方式中,可以对第一亚像素预测数据和第二亚像素预测数据进行平均和移位得到当前处理块的最终的预测数据,将该预测数据与当前处理块作差得到残差值,然后残差值经过变换编码和量化过程进一步压缩得到残差系数,最后再将残差系数与预测过程产生的一些预测模式信息进行熵编码得到编码的码流。
现有的B帧预测方式中,从当前帧在播放顺序上之前的帧中和当前帧在播放顺序上之后的帧中,各取一个最优的参考块进行加权预测得到最终的参考块,或者从当前帧在播放顺序上之前的两个帧中,各取一个最优的参考块进行加权预测得到最终的参考块。由于这种双向预测方式中使用了两个不同的参考帧,能够更加接近当前帧,从而减少了参考帧与当前帧之间的差值,进一步提高了视频的压缩率。但是,两个不同的参考帧需要更多的带宽消耗,对于一些带宽资源比较紧张的设备或应用场景不太适用。
依据本申请实施例,通过对当前处理块在参考帧中进行第一整像素搜索,得到第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据,根据所述第一整像素预测数据,对所述当前处理块在所述参考帧中进行第二整像素搜索,得到第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据,根据所述第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据,对所述当前处理块在所述参考帧 中进行第一亚像素搜索,得到第一亚像素运动矢量及所述第一亚像素运动矢量对应的第一亚像素预测数据,根据所述第一亚像素预测数据,所述第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据,对所述当前处理块在所述参考帧中进行第二亚像素搜索,得到第二亚像素运动矢量及所述第二亚像素运动矢量对应的第二亚像素预测数据,根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码,使得原本在两个不同的帧中进行的搜索改为在同一个参考帧中进行,既实现了双向预测的运动估计带来的高精确度,从而提高了编码的压缩率,又避免了两个帧带来的高带宽消耗,解决了在两个帧中进行搜索对一些带宽资源比较紧张的设备或应用场景不太适用的问题。
现有的B帧双向预测方式,一般都要经过前向的整像素搜索、亚像素搜索,在此基础上生成前向最优的预测结果,然后用前向最优的预测结果去做后向的整像素搜索和亚像素搜索得到后向最优的预测结果,最终再将前向和后向的结果加权平均生成最优的预测结果。上述运动估计过程的计算量比较大,按照上述执行顺序进行运动估计,即在硬件实现上放在同一流水级实现,会导致该流水级时序压力较大,继而导致编码效率不高。
因此,为了提高编码效率,在本申请的一种可选实施例中,步骤103包括:在对当前处理块在参考帧中进行第二整像素搜索的同时,根据第一整像素运动矢量和第一整像素预测数据,对当前处理块在参考帧中进行第一亚像素搜索,得到第一亚像素运动矢量和第一亚像素预测数据,即第二整像素搜索和第一亚像素搜索可以并行处理。第二整像素搜索和第一亚像素搜索都是只需等第一整像素搜索得到第一整像素预测数据就可以开始,对于当前处理块,只要第二整像素搜索结束之前能开始第一亚像素搜索,就使得第二整像素搜索和第一亚像素搜索能够实现并行处理,减少处理时间,从而提高编码效率。
例如,采用分阶段进行帧间预测的方式,分为4级流水级,包括整像素运动估计(Integer Motion Estimation,IME)阶段、亚像素运动估计(Fractional Motion Estimation,FME)阶段、编码单元决策(Coding Unit Decision,CUD) 阶段和模式决策(Mode Decision,MD)阶段。
在IME阶段主要进行整像素搜索过程确定每个CU的最优整像素MV,将每个CU最优的第一整像素MV(即第一整像素运动矢量)和第二整像素MV(即第二整像素运动矢量),以及对应的预测数据传到FME阶段。
在FME阶段主要进行亚像素搜索过程确定每个CU的最优亚像素MV,然后决策当前CU是选择前向预测还是双向预测(选择代价值较小的预测方式),将每个CU的预测方式(前向预测或双向预测),及其对应的MV以及亮度分量预测值传到CUD阶段。
在CUD阶段主要决策CU划分方式,例如,比较16×16的CU的RD(Rate Distortion,率失真)代价值及其对应的4个8×8的CU的RD代价值之和,决策当前16×16的CU是否要划分成4个8×8的CU进行编码,选择RD代价值较小的方式,然后将当前CTU的CU划分方式以及对应的每个CU的编码模式信息传到MD阶段。
在MD阶段主要进行高级运动矢量预测(Advanced Motion Vector Prediction,AMVP)模式的修正以及合并预测(merge)模式、跳过预测(skip)模式的编码过程,比较当前CU的AMVP模式、merge模式、skip模式的RD代价值决策出当前CU的帧间编码方式,然后在完成当前CTU中每个CU的上述过程后将当前CTU的编码模式信息以及系数进行熵编码以及后续的环路滤波过程。
对于不同的CTU来说,IME阶段和FME阶段在不同的流水级中。例如,用于执行上一个CTU的FME阶段的流水级和用于执行当前CTU的IME阶段的流水级可以实现并行,即第二整像素搜索和第一亚像素搜索可以实现并行,减少了处理时间,提高了编码效率。而且采用这种分阶段的帧间编码方式来实现B帧的双向预测,能够减轻硬件实现上一流水级中的时序压力,也便于硬件实现。
在本申请的一种可选实施例中,参见图2,步骤101包括:步骤201和步骤202。
步骤201,根据所述当前处理块所属的处理块组在图像中的位置以及全局运动矢量,确定所述参考帧存入行缓冲区的可用数据范围。
先将当前帧划分成处理块组,再将处理块组划分成处理块。例如,HEVC标准中,对于一帧图像,首先将图像划分成若干个CTU(即处理块组),再将CTU按照四叉树划分方式划分成CU(即处理块)。全局运动矢量(Global Motion Vector,GMV)是当前帧和参考帧之间通过全局运动估计得到的运动矢量。参考帧中取一部分数据存入行缓冲区(Line Buffer),这部分数据是可用的。
为了让存入行缓冲区的数据能够与当前处理块最相似,可以根据处理块组在当前帧的图像中的位置,以及当前帧与参考帧之间的全局运动矢量,来确定参考帧存入行缓冲区的可用数据范围,从而使可用数据范围内的数据最容易搜索到与当前处理块最相似的块。可用数据范围的大小可以进行合理的设置,例如,设置相对处理块的大小扩大32行和列,具体可以设置一个合理的可用数据范围的大小,以使搜索准确率提高。
步骤202,在所述可用数据范围内,对所述当前处理块进行第一整像素搜索,得到所述第一整像素运动矢量和第一整像素预测数据。
在对当前处理块进行第一整像素搜索时,不在整个当前帧中搜索,而是在可用数据范围内进行搜索,根据可用数据范围从行缓冲区获取数据,在获取的数据中进行搜索。
步骤102包括:步骤203。
步骤203,在所述可用数据范围内,根据所述第一整像素预测数据,对所述当前处理块进行第二整像素搜索,得到所述第二整像素运动矢量和第二整像素预测数据。
在对当前处理块进行第二整像素搜索时,不在整个当前帧中搜索,而是在可用数据范围内进行搜索。
由于,采用行缓冲区的方式进行参考帧数据的管理,两次搜索都限定在当前处理块组可用的行缓冲区的范围内,从而简化了参考帧数据管理的复杂度,便于硬件实现。
在本申请的一种可选实施例中,步骤202包括:
步骤2021,根据所述可用数据范围,对候选运动矢量进行修正,得到修正的候选运动矢量。
在整像素搜索时,需要先有一个搜索的起点,先获取候选运动矢量,以此作为搜索的起点。
为了在搜索时取参考帧的像素数据时都限定在可用数据范围内,如果根据候选运动矢量获取的预测数据超出了可用数据范围,则需要修正候选运动矢量,以使根据修正后的候选运动矢量从行缓冲区获取的预测数据在可用数据范围内。
步骤2022,根据所述修正的候选运动矢量,以及所述当前处理块在图像中的位置,从所述行缓冲区获取所述修正的候选运动矢量对应位置的预测数据。
根据修正的候选运动矢量以及当前处理块在图像中的位置,确定从行缓冲区读取数据的地址,根据该地址从行缓冲区中可以获取到修正的候选运动矢量对应位置的预测数据。
步骤2023,以所述修正的候选运动矢量为起点,根据所述预测数据进行第一整像素搜索,得到所述第一整像素运动矢量和第一整像素预测数据;
步骤203包括:
步骤2031,以所述修正的候选运动矢量为起点,根据所述预测数据以及所述第一整像素预测数据进行第二整像素搜索,得到所述第二整像素运动矢量和第二整像素预测数据。
例如,假设CTU大小为32×32,支持8×8、16×16、32×32的CU,并且只支持2N×2N的PU划分方式。若支持多种PU划分方式,则IME阶段和FME阶段需要分别针对每种PU划分方式进行搜索,最后在FME阶段中选择采用的划分方式。
由于采用行缓冲区的方式进行参考帧数据的管理。在开始做帧间预测之前需要根据当前CTU在图像中的位置以及GMV,确定当前CTU的可用数据范围,后续搜索在取参考帧的像素数据时都限定在该可用数据范围内,如果获取的预测数据超出了可用数据范围则需要修正MV或者判定当前MV不可用。
在IME阶段,由于支持CTU大小为32×32,支持8×8、16×16、32×32的CU,因此一共有1个32×32的CU、4个16×16的CU、16个8×8的CU,针对每个CU,首先进行如图3所示的第一整像素搜索流程。
1、获取候选MV。一种方式中,可以根据当前CU的左边的相邻块和上边的相邻块的整像素搜索的MV结果分别获取一个候选MV,另一种方式中,也可以从参考帧对应的位置的CU获取一个候选MV。
2、修正候选MV。根据当前CTU的可用数据范围对候选MV进行修正,如果以当前候选MV进行整像素搜索时会有搜索点的像素不在当前CTU的可用数据范围内,则将当前候选MV修正到当前CTU的可用数据范围内。
3、获取可用数据。根据当前CU的候选MV以及当前CU的地址向行缓冲区linebuffer请求获取对应位置的可用数据。
4、整像素搜索。以候选MV为起点,搜索周围的整像素点,在搜索每个整像素点时,根据当前CU的预测值与原始值以及对应的MVD代价值,计算出SAD代价值。
5、整像素搜索结果。通过比较每个整像素搜索点的SAD代价值,选择SAD代价值最小的点对应的MV为最优的整像素搜索结果。
6、更新相邻块的候选MV。将当前CU的最优整像素MV保存下来作为下一个CU的候选MV使用。
当前CU在完成第一整像素搜索之后再进行第二整像素搜索,在第二整像素搜索时,搜索的范围也是在当前CTU的可用数据范围内,即与第一整像素搜索时的可用数据范围一致,用到的候选MV也与第一整像素搜索一致。
在本申请的一种可选实施例中,参见图4,步骤102包括:
步骤301,根据所述第一整像素预测数据和第二整像素搜索的预测数据的平均值与所述当前处理块之间的差值,计算第一相似度数据。
步骤302,根据所述第一相似度数据,确定所述第二整像素运动矢量和第二整像素预测数据。
相似度数据包括SAD、SATD等,或者其他任意适用的相似度数据,本申请实施例对此不做限制。将第二整像素搜索中的相似度数据,记为第一相似度数据。
例如,整个第二整像素搜索的流程与第一整像素搜索基本一致,只是第二整像素搜索在计算每个搜索点的SAD代价值时,需要用第一整像素搜索 的最优预测值与第二整像素搜索的预测值做平均后,再与当前处理块的原始像素值作差得到SAD(即第一相似度数据),具体实施时,假设第一整像素搜索的最优预测值为predFw,原始像素值为pOrg,在图3的搜索过程中将计算SAD时的pOrg替换为2*pOrg–predFw,然后在算得SAD后将SAD结果除以2得到最终的SAD值。
在本申请的一种可选实施例中,参见图5,步骤104包括:
步骤401,根据所述第一亚像素预测数据和第二亚像素搜索的预测数据的平均值与所述当前处理块之间的差值,计算第二相似度数据。
步骤402,根据所述第二相似度数据,确定所述第二亚像素运动矢量和第二亚像素预测数据。
将第二亚像素搜索中的相似度数据,记为第二相似度数据。
例如,与第二整像素搜索类似,整个第二亚像素搜索过程与第一亚像素搜索基本一致,只是在第二亚像素搜索时,每个亚像素搜索点在计算SATD代价值时,需要先用第一亚像素搜索的最优预测值与当前第二亚像素搜索的预测值取平均后,再与当前处理块的原始像素值作差计算SATD(即第二相似度数据)。具体实施时,将计算SATD中的原始像素值替换成2倍的原始像素值与第一亚像素搜索的最优预测值得差值,然后在算完SATD后将SATD值除以2得到最终的SATD值。
在本申请的一种可选实施例中,参见图6,在步骤105之前,还包括:
步骤106,通过比较第一亚像素搜索方式的最优代价值和双向的亚像素搜索方式的最优代价值,选择第一亚像素搜索方式或双向的亚像素搜索方式。
在本申请实施例中,在计算代价函数时,同时考虑码率和失真度两方面因素的制约,在保证低失真度的同时保证低码率,这样更加有利于视频流的传输。最优代价值是亚像素搜索的最优结果对应的代价值。通过比较最优代价值选择当前处理块采用的搜索方式。
例如,在FME阶段,将两次亚像素搜索的最优的SATD代价值加上对应的两次亚像素搜索的MVD得到双向的亚像素搜索的代价值,然后将第一 亚像素搜索的代价值与双向的亚像素搜索的代价值进行比较,决策出当前CU是选择第一亚像素搜索方式或双向的亚像素搜索方式(选择代价值较小的搜索方式)。
步骤107,若选择第一亚像素搜索方式,则根据所述第一亚像素运动矢量、第一亚像素预测数据,对所述当前处理块进行编码。
如果是选择第一亚像素搜索方式,则直接将第一亚像素搜索的最优预测值作为当前CU的预测值。根据第一亚像素运动矢量、第一亚像素预测数据,对当前处理块进行编码的具体实现方式与当前的搜索方式对应的编码方式相同,此处不另赘述。
步骤108,若选择双向的亚像素搜索方式,则执行所述根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码的步骤。
如果是选择双向的亚像素搜索方式,执行后续的编码步骤,此处不另赘述。
在本申请的一种可选实施例中,在亚像素搜索时,对于每个处理块的亮度分量,根据第一整像素运动矢量以及第一整像素预测数据,根据标准中规定的方式进行亚像素搜索过程,即第一亚像素预测数据为对亮度分量进行第一亚像素搜索得到的,第二亚像素预测数据为对亮度分量进行第二亚像素搜索得到的。参见图7,步骤105包括:
步骤501,根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量和第二亚像素预测数据,确定采用双向的亚像素搜索方式时所述当前处理块对应的亮度分量的双向预测数据。
根据第一亚像素运动矢量和第一亚像素预测数据,按照标准规定进行亮度分量的插值预测过程分别得到预测值,按照标准规定进行亮度分量的插值预测过程得到预测值,根据第二亚像素运动矢量和第二亚像素预测数据,按照标准规定进行亮度分量的插值预测过程得到预测值,再将两个预测值进行平均和移位得到最终的预测值作为当前处理块对应的亮度分量的双向预测数据。
例如,在FME阶段,根据最优的第一亚像素搜索的MV和第二亚像素 搜索的MV,按照标准规定进行高精度的插值预测过程分别得到两次亚像素搜索的预测值,再将预测值进行平均和移位得到最终的预测值作为当前CU的预测值,在完成所有CU的上述过程后将所有CU的搜索方式(第一亚像素搜索方式或者双向的亚像素搜索方式)及其对应的MV以及亮度分量预测值(即亮度分量的双向预测数据)传到编码单元决策(CUD)阶段。
步骤502,根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量和第二亚像素预测数据,确定采用双向的亚像素搜索方式时所述当前处理块对应的色度分量的双向预测数据。
对于每个处理块,根据双向的亚像素搜索方式、第一亚像素运动矢量以及对应的预测数据、第二亚像素运动矢量以及对应的预测数据,按照标准规定进行色度分量的插值预测得到色度分量的预测值,即当前处理块对应的色度分量的双向预测数据。
例如,在CUD阶段,对每个CU,根据FME阶段传过来的搜索方式,以及对应的MV,按照标准规定进行色度分量的插值预测得到色度分量的预测值(即色度分量的双向预测数据)。然后与当前CU的原始像素值计算残差,并进行变换量化和反量化反变换过程得到重建值,再计算失真,同时进行比特估计得到码率估计值,然后计算率失真(Rate Distortion,RD)代价值。在计算完每个CU的RD代价值之后,决策CU的划分方式,具体决策方式可以参见上述实施例中的描述,此处不另赘述。
步骤503,根据所述亮度分量的双向预测数据和色度分量的双向预测数据,对所述当前处理块进行编码。
根据亮度分量的双向预测数据和色度分量的双向预测数据,执行后续的编码步骤,此处不另赘述。
在本申请的一种可选实施例中,在步骤503之前,还包括:
步骤504,分别获取所述当前处理块的各种编码模式的候选第一运动矢量列表和候选第二运动矢量列表。
步骤505,对所述各种编码模式的候选第一运动矢量列表中的候选第一运动矢量和候选第二运动矢量列表中的候选第二运动矢量进行组合,生成候选双向运动矢量列表。
步骤506,根据所述候选双向运动矢量列表,确定所述当前处理块所采用的目标编码模式。
编码模式包括AMVP模式、merge模式、skip模式等,或者其他任意适用的编码模式,本申请实施例对此不做限制。编码模式会为当前处理块建立运动矢量列表,将第一亚像素搜索得到的运动矢量组成的列表记为候选第一运动矢量列表,将第二亚像素搜索得到的运动矢量组成的列表记为候选第二运动矢量列表。
针对各种编码模式,分别对候选第一运动矢量列表中的候选第一运动矢量和候选第二运动矢量列表中的候选第二运动矢量进行组合,生成候选双向运动矢量列表。组合的方式可以有多种,例如,将所有的候选第一运动矢量和候选第二运动矢量两两组合成一对运动矢量,最终得到候选双向运动矢量列表;或者将候选第一运动矢量列表中的第一个候选第一运动矢量与各个的候选第二运动矢量分别组合成一对运动矢量,最终得到候选双向运动矢量列表,或者其他任意适用的组合方式,本申请实施例对此不做限制。
根据各个编码模式对应的候选双向运动矢量列表以及对应的搜索方式,进行插值预测得到预测值,然后分别计算各种编码模式的RD代价值,通过比较当前处理块的各种编码模式的RD代价值,决策当前处理块的编码模式,确定当前处理块采用的目标编码模式。
具体地,对于当前处理块,由于在MD阶段才能获取到相邻块的最终的编码模式信息,因此需要根据相邻块的编码模式信息重新计算MVD,同时根据新的MVD比特消耗修正AMVP模式的RD代价值。根据标准中规定的方式获取当前CU的AMVP模式的候选MV列表,然后选择MVD代价值较小的候选MV作为当前CU的MVP。
若选择的是第一亚像素搜索方式,则只需要进行第一亚像素搜索的候选MV确定,以及MVD计算过程。若选择的是双向的搜索方式,则还需要进行第二亚像素搜索的候选MV确定,以及MVD计算过程,在此过程中还需要根据第一亚像素搜索的候选MV列表和第二亚像素搜索的候选MV列表,组合得到双向候选MV列表。
对于merge模式和skip模式,则按照标准规定的方式进行merge模式和skip模式的候选MV列表获取,根据候选MV以及对应的搜索方式进行插值 预测得到预测值,然后分别计算出merge模式和skip模式的RD代价值。在此过程中还需要根据第一亚像素搜索的候选MV列表和第二亚像素搜索的候选MV列表,组合得到双向候选MV列表。最后,比较当前CU amvp、merge、skip模式的RD代价值决策出当前CU的编码模式。
步骤503包括:
步骤5031,根据所述亮度分量的双向预测数据和色度分量的双向预测数据,采用所述目标编码模式,对所述当前处理块进行编码。
在完成当前处理块的上述过程后,根据亮度分量的双向预测数据和色度分量的双向预测数据,编码模式以及系数,进行熵编码以及后续的环路滤波过程,完成对当前处理块的编码。
例如,在完成当前CTU中每个CU的上述过程后将当前CTU的编码模式以及系数进行熵编码以及后续的环路滤波过程。
参照图8,示出了本申请实施例的一种编码方法的步骤流程图,具体可以包括如下步骤:
步骤601,对当前处理块在参考帧中进行第一像素搜索,得到第一运动矢量及所述第一运动矢量对应的第一预测数据。
在本申请实施例中,第一像素搜索和第二像素搜索均为整像素搜索,或者第一像素搜索和第二像素搜索均为亚像素搜索。
在本申请的一种实施例中,在第一像素搜索和第二像素搜索均为整像素搜索时,第一像素搜索可以为第一整像素搜索,第二像素搜索可以为第二整像素搜索。第一运动矢量可以为第一整像素运动矢量,第二运动矢量可以为第二整像素运动矢量,第一预测数据可以为第一整像素预测数据,第二预测数据可以为第二整像素预测数据。此种情况下,对当前处理块在参考帧中进行第一像素搜索的具体实现方式可以参见前述实施例中的描述。
在本申请的一种实施例中,在第一像素搜索和第二像素搜索均为亚像素搜索时,第一像素搜索可以为第一亚像素搜索,第二像素搜索可以为第二亚像素搜索。第一运动矢量可以为第一亚像素运动矢量,第二运动矢量可以为第二亚像素运动矢量,第一预测数据可以为第一亚像素预测数据,第二预测数据可以为第二亚像素预测数据。此种情况下,对当前处理块在参考帧中进 行第一像素搜索的具体实现方式可以包括多种,例如,不进行整像素搜索,直接对当前处理块在参考帧中进行亚像素搜索;或者按照标准中规定的方式,根据第一运动矢量和第一预测数据进行亚像素搜索;或者参见前述实施例中的方式,根据第一整像素运动矢量和第一整像素预测数据进行第一亚像素搜索,或者其他任意适用的方式,本申请实施例对此不做限制。
步骤602,根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索,得到第二运动矢量及所述第二运动矢量对应的第二预测数据。
在本申请的一种实施例中,在第一像素搜索和第二像素搜索均为整像素搜索时,根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索的具体实现方式可以参见前述实施例中的描述。
在本申请的一种实施例中,在第一像素搜索和第二像素搜索均为亚像素搜索时,根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索的具体实现方式可以包括多种,例如,按照标准中规定的方式,但在同一个参考帧中,根据第二运动矢量和第二预测数据进行亚像素搜索;或者参见前述实施例中的方式,根据第一亚像素预测数据,第二整像素运动矢量和第二整像素预测数据,对当前处理块在参考帧中进行第二亚像素搜索,或者其他任意适用的方式,本申请实施例对此不做限制。
步骤603,根据所述第二运动矢量和第二预测数据,对所述当前处理块进行编码。
在本申请的一种实施例中,在第一像素搜索和第二像素搜索均为整像素搜索或亚像素搜索时,根据第二运动矢量和第二预测数据,对当前处理块进行编码的具体实现方式可以包括多种,例如,按照P帧的编码方式,根据第二运动矢量和第二预测数据,对当前处理块进行编码;或者按照B帧的编码方式,根据第一运动矢量和第一预测数据,以及第二运动矢量和第二预测数据,对当前处理块进行编码,或者其他任意适用的方式,本申请实施例对此不做限制。
依据本申请实施例,通过对当前处理块在参考帧中进行第一像素搜索,得到第一运动矢量及所述第一运动矢量对应的第一预测数据。根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索,得到第二 运动矢量及所述第二运动矢量对应的第二预测数据。根据所述第二运动矢量和第二预测数据,对所述当前处理块进行编码。对于P帧的编码方式,以第一次像素搜索的结果为依据,再进行一次像素搜索,可以得到比前一次更加精确的结果,从而提高了编码的压缩率;而对于B帧的编码方式,可以使得原本在两个不同的帧中进行的搜索改为在同一个参考帧中进行,既实现了双向预测的运动估计带来的高精确度,从而提高了编码的压缩率,又避免了两个帧带来的高带宽消耗,解决了在两个帧中进行搜索对一些带宽资源比较紧张的设备或应用场景不太适用的问题。
在本申请的一种可选实施例中,当所述第一像素搜索和所述第二像素搜索均为整像素搜索时,步骤603包括:
步骤6031,根据所述第二运动矢量和第二预测数据,对所述当前处理块在所述参考帧中进行亚像素搜索,得到第四运动矢量及所述第四运动矢量对应的第四预测数据;以及
步骤6032,根据所述第四运动矢量和第四预测数据,对所述当前处理块进行编码。
根据第二运动矢量和第二预测数据,对当前处理块在参考帧中进行亚像素搜索的具体实现方式可以包括多种,例如,按照标准中规定的方式,但在同一个参考帧中,根据第二运动矢量和第二预测数据进行亚像素搜索,得到第四运动矢量和对应的第四预测数据;或者参见前述实施例中的方式,先根据第一运动矢量和第一预测数据,对当前处理块在参考帧中进行第一亚像素搜索,得到第三运动矢量及第三运动矢量对应的第三预测数据,再根据第三预测数据,第二运动矢量和第二预测数据,对当前处理块在参考帧中进行第二亚像素搜索,得到第四运动矢量和第四预测数据;或者其他任意适用的方式,本申请实施例对此不做限制。
根据所述第四运动矢量和第四预测数据,对所述当前处理块进行编码的具体实现方式可以包括多种,例如,按照P帧的编码方式,根据第四运动矢量和第四预测数据,对当前处理块进行编码;或者按照B帧的编码方式,根据第三运动矢量和第三预测数据,以及第四运动矢量和第四预测数据,对当前处理块进行编码,或者其他任意适用的方式,本申请实施例对此不做限制。
在本申请的一种可选实施例中,步骤6031包括:根据所述第一运动矢量和第一预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第三运动矢量及所述第三运动矢量对应的第三预测数据;根据所述第三预测数据,所述第二运动矢量和第二预测数据,对所述当前处理块在所述参考帧中进行第二亚像素搜索,得到所述第四运动矢量和第四预测数据。
在本实施例中,第三运动矢量可以为第一亚像素运动矢量,第三预测数据可以为第一亚像素预测数据,第四运动矢量可以为第二亚像素运动矢量,第四预测数据可以为第四亚像素预测数据,此步骤的具体实现方式可以参见前述实施例中的描述,此处不另赘述。
在本申请的一种可选实施例中,根据所述第一运动矢量和第一预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第三运动矢量及所述第三运动矢量对应的第三预测数据,此步骤的具体实现方法可以包括:在对所述当前处理块在所述参考帧中进行第二像素搜索的同时,根据所述第一运动矢量和第一预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第三运动矢量及所述第三运动矢量对应的第三预测数据。
对于当前处理块,只要第二像素搜索结束之前能开始第一亚像素搜索,就使得第二像素搜索和第一亚像素搜索能够实现并行处理,减少处理时间,从而提高编码效率。
在本申请的一种可选实施例中,步骤601包括:根据所述当前处理块所属的处理块组在图像中的位置以及全局运动矢量,确定所述参考帧存入行缓冲区的可用数据范围;在所述可用数据范围内,对所述当前处理块进行第一像素搜索,得到所述第一运动矢量和第一预测数据。
此步骤的具体实现方式可以参见前述实施例中的描述,此处不另赘述。
步骤602包括:在所述可用数据范围内,根据所述第一预测数据,对所述当前处理块进行第二像素搜索,得到所述第二运动矢量和第二预测数据。
无论整像素搜索或者亚像素搜索,不在整个当前帧中搜索,而是在可用 数据范围内进行搜索。由于,采用行缓冲区的方式进行参考帧数据的管理,两次搜索都限定在当前处理块组可用的行缓冲区的范围内,从而简化了参考帧数据管理的复杂度,便于硬件实现。
在本申请的一种可选实施例中,步骤602包括:根据所述第一预测数据和第二像素搜索的预测数据的平均值与所述当前处理块之间的差值,计算相似度数据;根据所述相似度数据,确定所述第二运动矢量和第二预测数据。
无论整像素搜索或者亚像素搜索,在第二次像素搜索时,可以利用第一预测数据,计算相似度数据。具体实现方式可以参见前述实施例中的描述,此处不另赘述。
参照图9,示出了本申请的一种编码装置的结构框图,该装置包括:处理器701和存储器702;
所述处理器701用于:
对当前处理块在参考帧中进行第一整像素搜索,得到第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据;
根据所述第一整像素预测数据,对所述当前处理块在所述参考帧中进行第二整像素搜索,得到第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据;
根据所述第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第一亚像素运动矢量及所述第一亚像素运动矢量对应的第一亚像素预测数据;
根据所述第一亚像素预测数据,所述第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据,对所述当前处理块在所述参考帧中进行第二亚像素搜索,得到第二亚像素运动矢量及所述第二亚像素运动矢量对应的第二亚像素预测数据;
根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码。
在本申请的一种可选实施例中,所述处理器在根据所述第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据,对所述当前处 理块在所述参考帧中进行第一亚像素搜索,得到第一亚像素运动矢量及所述第一亚像素运动矢量对应的第一亚像素预测数据时,用于:
在对所述当前处理块在所述参考帧中进行第二整像素搜索的同时,根据所述第一整像素运动矢量和第一整像素预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到所述第一亚像素运动矢量和第一亚像素预测数据。
在本申请的一种可选实施例中,所述处理器在对当前处理块在参考帧中进行第一整像素搜索,得到第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据时,用于:
根据所述当前处理块所属的处理块组在图像中的位置以及全局运动矢量,确定所述参考帧存入行缓冲区的可用数据范围;
在所述可用数据范围内,对所述当前处理块进行第一整像素搜索,得到所述第一整像素运动矢量和第一整像素预测数据;
所述处理器在根据所述第一整像素预测数据,对所述当前处理块在所述参考帧中进行第二整像素搜索,得到第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据时,用于包括:
在所述可用数据范围内,根据所述第一整像素预测数据,对所述当前处理块进行第二整像素搜索,得到所述第二整像素运动矢量和第二整像素预测数据。
在本申请的一种可选实施例中,所述处理器在在所述可用数据范围内,对所述当前处理块进行第一整像素搜索,得到所述第一整像素运动矢量和第一整像素预测数据时,用于:
根据所述可用数据范围,对候选运动矢量进行修正,得到修正的候选运动矢量;
根据所述修正的候选运动矢量,以及所述当前处理块在图像中的位置,从所述行缓冲区获取所述修正的候选运动矢量对应位置的预测数据;
以所述修正的候选运动矢量为起点,根据所述预测数据进行第一整像素搜索,得到所述第一整像素运动矢量和第一整像素预测数据;
所述处理器在在所述可用数据范围内,根据所述第一整像素预测数据,对所述当前处理块进行第二整像素搜索,得到所述第二整像素运动矢量和第二整像素预测数据时,用于包括:
以所述修正的候选运动矢量为起点,根据所述预测数据以及所述第一整 像素预测数据进行第二整像素搜索,得到所述第二整像素运动矢量和第二整像素预测数据。
在本申请的一种可选实施例中,所述处理器在根据所述第一整像素预测数据,对所述当前处理块在所述参考帧中进行第二整像素搜索,得到第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据时,用于:
根据所述第一整像素预测数据和第二整像素搜索的预测数据的平均值与所述当前处理块之间的差值,计算第一相似度数据;
根据所述第一相似度数据,确定所述第二整像素运动矢量和第二整像素预测数据。
在本申请的一种可选实施例中,所述处理器在根据所述第一亚像素预测数据,所述第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据,对所述当前处理块在所述参考帧中进行第二亚像素搜索,得到第二亚像素运动矢量及所述第二亚像素运动矢量对应的第二亚像素预测数据时,用于包括:
根据所述第一亚像素预测数据和第二亚像素搜索的预测数据的平均值与所述当前处理块之间的差值,计算第二相似度数据;
根据所述第二相似度数据,确定所述第二亚像素运动矢量和第二亚像素预测数据。
在本申请的一种可选实施例中,所述处理器还用于:
在所述根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码之前,通过比较第一亚像素搜索方式的最优代价值和双向的亚像素搜索方式的最优代价值,选择第一亚像素搜索方式或双向的亚像素搜索方式;
若选择第一亚像素搜索方式,则根据所述第一亚像素运动矢量、第一亚像素预测数据,对所述当前处理块进行编码;
若选择双向的亚像素搜索方式,则执行所述根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码的步骤。
在本申请的一种可选实施例中,所述第一亚像素预测数据为对亮度分量进行第一亚像素搜索得到的,所述第二亚像素预测数据为对亮度分量进行第二亚像素搜索得到的,所述处理器在根据所述第一亚像素运动矢量、第一亚 像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码时,用于:
根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量和第二亚像素预测数据,确定采用双向的亚像素搜索方式时所述当前处理块对应的亮度分量的双向预测数据;
根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量和第二亚像素预测数据,确定采用双向的亚像素搜索方式时所述当前处理块对应的色度分量的双向预测数据;
根据所述亮度分量的双向预测数据和色度分量的双向预测数据,对所述当前处理块进行编码。
在本申请的一种可选实施例中,所述处理器还用于:
在所述根据所述亮度分量的双向预测数据和色度分量的双向预测数据,对所述当前处理块进行编码之前,分别获取所述当前处理块的各种编码模式的候选第一运动矢量列表和候选第二运动矢量列表;
对所述各种编码模式的候选第一运动矢量列表中的候选第一运动矢量和候选第二运动矢量列表中的候选第二运动矢量进行组合,生成候选双向运动矢量列表;
根据所述候选双向运动矢量列表,确定所述当前处理块所采用的目标编码模式;
所述处理器在根据所述亮度分量的双向预测数据和色度分量的双向预测数据,对所述当前处理块进行编码时,用于:
根据所述亮度分量的双向预测数据和色度分量的双向预测数据,采用所述目标编码模式,对所述当前处理块进行编码。
依据本申请实施例,通过对当前处理块在参考帧中进行第一整像素搜索,得到第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据,根据所述第一整像素预测数据,对所述当前处理块在所述参考帧中进行第二整像素搜索,得到第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据,根据所述第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第一亚像素运动矢量及所述第一亚像素运动矢量对应的第一亚像素预测数据,根据所述第一亚像素预测数据,所述第二整 像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据,对所述当前处理块在所述参考帧中进行第二亚像素搜索,得到第二亚像素运动矢量及所述第二亚像素运动矢量对应的第二亚像素预测数据,根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码,使得原本在两个不同的帧中进行的搜索改为在同一个参考帧中进行,既实现了双向预测的运动估计带来的高精确度,从而提高了编码的压缩率,又避免了两个帧带来的高带宽消耗,解决了在两个帧中进行搜索对一些带宽资源比较紧张的设备或应用场景不太适用的问题。
参照图9,示出了本申请的一种编码装置的结构框图,该装置包括:处理器801和存储器802;
所述处理器801用于:
对当前处理块在参考帧中进行第一像素搜索,得到第一运动矢量及所述第一运动矢量对应的第一预测数据;
根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索,得到第二运动矢量及所述第二运动矢量对应的第二预测数据;以及
根据所述第二运动矢量和第二预测数据,对所述当前处理块进行编码;
其中,所述第一像素搜索和所述第二像素搜索均为整像素搜索,或者所述第一像素搜索和所述第二像素搜索均为亚像素搜索。
在本申请的一种可选实施例中,当所述第一像素搜索和所述第二像素搜索均为整像素搜索时,所述处理器在根据所述第二运动矢量和第二预测数据,对所述当前处理块进行编码时,用于:
根据所述第二运动矢量和第二预测数据,对所述当前处理块在所述参考帧中进行亚像素搜索,得到第四运动矢量及所述第四运动矢量对应的第四预测数据;以及
根据所述第四运动矢量和第四预测数据,对所述当前处理块进行编码。
在本申请的一种可选实施例中,所述处理器在根据所述第二运动矢量和第二预测数据,对所述当前处理块在所述参考帧中进行亚像素搜索,得到第四运动矢量及所述第四运动矢量对应的第四预测数据时,用于:
根据所述第一运动矢量和第一预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第三运动矢量及所述第三运动矢量对应的第三预测数据;
根据所述第三预测数据,所述第二运动矢量和第二预测数据,对所述当前处理块在所述参考帧中进行第二亚像素搜索,得到所述第四运动矢量和第四预测数据。
在本申请的一种可选实施例中,所述处理器在根据所述第一运动矢量和第一预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第三运动矢量及所述第三运动矢量对应的第三预测数据时,用于:
在对所述当前处理块在所述参考帧中进行第二像素搜索的同时,根据所述第一运动矢量和第一预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第三运动矢量及所述第三运动矢量对应的第三预测数据。
在本申请的一种可选实施例中,所述处理器在对当前处理块在参考帧中进行第一像素搜索,得到第一运动矢量及所述第一运动矢量对应的第一预测数据时,用于:
根据所述当前处理块所属的处理块组在图像中的位置以及全局运动矢量,确定所述参考帧存入行缓冲区的可用数据范围;
在所述可用数据范围内,对所述当前处理块进行第一像素搜索,得到所述第一运动矢量和第一预测数据;
所述处理器在根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索,得到第二运动矢量及所述第二运动矢量对应的第二预测数据时,用于:
在所述可用数据范围内,根据所述第一预测数据,对所述当前处理块进行第二像素搜索,得到所述第二运动矢量和第二预测数据。
在本申请的一种可选实施例中,所述处理器在根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索,得到第二运动矢量及所述第二运动矢量对应的第二预测数据时,用于:
根据所述第一预测数据和第二像素搜索的预测数据的平均值与所述当前处理块之间的差值,计算相似度数据;
根据所述相似度数据,确定所述第二运动矢量和第二预测数据。
依据本申请实施例,通过对当前处理块在参考帧中进行第一像素搜索,得到第一运动矢量及所述第一运动矢量对应的第一预测数据,根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索,得到第二运动矢量及所述第二运动矢量对应的第二预测数据,根据所述第二运动矢量和第二预测数据,对所述当前处理块进行编码,对于P帧的编码方式,以第一次像素搜索的结果为依据,再进行一次像素搜索,可以得到比前一次更加精确的结果,从而提高了编码的压缩率;而对于B帧的编码方式,可以使得原本在两个不同的帧中进行的搜索改为在同一个参考帧中进行,既实现了双向预测的运动估计带来的高精确度,从而提高了编码的压缩率,又避免了两个帧带来的高带宽消耗,解决了在两个帧中进行搜索对一些带宽资源比较紧张的设备或应用场景不太适用的问题。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
本申请的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本申请实施例的计算处理设备中的一些或者全部部件的一些或者全部功能。本申请还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本申请的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
例如,图11示出了可以实现根据本申请的方法的计算处理设备。该计算处理设备传统上包括处理器1010和以存储器1020形式的计算机程序产品或者计算机可读介质。存储器1020可以是诸如闪存、EEPROM(电可擦除 可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。存储器1020具有用于执行上述方法中的任何方法步骤的程序代码1031的存储空间1030。例如,用于程序代码的存储空间1030可以包括分别用于实现上面的方法中的各种步骤的各个程序代码1031。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(CD)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为如参考图12所述的便携式或者固定存储单元。该存储单元可以具有与图11的计算处理设备中的存储器1020类似布置的存储段、存储空间等。程序代码可以例如以适当形式进行压缩。通常,存储单元包括计算机可读代码1031’,即可以由例如诸如1010之类的处理器读取的代码,这些代码当由计算处理设备运行时,导致该计算处理设备执行上面所描述的方法中的各个步骤。
本文中所称的“一个实施例”、“实施例”或者“一个或者多个实施例”意味着,结合实施例描述的特定特征、结构或者特性包括在本申请的至少一个实施例中。此外,请注意,这里“在一个实施例中”的词语例子不一定全指同一个实施例。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本申请可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (33)

  1. 一种编码方法,其特征在于,包括:
    对当前处理块在参考帧中进行第一整像素搜索,得到第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据;
    根据所述第一整像素预测数据,对所述当前处理块在所述参考帧中进行第二整像素搜索,得到第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据;
    根据所述第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第一亚像素运动矢量及所述第一亚像素运动矢量对应的第一亚像素预测数据;
    根据所述第一亚像素预测数据,所述第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据,对所述当前处理块在所述参考帧中进行第二亚像素搜索,得到第二亚像素运动矢量及所述第二亚像素运动矢量对应的第二亚像素预测数据;
    根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码。
  2. 根据权利要求1所述的方法,其特征在于,所述根据所述第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第一亚像素运动矢量及所述第一亚像素运动矢量对应的第一亚像素预测数据包括:
    在对所述当前处理块在所述参考帧中进行第二整像素搜索的同时,根据所述第一整像素运动矢量和第一整像素预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到所述第一亚像素运动矢量和第一亚像素预测数据。
  3. 根据权利要求1所述的方法,其特征在于,所述对当前处理块在参考帧中进行第一整像素搜索,得到第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据包括:
    根据所述当前处理块所属的处理块组在图像中的位置以及全局运动矢量,确定所述参考帧存入行缓冲区的可用数据范围;
    在所述可用数据范围内,对所述当前处理块进行第一整像素搜索,得到所述第一整像素运动矢量和第一整像素预测数据;
    所述根据所述第一整像素预测数据,对所述当前处理块在所述参考帧中进行第二整像素搜索,得到第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据包括:
    在所述可用数据范围内,根据所述第一整像素预测数据,对所述当前处理块进行第二整像素搜索,得到所述第二整像素运动矢量和第二整像素预测数据。
  4. 根据权利要求3所述的方法,其特征在于,所述在所述可用数据范围内,对所述当前处理块进行第一整像素搜索,得到所述第一整像素运动矢量和第一整像素预测数据包括:
    根据所述可用数据范围,对候选运动矢量进行修正,得到修正的候选运动矢量;
    根据所述修正的候选运动矢量,以及所述当前处理块在图像中的位置,从所述行缓冲区获取所述修正的候选运动矢量对应位置的预测数据;
    以所述修正的候选运动矢量为起点,根据所述预测数据进行第一整像素搜索,得到所述第一整像素运动矢量和第一整像素预测数据;
    所述在所述可用数据范围内,根据所述第一整像素预测数据,对所述当前处理块进行第二整像素搜索,得到所述第二整像素运动矢量和第二整像素预测数据包括:
    以所述修正的候选运动矢量为起点,根据所述预测数据以及所述第一整像素预测数据进行第二整像素搜索,得到所述第二整像素运动矢量和第二整像素预测数据。
  5. 根据权利要求1-4中任一项所述的方法,其特征在于,所述根据所述第一整像素预测数据,对所述当前处理块在所述参考帧中进行第二整像素搜索,得到第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据包括:
    根据所述第一整像素预测数据和第二整像素搜索的预测数据的平均值与所述当前处理块之间的差值,计算第一相似度数据;
    根据所述第一相似度数据,确定所述第二整像素运动矢量和第二整像素 预测数据。
  6. 根据权利要求1所述的方法,其特征在于,所述根据所述第一亚像素预测数据,所述第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据,对所述当前处理块在所述参考帧中进行第二亚像素搜索,得到第二亚像素运动矢量及所述第二亚像素运动矢量对应的第二亚像素预测数据包括:
    根据所述第一亚像素预测数据和第二亚像素搜索的预测数据的平均值与所述当前处理块之间的差值,计算第二相似度数据;
    根据所述第二相似度数据,确定所述第二亚像素运动矢量和第二亚像素预测数据。
  7. 根据权利要求1所述的方法,其特征在于,在所述根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码之前,所述方法还包括:
    通过比较第一亚像素搜索方式的最优代价值和双向的亚像素搜索方式的最优代价值,选择第一亚像素搜索方式或双向的亚像素搜索方式;
    若选择第一亚像素搜索方式,则根据所述第一亚像素运动矢量、第一亚像素预测数据,对所述当前处理块进行编码;
    若选择双向的亚像素搜索方式,则执行所述根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码的步骤。
  8. 根据权利要求1所述的方法,其特征在于,所述第一亚像素预测数据为对亮度分量进行第一亚像素搜索得到的,所述第二亚像素预测数据为对亮度分量进行第二亚像素搜索得到的,所述根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码包括:
    根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量和第二亚像素预测数据,确定采用双向的亚像素搜索方式时所述当前处理块对应的亮度分量的双向预测数据;
    根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量和第二亚像素预测数据,确定采用双向的亚像素搜索方式时所述当前处 理块对应的色度分量的双向预测数据;
    根据所述亮度分量的双向预测数据和色度分量的双向预测数据,对所述当前处理块进行编码。
  9. 根据权利要求8所述的方法,其特征在于,在所述根据所述亮度分量的双向预测数据和色度分量的双向预测数据,对所述当前处理块进行编码之前,所述方法还包括:
    分别获取所述当前处理块的各种编码模式的候选第一运动矢量列表和候选第二运动矢量列表;
    对所述各种编码模式的候选第一运动矢量列表中的候选第一运动矢量和候选第二运动矢量列表中的候选第二运动矢量进行组合,生成候选双向运动矢量列表;
    根据所述候选双向运动矢量列表,确定所述当前处理块所采用的目标编码模式;
    所述根据所述亮度分量的双向预测数据和色度分量的双向预测数据,对所述当前处理块进行编码包括:
    根据所述亮度分量的双向预测数据和色度分量的双向预测数据,采用所述目标编码模式,对所述当前处理块进行编码。
  10. 一种编码方法,其特征在于,包括:
    对当前处理块在参考帧中进行第一像素搜索,得到第一运动矢量及所述第一运动矢量对应的第一预测数据;
    根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索,得到第二运动矢量及所述第二运动矢量对应的第二预测数据;以及
    根据所述第二运动矢量和第二预测数据,对所述当前处理块进行编码;
    其中,所述第一像素搜索和所述第二像素搜索均为整像素搜索,或者所述第一像素搜索和所述第二像素搜索均为亚像素搜索。
  11. 根据权利要求10所述的方法,其特征在于,当所述第一像素搜索和所述第二像素搜索均为整像素搜索时,所述根据所述第二运动矢量和第二预测数据,对所述当前处理块进行编码包括:
    根据所述第二运动矢量和第二预测数据,对所述当前处理块在所述参考帧中进行亚像素搜索,得到第四运动矢量及所述第四运动矢量对应的第四预 测数据;以及
    根据所述第四运动矢量和第四预测数据,对所述当前处理块进行编码。
  12. 根据权利要求11所述的方法,其特征在于,所述根据所述第二运动矢量和第二预测数据,对所述当前处理块在所述参考帧中进行亚像素搜索,得到第四运动矢量及所述第四运动矢量对应的第四预测数据包括:
    根据所述第一运动矢量和第一预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第三运动矢量及所述第三运动矢量对应的第三预测数据;
    根据所述第三预测数据,所述第二运动矢量和第二预测数据,对所述当前处理块在所述参考帧中进行第二亚像素搜索,得到所述第四运动矢量和第四预测数据。
  13. 根据权利要求12所述的方法,其特征在于,所述根据所述第一运动矢量和第一预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第三运动矢量及所述第三运动矢量对应的第三预测数据包括:
    在对所述当前处理块在所述参考帧中进行第二像素搜索的同时,根据所述第一运动矢量和第一预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第三运动矢量及所述第三运动矢量对应的第三预测数据。
  14. 根据权利要求10所述的方法,其特征在于,所述对当前处理块在参考帧中进行第一像素搜索,得到第一运动矢量及所述第一运动矢量对应的第一预测数据包括:
    根据所述当前处理块所属的处理块组在图像中的位置以及全局运动矢量,确定所述参考帧存入行缓冲区的可用数据范围;
    在所述可用数据范围内,对所述当前处理块进行第一像素搜索,得到所述第一运动矢量和第一预测数据;
    所述根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索,得到第二运动矢量及所述第二运动矢量对应的第二预测数据包括:
    在所述可用数据范围内,根据所述第一预测数据,对所述当前处理块进行第二像素搜索,得到所述第二运动矢量和第二预测数据。
  15. 根据权利要求10-14中任一项所述的方法,其特征在于,所述根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索,得到第二运动矢量及所述第二运动矢量对应的第二预测数据包括:
    根据所述第一预测数据和第二像素搜索的预测数据的平均值与所述当前处理块之间的差值,计算相似度数据;
    根据所述相似度数据,确定所述第二运动矢量和第二预测数据。
  16. 一种编码装置,其特征在于,所述装置包括:处理器和存储器;
    所述处理器用于:
    对当前处理块在参考帧中进行第一整像素搜索,得到第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据;
    根据所述第一整像素预测数据,对所述当前处理块在所述参考帧中进行第二整像素搜索,得到第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据;
    根据所述第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第一亚像素运动矢量及所述第一亚像素运动矢量对应的第一亚像素预测数据;
    根据所述第一亚像素预测数据,所述第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据,对所述当前处理块在所述参考帧中进行第二亚像素搜索,得到第二亚像素运动矢量及所述第二亚像素运动矢量对应的第二亚像素预测数据;
    根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码。
  17. 根据权利要求16所述的装置,其特征在于,所述处理器在根据所述第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第一亚像素运动矢量及所述第一亚像素运动矢量对应的第一亚像素预测数据时,用于:
    在对所述当前处理块在所述参考帧中进行第二整像素搜索的同时,根据所述第一整像素运动矢量和第一整像素预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到所述第一亚像素运动矢量和第一亚像素 预测数据。
  18. 根据权利要求16所述的装置,其特征在于,所述处理器在对当前处理块在参考帧中进行第一整像素搜索,得到第一整像素运动矢量及所述第一整像素运动矢量对应的第一整像素预测数据时,用于:
    根据所述当前处理块所属的处理块组在图像中的位置以及全局运动矢量,确定所述参考帧存入行缓冲区的可用数据范围;
    在所述可用数据范围内,对所述当前处理块进行第一整像素搜索,得到所述第一整像素运动矢量和第一整像素预测数据;
    所述处理器在根据所述第一整像素预测数据,对所述当前处理块在所述参考帧中进行第二整像素搜索,得到第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据时,用于包括:
    在所述可用数据范围内,根据所述第一整像素预测数据,对所述当前处理块进行第二整像素搜索,得到所述第二整像素运动矢量和第二整像素预测数据。
  19. 根据权利要求18所述的装置,其特征在于,所述处理器在在所述可用数据范围内,对所述当前处理块进行第一整像素搜索,得到所述第一整像素运动矢量和第一整像素预测数据时,用于:
    根据所述可用数据范围,对候选运动矢量进行修正,得到修正的候选运动矢量;
    根据所述修正的候选运动矢量,以及所述当前处理块在图像中的位置,从所述行缓冲区获取所述修正的候选运动矢量对应位置的预测数据;
    以所述修正的候选运动矢量为起点,根据所述预测数据进行第一整像素搜索,得到所述第一整像素运动矢量和第一整像素预测数据;
    所述处理器在在所述可用数据范围内,根据所述第一整像素预测数据,对所述当前处理块进行第二整像素搜索,得到所述第二整像素运动矢量和第二整像素预测数据时,用于包括:
    以所述修正的候选运动矢量为起点,根据所述预测数据以及所述第一整像素预测数据进行第二整像素搜索,得到所述第二整像素运动矢量和第二整像素预测数据。
  20. 根据权利要求16-19中任一项所述的装置,其特征在于,所述处理器在根据所述第一整像素预测数据,对所述当前处理块在所述参考帧中进行第二整像素搜索,得到第二整像素运动矢量及所述第二整像素运动矢量对应 的第二整像素预测数据时,用于:
    根据所述第一整像素预测数据和第二整像素搜索的预测数据的平均值与所述当前处理块之间的差值,计算第一相似度数据;
    根据所述第一相似度数据,确定所述第二整像素运动矢量和第二整像素预测数据。
  21. 根据权利要求16所述的装置,其特征在于,所述处理器在根据所述第一亚像素预测数据,所述第二整像素运动矢量及所述第二整像素运动矢量对应的第二整像素预测数据,对所述当前处理块在所述参考帧中进行第二亚像素搜索,得到第二亚像素运动矢量及所述第二亚像素运动矢量对应的第二亚像素预测数据时,用于包括:
    根据所述第一亚像素预测数据和第二亚像素搜索的预测数据的平均值与所述当前处理块之间的差值,计算第二相似度数据;
    根据所述第二相似度数据,确定所述第二亚像素运动矢量和第二亚像素预测数据。
  22. 根据权利要求16所述的装置,其特征在于,所述处理器还用于:
    在所述根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码之前,通过比较第一亚像素搜索方式的最优代价值和双向的亚像素搜索方式的最优代价值,选择第一亚像素搜索方式或双向的亚像素搜索方式;
    若选择第一亚像素搜索方式,则根据所述第一亚像素运动矢量、第一亚像素预测数据,对所述当前处理块进行编码;
    若选择双向的亚像素搜索方式,则执行所述根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码的步骤。
  23. 根据权利要求16所述的装置,其特征在于,所述第一亚像素预测数据为对亮度分量进行第一亚像素搜索得到的,所述第二亚像素预测数据为对亮度分量进行第二亚像素搜索得到的,所述处理器在根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量以及第二亚像素预测数据,对所述当前处理块进行编码时,用于:
    根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量和第二亚像素预测数据,确定采用双向的亚像素搜索方式时所述当前处理块对应的亮度分量的双向预测数据;
    根据所述第一亚像素运动矢量、第一亚像素预测数据、第二亚像素运动矢量和第二亚像素预测数据,确定采用双向的亚像素搜索方式时所述当前处理块对应的色度分量的双向预测数据;
    根据所述亮度分量的双向预测数据和色度分量的双向预测数据,对所述当前处理块进行编码。
  24. 根据权利要求23所述的装置,其特征在于,所述处理器还用于:
    在所述根据所述亮度分量的双向预测数据和色度分量的双向预测数据,对所述当前处理块进行编码之前,分别获取所述当前处理块的各种编码模式的候选第一运动矢量列表和候选第二运动矢量列表;
    对所述各种编码模式的候选第一运动矢量列表中的候选第一运动矢量和候选第二运动矢量列表中的候选第二运动矢量进行组合,生成候选双向运动矢量列表;
    根据所述候选双向运动矢量列表,确定所述当前处理块所采用的目标编码模式;
    所述处理器在根据所述亮度分量的双向预测数据和色度分量的双向预测数据,对所述当前处理块进行编码时,用于:
    根据所述亮度分量的双向预测数据和色度分量的双向预测数据,采用所述目标编码模式,对所述当前处理块进行编码。
  25. 一种编码装置,其特征在于,所述装置包括:处理器和存储器;
    所述处理器用于:
    对当前处理块在参考帧中进行第一像素搜索,得到第一运动矢量及所述第一运动矢量对应的第一预测数据;
    根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索,得到第二运动矢量及所述第二运动矢量对应的第二预测数据;以及
    根据所述第二运动矢量和第二预测数据,对所述当前处理块进行编码;
    其中,所述第一像素搜索和所述第二像素搜索均为整像素搜索,或者所述第一像素搜索和所述第二像素搜索均为亚像素搜索。
  26. 根据权利要求25所述的装置,其特征在于,当所述第一像素搜索和所述第二像素搜索均为整像素搜索时,所述处理器在根据所述第二运动矢量和第二预测数据,对所述当前处理块进行编码时,用于:
    根据所述第二运动矢量和第二预测数据,对所述当前处理块在所述参考 帧中进行亚像素搜索,得到第四运动矢量及所述第四运动矢量对应的第四预测数据;以及
    根据所述第四运动矢量和第四预测数据,对所述当前处理块进行编码。
  27. 根据权利要求26所述的装置,其特征在于,所述处理器在根据所述第二运动矢量和第二预测数据,对所述当前处理块在所述参考帧中进行亚像素搜索,得到第四运动矢量及所述第四运动矢量对应的第四预测数据时,用于:
    根据所述第一运动矢量和第一预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第三运动矢量及所述第三运动矢量对应的第三预测数据;
    根据所述第三预测数据,所述第二运动矢量和第二预测数据,对所述当前处理块在所述参考帧中进行第二亚像素搜索,得到所述第四运动矢量和第四预测数据。
  28. 根据权利要求27所述的装置,其特征在于,所述处理器在根据所述第一运动矢量和第一预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第三运动矢量及所述第三运动矢量对应的第三预测数据时,用于:
    在对所述当前处理块在所述参考帧中进行第二像素搜索的同时,根据所述第一运动矢量和第一预测数据,对所述当前处理块在所述参考帧中进行第一亚像素搜索,得到第三运动矢量及所述第三运动矢量对应的第三预测数据。
  29. 根据权利要求25所述的装置,其特征在于,所述处理器在对当前处理块在参考帧中进行第一像素搜索,得到第一运动矢量及所述第一运动矢量对应的第一预测数据时,用于:
    根据所述当前处理块所属的处理块组在图像中的位置以及全局运动矢量,确定所述参考帧存入行缓冲区的可用数据范围;
    在所述可用数据范围内,对所述当前处理块进行第一像素搜索,得到所述第一运动矢量和第一预测数据;
    所述处理器在根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索,得到第二运动矢量及所述第二运动矢量对应的第二预 测数据时,用于:
    在所述可用数据范围内,根据所述第一预测数据,对所述当前处理块进行第二像素搜索,得到所述第二运动矢量和第二预测数据。
  30. 根据权利要求25-29中任一项所述的装置,其特征在于,所述处理器在根据所述第一预测数据,对所述当前处理块在所述参考帧中进行第二像素搜索,得到第二运动矢量及所述第二运动矢量对应的第二预测数据时,用于:
    根据所述第一预测数据和第二像素搜索的预测数据的平均值与所述当前处理块之间的差值,计算相似度数据;
    根据所述相似度数据,确定所述第二运动矢量和第二预测数据。
  31. 一种计算处理设备,其特征在于,包括:
    存储器,其中存储有计算机可读代码;
    一个或多个处理器,当所述计算机可读代码被所述一个或多个处理器执行时,所述计算处理设备执行如权利要求1-15中任一项所述的编码方法。
  32. 一种计算机程序,包括计算机可读代码,当所述计算机可读代码在计算处理设备上运行时,导致所述计算处理设备执行根据权利要求1-15中的任一个所述的编码方法。
  33. 一种计算机可读介质,其中存储了如权利要求32所述的计算机程序。
PCT/CN2020/106168 2020-07-31 2020-07-31 编码方法、装置、计算处理设备、计算机程序及存储介质 WO2022021310A1 (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/106168 WO2022021310A1 (zh) 2020-07-31 2020-07-31 编码方法、装置、计算处理设备、计算机程序及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/106168 WO2022021310A1 (zh) 2020-07-31 2020-07-31 编码方法、装置、计算处理设备、计算机程序及存储介质

Publications (1)

Publication Number Publication Date
WO2022021310A1 true WO2022021310A1 (zh) 2022-02-03

Family

ID=80037331

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/106168 WO2022021310A1 (zh) 2020-07-31 2020-07-31 编码方法、装置、计算处理设备、计算机程序及存储介质

Country Status (1)

Country Link
WO (1) WO2022021310A1 (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040252766A1 (en) * 2003-06-11 2004-12-16 Daeyang Foundation (Sejong University) Motion vector search method and apparatus
CN101610413A (zh) * 2009-07-29 2009-12-23 清华大学 一种视频的编码/解码方法及装置
CN108259912A (zh) * 2018-03-28 2018-07-06 天津大学 一种分像素运动估计的并行实现方法
CN109348234A (zh) * 2018-11-12 2019-02-15 北京佳讯飞鸿电气股份有限公司 一种高效亚像素运动估计方法及系统
CN109660800A (zh) * 2017-10-12 2019-04-19 北京金山云网络技术有限公司 运动估计方法、装置、电子设备及计算机可读存储介质
CN110933426A (zh) * 2018-09-20 2020-03-27 杭州海康威视数字技术股份有限公司 一种解码、编码方法及其设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040252766A1 (en) * 2003-06-11 2004-12-16 Daeyang Foundation (Sejong University) Motion vector search method and apparatus
CN101610413A (zh) * 2009-07-29 2009-12-23 清华大学 一种视频的编码/解码方法及装置
CN109660800A (zh) * 2017-10-12 2019-04-19 北京金山云网络技术有限公司 运动估计方法、装置、电子设备及计算机可读存储介质
CN108259912A (zh) * 2018-03-28 2018-07-06 天津大学 一种分像素运动估计的并行实现方法
CN110933426A (zh) * 2018-09-20 2020-03-27 杭州海康威视数字技术股份有限公司 一种解码、编码方法及其设备
CN109348234A (zh) * 2018-11-12 2019-02-15 北京佳讯飞鸿电气股份有限公司 一种高效亚像素运动估计方法及系统

Similar Documents

Publication Publication Date Title
US11350124B2 (en) Image processing method and image processing device
RU2708440C1 (ru) Устройство и способ кодирования изображения, устройство и способ декодирования изображения и носители данных
US9706202B2 (en) Image encoding apparatus, image encoding method, image decoding apparatus, and image decoding method
US10142654B2 (en) Method for encoding/decoding video by oblong intra prediction
JP4662636B2 (ja) 動き推定とブロックマッチング・パターンの改良
US20100166073A1 (en) Multiple-Candidate Motion Estimation With Advanced Spatial Filtering of Differential Motion Vectors
US20070268964A1 (en) Unit co-location-based motion estimation
TW202038611A (zh) 用於視訊寫碼之三角運動資訊
US20150172687A1 (en) Multiple-candidate motion estimation with advanced spatial filtering of differential motion vectors
WO2015010319A1 (zh) 一种基于p帧的多假设运动补偿编码方法
TW202218428A (zh) 圖像編碼方法、圖像解碼方法及相關裝置
US20130272421A1 (en) Motion estimation device, motion estimation method, motion estimation program and video image encoding device
CN108810549B (zh) 一种面向低功耗的流媒体播放方法
CN101888546A (zh) 一种运动估计的方法及装置
TW202025727A (zh) 向量預測器清單之產生
US20090028241A1 (en) Device and method of coding moving image and device and method of decoding moving image
US20050089232A1 (en) Method of video compression that accommodates scene changes
US20210337184A1 (en) Candidate motion vector list construction method and device thereof
WO2022021310A1 (zh) 编码方法、装置、计算处理设备、计算机程序及存储介质
WO2018205781A1 (zh) 一种实现运动估计的方法及电子设备
KR101841352B1 (ko) 참조 프레임 선택 방법 및 그 장치
TWI825751B (zh) 視訊編碼方法和裝置
TWI831358B (zh) 用於仿射預測或運動補償的共享預加載區域的方法和裝置
TWI836563B (zh) 視訊編解碼方法和裝置
WO2022061573A1 (zh) 运动搜索方法、视频编码装置及计算机可读存储介质

Legal Events

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

Ref document number: 20947359

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20947359

Country of ref document: EP

Kind code of ref document: A1