KR20180004147A - 비디오 데이터의 특정 픽처 내의 인터 코딩을 위한 검색 영역 결정 - Google Patents

비디오 데이터의 특정 픽처 내의 인터 코딩을 위한 검색 영역 결정 Download PDF

Info

Publication number
KR20180004147A
KR20180004147A KR1020177032263A KR20177032263A KR20180004147A KR 20180004147 A KR20180004147 A KR 20180004147A KR 1020177032263 A KR1020177032263 A KR 1020177032263A KR 20177032263 A KR20177032263 A KR 20177032263A KR 20180004147 A KR20180004147 A KR 20180004147A
Authority
KR
South Korea
Prior art keywords
block
pixel
resolution
vector
video
Prior art date
Application number
KR1020177032263A
Other languages
English (en)
Other versions
KR102579519B1 (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
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20180004147A publication Critical patent/KR20180004147A/ko
Application granted granted Critical
Publication of KR102579519B1 publication Critical patent/KR102579519B1/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/57Motion estimation characterised by a search window with variable size or shape
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • 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/523Motion estimation or motion compensation with sub-pixel accuracy
    • 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/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • 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

Landscapes

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

Abstract

비디오 데이터를 인코딩하는 예시의 방법은, 비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 모션 벡터에 대하 사용될 레졸루션을 결정하는 단계; 결정된 레졸루션에 기초하여, 검색 영역의 사이즈가, 레졸루션이 정수-픽셀인 경우에서보다 레졸루션이 분수-픽셀인 경우에서 더 작도록 현재 블록에 대한 검색 영역을 결정하는 단계; 검색 영역 내로부터, 현재 블록에 대한 예측자 블록을 선택하는 단계; 현재 블록에 대해 선택된 예측자 블록을 식별하는 모션 벡터를 결정하는 단계; 및 코딩된 비디오 비트스트림에서, 모션 벡터의 표현을 인코딩하는 단계를 포함한다.

Description

비디오 데이터의 특정 픽처 내의 인터 코딩을 위한 검색 영역 결정{SEARCH REGION DETERMINATION FOR INTER CODING WITHIN A PARTICULAR PICTURE OF VIDEO DATA}
관련 출원들
본 출원은 2015년 5월 11일자로 출원된 미국 가출원 제 62/159,839 호, 2015년 6월 9일자로 출원된 미국 가출원 제 62/173,248 호, 및 2015년 6월 12일자로 출원된 미국 가출원 제 62/175,179 호에 관련되고, 이들 각각의 전체 내용들은 본원에 참조로서 포함된다.
기술 분야
본 개시물은 비디오 인코딩 및 비디오 디코딩에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 직접 방송 시스템들, 무선 방송 시스템들, PDA (personal digital assistant) 들, 랩톱이나 데스크톱 컴퓨터들, 태블릿 컴퓨터들, e-북 리더들, 디지털 카메라들, 디지털 녹음 디바이스들, 디지털 미디어 플레이어들, 비디오 게임 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화들, 소위 "스마트 폰들", 비디오 원격화상회의 디바이스들, 비디오 스트리밍 디바이스들 등을 포함하는 광범위한 디바이스들에 포함될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, AVC (Advanced Video Coding), ITU-T H.265, HEVC (High Efficiency Video Coding) 에 의해 정의된 표준들, 및 이러한 표준들의 확장들에서 설명된 바와 같은 비디오 압축 기법들을 구현한다. 비디오 디바이스들은 이러한 비디오 압축 기법들을 구현함으로써, 디지털 비디오 정보를 보다 효율적으로 송신, 수신, 인코딩, 디코딩, 및/또는 저장할 수도 있다.
비디오 압축 기법들은 비디오 시퀀스들에 내재하는 리던던시를 감소시키기나 제거하기 위한 공간 (인트라-픽처) 예측 및/또는 시간 (인터-픽처) 예측을 수행한다. 블록 기반 비디오 코딩에 있어서, 비디오 슬라이스 (예를 들어, 비디오 픽처, 또는 비디오 픽처의 일부분) 는 비디오 블록들로 파티셔닝될 수도 있으며, 이 비디오 블록들은 또한 트리블록들, 코딩 유닛 (CU) 들 및/또는 코딩 노드들로 지칭될 수도 있다. 픽처의 인트라-코딩된 (I) 슬라이스 내의 비디오 블록들은 동일한 픽처 내의 이웃하는 블록들 내의 레퍼런스 샘플들에 대한 공간 예측을 사용하여 인코딩된다. 픽처의 인터-코딩된 (P 또는 B) 슬라이스 내의 비디오 블록들은 동일한 픽처 내의 이웃하는 블록들 내의 레퍼런스 샘플들에 대한 공간 예측, 또는 다른 레퍼런스 픽처들 내의 레퍼런스 샘플들에 대한 시간 예측을 사용할 수도 있다.
공간 예측 또는 시간 예측은 코딩될 블록에 대한 예측 블록을 초래한다. 잔여 데이터는 코딩될 오리지널 블록과 예측 블록 간의 픽셀 차이들을 나타낸다. 인터-코딩된 블록은 예측 블록을 형성하는 레퍼런스 샘플들의 블록을 가리키는 모션 벡터, 및 코딩된 블록과 예측 블록 간의 차이를 나타내는 잔여 데이터에 따라 인코딩된다. 인트라-코딩된 블록은 인트라-코딩 모드와 잔여 데이터에 따라 인코딩된다. 추가의 압축을 위해, 잔여 데이터는 픽셀 도메인에서 변환 도메인으로 변환되어, 잔여 변환 계수들을 초래하고 이 변환 계수들은, 그 후 양자화될 수도 있다.
일반적으로, 본 개시물은, 비디오 코딩 프로세스에서, 예측자 블록을 식별하는 모션 벡터의 레졸루션에 기초하여 예측자 블록이 선택되는 검색 영역의 사이즈를 조정하기 위한 기법들을 설명한다.
일 예에서, 비디오 데이터를 인코딩하는 방법은, 비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 모션 벡터에 대해 사용될 레졸루션을 결정하는 단계; 결정된 레졸루션에 기초하여, 검색 영역의 사이즈가, 레졸루션이 정수-픽셀인 경우에서보다 레졸루션이 분수-픽셀인 경우에서 더 작도록 현재 블록에 대한 검색 영역을 결정하는 단계; 검색 영역 내로부터, 현재 블록에 대한 예측자 블록을 선택하는 단계; 현재 블록에 대해 선택된 예측자 블록을 식별하는 모션 벡터를 결정하는 단계; 및 코딩된 비디오 비트스트림에서, 모션 벡터의 표현을 인코딩하는 단계를 포함한다.
다른 예에서, 비디오 데이터를 인코딩하기 위한 디바이스는 비디오 데이터의 일부를 저장하도록 구성된 메모리, 및 하나 이상의 프로세서들을 포함한다. 이 예에서, 하나 이상의 프로세서들은, 비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 모션 벡터에 대해 사용될 레졸루션을 결정하고; 결정된 레졸루션에 기초하여, 검색 영역의 사이즈가, 레졸루션이 정수-픽셀인 경우에서보다 레졸루션이 분수-픽셀인 경우에서 더 작도록 현재 블록에 대한 검색 영역을 결정하고; 검색 영역 내로부터, 현재 블록에 대한 예측자 블록을 선택하고; 현재 블록에 대해 선택된 예측자 블록을 식별하는 모션 벡터를 결정하며; 코딩된 비디오 비트스트림에서, 모션 벡터의 표현을 인코딩하도록 구성된다.
다른 예에서, 비디오 데이터를 인코딩하기 위한 장치는, 비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 모션 벡터에 대해 사용될 레졸루션을 결정하기 위한 수단; 결정된 레졸루션에 기초하여, 검색 영역의 사이즈가, 레졸루션이 정수-픽셀인 경우에서보다 레졸루션이 분수-픽셀인 경우에서 더 작도록 현재 블록에 대한 검색 영역을 결정하기 위한 수단; 검색 영역 내로부터, 현재 블록에 대한 예측자 블록을 선택하기 위한 수단; 현재 블록에 대해 선택된 예측자 블록을 식별하는 모션 벡터를 결정하기 위한 수단; 및 코딩된 비디오 비트스트림에서, 모션 벡터의 표현을 인코딩하기 위한 수단을 포함한다.
다른 예에서, 컴퓨터 판독가능 저장 매체는, 실행되는 경우 비디오 인코딩 디바이스의 하나 이상의 프로세서들로 하여금, 비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 모션 벡터에 대해 사용될 레졸루션을 결정하게 하고; 결정된 레졸루션에 기초하여, 검색 영역의 사이즈가, 레졸루션이 정수-픽셀인 경우에서보다 레졸루션이 분수-픽셀인 경우에서 더 작도록 현재 블록에 대한 검색 영역을 결정하게 하고; 검색 영역 내로부터, 현재 블록에 대한 예측자 블록을 선택하게 하고; 현재 블록에 대해 선택된 예측자 블록을 식별하는 모션 벡터를 결정하게 하며; 코딩된 비디오 비트스트림에서, 모션 벡터의 표현을 인코딩하게 하는 명령들을 저장한다.
다른 예에서, 비디오 데이터를 디코딩하는 방법은, 코딩된 비디오 비트스트림으로부터, 비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 모션 벡터의 표현을 획득하는 단계; 모션 벡터가 분수-픽셀 레졸루션 또는 정수-픽셀 레졸루션을 갖는지 여부를 결정하는 단계; 모션 벡터에 기초하여, 레졸루션이 정수-픽셀인 경우에서보다 레졸루션이 분수-픽셀인 경우에서 더 작은 사이즈를 갖는 검색 영역 내로부터 현재 블록에 대한 예측자 블록을 결정하는 단계; 모션 벡터가 분수-픽셀 레졸루션을 갖는다는 결정에 응답하여, 분수-픽셀 보간을 사용하고 예측자 블록 밖으로부터의 샘플 픽셀 값들에 적어도 부분적으로 기초하여, 예측자 블록의 픽셀 값들을 결정하는 단계; 및 예측자 블록의 픽셀 값들에 기초하여 현재 블록을 복원하는 단계를 포함한다.
다른 예에서, 비디오 데이터를 디코딩하기 위한 디바이스는 비디오 데이터의 일부를 저장하도록 구성된 메모리, 및 하나 이상의 프로세서들을 포함한다. 이 예에서, 하나 이상의 프로세서들은, 코딩된 비디오 비트스트림으로부터, 비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 모션 벡터의 표현을 획득하고; 모션 벡터가 분수-픽셀 레졸루션 또는 정수-픽셀 레졸루션을 갖는지 여부를 결정하고; 모션 벡터에 기초하여, 레졸루션이 정수-픽셀인 경우에서보다 레졸루션이 분수-픽셀인 경우에서 더 작은 사이즈를 갖는 검색 영역 내로부터 현재 블록에 대한 예측자 블록을 결정하고; 모션 벡터가 분수-픽셀 레졸루션을 갖는다는 결정에 응답하여, 분수-픽셀 보간을 사용하고 예측자 블록 밖으로부터의 샘플 픽셀 값들에 적어도 부분적으로 기초하여, 예측자 블록의 픽셀 값들을 결정하며; 예측자 블록의 픽셀 값들에 기초하여 현재 블록을 복원하도록 구성된다.
다른 예에서, 비디오 데이터를 디코딩하기 위한 장치는, 코딩된 비디오 비트스트림으로부터, 비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 모션 벡터의 표현을 획득하기 위한 수단; 모션 벡터가 분수-픽셀 레졸루션 또는 정수-픽셀 레졸루션을 갖는지 여부를 결정하기 위한 수단; 모션 벡터에 기초하여, 레졸루션이 정수-픽셀인 경우에서보다 레졸루션이 분수-픽셀인 경우에서 더 작은 사이즈를 갖는 검색 영역 내로부터 현재 블록에 대한 예측자 블록을 결정하기 위한 수단; 모션 벡터가 분수-픽셀 레졸루션을 갖는다는 결정에 응답하여, 분수-픽셀 보간을 사용하고 예측자 블록 밖으로부터의 샘플 픽셀 값들에 적어도 부분적으로 기초하여, 예측자 블록의 픽셀 값들을 결정하기 위한 수단; 및 예측자 블록의 픽셀 값들에 기초하여 현재 블록을 복원하기 위한 수단을 포함한다.
다른 예에서, 컴퓨터 판독가능 저장 매체는, 실행되는 경우, 비디오 디코딩 디바이스의 하나 이상의 프로세서들로 하여금, 코딩된 비디오 비트스트림으로부터, 비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 모션 벡터의 표현을 획득하게 하고; 벡터가 분수-픽셀 레졸루션 또는 정수-픽셀 레졸루션을 갖는지 여부를 결정하게 하고; 모션 벡터에 기초하여, 레졸루션이 정수-픽셀인 경우에서보다 레졸루션이 분수-픽셀인 경우에서 더 작은 사이즈를 갖는 검색 영역 내로부터 현재 블록에 대한 예측자 블록을 결정하게 하고; 모션 벡터가 분수-픽셀 레졸루션을 갖는다는 결정에 응답하여, 분수-픽셀 보간을 사용하고 예측자 블록 밖으로부터의 샘플 픽셀 값들에 적어도 부분적으로 기초하여, 예측자 블록의 픽셀 값들을 결정하게 하며; 예측자 블록의 픽셀 값들에 기초하여 현재 블록을 복원하게 하는 명령들을 저장한다.
본 개시물의의 하나 이상의 양태들의 세부사항들은 첨부하는 도면들 및 하기의 설명들에서 기술된다. 본 개시물에 설명된 기법들의 다른 특성들, 목적들 및 이점들은 상세한 설명 및 도면들로부터, 그리고 청구항들로부터 명백해질 것이다.
도 1 은 본 개시물의 기법들을 구현할 수도 있는 예시의 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다.
도 2 는 본 개시물의 하나 이상의 기법들에 따른, 예시의 비디오 시퀀스를 예시하는 개념도이다.
도 3 은 본 개시물에 설명된 인트라 블록 복사를 위한 기법들을 사용할 수도 있는 비디오 인코더의 예를 예시하는 블록도이다.
도 4 는 본 개시물에서 설명된 기법들을 구현할 수도 있는 예시의 비디오 디코더를 예시하는 블록도이다.
도 5 는 본 개시물의 하나 이상의 기법들에 따른, 인트라 블록 복사 (Intra Block Copying) 프로세스의 예를 예시하는 다이어그램이다.
도 6a 및 도 6b 는 본 개시물의 하나 이상의 기법들에 따라, 예측자 블록이 선택될 수도 있는 예시의 검색 영역들을 예시하는 다이어그램들이다.
도 7 은 본 개시물의 하나 이상의 기법들에 따라, 예측자 블록이 선택될 수도 있는 예시의 검색 영역들을 예시하는 다이어그램이다.
도 8 은 본 개시물의 하나 이상의 기법들에 따라, 예측자 블록이 선택될 수도 있는 예시의 검색 영역들을 예시하는 다이어그램이다.
도 9 는 본 개시물의 하나 이상의 기법들에 따라, 픽처 밖에 위치된 영역을 패딩하기 위한 예시의 기법을 예시하는 다이어그램이다.
도 10 은 본 개시물의 하나 이상의 기법들에 따른, 클립핑 동작의 일부 예시의 시나리오들을 예시한다.
도 11 은 본 개시물의 하나 이상의 기법들에 따른, 클립핑 동작의 추가의 예시의 시나리오들을 예시한다.
도 12 는 본 개시물의 하나 이상의 기법들에 따른, 비디오 데이터의 블록에 대한 검색 영역을 결정하는 예시의 프로세스를 예시하는 플로우차트이다.
도 13 은 본 개시물의 하나 이상의 기법들에 따른, 비디오 데이터의 블록을 디코딩하는 예시의 프로세스를 예시하는 플로우차트이다.
비디오 시퀀스는 일반적으로, 픽처들의 시퀀스로서 표현된다. 통상적으로, 블록-기반의 코딩 기법들은 개별의 픽처들 각각을 코딩하는데 사용된다. 즉, 각각의 픽처는 블록들로 분할되고, 이 블록들 각각은 개별적으로 코딩된다. 비디오 데이터의 블록을 코딩하는 것은 일반적으로, 블록 내의 픽셀들에 대한 예측된 값들을 형성하고 잔여 값들을 코딩하는 것을 수반한다. 예측 값들은 하나 이상의 예측 블록들에서 픽셀 샘플들을 사용하여 형성된다. 잔여 값들은 오리지널 블록의 픽셀들과 예측된 픽셀 값들 간의 차이들을 나타낸다. 구체적으로, 비디오 데이터의 오리지널 블록은 픽셀 값들의 어레이를 포함하고, 예측된 블록은 예측된 픽셀 값들의 어레이를 포함한다. 잔여 값들은 오리지널 블록의 픽셀 값들과 예측된 픽셀 값들 간의 픽셀별 차이들을 나타낸다.
비디오 데이터의 블록에 대한 예측 기법들은 일반적으로, 인트라-예측 및 인터-예측으로서 카테고리화된다. 인트라-예측, 또는 공간 예측은 임의의 레퍼런스 픽처로부터의 예측을 포함하지 않는다. 대신에, 블록은 이웃하는, 이전에 코딩된 블록들의 픽셀 값들로부터 예측된다. 인터-예측, 또는 시간 예측은 일반적으로, 하나 이상의 레퍼런스 픽처 리스트 (RPL)들로부터 선택된 하나 이상의 이전에 코딩된 레퍼런스 픽처들 (예를 들어, 프레임들 또는 슬라이스들) 의 픽셀 값들로부터 블록을 예측하는 것을 수반한다. 비디오 코더는 RPL들에 포함된 픽처들을 저장하도록 구성된 하나 이상의 레퍼런스 픽처 버퍼들을 포함할 수도 있다.
많은 애플리케이션들, 예컨대 원격 데스크톱, 원격 게이밍, 무선 디스플레이들, 자동차 인포테인먼트, 클라우드 컴퓨팅 등은 일상 생활에서 일상적으로 되고 있다. 이들 애플리케이션들에서의 비디오 콘텐츠는 대개, 자연스러운 콘텐트, 텍스트, 인공 그래픽들 등의 조합들이다. 텍스트 및 인공 그래픽들 영역에서, 반복된 패턴들 (예컨대, 캐릭터들, 아이콘들, 심볼들 등) 이 종종 존재한다. 인트라 블록 복사 (인트라 BC) 는, 비디오 코더가 이러한 리던던시를 제거하고 인트라-픽처 코딩을 효율적으로 개선할 수도 있는 기법이다. 일부 경우들에서, 인트라 BC 는 대안으로, 인트라 모션 보상 (MC) 으로서 지칭될 수도 있다.
일부 인트라 BC 기법들에 따르면, 비디오 코더들은 현재 블록의 픽셀들의 예측을 위해 비디오 데이터의 현재 블록과 동일한 픽처 내에 있는 이전에 코딩된 비디오 데이터의 블록에서 복원된 픽셀들을 사용할 수도 있다. 일부 예들에서, 이전에 코딩된 비디오 데이터의 블록은 예측자 블록 (predictor block) 또는 예측 블록 (predictive block) 으로서 지칭될 수도 있다. 비디오 코더는 모션 벡터를 사용하여 예측자 블록을 식별할 수도 있다. 일부 예들에서, 모션 벡터는 또한, 블록 벡터, 오프셋 벡터, 또는 변위 벡터로서 지칭될 수도 있다. 일부 예들에서, 비디오 코더는 1-차원 모션 벡터를 사용하여 예측자 블록을 식별할 수도 있다. 따라서, 일부 비디오 코더들은 x-값들의 동일한 세트 (즉, 현재 블록과 수직으로 인-라인) 또는 y-값들의 동일한 세트 (즉, 현재 블록과 수평으로 인-라인) 만을 공유하는 이전에 코딩된 비디오 데이터의 블록들에 기초하여 비디오 데이터의 현재 블록을 예측할 수도 있다. 다른 예들에서, 비디오 코더는 2-차원 모션 벡터를 사용하여 예측자 블록을 식별할 수도 있다. 예를 들어, 비디오 코더는 수평 변위 컴포넌트 및 수직 변위 컴포넌트를 갖는 2-차원 모션 벡터를 사용할 수도 있고, 이들 각각은 제로 또는 넌-제로일 수도 있다. 수평 변위 컴포넌트는 비디오 데이터의 예측자 블록과 비디오 데이터의 현재 블록 간의 수평적 변위를 나타낼 수도 있고, 수직 변위 컴포넌트는 비디오 데이터의 예측자 블록과 비디오 데이터의 현재 블록 간의 수직적 변위를 나타낼 수도 있다.
인트라 BC 에 대해, 예측자 블록의 픽셀들은 코딩되고 있는 블록 (즉, 현재 블록) 내의 대응하는 픽셀들에 대한 예측 샘플들로서 사용될 수도 있다. 비디오 코더는 부가적으로, 예측 블록 및 비디오 데이터의 현재 블록에 기초하여 비디오 데이터의 잔여 블록을 결정하고, 2-차원 모션 벡터 및 비디오 데이터의 잔여 블록을 코딩할 수도 있다.
일부 예들에서, 인트라 BC 는, 특히 스크린 콘텐트 코딩에 대해 효율적인 코딩 툴일 수도 있다. 예를 들어, 일부 예들에서 인트라 BC 를 사용하는 코딩 블록들은 인터 또는 인트라 코딩을 사용하여 블록들을 코딩함으로써 생성되는 비트스트림보다 더 작은 비트스트림을 초래할 수도 있다. 위에서 논의된 바와 같이, 인트라 BC 는 (픽처에 대한 픽셀 값들이 픽처 내의 다른 픽셀 값들로부터 예측된다는 것을 의미하는) 인터-형 코딩 툴이지만, 블록이 코딩될 때 동일한 픽처로부터 레퍼런스 데이터를 사용한다. 일부 예들에서, 실제 설계에서 바람직하지 않을 수도 있는, 인트라 BC 에 적용된 하나 이상의 제약들로 인해 인트라 BC 를 종래의 인트라 픽처들 안에 통합하는 것이 어려울 수도 있다. 일부 예시의 제약들은, 예측자 블록이 코딩될 현재 블록과 동일한 슬라이스 또는 타일 내에 있어야 한다는 것, 예측자 블록이 코딩될 현재 블록을 오버랩하지 않아야 한다는 것, 예측자 블록 내의 모든 픽셀들이 복원되어야 한다는 것, (예를 들어, Rapaka 등의, "On parallel processing capability of intra block copy," 문헌: JCTVC-S0220, ITU-T SG 16 WP 3 의 JCT-VC 및 ISO/IEC JTC 1/SC 29/WG 11, 19 차 회의: 스트라스부르, 프랑스, 2014년 10월 17-24일 (이하에서 "JCTVC-S0220") 에서 설명된 바와 같은 병렬화 구현에 관련된 고려사항들로 인해) 예측자 블록이 소정 영역 내에 있다는 것, 및 제약된 인트라 예측이 인에이블되는 경우, 예측자 블록이 종래의 인터 모드를 사용하여 코딩된 임의의 픽셀을 포함하지 않아야 한다는 것을 포함하지만, 이에 제한되지는 않는다. 부가적으로, 일부 예들에서 종래의 인트라 및 인터 프레임들에 대한 하드웨어 아키텍처는 (예를 들어, 픽처 내에서 블록 복사를 초래하는 인트라 BC 로 인해) 변경 없이 인트라 BC 에 대해 재사용되지 않을 수도 있다. 이와 같이, 인트라 BC 에 현재 적용된 제약들의 일부 또는 모두를 유지하면서 하드웨어 아키텍처에 대한 (중요한) 변경 없이 인트라 BC 에 의해 제공된 효율성들을 비디오 코더로 하여금 얻게 하는 것이 바람직할 수도 있다.
일부 예들에서, 종래의 인트라 예측 기법들을 사용하여 현재 픽처 내의 샘플들에 기초하여 현재 픽처의 블록을 예측하는 것과 대조적으로, 비디오 코더는 종래의 인터 예측과 유사한 기법들을 사용하여 현재 픽처 내의 샘플들에 기초하여 현재 픽처에서 블록을 예측하도록 인트라 BC 를 수행할 수도 있다. 예를 들어, 비디오 코더는 현재 픽처를 예측하는데 사용된 레퍼런스 픽처 리스트 (RPL) 에 현재 픽처를 포함하고, 레퍼런스 픽처 버퍼에 현재 픽처의 버전 (또는 복원되었던 현재 픽처의 적어도 일부) 를 저장하며, 레퍼런스 픽처 버퍼에 저장된 현재 픽처의 버전에 포함된 비디오 데이터의 예측자 블록에 기초하여 현재 픽처에서 비디오 데이터의 블록을 코딩할 수도 있다. 이 방식으로, 비디오 코더는 인트라 BC 에 현재 적용된 제약들의 일부 또는 모두를 유지하면서 인트라 BC 에 의해 제공된 효율성들을 얻을 수도 있다. 또한, 이 방식으로, 비디오 코더는 중요한 변경 없이 인트라 BC 에 대한 종래의 인트라 및 인터 프레임들에 대한 하드웨어 아키텍처를 재사용할 수도 있다.
위에서 논의된 바와 같이, 비디오 인코더는 동일한 픽처 내로부터 비디오 데이터의 현재 블록에 대한 예측자 블록을 선택할 수도 있다. 일부 예들에서, 비디오 인코더는, 절대 차의 합 (SAD), 제곱 차의 합 (SSD), 또는 다른 차이 메트릭들에 의해 결정될 수도 있는, 픽셀 차이의 면들에서, 여러 후보 예측자 블록들을 평가하고 현재 블록에 밀접하게 일치하는 후보 예측자 블록을 선택할 수도 있다.
일부 예들에서, 현재 픽처에서 예측자 블록을 식별하는데 사용된 모션 벡터는 정수-픽셀 레졸루션을 가질 수도 있다. 예를 들어, 모션 벡터는 단일 픽셀의 증분들에서 예측자 블록과 현재 블록 간의 변위를 나타내는 하나 이상의 정수들을 포함할 수도 있다. 일 예로서, 정수-픽셀 레졸루션을 갖는 모션 벡터는 현재 블록과 예측자 블록 간의 수평 변위를 나타내는 제 1 정수 (예를 들어, 3) 및 현재 블록과 예측자 블록 간의 수직 변위를 나타내는 제 2 정수 (예를 들어, 2) 를 포함할 수도 있다.
일부 예들에서, 현재 픽처에서 예측자 블록을 식별하는데 사용된 모션 벡터는 분수-픽셀 레졸루션을 가질 수도 있다. 예를 들어, 모션 벡터는 단일 픽셀 미만의 증분들에서 예측자 블록과 현재 블록 간의 변위를 나타내는 하나 이상의 값들을 포함할 수도 있다. 분수-픽셀 모션 벡터가 가질 수도 있는 일부 예시의 레졸루션들은 하프-픽셀 레졸루션 (예를 들어, 1/2 pel 레졸루션), 쿼터-픽셀 레졸루션 (예를 들어, 1/4 pel 레졸루션), 및 8 분 픽셀 레졸루션 (예를 들어, 1/8 pel 레졸루션), 등을 포함하지만, 반드시 이에 제한되지는 않는다. 일 예로서, 쿼터-픽셀 레졸루션을 갖는 모션 벡터는 현재 블록과 예측자 블록 간의 수평 변위를 나타내는 제 1 값 (예를 들어, 2.75) 및 현재 블록과 예측자 블록 간의 수직 변위를 나타내는 제 2 값 (예를 들어, 2.5) 를 포함할 수도 있다.
일부 예들, 예컨대 모션 벡터가 정수-픽셀 레졸루션을 갖는 경우에서, 모션 벡터에 의해 식별된 샘플 픽셀 값들은 정수-픽셀 포지션들에 있지 않을 수도 있고 따라서 비디오 코더는 보간 없이 상기 샘플 픽셀 값들에 액세스할 수도 있다. 비디오 코더가 보간 없이 샘플 픽셀들에 액세스할 수도 있기 때문에, 비디오 코더는 모션 벡터가 정수-픽셀 레졸루션을 갖는 현재 블록을 예측하도록 예측자 블록 내에 위치된 샘플 픽셀 값들만을 사용할 수도 있다. 일부 예들, 예컨대 모션 벡터가 분수-픽셀 레졸루션을 갖는 경우에서, 모션 벡터에 의해 식별된 샘플 픽셀 값들은 정수-픽셀 포지션들에 있지 않을 수도 있고, 따라서 비디오 코더는 샘플 픽셀 값들을 구성하기 위해 보간을 수행할 필요가 있을 수도 있다. 일부 예들에서, 샘플 픽셀들을 구성하도록 보간을 수행하기 위해, 비디오 코더는 현재 블록을 예측하도록 예측자 블록 내 및 블록 밖의 양자 모두에 위치된 샘플 픽셀 값들을 사용할 필요가 있을 수도 있다. 그러나, 일부 예들에서, 비디오 코더가 현재 블록을 예측하기 위해 예측자 블록 밖에 위치된 샘플 픽셀 값들을 사용하는 것이 바람직하지 않을 수도 있다. 예를 들어, 예측자 블록 및 현재 블록이 현재 픽처에 위치되는 경우, 이러한 샘플들이 이용 가능하지 않을 수도 있기 때문에 (즉, 이러한 샘플들이 현재 픽처의 이미 복원된 영역들에 위치되지 않을 수도 있기 때문에) 비디오 디코더가 예측자 블록 밖에 위치된 샘플 픽셀 값들을 사용하는 것이 가능하지 않을 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, 비디오 코더는 예측자 블록을 식별하는 모션 벡터에 대해 사용될 레졸루션에 기초하여 결정된 검색 영역 내로부터 현재 블록에 대한 예측자 블록을 선택할 수도 있다. 예를 들어, 비디오 코더는, 모션 벡터에 대해 사용될 레졸루션이 정수-픽셀인 경우보다 모션 벡터에 대해 사용될 레졸루션이 분수-픽셀인 경우에서 더 작은 검색 영역을 사용할 수도 있다. 일 예로서, 모션 벡터에 대해 사용될 레졸루션이 정수-픽셀인 경우에서, 비디오 코더는 현재 픽처의 복원된 영역을 포함하는 초기 검색 영역 내로부터 예측자 블록을 선택할 수도 있다. 다른 예로서, 모션 벡터에 대해 사용될 레졸루션이 분수-픽셀인 경우, 비디오 코더는 초기 검색 영역의 사이즈를 초기 검색 영역의 우측 및 하부 경계들로부터 M 개의 샘플들만큼 감소시키고 초기 검색 영역의 사이즈를 초기 검색 영역의 상부 및 좌측 경계들로부터 N 개의 샘플들만큼 감소시킴으로써 결정되는 감소된 검색 영역 내로부터 예측자 블록을 선택할 수도 있다. 이 방식으로, 비디오 코더는, 예측자 블록 밖에 위치된 샘플 픽셀 값들을 포함하는 예측자 블록을 구성하는데 필요한 모든 샘플 픽셀 값들이 예측자 블록에 기초하여 현재 블록을 코딩하는 경우 사용하기 위해 이용 가능하다는 것을 보장할 수도 있다.
본 개시물은 현재 픽처의 부분들을 예측하는 경우 레퍼런스 픽처로서 현재 픽처를 이용하는 것에 관련된 예시의 기법들을 설명한다. 이해를 돕기 위해, 예시의 기법들은 4:4:4, 4:2:2, 4:2:0, 4:0:0 등을 포함하는, 가능하게는 고 비트 심도 (예를 들어, 8 비트 이상) 의 상이한 크로마 샘플링 포맷들의 지원을 포함하는, 고 효율 비디오 코딩 (HEVC) 비디오 코딩 표준으로의 범위 확장들 (RExt) 에 대하여 설명된다. 이 기법들은 또한, 스크린 콘텐트 코딩에 적용 가능할 수도 있다. 본 기법들은 범위 확장들 또는 스크린 콘텐트 코딩에 제한되지 않고, 표준 기반 또는 비-표준 기반의 비디오 코딩을 포함하는 비디오 코딩 기법들에 일반적으로 적용 가능할 수도 있다는 것으로 이해되어야 한다. 또한, 본 개시물에 설명된 기법들은 미래에 개발된 표준들의 부분이 될 수도 있다. 다시 말해, 본 개시물에 설명된 기법들은 이전에 개발된 비디오 코딩 표준들, 현재 개발 중인 비디오 코딩 표준들, 및 다가오는 비디오 코딩 표준들에 적용될 수도 있다.
최근에, 새로운 비디오 코딩 표준의 설계, 즉 고효율 비디오 코딩 (HEVC) 이 ITU-T 비디오 코딩 전문가 그룹 (VCEG) 및 ISO/IEC 동화상 전문가 그룹 (MPEG) 의 JCT-VC (Joint Collaboration Team on Video Coding) 에 의해 완결되고 있다. 이하에서 HEVC 버전 1 로서 지칭된, 완결된 HEVC 사양은 ITU 의 ITU-T 전기 통신 표준화 부문, 시리즈 H: 시청각 및 멀티미디어 시스템들, 시청각 서비스들의 인프라스트럭처 - 이동 비디오의 코딩: 고효율 비디오 코딩, H.265, 2015 년 4 월으로 명명되고, http://www.itu.int/rec/T-REC-H.265-201504-I 로부터 입수 가능하다. HEVC 에 대한 범위 확장들, 즉 HEVC RExt 은 또한, JCT-VC 에 의해 개발되고 있다. 이하에서 "RExt WD 7" 로 지칭된, 고효율 비디오 코딩 (HEVC) 범위 확장 텍스트 사양으로 명명된 범위 확장들의 최근 작업 초안 (WD): 초안 7, ISO/IEC JTC 1/SC 29/WG 11 및 ITU-T SG 16 WP 3 의 JCT-VC (Joint Collaborative Team on Video Coding), 17차 미팅: 발렌시아, 스페인, 2014년 3월 27일 - 4월 4일, 문헌: JCTVC-Q1005_v4 은 http://phenix.int-evry.fr/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC-Q1005-v4.zip 로부터 입수 가능하다.
범위 확장 사양은 HEVC 사양의 버전 2 가 될 수도 있다. 그러나, 큰 범위에서, 제안된 기법들이 고려되는 한, 예를 들어 모션 벡터 (MV) 예측, HEVC 버전 1 및 범위 확장 사양은 기술적으로 유사하다. 따라서, HEVC 버전 1 에 기초하여 변경들이 언급될 때마다, 동일한 변경들이 범위 확장 사양에 적용될 수도 있고, HEVC 버전 1 모듈이 설명될 때마다 이 설명은 또한, (동일한 하위-조항들을 갖는) HEVC 범위 확장 모듈에도 적용가능할 수도 있다.
최근에, 모션이 있는 그래픽들 및 텍스트와 같은 스크린-콘텐트 자료에 대한 새로운 코딩 툴들의 연구가 요청되었고, 스크린 콘텐트에 대한 코딩 효율성을 개선시키는 기술들이 제안되고 있다. 신규한 전용 코딩 툴들로 스크린 콘텍트의 특징들을 활용함으로써 코딩 효율성에서 상당한 개선들이 획득될 수 있다는 증거가 존재하기 때문에, 스크린 콘텐트 코딩 (SCC) 에 대한 특정 툴들을 포함하는 고효율 비디오 코딩 (HEVC) 표준의 미래의 확장들을 가능하게 개발하는 목표를 갖는 CfP (Call for Proposals) 가 이슈화되고 있다. 이하에서 "SCC WD 6" 로서 지칭된, SCC 사양의 최근 작업 초안 (WD) 은 http://phenix.it-sudparis.eu/jct/doc_end_user/documents/22_Geneva/wg11/JCTVC-W1005-v1.zip 에서 입수 가능하다.
도 1 은 본 개시물의 기법들을 구현할 수도 있는 예시의 비디오 인코딩 및 디코딩 시스템 (10) 을 예시하는 블록도이다. 도 1 에 도시된 바와 같이, 시스템 (10) 은 목적지 디바이스 (14) 에 의해 나중에 디코딩될 인코딩된 비디오 데이터를 제공하는 소스 디바이스 (12) 를 포함한다. 특히, 소스 디바이스 (12) 는 컴퓨터 판독가능 매체 (16) 를 통해 목적지 디바이스 (14) 에 비디오 데이터를 제공한다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 데스크톱 컴퓨터들, 노트북 (즉, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 소위 "스마트" 폰들과 같은 전화 핸드셋들, 소위 "스마트" 패드들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게임용 콘솔들, 비디오 스트리밍 디바이스 등을 포함하는 다양한 범위의 디바이스들 중 임의의 것을 포함할 수도 있다. 일부 경우들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신을 위해 구비될 수도 있다.
목적지 디바이스 (14) 는 디코딩될 인코딩된 비디오 데이터를 컴퓨터 판독가능 매체 (16) 를 통해 수신할 수도 있다. 컴퓨터 판독가능 매체 (16) 는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 이동시킬 수 있는 임의의 유형의 매체 또는 디바이스를 포함할 수도 있다. 일 예에서, 컴퓨터 판독가능 매체 (16) 는 소스 디바이스 (12) 로 하여금 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로 직접적으로 송신하게 하는 통신 매체를 포함할 수도 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조되고, 목적지 디바이스 (14) 로 송신될 수도 있다. 통신 매체는 임의의 무선 또는 유선 통신 매체, 예컨대 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들을 포함할 수도 있다. 통신 매체는 패킷 기반의 네트워크, 예컨대 근거리 통신망, 광대역 통신망, 또는 인터넷과 같은 글로벌 네트워크의 일부를 형성할 수도 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
일부 예들에서, 인코딩된 데이터는 소스 디바이스 (12) 의 출력 인터페이스 (22) 로부터 저장 디바이스 (32) 로 출력될 수도 있다. 유사하게, 인코딩된 데이터는 목적지 디바이스 (14) 의 입력 인터페이스 (28) 에 의해 저장 디바이스 (32) 로부터 액세스될 수도 있다. 저장 디바이스 (32) 는 하드 드라이브, 블루레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 휘발성 또는 비휘발성 메모리와 같은 임의의 다양한 분산된 또는 로컬하게 액세스된 데이터 저장 매체, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체를 포함할 수도 있다. 추가의 예에서, 저장 디바이스 (32) 는 소스 디바이스 (12) 에 의해 생성된 인코딩된 비디오를 저장할 수도 있는 다른 중간 저장 디바이스 또는 파일 서버에 대응할 수도 있다.
목적지 디바이스 (14) 는 스트리밍 또는 다운로드를 통해 저장 디바이스 (32) 로부터 저장된 비디오 데이터에 액세스할 수도 있다. 파일 서버는 인코딩된 비디오 데이터를 저장할 수 있고 그 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로 송신할 수 있는 임의의 유형의 서버일 수도 있다. 예시의 파일 서버들은 (예를 들어, 웹사이트용의) 웹서버, FTP 서버, NAS (network attached storage) 디바이스들, 또는 로컬 디스크 드라이브를 포함한다. 목적지 디바이스 (14) 는 인터넷을 접속을 포함하는 임의의 표준 데이터 접속을 통해 인코딩된 비디오 데이터에 액세스할 수도 있다. 이것은 파일 서버에 저장된 인코딩된 비디오 데이터를 액세스하는데 적합한 무선 채널 (예를 들어, Wi-Fi 접속), 유선 접속 (예를 들어, DSL, 케이블 모뎀 등), 또는 이둘의 조합을 포함할 수도 있다. 저장 디바이스로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이들의 조합일 수도 있다.
본 개시물의 기법들은 무선 애플리케이션들 또는 설정들에 반드시 제한되지는 않는다. 기법들은 다양한 멀티미디어 애플리케이션들, 예컨대 지상파 (over-the-air) 텔레비전 방송들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, HTTP 를 통한 동적 적응형 스트리밍 (dynamic adaptive streaming over HTTP; DASH) 과 같은 인터넷 스트리밍 비디오 송신들, 데이터 저장 매체 상에 인코딩되는 디지털 비디오, 데이터 저장 매체 상에 저장되는 디지털 비디오의 디코딩, 또는 다른 애플리케이션들 중 임의의 것의 지원에서의 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 시스템 (10) 은, 비디오 스트리밍, 비디오 플레이백, 비디오 방송, 및/또는 영상 전화와 같은 애플리케이션들을 지원하기 위해 일방향 또는 양방향 비디오 송신을 지원하도록 구성될 수도 있다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 및 출력 인터페이스 (22) 를 포함한다. 목적지 디바이스 (14) 는 입력 인터페이스 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함한다. 본 개시물에 따르면, 소스 디바이스 (12) 의 비디오 인코더 (20) 는 비디오 코딩에서 변환을 수행하기 위한 기법들을 적용하도록 구성될 수도 있다. 다른 예들에서, 소스 디바이스 및 목적지 디바이스는 다른 컴포넌트들 또는 어레인지먼트들을 포함할 수도 있다. 예를 들어, 소스 디바이스 (12) 는 외부 비디오 소스 (18), 예컨대 외부 카메라로부터 비디오 데이터를 수신할 수도 있다. 마찬가지로, 목적지 디바이스 (14) 는 집적 디스플레이 디바이스를 포함하기 보다는, 외부 디스플레이 디바이스와 인터페이스할 수도 있다.
도 1 의 예시된 시스템 (10) 은 단지 일 예이다. 비디오 코딩에서 개선된 인트라 블록 복사 시그널링에 대한 기법들은 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스에 의해 수행될 수도 있다. 본 개시물의 기법들은 일반적으로 비디오 인코딩 또는 디코딩 디바이스에 의해 수행되지만, 이 기법들은 또한 결합된 비디오 코덱에 의해 수행될 수도 있다. 더욱이, 본 개시물의 기법들은 또한, 비디오 프리프로세서에 의해 수행될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 단지, 소스 디바이스 (12) 가 목적지 디바이스 (14) 로의 송신을 위한 코딩된 비디오 데이터를 생성하는 이러한 코딩 디바이스들의 단지 예들이다. 일부 예들에서, 디바이스들 (12, 14) 은, 디바이스들 (12, 14) 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭적인 방식으로 동작할 수도 있다. 따라서, 시스템 (10) 은, 예를 들어 비디오 스트리밍, 비디오 플레이백, 비디오 방송, 또는 화상 전화를 위해 비디오 디바이스들 (12, 14) 간의 일방향 또는 양방향 비디오 송신을 지원할 수도 있다.
비디오 디바이스 (12) 의 비디오 소스 (18) 는 비디오 캡처 디바이스, 예컨대 비디오 카메라, 이전에 캡처된 비디오를 포함하는 비디오 아카이브, 및/또는 비디오 콘텐트 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스를 포함할 수도 있다. 다른 대안으로서, 비디오 소스 (18) 는 소스 비디오로서 컴퓨터 그래픽 기반 데이터, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터 생성된 비디오의 조합을 생성할 수도 있다. 일부 경우들에서, 비디오 소스 (18) 가 비디오 카메라이면, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 소위 카메라 폰들 또는 비디오 폰들을 형성할 수도 있다. 그러나, 전술된 바와 같이, 본 개시물에서 설명된 기법들은 일반적으로 비디오 코딩에 적용될 수도 있으며, 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다. 각각의 경우에서, 캡처된, 프리-캡처된, 또는 컴퓨터 생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 인코딩된 비디오 정보는 그 다음에, 컴퓨터 판독가능 매체 (16) 상으로 출력 인터페이스 (22) 에 의해 출력될 수도 있다.
컴퓨터 판독가능 매체 (16) 는 트랜션트 (transient) 매체, 예컨대 무선 브로드캐스트 또는 유선 네트워크 송신, 또는 저장 매체 (즉, 비일시적 저장 매체), 예컨대 하드 디스크, 플래시 드라이브, 컴팩트 디스크, 디지털 비디오 디스크, 블루레이 디스크, 또는 다른 컴퓨터 판독가능 매체를 포함할 수도 있다. 일부 예들에서, 네트워크 서버 (미도시) 는 소스 디바이스 (12) 로부터 인코딩된 비디오 데이터를 수신하고, 예를 들어 네트워크 송신을 통해 인코딩된 비디오 데이터를 목적지 디바이스 (14) 에 제공할 수도 있다. 유사하게, 디스크 스탬핑 기능과 같은 매체 생성 기능의 컴퓨팅 디바이스가 소스 디바이스 (12) 로부터 인코딩된 비디오 데이터를 수신하고, 인코딩된 비디오 데이터를 포함하는 디스크를 생성할 수도 있다. 따라서, 컴퓨터 판독가능 매체 (16) 는, 다양한 예들에서, 다양한 형태들의 하나 이상의 컴퓨터 판독가능 매체를 포함하는 것으로 이해될 수도 있다.
목적지 디바이스 (14) 의 입력 인터페이스 (28) 는 컴퓨터 판독가능 매체 (16) 또는 저장 디바이스 (32) 로부터 정보를 수신한다. 컴퓨터 판독가능 매체 (16) 또는 저장 디바이스 (32) 의 정보는 비디오 인코더 (20) 에 의해 정의된 신택스 정보를 포함할 수도 있는데, 신택스 정보는 비디오 디코더 (30) 에 의해 또한 사용되며, 특성들 및/또는 블록들 및 다른 코딩된 유닛들, 예를 들어, GOP 들의 프로세싱을 설명하는 신택스 엘리먼트들을 포함한다. 디스플레이 디바이스 (31) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 유형의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 것을 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 임의의 다양한 적합한 인코더 또는 디코더 회로부, 적용 가능하다면 예컨대 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서 (DSP) 들, 주문형 집적 회로들 (ASIC) 들, 필드 프로그램가능 게이트 어레이 (FPGA) 들, 이산 로직 회로부, 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 임의의 조합들 중 어느 하나로서 구현될 수도 있다. 이 기법들이 부분적으로 소프트웨어에서 구현되는 경우, 디바이스는 그 소프트웨어에 대한 명령들을 적합한 비일시적 컴퓨터 판독가능 매체에 저장할 수도 있고, 본 개시물의 기법들을 수행하기 위해 하나 이상의 프로세서들을 사용하는 하드웨어에서 그 명령들을 실행할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있고, 이들 중 어느 하나는 결합형 인코더/디코더 (CODEC) 의 부분으로서 통합될 수도 있다. 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 를 포함하는 디바이스는 집적 회로, 마이크로프로세서, 및/또는 무선 통신 디바이스, 예컨대 셀룰러 전화기를 포함할 수도 있다.
도 1 에 도시되지 않았으나, 일부 양태들에서 비디오 인코더 (20) 및 비디오 디코더 (30) 는 각각 오디오 인코더 및 디코더와 통합될 수도 있고, 공통의 데이터 스트림 또는 개별의 데이터 스트림들에서 오디오 및 비디오 양자의 인코딩을 핸들링하기 위해 적합한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함할 수도 있다. 적용 가능하다면, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 사용자 데이터그램 프로토콜 (UDP) 과 같은 다른 프로토콜을 준수할 수도 있다.
본 개시물은, 일반적으로 비디오 인코더 (20) 가 소정의 정보를 다른 디바이스, 예컨대 비디오 디코더 (30) 로 "시그널링" 하는 것을 나타낼 수도 있다. 그러나, 비디오 인코더 (20) 는 비디오 데이터의 다양한 인코딩된 부분들과 소정의 신택스 엘리먼트들을 연관시킴으로써 정보를 시그널링할 수도 있다는 것이 이해되어야 한다. 즉, 비디오 인코더 (20) 는 비디오 데이터의 다양한 인코딩된 부분들의 헤더들로 소정의 신택스 엘리먼트들을 저장함으로써 데이터를 "시그널링"할 수도 있다. 일부 경우들에서, 이러한 신택스 엘리먼트들은 수신되기 전에 인코딩 및 저장 (예를 들어, 저장 디바이스 (32) 에 저장) 되고, 비디오 디코더 (30) 에 의해 디코딩될 수도 있다. 따라서, 용어 "시그널링" 은 일반적으로 압축된 비디오 데이터를 디코딩하기 위한 신택스 또는 다른 데이터의 통신을 지칭할 수도 있고, 이러한 통신이 실시간으로 또는 거의-실시간으로 또는 기간에 걸쳐 발생하든 안 하든, 예컨대 인코딩 시에 신택스 엘리먼트들을 매체에 저장할 때 발생할 수도 있고, 신택스 엘리먼트들은 그 후 이 매체에 저장된 후에 임의의 시간에 디코딩 디바이스에 의해 취출될 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 비디오 압축 표준, 예컨대 HEVC 표준에 따라 동작할 수도 있다. 본 개시물의 기법들은 임의의 특정 코딩 표준에 제한되지 않지만, 이 기법들은 HEVC 표준, 특히 SCC 확장과 같은 HEVC 표준의 확장들에 관련될 수도 있다.
일반적으로, HEVC 는 루마 및 크로마 샘플들 양자 모두를 포함하는 최대 코딩 유닛들 (LCU) 또는 트리블록들의 시퀀스로 분할될 수도 있다. 비트스트림 내의 신택스 데이터는 픽셀들의 수의 관점에서 최대 코딩 유닛인 LCU 에 대한 사이즈를 정의할 수도 있다. 슬라이스는 다수의 연속적인 코딩 트리 유닛들 (CTUs) 을 포함한다. CTU들 각각은 루마 샘플들의 코딩 트리 블록 (CTB), 크로마 샘플들의 2 개의 대응하는 코딩 트리 블록들, 및 코딩 트리 블록들의 샘플들을 코딩하는데 사용된 신택스 구조들을 포함할 수도 있다. 3 개의 별개의 컬러 평면들을 갖는 픽처 또는 모노크롬 픽처에서, CTU 는 단일의 코딩 트리 블록 및 코딩 트리 블록의 샘플들을 코딩하는데 사용된 신택스 구조들을 포함할 수도 있다.
비디오 픽처는 하나 이상의 슬라이스들로 파티셔닝될 수도 있다. 각각의 트리블록은 쿼드트리에 따라 코딩 유닛들 (CU들) 로 스플릿될 수도 있다. 일반적으로, 쿼드트리 데이터 구조는 CU 당 하나의 노드를 포함하는데, 여기서 루트 노드는 트리블록에 대응한다. CU 가 4 개의 서브-CU들로 스플릿되면, 그 CU 에 대응하는 노드는 4 개의 리프 노드들을 포함하고, 그 각각은 서브-CU들의 하나에 대응한다. CU 는 루마 샘플 어레이, Cb 샘플 어레이, 및 Cr 샘플 어레이를 갖는 픽처의 루마 샘플들의 코딩 블록 및 크로마 샘플들의 2 개의 대응하는 코딩 블록들, 및 코딩 블록들의 샘플들을 코딩하는데 사용된 신택스 구조들을 포함할 수도 있다. 3 개의 별개의 컬러 평면들을 갖는 픽처 또는 모노크롬 픽처에서, CU 는 단일의 코딩 블록 및 코딩 블록의 샘플들을 코딩하는데 사용된 신택스 구조들을 포함할 수도 있다. 코딩 블록은 샘플들의 NxN 블록이다.
쿼드트리 데이터 구조의 각각의 노드는 대응하는 CU 에 대해 신택스 데이터를 제공할 수도 있다. 예를 들어, 쿼드트리 내의 노드는, 그 노드에 대응하는 CU 가 서브-CU 들로 스플릿되는지의 여부를 나타내는 스플릿 플래그를 포함할 수도 있다. CU 에 대한 신택스 엘리먼트들은 재귀적으로 정의될 수도 있고, CU 가 서브 CU 들로 스플릿되는지 여부에 의존할 수도 있다. CU 가 더 스플릿되지 않으면, 이것은 리프-CU 로서 지칭된다. 본 개시물에서, 리프 CU 의 4 개의 서브-CU 들은, 오리지널 리프-CU 의 명백한 스플릿이 존재하지 않더라도 리프-CU 들로서 또한 지칭될 것이다. 예를 들어, 16x16 사이즈에서 CU 가 더 이상 스플릿되지 않으면, 4 개의 8x8 서브-CU들은, 16x16 CU 가 절대 스플릿되지 않더라도 리프-CU 들로서 또한 지칭될 것이다.
CU 가 사이즈 구별을 갖지 않는다는 점을 제외하면, CU 는 H.264 표준의 매크로 블록과 유사한 목적을 갖는다. 예를 들어, 트리블록은 (서브 CU 들로도 지칭되는) 4 개의 자식 (child) 노드들로 스플릿될 수도 있고, 각각의 자식 노드는 다시 부모 (parent) 노드일 수도 있고 다른 4 개의 자식 노드들로 스플릿될 수도 있다. 쿼드트리의 리프 노드로서 지칭된 최종의 스플릿되지 않는 자식 노드는 리프-CU 로도 지칭되는 코딩 노드를 포함한다. 코딩된 비트스트림과 연관된 신택스 데이터는, 최대 CU 심도로서 지칭된 트리블록이 스플릿될 수도 있는 최대 횟수를 정의할 수도 있고, 코딩 노드들의 최소 사이즈를 또한 정의할 수도 있다. 따라서, 비트스트림은 최소 코딩 유닛 (SCU) 을 또한 정의할 수도 있다. 본 개시물은 HEVC 의 맥락에서 CU, PU, 또는 TU, 또는 다른 표준들의 맥락에서 유사한 데이터 구조들 (예를 들어, H.264/AVC 에서의 매크로블록들 및 서브 블록들) 중 임의의 것을 지칭하기 위해 용어 "블록" 을 사용한다.
CU 는 코딩 노드 및 코딩 노드와 연관된 변환 유닛 (TU) 들 및 예측 유닛 (PU) 들을 포함한다. CU 의 사이즈는 코딩 노드의 사이즈에 대응하고 정사각형 형상이어야 한다. CU 의 사이즈는 8x8 픽셀들에서 64x64 픽셀들 이상의 최대값을 갖는 트리블록의 사이즈까지의 범위에 있을 수도 있다. 각각의 CU 는 하나 이상의 PU 들 및 하나 이상의 TU 들을 포함할 수도 있다.
일반적으로, PU 는 대응하는 CU 의 전체 또는 일부에 대응하는 공간 영역을 표현하고, PU 에 대한 레퍼런스 샘플을 취출하는 데이터를 포함할 수도 있다. 또한, PU 는 예측과 관련된 데이터를 포함한다. 예를 들어, PU 가 인트라-모드 인코딩된 경우, PU 에 대한 데이터는 잔여 쿼드트리 (RQT) 에 포함될 수도 있으며, 잔여 쿼드트리는 PU 에 대응하는 TU 에 대한 인트라-예측 모드를 설명하는 데이터를 포함할 수도 있다. 다른 예로서, PU 가 인터-모드 인코딩되는 경우, PU 는 PU 에 대한 하나 이상의 모션 벡터를 정의하는 데이터를 포함할 수도 있다. 예측 블록은, 동일한 예측이 적용되는 샘플들의 직사각형 (즉, 정사각형 또는 비-정사각형) 블록일 수도 있다. CU 의 PU 는 픽처의 루마 샘플들의 예측 블록, 크로마 샘플들의 2 개의 대응하는 예측 블록들, 및 예측 블록 샘플들을 예측하는데 사용된 신택스 구조들을 포함할 수도 있다. 모노크롬 픽처 또는 3 개의 별개의 컬러 평면들을 갖는 픽처에서, PU 는 단일의 예측 블록 및 예측 블록 샘플들을 예측하는데 사용된 신택스 구조들을 포함할 수도 있다.
TU 들은 잔여 비디오 데이터에 대한, 예를 들어 이산 코사인 변환 (DCT), 정수 변환, 웨이블릿 변환, 또는 개념적으로 유사한 변환과 같은 변환의 적용 다음의 변환 도메인에서의 계수들을 포함할 수도 있다. 잔여 데이터는 인코딩되지 않은 픽처의 픽셀들과 PU 들에 대응하는 예측 값들 간의 픽셀 차이들에 대응할 수도 있다. 비디오 인코더 (20) 는 CU 에 대한 잔여 데이터를 포함하는 TU 들을 형성하고, 그 후 TU 들을 변환하여 CU 에 대한 변환 계수들을 생성할 수도 있다. 변환 블록은, 동일한 변환이 적용되는 샘플들의 직사각형 블록일 수도 있다. CU 의 변환 유닛 (TU) 은 루마 샘플들의 변환 블록, 크로마 샘플들의 2 개의 대응하는 변환 블록들, 및 변환 블록 샘플들을 변환하는데 사용된 신택스 구조들을 포함할 수도 있다. 모노크롬 픽처 또는 3 개의 별개의 컬러 평면들을 갖는 픽처에서, TU 는 단일의 변환 블록 및 변환 블록 샘플들을 변환하는데 사용된 신택스 구조들을 포함할 수도 있다.
변환 다음에, 비디오 인코더 (20) 는 변환 계수들의 양자화를 수행할 수도 있다. 양자화는 일반적으로, 계수들을 표현하기 위해 사용된 데이터의 양을 가능한 감소시키기 위해 변환 계수들이 양자화되어, 추가의 압축을 제공하는 프로세스를 지칭한다. 양자화 프로세스는 계수들의 일부 또는 전부와 연관된 비트 심도를 감소시킬 수도 있다. 예를 들어, n-비트 값은 양자화 동안 m-비트 값으로 내림 (round down) 될 수도 있는데, 여기서 n 은 m 보다 더 크다.
비디오 인코더 (20) 는 변환 계수들을 스캐닝하여, 양자화된 변환 계수들을 포함하는 2 차원 매트릭스로부터 1 차원 벡터를 생성할 수도 있다. 스캔은 어레이의 앞쪽에 보다 높은 에너지 (따라서 보다 낮은 주파수) 계수들을 배치하고, 어레이의 뒤쪽에 보다 낮은 에너지 (따라서 보다 높은 주파수) 계수들을 배치하도록 설계될 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 엔트로피 인코딩될 수 있는 직렬화된 벡터를 생성하기 위해 양자화된 변환 계수들을 스캔하기 위해 미리 정의된 스캔 순서를 이용할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는 적응 스캔 (adaptive scan) 을 수행할 수도 있다.
양자화된 변환 계수들을 스캐닝하여 1 차원 벡터를 형성한 후에, 비디오 인코더 (20) 는, 예를 들어 콘텍스트-적응 가변 길이 코딩 (CAVLC), 콘텍스트 적응 이진 산술 코딩 (CABAC), 신택스-기반 콘텍스트-적응 이진 산술 코딩 (SBAC), 확률 인터벌 파티셔닝 엔트로피 (PIPE) 코딩 또는 다른 엔트로피 인코딩 방법론에 따라 1 차원 벡터를 엔트로피 인코딩할 수도 있다. 비디오 인코더 (20) 는 또한, 비디오 데이터를 디코딩함에 있어서 비디오 디코더 (30) 에 의해 사용하기 위한 인코딩된 비디오 데이터와 연관된 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다.
비디오 인코더 (20) 는 또한, 신택스 데이터, 예컨대 블록-기반 신택스 데이터, 픽처-기반 신택스 데이터, 및 픽처들의 그룹 (GOP)-기반 신택스 데이터를 예를 들어, 픽처 헤더, 블록 헤더, 슬라이스 헤더, 또는 GOP 헤더에서, 비디오 디코더 (30) 로 전송할 수도 있다. GOP 신택스 데이터는 각각의 GOP 에서 다수의 픽처들을 설명할 수도 있고, 픽처 신택스 데이터는 대응하는 픽처를 인코딩하는데 사용된 인코딩/예측 모드를 나타낼 수도 있다.
비디오 디코더 (30) 는, 코딩된 비디오 데이터를 획득 시에, 비디오 인코더 (20) 에 대하여 설명된 인코딩 과정에 일반적으로 상반되는 디코딩 과정을 수행할 수도 있다. 예를 들어, 비디오 디코더 (30) 는 비디오 인코더 (20) 로부터 인코딩된 비디오 슬라이스의 비디오 블록들 및 연관된 신택스 엘리먼트들을 나타내는 인코딩된 비디오 비트스트림을 획득할 수도 있다. 비디오 디코더 (30) 는 비트스트림에 포함된 데이터를 사용하여 오리지널, 인코딩되지 않은 비디오 시퀀스를 복원할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 비디오 슬라이스들 내에서 비디오 블록들의 인트라- 및 인터-코딩을 수행할 수도 있다. 인트라-코딩은 소정의 비디오 픽처 내의 비디오에서 공간적 리던던시를 감소시키거나 제거하기 위해 공간 예측에 의존한다. 인터-코딩은, 비디오 시퀀스의 인접한 픽처들 내에서 비디오에서의 시간적 리던던시를 감소시키거나 제거하고 또는 다른 뷰들에서 비디오와의 리던던시를 감소시키거나 제거하기 위해 시간 예측 또는 인터-뷰 예측에 의존한다. 인트라-모드 (I 모드) 는 여러 공간 기반의 압축 모드들 중 임의의 것을 지칭할 수도 있다. 단방향 예측 (P 모드) 및 양방향 예측 (B 모드) 과 같은 인터-모드들은 여러 시간 기반의 압축 모드들 중 임의의 것을 지칭할 수도 있다.
일부 예들, 예컨대 스크린 콘텐트를 코딩하는 경우에서, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 종래의 인터 예측과 유사한 기법들을 사용하여 인트라 BC 를 수행할 수도 있다. 예를 들어, 비디오 데이터의 현재 픽처의 현재 블록을 인코딩하기 위해, 비디오 인코더 (20) 는 레퍼런스 픽처 버퍼에 저장된 현재 픽처의 버전에 포함된 비디오 데이터의 예측자 블록을 선택하고, 현재 픽처 내의 현재 블록에 대한 예측자 블록의 포지션을 식별하는 모션 벡터를 인코딩하며, 비디오 데이터의 현재 블록과 예측자 블록 간의 차이를 나타내는 비디오 데이터의 잔여 블록을 인코딩할 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는 모션 벡터에 대해 정수-픽셀 레졸루션을 사용할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 모션 벡터에 대해 분수-픽셀 레졸루션을 사용할 수도 있다.
일부 예들, 예컨대 모션 벡터가 정수-픽셀 레졸루션을 갖는 경우에서, 모션 벡터에 의해 식별된 샘플 픽셀 값들은 정수-픽셀 포지션들에 있을 수도 있고 따라서 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 보간 없이 상기 샘플 픽셀 값들에 액세스할 수도 있다. 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 가 보간 없이 샘플 픽셀들에 액세스할 수도 있기 때문에, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 모션 벡터가 정수-픽셀 레졸루션을 갖는 현재 블록을 예측하도록 예측자 블록 내에 위치된 샘플 픽셀 값들만을 사용할 수도 있다. 일부 예들, 예컨대 모션 벡터가 분수-픽셀 레졸루션을 갖는 경우에서, 모션 벡터에 의해 식별된 샘플 픽셀 값들은 정수-픽셀 포지션들에 있지 않을 수도 있고, 따라서 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 상기 샘플 픽셀 값들을 구성하기 위해 보간을 수행할 필요가 있을 수도 있다. 일부 예들에서, 샘플 픽셀들을 구성하도록 보간을 수행하기 위해, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 현재 블록을 예측하도록 예측자 블록 내 및 블록 밖 양자 모두에 위치된 샘플 픽셀 값들을 사용할 필요가 있을 수도 있다. 그러나, 일부 예들에서, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 가 현재 블록을 예측하기 위해 예측자 블록 밖에 위치된 샘플 픽셀 값들을 사용하는 것이 바람직하지 않을 수도 있다. 예를 들어, 예측자 블록 및 현재 블록이 현재 픽처에 위치되는 경우, 이러한 샘플들이 이용 가능하지 않을 수도 있기 때문에 (즉, 현재 픽처의 복원된 영역에 위치되지 않을 수도 있기 때문에) 비디오 디코더가 예측자 블록 밖에 위치된 샘플 픽셀 값들을 사용하는 것이 가능하지 않을 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, 비디오 인코더 (20) 는 예측자 블록을 식별하는 모션 벡터에 대해 사용될 레졸루션에 기초하여 결정된 검색 영역 내로부터 현재 블록에 대한 예측자 블록을 선택할 수도 있다. 예를 들어, 비디오 인코더 (20) 는, 모션 벡터에 대해 사용될 레졸루션이 정수-픽셀 정확도인 경우에서보다 모션 벡터에 대해 사용될 레졸루션이 분수-픽셀 정확도인 경우 더 작은 검색 영역을 사용할 수도 있다. 일 예로서, 모션 벡터에 대해 사용될 레졸루션이 정수-픽셀인 경우에서, 비디오 인코더 (20) 는 현재 픽처의 복원된 영역을 포함하는 초기 검색 영역 내로부터 예측자 블록을 선택할 수도 있다. 다른 예로서, 모션 벡터에 대해 사용될 레졸루션이 분수-픽셀인 경우, 비디오 인코더 (20) 는 초기 검색 영역의 사이즈를 초기 검색 영역의 우측 및 하부 경계들로부터 M 개의 샘플들만큼 감소시키고 초기 검색 영역의 사이즈를 초기 검색 영역의 상부 및 좌측 경계들로부터 N 개의 샘플들만큼 감소시킴으로써 결정되는 감소된 검색 영역 내로부터 예측자 블록을 선택할 수도 있다. 이 방식으로, 비디오 인코더 (20) 는, 예측자 블록 밖에 위치된 샘플 픽셀 값들을 포함하는 예측자 블록을 구성하는데 필요한 모든 샘플 픽셀 값들이 예측자 블록에 기초하여 현재 블록을 디코딩하는 경우 비디오 디코더 (30) 에 의해 사용하기 위해 이용 가능하다는 것을 보장할 수도 있다. 이와 같이, 비디오 인코더 (20) 는 인코더/디코더 불일치를 회피할 수도 있다.
도 2 는 디스플레이 순서에서, 픽처들 (34, 35A, 36A, 38A, 35B, 36B, 38B, 및 35C) 을 포함하는 예시의 비디오 시퀀스 (33) 를 예시하는 개념도이다. 이들 픽처들 중 하나 이상은 P-슬라이스들, B-슬라이스들, 또는 I-슬라이스들을 포함할 수도 있다. 일부 경우들에서, 비디오 시퀀스 (33) 는 픽처들의 그룹 (GOP) 으로서 지칭될 수도 있다. 픽처 (39) 는 비디오 시퀀스 (33) 후에 발생하는 시퀀스에 대한 디스플레이 순서에서 제 1 픽처이다. 도 2 는 비디오 시퀀스의 예시의 예측 구조를 일반적으로 나타내고, 단지 상이한 인터-예측된 슬라이스 유형들을 인코딩하기 위해 사용된 픽처 레퍼런스들을 예시하도록 의도된다. 실제 비디오 시퀀스는 상이한 디스플레이 순서에서 그리고 상이한 슬라이스 유형들을 포함하는 더 많은 또는 더 적은 비디오 픽처들을 포함할 수도 있다.
블록-기반 비디오 코딩에 대해, 비디오 시퀀스 (33) 에 포함된 비디오 픽처들 각각은 비디오 블록들 또는 코딩 유닛들 (CUs) 로 파티셔닝될 수도 있다. 비디오 픽처의 각각의 CU 는 하나 이상의 예측 유닛들 (PUs) 을 포함할 수도 있다. 일부 예들에서, 픽처 내의 PU들을 예측하기 위해 이용 가능한 예측 방법들은 픽처 유형에 의존할 수도 있다. 일 예로서, 인트라-예측된 픽처 (I-픽처) 의 슬라이스들 내의 PU들 또는 비디오 블록들은 인트라-예측 모드들 (즉, 동일한 픽처에서 이웃하는 블록들에 대하여 공간 예측) 을 사용하여 예측될 수도 있다. 다른 예로서, 인터-예측된 픽처 (B-픽처 또는 P-픽처) 의 슬라이스들 내의 PU들 또는 비디오 블록들은 인터 또는 인트라-예측 모드들 (즉, 동일한 픽처에서 이웃하는 블록들에 대하여 공간 예측 또는 다른 레퍼런스 픽처들에 대하여 시간적 예측) 을 사용하여 예측될 수도 있다. 다시 말해, I-픽처는 I-슬라이스들을 포함할 수도 있고, P-픽처는 I-슬라이스들 및 P-슬라이스들 양자 모두를 포함할 수도 있으며, B-픽처는 I-슬라이스들, P-슬라이스들, 및 B-슬라이스들을 포함할 수도 있다.
P-슬라이스의 비디오 블록들은 레퍼런스 픽처 리스트에서 식별된 레퍼런스 픽처로부터 단-방향 예측 코딩을 사용하여 인코딩될 수도 있다. B-슬라이스의 비디오 블록들은 다수의 레퍼런스 픽처 리스트들에서 식별된 다수의 레퍼런스 픽처로부터 양-방향 예측 코딩을 사용하여 인코딩될 수도 있다.
도 2 의 예에서, 제 1 픽처 (34) 는 I-픽처로서 인트라-모드 코딩에 대해 지정된다. 다른 예들에서, 제 1 픽처 (34) 는, 선행하는 시퀀스의 제 1 픽처를 참조하여, 예를 들어 P-픽처, 또는 B-픽처로서 인터-모드 코딩으로 코딩될 수도 있다. 비디오 픽처들 (35A-35C) (총괄하여, "비디오 픽처 (35)") 은 과거의 픽처 및 미래의 픽처를 참조하여 양방향-예측을 사용하여 B-픽처들로서 코딩하기 위해 지정된다. 도 2 의 예에서 예시된 바와 같이, 픽처 (35A) 는 픽처 (34) 및 픽처 (36A) 로부터 비디오 픽처 (35A) 로의 화살표들에 의해 표시된 바와 같이, 제 1 픽처 (34) 및 픽처 (36A) 를 참조하여 B-픽처로서 인코딩될 수도 있다. 도 2 의 예에서, 제 1 픽처 (34) 및 픽처 (36A) 는 픽처 (35A) 의 블록들의 예측 동안 사용된 레퍼런스 픽처 리스트들에 포함될 수도 있다. 픽처들 (35B 및 35C) 은 유사하게 인코딩된다.
비디오 픽처들 (36A-36B) (총괄하여 "비디오 픽처들 (36)") 은 과거의 픽처를 참조하여 단-방향 예측을 사용하여, P-픽처들 또는 B-픽처들로서 코딩하기 위해 지정될 수도 있다. 도 2 의 예에서 예시된 바와 같이, 픽처 (36A) 는 픽처 (34) 로부터 비디오 픽처 (36A) 로의 화살표에 의해 표시된 바와 같이, 제 1 픽처 (34) 를 참조하여 P-픽처, 또는 B-픽처로서 인코딩된다. 픽처 (36B) 는 픽처 (38A) 로부터 비디오 픽처 (36B) 로의 화살표에 의해 표시된 바와 같이, 픽처 (38A) 를 참조하여 P-픽처, 또는 B-픽처로서 유사하게 인코딩된다.
비디오 픽처들 (38A-38B) (총괄하여 "비디오 픽처들 (38)") 은 동일한 과거의 픽처를 참조하여 단-방향 예측을 사용하여, P-픽처들 또는 B-픽처들로서 코딩하기 위해 지정될 수도 있다. 도 2 의 예에서 예시된 바와 같이, 픽처 (38A) 는 픽처 (36A) 로부터 비디오 픽처 (38A) 로의 2 개의 화살표들에 의해 표시된 바와 같이, 둘다 픽처 (36A) 를 참조하여 인코딩된다. 픽처 (38B) 는 유사하게 인코딩된다.
일부 예들에서, 픽처들 각각은, 픽처들이 출력되는 순서를 나타내는 고유 값 (즉, 특정 비디오 시퀀스, 예를 들어 디코딩 순서에서 즉각적인 디코더 리프레시 (DDR) 픽처 다음의 픽처들의 시퀀스에 고유한 값) 을 할당 받을 수도 있다. 이 고유 값은 픽처 순서 카운트 (POC) 로서 지칭될 수도 있다. 일부 예들에서, 픽처들이 출력되는 순서는 픽처들이 코딩되는 순서와 상이할 수도 있다. 예를 들어, 픽처 (35A) 는 픽처 (36A) 전에 출력될 수도 있는 한편, 픽처 (36A) 는 픽처 (35A) 전에 코딩될 수도 있다.
일부 예들에서, 비디오 코더 (예를 들어, 비디오 인코더 (20) 또는 비디오 디코더 (30)) 는 현재 픽처에서 블록들을 예측하는데 사용된 레퍼런스 픽처 리스트 (RPL) 에 현재 픽처를 삽입함으로써 인트라 BC 를 수행할 수도 있다. 예를 들어, 도 2 의 예에서 비디오 코더는, 픽처 (35A) 에서 블록들을 예측하는데 사용된 RPL들에서, 픽처 (34) 및 픽처 (36A) 의 표시들과 함께, 픽처 (35A) 의 표시를 삽입할 수도 있다. 비디오 코더는 그 후, 픽처 (35A) 의 블록들을 코딩할 때 레퍼런스 픽처로서 픽처 (35A) 를 사용할 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, 비디오 코더는 예측자 블록을 식별하는 모션 벡터에 대해 사용될 레졸루션에 기초하여 결정된 검색 영역 내로부터 현재 픽처 내의 현재 블록에 대한 현재 픽처 내의 예측자 블록을 선택할 수도 있다. 비디오 인코더 (20) 는, 결정된 레졸루션에 기초하여 검색 영역의 사이즈가 레졸루션이 정수-픽셀인 경우보다 레졸루션이 분수-픽셀인 경우에서 더 작도록 현재 블록에 대한 검색 영역을 결정할 수도 있다.
도 3 은 본 개시물에 설명된 인트라 블록 복사를 위한 기법들을 사용할 수도 있는 비디오 인코더 (20) 의 예를 예시하는 블록도이다. 비디오 인코더 (20) 는 다른 코딩 표준들에 관하여 본 개시물의 제한 없이, 예시의 목적을 위해 HEVC 코딩의 맥락에서 설명될 것이다. 더욱이, 비디오 인코더 (20) 는 HEVC 의 범위 확장들에 따라 기법들을 구현하도록 구성될 수도 있다.
비디오 인코더 (20) 는 비디오 슬라이스들 내에서 비디오 블록들의 인트라 및 인터 코딩을 수행할 수도 있다. 인트라-코딩은 소정의 비디오 픽처 내의 비디오에서 공간적 리던던시를 감소시키거나 제거하기 위해 공간 예측에 의존한다. 인터-코딩은 비디오 시퀀스의 인접한 픽처들 내에서 비디오에서의 시간적 리던던시를 감소시키거나 제거하고 또는 다른 뷰들에서 비디오와의 리던던시를 감소시키거나 제거하기 위해 시간 예측 또는 인터-뷰 예측에 의존한다.
도 3 의 예에서, 비디오 인코더 (20) 는 비디오 데이터 메모리 (40), 예측 프로세싱 유닛 (42), 레퍼런스 픽처 메모리 (64), 합산기 (50), 변환 프로세싱 유닛 (52), 양자화 프로세싱 유닛 (54), 및 엔트로피 인코딩 유닛 (56) 을 포함한다. 예측 프로세싱 유닛 (42) 은 다시, 모션 추정 유닛 (44), 모션 보상 유닛 (46), 및 인트라-예측 유닛 (48) 을 포함한다. 비디오 블록 복원을 위해, 비디오 인코더 (20) 는 또한, 역 양자화 프로세싱 유닛 (58), 역 변환 프로세싱 유닛 (60), 및 합산기 (62) 를 포함한다. 디블록킹 필터 (도 3 에 도시되지 않음) 는 또한, 복원된 비디오로부터 블록화 아티팩트들을 제거하기 위해 블록 경계들을 필터링하도록 포함될 수도 있다. 원하는 경우, 디블록킹 필터는 통상적으로 합산기 (62) 의 출력을 필터링할 것이다. 추가의 루프 필터들 (인 루프 또는 포스트 루프) 이 또한, 디블록킹 필터에 추가되어 사용될 수도 있다.
비디오 데이터 메모리 (40) 는 비디오 인코더 (20) 의 컴포넌트들에 의해 인코딩될 비디오 데이터를 저장할 수도 있다. 비디오 데이터 메모리 (40) 에 저장된 비디오 데이터는, 예를 들어 비디오 소스 (18) 로부터 획득될 수도 있다. 레퍼런스 픽처 메모리 (64) 는 비디오 인코더 (20) 에 의해 비디오 데이터를 (예를 들어, 인트라-또는 인터-예측 코딩 모드들로도 지칭된, 인트라- 또는 인터-코딩 모드들에서) 인코딩하는데 사용하기 위해 레퍼런스 비디오 데이터를 저장하는 디코딩 픽처 버퍼 (DPB) 의 일 예이다. 비디오 데이터 메모리 (40) 및 레퍼런스 픽처 메모리 (64) 는 다양한 메모리 디바이스들 중 임의의 것, 예컨대 동기식 DRAM (SDRAM) 을 포함하는 동적 랜덤 액세스 메모리 (DRAM), 자기저항 RAM (MRAM), 저항성 RAM (RRAM), 또는 다른 유형들의 메모리 디바이스들에 의해 수행될 수도 있다. 비디오 데이터 메모리 (40) 및 레퍼런스 픽처 메모리 (64) 는 동일한 메모리 디바이스 또는 별개의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에서, 비디오 데이터 메모리 (40) 는 비디오 인코더 (20) 의 다른 컴포넌트들과 온-칩, 또는 이들 컴포넌트들에 대해 오프-칩일 수도 있다.
인코딩 프로세스 동안, 비디오 인코더 (20) 는 코딩될 비디오 픽처 또는 슬라이스를 수신한다. 픽처 또는 슬라이스는 다수의 비디오 블록들로 분할될 수도 있다. 모션 추정 유닛 (44) 및 모션 보상 유닛 (46) 은 하나 이상의 레퍼런스 픽처들에서의 하나 이상의 블록들에 대해 수신된 비디오 블록의 인터-예측 코딩을 수행하여, 시간 압축을 제공하거나 인터-뷰 압축을 제공한다. 인트라-예측 유닛 (48) 은 대안으로, 코딩될 블록과 동일한 픽처 또는 슬라이스에서의 하나 이상의 이웃하는 블록들에 대해 수신된 비디오 블록의 인트라-예측 코딩을 수행하여 공간 압축을 제공할 수도 있다. 비디오 인코더 (20) 는, 예를 들어 비디오 데이터의 각각의 블록에 대한 적합한 코딩 모드를 선택하기 위해 다수의 코딩 과정들을 수행할 수도 있다.
또한, 파티션 유닛 (미도시) 은 이전의 코딩 과정들에서 이전의 파티셔닝 스킴들의 평가에 기초하여, 비디오 데이터의 블록들을 서브-블록들로 파티셔닝할 수도 있다. 예를 들어, 파티션 유닛은 초기에, 픽처 또는 슬라이스를 LCU들로 파티셔닝하고, 이 LCU들 각각을 레이트-왜곡 분석 (예를 들어, 레이트-왜곡 최적화) 에 기초하여 서브-CU들로 파티셔닝할 수도 있다. 예측 프로세싱 유닛 (42) 은 또한, LCU 의 서브-CU 들로의 파티셔닝을 나타내는 쿼드트리 데이터 구조를 생성할 수도 있다. 쿼드트리의 리프-노드 CU들은 하나 이상의 PU들 및 하나 이상의 TU들을 포함할 수도 있다.
예측 프로세싱 유닛 (42) 은, 예를 들어 에러 결과들에 기초하여 코딩 모드들, 인트라 또는 인터 중 하나를 선택하고, 이 결과의 인트라- 또는 인터-코딩된 블록을 합산기 (50) 에 제공하여 잔여 블록 데이터를 생성하며, 합산기 (62) 에 제공하여 레퍼런스 픽처로서 사용하기 위한 인코딩된 블록을 복원할 수도 있다. 예측 프로세싱 유닛 (42) 은 또한, 신택스 엘리먼트들, 예컨대 모션 벡터들, 인트라-모드 표시자들, 파티션 정보, 및 다른 이러한 신택스 정보를 엔트로피 인코딩 유닛 (56) 에 제공한다.
모션 추정 유닛 (44) 및 모션 보상 유닛 (46) 은 고도로 통합될 수도 있지만, 개념적 목적들을 위해 별개로 예시되어 있다. 모션 추정 유닛 (44) 에 의해 수행된 모션 추정은 모션 벡터들을 생성하는 프로세스이며, 이 모션 벡터들은 비디오 블록들에 대한 모션을 추정한다. 모션 벡터는, 예를 들어 현재 비디오 픽처 (또는 다른 코딩된 유닛) 내에서 코딩되고 있는 현재 블록에 대해 레퍼런스 픽처 (또는 다른 코딩된 유닛) 내에서 예측 블록에 대해 현재 비디오 픽처 내의 비디오 블록의 PU 의 변위를 나타낼 수도 있다. 예측 블록은 픽셀 차이의 관점에서 코딩될 블록과 밀접하게 일치하도록 비디오 인코더 (20) 에 의해 발견되는 블록이고, 픽셀 차이는 절대 차의 합 (SAD), 제곱 차의 합 (SSD), 또는 다른 차이 메트릭들에 의해 결정될 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 레퍼런스 픽처 메모리 (64) 에 저장된 레퍼런스 픽처들의 서브-정수 픽셀 포지션들에 대한 값들을 계산할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 레퍼런스 픽처의 1/4 픽셀 포지션들, 1/8 픽셀 포지션들, 또는 다른 분수 픽셀 포지션들의 값들을 보간할 수도 있다. 따라서, 모션 추정 유닛 (44) 은 전픽셀 (full pixel) 포지션들 및 분수 픽셀 포지션들에 대한 모션 검색을 수행하고, 분수-픽셀 정확도를 갖는 모션 벡터를 출력한다.
모션 추정 유닛 (44) 은 PU 의 포지션을 레퍼런스 픽처의 예측 블록의 포지션에 비교함으로써 인터-코딩된 슬라이스에서의 비디오 블록의 PU 에 대한 모션 벡터를 계산한다. 레퍼런스 픽처는 레퍼런스 픽처 메모리 (64) 에 저장된 하나 이상의 레퍼런스 픽처들을 식별하는 하나 이상의 레퍼런스 픽처 리스트들 (RPLs) 로부터 선택될 수도 있다. 모션 추정 유닛 (44) 은 계산된 모션 벡터를 엔트로피 인코딩 유닛 (56) 및 모션 보상 유닛 (46) 으로 전송한다. 일부 예들에서, 모션 추정 유닛 (44) 은 선택된 레퍼런스 픽처의 표시를 엔트로피 인코딩 유닛 (56) 으로 전송할 수도 있다.
위에서 논의된 바와 같이, 모션 추정 유닛 (44) 은 선택된 레퍼런스 픽처의 표시를 엔트로피 인코딩 유닛 (56) 으로 전송할 수도 있다. 일부 예들에서, 모션 추정 유닛 (44) 은 RPL 내의 선택된 레퍼런스 픽처의 인덱스 값을 전송함으로써 표시를 전송할 수도 있다.
일부 예들에서, 레퍼런스 픽처들과 다른 픽처들을 사용하기 위해 인터-예측을 제한하는 것에 대조적으로, 모션 추정 유닛 (44) 은 현재 픽처에 포함된 비디오 데이터의 블록들을 예측하기 위해 레퍼런스 픽처로서 현재 픽처를 사용할 수도 있다. 예를 들어, 모션 추정 유닛 (44) 은 현재 픽처의 버전을 레퍼런스 픽처 메모리 (64) 에 저장할 수도 있다. 일부 예들에서, 모션 추정 유닛 (44) 은 고정된 값으로 초기화된 픽셀 값들을 갖는 현재 픽처의 초기화된 버전을 저장할 수도 있다. 일부 예들에서, 고정된 값은 현재 픽처의 샘플들의 비트 심도에 기초할 수도 있다. 예를 들어, 고정된 값은 1 ≪ (bitDepth-1) 일 수도 있다. 일부 예들에서, 모션 추정 유닛 (44) 은 현재 픽처의 임의의 블록들을 인코딩하기 전에 현재 픽처의 초기화된 버전을 저장할 수도 있다. 현재 픽처의 초기화된 버전을 저장함으로써, 모션 추정 유닛 (44) 은 이미 복원되는 블록들에 예측 블록들에 대한 검색 (즉, 검색 영역) 을 제한하도록 요구받지 않을 수도 있다. 반대로, 모션 추정 유닛 (44) 이 현재 픽처의 초기화된 버전을 저장하지 않으면, 예측 블록들의 검색은, 예를 들어 디코더/인코더 불일치를 회피하기 위해 이미 복원되는 블록들에 제약될 수도 있다.
예측 프로세싱 유닛 (42) 은 현재 픽처에 대한 하나 이상의 RPL들을 생성할 수도 있다. 예를 들어, 예측 프로세싱 유닛 (42) 은 현재 픽처에 대한 RPL 에서 현재 픽처를 포함할 수도 있다.
위에서 논의된 바와 같이, 비디오 데이터의 현재 픽처의 비디오 데이터의 블록을 인코딩할 때, 모션 추정 유닛 (44) 은 현재 블록에 밀접하게 일치하는 예측 블록을 선택할 수도 있다. 일부 예들에서, 다른 픽처들의 블록들을 검색하는 것과 대조적으로 (또는 이에 추가하여), 모션 추정 유닛 (44) 은 현재 픽처의 현재 블록에 대한 예측 블록으로서 사용하기 위해 현재 픽처에 위치된 블록을 선택할 수도 있다. 예를 들어, 모션 추정 유닛 (44) 은 현재 픽처를 포함하는, 하나 이상의 레퍼런스 픽처들을 포함하는 픽처들 상에서 검색을 수행할 수도 있다. 각각의 픽처에 대해, 모션 추정 유닛 (44) 은, 예를 들어 절대 차의 합 (SAD), 제곱 차의 합 (SSD), 평균 절대 차이 (MAD), 평균 제곱 차이 (MSD) 등을 픽셀별로 사용하여, 예측된 블록이 현재 블록에 어떻게 잘 일치하는지를 반영하는 검색 결과들을 계산할 수도 있다. 그 후, 모션 추정 유닛 (44) 은 현재 블록에 대해 최선의 일치를 갖는 픽처에서 블록을 식별하고, (현재 픽처일 수도 있는) 픽처 및 블록의 포지션을 예측 프로세싱 유닛 (42) 에 나타낼 수도 있다. 이 방식으로, 모션 추정 유닛 (44) 은, 예를 들어 모션 추정 유닛 (44) 이 예측자 블록이 현재 픽처, 즉 예측되고 있는 현재 블록과 동일한 픽처에 포함된다는 것을 결정하는 경우, 인트라 BC 를 수행할 수도 있다.
일부 예들에서, 인트라 BC 에 대한 예측자 블록이 유효하다는 것을 확실히 하기 위해, RExt WD 7 은 예측 프로세싱 유닛 (42) 이 하나 이상의 비트스트림 순응 제약들을 강요한다는 것을 제공한다. 일 예로서, 예측 프로세싱 유닛 (42) 은, 예측자 블록이 현재 CU 와 동일한 슬라이스/타일 내에 있다는 것을 보장할 수도 있다. 다른 예로서, 예측 프로세싱 유닛 (42) 은, 레퍼런스 블록이 현재 CU 와 오버랩할 수 없다는 것을 보장할 수도 있다. 다른 예로서, 예측 프로세싱 유닛 (42) 은, 예측자 블록 내의 모든 픽셀들이 복원되어야 한다는 것을 보장할 수도 있다. 다른 예로서, http://phenix.it- sudparis.eu/jct/doc_end_user/documents/19_Strasbourg/wg11/JCTVC-S0220-v2.zip 에서 입수 가능한, Rapaka 등의, "On parallel processing capability of intra block copy", ISO/IEC JTC 1/SC 29/WG 11 및 ITU-T SG 16 WP 3 의 JCT-VC (Joint Collaborative Team on Video Coding), 19차 회의: 프랑스, 스트라스부르, 2014년 10월 17-24일, 문헌: JCTVC-S0220 에 설명된 바와 같이, 예측 프로세싱 유닛 (42) 은, 예측자 블록이 병렬화 구현 고려사항들로 인해 소정 영역 내에 있다는 것을 보장할 수도 있다. 다른 예로서, 제약된 인트라 예측이 인에이블되는 경우, 예측 프로세싱 유닛 (42) 은, 예측자 블록이 종래의 인터 모드로 코딩된 임의의 픽셀을 포함하지 않는다는 것을 보장할 수도 있다. 다른 예로서, 예측 프로세싱 유닛 (42) 은, 예측을 위해 사용된 모션이 보간을 회피하기 위해 정수-픽셀 정확도를 갖는다는 것을 보장할 수도 있다.
일부 예들에서, 정수-픽셀 정확도를 항상 사용하는 것과 대조적으로, 예측 프로세싱 유닛 (42) 은 상이한 레벨들의 정확도로 모션 벡터를 결정할 수도 있다. 예를 들어, 예측 프로세싱 유닛 (42) 은 정수 정확도, 디폴트 정확도, 또는 초미세 모션 정확도 (예를 들어, HEVC 에서 1/4 픽셀 ("pel") 정확도) 로 모션 벡터를 결정할 수도 있다. 일부 예들에서, 예측 프로세싱 유닛 (42) 은, 예를 들어 현재 픽처에 의해 지칭된 SPS 또는 VPS 에서 코딩된 인트라 BC 모션 벡터들의 정확도를 나타내는 신택스 엘리먼트를 인코딩할 수도 있다. 일부 예들에서, 인트라 BC 모션 벡터들의 정확도는 픽셀 레벨에 적응적일 수도 있고, 예측 프로세싱 유닛 (42) 은, 엔트로피 인코딩 유닛 (56) 으로 하여금 예를 들어 현재 블록에 의해 지칭된 PPS 또는 슬라이스에서 코딩된 인트라 BC 모션 벡터들의 정확도를 나타내는 신택스 엘리먼트를 인코딩하게 할 수도 있다. 예를 들어, SCC 에 대한 일부 제안들에서, 적응적 MV 레졸루션 (AMVR) 이 사용된다. 예를 들어, http://phenix.it-sudparis.eu/jct/doc_end_user/documents/19_Strasbourg/wg11/JCTVC-S0085-v3.zip에서 이용 가능한, Li 등의, "Adaptive motion vector resolution for screen content", ISO/IEC JTC 1/SC 29/WG 11 및 ITU-T SG 16 WP 3 의 JCT-VC (Joint Collaborative Team on Video Coding), 19차 회의: 프랑스, 스트라스부르, 2014년 10월 17-24일, 문헌: JCTVC-S0085 에 설명된 바와 같이, 각각의 슬라이스에 대해, MV 는 정수-픽셀 레졸루션 또는 쿼터-픽셀 레졸루션 중 어느 하나로 표현 및 코딩될 수 있고, 플래그 use_integer_mv_flag 는 어느 모션 벡터 레졸루션이 사용되는지를 나타내도록 슬라이스 헤더에서 시그널링된다.
일부 예들, 예컨대 모션 벡터가 정수-픽셀 레졸루션을 갖는 경우에서, 모션 벡터에 의해 식별된 샘플 픽셀 값들은 정수-픽셀 포지션들에 있을 수도 있고, 따라서 예측 프로세싱 유닛 (42) 은 보간 없이 샘플 픽셀 값들에 액세스할 수도 있다. 예측 프로세싱 유닛 (42) 이 보간 없이 샘플 픽셀들에 액세스할 수도 있기 때문에, 예측 프로세싱 유닛 (42) 은 모션 벡터가 정수-픽셀 레졸루션을 갖는 현재 블록을 예측하도록 예측자 블록 내에 위치된 샘플 픽셀 값들만을 사용할 수도 있다. 일부 예들, 예컨대 모션 벡터가 분수-픽셀 레졸루션을 갖는 경우에서, 모션 벡터에 의해 식별된 샘플 픽셀 값들은 정수-픽셀 포지션들에 있지 않을 수도 있고, 따라서 예측 프로세싱 유닛 (42) 은 상기 샘플 픽셀 값들을 구성하기 위해 보간을 수행할 필요가 있을 수도 있다. 일부 예들에서, 샘플 픽셀들을 구성하도록 보간을 수행하기 위해, 예측 프로세싱 유닛 (42) 은 현재 블록을 예측하도록 예측자 블록 내 및 블록 밖의 양자 모두에 위치된 샘플 픽셀 값들을 사용할 필요가 있을 수도 있다. 그러나, 일부 예들에서, 예측 프로세싱 유닛 (42) 이 현재 블록을 예측하기 위해 예측자 블록 밖에 위치된 샘플 픽셀 값들을 사용하는 것이 바람직하지 않을 수도 있다. 예를 들어, 예측자 블록 및 현재 블록이 현재 픽처에 위치되는 경우, 이러한 샘플들이 레퍼런스 픽처 메모리 (64) 에서 이용 가능하지 않을 수도 있기 때문에 (즉, 현재 픽처의 복원된 영역에 위치되지 않을 수도 있기 때문에) 예측 프로세싱 유닛 (42) 이 예측자 블록 밖에 위치된 샘플 픽셀 값들을 사용하는 것이 가능하지 않을 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, 예측 프로세싱 유닛 (42) 은, 예측자 블록에 포함 및 포함되지 않는 샘플들을 포함하는, 보간 프로세스에 대해 사용되는 임의의 샘플들이 전술된 비트스트림 순응 제약들을 충족시키도록 예측자 블록을 결정할 수도 있다. 예를 들어, 모션 추정 유닛 (44) 은 예측자 블록을 식별하는 모션 벡터에 대해 사용될 레졸루션에 기초하여 결정된 검색 영역 내로부터 현재 블록에 대한 예측자 블록을 선택할 수도 있다. 예를 들어, 모션 추정 유닛 (44) 은, 모션 벡터에 대해 사용될 레졸루션이 정수-픽셀 정확도인 경우에서보다 모션 벡터에 대해 사용될 레졸루션이 분수-픽셀 정확도인 경우 더 작은 검색 영역을 사용할 수도 있다. 일 예로서, 모션 벡터에 대해 사용될 레졸루션이 정수-픽셀 정확도인 경우에서, 모션 추정 유닛 (44) 은 현재 픽처의 복원된 영역을 포함하는 초기 검색 영역 내로부터 예측자 블록을 선택할 수도 있다. 다른 예로서, 모션 벡터에 대해 사용될 레졸루션이 분수-픽셀 정확도인 경우, 모션 추정 유닛 (44) 은 감소된 검색 영역 내로부터 예측자 블록을 선택할 수도 있다. 이 방식으로, 모션 추정 유닛 (44) 은, 예측자 블록 밖에 위치된 샘플 픽셀 값들을 포함하는 예측자 블록을 구성하는데 필요한 모든 샘플 픽셀 값들이 예측자 블록에 기초하여 현재 블록을 코딩하는 경우 사용하기 위해 이용 가능하다는 것을 보장할 수도 있다.
위에서 논의된 바와 같이, CU 는 루마 샘플 어레이, Cb 샘플 어레이 및 Cr 샘플 어레이를 갖는 픽처의 크로마 샘플들의 2 개의 대응하는 코딩 블록들 및 루마 샘플들의 코딩 블록을 포함할 수도 있다. 일부 예들에서, 상이한 샘플링 비율들이 루마 샘플들, Cb 샘플들, 및 Cr 샘플들에 대해 사용될 수도 있다. 일반적으로, 샘플링 비율은 3 개의 부분 비율 A:B:C 로서 표현될 수도 있고, 여기서 A 는 수평 샘플링 레퍼런스 (대개 4 인 개념적 영역의 폭) 를 나타내고, B 는 A 픽셀들의 제 1 로우 내의 크로미넌스 (Cr, Cb) 샘플들의 수를 나타내며, C 는 A 픽셀들의 제 1 로우와 제 2 로우 간의 크로미넌스 샘플들 (Cr, Cb) 의 변화들의 수를 나타낸다. 비디오 인코더 (20) 에 의해 사용될 수도 있는 일부 예시의 샘플링 비율들은 4:4:4, 4:2:2, 4:2:0, 및 4:0:0 를 포함하지만, 이에 반드시 제한되지는 않는다. 4:4:4 샘플링 비율을 사용하는 경우, 비디오 인코더 (20) 는 동일한 레이트에서 컴포넌트들 각각을 샘플링할 수도 있다. 4:2:2 샘플링 비율을 사용하는 경우, 비디오 인코더 (20) 는, 수평 크로마 레졸루션이 절반이도록 루마 컴포넌트의 샘플 레이트의 절반에서 크로마 컴포넌트들 (즉, Cb 및 Cr) 을 샘플링할 수도 있다. 4:2:0 샘플링 비율을 사용하는 경우, 비디오 인코더 (20) 는, 수평 및 수직 크로마 레졸루션들 양자 모두가 절반이도록 루마 컴포넌트의 샘플 레이트의 절반에서 그리고 교번하는 라인들에서 크로마 컴포넌트들 (즉, Cb 및 Cr) 을 샘플링할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 샘플링 비율을 나타내는 신택스 엘리먼트 (예를 들어, chroma_format_idc) 를 인코딩할 수도 있다.
일부 예들, 예컨대 샘플링 비율이 4:4:4 인 경우에서, 비디오 인코더 (20) 는 루마 및 크로마 컴포넌트들을 함께 인코딩할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 루마 및 크로마 컴포넌트들을 별개로 인코딩할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는, 루마 및 크로마 컴포넌트들이 함께 또는 별개로 인코딩되는지 여부를 나타내는 신택스 엘리먼트 (예를 들어, separate_colour_plane_flag) 를 인코딩할 수도 있다.
일부 예들, 예컨대 루마 및 크로마 컴포넌트들이 별개로 인코딩되는 경우에서, 비디오 인코더 (20) 는 루마 및 크로마 컴포넌트들에 대한 상이한 모션 벡터들을 사용할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 루마 모션 벡터를 사용하여, 루마 샘플들의 예측 블록을 나타내고 크로마 모션 벡터를 사용하여 크로마 샘플들의 예측 블록을 나타낼 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 루마 모션 벡터 및 크로마 모션 벡터 양자 모두를 인코딩할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는 루마 모션 벡터를 인코딩할 수도 있고, 크로마 모션 벡터는 루마 모션 벡터 및 샘플링 비율에 기초하여 결정될 수도 있다. 예를 들어, 크로마 모션 벡터는 이하의 식들 (1) 및 (2) 에 따라 루마 모션 벡터에 기초하여 결정될 수도 있고, 여기서 MVCHorizontal 및 MVCvertical 은 크로마 모션 벡터의 수평 및 수직 컴포넌트들이고, MVHorizontal 및 MVvertical 은 루마 모션 벡터의 수평 및 수직 컴포넌트들이며, SubWidthC 및 SubHeightC 는 샘플링 비율에 기초하여 표 1 을 사용하여 결정된다.
MVCHorizontal = MVHorizontal * 2 / SubWidthC (1)
MVCVertical = MVVertical * 2 / SubHdghtC (2)
샘플링 비율 SubWidthC SubHeightC
4:2:0 2 2
4:2:2 2 1
4:4:4 1 1
일부 예들에서, 루마 모션 벡터로부터 크로마 모션 벡터의 도출로 인해, 루마 모션 벡터에 대해 사용된 레졸루션은 크로마 모션 벡터에 대해 사용된 레졸루션과 상이할 수도 있다. 예를 들어, 일부 예들에서 루마 모션 벡터는 정수-픽셀 레졸루션을 가질 수도 있고, 크로마 모션 벡터는 분수-픽셀 레졸루션을 가질 수도 있다. 이와 같이, 본 개시물의 하나 이상의 기법들에 따르면, 모션 추정 유닛 (44) 은 크로마 모션 벡터에 대해 사용될 레졸루션에 기초하여 검색 영역의 사이즈를 결정할 수도 있다. 예를 들어, 크로마 모션 벡터에 대해 사용될 레졸루션이 정수-픽셀인 경우에서, 모션 추정 유닛 (44) 은 현재 픽처의 복원된 영역을 포함하는 초기 검색 영역 내로부터 예측자 블록을 선택할 수도 있다. 다른 예로서, 크로마 모션 벡터에 대해 사용될 레졸루션이 분수-픽셀인 경우, 모션 추정 유닛 (44) 은 크로마 모션 벡터의 레졸루션이 정수-픽셀인 경우 사용된 초기 검색 영역보다 더 작은 감소된 검색 영역 내로부터 예측자 블록을 선택할 수도 있다. 이 방식으로, 모션 추정 유닛 (44) 은, 예측자 블록 밖에 위치된 샘플 크로마 픽셀 값들을 포함하는, 예측자 블록을 구성하는데 필요한 모든 샘플 픽셀 값들이 예측자 블록에 기초하여 현재 블록을 코딩하는 경우 사용하기 위해 이용 가능하다는 것을 보장할 수도 있다.
일부 예들에서, 모션 추정 유닛 (44) 은 모든 샘플링 비율들에 대해 감소된 검색 영역을 사용할 수도 있다. 다른 예들에서, 모션 추정 유닛 (44) 은, 크로마 샘플링 대 루마 샘플들의 비율이 1 보다 큰 경우 (예를 들어, 4:2:0, 4:2:2) 감소된 검색 영역을 사용할 수도 있다. 일부 예들에서, 모션 추정 유닛 (44) 은 모노크롬 (즉, 4:0:0 의 샘플링 비율들) 에 대해 감소된 검색 영역을 사용하지 않을 수도 있다. 일부 예들에서, 모션 추정 유닛 (44) 은 모노크롬 외의 모든 샘플링 비율들에 대해 감소된 검색 영역을 사용할 수도 있다.
위에서 논의된 바와 같이, 일부 예들에서 모션 추정 유닛 (44) 은 감소된 검색 영역 내로부터 예측자 블록을 선택할 수도 있다. 일부 예들에서, 모션 추정 유닛 (44) 은 초기 검색 영역의 우측 및 하부 경계들로부터 M (예를 들어, 1, 2, 3, 4, 5, 6, 7, 8) 개의 샘플들만큼 초기 검색 영역의 사이즈를 감소시키고 초기 검색 영역의 상부 및 좌측 경계들로부터 N (예를 들어, 1, 2, 3, 4, 5, 6, 7, 8) 개의 샘플들만큼 초기 검색 영역의 사이즈를 감소시킴으로써 감소된 검색 영역을 결정할 수도 있다. 모션 추정 유닛 (44) 이 감소된 검색 영역을 결정할 수도 있는 방법의 추가의 상세들 및 다른 예들은 도 6 내지 도 8 을 참조하여 이하에서 논의된다.
모션 보상 유닛 (46) 에 의해 수행된 모션 보상은 모션 추정 유닛 (44) 에 의해 결정된 모션 벡터에 기초하여 예측 블록의 페치 또는 생성하는 것을 수반할 수도 있다. 다시, 모션 추정 유닛 (44) 및 모션 보상 유닛 (46) 은 일부 예들에서, 기능적으로 통합될 수도 있다. 현재 블록의 PU 에 대한 모션 벡터를 수신 시에, 모션 보상 유닛 (46) 은 레퍼런스 픽처 리스트 (RPL) 들 중 하나에 모션 벡터가 가리키는 예측 블록을 위치시킬 수도 있다. 합산기 (50) 는, 이하에서 논의되는 바와 같이, 픽셀 차이 값들을 형성하고 코딩되고 있는 현재 블록의 픽셀 값들로부터 예측 블록의 픽셀 값들을 감산함으로써 잔여 비디오 블록을 형성한다. 일반적으로, 모션 추정 유닛 (44) 은 루마 컴포넌트들에 대해 모션 추정을 수행하고, 모션 보상 유닛 (46) 은 크로마 컴포넌트들 및 루마 컴포넌트들 양자 모두에 대한 루마 컴포넌트들에 기초하여 계산된 모션 벡터들을 사용한다. 예측 프로세싱 유닛 (42) 은 또한, 비디오 슬라이스의 비디오 블록들을 디코딩함에 있어서 비디오 디코더 (30) 에 의한 사용을 위해 비디오 슬라이스 및 비디오 블록들과 연관된 신택스 엘리먼트들을 생성할 수도 있다.
인트라-예측 유닛 (48) 은, 전술된 바와 같이 모션 추정 유닛 (44) 및 모션 보상 유닛 (46) 에 의해 수행된 인터-예측에 대한 대안으로서, 현재 블록을 인트라-예측할 수도 있다. 특히, 인트라-예측 유닛 (48) 은 현재 블록을 인코딩하는데 사용할 인트라-예측 모드를 결정할 수도 있다. 일부 예들에서, 인트라-예측 유닛 (48) 은, 예를 들어 별개의 인코딩 과정들 동안 다양한 인트라-예측 모드들을 사용하여 블록들을 인코딩할 수도 있고, 인트라-예측 유닛 (48) 은 복수의 인트라-예측 모드들로부터 사용하기 위해 적합한 인트라-예측 모드를 선택할 수도 있다.
예를 들어, 인트라-예측 유닛 (48) 은 다양한 테스트된 인트라-예측 모드들에 대한 레이트-왜곡 분석을 사용하여 레이트-왜곡 값들을 계산하고, 테스트된 모드들 중에서 최선의 레이트-왜곡 특성들을 갖는 인트라-예측 모드를 선택할 수도 있다. 레이트-왜곡 분석은 일반적으로 인코딩된 블록과 오리지널 블록 간의 왜곡 (또는 에러) 의 양, 인코딩된 블록을 생성하도록 인코딩된 인코딩되지 않은 블록, 뿐만 아니라 인코딩된 블록을 생성하는데 사용된 비트레이트 (즉, 비트들의 수) 를 결정한다. 인트라-예측 유닛 (48) 은 왜곡들로부터의 비율들 및 다양한 인코딩된 블록들에 대한 레이트들을 계산하여 어느 인트라-예측 모드가 블록에 대한 최선의 레이트-왜곡 값을 보이는지를 결정할 수도 있다.
일부 예들에서, 인트라-예측 유닛 (48) 에 의해 사용하기에 이용 가능한 복수의 인트라-예측 모드들은 평면 예측 모드, DC 예측 모드, 및 하나 이상의 각 예측 모드들을 포함할 수도 있다. 선택된 모드에 관계 없이, 인트라-예측 유닛 (48) 은 항상, 현재 블록에 인접한 복원된 블록들에 기초하여 현재 블록을 예측할 수도 있다. 일 예로서, 평면 예측 모드를 사용하는 경우, 인트라-예측 유닛 (48) 은 수평 및 수직 예측들을 평균함으로써 현재 블록을 예측할 수도 있다. 일부 예들에서, 인트라-예측 유닛 (48) 은 (우측 이웃 블록의 샘플들이 현재 블록을 예측하는 경우 복원되지 않을 수도 있기 때문에) 좌측 이웃 블록 및 상부-우측 이웃 블록에 기초하여 수평 예측들을 결정할 수도 있고, (하부 이웃 블록의 샘플들이 현재 블록을 예측하는 경우 복원되지 않을 수도 있기 때문에) 상부 이웃 블록 및 하부-좌측 이웃 블록에 기초하여 수직 예측들을 결정할 수도 있다.
다른 예로서, DC 예측 모드를 사용하는 경우, 인트라-예측 유닛 (48) 은 상수 값으로 현재 블록의 샘플들을 예측할 수도 있다. 일부 예들에서, 상수 값은 좌측-이웃 블록 내의 샘플들 및 상부 이웃 블록 내의 샘플들의 평균을 나타낼 수도 있다. 다른 예로서, 하나 이상의 각 예측 모드들 중 하나를 사용하는 경우, 인트라-예측 유닛 (48) 은 예측 방향에 의해 표시된 이웃 블록으로부터 샘플들에 기초하여 현재 블록의 샘플들을 예측할 수도 있다.
비디오 인코더 (20) 는 코딩되고 있는 오리지널 비디오 블록으로부터 예측 프로세싱 유닛 (42) 으로부터의 예측 데이터를 감산함으로써 잔여 비디오 블록을 형성한다. 합산기 (50) 는 이 감산 동작을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다.
변환 프로세싱 유닛 (52) 은 변환, 예컨대 이산 코사인 변환 (DCT) 또는 개념적으로 유사한 변환을 잔여 블록에 적용하여, 잔여 변환 계수 값들을 포함하는 비디오 블록을 생성한다. 변환 프로세싱 유닛 (52) 은 개념적으로 DCT 와 유사한 다른 변환들을 수행할 수도 있다. 웨이블릿 변환들, 정수 변환들, 서브-대역 변환들 또는 다른 유형들의 변환들이 또한 사용될 수 있다. 임의의 경우에서, 변환 프로세싱 유닛 (52) 은 잔여 블록에 변환을 적용하여, 잔여 변환 계수들의 블록을 생성한다. 변환은 픽셀 값 도메인에서 변환 도메인, 예컨대 주파수 도메인으로 잔여 정보를 컨버팅할 수도 있다.
변환 프로세싱 유닛 (52) 은 결과적인 변환 계수들을 양자화 프로세싱 유닛 (54) 으로 전송할 수도 있다. 양자화 프로세싱 유닛 (54) 은 변환 계수들을 양자화하여 비트 레이트를 더 감소시킬 수도 있다. 양자화 프로세스는 계수들의 일부 또는 전부와 연관된 비트 심도를 감소시킬 수도 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 변경될 수도 있다. 일부 예들에서, 양자화 프로세싱 유닛 (54) 은 그 후, 양자화된 변환 계수들을 포함하는 매트릭스의 스캔을 수행할 수도 있다. 대안으로, 엔트로피 인코딩 유닛 (56) 은 스캔을 수행할 수도 있다.
양자화 다음에, 엔트로피 인코딩 유닛 (56) 은 양자화된 변환 계수들을 엔트로피 코딩한다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 콘텍스트 적응 이진 산술 코딩 (CABAC), 콘텍스트 적응 가변 길이 코딩 (CAVLC), 신택스 기반 콘텍스트 적응 이진 산술 코딩 (SBAC), 확률 구간 파티셔닝 엔트로피 (PIPE) 코딩 또는 다른 엔트로피 코딩 기법을 수행할 수도 있다. 콘텍스트-기반 엔트로피 코딩의 경우에서, 콘텍스트는 이웃하는 블록들에 기초할 수도 있다. 엔트로피 인코딩 유닛 (56) 에 의한 엔트로피 코딩 다음에, 인코딩된 비트스트림은 다른 디바이스 (예를 들어, 비디오 디코더 (30)) 로 송신되거나 나중의 송신 또는 취출을 위해 아키이빙될 수도 있다.
역 양자화 프로세싱 유닛 (58) 및 역 변환 프로세싱 유닛 (60) 은, 각각 역 양자화 및 역 변환을 적용하여, 예를 들어 레퍼런스 블록으로서 추후 사용을 위해 픽셀 도메인에서 잔여 블록을 복원한다.
모션 보상 유닛 (46) 은 또한, 모션 추정에서 사용하기 위한 서브-정수 픽셀 값들을 계산하기 위해 레퍼런스 블록에 하나 이상의 보간 필터들을 적용할 수도 있다. 합산기 (62) 는 복원된 잔여 블록을 모션 보상 유닛 (46) 에 의해 생성된 모션 보상된 예측 블록에 가산하여 레퍼런스 픽처 메모리 (64) 에 저장하기 위한 복원된 비디오 블록을 생성한다. 복원된 비디오 블록은 후속하는 비디오 픽처에서 블록을 인터-코딩하기 위한 레퍼런스 블록으로서 모션 추정 유닛 (44) 및 모션 보상 유닛 (46) 에 의해 사용될 수도 있다. 일부 예들, 예컨대 현재 픽처가 현재 픽처를 예측하기 위해 레퍼런스 픽처로서 사용되는 경우에서, 모션 보상 유닛 (46) 및/또는 합산기 (62) 는 현재 픽처를 코딩하는 동안 규칙적인 인터벌들로 레퍼런스 픽처 메모리 (64) 에 의해 저장된 현재 픽처의 버전을 업데이트할 수도 있다. 일 예로서, 모션 보상 유닛 (46) 및/또는 합산기 (62) 는 현재 픽처의 각각의 블록을 코딩한 후에, 레퍼런스 픽처 메모리 (64) 에 의해 저장된 현재 픽처의 버전을 업데이트할 수도 있다. 예를 들어, 현재 블록의 샘플들이 초기화된 값들로서 레퍼런스 픽처 메모리 (64) 에 저장되는 경우, 모션 보상 유닛 (46) 및/또는 합산기 (62) 는 현재 블록에 대한 복원된 샘플들로 레퍼런스 픽처 메모리 (64) 에 저장된 현재 픽처의 현재의 샘플들을 업데이트할 수도 있다.
필터링 유닛 (미도시) 은 다양한 필터링 프로세스들을 수행할 수도 있다. 예를 들어, 필터링 유닛은 디블록킹을 수행할 수도 있다. 즉, 필터링 유닛은 복원된 비디오의 프레임 또는 슬라이스를 형성하는 복수의 복원된 비디오 블록들을 수신하고, 블록 경계들을 필터링하여 슬라이스 또는 프레임으로부터 블록화 아티팩트들을 제거할 수도 있다. 일 예에서, 필터링 유닛은 소위 비디오 블록의 "경계 강도" 를 평가한다. 비디오 블록의 경계 강도에 기초하여, 비디오 블록의 에지 픽셀들은, 하나의 비디오 블록으로부터의 트랜지션이 뷰어들이 감지하기에 더 어렵도록 인접한 비디오 블록의 에지 픽셀들에 대하여 필터링될 수도 있다.
일부 예들에서, 모션 보상 유닛 (46) 및/또는 합산기 (62) 는, 필터링이 샘플들에 필터링 (예를 들어, 디블록킹, 적응적 루프 필터링 (ALF) 및/또는 샘플 적응적 오프셋 (SAO)) 을 수행하기 전에 레퍼런스 픽처 메모리 (64) 에 의해 저장된 현재 픽처의 버전을 업데이트할 수도 있다. 예를 들어, 필터링 유닛은, 전체 픽처가 필터링을 적용하기 전에 코딩될 때까지 대기할 수도 있다. 이 방식으로, 모션 추정 유닛 (44) 은 필터링을 적용하기 전에 레퍼런스로서 현재 픽처를 사용할 수도 있다. 일부 예들에서, 필터링 유닛은, 레퍼런스 픽처 메모리 (64) 에 의해 저장된 현재 픽처의 버전이 업데이트될 때 필터링을 수행할 수도 있다. 예를 들어, 필터링 유닛은, 각각의 블록이 업데이트될 때 필터링을 적용할 수도 있다. 이 방식으로, 모션 추정 유닛 (44) 은 필터링을 적용한 후에 레퍼런스로서 현재 픽처를 사용할 수도 있다.
본 기법의 다수의 상이한 양태들 및 예들이 본 개시물에 설명되지만, 본 기법들의 다양한 양태들 및 예들은 함께 또는 서로로부터 별개로 수행될 수도 있다. 다시 말해, 이 기법들은 전술된 다양한 양태들 및 예들에 엄격히 제한되지 않아야 하지만, 결합하여 사용되거나 또는 함께 및/또는 별개로 수행될 수도 있다. 또한, 소정의 기법들이 비디오 인코더 (20) 의 소정 유닛들 (예컨대, 인트라-예측 유닛 (48), 모션 보상 유닛 (46), 또는 엔트로피 인코딩 유닛 (56)) 에 속하는 것으로 생각될 수도 있지만, 비디오 인코더 (20) 의 하나 이상의 다른 유닛들은 이러한 기법들을 수행하는 것을 또한 담당할 수도 있다는 것이 이해되어야 한다.
이 방식으로, 비디오 인코더 (20) 는 본 개시물에 설명된 하나 이상의 예시의 기법들을 구현하도록 구성될 수도 있다. 예를 들어, 비디오 인코더 (20) 는 현재 픽처, 즉 동일한 픽처에 포함된 예측자 블록을 사용하여 현재 픽처 내의 비디오 데이터의 블록을 코딩하도록 구성될 수도 있다. 비디오 인코더 (20) 는 또한, VPS/SPS/PPS 를 참조하는 픽처가, 예를 들어 인트라 BC 를 사용하여 현재 픽처의 하나 이상의 블록들을 코딩하기 위한 목적을 위해 픽처 그 자체의 레퍼런스 픽처 리스트에 존재할 수도 있는지 또는 없는지 여부를 나타내는 신택스 엘리먼트를 포함하는 비트스트림을 출력하도록 구성될 수도 있다. 즉, 블록이 인트라 BC 모드를 사용하여 코딩되는 경우, (현재 픽처가 레퍼런스 픽처 리스트에 그 자체에 대해 포함될 수도 있다는 것을 신택스 엘리먼트가 표시한다고 가정하는) 비디오 인코더 (20) 는, 인덱스 값이 픽처 그 자체에 대응하도록 예를 들어 레퍼런스 픽처 리스트 안의 인덱스 값을 사용하여, 블록에 대한 레퍼런스 픽처가 블록을 포함하는 픽처라는 것을 시그널링할 수도 있다. 비디오 인코더 (20) 는 인트라 BC 모드를 사용하여 코딩되는 블록의 모션 정보에서 이 인덱스 값을 포함할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 의 하드웨어 아키텍처는 현재 픽처의 현재 블록을 예측하기 위해 레퍼런스 픽처로서 현재 픽처를 사용하기 위해 특별히 적응되거나 또는 적응되지 않을 수도 있다.
도 4 는 본 개시물에서 설명된 기법들을 구현할 수도 있는 예시의 비디오 디코더 (30) 를 예시하는 블록도이다. 다시, 비디오 디코더 (30) 는 다른 코딩 표준들에 관하여 본 개시물의 제한 없이, 예시의 목적을 위해 HEVC 코딩의 맥락에서 설명될 것이다. 더욱이, 비디오 디코더 (30) 는 범위 확장들에 따라 기법들을 구현하도록 구성될 수도 있다.
도 4 의 예에서, 비디오 디코더 (30) 는 비디오 데이터 메모리 (69), 엔트로피 디코딩 유닛 (70), 예측 프로세싱 유닛 (71), 역 양자화 프로세싱 유닛 (76), 역 변환 프로세싱 유닛 (78), 합산기 (80), 및 레퍼런스 픽처 메모리 (82) 를 포함할 수도 있다. 예측 프로세싱 유닛 (71) 은 모션 보상 유닛 (72) 및 인트라 예측 유닛 (74) 을 포함한다. 비디오 디코더 (30) 는, 일부 예들에서 도 3 의 비디오 인코더 (20) 에 대해 설명된 인코딩 과정에 일반적으로 상반되는 디코딩 과정을 수행할 수도 있다.
비디오 데이터 메모리 (69) 는 비디오 디코더 (30) 의 컴포넌트들에 의해 디코딩될 비디오 데이터, 예컨대 인코딩된 비디오 비트스트림을 저장할 수도 있다. 비디오 데이터 메모리 (69) 에 저장된 비디오 데이터는, 예를 들어 저장 디바이스 (34) 로부터, 예를 들어 카메라와 같은 로컬 비디오 소스로부터, 비디오 데이터의 유선 또는 무선 네트워크 통신을 통해, 또는 물리적 데이터 저장 매체에 액세스함으로써 획득될 수도 있다. 비디오 데이터 메모리 (69) 는 인코딩된 비디오 비트스트림으로부터 인코딩된 비디오 데이터를 저장하는 코딩된 픽처 버퍼 (CPB) 를 형성할 수도 있다.
레퍼런스 픽처 메모리 (82) 는 (예를 들어, 인트라- 또는 인터-코딩 모드들에서) 비디오 디코더 (30) 에 의해 비디오 데이터를 디코딩하는데 사용하기 위해 레퍼런스 비디오 데이터를 저장하는 디코딩된 픽처 버퍼 (DPB) 의 일 예이다. 비디오 데이터 메모리 (69) 및 레퍼런스 픽처 메모리 (82) 는 다양한 메모리 디바이스들 중 임의의 것, 예컨대 동기식 DRAM (SDRAM) 을 포함하는 동적 랜덤 액세스 메모리 (DRAM), 자기저항 RAM (MRAM), 저항성 RAM (RRAM), 또는 다른 유형들의 메모리 디바이스들에 의해 수행될 수도 있다. 비디오 데이터 메모리 (69) 및 레퍼런스 픽처 버퍼 (82) 는 동일한 메모리 디바이스 또는 별개의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에서, 비디오 데이터 메모리 (69) 는 비디오 디코더 (30) 의 다른 컴포넌트들과 온-칩, 또는 이들 컴포넌트들에 대한 오프-칩일 수도 있다.
디코딩 프로세스 동안, 비디오 디코더 (30) 는 비디오 인코더 (20) 로부터 인코딩된 비디오 슬라이스의 비디오 블록들 및 연관된 신택스 엘리먼트들을 표현하는 인코딩된 비디오 비트스트림을 수신한다. 비디오 디코더 (30) 의 엔트로피 디코딩 유닛 (70) 은 비트스트림을 엔트로피 디코딩하여 양자화된 계수들, 모션 벡터들 또는 인트라-예측 모드 표시자들, 및 다른 신택스 엘리먼트들을 생성한다. 엔트로피 디코딩 유닛 (70) 은 모션 벡터들 및 다른 신택스 엘리먼트들을 모션 보상 유닛 (72) 으로 포워딩한다. 비디오 디코더 (30) 는 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 신택스 엘리먼트들을 수신할 수도 있다.
일부 예들에서, 비디오 슬라이스가 인트라-코딩된 (I) 슬라이스로서 코딩되는 경우, 인트라-예측 유닛 (74) 은 현재 픽처의 이전에 디코딩된 블록들로부터의 데이터 및 시그널링된 인트라 예측 모드에 기초하여 현재의 비디오 슬라이스의 비디오 블록에 대한 예측 데이터를 생성할 수도 있다. 일부 예들에서, 비디오 픽처가 인터-코딩된 (즉, B 또는 P) 슬라이스로서 코딩되는 경우, 모션 보상 유닛 (72) 은 엔트로피 디코딩 유닛 (70) 으로부터 수신된 다른 신택스 엘리먼트들 및 모션 벡터들에 기초하여 현재 비디오 슬라이스의 비디오 블록에 대한 예측 블록들을 생성한다. 예측 블록들은 레퍼런스 픽처 리스트 (RPL) 들 중 하나 내에서 레퍼런스 픽처들 중 하나로부터 생성될 수도 있다. 예측 프로세싱 유닛 (71) 은, 레퍼런스 픽처 메모리 (82) 에 저장된 레퍼런스 픽처들에 기초하여 구성 기법들을 사용하여 RPL들, 예를 들어 List 0 및 List 1 을 구성할 수도 있다.
일부 예들에서, 레퍼런스 픽처들과 다른 픽처들을 사용하기 위해 인터-예측을 제한하는 것에 대조적으로, 비디오 디코더 (30) 는 현재 픽처에 포함된 비디오 데이터의 블록들을 예측하기 위해 레퍼런스 픽처로서 현재 픽처를 사용할 수도 있다. 예를 들어, 예측 프로세싱 유닛 (71) 은 예측 프로세싱 유닛 (71) 에 현재 픽처의 버전을 저장할 수도 있다. 일부 예들에서, 예측 프로세싱 유닛 (71) 은 고정된 값으로 초기화된 픽셀 값들로 현재 픽처의 초기화된 버전을 저장할 수도 있다. 일부 예들에서, 고정된 값은 현재 픽처의 샘플들의 비트 심도에 기초할 수도 있다. 예를 들어, 고정된 값은 1 ≪ (bitDepth-1) 일 수도 있다. 일부 예들에서, 예측 프로세싱 유닛 (71) 은 현재 픽처의 임의의 블록들을 인코딩하기 전에 현재 픽처의 초기화된 버전을 저장할 수도 있다. 현재 픽처의 초기화된 버전을 저장함으로써, 예측 프로세싱 유닛 (71) 은 아직 복원되지 않은 예측 블록들을 사용할 수도 있다. 반대로, 예측 프로세싱 유닛 (71) 이 현재 픽처의 초기화된 버전을 저장하지 않으면, 이미 복원되는 블록들 만이 예측자 블록들로서 (즉, 디코더/인코더 불일치를 회피하기 위해) 사용될 수도 있다.
위에서 논의된 바와 같이, 예측 프로세싱 유닛 (71) 은 현재 픽처에 대한 하나 이상의 RPL들을 생성할 수도 있다. 예를 들어, 예측 프로세싱 유닛 (71) 은 현재 픽처 및 현재 픽처에 대한 RPL 를 포함할 수도 있다.
위에서 논의된 바와 같이, 비디오 디코더 (30) 는 예측 블록에 기초하여 비디오 데이터의 현재 픽처의 비디오 데이터의 블록을 디코딩할 수도 있다. 일부 예들에서, 모션 보상 유닛 (72) 은 현재 픽처의 현재 블록에 대한 예측 블록으로서 사용하기 위해 현재 픽처에 위치된 블록을 선택할 수도 있다. 특히, 예측 프로세싱 유닛 (71) 은 현재 블록에 대해, 현재 픽처를 포함하는 RPL 을 구성할 수도 있고, 모션 보상 유닛 (72) 은 RPL 에서 인덱스를 나타내는 현재 블록에 대한 모션 파라미터들을 수신할 수도 있다. 일부 예들에서, 인덱스는 RPL 에서 현재 픽처를 식별할 수도 있다. 이것이 발생하는 경우, 모션 보상 유닛 (72) 은 현재 블록에 대해 모션 벡터에 의해 식별된 포지션에서 현재 픽처 그 자체로부터 예측자 블록을 추출하도록 모션 파라미터들에 포함된 모션 벡터를 사용할 수도 있다. 이 방식으로, 모션 보상 유닛 (72) 은 인트라 BC 를 수행할 수도 있다.
예측 프로세싱 유닛 (71) 은 비디오 데이터의 현재 블록과 비디오 데이터의 예측자 블록 간의 변위를 나타내는 모션 벡터를 결정할 수도 있다. 일부 예들에서, 예측 프로세싱 유닛 (71) 은 인코딩된 비디오 비트스트림에서 수신된 하나 이상의 신택스 엘리먼트들에 기초하여 모션 벡터를 결정할 수도 있다. 일부 예들에서, 예측 프로세싱 유닛 (71) 은 정수 정확도로 모션 벡터를 결정할 수도 있다. 이러한 예들, 예컨대 현재 픽처가 장기 (long-term) 레퍼런스 픽처로서 마킹되는 경우에서, 예측 프로세싱 유닛 (71) 은 현재 픽처를 예측하기 위해 정규 장기 레퍼런스 픽처들 (즉, 현재 픽처가 아닌 장기 레퍼런스 픽처들) 을 사용하지 않을 수도 있다.
일부 예들에서, 예측 프로세싱 유닛 (71) 은 상이한 레벨들의 정확도로 모션 벡터를 결정할 수도 있다. 예를 들어, 예측 프로세싱 유닛 (71) 은 정수 정확도, 디폴트 정확도, 또는 초미세 모션 정확도 (예를 들어, HEVC 에서 ¼ pel 정확도) 로 모션 벡터를 결정할 수도 있다. 일부 예들에서, 예측 프로세싱 유닛 (71) 은, 예를 들어 현재 픽처에 의해 지칭된 SPS 또는 VPS 에서 코딩된 인트라 BC 모션 벡터들의 정확도를 나타내는 신택스 엘리먼트를 수신할 수도 있다. 일부 예들에서, 인트라 BC 모션 벡터들의 정확도는 픽셀 레벨에 적응적일 수도 있고, 예측 프로세싱 유닛 (71) 은 예를 들어 현재 블록에 의해 지칭된 PPS 또는 슬라이스에서 코딩된 인트라 BC 모션 벡터들의 정확도를 나타내는 신택스 엘리먼트를 수신할 수도 있다.
모션 보상 유닛 (72) 은 모션 벡터들 및 다른 신택스 엘리먼트들을 파싱함으로써 현재의 비디오 슬라이스의 비디오 블록에 대한 예측 정보를 결정하고, 예측 정보를 사용하여 디코딩되고 있는 현재 블록에 대한 예측 블록들을 생성한다. 예를 들어, 모션 보상 유닛 (72) 은 비디오 슬라이스의 비디오 블록들을 코딩하기 위해 사용된 예측 모드 (예를 들어, 인트라- 또는 인터-예측), 인터-예측 슬라이스 유형 (예를 들어, B 슬라이스 또는 P 슬라이스), 슬라이스에 대한 레퍼런스 픽처 리스트들 중 하나 이상에 대한 구성 정보, 슬라이스의 각각의 인터-인코딩된 비디오 블록에 대한 모션 벡터들, 슬라이스의 각각의 인터-코딩된 비디오 블록에 대한 인터-예측 스테이터스, 및 현재 비디오 슬라이스의 비디오 블록들을 디코딩하기 위한 다른 정보를 결정하기 위해, 수신된 신택스 엘리먼트들 중 일부를 사용한다.
모션 보상 유닛 (72) 은 또한, 보간 필터들에 기초하여 보간을 수행할 수도 있다. 모션 보상 유닛 (72) 은 비디오 블록들의 인코딩 동안 비디오 인코더 (20) 에 의해 사용되는 것과 같이 보간 필터들을 사용하여 레퍼런스 블록들의 서브-정수 픽셀들에 대한 보간된 값들을 계산할 수도 있다. 이 경우에서, 모션 보상 유닛 (72) 은 수신된 신택스 엘리먼트들로부터 비디오 인코더 (20) 에 의해 사용된 보간 필터들을 결정하고, 이 보간 필터들을 사용하여 예측 블록들을 생성할 수도 있다. 일 예로서, 예측자 블록을 나타내는 모션 벡터가 분수-픽셀 레졸루션을 갖는 경우, 모션 보상 유닛 (72) 은 예측자 블록의 서브-정수 픽셀들에 대한 보간된 값들을 계산하도록 분수-픽셀 보간을 수행할 수도 있다. 일부 경우들에서, 분수-픽셀 보간을 수행하여 예측자 블록의 서브-정수 픽셀들에 대한 보간된 값들을 계산하기 위해, 모션 보상 유닛 (72) 은 예측자 블록 내로부터 및 예측자 블록 밖으로부터의 샘플 픽셀 값들을 참조할 필요가 있을 수도 있다. 그러나, 일부 예들에서, 모션 보상 유닛 (72) 이 예측자 블록 밖으로부터의 샘플 픽셀 값들을 참조하는 것이 가능하지 않을 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, 모션 보상 유닛 (72) 은, 예측자 블록이 선택되는 검색 영역이 모션 벡터의 레졸루션에 기초하여 변할 수도 있기 때문에 예측자 블록 밖으로부터의 샘플 픽셀 값들을 참조할 수도 있다. 일 예로서, 모션 벡터가 정수-픽셀 레졸루션을 갖는 경우, 현재 블록에 대한 검색 영역은 초기 검색 영역일 수도 있다. 다른 예로서, 모션 벡터가 분수-픽셀 레졸루션을 갖는 경우, 현재 블록에 대한 검색 영역은 감소된 검색 영역일 수도 있다. 일부 예들에서, 감소된 검색 영역은 초기 검색 영역의 우측 및 하부 경계들로부터 M 개의 샘플들만큼 초기 검색 영역을 감소시키고, 초기 검색 영역의 상부 및 좌측 경계들로부터 N 개의 샘플들 만큼 초기 검색 영역을 감소시킴으로써 결정될 수도 있다. 일부 예들에서, 예측자 블록의 픽셀 값들을 결정하기 위해 분수-픽셀 보간을 수행하는 경우, 모션 보상 유닛 (72) 은 예측자 블록 내로부터의 샘플 픽셀 값들 및 감소된 검색 영역의 밖이지만 초기 검색 영역 내로부터의 샘플 픽셀 값들을 참조할 수도 있다. 그러나, 샘플 픽셀 값들이 초기 검색 영역 내에 여전히 포함되기 때문에, 모션 보상 유닛 (72) 은 상기 샘플 픽셀 값들을 여전히 참조할 수도 있다.
역 양자화 프로세싱 유닛 (76) 은 비트스트림에서 제공되고 엔트로피 디코딩 유닛 (70) 에 의해 디코딩된 양자화된 변환 계수들을 역 양자화, 즉 양자화해제한다 (dequantizes). 역 양자화 프로세스는 양자화의 정도, 및 마찬가지로 적용되어야 하는 역 양자화의 정도를 결정하기 위해, 비디오 슬라이스의 각각의 비디오 블록에 대해 비디오 디코더 (30) 에 의해 계산된 양자화 파라미터 (QPY) 의 사용을 포함할 수도 있다.
역 변환 프로세싱 유닛 (78) 은, 픽셀 도메인에서 잔여 블록들을 생성하기 위해 변환 계수들에 대해 역 변환, 예를 들어, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역 변환 프로세스를 적용한다. 비디오 디코더 (30) 는 모션 보상 유닛 (72) 에 의해 생성된 대응하는 예측 블록들과 역 변환 프로세싱 유닛 (78) 으로부터의 잔여 블록들을 합산함으로써 디코딩된 비디오 블록들 형성한다. 합산기 (80) 는 이 합산 동작을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다.
비디오 디코더 (30) 는, 일부 예들에서 전술된 비디오 인코더 (20) 의 필터링 유닛과 유사하게 구성될 수도 있는 필터링 유닛을 포함할 수도 있다. 예를 들어, 필터링 유닛은 인코딩된 비트스트림으로부터 비디오 데이터를 디코딩 및 복원하는 경우 디블록킹, SAO, 또는 다른 필터링 동작들을 수행하도록 구성될 수도 있다.
본 기법의 다수의 상이한 양태들 및 예들이 본 개시물에 설명되지만, 본 기법들의 다양한 양태들 및 예들은 함께 또는 서로로부터 별개로 수행될 수도 있다. 다시 말해, 이 기법들은 전술된 다양한 양태들 및 예들에 엄격히 제한되지 않아야 하고, 결합하여 사용되거나 또는 함께 및/또는 별개로 수행될 수도 있다. 또한, 소정의 기법들이 비디오 디코더 (30) 의 소정 유닛들에 속하는 것으로 생각될 수도 있지만, 비디오 디코더 (30) 의 하나 이상의 다른 유닛들은 또한, 이러한 기법들을 수행하는 것을 담당할 수도 있다는 것이 이해되어야 한다.
이 방식으로, 비디오 디코더 (30) 는 본 개시물에 설명된 하나 이상의 예시의 기법들을 구현하도록 구성될 수도 있다. 예를 들어, 비디오 디코더 (30) 는, PPS 를 참조하는 픽처가, 예를 들어 인트라 BC 모드를 사용하여 현재 픽처의 하나 이상의 블록들을 코딩하기 위한 목적을 위해 픽처 그 자체의 레퍼런스 픽처 리스트에 존재할 수도 있는지 또는 없는지 여부를 나타내는 신택스 엘리먼트를 포함하는 비트스트림을 수신하도록 구성될 수도 있다. 즉, 비디오 디코더 (30) 는, 현재 픽처가 그 자체에 대해 레퍼런스 픽처 리스트에 포함될 수도 있다는 것을 나타내는 신택스 엘리먼트에 대한 값을 디코딩할 수도 있다. 따라서, 블록이 인트라 BC 모드를 사용하여 코딩되는 경우, 비디오 디코더 (30) 는, 인덱스 값이 픽처 그 자체에 대응하도록 예를 들어 레퍼런스 픽처 리스트 안의 인덱스 값을 사용하여 블록에 대한 레퍼런스 픽처가 블록을 포함하는 픽처라는 것을 결정할 수도 있다. 비디오 디코더 (30) 는 인트라 BC 모드를 사용하여 코딩되는 블록의 모션 정보로부터 이 인덱스 값을 디코딩할 수도 있다. 일부 예들에서, 비디오 디코더 (30) 의 하드웨어 아키텍처는 현재 픽처의 현재 블록을 예측하기 위해 레퍼런스 픽처로서 현재 픽처를 사용하기 위해 특별히 적응되지 않을 수도 있다.
도 5 는 본 개시물의 하나 이상의 기법들에 따른, 인트라 BC 프로세스의 예를 예시하는 다이어그램이다. 일 예의 인트라-예측 프로세스에 따르면, 비디오 인코더 (20) 는, 예를 들어 샘플 픽처에서, 이전에 코딩되고 복원된 비디오 데이터의 블록들의 세트로부터, 예측자 비디오 블록을 픽처에서 코딩될 현재 블록에 대해 선택할 수도 있다. 도 5 의 예에서, 복원된 영역 (108) 은 이전에 코딩 및 복원된 비디오 블록들의 세트를 포함한다. 복원된 영역 (108) 에서의 블록들은 비디오 디코더 (30) 에 의해 디코딩 및 복원되었고 복원된 영역 메모리 (92) 에 저장되었던 블록들, 또는 비디오 인코더 (20) 의 복원 루프에서 디코딩 및 복원되었고 복원된 영역 메모리 (64) 에 저장되었던 블록들을 나타낼 수도 있다. 현재 블록 (102) 은 코딩될 비디오 데이터의 현재 블록을 나타낸다. 예측자 블록 (104) 은, 현재 블록 (102) 의 인트라 BC 예측에 대해 사용되는 현재 블록 (102) 과 동일한 픽처에서 복원된 비디오 블록을 나타낸다.
예시의 인트라-예측 프로세스에서, 비디오 인코더 (20) 는 검색 영역 내로부터 예측자 블록 (104) 을 선택할 수도 있다. 위에서 논의된 바와 같이 그리고 본 개시물의 하나 이상의 기법들에 따라, 비디오 인코더 (20) 는 예측자 블록 (104) 을 나타내는 모션 벡터에 대해 사용될 레졸루션 (즉, 모션 벡터 (106) 에 대해 사용될 레졸루션) 에 기초하여 검색 영역을 결정할 수도 있다. 도 5 의 예에서, 정수-픽셀 레졸루션이 모션 벡터 (106) 에 대해 사용된다는 결정에 기초하여, 비디오 인코더 (20) 는 검색 영역이 복원된 영역 (108) 으로 이루어진다는 것을 결정하고 복원된 영역 (108) 내로부터 예측자 블록 (104) 을 선택할 수도 있다. 비디오 인코더 (20) 는 그 후, 잔여 신호와 함께, 현재 블록 (102) 에 대한 예측자 블록 (104) 의 포지션을 나타내는, 모션 벡터 (106) 를 결정 및 인코딩할 수도 있다. 예를 들어, 도 5 에 예시된 바와 같이, 모션 벡터 (106) 는 현재 블록 (102) 의 상부-좌측 코너에 대한 예측자 블록 (104) 의 상부-좌측 코너의 포지션을 나타낼 수도 있다. 위에서 논의된 바와 같이, 모션 벡터 (106) 는 또한, 오프셋 벡터, 변위 벡터, 또는 블록 벡터 (BV) 로서 지칭될 수도 있다. 비디오 디코더 (30) 는 현재 블록을 디코딩하기 위해 인코딩된 정보를 이용할 수도 있다.
비디오 디코더 (30) 는, RPL 에 기초하여 현재 픽처에서 비디오 데이터의 블록을 디코딩할 수도 있다. 특히, 비디오 디코더 (30) 는 레퍼런스 픽처 메모리 (82) 에 저장된 현재 픽처의 버전에 포함된 예측자 블록에 기초하여 비디오 데이터의 블록을 디코딩할 수도 있다. 다시 말해, 현재 픽처의 블록을 디코딩하는 경우, 비디오 디코더 (30) 는 현재 픽처로부터, 즉 (ListX 에서) 레퍼런스 인덱스 IdxCur 를 참조하여 블록을 예측할 수도 있다. 비디오 디코더 (30) 는 (예를 들어, 비디오 디코더가 블록의 디코딩을 완료한 후에) 초기화된 값들을 대체하도록 현재 픽처 버퍼 (예를 들어, 레퍼런스 픽처 메모리 (82)) 에 블록의 복원된 샘플들을 기입할 수도 있다. 이 예에서, 비디오 디코더 (30) 는 블록을 디코딩한 후에 복원된 샘플들에 디블록킹, SAO, 또는 임의의 다른 필터링 동작을 적용하지 않는다는 것을 주목한다. 다시 말해, 비디오 디코더 (30) 는 디블록킹 및 SAO 를 적용하기 전에 레퍼런스로서 현재 픽처를 사용할 수도 있다. 전체 픽처를 코딩한 후에, 비디오 디코더 (30) 는 HEVC 버전 1 에서 설명된 것과 동일한 방식으로 레퍼런스 픽처 마킹과 같은 디블록킹, SAO 및 다른 동작들을 적용할 수도 있다.
도 6a 및 도 6b 는 본 개시물의 하나 이상의 기법들에 따라, 예측자 블록이 선택될 수도 있는 예시의 검색 영역들을 예시하는 다이어그램들이다. 도 6 에 도시된 바와 같이, 비디오 인코더 (20) 는 현재 SCC Draft 에서 인트라 BC 에 대한 이용 가능한 검색 영역 (예를 들어, 캐주얼 또는 복원된 영역) 을 나타내는 검색 영역 (600) 을 결정할 수도 있다. 본 개시물의 기법들에 따르면, 비디오 인코더 (20) 는 감소된 검색 영역을 결정할 수도 있다. 예를 들어, 예측자 블록을 식별하는데 사용된 모션 벡터가 분수-픽셀 레졸루션을 갖는다는 결정에 응답하여, 비디오 인코더 (20) 는 감소된 검색 영역 (602)(예를 들어, 도 6a 에서의 감소된 검색 영역 (602A) 또는 도 6b 에서의 감소된 검색 영역 (602B)) 을 결정할 수도 있다. 도 6a 의 예에서, 비디오 인코더 (20) 는 수평 방향에서 거리 (604) 및 수직 방향에서 거리 (606) 만큼 검색 영역 (600) 을 축소시킴으로써 감속된 검색 영역 (602A) 을 결정할 수도 있다. 도 6b 의 예에서, 비디오 인코더 (20) 는 수평 방향에서 거리 (604) 만큼 검색 영역 (600) 을 축소시킴으로써 감소된 검색 영역 (602B) 을 결정할 수도 있다. 거리 (604) 는 N 개의 샘플들일 수도 있고, N 은 루마/크로마 보간에 대해 사용된 필터 탭들의 수 (예를 들어, 분수-픽셀 보간 프로세스 동안 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 에 의해 사용된 탭들의 수) 에 의존적일 수도 있다. 거리 (606) 는 M 개의 샘플들일 수도 있고, M 은 루마/크로마 보간에 대해 사용된 필터 탭들의 수에 의존적일 수도 있다. 일부 예들에서, N 은 M 과 동일할 수도 있다. 다른 예들에서, N 및 M 은 상이할 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는 샘플링 비율에 기초하여 감소된 검색 영역을 결정할 수도 있다. 일 예로서, 비디오 인코더 (20) 는 모든 크로마 샘플링 비율들에 대해 감소된 검색 영역 (602A) 을 사용할 수도 있다. 다른 예로서, 비디오 인코더 (20) 는 4:0:0 및 4:4:4 외에, 모든 크로마 샘플링 비율들에 대해 감소된 검색 영역 (602A) 을 사용할 수도 있다. 다른 예로서, 비디오 인코더 (20) 는 4:2:0 크로마 샘플링 비율들에 대해 감소된 검색 영역 (602A) 을 사용하고, 4:2:2 크로마 샘플링 비율들에 대해 감소된 검색 영역 (602B) 을 사용할 수도 있다. 도 6a 및 도 6b 에서 알 수 있는 바와 같이, 감소된 검색 영역 (602B) 은 수평 방향에서만 축소된다는 점에서 602A 와 상이하다.
도 7 은 본 개시물의 하나 이상의 기법들에 따라, 예측자 블록이 선택될 수도 있는 예시의 검색 영역들을 예시하는 다이어그램이다. 도 7 에 도시된 바와 같이, 비디오 인코더 (20) 는 현재 SCC 에서 인트라 BC 에 대한 이용 가능한 검색 영역 (예를 들어, 캐주얼 또는 복원된 영역) 을 나타내는 검색 영역 (702)(수직 라인들로 음영처리됨) 을 결정할 수도 있다. 본 개시물의 기법들에 따르면, 비디오 인코더 (20) 는 샘플들에 수에 의해 초기 검색 영역의 하나 이상의 경계들을 오프셋함으로써 감소된 검색 영역을 결정할 수도 있다. 예를 들어, 예측자 블록을 식별하는데 사용된 모션 벡터가 분수-픽셀 레졸루션을 갖는다는 결정에 응답하여, 비디오 인코더 (20) 는 검색 영역 (702) 의 하부 및 우측 경계들을 거리 (706) 만큼 축소시킴으로써 감소된 검색 영역 (704)(수평 라인들로 음영처리됨) 을 결정할 수도 있다. 거리 (606) 는 N 개의 샘플들일 수도 있고, N 은 루마/크로마 보간에 대해 사용된 필터 탭들의 수에 의존적일 수도 있다.
일부 예들에서, 초기 검색 영역 (즉, 검색 영역 (702)) 의 하부 및 우측 경계들을 오프셋하는 것에 추가하여, 비디오 인코더 (20) 는 슬라이스 경계들, 타일 경계들을 포함하는, 초기 검색 영역의 임의의 경계에서 초기 검색 영역을 오프셋할 수도 있다.
임의의 경우에서, 비디오 인코더 (20) 는 결정된 검색 영역으로부터 현재 블록 (700) 에 대한 예측자 블록을 선택할 수도 있다. 일 예로서, 예측자 블록을 나타내는 모션 벡터가 정수-픽셀 레졸루션을 갖는 경우, 비디오 인코더 (20) 는 검색 영역 (702) 으로부터 현재 블록 (700) 에 대한 예측자 블록을 선택할 수도 있다. 다른 예로서, 예측자 블록을 나타내는 모션 벡터가 분수-픽셀 레졸루션을 갖는 경우, 비디오 인코더 (20) 는 감소된 검색 영역 (704) 으로부터 현재 블록 (700) 에 대한 예측자 블록을 선택할 수도 있다.
도 8 은 본 개시물의 하나 이상의 기법들에 따라, 예측자 블록이 선택될 수도 있는 예시의 검색 영역들을 예시하는 다이어그램이다. 도 8 에 도시된 바와 같이, 비디오 인코더 (20) 는 현재 SCC 에서 인트라 BC 에 대한 이용 가능한 검색 영역 (예를 들어, 캐주얼 또는 복원된 영역) 을 나타내는 초기 검색 영역 (802)(두꺼운 라인으로 바운딩됨) 을 결정할 수도 있다. 본 개시물의 기법들에 따르면, 비디오 인코더 (20) 는 초기 검색 영역의 하나 이상의 경계들을 오프셋함으로써 (예를 들어, 검색에서 고려되는 초기 검색 영역의 특정된 마진에서 블록들의 픽셀들을 제거함으로써) 감소된 검색 영역을 결정할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 거리 (808) 만큼 검색 영역 (802) 의 하부 및 우측 경계들을 축소시키고 거리 (806) 만큼 검색 영역 (802) 의 상부 및 좌측 경계들을 축소시킴으로써 (점선으로 바운딩된) 감소된 검색 영역 (804) 을 결정할 수도 있다. 거리 (806) 는 N (예를 들어, 1, 2, 3, 4, 5, 6, 7, 8) 개의 샘플들일 수도 있고, N 은 루마/크로마 보간에 대해 사용된 필터 탭들의 수에 의존적일 수도 있다. 거리 (808) 는 M (예를 들어, 1, 2, 3, 4, 5, 6, 7, 8) 개의 샘플들일 수도 있고, M 은 루마/크로마 보간에 대해 사용된 필터 탭들의 수에 의존적일 수도 있다. 예를 들어, M 은 필터 탭들의 수에 상응하여 증가할 수도 있다. 일부 예들에서, N 은 M 과 동일할 수도 있다. 다른 예들에서, N 및 M 은 상이할 수도 있다. 하나의 특정 예에서, N 및 M 은 2 개의 샘플들일 수도 있다.
일부 예들에서, 초기 검색 영역 (즉, 검색 영역 (802)) 의 상부, 하부, 좌측 및 우측 경계들을 오프셋하는 것에 추가하여, 비디오 인코더 (20) 는 슬라이스 경계들, 타일 경계들을 포함하는, 초기 검색 영역의 임의의 경계에서 초기 검색 영역을 오프셋할 수도 있다.
임의의 경우에서, 비디오 인코더 (20) 는 결정된 검색 영역으로부터 현재 블록 (800) 에 대한 예측자 블록을 선택할 수도 있다. 일 예로서, 예측자 블록을 나타내는 모션 벡터가 정수-픽셀 레졸루션을 갖는 (즉, 크로마 보간이 요구될) 경우, 비디오 인코더 (20) 는 검색 영역 (802) 으로부터 현재 블록 (800) 에 대한 예측자 블록을 선택할 수도 있다. 다른 예로서, 예측자 블록을 나타내는 모션 벡터가 분수-픽셀 레졸루션을 갖는 경우, 비디오 인코더 (20) 는 감소된 검색 영역 (804) 으로부터 현재 블록 (800) 에 대한 예측자 블록을 선택할 수도 있다.
다음은 도 8 의 기법의 예시의 구현이다. 이전의 예시의 구현들에 대한 추가들은 밑줄로 나타낸다. 이전의 예시의 구현들에 대한 삭제들은 이탤릭체들로 나타낸다.
일반적 예
8.5.3.2.1 일반
IBC 레퍼런스 영역의 상부 및 좌측 경계에 대한 제약
이것은, 레퍼런스 픽처가 현재 픽처인 경우 비트스트림 순응의 요건이고, 루마 모션 벡터 mvLX 는 다음의 제약들을 따를 것이다:
- 변수들 xRef yRef 는 다음과 같이 도출된다:
- ChromaArrayType 이 0 과 동일하지 않고 mvCLX [ 0 ] & 0x7 이 0 과 동일하지 않은 경우
- xRef = ( xPb + ( mvLX[ 0 ] ≫ 2) - IntSamplesX ), 여기서 IntSamplesX 는 값들 0,1,2,3.... 을 취할 수 있음
그렇지 않은 경우
xRef = ( xPb + ( mvLX[ 0 ] ≫ 2))
- ChromaArrayType 이 0 과 동일하지 않고 mvCLX [ 1 ] & 0x7 이 0 과 동일하지 않고, IntSamplesX 가 값들 1,2,3,4.... 를 취하는 경우
XRef = ( xPb + ( mvLX[ 1 ] ≫ 2) - IntSamplesY ), 여기서 IntSamplesY 는 값들 0,1,2..,N 을 취할 수 있음
그렇지 않은 경우
xRef = ( xPb + ( mvLX[ 1 ] ≫ 2))
- SCC WD 6 의 조항 6.4.1 에서 명시된 바와 같이 z-스캔 순서 블록 가용성에 대한 도출 프로세스가 ( xCb, yCb ) 와 동일하게 설정된 ( xCurr, yCurr ) 및 입력들로서 (xPb + ( mvLX[ 0 ] ≫ 2), ( yPb + mvLX[ 1 ] ≫ 2)( xRef , yRef ) 와 동일하게 설정된 이웃하는 루마 로케이션 ( xNbY, yNbY ) 으로 인보크되는 경우, 출력은 TRUE 와 동일할 것이다.
IBC 레퍼런스 영역의 하부 및 우측 경계에 대한 제약
- 변수들 xRef yRef 는 다음과 같이 도출된다:
- ChromaArrayType 이 0 과 동일하지 않고 mvCLX [ 0 ] & 0x7 이 0 과 동일하지 않은 경우
- XRef = ( xPb + ( mvLX[ 0 ] ≫ 2) + nPbW - 1 + IntSamplesX ), 여기서 IntSamplesX 는 값들 0,1,2,3.... 을 취함
그렇지 않은 경우
xRef = ( xPb + ( mvLX[ 0 ] ≫ 2) + nPbW - 1)
- ChromaArrayType 이 0 과 동일하지 않고 mvCLX [ 1 ] & 0x7 이 0 과 동일하지 않고, 여기서 IntSamplesX 는 값들 1,2,3,4....을 취할 수 있는 경우,
xRef = ( xPb + ( mvLX[ 1 ] ≫ 2) nPbH - 1 + IntSamplesY ), 여기서IntSamplesY 는 값들 0,1,2,3..,N 을 취함
그렇지 않은 경우
xRef = ( xPb + (mvLX[ 1 ] ≫ 2) + nPbH - 1)
- 조항 6.4.1 에서 명시된 바와 같이 z-스캔 순서 블록 가용성에 대한 도출 프로세스가 ( xCb, yCb ) 와 동일하게 설정된 ( xCurr, yCurr ) 및 입력들로서 ( xPb + ( mvLX [ 0 ] ≫ 2) + nPbW - 1, yPb + ( mvLX[ 1 ] ≫ 2) + nPbH -1) ( xRef , yRef ) 와 동일하게 설정된 이웃하는 루마 로케이션 ( xNbY, yNbY ) 으로 인보크되는 경우, 출력은 TRUE 와 동일할 것이다.
- 하나 또는 양자 모두의 다음의 조건들은 참일 것이다:
- ChromaArrayType 이 0 과 동일하지 않고 mvCLX [ 0 ] & 0x7 이 0 과 동일하지 않은 경우
- ( mvLX[ 0 ] ≫ 2 ) + nPbW + IntSamplesX ) + xB1 의 값은 0 미만이거나 0 과 동일하고, 여기서 IntSamplesX 는 값들 0,1,2,3... 을 취할 수 있음
그렇지 않은 경우
- ( mvLX[ 0 ] ≫ 2 ) + nPbW + xB1 의 값은 0 미만이거나 0 과 동일하다.
ChromaArrayType 가 0 과 동일하지 않고 mvCLX[ 0 ] & 0x7 이 0 과 동일하지 않은 경우
- ( mvLX[ 1 ] ≫ 2 ) + nPbH + IntSamplesY) + yB1 의 값은 0 미만이거나 0 과 동일하다. 여기서, IntSamplesY 는 값들 0,1,2,3...을 취할 수 있음
그렇지 않은 경우
- ( mvLX[ 0 ] ≫ 2 ) + nPbH + xB1 의 값은 0 미만이거나 0 과 동일하다.
- 다음의 조건은 참일 것이다:
Figure pct00001
다음은 도 8 의 기법의 다른 예시의 구현이다. SCM 4.0 소프트웨어에 대한 추가들은 밑줄로 나타낸다. SCM 4.0 소프트웨어에 대한 삭제들은 이탤릭체들로 나타낸다.
8.5.3.2.1 일반
IBC 레퍼런스 영역의 상부 및 좌측 경계에 대한 제약
이것은, 레퍼런스 픽처가 현재 픽처인 경우 비트스트림 순응의 요건이고, 루마 모션 벡터 mvLX 는 다음의 제약들을 따를 것이다:
- 변수들 xRef yRef 는 다음과 같이 도출된다:
- ChromaArrayType 이 0 과 동일하지 않고 mvCLX[ 0 ] & 0x7 이 0 과 동일하지 않은 경우
- xRef = ( xPb + ( mvLX [ 0 ] ≫ 2) - 2), 여기서 IntSamplesX 는 값들 0,1,2,3....을 취할 수 있음
그렇지 않은 경우
xRef = ( xPb + ( mvLX[ 0 ] ≫ 2))
- ChromaArrayType 이 0 과 동일하지 않고 mvCLX[ 1 ] & 0x7 이 0 과 동일하지 않고, 여기서 IntSamplesX 는 값들 1,2,3,4....을 취할 수 있는 경우,
xRef = ( xPb + ( mvLX[ 1 ] ≫ 2) - 2), 여기서 IntSamplesY 는 값들 0,1,2,3..,N 을 취함
그렇지 않은 경우
xRef = ( xPb + ( mvLX[ 1 ] ≫ 2))
- 조항 6.4.1 에서 명시된 바와 같이 z-스캔 순서 블록 가용성에 대한 도출 프로세스가 ( xCb, yCb ) 와 동일하게 설정된 ( xCurr, yCurr ) 및 입력들로서 ( xPb + ( mvLX [ 0 ] ≫ 2),( yPb + mvLX[ 1 ] ≫ 2) ( xRef , yRef ) 와 동일하게 설정된 이웃하는 루마 로케이션 ( xNbY, yNbY ) 으로 인보크되는 경우, 출력은 TRUE 와 동일할 것이다.
IBC 레퍼런스 영역의 하부 및 우측 경계에 대한 제약
- 변수들 xRef yRef 는 다음과 같이 도출된다:
- ChromaArrayType 이 0 과 동일하지 않고 mvCLX[ 0 ] & 0x7 이 0 과 동일하지 않은 경우
- xRef = ( xPb + ( mvLX[ 0 ] ≫ 2) + nPbW - 1 + 2), 여기서 IntSamplesX 는 값들 0,1,2,3.... 을 취함
그렇지 않은 경우
xRef = ( xPb + (mvLX[ 0 ] ≫ 2) + nPbW - 1)
- ChromaArrayType 이 0 과 동일하지 않고 mvCLX [ 1 ] & 0x7 이 0 과 동일하지 않고, 여기서 IntSamplesX 는 값들 1,2,3,4....을 취할 수 있는 경우,
xRef = ( xPb + ( mvLX[ 1 ] ≫ 2) nPbH - 1 + 2), 여기서 IntSamplesY 는 값들 0,1,2..,N 을 취할 수 있음
그렇지 않은 경우
xRef = ( xPb + (mvLX[ 1 ] ≫ 2) + nPbH - 1)
- 조항 6.4.1 에서 명시된 바와 같이 z-스캔 순서 블록 가용성에 대한 도출 프로세스가 ( xCb, yCb ) 와 동일하게 설정된 ( xCurr, yCurr ) 및 입력들로서 ( xPb + ( mvLX [ 0 ] ≫ 2) + nPbW - 1, yPb + ( mvLX [ 1 ] ≫ 2) + nPbH - 1)( xRef , yRef) 와 동일하게 설정된 이웃하는 루마 로케이션 ( xNbY, yNbY ) 으로 인보크되는 경우, 출력은 TRUE 와 동일할 것이다.
- 하나 또는 양자 모두의 다음의 조건들은 참일 것이다:
- ChromaArrayType 이 0 과 동일하지 않고 mvCLX [ 0 ] & 0x7 이 0 과 동일하지 않은 경우
- ( mvLX[ 0 ] ≫ 2 ) + nPbW + 2 ) + xB1 의 값은 0 미만이거나 0 과 동일하고, 여기서 IntSamplesX 는 값들 0,1,2,3... 을 취할 수 있음
그렇지 않은 경우
- ( mvLX[ 0 ] ≫ 2 ) + nPbW + xB1 의 값은 0 미만이거나 0 과 동일하다.
- ChromaArrayType 이 0 과 동일하지 않고 mvCLX [ 0 ] & 0x7 이 0 과 동일하지 않은 경우
- ( mvLX[ 1 ] ≫ 2 ) + nPbH + 2) + yB1 의 값은 0 미만이거나 0 과 동일하다. 여기서, IntSamplesY 는 값들 0,1,2,3...을 취할 수 있음
그렇지 않은 경우
- ( mvLX[ 0 ] ≫ 2 ) + nPbH + xB1 의 값은 0 미만이거나 0 과 동일하다.
- 다음의 조건은 참일 것이다:
Figure pct00002
위에서 논의된 바와 같이, 본 개시물의 기법들은, 루마 MV, 또는 크로마 MV, 또는 루마 및 크로마 MV 양자 모두가 분수-픽셀 레졸루션 (예를 들어, 쿼터-픽셀 레졸루션) 으로 표현되는 경우 이슈를 처리한다. 위에서 논의된 바와 같이, MV 가 분수-픽셀 포지션을 가리키는 경우, 예측 픽셀들은 루마/크로마에 대한 보간 필터들을 사용하여 획득된다. 보간 필터는 예측 블록 외의 추가적인 이웃 샘플들을 필요로 할 수도 있다. 이와 같이, 보간 프로세스를 위해 사용되는 이들 픽셀들/샘플들은 전술된 바와 같이 레퍼런스 블록에 대한 인트라 BC 제약들을 충족시킬 필요가 있다. 상기 제약들을 실현하기 위해, 본원에 설명된 다른 기법들과 결합하여 합동으로 또는 별개로 적용될 수 있는 일부 기법들이 이하에서 제안된다.
일 예로서, 레퍼런스 영역은 현재 블록들 MV 에 기초하여 제한될 수도 있다. 다시 말해, 특정 모션 벡터 (루마/크로마) 는, 보간 샘플들을 갖는 레퍼런스 블록이 전술된 바와 같이 인트라 BC 제약을 충족시키지 않는 경우 불허될 수도 있다. 다른 예로서, 특정 모션 벡터 (루마/크로마) 는, 보간 샘플들 (각 사이드에서 4 개의 샘플들) 을 갖는 레퍼런스 블록이 전술된 바와 같은 인트라 BC 제약을 충족시키지 않는 경우 불허될 수도 있다. 다른 예로서, 현재 IBC 검색 영역은, 블록에 대응하는 모션 벡터가 크로마 보간을 사용하는 경우 (유효 IBC 영역의 모든 4 개 사이드들에서) 다수의 샘플들, 예를 들어 2 개의 샘플들에 의해 감소될 수도 있다. 다른 예로서, 현재 IBC 검색 영역은 블록에 대응하는 모션 벡터가 크로마 보간을 사용하는 경우 하나의 샘플에 의해 좌측 및 상부 픽처 경계로 그리고 2 개의 샘플들에 의해 우측 및 하부 IBC 레퍼런스 영역으로 감소될 수도 있다. 다른 예로서, 현재 IBC 검색 영역은 좌측 및 상부 픽처 경계에 2 개의 샘플 및 블록에 대응하는 모션 벡터가 크로마 보간을 사용하는 경우 우측 및 하부 IBC 레퍼런스 영역에 4 개의 샘플들에 의해 감소될 수도 있다. 일반적으로, 도 8 을 참조하여 위에서 논의된 바와 같이, 전술된 제약들을 만족시키는 유효 IBC 레퍼런스 영역이 상부 및 좌측 경계로 N 개의 샘플들 및 우측 및 하부 경계로 M 개의 샘플들에 의해 감소될 수도 있다. 일부 예들에서, 전술된 제약들은 모노크롬 프로파일에 대해 적용되지 않는다.
도 9 는 본 개시물의 하나 이상의 기법들에 따라, 픽처 밖에 위치된 영역을 패딩하기 위한 예시의 기법을 예시하는 다이어그램이다. RExt WD 7 에서, 인트라 BC 레퍼런스 영역은 완전히 현재 픽처 내에 있도록 제한된다. 이 제한으로 인해, 전술된 오프셋 (예를 들어, N 개의 샘플들 만큼 레퍼런스 영역의 감소) 이 픽처 경계들을 초과하는 것을 회피하도록 적용될 수도 있다.
그러나, 일부 예들에서 검색 영역 (즉, 인트라 BC 레퍼런스 영역) 은 규칙적인 인터 모드에 대해 행해진 것과 유사하게 픽처 경계 밖에 위치된 픽셀들을 포함할 수도 있고, 여기서 픽처 밖의 검색 영역에서 샘플 값들은 픽처 경계 내의 최근접 픽셀을 필요한 외부 샘플로 복사함으로써 (패딩 프로세스) 도출된다.
유사한 방식으로, 픽처 내에 위치된 픽처 경계 다음의 블록이 이미 복원된 경우, 비디오 코더 (예를 들어, 비디오 인코더 (20) 및/또는 비디오 디코더 (30)) 는 화살표들로 도 9 에서 도시된 바와 같이 외측 공간으로 경계 픽셀들을 확장하도록 (즉, 픽처 경계 밖에 위치된 픽셀들에 대한 픽셀 값들을 생성하도록) 패딩 프로세스를 적용할 수도 있다.
예를 들어, 밖 또는 부분적으로 밖의 블록이 인트라 BC 레퍼런스로서 이용 가능한지 여부를 체크하기 위해, 비디오 코더는 레퍼런스 블록 코너들, 예컨대 상부-좌측 코너, 상부-우측 코너, 하부-좌측 코너, 및/또는 하부-우측 코너의 좌표들을 픽처 경계에 클립핑할 수도 있다 (예를 들어, 수평 좌표는 0 및 픽처 폭 마이너스 1 내에 있도록 클립핑될 수도 있고, 수직 좌표는 0 및 픽처 높이 마이너스 1 내에 있도록 클립핑될 수도 있다). 비디오 코더는 점선 경계 블록으로서 도 9 에 도시된 이러한 클립핑된 블록에 대한 유효성 체크를 수행하고, 또는 레퍼런스 블록의 클립핑된 코너 좌표들이 이미 복원되는지, 즉 픽처 밖에 위치된 또는 밖에 부분적으로 위치된 레퍼런스 블록에 대한 IBC 예측으로서 사용될 수 있는지 여부를 체크할 수도 있다.
예를 들어, 비디오 코더는 조기에 언급된 바와 같이 픽처 경계로 상부 좌측 코너 수평 및 수직 좌표들을 클립핑할 수도 있다, 즉, 레퍼런스 블록은 클립핑된 포인트에서 상부 좌측 코너를 갖도록 이동된다. 클립핑 후에, 2 개의 가능성들이 있을 수 있다: 레퍼런스 블록은 픽처 내에 위치되고, 또는 픽처 밖에 여전히 위치 또는 픽처 밖에 부분적으로 위치된다. 레퍼런스 블록이 픽처 밖에 위치되면, 비디오 코더는, 블록의 하부 우측 코너의 얼마나 많은 수평 좌표가 픽처 밖으로 확장되는지의 거리만큼 픽처 안으로 수평으로 블록을 이동시킬 수도 있다. 이 프로세스는, 러프하게, 수평 방향으로 블록 이동 다음에, 수직 방향으로 먼저 레퍼런스 블록을 픽처 안으로 이동시키는 것으로 보여질 수 있다. 대안으로, 프로세스는 그 반대일 수도 있고, 비디오 코더는 먼저 하부 우측 코너를 수평으로, 그 다음에 수직 방향으로 이동시킬 수도 있다.
일부 예들, 예컨대 레퍼런스 블록이 현재 픽처의 밖 또는 부분적으로 밖에 위치되는 경우에서, 비디오 코더는 클립핑된 레퍼런스 블록 코너들 및 레퍼런스 블록 폭 및 높이를 고려하여, 픽처 경계 픽셀들이 인트라 BC 예측을 위해 사용되도록 복원 및 이용 가능한지 여부를 결정할 수도 있다.
일부 예들에서, 비디오 코더는 보간을 허용하도록 위에서 논의된 바와 같이 확장된 레퍼런스 영역에 오프셋을 적용할 수도 있다. 예를 들어, 현재 블록 우측 위의 외부 공간에 위치된 레퍼런스 블록은 아직 이용 가능하지 않다. 결과적으로, 이러한 영역에 위치된 픽셀들은, 예를 들어 설명된 이용 불가능한 부분에 가까이 위치된 레퍼런스 블록에 대한 보간을 위해 사용될 수 없다. 따라서, 비디오 코더는 보간을 가능하게 하도록 이용 가능한 영역 내에서 축소시키도록 N 개의 픽셀들의 오프셋을 적용할 수도 있다. 대안으로, 오프셋을 적용하는 것과 대조적으로, 비디오 코더는 최근접 이용 가능한 픽셀들을 패딩할 수도 있다.
RExt WD 7 에서, 인트라 BC 레퍼런스 영역은 도 7 의 음영된 영역 (702) 에 의해 도시된 바와 같은 (하지만 블록 (700) 을 포함하지 않는) 영역 내에 제한된다. RExt WD 7 에 따라, 도 7 의 보간 샘플들은 RExt WD 7 에서 0 이고, N 은 블록 폭과 동일하다.
RExt WD 7 에서, IBC 레퍼런스 영역의 부분들은 다음의 경우 이용 가능하지 않은 것으로서 마킹된다.
a) 레퍼런스 영역이 픽처/슬라이스/타일 경계 밖에 있음.
b) 레퍼런스 영역이 이하에서 정의된 바와 같이 병렬 프로세싱 샘플 경계 밖에 있음:
Figure pct00003
c) 레퍼런스 영역이 현재 코딩 유닛과 오버랩함.
d) 레퍼런스 영역이 참조를 위해 이용 가능하지 않은 영역과 오버랩함 (예를 들어, 레퍼런스 영역은 제약된 인트라 예측 영역 내에 있음). 블록 가용성 도출은 RExt WD 7 의 조항 6.4.1 에서 상세히 설명된다.
상기 제약들은, SCC 비트스트림들을 생성할 수 있는 인코더가 위의 레퍼런스 영역 제한들을 고수한다는 인코더 순응 제약들의 형태로 RExt WD 7 에서 지정된다.
그러나, RExt WD 7 에서 지정된 기법들은 바람직하지 않을 수도 있는 하나 이상의 문제들을 나타낼 수도 있다. 일 예로서, RExt WD 7 에서 지정된 인코더 측 제한들은 잠재적으로 위험할 수도 있다. 예를 들어, 디코더 거동은, 비-순응 인코더가 이들 제한들을 따르지 않는 경우 정의되지 않을 수도 있다. 다른 예로서, RExt WD 7 에서 지정된 인코더 제한들은, 제한하는 대신에 비트스트림이 경계-밖 영역들을 참조하는 경우 디코더에서 시간적 레퍼런스 영역이 유효 영역으로 클립핑되는 인터 디코딩 프로세스와 정렬되지 않을 수도 있다. 다른 예로서, 레퍼런스 영역을 제한하는 것은 일부 시나리오들에서 코딩 효율성 저하를 가질 수도 있다. 예를 들어, 예측 블록의 대부분이 유효 영역 내에 있는 경우의 시나리오에서, 전체 예측 블록을 제한하는 대신에 블록의 나머지를 유효 영역 내로 클립핑하는 것이 유리할 수도 있다.
본 개시물은 위의 문제들을 처리할 수도 있는 여러 기법들을 제안한다. 이하의 기법들은 본 개시물의 다른 기법들과 독립적으로 또는 이와 결합하여 합동으로 적용될 수 있다. 이하에서 사용된 바와 같이, 용어 레퍼런스 영역은 예측 블록들 내의 샘플들의 세트, 또는 샘플에 대응할 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, IBC 레퍼런스 영역은 비트스트림이 경계-밖 영역들을 참조하는 경우 디코더에서 유효 영역으로 클립핑될 수도 있다. 일부 예들에서, 클립핑은 다음의 시나리오들 중 하나 이상에서 적용될 수도 있다. 일 예로서, 비디오 코더 (즉, 비디오 인코더 또는 비디오 디코더) 는, 레퍼런스 영역이 픽처 경계 밖에 있는 경우 클립핑을 적용할 수도 있다. 다른 예로서, 비디오 코더는 레퍼런스 영역이 현재 코딩 유닛과 오버랩하는 경우 클립핑을 적용할 수도 있다. 다른 예로서, 비디오 코더는, 레퍼런스 영역이 다음의 식에서 정의된 바와 같이 병렬 프로세싱 샘플 경계 밖에 있는 경우 클립핑을 적용할 수도 있다:
Figure pct00004
일부 예들에서, 패딩은 다음의 시나리오들 중 하나 이상에서 적용될 수도 있다. 일 예로서, 비디오 코더는, 레퍼런스 영역이 슬라이스 경계 밖에 있는 경우 패딩을 적용할 수도 있다. 다른 예로서, 비디오 코더는, 레퍼런스 영역이 타일 경계 밖에 있는 경우 패딩을 적용할 수도 있다. 다른 예로서, 비디오 코더는, 레퍼런스 영역이 참조를 위해 이용 가능하지 않은 영역과 오버랩하는 (예를 들어, 레퍼런스 영역이 제한된 인트라 예측 영역 내에 있는) 경우 패딩을 적용할 수도 있다. 비디오 코더는, 영역이 RExt WD 7 의 조항 6.4.1 에서 설명된 기법을 사용하여 이용 가능한지 여부를 결정할 수도 있다.
일부 예들에서, 패딩 프로세스는 다음과 같이 적용될 수도 있다. 비디오 코더는 예측 블록에 대한 샘플 어레이 SL 에서 각각의 엘리먼트의 값을 1 ≪ ( BitDepthY - 1 ) 와 동일하게 설정할 수도 있다. ChromaArrayType 이 0 과 동일하지 않은 경우, 비디오 코더는 픽처에 대한 샘플 어레이들 SCb 및 SCr 에서 각각의 엘리먼트의 값을 1 ≪ ( BitDepthC - 1 ) 과 동일하게 설정할 수도 있다. 비디오 코더는 예측 모드 CuPredMode[ x ][ y ] 를 예측 블록 내의 각각의 엘리먼트에 대한 MODE_INTRA 와 동일하게 설정할 수도 있다.
상기 제안된 기법들은 상이한 레퍼런스 예측 블록들을 초래할 수도 있는 상이한 입도 레벨들 (예를 들어, 샘플 레벨 또는 예측 블록 레벨) 에서 적용될 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, 비디오 코더는, 예측 블록 내의 샘플들 모두가 유효 레퍼런스 영역 내에 있도록 예측 블록을 클립핑할 수도 있다. 예를 들어, 비디오 코더는 예측 블록 내의 샘플들 모두가 픽처 경계 내에 있도록 예측 블록을 클립핑할 수도 있고, 예측 블록 내의 샘플들 모두는 현재 코딩 유닛과 오버랩하지 않으며, 예측 블록 내의 샘플들 모두는 다음의 식에서 정의된 바와 같이 병렬 프로세싱 샘플 경계 내에 있다:
Figure pct00005
본 개시물의 기법들은 다수의 방식들로 구현될 수도 있다. 이하는 제안된 기법들 중 단지 하나 이상의 일 예시의 구현이다:
이 예에서, 포지션들 (xAi ,j, yAi ,j) 은, refPicLXL = 루마 샘플들의 CurrPic 인 경우 소정의 2 차원 어레이 내의 풀-샘플 로케이션들에서 현재 픽처의 상부-좌측 루마 샘플에 대한 현재 루마 예측 블록의 하부-우측 샘플 로케이션을 나타낸다고 하자.
Figure pct00006
Figure pct00007
(즉, 동일한 CTU 로우에 있는) 경우,
Figure pct00008
그렇지 않은 경우
Figure pct00009
상기 식들에서, nPbW 및 nPbH 는 각각 루마 예측 블록의 폭 및 높이를 지정하고, CtbYcurr = yCurr ≫ CtbLog2SizeY, CtbYpred = (yAi ,j) ≫ CtbLog2SizeY, CtbXcurr= xCurr ≫ CtbLog2SizeY, xCurrctb = (CtbXcurr) ≪ CtbLog2SizeY, xB1 은 현재 루마 코딩 블록의 상부-좌측 샘플에 대한 현재 루마 예측 블록의 상부-좌측 샘플의 루마 로케이션이며, samplesinter 는 루마 또는 크로마 샘플들에 대해 사용된 최대 보간 샘플들에 대응한다.
도 10 은 본 개시물의 하나 이상의 기법들에 따른, 상기 클립핑 동작의 일부 예시의 시나리오들을 예시한다. 도 10 의 시나리오/케이스들에서, 예측 블록들은 솔리드 경계로 도시되고 클립핑된 예측 블록들은 점선 경계로 도시된다. 도 10 에 도시된 바와 같이, 전체 레퍼런스 블록 (즉, 예측 블록) 은 유효 레퍼런스 영역 내에서 클립핑될 수도 있고, 이들 시나리오들에서 어떤 패딩도 필요하지 않을 수도 있다는 것이 관측될 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, 비디오 코더는, 각각의 예측 샘플이 유효 레퍼런스 영역 내에 있도록 각각의 레퍼런스 샘플을 클립핑할 수도 있다. 예를 들어, 비디오 코더는, 레퍼런스 블록 내의 샘플들이 유효 레퍼런스 영역 내에 있도록 레퍼런스 샘플들을 클립핑할 수도 있다. 예를 들어, 비디오 코더는 예측 블록 내의 샘플들이 픽처 경계 내에 있도록 예측 블록을 클립핑할 수도 있고, 예측 블록 내의 샘플들은 현재 코딩 유닛과 오버랩하지 않으며, 예측 블록 내의 샘플들은 다음의 식에서 정의된 바와 같이 병렬 프로세싱 샘플 경계 내에 있다:
Figure pct00010
도 11 은 상기 클립핑 동작의 일부 예시의 시나리오들을 예시한다. 도 11 의 시나리오/케이스들에서, 예측 블록들은 솔리드 경계로 도시되고 클립핑된 예측 블록들은 점선 경계로 도시된다. 도 11 에 도시된 바와 같이, 특정 예측 샘플은 유효 레퍼런스 영역들로 클립되고 일부 시나리오들에서 패딩이 필요할 수도 있다는 것이 관측될 수도 있다.
이 예에서, 포지션들 (xAi ,j, yAi ,j) 은, refPicLXL = 루마 샘플들의 CurrPic 인 경우 소정의 2 차원 어레이 내의 풀-샘플 로케이션들에서 루마 레퍼런스 샘플들을 나타낸다고 하자.
Figure pct00011
Figure pct00012
인 (즉, 동일한 CTU 로우에 있는) 경우
Figure pct00013
그렇지 않은 경우
Figure pct00014
상기 식들에서, nPbW 및 nPbH 는 각각 루마 예측 블록의 폭 및 높이를 지정하고, CtbYcurr = yCurr ≫ CtbLog2SizeY, CtbYpred = (yAi ,j) ≫ CtbLog2SizeY, CtbXcurr= xCurr ≫ CtbLog2SizeY, xCurrctb = (CtbXcurr) ≪ CtbLog2SizeY, xB1 은 현재 루마 코딩 블록의 상부-좌측 샘플에 대한 현재 루마 예측 블록의 상부-좌측 샘플의 루마 로케이션이며, samplesinter 는 루마 또는 크로마 샘플들에 대해 요구된 최대 보간 샘플들에 대응한다.
이하에서 "SCC WD 3" 으로서 지칭된, SCC 사양의 이전 작업 초안 (WD) 은 http://phenix.it-sudparis.eu/jct/doc_end_user/documents/22_Geneva/wg11/JCTVC-T1005-v2.zip. 에서 입수 가능하다. SCC WD 3 에서, 루마 및 크로마 모션 벡터들은 스케일링되고 (≪2), use_integer_mv_flag 가 1 과 동일한 경우 모션 보상 직전에 클립핑된다.
이것은 이하에 나타낸 바와 같이 SCC WD 3 에서 명시된다:
use_integer_mv_flag 가 1 과 동일하고, 레퍼런스 인덱스 refIdxLX 가 currPic 과 동일하지 않은 경우, mvLX 및 mvCLX (여기서, X 는 0 또는 1 과 동일함) 는 다음과 같이 변경된다:
Figure pct00015
일부 예들에서, 스케일링된 모션 벡터들 (루마 및 크로마) 을 215 - 1 로 클립핑하는 것은 보간을 수행할 필요성을 초래할 수도 있다. 임의의 다른 케이스들에 대해서는 보간이 요구되지 않을 수도 있다. 이 특별한 케이스는, 바람직하지 않을 수도 있는 비디오 디코더에 대해 불필요한 복잡성을 추가할 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, 비디오 코더는 보간을 초래하지 않는 최근접 값으로 모션 벡터들을 클립핑할 수도 있다.
use_integer_mv_flag 가 1 과 동일하고, 레퍼런스 인덱스 refIdxLX 가 currPic 과 동일하지 않은 경우, mvLX 및 mvCLX (여기서, X 는 0 또는 1 과 동일함) 는 이하에 나타낸 바와 같이 변경된다 (SCC WD 에 대한 추가들은 밑줄로 나타내고, SCC WD 에 대한 삭제들은 이탤릭체들로 나타낸다):
Figure pct00016
일부 예들에서, 제안된 변경은 루마 모션 벡터들 (mvLX) 에만 적용될 수도 있다. 일부 예들에서, 제안된 변경은 크로마 모션 벡터들 (mvCLX) 에만 적용될 수도 있다. 일부 예들에서, 제안된 변경은 루마 모션 벡터들 (mvLX) 및 크로마 모션 벡터들 (mvCLX) 양자 모두에 적용될 수도 있다.
일부 예들에서, 비디오 디코더는 chroma_format_idc 와 같은 샘플링 비율을 나타내는 신택스 엘리먼트 (예를 들어, chroma_format_idc) 의 값에 기초하여 제안된 변경을 수행할 수도 있다. 예를 들어, 비디오 코더는 4:4:4 샘플링 비율들에 대해서만 제안된 변경을 수행할 수도 있다.
도 12 는 본 개시물의 하나 이상의 기법들에 따른, 비디오 데이터의 블록에 대한 검색 영역을 결정하는 예시의 프로세스를 예시하는 플로우차트이다. 도 12 는 도 1 및 도 3 에 예시된 비디오 인코더 (20) 와 같은 비디오 인코더에 의해 수행될 수도 있다. 예시의 목적을 위해, 도 12 의 기법들은 도 1 및 도 3 의 비디오 인코더 (20) 의 맥락 내에서 설명되지만, 비디오 인코더 (20) 의 구성들과 상이한 구성들을 갖는 비디오 인코더들이 도 12 의 기법들을 수행할 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, 비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 모션 벡터에 대해 사용될 레졸루션 (예를 들어, 정수 또는 분수) 을 결정할 수도 있다 (1202). 예를 들어, 비디오 인코더 (20) 의 모션 추정 유닛 (44) 은, 현재 픽처에서 크로마 예측자 블록을 식별하는 크로마 모션 벡터가 정수-픽셀 레졸루션 또는 분수-픽셀 레졸루션을 갖는지 여부를 결정할 수도 있다. 일부 예들에서, 모션 추정 유닛 (44) 은, 쿼터-픽셀 레졸루션과 같은 분수-픽셀 레졸루션이 현재 블록에 대한 루마 샘플링에 대한 크로마 샘플링의 비율이 1 보다 큰 경우의 모션 벡터에 대해 사용될 것이라는 것을 결정할 수도 있다. 일부 예들에서, 모션 추정 유닛 (44) 은, 현재 블록에 대한 루마 샘플링에 대한 크로마 샘플링의 비율이 현재 블록의 포맷이 4:2:2 또는 4:2:0 인 경우에서 1 보다 크다는 것을 결정할 수도 있다. 일부 예들에서, 모션 추정 유닛 (44) 은 엔트로피 인코딩 유닛 (56) 으로 하여금 모션 벡터에 대해 사용될 레졸루션을 나타내는 신택스 엘리먼트를 인코딩하게 할 수도 있다. 예를 들어, 모션 추정 유닛 (44) 은, 엔트로피 인코딩 유닛 (56) 으로 하여금, 모션 벡터가 정수-픽셀 레졸루션 또는 분수-픽셀 레졸루션을 가질지 여부를 나타내도록 use_integer_mv_flag 를 인코딩하게 할 수도 있다.
비디오 인코더 (20) 의 하나 이상의 프로세서들은, 결정된 레졸루션에 기초하여, 검색 영역의 사이즈가, 레졸루션이 정수-픽셀인 경우의 검색 영역의 사이즈보다 분수-픽셀인 경우에 더 작도록 현재 블록에 대한 검색 영역을 결정할 수도 있다 (1204). 예를 들어, 모션 추정 유닛 (44) 은 일부 예들에서, 현재 픽처의 복원된 영역을 포함할 수도 있는 초기 검색 영역을 결정할 수도 있다. 예를 들어, 모션 추정 유닛 (44) 은 도 8 의 현재 블록 (800) 에 대한 초기 검색 영역 (802) 을 결정할 수도 있다. 모션 벡터에 대해 사용될 레졸루션이 정수-픽셀인 경우, 모션 추정 유닛 (44) 은 초기 검색 영역이 현재 블록에 대한 검색 영역이라는 것을 결정할 수도 있다. 그러나, 모션 벡터에 대해 사용될 레졸루션이 분수-픽셀인 경우, 모션 추정 유닛 (44) 은, 초기 검색 영역의 우측 및 하부 경계들로부터 M 개의 샘플들 만큼 초기 검색 영역을 적어도 감소시키고/시키거나 초기 검색 영역의 상부 및 좌측 경계들로부터 N 개의 샘플들 만큼 초기 검색 영역을 감소시킴으로써 검색 영역을 결정할 수도 있다. 예를 들어, 모션 추정 유닛 (44) 은 우측 및 하부 경계들로부터 M 개의 샘플들 만큼 (예를 들어, 거리 (808)) 초기 검색 영역 (802) 을 감소시키고, 상부 및 좌측 경계들로부터 N 개의 샘플들 만큼 (예를 들어, 거리 (806)) 초기 검색 영역 (802) 을 감소시켜 도 8 의 현재 블록 (800) 에 대한 감소된 검색 영역 (804) 을 생성할 수도 있다.
비디오 인코더 (20) 의 하나 이상의 프로세서들은 검색 영역 내로부터, 현재 블록에 대한 예측자 블록을 선택할 수도 있다 (1206). 일 예로서, 모션 벡터에 대해 사용될 레졸루션이 정수-픽셀인 경우, 모션 추정 유닛 (44) 은 초기 검색 영역 (예를 들어, 도 8 의 초기 검색 영역 (802)) 으로부터 현재 블록에 대한 예측자 블록을 선택할 수도 있다. 다른 예로서, 모션 벡터에 대해 사용될 레졸루션이 분수-픽셀인 경우, 모션 추정 유닛 (44) 은 감소된 검색 영역 (예를 들어, 도 8 의 감소된 검색 영역 (804)) 으로부터 현재 블록에 대한 예측자 블록을 선택할 수도 있다. 위에서 논의된 바와 같이, 모션 추정 유닛 (44) 은, 절대 차의 합 (SAD), 제곱 차의 합 (SSD), 또는 다른 차이 메트릭들에 의해 결정될 수도 있는, 픽셀 차이의 면들에서, 결정된 검색 영역 내로부터 여러 후보 예측자 블록들을 식별하고, 현재 블록에 밀접하게 일치하는 후보 예측자 블록을 선택할 수도 있다.
비디오 인코더 (20) 의 하나 이상의 프로세서들은 현재 블록에 대해 선택된 예측자 블록을 식별하는 모션 벡터를 결정할 수도 있다 (1208). 예를 들어, 도 5 의 예에서, 모션 추정 유닛 (44) 은 현재 블록 (102) 과 선택된 예측자 블록 (104) 간의 변위를 나타내는 벡터 (106) 를 결정할 수도 있다.
비디오 인코더 (20) 의 하나 이상의 프로세서들은, 코딩된 비디오 비트스트림에서, 모션 벡터의 표현을 인코딩할 수도 있다 (1210). 예를 들어, 모션 추정 유닛 (44) 은 엔트로피 인코딩 유닛 (56) 으로 하여금 결정된 모션 벡터의 표현을 인코딩하게 할 수도 있다. 일부 예들에서, 표현은 결정된 모션 벡터와 결정된 모션 벡터에 대한 예측자 간의 차이 (즉, 모션 벡터 차이 (MVD)) 일 수도 있다. 일부 예들에서, 모션 추정 유닛 (44) 은 엔트로피 인코딩 유닛 (56) 으로 하여금 현재 블록에 대한 루마 샘플들의 예측자 블록을 식별하는 루마 모션 벡터의 표현을 인코딩하게 할 수도 있고, (예를 들어, 현재 블록에 대한 루마 샘플링에 대한 크로마 샘플링의 비율에 기초하여) 루마 모션 벡터로부터 크로마 모션 벡터가 도출 가능할 수도 있다.
일부 예들, 예컨대 모션 벡터가 분수-픽셀 레졸루션을 갖는 경우에서, 비디오 인코더 (20) 는, 분수-픽셀 보간을 사용하고 예측자 블록 밖으로부터의 샘플 픽셀 값들에 적어도 부분적으로 기초하여 예측자 블록의 픽셀 값들을 결정할 수도 있다. 예를 들어, 모션 벡터가 분수-픽셀 레졸루션을 갖는 크로마 모션 벡터인 경우, 모션 보상 유닛 (46) 은 예측자 블록 밖이지만 초기 검색 영역 내에 있는 샘플 픽셀 값들에 적어도 부분적으로 기초하여 예측자 블록의 샘플 픽셀 값들을 구성하도록 분수-픽셀 보간을 수행할 수도 있다.
비디오 인코더 (20) 는 예측자 블록의 픽셀 값들에 기초하여 현재 블록을 복원할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 예측자 블록의 픽셀 값들을 잔여 값들에 가산하여 현재 블록의 픽셀 값들을 복원할 수도 있다.
도 13 은 본 개시물의 하나 이상의 기법들에 따른, 비디오 데이터의 블록을 디코딩하는 예시의 프로세스를 예시하는 플로우차트이다. 도 13 의 기법들은 도 1 및 도 4 에 예시된 비디오 디코더 (30) 와 같은 비디오 디코더에 의해 수행될 수도 있다. 예시의 목적을 위해, 도 13 의 기법들은 도 1 및 도 4 의 비디오 디코더 (30) 의 맥락 내에서 설명되지만, 비디오 디코더 (30) 의 구성들과 상이한 구성들을 갖는 비디오 디코더들이 도 13 의 기법들을 수행할 수도 있다.
본 개시물의 하나 이상의 기법들에 따라, 비디오 디코더 (30) 의 하나 이상의 프로세서들은, 코딩된 비디오 비트스트림으로부터, 비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 모션 벡터의 표현을 획득할 수도 있다 (1302). 예를 들어, 비디오 디코더 (30) 의 모션 보상 유닛 (72) 은, 엔트로피 디코딩 유닛 (70) 으로부터, 모션 벡터의 표현을 수신할 수도 있다. 일부 예들에서, 표현은 결정된 모션 벡터와 결정된 모션 벡터에 대한 예측자 간의 차이 (즉, 모션 벡터 차이 (MVD)) 일 수도 있다. 일부 예들에서, 모션 벡터는 현재 블록에 대한 루마 샘플들의 예측자 블록을 식별하는 루마 모션 벡터일 수도 있고, 모션 보상 유닛 (72) 은 루마 모션 벡터로부터 현재 블록에 대한 크로마 샘플들의 예측자 블록을 식별하는 크로마 모션 벡터를 (예를 들어, 현재 블록에 대한 루마 샘플링에 대한 크로마 샘플링의 비율에 기초하여) 도출할 수도 있다.
비디오 디코더 (30) 의 하나 이상의 프로세서들은, 모션 벡터가 분수-픽셀 레졸루션 또는 정수-픽셀 레졸루션을 갖는지 여부를 결정할 수도 있다 (1304). 예를 들어, 모션 보상 유닛 (72) 은, 분수-픽셀 레졸루션이 현재 블록에 대한 루마 샘플링에 대한 크로마 샘플링의 비율이 1 보다 큰 경우의 모션 벡터에 대해 사용될 것이라는 것을 결정할 수도 있다. 일부 예들에서, 모션 보상 유닛 (72) 은, 현재 블록에 대한 루마 샘플링에 대한 크로마 샘플링의 비율이 현재 블록의 포맷이 4:2:2 또는 4:2:0 인 경우에서 1 보다 크다는 것을 결정할 수도 있다. 일부 예들에서, 모션 보상 유닛 (72) 은, 엔트로피 디코딩 유닛 (70) 으로부터, 모션 벡터에 대해 사용될 레졸루션을 나타내는 신택스 엘리먼트를 수신할 수도 있다. 예를 들어, 모션 보상 유닛 (72) 은, 모션 벡터가 정수-픽셀 레졸루션 또는 분수-픽셀 레졸루션을 갖는지 여부를 나타내는 use_integer_mv_flag 를 수신할 수도 있다.
비디오 디코더 (30) 의 하나 이상의 프로세서들은, 모션 벡터에 기초하여, 레졸루션이 정수-픽셀인 경우보다 레졸루션이 분수-픽셀인 경우에서 더 작은 사이즈를 갖는 검색 영역 내로부터 현재 블록에 대한 예측자 블록을 결정할 수도 있다 (1306). 예를 들어, 레졸루션이 정수-픽셀인 경우에서, 현재 블록에 대한 검색 영역은, 일부 예들에서 현재 픽처의 복원된 영역을 포함할 수도 있는 초기 검색 영역일 수도 있다. 예를 들어, 레졸루션이 정수-픽셀인 경우에서, 현재 블록에 대한 검색 영역은 도 8 의 현재 블록 (800) 에 대한 초기 검색 영역 (802) 일 수도 있다. 다른 예로서, 모션 벡터에 대해 사용될 레졸루션이 분수-픽셀인 경우에서, 현재 블록에 대한 검색 영역은 초기 검색 영역의 우측 및 하부 경계들로부터 M 개의 샘플들 만큼 초기 검색 영역을 감소시키고, 초기 검색 영역의 상부 및 좌측 경계들로부터 N 개의 샘플들 만큼 초기 검색 영역을 감소시킴으로써 결정된 감소된 검색 영역일 수도 있다. 예를 들어, 레졸루션이 정수-픽셀인 경우에서, 현재 블록에 대한 검색 영역은 도 8 의 현재 블록 (800) 에 대한 감소된 검색 영역 (804) 일 수도 있다.
비디오 디코더 (30) 의 하나 이상의 프로세서들은, 모션 벡터가 분수-픽셀 레졸루션을 갖는다는 결정에 응답하여, 분수-픽셀 보간을 사용하고 예측자 블록 밖으로부터의 샘플 픽셀 값들에 적어도 부분적으로 기초하여 예측자 블록의 픽셀 값들을 결정할 수도 있다 (1308). 예를 들어, 모션 보상 유닛 (72) 은 초기 검색 영역 밖이지만 감소된 검색 영역 내에 있는 샘플 픽셀 값들에 적어도 부분적으로 기초하여 예측자 블록의 픽셀 값들 (예를 들어, 초기 검색 영역 (802) 에 포함되지만 도 8 의 감소된 검색 영역 (804) 에 포함되지 않은 픽셀 값들) 을 결정하도록 분수-픽셀 보간을 수행할 수도 있다.
비디오 디코더 (30) 의 하나 이상의 프로세서들은 예측자 블록의 픽셀 값들에 기초하여 현재 블록을 복원할 수도 있다 (1310). 예를 들어, 비디오 디코더 (30) 의 합산기 (80) 는 예측자 블록의 픽셀 값들을 잔여 값들에 가산하여 현재 블록의 픽셀 값들을 복원할 수도 있다.
다음의 넘버링된 조항들은 본 개시물의 하나 이상의 기법들을 예시할 수도 있다:
조항 1. 비디오 데이터를 인코딩 또는 디코딩하는 방법으로서, 이 방법은: 현재 블록에 대한 예측자 블록을 식별하는 모션 벡터의 레졸루션에 기초하여 비디오 데이터의 현재 픽처의 현재 블록에 대한 인트라 블록 복사 (인트라 BC) 검색 영역을 결정하는 단계를 포함한다.
조항 2. 조항 1 의 방법은, 모션 벡터의 레졸루션이 정수-픽셀인 경우보다 모션 벡터의 레졸루션이 분수-픽셀인 경우에서 더 작은 사이즈를 갖는 검색 영역을 결정하는 단계를 더 포함한다.
조항 3. 조항들 1-2 의 임의의 조합의 방법으로서, 모션 벡터의 레졸루션이 분수-픽셀인 경우 결정된 검색 영역의 사이즈와 모션 벡터의 레졸루션이 정수-픽셀인 경우 결정된 검색 영역 간의 차이는 예측자 블록에서 샘플들의 보간을 위해 사용된 필터 탭들의 수에 기초한다.
조항 4. 조항들 1-3 의 임의의 조합의 방법으로서, 모션 벡터의 레졸루션이 분수-픽셀인 경우 결정된 검색 영역은 모션 벡터의 레졸루션이 수평 방향에서 정수-픽셀인 경우 결정된 검색 영역보다 더 작다.
조항 5. 조항들 1-4 의 임의의 조합의 방법으로서, 모션 벡터가 분수-픽셀인 경우 결정된 검색 영역은, 현재 블록의 포맷이 4:2:2 인 경우 모션 벡터가 수평 방향에서 정수-픽셀인 경우 결정된 검색 영역보다 더 작다.
조항 6. 조항들 1-5 의 임의의 조합의 방법으로서, 모션 벡터의 레졸루션이 분수-픽셀인 경우 결정된 검색 영역은 모션 벡터의 레졸루션이 수평 방향 및 수직 방향에서 정수-픽셀인 경우 결정된 검색 영역보다 더 작다.
조항 7. 비디오 데이터를 인코딩 또는 디코딩하는 방법으로서, 이 방법은, 비디오 코더에 의해, 예측자 벡터 및 차이 벡터에 기초하여 비디오 데이터의 현재 블록에 대한 예측자 블록을 식별하는 벡터에 대한 계산 방법을 나타내는 신택스 엘리먼트를 코딩하는 단계; 비디오 코더에 의해, 표시된 계산 방법을 사용하여 벡터를 결정하는 단계; 및 비디오 코더에 의해, 벡터를 저장하는 단계를 포함한다.
조항 8. 조항 7 의 방법으로서, 벡터는 블록 벡터 (BV) 또는 모션 벡터 (MV) 중 어느 하나이다.
조항 9. 조항 7-8 의 임의의 조합의 방법으로서, 신택스 엘리먼트는, 모션 벡터가 저장되는 레졸루션을 나타내고, 모션 벡터를 저장하는 단계는 표시된 레졸루션에서 모션 벡터를 저장하는 단계를 포함한다.
조항 10. 조항 7-9 의 임의의 조합의 방법으로서, 신택스 엘리먼트의 제 1 값은, 모션 벡터가 분수 픽셀 레졸루션에서 저장된다는 것을 나타내고, 신택스 엘리먼트의 제 2 값은, 모션 벡터가 정수 픽셀 레졸루션에서 저장된다는 것을 나타낸다.
조항 11. 조항 7-10 의 임의의 조합의 방법으로서, 신택스 엘리먼트는 차이 벡터가 코딩되는 레졸루션을 나타내고, 방법은, 표시된 레졸루션에서 차이 벡터를 코딩하는 단계를 더 포함한다.
조항 12. 조항 11 의 방법으로서, 신택스 엘리먼트의 제 1 값은, 차이 벡터가 분수 픽셀 레졸루션에서 코딩된다는 것을 나타내고, 신택스 엘리먼트의 제 2 값은, 차이 벡터가 정수 픽셀 레졸루션에서 코딩된다는 것을 나타낸다.
조항 13. 조항 7-11 의 임의의 조합의 방법으로서, 신택스 엘리먼트는, 모션 벡터가 모션 보상을 수행하도록 스케일링되는지 여부를 나타내고, 방법은, 모션 벡터가 모션 보상을 수행하도록 스케일링된다는 것을 나타내는 신택스 엘리먼트에 응답하여, 모션 벡터를 스케일링하여 스케일링된 모션 벡터를 생성하는 단계; 및 스케일링된 모션 벡터를 사용하여 모션 보상을 수행하는 단계를 더 포함한다.
조항 14. 조항 7-13 의 임의의 조합의 방법으로서, 신택스 엘리먼트에 의해 표시된 계산 방법은, 현재 블록이 인트라 블록 복사 (인트라 BC) 모드를 사용하여 코딩되는 제 1 식 및 현재 블록이 인트라 모드를 사용하여 코딩되는 제 2 식이다.
조항 15. 조항 7-14 의 임의의 조합의 방법으로서, 제 1 식은 제 2 식과 동일하다.
조항 16. 조항 7-15 의 임의의 조합의 방법으로서, 모션 벡터에 대한 계산 방법에 추가하여, 신택스 엘리먼트는 모션 벡터가 저장되는 레졸루션; 모션 벡터가 모션 보상을 수행하도록 스케일링되는지 여부; 및 차이 벡터가 코딩되는 레졸루션 중 하나 이상을 나타낸다.
조항 17. 인트라-블록 복사 예측에 기초하여 현재 픽처 내의 현재 비디오 블록을 인코딩 또는 디코딩하는 방법으로서, 이 방법은, 현재 비디오 블록에 대한 예측자 블록이 현재 픽처의 유효 영역 밖에 위치된 적어도 하나의 픽셀을 포함한다는 결정에 응답하여, 유효 영역 밖에 위치된 적어도 하나의 픽셀을 포함하지 않는 클립핑된 예측자 블록을 생성하도록 예측자 블록을 클립핑하는 단계; 및 클립핑된 예측자 블록에 기초하여 현재 비디오 블록을 인코딩 또는 디코딩하는 단계를 포함한다.
조항 18. 조항 17 의 방법으로서, 유효 영역 밖에 위치된 적어도 하나의 픽셀은 현재 픽처의 경계 밖에 위치된다.
조항 19. 조항 17-18 의 임의의 조합의 방법으로서, 유효 영역 밖에 위치된 적어도 하나의 픽셀은 병렬 프로세싱 샘플 경계 밖에 위치된다.
조항 20. 조항 17-19 의 임의의 조합의 방법으로서, 유효 영역 밖에 위치된 적어도 하나의 픽셀은 현재 비디오 블록 내에 위치된다.
조항 21. 조항 17-20 의 임의의 조합의 방법으로서, 예측자 블록은 블록 벡터에 의해 식별되고, 예측자 블록을 클립핑하는 단계는 블록 벡터를 클립핑하는 단계를 포함한다.
조항 22. 조항 17-21 의 임의의 조합의 방법으로서, 클립핑된 예측자 블록은 예측자 블록과 동일한 사이즈이다.
조항 23. 인트라-블록 복사 예측에 기초하여 현재 픽처 내의 현재 비디오 블록을 인코딩 또는 디코딩하는 방법으로서, 이 방법은, 현재 비디오 블록에 대한 예측자 블록의 이용 가능하지 않은 픽셀을 식별하는 단계로서, 이용 가능하지 않은 픽셀은 현재 픽처의 복원된 영역 밖에 위치되는, 상기 픽셀들 식별하는 단계; 이용 가능하지 않은 픽셀에 대한 값을 획득하도록 패딩을 수행하는 단계; 및 이용 가능하지 않은 픽셀에 대해 획득된 값을 포함하는 예측자 블록의 버전에 기초하여 현재 비디오 블록을 인코딩 또는 디코딩하는 단계를 포함한다.
조항 24. 조항 23 의 방법으로서, 패딩을 수행하는 단계는, 현재 비디오 블록의 픽셀 값들의 비트심도에 기초하여 이용 가능하지 않은 픽셀에 대한 값을 획득하는 단계를 포함한다.
조항 25. 조항 23-24 의 임의의 조합의 방법으로서, 이용 가능하지 않은 픽셀에 대한 값은 다음의 식에 따라 획득되고: Punavailable= 1 ≪ (BitDepth-1), 여기서 Punavailable 은 이용 가능하지 않은 픽셀에 대해 획득된 값이고, BitDepth 는 현재 비디오 블록의 픽셀 값들의 비트심도이다.
조항 26. 인트라-블록 복사 예측에 기초하여 현재 픽처 내의 현재 비디오 블록을 인코딩 또는 디코딩하는 방법으로서, 이 방법은, 예측자 블록이 현재 픽처의 유효 영역 밖에 위치된 적어도 하나의 픽셀을 포함한다는 결정에 응답하여, 유효 영역 밖에 위치된 적어도 하나의 픽셀을 포함하지 않는 클립핑된 예측자 블록을 생성하도록 예측자 블록을 클립핑하는 단계; 클립핑된 예측자 블록의 이용 가능하지 않은 픽셀을 식별하는 단계로서, 이용 가능하지 않은 픽셀은 현재 픽처의 복원된 영역 밖에 위치되는, 상기 픽셀을 식별하는 단계; 이용 가능하지 않은 픽셀에 대한 값을 획득하도록 패딩을 수행하는 단계; 및 이용 가능하지 않은 픽셀에 대해 획득된 값을 포함하는 클립핑된 예측자 블록의 버전에 기초하여 현재 비디오 블록을 인코딩 또는 디코딩하는 단계를 포함한다.
조항 27. 조항 26 의 방법으로서, 이용 가능하지 않은 픽셀은 현재 비디오 블록을 포함하는 슬라이스의 슬라이스 경계 밖에 위치된다.
조항 28. 조항 26-27 의 임의의 조합의 방법으로서, 이용 가능하지 않은 픽셀은 현재 비디오 블록을 포함하는 타일의 타일 경계 밖에 위치된다.
조항 29. 조항 26-28 의 임의의 조합의 방법으로서, 이용 가능하지 않은 픽셀은 아직 디코딩되지 않은 현재 픽처의 블록의 부분을 형성한다.
조항 30. 조항 26-29 의 임의의 조합의 방법으로서, 유효 영역 밖에 위치된 적어도 하나의 픽셀은 현재 비디오 블록 내에 위치된다.
조항 31. 조항 26-30 의 임의의 조합의 방법으로서, 유효 영역 밖에 위치된 적어도 하나의 픽셀은 현재 픽처의 경계 밖에 위치된다.
조항 32. 조항 26-31 의 임의의 조합의 방법으로서, 유효 영역 밖에 위치된 적어도 하나의 픽셀은 병렬 프로세싱 샘플 경계 밖에 위치된다.
조항 33. 조항 26-32 의 임의의 조합의 방법으로서, 유효 영역 밖에 위치된 적어도 하나의 픽셀은 현재 비디오 블록 내에 위치된다.
조항 34. 조항 26-33 의 임의의 조합의 방법으로서, 예측자 블록은 블록 벡터에 의해 식별되고, 예측자 블록을 클립핑하는 단계는 블록 벡터를 클립핑하는 단계를 포함한다.
조항 35. 조항 26-34 의 임의의 조합의 방법으로서, 클립핑된 예측자 블록은 예측자 블록과 동일한 사이즈이다.
조항 36. 인트라-블록 복사 예측에 기초하여 현재 픽처 내의 현재 비디오 블록을 인코딩 또는 디코딩하는 방법으로서, 이 방법은, 현재 비디오 블록에 대한 예측자 블록을 식별하는 블록 벡터를 보간을 요구하지 않는 최근접 값으로 클립핑하는 단계를 포함한다.
조항 37. 인트라 블록 복사 비디오 코딩 기법을 사용하여 비디오 데이터를 코딩하는 방법으로서, 이 방법은, 비디오 데이터의 현재 블록에 대한 레퍼런스 블록들을 식별하기 위한 인트라 블록 복사 검색 영역을 결정하는 단계; 비디오 데이터의 현재 블록과 연관된 모션 벡터가 크로마 보간을 사용하는 케이스에서, 인트라 블록 복사 검색 영역의 우측 및 하부 경계로부터 M 개의 샘플들만큼 인트라 블록 복사 검색 영역을 감소시키는 단계; 비디오 데이터의 현재 블록과 연관된 모션 벡터가 크로마 보간을 사용하는 케이스에서, 인트라 블록 복사 검색 영역의 상부 및 좌측 경계로부터 N 개의 샘플들만큼 인트라 블록 복사 검색 영역을 감소시키는 단계; 및 인트라 블록 복사 검색 영역을 사용하여 비디오 데이터의 현재 블록을 코딩하는 단계를 포함한다.
조항 38. 조항 37 의 방법으로서, M 은 2 이고 N 은 2 이다.
조항 39. 조항 37 의 방법으로서, M 은 2 이고 N 은 1 이다.
조항 40. 조항 37 의 방법으로서, M 은 4 이고 N 은 2 이다.
조항 41. 조항 1-40 의 임의의 조합을 포함하는 방법.
본 개시물의 소정 양태들은 예시의 목적을 위해 개발 중인 HEVC 표준에 대하여 설명되어 있다. 그러나, 본 개시물에 설명된 기법들은, 현재 개발되는 H.266 비디오 코딩 표준과 같은, 아직 개발되지 않은 사설 비디오 코딩 프로세스들 또는 다른 표준을 포함하는, 다른 비디오 코딩 프로세스들에 대해 유용할 수도 있다.
본 개시물에서 설명된 바와 같이, 비디오 코더는 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 유사하게, 비디오 코딩 유닛은 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 마찬가지로, 비디오 코딩은 적용 가능한 바와 같이, 비디오 인코딩 또는 비디오 디코딩을 지칭할 수도 있다.
예에 따라, 본원에서 설명된 임의의 기법들의 소정의 액트들 또는 이벤트들은 상이한 시퀀스로 수행될 수도 있고, 추가, 머지될 수도 있고, 또는 함께 제거될 수도 있다 (예를 들어, 설명된 모든 액트들 또는 이벤트들이 기법의 실시에 반드시 필요한 것은 아니다) 는 것이 인식되어야 한다. 또한, 소정 예들에서, 액트들 또는 이벤트들은, 순차적이기 보다는 예를 들어 멀티-스레디드 프로세싱, 인터럽트 프로세싱, 또는 다중 프로세서들을 통해 동시에 수행될 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 이 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 매체 상에 저장되거나 송신될 수도 있고, 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다.
컴퓨터 판독가능 매체는, 데이터 저장 매체와 같은 유형의 매체, 또는 예를 들어 통신 프로토콜에 따라, 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 가능하게 하는 임의의 매체를 포함하는 통신 매체에 대응하는 컴퓨터 판독가능 저장 매체를 포함할 수도 있다.
이 방식으로, 컴퓨터 판독가능 매체는 일반적으로 (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체는 본 개시물에 설명된 기법들의 구현을 위한 명령들, 코드, 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
비제한적인 예로서, 이러한 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장 디바이스, 자기 디스크 저장 디바이스 또는 다른 자기 저장 디바이스, 플래시 메모리, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체라고 적절히 칭해진다. 예를 들어, 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 명령들이 송신되면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다.
그러나, 컴퓨터 판독가능 저장 매체 및 데이터 저장 매체는 접속들, 반송파들, 신호들, 또는 다른 일시적 매체를 포함하지 않고, 대신에 비일시적인, 유형의 저장 매체이다. 본원에서 사용된 디스크 (disk) 및 디스크 (disc) 는, 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크, 및 블루레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 통상 자기적으로 데이터를 재생하는 반면, 디스크 (disc) 들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 상기의 조합들이 또한, 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
명령들은, 하나 이상의 디지털 신호 프로세서 (DSP) 들, 범용 마이크로프로세서들, 주문형 집적 회로 (ASIC) 들, 필드 프로그래머블 로직 어레이 (FPGA) 들, 또는 다른 등가의 집적 또는 이산 로직 회로부와 같은, 하나 이상의 프로세서들에 의해 실행될 수도 있다. 따라서, 본원에서 사용되는 바와 같은 용어 "프로세서" 는 상기의 구조 또는 본원에 설명된 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 지칭할 수도 있다. 또한, 일부 양태들에서, 본원에 설명된 기능성은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있고, 또는 결합형 코덱에 통합될 수도 있다. 또한, 본 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
본 개시물의 기법들은 무선 핸드셋, 집적 회로 (IC), 또는 IC 들의 세트 (예를 들어, 칩 세트) 를 포함하는 광범위한 디바이스들 또는 장치들로 구현될 수도 있다. 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태를 강조하기 위해 다양한 컴포넌트들, 모듈들, 또는 유닛들이 본 개시물에서 설명되었지만, 반드시 상이한 하드웨어 유닛들에 의해 실현될 필요는 없다. 차라리, 전술된 바와 같이 다양한 유닛들은 적합한 소프트웨어 및/또는 펌웨어와 관련되어, 전술된 하나 이상의 프로세서들을 포함하여 상호 동작적인 하드웨어 유닛들의 집합에 의해 제공되고 또는 코덱 하드웨어 유닛에 결합될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 특허청구범위 내에 있다.

Claims (34)

  1. 비디오 데이터를 인코딩하는 방법으로서,
    비디오 데이터의 현재 픽처 내의 현재 블록에 대한 상기 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 벡터에 대해 사용될 레졸루션을 결정하는 단계;
    결정된 상기 레졸루션에 기초하여, 검색 영역의 사이즈가, 상기 레졸루션이 정수-픽셀인 경우에서 상기 검색 영역의 사이즈보다 상기 레졸루션이 분수-픽셀인 경우에서 더 작도록 상기 현재 블록에 대한 검색 영역을 결정하는 단계;
    상기 검색 영역 내로부터, 상기 현재 블록에 대한 예측자 블록을 선택하는 단계;
    상기 현재 블록에 대해 선택된 상기 예측자 블록을 식별하는 벡터를 결정하는 단계; 및
    코딩된 비디오 비트스트림에서, 상기 벡터의 표현을 인코딩하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 현재 블록에 대한 검색 영역을 결정하는 단계는,
    초기 검색 영역을 결정하는 단계; 및
    상기 벡터에 대해 사용될 레졸루션이 정수-픽셀인 경우, 상기 초기 검색 영역이 상기 현재 블록에 대한 검색 영역이라는 것을 결정하는 단계를 포함하고, 또는
    상기 벡터에 대해 사용될 레졸루션이 분수-픽셀인 경우, 상기 검색 영역을 결정하는 단계는,
    상기 초기 검색 영역을 상기 초기 검색 영역의 우측 및 하부 경계들로부터 M 개의 샘플들 만큼 감소시키는 단계; 및
    상기 초기 검색 영역을 상기 초기 검색 영역의 상부 및 좌측 경계들로부터 N 개의 샘플들 만큼 감소시키는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  3. 제 2 항에 있어서,
    상기 M 은 2 이고 N 은 2 인, 비디오 데이터를 인코딩하는 방법.
  4. 제 2 항에 있어서,
    상기 벡터는 분수-픽셀 레졸루션을 갖는 크로마 모션 벡터이고,
    상기 벡터의 표현을 인코딩하는 단계는, 상기 크로마 모션 벡터가 도출 가능한 루마 모션 벡터를 인코딩하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  5. 제 1 항에 있어서,
    상기 벡터에 대해 사용될 레졸루션을 결정하는 단계는, 상기 현재 블록에 대한 크로마 예측자 블록을 식별하는 크로마 모션 벡터에 대해 사용될 레졸루션을 결정하는 단계를 포함하고,
    상기 비디오 데이터를 인코딩하는 방법은,
    상기 현재 블록에 대한 루마 샘플링에 대한 크로마 샘플링의 비율이 1 보다 큰 경우 벡터에 대해 분수-픽셀 레졸루션이 사용될 것을 결정하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  6. 제 5 항에 있어서,
    상기 현재 블록에 대한 루마 샘플링에 대한 크로마 샘플링의 비율은, 상기 현재 블록의 크로마 샘플링 포맷이 4:2:2 또는 4:2:0 인 경우 1 보다 큰, 비디오 데이터를 인코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 코딩된 비디오 비트스트림에서, 상기 벡터에 대해 사용될 레졸루션을 나타내는 신택스 엘리먼트를 인코딩하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 벡터가 분수-픽셀 레졸루션을 갖는 경우, 분수-픽셀 보간을 사용하고 상기 예측자 블록 밖으로부터의 샘플 픽셀 값들에 적어도 부분적으로 기초하여, 상기 예측자 블록의 픽셀 값들을 결정하는 단계; 및
    상기 예측자 블록의 상기 픽셀 값들에 기초하여 상기 현재 블록을 복원하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  9. 비디오 데이터를 디코딩하는 방법으로서,
    코딩된 비디오 비트스트림으로부터, 비디오 데이터의 현재 픽처 내의 현재 블록에 대한 상기 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 벡터의 표현을 획득하는 단계;
    상기 벡터가 분수-픽셀 레졸루션 또는 정수-픽셀 레졸루션을 갖는지 여부를 결정하는 단계;
    상기 벡터에 기초하여, 상기 레졸루션이 정수-픽셀인 경우에서 검색 영역의 사이즈보다 상기 레졸루션이 분수-픽셀인 경우에서 더 작은 사이즈를 갖는 검색 영역 내로부터 상기 현재 블록에 대한 예측자 블록을 결정하는 단계;
    상기 벡터가 분수-픽셀 레졸루션을 갖는다는 결정에 응답하여, 분수-픽셀 보간을 사용하고 상기 예측자 블록 밖으로부터의 샘플 픽셀 값들에 적어도 부분적으로 기초하여, 상기 예측자 블록의 픽셀 값들을 결정하는 단계; 및
    상기 예측자 블록의 상기 픽셀 값들에 기초하여 상기 현재 블록을 복원하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  10. 제 9 항에 있어서,
    상기 벡터가 정수-픽셀 레졸루션을 갖는 경우, 상기 현재 블록에 대한 검색 영역은 초기 검색 영역을 포함하고,
    상기 벡터가 분수-픽셀 레졸루션을 갖는 경우, 상기 현재 블록에 대한 검색 영역은 상기 초기 검색 영역을 상기 초기 검색 영역의 우측 및 하부 경계들로부터 M 개의 샘플들 만큼 감소시키고, 상기 초기 검색 영역을 상기 초기 검색 영역의 상부 및 좌측 경계들로부터 N 개의 샘플들 만큼 감소시킴으로써 결정된 감소된 검색 영역을 포함하며,
    상기 초기 검색 영역 밖이지만 상기 감소된 검색 영역 내에 있는 샘플 픽셀 값들에 적어도 부분적으로 기초하여 상기 예측자 블록의 픽셀 값들을 결정하도록 분수-픽셀 보간을 수행하는, 비디오 데이터를 디코딩하는 방법.
  11. 제 10 항에 있어서,
    상기 M 은 2 이고 N 은 2 인, 비디오 데이터를 디코딩하는 방법.
  12. 제 10 항에 있어서,
    상기 벡터는 크로마 모션 벡터이고,
    상기 모션 벡터의 표현을 획득하는 것은,
    상기 코딩된 비디오 비트스트림으로부터, 루마 모션 벡터의 표현을 획득하는 것; 및
    상기 루마 모션 벡터에 기초하여 상기 크로마 모션 벡터를 결정하는 것을 포함하는, 비디오 데이터를 디코딩하는 방법.
  13. 제 9 항에 있어서,
    상기 벡터는 크로마 모션 벡터이고,
    상기 비디오 데이터를 디코딩하는 방법은,
    상기 현재 블록에 대한 루마 샘플링에 대한 크로마 샘플링의 비율이 1 보다 큰 경우 상기 크로마 모션 벡터에 대해 분수-픽셀 레졸루션이 사용될 것을 결정하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  14. 제 13 항에 있어서,
    상기 현재 블록에 대한 루마 샘플링에 대한 크로마 샘플링의 비율은, 상기 현재 블록의 크로마 샘플링 포맷이 4:2:2 또는 4:2:0 인 경우 1 보다 큰, 비디오 데이터를 디코딩하는 방법.
  15. 제 9 항에 있어서,
    상기 코딩된 비디오 비트스트림으로부터, 상기 벡터가 분수-픽셀 레졸루션 또는 정수-픽셀 레졸루션을 갖는지 여부를 나타내는 신택스 엘리먼트를 디코딩하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  16. 비디오 데이터를 인코딩하기 위한 디바이스로서,
    상기 비디오 데이터의 부분을 저장하도록 구성된 메모리; 및
    비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 벡터에 대해 사용될 레졸루션을 결정하고;
    결정된 상기 레졸루션에 기초하여, 검색 영역의 사이즈가, 상기 레졸루션이 정수-픽셀인 경우에서보다 상기 레졸루션이 분수-픽셀인 경우에서 더 작도록 상기 현재 블록에 대한 검색 영역을 결정하고;
    상기 검색 영역 내로부터, 상기 현재 블록에 대한 예측자 블록을 선택하고;
    상기 현재 블록에 대해 선택된 상기 예측자 블록을 식별하는 벡터를 결정하며;
    코딩된 비디오 비트스트림에서, 상기 벡터의 표현을 인코딩하도록
    구성된 하나 이상의 프로세서들을 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스.
  17. 제 16 항에 있어서,
    상기 현재 블록에 대한 검색 영역을 결정하기 위해, 상기 하나 이상의 프로세서들은,
    상기 현재 픽처의 복원된 영역을 포함하는 초기 검색 영역을 결정하며;
    상기 벡터에 대해 사용될 레졸루션이 정수-픽셀인 경우, 상기 초기 검색 영역이 상기 현재 블록에 대한 검색 영역이라는 것을 결정하고; 또는
    상기 벡터에 대해 사용될 레졸루션이 분수-픽셀인 경우, 적어도,
    상기 초기 검색 영역을 상기 초기 검색 영역의 우측 및 하부 경계들로부터 M 개의 샘플들 만큼 감소시키는 것; 및
    상기 초기 검색 영역을 상기 초기 검색 영역의 상부 및 좌측 경계들로부터 N 개의 샘플들 만큼 감소시키는 것
    에 의해 상기 검색 영역을 결정하도록
    구성되는, 비디오 데이터를 인코딩하기 위한 디바이스.
  18. 제 17 항에 있어서,
    상기 M 은 2 이고 N 은 2 인, 비디오 데이터를 인코딩하기 위한 디바이스.
  19. 제 17 항에 있어서,
    상기 벡터는 크로마 모션 벡터이고,
    상기 모션 벡터의 표현을 인코딩하기 위해, 상기 하나 이상의 프로세서들은, 상기 크로마 모션 벡터가 도출 가능한 루마 모션 벡터를 인코딩하도록 구성되는, 비디오 데이터를 인코딩하기 위한 디바이스.
  20. 제 16 항에 있어서,
    상기 벡터에 대해 사용될 레졸루션을 결정하기 위해, 상기 하나 이상의 프로세서들은, 상기 현재 블록에 대한 크로마 예측자 블록을 식별하는 크로마 모션 벡터에 대해 사용될 레졸루션을 결정하도록 구성되고,
    상기 하나 이상의 프로세서들은 또한,
    상기 현재 블록에 대한 루마 샘플링에 대한 크로마 샘플링의 비율이 1 보다 큰 경우 상기 크로마 모션 벡터에 대해 분수-픽셀 레졸루션이 사용될 것을 결정하도록
    구성되는, 비디오 데이터를 인코딩하기 위한 디바이스.
  21. 제 20 항에 있어서,
    상기 현재 블록에 대한 루마 샘플링에 대한 크로마 샘플링의 비율은, 상기 현재 블록의 크로마 샘플링 포맷이 4:2:2 또는 4:2:0 인 경우 1 보다 큰, 비디오 데이터를 인코딩하기 위한 디바이스.
  22. 제 16 항에 있어서,
    상기 하나 이상의 프로세서들은 또한,
    상기 코딩된 비디오 비트스트림에서, 상기 벡터에 대해 사용될 레졸루션을 나타내는 신택스 엘리먼트를 인코딩하도록
    구성되는, 비디오 데이터를 인코딩하기 위한 디바이스.
  23. 제 16 항에 있어서,
    상기 하나 이상의 프로세서들은 또한,
    상기 벡터가 분수-픽셀 레졸루션을 갖는 경우, 분수-픽셀 보간을 사용하고 상기 예측자 블록 밖으로부터의 샘플 픽셀 값들에 적어도 부분적으로 기초하여, 상기 예측자 블록의 픽셀 값들을 결정하며;
    상기 예측자 블록의 픽셀 값들에 기초하여 상기 현재 블록을 복원하도록
    구성되는, 비디오 데이터를 인코딩하기 위한 디바이스.
  24. 비디오 데이터를 인코딩하기 위한 장치로서,
    비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 벡터에 대해 사용될 레졸루션을 결정하기 위한 수단;
    결정된 상기 레졸루션에 기초하여, 검색 영역의 사이즈가, 상기 레졸루션이 정수-픽셀인 경우에서보다 상기 레졸루션이 분수-픽셀인 경우에서 더 작도록 상기 현재 블록에 대한 검색 영역을 결정하기 위한 수단;
    상기 검색 영역 내로부터, 상기 현재 블록에 대한 예측자 블록을 선택하기 위한 수단;
    상기 현재 블록에 대해 선택된 상기 예측자 블록을 식별하는 벡터를 결정하기 위한 수단; 및
    코딩된 비디오 비트스트림에서, 상기 벡터의 표현을 인코딩하기 위한 수단을 포함하는, 비디오 데이터를 인코딩하기 위한 장치.
  25. 명령들을 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행되는 경우, 비디오 인코딩 디바이스의 하나 이상의 프로세서들로 하여금,
    비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 벡터에 대해 사용될 레졸루션을 결정하게 하고;
    결정된 상기 레졸루션에 기초하여, 검색 영역의 사이즈가, 상기 레졸루션이 정수-픽셀인 경우에서보다 상기 레졸루션이 분수-픽셀인 경우에서 더 작도록 상기 현재 블록에 대한 검색 영역을 결정하게 하고;
    상기 검색 영역 내로부터, 상기 현재 블록에 대한 예측자 블록을 선택하게 하고;
    상기 현재 블록에 대해 선택된 상기 예측자 블록을 식별하는 벡터를 결정하게 하며;
    코딩된 비디오 비트스트림에서, 상기 벡터의 표현을 인코딩하게 하는, 컴퓨터 판독가능 저장 매체.
  26. 비디오 데이터를 디코딩하기 위한 디바이스로서,
    상기 비디오 데이터의 부분을 저장하도록 구성된 메모리; 및
    코딩된 비디오 비트스트림으로부터, 비디오 데이터의 현재 픽처 내의 현재 블록에 대한 상기 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 벡터의 표현을 획득하고;
    상기 벡터가 분수-픽셀 레졸루션 또는 정수-픽셀 레졸루션을 갖는지 여부를 결정하고;
    상기 벡터에 기초하여, 상기 레졸루션이 정수-픽셀인 경우에서보다 상기 레졸루션이 분수-픽셀인 경우에서 더 작은 사이즈를 갖는 검색 영역 내로부터 상기 현재 블록에 대한 예측자 블록을 결정하고;
    상기 벡터가 분수-픽셀 레졸루션을 갖는다는 결정에 응답하여, 분수-픽셀 보간을 사용하고 상기 예측자 블록 밖으로부터의 샘플 픽셀 값들에 적어도 부분적으로 기초하여, 상기 예측자 블록의 픽셀 값들을 결정하며;
    상기 예측자 블록의 픽셀 값들에 기초하여 상기 현재 블록을 복원하도록
    구성된 하나 이상의 프로세서들을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  27. 제 26 항에 있어서,
    상기 벡터가 정수-픽셀 레졸루션을 갖는 경우, 상기 현재 블록에 대한 검색 영역은 초기 검색 영역을 포함하고,
    상기 벡터가 분수-픽셀 레졸루션을 갖는 경우, 상기 현재 블록에 대한 검색 영역은 상기 초기 검색 영역의 우측 및 하부 경계들로부터 M 개의 샘플들 만큼 감소되고, 상기 초기 검색 영역의 상부 및 좌측 경계들로부터 N 개의 샘플들 만큼 감소된 상기 초기 검색 영역을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  28. 제 27 항에 있어서,
    상기 M 은 2 이고 N 은 2 인, 비디오 데이터를 디코딩하기 위한 디바이스.
  29. 제 27 항에 있어서,
    상기 벡터는 크로마 모션 벡터이고,
    상기 크로마 모션 벡터의 표현을 획득하기 위해, 상기 하나 이상의 프로세서들은,
    상기 코딩된 비디오 비트스트림으로부터, 루마 모션 벡터의 표현을 획득하며;
    상기 루마 모션 벡터에 기초하여 상기 크로마 모션 벡터를 결정하도록
    구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  30. 제 26 항에 있어서,
    상기 벡터는 크로마 모션 벡터이고,
    상기 하나 이상의 프로세서들은 또한,
    상기 현재 블록에 대한 루마 샘플링에 대한 크로마 샘플링의 비율이 1 보다 큰 경우 상기 크로마 모션 벡터에 대해 분수-픽셀 레졸루션이 사용될 것을 결정하도록
    구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  31. 제 30 항에 있어서,
    상기 현재 블록에 대한 루마 샘플링에 대한 크로마 샘플링의 비율은, 상기 현재 블록의 크로마 샘플링 포맷이 4:2:2 또는 4:2:0 인 경우 1 보다 큰, 비디오 데이터를 디코딩하기 위한 디바이스.
  32. 제 26 항에 있어서,
    상기 하나 이상의 프로세서들은 또한,
    상기 코딩된 비디오 비트스트림으로부터, 상기 벡터가 분수-픽셀 레졸루션 또는 정수-픽셀 레졸루션을 갖는지 여부를 나타내는 신택스 엘리먼트를 디코딩하도록
    구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  33. 비디오 데이터를 디코딩하기 위한 장치로서,
    코딩된 비디오 비트스트림으로부터, 비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 벡터의 표현을 획득하기 위한 수단;
    상기 벡터가 분수-픽셀 레졸루션 또는 정수-픽셀 레졸루션을 갖는지 여부를 결정하기 위한 수단;
    상기 벡터에 기초하여, 상기 레졸루션이 정수-픽셀인 경우에서보다 상기 레졸루션이 분수-픽셀인 경우에서 더 작은 사이즈를 갖는 검색 영역 내로부터 상기 현재 블록에 대한 예측자 블록을 결정하기 위한 수단;
    상기 벡터가 분수-픽셀 레졸루션을 갖는다는 결정에 응답하여, 분수-픽셀 보간을 사용하고 상기 예측자 블록 밖으로부터의 샘플 픽셀 값들에 적어도 부분적으로 기초하여, 상기 예측자 블록의 픽셀 값들을 결정하기 위한 수단; 및
    상기 예측자 블록의 픽셀 값들에 기초하여 상기 현재 블록을 복원하기 위한 수단을 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  34. 명령들을 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행되는 경우, 비디오 디코딩 디바이스의 하나 이상의 프로세서들로 하여금,
    코딩된 비디오 비트스트림으로부터, 비디오 데이터의 현재 픽처 내의 현재 블록에 대한 비디오 데이터의 현재 픽처 내의 예측자 블록을 식별하는 벡터의 표현을 획득하게 하고;
    상기 벡터가 분수-픽셀 레졸루션 또는 정수-픽셀 레졸루션을 갖는지 여부를 결정하게 하고;
    상기 벡터에 기초하여, 상기 레졸루션이 정수-픽셀인 경우에서보다 상기 레졸루션이 분수-픽셀인 경우에서 더 작은 사이즈를 갖는 검색 영역 내로부터 상기 현재 블록에 대한 예측자 블록을 결정하게 하고;
    상기 벡터가 분수-픽셀 레졸루션을 갖는다는 결정에 응답하여, 분수-픽셀 보간을 사용하고 상기 예측자 블록 밖으로부터의 샘플 픽셀 값들에 적어도 부분적으로 기초하여, 상기 예측자 블록의 픽셀 값들을 결정하게 하며;
    상기 예측자 블록의 픽셀 값들에 기초하여 상기 현재 블록을 복원하게 하는, 컴퓨터 판독가능 저장 매체.
KR1020177032263A 2015-05-11 2016-05-11 비디오 데이터의 특정 픽처 내의 인터 코딩을 위한 검색 영역 결정 KR102579519B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201562159839P 2015-05-11 2015-05-11
US62/159,839 2015-05-11
US201562173248P 2015-06-09 2015-06-09
US62/173,248 2015-06-09
US201562175179P 2015-06-12 2015-06-12
US62/175,179 2015-06-12
US15/151,416 2016-05-10
US15/151,416 US10200713B2 (en) 2015-05-11 2016-05-10 Search region determination for inter coding within a particular picture of video data
PCT/US2016/031888 WO2016183216A1 (en) 2015-05-11 2016-05-11 Search region determination for inter coding within a particular picture of video data

Publications (2)

Publication Number Publication Date
KR20180004147A true KR20180004147A (ko) 2018-01-10
KR102579519B1 KR102579519B1 (ko) 2023-09-15

Family

ID=56072451

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177032263A KR102579519B1 (ko) 2015-05-11 2016-05-11 비디오 데이터의 특정 픽처 내의 인터 코딩을 위한 검색 영역 결정

Country Status (9)

Country Link
US (1) US10200713B2 (ko)
EP (1) EP3295672B1 (ko)
JP (1) JP6783799B2 (ko)
KR (1) KR102579519B1 (ko)
CN (1) CN107592972B (ko)
AU (1) AU2016261848A1 (ko)
BR (1) BR112017024275A2 (ko)
TW (1) TWI762443B (ko)
WO (1) WO2016183216A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019194501A1 (ko) * 2018-04-01 2019-10-10 엘지전자 주식회사 움직임 벡터 리파인먼트에 기반한 영상 코딩 방법 및 그 장치

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106331703B (zh) * 2015-07-03 2020-09-08 华为技术有限公司 视频编码和解码方法、视频编码和解码装置
US10477233B2 (en) * 2015-09-30 2019-11-12 Apple Inc. Predictor candidates for motion estimation search systems and methods
WO2017094298A1 (ja) * 2015-12-04 2017-06-08 ソニー株式会社 画像処理装置、画像処理方法及びプログラム
US10368073B2 (en) * 2015-12-07 2019-07-30 Qualcomm Incorporated Multi-region search range for block prediction mode for display stream compression (DSC)
KR20180043151A (ko) 2016-10-19 2018-04-27 에스케이텔레콤 주식회사 영상 부호화 또는 복호화를 위한 장치 및 방법
CN114760470A (zh) * 2017-04-13 2022-07-15 Lg 电子株式会社 图像编码/解码方法及其设备
US11272207B2 (en) * 2017-06-12 2022-03-08 Futurewei Technologies, Inc. Selection and signaling of motion vector (MV) precisions
KR102206084B1 (ko) * 2017-07-07 2021-01-21 삼성전자주식회사 적응적 움직임 벡터 해상도로 결정된 움직임 벡터의 부호화 장치 및 부호화 방법, 및 움직임 벡터의 복호화 장치 및 복호화 방법
US10841794B2 (en) * 2017-09-18 2020-11-17 Futurewei Technologies, Inc. Adaptive motion vector resolution
CN109756739B (zh) * 2017-11-07 2022-09-02 华为技术有限公司 图像预测方法和装置
US10638137B2 (en) * 2018-03-07 2020-04-28 Tencent America LLC Method and apparatus for video coding
WO2019181101A1 (ja) * 2018-03-19 2019-09-26 ソニー株式会社 画像処理装置と画像処理方法
US11470359B2 (en) * 2018-03-30 2022-10-11 Sharp Kabushiki Kaisha Systems and methods for partitioning video blocks at a boundary of a picture for video coding
US10448025B1 (en) 2018-05-11 2019-10-15 Tencent America LLC Method and apparatus for video coding
US10873748B2 (en) * 2018-05-12 2020-12-22 Qualcomm Incorporated Storage of high precision motion vectors in video coding
CN112040243B (zh) 2018-06-04 2021-06-29 华为技术有限公司 获取运动矢量的方法和装置
CN110650337B (zh) * 2018-06-26 2022-04-01 中兴通讯股份有限公司 一种图像编码方法、解码方法、编码器、解码器及存储介质
KR102646649B1 (ko) 2018-06-29 2024-03-13 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 Lut에서의 모션 후보들의 검사 순서
JP7137008B2 (ja) 2018-06-29 2022-09-13 北京字節跳動網絡技術有限公司 1つまたは複数のルックアップテーブルを使用して、以前コーディングされた動き情報を順に記憶させてそれらを後続のブロックのコーディングに使用する概念
KR102611261B1 (ko) 2018-06-29 2023-12-08 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 업데이트 대상 lut 또는 비업데이트 lut의 구별
CN110662057B (zh) * 2018-06-29 2022-06-21 北京字节跳动网络技术有限公司 视频处理方法、装置、设备以及存储比特流的方法
JP7460617B2 (ja) 2018-06-29 2024-04-02 北京字節跳動網絡技術有限公司 Lut更新条件
KR20240005239A (ko) 2018-06-29 2024-01-11 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 Lut와 amvp 사이의 상호작용
KR20240007299A (ko) 2018-06-29 2024-01-16 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 룩업 테이블의 업데이트: fifo, 제약된 fifo
BR112020024142A2 (pt) 2018-06-29 2021-03-02 Beijing Bytedance Network Technology Co., Ltd. método para processamento de vídeo, aparelho para codificação de dados de vídeo, meio de armazenamento e meio de gravação legíveis por computador não transitório
WO2020008350A1 (en) 2018-07-02 2020-01-09 Beijing Bytedance Network Technology Co., Ltd. Luts with intra prediction modes and intra mode prediction from non-adjacent blocks
US10516885B1 (en) 2018-07-11 2019-12-24 Tencent America LLC Method and apparatus for video coding
CN110809164B (zh) * 2018-08-04 2022-06-28 北京字节跳动网络技术有限公司 Bio中的mv精度
TWI735929B (zh) 2018-08-04 2021-08-11 大陸商北京字節跳動網絡技術有限公司 更新的mv或推導的mv的裁剪
TW202025760A (zh) 2018-09-12 2020-07-01 大陸商北京字節跳動網絡技術有限公司 要檢查多少個hmvp候選
CN111010569B (zh) 2018-10-06 2023-02-28 北京字节跳动网络技术有限公司 Bio中的时间梯度计算的改善
CN111083489B (zh) 2018-10-22 2024-05-14 北京字节跳动网络技术有限公司 多次迭代运动矢量细化
US11418796B2 (en) * 2018-10-27 2022-08-16 Qualcomm Incorporated Intra block copy prediction restrictions in video coding
EP3857879A4 (en) 2018-11-12 2022-03-16 Beijing Bytedance Network Technology Co., Ltd. SIMPLIFICATION OF COMBINED INTER-INTRA PREDICTION
JP7241870B2 (ja) 2018-11-20 2023-03-17 北京字節跳動網絡技術有限公司 部分的な位置に基づく差分計算
US11438583B2 (en) * 2018-11-27 2022-09-06 Tencent America LLC Reference sample filter selection in intra prediction
EP3888370A4 (en) * 2018-11-30 2022-08-24 Tencent America Llc VIDEO CODING METHOD AND APPARATUS
US10778977B2 (en) * 2018-12-05 2020-09-15 Qualcomm Incorporated Triangle motion information for video coding
KR20200076000A (ko) * 2018-12-18 2020-06-29 삼성전자주식회사 계층 탐색을 통해 모션 추정을 수행하는 전자 회로 및 전자 장치
MX2021007465A (es) * 2018-12-21 2021-08-05 Beijing Dajia Internet Information Tech Co Ltd Metodos y aparatos de codificacion de video para derivar vectores de movimiento afines para componentes croma.
WO2020140216A1 (zh) * 2019-01-02 2020-07-09 北京大学 视频处理方法和装置
WO2020146505A1 (en) * 2019-01-08 2020-07-16 Tencent America LLC Method and apparatus for memory bandwidth reduction for small inter blocks
WO2020143741A1 (en) 2019-01-10 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Invoke of lut updating
CN113383554B (zh) 2019-01-13 2022-12-16 北京字节跳动网络技术有限公司 LUT和共享Merge列表之间的交互
CN113330739A (zh) 2019-01-16 2021-08-31 北京字节跳动网络技术有限公司 Lut中的运动候选的插入顺序
CN113366844B (zh) * 2019-02-02 2023-10-03 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的缓冲区中的数据存储
JP7384910B2 (ja) * 2019-02-02 2023-11-21 北京字節跳動網絡技術有限公司 映像符号化におけるイントラブロックコピーのためのバッファ管理
CN113383543A (zh) 2019-02-02 2021-09-10 北京字节跳动网络技术有限公司 使用用于视频编解码中的帧内块复制的额外缓冲区样点的预测
EP3915265A4 (en) 2019-03-01 2022-06-22 Beijing Bytedance Network Technology Co., Ltd. DIRECTION-BASED PREDICTION FOR INTRA BLOCK COPY IN VIDEO CODING
WO2020177660A1 (en) * 2019-03-01 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Block vector representation for intra block copy in video coding
CN117560509A (zh) * 2019-03-04 2024-02-13 北京字节跳动网络技术有限公司 视频处理中滤波信息的两级信令
JP7284284B2 (ja) 2019-03-04 2023-05-30 北京字節跳動網絡技術有限公司 映像符号化におけるイントラブロックコピーの実装形態の態様
WO2020177756A1 (en) 2019-03-06 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Size dependent inter coding
EP3915251A4 (en) * 2019-03-06 2022-03-16 Beijing Bytedance Network Technology Co., Ltd. SIZE DEPENDENT INTERCODING
WO2020185050A1 (ko) * 2019-03-14 2020-09-17 에스케이텔레콤 주식회사 인트라 블록 복사를 이용하는 영상 부호화 및 복호화
CN113615193A (zh) 2019-03-22 2021-11-05 北京字节跳动网络技术有限公司 Merge列表构建和其他工具之间的交互
US11363279B2 (en) * 2019-04-15 2022-06-14 Tencent America LLC Method and apparatus in video coding with flexible coding order
KR20210148321A (ko) * 2019-04-27 2021-12-07 주식회사 윌러스표준기술연구소 인트라 예측 기반 비디오 신호 처리 방법 및 장치
CN110113608B (zh) * 2019-04-30 2022-12-16 上海电力学院 一种基于率失真优化的gpu中视频编码快速搜索方法
CN113853783B (zh) 2019-05-25 2023-12-15 北京字节跳动网络技术有限公司 对帧内块复制编解码的块的块矢量的编解码
EP3989547A4 (en) * 2019-06-21 2023-04-19 Samsung Electronics Co., Ltd. VIDEO ENCODING METHOD AND DEVICE, AND VIDEO DECODER METHOD AND DEVICE
AU2020309663C1 (en) 2019-07-06 2023-12-14 Beijing Bytedance Network Technology Co., Ltd. Virtual prediction buffer for intra block copy in video coding
MX2022000110A (es) * 2019-07-10 2022-02-10 Beijing Bytedance Network Tech Co Ltd Identificacion de muestras para la copia intra-bloque en codificacion de video.
JP2022539887A (ja) 2019-07-11 2022-09-13 北京字節跳動網絡技術有限公司 映像符号化におけるイントラブロックコピーのためのビットストリーム適合性の制約
EP3997868A4 (en) * 2019-08-10 2023-02-22 Beijing Bytedance Network Technology Co., Ltd. BUFFER MANAGEMENT DURING SUBPICTURE DECODING
CN114424560A (zh) * 2019-09-20 2022-04-29 北京字节跳动网络技术有限公司 用于屏幕内容的自适应分辨率变化和可缩放编解码
CN114731404A (zh) * 2019-09-23 2022-07-08 交互数字Vc控股法国有限公司 使用基于块区域的量化矩阵进行视频编码和解码
CN110572672B (zh) * 2019-09-27 2024-03-15 腾讯科技(深圳)有限公司 视频编解码方法和装置、存储介质及电子装置
CN110662060B (zh) * 2019-09-27 2024-02-09 腾讯科技(深圳)有限公司 视频编码方法和装置、视频解码方法和装置及存储介质
CN110677676B (zh) * 2019-09-27 2024-02-09 腾讯科技(深圳)有限公司 视频编码方法和装置、视频解码方法和装置及存储介质
CN110650357B (zh) 2019-09-27 2023-02-10 腾讯科技(深圳)有限公司 视频解码方法及装置
CN110572676B (zh) * 2019-09-27 2023-12-12 腾讯科技(深圳)有限公司 视频编码方法和装置、视频解码方法和装置及存储介质
CN114450959A (zh) * 2019-09-28 2022-05-06 北京字节跳动网络技术有限公司 视频编解码中的几何分割模式
JP7482220B2 (ja) 2019-10-18 2024-05-13 北京字節跳動網絡技術有限公司 サブピクチャのパラメータセットシグナリングにおける構文制約
WO2021086153A1 (ko) * 2019-10-31 2021-05-06 삼성전자 주식회사 어파인 모델에 따른 인터 예측을 수행하는 비디오 복호화 방법 및 그 장치, 비디오 부호화 방법 및 그 장치
CN114946185A (zh) * 2020-01-01 2022-08-26 字节跳动有限公司 用于视频编解码的跨分量自适应环路滤波
US20230103405A1 (en) * 2021-10-04 2023-04-06 Tencent America LLC Method and apparatus for intra block copy prediction with sample padding
CN116471402A (zh) * 2022-07-26 2023-07-21 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015082839A (ja) * 2013-10-22 2015-04-27 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 動き補償方法、画像符号化方法、画像復号方法、画像符号化装置及び画像復号装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7116831B2 (en) * 2002-04-10 2006-10-03 Microsoft Corporation Chrominance motion vector rounding
US7120196B2 (en) 2002-04-29 2006-10-10 Ess Technology, Inc. Intra-prediction using intra-macroblock motion compensation
EP1578137A2 (en) * 2004-03-17 2005-09-21 Matsushita Electric Industrial Co., Ltd. Moving picture coding apparatus with multistep interpolation process
EP1980107A4 (en) 2006-11-17 2010-01-13 Lg Electronics Inc METHOD AND APPARATUS FOR DECODING / ENCODING A VIDEO SIGNAL
WO2008084378A2 (en) * 2007-01-09 2008-07-17 Nokia Corporation Adaptive interpolation filters for video coding
US8279936B1 (en) * 2007-12-11 2012-10-02 Marvell International Ltd. Method and apparatus for fractional pixel expansion and motion vector selection in a video codec
US8705622B2 (en) * 2008-04-10 2014-04-22 Qualcomm Incorporated Interpolation filter support for sub-pixel resolution in video coding
US9967590B2 (en) * 2008-04-10 2018-05-08 Qualcomm Incorporated Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter
KR101733612B1 (ko) 2009-10-22 2017-05-08 톰슨 라이센싱 비디오 엔코딩 및 디코딩을 위한 dc 인트라 예측 모드의 방법 및 장치
KR101682147B1 (ko) * 2010-04-05 2016-12-05 삼성전자주식회사 변환 및 역변환에 기초한 보간 방법 및 장치
US9232230B2 (en) * 2012-03-21 2016-01-05 Vixs Systems, Inc. Method and device to identify motion vector candidates using a scaled motion search
US9485515B2 (en) 2013-08-23 2016-11-01 Google Inc. Video coding using reference motion vectors
US10015515B2 (en) 2013-06-21 2018-07-03 Qualcomm Incorporated Intra prediction from a predictive block
US10313682B2 (en) 2013-08-26 2019-06-04 Qualcomm Incorporated Determining regions when performing intra block copying
US20150071357A1 (en) 2013-09-12 2015-03-12 Qualcomm Incorporated Partial intra block copying for video coding
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US10531116B2 (en) 2014-01-09 2020-01-07 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding
EP3189660B1 (en) 2014-09-30 2023-07-12 HFI Innovation Inc. Method of adaptive motion vector resolution for video coding
US10212445B2 (en) * 2014-10-09 2019-02-19 Qualcomm Incorporated Intra block copy prediction restrictions for parallel processing
SG10201900582XA (en) * 2015-03-02 2019-02-27 Hfi Innovation Inc Method and apparatus for intrabc mode with fractional-pel block vector resolution in video coding
US20160337662A1 (en) 2015-05-11 2016-11-17 Qualcomm Incorporated Storage and signaling resolutions of motion vectors

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015082839A (ja) * 2013-10-22 2015-04-27 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 動き補償方法、画像符号化方法、画像復号方法、画像符号化装置及び画像復号装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
K. McCann et al., High Efficiency Video Coding (HEVC) Test Model 16 (HM 16) Encoder Description, JCT-VC of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, JCTVC-R1002(2014.10.14.)* *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019194501A1 (ko) * 2018-04-01 2019-10-10 엘지전자 주식회사 움직임 벡터 리파인먼트에 기반한 영상 코딩 방법 및 그 장치

Also Published As

Publication number Publication date
JP2018521539A (ja) 2018-08-02
EP3295672C0 (en) 2023-10-11
CN107592972A (zh) 2018-01-16
TWI762443B (zh) 2022-05-01
WO2016183216A1 (en) 2016-11-17
KR102579519B1 (ko) 2023-09-15
TW201707448A (zh) 2017-02-16
EP3295672B1 (en) 2023-10-11
CN107592972B (zh) 2020-08-07
EP3295672A1 (en) 2018-03-21
US20160337661A1 (en) 2016-11-17
AU2016261848A1 (en) 2017-11-02
US10200713B2 (en) 2019-02-05
BR112017024275A2 (pt) 2018-07-24
JP6783799B2 (ja) 2020-11-11

Similar Documents

Publication Publication Date Title
KR102579519B1 (ko) 비디오 데이터의 특정 픽처 내의 인터 코딩을 위한 검색 영역 결정
US10863171B2 (en) Using a current picture as a reference for video coding
WO2020262286A1 (en) Systems and methods for performing an adaptive resolution change in video coding
US9832467B2 (en) Deblock filtering for intra block copying
KR101963054B1 (ko) 인트라 bc 및 인터 단일화
KR101726484B1 (ko) 크로마 슬라이스-레벨 qp 오프셋 및 디블록킹
US9521425B2 (en) Disparity vector derivation in 3D video coding for skip and direct modes
US10536701B2 (en) Video coding using adaptive motion vector resolution
US20160337662A1 (en) Storage and signaling resolutions of motion vectors
JP2021525981A (ja) ブロックベースの適応ループフィルタ(alf)の設計およびシグナリング
US20150373362A1 (en) Deblocking filter design for intra block copy
KR20170066402A (ko) 비디오 코딩에서의 적응적 컬러 변환을 위한 qp 도출 및 오프셋
KR20170047234A (ko) 통합된 인트라 블록 복사 및 인터 예측
KR20190089890A (ko) 비디오 코딩에서의 양방향 필터 사용의 표시

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant