KR20200002036A - Optical Flow Estimation for Motion Compensated Prediction in Video Coding - Google Patents
Optical Flow Estimation for Motion Compensated Prediction in Video Coding Download PDFInfo
- Publication number
- KR20200002036A KR20200002036A KR1020197035698A KR20197035698A KR20200002036A KR 20200002036 A KR20200002036 A KR 20200002036A KR 1020197035698 A KR1020197035698 A KR 1020197035698A KR 20197035698 A KR20197035698 A KR 20197035698A KR 20200002036 A KR20200002036 A KR 20200002036A
- Authority
- KR
- South Korea
- Prior art keywords
- reference frame
- frame portion
- frame
- warped
- motion
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000033001 locomotion Effects 0.000 title claims abstract description 241
- 230000003287 optical effect Effects 0.000 title claims description 18
- 230000002441 reversible effect Effects 0.000 claims abstract description 19
- 238000000034 method Methods 0.000 claims description 185
- 230000008569 process Effects 0.000 claims description 105
- 238000012545 processing Methods 0.000 claims description 45
- 239000013598 vector Substances 0.000 claims description 42
- 238000002156 mixing Methods 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 7
- 230000006870 function Effects 0.000 description 31
- 230000015654 memory Effects 0.000 description 29
- 238000010586 diagram Methods 0.000 description 24
- 238000004891 communication Methods 0.000 description 11
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 238000001914 filtration Methods 0.000 description 9
- 238000013139 quantization Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000012935 Averaging Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- BQCADISMDOOEFD-UHFFFAOYSA-N Silver Chemical compound [Ag] BQCADISMDOOEFD-UHFFFAOYSA-N 0.000 description 1
- 238000000137 annealing Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000000611 regression analysis Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052709 silver Inorganic materials 0.000 description 1
- 239000004332 silver Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/537—Motion estimation other than block-based
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/19—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding using optimisation based on Lagrange multipliers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/573—Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/577—Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
비디오 시퀀스에서 현재 프레임의 블록들의 인터 예측을 위해 사용될 수 있는 광흐름 레퍼런스 프레임 부분(예를 들면, 블록 또는 전체 프레임)이 생성된다. 순방향 레퍼런스 프레임과 역방향 레퍼런스 프레임이 현재 프레임의 픽셀들에 대한 각각의 모션 필드를 생성하는 광흐름 추정에 사용된다. 모션 필드들은 레퍼런스 프레임들의 일부 또는 모든 픽셀들을 현재 프레임의 픽셀들로 워핑하는 데 사용된다. 워핑된 레퍼런스 프레임 픽셀들은 블렌딩되어 광흐름 레퍼런스 프레임 부분을 형성한다. 인터 예측은 현재 프레임의 인코딩 또는 디코딩 부분들의 일부로서 수행될 수 있다.A portion of the light flow reference frame (eg, block or entire frame) is generated that can be used for inter prediction of blocks of the current frame in the video sequence. The forward reference frame and the reverse reference frame are used for the light flow estimation to generate respective motion fields for the pixels of the current frame. Motion fields are used to warn some or all of the pixels of the reference frames to the pixels of the current frame. The warped reference frame pixels are blended to form a lightflow reference frame portion. Inter prediction may be performed as part of the encoding or decoding portions of the current frame.
Description
[0001] 디지털 비디오 스트림들은 일련의 프레임들 또는 스틸 이미지들(still images)을 사용하여 비디오를 나타낼 수 있다. 디지털 비디오는 예를 들면, 화상 회의, 고해상도 비디오 엔터테인먼트, 비디오 광고들, 또는 사용자 생성 비디오들의 공유를 포함한 다양한 적용들에 사용될 수 있다. 디지털 비디오 스트림은 대량의 데이터를 포함할 수 있고 비디오 데이터의 처리, 전송, 또는 저장을 위해 컴퓨팅 디바이스의 상당량의 컴퓨팅 또는 통신 자원들을 소비할 수 있다. 비디오 스트림들에서 데이터의 양을 저감하기 위해 압축 및 다른 인코딩 기술들을 포함한 다양한 접근법들이 제안되고 있다.[0001] Digital video streams can represent video using a series of frames or still images. Digital video can be used in a variety of applications, including, for example, video conferencing, high resolution video entertainment, video advertisements, or sharing of user generated videos. Digital video streams may contain large amounts of data and may consume a significant amount of computing or communication resources of a computing device for processing, transmitting, or storing video data. Various approaches have been proposed, including compression and other encoding techniques, to reduce the amount of data in video streams.
[0002] 압축을 위한 한 가지 기술은 인코딩될 현재 블록에 대응하는 예측 블록을 생성하기 위해 레퍼런스 프레임을 사용한다. 인코딩된 데이터의 양을 저감하기 위해 현재 블록 자체의 값들 대신에 예측 블록과 현재 블록 사이의 차이들이 인코딩될 수 있다.[0002] One technique for compression uses a reference frame to generate a predictive block corresponding to the current block to be encoded. The differences between the prediction block and the current block may be encoded instead of the values of the current block itself to reduce the amount of encoded data.
[0003] 본 발명은 일반적으로 비디오 데이터를 인코딩 및 디코딩하는 것에 관한 것이며, 보다 세부적으로는 비디오 압축에서 모션 보상 예측을 위해 블록 기반의 광흐름 추정(optical flow estimation)을 이용하는 것에 관한 것이다. 비디오 압축에서 모션 보상 예측을 위해 병치된 레퍼런스 프레임을 보간할 수 있는 프레임 레벨 기반의 광흐름 추정도 또한 기재되어 있다.[0003] FIELD OF THE INVENTION The present invention generally relates to encoding and decoding video data, and more particularly to the use of block-based optical flow estimation for motion compensation prediction in video compression. Frame level based light flow estimation is also described, which can interpolate collocated reference frames for motion compensated prediction in video compression.
[0004] 본 발명은 인코딩 및 디코딩 방법들 및 장치를 기술한다. 본 발명의 일 구현예에 따른 방법은 예측될 제1 프레임의 제1 프레임 부분을 결정하는 단계 ― 제1 프레임은 비디오 시퀀스에 있음 ― , 제1 프레임의 순방향 인터 예측(forward inter prediction)을 위해 비디오 시퀀스로부터 제1 레퍼런스 프레임(reference frame)을 결정하는 단계, 제1 프레임의 역방향 인터 예측을 위해 비디오 시퀀스로부터 제2 레퍼런스 프레임을 결정하는 단계, 제1 레퍼런스 프레임 및 제2 레퍼런스 프레임을 사용하여 광흐름 추정(optical flow estimation)을 수행함으로써, 제1 프레임 부분의 인터 예측을 위한 광흐름 레퍼런스 프레임 부분을 생성하는 단계, 및 광흐름 레퍼런스 프레임 부분을 사용하여 제1 프레임 부분에 대한 예측 프로세스를 수행하는 단계를 포함한다. 제1 프레임 부분 및 광흐름 레퍼런스 프레임 부분은, 예를 들면, 블록 또는 전체 프레임일 수 있다.[0004] The present invention describes encoding and decoding methods and apparatus. The method according to an embodiment of the present invention comprises the steps of determining a first frame portion of a first frame to be predicted, the first frame being in a video sequence, video for forward inter prediction of the first frame. Determining a first reference frame from the sequence, determining a second reference frame from the video sequence for reverse inter prediction of the first frame, light flow using the first reference frame and the second reference frame By performing optical flow estimation, generating a light flow reference frame portion for inter prediction of the first frame portion, and performing a prediction process for the first frame portion using the light flow reference frame portion. It includes. The first frame portion and the light flow reference frame portion may be, for example, blocks or entire frames.
[0005] 본 발명의 일 구현예에 따른 장치는 비일시적 저장 매체 또는 메모리 및 프로세서를 포함한다. 매체는 방법을 수행하기 위해 프로세서에 의해 실행 가능한 명령들을 포함하고, 방법은 비디오 시퀀스에서 예측될 제1 프레임을 결정하는 단계, 및 제1 프레임의 순방향 인터 예측을 위한 제1 레퍼런스 프레임의 이용 가능성 및 제1 프레임의 역방향 인터 예측을 위한 제2 레퍼런스 프레임의 이용 가능성을 결정하는 단계를 포함한다. 방법은 또한, 제1 레퍼런스 프레임 및 제2 레퍼런스 프레임 양자 모두의 이용 가능성을 결정하는 것에 응답하여, 제1 레퍼런스 프레임과 제2 레퍼런스 프레임을 광흐름 추정 프로세스에 대한 입력으로 사용하여, 제1 프레임 부분의 픽셀들에 대한 각각의 모션 필드를 생성하는 단계, 제1 워핑된 레퍼런스 프레임 부분을 형성하기 위해, 모션 필드들을 사용하여 제1 레퍼런스 프레임 부분을 제1 프레임 부분으로 워핑하는 단계 ― 제1 레퍼런스 프레임 부분은 제1 프레임 부분의 픽셀들과 병치된 제1 레퍼런스 프레임의 픽셀들을 포함함 ― , 제2 워핑된 레퍼런스 프레임 부분을 형성하기 위해, 모션 필드들을 사용하여 제2 레퍼런스 프레임 부분을 제1 프레임 부분으로 워핑하는 단계 ― 제2 레퍼런스 프레임 부분은 제1 프레임 부분의 픽셀들과 병치된 제2 레퍼런스 프레임의 픽셀들을 포함함 ― , 및 제1 프레임의 적어도 하나의 블록의 인터 예측을 위한 광흐름 레퍼런스 프레임 부분을 형성하기 위해, 제1 워핑된 레퍼런스 프레임 부분과 제2 워핑된 레퍼런스 프레임 부분을 블렌딩하는 단계를 포함한다. [0005] An apparatus according to an embodiment of the present invention includes a non-transitory storage medium or memory and a processor. The medium includes instructions executable by a processor to perform a method, the method comprising determining a first frame to be predicted in a video sequence, and availability of the first reference frame for forward inter prediction of the first frame; Determining availability of a second reference frame for reverse inter prediction of the first frame. The method also uses, in response to determining the availability of both the first reference frame and the second reference frame, using the first reference frame and the second reference frame as inputs to the light flow estimation process, the first frame portion. Generating respective motion fields for the pixels of, warping the first reference frame portion to the first frame portion using the motion fields to form a first warped reference frame portion, the first reference frame The portion includes pixels of a first reference frame in parallel with the pixels of the first frame portion—using the motion fields to form a second reference frame portion to form a second warped reference frame portion. Warping to the second reference frame portion wherein the second reference frame portion is in parallel with the pixels of the first frame portion. Comprising pixels of the frame, and blending the first warped reference frame portion and the second warped reference frame portion to form a lightflow reference frame portion for inter prediction of at least one block of the first frame. It includes a step.
[0006] 본 발명의 일 구현예에 따른 다른 장치는 또한 비일시적 저장 매체 또는 메모리 및 프로세서를 포함한다. 매체는 방법을 수행하기 위해 프로세서에 의해 실행 가능한 명령들을 포함하고, 방법은, 광흐름 추정을 위해 제1 처리 레벨에서 제1 프레임 부분의 픽셀들에 대한 모션 필드들을 초기화함으로써 ― 제1 처리 레벨은 제1 프레임 부분 내의 다운스케일링된 모션을 나타내고 다수의 레벨들 중 하나의 레벨을 포함함 ― , 비디오 시퀀스로부터의 제1 레퍼런스 프레임 부분 및 비디오 시퀀스의 제2 레퍼런스 프레임 부분을 사용하여 비디오 시퀀스의 제1 프레임의 블록의 인터 예측을 위한 광흐름 레퍼런스 프레임 부분을 생성하는 단계, 및 다수의 레벨들 중 각각의 레벨에 대해, 제1 워핑된 레퍼런스 프레임 부분을 형성하기 위해 모션 필드들을 사용하여 제1 레퍼런스 프레임 부분을 제1 프레임 부분으로 워핑하는 단계, 제2 워핑된 레퍼런스 프레임 부분을 형성하기 위해 모션 필드들을 사용하여 제2 레퍼런스 프레임 부분을 제1 프레임 부분으로 워핑하는 단계, 광흐름 추정을 사용하여 제1 워핑된 레퍼런스 프레임 부분과 제2 워핑된 레퍼런스 프레임 부분 사이의 모션 필드들을 추정하는 단계, 및 제1 워핑된 레퍼런스 프레임 부분과 제2 워핑된 레퍼런스 프레임 부분 사이의 모션 필드들을 사용하여 제1 프레임 부분의 픽셀들에 대한 모션 필드들을 업데이트하는 단계를 포함한다. 방법은 또한, 다수의 레벨들 중 최종 레벨에 대해: 최종의 제1 워핑된 레퍼런스 프레임 부분을 형성하기 위해 업데이트된 모션 필드들을 사용하여 제1 레퍼런스 프레임 부분을 제1 프레임 부분으로 워핑하는 단계, 최종의 제2 워핑된 레퍼런스 프레임 부분을 형성하기 위해 업데이트된 모션 필드들을 사용하여 제2 레퍼런스 프레임 부분을 제1 프레임 부분으로 워핑하는 단계, 및 광흐름 레퍼런스 프레임 부분을 형성하기 위해 최종의 제1 워핑된 레퍼런스 프레임 부분과 제2 워핑된 레퍼런스 프레임 부분을 블렌딩하는 단계를 포함한다. [0006] Another apparatus according to one embodiment of the invention also includes a non-transitory storage medium or memory and a processor. The medium includes instructions executable by a processor to perform a method, the method comprising: initializing motion fields for pixels of a first frame portion at a first processing level for light flow estimation, the first processing level being Indicating a downscaled motion within the first frame portion and including one of a plurality of levels—a first reference frame portion from the video sequence and a first reference frame portion of the video sequence Generating a lightflow reference frame portion for inter prediction of a block of frames, and for each of the plurality of levels, a first reference frame using motion fields to form a first warped reference frame portion; Warping the portion to the first frame portion, forming a second warped reference frame portion Warping the second reference frame portion to the first frame portion using motion fields to estimate motion fields between the first warped reference frame portion and the second warped reference frame portion using light flow estimation. And updating the motion fields for the pixels of the first frame portion using the motion fields between the first warped reference frame portion and the second warped reference frame portion. The method also includes: for the last of the plurality of levels: warping the first reference frame portion to the first frame portion using the updated motion fields to form the final first warped reference frame portion, the final Warping the second reference frame portion to the first frame portion using the updated motion fields to form a second warped reference frame portion of the second warped reference frame portion, and a final first warped to form the lightflow reference frame portion. Blending the reference frame portion and the second warped reference frame portion.
[0007] 본 발명의 일 구현예에 따른 다른 장치는 또한 비일시적 저장 매체 또는 메모리 및 프로세서를 포함한다. 매체는 방법을 수행하기 위해 프로세서에 의해 실행 가능한 명령들을 포함하고, 방법은, 예측될 제1 프레임의 제1 프레임 부분을 결정하는 단계 ― 제1 프레임은 비디오 시퀀스 내에 있음 ― , 제1 프레임의 순방향 인터 예측을 위해 비디오 시퀀스로부터 제1 레퍼런스 프레임을 결정하는 단계, 제1 프레임의 역방향 인터 예측을 위해 비디오 시퀀스로부터 제2 레퍼런스 프레임을 결정하는 단계, 제1 레퍼런스 프레임 및 제2 레퍼런스 프레임을 사용하여 광흐름 추정을 수행함으로써, 제1 프레임 부분의 인터 예측을 위한 광흐름 레퍼런스 프레임 부분을 생성하는 단계, 및 광흐름 레퍼런스 프레임 부분을 사용하여 제1 프레임 부분에 대한 예측 프로세스를 수행하는 단계를 포함한다.[0007] Another apparatus according to one embodiment of the invention also includes a non-transitory storage medium or memory and a processor. The medium includes instructions executable by a processor to perform a method, the method comprising: determining a first frame portion of a first frame to be predicted, wherein the first frame is in a video sequence; Determining a first reference frame from the video sequence for inter prediction, determining a second reference frame from the video sequence for reverse inter prediction of the first frame, using the first reference frame and the second reference frame Generating a light flow reference frame portion for inter prediction of the first frame portion by performing flow estimation, and performing a prediction process for the first frame portion using the light flow reference frame portion.
[0008] 본 발명의 이들 및 다른 양태들이 이하의 실시예들의 상세한 설명, 첨부된 청구항들, 및 수반된 도면들에 개시되어 있다.[0008] These and other aspects of the invention are disclosed in the following detailed description of the embodiments, the appended claims, and the accompanying drawings.
[0009]
본 명세서의 설명은 아래에 기재된 첨부 도면들을 참조하며, 달리 언급되지 않는 한 여러 도면들에 걸쳐 동일 참조 번호는 동일 부분을 지칭한다.
[0010]
도 1은 비디오 인코딩 및 디코딩 시스템의 개략도이다.
[0011]
도 2는 송신 스테이션 또는 수신 스테이션을 구현할 수 있는 컴퓨팅 디바이스의 일례의 블록도이다.
[0012]
도 3은 인코딩되고 후속적으로 디코딩될 전형적인 비디오 스트림의 다이어그램이다.
[0013]
도 4는 본 발명의 구현예들에 따른 인코더의 블록도이다.
[0014]
도 5는 본 발명의 구현예들에 따른 디코더의 블록도이다.
[0015]
도 6은 레퍼런스 프레임 버퍼의 일례의 블록도이다.
[0016]
도 7은 비디오 시퀀스의 디스플레이 순서의 프레임들의 그룹의 다이어그램이다.
[0017]
도 8은 도 7의 프레임들의 그룹에 대한 코딩 순서의 일례의 다이어그램이다.
[0018]
도 9는 본 명세서의 교시들에 따른 모션 필드(motion field)의 선형 투영을 설명하는데 사용되는 다이어그램이다.
[0019]
도 10은 광흐름 추정을 사용하여 생성된 레퍼런스 프레임의 적어도 일부를 사용하는 비디오 프레임의 모션 보상 예측을 위한 프로세스의 흐름도이다.
[0020]
도 11은 광흐름 레퍼런스 프레임 부분을 생성하기 위한 프로세스의 흐름도이다.
[0021]
도 12는 광흐름 레퍼런스 프레임 부분을 생성하기 위한 다른 프로세스의 흐름도이다.
[0022]
도 13은 도 11과 도 12의 프로세스들을 예시하는 다이어그램이다.
[0023]
도 14는 객체 폐색(object occlusion)을 예시하는 다이어그램이다.
[0024]
도 15는 디코더를 최적화하기 위한 기술을 도시하는 다이어그램.The description herein refers to the accompanying drawings described below, wherein like reference numerals refer to like parts throughout the various figures unless otherwise noted.
1 is a schematic diagram of a video encoding and decoding system.
2 is a block diagram of an example of a computing device that may implement a transmitting station or a receiving station.
3 is a diagram of a typical video stream to be encoded and subsequently decoded.
4 is a block diagram of an encoder in accordance with implementations of the invention.
5 is a block diagram of a decoder in accordance with implementations of the invention.
6 is a block diagram of an example of a reference frame buffer.
FIG. 7 is a diagram of a group of frames of a display order of a video sequence. FIG.
FIG. 8 is a diagram of an example of coding order for a group of frames of FIG. 7.
FIG. 9 is a diagram used to describe the linear projection of a motion field in accordance with the teachings herein.
10 is a flowchart of a process for motion compensated prediction of a video frame using at least a portion of a reference frame generated using light flow estimation.
11 is a flowchart of a process for generating a lightflow reference frame portion.
12 is a flowchart of another process for generating a lightflow reference frame portion.
FIG. 13 is a diagram illustrating the processes of FIGS. 11 and 12.
FIG. 14 is a diagram illustrating object occlusion. FIG.
FIG. 15 is a diagram illustrating a technique for optimizing a decoder. FIG.
[0025] 비디오 스트림은 비디오 스트림을 전송 또는 저장하는데 필요한 대역폭을 감소시키기 위해 다양한 기술들에 의해 압축될 수 있다. 비디오 스트림은 압축을 수반하는 비트스트림으로 인코딩될 수 있고, 이는 그리고 나서 비디오 스트림을 디코딩 또는 압축 해제하여 이를 시청(viewing) 또는 추가 처리를 위해 준비할 수 있는 디코더로 전송된다. 비디오 스트림의 압축은 종종 공간 및/또는 모션 보상 예측을 통한 비디오 신호들의 공간 및 시간 상관(spatial and temporal correlation)을 이용한다. 인터 예측(inter-prediction)은 예를 들면, 이전에 인코딩 및 디코딩된 픽셀들을 사용하여 인코딩될 현재 블록과 유사한 블록(예측 블록이라고도 함)을 생성하기 위해 하나 이상의 모션 벡터들을 사용한다. 모션 벡터(들) 및 두 블록들 사이의 차(差)를 인코딩함으로써, 인코딩된 신호를 수신하는 디코더는 현재 블록을 재생성할 수 있다. 인터 예측은 모션 보상 예측으로도 지칭될 수 있다.[0025] The video stream may be compressed by various techniques to reduce the bandwidth required to transmit or store the video stream. The video stream can be encoded into a bitstream that involves compression, which is then sent to a decoder that can decode or decompress the video stream and prepare it for viewing or further processing. Compression of video streams often uses spatial and temporal correlation of video signals through spatial and / or motion compensated prediction. Inter-prediction uses one or more motion vectors to generate, for example, a block (also called a prediction block) similar to the current block to be encoded using previously encoded and decoded pixels. By encoding the motion vector (s) and the difference between the two blocks, the decoder receiving the encoded signal can regenerate the current block. Inter prediction may also be referred to as motion compensated prediction.
[0026] 인터 예측 프로세스에서 예측 블록을 생성하는데 사용된 각각의 모션 벡터는 현재 프레임 이외의 프레임, 즉 레퍼런스 프레임을 참조할 수 있다. 레퍼런스 프레임들은 비디오 스트림의 시퀀스에서 현재 프레임의 앞 또는 뒤에 위치될 수 있으며, 레퍼런스 프레임으로 사용되기 전에 재구성된 프레임들일 수 있다. 몇몇 경우들에서는, 비디오 시퀀스의 현재 프레임의 블록들을 인코딩 또는 디코딩하는데 사용되는 3 개의 레퍼런스 프레임들이 있을 수 있다. 하나는 골든 프레임으로 지칭될 수 있는 프레임이다. 다른 하나는 가장 최근에 인코딩 또는 디코딩된 프레임이다. 마지막 것은 시퀀스에서는 하나 이상의 프레임들 이전에 인코딩 또는 디코딩되지만 출력 디스플레이 순서에서는 이들 프레임들 이후에 디스플레이되는 대체 레퍼런스 프레임이다. 이러한 방식으로, 대체 레퍼런스 프레임은 역방향 예측에 사용 가능한 레퍼런스 프레임이다. 하나 이상의 순방향 및/또는 역방향 레퍼런스 프레임들이 블록을 인코딩 또는 디코딩하는데 사용될 수 있다. 현재 프레임 내에서 블록을 인코딩 또는 디코딩하는데 사용될 때 레퍼런스 프레임의 유효성은 결과적인 신호대 잡음비 또는 레이트-왜곡(rate-distortion)의 다른 측정치들에 기초하여 측정될 수 있다.[0026] Each motion vector used to generate the predictive block in the inter prediction process may refer to a frame other than the current frame, that is, a reference frame. The reference frames may be located before or after the current frame in the sequence of the video stream, and may be frames reconstructed before being used as the reference frame. In some cases, there may be three reference frames used to encode or decode blocks of the current frame of the video sequence. One is a frame, which may be referred to as a golden frame. The other is the most recently encoded or decoded frame. The last is an alternate reference frame that is encoded or decoded before one or more frames in the sequence but displayed after these frames in the output display order. In this way, the replacement reference frame is a reference frame usable for backward prediction. One or more forward and / or backward reference frames may be used to encode or decode the block. When used to encode or decode a block within the current frame, the validity of the reference frame may be measured based on the resulting signal-to-noise ratio or other measurements of rate-distortion.
[0027] 이 기술에서는, 예측 블록들을 형성하는 픽셀들이 이용 가능한 레퍼런스 프레임들 중 하나 이상으로부터 직접 획득된다. 레퍼런스 픽셀 블록들 또는 그 선형 조합들은 현재 프레임에서 주어진 코딩 블록의 예측에 사용된다. 이 직접적인 블록 기반의 예측은 레퍼런스 프레임들로부터 이용 가능한 진정한 모션 활동을 캡처하지 않는다. 이러한 이유로, 모션 보상 예측 정확도가 저하될 수 있다.[0027] In this technique, the pixels that form the predictive blocks are obtained directly from one or more of the available reference frames. Reference pixel blocks or their linear combinations are used for prediction of a given coding block in the current frame. This direct block based prediction does not capture the true motion activity available from the reference frames. For this reason, motion compensation prediction accuracy may be degraded.
[0028] 이용 가능한 양방향 레퍼런스 프레임들(예를 들면, 하나 이상의 순방향 및 하나 이상의 역방향 레퍼런스 프레임들)로부터의 모션 정보를 보다 온전히 활용하기 위해, 본 명세서의 교시들의 구현예들은 비디오 신호에서의 진정한 모션 활동들을 추정하기 위해 광흐름에 의해 계산된 픽셀당 모션 필드(per-pixel motion field)를 사용하는 현재 코딩 프레임 부분들과 병치된 레퍼런스 프레임 부분들을 기술한다. 레퍼런스 프레임들로부터 직접 결정되는 종래의 블록 기반의 모션 보상 예측의 능력을 넘어서는 복잡한 비병진(non-translational) 모션 활동의 추적을 가능케 하는 레퍼런스 프레임 부분들이 보간된다. 이러한 레퍼런스 프레임 부분들의 사용은 예측 품질을 향상시킬 수 있다. 본 명세서에 사용되는, 프레임 부분은 블록, 슬라이스, 또는 전체 프레임과 같은 프레임 중 일부 또는 모두를 지칭한다. 하나의 프레임의 프레임 부분은 이 프레임 부분과 다른 프레임의 프레임 부분이 동일한 치수들을 갖고 각각의 프레임의 치수들 내에서 동일한 픽셀 위치들에 있으면 다른 프레임의 프레임 부분과 병치된다.[0028] To more fully utilize the motion information from the available bidirectional reference frames (eg, one or more forward and one or more reverse reference frames), implementations of the teachings herein estimates true motion activities in a video signal. To illustrate the reference frame portions collocated with current coding frame portions using a per-pixel motion field calculated by the light flow. Reference frame portions are interpolated that allow tracking of complex non-translational motion activity beyond the ability of conventional block-based motion compensated prediction determined directly from reference frames. Use of such reference frame portions can improve prediction quality. As used herein, a frame portion refers to some or all of a frame, such as a block, slice, or entire frame. The frame portion of one frame is juxtaposed with the frame portion of another frame if this frame portion and the frame portion of another frame have the same dimensions and are at the same pixel positions within the dimensions of each frame.
[0029] 비디오 압축 및 재구성에 사용하기 위해 레퍼런스 프레임 부분들을 보간하기 위해 광흐름 추정을 사용하는 것에 대한 추가 상세 내용은 본 명세서의 교시들이 구현될 수 있는 시스템에 대한 최초 참조와 함께 본 명세서에서 설명된다.[0029] Further details on using light flow estimation to interpolate reference frame portions for use in video compression and reconstruction are described herein with an initial reference to a system in which the teachings herein can be implemented.
[0030]
도 1은 비디오 인코딩 및 디코딩 시스템(100)의 개략도이다. 송신 스테이션(102)은 예를 들면, 도 2에 기술된 것과 같은 하드웨어의 내부 구성을 갖는 컴퓨터일 수 있다. 하지만, 송신 스테이션(102)의 다른 적절한 구현예들도 가능하다. 예를 들어, 송신 스테이션(102)의 처리는 다수의 디바이스들 간에 분산될 수 있다.[0030]
1 is a schematic diagram of a video encoding and decoding system 100. The transmitting
[0031]
네트워크(104)는 비디오 스트림의 인코딩 및 디코딩을 위해 송신 스테이션(102)과 수신 스테이션(106)을 연결할 수 있다. 구체적으로, 비디오 스트림은 송신 스테이션(102)에서 인코딩될 수 있고 인코딩된 비디오 스트림은 수신 스테이션(106)에서 디코딩될 수 있다. 네트워크(104)는 예를 들면, 인터넷일 수 있다. 네트워크(104)는 또한 근거리 통신망(local area network: LAN), 광역 통신망(wide area network: WAN), 가상 사설망(virtual private network: VPN), 셀룰러 전화 네트워크, 또는 이 예에서는 송신 스테이션(102)으로부터 수신 스테이션(106)으로 비디오 스트림을 전송하는 임의의 다른 수단일 수도 있다.[0031]
The
[0032]
수신 스테이션(106)은 일례에서, 도 2에 기술된 것과 같은 하드웨어의 내부 구성을 갖는 컴퓨터일 수 있다. 하지만, 수신 스테이션(106)의 다른 적절한 구현예들도 가능하다. 예를 들어, 수신 스테이션(106)의 처리는 다수의 디바이스들 간에 분산될 수 있다.[0032]
Receiving
[0033]
비디오 인코딩 및 디코딩 시스템(100)의 다른 구현예들도 가능하다. 예를 들어, 하나의 구현예는 네트워크(104)를 생략할 수 있다. 다른 구현예에서, 비디오 스트림은 인코딩된 후 나중에 수신 스테이션(106) 또는 비일시적 저장 매체 또는 메모리를 갖는 임의의 다른 디바이스로 전송하기 위해 저장될 수 있다. 일 구현예에서, 수신 스테이션(106)은 (예를 들면, 네트워크(104), 컴퓨터 버스, 및/또는 소정의 통신 경로를 통해) 인코딩된 비디오 스트림을 수신하고 나중에 디코딩하기 위해 비디오 스트림을 저장한다. 예시적인 구현예에서, 네트워크(104)를 통해 인코딩된 비디오의 전송을 위해 실시간 전송 프로토콜(RTP)이 사용된다. 다른 구현예에서는, RTP 이외의 전송 프로토콜, 예를 들면, HTTP(Hypertext Transfer Protocol) 기반의 비디오 스트리밍 프로토콜이 사용될 수도 있다.[0033]
Other implementations of the video encoding and decoding system 100 are possible. For example, one implementation may omit the
[0034]
화상 회의 시스템에 사용될 때, 예를 들면, 송신 스테이션(102) 및/또는 수신 스테이션(106)은 후술하는 바와 같이 비디오 스트림을 인코딩 및 디코딩하는 능력을 포함할 수 있다. 예를 들어, 수신 스테이션(106)은 화상 회의 서버(예를 들면, 송신 스테이션(102))로부터 인코딩된 비디오 비트스트림을 수신하여 디코딩 및 시청하며 또한 그 자신의 비디오 비트스트림을 인코딩하여 다른 참가자들에 의한 디코딩 및 시청을 위해 화상 회의 서버로 전송하는 화상 회의 참가자일 수 있다.[0034]
When used in a video conferencing system, for example, the transmitting
[0035]
도 2는 송신 스테이션 또는 수신 스테이션을 구현할 수 있는 컴퓨팅 디바이스(200)의 일례의 블록도이다. 예를 들면, 컴퓨팅 디바이스(200)는 도 1의 송신 스테이션(102)과 수신 스테이션(106) 중 어느 하나 또는 양자 모두를 구현할 수 있다. 컴퓨팅 디바이스(200)는 다수의 컴퓨팅 디바이스들을 포함하는 컴퓨팅 시스템의 형태, 또는 하나의 컴퓨팅 디바이스의 형태, 예를 들면, 휴대 전화, 태블릿 컴퓨터, 랩탑 컴퓨터, 노트북 컴퓨터, 데스크탑 컴퓨터 등일 수 있다.[0035]
2 is a block diagram of an example of a
[0036]
컴퓨팅 디바이스(200) 내의 CPU(202)는 중앙 처리 장치일 수 있다. 대안적으로, CPU(202)는 현재 존재하거나 앞으로 개발되는 정보를 조작 또는 처리할 수 있는 임의의 다른 유형의 디바이스 또는 다수의 디바이스들일 수 있다. 개시된 구현예들은 도시된 바와 같이 하나의 프로세서, 예를 들면, CPU(202)로 실시될 수도 있으나, 2 개 이상의 프로세서를 사용하면 속도 및 효율에 있어서 이점이 달성될 수 있다.[0036]
[0037]
컴퓨팅 디바이스(200)의 메모리(204)는 구현예에서 읽기 전용 메모리(ROM) 디바이스 또는 랜덤 액세스 메모리(RAM) 디바이스일 수 있다. 임의의 다른 적합한 유형의 스토리지 디바이스 또는 비일시적 저장 매체가 메모리(204)로서 사용될 수도 있다. 메모리(204)는 버스(212)를 사용하여 CPU(202)에 의해 액세스되는 코드 및 데이터(206)를 포함할 수 있다. 메모리(204)는 운영 체제(OS)(208)와 애플리케이션 프로그램들(210)을 더 포함할 수 있으며, 애플리케이션 프로그램들(210)은 CPU(202)가 본 명세서에 기술된 방법들을 수행할 수 있게 하는 적어도 하나의 프로그램을 포함한다. 예를 들면, 애플리케이션 프로그램들(210)은 애플리케이션들 1 내지 N을 포함할 수 있으며, 애플리케이션들 1 내지 N은 본 명세서에 기술된 방법들을 수행하는 비디오 코딩 애플리케이션을 더 포함한다. 컴퓨팅 디바이스(200)는 예를 들면, 모바일 컴퓨팅 디바이스와 함께 사용되는 메모리 카드일 수 있는 2 차 스토리지(214)를 또한 포함할 수 있다. 비디오 통신 세션들은 상당한 양의 정보를 포함할 수 있기 때문에, 이들은 2 차 스토리지(214)에 전체적으로 또는 부분적으로 저장될 수 있고 처리를 위해 필요에 따라 메모리(204)에 로딩될 수 있다.[0037]
The
[0038]
컴퓨팅 디바이스(200)는 또한 디스플레이(218)와 같은, 하나 이상의 출력 디바이스들을 포함할 수 있다. 디스플레이(218)는 일례에서, 터치 입력들을 감지하도록 작동 가능한 터치 감지 요소와 디스플레이를 결합한 터치 감지 디스플레이일 수 있다. 디스플레이(218)는 버스(212)를 통해 CPU(202)에 결합될 수 있다. 사용자가 컴퓨팅 디바이스(200)를 프로그래밍하거나 달리 사용할 수 있게 하는 다른 출력 디바이스들이 디스플레이(218)에 추가적으로 또는 대체로서 제공될 수 있다. 출력 디바이스가 디스플레이이거나 디스플레이를 포함하는 경우, 디스플레이는 액정 디스플레이(LCD), 음극선관(CRT) 디스플레이, 또는 유기 LED(OLED) 디스플레이와 같은 발광 다이오드(LED) 디스플레이에 의한 것을 포함하여, 다양한 방식들로 구현될 수 있다.[0038]
[0039]
컴퓨팅 디바이스(200)는 이미지 감지 디바이스(220), 예를 들면 카메라, 또는 컴퓨팅 디바이스(200)를 조작하고 있는 사용자의 이미지와 같은 이미지를 감지할 수 있는 현재 존재하거나 앞으로 개발되는 임의의 다른 이미지 감지 디바이스(220)를 또한 포함하거나 이와 통신할 수 있다. 이미지 감지 디바이스(220)는 컴퓨팅 디바이스(200)를 조작하는 사용자 쪽으로 지향되도록 위치될 수 있다. 일례에서, 이미지 감지 디바이스(220)의 위치와 광축(optical axis)은 시야가 디스플레이(218)에 바로 인접하고 디스플레이(218)가 보이는 영역을 포함하도록 구성될 수 있다.[0039]
[0040]
컴퓨팅 디바이스(200)는 사운드 감지 디바이스(222), 예를 들면 마이크로폰, 또는 컴퓨팅 디바이스(200) 근처의 사운드를 감지할 수 있는 현재 존재하거나 앞으로 개발되는 임의의 다른 사운드 감지 디바이스를 또한 포함하거나 이와 통신할 수 있다. 사운드 감지 디바이스(222)는 컴퓨팅 디바이스(200)를 조작하는 사용자 쪽으로 지향되도록 위치될 수 있고, 사용자가 컴퓨팅 디바이스(200)를 조작하고 있는 동안 사용자가 내는 사운드, 예를 들면 음성 또는 다른 발성들(utterances)을 수신하도록 구성될 수 있다.[0040]
[0041]
도 2는 컴퓨팅 디바이스(200)의 CPU(202) 및 메모리(204)가 하나의 유닛으로 통합된 것으로 도시하고 있으나, 다른 구성들이 이용될 수도 있다. CPU(202)의 동작들은 직접 또는 로컬 영역 또는 다른 네트워크에 걸쳐 결합될 수 있는 다수의 기계(개별 기계들은 하나 이상의 프로세서들을 가질 수 있음)에 걸쳐서 분산될 수 있다. 메모리(204)는 네트워크 기반 메모리 또는 컴퓨팅 디바이스(200)의 동작들을 수행하는 다수의 기계들의 메모리와 같이 다수의 기계들에 걸쳐 분산될 수 있다. 여기서는 하나의 버스로 도시되어 있으나, 컴퓨팅 디바이스(200)의 버스(212)는 다수의 버스들로 구성될 수도 있다. 또한, 2 차 스토리지(214)는 컴퓨팅 디바이스(200)의 다른 컴포넌트들에 직접 결합될 수 있거나 네트워크를 통해 액세스될 수 있고 메모리 카드와 같은 통합 유닛 또는 다수의 메모리 카드들과 같은 다수의 유닛들을 포함할 수 있다. 컴퓨팅 디바이스(200)는 그래서 다양한 구성들로 구현될 수 있다.[0041]
2 illustrates the
[0042]
도 3은 인코딩되고 후속적으로 디코딩될 비디오 스트림(300)의 일례의 다이어그램이다. 비디오 스트림(300)은 비디오 시퀀스(302)를 포함한다. 다음 레벨에서, 비디오 시퀀스(302)는 다수의 인접 프레임들(304)을 포함한다. 3 개의 프레임들이 인접 프레임들(304)로서 도시되어 있으나, 비디오 시퀀스(302)는 임의의 개수의 인접 프레임들(304)을 포함할 수 있다. 그 후, 인접 프레임들(304)은 개별 프레임들, 예를 들면 프레임(306)으로 더욱 세분될 수 있다. 다음 레벨에서, 프레임(306)은 일련의 평면들 또는 세그먼트들(308)로 분할될 수 있다. 세그먼트들(308)은 예를 들면, 병렬 처리를 가능케 하는 프레임들의 부분집합(서브세트)일 수 있다. 세그먼트들(308)은 또한 비디오 데이터를 별개의 컬러들로 분리할 수 있는 프레임들의 부분집합일 수 있다. 예를 들어, 컬러 비디오 데이터의 프레임(306)은 휘도 평면과 2 개의 색차 평면들을 포함할 수 있다. 세그먼트들(308)은 상이한 해상도들로 샘플링될 수 있다.[0042]
3 is a diagram of an example of a
[0043]
프레임(306)이 세그먼트들(308)로 분할되는지 여부에 관계없이, 프레임(306)은 예를 들면, 프레임(306)의 16x16 픽셀들에 대응하는 데이터를 포함할 수 있는 블록들(310)로 더욱 세분될 수 있다. 블록들(310)은 픽셀 데이터의 하나 이상의 세그먼트들(308)로부터의 데이터를 포함하도록 또한 배열될 수 있다. 블록들(310)은 또한 4x4 픽셀들, 8x8 픽셀들, 16x8 픽셀들, 8x16 픽셀들, 16x16 픽셀들, 또는 그 이상과 같은 임의의 다른 적절한 크기일 수 있다. 달리 언급되지 않는 한, 블록 및 매크로블록이라는 용어들은 본 명세서에서 상호 교환적으로 사용된다.[0043]
Regardless of whether
[0044]
도 4는 본 발명의 구현예들에 따른 인코더(400)의 블록도이다. 인코더(400)는 전술한 바와 같이, 예컨대 메모리, 예를 들면 메모리(204)에 저장된 컴퓨터 소프트웨어 프로그램을 제공함으로써, 송신 스테이션(102)에서 구현될 수 있다. 컴퓨터 소프트웨어 프로그램은, CPU(202)와 같은 프로세서에 의해 실행될 때 송신 스테이션(102)이 도 4에 기술된 방식으로 비디오 데이터를 인코딩하게 하는 기계 명령들을 포함할 수 있다. 인코더(400)는 또한, 예를 들면 송신 스테이션(102)에 포함된 특수 하드웨어로서 구현될 수도 있다. 하나의 특히 바람직한 구현예에서, 인코더(400)는 하드웨어 인코더이다.[0044]
4 is a block diagram of an
[0045]
인코더(400)는 비디오 스트림(300)을 입력으로 사용하여 인코딩되거나 압축된 비트스트림(420)을 생성하기 위해 (실선 연결 라인들로 도시된) 순방향 경로에서 다양한 기능들을 수행하기 위해 다음의 단계들을 갖는다: 인트라/인터 예측 단계(402), 변환 단계(404), 양자화 단계(406), 및 엔트로피 인코딩 단계(408). 인코더(400)는 장래 블록들(future blocks)의 인코딩을 위한 프레임을 재구성하기 위해 (점선 연결 라인들로 도시된) 재구성 경로를 또한 포함할 수 있다. 도 4에서, 인코더(400)는 재구성 경로에서 다양한 기능들을 수행하기 위해 다음의 단계들을 갖는다: 역양자화 단계(410), 역변환 단계(412), 재구성 단계(414) 및 루프 필터링 단계(416). 비디오 스트림(300)을 인코딩하기 위해 인코더(400)의 다른 구조적 변형들이 사용될 수도 있다.[0045]
[0046]
비디오 스트림(300)이 인코딩을 위해 제시될 때, 프레임(306)과 같은 각각의 프레임들(304)은 블록들의 단위들로 처리될 수 있다. 인트라/인터 예측 단계(402)에서, 각각의 블록들은 인트라-프레임 예측(인트라 예측이라고도 함) 또는 인터-프레임 예측(인터 예측이라고도 함)을 사용하여 인코딩될 수 있다. 어떤 경우에도, 예측 블록이 형성될 수 있다. 인트라 예측의 경우, 이전에 인코딩 및 재구성된 현재 프레임의 샘플들로부터 예측 블록이 형성될 수 있다. 인터 예측의 경우, 하나 이상의 이전에 구성된 레퍼런스 프레임들의 샘플들로부터 예측 블록이 형성될 수 있다. 블록들의 그룹들에 대한 레퍼런스 프레임들의 지정은 아래에서 더욱 상세히 논의된다.[0046]
When
[0047]
다음으로, 여전히 도 4를 참조하면, 잔차 블록(또한 잔차(residual)라고도 함)을 생성하기 위해 예측 블록은 인트라/인터 예측 단계(402)에서 현재 블록으로부터 차감될 수 있다. 변환 단계(404)는 예를 들면, 블록 기반 변환들을 사용하여 주파수 영역에서 잔차를 변환 계수들로 변환한다. 양자화 단계(406)는 양자화기 값(quantizer value) 또는 양자화 레벨을 사용하여 변환 계수들을 양자화 변환 계수들로 지칭되는 이산 양자 값들(discrete quantum values)로 변환한다. 예를 들면, 변환 계수들은 양자화기 값으로 나뉘어지거나 트렁케이션(truncation)될 수 있다. 양자화된 변환 계수들은 그리고 나서 엔트로피 인코딩 단계(408)에 의해 엔트로피 인코딩된다. 엔트로피 인코딩된 계수들은 그 다음에, 예를 들면, 사용된 예측 유형, 변환 유형, 모션 벡터들, 및 양자화기 값을 포함할 수 있는 블록을 디코딩하는데 사용된 다른 정보와 함께, 압축된 비트스트림(420)으로 출력된다. 압축된 비트스트림(420)은 가변 길이 코딩(VLC) 또는 산술 코딩과 같은 다양한 기술들을 사용하여 포맷될 수 있다. 압축된 비트스트림(420)은 인코딩된 비디오 스트림 또는 인코딩된 비디오 비트스트림으로도 또한 지칭될 수 있으며, 그래서 이들 용어들은 본 명세서에서 상호 교환적으로 사용될 것이다.[0047]
Next, still referring to FIG. 4, the prediction block may be subtracted from the current block in an intra /
[0048]
(점선 연결 라인들로 도시된) 도 4의 재구성 경로는 인코더(400) 및 디코더(500)(후술됨)가 압축된 비트스트림(420)을 디코딩하기 위해 동일한 레퍼런스 프레임들을 사용하는 것을 보장하기 위해 사용될 수 있다. 재구성 경로는 미분 잔차 블록(미분 잔차(derivative residual)라고도 함)을 생성하기 위해 양자화된 변환 계수들을 역양자화 단계(410)에서 역양자화하는 것 및 역양자화된 변환 계수들을 역변환 단계(412)에서 역변환하는 것을 포함하여, 아래에서 보다 상세히 논의되는 디코딩 프로세스 중에 발생하는 기능들과 유사한 기능들을 수행한다. 재구성 단계(414)에서, 인트라/인터 예측 단계(402)에서 예측된 예측 블록은 미분 잔차에 추가되어 재구성된 블록을 생성할 수 있다. 블로킹 아티팩트들(blocking artifacts)과 같은 왜곡을 감소시키기 위해 루프 필터링 단계(416)가 재구성된 블록에 적용될 수 있다.[0048]
The reconstruction path of FIG. 4 (shown with dashed connection lines) to ensure that the
[0049]
인코더(400)의 다른 변형들이 압축된 비트스트림(420)을 인코딩하는데 사용될 수 있다. 예를 들면, 비변환 기반 인코더가 특정 블록들 또는 프레임들에 대한 변환 단계(404)없이 직접 잔차 신호를 양자화할 수 있다. 다른 구현예에서, 인코더는 양자화 단계(406) 및 역양자화 단계(410)를 공통 단계로 결합할 수 있다.[0049]
Other variations of
[0050]
도 5는 본 발명의 구현예들에 따른 디코더(500)의 블록도이다. 디코더(500)는 예를 들면, 메모리(204)에 저장된 컴퓨터 소프트웨어 프로그램을 제공함으로써 수신 스테이션(106)에서 구현될 수 있다. 컴퓨터 소프트웨어 프로그램은 CPU(202)와 같은 프로세서에 의해 실행될 때 수신 스테이션(106)이 도 5에 기술된 방식으로 비디오 데이터를 디코딩하게 하는 기계 명령들을 포함할 수 있다. 디코더(500)는 예를 들면, 송신 스테이션(102) 또는 수신 스테이션(106)에 포함된 하드웨어에서도 또한 구현될 수 있다.[0050]
5 is a block diagram of a
[0051]
디코더(500)는 위에서 논의된 인코더(400)의 재구성 경로와 유사하게, 일례에서 압축된 비트스트림(420)으로부터 출력 비디오 스트림(516)을 생성하기 위한 다양한 기능들을 수행하기 위해 다음의 단계들을 포함한다: 엔트로피 디코딩 단계(502), 역양자화 단계(504), 역변환 단계(506), 인트라/인터 예측 단계(508), 재구성 단계(510), 루프 필터링 단계(512), 및 디블로킹 필터링 단계(514). 압축된 비트스트림(420)을 디코딩하기 위해 디코더(500)의 다른 구조적 변형들이 사용될 수도 있다.[0051]
[0052]
압축된 비트스트림(420)이 디코딩을 위해 제시될 때, 압축된 비트스트림(420) 내의 데이터 요소들은 엔트로피 디코딩 단계(502)에 의해 디코딩되어 한 세트의 양자화된 변환 계수들을 생성할 수 있다. 역양자화 단계(504)는 (예를 들면, 양자화된 변환 계수들에 양자화기 값을 곱함으로써) 양자화된 변환 계수들을 역양자화하고, 역변환 단계(506)는 역양자화된 변환 계수들을 역변환하여 인코더(400)에서의 역변환 단계(412)에 의해 생성된 것과 동일할 수 있는 미분 잔차를 생성한다. 압축된 비트스트림(420)으로부터 디코딩된 헤더 정보를 사용하여, 디코더(500)는 인트라/인터 예측 단계(508)를 사용하여 인코더(400)에서, 예를 들면 인트라/인터 예측 단계(402)에서 생성된 것과 동일한 예측 블록을 생성할 수 있다. 재구성 단계(510)에서, 예측 블록은 미분 잔차에 추가되어 재구성된 블록을 생성할 수 있다. 루프 필터링 단계(512)는 블록킹 아티팩트들을 저감하기 위해 재구성된 블록에 적용될 수 있다.[0052]
When the
[0053]
재구성된 블록에는 다른 필터링이 적용될 수도 있다. 이 예에서는, 블로킹 왜곡을 저감하기 위해 디블로킹 필터링 단계(514)가 재구성된 블록에 적용되며, 결과는 출력 비디오 스트림(516)으로 출력된다. 출력 비디오 스트림(516)은 디코딩된 비디오 스트림으로도 또한 지칭될 수 있으며, 그래서 이들 용어들은 본 명세서에서 상호 교환적으로 사용될 것이다. 디코더(500)의 다른 변형들이 압축된 비트스트림(420)을 디코딩하는데 사용될 수도 있다. 예를 들어, 디코더(500)는 디블로킹 필터링 단계(514)없이도 출력 비디오 스트림(516)을 생성할 수 있다.[0053]
Other filtering may be applied to the reconstructed block. In this example,
[0054]
도 6은 레퍼런스 프레임 버퍼(600)의 일례의 블록도이다. 레퍼런스 프레임 버퍼(600)는 비디오 시퀀스의 프레임들의 블록들을 인코딩 또는 디코딩하는데 사용되는 레퍼런스 프레임들을 저장한다. 이 예에서, 레퍼런스 프레임 버퍼(600)는 마지막 프레임 LAST_FRAME(602), 골든 프레임 GOLDEN_FRAME (604), 및 대체 레퍼런스 프레임 ALTREF_FRAME(606)으로 식별되는 레퍼런스 프레임들을 포함한다. 레퍼런스 프레임의 프레임 헤더는 레퍼런스 프레임이 저장된 레퍼런스 프레임 버퍼 내의 위치에 대한 가상 인덱스를 포함할 수 있다. 레퍼런스 프레임 매핑은 레퍼런스 프레임의 가상 인덱스를 레퍼런스 프레임이 저장된 메모리의 물리적 인덱스에 매핑할 수 있다. 2 개의 레퍼런스 프레임들이 동일한 프레임인 경우, 이들 레퍼런스 프레임들은 상이한 가상 인덱스들을 갖는다 하더라도 동일한 물리적 인덱스를 갖게 된다. 사용된 레퍼런스 프레임 버퍼(600) 내의 레퍼런스 위치들의 개수, 유형들, 및 명칭들 단지 예들일 뿐이다.[0054]
6 is a block diagram of an example of a
[0055]
레퍼런스 프레임 버퍼(600)에 저장된 레퍼런스 프레임들은 인코딩 또는 디코딩될 프레임들의 블록들을 예측하기 위한 모션 벡터들을 식별하는데 사용될 수 있다. 현재 프레임의 현재 블록을 예측하기 위해 사용되는 예측의 유형에 따라 상이한 레퍼런스 프레임들이 사용될 수 있다. 예를 들면, 양방향 예측(bi-prediction)에서, 현재 프레임의 블록들은 LAST_FRAME(602) 또는 GOLDEN_FRAME(604)로서 저장된 프레임을 사용하여 순방향 예측될 수 있고, ALTREF_FRAME(606)로서 저장된 프레임을 사용하여 역방향 예측될 수 있다.[0055]
Reference frames stored in
[0056]
레퍼런스 프레임 버퍼(600) 내에 저장될 수 있는 유한 개수의 레퍼런스 프레임들이 있을 수 있다. 도 6에 도시된 바와 같이, 레퍼런스 프레임 버퍼(600)는 최대 8 개의 레퍼런스 프레임들을 저장할 수 있으며, 각각의 저장된 레퍼런스 프레임은 레퍼런스 프레임 버퍼의 상이한 가상 인덱스와 연관될 수 있다. 레퍼런스 프레임 버퍼(600)에서 8 개의 공간들 중 3 개가 LAST_FRAME(602), GOLDEN_FRAME(604), 및 ALTREF_FRAME(606)으로 지정된 프레임들에 의해 사용되지만, 5 개의 공간들은 다른 레퍼런스 프레임을 저장하기 위해 이용 가능한 상태로 유지된다. 예를 들면, 레퍼런스 프레임 버퍼(600)에서 하나 이상의 이용 가능한 공간들은 추가 레퍼런스 프레임들, 특히 본 명세서에 기술된 보간된 레퍼런스 프레임의 일부 또는 전부를 저장하는 데 사용될 수 있다. 레퍼런스 프레임 버퍼(600)는 최대 8 개의 레퍼런스 프레임들을 저장할 수 있는 것으로 도시되어 있으나, 레퍼런스 프레임 버퍼(600)의 다른 구현예들은 추가 또는 더 적은 수의 레퍼런스 프레임들을 저장할 수도 있다.[0056]
There may be a finite number of reference frames that can be stored in the
[0057] 몇몇 구현예들에서, ALTREF_FRAME(606)으로 지정된 대체 레퍼런스 프레임은 디스플레이 순서에서는 현재 프레임으로부터 멀리 있지만 그 디스플레이되는 것보다 더 일찍 인코딩 또는 디코딩되는 비디오 시퀀스의 프레임일 수 있다. 예를 들면, 대체 레퍼런스 프레임은 디스플레이 순서에서 현재 프레임 이후의 10 개, 12 개, 또는 그 이상(또는 미만) 프레임들일 수 있다. 추가의 대체 레퍼런스 프레임들은 디스플레이 순서에서 현재 프레임에 더 가까이 위치된 프레임들일 수 있다.[0057] In some implementations, the replacement reference frame designated as ALTREF_FRAME 606 can be a frame of a video sequence that is far from the current frame in display order but encoded or decoded earlier than that displayed. For example, the replacement reference frame may be ten, twelve, or more (or less) frames after the current frame in display order. Additional replacement reference frames may be frames located closer to the current frame in display order.
[0058] 대체 레퍼런스 프레임은 시퀀스 중의 프레임에 직접 대응하지 않을 수 있다. 대신에, 대체 레퍼런스 프레임은 필터링이 적용되거나, 함께 결합되거나, 또는 함께 결합될 뿐만 아니라 필터링된 프레임들 중 하나 이상을 사용하여 생성될 수도 있다. 대체 레퍼런스 프레임은 디스플레이되지 않을 수도 있다. 대신에, 대체 레퍼런스 프레임은 예측 프로세스에서만 사용할 목적으로 생성 및 전송되는 프레임 또는 프레임의 일부일 수 있다(즉, 디코딩된 시퀀스가 디스플레이될 때는 생략된다).[0058] The replacement reference frame may not correspond directly to a frame in the sequence. Instead, alternative reference frames may be applied using filtering, combining together, or combining together, as well as generated using one or more of the filtered frames. The replacement reference frame may not be displayed. Instead, the replacement reference frame may be part of a frame or frame that is generated and transmitted for use only in the prediction process (ie, it is omitted when the decoded sequence is displayed).
[0059]
도 7은 비디오 시퀀스의 디스플레이 순서에 있어서의 프레임들의 그룹의 다이어그램이다. 이 예에서, 프레임들의 그룹은 키 프레임(key frame) 또는 몇몇 경우들에서는 오버레이 프레임으로 지칭될 수 있는 프레임(700)이 선행되고, 8 개의 프레임(702-716)을 포함한다. 프레임(700) 내의 어떤 블록도 프레임들의 그룹의 레퍼런스 프레임들을 사용하여 인터 예측되지 않는다. 프레임(700)은 이 예에서 키(인트라 예측된 프레임이라고도 함)이며, 이는 프레임 내의 예측된 블록들이 인트라 예측을 사용해서만 예측되는 그 상태를 지칭한다. 하지만, 프레임(700)은 오버레이 프레임일 수도 있는데, 이는 이전 그룹의 프레임들의 재구성된 프레임일 수 있는 인터 예측된 프레임이다. 인터 예측된 프레임에서, 예측된 블록들 중 적어도 일부는 인터 예측을 사용하여 예측된다. 각각의 프레임들의 그룹을 형성하는 프레임들의 개수는 비디오의 공간/시간 특성 및 예를 들면, 랜덤 액세스 또는 에러 회복성(error resilience)을 위해 선택된 키 프레임 간격과 같은 다른 인코딩된 구성들에 따라 변할 수 있다.[0059]
7 is a diagram of a group of frames in the display order of a video sequence. In this example, the group of frames is preceded by a
[0060]
각 프레임들의 그룹의 코딩 순서는 디스플레이 순서와 다를 수 있다. 이는 비디오 시퀀스에서 현재 프레임의 뒤에 위치된 프레임이 현재 프레임을 인코딩하기 위한 레퍼런스 프레임으로 사용될 수 있게 한다. 디코더(500)와 같은 디코더는 공통의 그룹 코딩 구조를 인코더(400)와 같은 인코더와 공유할 수 있다. 그룹 코딩 구조는 그룹 내의 각각의 프레임들이 레퍼런스 버프(예를 들면, 마지막 프레임, 대체 레퍼런스 프레임 등)에서 행할 수 있는 상이한 역할들을 할당하며 그룹 내의 프레임들에 대한 코딩 순서를 정의하거나 나타낸다.[0060]
The coding order of a group of frames may be different from the display order. This allows a frame located after the current frame in the video sequence to be used as a reference frame for encoding the current frame. A decoder such as
[0061]
도 8은 도 7의 프레임들의 그룹에 대한 코딩 순서의 일례의 다이어그램이다. 도 8의 코딩 순서는, 그룹의 각각의 프레임에 대해 단일의 역방향 레퍼런스 프레임이 이용 가능한 제1 그룹 코딩 구조와 관련된다. 인코딩 및 디코딩 순서는 동일하기 때문에, 도 8에 도시된 순서는 본 명세서에서 일반적으로 코딩 순서로 지칭된다. 키 또는 오버레이 프레임(700)은 레퍼런스 프레임 버퍼(600)에서의 GOLDEN_FRAME(604)과 같이, 레퍼런스 프레임 버퍼 내의 골든 프레임으로 지정된다. 프레임(700)은 이 예에서는 인트라 예측되며, 그래서 레퍼런스 프레임을 필요로 하지 않지만, 이전 그룹으로부터 재구성된 프레임인 프레임(700)으로서 오버레이 프레임도 또한 현재 프레임들의 그룹의 레퍼런스 프레임을 사용하지 않는다. 그룹 내의 마지막 프레임(716)은 레퍼런스 프레임 버퍼(600) 내의 ALTREF_FRAME(606)과 같이, 레퍼런스 프레임 버퍼 내의 대체 레퍼런스 프레임으로 지정된다. 이 코딩 순서에서, 프레임(716)은 나머지 프레임들(702 내지 714) 각각에 대한 역방향 레퍼런스 프레임을 제공하기 위해 프레임(700) 다음에 디스플레이 순서를 벗어나서 코딩된다. 프레임(716)의 블록들을 코딩함에 있어서, 프레임(700)은 프레임(716)의 블록들에 대한 이용 가능한 레퍼런스 프레임 역할을 한다. 도 8은 프레임들의 그룹에 대한 코딩 순서의 일례일 뿐이다. 다른 그룹 코딩 구조들은 순방향 및/또는 역방향 예측을 위해 하나 이상의 상이한 또는 추가 프레임들을 지정할 수 있다.[0061]
8 is a diagram of an example coding order for the group of frames of FIG. 7. The coding order of FIG. 8 relates to a first group coding structure in which a single backward reference frame is available for each frame of the group. Since the encoding and decoding order is the same, the order shown in FIG. 8 is generally referred to herein as the coding order. The key or
[0062] 위에서 간략하게 언급된 바와 같이, 이용 가능한 레퍼런스 프레임 부분은 광흐름 추정을 사용하여 보간되는 레퍼런스 프레임 부분일 수 있다. 레퍼런스 프레임 부분은 예를 들면, 블록, 슬라이스, 또는 전체 프레임일 수 있다. 본 명세서에서 설명되는 바와 같이 프레임 레벨의 광흐름 추정이 수행될 때, 결과적인 레퍼런스 프레임은 그 치수들이 현재 프레임과 동일하기 때문에 본 명세서에서는 병치된(col-located) 레퍼런스 프레임으로 지칭된다. 이 보간된 레퍼런스 프레임은 본 명세서에서 광흐름 레퍼런스 프레임으로도 지칭될 수 있다.[0062] As briefly mentioned above, the available reference frame portion may be a reference frame portion that is interpolated using light flow estimation. The reference frame portion may be, for example, a block, a slice, or an entire frame. When frame level light flow estimation is performed as described herein, the resulting reference frame is referred to herein as a col-located reference frame because its dimensions are the same as the current frame. This interpolated reference frame may also be referred to herein as a lightflow reference frame.
[0063]
도 9는 본 명세서의 교시들에 따른 모션 필드의 선형 투영을 설명하기 위해 사용되는 다이어그램이다. 계층적 코딩 프레임워크 내에서, 현재 프레임의 광흐름(모션 필드라고도 함)은 현재 프레임의 전후에서 가장 가까운 이용 가능한 재구성된(예를 들면, 레퍼런스) 프레임을 사용하여 추정될 수 있다. 도 9에서, 레퍼런스 프레임 1은 현재 프레임(900)의 순방향 예측에 사용될 수 있는 레퍼런스 프레임인 반면, 레퍼런스 프레임 2는 현재 프레임(900)의 역방향 예측에 사용될 수 있는 레퍼런스 프레임이다. 예시를 위해 도 6 내지 도 8의 예를 이용하면, 현재 프레임(900)이 프레임(706)이면, 직전 또는 마지막 프레임(704)(예를 들면, LAST_FRAME(602)으로 레퍼런스 프레임 버퍼(600)에 저장된 재구성된 프레임)이 레퍼런스 프레임 1로 사용될 수 있는 한편, 프레임(716)(예를 들면, ALTREF_FRAME(606)으로 레퍼런스 프레임 버퍼(600)에 저장된 재구성된 프레임)은 레퍼런스 프레임 2로 사용될 수 있다.[0063]
9 is a diagram used to illustrate the linear projection of a motion field in accordance with the teachings herein. Within the hierarchical coding framework, the light flow of the current frame (also called the motion field) can be estimated using the closest available reconstructed (eg, reference) frame before and after the current frame. In FIG. 9,
[0064]
현재 및 레퍼런스 프레임들의 디스플레이 인덱스들을 알면, 모션 필드가 시간적으로 선형이라고 가정하면, 레퍼런스 프레임 1과 레퍼런스 프레임 2의 픽셀들 사이에서 현재 프레임(900)의 픽셀들로 모션 벡터들이 투영될 수 있다. 도 6 내지 도 8과 관련하여 설명된 간단한 예에서, 현재 프레임(900)에 대한 인덱스는 3이고, 레퍼런스 프레임 1에 대한 인덱스는 0이며, 레퍼런스 프레임 2에 대한 인덱스는 716이다. 도 9에는, 현재 프레임(900)의 픽셀(902)에 대한 투영된 모션 벡터(904)가 도시되어 있다. 설명에 있어서 이전 예를 이용하면, 도 7의 프레임들의 그룹의 디스플레이 인덱스들은 프레임(704)이 프레임(716)보다 프레임(706)에 시간적으로 더 가깝다는 것을 보여주게 된다. 따라서, 도 9에 도시된 단일의 모션 벡터(904)는 레퍼런스 프레임 2와 현재 프레임(900) 사이와는 다른 레퍼런스 프레임 1과 현재 프레임(900) 사이의 모션의 양을 나타낸다. 그럼에도 불구하고, 투영된 모션 필드(906)는 레퍼런스 프레임 1, 현재 프레임(900), 및 레퍼런스 프레임 2 사이에서 선형이다.[0064]
Knowing the display indices of the current and reference frames, assuming that the motion field is linear in time, motion vectors can be projected to the pixels of the
[0065]
가장 가까운 이용 가능한 재구성된 순방향 및 역방향 레퍼런스 프레임들을 선택하고 시간적으로 선형인 현재 프레임의 각각의 픽셀들에 대한 모션 필드를 가정하는 것은, 추가 정보를 전송함이 없이 광흐름 추정을 사용한 보간된 레퍼런스 프레임의 생성이 인코더 및 디코더 양자 모두에서 (예를 들면, 인트라/인터 예측 단계(402) 및 인트라/인터 예측 단계(508)에서) 수행될 수 있게 한다. 가장 근접한 이용 가능한 재구성된 레퍼런스 프레임들 대신에, 상이한 프레임들이 인코더와 디코더 사이에 선험적으로(a priori) 지정된 것으로 사용될 수 있는 것도 가능하다. 몇몇 구현예들에서는, 광흐름 추정에 사용되는 프레임들의 식별이 전송될 수 있다. 보간된 프레임의 생성은 아래에서 더 상세하게 논의된다.[0065]
Selecting the closest available reconstructed forward and reverse reference frames and assuming a motion field for each pixel of the current frame that is linear in time, is an interpolated reference frame using light flow estimation without transmitting additional information. The generation of may be performed at both the encoder and the decoder (eg, in the intra /
[0066]
도 10은 광흐름 추정을 사용하여 생성된 레퍼런스 프레임의 적어도 일부를 사용하는 비디오 시퀀스의 프레임의 모션 보상 예측을 위한 방법 또는 프로세스(1000)의 흐름도이다. 레퍼런스 프레임 부분은 예를 들면, 블록, 슬라이스, 또는 전체 레퍼런스 프레임일 수 있다. 광흐름 레퍼런스 프레임 부분은 본 명세서에서 병치된 레퍼런스 프레임 부분으로도 또한 지칭될 수도 있다. 프로세스(1000)는 예를 들면, 송신 스테이션(102) 또는 수신 스테이션(106)과 같은 컴퓨팅 디바이스들에 의해 실행될 수 있는 소프트웨어 프로그램으로 구현될 수 있다. 예를 들면, 소프트웨어 프로그램은 메모리(204) 또는 2 차 스토리지(214)와 같은 메모리에 저장될 수 있고 CPU(202)와 같은 프로세서에 의해 실행될 때 컴퓨팅 디바이스가 프로세스(1000)를 수행하게 할 수 있는 기계 판독 가능 명령들을 포함할 수 있다. 프로세스(1000)는 특수 하드웨어 또는 펌웨어를 사용하여 구현될 수 있다. 몇몇 컴퓨팅 디바이스들은 다수의 메모리들 또는 프로세서들을 가질 수 있고, 프로세스(1000)에 기술된 동작들은 다수의 프로세서들, 메모리들, 또는 양자 모두를 사용하여 분산될 수 있다.[0066]
10 is a flowchart of a method or
[0067] 1002에서, 예측될 현재 프레임이 결정된다. 프레임들은 도 8에 도시된 코딩 순서와 같은, 임의의 순서로 코딩될 수 있고 그래서 예측될 수 있다. 예측될 프레임들은 제1, 제2, 제3 등의 프레임으로도 또한 지칭될 수 있다. 제1, 제2 등의 라벨은 반드시 프레임들의 순서를 나타내는 것은 아니다. 대신에, 달리 언급되지 않는 한, 라벨은 본 명세서에서 하나의 현재 프레임을 다른 프레임과 구별하기 위해 사용된다. 인코더에서, 프레임은 래스터 스캔(raster scan) 순서와 같은, 블록 코딩 순서로 블록들의 단위들로 처리될 수 있다. 디코더에서, 프레임은 또한 인코딩된 비트스트림 내의 그 인코딩된 잔차들의 수신에 따라 블록들의 단위들로 처리될 수 있다.[0067] At 1002, the current frame to be predicted is determined. The frames can be coded in any order, such as the coding order shown in FIG. 8, and so can be predicted. Frames to be predicted may also be referred to as frames of the first, second, third, and the like. The first, second, etc. labels do not necessarily indicate the order of the frames. Instead, unless otherwise stated, labels are used herein to distinguish one current frame from another. In an encoder, a frame may be processed in units of blocks in a block coding order, such as a raster scan order. At the decoder, the frame may also be processed in units of blocks upon receipt of its encoded residuals in the encoded bitstream.
[0068]
1004에서, 순방향 및 역방향 레퍼런스 프레임들이 결정된다. 본 명세서에 설명된 예들에서, 순방향 및 역방향 레퍼런스 프레임들은 현재 프레임(900)과 같은, (예를 들면, 디스플레이 순서로) 현재 프레임의 전후의 가장 가까운 재구성된 프레임들이다. 도 10에 명시적으로 도시되지는 않았으나, 순방향 또는 역방향 레퍼런스 프레임이 존재하지 않으면, 프로세스(1000)는 종료된다. 그러면 현재 프레임은 광흐름을 고려하지 않고 처리된다.[0068]
At 1004, forward and reverse reference frames are determined. In the examples described herein, the forward and backward reference frames are the closest reconstructed frames before and after the current frame (eg, in display order), such as
[0069]
1004에서 순방향 및 역방향 레퍼런스 프레임들이 존재하는 경우, 1006에서 레퍼런스 프레임들을 사용하여 광흐름 레퍼런스 프레임 부분이 생성될 수 있다. 광흐름 레퍼런스 프레임 부분의 생성은 도 11 내지 도 14를 참조하여 보다 상세히 설명된다. 광흐름 레퍼런스 프레임 부분은 몇몇 구현예들에서, 레퍼런스 프레임 버퍼(600) 내의 정의된 위치에 저장될 수 있다. 초기에, 본 명세서의 교시들에 따른 광흐름 추정이 설명된다.[0069]
If there are forward and reverse reference frames at 1004, the lightflow reference frame portion may be generated using the reference frames at 1006. Generation of the light flow reference frame portion is described in more detail with reference to FIGS. The lightflow reference frame portion may be stored at a defined location in the
[0070] 다음의 라그랑지 함수(1)를 최소화함으로써 현재 프레임 부분의 각각의 픽셀들에 대해 광흐름 추정이 수행될 수 있다:[0070] Light flow estimation can be performed for each pixel of the current frame portion by minimizing the following Lagrange function 1:
[0071] (1)[0071] (One)
[0072]
함수 1에서, 는 명도 항등성 가정(즉, 이미지의 작은 부분의 강도 값은 위치 변화에도 불구하고 시간 경과에 따라 변화하지 않고 유지된다는 가정)에 기초한 데이터 페널티이다. 은 모션 필드의 평활도(즉, 인접한 픽셀들은 이미지에서 동일한 객체 항목에 속할 가능성이 높고 그래서 실질적으로 동일한 이미지 모션을 초래한다는 특성)에 기초한 공간 페널티이다. 라그랑지 파라미터 λ는 모션 필드의 평활도의 중요성을 제어한다. 파라미터 λ의 큰 값은 모션 필드를 보다 평활하게 하고, 보다 큰 스케일의 모션을 더 잘 감안할 수 있다. 대조적으로, 파라미터 λ의 더 작은 값은 객체의 에지들 및 작은 객체들의 이동에 보다 효과적으로 적응할 수 있다.[0072] In
[0073] 본 명세서의 교시들의 구현예에 따르면, 데이터 페널티는 데이터 페널티 함수로 표현될 수 있다:[0073] According to an implementation of the teachings herein, the data penalty can be expressed as a data penalty function:
[0074] (2)[0074] (2)
[0075]
현재 픽셀에 대한 모션 필드의 수평 성분은 u로 표현되는 한편, 모션 필드의 수직 성분은 v로 표현된다. 대략적으로 말하면, Ex, Ey, 및 Et는 (예를 들면, 프레임 인덱스들에 의해 표시되는 바와 같은) 수평 축 x, 수직 축 y, 및 시간 t에 대한 레퍼런스 프레임 부분들의 픽셀 값들의 도함수들이다. 수평 축 및 수직 축은 현재 프레임(900)과 같은 현재 프레임 및 레퍼런스 프레임들 1 및 2와 같은 레퍼런스 프레임들을 형성하는 픽셀들의 어레이에 대해 정의된다.[0075] The horizontal component of the motion field for the current pixel is represented by u, while the vertical component of the motion field is represented by v. Roughly speaking, E x , E y , and E t are derivatives of pixel values of reference frame portions for horizontal axis x, vertical axis y, and time t (eg, as indicated by the frame indices). admit. The horizontal axis and the vertical axis are defined for an array of pixels forming a current frame, such as
[0076] 데이터 페널티 함수에서, 도함수들 Ex, Ey, 및 Et는 다음의 함수들 (3), (4), 및 (5)에 따라 계산될 수 있다:In the data penalty function, the derivatives E x , E y , and E t can be calculated according to the following functions (3), (4), and (5):
[0077] [0077]
[0078] (3)[0078] (3)
[0079] [0079]
[0080] (4)[0080] (4)
[0081] (5)[0081] (5)
[0082]
변수 은 인코딩되는 현재 프레임 내의 현재 픽셀 위치의 모션 필드에 기초한 레퍼런스 프레임 1 내의 투영된 위치에서의 픽셀 값이다. 유사하게, 변수 는 인코딩되는 현재 프레임 내의 현재 픽셀 위치의 모션 필드에 기초한 레퍼런스 프레임 2 내의 투영된 위치에서의 픽셀 값이다.[0082] variable Is the pixel value at the projected position in
[0083]
변수 은 레퍼런스 프레임 1의 디스플레이 인덱스이며, 여기서 프레임의 디스플레이 인덱스는 비디오 시퀀스의 디스플레이 순서에 있어서의 그 인덱스이다. 유사하게, 변수 는 레퍼런스 프레임 2의 디스플레이 인덱스이고, 변수 은 현재 프레임(900)의 디스플레이 인덱스이다.[0083] variable Is the display index of
[0084]
변수 은 선형 필터를 사용하여 레퍼런스 프레임 1에서 계산된 수평 도함수(horizontal derivative)이다. 변수 는 선형 필터를 사용하여 레퍼런스 프레임 2에서 계산된 수평 도함수이다. 변수 은 선형 필터를 사용하여 레퍼런스 프레임 1에서 계산된 수직 도함수이다. 변수 는 선형 필터를 사용하여 레퍼런스 프레임 2에서 계산된 수직 도함수이다.[0084] variable Is a horizontal derivative calculated in
[0085] 본 명세서의 교시들의 구현예에서, 수평 도함수를 계산하는데 사용되는 선형 필터는 필터 계수 [-1/60, 9/60, -45/60, 0, 45/60, -9/60, 1/60]를 갖는 7-탭 필터(7-tap filter)이다. 필터는 상이한 주파수 프로파일, 상이한 개수의 탭들, 또는 양자 모두를 가질 수 있다. 수직 도함수들을 계산하는데 사용되는 선형 필터는 수평 도함수들을 계산하는데 사용되는 선형 필터와 동일하거나 상이할 수 있다.[0085] In an embodiment of the teachings herein, the linear filter used to calculate the horizontal derivative is a filter coefficient [-1/60, 9/60, -45/60, 0, 45/60, -9/60, 1/60. 7-tap filter with]. The filter may have a different frequency profile, different number of taps, or both. The linear filter used to calculate the vertical derivatives may be the same or different than the linear filter used to calculate the horizontal derivatives.
[0086] 공간 페널티는 공간 페널티 함수로 나타낼 수 있다:[0086] Spatial penalty can be expressed as a spatial penalty function:
[0087] (6)[0087] (6)
[0088]
공간 페널티 함수(6)에서, Δu는 모션 필드의 수평 성분 u의 라플라시안(Laplacian)이고, Δv는 모션 필드의 수직 성분 v의 라플라시안이다.[0088]
In the
[0089]
도 11은 광흐름 레퍼런스 프레임 부분을 생성하기 위한 방법 또는 프로세스(1100)의 흐름도이다. 이 예에서, 광흐름 레퍼런스 프레임 부분은 전체 레퍼런스 프레임이다. 프로세스(1100)는 프로세스(1000)의 스텝 1006을 구현할 수 있다. 프로세스(1100)는 예를 들면, 송신 스테이션(102) 또는 수신 스테이션(106)과 같은 컴퓨팅 디바이스들에 의해 실행될 수 있는 소프트웨어 프로그램으로 구현될 수 있다. 예를 들면, 소프트웨어 프로그램은 메모리(204) 또는 2 차 스토리지(214)와 같은 메모리에 저장될 수 있고 CPU(202)와 같은 프로세서에 의해 실행될 때 컴퓨팅 디바이스가 프로세스(1100)를 수행하게 할 수 있는 기계 판독 가능 명령들을 포함할 수 있다. 프로세스(1100)는 특수 하드웨어 또는 펌웨어를 사용하여 구현될 수 있다. 전술한 바와 같이, 다수의 프로세서들, 메모리들, 또는 양자 모두가 사용될 수도 있다.[0089]
11 is a flowchart of a method or
[0090] 순방향 및 역방향 레퍼런스 프레임들은 서로 상대적으로 멀리 떨어져 있을 수 있기 때문에, 이들 사이에는 극적인 모션이 있을 수 있으며, 그래서 명도 항등성 가정의 정확도를 저하시킨다. 이 문제로부터 초래되는 픽셀의 모션에 있어서의 잠재적인 에러를 저감하기 위해, 현재 프레임으로부터 레퍼런스 프레임들로의 추정된 모션 벡터들이 현재 프레임에 대한 광흐름 추정을 초기화하는데 사용될 수 있다. 1102에서, 현재 프레임 내의 모든 픽셀들에는 초기화된 모션 벡터가 할당될 수 있다. 이들은 레퍼런스 프레임들 사이의 모션 길이들을 단축시키기 위해 제1 처리 레벨을 위해 레퍼런스 프레임들을 현재 프레임으로 워핑(warping)하는데 이용될 수 있는 초기 모션 필드들을 정의한다.[0090] Because forward and reverse reference frames can be relatively far apart from each other, there can be dramatic motion between them, thus degrading the accuracy of the brightness identity assumption. In order to reduce potential errors in motion of the pixel resulting from this problem, estimated motion vectors from the current frame to the reference frames can be used to initialize the light flow estimate for the current frame. At 1102, all pixels in the current frame can be assigned an initialized motion vector. These define initial motion fields that can be used to warp reference frames to the current frame for the first processing level to shorten the motion lengths between the reference frames.
[0091]
현재 픽셀의 모션 필드 은 다음의 함수에 따라, 현재 픽셀로부터 역방향 레퍼런스 프레임, 이 예에서는 레퍼런스 프레임 2를 가리키는 추정된 모션 벡터 와 현재 픽셀로부터 순방향 레퍼런스 프레임, 이 예에서는 레퍼런스 프레임 1을 가리키는 추정된 모션 벡터 사이의 차이를 나타내는 모션 벡터를 사용하여 초기화될 수 있다:[0091] Motion field of the current pixel Is an estimated motion vector pointing from the current pixel to the reverse reference frame, in this example,
[0092] [0092]
[0093] 모션 벡터들 중 어느 하나가 이용 가능하지 않은 경우, 다음의 함수들 중 어느 하나에 따라 이용 가능한 모션 벡터를 사용하여 초기 모션을 외삽(extrapolate)하는 것이 가능하다:[0093] If either of the motion vectors is not available, it is possible to extrapolate the initial motion using the available motion vector according to any of the following functions:
[0094] , 또는[0094] , or
[0095] .[0095] .
[0096] 현재 픽셀이 이용 가능한 모션 벡터 레퍼런스를 갖지 않는 경우, 초기화된 모션 벡터를 갖는 하나 이상의 공간적 이웃들이 사용될 수 있다. 예를 들면, 이용 가능한 인접한 초기화된 모션 벡터들의 평균이 사용될 수 있다.[0096] If the current pixel does not have an available motion vector reference, one or more spatial neighbors with an initialized motion vector can be used. For example, an average of available adjacent initialized motion vectors can be used.
[0097]
1102에서 제1 처리 레벨을 위한 모션 필드를 초기화하는 예에서, 레퍼런스 프레임 2는 레퍼런스 프레임 1의 픽셀을 예측하기 위해 사용될 수 있는데, 여기서 레퍼런스 프레임 1은 현재 프레임이 코딩되기 전의 마지막 프레임이다. 도 9에 도시된 것과 유사한 방식으로 선형 투영을 사용하여 현재 프레임에 투영된 그 모션 벡터는, 픽셀 위치(902)에서의 모션 필드(906)와 같이, 교차하는 픽셀 위치에 모션 필드 mvcur을 발생시킨다.In an example of initializing a motion field for a first processing level at 1102,
[0098]
도 11은 프로세스(1100)에는 바람직하게는 다수의 처리 레벨들이 있기 때문에 제1 처리 레벨을 위한 모션 필드를 초기화하는 것을 언급하고 있다. 이는 도 11의 프로세스(1100)(및 아래에서 논의되는 도 12의 프로세스(1200))를 예시하는 다이어그램인 도 13을 참조하면 볼 수 있다. 이하의 설명은 모션 필드라는 문구를 사용한다. 이 문구는 문맥으로부터 달리 분명하지 않은 한, 각각의 픽셀들에 대한 모션 필드들을 총괄적으로 지칭하기 위한 것이다. 따라서, 2 개 이상의 모션 필드를 언급할 때에는 "모션 필드들" 또는 "모션 필드" 라는 문구들이 상호 교환적으로 사용될 수 있다. 또한, 픽셀들의 이동을 지칭할 때에는 광흐름이라는 문구가 모션 필드라는 문구와 상호 교환적으로 사용될 수 있다.[0098]
11 refers to initializing a motion field for a first processing level because
[0099] 프레임의 픽셀들에 대한 모션 필드/광흐름을 추정하기 위해, 피라미드 또는 다층 구조가 사용될 수 있다. 예를 들면, 하나의 피라미드 구조에서, 레퍼런스 프레임들은 하나 이상의 상이한 스케일들로 스케일 다운된다(scaled down). 그 다음에, 광흐름은 먼저 피라미드의 최고 레벨(제1 처리 레벨)에서, 즉 가장 스케일링된 레퍼런스 프레임들을 사용하여 모션 필드를 획득하기 위해 추정된다. 그 후에, 모션 필드는 업스케일링되어 다음 레벨에서 광흐름 추정을 초기화하는데 사용된다. 모션 필드를 업스케일링하고, 이를 사용하여 다음 레벨의 광흐름 추정을 초기화하며, 모션 필드를 획득하는 이 프로세스는 피라미드의 최하위 레벨에 도달할 때까지(즉, 전체 스케일의 레퍼런스 프레임 부분들에 대해 광흐름 추정이 완료될 때까지) 계속된다.[0099] In order to estimate the motion field / light flow for the pixels of the frame, a pyramid or multilayer structure can be used. For example, in one pyramid structure, the reference frames are scaled down to one or more different scales. Then, the light flow is first estimated to obtain a motion field at the highest level (first processing level) of the pyramid, ie using the most scaled reference frames. Thereafter, the motion field is upscaled and used to initialize the light flow estimate at the next level. This process of upscaling the motion field, using it to initialize the next level of light flow estimation, and obtaining the motion field is performed until the lowest level of the pyramid is reached (i.e., for reference frame portions at full scale). Until flow estimation is completed).
[00100]
이 프로세스의 논리적 근거는 이미지가 스케일 다운될 때 큰 모션을 캡처하는 것이 더 용이하다는 것이다. 하지만, 레퍼런스 프레임들 자체를 스케일링하기 위해 간단한 리스케일 필터들(rescale filters)을 사용하는 것은 레퍼런스 프레임 품질을 저하시킬 수 있다. 리스케일링으로 인한 세부 정보의 손실을 회피하기 위해, 광흐름을 추정하기 위해 레퍼런스 프레임들의 픽셀들 대신 도함수들을 스케일링하는 피라미드 구조. 이 피라미드 스킴(scheme)은 광흐름 추정을 위한 회귀 분석을 나타낸다. 이 스킴은 도 13에 도시되어 있으며, 도 11의 프로세스(1100) 및 도 12의 프로세스(1200)에 의해 구현된다.[00100]
The logical basis of this process is that it is easier to capture large motion when the image is scaled down. However, using simple rescale filters to scale the reference frames themselves may degrade the reference frame quality. A pyramid structure that scales derivatives instead of pixels of reference frames to estimate light flow to avoid loss of detail due to rescaling. This pyramid scheme represents a regression analysis for light flow estimation. This scheme is shown in FIG. 13 and is implemented by
[00101]
초기화 후에, 1104에서 라그랑지 함수(1)의 해를 구하기 위해 라그랑지 파라미터 λ가 설정된다. 바람직하게는, 프로세스(1100)는 라그랑지 파라미터 λ에 대해 다수의 값들을 사용한다. 1104에서 라그랑지 파라미터 λ가 설정되는 제1 값은 100과 같이 비교적 큰 값일 수 있다. 프로세스(1100)가 라그랑지 함수(1) 내에서 라그랑지 파라미터 λ에 대해 다수의 값들을 사용하는 것이 바람직하지만, 후술되는 프로세스(1200)에서 후술되는 바와 같이 단 하나의 값만이 사용되는 것도 가능하다.[00101]
After initialization, the Lagrange parameter λ is set at 1104 to solve the
[00102] 1106에서, 레퍼런스 프레임들은 현재 처리 레벨에 대한 모션 필드에 따라 현재 프레임으로 워핑된다. 레퍼런스 프레임들을 현재 프레임으로 워핑하는 것은 서브픽셀 위치 라운딩(subpixel location rounding)을 사용하여 수행될 수 있다. 제1 처리 레벨에서 사용되는 모션 필드 는 워핑을 수행하기 전에 그 풀 해상도 값으로부터 레벨의 해상도로 다운스케일링된다는 점에 유의할 필요가 있다. 모션 필드의 다운스케일링은 아래에서 보다 상세히 논의된다.At 1106, the reference frames are warped to the current frame according to the motion field for the current processing level. Warping the reference frames to the current frame may be performed using subpixel location rounding. Motion Fields Used at First Processing Level It should be noted that is downscaled from its full resolution value to the resolution of the level before performing warping. Downscaling of the motion field is discussed in more detail below.
[00103]
광흐름 을 알면, 레퍼런스 프레임 1을 워핑하기 위한 모션 필드는 다음과 같이 (예를 들면, 모션은 시간 경과에 따라 선형으로 투영된다는) 선형 투영 가정에 의해 추론된다:[00103] light flow Knowing that, the motion field for warping
[00104] [00104]
[00105] 워핑을 수행하기 위해, 모션 필드 의 수평 성분 및 수직 성분 은 Y 성분에 대해서는 1/8 픽셀 정밀도로 및 U 및 V 성분에 대해서는 1/16 픽셀 정밀도로 라운딩될 수 있다. 서브픽셀 위치 라운딩에 대한 다른 값들도 사용될 수 있다. 라운딩 후, 워핑된 이미지의 각각의 픽셀 은 모션 벡터 에 의해 주어진 참조된 픽셀로 계산된다. 종래의 서브픽셀 보간 필터를 사용하여 서브픽셀 보간이 수행될 수 있다.[00105] To perform warping, a motion field Horizontal component of And vertical components Can be rounded to 1/8 pixel precision for the Y component and 1/16 pixel precision for the U and V components. Other values for subpixel position rounding can also be used. After rounding, each pixel of the warped image Silver motion vector Computed with the referenced pixel given by. Subpixel interpolation may be performed using conventional subpixel interpolation filters.
[00106]
레퍼런스 프레임 2에 대해서도 동일한 워핑 접근법이 수행되어 워핑된 이미지 가 얻어지는데, 여기서 모션 필드는 다음에 의해 계산된다:[00106] The same warping approach is performed for
[00107] [00107]
[00108] 1106에서의 계산의 말미에는, 2 개의 워핑된 레퍼런스 프레임들이 존재한다. 2 개의 워핑된 레퍼런스 프레임들은 1108에서 이들 사이의 모션 필드를 추정하는데 사용된다. 1108에서 모션 필드를 추정하는 것은 다수의 스텝들을 포함할 수 있다.[00108] At the end of the calculation at 1106, there are two warped reference frames. Two warped reference frames are used to estimate the motion field between them at 1108. Estimating the motion field at 1108 may include a number of steps.
[00109] 먼저, 도함수들 Ex, Ey, 및 Et가 함수들 (3), (4), 및 (5)를 사용하여 계산된다. 도함수들을 계산할 때, 가장 가까운 이용 가능한 픽셀을 복사함으로써 워핑된 레퍼런스 프레임의 프레임 경계부들이 확장될 수 있다. 이러한 방식으로, 투영된 위치들이 워핑된 레퍼런스 프레임의 외부에 있을 때 픽셀 값들(즉, 및/또는 )이 얻어질 수 있다. 그 다음에, 다수의 층들이 있으면, 도함수들은 현재 레벨로 다운스케일링된다. 도 13에 도시된 바와 같이, 레퍼런스 프레임들은 세부 사항들을 캡쳐하기 위해 원래 스케일에서 도함수를 계산하는 데 사용된다. 각각의 레벨 l에서 도함수들을 다운스케일링하는 것은 21 x 21 블록 내에서 평균화함으로써 계산될 수 있다. 도함수들을 계산하는 것뿐만 아니라 도함수들을 평균화하여 다운스케일링하는 것은 모두 선형 연산들이기 때문에, 2 개의 연산들은 각각의 레벨 l에서 도함수들 계산하기 위해 단일의 선형 필터로 결합될 수 있다는 것이 주목된다. 이는 계산들의 복잡도를 낮출 수 있다.First, the derivatives E x , E y , and E t are calculated using the functions (3), (4), and (5). When calculating the derivatives, the frame boundaries of the warped reference frame can be extended by copying the nearest available pixel. In this way, pixel values (i.e., when projected positions are outside of the warped reference frame) And / or ) Can be obtained. Then, if there are multiple layers, the derivatives are downscaled to the current level. As shown in FIG. 13, reference frames are used to calculate the derivative at the original scale to capture details. Downscaling the derivatives at each level l can be calculated by averaging within 2 1 x 2 1 blocks. It is noted that the two operations can be combined into a single linear filter to calculate the derivatives at each level l, as well as calculating the derivatives as well as averaging downscaling the derivatives. This can lower the complexity of the calculations.
[00110]
도함수들이 현재 처리 레벨로 다운스케일링되면, 해당되는 경우, 라그랑지 함수(1)에 따라 광흐름 추정이 수행될 수 있다. 보다 구체적으로, 모션 필드의 수평 성분 u 및 모션 필드의 수직 성분 v에 대한 라그랑지 함수(1)의 도함수들을 0으로 설정함으로써(즉, 및 ), 개의 선형 방정식들로 프레임의 모든 N 픽셀들에 대해 성분 u 및 v를 풀 수 있다. 이것은 라플라시안(Laplacians)이 2 차원(2D) 필터에 의해 근사된다는 사실에 기인한다. 정확하지만 매우 복잡한 선형 방정식들을 직접 푸는 대신에, 라그랑지 함수(1)를 최소화하기 위해 반복 접근법들이 사용되어 더 빠르지만 덜 정확한 결과를 얻을 수 있다.If the derivatives are downscaled to the current processing level, light flow estimation may be performed according to the
[00111] 1108에서, 현재 프레임의 픽셀들에 대한 모션 필드가 워핑된 레퍼런스 프레임들 사이의 추정된 모션 필드를 사용하여 업데이트되거나 개선된다. 예를 들면, 픽셀에 대한 현재 모션 필드는 픽셀별로 각각의 픽셀에 대해 추정된 모션 필드를 추가함으로써 업데이트될 수 있다.[00111] At 1108, the motion field for the pixels of the current frame is updated or improved using the estimated motion field between the warped reference frames. For example, the current motion field for a pixel can be updated by adding an estimated motion field for each pixel on a pixel-by-pixel basis.
[00112]
일단 1108에서 모션 필드가 추정되고 나면, 라그랑지 파라미터 λ에 대한 이용 가능한 추가 값들이 있는지 여부를 결정하기 위해 1110에서 질의가 이루어진다. 라그랑지 파라미터 λ의 보다 작은 값들은 보다 작은 스케일의 모션에 대처할 수 있다. 추가 값들이 존재하는 경우, 프로세스(1100)는 1104로 복귀하여 라그랑지 파라미터 λ에 대한 다음 값을 설정할 수 있다. 예를 들면, 프로세스(1100)는 각각의 반복(each iteration)에서 라그랑지 파라미터 λ를 절반으로 줄이면서 반복할 수 있다. 1108에서 업데이트된 모션 필드는 이 다음 반복에서 1106에서 레퍼런스 프레임들을 워핑하기 위한 현재 모션 필드이다. 그 다음에, 모션 필드는 1108에서 다시 추정된다. 1104, 1106, 및 1108에서의 처리는 1110에서의 모든 가능한 라그랑지 파라미터들이 처리될 때까지 계속된다. 일례에서, 도 13에 도시된 바와 같이 피라미드에는 3 개의 레벨들이 있으며, 그래서 일례에서 라그랑지 파라미터 λ의 최소값은 25이다. 라그랑지 파라미터를 변경하면서 이루어지는 이러한 반복 처리는 라그랑지 파라미터를 어닐링(annealing)하는 것으로 지칭될 수 있다.[00112]
Once the motion field is estimated at 1108, a query is made at 1110 to determine whether there are additional values available for the Lagrange parameter λ. Smaller values of the Lagrange parameter λ can cope with motion of a smaller scale. If there are additional values,
[00113]
일단 1110에서 라그랑지 파라미터 λ에 대해 남아있는 값이 없게 되면, 프로세스(1100)는 1112로 진행하여 처리할 처리 레벨들이 더 있는지 여부를 결정한다. 1112에서 추가 처리 레벨들이 존재하면, 프로세스(1100)는 1114로 진행하며, 여기서 1104에서 시작하여 라그랑지 파라미터 λ에 대해 이용 가능한 값들 각각을 사용하여 다음 층을 처리하기 전에 모션 필드가 업스케일링된다. 모션 필드의 업스케일링은 전술한 다운스케일링 계산들의 역(reverse)을 포함하는(그러나, 이에 제한되지 않음) 임의의 알려진 기술을 사용하여 수행될 수 있다.[00113]
Once there is no remaining value for the Lagrange parameter [lambda] at 1110,
[00114] 일반적으로, 광흐름은 피라미드의 최고 레벨에서 모션 필드을 획득하기 위해 먼저 추정된다. 그 후에, 모션 필드는 업스케일링되어 다음 레벨에서 광흐름 추정을 초기화하는데 사용된다. 모션 필드를 업스케일링하고, 이를 사용하여 다음 레벨의 광흐름 추정을 초기화하며, 모션 필드를 획득하는 이 프로세스는 1112에서 피라미드의 최하위 레벨에 도달할 때까지(즉, 풀 스케일로 계산된 도함수들에 대해 광흐름 추정이 완료될 때까지) 계속된다.[00114] In general, the light flow is first estimated to obtain a motion field at the highest level of the pyramid. Thereafter, the motion field is upscaled and used to initialize the light flow estimate at the next level. This process of upscaling the motion field, using it to initialize the next level of light flow estimation, and obtaining the motion field is performed at 1112 until the lowest level of the pyramid is reached (i.e., full-scaled derivatives). Until the light flow estimation is completed.
[00115]
일단 레벨이 레퍼런스 프레임들이 다운스케일링되지 않는 레벨(즉, 레퍼런스 프레임들이 그 원래 해상도에 있음)에 도달하면, 프로세스(1100)는 1116으로 진행한다. 예를 들면, 레벨들의 수는 도 13의 예에서와 같은, 3 개일 수 있다. 1116에서, 워핑된 레퍼런스 프레임들은 블렌딩되어 광흐름 레퍼런스 프레임 를 형성한다. 1116에서 블렌딩된 워핑된 레퍼런스 프레임들은 1108에서 추정된 모션 필드를 사용하여 1106에 기술된 프로세스에 따라 다시 워핑되는 풀 스케일 레퍼런스 프레임들일 수 있음에 유의하자. 다시 말하면, 풀 스케일의 레퍼런스 프레임들은 2 회 ― 이전 처리 층으로부터의 최초의 업스케일링된 모션 필드를 사용하여 한 번 및 모션 필드가 풀 스케일 레벨로 개선된 후에 다시 ― 워핑될 수 있다. 블렌딩은 다음과 같이 (예를 들면, 프레임들이 동일한 시간 간격들로 이격되어 있다는) 시간 선형성 가정을 이용하여 수행될 수 있다:[00115] Once the level reaches a level where the reference frames are not downscaled (ie, the reference frames are at their original resolution),
[00116] [00116]
[00117]
몇몇 구현예들에서는, 블렌딩된 값보다는 워핑된 레퍼런스 프레임들 중 하나만의 픽셀을 선호하는 것이 바람직하다. 예를 들면, (로 표시된) 레퍼런스 프레임 1의 레퍼런스 픽셀은 경계들을 벗어하는(예를 들면, 프레임의 치수들의 외부에 있음) 반면 레퍼런스 프레임 2의 레퍼런스 픽셀은 경계들을 벗어나지 않으면, 레퍼런스 프레임 2에서 발생하는 워핑된 이미지의 픽셀만 다음에 따라 사용된다:In some implementations, it is desirable to prefer a pixel of only one of the warped reference frames over the blended value. For example, ( The reference pixel of
[00118] [00118]
[00119] 블렌딩의 일부로서 선택적인 폐색 검출(occlusion)이 수행될 수 있다. 객체들과 배경의 폐색은 비디오 시퀀스에서 흔히 발생하는데, 객체의 부분들은 하나의 레퍼런스 프레임에는 나타나지만 다른 레퍼런스 프레임에는 숨겨져 있다. 일반적으로, 전술한 광흐름 추정 방법은 명도 항등성 가정이 위반되기 때문에 이러한 상황에서는 객체의 모션을 추정할 수 없다. 폐색의 크기가 비교적 작은 경우, 평활도 페널티 함수는 모션을 꽤 정확하게 추정할 수 있다. 즉, 숨겨진 부분에서의 미정의(undefined) 모션 필드가 인접한 모션 벡터들에 의해 평활화되면, 전체 객체의 모션은 정확할 수 있다.[00119] Selective occlusion can be performed as part of the blending. Occlusion of objects and backgrounds is common in video sequences, where parts of an object appear in one reference frame but are hidden in another. In general, the light flow estimation method described above cannot estimate the motion of an object in such a situation because the brightness identity assumption is violated. If the size of the occlusion is relatively small, the smoothness penalty function can estimate the motion quite accurately. In other words, if an undefined motion field in the hidden part is smoothed by adjacent motion vectors, the motion of the entire object can be accurate.
[00120]
하지만, 이러한 경우에 조차도, 전술한 간단한 블렌딩 방법은 만족스러운 보간 결과를 제공하지 않을 수 있다. 이는 객체 폐색을 예시하는 다이어그램인 도 14를 참조하여 설명될 수 있다. 이 예에서 객체 A의 폐색된 부분은 레퍼런스 프레임 1에서는 표시되고 레퍼런스 프레임 2에서는 객체 B에 의해 숨겨진다. 객체 A의 숨겨진 부분이 레퍼런스 프레임 2에는 표시되지 않기 때문에, 레퍼런스 프레임 2로부터의 참조된 픽셀은 객체 B의 것이다. 이 경우에는, 레퍼런스 프레임 1로부터의 워핑된 픽셀만을 사용하는 것이 바람직하다. 따라서, 상기 블렌딩 대신에 또는 그에 부가하여 폐색들을 검출하는 기술을 사용하면 보다 나은 블렌딩 결과를 제공할 수 있고, 그래서 보다 나은 레퍼런스 프레임을 제공할 수 있다.[00120]
However, even in this case, the simple blending method described above may not provide satisfactory interpolation results. This can be explained with reference to FIG. 14, which is a diagram illustrating object occlusion. In this example, the occluded portion of object A is visible in
[00121]
폐색의 검출과 관련하여, 도 14로부터 폐색이 발생하고 모션 필드가 꽤 정확한 경우, 객체 A의 폐색된 부분의 모션 벡터는 레퍼런스 프레임 2에서 객체 B를 가리킴이 관찰된다. 이는 다음과 같은 상황들을 초래할 수 있다. 첫 번째 상황은 워핑된 픽셀 값들 및 는 2 개의 상이한 객체들에서 온 것이기 때문에 매우 다르다는 것이다. 두 번째 상황은 객체 B의 픽셀들은 현재 프레임 내의 객체 B 및 현재 프레임 내의 객체 A의 폐색 부분에 대한 다수의 모션 벡터들에 의해 참조된다는 것이다.Regarding the detection of occlusion, if occlusion occurs from FIG. 14 and the motion field is quite accurate, it is observed that the motion vector of the occluded portion of object A points to object B in
[00122] 이러한 관찰들에 의해, 에 대한 만의 폐색 및 사용을 결정하기 위해 다음의 조건들이 확립될 수 있으며, 에 대해 만 사용하는 경우에도 유사한 조건들이 적용된다:[00122] By these observations, For To determine the occlusion and use of the bay, the following conditions can be established, About Similar conditions apply for use only:
[00123] 이 문턱값 보다 크고; 그리고[00123] This threshold Greater than; And
[00124] 가 문턱값 보다 크다.[00124] Fall threshold Greater than
[00125]
는 레퍼런스 프레임 1의 참조된 픽셀이 현재의 병치된 프레임 내의 임의의 픽셀에 의해 참조되는 총 횟수이다. 전술한 서브픽셀 보간이 존재하는 경우, 레퍼런스 서브픽셀 위치가 관심있는 픽셀 위치의 1 픽셀 길이 내에 있을 때 가 카운트된다. 또한, 가 서브픽셀 위치를 가리키는 경우, 4 개의 인접한 픽셀들의 가중 평균 는 현재의 서브픽셀 위치에 대한 레퍼런스들의 총 수이다. 도 유사하게 정의할 수 있다.[00125] Is the total number of times the referenced pixel of
[00126] 따라서, 제1 워핑된 레퍼런스 프레임 및 제2 워핑된 레퍼런스 프레임을 사용하여 제1 레퍼런스 프레임에서 폐색이 검출될 수 있다. 그 다음, 워핑된 레퍼런스 프레임들의 블렌딩은 제2 워핑된 레퍼런스 프레임으로부터의 픽셀 값들로 폐색에 대응하는 광흐름 레퍼런스 프레임의 픽셀 위치들을 채우는 것(populating)을 포함할 수 있다. 유사하게, 제1 워핑된 레퍼런스 프레임 및 제2 워핑된 레퍼런스 프레임을 사용하여 제2 레퍼런스 프레임에서 폐색이 검출될 수 있다. 그 다음, 워핑된 레퍼런스 프레임들의 블렌딩은 제1 워핑된 레퍼런스 프레임으로부터의 픽셀 값들로 폐색에 대응하는 광흐름 레퍼런스 프레임의 픽셀 위치들을 채우는 것을 포함할 수 있다.[00126] Thus, occlusion may be detected in the first reference frame using the first warped reference frame and the second warped reference frame. The blending of the warped reference frames may then include populating pixel positions of the lightflow reference frame corresponding to the occlusion with pixel values from the second warped reference frame. Similarly, occlusion may be detected in the second reference frame using the first warped reference frame and the second warped reference frame. The blending of the warped reference frames may then include filling pixel locations of the lightflow reference frame corresponding to the occlusion with pixel values from the first warped reference frame.
[00127]
프로세스(1100)는 실질적인 압축 성능 이득들을 제공한다는 것이 실험적으로 제시된다. 이들 성능 이득들은 저해상도 프레임들의 세트의 경우 PSNR에서 2.5 % 및 SSIM에서 3.3 %, 및 중해상도 프레임들의 세트의 경우 PSNR에서 3.1 % 및 SSIM에서 4.0 %의 이득들을 포함한다. 하지만, 및 전술한 바와 같이, 라그랑지 함수(1)에 따라 수행되는 광흐름 추정은 프레임의 모든 N 픽셀들에 대한 모션 필드의 수평 성분 u 및 수직 성분 v를 풀기 위해 선형 방정식들을 이용한다. 다시 말해서, 광흐름 추정의 계산 복잡도는 프레임 크기의 다항식 함수이며, 이는 디코더의 복잡도에 부담을 준다. 따라서, 서브프레임 기반(예를 들면, 블록 기반)의 광흐름 추정이 다음에 설명되는데, 이는 도 11과 관련하여 설명된 프레임 기반 광흐름 추정보다 디코더의 복잡도를 저감시킬 수 있다.It is experimentally suggested that
[00128]
도 12는 광흐름 레퍼런스 프레임 부분을 생성하기 위한 방법 또는 프로세스(1200)의 흐름도이다. 이 예에서, 광흐름 레퍼런스 프레임 부분은 전체 레퍼런스 프레임보다 더 작다. 이 예에서 병치된 프레임 부분들은 블록을 참조하여 설명되지만, 다른 프레임 부분들은 도 12에 따라 처리될 수 있다. 프로세스(1200)는 프로세스(1000)의 스텝 1006을 구현할 수 있다. 프로세스(1200)는 예를 들면, 송신 스테이션(102) 또는 수신 스테이션(106)과 같은 컴퓨팅 디바이스들에 의해 실행될 수 있는 소프트웨어 프로그램으로 구현될 수 있다. 예를 들면, 소프트웨어 프로그램은 메모리(204) 또는 2 차 스토리지(214)와 같은 메모리에 저장될 수 있고 CPU(202)와 같은 프로세서에 의해 실행될 때 컴퓨팅 디바이스가 프로세스(1200)를 수행하게 할 수 있는 기계 판독 가능 명령들을 포함할 수 있다. 프로세스(1200)는 특수 하드웨어 또는 펌웨어를 사용하여 구현될 수 있다. 전술한 바와 같이, 다수의 프로세서들, 메모리들, 또는 양자 모두가 사용될 수도 있다.[00128]
12 is a flowchart of a method or
[00129] 1202에서, 현재 프레임 내의 모든 픽셀들에는 초기화된 모션 벡터가 할당된다. 이들은 레퍼런스 프레임들 사이의 모션 길이들을 단축시키기 위해 제1 처리 레벨을 위해 레퍼런스 프레임들을 현재 프레임으로 워핑하는데 이용될 수 있는 초기 모션 필드들을 정의한다. 1202에서의 초기화는 1102에서의 초기화와 관련하여 설명된 것과 동일한 처리를 이용하여 수행될 수 있으며, 그래서 여기서는 설명이 반복되지 않는다.[00129] At 1202, all pixels in the current frame are assigned an initialized motion vector. These define initial motion fields that can be used to warp reference frames to the current frame for the first processing level to shorten the motion lengths between the reference frames. Initialization at 1202 may be performed using the same processing as described with respect to initialization at 1102, so the description is not repeated here.
[00130]
1204에서, 레퍼런스 프레임들 ― 예컨대, 레퍼런스 프레임 1 및 레퍼런스 프레임 2 ― 은 1202에서 초기화된 모션 필드에 따라 현재 프레임으로 워핑된다. 1204에서의 워핑은 바람직하게는, 1202에서 초기화된 모션 필드 mvcur가 레퍼런스 프레임들을 워핑하기 전에 그 풀 해상도 값으로부터 다운스케일링되지 않는 것을 제외하고는, 1106에서의 워핑과 관련하여 설명된 것과 동일한 처리를 이용하여 수행될 수 있다.At 1204, reference frames—eg,
[00131]
1204에서의 계산의 말미에는, 풀 해상도의 2 개의 워핑된 레퍼런스 프레임들이 존재한다. 프로세스(1100)와 같이, 프로세스(1200)는 도 13과 관련하여 설명된 것과 유사한 멀티-레벨 프로세스를 사용하여 2 개의 레퍼런스 프레임들 사이의 모션 필드를 추정할 수 있다. 대략적으로 말하면, 프로세스(1200)는 모든 레벨이 고려될 때까지 레벨에 대한 도함수들을 계산하고, 도함수들을 사용하여 광흐름 추정을 수행하며, 결과적인 모션 필드를 다음 레벨을 위해 업스케일링한다.[00131]
At the end of the calculation at 1204, there are two warped reference frames in full resolution. Like
[00132] 보다 구체적으로, 현재(또는 제1) 처리 레벨에서 블록에 대한 모션 필드 이 1206에서 초기화된다. 블록은 현재 프레임의 스캔 순서(예를 들면, 래스터 스캔 순서)에서 선택된 현재 프레임의 블록일 수 있다. 블록에 대한 모션 필드 은 블록의 각각의 픽셀들에 대한 모션 필드를 포함한다. 즉, 1206에서, 현재의 블록 내의 모든 픽셀들에는 초기화된 모션 벡터가 할당된다. 초기화된 모션 벡터들은 레퍼런스 프레임들의 레퍼런스 블록들 사이의 길이들을 단축시키기 위해 레퍼런스 블록들을 현재 블록으로 워핑하는데 사용된다.More specifically, the motion field for the block at the current (or first) processing level This is initialized at 1206. The block may be a block of the current frame selected in the scan order (eg, raster scan order) of the current frame. Motion Fields for Blocks Contains a motion field for each pixel of the block. That is, at 1206, all pixels in the current block are assigned an initialized motion vector. The initialized motion vectors are used to warp the reference blocks to the current block to shorten the lengths between the reference blocks of the reference frames.
[00133] 1206에서, 모션 필드 은 그 풀 해상도 값으로부터 레벨의 해상도로 다운스케일링된다. 다시 말하면, 1206에서의 초기화는 1202에서 초기화된 풀 해상도 값으로부터 블록의 각각의 픽셀들에 대한 모션 필드를 다운스케일링하는 것을 포함할 수 있다. 다운스케일링은 전술한 다운스케일링과 같은, 임의의 기술을 사용하여 수행될 수 있다.[00133] At 1206, a motion field Is downscaled from its full resolution value to the resolution of the level. In other words, the initialization at 1206 can include downscaling the motion field for each pixel of the block from the full resolution value initialized at 1202. Downscaling may be performed using any technique, such as the downscaling described above.
[00134]
1208에서, 워핑된 레퍼런스 프레임들 각각의 모션 필드에 대응하는 병치된 레퍼런스 블록들이 현재 블록으로 워핑된다. 레퍼런스 블록들의 워핑은 1106에서의 프로세스(1100)와 유사하게 수행된다. 즉, 레퍼런스 프레임 1의 레퍼런스 블록의 픽셀들의 광흐름 를 알면, 워핑을 위한 모션 필드는 다음과 같이 (예를 들면, 모션은 시간 경과에 따라 선형으로 투영된다는) 선형 투영 가정에 의해 추론된다:At 1208, the collocated reference blocks corresponding to the motion field of each of the warped reference frames are warped into the current block. Warping of the reference blocks is performed similarly to process 1100 at 1106. That is, the light flow of pixels of the reference block of
[00135] [00135]
[00136] 워핑을 수행하기 위해, 모션 필드 의 수평 성분 및 수직 성분 은 Y 성분에 대해서는 1/8 픽셀 정밀도로 및 U 및 V 성분에 대해서는 1/16 픽셀 정밀도로 라운딩될 수 있다. 다른 값들도 사용될 수 있다. 라운딩 후, 워핑된 블록의 각각의 픽셀, 예를 들면 은 모션 벡터 mvr1에 의해 주어진 참조된 픽셀로 계산된다. 종래의 서브픽셀 보간 필터를 사용하여 서브픽셀 보간이 수행될 수 있다.[00136] To perform warping, a motion field Horizontal component of And vertical components Can be rounded to 1/8 pixel precision for the Y component and 1/16 pixel precision for the U and V components. Other values may be used. After rounding, each pixel of the warped block, for example Is computed with the referenced pixel given by the motion vector mv r1 . Subpixel interpolation may be performed using conventional subpixel interpolation filters.
[00137]
레퍼런스 프레임 2의 레퍼런스 블록에 대해서도 동일한 워핑 접근법이 수행되어 워핑된 블록, 예를 들면 가 얻어지는데, 여기서 모션 필드는 다음에 의해 계산된다:[00137] The same warping approach is also performed on the reference block of
[00138] [00138]
[00139] 1208에서의 계산의 말미에, 2 개의 워핑된 레퍼런스 블록들이 존재한다. 2 개의 워핑된 레퍼런스 블록들은 1210에서 이들 사이의 모션 필드를 추정하는 데 사용된다. 1210에서의 처리는 도 11의 1108에서의 처리와 관련하여 설명된 것과 유사할 수 있다.[00139] At the end of the calculation at 1208, there are two warped reference blocks. Two warped reference blocks are used at 1210 to estimate the motion field between them. The processing at 1210 may be similar to that described with respect to the processing at 1108 of FIG. 11.
[00140]
보다 구체적으로, 2 개의 워핑된 레퍼런스 블록들은 풀 해상도일 수 있다. 도 13의 피라미드 구조에 따르면, 도함수들 Ex, Ey, 및 Et가 함수들 (3), (4), 및 (5)를 사용하여 계산된다. 프레임 레벨 추정을 위한 도함수들을 계산할 때, 프로세스(1100)와 관련하여 설명된 바와 같이 경계를 벗어난 픽셀 값들을 획득하기 위해 가장 가까운 이용 가능한 픽셀을 복사함으로써 프레임 경계부들이 확장될 수 있다. 하지만, 다른 프레임 부분들의 경우, 1204에서 워핑된 레퍼런스 프레임들에서 인접한 픽셀들이 종종 이용 가능하다. 예를 들어, 블록 기반 추정의 경우, 블록 자체가 프레임 경계부에 있지 않으면 워핑된 레퍼런스 프레임들에서 인접 블록들의 픽셀들이 이용 가능하다. 따라서, 워핑된 레퍼런스 프레임 부분에 대해 경계들을 벗어난 픽셀들의 경우에, 워핑된 레퍼런스 프레임의 인접 부분들의 픽셀들은, 해당되는 경우 픽셀 값들 및/또는 로 사용될 수 있다. 투영된 픽셀들이 프레임 경계부들의 외부에 있는 경우, 가장 가까운 이용 가능한(즉, 경계들 내의) 픽셀을 복사하는 것이 여전히 사용될 수 있다. 도함수들이 계산된 후, 이들은 현재 레벨로 다운스케일링될 수 있다. 각각의 레벨 l에서 다운스케일링된 도함수들은 앞서 논의된 바와 같이, 21 x 21 블록 내에서 평균화함으로써 계산될 수 있다. 도함수들을 계산하고 평균화하는 두 가지 선형 연산들을 단일의 선형 필터로 결합함으로써 계산들의 복잡도를 낮출 수 있지만, 필수는 아니다.More specifically, the two warped reference blocks may be full resolution. According to the pyramid structure of FIG. 13, the derivatives E x , E y , and E t are calculated using the functions (3), (4), and (5). When calculating derivatives for frame level estimation, frame boundaries can be extended by copying the nearest available pixel to obtain out of bounds pixel values as described in connection with
[00141]
1210에서의 처리를 계속하면, 다운스케일링된 도함수들은 워핑된 레퍼런스 부분들 사이의 모션 필드을 추정하기 위한 광흐름 추정을 수행하게 위해 라그랑지 함수(1)의 입력들로서 사용될 수 있다. 수평 성분 u 및 수직 성분 v에 대한 라그랑지 함수(1)의 도함수들을 0으로 설정하고(즉, 및 ), 개의 선형 방정식들을 푸는 것에 의해, 부분, 여기서는 블록의 모든 N 픽셀들에 대해 모션 필드의 수평 성분 u 및 수직 성분 v가 결정될 수 있다. 이를 위해, 경계를 벗어난 모션 벡터들을 다루는 두 가지 선택적 방법이 있다. 하나의 방법은 인접한 블록들과 제로 상관(zero correlation)을 가정하고, 경계를 벗어난 모션 벡터가 경계를 벗어난 픽셀 위치에 가장 가까운 경계부 위치에 있는 모션 벡터와 동일하다고 가정하는 것이다. 다른 방법은 현재 픽셀에 대해 초기화된 모션 벡터(즉, 1206에서 초기화된 모션 필드)를 현재 픽셀에 대응하는 경계를 벗어난 픽셀 위치에 대한 모션 벡터로 사용하는 것이다.Continuing with the processing at 1210, the downscaled derivatives can be used as inputs of the
[00142] 모션 필드가 추정되고 난 후에, 레벨에 대한 현재 모션 필드가 워핑된 레퍼런스 블록들 사이의 추정 모션 필드를 사용하여 업데이트되거나 개선되어, 1210에서의 처리를 완료한다. 예를 들면, 픽셀에 대한 현재 모션 필드는 픽셀별로 각각의 픽셀에 대해 추정된 모션 필드를 추가함으로써 업데이트될 수 있다.[00142] After the motion field is estimated, the current motion field for the level is updated or improved using the estimated motion field between the warped reference blocks to complete the processing at 1210. For example, the current motion field for a pixel can be updated by adding an estimated motion field for each pixel on a pixel-by-pixel basis.
[00143]
프로세스(1100)에서, 각각의 레벨에서 모션 필드가 라그랑지 파라미터 λ에 대해 점점 더 작은 값들을 사용하여 추정되고 개선되도록, 라그랑지 파라미터 λ에 대해 감소하는 값들(decreasing values)을 설정하기 위해 추가 루프가 포함된다. 프로세스(1200)에서, 이 루프는 생략된다. 즉, 도시된 바와 같은 프로세스(1200)에서는, 라그랑지 파라미터 λ에 대해 단 하나의 값만이 현재 처리 레벨에서 모션 필드를 추정하는데 사용된다. 이는 25와 같이, 비교적 작은 값일 수 있다. 예를 들면, 모션의 평활도, 이미지 해상도, 또는 다른 변수들에 따라, 라그랑지 파라미터 λ에 대해 다른 값들도 가능하다.[00143]
In
[00144]
다른 구현예들에서, 프로세스(1200)는 라그랑지 파라미터 λ를 변경하기 위한 추가 루프를 포함할 수 있다. 이러한 루프가 포함되는 구현예에서, 프로세스(1100)에서 1104 및 1110에서의 처리와 관련하여 설명된 바와 같이, 1208에서 레퍼런스 블록들을 워핑하고 1210에서 모션 필드를 추정 및 업데이트하는 것이 라그랑지 파라미터 λ에 대한 모든 값들이 사용될 때까지 반복되도록, 라그랑지 파라미터 λ는 1210에서 모션 필드를 추정하기 전에 설정될 수 있다.[00144]
In other implementations,
[00145]
프로세스(1200)는 1210에서 모션 필드를 추정 및 업데이트한 후에 1212의 질의로 진행한다. 이는 라그랑지 파라미터 λ에 단일 값이 사용될 때 1210의 레벨에서 첫 번째이면서 유일한 모션 필드 추정 및 업데이트의 후에 수행된다. 라그랑지 파라미터 λ에 대한 다수의 값들이 처리 레벨에서 수정될 때, 프로세스(1200)는 라그랑지 파라미터 λ의 최종 값을 사용하여 1210에서 모션 필드를 추정 및 업데이트한 후에 1212의 질의로 진행한다.[00145]
[00146]
1212에서 질의에 응답하여 추가 처리 레벨들이 있는 경우, 프로세스(1200)는 1214로 진행하며, 여기서 모션 필드는 1206에서 시작하여 다음 층을 처리하기 전에 업스케일링된다. 업스케일링은 임의의 알려진 기술에 따라 수행될 수 있다.[00146]
If there are additional processing levels in response to the query at 1212,
[00147] 일반적으로, 광흐름은 먼저 피라미드의 최고 레벨에서 모션 필드을 획득하기 위해 추정된다. 그 후, 모션 필드는 업스케일링되어 다음 레벨에서 광흐름 추정을 초기화하는데 사용된다. 모션 필드를 업스케일링하고, 이를 사용하여 다음 레벨의 광흐름 추정을 초기화하며, 모션 필드를 획득하는 이 프로세스는 1212에서 피라미드의 최하위 레벨에 도달할 때까지(즉, 풀 스케일로 계산된 도함수들에 대해 광흐름 추정이 완료될 때까지) 계속된다.[00147] In general, the light flow is first estimated to obtain a motion field at the highest level of the pyramid. The motion field is then upscaled and used to initialize the light flow estimate at the next level. This process of upscaling the motion field, using it to initialize the next level of light flow estimation, and obtaining the motion field is performed at 1212 until the lowest level of the pyramid is reached (i.e., full-scaled derivatives). Until the light flow estimation is completed.
[00148]
일단 레벨이 레퍼런스 프레임들이 다운스케일링되지 않는 레벨(즉, 레퍼런스 프레임들이 그 원래 해상도에 있음)에 도달하면, 프로세스(1200)는 1216으로 진행한다. 예를 들면, 레벨들의 수는 도 13의 예에서와 같은, 3 개일 수 있다. 1216에서, 워핑된 레퍼런스 블록들은 블렌딩되어 광흐름 레퍼런스 블록(예를 들면, 전술한 바와 같이 )을 형성한다. 1216에서 블렌딩된 워핑된 레퍼런스 블록들은 1210에서 추정된 모션 필드를 사용하여 1208에 기술된 프로세스에 따라 다시 워핑되는 풀 스케일 레퍼런스 블록들일 수 있음에 유의하자. 다시 말하면, 풀 스케일의 레퍼런스 블록들은 2 회 ― 이전 처리 층으로부터의 최초의 업스케일링된 모션 필드를 사용하여 한 번 및 모션 필드가 풀 스케일 레벨로 개선된 후에 다시 ― 워핑될 수 있다. 블렌딩은 1116에서 설명된 처리와 유사하게 시간 선형성 가정을 이용하여 수행될 수 있다. 1116에서 설명되고 도 14에 예로서 도시된 바와 같은 선택적인 폐색 검출은 1216에 블렌딩의 일부로서 통합될 수도 있다.[00148] Once the level reaches a level where the reference frames are not downscaled (ie, the reference frames are at their original resolution), the
[00149]
1216에서 병치된 레퍼런스 블록이 생성되고 난 후에, 프로세스(1200)는 1218로 진행하여 예측을 위한 추가 프레임 부분들(여기서는, 블록들)이 있는지 여부를 결정한다. 있는 경우, 프로세스(1200)는 다음 블록에 대해 1206에서 시작하여 반복한다. 블록들은 스캔 순서로 처리될 수 있다. 1218에서의 질의에 응답하여 고려해야 할 블록이 더 이상 없으면, 프로세스(1200)는 종료된다.[00149]
After the collocated reference block is generated at 1216,
[00150]
도 10을 다시 참조하면, 프로세스(1200)는 프로세스(1000)에서 1006을 구현할 수 있다. 1006에서의 처리의 말미에는, 프로세스(1100), 프로세스(1200), 또는 본 명세서에 기재된 바와 같은 이들의 변형예에 따라 수행되는지에 관계없이, 하나 이상의 워핑된 레퍼런스 프레임 부분들이 존재한다.[00150]
Referring back to FIG. 10,
[00151]
1008에서는, 1006에서 생성된 광흐름 레퍼런스 프레임 부분을 사용하여 예측 프로세스가 수행된다. 인코더에서 예측 프로세스를 수행하는 것은 프레임의 현재 블록에 대한 광흐름 레퍼런스 프레임으로부터 예측 블록을 생성하는 것을 포함할 수 있다. 광흐름 레퍼런스 프레임은 프로세스(1100)에 의해 출력되고 레퍼런스 프레임 버퍼(600)와 같은 레퍼런스 프레임 버퍼에 저장되는 광흐름 레퍼런스 프레임일 수 있다. 광흐름 레퍼런스 프레임은 프로세스(1200)에 의해 출력된 광흐름 레퍼런스 부분들을 결합함으로써 생성된 광흐름 레퍼런스 프레임일 수 있다. 광흐름 레퍼런스 부분들을 결합하는 것은 광흐름 레퍼런스 부분들 각각의 생성에 사용되는 각각의 현재 프레임 부분들의 픽셀 위치들에 따라 광흐름 레퍼런스 부분들(예를 들면, 병치된 레퍼런스 블록들)을 배열하는 것을 포함할 수 있다. 결과적인 광흐름 레퍼런스 프레임은 인코더(400)의 레퍼런스 프레임 버퍼(600)와 같은, 인코더의 레퍼런스 프레임 버퍼에 사용하기 위해 저장될 수 있다.[00151]
At 1008, the prediction process is performed using the portion of the lightflow reference frame generated at 1006. Performing the prediction process at the encoder may include generating the predictive block from the lightflow reference frame for the current block of the frame. The light flow reference frame may be a light flow reference frame output by the
[00152]
인코더에서 예측 블록을 생성하는 것은 광흐름 레퍼런스 프레임에서 병치된 블록을 예측 블록으로서 선택하는 것을 포함할 수 있다. 인코더에서 예측 블록을 생성하는 것은 대신에 현재 블록에 대한 가장 잘 매칭되는 예측 블록을 선택하기 위해 광흐름 레퍼런스 프레임 내에서 모션 검색을 수행하는 것을 포함할 수 있다. 하지만, 예측 블록은 인코더에서 생성되며, 결과적인 잔차는 예컨대 도 4의 인코더(400)와 관련하여 설명된 손실성 인코딩 프로세스(lossy encoding process)를 사용하여 추가로 처리될 수 있다.[00152]
Generating the predictive block at the encoder may include selecting the collocated block in the lightflow reference frame as the predictive block. Generating the predictive block at the encoder may instead include performing a motion search within the lightflow reference frame to select the best matching predictive block for the current block. However, the predictive block is generated at the encoder, and the resulting residual can be further processed using, for example, the lossy encoding process described with respect to
[00153]
인코더에서, 프로세스(1000)는 하나 이상의 인트라 예측 모드들 및 현재 프레임에 대해 이용 가능한 예측 프레임들을 사용하는 단일 및 복합 인터 예측 모드들 둘 모두를 포함하는, 다양한 예측 모드들을 사용하는 현재 블록에 대한 레이트 왜곡 루프(rate distortion loop)의 일부를 형성할 수 있다. 단일 인터 예측 모드는 인터 예측을 위해 단일의 순방향 또는 역방향 레퍼런스 프레임만을 사용한다. 복합 인터 예측 모드는 인터 예측을 위해 순방향 및 역방향 레퍼런스 프레임 양자 모두를 사용한다. 레이트 왜곡 루프에서는, 각각의 예측 모드들을 사용하여 현재 블록을 인코딩하는데 사용되는 레이트(예를 들면, 비트 수)가 인코딩으로 인한 왜곡과 비교된다. 왜곡은 인코딩 전과 디코딩 후의 블록의 픽셀 값들 사이의 차이들로 계산될 수 있다. 차이들은 절대 차이들의 합 또는 프레임들의 블록들에 대한 누적 오류를 캡처하는 다른 측정치일 수 있다.[00153]
At the encoder,
[00154] 몇몇 구현예들에서는, 광흐름 레퍼런스 프레임의 사용을 단일 인터 예측 모드로 제한하는 것이 바람직할 수 있다. 즉, 광흐름 레퍼런스 프레임은 모든 복합 레퍼런스 모드에서는 레퍼런스 프레임으로서 제외될 수 있다. 이는 레이트 왜곡 루프를 단순화할 수 있고, 광흐름 레퍼런스 프레임은 이미 순방향 및 역방향 레퍼런스 프레임 양자 모두를 고려하기 때문에 블록의 인코딩에 대한 추가적인 영향은 거의 없을 것으로 예상된다. 본 명세서에 기재된 구현예에 따르면, 광흐름 레퍼런스 프레임이 현재 프레임을 인코딩하는데 사용하는데 이용 가능한지 여부를 나타내기 위해 플래그가 비트스트림으로 인코딩될 수 있다. 플래그는 일례에서 현재 프레임 내의 임의의 단일 블록이 광흐름 레퍼런스 프레임 블록을 사용하여 인코딩될 때 인코딩될 수 있다. 광흐름 레퍼런스 프레임이 현재 프레임에 이용 가능한 경우, 현재 블록이 광흐름 레퍼런스 프레임을 사용한 인터 예측에 의해 인코딩되었는지 여부를 나타내는 추가 플래그 또는 다른 표시기(예를 들면, 블록 레벨에서)를 포함할 수 있다.[00154] In some implementations, it may be desirable to limit the use of lightflow reference frames to a single inter prediction mode. That is, the light flow reference frame may be excluded as a reference frame in all composite reference modes. This can simplify the rate distortion loop, and since the optical flow reference frame already considers both the forward and reverse reference frames, it is expected that there will be little additional impact on the encoding of the block. According to the implementations described herein, a flag may be encoded into the bitstream to indicate whether a lightflow reference frame is available for use in encoding the current frame. The flag may in one example be encoded when any single block in the current frame is encoded using the lightflow reference frame block. If the lightflow reference frame is available for the current frame, it may include an additional flag or other indicator (eg, at the block level) indicating whether the current block has been encoded by inter prediction using the lightflow reference frame.
[00155] 1008에서의 예측 프로세스는 현재 프레임이 인코딩될 때까지 현재 프레임의 모든 블록들에 대해 반복될 수 있다.[00155] The prediction process at 1008 may be repeated for all blocks of the current frame until the current frame is encoded.
[00156] 디코더에서, 1008에서 광흐름 레퍼런스 프레임 부분을 사용하여 예측 프로세스를 수행하는 것은 광흐름 레퍼런스 프레임이 현재 프레임을 디코딩하는데 이용 가능하다는 결정에 기인할 수 있다. 몇몇 구현예들에서, 결정은 현재 프레임의 적어도 하나의 블록이 광흐름 레퍼런스 프레임 부분을 사용하여 인코딩되었음을 나타내는 플래그를 검사함으로써 이루어진다. 디코더에서 1008에서 예측 프로세스를 수행하는 것은 예측 블록을 생성하는 것을 포함할 수 있다. 예측 블록을 생성하는 것은 블록 헤더에서와 같이, 인코딩된 비트스트림으로부터 디코딩된 인터 예측 모드를 사용하는 것을 포함할 수 있다. 인터 예측 모드를 결정하기 위해 플래그 또는 표시기가 디코딩될 수 있다. 인터 예측 모드가 광흐름 레퍼런스 프레임 모드인 경우(즉, 블록이 광흐름 레퍼런스 프레임 부분을 사용하여 인터 예측된 경우), 디코딩될 현재 블록에 대한 예측 블록은 광흐름 레퍼런스 프레임 부분의 픽셀들 및 모션 벡터 모드 및/또는 모션 벡터를 사용하여 생성된다.[00156] At the decoder, performing the prediction process using the lightflow reference frame portion at 1008 may be due to the determination that the lightflow reference frame is available for decoding the current frame. In some implementations, the decision is made by examining a flag indicating that at least one block of the current frame has been encoded using the lightflow reference frame portion. Performing the prediction process at 1008 at the decoder may include generating a prediction block. Generating the predictive block may include using an inter prediction mode decoded from the encoded bitstream, as in the block header. A flag or indicator can be decoded to determine the inter prediction mode. If the inter prediction mode is the lightflow reference frame mode (ie, the block is inter predicted using the lightflow reference frame portion), the prediction block for the current block to be decoded is the pixels and motion vectors of the lightflow reference frame portion. Generated using mode and / or motion vectors.
[00157]
디코딩의 일부로서 예측 프로세스에 사용하기 위한 광흐름 레퍼런스 프레임을 생성하기 위한 동일한 처리가 인코더에서 수행된 것과 같이, 디코더(500)와 같은 디코더에서 수행될 수 있다. 예를 들면, 플래그가 현재 프레임의 적어도 하나의 블록이 광흐름 레퍼런스 프레임 부분을 사용하여 인코딩되었다는 것을 나타낼 때, 전체 광흐름 레퍼런스 프레임이 생성되어 예측 프로세스에 사용하기 위해 저장될 수 있다. 하지만, 코딩 블록들이 인터 예측 레퍼런스 프레임으로서 병치/광흐름 레퍼런스 프레임을 사용하는 것으로 식별되는 프로세스(1200)의 성능을 제한하도록 프로세스(1200)를 수정함으로써, 디코더에서의 컴퓨테이션 파워가 추가적으로 절약된다. 이는 디코더를 최적화하기 위한 하나의 기술을 예시하는 도면인 도 15를 참조하여 설명될 수 있다.[00157]
The same processing for generating a lightflow reference frame for use in the prediction process as part of the decoding may be performed at a decoder such as
[00158]
도 15에는, 픽셀들이 그리드(1500)를 따라 도시되며, w는 그리드(1500)의 제1 축을 따라 픽셀의 위치를 나타내고 y는 그리드(1500)의 제2 축을 따라 픽셀의 위치를 나타낸다. 그리드(1500)는 현재 프레임의 일부의 픽셀 위치들을 나타낸다. 1008에서 디코더에서 예측 프로세스를 수행하기 위해, 1006 및 1008에서의 처리가 결합될 수 있다. 예를 들면, 1006에서 프로세스를 수행하기 전에, 1008에서의 예측 프로세스는 (예를 들면, 모션 벡터와 같은 헤더 정보로부터) 현재 블록을 인코딩하는 데 사용되는 레퍼런스 블록을 찾는 것을 포함할 수 있다. 도 15에서, 현재 코딩 블록(1502)에 대한 모션 벡터는 내부 파선(1504)으로 나타낸 레퍼런스 블록을 가리킨다. 현재 코딩 블록(1502)은 4x4 픽셀들을 포함한다. 레퍼런스 블록이 현재 프레임이 아니라 레퍼런스 프레임에 위치되기 때문에 레퍼런스 블록의 위치는 파선(1504)으로 도시된다.[00158]
In FIG. 15, pixels are shown along
[00159]
일단 레퍼런스 블록이 위치되고 나면, 레퍼런스 블록이 걸쳐져 있는(즉, 중복되는) 레퍼런스 블록들 모두가 식별된다. 이는 서브픽셀 보간 필터들을 고려하기 위해 각각의 경계부에서 필터 길이의 절반만큼 레퍼런스 블록의 크기를 확장하는 것을 포함할 수 있다. 도 15에서는, 서브픽셀 보간 필터의 길이(L)가 레퍼런스 블록을 외부 파선(1506)으로 나타낸 경계부들까지 확장하는데 사용된다. 비교적 흔하듯이, 모션 벡터는 전체 펠(full-pel) 위치들과는 완벽하게 정렬되지 않는 레퍼런스 블록을 발생시킨다. 도 15에서 어두운 영역은 전체 펠 위치들을 나타낸다. 전체 펠 위치들과 중복되는 레퍼런스 블록들 모두가 식별된다. 블록 크기들이 현재 코딩 블록(1502)과 동일하다고 가정하면, 현재 블록과 병치된 제1 레퍼런스 블록, 제1 레퍼런스 블록의 위에 있는 제2 레퍼런스 블록, 제1 레퍼런스 블록의 좌측으로부터 연장되는 2 개의 레퍼런스 블록들, 및 제2 레퍼런스 블록의 좌측으로부터 연장되는 2 개의 레퍼런스 블록들이 식별된다.[00159]
Once the reference block is located, all of the reference blocks that span the reference block (ie, overlap) are identified. This may include extending the size of the reference block by half the filter length at each boundary to account for subpixel interpolation filters. In FIG. 15, the length L of the subpixel interpolation filter is used to extend the reference block to the boundaries indicated by the outer dashed
[00160]
레퍼런스 블록들이 식별되면, 병치된/광흐름 추정된 레퍼런스 블록들을 생성하기 위해 식별된 레퍼런스 블록들과 병치된 현재 프레임 내의 블록들에 대해서만 프로세스(1200)가 1006에서 수행될 수 있다. 도 15의 예에서는, 이로 인해 6 개의 광흐름 레퍼런스 프레임 부분들이 발생되게 된다.[00160]
Once the reference blocks are identified,
[00161] 이 수정된 프로세스에 따르면, 인코더와 디코더가 동일한 예측자(predictor)를 가지면서도 디코더는 병치된 레퍼런스 프레임 전체를 계산할 필요가 없는 것이 보장된다. 임의의 확장된 경계들을 포함하는 후속 블록에 대한 레퍼런스 블록(들)은 현재 블록의 디코딩 프로세스 중에 식별된 하나 이상의 레퍼런스 블록들과 중첩될 수 있다는 것이 주목된다. 이 경우에, 디코더에서의 컴퓨팅 요건들을 더욱 저감시키기 위해 식별된 블록들 중 임의의 블록에 대해 광흐름 추정이 단 1 회만 수행될 필요가 있다. 다시 말하면, 1216에서 생성된 레퍼런스 블록은 현재 프레임의 다른 블록들을 디코딩하는데 사용하기 위해 저장될 수 있다.[00161] This modified process ensures that the encoder and decoder have the same predictor while the decoder does not need to calculate the entire collocated reference frame. It is noted that the reference block (s) for subsequent blocks that include any extended boundaries may overlap with one or more reference blocks identified during the decoding process of the current block. In this case, light flow estimation only needs to be performed once for any of the identified blocks to further reduce computing requirements at the decoder. In other words, the reference block generated at 1216 may be stored for use in decoding other blocks of the current frame.
[00162]
하지만, 예측 블록은 디코더에서 생성되며, 인코딩된 비트스트림으로부터의 현재 블록에 대한 디코딩된 잔차는 도 5의 디코더(500)와 관련하여 예로서 설명된 바와 같이 재구성 블록을 형성하기 위해 예측 블록과 결합될 수 있다.[00162]
However, the prediction block is generated at the decoder, and the decoded residual for the current block from the encoded bitstream is combined with the prediction block to form a reconstruction block as described by way of example with respect to
[00163]
프로세스(1200) 이후에 또는 프로세스(1200)와 함께 수행되든지 간에, 1008에서의 예측 프로세스는 현재 프레임이 디코딩될 때까지 광흐름 레퍼런스 프레임 부분을 사용하여 인코딩된 현재 프레임의 모든 블록들에 대해 반복될 수 있다. 디코딩 순서로 블록들을 처리할 때, 광흐름 레퍼런스 프레임 부분을 사용하여 인코딩되지 않은 블록은 종래에, 인코딩된 비트스트림으로부터의 블록에 대해 디코딩된 예측 모드에 따라 종래의 방식으로 디코딩될 수 있다.[00163]
Whether performed after or in conjunction with
[00164] 프레임 또는 블록 내의 N 개의 픽셀들에 대해, 광흐름 공식의 해를 구하기 위한 복잡도는 O(N * M)으로 나타낼 수 있는데, 여기서 M은 선형 방정식들을 풀기 위한 반복들의 횟수이다. M은 레벨들의 개수 또는 라그랑지 파라미터 λ의 값들의 개수와 관련이 없다. 대신에, M은 선형 방정식을 푸는 데 있어서 계산 정밀도와 관련이 있다. M의 값이 클수록 정밀도가 더 양호해진다. 이러한 복잡성을 고려하면, 프레임 레벨로부터 서브프레임 레벨(예를 들면, 블록 기반)의 추정으로 진행하는 것은 디코더 복잡도를 감소시키는 위한 몇 가지 옵션들을 제공한다. 첫째, 및 모션 필드 평활도의 제약이 블록 경계부들에서는 완화되기 때문에, 블록의 선형 방정식들을 풀 때 해답으로 수렴하기가 더 용이하며, 그래서 유사한 정밀도에 대해 M이 더 작아진다. 둘째, 모션 벡터의 해를 구하는 것은 평활도 페널티 팩터로 인해 그 인접한 모션 벡터들을 포함한다. 블록 경계부들에서의 모션 벡터들은 더 적은 수의 인접한 모션 벡터들을 가지며, 그래서 보다 빠른 계산들이 이루어진다. 셋째, 및 위에서 논의된 바와 같이, 광흐름은 전체 프레임이 아니라, 인터 예측을 위해 병치된 레퍼런스 프레임을 사용하는 그 코딩 블록들에 의해 식별되는 병치된 레퍼런스 프레임의 블록들의 일부에 대해서만 계산될 필요가 있다.[00164] For N pixels in a frame or block, the complexity for solving the light flow formula can be represented by O (N * M), where M is the number of iterations to solve the linear equations. M is not related to the number of levels or the number of values of the Lagrange parameter λ. Instead, M relates to computational precision in solving linear equations. The larger the value of M, the better the accuracy. Given this complexity, proceeding from the frame level to the estimation of the subframe level (eg, block-based) offers several options for reducing decoder complexity. First, and because the constraints of motion field smoothness are relaxed at block boundaries, it is easier to converge on the solution when solving the linear equations of the block, so M is smaller for similar precision. Second, solving the motion vector includes its adjacent motion vectors due to the smoothness penalty factor. Motion vectors at block boundaries have fewer contiguous motion vectors, so faster calculations are made. Third, and as discussed above, the light flow need not be calculated for the entire frame, but only for a portion of the blocks of the collocated reference frame identified by those coding blocks using the collocated reference frame for inter prediction. have.
[00165]
설명의 단순화를 위해, 프로세스들(1000, 1100, 및 1200) 각각은 일련의 스텝들 또는 동작들로서 도시 및 기재되어 있다. 하지만, 본 발명에 따른 스텝들 또는 동작들은 다양한 순서들로 및/또는 동시에 발생할 수도 있다. 또한, 본 명세서에 제시 및 기재되지 않은 다른 스텝들 또는 동작들도 사용될 수 있다. 또한, 개시된 주제에 따른 방법을 구현하기 위해 예시된 모든 스텝들 또는 동작들이 필요한 것은 아니다.[00165]
For simplicity of explanation, each of the
[00166] 전술한 인코딩 및 디코딩의 양태들은 인코딩 및 디코딩 기술들의 몇몇 예들을 예시한다. 하지만, 인코딩 및 디코딩은 이들 용어들이 청구범위에 사용되는 바와 같이, 데이터의 압축, 압축 해제, 변환, 또는 임의의 다른 처리 또는 변경을 의미할 수 있음을 이해해야 한다.[00166] Aspects of the encoding and decoding described above illustrate some examples of encoding and decoding techniques. However, it should be understood that encoding and decoding may mean compression, decompression, transformation, or any other processing or modification of data, as these terms are used in the claims.
[00167] "예"라는 단어는 본 명세서에서 예, 사례, 또는 예시로서 기능함을 의미하도록 사용된다. 본 명세서에서 "예"로 기재된 임의의 양태 또는 설계는 반드시 다른 양태들 또는 설계들보다 바람직하거나 유익한 것으로 해석될 필요는 없다. 오히려, "예"라는 단어의 사용은 개념을 구체적인 방식으로 제시하기 위한 것이다. 본 출원에서 사용되는 "또는"이라는 용어는 배타적인 "또는"이 아니라 포괄적인 "또는"을 의미하는 것으로 의도된다. 즉, 달리 특정되거나 문맥으로부터 분명하지 않은 한, "X는 A 또는 B를 포함한다"는 자연스런 포괄적인 순열들(permutations) 중 임의의 것을 의미하는 것으로 의도된다. 즉, X가 A를 포함하고; X가 B를 포함하며; 또는 X가 A와 B 양자 모두를 포함하면, "X는 A 또는 B를 포함한다"는 전술한 사례들 중 임의의 것에서 충족된다. 또한, 본 출원 및 첨부된 청구범위에서 사용되는 관사들 "a" 및 "an"은 단수 형태를 지시하도록 달리 특정되거나 문맥으로부터 분명하지 않은 한 "하나 이상"을 의미하는 것으로 일반적으로 해석되어야 한다. 또한, 전체를 통해서 "일 구현예" 또는 "하나의 구현예"라는 용어의 사용은 동일한 실시예 또는 구현예을 의미하도록 기재되지 않는 한 이와 같이 의미하도록 의도되지 않는다.[00167] The word "yes" is used herein to mean functioning as an example, example, or illustration. Any aspect or design described herein as "example" need not necessarily be construed as preferred or advantageous over other aspects or designs. Rather, the use of the word "yes" is intended to present the concept in a concrete manner. The term "or" as used herein is intended to mean a generic "or" rather than an exclusive "or". In other words, unless otherwise specified or apparent from the context, "X includes A or B" is intended to mean any of the natural, comprehensive permutations. That is, X comprises A; X comprises B; Or if X comprises both A and B, then "X comprises A or B" is met in any of the foregoing cases. Also, the articles “a” and “an” used in this application and the appended claims should be generally interpreted to mean “one or more” unless specifically specified or in the context of a singular form. Moreover, the use of the term "one embodiment" or "an embodiment" throughout is not intended to mean this unless it is indicated to mean the same embodiment or embodiment.
[00168]
송신 스테이션(102) 및/또는 수신 스테이션(106)(및 이에 저장되고 및/또는 인코더(400) 및 디코더(500)에 의한 것을 포함하여, 이에 의해 실행되는 알고리즘들, 방법들, 명령들 등)의 구현예들은 하드웨어, 소프트웨어, 또는 이들의 임의의 조합으로 실현될 수 있다. 하드웨어는 예를 들면, 컴퓨터들, 지적 재산권(IP) 코어들, ASICs(application-specific integrated circuits), 프로그래머블 로직 어레이들, 광학 프로세서들, 프로그래머블 로직 컨트롤러들, 마이크로코드(microcode), 마이크로컨트롤러들, 서버들, 마이크로프로세서들, 디지털 신호 프로세서들, 또는 임의의 다른 적절한 회로를 포함할 수 있다. 청구범위에서, "프로세서"라는 용어는 전술한 하드웨어 중 임의의 것을 단독으로 또는 조합하여 포함하는 것으로 이해되어야 한다. "신호"와 "데이터"라는 용어들은 상호 교환적으로 사용된다. 또한, 송신 스테이션(102)과 수신 스테이션(106)의 부분들은 반드시 동일한 방식으로 구현될 필요는 없다.[00168]
Transmitting
[00169]
또한, 일 양태에서, 예를 들면 송신 스테이션(102) 또는 수신 스테이션(106)은 실행될 때 본 명세서에 기재된 각각의 방법들, 알고리즘들, 및/또는 명령들 중 임의의 것을 수행하는 컴퓨터 프로그램을 갖는 범용 컴퓨터 또는 범용 프로세서를 사용하여 구현될 수 있다. 부가적으로 또는 대안적으로, 예를 들면 본 명세서에 기재된 방법들, 알고리즘들, 또는 명령들 중 임의의 것을 수행하기 위한 다른 하드웨어를 포함하는 전용 컴퓨터/프로세서가 사용될 수도 있다.[00169]
Further, in one aspect, for example, the transmitting
[00170]
송신 스테이션(102) 및 수신 스테이션(106)은 예를 들면, 화상 회의 시스템의 컴퓨터들 상에서 구현될 수 있다. 대안적으로, 송신 스테이션(102)은 서버 상에서 구현될 수도 있고, 수신 스테이션(106)은 핸드헬드(hand-held) 통신 디바이스와 같은 서버와 별개인 디바이스 상에서 구현될 수도 있다. 이 경우에, 송신 스테이션(102)은 인코더(400)를 사용하여 콘텐츠를 인코딩된 비디오 신호로 인코딩하고는, 인코딩된 비디오 신호를 통신 디바이스에 전송할 수 있다. 차례로, 그 후, 통신 디바이스는 인코딩된 비디오 신호를 디코더(500)를 사용하여 디코딩할 수 있다. 대안적으로, 통신 디바이스는 통신 디바이스 상에 로컬로 저장된 콘텐츠, 예를 들면, 송신 스테이션(102)에 의해 전송되지 않은 콘텐츠를 디코딩할 수도 있다. 다른 적절한 송신 및 수신 구현 스킴들도 이용 가능하다. 예를 들면, 수신 스테이션(106)은 휴대용 통신 디바이스라기 보다는 일반적으로 고정형의 개인용 컴퓨터일 수 있고 및/또는 인코더(400)를 포함하는 디바이스가 디코더(500)도 또한 포함할 수도 있다.[00170]
The transmitting
[00171] 또한, 본 발명의 구현예들의 전부 또는 일부는 예를 들면, 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체로부터 액세스 가능한 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체는 예를 들면, 임의의 프로세서에 의해 또는 프로세서와 연계하여 사용하기 위한 프로그램을 유형적으로(tangibly) 포함, 저장, 통신, 또는 운반할 수 있는 임의의 디바이스일 수 있다. 매체는 예를 들면, 전자, 자기, 광학, 전자기, 또는 반도체 디바이스일 수 있다. 다른 적절한 매체들도 또한 이용 가능하다.[00171] In addition, all or some of the embodiments of the invention may take the form of a computer program product accessible from a computer usable or computer readable medium, for example. The computer usable or computer readable medium can be any device capable of tangibly containing, storing, communicating, or carrying a program for use by or in conjunction with any processor, for example. . The medium may be, for example, an electronic, magnetic, optical, electromagnetic, or semiconductor device. Other suitable media are also available.
[00172] 추가 구현예들은 이하의 예들에 요약되어 있다.[00172] Further implementations are summarized in the examples below.
[00173] 예 1: 비디오 시퀀스에서 예측될 제1 프레임을 결정하는 단계; 제1 프레임의 순방향 인터 예측을 위해 비디오 시퀀스로부터 제1 레퍼런스 프레임을 결정하는 단계; 제1 프레임의 역방향 인터 예측을 위해 비디오 시퀀스로부터 제2 레퍼런스 프레임을 결정하는 단계; 제1 레퍼런스 프레임 및 제2 레퍼런스 프레임을 사용하여 광흐름 추정을 수행함으로써, 제1 프레임의 인터 예측을 위한 광흐름 레퍼런스 프레임을 생성하는 단계; 및 광흐름 레퍼런스 프레임을 사용하여 제1 프레임에 대한 예측 프로세스를 수행하는 단계를 포함하는 방법.[00173] Example 1: determining a first frame to be predicted in a video sequence; Determining a first reference frame from the video sequence for forward inter prediction of the first frame; Determining a second reference frame from the video sequence for reverse inter prediction of the first frame; Generating an optical flow reference frame for inter prediction of the first frame by performing optical flow estimation using the first reference frame and the second reference frame; And performing a prediction process for the first frame using the lightflow reference frame.
[00174] 예 2: 예 1의 방법에서, 광흐름 레퍼런스 프레임을 생성하는 단계는: 제1 프레임의 각각의 픽셀들에 대해 라그랑지 함수를 최소화함으로써 광흐름 추정을 수행하는 단계를 포함한다.[00174] Example 2: In the method of Example 1, generating the lightflow reference frame includes: performing lightflow estimation by minimizing a Lagrangian function for each pixel of the first frame.
[00175] 예 3: 예 1 또는 2의 방법에서, 광흐름 추정은 제1 프레임의 픽셀들에 대한 각각의 모션 필드를 생성하고, 광흐름 레퍼런스 프레임을 생성하는 단계는: 제1 워핑된 레퍼런스 프레임을 형성하기 위해 모션 필드들을 사용하여 제1 레퍼런스 프레임을 제1 프레임으로 워핑하는 단계; 제2 워핑된 레퍼런스 프레임을 형성하기 위해 모션 필드들을 사용하여 제2 레퍼런스 프레임을 제1 프레임으로 워핑하는 단계; 및 광흐름 레퍼런스 프레임을 형성하기 위해 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임을 블렌딩하는 단계를 포함한다.[00175] Example 3: In the method of example 1 or 2, the light flow estimation generates each motion field for the pixels of the first frame, and the generating the light flow reference frame comprises: forming a first warped reference frame Warping the first reference frame to the first frame using the motion fields; Warping the second reference frame to the first frame using the motion fields to form a second warped reference frame; And blending the first warped reference frame and the second warped reference frame to form a lightflow reference frame.
[00176] 예 4: 예 3의 방법에서, 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임을 블렌딩하는 단계는: 제1 레퍼런스 프레임과 제2 레퍼런스 프레임 사이 및 현재 프레임과 제1 레퍼런스 프레임 및 제2 레퍼런스 프레임 각각의 사이의 거리들을 사용하여, 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임의 병치된 픽셀 값들을 스케일링함으로써 병치된 픽셀 값들을 결합하는 단계를 포함한다.[00176] Example 4: In the method of example 3, the blending of the first warped reference frame and the second warped reference frame comprises: between the first reference frame and the second reference frame and between the current frame and the first reference frame and the second reference. Combining the collocated pixel values by scaling the collocated pixel values of the first warped reference frame and the second warped reference frame using the distances between each of the frames.
[00177] 예 5: 예 3 또는 예 4의 방법에서, 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임을 블렌딩하는 단계는: 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임의 병치된 픽셀 값들을 결합하는 것 또는 제1 워핑된 레퍼런스 프레임 또는 제2 워핑된 레퍼런스 프레임 중 하나의 단일 픽셀 값을 사용하는 것 중 어느 하나에 의해 광흐름 레퍼런스 프레임의 픽셀 위치들을 채우는 단계를 포함한다.[00177] Example 5: In the method of example 3 or example 4, the blending of the first warped reference frame and the second warped reference frame comprises: collocated pixel values of the first warped reference frame and the second warped reference frame; Filling pixel positions of the lightflow reference frame by either combining or using a single pixel value of either the first warped reference frame or the second warped reference frame.
[00178] 예 6: 예 3 내지 예 5 중 어느 하나의 예의 방법에서, 방법은: 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임을 사용하여 제1 레퍼런스 프레임에서 폐색을 검출하는 단계를 더 포함하고, 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임을 블렌딩하는 단계는: 제2 워핑된 레퍼런스 프레임으로부터의 픽셀 값들로 폐색에 대응하는 광흐름 레퍼런스 프레임의 픽셀 위치들을 채우는 단계를 포함한다.[00178] Example 6: In the method of any of examples 3-5, the method further comprises: detecting an occlusion in the first reference frame using the first warped reference frame and the second warped reference frame, Blending the first warped reference frame and the second warped reference frame includes: filling pixel locations of the lightflow reference frame corresponding to the occlusion with pixel values from the second warped reference frame.
[00179] 예 7: 예 1 내지 예 6 중 어느 하나의 예의 방법에서, 예측 프로세스를 수행하는 단계는: 제1 프레임의 블록들의 단일 레퍼런스 인터 예측을 위해서만 광흐름 레퍼런스 프레임을 사용하는 단계를 포함한다.[00179] Example 7: In the method of any of examples 1-6, performing the prediction process comprises: using the lightflow reference frame only for single reference inter prediction of blocks of the first frame.
[00180] 예 8: 예 1 내지 예 7 중 어느 하나의 예의 방법에서, 제1 레퍼런스 프레임은 제1 프레임의 순방향 인터 예측에 이용 가능한 제1 프레임에 대해 비디오 시퀀스의 디스플레이 순서로 가장 가까운 재구성된 프레임이고, 제2 레퍼런스 프레임은 제1 프레임의 역방향 인터 예측에 이용 가능한 제1 프레임에 대해 디스플레이 순서로 가장 가까운 재구성된 프레임이다.[00180] Example 8: The method of any of examples 1-7, wherein the first reference frame is the closest reconstructed frame in display order of the video sequence relative to the first frame available for forward inter prediction of the first frame; The two reference frames are the reconstructed frames closest in display order to the first frame available for reverse inter prediction of the first frame.
[00181] 예 9: 예 1 내지 예 8 중 어느 하나의 예의 방법에서, 예측 프로세스를 수행하는 단계는: 제1 프레임의 제1 블록과 병치된 광흐름 레퍼런스 프레임 내의 레퍼런스 블록을 결정하는 단계; 및 레퍼런스 블록과 제1 블록의 잔차를 인코딩하는 단계를 포함한다.[00181] Example 9: In the method of any one of examples 1-8, performing the prediction process comprises: determining a reference block in a lightflow reference frame in parallel with the first block of the first frame; And encoding a residual of the reference block and the first block.
[00182] 예 10: 장치는: 프로세서; 및 방법을 수행하기 위해 프로세서에 의해 실행 가능한 명령들을 포함하는 비일시적 저장 매체를 포함하고, 방법은: 비디오 시퀀스에서 예측될 제1 프레임을 결정하는 단계; 제1 프레임의 순방향 인터 예측을 위한 제1 레퍼런스 프레임의 이용 가능성 및 제1 프레임의 역방향 인터 예측을 위한 제2 레퍼런스 프레임의 이용 가능성을 결정하는 단계; 제1 레퍼런스 프레임 및 제2 레퍼런스 프레임 양자 모두의 이용 가능성을 결정하는 것에 응답하여: 광흐름 추정을 사용하여 제1 레퍼런스 프레임과 제2 레퍼런스 프레임을 사용하여 제1 프레임의 픽셀들에 대한 각각의 모션 필드를 생성하는 단계; 제1 워핑된 레퍼런스 프레임을 형성하기 위해 모션 필드들을 사용하여 제1 레퍼런스 프레임을 제1 프레임으로 워핑하는 단계; 제2 워핑된 레퍼런스 프레임을 형성하기 위해 모션 필드들을 사용하여 제2 레퍼런스 프레임을 제1 프레임으로 워핑하는 단계; 및 제1 프레임의 블록들의 인터 예측을 위한 광흐름 레퍼런스 프레임을 형성하기 위해 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임을 블렌딩하는 단계를 포함한다.[00182] Example 10 An apparatus includes: a processor; And a non-transitory storage medium comprising instructions executable by the processor to perform the method, the method comprising: determining a first frame to be predicted in a video sequence; Determining availability of the first reference frame for forward inter prediction of the first frame and availability of the second reference frame for reverse inter prediction of the first frame; In response to determining the availability of both the first reference frame and the second reference frame: each motion for the pixels of the first frame using the first reference frame and the second reference frame using the light flow estimation Creating a field; Warping the first reference frame to the first frame using the motion fields to form a first warped reference frame; Warping the second reference frame to the first frame using the motion fields to form a second warped reference frame; And blending the first warped reference frame and the second warped reference frame to form an optical flow reference frame for inter prediction of the blocks of the first frame.
[00183] 예 11: 예 10의 장치에서, 방법은: 광흐름 레퍼런스 프레임을 사용하여 제1 프레임에 대한 예측 프로세스를 수행하는 단계를 더 포함한다.[00183] Example 11: In the apparatus of Example 10, the method further comprises: performing a prediction process for the first frame using the lightflow reference frame.
[00184] 예 12: 예 10 또는 예 11의 장치에서, 방법은: 제1 프레임의 블록들의 단일 레퍼런스 인터 예측을 위해서만 광흐름 레퍼런스 프레임을 사용하는 단계를 더 포함한다.[00184] Example 12: The apparatus of example 10 or 11, the method further comprising using the lightflow reference frame only for single reference inter prediction of blocks of the first frame.
[00185] 예 13: 예 10 내지 예 12 중 어느 하나의 예의 장치에서, 각각의 모션 필드를 생성하는 단계는: 제1 레퍼런스 프레임과 제2 레퍼런스 프레임을 사용하여 제1 프레임의 각각의 픽셀들에 대한 라그랑지 함수의 출력을 계산하는 단계를 포함한다.[00185] Example 13: In the apparatus of any of Examples 10-12, generating each motion field comprises: a Lagrange for each pixel of the first frame using the first reference frame and the second reference frame. Calculating the output of the function.
[00186] 예 14: 예 13의 장치에서, 라그랑지 함수의 출력을 계산하는 단계는: 라그랑지 파라미터에 대한 제1 값을 사용하여 현재 프레임의 픽셀들에 대한 제1 모션 필드들의 세트를 계산하는 단계; 및 현재 프레임의 픽셀들에 대한 개선된 모션 필드들의 세트를 계산하기 위해 라그랑지 파라미터에 대한 제2 값을 사용하는 라그랑지 함수에 대한 입력으로서 제1 모션 필드들의 세트를 사용하는 단계를 포함하고, 라그랑지 파라미터에 대한 제2 값은 라그랑지 파라미터에 대한 제1 값보다 더 작고, 제1 워핑된 레퍼런스 프레임 및 제2 워핑된 레퍼런스는 개선된 모션 필드들의 세트를 사용하여 워핑된다.[00186] Example 14: In the apparatus of Example 13, calculating the output of the Lagrange function includes: calculating a first set of motion fields for pixels of the current frame using the first value for the Lagrange parameter; And using the first set of motion fields as input to a Lagrange function using the second value for the Lagrange parameter to calculate a set of improved motion fields for the pixels of the current frame, The second value for the Lagrange parameter is smaller than the first value for the Lagrange parameter, and the first warped reference frame and the second warped reference are warped using the improved set of motion fields.
[00187] 예 15: 장치는: 프로세서; 및 방법을 수행하기 위해 프로세서에 의해 실행 가능한 명령들을 포함하는 비일시적 저장 매체를 포함하고, 방법은: 광흐름 추정을 위해 제1 처리 레벨에서 제1 프레임의 픽셀들에 대한 모션 필드들을 초기화함으로써 ― 제1 처리 레벨은 제1 프레임 내의 다운스케일된 모션을 나타내고 다수의 레벨들 중 하나의 레벨을 포함함 ― , 비디오 시퀀스로부터의 제1 레퍼런스 프레임 및 비디오 시퀀스의 제2 레퍼런스 프레임을 사용하여 비디오 시퀀스의 제1 프레임의 인터 예측을 위한 광흐름 레퍼런스 프레임을 생성하는 단계; 다수의 레벨들 중 각각의 레벨에 대해: 제1 워핑된 레퍼런스 프레임을 형성하기 위해 모션 필드들을 사용하여 제1 레퍼런스 프레임을 제1 프레임으로 워핑하는 단계; 제2 워핑된 레퍼런스 프레임을 형성하기 위해 모션 필드들을 사용하여 제2 레퍼런스 프레임을 제1 프레임으로 워핑하는 단계; 광흐름 추정을 사용하여 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임 사이의 모션 필드들을 추정하는 단계; 및 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임 사이의 모션 필드들을 사용하여 제1 프레임의 픽셀들에 대한 모션 필드들을 업데이트하는 단계; 다수의 레벨들 중 최종 레벨에 대해: 최종의 제1 워핑된 레퍼런스 프레임을 형성하기 위해 업데이트된 모션 필드들을 사용하여 제1 레퍼런스 프레임을 제1 프레임으로 워핑하는 단계; 최종의 제2 워핑된 레퍼런스 프레임을 형성하기 위해 업데이트된 모션 필드들을 사용하여 제2 레퍼런스 프레임을 제1 프레임으로 워핑하는 단계; 및 광흐름 레퍼런스 프레임을 형성하기 위해 최종의 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임을 블렌딩하는 단계를 포함한다. [00187] Example 15 An apparatus includes: a processor; And a non-transitory storage medium comprising instructions executable by the processor to perform the method, the method comprising: initializing motion fields for pixels of a first frame at a first processing level for light flow estimation; The first processing level represents downscaled motion within the first frame and includes one of a plurality of levels—a first reference frame from the video sequence and a second reference frame of the video sequence; Generating an optical flow reference frame for inter prediction of the first frame; For each of the plurality of levels: warping the first reference frame to the first frame using motion fields to form a first warped reference frame; Warping the second reference frame to the first frame using the motion fields to form a second warped reference frame; Estimating motion fields between the first warped reference frame and the second warped reference frame using light flow estimation; And updating the motion fields for the pixels of the first frame using the motion fields between the first warped reference frame and the second warped reference frame; For a final level of the plurality of levels: warping the first reference frame to the first frame using the updated motion fields to form a final first warped reference frame; Warping the second reference frame to the first frame using the updated motion fields to form a final second warped reference frame; And blending the final first warped reference frame and the second warped reference frame to form a lightflow reference frame.
[00188] 예 16: 예 15의 장치에서, 광흐름 추정은 프레임의 각각의 픽셀들에 대해 라그랑지 함수를 사용한다.[00188] Example 16: In the apparatus of example 15, the light flow estimation uses a Lagrange function for each pixel of the frame.
[00189] 예 17: 예 16의 장치에서, 방법은 다수의 레벨들 중 각각의 레벨에 대해: 제1 레퍼런스 프레임을 워핑하는 단계, 제2 레퍼런스 프레임을 워핑하는 단계, 모션 필드들을 추정하는 단계, 및 모션 필드들을 업데이트하는 단계의 제1 반복(first iteration)에 대해 라그랑지 함수의 라그랑지 파라미터를 최대 값으로 초기화하는 단계; 및 라그랑지 파라미터에 대해 한 세트의 가능한 값들 중 점점 더 작은 값들을 사용하여, 제1 레퍼런스 프레임을 워핑하는 단계, 제2 레퍼런스 프레임을 워핑하는 단계, 모션 필드들을 추정하는 단계, 및 모션 필드들을 업데이트하는 단계의 추가 반복(additional iteration)을 수행하는 단계를 더 포함한다.[00189] Example 17: The apparatus of example 16, the method further comprises: for each of the plurality of levels: warping a first reference frame, warping a second reference frame, estimating motion fields, and a motion field. Initializing a Lagrangian parameter of the Lagrange function to a maximum value for a first iteration of updating them; And using the smaller and smaller of a set of possible values for the Lagrange parameter, warping the first reference frame, warping the second reference frame, estimating motion fields, and updating the motion fields. The method further includes performing additional iteration of the step.
[00190] 예 18: 예 16 또는 예 17의 장치에서, 모션 필드들을 추정하는 단계는: 수평축, 수직축, 및 시간에 대해 제1 워핑된 레퍼런스 프레임 및 제2 워핑된 레퍼런스 프레임의 픽셀 값들의 도함수들을 계산하는 단계; 레벨이 최종 레벨과 상이하다는 것에 응답하여 도함수들을 다운스케일링하는 단계; 도함수들을 사용하여 라그랑지 함수를 나타내는 선형 방정식들을 푸는 단계를 포함한다.[00190] Example 18: In the apparatus of example 16 or 17, estimating the motion fields comprises: calculating derivatives of pixel values of the first warped reference frame and the second warped reference frame with respect to the horizontal axis, the vertical axis, and time. ; Downscaling the derivatives in response to the level being different than the final level; Solving the linear equations representing the Lagrange function using the derivatives.
[00191] 예 19: 예 15 내지 예 18 중 어느 하나의 예의 장치에서, 방법은 광흐름 레퍼런스 프레임을 사용하여 제1 프레임을 인터 예측하는 단계를 더 포함한다.[00191] Example 19: The apparatus of any of examples 15-18, the method further comprising inter predicting the first frame using the lightflow reference frame.
[00192] 예 20: 예 15 내지 예 19 중 어느 하나의 예의 장치에서, 프로세서와 비일시적 저장 매체는 디코더를 형성한다.[00192] Example 20: The apparatus of any of examples 15-19, wherein the processor and the non-transitory storage medium form a decoder.
[00193] 전술한 실시예들, 구현예들, 및 양태들은 본 발명의 이해를 수월하게 하기 위해 기재되었으며 본 발명을 제한하지 않는다. 그 반대로, 본 발명은 첨부된 청구항들의 범위 내에 포함된 다양한 변형들 및 등가의 배열들을 포함하도록 의도되며, 이러한 범위는 법에 의해 허용되는 모든 이러한 변형들 및 동등한 구조를 포괄하도록 가장 넓은 해석에 따르게 된다.[00193] The foregoing embodiments, embodiments, and aspects have been described to facilitate understanding of the invention and do not limit the invention. On the contrary, the invention is intended to cover various modifications and equivalent arrangements included within the scope of the appended claims, which scope is to be accorded the widest interpretation so as to encompass all such modifications and equivalent structures permitted by law. do.
Claims (21)
상기 제1 프레임의 순방향 인터 예측(forward inter prediction)을 위해 상기 비디오 시퀀스로부터 제1 레퍼런스 프레임(reference frame)을 결정하는 단계;
상기 제1 프레임의 역방향 인터 예측을 위해 상기 비디오 시퀀스로부터 제2 레퍼런스 프레임을 결정하는 단계;
상기 제1 레퍼런스 프레임 및 상기 제2 레퍼런스 프레임을 사용하여 광흐름 추정(optical flow estimation)을 수행함으로써, 상기 제1 프레임 부분의 인터 예측을 위한 광흐름 레퍼런스 프레임 부분을 생성하는 단계; 및
광흐름 레퍼런스 프레임 부분을 사용하여 상기 제1 프레임 부분에 대한 예측 프로세스를 수행하는 단계를 포함하는,
방법.Determining a first frame portion of a first frame to be predicted, wherein the first frame is in a video sequence;
Determining a first reference frame from the video sequence for forward inter prediction of the first frame;
Determining a second reference frame from the video sequence for reverse inter prediction of the first frame;
Generating an optical flow reference frame portion for inter prediction of the first frame portion by performing optical flow estimation using the first reference frame and the second reference frame; And
Performing a prediction process for the first frame portion using an optical flow reference frame portion,
Way.
상기 광흐름 레퍼런스 프레임 부분을 생성하는 단계는:
상기 제1 프레임 부분의 각각의 픽셀들에 대해 라그랑지 함수(Lagrangian function)를 최소화함으로써 상기 광흐름 추정을 수행하는 단계를 포함하는,
방법.The method of claim 1,
Generating the light flow reference frame portion may include:
Performing the light flow estimation by minimizing a Lagrangian function for each pixel of the first frame portion,
Way.
상기 광흐름 추정은 상기 제1 프레임 부분의 픽셀들에 대한 각각의 모션 필드(motion field)를 생성하고,
상기 광흐름 레퍼런스 프레임 부분을 생성하는 단계는:
제1 워핑된 레퍼런스 프레임 부분을 형성하기 위해, 상기 모션 필드들을 사용하여 상기 제1 프레임 부분과 병치된(co-located) 상기 제1 레퍼런스 프레임의 픽셀들을 상기 제1 프레임 부분으로 워핑하는(warping) 단계;
제2 워핑된 레퍼런스 프레임 부분을 형성하기 위해, 상기 모션 필드들을 사용하여 상기 제1 프레임 부분과 병치된 상기 제2 레퍼런스 프레임의 픽셀들을 상기 제1 프레임 부분으로 워핑하는 단계; 및
상기 광흐름 레퍼런스 프레임 부분을 형성하기 위해 상기 제1 워핑된 레퍼런스 프레임 부분과 상기 제2 워핑된 레퍼런스 프레임 부분을 블렌딩하는(blending) 단계를 포함하는,
방법.The method according to claim 1 or 2,
The light flow estimate generates respective motion fields for the pixels of the first frame portion,
Generating the light flow reference frame portion may include:
Warping pixels of the first reference frame co-located with the first frame portion to the first frame portion using the motion fields to form a first warped reference frame portion. step;
Warping pixels of the second reference frame in parallel with the first frame portion to the first frame portion using the motion fields to form a second warped reference frame portion; And
Blending the first warped reference frame portion and the second warped reference frame portion to form the lightflow reference frame portion;
Way.
상기 제1 워핑된 레퍼런스 프레임 부분과 상기 제2 워핑된 레퍼런스 프레임 부분을 블렌딩하는 단계는:
상기 제1 레퍼런스 프레임과 상기 제2 레퍼런스 프레임 사이 및 상기 현재 프레임과 상기 제1 레퍼런스 프레임 및 상기 제2 레퍼런스 프레임 각각의 사이의 거리들을 사용하여, 상기 제1 워핑된 레퍼런스 프레임 부분과 상기 제2 워핑된 레퍼런스 프레임 부분의 병치된 픽셀 값들을 스케일링함으로써 상기 병치된 픽셀 값들을 결합하는 단계를 포함하는,
방법.The method of claim 3, wherein
Blending the first warped reference frame portion and the second warped reference frame portion includes:
The first warped reference frame portion and the second warping using distances between the first reference frame and the second reference frame and between the current frame and each of the first reference frame and the second reference frame. Combining the juxtaposed pixel values by scaling juxtaposed pixel values of a portion of the referenced reference frame,
Way.
상기 제1 워핑된 레퍼런스 프레임 부분과 상기 제2 워핑된 레퍼런스 프레임 부분을 블렌딩하는 단계는:
상기 제1 워핑된 레퍼런스 프레임 부분과 상기 제2 워핑된 레퍼런스 프레임 부분의 병치된 픽셀 값들을 결합하는 것 또는 상기 제1 워핑된 레퍼런스 프레임 부분 또는 상기 제2 워핑된 레퍼런스 프레임 부분 중 하나의 단일 픽셀 값을 사용하는 것 중 어느 하나에 의해, 상기 광흐름 레퍼런스 프레임 부분의 픽셀 위치들을 채우는(populating) 단계를 포함하는,
방법.The method according to claim 3 or 4,
Blending the first warped reference frame portion and the second warped reference frame portion includes:
Combining the collocated pixel values of the first warped reference frame portion and the second warped reference frame portion or a single pixel value of one of the first warped reference frame portion or the second warped reference frame portion Populating pixel positions of the lightflow reference frame portion by using one of
Way.
상기 제1 프레임 부분은 상기 제1 프레임의 현재 블록 또는 상기 제1 프레임 중 하나를 포함하고, 상기 광흐름 레퍼런스 프레임 부분은, 상기 제1 프레임 부분이 상기 현재 블록을 포함할 때에는 블록이고, 상기 제1 프레임 부분이 상기 제1 프레임을 포함할 때에는 전체 프레임인,
방법.The method according to any one of claims 1 to 5,
The first frame portion includes a current block of the first frame or one of the first frames, and the light flow reference frame portion is a block when the first frame portion includes the current block, and the first frame portion includes: When one frame part includes the first frame,
Way.
상기 제1 레퍼런스 프레임은 상기 제1 프레임의 순방향 인터 예측에 이용 가능한 상기 제1 프레임에 대해 상기 비디오 시퀀스의 디스플레이 순서로 가장 가까운 재구성된 프레임이고, 상기 제2 레퍼런스 프레임은 상기 제1 프레임의 역방향 인터 예측에 이용 가능한 상기 제1 프레임에 대해 상기 디스플레이 순서로 가장 가까운 재구성된 프레임인,
방법.The method according to any one of claims 1 to 6,
The first reference frame is a reconstructed frame closest to the first frame available for forward inter prediction of the first frame in display order of the video sequence, and the second reference frame is a reverse inter frame of the first frame. The reconstructed frame nearest to the display order for the first frame available for prediction,
Way.
상기 제1 프레임 부분은 디코딩될 현재 블록이고,
상기 예측 프로세스를 수행하는 단계는:
레퍼런스 블록 위치를 식별하기 위해 상기 현재 블록을 인코딩하는 데 사용되는 모션 벡터를 사용하는 단계;
서브픽셀 보간 필터(subpixel interpolation filter) 길이만큼 상기 레퍼런스 블록의 경계부들(boundaries)을 조정하는 단계; 및
상기 레퍼런스 블록의 조정된 경계부들 내의 픽셀들을 포함하는 블록들을 식별하는 단계를 포함하고,
상기 광흐름 레퍼런스 프레임 부분을 생성하는 단계는, 상기 제1 프레임의 나머지 블록들에 대해서는 광흐름 추정을 수행함이 없이, 상기 식별된 블록들과 병치된 상기 제1 프레임의 블록들에 대해 광흐름 추정을 수행하는 단계를 포함하는,
방법.The method according to any one of the preceding claims.
The first frame portion is a current block to be decoded,
Performing the prediction process includes:
Using the motion vector used to encode the current block to identify a reference block location;
Adjusting boundaries of the reference block by a length of a subpixel interpolation filter; And
Identifying blocks comprising pixels in the adjusted boundaries of the reference block,
The generating of the light flow reference frame portion may include: light flow estimation on blocks of the first frame collocated with the identified blocks without performing light flow estimation on the remaining blocks of the first frame. Comprising the steps of:
Way.
상기 제1 프레임 부분은 인코딩될 현재 블록이고,
상기 광흐름 레퍼런스 프레임 부분을 생성하는 단계는 광흐름 레퍼런스 프레임에 대해 각각의 병치된 레퍼런스 블록을 생성하기 위해, 상기 현재 블록으로서 상기 제1 프레임의 각각의 블록에 대해 광흐름 추정을 수행하는 단계를 포함하며,
상기 예측 프로세스를 수행하는 단계는:
상기 병치된 레퍼런스 블록들을 그들 각각의 픽셀 위치들에 결합함으로써 상기 광흐름 레퍼런스 프레임을 형성하는 단계;
상기 광흐름 레퍼런스 프레임을 레퍼런스 프레임 버퍼에 저장하는 단계; 및
상기 현재 블록에 대한 모션 검색을 위해 상기 광흐름 레퍼런스 프레임을 사용하는 단계를 포함하는,
방법.The method according to any one of claims 1 to 8,
The first frame portion is a current block to be encoded,
Generating the light flow reference frame portion may include performing light flow estimation on each block of the first frame as the current block to generate each collocated reference block for the light flow reference frame. Include,
Performing the prediction process includes:
Forming the lightflow reference frame by combining the juxtaposed reference blocks to their respective pixel positions;
Storing the optical flow reference frame in a reference frame buffer; And
Using the lightflow reference frame for motion search for the current block,
Way.
프로세서; 및
방법을 수행하기 위해 상기 프로세서에 의해 실행 가능한 명령들을 포함하는 비일시적 저장 매체를 포함하고,
상기 방법은:
비디오 시퀀스에서 예측될 제1 프레임을 결정하는 단계;
상기 제1 프레임의 순방향 인터 예측을 위한 제1 레퍼런스 프레임의 이용 가능성 및 상기 제1 프레임의 역방향 인터 예측을 위한 제2 레퍼런스 프레임의 이용 가능성을 결정하는 단계;
상기 제1 레퍼런스 프레임 및 상기 제2 레퍼런스 프레임 양자 모두의 이용 가능성을 결정하는 것에 응답하여:
상기 제1 레퍼런스 프레임과 상기 제2 레퍼런스 프레임을 광흐름 추정 프로세스에 대한 입력으로 사용하여, 제1 프레임 부분의 픽셀들에 대한 각각의 모션 필드를 생성하는 단계;
제1 워핑된 레퍼런스 프레임 부분을 형성하기 위해, 상기 모션 필드들을 사용하여 제1 레퍼런스 프레임 부분을 상기 제1 프레임 부분으로 워핑하는 단계 ― 상기 제1 레퍼런스 프레임 부분은 상기 제1 프레임 부분의 픽셀들과 병치된 상기 제1 레퍼런스 프레임의 픽셀들을 포함함 ― ;
제2 워핑된 레퍼런스 프레임 부분을 형성하기 위해, 상기 모션 필드들을 사용하여 제2 레퍼런스 프레임 부분을 상기 제1 프레임 부분으로 워핑하는 단계 ― 상기 제2 레퍼런스 프레임 부분은 상기 제1 프레임 부분의 픽셀들과 병치된 상기 제2 레퍼런스 프레임의 픽셀들을 포함함 ― ; 및
상기 제1 프레임의 블록의 인터 예측을 위한 광흐름 레퍼런스 프레임 부분을 형성하기 위해, 상기 제1 워핑된 레퍼런스 프레임 부분과 상기 제2 워핑된 레퍼런스 프레임 부분을 블렌딩하는 단계를 포함하는,
장치.As a device,
A processor; And
A non-transitory storage medium comprising instructions executable by the processor to perform a method,
The method is:
Determining a first frame to be predicted in the video sequence;
Determining availability of a first reference frame for forward inter prediction of the first frame and availability of a second reference frame for reverse inter prediction of the first frame;
In response to determining the availability of both the first reference frame and the second reference frame:
Using the first reference frame and the second reference frame as inputs to a light flow estimation process, generating respective motion fields for the pixels of the first frame portion;
Warping a first reference frame portion to the first frame portion using the motion fields to form a first warped reference frame portion, the first reference frame portion being equal to the pixels of the first frame portion; Includes pixels of the collocated first reference frame;
Warping a second reference frame portion into the first frame portion using the motion fields to form a second warped reference frame portion, wherein the second reference frame portion is coupled with the pixels of the first frame portion; Includes pixels of the collocated second reference frame; And
Blending the first warped reference frame portion and the second warped reference frame portion to form an optical flow reference frame portion for inter prediction of the block of the first frame;
Device.
상기 방법은:
상기 광흐름 레퍼런스 프레임 부분을 사용하여 상기 제1 프레임의 블록에 대해 예측 프로세스를 수행하는 단계를 더 포함하는,
장치.The method of claim 10,
The method is:
Performing a prediction process on the block of the first frame using the lightflow reference frame portion;
Device.
상기 방법은:
상기 제1 프레임의 블록들의 단일 레퍼런스 인터 예측을 위해서만 상기 광흐름 레퍼런스 프레임 부분을 사용하는 단계를 더 포함하는,
장치.The method according to claim 10 or 11, wherein
The method is:
Using the lightflow reference frame portion only for single reference inter prediction of blocks of the first frame,
Device.
상기 각각의 모션 필드를 생성하는 단계는:
상기 제1 레퍼런스 프레임 부분 및 상기 제2 레퍼런스 프레임 부분을 사용하여 상기 제1 프레임 부분의 각각의 픽셀들에 대한 라그랑지 함수의 출력을 계산하는 단계를 포함하는,
장치.The method according to any one of claims 10 to 12,
Generating each motion field includes:
Calculating an output of a Lagrange function for each pixel of the first frame portion using the first reference frame portion and the second reference frame portion;
Device.
상기 라그랑지 함수의 출력을 계산하는 단계는:
라그랑지 파라미터에 대한 제1 값을 사용하여 상기 제1 프레임 부분의 픽셀들에 대한 제1 모션 필드들의 세트를 계산하는 단계; 및
상기 제1 프레임 부분의 픽셀들에 대한 개선된(refined) 모션 필드들의 세트를 계산하기 위해, 상기 라그랑지 파라미터에 대한 제2 값을 사용하는 상기 라그랑지 함수에 대한 입력으로서 상기 제1 모션 필드들의 세트를 사용하는 단계를 포함하고,
상기 라그랑지 파라미터에 대한 제2 값은 상기 라그랑지 파라미터에 대한 제1 값보다 더 작고, 상기 제1 워핑된 레퍼런스 프레임 및 상기 제2 워핑된 레퍼런스 프레임은 상기 개선된 모션 필드들의 세트를 사용하여 워핑되는,
장치.The method of claim 13,
Computing the output of the Lagrange function is:
Calculating a first set of motion fields for pixels of the first frame portion using the first value for the Lagrange parameter; And
To calculate the set of refined motion fields for the pixels of the first frame portion, the input of the first motion fields as input to the Lagrange function using a second value for the Lagrange parameter. Using the set,
The second value for the Lagrange parameter is less than the first value for the Lagrange parameter, wherein the first warped reference frame and the second warped reference frame are warped using the improved set of motion fields. felled,
Device.
프로세서; 및
방법을 수행하기 위해 상기 프로세서에 의해 실행 가능한 명령들을 포함하는 비일시적 저장 매체를 포함하고,
상기 방법은:
광흐름 추정을 위해 제1 처리 레벨에서 제1 프레임 부분의 픽셀들에 대한 모션 필드들을 초기화함으로써 ― 상기 제1 처리 레벨은 상기 제1 프레임 부분 내의 다운스케일링된 모션을 나타내고 다수의 레벨들 중 하나의 레벨을 포함함 ― , 비디오 시퀀스로부터의 제1 레퍼런스 프레임 부분 및 상기 비디오 시퀀스의 제2 레퍼런스 프레임 부분을 사용하여 상기 비디오 시퀀스의 제1 프레임의 블록의 인터 예측을 위한 광흐름 레퍼런스 프레임 부분을 생성하는 단계;
상기 다수의 레벨들 중 각각의 레벨에 대해:
제1 워핑된 레퍼런스 프레임 부분을 형성하기 위해 상기 모션 필드들을 사용하여 상기 제1 레퍼런스 프레임 부분을 상기 제1 프레임 부분으로 워핑하는 단계;
제2 워핑된 레퍼런스 프레임 부분을 형성하기 위해 상기 모션 필드들을 사용하여 상기 제2 레퍼런스 프레임 부분을 상기 제1 프레임 부분으로 워핑하는 단계;
상기 광흐름 추정을 사용하여 상기 제1 워핑된 레퍼런스 프레임 부분과 상기 제2 워핑된 레퍼런스 프레임 부분 사이의 모션 필드들을 추정하는 단계; 및
상기 제1 워핑된 레퍼런스 프레임 부분과 상기 제2 워핑된 레퍼런스 프레임 부분 사이의 상기 모션 필드들을 사용하여 상기 제1 프레임 부분의 픽셀들에 대한 상기 모션 필드들을 업데이트하는 단계;
상기 다수의 레벨들 중 최종 레벨에 대해:
최종의 제1 워핑된 레퍼런스 프레임 부분을 형성하기 위해 상기 업데이트된 모션 필드들을 사용하여 상기 제1 레퍼런스 프레임 부분을 상기 제1 프레임 부분으로 워핑하는 단계;
최종의 제2 워핑된 레퍼런스 프레임 부분을 형성하기 위해 상기 업데이트된 모션 필드들을 사용하여 상기 제2 레퍼런스 프레임 부분을 상기 제1 프레임 부분으로 워핑하는 단계; 및
상기 광흐름 레퍼런스 프레임 부분을 형성하기 위해 상기 최종의 제1 워핑된 레퍼런스 프레임 부분과 상기 제2 워핑된 레퍼런스 프레임 부분을 블렌딩하는 단계를 포함하는,
장치.As a device,
A processor; And
A non-transitory storage medium comprising instructions executable by the processor to perform a method,
The method is:
By initializing motion fields for pixels of a first frame portion at a first processing level for light flow estimation, wherein the first processing level represents downscaled motion within the first frame portion and indicates one of a plurality of levels. Including a level, wherein the first reference frame portion from the video sequence and the second reference frame portion of the video sequence are used to generate a light flow reference frame portion for inter prediction of a block of the first frame of the video sequence. step;
For each level of the plurality of levels:
Warping the first reference frame portion to the first frame portion using the motion fields to form a first warped reference frame portion;
Warping the second reference frame portion to the first frame portion using the motion fields to form a second warped reference frame portion;
Estimating motion fields between the first warped reference frame portion and the second warped reference frame portion using the light flow estimation; And
Updating the motion fields for pixels of the first frame portion using the motion fields between the first warped reference frame portion and the second warped reference frame portion;
For the final level of the plurality of levels:
Warping the first reference frame portion to the first frame portion using the updated motion fields to form a final first warped reference frame portion;
Warping the second reference frame portion to the first frame portion using the updated motion fields to form a final second warped reference frame portion; And
Blending the final warped reference frame portion with the second warped reference frame portion to form the lightflow reference frame portion;
Device.
상기 광흐름 추정은 상기 제1 프레임 부분의 각각의 픽셀들에 대해 라그랑지 함수를 사용하는,
장치.The method of claim 15,
The light flow estimation uses a Lagrange function for each pixel of the first frame portion,
Device.
상기 방법은, 상기 다수의 레벨들 중 각각의 레벨에 대해:
상기 제1 레퍼런스 프레임 부분을 워핑하는 단계, 상기 제2 레퍼런스 프레임 부분을 워핑하는 단계, 상기 모션 필드들을 추정하는 단계, 및 상기 모션 필드들을 업데이트하는 단계의 제1 반복(first iteration)에 대해 상기 라그랑지 함수의 라그랑지 파라미터를 최대값으로 초기화하는 단계; 및
상기 라그랑지 파라미터에 대해 한 세트의 가능한 값들 중 점점 더 작은 값들을 사용하여, 상기 제1 레퍼런스 프레임 부분을 워핑하는 단계, 상기 제2 레퍼런스 프레임 부분을 워핑하는 단계, 상기 모션 필드들을 추정하는 단계, 및 상기 모션 필드들을 업데이트하는 단계의 추가 반복(additional iteration)을 수행하는 단계를 더 포함하는,
장치,The method of claim 16,
The method, for each level of the plurality of levels:
The Lagrang for a first iteration of warping the first reference frame portion, warping the second reference frame portion, estimating the motion fields, and updating the motion fields. Initializing the Lagrangian parameters of the support function to a maximum value; And
Warping the first reference frame portion using the smaller and smaller of a set of possible values for the Lagrange parameter, warping the second reference frame portion, estimating the motion fields, And performing an additional iteration of updating the motion fields.
Device,
상기 모션 필드들을 추정하는 단계는:
수평축, 수직축, 및 시간에 대해 상기 제1 워핑된 레퍼런스 프레임 부분 및 상기 제2 워핑된 레퍼런스 프레임 부분의 픽셀 값들의 도함수들을 계산하는 단계;
상기 레벨이 상기 최종 레벨과 상이하다는 것에 응답하여 상기 도함수들을 다운스케일링하는 단계;
상기 도함수들을 사용하여 상기 라그랑지 함수를 나타내는 선형 방정식들을 푸는 단계를 포함하는,
장치.The method according to claim 16 or 17,
Estimating the motion fields includes:
Calculating derivatives of pixel values of the first warped reference frame portion and the second warped reference frame portion with respect to a horizontal axis, a vertical axis, and time;
Downscaling the derivatives in response to the level being different than the final level;
Solving linear equations representing the Lagrange function using the derivatives,
Device.
상기 방법은:
상기 광흐름 레퍼런스 프레임 부분을 사용하여 상기 제1 프레임의 현재 블록을 인터 예측하는 단계를 더 포함하는,
장치.The method according to any one of claims 15 to 18,
The method is:
Inter predicting a current block of the first frame using the lightflow reference frame portion;
Device.
상기 프로세서와 상기 비일시적 저장 매체는 디코더를 형성하는,
장치.The method according to any one of claims 15 to 19,
The processor and the non-transitory storage medium form a decoder;
Device.
프로세서; 및
방법을 수행하기 위해 상기 프로세서에 의해 실행 가능한 명령들을 포함하는 비일시적 저장 매체를 포함하고,
상기 방법은:
예측될 제1 프레임의 제1 프레임 부분을 결정하는 단계 ― 상기 제1 프레임은 비디오 시퀀스 내에 있음 ― ;
상기 제1 프레임의 순방향 인터 예측을 위해 상기 비디오 시퀀스로부터 제1 레퍼런스 프레임을 결정하는 단계;
상기 제1 프레임의 역방향 인터 예측을 위해 상기 비디오 시퀀스로부터 제2 레퍼런스 프레임을 결정하는 단계;
상기 제1 레퍼런스 프레임 및 상기 제2 레퍼런스 프레임을 사용하여 광흐름 추정을 수행함으로써, 상기 제1 프레임 부분의 인터 예측을 위한 광흐름 레퍼런스 프레임 부분을 생성하는 단계; 및
상기 광흐름 레퍼런스 프레임 부분을 사용하여 제1 프레임 부분에 대한 예측 프로세스를 수행하는 단계를 포함하는,
장치.As a device,
A processor; And
A non-transitory storage medium comprising instructions executable by the processor to perform a method,
The method is:
Determining a first frame portion of a first frame to be predicted, wherein the first frame is in a video sequence;
Determining a first reference frame from the video sequence for forward inter prediction of the first frame;
Determining a second reference frame from the video sequence for reverse inter prediction of the first frame;
Generating an optical flow reference frame portion for inter prediction of the first frame portion by performing optical flow estimation using the first reference frame and the second reference frame; And
Performing a prediction process for a first frame portion using the lightflow reference frame portion;
Device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020217026758A KR102400078B1 (en) | 2017-08-22 | 2018-05-10 | Optical flow estimation for motion compensated prediction in video coding |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/683,684 | 2017-08-22 | ||
US15/683,684 US11284107B2 (en) | 2017-08-22 | 2017-08-22 | Co-located reference frame interpolation using optical flow estimation |
US15/817,369 | 2017-11-20 | ||
US15/817,369 US10659788B2 (en) | 2017-11-20 | 2017-11-20 | Block-based optical flow estimation for motion compensated prediction in video coding |
PCT/US2018/032054 WO2019040134A1 (en) | 2017-08-22 | 2018-05-10 | Optical flow estimation for motion compensated prediction in video coding |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217026758A Division KR102400078B1 (en) | 2017-08-22 | 2018-05-10 | Optical flow estimation for motion compensated prediction in video coding |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200002036A true KR20200002036A (en) | 2020-01-07 |
KR102295520B1 KR102295520B1 (en) | 2021-08-27 |
Family
ID=62567747
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217026758A Active KR102400078B1 (en) | 2017-08-22 | 2018-05-10 | Optical flow estimation for motion compensated prediction in video coding |
KR1020197035698A Active KR102295520B1 (en) | 2017-08-22 | 2018-05-10 | Optical Flow Estimation for Motion Compensation Prediction in Video Coding |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217026758A Active KR102400078B1 (en) | 2017-08-22 | 2018-05-10 | Optical flow estimation for motion compensated prediction in video coding |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP3673655A1 (en) |
JP (1) | JP6905093B2 (en) |
KR (2) | KR102400078B1 (en) |
CN (2) | CN118055253A (en) |
WO (1) | WO2019040134A1 (en) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020177015A1 (en) * | 2019-03-01 | 2020-09-10 | Alibaba Group Holding Limited | Adaptive resolution video coding |
CN119363974A (en) * | 2019-09-24 | 2025-01-24 | Oppo广东移动通信有限公司 | Method and apparatus for sub-picture-based image encoding/decoding and method for transmitting bit stream |
CN110572677B (en) * | 2019-09-27 | 2023-10-24 | 腾讯科技(深圳)有限公司 | Video encoding and decoding method and device, storage medium and electronic device |
CN113473145B (en) * | 2020-03-31 | 2024-05-31 | 武汉Tcl集团工业研究院有限公司 | Video compression method, video decompression method, intelligent terminal and storage medium |
CN111526370B (en) * | 2020-04-17 | 2023-06-02 | Oppo广东移动通信有限公司 | Video encoding and decoding methods and devices and electronic equipment |
CN111935425B (en) * | 2020-08-14 | 2023-03-24 | 字节跳动有限公司 | Video noise reduction method and device, electronic equipment and computer readable medium |
US12100169B2 (en) * | 2020-09-30 | 2024-09-24 | Qualcomm Incorporated | Sparse optical flow estimation |
CN112533026A (en) * | 2020-11-27 | 2021-03-19 | 西安蓝极医疗电子科技有限公司 | Video frame interpolation method based on convolutional neural network |
US11831909B2 (en) * | 2021-03-11 | 2023-11-28 | Qualcomm Incorporated | Learned B-frame coding using P-frame coding system |
US12200398B2 (en) * | 2021-03-16 | 2025-01-14 | Samsung Electronics Co., Ltd. | Pixel blending for synthesizing video frames with occlusion and watermark handling |
US11638025B2 (en) * | 2021-03-19 | 2023-04-25 | Qualcomm Incorporated | Multi-scale optical flow for learned video compression |
CN113613003B (en) * | 2021-08-30 | 2024-03-22 | 北京市商汤科技开发有限公司 | Video compression and decompression methods and devices, electronic equipment and storage medium |
WO2023191599A1 (en) * | 2022-04-01 | 2023-10-05 | 주식회사 케이티 | Video signal encoding/decoding method, and recording medium for storing bitstream |
WO2023200249A1 (en) * | 2022-04-12 | 2023-10-19 | 한국전자통신연구원 | Method, device, and recording medium for image encoding/decoding |
WO2024254037A1 (en) * | 2023-06-05 | 2024-12-12 | Google Llc | Limiting signaled motion vector syntax for temporally interpolated picture video coding |
WO2024254041A1 (en) * | 2023-06-06 | 2024-12-12 | Google Llc | Temporally interpolated picture prediction using a frame-level motion vector |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130121416A1 (en) * | 2010-07-21 | 2013-05-16 | Dolby Laboratories Licensing Corporation | Reference Processing Using Advanced Motion Models for Video Coding |
US20140307982A1 (en) * | 2013-04-16 | 2014-10-16 | The Government Of The United States Of America, As Represented By The Secretary Of The Navy | Multi-frame super-resolution of image sequence with arbitrary motion patterns |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8144778B2 (en) * | 2007-02-22 | 2012-03-27 | Sigma Designs, Inc. | Motion compensated frame rate conversion system and method |
CN103327327B (en) * | 2013-06-03 | 2016-03-30 | 电子科技大学 | For the inter prediction encoding unit selection method of high-performance video coding HEVC |
CN107925775A (en) * | 2015-09-02 | 2018-04-17 | 联发科技股份有限公司 | Motion compensation method and device for video coding and decoding based on bidirectional prediction optical flow technology |
US10375413B2 (en) * | 2015-09-28 | 2019-08-06 | Qualcomm Incorporated | Bi-directional optical flow for video coding |
US10469841B2 (en) * | 2016-01-29 | 2019-11-05 | Google Llc | Motion vector prediction using prior frame residual |
WO2017133661A1 (en) * | 2016-02-05 | 2017-08-10 | Mediatek Inc. | Method and apparatus of motion compensation based on bi-directional optical flow techniques for video coding |
-
2018
- 2018-05-10 CN CN202410264512.2A patent/CN118055253A/en active Pending
- 2018-05-10 CN CN201880036783.5A patent/CN110741640B/en active Active
- 2018-05-10 KR KR1020217026758A patent/KR102400078B1/en active Active
- 2018-05-10 WO PCT/US2018/032054 patent/WO2019040134A1/en active IP Right Grant
- 2018-05-10 KR KR1020197035698A patent/KR102295520B1/en active Active
- 2018-05-10 JP JP2019566280A patent/JP6905093B2/en active Active
- 2018-05-10 EP EP18730489.4A patent/EP3673655A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130121416A1 (en) * | 2010-07-21 | 2013-05-16 | Dolby Laboratories Licensing Corporation | Reference Processing Using Advanced Motion Models for Video Coding |
US20140307982A1 (en) * | 2013-04-16 | 2014-10-16 | The Government Of The United States Of America, As Represented By The Secretary Of The Navy | Multi-frame super-resolution of image sequence with arbitrary motion patterns |
Also Published As
Publication number | Publication date |
---|---|
CN118055253A (en) | 2024-05-17 |
KR20210109049A (en) | 2021-09-03 |
CN110741640B (en) | 2024-03-29 |
KR102295520B1 (en) | 2021-08-27 |
KR102400078B1 (en) | 2022-05-18 |
EP3673655A1 (en) | 2020-07-01 |
CN110741640A (en) | 2020-01-31 |
WO2019040134A1 (en) | 2019-02-28 |
JP6905093B2 (en) | 2021-07-21 |
JP2020522200A (en) | 2020-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102295520B1 (en) | Optical Flow Estimation for Motion Compensation Prediction in Video Coding | |
US12244818B2 (en) | Selective reference block generation without full reference frame generation | |
US11284107B2 (en) | Co-located reference frame interpolation using optical flow estimation | |
CN111757106B (en) | Method and apparatus for coding a current block in a video stream using multi-level compound prediction | |
US9602819B2 (en) | Display quality in a variable resolution video coder/decoder system | |
CA2883133C (en) | A video encoding method and a video encoding apparatus using the same | |
CN110741641B (en) | Method and apparatus for video compression | |
EP3714601B1 (en) | Motion field-based reference frame rendering for motion compensated prediction in video coding | |
US8170110B2 (en) | Method and apparatus for zoom motion estimation | |
US12206842B2 (en) | Motion field estimation based on motion trajectory derivation | |
US20240422309A1 (en) | Selection of projected motion vectors | |
WO2023205371A1 (en) | Motion refinement for a co-located reference frame | |
CN118975230A (en) | Motion refinement of collocated reference frames |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
PA0105 | International application |
Patent event date: 20191203 Patent event code: PA01051R01D Comment text: International Patent Application |
|
PA0201 | Request for examination | ||
PG1501 | Laying open of application | ||
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20201116 Patent event code: PE09021S01D |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20210524 |
|
A107 | Divisional application of patent | ||
PA0104 | Divisional application for international application |
Comment text: Divisional Application for International Patent Patent event code: PA01041R01D Patent event date: 20210823 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20210824 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20210824 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration | ||
PR1001 | Payment of annual fee |
Payment date: 20240806 Start annual number: 4 End annual number: 4 |