KR20200002036A - 비디오 코딩에서 모션 보상 예측을 위한 광흐름 추정 - Google Patents

비디오 코딩에서 모션 보상 예측을 위한 광흐름 추정 Download PDF

Info

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
Application number
KR1020197035698A
Other languages
English (en)
Other versions
KR102295520B1 (ko
Inventor
야오우 쑤
보한 리
징닝 한
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/683,684 external-priority patent/US11284107B2/en
Priority claimed from US15/817,369 external-priority patent/US10659788B2/en
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Priority to KR1020217026758A priority Critical patent/KR102400078B1/ko
Publication of KR20200002036A publication Critical patent/KR20200002036A/ko
Application granted granted Critical
Publication of KR102295520B1 publication Critical patent/KR102295520B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods 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/19Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion 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

비디오 시퀀스에서 현재 프레임의 블록들의 인터 예측을 위해 사용될 수 있는 광흐름 레퍼런스 프레임 부분(예를 들면, 블록 또는 전체 프레임)이 생성된다. 순방향 레퍼런스 프레임과 역방향 레퍼런스 프레임이 현재 프레임의 픽셀들에 대한 각각의 모션 필드를 생성하는 광흐름 추정에 사용된다. 모션 필드들은 레퍼런스 프레임들의 일부 또는 모든 픽셀들을 현재 프레임의 픽셀들로 워핑하는 데 사용된다. 워핑된 레퍼런스 프레임 픽셀들은 블렌딩되어 광흐름 레퍼런스 프레임 부분을 형성한다. 인터 예측은 현재 프레임의 인코딩 또는 디코딩 부분들의 일부로서 수행될 수 있다.

Description

비디오 코딩에서 모션 보상 예측을 위한 광흐름 추정
[0001] 디지털 비디오 스트림들은 일련의 프레임들 또는 스틸 이미지들(still images)을 사용하여 비디오를 나타낼 수 있다. 디지털 비디오는 예를 들면, 화상 회의, 고해상도 비디오 엔터테인먼트, 비디오 광고들, 또는 사용자 생성 비디오들의 공유를 포함한 다양한 적용들에 사용될 수 있다. 디지털 비디오 스트림은 대량의 데이터를 포함할 수 있고 비디오 데이터의 처리, 전송, 또는 저장을 위해 컴퓨팅 디바이스의 상당량의 컴퓨팅 또는 통신 자원들을 소비할 수 있다. 비디오 스트림들에서 데이터의 양을 저감하기 위해 압축 및 다른 인코딩 기술들을 포함한 다양한 접근법들이 제안되고 있다.
[0002] 압축을 위한 한 가지 기술은 인코딩될 현재 블록에 대응하는 예측 블록을 생성하기 위해 레퍼런스 프레임을 사용한다. 인코딩된 데이터의 양을 저감하기 위해 현재 블록 자체의 값들 대신에 예측 블록과 현재 블록 사이의 차이들이 인코딩될 수 있다.
[0003] 본 발명은 일반적으로 비디오 데이터를 인코딩 및 디코딩하는 것에 관한 것이며, 보다 세부적으로는 비디오 압축에서 모션 보상 예측을 위해 블록 기반의 광흐름 추정(optical flow estimation)을 이용하는 것에 관한 것이다. 비디오 압축에서 모션 보상 예측을 위해 병치된 레퍼런스 프레임을 보간할 수 있는 프레임 레벨 기반의 광흐름 추정도 또한 기재되어 있다.
[0004] 본 발명은 인코딩 및 디코딩 방법들 및 장치를 기술한다. 본 발명의 일 구현예에 따른 방법은 예측될 제1 프레임의 제1 프레임 부분을 결정하는 단계 ― 제1 프레임은 비디오 시퀀스에 있음 ― , 제1 프레임의 순방향 인터 예측(forward inter prediction)을 위해 비디오 시퀀스로부터 제1 레퍼런스 프레임(reference frame)을 결정하는 단계, 제1 프레임의 역방향 인터 예측을 위해 비디오 시퀀스로부터 제2 레퍼런스 프레임을 결정하는 단계, 제1 레퍼런스 프레임 및 제2 레퍼런스 프레임을 사용하여 광흐름 추정(optical flow estimation)을 수행함으로써, 제1 프레임 부분의 인터 예측을 위한 광흐름 레퍼런스 프레임 부분을 생성하는 단계, 및 광흐름 레퍼런스 프레임 부분을 사용하여 제1 프레임 부분에 대한 예측 프로세스를 수행하는 단계를 포함한다. 제1 프레임 부분 및 광흐름 레퍼런스 프레임 부분은, 예를 들면, 블록 또는 전체 프레임일 수 있다.
[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 워핑된 레퍼런스 프레임 부분을 블렌딩하는 단계를 포함한다.
[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 워핑된 레퍼런스 프레임 부분을 블렌딩하는 단계를 포함한다.
[0007] 본 발명의 일 구현예에 따른 다른 장치는 또한 비일시적 저장 매체 또는 메모리 및 프로세서를 포함한다. 매체는 방법을 수행하기 위해 프로세서에 의해 실행 가능한 명령들을 포함하고, 방법은, 예측될 제1 프레임의 제1 프레임 부분을 결정하는 단계 ― 제1 프레임은 비디오 시퀀스 내에 있음 ― , 제1 프레임의 순방향 인터 예측을 위해 비디오 시퀀스로부터 제1 레퍼런스 프레임을 결정하는 단계, 제1 프레임의 역방향 인터 예측을 위해 비디오 시퀀스로부터 제2 레퍼런스 프레임을 결정하는 단계, 제1 레퍼런스 프레임 및 제2 레퍼런스 프레임을 사용하여 광흐름 추정을 수행함으로써, 제1 프레임 부분의 인터 예측을 위한 광흐름 레퍼런스 프레임 부분을 생성하는 단계, 및 광흐름 레퍼런스 프레임 부분을 사용하여 제1 프레임 부분에 대한 예측 프로세스를 수행하는 단계를 포함한다.
[0008] 본 발명의 이들 및 다른 양태들이 이하의 실시예들의 상세한 설명, 첨부된 청구항들, 및 수반된 도면들에 개시되어 있다.
[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는 디코더를 최적화하기 위한 기술을 도시하는 다이어그램.
[0025] 비디오 스트림은 비디오 스트림을 전송 또는 저장하는데 필요한 대역폭을 감소시키기 위해 다양한 기술들에 의해 압축될 수 있다. 비디오 스트림은 압축을 수반하는 비트스트림으로 인코딩될 수 있고, 이는 그리고 나서 비디오 스트림을 디코딩 또는 압축 해제하여 이를 시청(viewing) 또는 추가 처리를 위해 준비할 수 있는 디코더로 전송된다. 비디오 스트림의 압축은 종종 공간 및/또는 모션 보상 예측을 통한 비디오 신호들의 공간 및 시간 상관(spatial and temporal correlation)을 이용한다. 인터 예측(inter-prediction)은 예를 들면, 이전에 인코딩 및 디코딩된 픽셀들을 사용하여 인코딩될 현재 블록과 유사한 블록(예측 블록이라고도 함)을 생성하기 위해 하나 이상의 모션 벡터들을 사용한다. 모션 벡터(들) 및 두 블록들 사이의 차(差)를 인코딩함으로써, 인코딩된 신호를 수신하는 디코더는 현재 블록을 재생성할 수 있다. 인터 예측은 모션 보상 예측으로도 지칭될 수 있다.
[0026] 인터 예측 프로세스에서 예측 블록을 생성하는데 사용된 각각의 모션 벡터는 현재 프레임 이외의 프레임, 즉 레퍼런스 프레임을 참조할 수 있다. 레퍼런스 프레임들은 비디오 스트림의 시퀀스에서 현재 프레임의 앞 또는 뒤에 위치될 수 있으며, 레퍼런스 프레임으로 사용되기 전에 재구성된 프레임들일 수 있다. 몇몇 경우들에서는, 비디오 시퀀스의 현재 프레임의 블록들을 인코딩 또는 디코딩하는데 사용되는 3 개의 레퍼런스 프레임들이 있을 수 있다. 하나는 골든 프레임으로 지칭될 수 있는 프레임이다. 다른 하나는 가장 최근에 인코딩 또는 디코딩된 프레임이다. 마지막 것은 시퀀스에서는 하나 이상의 프레임들 이전에 인코딩 또는 디코딩되지만 출력 디스플레이 순서에서는 이들 프레임들 이후에 디스플레이되는 대체 레퍼런스 프레임이다. 이러한 방식으로, 대체 레퍼런스 프레임은 역방향 예측에 사용 가능한 레퍼런스 프레임이다. 하나 이상의 순방향 및/또는 역방향 레퍼런스 프레임들이 블록을 인코딩 또는 디코딩하는데 사용될 수 있다. 현재 프레임 내에서 블록을 인코딩 또는 디코딩하는데 사용될 때 레퍼런스 프레임의 유효성은 결과적인 신호대 잡음비 또는 레이트-왜곡(rate-distortion)의 다른 측정치들에 기초하여 측정될 수 있다.
[0027] 이 기술에서는, 예측 블록들을 형성하는 픽셀들이 이용 가능한 레퍼런스 프레임들 중 하나 이상으로부터 직접 획득된다. 레퍼런스 픽셀 블록들 또는 그 선형 조합들은 현재 프레임에서 주어진 코딩 블록의 예측에 사용된다. 이 직접적인 블록 기반의 예측은 레퍼런스 프레임들로부터 이용 가능한 진정한 모션 활동을 캡처하지 않는다. 이러한 이유로, 모션 보상 예측 정확도가 저하될 수 있다.
[0028] 이용 가능한 양방향 레퍼런스 프레임들(예를 들면, 하나 이상의 순방향 및 하나 이상의 역방향 레퍼런스 프레임들)로부터의 모션 정보를 보다 온전히 활용하기 위해, 본 명세서의 교시들의 구현예들은 비디오 신호에서의 진정한 모션 활동들을 추정하기 위해 광흐름에 의해 계산된 픽셀당 모션 필드(per-pixel motion field)를 사용하는 현재 코딩 프레임 부분들과 병치된 레퍼런스 프레임 부분들을 기술한다. 레퍼런스 프레임들로부터 직접 결정되는 종래의 블록 기반의 모션 보상 예측의 능력을 넘어서는 복잡한 비병진(non-translational) 모션 활동의 추적을 가능케 하는 레퍼런스 프레임 부분들이 보간된다. 이러한 레퍼런스 프레임 부분들의 사용은 예측 품질을 향상시킬 수 있다. 본 명세서에 사용되는, 프레임 부분은 블록, 슬라이스, 또는 전체 프레임과 같은 프레임 중 일부 또는 모두를 지칭한다. 하나의 프레임의 프레임 부분은 이 프레임 부분과 다른 프레임의 프레임 부분이 동일한 치수들을 갖고 각각의 프레임의 치수들 내에서 동일한 픽셀 위치들에 있으면 다른 프레임의 프레임 부분과 병치된다.
[0029] 비디오 압축 및 재구성에 사용하기 위해 레퍼런스 프레임 부분들을 보간하기 위해 광흐름 추정을 사용하는 것에 대한 추가 상세 내용은 본 명세서의 교시들이 구현될 수 있는 시스템에 대한 최초 참조와 함께 본 명세서에서 설명된다.
[0030] 도 1은 비디오 인코딩 및 디코딩 시스템(100)의 개략도이다. 송신 스테이션(102)은 예를 들면, 도 2에 기술된 것과 같은 하드웨어의 내부 구성을 갖는 컴퓨터일 수 있다. 하지만, 송신 스테이션(102)의 다른 적절한 구현예들도 가능하다. 예를 들어, 송신 스테이션(102)의 처리는 다수의 디바이스들 간에 분산될 수 있다.
[0031] 네트워크(104)는 비디오 스트림의 인코딩 및 디코딩을 위해 송신 스테이션(102)과 수신 스테이션(106)을 연결할 수 있다. 구체적으로, 비디오 스트림은 송신 스테이션(102)에서 인코딩될 수 있고 인코딩된 비디오 스트림은 수신 스테이션(106)에서 디코딩될 수 있다. 네트워크(104)는 예를 들면, 인터넷일 수 있다. 네트워크(104)는 또한 근거리 통신망(local area network: LAN), 광역 통신망(wide area network: WAN), 가상 사설망(virtual private network: VPN), 셀룰러 전화 네트워크, 또는 이 예에서는 송신 스테이션(102)으로부터 수신 스테이션(106)으로 비디오 스트림을 전송하는 임의의 다른 수단일 수도 있다.
[0032] 수신 스테이션(106)은 일례에서, 도 2에 기술된 것과 같은 하드웨어의 내부 구성을 갖는 컴퓨터일 수 있다. 하지만, 수신 스테이션(106)의 다른 적절한 구현예들도 가능하다. 예를 들어, 수신 스테이션(106)의 처리는 다수의 디바이스들 간에 분산될 수 있다.
[0033] 비디오 인코딩 및 디코딩 시스템(100)의 다른 구현예들도 가능하다. 예를 들어, 하나의 구현예는 네트워크(104)를 생략할 수 있다. 다른 구현예에서, 비디오 스트림은 인코딩된 후 나중에 수신 스테이션(106) 또는 비일시적 저장 매체 또는 메모리를 갖는 임의의 다른 디바이스로 전송하기 위해 저장될 수 있다. 일 구현예에서, 수신 스테이션(106)은 (예를 들면, 네트워크(104), 컴퓨터 버스, 및/또는 소정의 통신 경로를 통해) 인코딩된 비디오 스트림을 수신하고 나중에 디코딩하기 위해 비디오 스트림을 저장한다. 예시적인 구현예에서, 네트워크(104)를 통해 인코딩된 비디오의 전송을 위해 실시간 전송 프로토콜(RTP)이 사용된다. 다른 구현예에서는, RTP 이외의 전송 프로토콜, 예를 들면, HTTP(Hypertext Transfer Protocol) 기반의 비디오 스트리밍 프로토콜이 사용될 수도 있다.
[0034] 화상 회의 시스템에 사용될 때, 예를 들면, 송신 스테이션(102) 및/또는 수신 스테이션(106)은 후술하는 바와 같이 비디오 스트림을 인코딩 및 디코딩하는 능력을 포함할 수 있다. 예를 들어, 수신 스테이션(106)은 화상 회의 서버(예를 들면, 송신 스테이션(102))로부터 인코딩된 비디오 비트스트림을 수신하여 디코딩 및 시청하며 또한 그 자신의 비디오 비트스트림을 인코딩하여 다른 참가자들에 의한 디코딩 및 시청을 위해 화상 회의 서버로 전송하는 화상 회의 참가자일 수 있다.
[0035] 도 2는 송신 스테이션 또는 수신 스테이션을 구현할 수 있는 컴퓨팅 디바이스(200)의 일례의 블록도이다. 예를 들면, 컴퓨팅 디바이스(200)는 도 1의 송신 스테이션(102)과 수신 스테이션(106) 중 어느 하나 또는 양자 모두를 구현할 수 있다. 컴퓨팅 디바이스(200)는 다수의 컴퓨팅 디바이스들을 포함하는 컴퓨팅 시스템의 형태, 또는 하나의 컴퓨팅 디바이스의 형태, 예를 들면, 휴대 전화, 태블릿 컴퓨터, 랩탑 컴퓨터, 노트북 컴퓨터, 데스크탑 컴퓨터 등일 수 있다.
[0036] 컴퓨팅 디바이스(200) 내의 CPU(202)는 중앙 처리 장치일 수 있다. 대안적으로, CPU(202)는 현재 존재하거나 앞으로 개발되는 정보를 조작 또는 처리할 수 있는 임의의 다른 유형의 디바이스 또는 다수의 디바이스들일 수 있다. 개시된 구현예들은 도시된 바와 같이 하나의 프로세서, 예를 들면, CPU(202)로 실시될 수도 있으나, 2 개 이상의 프로세서를 사용하면 속도 및 효율에 있어서 이점이 달성될 수 있다.
[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)에 로딩될 수 있다.
[0038] 컴퓨팅 디바이스(200)는 또한 디스플레이(218)와 같은, 하나 이상의 출력 디바이스들을 포함할 수 있다. 디스플레이(218)는 일례에서, 터치 입력들을 감지하도록 작동 가능한 터치 감지 요소와 디스플레이를 결합한 터치 감지 디스플레이일 수 있다. 디스플레이(218)는 버스(212)를 통해 CPU(202)에 결합될 수 있다. 사용자가 컴퓨팅 디바이스(200)를 프로그래밍하거나 달리 사용할 수 있게 하는 다른 출력 디바이스들이 디스플레이(218)에 추가적으로 또는 대체로서 제공될 수 있다. 출력 디바이스가 디스플레이이거나 디스플레이를 포함하는 경우, 디스플레이는 액정 디스플레이(LCD), 음극선관(CRT) 디스플레이, 또는 유기 LED(OLED) 디스플레이와 같은 발광 다이오드(LED) 디스플레이에 의한 것을 포함하여, 다양한 방식들로 구현될 수 있다.
[0039] 컴퓨팅 디바이스(200)는 이미지 감지 디바이스(220), 예를 들면 카메라, 또는 컴퓨팅 디바이스(200)를 조작하고 있는 사용자의 이미지와 같은 이미지를 감지할 수 있는 현재 존재하거나 앞으로 개발되는 임의의 다른 이미지 감지 디바이스(220)를 또한 포함하거나 이와 통신할 수 있다. 이미지 감지 디바이스(220)는 컴퓨팅 디바이스(200)를 조작하는 사용자 쪽으로 지향되도록 위치될 수 있다. 일례에서, 이미지 감지 디바이스(220)의 위치와 광축(optical axis)은 시야가 디스플레이(218)에 바로 인접하고 디스플레이(218)가 보이는 영역을 포함하도록 구성될 수 있다.
[0040] 컴퓨팅 디바이스(200)는 사운드 감지 디바이스(222), 예를 들면 마이크로폰, 또는 컴퓨팅 디바이스(200) 근처의 사운드를 감지할 수 있는 현재 존재하거나 앞으로 개발되는 임의의 다른 사운드 감지 디바이스를 또한 포함하거나 이와 통신할 수 있다. 사운드 감지 디바이스(222)는 컴퓨팅 디바이스(200)를 조작하는 사용자 쪽으로 지향되도록 위치될 수 있고, 사용자가 컴퓨팅 디바이스(200)를 조작하고 있는 동안 사용자가 내는 사운드, 예를 들면 음성 또는 다른 발성들(utterances)을 수신하도록 구성될 수 있다.
[0041] 도 2는 컴퓨팅 디바이스(200)의 CPU(202) 및 메모리(204)가 하나의 유닛으로 통합된 것으로 도시하고 있으나, 다른 구성들이 이용될 수도 있다. CPU(202)의 동작들은 직접 또는 로컬 영역 또는 다른 네트워크에 걸쳐 결합될 수 있는 다수의 기계(개별 기계들은 하나 이상의 프로세서들을 가질 수 있음)에 걸쳐서 분산될 수 있다. 메모리(204)는 네트워크 기반 메모리 또는 컴퓨팅 디바이스(200)의 동작들을 수행하는 다수의 기계들의 메모리와 같이 다수의 기계들에 걸쳐 분산될 수 있다. 여기서는 하나의 버스로 도시되어 있으나, 컴퓨팅 디바이스(200)의 버스(212)는 다수의 버스들로 구성될 수도 있다. 또한, 2 차 스토리지(214)는 컴퓨팅 디바이스(200)의 다른 컴포넌트들에 직접 결합될 수 있거나 네트워크를 통해 액세스될 수 있고 메모리 카드와 같은 통합 유닛 또는 다수의 메모리 카드들과 같은 다수의 유닛들을 포함할 수 있다. 컴퓨팅 디바이스(200)는 그래서 다양한 구성들로 구현될 수 있다.
[0042] 도 3은 인코딩되고 후속적으로 디코딩될 비디오 스트림(300)의 일례의 다이어그램이다. 비디오 스트림(300)은 비디오 시퀀스(302)를 포함한다. 다음 레벨에서, 비디오 시퀀스(302)는 다수의 인접 프레임들(304)을 포함한다. 3 개의 프레임들이 인접 프레임들(304)로서 도시되어 있으나, 비디오 시퀀스(302)는 임의의 개수의 인접 프레임들(304)을 포함할 수 있다. 그 후, 인접 프레임들(304)은 개별 프레임들, 예를 들면 프레임(306)으로 더욱 세분될 수 있다. 다음 레벨에서, 프레임(306)은 일련의 평면들 또는 세그먼트들(308)로 분할될 수 있다. 세그먼트들(308)은 예를 들면, 병렬 처리를 가능케 하는 프레임들의 부분집합(서브세트)일 수 있다. 세그먼트들(308)은 또한 비디오 데이터를 별개의 컬러들로 분리할 수 있는 프레임들의 부분집합일 수 있다. 예를 들어, 컬러 비디오 데이터의 프레임(306)은 휘도 평면과 2 개의 색차 평면들을 포함할 수 있다. 세그먼트들(308)은 상이한 해상도들로 샘플링될 수 있다.
[0043] 프레임(306)이 세그먼트들(308)로 분할되는지 여부에 관계없이, 프레임(306)은 예를 들면, 프레임(306)의 16x16 픽셀들에 대응하는 데이터를 포함할 수 있는 블록들(310)로 더욱 세분될 수 있다. 블록들(310)은 픽셀 데이터의 하나 이상의 세그먼트들(308)로부터의 데이터를 포함하도록 또한 배열될 수 있다. 블록들(310)은 또한 4x4 픽셀들, 8x8 픽셀들, 16x8 픽셀들, 8x16 픽셀들, 16x16 픽셀들, 또는 그 이상과 같은 임의의 다른 적절한 크기일 수 있다. 달리 언급되지 않는 한, 블록 및 매크로블록이라는 용어들은 본 명세서에서 상호 교환적으로 사용된다.
[0044] 도 4는 본 발명의 구현예들에 따른 인코더(400)의 블록도이다. 인코더(400)는 전술한 바와 같이, 예컨대 메모리, 예를 들면 메모리(204)에 저장된 컴퓨터 소프트웨어 프로그램을 제공함으로써, 송신 스테이션(102)에서 구현될 수 있다. 컴퓨터 소프트웨어 프로그램은, CPU(202)와 같은 프로세서에 의해 실행될 때 송신 스테이션(102)이 도 4에 기술된 방식으로 비디오 데이터를 인코딩하게 하는 기계 명령들을 포함할 수 있다. 인코더(400)는 또한, 예를 들면 송신 스테이션(102)에 포함된 특수 하드웨어로서 구현될 수도 있다. 하나의 특히 바람직한 구현예에서, 인코더(400)는 하드웨어 인코더이다.
[0045] 인코더(400)는 비디오 스트림(300)을 입력으로 사용하여 인코딩되거나 압축된 비트스트림(420)을 생성하기 위해 (실선 연결 라인들로 도시된) 순방향 경로에서 다양한 기능들을 수행하기 위해 다음의 단계들을 갖는다: 인트라/인터 예측 단계(402), 변환 단계(404), 양자화 단계(406), 및 엔트로피 인코딩 단계(408). 인코더(400)는 장래 블록들(future blocks)의 인코딩을 위한 프레임을 재구성하기 위해 (점선 연결 라인들로 도시된) 재구성 경로를 또한 포함할 수 있다. 도 4에서, 인코더(400)는 재구성 경로에서 다양한 기능들을 수행하기 위해 다음의 단계들을 갖는다: 역양자화 단계(410), 역변환 단계(412), 재구성 단계(414) 및 루프 필터링 단계(416). 비디오 스트림(300)을 인코딩하기 위해 인코더(400)의 다른 구조적 변형들이 사용될 수도 있다.
[0046] 비디오 스트림(300)이 인코딩을 위해 제시될 때, 프레임(306)과 같은 각각의 프레임들(304)은 블록들의 단위들로 처리될 수 있다. 인트라/인터 예측 단계(402)에서, 각각의 블록들은 인트라-프레임 예측(인트라 예측이라고도 함) 또는 인터-프레임 예측(인터 예측이라고도 함)을 사용하여 인코딩될 수 있다. 어떤 경우에도, 예측 블록이 형성될 수 있다. 인트라 예측의 경우, 이전에 인코딩 및 재구성된 현재 프레임의 샘플들로부터 예측 블록이 형성될 수 있다. 인터 예측의 경우, 하나 이상의 이전에 구성된 레퍼런스 프레임들의 샘플들로부터 예측 블록이 형성될 수 있다. 블록들의 그룹들에 대한 레퍼런스 프레임들의 지정은 아래에서 더욱 상세히 논의된다.
[0047] 다음으로, 여전히 도 4를 참조하면, 잔차 블록(또한 잔차(residual)라고도 함)을 생성하기 위해 예측 블록은 인트라/인터 예측 단계(402)에서 현재 블록으로부터 차감될 수 있다. 변환 단계(404)는 예를 들면, 블록 기반 변환들을 사용하여 주파수 영역에서 잔차를 변환 계수들로 변환한다. 양자화 단계(406)는 양자화기 값(quantizer value) 또는 양자화 레벨을 사용하여 변환 계수들을 양자화 변환 계수들로 지칭되는 이산 양자 값들(discrete quantum values)로 변환한다. 예를 들면, 변환 계수들은 양자화기 값으로 나뉘어지거나 트렁케이션(truncation)될 수 있다. 양자화된 변환 계수들은 그리고 나서 엔트로피 인코딩 단계(408)에 의해 엔트로피 인코딩된다. 엔트로피 인코딩된 계수들은 그 다음에, 예를 들면, 사용된 예측 유형, 변환 유형, 모션 벡터들, 및 양자화기 값을 포함할 수 있는 블록을 디코딩하는데 사용된 다른 정보와 함께, 압축된 비트스트림(420)으로 출력된다. 압축된 비트스트림(420)은 가변 길이 코딩(VLC) 또는 산술 코딩과 같은 다양한 기술들을 사용하여 포맷될 수 있다. 압축된 비트스트림(420)은 인코딩된 비디오 스트림 또는 인코딩된 비디오 비트스트림으로도 또한 지칭될 수 있으며, 그래서 이들 용어들은 본 명세서에서 상호 교환적으로 사용될 것이다.
[0048] (점선 연결 라인들로 도시된) 도 4의 재구성 경로는 인코더(400) 및 디코더(500)(후술됨)가 압축된 비트스트림(420)을 디코딩하기 위해 동일한 레퍼런스 프레임들을 사용하는 것을 보장하기 위해 사용될 수 있다. 재구성 경로는 미분 잔차 블록(미분 잔차(derivative residual)라고도 함)을 생성하기 위해 양자화된 변환 계수들을 역양자화 단계(410)에서 역양자화하는 것 및 역양자화된 변환 계수들을 역변환 단계(412)에서 역변환하는 것을 포함하여, 아래에서 보다 상세히 논의되는 디코딩 프로세스 중에 발생하는 기능들과 유사한 기능들을 수행한다. 재구성 단계(414)에서, 인트라/인터 예측 단계(402)에서 예측된 예측 블록은 미분 잔차에 추가되어 재구성된 블록을 생성할 수 있다. 블로킹 아티팩트들(blocking artifacts)과 같은 왜곡을 감소시키기 위해 루프 필터링 단계(416)가 재구성된 블록에 적용될 수 있다.
[0049] 인코더(400)의 다른 변형들이 압축된 비트스트림(420)을 인코딩하는데 사용될 수 있다. 예를 들면, 비변환 기반 인코더가 특정 블록들 또는 프레임들에 대한 변환 단계(404)없이 직접 잔차 신호를 양자화할 수 있다. 다른 구현예에서, 인코더는 양자화 단계(406) 및 역양자화 단계(410)를 공통 단계로 결합할 수 있다.
[0050] 도 5는 본 발명의 구현예들에 따른 디코더(500)의 블록도이다. 디코더(500)는 예를 들면, 메모리(204)에 저장된 컴퓨터 소프트웨어 프로그램을 제공함으로써 수신 스테이션(106)에서 구현될 수 있다. 컴퓨터 소프트웨어 프로그램은 CPU(202)와 같은 프로세서에 의해 실행될 때 수신 스테이션(106)이 도 5에 기술된 방식으로 비디오 데이터를 디코딩하게 하는 기계 명령들을 포함할 수 있다. 디코더(500)는 예를 들면, 송신 스테이션(102) 또는 수신 스테이션(106)에 포함된 하드웨어에서도 또한 구현될 수 있다.
[0051] 디코더(500)는 위에서 논의된 인코더(400)의 재구성 경로와 유사하게, 일례에서 압축된 비트스트림(420)으로부터 출력 비디오 스트림(516)을 생성하기 위한 다양한 기능들을 수행하기 위해 다음의 단계들을 포함한다: 엔트로피 디코딩 단계(502), 역양자화 단계(504), 역변환 단계(506), 인트라/인터 예측 단계(508), 재구성 단계(510), 루프 필터링 단계(512), 및 디블로킹 필터링 단계(514). 압축된 비트스트림(420)을 디코딩하기 위해 디코더(500)의 다른 구조적 변형들이 사용될 수도 있다.
[0052] 압축된 비트스트림(420)이 디코딩을 위해 제시될 때, 압축된 비트스트림(420) 내의 데이터 요소들은 엔트로피 디코딩 단계(502)에 의해 디코딩되어 한 세트의 양자화된 변환 계수들을 생성할 수 있다. 역양자화 단계(504)는 (예를 들면, 양자화된 변환 계수들에 양자화기 값을 곱함으로써) 양자화된 변환 계수들을 역양자화하고, 역변환 단계(506)는 역양자화된 변환 계수들을 역변환하여 인코더(400)에서의 역변환 단계(412)에 의해 생성된 것과 동일할 수 있는 미분 잔차를 생성한다. 압축된 비트스트림(420)으로부터 디코딩된 헤더 정보를 사용하여, 디코더(500)는 인트라/인터 예측 단계(508)를 사용하여 인코더(400)에서, 예를 들면 인트라/인터 예측 단계(402)에서 생성된 것과 동일한 예측 블록을 생성할 수 있다. 재구성 단계(510)에서, 예측 블록은 미분 잔차에 추가되어 재구성된 블록을 생성할 수 있다. 루프 필터링 단계(512)는 블록킹 아티팩트들을 저감하기 위해 재구성된 블록에 적용될 수 있다.
[0053] 재구성된 블록에는 다른 필터링이 적용될 수도 있다. 이 예에서는, 블로킹 왜곡을 저감하기 위해 디블로킹 필터링 단계(514)가 재구성된 블록에 적용되며, 결과는 출력 비디오 스트림(516)으로 출력된다. 출력 비디오 스트림(516)은 디코딩된 비디오 스트림으로도 또한 지칭될 수 있으며, 그래서 이들 용어들은 본 명세서에서 상호 교환적으로 사용될 것이다. 디코더(500)의 다른 변형들이 압축된 비트스트림(420)을 디코딩하는데 사용될 수도 있다. 예를 들어, 디코더(500)는 디블로킹 필터링 단계(514)없이도 출력 비디오 스트림(516)을 생성할 수 있다.
[0054] 도 6은 레퍼런스 프레임 버퍼(600)의 일례의 블록도이다. 레퍼런스 프레임 버퍼(600)는 비디오 시퀀스의 프레임들의 블록들을 인코딩 또는 디코딩하는데 사용되는 레퍼런스 프레임들을 저장한다. 이 예에서, 레퍼런스 프레임 버퍼(600)는 마지막 프레임 LAST_FRAME(602), 골든 프레임 GOLDEN_FRAME (604), 및 대체 레퍼런스 프레임 ALTREF_FRAME(606)으로 식별되는 레퍼런스 프레임들을 포함한다. 레퍼런스 프레임의 프레임 헤더는 레퍼런스 프레임이 저장된 레퍼런스 프레임 버퍼 내의 위치에 대한 가상 인덱스를 포함할 수 있다. 레퍼런스 프레임 매핑은 레퍼런스 프레임의 가상 인덱스를 레퍼런스 프레임이 저장된 메모리의 물리적 인덱스에 매핑할 수 있다. 2 개의 레퍼런스 프레임들이 동일한 프레임인 경우, 이들 레퍼런스 프레임들은 상이한 가상 인덱스들을 갖는다 하더라도 동일한 물리적 인덱스를 갖게 된다. 사용된 레퍼런스 프레임 버퍼(600) 내의 레퍼런스 위치들의 개수, 유형들, 및 명칭들 단지 예들일 뿐이다.
[0055] 레퍼런스 프레임 버퍼(600)에 저장된 레퍼런스 프레임들은 인코딩 또는 디코딩될 프레임들의 블록들을 예측하기 위한 모션 벡터들을 식별하는데 사용될 수 있다. 현재 프레임의 현재 블록을 예측하기 위해 사용되는 예측의 유형에 따라 상이한 레퍼런스 프레임들이 사용될 수 있다. 예를 들면, 양방향 예측(bi-prediction)에서, 현재 프레임의 블록들은 LAST_FRAME(602) 또는 GOLDEN_FRAME(604)로서 저장된 프레임을 사용하여 순방향 예측될 수 있고, ALTREF_FRAME(606)로서 저장된 프레임을 사용하여 역방향 예측될 수 있다.
[0056] 레퍼런스 프레임 버퍼(600) 내에 저장될 수 있는 유한 개수의 레퍼런스 프레임들이 있을 수 있다. 도 6에 도시된 바와 같이, 레퍼런스 프레임 버퍼(600)는 최대 8 개의 레퍼런스 프레임들을 저장할 수 있으며, 각각의 저장된 레퍼런스 프레임은 레퍼런스 프레임 버퍼의 상이한 가상 인덱스와 연관될 수 있다. 레퍼런스 프레임 버퍼(600)에서 8 개의 공간들 중 3 개가 LAST_FRAME(602), GOLDEN_FRAME(604), 및 ALTREF_FRAME(606)으로 지정된 프레임들에 의해 사용되지만, 5 개의 공간들은 다른 레퍼런스 프레임을 저장하기 위해 이용 가능한 상태로 유지된다. 예를 들면, 레퍼런스 프레임 버퍼(600)에서 하나 이상의 이용 가능한 공간들은 추가 레퍼런스 프레임들, 특히 본 명세서에 기술된 보간된 레퍼런스 프레임의 일부 또는 전부를 저장하는 데 사용될 수 있다. 레퍼런스 프레임 버퍼(600)는 최대 8 개의 레퍼런스 프레임들을 저장할 수 있는 것으로 도시되어 있으나, 레퍼런스 프레임 버퍼(600)의 다른 구현예들은 추가 또는 더 적은 수의 레퍼런스 프레임들을 저장할 수도 있다.
[0057] 몇몇 구현예들에서, ALTREF_FRAME(606)으로 지정된 대체 레퍼런스 프레임은 디스플레이 순서에서는 현재 프레임으로부터 멀리 있지만 그 디스플레이되는 것보다 더 일찍 인코딩 또는 디코딩되는 비디오 시퀀스의 프레임일 수 있다. 예를 들면, 대체 레퍼런스 프레임은 디스플레이 순서에서 현재 프레임 이후의 10 개, 12 개, 또는 그 이상(또는 미만) 프레임들일 수 있다. 추가의 대체 레퍼런스 프레임들은 디스플레이 순서에서 현재 프레임에 더 가까이 위치된 프레임들일 수 있다.
[0058] 대체 레퍼런스 프레임은 시퀀스 중의 프레임에 직접 대응하지 않을 수 있다. 대신에, 대체 레퍼런스 프레임은 필터링이 적용되거나, 함께 결합되거나, 또는 함께 결합될 뿐만 아니라 필터링된 프레임들 중 하나 이상을 사용하여 생성될 수도 있다. 대체 레퍼런스 프레임은 디스플레이되지 않을 수도 있다. 대신에, 대체 레퍼런스 프레임은 예측 프로세스에서만 사용할 목적으로 생성 및 전송되는 프레임 또는 프레임의 일부일 수 있다(즉, 디코딩된 시퀀스가 디스플레이될 때는 생략된다).
[0059] 도 7은 비디오 시퀀스의 디스플레이 순서에 있어서의 프레임들의 그룹의 다이어그램이다. 이 예에서, 프레임들의 그룹은 키 프레임(key frame) 또는 몇몇 경우들에서는 오버레이 프레임으로 지칭될 수 있는 프레임(700)이 선행되고, 8 개의 프레임(702-716)을 포함한다. 프레임(700) 내의 어떤 블록도 프레임들의 그룹의 레퍼런스 프레임들을 사용하여 인터 예측되지 않는다. 프레임(700)은 이 예에서 키(인트라 예측된 프레임이라고도 함)이며, 이는 프레임 내의 예측된 블록들이 인트라 예측을 사용해서만 예측되는 그 상태를 지칭한다. 하지만, 프레임(700)은 오버레이 프레임일 수도 있는데, 이는 이전 그룹의 프레임들의 재구성된 프레임일 수 있는 인터 예측된 프레임이다. 인터 예측된 프레임에서, 예측된 블록들 중 적어도 일부는 인터 예측을 사용하여 예측된다. 각각의 프레임들의 그룹을 형성하는 프레임들의 개수는 비디오의 공간/시간 특성 및 예를 들면, 랜덤 액세스 또는 에러 회복성(error resilience)을 위해 선택된 키 프레임 간격과 같은 다른 인코딩된 구성들에 따라 변할 수 있다.
[0060] 각 프레임들의 그룹의 코딩 순서는 디스플레이 순서와 다를 수 있다. 이는 비디오 시퀀스에서 현재 프레임의 뒤에 위치된 프레임이 현재 프레임을 인코딩하기 위한 레퍼런스 프레임으로 사용될 수 있게 한다. 디코더(500)와 같은 디코더는 공통의 그룹 코딩 구조를 인코더(400)와 같은 인코더와 공유할 수 있다. 그룹 코딩 구조는 그룹 내의 각각의 프레임들이 레퍼런스 버프(예를 들면, 마지막 프레임, 대체 레퍼런스 프레임 등)에서 행할 수 있는 상이한 역할들을 할당하며 그룹 내의 프레임들에 대한 코딩 순서를 정의하거나 나타낸다.
[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은 프레임들의 그룹에 대한 코딩 순서의 일례일 뿐이다. 다른 그룹 코딩 구조들은 순방향 및/또는 역방향 예측을 위해 하나 이상의 상이한 또는 추가 프레임들을 지정할 수 있다.
[0062] 위에서 간략하게 언급된 바와 같이, 이용 가능한 레퍼런스 프레임 부분은 광흐름 추정을 사용하여 보간되는 레퍼런스 프레임 부분일 수 있다. 레퍼런스 프레임 부분은 예를 들면, 블록, 슬라이스, 또는 전체 프레임일 수 있다. 본 명세서에서 설명되는 바와 같이 프레임 레벨의 광흐름 추정이 수행될 때, 결과적인 레퍼런스 프레임은 그 치수들이 현재 프레임과 동일하기 때문에 본 명세서에서는 병치된(col-located) 레퍼런스 프레임으로 지칭된다. 이 보간된 레퍼런스 프레임은 본 명세서에서 광흐름 레퍼런스 프레임으로도 지칭될 수 있다.
[0063] 도 9는 본 명세서의 교시들에 따른 모션 필드의 선형 투영을 설명하기 위해 사용되는 다이어그램이다. 계층적 코딩 프레임워크 내에서, 현재 프레임의 광흐름(모션 필드라고도 함)은 현재 프레임의 전후에서 가장 가까운 이용 가능한 재구성된(예를 들면, 레퍼런스) 프레임을 사용하여 추정될 수 있다. 도 9에서, 레퍼런스 프레임 1은 현재 프레임(900)의 순방향 예측에 사용될 수 있는 레퍼런스 프레임인 반면, 레퍼런스 프레임 2는 현재 프레임(900)의 역방향 예측에 사용될 수 있는 레퍼런스 프레임이다. 예시를 위해 도 6 내지 도 8의 예를 이용하면, 현재 프레임(900)이 프레임(706)이면, 직전 또는 마지막 프레임(704)(예를 들면, LAST_FRAME(602)으로 레퍼런스 프레임 버퍼(600)에 저장된 재구성된 프레임)이 레퍼런스 프레임 1로 사용될 수 있는 한편, 프레임(716)(예를 들면, ALTREF_FRAME(606)으로 레퍼런스 프레임 버퍼(600)에 저장된 재구성된 프레임)은 레퍼런스 프레임 2로 사용될 수 있다.
[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 사이에서 선형이다.
[0065] 가장 가까운 이용 가능한 재구성된 순방향 및 역방향 레퍼런스 프레임들을 선택하고 시간적으로 선형인 현재 프레임의 각각의 픽셀들에 대한 모션 필드를 가정하는 것은, 추가 정보를 전송함이 없이 광흐름 추정을 사용한 보간된 레퍼런스 프레임의 생성이 인코더 및 디코더 양자 모두에서 (예를 들면, 인트라/인터 예측 단계(402) 및 인트라/인터 예측 단계(508)에서) 수행될 수 있게 한다. 가장 근접한 이용 가능한 재구성된 레퍼런스 프레임들 대신에, 상이한 프레임들이 인코더와 디코더 사이에 선험적으로(a priori) 지정된 것으로 사용될 수 있는 것도 가능하다. 몇몇 구현예들에서는, 광흐름 추정에 사용되는 프레임들의 식별이 전송될 수 있다. 보간된 프레임의 생성은 아래에서 더 상세하게 논의된다.
[0066] 도 10은 광흐름 추정을 사용하여 생성된 레퍼런스 프레임의 적어도 일부를 사용하는 비디오 시퀀스의 프레임의 모션 보상 예측을 위한 방법 또는 프로세스(1000)의 흐름도이다. 레퍼런스 프레임 부분은 예를 들면, 블록, 슬라이스, 또는 전체 레퍼런스 프레임일 수 있다. 광흐름 레퍼런스 프레임 부분은 본 명세서에서 병치된 레퍼런스 프레임 부분으로도 또한 지칭될 수도 있다. 프로세스(1000)는 예를 들면, 송신 스테이션(102) 또는 수신 스테이션(106)과 같은 컴퓨팅 디바이스들에 의해 실행될 수 있는 소프트웨어 프로그램으로 구현될 수 있다. 예를 들면, 소프트웨어 프로그램은 메모리(204) 또는 2 차 스토리지(214)와 같은 메모리에 저장될 수 있고 CPU(202)와 같은 프로세서에 의해 실행될 때 컴퓨팅 디바이스가 프로세스(1000)를 수행하게 할 수 있는 기계 판독 가능 명령들을 포함할 수 있다. 프로세스(1000)는 특수 하드웨어 또는 펌웨어를 사용하여 구현될 수 있다. 몇몇 컴퓨팅 디바이스들은 다수의 메모리들 또는 프로세서들을 가질 수 있고, 프로세스(1000)에 기술된 동작들은 다수의 프로세서들, 메모리들, 또는 양자 모두를 사용하여 분산될 수 있다.
[0067] 1002에서, 예측될 현재 프레임이 결정된다. 프레임들은 도 8에 도시된 코딩 순서와 같은, 임의의 순서로 코딩될 수 있고 그래서 예측될 수 있다. 예측될 프레임들은 제1, 제2, 제3 등의 프레임으로도 또한 지칭될 수 있다. 제1, 제2 등의 라벨은 반드시 프레임들의 순서를 나타내는 것은 아니다. 대신에, 달리 언급되지 않는 한, 라벨은 본 명세서에서 하나의 현재 프레임을 다른 프레임과 구별하기 위해 사용된다. 인코더에서, 프레임은 래스터 스캔(raster scan) 순서와 같은, 블록 코딩 순서로 블록들의 단위들로 처리될 수 있다. 디코더에서, 프레임은 또한 인코딩된 비트스트림 내의 그 인코딩된 잔차들의 수신에 따라 블록들의 단위들로 처리될 수 있다.
[0068] 1004에서, 순방향 및 역방향 레퍼런스 프레임들이 결정된다. 본 명세서에 설명된 예들에서, 순방향 및 역방향 레퍼런스 프레임들은 현재 프레임(900)과 같은, (예를 들면, 디스플레이 순서로) 현재 프레임의 전후의 가장 가까운 재구성된 프레임들이다. 도 10에 명시적으로 도시되지는 않았으나, 순방향 또는 역방향 레퍼런스 프레임이 존재하지 않으면, 프로세스(1000)는 종료된다. 그러면 현재 프레임은 광흐름을 고려하지 않고 처리된다.
[0069] 1004에서 순방향 및 역방향 레퍼런스 프레임들이 존재하는 경우, 1006에서 레퍼런스 프레임들을 사용하여 광흐름 레퍼런스 프레임 부분이 생성될 수 있다. 광흐름 레퍼런스 프레임 부분의 생성은 도 11 내지 도 14를 참조하여 보다 상세히 설명된다. 광흐름 레퍼런스 프레임 부분은 몇몇 구현예들에서, 레퍼런스 프레임 버퍼(600) 내의 정의된 위치에 저장될 수 있다. 초기에, 본 명세서의 교시들에 따른 광흐름 추정이 설명된다.
[0070] 다음의 라그랑지 함수(1)를 최소화함으로써 현재 프레임 부분의 각각의 픽셀들에 대해 광흐름 추정이 수행될 수 있다:
[0071]
Figure pct00001
(1)
[0072] 함수 1에서,
Figure pct00002
는 명도 항등성 가정(즉, 이미지의 작은 부분의 강도 값은 위치 변화에도 불구하고 시간 경과에 따라 변화하지 않고 유지된다는 가정)에 기초한 데이터 페널티이다.
Figure pct00003
은 모션 필드의 평활도(즉, 인접한 픽셀들은 이미지에서 동일한 객체 항목에 속할 가능성이 높고 그래서 실질적으로 동일한 이미지 모션을 초래한다는 특성)에 기초한 공간 페널티이다. 라그랑지 파라미터 λ는 모션 필드의 평활도의 중요성을 제어한다. 파라미터 λ의 큰 값은 모션 필드를 보다 평활하게 하고, 보다 큰 스케일의 모션을 더 잘 감안할 수 있다. 대조적으로, 파라미터 λ의 더 작은 값은 객체의 에지들 및 작은 객체들의 이동에 보다 효과적으로 적응할 수 있다.
[0073] 본 명세서의 교시들의 구현예에 따르면, 데이터 페널티는 데이터 페널티 함수로 표현될 수 있다:
[0074]
Figure pct00004
(2)
[0075] 현재 픽셀에 대한 모션 필드의 수평 성분은 u로 표현되는 한편, 모션 필드의 수직 성분은 v로 표현된다. 대략적으로 말하면, Ex, Ey, 및 Et는 (예를 들면, 프레임 인덱스들에 의해 표시되는 바와 같은) 수평 축 x, 수직 축 y, 및 시간 t에 대한 레퍼런스 프레임 부분들의 픽셀 값들의 도함수들이다. 수평 축 및 수직 축은 현재 프레임(900)과 같은 현재 프레임 및 레퍼런스 프레임들 1 및 2와 같은 레퍼런스 프레임들을 형성하는 픽셀들의 어레이에 대해 정의된다.
[0076] 데이터 페널티 함수에서, 도함수들 Ex, Ey, 및 Et는 다음의 함수들 (3), (4), 및 (5)에 따라 계산될 수 있다:
[0077]
Figure pct00005
[0078]
Figure pct00006
(3)
[0079]
Figure pct00007
[0080]
Figure pct00008
(4)
[0081]
Figure pct00009
(5)
[0082] 변수
Figure pct00010
은 인코딩되는 현재 프레임 내의 현재 픽셀 위치의 모션 필드에 기초한 레퍼런스 프레임 1 내의 투영된 위치에서의 픽셀 값이다. 유사하게, 변수
Figure pct00011
는 인코딩되는 현재 프레임 내의 현재 픽셀 위치의 모션 필드에 기초한 레퍼런스 프레임 2 내의 투영된 위치에서의 픽셀 값이다.
[0083] 변수
Figure pct00012
은 레퍼런스 프레임 1의 디스플레이 인덱스이며, 여기서 프레임의 디스플레이 인덱스는 비디오 시퀀스의 디스플레이 순서에 있어서의 그 인덱스이다. 유사하게, 변수
Figure pct00013
는 레퍼런스 프레임 2의 디스플레이 인덱스이고, 변수
Figure pct00014
은 현재 프레임(900)의 디스플레이 인덱스이다.
[0084] 변수
Figure pct00015
은 선형 필터를 사용하여 레퍼런스 프레임 1에서 계산된 수평 도함수(horizontal derivative)이다. 변수
Figure pct00016
는 선형 필터를 사용하여 레퍼런스 프레임 2에서 계산된 수평 도함수이다. 변수
Figure pct00017
은 선형 필터를 사용하여 레퍼런스 프레임 1에서 계산된 수직 도함수이다. 변수
Figure pct00018
는 선형 필터를 사용하여 레퍼런스 프레임 2에서 계산된 수직 도함수이다.
[0085] 본 명세서의 교시들의 구현예에서, 수평 도함수를 계산하는데 사용되는 선형 필터는 필터 계수 [-1/60, 9/60, -45/60, 0, 45/60, -9/60, 1/60]를 갖는 7-탭 필터(7-tap filter)이다. 필터는 상이한 주파수 프로파일, 상이한 개수의 탭들, 또는 양자 모두를 가질 수 있다. 수직 도함수들을 계산하는데 사용되는 선형 필터는 수평 도함수들을 계산하는데 사용되는 선형 필터와 동일하거나 상이할 수 있다.
[0086] 공간 페널티는 공간 페널티 함수로 나타낼 수 있다:
[0087]
Figure pct00019
(6)
[0088] 공간 페널티 함수(6)에서, Δu는 모션 필드의 수평 성분 u의 라플라시안(Laplacian)이고, Δv는 모션 필드의 수직 성분 v의 라플라시안이다.
[0089] 도 11은 광흐름 레퍼런스 프레임 부분을 생성하기 위한 방법 또는 프로세스(1100)의 흐름도이다. 이 예에서, 광흐름 레퍼런스 프레임 부분은 전체 레퍼런스 프레임이다. 프로세스(1100)는 프로세스(1000)의 스텝 1006을 구현할 수 있다. 프로세스(1100)는 예를 들면, 송신 스테이션(102) 또는 수신 스테이션(106)과 같은 컴퓨팅 디바이스들에 의해 실행될 수 있는 소프트웨어 프로그램으로 구현될 수 있다. 예를 들면, 소프트웨어 프로그램은 메모리(204) 또는 2 차 스토리지(214)와 같은 메모리에 저장될 수 있고 CPU(202)와 같은 프로세서에 의해 실행될 때 컴퓨팅 디바이스가 프로세스(1100)를 수행하게 할 수 있는 기계 판독 가능 명령들을 포함할 수 있다. 프로세스(1100)는 특수 하드웨어 또는 펌웨어를 사용하여 구현될 수 있다. 전술한 바와 같이, 다수의 프로세서들, 메모리들, 또는 양자 모두가 사용될 수도 있다.
[0090] 순방향 및 역방향 레퍼런스 프레임들은 서로 상대적으로 멀리 떨어져 있을 수 있기 때문에, 이들 사이에는 극적인 모션이 있을 수 있으며, 그래서 명도 항등성 가정의 정확도를 저하시킨다. 이 문제로부터 초래되는 픽셀의 모션에 있어서의 잠재적인 에러를 저감하기 위해, 현재 프레임으로부터 레퍼런스 프레임들로의 추정된 모션 벡터들이 현재 프레임에 대한 광흐름 추정을 초기화하는데 사용될 수 있다. 1102에서, 현재 프레임 내의 모든 픽셀들에는 초기화된 모션 벡터가 할당될 수 있다. 이들은 레퍼런스 프레임들 사이의 모션 길이들을 단축시키기 위해 제1 처리 레벨을 위해 레퍼런스 프레임들을 현재 프레임으로 워핑(warping)하는데 이용될 수 있는 초기 모션 필드들을 정의한다.
[0091] 현재 픽셀의 모션 필드
Figure pct00020
은 다음의 함수에 따라, 현재 픽셀로부터 역방향 레퍼런스 프레임, 이 예에서는 레퍼런스 프레임 2를 가리키는 추정된 모션 벡터
Figure pct00021
와 현재 픽셀로부터 순방향 레퍼런스 프레임, 이 예에서는 레퍼런스 프레임 1을 가리키는 추정된 모션 벡터
Figure pct00022
사이의 차이를 나타내는 모션 벡터를 사용하여 초기화될 수 있다:
[0092]
Figure pct00023
[0093] 모션 벡터들 중 어느 하나가 이용 가능하지 않은 경우, 다음의 함수들 중 어느 하나에 따라 이용 가능한 모션 벡터를 사용하여 초기 모션을 외삽(extrapolate)하는 것이 가능하다:
[0094]
Figure pct00024
, 또는
[0095]
Figure pct00025
.
[0096] 현재 픽셀이 이용 가능한 모션 벡터 레퍼런스를 갖지 않는 경우, 초기화된 모션 벡터를 갖는 하나 이상의 공간적 이웃들이 사용될 수 있다. 예를 들면, 이용 가능한 인접한 초기화된 모션 벡터들의 평균이 사용될 수 있다.
[0097] 1102에서 제1 처리 레벨을 위한 모션 필드를 초기화하는 예에서, 레퍼런스 프레임 2는 레퍼런스 프레임 1의 픽셀을 예측하기 위해 사용될 수 있는데, 여기서 레퍼런스 프레임 1은 현재 프레임이 코딩되기 전의 마지막 프레임이다. 도 9에 도시된 것과 유사한 방식으로 선형 투영을 사용하여 현재 프레임에 투영된 그 모션 벡터는, 픽셀 위치(902)에서의 모션 필드(906)와 같이, 교차하는 픽셀 위치에 모션 필드 mvcur을 발생시킨다.
[0098] 도 11은 프로세스(1100)에는 바람직하게는 다수의 처리 레벨들이 있기 때문에 제1 처리 레벨을 위한 모션 필드를 초기화하는 것을 언급하고 있다. 이는 도 11의 프로세스(1100)(및 아래에서 논의되는 도 12의 프로세스(1200))를 예시하는 다이어그램인 도 13을 참조하면 볼 수 있다. 이하의 설명은 모션 필드라는 문구를 사용한다. 이 문구는 문맥으로부터 달리 분명하지 않은 한, 각각의 픽셀들에 대한 모션 필드들을 총괄적으로 지칭하기 위한 것이다. 따라서, 2 개 이상의 모션 필드를 언급할 때에는 "모션 필드들" 또는 "모션 필드" 라는 문구들이 상호 교환적으로 사용될 수 있다. 또한, 픽셀들의 이동을 지칭할 때에는 광흐름이라는 문구가 모션 필드라는 문구와 상호 교환적으로 사용될 수 있다.
[0099] 프레임의 픽셀들에 대한 모션 필드/광흐름을 추정하기 위해, 피라미드 또는 다층 구조가 사용될 수 있다. 예를 들면, 하나의 피라미드 구조에서, 레퍼런스 프레임들은 하나 이상의 상이한 스케일들로 스케일 다운된다(scaled down). 그 다음에, 광흐름은 먼저 피라미드의 최고 레벨(제1 처리 레벨)에서, 즉 가장 스케일링된 레퍼런스 프레임들을 사용하여 모션 필드를 획득하기 위해 추정된다. 그 후에, 모션 필드는 업스케일링되어 다음 레벨에서 광흐름 추정을 초기화하는데 사용된다. 모션 필드를 업스케일링하고, 이를 사용하여 다음 레벨의 광흐름 추정을 초기화하며, 모션 필드를 획득하는 이 프로세스는 피라미드의 최하위 레벨에 도달할 때까지(즉, 전체 스케일의 레퍼런스 프레임 부분들에 대해 광흐름 추정이 완료될 때까지) 계속된다.
[00100] 이 프로세스의 논리적 근거는 이미지가 스케일 다운될 때 큰 모션을 캡처하는 것이 더 용이하다는 것이다. 하지만, 레퍼런스 프레임들 자체를 스케일링하기 위해 간단한 리스케일 필터들(rescale filters)을 사용하는 것은 레퍼런스 프레임 품질을 저하시킬 수 있다. 리스케일링으로 인한 세부 정보의 손실을 회피하기 위해, 광흐름을 추정하기 위해 레퍼런스 프레임들의 픽셀들 대신 도함수들을 스케일링하는 피라미드 구조. 이 피라미드 스킴(scheme)은 광흐름 추정을 위한 회귀 분석을 나타낸다. 이 스킴은 도 13에 도시되어 있으며, 도 11의 프로세스(1100) 및 도 12의 프로세스(1200)에 의해 구현된다.
[00101] 초기화 후에, 1104에서 라그랑지 함수(1)의 해를 구하기 위해 라그랑지 파라미터 λ가 설정된다. 바람직하게는, 프로세스(1100)는 라그랑지 파라미터 λ에 대해 다수의 값들을 사용한다. 1104에서 라그랑지 파라미터 λ가 설정되는 제1 값은 100과 같이 비교적 큰 값일 수 있다. 프로세스(1100)가 라그랑지 함수(1) 내에서 라그랑지 파라미터 λ에 대해 다수의 값들을 사용하는 것이 바람직하지만, 후술되는 프로세스(1200)에서 후술되는 바와 같이 단 하나의 값만이 사용되는 것도 가능하다.
[00102] 1106에서, 레퍼런스 프레임들은 현재 처리 레벨에 대한 모션 필드에 따라 현재 프레임으로 워핑된다. 레퍼런스 프레임들을 현재 프레임으로 워핑하는 것은 서브픽셀 위치 라운딩(subpixel location rounding)을 사용하여 수행될 수 있다. 제1 처리 레벨에서 사용되는 모션 필드
Figure pct00026
는 워핑을 수행하기 전에 그 풀 해상도 값으로부터 레벨의 해상도로 다운스케일링된다는 점에 유의할 필요가 있다. 모션 필드의 다운스케일링은 아래에서 보다 상세히 논의된다.
[00103] 광흐름
Figure pct00027
을 알면, 레퍼런스 프레임 1을 워핑하기 위한 모션 필드는 다음과 같이 (예를 들면, 모션은 시간 경과에 따라 선형으로 투영된다는) 선형 투영 가정에 의해 추론된다:
[00104]
Figure pct00028
[00105] 워핑을 수행하기 위해, 모션 필드
Figure pct00029
의 수평 성분
Figure pct00030
및 수직 성분
Figure pct00031
은 Y 성분에 대해서는 1/8 픽셀 정밀도로 및 U 및 V 성분에 대해서는 1/16 픽셀 정밀도로 라운딩될 수 있다. 서브픽셀 위치 라운딩에 대한 다른 값들도 사용될 수 있다. 라운딩 후, 워핑된 이미지의 각각의 픽셀
Figure pct00032
은 모션 벡터
Figure pct00033
에 의해 주어진 참조된 픽셀로 계산된다. 종래의 서브픽셀 보간 필터를 사용하여 서브픽셀 보간이 수행될 수 있다.
[00106] 레퍼런스 프레임 2에 대해서도 동일한 워핑 접근법이 수행되어 워핑된 이미지
Figure pct00034
가 얻어지는데, 여기서 모션 필드는 다음에 의해 계산된다:
[00107]
Figure pct00035
[00108] 1106에서의 계산의 말미에는, 2 개의 워핑된 레퍼런스 프레임들이 존재한다. 2 개의 워핑된 레퍼런스 프레임들은 1108에서 이들 사이의 모션 필드를 추정하는데 사용된다. 1108에서 모션 필드를 추정하는 것은 다수의 스텝들을 포함할 수 있다.
[00109] 먼저, 도함수들 Ex, Ey, 및 Et가 함수들 (3), (4), 및 (5)를 사용하여 계산된다. 도함수들을 계산할 때, 가장 가까운 이용 가능한 픽셀을 복사함으로써 워핑된 레퍼런스 프레임의 프레임 경계부들이 확장될 수 있다. 이러한 방식으로, 투영된 위치들이 워핑된 레퍼런스 프레임의 외부에 있을 때 픽셀 값들(즉,
Figure pct00036
및/또는
Figure pct00037
)이 얻어질 수 있다. 그 다음에, 다수의 층들이 있으면, 도함수들은 현재 레벨로 다운스케일링된다. 도 13에 도시된 바와 같이, 레퍼런스 프레임들은 세부 사항들을 캡쳐하기 위해 원래 스케일에서 도함수를 계산하는 데 사용된다. 각각의 레벨 l에서 도함수들을 다운스케일링하는 것은 21 x 21 블록 내에서 평균화함으로써 계산될 수 있다. 도함수들을 계산하는 것뿐만 아니라 도함수들을 평균화하여 다운스케일링하는 것은 모두 선형 연산들이기 때문에, 2 개의 연산들은 각각의 레벨 l에서 도함수들 계산하기 위해 단일의 선형 필터로 결합될 수 있다는 것이 주목된다. 이는 계산들의 복잡도를 낮출 수 있다.
[00110] 도함수들이 현재 처리 레벨로 다운스케일링되면, 해당되는 경우, 라그랑지 함수(1)에 따라 광흐름 추정이 수행될 수 있다. 보다 구체적으로, 모션 필드의 수평 성분 u 및 모션 필드의 수직 성분 v에 대한 라그랑지 함수(1)의 도함수들을 0으로 설정함으로써(즉,
Figure pct00038
Figure pct00039
),
Figure pct00040
개의 선형 방정식들로 프레임의 모든 N 픽셀들에 대해 성분 u 및 v를 풀 수 있다. 이것은 라플라시안(Laplacians)이 2 차원(2D) 필터에 의해 근사된다는 사실에 기인한다. 정확하지만 매우 복잡한 선형 방정식들을 직접 푸는 대신에, 라그랑지 함수(1)를 최소화하기 위해 반복 접근법들이 사용되어 더 빠르지만 덜 정확한 결과를 얻을 수 있다.
[00111] 1108에서, 현재 프레임의 픽셀들에 대한 모션 필드가 워핑된 레퍼런스 프레임들 사이의 추정된 모션 필드를 사용하여 업데이트되거나 개선된다. 예를 들면, 픽셀에 대한 현재 모션 필드는 픽셀별로 각각의 픽셀에 대해 추정된 모션 필드를 추가함으로써 업데이트될 수 있다.
[00112] 일단 1108에서 모션 필드가 추정되고 나면, 라그랑지 파라미터 λ에 대한 이용 가능한 추가 값들이 있는지 여부를 결정하기 위해 1110에서 질의가 이루어진다. 라그랑지 파라미터 λ의 보다 작은 값들은 보다 작은 스케일의 모션에 대처할 수 있다. 추가 값들이 존재하는 경우, 프로세스(1100)는 1104로 복귀하여 라그랑지 파라미터 λ에 대한 다음 값을 설정할 수 있다. 예를 들면, 프로세스(1100)는 각각의 반복(each iteration)에서 라그랑지 파라미터 λ를 절반으로 줄이면서 반복할 수 있다. 1108에서 업데이트된 모션 필드는 이 다음 반복에서 1106에서 레퍼런스 프레임들을 워핑하기 위한 현재 모션 필드이다. 그 다음에, 모션 필드는 1108에서 다시 추정된다. 1104, 1106, 및 1108에서의 처리는 1110에서의 모든 가능한 라그랑지 파라미터들이 처리될 때까지 계속된다. 일례에서, 도 13에 도시된 바와 같이 피라미드에는 3 개의 레벨들이 있으며, 그래서 일례에서 라그랑지 파라미터 λ의 최소값은 25이다. 라그랑지 파라미터를 변경하면서 이루어지는 이러한 반복 처리는 라그랑지 파라미터를 어닐링(annealing)하는 것으로 지칭될 수 있다.
[00113] 일단 1110에서 라그랑지 파라미터 λ에 대해 남아있는 값이 없게 되면, 프로세스(1100)는 1112로 진행하여 처리할 처리 레벨들이 더 있는지 여부를 결정한다. 1112에서 추가 처리 레벨들이 존재하면, 프로세스(1100)는 1114로 진행하며, 여기서 1104에서 시작하여 라그랑지 파라미터 λ에 대해 이용 가능한 값들 각각을 사용하여 다음 층을 처리하기 전에 모션 필드가 업스케일링된다. 모션 필드의 업스케일링은 전술한 다운스케일링 계산들의 역(reverse)을 포함하는(그러나, 이에 제한되지 않음) 임의의 알려진 기술을 사용하여 수행될 수 있다.
[00114] 일반적으로, 광흐름은 피라미드의 최고 레벨에서 모션 필드을 획득하기 위해 먼저 추정된다. 그 후에, 모션 필드는 업스케일링되어 다음 레벨에서 광흐름 추정을 초기화하는데 사용된다. 모션 필드를 업스케일링하고, 이를 사용하여 다음 레벨의 광흐름 추정을 초기화하며, 모션 필드를 획득하는 이 프로세스는 1112에서 피라미드의 최하위 레벨에 도달할 때까지(즉, 풀 스케일로 계산된 도함수들에 대해 광흐름 추정이 완료될 때까지) 계속된다.
[00115] 일단 레벨이 레퍼런스 프레임들이 다운스케일링되지 않는 레벨(즉, 레퍼런스 프레임들이 그 원래 해상도에 있음)에 도달하면, 프로세스(1100)는 1116으로 진행한다. 예를 들면, 레벨들의 수는 도 13의 예에서와 같은, 3 개일 수 있다. 1116에서, 워핑된 레퍼런스 프레임들은 블렌딩되어 광흐름 레퍼런스 프레임
Figure pct00041
를 형성한다. 1116에서 블렌딩된 워핑된 레퍼런스 프레임들은 1108에서 추정된 모션 필드를 사용하여 1106에 기술된 프로세스에 따라 다시 워핑되는 풀 스케일 레퍼런스 프레임들일 수 있음에 유의하자. 다시 말하면, 풀 스케일의 레퍼런스 프레임들은 2 회 ― 이전 처리 층으로부터의 최초의 업스케일링된 모션 필드를 사용하여 한 번 및 모션 필드가 풀 스케일 레벨로 개선된 후에 다시 ― 워핑될 수 있다. 블렌딩은 다음과 같이 (예를 들면, 프레임들이 동일한 시간 간격들로 이격되어 있다는) 시간 선형성 가정을 이용하여 수행될 수 있다:
[00116]
Figure pct00042
[00117] 몇몇 구현예들에서는, 블렌딩된 값보다는 워핑된 레퍼런스 프레임들 중 하나만의 픽셀을 선호하는 것이 바람직하다. 예를 들면, (
Figure pct00043
로 표시된) 레퍼런스 프레임 1의 레퍼런스 픽셀은 경계들을 벗어하는(예를 들면, 프레임의 치수들의 외부에 있음) 반면 레퍼런스 프레임 2의 레퍼런스 픽셀은 경계들을 벗어나지 않으면, 레퍼런스 프레임 2에서 발생하는 워핑된 이미지의 픽셀만 다음에 따라 사용된다:
[00118]
Figure pct00044
[00119] 블렌딩의 일부로서 선택적인 폐색 검출(occlusion)이 수행될 수 있다. 객체들과 배경의 폐색은 비디오 시퀀스에서 흔히 발생하는데, 객체의 부분들은 하나의 레퍼런스 프레임에는 나타나지만 다른 레퍼런스 프레임에는 숨겨져 있다. 일반적으로, 전술한 광흐름 추정 방법은 명도 항등성 가정이 위반되기 때문에 이러한 상황에서는 객체의 모션을 추정할 수 없다. 폐색의 크기가 비교적 작은 경우, 평활도 페널티 함수는 모션을 꽤 정확하게 추정할 수 있다. 즉, 숨겨진 부분에서의 미정의(undefined) 모션 필드가 인접한 모션 벡터들에 의해 평활화되면, 전체 객체의 모션은 정확할 수 있다.
[00120] 하지만, 이러한 경우에 조차도, 전술한 간단한 블렌딩 방법은 만족스러운 보간 결과를 제공하지 않을 수 있다. 이는 객체 폐색을 예시하는 다이어그램인 도 14를 참조하여 설명될 수 있다. 이 예에서 객체 A의 폐색된 부분은 레퍼런스 프레임 1에서는 표시되고 레퍼런스 프레임 2에서는 객체 B에 의해 숨겨진다. 객체 A의 숨겨진 부분이 레퍼런스 프레임 2에는 표시되지 않기 때문에, 레퍼런스 프레임 2로부터의 참조된 픽셀은 객체 B의 것이다. 이 경우에는, 레퍼런스 프레임 1로부터의 워핑된 픽셀만을 사용하는 것이 바람직하다. 따라서, 상기 블렌딩 대신에 또는 그에 부가하여 폐색들을 검출하는 기술을 사용하면 보다 나은 블렌딩 결과를 제공할 수 있고, 그래서 보다 나은 레퍼런스 프레임을 제공할 수 있다.
[00121] 폐색의 검출과 관련하여, 도 14로부터 폐색이 발생하고 모션 필드가 꽤 정확한 경우, 객체 A의 폐색된 부분의 모션 벡터는 레퍼런스 프레임 2에서 객체 B를 가리킴이 관찰된다. 이는 다음과 같은 상황들을 초래할 수 있다. 첫 번째 상황은 워핑된 픽셀 값들
Figure pct00045
Figure pct00046
는 2 개의 상이한 객체들에서 온 것이기 때문에 매우 다르다는 것이다. 두 번째 상황은 객체 B의 픽셀들은 현재 프레임 내의 객체 B 및 현재 프레임 내의 객체 A의 폐색 부분에 대한 다수의 모션 벡터들에 의해 참조된다는 것이다.
[00122] 이러한 관찰들에 의해,
Figure pct00047
에 대한
Figure pct00048
만의 폐색 및 사용을 결정하기 위해 다음의 조건들이 확립될 수 있으며,
Figure pct00049
에 대해
Figure pct00050
만 사용하는 경우에도 유사한 조건들이 적용된다:
[00123]
Figure pct00051
이 문턱값
Figure pct00052
보다 크고; 그리고
[00124]
Figure pct00053
가 문턱값
Figure pct00054
보다 크다.
[00125]
Figure pct00055
는 레퍼런스 프레임 1의 참조된 픽셀이 현재의 병치된 프레임 내의 임의의 픽셀에 의해 참조되는 총 횟수이다. 전술한 서브픽셀 보간이 존재하는 경우, 레퍼런스 서브픽셀 위치가 관심있는 픽셀 위치의 1 픽셀 길이 내에 있을 때
Figure pct00056
가 카운트된다. 또한,
Figure pct00057
가 서브픽셀 위치를 가리키는 경우, 4 개의 인접한 픽셀들의 가중 평균
Figure pct00058
는 현재의 서브픽셀 위치에 대한 레퍼런스들의 총 수이다.
Figure pct00059
도 유사하게 정의할 수 있다.
[00126] 따라서, 제1 워핑된 레퍼런스 프레임 및 제2 워핑된 레퍼런스 프레임을 사용하여 제1 레퍼런스 프레임에서 폐색이 검출될 수 있다. 그 다음, 워핑된 레퍼런스 프레임들의 블렌딩은 제2 워핑된 레퍼런스 프레임으로부터의 픽셀 값들로 폐색에 대응하는 광흐름 레퍼런스 프레임의 픽셀 위치들을 채우는 것(populating)을 포함할 수 있다. 유사하게, 제1 워핑된 레퍼런스 프레임 및 제2 워핑된 레퍼런스 프레임을 사용하여 제2 레퍼런스 프레임에서 폐색이 검출될 수 있다. 그 다음, 워핑된 레퍼런스 프레임들의 블렌딩은 제1 워핑된 레퍼런스 프레임으로부터의 픽셀 값들로 폐색에 대응하는 광흐름 레퍼런스 프레임의 픽셀 위치들을 채우는 것을 포함할 수 있다.
[00127] 프로세스(1100)는 실질적인 압축 성능 이득들을 제공한다는 것이 실험적으로 제시된다. 이들 성능 이득들은 저해상도 프레임들의 세트의 경우 PSNR에서 2.5 % 및 SSIM에서 3.3 %, 및 중해상도 프레임들의 세트의 경우 PSNR에서 3.1 % 및 SSIM에서 4.0 %의 이득들을 포함한다. 하지만, 및 전술한 바와 같이, 라그랑지 함수(1)에 따라 수행되는 광흐름 추정은 프레임의 모든 N 픽셀들에 대한 모션 필드의 수평 성분 u 및 수직 성분 v를 풀기 위해
Figure pct00060
선형 방정식들을 이용한다. 다시 말해서, 광흐름 추정의 계산 복잡도는 프레임 크기의 다항식 함수이며, 이는 디코더의 복잡도에 부담을 준다. 따라서, 서브프레임 기반(예를 들면, 블록 기반)의 광흐름 추정이 다음에 설명되는데, 이는 도 11과 관련하여 설명된 프레임 기반 광흐름 추정보다 디코더의 복잡도를 저감시킬 수 있다.
[00128] 도 12는 광흐름 레퍼런스 프레임 부분을 생성하기 위한 방법 또는 프로세스(1200)의 흐름도이다. 이 예에서, 광흐름 레퍼런스 프레임 부분은 전체 레퍼런스 프레임보다 더 작다. 이 예에서 병치된 프레임 부분들은 블록을 참조하여 설명되지만, 다른 프레임 부분들은 도 12에 따라 처리될 수 있다. 프로세스(1200)는 프로세스(1000)의 스텝 1006을 구현할 수 있다. 프로세스(1200)는 예를 들면, 송신 스테이션(102) 또는 수신 스테이션(106)과 같은 컴퓨팅 디바이스들에 의해 실행될 수 있는 소프트웨어 프로그램으로 구현될 수 있다. 예를 들면, 소프트웨어 프로그램은 메모리(204) 또는 2 차 스토리지(214)와 같은 메모리에 저장될 수 있고 CPU(202)와 같은 프로세서에 의해 실행될 때 컴퓨팅 디바이스가 프로세스(1200)를 수행하게 할 수 있는 기계 판독 가능 명령들을 포함할 수 있다. 프로세스(1200)는 특수 하드웨어 또는 펌웨어를 사용하여 구현될 수 있다. 전술한 바와 같이, 다수의 프로세서들, 메모리들, 또는 양자 모두가 사용될 수도 있다.
[00129] 1202에서, 현재 프레임 내의 모든 픽셀들에는 초기화된 모션 벡터가 할당된다. 이들은 레퍼런스 프레임들 사이의 모션 길이들을 단축시키기 위해 제1 처리 레벨을 위해 레퍼런스 프레임들을 현재 프레임으로 워핑하는데 이용될 수 있는 초기 모션 필드들을 정의한다. 1202에서의 초기화는 1102에서의 초기화와 관련하여 설명된 것과 동일한 처리를 이용하여 수행될 수 있으며, 그래서 여기서는 설명이 반복되지 않는다.
[00130] 1204에서, 레퍼런스 프레임들 ― 예컨대, 레퍼런스 프레임 1 및 레퍼런스 프레임 2 ― 은 1202에서 초기화된 모션 필드에 따라 현재 프레임으로 워핑된다. 1204에서의 워핑은 바람직하게는, 1202에서 초기화된 모션 필드 mvcur가 레퍼런스 프레임들을 워핑하기 전에 그 풀 해상도 값으로부터 다운스케일링되지 않는 것을 제외하고는, 1106에서의 워핑과 관련하여 설명된 것과 동일한 처리를 이용하여 수행될 수 있다.
[00131] 1204에서의 계산의 말미에는, 풀 해상도의 2 개의 워핑된 레퍼런스 프레임들이 존재한다. 프로세스(1100)와 같이, 프로세스(1200)는 도 13과 관련하여 설명된 것과 유사한 멀티-레벨 프로세스를 사용하여 2 개의 레퍼런스 프레임들 사이의 모션 필드를 추정할 수 있다. 대략적으로 말하면, 프로세스(1200)는 모든 레벨이 고려될 때까지 레벨에 대한 도함수들을 계산하고, 도함수들을 사용하여 광흐름 추정을 수행하며, 결과적인 모션 필드를 다음 레벨을 위해 업스케일링한다.
[00132] 보다 구체적으로, 현재(또는 제1) 처리 레벨에서 블록에 대한 모션 필드
Figure pct00061
이 1206에서 초기화된다. 블록은 현재 프레임의 스캔 순서(예를 들면, 래스터 스캔 순서)에서 선택된 현재 프레임의 블록일 수 있다. 블록에 대한 모션 필드
Figure pct00062
은 블록의 각각의 픽셀들에 대한 모션 필드를 포함한다. 즉, 1206에서, 현재의 블록 내의 모든 픽셀들에는 초기화된 모션 벡터가 할당된다. 초기화된 모션 벡터들은 레퍼런스 프레임들의 레퍼런스 블록들 사이의 길이들을 단축시키기 위해 레퍼런스 블록들을 현재 블록으로 워핑하는데 사용된다.
[00133] 1206에서, 모션 필드
Figure pct00063
은 그 풀 해상도 값으로부터 레벨의 해상도로 다운스케일링된다. 다시 말하면, 1206에서의 초기화는 1202에서 초기화된 풀 해상도 값으로부터 블록의 각각의 픽셀들에 대한 모션 필드를 다운스케일링하는 것을 포함할 수 있다. 다운스케일링은 전술한 다운스케일링과 같은, 임의의 기술을 사용하여 수행될 수 있다.
[00134] 1208에서, 워핑된 레퍼런스 프레임들 각각의 모션 필드에 대응하는 병치된 레퍼런스 블록들이 현재 블록으로 워핑된다. 레퍼런스 블록들의 워핑은 1106에서의 프로세스(1100)와 유사하게 수행된다. 즉, 레퍼런스 프레임 1의 레퍼런스 블록의 픽셀들의 광흐름
Figure pct00064
를 알면, 워핑을 위한 모션 필드는 다음과 같이 (예를 들면, 모션은 시간 경과에 따라 선형으로 투영된다는) 선형 투영 가정에 의해 추론된다:
[00135]
Figure pct00065
[00136] 워핑을 수행하기 위해, 모션 필드
Figure pct00066
의 수평 성분
Figure pct00067
및 수직 성분
Figure pct00068
은 Y 성분에 대해서는 1/8 픽셀 정밀도로 및 U 및 V 성분에 대해서는 1/16 픽셀 정밀도로 라운딩될 수 있다. 다른 값들도 사용될 수 있다. 라운딩 후, 워핑된 블록의 각각의 픽셀, 예를 들면
Figure pct00069
은 모션 벡터 mvr1에 의해 주어진 참조된 픽셀로 계산된다. 종래의 서브픽셀 보간 필터를 사용하여 서브픽셀 보간이 수행될 수 있다.
[00137] 레퍼런스 프레임 2의 레퍼런스 블록에 대해서도 동일한 워핑 접근법이 수행되어 워핑된 블록, 예를 들면
Figure pct00070
가 얻어지는데, 여기서 모션 필드는 다음에 의해 계산된다:
[00138]
Figure pct00071
[00139] 1208에서의 계산의 말미에, 2 개의 워핑된 레퍼런스 블록들이 존재한다. 2 개의 워핑된 레퍼런스 블록들은 1210에서 이들 사이의 모션 필드를 추정하는 데 사용된다. 1210에서의 처리는 도 11의 1108에서의 처리와 관련하여 설명된 것과 유사할 수 있다.
[00140] 보다 구체적으로, 2 개의 워핑된 레퍼런스 블록들은 풀 해상도일 수 있다. 도 13의 피라미드 구조에 따르면, 도함수들 Ex, Ey, 및 Et가 함수들 (3), (4), 및 (5)를 사용하여 계산된다. 프레임 레벨 추정을 위한 도함수들을 계산할 때, 프로세스(1100)와 관련하여 설명된 바와 같이 경계를 벗어난 픽셀 값들을 획득하기 위해 가장 가까운 이용 가능한 픽셀을 복사함으로써 프레임 경계부들이 확장될 수 있다. 하지만, 다른 프레임 부분들의 경우, 1204에서 워핑된 레퍼런스 프레임들에서 인접한 픽셀들이 종종 이용 가능하다. 예를 들어, 블록 기반 추정의 경우, 블록 자체가 프레임 경계부에 있지 않으면 워핑된 레퍼런스 프레임들에서 인접 블록들의 픽셀들이 이용 가능하다. 따라서, 워핑된 레퍼런스 프레임 부분에 대해 경계들을 벗어난 픽셀들의 경우에, 워핑된 레퍼런스 프레임의 인접 부분들의 픽셀들은, 해당되는 경우 픽셀 값들
Figure pct00072
및/또는
Figure pct00073
로 사용될 수 있다. 투영된 픽셀들이 프레임 경계부들의 외부에 있는 경우, 가장 가까운 이용 가능한(즉, 경계들 내의) 픽셀을 복사하는 것이 여전히 사용될 수 있다. 도함수들이 계산된 후, 이들은 현재 레벨로 다운스케일링될 수 있다. 각각의 레벨 l에서 다운스케일링된 도함수들은 앞서 논의된 바와 같이, 21 x 21 블록 내에서 평균화함으로써 계산될 수 있다. 도함수들을 계산하고 평균화하는 두 가지 선형 연산들을 단일의 선형 필터로 결합함으로써 계산들의 복잡도를 낮출 수 있지만, 필수는 아니다.
[00141] 1210에서의 처리를 계속하면, 다운스케일링된 도함수들은 워핑된 레퍼런스 부분들 사이의 모션 필드을 추정하기 위한 광흐름 추정을 수행하게 위해 라그랑지 함수(1)의 입력들로서 사용될 수 있다. 수평 성분 u 및 수직 성분 v에 대한 라그랑지 함수(1)의 도함수들을 0으로 설정하고(즉,
Figure pct00074
Figure pct00075
),
Figure pct00076
개의 선형 방정식들을 푸는 것에 의해, 부분, 여기서는 블록의 모든 N 픽셀들에 대해 모션 필드의 수평 성분 u 및 수직 성분 v가 결정될 수 있다. 이를 위해, 경계를 벗어난 모션 벡터들을 다루는 두 가지 선택적 방법이 있다. 하나의 방법은 인접한 블록들과 제로 상관(zero correlation)을 가정하고, 경계를 벗어난 모션 벡터가 경계를 벗어난 픽셀 위치에 가장 가까운 경계부 위치에 있는 모션 벡터와 동일하다고 가정하는 것이다. 다른 방법은 현재 픽셀에 대해 초기화된 모션 벡터(즉, 1206에서 초기화된 모션 필드)를 현재 픽셀에 대응하는 경계를 벗어난 픽셀 위치에 대한 모션 벡터로 사용하는 것이다.
[00142] 모션 필드가 추정되고 난 후에, 레벨에 대한 현재 모션 필드가 워핑된 레퍼런스 블록들 사이의 추정 모션 필드를 사용하여 업데이트되거나 개선되어, 1210에서의 처리를 완료한다. 예를 들면, 픽셀에 대한 현재 모션 필드는 픽셀별로 각각의 픽셀에 대해 추정된 모션 필드를 추가함으로써 업데이트될 수 있다.
[00143] 프로세스(1100)에서, 각각의 레벨에서 모션 필드가 라그랑지 파라미터 λ에 대해 점점 더 작은 값들을 사용하여 추정되고 개선되도록, 라그랑지 파라미터 λ에 대해 감소하는 값들(decreasing values)을 설정하기 위해 추가 루프가 포함된다. 프로세스(1200)에서, 이 루프는 생략된다. 즉, 도시된 바와 같은 프로세스(1200)에서는, 라그랑지 파라미터 λ에 대해 단 하나의 값만이 현재 처리 레벨에서 모션 필드를 추정하는데 사용된다. 이는 25와 같이, 비교적 작은 값일 수 있다. 예를 들면, 모션의 평활도, 이미지 해상도, 또는 다른 변수들에 따라, 라그랑지 파라미터 λ에 대해 다른 값들도 가능하다.
[00144] 다른 구현예들에서, 프로세스(1200)는 라그랑지 파라미터 λ를 변경하기 위한 추가 루프를 포함할 수 있다. 이러한 루프가 포함되는 구현예에서, 프로세스(1100)에서 1104 및 1110에서의 처리와 관련하여 설명된 바와 같이, 1208에서 레퍼런스 블록들을 워핑하고 1210에서 모션 필드를 추정 및 업데이트하는 것이 라그랑지 파라미터 λ에 대한 모든 값들이 사용될 때까지 반복되도록, 라그랑지 파라미터 λ는 1210에서 모션 필드를 추정하기 전에 설정될 수 있다.
[00145] 프로세스(1200)는 1210에서 모션 필드를 추정 및 업데이트한 후에 1212의 질의로 진행한다. 이는 라그랑지 파라미터 λ에 단일 값이 사용될 때 1210의 레벨에서 첫 번째이면서 유일한 모션 필드 추정 및 업데이트의 후에 수행된다. 라그랑지 파라미터 λ에 대한 다수의 값들이 처리 레벨에서 수정될 때, 프로세스(1200)는 라그랑지 파라미터 λ의 최종 값을 사용하여 1210에서 모션 필드를 추정 및 업데이트한 후에 1212의 질의로 진행한다.
[00146] 1212에서 질의에 응답하여 추가 처리 레벨들이 있는 경우, 프로세스(1200)는 1214로 진행하며, 여기서 모션 필드는 1206에서 시작하여 다음 층을 처리하기 전에 업스케일링된다. 업스케일링은 임의의 알려진 기술에 따라 수행될 수 있다.
[00147] 일반적으로, 광흐름은 먼저 피라미드의 최고 레벨에서 모션 필드을 획득하기 위해 추정된다. 그 후, 모션 필드는 업스케일링되어 다음 레벨에서 광흐름 추정을 초기화하는데 사용된다. 모션 필드를 업스케일링하고, 이를 사용하여 다음 레벨의 광흐름 추정을 초기화하며, 모션 필드를 획득하는 이 프로세스는 1212에서 피라미드의 최하위 레벨에 도달할 때까지(즉, 풀 스케일로 계산된 도함수들에 대해 광흐름 추정이 완료될 때까지) 계속된다.
[00148] 일단 레벨이 레퍼런스 프레임들이 다운스케일링되지 않는 레벨(즉, 레퍼런스 프레임들이 그 원래 해상도에 있음)에 도달하면, 프로세스(1200)는 1216으로 진행한다. 예를 들면, 레벨들의 수는 도 13의 예에서와 같은, 3 개일 수 있다. 1216에서, 워핑된 레퍼런스 블록들은 블렌딩되어 광흐름 레퍼런스 블록(예를 들면, 전술한 바와 같이
Figure pct00077
)을 형성한다. 1216에서 블렌딩된 워핑된 레퍼런스 블록들은 1210에서 추정된 모션 필드를 사용하여 1208에 기술된 프로세스에 따라 다시 워핑되는 풀 스케일 레퍼런스 블록들일 수 있음에 유의하자. 다시 말하면, 풀 스케일의 레퍼런스 블록들은 2 회 ― 이전 처리 층으로부터의 최초의 업스케일링된 모션 필드를 사용하여 한 번 및 모션 필드가 풀 스케일 레벨로 개선된 후에 다시 ― 워핑될 수 있다. 블렌딩은 1116에서 설명된 처리와 유사하게 시간 선형성 가정을 이용하여 수행될 수 있다. 1116에서 설명되고 도 14에 예로서 도시된 바와 같은 선택적인 폐색 검출은 1216에 블렌딩의 일부로서 통합될 수도 있다.
[00149] 1216에서 병치된 레퍼런스 블록이 생성되고 난 후에, 프로세스(1200)는 1218로 진행하여 예측을 위한 추가 프레임 부분들(여기서는, 블록들)이 있는지 여부를 결정한다. 있는 경우, 프로세스(1200)는 다음 블록에 대해 1206에서 시작하여 반복한다. 블록들은 스캔 순서로 처리될 수 있다. 1218에서의 질의에 응답하여 고려해야 할 블록이 더 이상 없으면, 프로세스(1200)는 종료된다.
[00150] 도 10을 다시 참조하면, 프로세스(1200)는 프로세스(1000)에서 1006을 구현할 수 있다. 1006에서의 처리의 말미에는, 프로세스(1100), 프로세스(1200), 또는 본 명세서에 기재된 바와 같은 이들의 변형예에 따라 수행되는지에 관계없이, 하나 이상의 워핑된 레퍼런스 프레임 부분들이 존재한다.
[00151] 1008에서는, 1006에서 생성된 광흐름 레퍼런스 프레임 부분을 사용하여 예측 프로세스가 수행된다. 인코더에서 예측 프로세스를 수행하는 것은 프레임의 현재 블록에 대한 광흐름 레퍼런스 프레임으로부터 예측 블록을 생성하는 것을 포함할 수 있다. 광흐름 레퍼런스 프레임은 프로세스(1100)에 의해 출력되고 레퍼런스 프레임 버퍼(600)와 같은 레퍼런스 프레임 버퍼에 저장되는 광흐름 레퍼런스 프레임일 수 있다. 광흐름 레퍼런스 프레임은 프로세스(1200)에 의해 출력된 광흐름 레퍼런스 부분들을 결합함으로써 생성된 광흐름 레퍼런스 프레임일 수 있다. 광흐름 레퍼런스 부분들을 결합하는 것은 광흐름 레퍼런스 부분들 각각의 생성에 사용되는 각각의 현재 프레임 부분들의 픽셀 위치들에 따라 광흐름 레퍼런스 부분들(예를 들면, 병치된 레퍼런스 블록들)을 배열하는 것을 포함할 수 있다. 결과적인 광흐름 레퍼런스 프레임은 인코더(400)의 레퍼런스 프레임 버퍼(600)와 같은, 인코더의 레퍼런스 프레임 버퍼에 사용하기 위해 저장될 수 있다.
[00152] 인코더에서 예측 블록을 생성하는 것은 광흐름 레퍼런스 프레임에서 병치된 블록을 예측 블록으로서 선택하는 것을 포함할 수 있다. 인코더에서 예측 블록을 생성하는 것은 대신에 현재 블록에 대한 가장 잘 매칭되는 예측 블록을 선택하기 위해 광흐름 레퍼런스 프레임 내에서 모션 검색을 수행하는 것을 포함할 수 있다. 하지만, 예측 블록은 인코더에서 생성되며, 결과적인 잔차는 예컨대 도 4의 인코더(400)와 관련하여 설명된 손실성 인코딩 프로세스(lossy encoding process)를 사용하여 추가로 처리될 수 있다.
[00153] 인코더에서, 프로세스(1000)는 하나 이상의 인트라 예측 모드들 및 현재 프레임에 대해 이용 가능한 예측 프레임들을 사용하는 단일 및 복합 인터 예측 모드들 둘 모두를 포함하는, 다양한 예측 모드들을 사용하는 현재 블록에 대한 레이트 왜곡 루프(rate distortion loop)의 일부를 형성할 수 있다. 단일 인터 예측 모드는 인터 예측을 위해 단일의 순방향 또는 역방향 레퍼런스 프레임만을 사용한다. 복합 인터 예측 모드는 인터 예측을 위해 순방향 및 역방향 레퍼런스 프레임 양자 모두를 사용한다. 레이트 왜곡 루프에서는, 각각의 예측 모드들을 사용하여 현재 블록을 인코딩하는데 사용되는 레이트(예를 들면, 비트 수)가 인코딩으로 인한 왜곡과 비교된다. 왜곡은 인코딩 전과 디코딩 후의 블록의 픽셀 값들 사이의 차이들로 계산될 수 있다. 차이들은 절대 차이들의 합 또는 프레임들의 블록들에 대한 누적 오류를 캡처하는 다른 측정치일 수 있다.
[00154] 몇몇 구현예들에서는, 광흐름 레퍼런스 프레임의 사용을 단일 인터 예측 모드로 제한하는 것이 바람직할 수 있다. 즉, 광흐름 레퍼런스 프레임은 모든 복합 레퍼런스 모드에서는 레퍼런스 프레임으로서 제외될 수 있다. 이는 레이트 왜곡 루프를 단순화할 수 있고, 광흐름 레퍼런스 프레임은 이미 순방향 및 역방향 레퍼런스 프레임 양자 모두를 고려하기 때문에 블록의 인코딩에 대한 추가적인 영향은 거의 없을 것으로 예상된다. 본 명세서에 기재된 구현예에 따르면, 광흐름 레퍼런스 프레임이 현재 프레임을 인코딩하는데 사용하는데 이용 가능한지 여부를 나타내기 위해 플래그가 비트스트림으로 인코딩될 수 있다. 플래그는 일례에서 현재 프레임 내의 임의의 단일 블록이 광흐름 레퍼런스 프레임 블록을 사용하여 인코딩될 때 인코딩될 수 있다. 광흐름 레퍼런스 프레임이 현재 프레임에 이용 가능한 경우, 현재 블록이 광흐름 레퍼런스 프레임을 사용한 인터 예측에 의해 인코딩되었는지 여부를 나타내는 추가 플래그 또는 다른 표시기(예를 들면, 블록 레벨에서)를 포함할 수 있다.
[00155] 1008에서의 예측 프로세스는 현재 프레임이 인코딩될 때까지 현재 프레임의 모든 블록들에 대해 반복될 수 있다.
[00156] 디코더에서, 1008에서 광흐름 레퍼런스 프레임 부분을 사용하여 예측 프로세스를 수행하는 것은 광흐름 레퍼런스 프레임이 현재 프레임을 디코딩하는데 이용 가능하다는 결정에 기인할 수 있다. 몇몇 구현예들에서, 결정은 현재 프레임의 적어도 하나의 블록이 광흐름 레퍼런스 프레임 부분을 사용하여 인코딩되었음을 나타내는 플래그를 검사함으로써 이루어진다. 디코더에서 1008에서 예측 프로세스를 수행하는 것은 예측 블록을 생성하는 것을 포함할 수 있다. 예측 블록을 생성하는 것은 블록 헤더에서와 같이, 인코딩된 비트스트림으로부터 디코딩된 인터 예측 모드를 사용하는 것을 포함할 수 있다. 인터 예측 모드를 결정하기 위해 플래그 또는 표시기가 디코딩될 수 있다. 인터 예측 모드가 광흐름 레퍼런스 프레임 모드인 경우(즉, 블록이 광흐름 레퍼런스 프레임 부분을 사용하여 인터 예측된 경우), 디코딩될 현재 블록에 대한 예측 블록은 광흐름 레퍼런스 프레임 부분의 픽셀들 및 모션 벡터 모드 및/또는 모션 벡터를 사용하여 생성된다.
[00157] 디코딩의 일부로서 예측 프로세스에 사용하기 위한 광흐름 레퍼런스 프레임을 생성하기 위한 동일한 처리가 인코더에서 수행된 것과 같이, 디코더(500)와 같은 디코더에서 수행될 수 있다. 예를 들면, 플래그가 현재 프레임의 적어도 하나의 블록이 광흐름 레퍼런스 프레임 부분을 사용하여 인코딩되었다는 것을 나타낼 때, 전체 광흐름 레퍼런스 프레임이 생성되어 예측 프로세스에 사용하기 위해 저장될 수 있다. 하지만, 코딩 블록들이 인터 예측 레퍼런스 프레임으로서 병치/광흐름 레퍼런스 프레임을 사용하는 것으로 식별되는 프로세스(1200)의 성능을 제한하도록 프로세스(1200)를 수정함으로써, 디코더에서의 컴퓨테이션 파워가 추가적으로 절약된다. 이는 디코더를 최적화하기 위한 하나의 기술을 예시하는 도면인 도 15를 참조하여 설명될 수 있다.
[00158] 도 15에는, 픽셀들이 그리드(1500)를 따라 도시되며, w는 그리드(1500)의 제1 축을 따라 픽셀의 위치를 나타내고 y는 그리드(1500)의 제2 축을 따라 픽셀의 위치를 나타낸다. 그리드(1500)는 현재 프레임의 일부의 픽셀 위치들을 나타낸다. 1008에서 디코더에서 예측 프로세스를 수행하기 위해, 1006 및 1008에서의 처리가 결합될 수 있다. 예를 들면, 1006에서 프로세스를 수행하기 전에, 1008에서의 예측 프로세스는 (예를 들면, 모션 벡터와 같은 헤더 정보로부터) 현재 블록을 인코딩하는 데 사용되는 레퍼런스 블록을 찾는 것을 포함할 수 있다. 도 15에서, 현재 코딩 블록(1502)에 대한 모션 벡터는 내부 파선(1504)으로 나타낸 레퍼런스 블록을 가리킨다. 현재 코딩 블록(1502)은 4x4 픽셀들을 포함한다. 레퍼런스 블록이 현재 프레임이 아니라 레퍼런스 프레임에 위치되기 때문에 레퍼런스 블록의 위치는 파선(1504)으로 도시된다.
[00159] 일단 레퍼런스 블록이 위치되고 나면, 레퍼런스 블록이 걸쳐져 있는(즉, 중복되는) 레퍼런스 블록들 모두가 식별된다. 이는 서브픽셀 보간 필터들을 고려하기 위해 각각의 경계부에서 필터 길이의 절반만큼 레퍼런스 블록의 크기를 확장하는 것을 포함할 수 있다. 도 15에서는, 서브픽셀 보간 필터의 길이(L)가 레퍼런스 블록을 외부 파선(1506)으로 나타낸 경계부들까지 확장하는데 사용된다. 비교적 흔하듯이, 모션 벡터는 전체 펠(full-pel) 위치들과는 완벽하게 정렬되지 않는 레퍼런스 블록을 발생시킨다. 도 15에서 어두운 영역은 전체 펠 위치들을 나타낸다. 전체 펠 위치들과 중복되는 레퍼런스 블록들 모두가 식별된다. 블록 크기들이 현재 코딩 블록(1502)과 동일하다고 가정하면, 현재 블록과 병치된 제1 레퍼런스 블록, 제1 레퍼런스 블록의 위에 있는 제2 레퍼런스 블록, 제1 레퍼런스 블록의 좌측으로부터 연장되는 2 개의 레퍼런스 블록들, 및 제2 레퍼런스 블록의 좌측으로부터 연장되는 2 개의 레퍼런스 블록들이 식별된다.
[00160] 레퍼런스 블록들이 식별되면, 병치된/광흐름 추정된 레퍼런스 블록들을 생성하기 위해 식별된 레퍼런스 블록들과 병치된 현재 프레임 내의 블록들에 대해서만 프로세스(1200)가 1006에서 수행될 수 있다. 도 15의 예에서는, 이로 인해 6 개의 광흐름 레퍼런스 프레임 부분들이 발생되게 된다.
[00161] 이 수정된 프로세스에 따르면, 인코더와 디코더가 동일한 예측자(predictor)를 가지면서도 디코더는 병치된 레퍼런스 프레임 전체를 계산할 필요가 없는 것이 보장된다. 임의의 확장된 경계들을 포함하는 후속 블록에 대한 레퍼런스 블록(들)은 현재 블록의 디코딩 프로세스 중에 식별된 하나 이상의 레퍼런스 블록들과 중첩될 수 있다는 것이 주목된다. 이 경우에, 디코더에서의 컴퓨팅 요건들을 더욱 저감시키기 위해 식별된 블록들 중 임의의 블록에 대해 광흐름 추정이 단 1 회만 수행될 필요가 있다. 다시 말하면, 1216에서 생성된 레퍼런스 블록은 현재 프레임의 다른 블록들을 디코딩하는데 사용하기 위해 저장될 수 있다.
[00162] 하지만, 예측 블록은 디코더에서 생성되며, 인코딩된 비트스트림으로부터의 현재 블록에 대한 디코딩된 잔차는 도 5의 디코더(500)와 관련하여 예로서 설명된 바와 같이 재구성 블록을 형성하기 위해 예측 블록과 결합될 수 있다.
[00163] 프로세스(1200) 이후에 또는 프로세스(1200)와 함께 수행되든지 간에, 1008에서의 예측 프로세스는 현재 프레임이 디코딩될 때까지 광흐름 레퍼런스 프레임 부분을 사용하여 인코딩된 현재 프레임의 모든 블록들에 대해 반복될 수 있다. 디코딩 순서로 블록들을 처리할 때, 광흐름 레퍼런스 프레임 부분을 사용하여 인코딩되지 않은 블록은 종래에, 인코딩된 비트스트림으로부터의 블록에 대해 디코딩된 예측 모드에 따라 종래의 방식으로 디코딩될 수 있다.
[00164] 프레임 또는 블록 내의 N 개의 픽셀들에 대해, 광흐름 공식의 해를 구하기 위한 복잡도는 O(N * M)으로 나타낼 수 있는데, 여기서 M은 선형 방정식들을 풀기 위한 반복들의 횟수이다. M은 레벨들의 개수 또는 라그랑지 파라미터 λ의 값들의 개수와 관련이 없다. 대신에, M은 선형 방정식을 푸는 데 있어서 계산 정밀도와 관련이 있다. M의 값이 클수록 정밀도가 더 양호해진다. 이러한 복잡성을 고려하면, 프레임 레벨로부터 서브프레임 레벨(예를 들면, 블록 기반)의 추정으로 진행하는 것은 디코더 복잡도를 감소시키는 위한 몇 가지 옵션들을 제공한다. 첫째, 및 모션 필드 평활도의 제약이 블록 경계부들에서는 완화되기 때문에, 블록의 선형 방정식들을 풀 때 해답으로 수렴하기가 더 용이하며, 그래서 유사한 정밀도에 대해 M이 더 작아진다. 둘째, 모션 벡터의 해를 구하는 것은 평활도 페널티 팩터로 인해 그 인접한 모션 벡터들을 포함한다. 블록 경계부들에서의 모션 벡터들은 더 적은 수의 인접한 모션 벡터들을 가지며, 그래서 보다 빠른 계산들이 이루어진다. 셋째, 및 위에서 논의된 바와 같이, 광흐름은 전체 프레임이 아니라, 인터 예측을 위해 병치된 레퍼런스 프레임을 사용하는 그 코딩 블록들에 의해 식별되는 병치된 레퍼런스 프레임의 블록들의 일부에 대해서만 계산될 필요가 있다.
[00165] 설명의 단순화를 위해, 프로세스들(1000, 1100, 및 1200) 각각은 일련의 스텝들 또는 동작들로서 도시 및 기재되어 있다. 하지만, 본 발명에 따른 스텝들 또는 동작들은 다양한 순서들로 및/또는 동시에 발생할 수도 있다. 또한, 본 명세서에 제시 및 기재되지 않은 다른 스텝들 또는 동작들도 사용될 수 있다. 또한, 개시된 주제에 따른 방법을 구현하기 위해 예시된 모든 스텝들 또는 동작들이 필요한 것은 아니다.
[00166] 전술한 인코딩 및 디코딩의 양태들은 인코딩 및 디코딩 기술들의 몇몇 예들을 예시한다. 하지만, 인코딩 및 디코딩은 이들 용어들이 청구범위에 사용되는 바와 같이, 데이터의 압축, 압축 해제, 변환, 또는 임의의 다른 처리 또는 변경을 의미할 수 있음을 이해해야 한다.
[00167] "예"라는 단어는 본 명세서에서 예, 사례, 또는 예시로서 기능함을 의미하도록 사용된다. 본 명세서에서 "예"로 기재된 임의의 양태 또는 설계는 반드시 다른 양태들 또는 설계들보다 바람직하거나 유익한 것으로 해석될 필요는 없다. 오히려, "예"라는 단어의 사용은 개념을 구체적인 방식으로 제시하기 위한 것이다. 본 출원에서 사용되는 "또는"이라는 용어는 배타적인 "또는"이 아니라 포괄적인 "또는"을 의미하는 것으로 의도된다. 즉, 달리 특정되거나 문맥으로부터 분명하지 않은 한, "X는 A 또는 B를 포함한다"는 자연스런 포괄적인 순열들(permutations) 중 임의의 것을 의미하는 것으로 의도된다. 즉, X가 A를 포함하고; X가 B를 포함하며; 또는 X가 A와 B 양자 모두를 포함하면, "X는 A 또는 B를 포함한다"는 전술한 사례들 중 임의의 것에서 충족된다. 또한, 본 출원 및 첨부된 청구범위에서 사용되는 관사들 "a" 및 "an"은 단수 형태를 지시하도록 달리 특정되거나 문맥으로부터 분명하지 않은 한 "하나 이상"을 의미하는 것으로 일반적으로 해석되어야 한다. 또한, 전체를 통해서 "일 구현예" 또는 "하나의 구현예"라는 용어의 사용은 동일한 실시예 또는 구현예을 의미하도록 기재되지 않는 한 이와 같이 의미하도록 의도되지 않는다.
[00168] 송신 스테이션(102) 및/또는 수신 스테이션(106)(및 이에 저장되고 및/또는 인코더(400) 및 디코더(500)에 의한 것을 포함하여, 이에 의해 실행되는 알고리즘들, 방법들, 명령들 등)의 구현예들은 하드웨어, 소프트웨어, 또는 이들의 임의의 조합으로 실현될 수 있다. 하드웨어는 예를 들면, 컴퓨터들, 지적 재산권(IP) 코어들, ASICs(application-specific integrated circuits), 프로그래머블 로직 어레이들, 광학 프로세서들, 프로그래머블 로직 컨트롤러들, 마이크로코드(microcode), 마이크로컨트롤러들, 서버들, 마이크로프로세서들, 디지털 신호 프로세서들, 또는 임의의 다른 적절한 회로를 포함할 수 있다. 청구범위에서, "프로세서"라는 용어는 전술한 하드웨어 중 임의의 것을 단독으로 또는 조합하여 포함하는 것으로 이해되어야 한다. "신호"와 "데이터"라는 용어들은 상호 교환적으로 사용된다. 또한, 송신 스테이션(102)과 수신 스테이션(106)의 부분들은 반드시 동일한 방식으로 구현될 필요는 없다.
[00169] 또한, 일 양태에서, 예를 들면 송신 스테이션(102) 또는 수신 스테이션(106)은 실행될 때 본 명세서에 기재된 각각의 방법들, 알고리즘들, 및/또는 명령들 중 임의의 것을 수행하는 컴퓨터 프로그램을 갖는 범용 컴퓨터 또는 범용 프로세서를 사용하여 구현될 수 있다. 부가적으로 또는 대안적으로, 예를 들면 본 명세서에 기재된 방법들, 알고리즘들, 또는 명령들 중 임의의 것을 수행하기 위한 다른 하드웨어를 포함하는 전용 컴퓨터/프로세서가 사용될 수도 있다.
[00170] 송신 스테이션(102) 및 수신 스테이션(106)은 예를 들면, 화상 회의 시스템의 컴퓨터들 상에서 구현될 수 있다. 대안적으로, 송신 스테이션(102)은 서버 상에서 구현될 수도 있고, 수신 스테이션(106)은 핸드헬드(hand-held) 통신 디바이스와 같은 서버와 별개인 디바이스 상에서 구현될 수도 있다. 이 경우에, 송신 스테이션(102)은 인코더(400)를 사용하여 콘텐츠를 인코딩된 비디오 신호로 인코딩하고는, 인코딩된 비디오 신호를 통신 디바이스에 전송할 수 있다. 차례로, 그 후, 통신 디바이스는 인코딩된 비디오 신호를 디코더(500)를 사용하여 디코딩할 수 있다. 대안적으로, 통신 디바이스는 통신 디바이스 상에 로컬로 저장된 콘텐츠, 예를 들면, 송신 스테이션(102)에 의해 전송되지 않은 콘텐츠를 디코딩할 수도 있다. 다른 적절한 송신 및 수신 구현 스킴들도 이용 가능하다. 예를 들면, 수신 스테이션(106)은 휴대용 통신 디바이스라기 보다는 일반적으로 고정형의 개인용 컴퓨터일 수 있고 및/또는 인코더(400)를 포함하는 디바이스가 디코더(500)도 또한 포함할 수도 있다.
[00171] 또한, 본 발명의 구현예들의 전부 또는 일부는 예를 들면, 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체로부터 액세스 가능한 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체는 예를 들면, 임의의 프로세서에 의해 또는 프로세서와 연계하여 사용하기 위한 프로그램을 유형적으로(tangibly) 포함, 저장, 통신, 또는 운반할 수 있는 임의의 디바이스일 수 있다. 매체는 예를 들면, 전자, 자기, 광학, 전자기, 또는 반도체 디바이스일 수 있다. 다른 적절한 매체들도 또한 이용 가능하다.
[00172] 추가 구현예들은 이하의 예들에 요약되어 있다.
[00173] 예 1: 비디오 시퀀스에서 예측될 제1 프레임을 결정하는 단계; 제1 프레임의 순방향 인터 예측을 위해 비디오 시퀀스로부터 제1 레퍼런스 프레임을 결정하는 단계; 제1 프레임의 역방향 인터 예측을 위해 비디오 시퀀스로부터 제2 레퍼런스 프레임을 결정하는 단계; 제1 레퍼런스 프레임 및 제2 레퍼런스 프레임을 사용하여 광흐름 추정을 수행함으로써, 제1 프레임의 인터 예측을 위한 광흐름 레퍼런스 프레임을 생성하는 단계; 및 광흐름 레퍼런스 프레임을 사용하여 제1 프레임에 대한 예측 프로세스를 수행하는 단계를 포함하는 방법.
[00174] 예 2: 예 1의 방법에서, 광흐름 레퍼런스 프레임을 생성하는 단계는: 제1 프레임의 각각의 픽셀들에 대해 라그랑지 함수를 최소화함으로써 광흐름 추정을 수행하는 단계를 포함한다.
[00175] 예 3: 예 1 또는 2의 방법에서, 광흐름 추정은 제1 프레임의 픽셀들에 대한 각각의 모션 필드를 생성하고, 광흐름 레퍼런스 프레임을 생성하는 단계는: 제1 워핑된 레퍼런스 프레임을 형성하기 위해 모션 필드들을 사용하여 제1 레퍼런스 프레임을 제1 프레임으로 워핑하는 단계; 제2 워핑된 레퍼런스 프레임을 형성하기 위해 모션 필드들을 사용하여 제2 레퍼런스 프레임을 제1 프레임으로 워핑하는 단계; 및 광흐름 레퍼런스 프레임을 형성하기 위해 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임을 블렌딩하는 단계를 포함한다.
[00176] 예 4: 예 3의 방법에서, 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임을 블렌딩하는 단계는: 제1 레퍼런스 프레임과 제2 레퍼런스 프레임 사이 및 현재 프레임과 제1 레퍼런스 프레임 및 제2 레퍼런스 프레임 각각의 사이의 거리들을 사용하여, 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임의 병치된 픽셀 값들을 스케일링함으로써 병치된 픽셀 값들을 결합하는 단계를 포함한다.
[00177] 예 5: 예 3 또는 예 4의 방법에서, 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임을 블렌딩하는 단계는: 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임의 병치된 픽셀 값들을 결합하는 것 또는 제1 워핑된 레퍼런스 프레임 또는 제2 워핑된 레퍼런스 프레임 중 하나의 단일 픽셀 값을 사용하는 것 중 어느 하나에 의해 광흐름 레퍼런스 프레임의 픽셀 위치들을 채우는 단계를 포함한다.
[00178] 예 6: 예 3 내지 예 5 중 어느 하나의 예의 방법에서, 방법은: 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임을 사용하여 제1 레퍼런스 프레임에서 폐색을 검출하는 단계를 더 포함하고, 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임을 블렌딩하는 단계는: 제2 워핑된 레퍼런스 프레임으로부터의 픽셀 값들로 폐색에 대응하는 광흐름 레퍼런스 프레임의 픽셀 위치들을 채우는 단계를 포함한다.
[00179] 예 7: 예 1 내지 예 6 중 어느 하나의 예의 방법에서, 예측 프로세스를 수행하는 단계는: 제1 프레임의 블록들의 단일 레퍼런스 인터 예측을 위해서만 광흐름 레퍼런스 프레임을 사용하는 단계를 포함한다.
[00180] 예 8: 예 1 내지 예 7 중 어느 하나의 예의 방법에서, 제1 레퍼런스 프레임은 제1 프레임의 순방향 인터 예측에 이용 가능한 제1 프레임에 대해 비디오 시퀀스의 디스플레이 순서로 가장 가까운 재구성된 프레임이고, 제2 레퍼런스 프레임은 제1 프레임의 역방향 인터 예측에 이용 가능한 제1 프레임에 대해 디스플레이 순서로 가장 가까운 재구성된 프레임이다.
[00181] 예 9: 예 1 내지 예 8 중 어느 하나의 예의 방법에서, 예측 프로세스를 수행하는 단계는: 제1 프레임의 제1 블록과 병치된 광흐름 레퍼런스 프레임 내의 레퍼런스 블록을 결정하는 단계; 및 레퍼런스 블록과 제1 블록의 잔차를 인코딩하는 단계를 포함한다.
[00182] 예 10: 장치는: 프로세서; 및 방법을 수행하기 위해 프로세서에 의해 실행 가능한 명령들을 포함하는 비일시적 저장 매체를 포함하고, 방법은: 비디오 시퀀스에서 예측될 제1 프레임을 결정하는 단계; 제1 프레임의 순방향 인터 예측을 위한 제1 레퍼런스 프레임의 이용 가능성 및 제1 프레임의 역방향 인터 예측을 위한 제2 레퍼런스 프레임의 이용 가능성을 결정하는 단계; 제1 레퍼런스 프레임 및 제2 레퍼런스 프레임 양자 모두의 이용 가능성을 결정하는 것에 응답하여: 광흐름 추정을 사용하여 제1 레퍼런스 프레임과 제2 레퍼런스 프레임을 사용하여 제1 프레임의 픽셀들에 대한 각각의 모션 필드를 생성하는 단계; 제1 워핑된 레퍼런스 프레임을 형성하기 위해 모션 필드들을 사용하여 제1 레퍼런스 프레임을 제1 프레임으로 워핑하는 단계; 제2 워핑된 레퍼런스 프레임을 형성하기 위해 모션 필드들을 사용하여 제2 레퍼런스 프레임을 제1 프레임으로 워핑하는 단계; 및 제1 프레임의 블록들의 인터 예측을 위한 광흐름 레퍼런스 프레임을 형성하기 위해 제1 워핑된 레퍼런스 프레임과 제2 워핑된 레퍼런스 프레임을 블렌딩하는 단계를 포함한다.
[00183] 예 11: 예 10의 장치에서, 방법은: 광흐름 레퍼런스 프레임을 사용하여 제1 프레임에 대한 예측 프로세스를 수행하는 단계를 더 포함한다.
[00184] 예 12: 예 10 또는 예 11의 장치에서, 방법은: 제1 프레임의 블록들의 단일 레퍼런스 인터 예측을 위해서만 광흐름 레퍼런스 프레임을 사용하는 단계를 더 포함한다.
[00185] 예 13: 예 10 내지 예 12 중 어느 하나의 예의 장치에서, 각각의 모션 필드를 생성하는 단계는: 제1 레퍼런스 프레임과 제2 레퍼런스 프레임을 사용하여 제1 프레임의 각각의 픽셀들에 대한 라그랑지 함수의 출력을 계산하는 단계를 포함한다.
[00186] 예 14: 예 13의 장치에서, 라그랑지 함수의 출력을 계산하는 단계는: 라그랑지 파라미터에 대한 제1 값을 사용하여 현재 프레임의 픽셀들에 대한 제1 모션 필드들의 세트를 계산하는 단계; 및 현재 프레임의 픽셀들에 대한 개선된 모션 필드들의 세트를 계산하기 위해 라그랑지 파라미터에 대한 제2 값을 사용하는 라그랑지 함수에 대한 입력으로서 제1 모션 필드들의 세트를 사용하는 단계를 포함하고, 라그랑지 파라미터에 대한 제2 값은 라그랑지 파라미터에 대한 제1 값보다 더 작고, 제1 워핑된 레퍼런스 프레임 및 제2 워핑된 레퍼런스는 개선된 모션 필드들의 세트를 사용하여 워핑된다.
[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 워핑된 레퍼런스 프레임을 블렌딩하는 단계를 포함한다.
[00188] 예 16: 예 15의 장치에서, 광흐름 추정은 프레임의 각각의 픽셀들에 대해 라그랑지 함수를 사용한다.
[00189] 예 17: 예 16의 장치에서, 방법은 다수의 레벨들 중 각각의 레벨에 대해: 제1 레퍼런스 프레임을 워핑하는 단계, 제2 레퍼런스 프레임을 워핑하는 단계, 모션 필드들을 추정하는 단계, 및 모션 필드들을 업데이트하는 단계의 제1 반복(first iteration)에 대해 라그랑지 함수의 라그랑지 파라미터를 최대 값으로 초기화하는 단계; 및 라그랑지 파라미터에 대해 한 세트의 가능한 값들 중 점점 더 작은 값들을 사용하여, 제1 레퍼런스 프레임을 워핑하는 단계, 제2 레퍼런스 프레임을 워핑하는 단계, 모션 필드들을 추정하는 단계, 및 모션 필드들을 업데이트하는 단계의 추가 반복(additional iteration)을 수행하는 단계를 더 포함한다.
[00190] 예 18: 예 16 또는 예 17의 장치에서, 모션 필드들을 추정하는 단계는: 수평축, 수직축, 및 시간에 대해 제1 워핑된 레퍼런스 프레임 및 제2 워핑된 레퍼런스 프레임의 픽셀 값들의 도함수들을 계산하는 단계; 레벨이 최종 레벨과 상이하다는 것에 응답하여 도함수들을 다운스케일링하는 단계; 도함수들을 사용하여 라그랑지 함수를 나타내는 선형 방정식들을 푸는 단계를 포함한다.
[00191] 예 19: 예 15 내지 예 18 중 어느 하나의 예의 장치에서, 방법은 광흐름 레퍼런스 프레임을 사용하여 제1 프레임을 인터 예측하는 단계를 더 포함한다.
[00192] 예 20: 예 15 내지 예 19 중 어느 하나의 예의 장치에서, 프로세서와 비일시적 저장 매체는 디코더를 형성한다.
[00193] 전술한 실시예들, 구현예들, 및 양태들은 본 발명의 이해를 수월하게 하기 위해 기재되었으며 본 발명을 제한하지 않는다. 그 반대로, 본 발명은 첨부된 청구항들의 범위 내에 포함된 다양한 변형들 및 등가의 배열들을 포함하도록 의도되며, 이러한 범위는 법에 의해 허용되는 모든 이러한 변형들 및 동등한 구조를 포괄하도록 가장 넓은 해석에 따르게 된다.

Claims (21)

  1. 예측될 제1 프레임의 제1 프레임 부분을 결정하는 단계 ― 상기 제1 프레임은 비디오 시퀀스에 있음 ― ;
    상기 제1 프레임의 순방향 인터 예측(forward inter prediction)을 위해 상기 비디오 시퀀스로부터 제1 레퍼런스 프레임(reference frame)을 결정하는 단계;
    상기 제1 프레임의 역방향 인터 예측을 위해 상기 비디오 시퀀스로부터 제2 레퍼런스 프레임을 결정하는 단계;
    상기 제1 레퍼런스 프레임 및 상기 제2 레퍼런스 프레임을 사용하여 광흐름 추정(optical flow estimation)을 수행함으로써, 상기 제1 프레임 부분의 인터 예측을 위한 광흐름 레퍼런스 프레임 부분을 생성하는 단계; 및
    광흐름 레퍼런스 프레임 부분을 사용하여 상기 제1 프레임 부분에 대한 예측 프로세스를 수행하는 단계를 포함하는,
    방법.
  2. 제1 항에 있어서,
    상기 광흐름 레퍼런스 프레임 부분을 생성하는 단계는:
    상기 제1 프레임 부분의 각각의 픽셀들에 대해 라그랑지 함수(Lagrangian function)를 최소화함으로써 상기 광흐름 추정을 수행하는 단계를 포함하는,
    방법.
  3. 제1 항 또는 제2 항에 있어서,
    상기 광흐름 추정은 상기 제1 프레임 부분의 픽셀들에 대한 각각의 모션 필드(motion field)를 생성하고,
    상기 광흐름 레퍼런스 프레임 부분을 생성하는 단계는:
    제1 워핑된 레퍼런스 프레임 부분을 형성하기 위해, 상기 모션 필드들을 사용하여 상기 제1 프레임 부분과 병치된(co-located) 상기 제1 레퍼런스 프레임의 픽셀들을 상기 제1 프레임 부분으로 워핑하는(warping) 단계;
    제2 워핑된 레퍼런스 프레임 부분을 형성하기 위해, 상기 모션 필드들을 사용하여 상기 제1 프레임 부분과 병치된 상기 제2 레퍼런스 프레임의 픽셀들을 상기 제1 프레임 부분으로 워핑하는 단계; 및
    상기 광흐름 레퍼런스 프레임 부분을 형성하기 위해 상기 제1 워핑된 레퍼런스 프레임 부분과 상기 제2 워핑된 레퍼런스 프레임 부분을 블렌딩하는(blending) 단계를 포함하는,
    방법.
  4. 제3 항에 있어서,
    상기 제1 워핑된 레퍼런스 프레임 부분과 상기 제2 워핑된 레퍼런스 프레임 부분을 블렌딩하는 단계는:
    상기 제1 레퍼런스 프레임과 상기 제2 레퍼런스 프레임 사이 및 상기 현재 프레임과 상기 제1 레퍼런스 프레임 및 상기 제2 레퍼런스 프레임 각각의 사이의 거리들을 사용하여, 상기 제1 워핑된 레퍼런스 프레임 부분과 상기 제2 워핑된 레퍼런스 프레임 부분의 병치된 픽셀 값들을 스케일링함으로써 상기 병치된 픽셀 값들을 결합하는 단계를 포함하는,
    방법.
  5. 제3 항 또는 제4 항에 있어서,
    상기 제1 워핑된 레퍼런스 프레임 부분과 상기 제2 워핑된 레퍼런스 프레임 부분을 블렌딩하는 단계는:
    상기 제1 워핑된 레퍼런스 프레임 부분과 상기 제2 워핑된 레퍼런스 프레임 부분의 병치된 픽셀 값들을 결합하는 것 또는 상기 제1 워핑된 레퍼런스 프레임 부분 또는 상기 제2 워핑된 레퍼런스 프레임 부분 중 하나의 단일 픽셀 값을 사용하는 것 중 어느 하나에 의해, 상기 광흐름 레퍼런스 프레임 부분의 픽셀 위치들을 채우는(populating) 단계를 포함하는,
    방법.
  6. 제1 항 내지 제5 항 중 어느 한 항에 있어서,
    상기 제1 프레임 부분은 상기 제1 프레임의 현재 블록 또는 상기 제1 프레임 중 하나를 포함하고, 상기 광흐름 레퍼런스 프레임 부분은, 상기 제1 프레임 부분이 상기 현재 블록을 포함할 때에는 블록이고, 상기 제1 프레임 부분이 상기 제1 프레임을 포함할 때에는 전체 프레임인,
    방법.
  7. 제1 항 내지 제6 항 중 어느 한 항에 있어서,
    상기 제1 레퍼런스 프레임은 상기 제1 프레임의 순방향 인터 예측에 이용 가능한 상기 제1 프레임에 대해 상기 비디오 시퀀스의 디스플레이 순서로 가장 가까운 재구성된 프레임이고, 상기 제2 레퍼런스 프레임은 상기 제1 프레임의 역방향 인터 예측에 이용 가능한 상기 제1 프레임에 대해 상기 디스플레이 순서로 가장 가까운 재구성된 프레임인,
    방법.
  8. 제1 항 내지 제7 항 중 어느 한 항에 있어서
    상기 제1 프레임 부분은 디코딩될 현재 블록이고,
    상기 예측 프로세스를 수행하는 단계는:
    레퍼런스 블록 위치를 식별하기 위해 상기 현재 블록을 인코딩하는 데 사용되는 모션 벡터를 사용하는 단계;
    서브픽셀 보간 필터(subpixel interpolation filter) 길이만큼 상기 레퍼런스 블록의 경계부들(boundaries)을 조정하는 단계; 및
    상기 레퍼런스 블록의 조정된 경계부들 내의 픽셀들을 포함하는 블록들을 식별하는 단계를 포함하고,
    상기 광흐름 레퍼런스 프레임 부분을 생성하는 단계는, 상기 제1 프레임의 나머지 블록들에 대해서는 광흐름 추정을 수행함이 없이, 상기 식별된 블록들과 병치된 상기 제1 프레임의 블록들에 대해 광흐름 추정을 수행하는 단계를 포함하는,
    방법.
  9. 제1 항 내지 제8 항 중 어느 한 항에 있어서,
    상기 제1 프레임 부분은 인코딩될 현재 블록이고,
    상기 광흐름 레퍼런스 프레임 부분을 생성하는 단계는 광흐름 레퍼런스 프레임에 대해 각각의 병치된 레퍼런스 블록을 생성하기 위해, 상기 현재 블록으로서 상기 제1 프레임의 각각의 블록에 대해 광흐름 추정을 수행하는 단계를 포함하며,
    상기 예측 프로세스를 수행하는 단계는:
    상기 병치된 레퍼런스 블록들을 그들 각각의 픽셀 위치들에 결합함으로써 상기 광흐름 레퍼런스 프레임을 형성하는 단계;
    상기 광흐름 레퍼런스 프레임을 레퍼런스 프레임 버퍼에 저장하는 단계; 및
    상기 현재 블록에 대한 모션 검색을 위해 상기 광흐름 레퍼런스 프레임을 사용하는 단계를 포함하는,
    방법.
  10. 장치로서,
    프로세서; 및
    방법을 수행하기 위해 상기 프로세서에 의해 실행 가능한 명령들을 포함하는 비일시적 저장 매체를 포함하고,
    상기 방법은:
    비디오 시퀀스에서 예측될 제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 워핑된 레퍼런스 프레임 부분을 블렌딩하는 단계를 포함하는,
    장치.
  11. 제10 항에 있어서,
    상기 방법은:
    상기 광흐름 레퍼런스 프레임 부분을 사용하여 상기 제1 프레임의 블록에 대해 예측 프로세스를 수행하는 단계를 더 포함하는,
    장치.
  12. 제10 항 또는 제11 항에 있어서,
    상기 방법은:
    상기 제1 프레임의 블록들의 단일 레퍼런스 인터 예측을 위해서만 상기 광흐름 레퍼런스 프레임 부분을 사용하는 단계를 더 포함하는,
    장치.
  13. 제10 항 내지 제12 항 중 어느 한 항에 있어서,
    상기 각각의 모션 필드를 생성하는 단계는:
    상기 제1 레퍼런스 프레임 부분 및 상기 제2 레퍼런스 프레임 부분을 사용하여 상기 제1 프레임 부분의 각각의 픽셀들에 대한 라그랑지 함수의 출력을 계산하는 단계를 포함하는,
    장치.
  14. 제13 항에 있어서,
    상기 라그랑지 함수의 출력을 계산하는 단계는:
    라그랑지 파라미터에 대한 제1 값을 사용하여 상기 제1 프레임 부분의 픽셀들에 대한 제1 모션 필드들의 세트를 계산하는 단계; 및
    상기 제1 프레임 부분의 픽셀들에 대한 개선된(refined) 모션 필드들의 세트를 계산하기 위해, 상기 라그랑지 파라미터에 대한 제2 값을 사용하는 상기 라그랑지 함수에 대한 입력으로서 상기 제1 모션 필드들의 세트를 사용하는 단계를 포함하고,
    상기 라그랑지 파라미터에 대한 제2 값은 상기 라그랑지 파라미터에 대한 제1 값보다 더 작고, 상기 제1 워핑된 레퍼런스 프레임 및 상기 제2 워핑된 레퍼런스 프레임은 상기 개선된 모션 필드들의 세트를 사용하여 워핑되는,
    장치.
  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 워핑된 레퍼런스 프레임 부분을 블렌딩하는 단계를 포함하는,
    장치.
  16. 제15 항에 있어서,
    상기 광흐름 추정은 상기 제1 프레임 부분의 각각의 픽셀들에 대해 라그랑지 함수를 사용하는,
    장치.
  17. 제16 항에 있어서,
    상기 방법은, 상기 다수의 레벨들 중 각각의 레벨에 대해:
    상기 제1 레퍼런스 프레임 부분을 워핑하는 단계, 상기 제2 레퍼런스 프레임 부분을 워핑하는 단계, 상기 모션 필드들을 추정하는 단계, 및 상기 모션 필드들을 업데이트하는 단계의 제1 반복(first iteration)에 대해 상기 라그랑지 함수의 라그랑지 파라미터를 최대값으로 초기화하는 단계; 및
    상기 라그랑지 파라미터에 대해 한 세트의 가능한 값들 중 점점 더 작은 값들을 사용하여, 상기 제1 레퍼런스 프레임 부분을 워핑하는 단계, 상기 제2 레퍼런스 프레임 부분을 워핑하는 단계, 상기 모션 필드들을 추정하는 단계, 및 상기 모션 필드들을 업데이트하는 단계의 추가 반복(additional iteration)을 수행하는 단계를 더 포함하는,
    장치,
  18. 제16 항 또는 제17 항에 있어서,
    상기 모션 필드들을 추정하는 단계는:
    수평축, 수직축, 및 시간에 대해 상기 제1 워핑된 레퍼런스 프레임 부분 및 상기 제2 워핑된 레퍼런스 프레임 부분의 픽셀 값들의 도함수들을 계산하는 단계;
    상기 레벨이 상기 최종 레벨과 상이하다는 것에 응답하여 상기 도함수들을 다운스케일링하는 단계;
    상기 도함수들을 사용하여 상기 라그랑지 함수를 나타내는 선형 방정식들을 푸는 단계를 포함하는,
    장치.
  19. 제15 항 내지 제18 항 중 어느 한 항에 있어서,
    상기 방법은:
    상기 광흐름 레퍼런스 프레임 부분을 사용하여 상기 제1 프레임의 현재 블록을 인터 예측하는 단계를 더 포함하는,
    장치.
  20. 제15 항 내지 제19 항 중 어느 한 항에 있어서,
    상기 프로세서와 상기 비일시적 저장 매체는 디코더를 형성하는,
    장치.
  21. 장치로서,
    프로세서; 및
    방법을 수행하기 위해 상기 프로세서에 의해 실행 가능한 명령들을 포함하는 비일시적 저장 매체를 포함하고,
    상기 방법은:
    예측될 제1 프레임의 제1 프레임 부분을 결정하는 단계 ― 상기 제1 프레임은 비디오 시퀀스 내에 있음 ― ;
    상기 제1 프레임의 순방향 인터 예측을 위해 상기 비디오 시퀀스로부터 제1 레퍼런스 프레임을 결정하는 단계;
    상기 제1 프레임의 역방향 인터 예측을 위해 상기 비디오 시퀀스로부터 제2 레퍼런스 프레임을 결정하는 단계;
    상기 제1 레퍼런스 프레임 및 상기 제2 레퍼런스 프레임을 사용하여 광흐름 추정을 수행함으로써, 상기 제1 프레임 부분의 인터 예측을 위한 광흐름 레퍼런스 프레임 부분을 생성하는 단계; 및
    상기 광흐름 레퍼런스 프레임 부분을 사용하여 제1 프레임 부분에 대한 예측 프로세스를 수행하는 단계를 포함하는,
    장치.
KR1020197035698A 2017-08-22 2018-05-10 비디오 코딩에서 모션 보상 예측을 위한 광흐름 추정 KR102295520B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020217026758A KR102400078B1 (ko) 2017-08-22 2018-05-10 비디오 코딩에서 모션 보상 예측을 위한 광흐름 추정

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/683,684 US11284107B2 (en) 2017-08-22 2017-08-22 Co-located reference frame interpolation using optical flow estimation
US15/683,684 2017-08-22
US15/817,369 US10659788B2 (en) 2017-11-20 2017-11-20 Block-based optical flow estimation for motion compensated prediction in video coding
US15/817,369 2017-11-20
PCT/US2018/032054 WO2019040134A1 (en) 2017-08-22 2018-05-10 OPTICAL FLOW ESTIMATING FOR MOTION COMPENSATION PREDICTION IN VIDEO CODING

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020217026758A Division KR102400078B1 (ko) 2017-08-22 2018-05-10 비디오 코딩에서 모션 보상 예측을 위한 광흐름 추정

Publications (2)

Publication Number Publication Date
KR20200002036A true KR20200002036A (ko) 2020-01-07
KR102295520B1 KR102295520B1 (ko) 2021-08-27

Family

ID=62567747

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197035698A KR102295520B1 (ko) 2017-08-22 2018-05-10 비디오 코딩에서 모션 보상 예측을 위한 광흐름 추정
KR1020217026758A KR102400078B1 (ko) 2017-08-22 2018-05-10 비디오 코딩에서 모션 보상 예측을 위한 광흐름 추정

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020217026758A KR102400078B1 (ko) 2017-08-22 2018-05-10 비디오 코딩에서 모션 보상 예측을 위한 광흐름 추정

Country Status (5)

Country Link
EP (1) EP3673655A1 (ko)
JP (1) JP6905093B2 (ko)
KR (2) KR102295520B1 (ko)
CN (2) CN118055253A (ko)
WO (1) WO2019040134A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111886864A (zh) * 2019-03-01 2020-11-03 阿里巴巴集团控股有限公司 分辨率自适应视频编码
CN114450943A (zh) * 2019-09-24 2022-05-06 Lg电子株式会社 用于基于子画面的图像编码/解码的方法和装置及发送比特流的方法
CN110572677B (zh) * 2019-09-27 2023-10-24 腾讯科技(深圳)有限公司 视频编解码方法和装置、存储介质及电子装置
CN113473145B (zh) * 2020-03-31 2024-05-31 武汉Tcl集团工业研究院有限公司 一种视频压缩方法、视频解压方法、智能终端及存储介质
CN111526370B (zh) * 2020-04-17 2023-06-02 Oppo广东移动通信有限公司 视频编码、解码方法及装置和电子设备
CN111935425B (zh) * 2020-08-14 2023-03-24 字节跳动有限公司 视频降噪方法、装置、电子设备及计算机可读介质
CN112533026A (zh) * 2020-11-27 2021-03-19 西安蓝极医疗电子科技有限公司 基于卷积神经网络的视频插帧方法
US11831909B2 (en) 2021-03-11 2023-11-28 Qualcomm Incorporated Learned B-frame coding using P-frame coding system
US20220303495A1 (en) * 2021-03-16 2022-09-22 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 (zh) * 2021-08-30 2024-03-22 北京市商汤科技开发有限公司 视频压缩、解压缩方法及装置、电子设备和存储介质
WO2023191599A1 (ko) * 2022-04-01 2023-10-05 주식회사 케이티 비디오 신호 부호화/복호화 방법, 그리고 비트스트림을 저장한 기록 매체
WO2023200249A1 (ko) * 2022-04-12 2023-10-19 한국전자통신연구원 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체

Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 (zh) * 2013-06-03 2016-03-30 电子科技大学 用于高性能视频编码hevc的帧间预测编码单元选择方法
EP3332551A4 (en) * 2015-09-02 2019-01-16 MediaTek Inc. METHOD AND APPARATUS FOR MOVEMENT COMPENSATION FOR VIDEO CODING BASED ON TECHNIQUES FOR OPERATIONAL RADIO RADIATION
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
CN108781294B (zh) * 2016-02-05 2021-08-31 联发科技股份有限公司 视频数据的运动补偿方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
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
KR20210109049A (ko) 2021-09-03
CN110741640B (zh) 2024-03-29
CN110741640A (zh) 2020-01-31
JP2020522200A (ja) 2020-07-27
KR102400078B1 (ko) 2022-05-18
WO2019040134A1 (en) 2019-02-28
CN118055253A (zh) 2024-05-17
JP6905093B2 (ja) 2021-07-21
EP3673655A1 (en) 2020-07-01
KR102295520B1 (ko) 2021-08-27

Similar Documents

Publication Publication Date Title
KR102295520B1 (ko) 비디오 코딩에서 모션 보상 예측을 위한 광흐름 추정
US11284107B2 (en) Co-located reference frame interpolation using optical flow estimation
US10555000B2 (en) Multi-level compound prediction
US11876974B2 (en) Block-based optical flow estimation for motion compensated prediction in video coding
US9602819B2 (en) Display quality in a variable resolution video coder/decoder system
US20170324978A1 (en) Motion vector coding using dynamic reference motion vectors
CA2883133C (en) A video encoding method and a video encoding apparatus using the same
CN110741641B (zh) 用于视频压缩的方法和装置
US9838690B1 (en) Selective prediction signal filtering
CN110692246B (zh) 用于运动补偿预测的方法和装置
WO2018169571A1 (en) Segmentation-based parameterized motion models
US8170110B2 (en) Method and apparatus for zoom motion estimation
US11917128B2 (en) Motion field estimation based on motion trajectory derivation
WO2023205371A1 (en) Motion refinement for a co-located reference frame

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant