KR101662139B1 - 고효율 비디오 코딩을 위한 움직임 정보의 효율적인 저장 - Google Patents

고효율 비디오 코딩을 위한 움직임 정보의 효율적인 저장 Download PDF

Info

Publication number
KR101662139B1
KR101662139B1 KR1020147013237A KR20147013237A KR101662139B1 KR 101662139 B1 KR101662139 B1 KR 101662139B1 KR 1020147013237 A KR1020147013237 A KR 1020147013237A KR 20147013237 A KR20147013237 A KR 20147013237A KR 101662139 B1 KR101662139 B1 KR 101662139B1
Authority
KR
South Korea
Prior art keywords
motion
picture
information
motion information
pictures
Prior art date
Application number
KR1020147013237A
Other languages
English (en)
Other versions
KR20140085515A (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 KR20140085515A publication Critical patent/KR20140085515A/ko
Application granted granted Critical
Publication of KR101662139B1 publication Critical patent/KR101662139B1/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
    • 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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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

Landscapes

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

Abstract

디지털 화상들과 연관된 도시된 움직임을 기술하는 움직임 정보의 저장을 신호하기 위한 방법, 장치, 제조품 및 메모리 구조가 기술된다. 일 실시예에서, 본 방법은 이전 코딩 화상과 관련하여 저장된 움직임 벡터의 현재 코딩 프레임의 움직임 벡터로의 대체를 시그널링하는 단계를 포함한다. 다른 신호는 시퀀스의 모든 화상들에 대한 움직임 벡터 대체를 나타내는데 사용될 수 있다.

Description

고효율 비디오 코딩을 위한 움직임 정보의 효율적인 저장{EFFICIENT STORAGE OF MOTION INFORMATION FOR HIGH EFFICIENCY VIDEO CODING}
<관련 출원 상호 참조>
본 출원은, 2011년 11월 21일에 출원된, 웨 유(Yue Yu), 크리트 패뉴소폰(Krit Panusopone) 및 리민 왕(Limin Wang)에 의한, "HEVC를 위한 공존 화상의 새로운 메모리 압축(NEW MEMORY COMPRESS OF COLLOCATED PICTURE FOR HEVC)"이라는 제목의 미국 임시 특허 출원 번호 제61/562,418호; 2011년 11월 18일에 출원된, 웨 유, 크리트 패뉴소폰 및 리민 왕에 의한, "HEVC를 위한 공존 화상의 메모리 압축(MEMORY COMPRESS OF COLLOCATED PICTURE FOR HEVC)"이라는 제목의 미국 임시 특허 출원 번호 제61/561,779호; 및 2012년 2월 5일에 출원된, 웨 유, 크리트 패뉴소폰 및 리민 왕에 의한, "HEVC를 위한 공존 화상을 신호하기 위한 효과적인 방법(EFFECTIVE WAY FOR SIGNALING COLLOCATED PICTURE FOR HEVC)"이라는 제목의 미국 임시 특허 출원 번호 제61/595,141호의 이익을 주장하며, 상기 모든 출원들은 본 명세서에서 참조용으로 인용된다.
본 발명은 데이터를 인코딩하기 위한 시스템들 및 방법들에 관한 것으로, 특히, 움직임을 저장하고 고효율 비디오 코딩 데이터와 연관된 데이터를 검색하기 위한 시스템 및 방법에 관한 것이다.
미디어 프로그램들의 생성, 송신 및 재생과 연관된 기술들이 신속하게 성장하고 있다. 이 기술들은 훨씬 더 작은 크기로 압축하여 송신, 저장, 수신 및 재생을 용이하게 하도록 미디어 프로그램들의 디지털 버전들이 인코딩될 수 있게 하는 코딩 방식들을 포함한다. 이 기술들은 개인용 비디오 레코더(PVR), 주문형 비디오 시스템(VOD), 다중 채널 미디어 프로그램 제공물, 대화식 이동 전화 및 미디어 프로그램 송신에 적용된다.
압축 없이, 디지털 미디어 프로그램들은 상업적으로 허용 가능한 비용으로 송신 및/또는 저장하기에는 통상 너무 크다. 그러나, 이러한 프로그램들의 압축은 이러한 디지털 미디어 프로그램들의 송신 및 저장이 상업적으로 실현 가능할 뿐만 아니라 다반사가 되게 했다.
처음에, 미디어 프로그램들의 송신은 케이블 텔레비전 및 위성 등의 고대역폭 송신 매체를 통해 송신된 저 내지 중간 해상도 이미지들을 수반했다. 그러나, 이러한 송신은 컴퓨터 네트워크, WiFi, 모바일 TV 및 3세대 및 4세대(3G 및 4G) 네트워크들을 통한 고정 장치 및 이동 장치로의 인터넷 송신 등의 더 낮은 대역폭 송신 매체를 포함하도록 발전돼 왔다. 또한, 이러한 송신은 중요한 송신 대역폭 및 저장 요구 사항들을 갖는, 고화질 텔레비전(HDTV) 등의 고화질 미디어 프로그램들을 포함하도록 발전돼 왔다.
압축 비디오 신호들의 인코딩 및 디코딩은 통상 신호들의 인코더 및 신호들의 디코더에 의한 대량의 데이터의 저장 및 검색을 수반한다. 따라서, 이러한 인코더들 및 디코더들은 증가된 저장 및 처리 용량을 요구한다. 인코더 및 디코더에서 요구되는 저장 및 처리를 감소시키는 시스템 및 방법이 필요하다. 본 발명은 이러한 필요를 만족시킨다.
상술된 요구 사항들을 다루기 위해, 본 문서는 디지털 화상들과 연관된 도시된 움직임을 기술하는 움직임 정보의 저장을 신호하기 위한 방법, 장치, 제조품 및 메모리 구조가 기술된다. 일 실시예에서, 본 방법은 복수의 디지털 화상들의 시퀀스의 제1 화상을 코딩하여 제1 움직임 정보를 생성하는 단계 - 제1 움직임 정보는 움직임을 기술하고 제1 화상과 연관됨 - , 제1 움직임 정보가 움직임을 기술하고 제1 화상의 코딩에 시간적으로 앞서 코딩된 제2 디지털 화상과 연관된 제2 움직임 정보를 대체해야 하는지를 결정하는 단계, 및 제1 움직임 정보가 제2 움직임 정보를 대체해야 하는 경우, 제2 움직임 정보를 메모리의 제1 움직임 정보로 대체하는 단계 및 제1 값을 갖는 제1 움직임 신호 정보를 갖는 비트 스트림을 제공하는 단계, 반면, 제1 움직임 정보가 제2 움직임 정보를 대체하지 않아야 하는 경우, 메모리에서 제2 움직임 정보를 보유하는 단계 및 제2 값을 갖는 제1 움직임 신호 정보를 갖는 비트 스트림을 제공하는 단계를 포함한다.
다른 실시예에서, 본 방법은 메모리에 저장된 제2 움직임 정보에 따라 복수의 디지털 화상들의 시퀀스의 제1 화상을 디코딩하여 제1 화상과 연관된 제1 움직임 정보를 생성하는 단계 - 제2 움직임 정보는 움직임을 기술하고 제1 디지털 화상의 디코딩에 시간적으로 앞서 디코딩된 제2 디지털 화상과 연관됨 - , 및 제1 화상과 연관된 제1 움직임 신호 정보가 제1 값을 갖는 경우에만 메모리의 제2 움직임 정보를 제1 움직임 정보로 대체하고, 제1 움직임 신호 정보가 제2 값을 갖는 경우 메모리에서 제2 움직임 정보를 보유하는 단계를 포함한다.
다른 실시예들은, 예를 들어, 상술된 동작들을 실행하기 위한 명령어들을 포함하는 명령어들을 저장하는 메모리에 통신상 연결된 프로세서에 의해 입증된 상술된 방법들을 실행하기 위한 장치를 포함한다.
논의된 특징들, 기능들 및 장점들은 본 발명의 각종 실시예들에서 독립적으로 달성될 수 있거나, 또는 또 다른 실시예들에서 조합될 수 있으며, 그 추가의 세부 사항들은 이하의 설명 및 도면들을 참조해서 알 수 있다.
이제 도면들을 참조하면, 유사한 참조 부호들은 도처에서 대응 부분들을 나타낸다.
도 1은 오디오 및/또는 비디오 정보의 송신 및/또는 저장 및 검색에 사용될 수 있는 비디오 코딩-디코딩 시스템의 일례의 실시예를 도시한 도면이다.
도 2a는 인코딩된 AV 정보가 송신되어 다른 로케이션에서 수신되는 코덱 시스템(200A)의 일 실시예의 도면이다.
도 2b는, 이하에 코덱 저장 시스템이라고 하는, 인코딩된 정보가 저장되어 차후에 프레젠테이션을 위해 검색되는 코덱 시스템의 일례의 실시예를 도시한 도면이다.
도 3은 소스 인코더의 일 실시예를 도시한 블록도이다.
도 4는 화상 시퀀스의 화상들 중 한 화상 등의 AV 정보의 한 화상을 도시한 도면이다.
도 5는 코딩 트리 블록의 코딩 유닛들로의 일례의 분할을 도시한 도면이다.
도 6은 도 5에 도시된 코드 트리 블록 분할을 위한 대표 쿼드트리 및 데이터 파라미터들의 표현을 도시한 도면이다.
도 7은 코딩 유닛의 하나의 또는 그 이상의 예측 유닛들로의 분할을 도시한 도면이다.
도 8은 4개의 예측 유닛들로 분할된 코딩 유닛 및 연관된 집합의 변환 유닛들을 도시한 도면이다.
도 9는 도 8의 일례의 코딩 유닛과 연관된 변환 유닛들에 대한 RQT 코드트리를 도시한 도면이다.
도 10은 예측 유닛들의 공간 예측을 도시한 도면이다.
도 11은 시간 예측을 도시한 도면이다.
도 12는 움직임 벡터 예측 변수들(MVP)의 사용을 도시한 도면이다.
도 13은 기준 화상 리스트들의 사용의 일례를 도시한다.
도 14는 상술된 표준에 따라 인코더에 의해 실행된 프로세스들을 도시한 도면이다.
도 15는 최근 HEVC 표준에 따른 디코딩 시의 디코더에 의한 collocated_from_10_flag의 사용을 도시한다.
도 16은 움직임 벡터 정보가 효율적으로 저장 및 사용될 수 있는 방법을 도시한 도면이다.
도 17a 및 17b는 도 16에 기술된 동작들을 실행하기 위한 일반화된 프로세스의 실례를 도시한 도면이다.
도 18은 제1 화상과 연관된 제1 움직임 정보가 제2 움직임 정보를 대체해야 하는지를 결정하기 위한 일례의 방법 단계들을 도시한 도면이다.
도 19는 움직임 정보의 SPS-레벨 효율적 저장을 구현하는데 사용될 수 있는 일례의 처리 단계들을 도시한 도면이다.
도 20은 상술된 바와 같이 인코딩된 비트 스트림을 디코딩하는데 사용될 수 있는 일례의 동작들을 도시한 도면이다.
도 21은 본 발명의 실시예들을 구현하는데 사용될 수 있는 일례의 프로세싱 시스템(2100)을 도시한다.
이하의 설명에서, 본 발명의 일부분을 형성하며, 본 발명의 수개의 실시예들이 실례로서 도시된 첨부 도면들에 대한 참조가 이루어진다. 다른 실시예들이 사용될 수 있으며, 구조적 변화들이 본 발명의 범위로부터 벗어나지 않은 채로 이루어질 수 있음을 알 것이다.
오디오-비주얼 정보 송수신 및 저장
도 1은 오디오 및/또는 비디오 정보의 송신 및/또는 저장 및 검색에 사용될 수 있는 비디오 코딩-디코딩(코덱) 시스템(100)의 일례의 실시예를 도시한 도면이다. 코덱 시스템(100)은 오디오-비주얼(AV) 정보(102)를 수용하고 AV 정보(102)를 처리하여 인코딩된 (압축) AV 정보(106)를 생성하는 인코딩 시스템(104) 및 인코딩된 AV 정보(106)를 처리하여 복구된 AV 정보(114)를 생성하는 디코딩 시스템(112)을 포함한다. 인코딩 및 디코딩 프로세스들이 무손실이 아니기 때문에, 복구된 AV 정보(114)는 초기 AV 정보(102)와 동일하지 않지만, 인코딩 프로세스들 및 파라미터들의 신중한 선택으로, 복구된 AV 정보(114)와 미처리 AV 정보(102) 간의 차이들은 인간의 지각에 허용될만하다.
송수신(송신 및 수신) 또는 저장/검색 시스템(108)에 의해 실행되는 바와 같이, 인코딩된 AV 정보(106)는 통상 디코딩 및 프레젠테이션 전에 송신 또는 저장 및 검색된다. 송수신 손실들은 상당할 수 있지만, 저장/검색 손실들은 통상 최소이거나 또는 존재하지 않아서, 디코딩 시스템(112)에 제공되는 송수신 AV 정보(110)는 통상 인코딩된 AV 정보(106)와 동일하거나 또는 상당히 동일하다.
도 2a는 인코딩된 AV 정보(106)가 송신되어 다른 로케이션에서 수신되는 코덱 시스템(200A)의 일 실시예의 도면이다. 송신 세그먼트(230)는 입력 AV 정보(102)를 송신에 적합한 신호로 변환하여, 변환된 신호를 송신 채널(212)을 통해 수신 세그먼트(232)에 송신한다. 수신 세그먼트(232)는 송신된 신호를 수신하고, 수신된 신호를 프레젠테이션을 위해 복구된 AV 정보(114)로 변환한다. 상술된 바와 같이, 코딩 및 송신 손실들 및 오류들로 인해, 복구된 AV 정보(114)는 송신 세그먼트(230)에 제공된 AV 정보(102)보다 더 낮은 품질일 수 있다. 그러나, 오류 정정 시스템들은 이러한 오류들을 감소 또는 제거하기 위해 포함될 수 있다. 예를 들어, 인코딩된 AV 정보(106)는 중복 정보를 추가함으로써 인코딩된 순방향 오류 정정(FEC)일 수 있으며, 이러한 중복 정보는 수신 세그먼트(230)에서 오류들을 식별 및 제거하는데 사용될 수 있다.
송신 세그먼트(102)는 AV 정보(102)의 다수의 소스들을 인코딩하기 위해 하나의 또는 그 이상의 소스 인코더들(202)을 포함한다. 소스 인코더(202)는 주로 압축을 위해 AV 정보(102)를 인코딩하여 인코딩된 AV 정보(106)를 생성하며, 더 후술되는 바와 같이, 예를 들어, 프로세서 및 MPEG-1, MPEG-2, MPEG-4 AVC/H.264, HEVC 또는 유사한 코덱 등의 코덱을 구현하는 명령어들을 저장하는 관련 메모리를 포함할 수 있다.
코덱 시스템(200A)은 도 2a에서 점선들로 표시된 선택적인 요소들을 또한 포함할 수 있다. 이 선택적인 요소들은 비디오 멀티플렉스 인코더(204), 인코딩 제어기(208) 및 비디오 디멀티플렉싱 디코더(218)를 포함한다. 선택적인 비디오 멀티플렉스 인코더(204)는 선택적인 인코딩 제어기(208)에 의해 제공된 하나의 또는 그 이상의 파라미터들에 따라 연관된 복수의 소스 인코더(들)(202)로부터 인코딩된 AV 정보(106)를 멀티플렉싱한다. 이러한 멀티플렉싱은 통상 시간 도메인에서 달성되고, 데이터 패킷 기반이다.
일 실시예에서, 비디오 멀티플렉스 인코더(204)는 송신에 필요한 대역폭을 최소화하도록 복수의 소스 인코더들(202)로부터 인코딩된 AV 정보(106)를 결합하는 통계적 멀티플렉서를 포함한다. 이는, 각각의 소스 인코더(202)로부터의 코딩된 AV 정보(106)의 순간적인 비트율이 AV 정보(102)의 콘텐츠에 따라 시간에 따라 매우 변할 수 있기 때문에, 가능하다. 예를 들어, 다량의 세부 사항들 및 움직임을 갖는 장면들(예를 들어, 스포츠 이벤트들)은 통상 움직임 또는 세부 사항이 거의 없는 장면들(예를 들어, 초상화 다이얼로그)보다 더 높은 비트율로 인코딩된다. 각각의 소스 인코더(202)가 높은 순간 비트율을 갖는 정보를 생성할 수 있는 반면, 다른 소스 인코더(202)는 낮은 순간 비트율을 갖는 정보를 생성하기 때문에, 또한, 인코딩 제어기(208)가 순간 비트율에 영향을 주는 특정 성능 파라미터들에 따라 AV 정보(106)를 인코딩하라고 소스 인코더들(202)에게 명령할 수 있기 때문에, 소스 인코더들(106) 각각으로부터의 신호들(각각 일시적으로 변하는 순간 비트율을 가짐)이 멀티플렉싱된 스트림(205)의 순간 비트율을 최소화하기 위해 최적 방법으로 함께 결합될 수 있다.
상술된 바와 같이, 소스 인코더(202) 및 비디오 멀티플렉스 인코더(204)는 결합된 비디오 신호의 순간 비트율을 최소화하기 위해 코딩 제어기(208)에 의해 선택적으로 제어될 수 있다. 일 실시예에서, 이는 코딩된 비디오 신호를 임시로 저장하는 송신 버퍼(206)로부터의 정보를 사용해서 달성되며, 버퍼(206)의 가득참을 나타낼 수 있다. 이는 소스 인코더(202) 또는 비디오 멀티플렉스 코더(204)에서 실행되는 코딩이 송신 버퍼(206)에 계속 남아 있는 저장 함수가 되게 할 수 있다.
송신 세그먼트(230)는 수신 세그먼트(232)로의 송신을 위해 비디오 신호를 더 인코딩하는 송신 인코더(210)를 또한 포함할 수 있다. 송신 인코딩은, 예를 들어, 상술된 FEC 코딩 및/또는 선택되는 송신 매체에 대한 멀티플렉싱 방식으로의 코딩을 포함할 수 있다. 예를 들어, 송신이 위성 또는 지상 송신기들에 의한 것이면, 송신 인코더(114)는 직교 진폭 변조(QAM) 또는 유사한 변조 기술을 통해 송신 전에 신호를 신호점(a signal constellation)으로 인코딩할 수 있다. 또한, 인코딩된 비디오 신호가 인터넷 프로토콜 장치 및 인터넷을 통해 스트리밍될 것이면, 송신은 적합한 프로토콜에 따라 신호를 인코딩한다. 또한, 더 후술되는 바와 같이, 인코딩된 신호가 이동 전화를 통해 송신될 것이면, 적합한 코딩 프로토콜이 사용된다.
수신 세그먼트(232)는 송신 인코더(214)에서 사용되는 코딩 방식과 상보적인 디코딩 방식을 사용해서 송신 코더(210)에 의해 코딩된 신호를 수신하기 위해 송신 디코더(214)를 포함한다. 디코딩된 수신 신호는 선택적인 수신 버퍼(216)에 의해 일시적으로 저장될 수 있으며, 수신 신호가 다수의 비디오 신호들을 포함하면, 수신 신호는 비디오 멀티플렉스 코더(204)에 의해 멀티플렉싱된 비디오 신호들로부터 관심 있는 비디오 신호를 추출하기 위해 비디오 멀티플렉스 디코더(218)에 의해 멀티플렉스 디코딩된다. 마지막으로, 관심 있는 비디오 신호는 AV 정보(102)를 인코딩하기 위해 소스 인코더(202)에 의해 사용된 코덱에 상보적인 디코딩 방식 또는 코덱을 사용해서 소스 디코더(220)에 의해 디코딩된다.
일 실시예에서, 송신된 데이터는 서버(송신 세그먼트(230)를 나타냄)로부터 클라이언트(수신 세그먼트(232)를 나타냄)로 송신된 패킷화된 비디오 스트림을 포함한다. 이러한 경우에, 송신 인코더(210)는 데이터를 패킷화하고 네트워크 추상 층(NAL) 유닛들을 네트워크 패킷들에 내장할 수 있다. NAL 유닛들은 헤더 및 코딩된 요소들을 갖는 데이터 컨테이너를 정의하고, 비디오 데이터의 비디오 프레임 또는 다른 슬라이스에 대응할 수 있다.
송신될 압축 데이터는 광역 통신망(WAN) 또는 근거리 통신망(LAN)을 포함할 수 있는 송신 채널(212)을 통해 패킷화 및 송신될 수 있다. 이러한 네트워크는, 예를 들어, 와이파이, 이더넷 네트워크, 인터넷 네트워크 또는 수개의 상이한 네트워크들로 구성된 혼합 네트워크 등의 무선 네트워크를 포함할 수 있다. 이러한 통신은 통신 프로토콜, 예를 들어, 실시간 전송 프로토콜(RTP), 사용자 데이터그램 프로토콜(UDP) 또는 임의의 다른 타입의 통신 프로토콜을 통해 영향을 받을 수 있다. 상이한 패킷화 방법들은 비트스트림의 각각의 네트워크 추상 층(NAL) 유닛을 위해 사용될 수 있다. 한 경우에, 하나의 NAL 유닛 크기는 단편화되지 않고 네트워크를 통해 송신될 수 있는 최대 패킷 크기에 대응하는 최대 전송 유닛(MTU) 크기보다 더 작다. 이러한 경우에, NAL 유닛은 단일 네트워크 패킷에 내장된다. 다른 경우에, 다수의 전체 NAL 유닛들이 단일 네트워크 패킷에 포함된다. 3번째 경우에, 하나의 NAL 유닛은 너무 커서 단일 네트워크 패킷으로 송신될 수 없어서, 수개의 단편 NAL 유닛들로 분할되며, 각각의 단편 NAL 유닛은 개별 네트워크 패킷으로 송신된다. 단편 NAL 유닛은 통상 디코딩을 위해 연속해서 송신된다.
수신 세그먼트(232)는 패킷화된 데이터를 수신하고, 네트워크 패킷으로부터의 NAL 유닛들을 재구성한다. 단편 NAL 유닛들의 경우, 클라이언트는 원래의 NAL 유닛을 재구성하기 위해 단편 NAL 유닛들로부터의 데이터를 연결한다. 클라이언트(232)는 수신 및 재구성된 데이터 스트림을 디코딩하고 디스플레이 장치에서 비디오 이미지들을 재생하며 확성기에 의해 오디오 데이터를 재생한다.
도 2b는, 이하에 코덱 저장 시스템(200B)이라고 하는, 인코딩된 정보가 저장되어 차후에 프레젠테이션을 위해 검색되는 코덱 시스템의 일례의 실시예를 도시한 도면이다. 본 실시예는, 예를 들어, 디지털 비디오 레코더(DVR), 플래시 드라이브, 하드 드라이브 또는 유사한 장치에 정보를 국부적으로 저장하는데 사용될 수 있다. 본 실시예에서, AV 정보(102)는 소스 인코더(202)에 의해 인코딩되고, 기억 장치(236)에 저장되기 전에 저장 버퍼(234)에 의해 선택적으로 버퍼링되는 소스이다. 기억 장치(236)는 일시적으로 또는 확장된 시간 기간 동안 비디오 신호를 저장할 수 있으며, 하드 드라이브, 플래시 드라이브, RAM 또는 ROM을 포함할 수 있다. 저장된 AV 정보는 그 후 검색되며, 검색 버퍼(238)에 의해 선택적으로 버퍼링되고, 소스 디코더(220)에 의해 디코딩된다.
도 2c는 HEVC 데이터를 송신 및 수신하는데 사용될 수 있는 코딩 시스템 또는 인코더(202) 및 디코딩 시스템 또는 디코더(220)를 포함하는 일례의 콘텐츠 분배 시스템(200C)을 도시한 다른 도면이다. 일부 실시예들에서, 코딩 시스템(202)은 입력 인터페이스(256), 제어기(241), 카운터(242), 프레임 메모리(243), 인코딩 유닛(244), 송신기 버퍼(267) 및 출력 인터페이스(257)를 포함할 수 있다. 디코딩 시스템(220)은 수신기 버퍼(259), 디코딩 유닛(260), 프레임 메모리(261) 및 제어기(267)를 포함할 수 있다. 코딩 시스템(202) 및 디코딩 시스템(220)은 압축 비트 스트림을 전달할 수 있는 송신 경로를 통해 서로 연결될 수 있다. 코딩 시스템(202)의 제어기(241)는 송신기 버퍼(267) 또는 수신기 버퍼(259)의 용량에 기초하여 송신될 데이터의 양을 제어할 수 있으며, 시간 단위에 대한 데이터의 양 등의 다른 파라미터들을 포함할 수 있다. 제어기(241)는 디코딩 시스템(220)의 수신 신호 디코딩 동작의 실패의 발생을 방지하기 위해 인코딩 유닛(244)을 제어할 수 있다. 제어기(241)는 프로세서일 수 있으며, 또는 무제한 일례로서, 프로세서, 랜덤 액세스 메모리 및 판독 전용 메모리를 갖는 마이크로컴퓨터를 포함할 수 있다.
무제한 일례로서, 콘텐츠 제공자로부터 제공된 소스 화상들(246)은 비디오 시퀀스의 소스 화상들을 포함하는 프레임들의 비디오 시퀀스를 포함할 수 있다. 소스 화상들(246)은 압축될 수도 압축되지 않을 수도 있다. 소스 화상들(246)이 압축되지 않으면, 코딩 시스템(202)은 인코딩 기능을 가질 수 있다. 소스 화상들(246)이 압축되면, 코딩 시스템(202)은 트랜스코딩 기능을 가질 수 있다. 코딩 유닛들은 제어기(241)를 사용해서 소스 화상들로부터 유도될 수 있다. 프레임 메모리(243)는 소스 화상들(246)로부터 들어오는 프레임들을 저장하는데 사용될 수 있는 제1 영역 및 프레임들을 판독하여 인코딩 유닛(244)에 출력하는데 사용될 수 있는 제2 영역을 가질 수 있다. 제어기(241)는 영역 전환 제어 신호(249)를 프레임 메모리(243)에 출력할 수 있다. 영역 전환 제어 신호(249)는, 제1 영역 또는 제2 영역이 사용될 것인 지를 나타낼 수 있다.
제어기(241)는 인코딩 제어 신호(250)를 인코딩 유닛(244)에 출력할 수 있다. 인코딩 제어 신호(250)는, 소스 화상에 기초하여 코딩 유닛들을 준비하는 등, 인코딩 유닛(202)이 인코딩 동작을 개시하도록 야기할 수 있다. 제어기(241)로부터의 인코딩 제어 신호(250)에 응답해서, 인코딩 유닛(244)은 코딩 유닛들과 연관된 소스 화상들에 기초하여 비디오 압축 데이터를 생성하는 준비된 코딩 유닛들을 처리하는 예측 코딩 프로세스 또는 변환 코딩 프로세서 등의 고효율 인코딩 프로세서에 준비된 코딩 유닛들을 판독하기를 시작할 수 있다.
인코딩 유닛(244)은 비디오 패킷들을 포함하는 패킷화 기본 흐름(PES)의 생성된 비디오 압축 데이터를 패키지화할 수 있다. 인코딩 유닛(244)은 제어 정보 및 프로그램 타임 스탬프(PTS)를 사용해서 비디오 패킷들을 인코딩된 비디오 신호(248)로 매핑할 수 있으며, 인코딩된 비디오 신호(248)는 송신기 버퍼(267)에 송신될 수 있다.
생성된 비디오 압축 데이터를 포함하는 인코딩된 비디오 신호(248)는 송신기 버퍼(267)에 저장될 수 있다. 정보량 카운터(242)는 송신기 버퍼(267)의 데이터의 총량을 나타내도록 증분될 수 있다. 데이터가 검색되어 버퍼로부터 제거됨에 따라, 카운터(242)는 송신기 버퍼(267)의 데이터의 양을 반영하도록 감소될 수 있다. 점령 영역 정보 신호(253)는 카운터(242)가 증분 또는 감소될 수 있도록 인코딩 유닛(244)으로부터의 데이터가 추가되었는지 또는 송신기 버퍼(267)로부터 제거되었는 지를 나타내기 위해 카운터(242)에 송신될 수 있다. 제어기(241)는 송신기 버퍼(267)에서 오버플로 또는 언더플로가 발생하는 것을 예상, 방지, 예방 및/또는 검출하기 위해 전달될 수 있는 점령 영역 정보(253)에 기초하여 인코딩 유닛(244)에 의해 생성된 비디오 패킷들의 생성을 제어할 수 있다.
정보량 카운터(242)는 제어기(241)에 의해 생성 및 출력된 선정된 신호(254)에 응답해서 재설정될 수 있다. 정보량 카운터(242)가 재설정된 후에, 인코딩 유닛(244)에 의해 출력된 데이터를 카운트하고 생성된 비디오 압축 데이터 및/또는 비디오 패킷들의 양을 획득할 수 있다. 정보량 카운터(242)는 획득된 정보의 양을 대표하는 정보량 신호(255)를 제어기(241)에 제공할 수 있다. 제어기(241)는 송신기 버퍼(267)에서 오버플로가 없도록 인코딩 유닛(244)을 제어할 수 있다.
일부 실시예들에서, 디코딩 시스템(220)은 입력 인터페이스(266), 수신기 버퍼(259), 제어기(267), 프레임 메모리(261), 디코딩 유닛(260) 및 출력 인터페이스(267)를 포함할 수 있다. 디코딩 시스템(220)의 수신기 버퍼(259)는 소스 화상들(246)로부터의 소스 화상들에 기초하여 수신된 비디오 압축 데이터 및 비디오 패킷들을 포함하는 압축 비트 스트림을 일시적으로 저장할 수 있다. 디코딩 시스템(220)은 수신 데이터의 비디오 패킷들과 연관된 제어 정보 및 프레젠테이션 타임 스탬프 정보를 판독하고, 제어기(220)에 적용될 수 있는 프레임 수 신호(263)를 출력할 수 있다. 제어기(267)는 선정된 간격마다 프레임들의 카운트 수를 감독할 수 있다. 무제한 일례로서, 제어기(267)는 디코딩 유닛(260)이 디코딩 동작을 완료할 때마다 프레임들의 카운트 수를 감독할 수 있다.
일부 실시예들에서, 수신기 버퍼(259)가 선정된 용량에 있음을 프레임 수 신호(263)가 나타낼 때, 제어기(267)는 디코딩 개시 신호(264)를 디코딩 유닛(260)에 출력할 수 있다. 수신기 버퍼(259)가 선정된 용량보다 적음을 프레임 수 신호(263)가 나타낼 때, 제어기(267)는 프레임들의 카운트 수가 선정된 양과 동일하게 되는 상황이 발생하기를 기다릴 수 있다. 제어기(267)는 그러한 상황이 발생할 때 디코딩 개시 신호(263)를 출력할 수 있다. 무제한 일례로서, 수신기 버퍼(259)가 선정된 용량에 있음을 프레임 수 신호(263)가 나타낼 때, 제어기(267)는 디코딩 개시 신호(264)를 출력할 수 있다. 인코딩된 비디오 패킷들 및 비디오 압축 데이터는 인코딩된 비디오 패킷들과 연관된 프레젠테이션 타임 스탬프들에 기초하여 단조로운 순서(즉, 증분 또는 감소)로 디코딩될 수 있다.
디코딩 개시 신호(264)에 응답해서, 디코딩 유닛(260)은 수신기 버퍼(259)로부터의 비디오 패킷들과 연관된 화상과 연관된 프레임 및 압축 비디오 데이터와 연관된 하나의 화상에 이르는 데이터를 디코딩할 수 있다. 디코딩 유닛(260)은 디코딩된 비디오 신호(269)를 프레임 메모리(261)에 기록할 수 있다. 프레임 메모리(261)는 디코딩된 비디오 신호가 기록되는 제1 영역 및 출력 인터페이스(267)에 디코딩된 화상들(262)을 판독하는데 사용되는 제2 영역을 가질 수 있다.
각종 실시예들에서, 코딩 시스템(202)은 헤드엔드에서 트랜스코더 또는 인코딩 장치에 통합되거나 또는 달리 연관될 수 있으며, 디코딩 시스템(220)은 이동 장치, 셋탑 박스 또는 트랜스코더 등의 다운스트림 장치에 통합되거나 또는 달리 연관될 수 있다.
소스 인코딩/디코딩
상술된 바와 같이, 인코더들(202)은 압축 알고리즘들을 사용해서, AV 정보(102)의 원래의 비디오 시퀀스들보다 더 작은 크기의 비트 스트림들 및/또는 파일들을 생성한다. 이러한 압축은 원래의 시퀀스들의 공간 및 시간 중복들을 감소시킴으로써 가능해진다.
종래 기술의 인코더들(202)은, 본 명세서에서 참조용으로 인용된, 특히, 공개물 "일반 시청각 서비스들을 위한 고급 비디오 코딩(Advanced Video Coding for Generic Audiovisual Services)"(2005년 3월)의 형태로, ITU의 "VCEG(Video Coding Expert Group)" 및 ISO의 "MPEG(Moving Picture Experts Group)" 사이에서 개발된 비디오 압축 표준 H.264/MPEG-4 AVC("Advanced Video Coding")에 순응하는 인코더들을 포함한다.
HEVC "고효율 비디오 코딩(High Efficiency Video Coding)"(때때로 H.265라고 공지됨)은 H.264/MPEG-4 AVC를 대체할 것으로 예상된다. HEVC는, 더 후술되는 바와 같이, H.264/AVC에서 정의된 코딩 엔티티들의 일반화인 새로운 코딩 도구들 및 엔티티들을 소개한다. CS39543/CS39549/CS39892
도 3은 소스 인코더(202)의 일 실시예를 도시한 블록도이다. 소스 인코더(202)는 AV 정보(102)를 수용하고, AV 정보(102)를 샘플링하는 샘플러(302)를 사용하여, 복수의 필셀들을 각각 갖는 연속 디지털 이미지들 또는 화상들의 시퀀스(303)를 생성한다. 화상은 프레임 또는 필드를 포함할 수 있으며, 프레임은 공지된 시간 간격 중에 포착된 완전한 이미지이고, 필드는 부분적인 이미지를 구성하는 홀수 또는 짝수 주사선들의 집합이다.
샘플러(302)는 비압축 화상 시퀀스(303)를 생성한다. 각각의 디지털 화상은 화상을 함께 구성하는 픽셀들에 대한 정보를 나타내는 복수의 계수들을 갖는 하나의 또는 그 이상의 행렬들에 의해 표현될 수 있다. 픽셀의 값은 휘도 또는 다른 정보에 대응할 수 있다. 수개의 성분들이 각각의 픽셀과 연관되는 경우에(예를 들어, 레드-그린-블루 성분들 또는 휘도-색차 성분들), 이 성분들 각각은 개별적으로 처리될 수 있다.
이미지들은 화상의 일부분을 구성할 수 있는 "슬라이스들"로 세그먼트화될 수 있으며, 또는 전체 화상을 구성할 수 있다. H.264 표준에서, 이 슬라이스들은 매크로블록들(일반적으로 16 픽셀 × 16 픽셀 크기의 블록들)이라고 하는 코딩 엔티티들로 분할되며, 각각의 매크로블록은 결국 상이한 크기들의 데이터 블록들(102), 예를 들어, 4×4, 4×8, 8×4, 8×8, 8×16, 16×8로 분할될 수 있다. HEVC는 매크로블록의 개념을 넘어서 코딩 엔티티의 개념을 확장 및 일반화한다.
HEVC 코딩 엔티티들: CTU , CU , PU TU
다른 비디오 코딩 표준들과 유사하게, HEVC는 블록-기반 하이브리드 공간 및 시간 예측 코딩 방식이다. 그러나, HEVC는 H.264/AVC 표준에 포함되지 않은 새로운 코딩 엔티티들을 소개한다. 이 코딩 엔티티들은 (1) 코딩 트리 블록(CTU), 코딩 유닛들(CU), 예측 유닛들(PU) 및 변환 유닛들(TU)을 포함하며, 더 후술된다.
도 4는 화상 시퀀스(303)의 화상들 중 한 화상 등의 AV 정보(102)의 한 화상(400)을 도시한 도면이다. 화상(400)은 코딩 트리 유닛(들) 또는 CTU들(402)이라고 공지된 오버랩되지 않은 정사각형 블록들로 공간적으로 분할된다. 기본 코딩 유닛이 16×16 픽셀의 매크로블록인 H.264 및 이전 비디오 코딩 표준들과 달리, CTU(402)는 HEVC의 기본 코딩 유닛이고, 128×128 픽셀만큼 클 수 있다. 도 4에 도시된 바와 같이, CTU들(402)은 통상 점진적인 스캔과 유사한 순서로 화상(400) 내에서 참조된다.
각각의 CTU(402)는 차례로 더 후술되는 "쿼드트리" 분해에 의해 기술된 더 작은 가변 크기 코딩 유닛들로 반복해서 분할될 수 있다. 코딩 유닛들은 유사한 인코딩 파라미터들이 적용되는 이미지로 형성되어 비트스트림(314)으로 송신되는 영역들이다.
도 5는 CTU(402)의 코딩 유닛(502A 및 502B)(이하에는 대안으로 코딩 유닛(들)(502)이라고 함) 등의 코딩 유닛들(CU)로의 일례의 분할을 도시한 도면이다. 단일 CTU(402)는 CU(502A) 등의 4개의 CU들(502)로 분할될 수 있으며, 각각의 CU는 CTU(402)의 크기의 ¼이다. 이렇게 분할된 각각의 CU(502A)는 초기 CU(502A)의 ¼ 크기의 4개의 더 작은 CU들(502B)로 더 분할될 수 있다.
CTU들(402)의 CU들(502A)로의 또한 더 작은 CU들(502B)로의 분할은 구문이라고 공지된 오버헤드로서 인코딩된 데이터와 함께 출력 비트스트림(314)으로 인코딩된 "쿼드트리" 데이터 파라미터들(예를 들어, 플래그들 또는 비트들)로 기술된다.
도 6은 도 5에 도시된 CTU(402) 분할을 위한 대표 쿼드트리(600) 및 데이터 파라미터들의 표현을 도시한 도면이다. 쿼드트리(600)는 한 계층 레벨의 제1 노드(602A) 및 더 낮은 계층 레벨의 제2 노드(602B)를 포함하는 복수의 노드들을 포함한다(이하에, 쿼드트리 노드들은 대안으로 "노드들"(602)이라고 할 수 있음). 쿼드트리의 각각의 노드(602)에서, 노드(602)가 서브-노드들로 더 분할되면, "분할 플래그" 또는 비트 "1"이 할당되고, 그렇지 않으면, 비트 "0"이 할당된다.
예를 들어, 도 5에 도시된 CTU(402) 분할은, 상위 CU(502) 레벨(더 낮은 계층 레벨에 4개의 추가 노드들이 있음을 나타냄)의 노드(602A)와 연관된 "1"이라는 분할 플래그를 포함하는, 도 6에 도시된 쿼드트리(600)로 표현될 수 있다. 도시된 쿼드트리(600)는, 이 CU가 다음 (하위) CU 레벨에서 4개의 추가 CU들(502)로 더 분할됨을 나타내기 위해 중간 CU(502) 레벨의 노드(602B)와 연관된 "1"이라는 분할 플래그를 또한 포함한다. 소스 인코더(202)는 최소 및 최대 CU(502) 크기들을 제한해서, CU(502) 분할의 최대 가능 깊이를 변경할 수 있다.
인코더(202)는 CU들(502)의 인코딩된 데이터를 갖는 제1 부분 및 구문 요소들이라고 공지된 오버헤드를 포함하는 제2 부분을 포함하는 비트스트림(314)의 형태로 인코딩된 AV 정보(106)를 생성한다. 인코딩된 데이터는 인코딩된 CU들(502)(즉, 더 후술되는 바와 같이 연관된 움직임 벡터들, 예측 변수들 또는 관련 잔여들과 함께 인코딩된 잔여들)에 대응하는 데이터를 포함한다. 제2 부분은 블록들의 인코딩된 데이터에 직접 대응하지 않는 인코딩 파라미터들을 나타낼 수 있는 구문 요소들을 포함한다. 예를 들어, 구문 요소들은 이미지의 CU(502)의 어드레스 및 식별, 양자화 파라미터, 선출된 인터/인트라 코딩 모드의 표시, 쿼드트리(600) 또는 다른 정보를 포함할 수 있다.
CU들(502)은 기본 코딩 요소들에 대응하고, 2개의 관련 서브-유닛들: 예측 유닛들(PU) 및 변환 유닛들(TU)을 포함하고, 양 유닛들은 대응 CU(502)의 크기와 동일한 최대 크기를 갖는다.
도 7은 CU(502)의 하나의 또는 그 이상의 PU들(702)로의 분할을 도시한 도면이다. PU(702)는 분할된 CU(502)에 대응하고, 인트라-화상 또는 인터-화상 타입들의 픽셀 값들을 예측하는데 사용된다. PU들(702)은 움직임 추정을 위한 H.264/AVC의 분할의 확장이며, 다른 CU들로 더 서브-분할되지 않는("분할 플래그" = 0) 각각의 CU(502)에 대해 정의된다. 쿼드트리(600)의 각각의 잎(604)에서, 도 7에 도시된 바와 같이, 2N×2N의 최종 (하위 레벨) CU(502)는 PU들의 4개의 가능 패턴들: 2N×2N(702A), 2N×N(702B), N×2N(702C) 및 N×N(702D) 중 하나를 소유할 수 있다.
CU(502)는 공간적으로 또는 시간적으로 예측 코딩될 수 있다. CU(502)가 "인트라(intra)" 모드로 코딩되면, 더 후술되는 바와 같이, CU(502)의 각각의 PU(702)는 자신의 공간 예측 방향 및 이미지 정보를 가질 수 있다. 또한, "인트라" 모드에서, 다른 CU인 공간 이웃을 사용할 수 있기 때문에, CU(502)의 PU(702)는 다른 CU(502)에 종속될 수 있다. CU(502)가 "인터(inter)" 모드로 코딩되면, 더 후술된 바와 같이, CU(502)의 각각의 PU(702)는 자신의 움직임 벡터(들) 및 연관된 기준 화상(들)을 가질 수 있다.
도 8은 4개의 PU들(702)로 분할된 CU(502) 및 연관된 집합의 변환 유닛들(TU)(802)을 도시한 도면이다. TU들(802)은 DCT(Discrete Cosine Transform)에 의해 공간적으로 변환된 기본 유닛들을 나타내는데 사용된다. CU(502) 내의 각각의 블록 변환 TU(802)의 크기 및 로케이션은 더 후술되는 "잔여" 쿼드트리(RQT)로 기술된다.
도 9는 도 8의 일례의 CU(502)에 대한 TU들(802)의 RQT(900)를 도시한 도면이다. RQT(900)의 제1 노드(902A)에서의 "1"은 4개의 가지들이 있음을 나타내고, 인접한 더 낮은 계층 레벨의 제2 노드(902B)에서의 "1"은 지시된 노드가 4개의 가지들을 더 가짐을 나타냄을 주지하라. RQT(900)를 기술하는 데이터는 또한 코딩되어, 비트스트림(314)의 오버헤드로서 송신된다.
비디오 시퀀스의 코딩 파라미터들은 파라미터 집합들이라고 하는 전용 NAL 유닛들에 저장될 수 있다. 2가지 타입들의 파라미터 집합들 NAL 유닛들이 사용될 수 있다. 제1 파라미터 집합 타입은 시퀀스 파라미터 집합(SPS)이라고 공지되며, 전체 비디오 시퀀스 중에 변경되지 않은 파라미터들을 포함하는 NAL 유닛을 포함한다. 통상, SPS는 코딩 프로필, 비디오 프레임들의 크기 및 다른 파라미터들을 다룬다. 제2 타입의 파라미터 집합은 화상 파라미터 집합(PPS)이라고 공지되며, 하나의 이미지로부터 다른 이미지로 변할 수 있는 상이한 값들을 코딩한다.
공간 및 시간 예측
비트스트림(314)을 압축하는데 사용되는 기술들 중 하나는 픽셀 값들 자체를 저장하는 것을 삼가고, 대신, 디코더(220)에서 반복될 수 있는 프로세스를 사용해서 픽셀 값들을 예측하여 예측된 픽셀 값들과 실제 픽셀 값들 간의 차이(잔여라고 공지됨)를 저장 또는 송신하는 것이다. 디코더(220)가 제공된 정보로부터 동일한 예측 픽셀 값들을 계산할 수 있는 한, 실제 픽셀 값들은 잔여들을 예측 값들에 더함으로써 복구될 수 있다. 동일한 기술이 다른 데이터를 압축하는데 또한 사용될 수 있다.
도 3을 다시 참조하면, 처리중인 CU(502)의 각각의 PU(702)가 예측 변수 모듈(307)에 제공된다. 예측 변수 모듈(307)은 동일한 프레임의 인근 PU들(702)의 정보(공간 예측기(324)에 의해 실행되는 인트라-프레임 예측) 및 시간적으로 근접한 프레임들의 PU들(702)의 정보(시간 예측기(330)에 의해 실행되는 인터-프레임 예측)에 기초하여 PU들(702)의 값들을 예측한다. 그러나, 공존 PU들(collocated PU)이 현재 PU(702)와 동일한 x 및 y 좌표들을 갖는 기준/비기준 프레임에 위치하도록 정의되기 때문에, 시간 예측은 공존 PU에 항상 기초하는 것은 아닐 수 있다. 이러한 기술들은 PU들(702) 간의 공간 및 시간 종속성들을 이용한다.
따라서, 인코딩된 유닛들은 2가지 타입들: (1) 시간적이지 않은 예측 유닛들 및 (2) 시간적 예측 유닛들을 포함하도록 카테고리화될 수 있다. 시간적이지 않은 예측 유닛들은 프레임 내의 인접 또는 인근 PU들(702)을 포함하는 현재 프레임을 사용해서 예측되고(예를 들어, 인트라-프레임 예측), 공간 예측기(324)에 의해 생성된다. 시간적 예측 유닛들은 하나의 시간적 화상으로부터 예측되거나(예를 들어, P-프레임들) 또는 시간적으로 앞선 및/또는 뒤의 적어도 2개의 기준 화상들로부터 예측된다(즉, B-프레임들).
공간 예측
도 10은 PU들(702)의 공간 예측을 도시한 도면이다. 화상 i는 PU(702) 및 인근 PU(702N)를 포함하는 공간적으로 근접한 다른 PU들 1-4를 포함할 수 있다. 공간 예측기(324)는 현재 이미지의 픽셀들의 이미 인코딩된 다른 블록들의 PU들(702)을 사용하는 "인트라-프레임" 예측에 의해 현재 블록(예를 들어, 도 10의 블록 C)을 예측한다.
공간 예측기(324)는 공간 코딩에 적합한 인근 PU(예를 들어, 도 10의 PU 1, 2, 3, 또는 4)를 배치하고, 해당 인근 PU에 대한 각 예측 방향(an angular prediction direction)을 결정한다. HEVC에서, 35개의 방향들이 고려될 수 있어서, 각각의 PU는 수평, 수직, 45°대각선, 135°대각선, DC 등을 포함해서, 그와 연관된 35개의 방향들 중 하나를 가질 수 있다. PU의 공간 예측 방향은 구문으로 표시된다.
도 3의 공간 예측기(324)를 다시 참조하면, 이렇게 배치된 인근 PU는 요소(305)를 사용해서 인근 PU(702N)와 현재 PU(702)의 픽셀들 간의 차이로서 잔여 PU(704(e))를 계산하는데 사용된다. 결과는 예측 방향(1002) 및 인트라-예측 잔여 PU(1004)를 포함하는 인트라-예측 PU 요소(1006)이다. 예측 방향(1002)은 공간적으로 근접한 PU들 및 화상의 공간 종속성들로부터 방향을 추론함으로써 코딩될 수 있어서, 인트라 예측 방향 모드의 코딩율이 감소되게 할 수 있다.
시간 예측
도 11은 시간 예측을 도시한 도면이다. 시간 예측은 이전 화상, 화상 i-1 등의 시간적으로 이웃하는 화상들 또는 프레임들로부터의 정보를 고려한다.
일반적으로, 시간 예측은 오직 하나의 기준 화상으로부터의 하나의 기준 영역을 참조함으로써 PU(702)를 예측하는 단일-예측(P-타입) 및 하나의 또는 2개의 기준 화상들로부터의 2개의 기준 영역들을 참조함으로써 PU를 예측하는 다중 예측(B-타입)을 포함한다. 기준 이미지들은 이미 코딩된 후 (디코딩에 의해) 재구성된 비디오 시퀀스의 이미지들이다.
시간 예측기(330)는, 하나의 또는 수개의 기준 영역들(P-타입을 위한 한 영역 또는 B-타입을 위한 수개의 영역들)에서, 시간적으로 인근 프레임의 픽셀들의 영역들을 식별해서, 현재 PU(702)의 예측 변수들로서 사용될 수 있다. 수개의 영역 예측 변수들이 사용되는 경우에(B-타입), 합병되어 하나의 단일 예측을 생성할 수 있다. 기준 영역(1102)은 현재 프레임(화상 i)의 현재 PU(702)와 기준 프레임(화상 i-1)의 기준 영역(1102)(refIdx) 간의 변위를 정의하는 움직임 벡터(MV)(1104)에 의해 기준 프레임에서 식별된다. B-화상의 PU는 최대 2개의 MV들을 가질 수 있다. MV 및 refIdx 정보는 둘 다 HEVC 비트스트림의 구문에 포함된다.
도 3을 다시 참조하면, 기준 영역(1102)과 현재 PU(702)의 픽셀 값들 간의 차이는 스위치(306)에 의해 선택된 요소(305)에 의해 계산될 수 있다. 이 차이는 인터-예측 PU의 잔여(1106)라고 한다. 시간 또는 인터-프레임 예측 프로세스의 끝에서, 현재 PU(1006)는 하나의 움직임 벡터 MV(1104) 및 잔여(1106)로 구성된다.
그러나, 상술된 바와 같이, 데이터를 압축하기 위한 한 기술은, 데이터(잔여)의 예측 값과 실제 값 간의 차이를 계산하고 디코딩을 위해 잔여를 송신하는, 디코더(220)에 의해 반복될 수 있는 수단을 사용해서 데이터에 대한 예측 값들을 생성하는 것이다. 디코더(220)가 예측 값들을 재생할 수 있는 한, 잔여 값들은 실제 값들을 결정하는데 사용될 수 있다.
이 기술은 MV(1104)의 예측을 생성하고, 실제 MV(1104)와 예측 MV(1104)(잔여) 간의 차이를 계산하며, 비트스트림(314)으로 MV 잔여를 송신함으로써 시간 예측에서 사용되는 MV들(1104)에 적용될 수 있다. 디코더(220)가 예측 MV(1104)를 재생할 수 있는 한, 실제 MV(1104)는 잔여로부터 계산될 수 있다. HEVC는 인근 PU들(702) 간의 이동의 공간 상관 관계를 사용해서 각각의 PU(702)에 대한 예측 MV를 계산한다.
도 12는 HEVC에서의 움직임 벡터 예측 변수들(MVP)의 사용을 도시한 도면이다. 움직임 벡터 예측 변수들 V1, V2 및 V3은 인코딩할 블록(C)에 인근해서 또는 인접해서 위치한 복수의 블록들 1, 2 및 3의 MV들(1104)로부터 취해진다. 이 벡터들이 동일한 시간 프레임 내의 공간적으로 이웃하는 블록들의 움직임 벡터들을 말하고 인코딩할 블록의 움직임 벡터를 예측하는데 사용될 수 있음에 따라, 이 벡터들은 공간 움직임 예측 변수들이라고 공지된다.
도 12는 시퀀스의 (디코딩 순서로) 이전에 디코딩된 화상의 공존 블록 C'(예를 들어, 코딩될 블록(이미지 i의 블록 C)과 동일한 공간 위치에 배치된 화상 i-1의 블록)의 움직임 벡터인 시간 움직임 벡터 예측 변수 VT를 또한 도시한다.
공간 움직임 벡터 예측 변수들 V1, V2 및 V3 및 시간 움직임 벡터 예측 변수 VT의 성분들은 중간값 움직임 벡터 예측 변수 VM을 생성하는데 사용될 수 있다. HEVC에서, 3개의 공간 움직임 벡터 예측 변수들은 도 12에 도시된 바와 같이, 즉, 선정된 유효성 규칙에 따라, 인코딩할 블록의 좌측에 위치한 블록(V1), 위에 위치한 블록(V3)으로부터 또한 인코딩할 블록의 각각의 코너들에 위치한 블록들 중 한 블록(V2)으로부터 취해질 수 있다. 이 MV 예측 변수 선택 기술은 AMVP(Advanced Motion Vector Prediction)라고 공지된다.
공간 예측 변수들(예를 들어, V1, V2 및 V3) 및 시간 예측 변수(들) VT를 갖는 복수의 (통상 5개의) MV 예측 변수(MVP) 후보들이 따라서 획득된다. 비트스트림의 움직임 벡터 예측 변수를 시그널링하는 오버헤드를 감소하기 위해, 움직임 벡터 예측 변수들의 집합은 복제된 움직임 벡터들에 대한 데이터를 제거함으로써 감소될 수 있다(예를 들어, 다른 MV들과 동일한 값을 갖는 MV들이 후보에서 제거될 수 있음).
인코더(202)는 후보들 중에서 "최상" 움직임 벡터 예측 변수를 선택하고, 선택된 움직임 벡터 예측 변수와 실제 움직임 벡터 간의 차이로서 움직임 벡터 예측 변수 잔여를 계산하여, 움직임 벡터 예측 변수 잔여를 비트스트림(314)으로 송신할 수 있다. 이 동작을 실행하기 위해, (비트 스트림(314)으로 송신되지 않더라도) 실제 움직임 벡터는 디코더(220)에 의한 차후 사용을 위해 저장되어야만 한다. 신호 비트들 또는 플래그들은, 어떤 MV 잔여가 정규화된 움직임 벡터 예측 변수로부터 계산되었는 지를 명시하기 위해 비트스트림(314)에 포함되고, 움직임 벡터를 복구하기 위해 디코더에 의해 차후에 사용된다. 이 비트들 또는 플래그들은 더 후술된다.
도 3을 다시 참조하면, 공간 (인트라) 또는 시간 (인터) 예측 프로세스로부터 획득된 인트라-예측 잔여들(1004) 및 인터-예측 잔여들(1106)은 그 후 변환 모듈(308)에 의해 상술된 변환 유닛들(TU)(802)로 변환된다. TU(802)는 도 9와 관련해서 상술된 RQT 분해를 사용해서 더 작은 TU들로 더 분할될 수 있다. HEVC에서, 일반적으로, 2개의 또는 3개의 분해 레벨들이 사용되며, 공인된 변환 크기들은 32×32, 16×16, 8×8 및 4×4이다. 상술된 바와 같이, 변환은 DCT(discrete cosine transform) 또는 DST(discrete sine transform)에 따라 유도된다.
잔여 변환 계수들은 그 후 양자화기(310)에 의해 양자화된다. 양자화는 데이터 압축에서 매우 중요한 역할을 한다. HEVC에서, 양자화는 고정밀 변환 계수들을 한정된 수의 가능한 값들로 변환한다. 양자화가 다량의 압축을 허용하더라도, 양자화는 손실 있는 동작이며, 양자화에 의한 손실은 복구될 수 없다.
양자화된 변환 잔여의 계수들은 그 후 엔트로피 코더(312)에 의해 코딩된 후, AV 정보의 이미지들을 코딩하는 유용한 데이터의 일부로서 압축된 비트 스트림(310)으로 삽입된다. 코딩 구문 요소들은 또한 코딩 효율을 증가시키기 위해 구문 요소들 간의 공간 종속성들을 사용해서 코딩될 수 있다. HEVC는 CABAC(context-adaptive binary arithmetic coding)을 제공한다. 다른 형태들 또는 엔트로피 또는 산술 코딩이 또한 사용될 수 있다.
상술된 예측 변수들을 계산하기 위해, 인코더(202)는 요소들(316, 318, 320, 322, 328)을 포함하는 "디코딩" 루프(315)를 사용해서 이미 인코딩된 PU들(702)을 디코딩한다. 이 디코딩 루프(315)는 양자화된 변환 잔여들로부터 PU들 및 이미지들을 재구성한다.
양자화된 변환 잔여 계수들 E는 역양자화기(316)에 제공되며, 역양자화기(316)는 양자화기(310)의 동작과 역 동작을 적용하여, 잔여 PU의 역양자화된 변환 계수들(E')(708)을 생성한다. 역양자화된 데이터(708)는 그 후 역 변환기(318)에 제공되며, 역 변환기(318)는 변환 모듈(308)에 의해 적용되는 변환의 역을 적용하여, PU의 재구성된 잔여 계수들(e')(710)을 생성한다.
잔여 PU의 재구성된 계수들(710)은 그 후 선택기(306)에 의해 인트라-예측 PU(1004) 및 인터-예측 PU(1106)로부터 선택된 대응 예측 PU의 대응 계수들(x')(702')에 추가된다. 예를 들어, 재구성된 잔여가 공간 예측기(324)의 "인트라" 코딩 프로세스로부터 온 것이면, "인트라" 예측 변수(x')는 이 잔여에 추가되어, 예를 들어, 이러한 경우에는, 양자화 동작들인 변환으로부터 야기된 손실들에 의해 변경된 원래의 PU(702)에 대응하는 재구성된 PU(x")(712)를 복구한다. 잔여(710)가 시간 예측기(330)의 "인터" 코딩 프로세스로부터 온 것이면, 현재 움직임 벡터들이 가리키는 영역들(이 영역들은 현재 이미지 인덱스들에 의해 언급된 기준 버퍼(328)에 저장된 기준 이미지들에 속함)은 병합된 후, 이 디코딩된 잔여에 추가된다. 이러한 방법으로, 원래의 PU(702)는 양자화 동작들로부터 야기된 손실들에 의해 변경된다.
인코더(202)가 상술된 이미지 예측 기술들과 유사한 움직임 벡터 예측 기술들을 사용한 결과로, 움직임 벡터는 시간적으로 다음 프레임들에서의 사용을 위해 움직임 벡터 버퍼(329)를 사용해서 저장될 수 있다. 더 후술되는 바와 같이, 플래그는 MV 버퍼(329)의 콘텐츠를 현재 프레임의 MV로 대체하는 대신 현재 디코딩 프레임의 움직임 벡터가 적어도 다음 코딩 프레임에 사용되어야만 함을 나타내기 위해 구문으로 설정 및 전송될 수 있다.
루프 필터(322)는 획득된 잔여들의 강력한 양자화(heavy quantization)에 의해 생성된 효과들을 감소시키기 위해, 또한, 신호 품질을 향상시키기 위해 재구성된 신호(x")(712)에 적용된다. 루프 필터(322)는, 예를 들어, 코딩 프로세스에 의해 생성된 높은 주파수들을 시각적으로 감쇠하기 위해 PU들 간의 경계들을 평활화하기 위한 디블로킹 필터 및 원래의 이미지와의 정사각형 차이의 합(SSD)을 최소화하기 위해 이미지의 모든 PU들이 디코딩된 후에 적용되는 선형 필터를 포함할 수 있다. 선형 필터링 프로세스는 프레임 단위로 실행되고, 필터링될 픽셀 주위의 수개의 픽셀들을 사용하며, 프레임의 픽셀들 간의 공간 종속성들을 또한 사용한다. 선형 필터 계수들은 코딩되어, 비트스트림의 하나의 헤더, 통상 화상 또는 슬라이스 헤더로 송신될 수 있다.
재구성된 이미지들이라고도 공지된 필터링된 이미지들은 그 후 현재 비디오 시퀀스의 다음 이미지들의 압축 중에 다음 "인터" 예측들이 발생할 수 있도록 기준 이미지 버퍼(328)로부터 기준 이미지들로서 저장된다.
기준 이미지 구문
상술된 바와 같이, 오류들을 감소시키고 압축을 향상시키기 위해, HEVC는 현재 이미지의 추정 및 움직임 보상을 위한 수개의 기준 이미지들의 사용을 허용한다. 현재 화상의 현재 PU(702)가 제공되면, 공존 PU(1102)는 연관된 인근 기준/비기준 화상에 있다. 예를 들어, 도 12에서, 화상 (i)의 현재 PU(702)의 공존 PU(1102)는 연관된 인근 기준 화상 (i-1)에 있다. 현재 PU(702)의 최상 "인터" 또는 시간 예측 변수들은 다수의 기준/비기준 이미지들 중 일부 이미지들에서 선택되며, 이는 디스플레이 순서로 현재 프레임에 시간적으로 앞선 또는 후의 프레임들에 기초할 수 있다(각각, 백워드 및 포워드 예측).
HEVC의 경우, 기준 화상들에 대한 인덱스는 구문과 함께 포함되는 기준 화상 리스트들에 의해 정의된다. 포워드 예측은 리스트 0(RefPicList0)에 의해 정의되고, 백워드 예측은 리스트 1(RefPicList1)에 의해 정의되며, 양 리스트 0 및 리스트 1은 디스플레이 순서로 현재 화상보다 전의 및/또는 후의 다수의 기준 화상들을 포함할 수 있다.
도 13은 기준 화상 리스트들의 사용의 일례를 도시한다. 도 13에 도시된 화상들 0, 2, 4, 5, 6, 8 및 10을 고려해보자. 각각의 화상의 번호는 디스플레이 순서를 나타내며, 현재 화상은 화상 5이다. 이러한 경우에, 0과 동일한 인덱스로 시작해서 오름차순 기준 화상 인덱스들을 갖는 리스트 0 기준 화상들은 4, 2, 0, 6, 8 및 10이고, 0과 동일한 인덱스로 시작해서 오름차순 기준 화상 인덱스들을 갖는 리스트 1 기준 화상들은 6, 8, 10, 4, 2 및 0이다. 움직임 보상 예측이 리스트 0 예측으로 한정되는 슬라이스는 P-슬라이스라고 한다. 공존 화상들은 HEVC에서 collocated_ref_idx 인덱스를 사용해서 표시된다. B-슬라이스의 경우, 움직임 보상 예측은 리스트 0 예측 외에 리스트 1 예측을 더 포함한다.
따라서, 공존 PU(1102)는 리스트 0 또는 리스트 1에 명시된 기준 화상에 배치된다. 플래그(collocated_from_10_flag)는 특정 슬라이스 타입에 대해 공존 분할이 리스트 0으로부터 유도되어야만 하는지 또는 리스트 1로부터 유도되어야만 하는지를 명시하는데 현재 사용된다. 기준 화상들 각각은 또한 움직임 벡터와 연관된다.
최근 HEVC 표준에 대한 기준 화상들 및 관련 움직임 벡터들의 저장 및 검색은 벤자민 브로스(Benjamin Bross), 한우진(Woo-Jin Han), 옌스-레이너 옴(Jens-Rainer Ohm), 개리 제이. 설리반(Gary J. Sullivan), 토마스 위건드(Thomas Wiegand), "WD4: 고효율 비디오 코딩의 작업 드래프트 4(WD4: Working Draft 4 of High-Efficiency Video Coding)", ITU-T SG16 WP3 및 ISO/IEC JTC1/SC29/WG11의 JCT-VC(Joint Collaborative Team on Video Coding), JCTVC-F803_d5, 6번째 회의: 토리노(Torino), IT, 14-22 2011년 7월의 단락 8.4.1.2.9에 나타난다(본 명세서에서 참조용으로 인용됨).
표준에 따라, slice_type이 B와 동일하고, collocated_from_10_flag가 0이면, collocated_ref_idx 변수는 RefPicList1에 의해 명시된 공존 분할을 포함하는 화상으로서 기준 화상을 명시한다. 그렇지 않으면(slice_type이 B와 동일하고, collocated_from_10_flag가 1과 동일하거나 또는 slice_type이 P와 동일하면), collocated_ref_idx 변수는 RefPicList0에 의해 명시된 공존 분할을 포함하는 화상으로서 기준 화상을 명시한다.
도 14는 상술된 표준에 따라 인코더(202)에 의해 실행된 프로세스들을 도시한 도면이다. 블록(1402)은 현재 화상이 다른 화상에 대한 기준 화상인 지를 결정한다. 현재 화상이 다른 화상에 대한 기준 화상이 아니면, 기준 화상 또는 움직임 벡터 정보를 저장할 필요가 없다. 현재 화상이 다른 화상에 대한 기준 화상이면, 블록(1504)은 "다른" 화상이 P-타입 화상인지 또는 B-타입 화상인지를 결정한다. 화상이 P-타입 화상이면, 프로세싱은 블록(1410)으로 진행되어, colloc_from_10_flag를 1로 설정하고, 기준 화상 및 움직임 벡터를 리스트 0에 저장한다. "다른 화상"이 B-타입 화상이면, 블록(1406)은 그래도 프로세싱을 희망 기준 화상이 리스트 0에 저장될 것이면 블록들(1408 및 1410)로 향하게 하고, 희망 기준 화상 및 움직임 벡터가 리스트 1에 저장될 것이면 블록들(1412 및 1414)로 향하게 한다. 이 결정은 시간적으로 이전 또는 다음 화상으로부터 기준 화상들을 선택하는 것이 바람직한 것인 지에 기초할 수 있다. 다수의 가능한 기준 화상들 중 어떤 기준 화상이 선택될 지는 collocated_ref_idx 인덱스에 따라 결정된다.
도 15는 최근 HEVC 표준에 따른 디코딩 시의 디코더(220)에 의한 collocated_from_10_flag의 사용을 도시한다. 도 15를 참조하면, 블록(1502)은 계산중인 현재 슬라이스 타입이 인트라인지 또는 I-타입인 지를 결정한다. 이 슬라이스들은 인코딩/디코딩 프로세스에서 시간적으로 인근 슬라이스들을 사용하지 않아서, 시간적으로 인근 기준 화상을 찾을 필요가 없다. 슬라이스 타입이 I-타입이 아니면, 블록(1504)은 슬라이스가 B-슬라이스인 지를 결정한다. 슬라이스가 B-타입이 아니면, P-타입 슬라이스이며, collocated_ref_idx의 값에 따라, 공존 분할을 포함하는 기준 화상이 리스트 0에서 찾아진다. 슬라이스가 B-타입이면, collocated_from_10_flag는 기준 화상이 리스트 0에서 찾아지는 지 또는 리스트 1에서 찾아지는 지를 결정한다. 인덱스가 나타냄에 따라, 슬라이스 타입(B-타입 또는 P-타입) 및 collocated_from_10_flag의 값에 좌우되어, 공존 화상은 리스트 0 또는 리스트 1의 표시된 collocated_ref_idx를 갖는 기준 화상으로서 정의된다. HEVC의 일 실시예에서, 제1 기준 화상(도 13에 도시된 바와 같이, 인덱스 [0]을 갖는 기준 화상)이 공존 화상으로서 선택된다.
움직임 정보의 슬라이스 단위 효율적 저장
코딩된 현재 화상이 다른 화상의 기준 화상으로서 사용될 수 있는 경우, 현재 화상의 움직임 벡터(1104)가 차후 사용을 위해 저장되어야만 한다는 문제점이 발생한다. 이는 현재 화상이 다른 화상들에 대한 공존 화상일 수 있고, 그 PU들이 그 화상들의 PU들의 공존 PU들일 수 있기 때문이다. 예를 들어, 도 12에 도시된 화상 i-1의 유닛들에 대한 VT 및 다른 MV들이 PU(702) 등의 다른 유닛들에 의해 사용될 수 있기 때문에, 이러한 VT 및 다른 MV들은 저장되어야만 한다. 일반적으로 N개의 기준 화상들이 있기에, 모든 N개의 기준 화상들에 대한 MV들이 저장되어야만 하며, 이는 비용이 많이 들 수 있다.
기준 화상들에 필요한 메모리의 감소를 위한 기술들은, 본 명세서에서 참조용으로 인용된, 에두아르 프랑수아(Edouard FRANCOIS), 크리스토프 기스크(Christophe GISQUET), 기욤 라로슈(Guillaume LAROCHE), 파트리스 오노(Patrice ONNO) 및 나엘 우에드라오고(Naёl OUEDRAOGO), "움직임 벡터 예측을 위한 온 메모리 압축(On memory compression for motion vector prediction)", ITU-T SG16 WP3 및 ISO/IEC JTC1/SC29/WG11의 JCT-VC(Joint Collaborative Team on Video Coding), JCTVC-E221, 5번째 회의: 제네바(Geneva), 2011년 3월에서 제안되었다.
그러나, 후보 기준 화상의 MV가 사용되지 않을 것 같은 때에도, 이러한 기술들은 각각의 후보 기준 화상들의 모든 MV들을 여전히 저장한다. 또한, 제로 인덱스 기준 화상의 MV만이 사용된 경우에도, 공존 기준 화상들의 MV들을 저장하는데 필요한 메모리의 추가 감소들이 가능하다.
이러한 경우에, 현재 디코딩된 화상의 MV들이 필요한 경우에만 저장되면, 공존 화상들의 MV들을 저장하는데 필요한 메모리의 추가 감소들이 가능하다. 그렇지 않으면, 저장된 이전 화상의 움직임 벡터가 현재 화상에 대한 디코딩 프로세스에서 사용될 수 있다. 인덱스 또는 플래그가 현재 화상의 정규화된 MV들이 이전 기준 화상의 저장된 MV들을 대체할 것인 지를 나타내는데 사용될 수 있다.
인덱스 또는 플래그는 비트스트림의 구문에 포함될 수 있으며, 슬라이스 또는 화상 헤더에서 제시될 수 있다. 일 실시예에서, 슬라이스 헤더 구문은 현재 화상의 MV들이 현재 화상을 생성하는데 사용되는 화상으로부터의 MV들을 대체해야 하는지를 나타내기 위해 인덱스(update_collocated_picture_idx)를 포함하도록 변경된다. 예를 들어, 구문은, 현재 화상의 정규화된 MV들이 저장되어, 현재 화상의 인덱스(update_collocated_picture_idx)가 1이면, 이전에 인코딩된 화상의 MV들을 대체하도록 정의될 수 있다. 그렇지 않으면, 이전 화상의 MV들은 변경되지 않은 채로 보유되어 다음 화상들의 생성에 사용될 수 있다.
도 16은 움직임 벡터 정보가 효율적으로 저장 및 사용될 수 있는 방법을 도시한 도면이다. 재생될 때 시청자에게 제시되는 순서로 복수의 화상들을 나타내는 화상들 0-8을 갖는 화상 그룹(1602)을 생각하라. 상술된 바와 같이, 복수의 화상들의 코딩은 화상들 중 일부가 프레젠테이션 순서로 화상에 시간적으로 이어지는 화상들의 정보를 사용해서 코딩된다. 예를 들어, 화상 2는 화상 4의 정보를 사용해서 인코딩될 수 있다.
디스플레이를 위해 사용자에게 제시되는 순서 대신 인코더(202)에 의해 처리 및 인코딩되는 순서로 동일한 화상들 0-8을 포함하는 화상 그룹(1604)을 생각하라. 본 일례에서, 프로세싱의 순서는 0, 8, 4, 2, 6, 1, 3, 5 및 7이다. 또한, 화상들 0 및 8을 생각하라(화상들(1604)의 시퀀스를 북엔드하는 프레임들은 인트라-코딩되고, 임의의 다른 화상으로부터의 정보를 사용하지 않음).
화상 0은 인코딩되어서, 움직임 벡터 버퍼(329)에 저장된 움직임 벡터 MV0을 야기한다. 화상 0이 인트라-인코딩 화상이기에, 인코더(202)는 (이전에 계산된 화상의 움직임 벡터가 아니라) 그 계산된 움직임 벡터가 인코딩될 다음 화상의 계산에서 사용되어야만 함을 알아서, 인코더(202)는 update_collocated_picture_idx 플래그를 1로 설정하며, 따라서, 인코딩될 다음 화상(화상 8)이 움직임 벡터 버퍼(329)에 현재 저장된 움직임 벡터(MV0)에 대한 해당 화상에 대해 계산된 움직임 벡터를 대신해야만 함을 나타낸다.
다음으로, 화상 8이 움직임 벡터 버퍼(329)에 저장된 움직임 벡터 MV0을 사용해서 인코딩되고, 새로운 움직임 벡터 MV8이 계산된다. update_collocated_picture_idx 플래그가 1로 설정되기에, 인코더(202)는 움직임 벡터 버퍼(329)에 현재 저장된 움직임 벡터 정보를 화상 8과 관련하여 계산된 움직임 벡터 MV8로 대체한다.
그 후, 화상 4가 이전에 인코딩된 프레임으로부터의 움직임 벡터 MV8을 사용해서 인코딩되어서, 화상 4에 대한 연관된 움직임 벡터 MV4를 생성한다. 그 후, 인코더(329)는 움직임 벡터 버퍼(329)에 현재 저장된 움직임 벡터(MV8) 정보가 인코딩될 다음 화상(화상 2)를 계산하는데 사용되기 위해 버퍼(329)에서 보유되어야만 하는지를 결정하거나, 또는 더 최근에 계산된 움직임 벡터(MV4)에 의해 대체되어야만 하는지를 결정한다. 화상 2가 화상 8보다 화상 4에 시간적으로 더 가깝기에, 화상 4에 대한 움직임 벡터는 짐작컨대 더 양호하게 인코딩된 화상을 야기해서, 인코더(202)는 update_collocated_picture_idx 플래그를 1로 설정하여, 화상 4에 대해 계산된 움직임 벡터(MV4)가 움직임 벡터 버퍼(329)에 저장된 현재 움직임 벡터(MV8)를 대체해야만 함을 나타낸다.
화상 2는 인코딩될 다음 화상이다. 화상 2는 움직임 벡터 버퍼(329)에 저장된 움직임 벡터(MV8)를 사용해서 인코딩되며, 인코딩은 새로운 움직임 벡터(MV2)를 야기한다. 이제 현재 코딩된 화상의 움직임 벡터(MV2)가 움직임 벡터 버퍼(329)에 현재 저장된 움직임 벡터(MV4)를 대체해야 하는 지에 대한 문제가 발생한다. 인코더(202)는 인코딩될 다음 화상이 화상 2보다 화상 4에 시간적으로 더 가까운 화상 6이라고 결정한다. 따라서, 프로세스에서 사용된 MV가 화상 6에 시간적으로 더 가까운 화상과 연관되었으면, 화상 6의 인코딩이 더 나은 결과를 산출할 것이라고 예상하는 것이 타당하다. 본 순간적인 경우에, 선택 사항은 화상 4 및 화상 2이고, 화상 4가 화상 2보다 화상 4에 시간적으로 더 가깝기에, MV4가 MV2보다 화상 6의 인코딩을 위한 더 나은 선택으로 예상된다. 따라서, 인코더(202)는 update_collocated_picture_idx 플래그를 0으로 설정해서, 현재 프레임에 대해 계산된 움직임 벡터(MV2)가 움직임 벡터 버퍼(329)에 현재 저장된 움직임 벡터(MV4)를 대체하지 않아야만 함을 나타낸다.
인코딩될 다음 화상은 화상 6이다. 화상 6은 움직임 벡터 버퍼에 저장된 움직임 벡터(MV4)를 사용해서 인코딩된다. 결과는 인코딩된 화상 잔여들 및 화상 6과 연관된 움직임 벡터(MV6)이다. 이제 인코딩될 다음 화상(화상 1)이 움직임 벡터 버퍼(329)에 현재 저장된 움직임 벡터(MV4)를 사용해서 최상으로 인코딩되는지 또는 현재 화상에 대해 계산된 움직임 벡터(MV2)를 사용해서 최상으로 인코딩되는 지에 대한 문제가 발생한다. 화상 4가 화상 2보다 화상 6에 시간적으로 더 가깝기에, 인코더(202)는 update_collocated_picture_idx 플래그를 0으로 설정하고, 인코딩될 다음 화상, 화상 1의 인코딩에서 사용되도록 움직임 벡터 버퍼(329)에 현재 저장된 움직임 벡터(MV4)를 보유한다.
인코딩될 다음 화상은 화상 1이다. 화상 1은 움직임 벡터 버퍼(329)에 저장된 움직임 벡터(MV4)를 사용해서 인코딩되어서, 인코딩된 화상 1 및 MV1을 야기한다. 그 후, 인코더(202)는 인코딩될 다음 프레임(프레임 3)이 움직임 벡터 버퍼(329)에 현재 저장된 움직임 벡터(MV4)로 최상으로 인코딩되는지 또는 현재 인코딩된 화상에 대한 움직임 벡터(MV1)로 최상으로 인코딩되는 지를 결정한다. 화상 3이 현재 인코딩된 화상(화상 1)보다 화상 4에 시간적으로 더 가깝기에, 인코더(202)는 update_collocated_picture_idx 플래그를 0으로 설정해서, 버퍼(329)에 MV1을 저장하는 대신, 움직임 벡터 버퍼(329)에 MV4를 보유한다.
인코딩될 다음 화상은 화상 3이다. 화상 3은 움직임 벡터 버퍼(329)에 저장된 움직임 벡터(MV4)를 사용해서 인코딩되고, 움직임 벡터 MV3을 야기한다. 인코더(329)는 인코딩될 다음 화상(화상 5)이 움직임 벡터 버퍼(329)에 현재 저장된 움직임 벡터(MV4)를 사용해서 더 양호하게 인코딩되는 지를 결정한다. 화상 5가 화상 3보다 화상 4에 더 가깝기에, 인코더(329)는 움직임 벡터 버퍼(329)에 현재 인코딩된 프레임의 움직임 벡터(MV5)를 저장하는 것이 아니라 움직임 벡터 버퍼(329)에 현재 저장된 움직임 벡터(MV4)를 보유하기로 선택한다.
인코딩될 다음 화상은 화상 5이다. 화상 5는 움직임 벡터 버퍼(329)에 저장된 움직임 벡터(MV4)를 사용해서 인코딩되고, 움직임 벡터 MV5를 야기한다. 인코더(329)는 인코딩될 다음 화상(화상 7)이 움직임 벡터 버퍼(329)에 현재 저장된 움직임 벡터(MV4)를 사용해서 더 양호하게 인코딩되는지 또는 현재 인코딩된 움직임 벡터의 움직임 벡터(MV5)를 사용해서 더 양호하게 인코딩되는 지를 결정한다. 화상 7이 화상 5보다 시간적으로 더 가깝기에, 인코더(329)는 버퍼(329)에 현재 저장된 움직임 벡터(MV4)를 현재 인코딩된 화상의 계산된 움직임 벡터(MV5)로 대체하기로 선택하며, update_collocated_picture_idx 플래그를 1로 설정하고, 움직임 벡터 버퍼(329)에 저장된 움직임 벡터(MV4)를 현재 코딩된 화상의 움직임 벡터(MV5)로 대체한다.
그 후, 인코더(329)는 움직임 벡터 버퍼(329)에 현재 저장된 움직임 벡터(MV5)를 사용해서 화상 7을 인코딩한다. 인코딩될 다음 화상과 화상 7 간의 시간적 거리는 해당 화상과 화상 4 간의 시간적 거리보다 더 작을 가능성이 있기 때문에, update_collocated_picture_idx 플래그는 1로 설정된다. 이 프로세스는 화상들의 다음 시퀀스에 대해 반복된다.
도 16은 기준 화상 list_0(도 16에 lo으로 도시됨) 및 기준 화상 list_1(도 16에 l1로 도시됨)의 사용을 또한 도시한다. 화상 4와 연관된 기준 화상 리스트들은 기준 화상들이 list_0에 대한 화상 0 및 화상 8과 화상 8 및 화상 0임을 나타냄을 주지하라. 화상 4가 화상 8(시간적으로 화상 4 후임)로부터의 정보를 사용해서 계산되기에, 화상 4는 B-타입 화상이고, list_0은 제1 엔트리로서 8(기준 화상이 화상 8임을 나타냄)을 포함한다. 유사하게, 화상 2는 화상 4로부터 계산되어서, 화상 2는 또한 B-타입 화상이 되며, list_1의 제1 엔트리는 4이다. 또한, 화상 6은 화상 6보다 시간적으로 앞선 화상 4로부터 계산되어서, 화상 6은 P-타입 화상이며, list_0은 제1 엔트리로서 4를 포함해서, 화상 4가 화상 6에 대한 기준 화상임을 나타낸다.
도 17a 및 17b는 도 16에 기술된 동작들을 실행하기 위한 일반화된 프로세스의 실례를 도시한 도면이다. 블록(1702)에서, 복수의 디지털 화상들의 시퀀스의 제1 화상이 코딩된다. 인코딩 프로세스의 결과는 상술된 잔여들 및 복수의 프레임들의 시퀀스에 도시된 이미지들의 움직임을 기술하는 제1 화상과 연관된 제1 움직임 정보를 포함할 수 있다. 제1 움직임 정보는, 예를 들어, 움직임 벡터를 포함할 수 있다.
블록(1704)은 제1 움직임 정보가 다음 화상의 코딩에서 사용되기 위해 움직임 벡터 버퍼(329)의 제1 화상의 코딩에 시간적으로 앞서 코딩된 제2 화상과 연관된 제2 움직임 정보를 대체해야 하는지를 결정한다. 이는, 더 후술되는 바와 같이, 도 18과 관련해서 더 기술되는 바와 같이 결정될 수 있다.
제1 움직임 정보가 제2 움직임 정보를 대체해야 하는 경우, 블록(1706)에 도시된 바와 같이, 움직임 벡터 버퍼(329)에 이미 저장된 제2 움직임 정보는 제1 움직임 정보로 대체된다. 또한, 블록(1708)에 도시된 바와 같이, 제1 값을 갖는 제1 움직임 신호 정보가 비트 스트림으로 제공된다. 제1 움직임 정보는 플래그 또는 인덱스 또는 다른 값일 수 있다. 일 실시예에서, 제1 움직임 신호 정보는 상술된 update_collocated_picture_idx 플래그이고, 제1 움직임 정보가 움직임 벡터 버퍼(329)의 제2 움직임 정보를 대체하면, update_collocated_picture_idx 플래그는 1로 설정된다.
제1 움직임 정보가 움직임 벡터 버퍼(329)에 이미 저장된 제2 움직임 정보를 대체하지 않아야 하는 경우, 블록(1710)에 도시된 바와 같이, 제2 움직임 정보는 보유된다. 또한, 블록(1708)에 도시된 바와 같이, 제2 값을 갖는 제1 움직임 신호 정보가 비트 스트림으로 제공된다. 상기 일례에서, 제1 움직임 신호 정보는 상술된 update_collocated_picture_idx 플래그를 포함하고, 제1 움직임 정보가 움직임 벡터 버퍼(329)의 제2 움직임 정보를 대체하지 않아야 하는 경우, update_collocated_picture_idx 플래그는 0으로 설정된다.
도 17b는 도 16에 기술된 동작들을 실행하기 위한 프로세스의 실례를 더 도시한 도면이다. 블록(1714)에 도시된 바와 같이, 제3 화상은 제1 화상의 코딩 직후에 코딩되어 움직임을 기술하는 제3 화상과 연관된 제3 움직임 정보를 생성한다. 제3 화상은, 움직임 신호 정보가 제1 값을 갖는 경우 제2 움직임 정보에 따라 코딩되고, 제1 움직임 정보가 제2 값을 갖는 경우 제1 움직임 정보에 따라 코딩된다.
도 18은 제1 화상과 연관된 제1 움직임 정보가 제2 움직임 정보를 대체해야 하는지를 결정하기 위한 일례의 방법 단계들을 도시한 도면이다. 블록(1802)은 제3 화상과 제1 화상 간의 제1 시간적 거리를 결정한다. 블록(1804)는 제3 화상과 제2 화상 간의 제2 시간적 거리를 결정한다. 블록(1806)은 제1 시간적 거리와 제2 시간적 거리를 비교하고, 블록(1807)은 제1 움직임 정보가 블록(1806)의 비교에 따라 제2 움직임 정보를 대체해야 하는지를 결정한다. 일 실시예에서, 제3 화상과 제2 화상 간의 제1 시간적 거리가 제3 화상과 제1 화상 간의 제2 시간적 거리보다 더 크다고 비교가 나타내면, 제1 움직임 정보는 제2 움직임 정보를 대체해야만 한다.
도 16의 일례로 돌아가서, 도 17a 및 17b에 도시된 논리를 적용해서, 제1 화상이 화상 2인 경우를 생각해보라. 블록(1702)은 화상 2를 코딩하여, MV2를 생성한다. 결정 블록(1704)은 MV2가 움직임 벡터 버퍼(329)에 이미 저장된 MV4를 대체해야 하는지를 결정한다. 블록들(1802-1808)은 제3 화상(코딩 시퀀스의 제1 화상에 이어짐, 화상 6)과 제2 화상(화상 4) 간의 시간적 거리가 제3 화상(화상 6)과 제1 화상(화상 2) 간의 시간적 거리보다 더 크지 않다고 결정한다. 따라서, 제1 움직임 정보(MV2)는 제2 움직임 정보(MV4)를 대체하지 않아야만 하며, 움직임 벡터 버퍼(329)는 MV2를 보유한다. 마지막으로, 블록(1714)은 움직임 벡터 버퍼(329)에 저장된 움직임 벡터(MV4)를 사용해서 제3 화상(화상 6)을 코딩한다.
update_collocated_picture_idx 플래그는 인코딩된 비트스트림의 오버헤드로서, 예를 들어, 슬라이스 헤더의 파라미터로서 송신될 수 있다.
움직임 정보의 SPS -레벨 효율적 저장
상술된 기술은 슬라이스 단위로 또는 화상 단위로 움직임 정보의 효율적인 저장을 가능케 한다. 추가 절약이 이전에 계산된 화상의 움직임 벡터들이 SPS 또는 시퀀스 파라미터 집합에 의해 정의된 시퀀스의 모든 화상들에 대한 현재 계산된 화상의 움직임 벡터들로 대체될 것인 지를 제어하기 위해 플래그 또는 유사한 고안을 사용해서 실현될 수 있다. 따라서, 유입 인덱스를 더 감소시키기 위해, update_collocated_picture_idx_SPS 플래그가 움직임 벡터 버퍼(329)에 이전에 저장된 움직임 벡터가 SPS에 의해 참조된 모든 화상들을 제어하기 위해 SPS 레벨의 현재 화상의 움직임 벡터로 대체될 지를 제어하는데 사용될 수 있다.
update_collocated_picture_idx_SPS가 1이면, 인트라-코딩 화상들을 제외한 모든 코딩 화상들은 자신의 움직임 벡터가 움직임 벡터 버퍼(329)에 이전에 저장된 움직임 벡터를 대체하게 할 것이다. 그렇지 않으면, update_collocated_picture_idx_SPS가 0이면, 상술된 update_collocated_picture_idx는 현재 코딩 화상이 자시의 움직임 벡터가 슬라이스 또는 PPS 레벨에서 이전에 저장된 움직임 벡터들을 대체할 것인 지를 결정할 것이다. 게다가, 움직임 벡터 버퍼(329)가 한 화상에 대한 움직임 벡터만을 유지하기에, 슬라이스 헤더의 collocated_from_10_flag 및 collocated_ref_idx 플래그들 둘 다 제거될 수 있다.
따라서, 하나의 화상의 정규화된 움직임 벡터만이 저장된다. update_collocated_picture_idx_SPS가 1이거나 또는 update_collocated_picture_idx_SPS가 0이고 update_collocated_picture_idx가 1이면, 이전에 저장된 움직임 벡터는 현재 화상의 정규화된 움직임 벡터에 의해 대체될 것이다. 그렇지 않으면, update_collocated_picture_idx_SPS가 0이고 update_collocated_picture_idx가 0이면, 움직임 벡터 버퍼(329)에 이전에 저장된 움직임 벡터들은 변경되지 않은 채로 보유될 것이다.
도 19는 움직임 정보의 SPS-레벨 효율적 저장을 구현하는데 사용될 수 있는 일례의 처리 단계들을 도시한 도면이다. 블록(1902)은 연속 코딩 시퀀스의 디지털 화상들 각각과 연관된 추가 움직임 정보가 시퀀스 파라미터 집합에 의해 기술된 연속 코딩 시퀀스의 디지털 화상들 모두에 대해 이전에 코딩된 화상의 디지털 화상에 대한 움직임 정보를 대체하는 것이 바람직한 지를 결정한다. 예를 들어, 도 16에 도시된 시퀀스를 고려하면, 화상들 각각에 대해 계산된 모든 움직임 벡터가 전체 시퀀스의 이전 화상으로부터 움직임 벡터 메모리(329)에 저장된 움직임 벡터를 대체하는 것이 바람직할 수 있다. 기능상, 이는 간단히 그렇게 하고 1과 동일한 화상들 각각에 대해 update_collocated_picture_idx를 설정함으로써 구현될 수 있지만, 동일한 결과는 시퀀스 레벨 플래그가 사용되는 경우에 더 적은 신호 데이터로 획득될 수 있다. 상술된 바와 같이, 시퀀스-레벨 플래그는 update_collocated_picture_SPS_idx 플래그이다.
도 19로 돌아가서, 연속 코딩 시퀀스의 디지털 화상들 각각과 연관된 추가 움직임 정보가 시퀀스 파라미터 집합에 의해 기술된 연속 코딩 시퀀스의 디지털 화상들 모두에 대해 이전에 코딩된 화상의 디지털 화상에 대한 움직임 정보를 대체하는 것이 바람직하면, 프로세싱은 블록(1904)으로 진행되어, 이전 디지털 화상에 대한 움직임 정보가 연속 코딩 시퀀스의 디지털 화상들 각각의 움직임 정보로 대체되고, 연속 코딩 시퀀스의 복수의 디지털 화상들과 연관된 제2 움직임 정보 신호 데이터는 제3 값으로 설정된다. 일 실시예에서, 제2 움직임 정보 신호 데이터는 update_collocated_picture_idx_SPS 플래그를 포함하고, 제3 값은 1이다. 그렇지 않으면, 연속 코딩 시퀀스의 복수의 디지털 화상들과 연관된 제2 움직임 정보 신호 데이터는 제4 값으로 설정된다. 예를 들어, update_collocated_picture_idx_SPS 플래그는 이 순간에는 0으로 설정될 수 있다. 코딩된 프레임들의 움직임 정보가 이전에 계산된 프레임으로부터 계산된 메모리의 움직임 정보를 대체할 지의 여부는 update_collocated_picture_idx 플래그에 맡겨진다.
효율적으로 코딩된 움직임 정보를 사용한 비트 스트림들의 디코딩
인코딩된 비트 스트림(314)을 디코딩할 때 실행되는 동작들은 도 3에 도시된 디코딩 루프(315)의 동작들과 유사하다. 비트 스트림(314)이 엔트로피 디코딩된 후에, (블록(312)와 역으로 유사하고 블록들(316 및 318)과 유사한 프로세스들에서) 역양자화 및 역 변환되어 잔여(710)를 복구한다. 잔여(710)는 예측 변수 모듈(307)(공간(324) 또는 시간(330))로부터의 추정치 x'와 합산되어 복구 PU에 도달해서, 비트 스트림(314)의 각각의 잔여 PU 및 잔여 움직임 벡터에 필요한 대로 반복되는 프로세스에서, 화상 및 움직임 벡터를 복구한다. 인코더(202)에 대한 경우에서처럼, 디코더는 기준 화상 버퍼(328)와 유사한 기준 화상 버퍼의 다른 화상들에 의한 사용을 위해 움직임 벡터와 유사한 움직임 벡터 버퍼(329)에 움직임 벡터를 저장한다. 따라서, 디코더(220)는 또한 디코딩 프로세스의 일부로서 이전에 디코딩된 화상의 움직임 정보를 저장해야만 한다. 상술된 바와 같이, 인코더는 현재 코딩된 프레임의 움직임 벡터가 버퍼에 현재 저장된 움직임 벡터를 대체해야 하는지를 결정하고, 현재 코딩된 프레임의 움직임 벡터가 버퍼에 현재 저장된 움직임 벡터를 대체했는지를 update_collocated_picture_idx 플래그를 사용해서 나타낸다. 인코더(220)는 해당 플래그를 사용해서 현재 디코딩된 프레임의 움직임 벡터가 버퍼에 현재 저장된 움직임 벡터를 대체했는지를 제어하며, 따라서, 예측 가능한 방법으로 인코더(202)에 의해 실행된 프로세스를 복제한다.
도 20은 상술된 바와 같이 인코딩된 비트 스트림을 디코딩하는데 사용될 수 있는 일례의 동작들을 도시한 도면이다. 블록(2002)은 메모리에 저장된 제2 움직임 정보에 따라 복수의 디지털 화상들의 시퀀스의 제1 화상을 디코딩하여 제1 화상과 연관된 제1 움직임 정보를 생성하며, 제2 움직임 정보는 화상들의 시퀀스에 도시된 움직임을 기술하고, 제2 움직임 정보는 제1 디지털 화상의 디코딩에 시간적으로 앞서 디코딩된 제2 디지털 화상과 연관된다. 블록(2004)은 제1 움직임 신호 정보가 제1 값을 갖는지 또는 제2 값을 갖는 지를 결정한다. 제1 움직임 신호 정보가 제1 값을 갖는 경우, 프로세싱은 블록(2006)으로 진행되어, 메모리의 제2 움직임 정보를 제1 움직임 정보로 대체한다. 제1 움직임 신호 정보가 제2 값을 갖는 경우, 프로세싱은 블록(2010)으로 진행되어, 메모리에서 제2 움직임 정보를 보유한다. 블록들(2008 및 2012)은 제1 움직임 신호 정보의 값에 의해 결정된 대로 버퍼에 저장된 움직임 벡터 정보를 사용해서, 디코딩될 다음 프레임을 디코딩한다.
도 16의 일례를 다시 참조해서, 화상 2의 디코딩을 생각해 보라. 블록(2002)은 움직임 벡터 버퍼(329)에 저장된 제2 움직임 정보(MV4)를 사용해서 화상 2를 디코딩하고, 화상 디코딩이 완료된 후에, update_collocated_picture_idx 플래그를 검사한다. 결정 블록(2004) 및 블록(2010 및 2012)과 일치해서, 화상 2와 연관된 update_collocated_picture_idx 플래그가 0 값을 가지기에, 디코더(220)는 움직임 벡터 버퍼(329)의 현재 값을 현재 화상의 최근에 계산된 움직임 벡터(MV2)로 대체하지 않으며, 디코딩될 다음 화상(화상 6)이 MV4를 사용해서 디코딩된다.
디코더(220)는 update_collocated_picture_idx_SPS 플래그에 또한 응답한다. update_collocated_picture_idx_SPS 플래그가 1로 설정되면, 디코더(220)는 현재 움직임 벡터 버퍼(329) 값을 각각의 현재 화상의 움직임 벡터로 대체할 지를 결정하기 위해 update_collocated_picture_idx 플래그를 고려하지 않는다. 대신, 인코더(220)는, 비트 스트림의 update_collocated_picture_idx_SPS 플래그를 판독할 때, update_collocated_picture_idx_SPS 플래그가 1과 동일하면, 간단히 SPS와 연관된 모든 화상들에 대해 이 동작을 실행한다. 역으로, update_collocated_picture_idx_SPS 플래그가 0과 동일하면, 디코더(220)는 update_collocated_picture_idx 플래그에 따라 움직임 벡터 버퍼의 값을 갱신한다.
상술된 효율적으로 코딩된 움직임 벡터 기술들이 오직 하나의 공존 화상을 저장할 수 있기에, update_collocated_picture_idx 및 update_collocated_pix_idx_SPS의 값과 무관하게, 베이스라인 HEVC의 collocated_ref_idx 플래그 및 collocated_from_lo_flag는 더 이상 필요하지 않다. 또한, 단일 공존 화상은 전형적인 기준 화상이거나 또는 비기준 화상일 수 있다. 현재 정의된 HEVC에서, (기준/비기준 화상들이 움직임 보상 관점에서 정의되기에) 공존 화상은 기준 화상이어야만 한다. 예를 들어, 도 16에 도시된 시퀀스에서, 화상들 8, 4, 2 및 6은 기준 화상들이지만, 화상들 1, 3, 5 및 7은 비기준 화상들이다. 상술된 효율적으로 코딩된 움직임 벡터 기술들을 사용해서, 임의의 화상은 공존 화상으로서 작용할 수 있다(예를 들어, 화상 5는 공존 화상일 수 있음).
하드웨어 환경
도 21은 본 발명의 실시예들을 구현하는데 사용될 수 있는 일례의 프로세싱 시스템(2100)을 도시한다. 컴퓨터(2102)는 프로세서(2104) 및 랜덤 액세스 메모리(RAM) 등의 메모리(2106)를 포함한다. 컴퓨터(2102)는 그래픽 사용자 인터페이스(2118B)에서 사용자에게 윈도들 등의 이미지들을 제시하는 디스플레이(2122)에 동작상 연결된다. 컴퓨터(2102)는 키보드(2114), 마우스 장치(2116), 프린터 등의 다른 장치들에 연결될 수 있다. 물론, 상기 컴포넌트들 또는 임의의 수의 상이한 컴포넌트들, 주변 장치들 및 다른 장치들의 임의의 조합이 컴퓨터(2102)에 의해 사용될 수 있음을 당업자는 알 것이다.
일반적으로, 컴퓨터(2102)는 메모리(2106)에 저장된 운영 체제(2108)의 제어 하에서 동작하고, 입력들 및 커맨드들을 수용하고 그래픽 사용자 인터페이스(GUI) 모듈(2118A)을 통해 결과들을 제시하기 위해 사용자와 인터페이스한다. GUI 모듈(2118A)이 별개의 모듈로서 도시되지만, GUI 기능들을 실행하는 명령어들은 운영 체제(2108), 컴퓨터 프로그램(2110)에 상주하거나 분배될 수 있으며, 또는 특수 목적 메모리 및 프로세서로 구현될 수 있다. 컴퓨터(2102)는 COBOL, C++, FORTRAN 또는 다른 언어 등의 프로그래밍 언어로 기록된 응용 프로그램(2110)이 프로세서(2104) 판독 가능 코드로 번역될 수 있게 하는 컴파일러(2112)를 또한 구현한다. 완료 후에, 응용 프로그램(2110)은 컴파일러(2112)를 사용해서 생성된 관계 및 논리를 사용해서 컴퓨터(2102)의 메모리(2106)에 저장된 데이터에 액세스하여 조작한다. 컴퓨터(2102)는 다른 컴퓨터들과의 통신을 위해 모뎀, 위성 링크, 이더넷 카드 또는 다른 장치 등의 외부 통신 장치를 선택적으로 또한 포함한다.
일 실시예에서, 운영 체제(2108), 컴퓨터 프로그램(2110) 및 컴파일러(2112)를 구현하는 명령어들은 컴퓨터 판독 가능 매체, 예를 들어, 집 드라이브, 플로피 디스크 드라이브(2124), 하드 드라이브, CD-ROM 드라이브, 테이프 드라이브 등의 하나의 또는 그 이상의 고정형 또는 이동형 데이터 기억 장치들을 포함할 수 있는 데이터 기억 장치(2120)로 유형으로 구현된다. 또한, 운영 체제(2108) 및 컴퓨터 프로그램(2110)은, 컴퓨터(2102)에 의해 판독 및 실행될 때, 컴퓨터(2102)가 본 발명을 구현 및/또는 사용하는데 필요한 단계들을 실행하도록 야기하는 명령어들로 구성된다. 컴퓨터 프로그램(2110) 및/또는 동작 명령어들은 또한 메모리(2106) 및/또는 데이터 통신 장치들(2130)에서 유형으로 구현될 수 있어서, 컴퓨터 프로그램 제품 또는 제조품을 만든다. 이와 같이 하여, 본 명세서에서 사용된 용어들 "제조품(article of manufacture)", "프로그램 기억 장치(program storage device)" 및 "컴퓨터 프로그램 제품(computer program product)"은 임의의 컴퓨터 판독 가능 장치 또는 매체로부터 액세스 가능한 컴퓨터 프로그램을 망라하도록 의도된 것이다.
프로세싱 시스템(2100)은 또한 데스크탑, 랩탑, 태블릿, 노트북 컴퓨터, 개인 휴대 정보 단말기(PDA), 휴대폰, 스마트폰 또는 적합한 프로세싱 및 메모리 기능을 갖는 임의의 장치로 구현될 수 있다. 또한, 프로세싱 시스템(2100)은 특수 목적 하드웨어를 사용해서 상술된 기능들 중 일부 또는 전부를 실행할 수 있다. 예를 들어, 상술된 인코딩 및 디코딩 프로세스들은 특수 목적 프로세서 및 연관된 메모리에 의해 실행될 수 있다.
다수의 변경들이 본 발명의 범위로부터 벗어나지 않은 채로 본 구성에 대해 이루어질 수 있음을 당업자는 알 것이다. 예를 들어, 상기 컴포넌트들 또는 임의의 수의 상이한 컴포넌트들, 주변 장치들 및 다른 장치들의 임의의 조합이 사용될 수 있음을 당업자는 알 것이다. 예를 들어, 본 명세서에 기술된 특정 기능들은 소프트웨어 또는 펌웨어의 형태로 저장된 명령어들을 실행하는 하드웨어 모듈들 또는 프로세서에 의해 실행될 수 있다. 또한, 본 명세서에 기술된 기능은 단일 모듈들로 결합될 수 있으며, 또는 다수의 모듈들에서 실행되도록 확장될 수 있다.
결론
양호한 실시예의 상술된 설명은 실례 및 기술을 위해 제시되었다. 본 발명을 기술된 정확한 형태로 철저하게 하거나 제한하려는 의도는 아니다. 다수의 변경들 및 변형들이 상기 교시의 견지에서 가능하다. 권리들의 범위는 상세한 설명에 의해서가 아니라, 첨부된 청구항들에 의해서 제한되도록 의도된다.

Claims (32)

  1. 복수의 디지털 화상들 중 적어도 2개의 디지털 화상들에 도시된 이미지의 움직임을 도시하는 복수의 디지털 화상들의 시퀀스를 갖는 비트 스트림을 처리하기 위한 방법으로서,
    상기 복수의 디지털 화상들의 시퀀스의 제1 화상을 코딩하여 제1 움직임 정보를 생성하는 단계 - 상기 제1 움직임 정보는 상기 움직임을 기술하며 상기 제1 화상과 연관되는 적어도 하나의 움직임 벡터를 포함함 - ;
    상기 제1 움직임 정보가, 상기 움직임을 기술하며 또한 상기 제1 화상의 코딩에 시간적으로 앞서 코딩된 제2 디지털 화상과 연관되는 적어도 하나의 움직임 벡터를 포함하는 제2 움직임 정보를 대체해야 하는지를 결정하는 단계 - 상기 제2 움직임 정보는 메모리 내에 저장되어 다음 화상들의 움직임 벡터들을 예측하는데 사용됨 - ;
    시간적으로 상기 제1 화상의 코딩 후에 상기 시퀀스의 제3 화상을 코딩하여 상기 움직임을 기술하며 상기 제3 화상과 연관되는 적어도 하나의 움직임 벡터를 포함하는 제3 움직임 정보를 생성하는 단계
    를 포함하고,
    상기 제1 움직임 정보가 상기 제2 움직임 정보를 대체해야 하는지를 결정하는 단계는,
    상기 제3 화상과 상기 제1 화상 간의 제1 시간적 거리를 결정하는 단계;
    상기 제3 화상과 상기 제2 디지털 화상 간의 제2 시간적 거리를 결정하는 단계;
    상기 제1 시간적 거리와 상기 제2 시간적 거리를 비교하는 단계; 및
    상기 비교에 따라 상기 제1 움직임 정보가 상기 제2 움직임 정보를 대체해야 하는지를 결정하는 단계
    를 포함하며,
    상기 방법은,
    상기 제1 움직임 정보가 상기 제2 움직임 정보를 대체해야 하는 경우:
    다음 화상들의 움직임 벡터들을 예측하는데 사용하기 위해 메모리에서 상기 제2 움직임 정보를 상기 제1 움직임 정보로 대체하는 단계; 및
    제1 움직임 신호 정보에 대한 제1 값을 갖는 비트 스트림을 송신하는 단계; 그리고
    상기 제1 움직임 정보가 상기 제2 움직임 정보를 대체하지 않아야 하는 경우:
    다음 화상들의 움직임 벡터들을 예측하는데 사용하기 위해 상기 메모리 내에 상기 제2 움직임 정보를 보유하는 단계; 및
    상기 제1 움직임 신호 정보에 대한 제2 값을 갖는 비트 스트림을 송신하는 단계
    를 더 포함하는 방법.
  2. 제1항에 있어서,
    상기 제3 화상을 코딩하는 것은, 상기 제1 움직임 신호 정보가 상기 제2 값을 갖는 경우 상기 제2 움직임 정보에 따라, 그리고 상기 제1 움직임 신호 정보가 상기 제1 값을 갖는 경우 상기 제1 움직임 정보에 따라 상기 제3 화상을 코딩하는 것을 포함하는, 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 제3 화상과 상기 제2 디지털 화상 간의 제1 시간적 거리가 상기 제3 화상과 상기 제1 화상 간의 제2 시간적 거리보다 더 큰 경우, 상기 제1 움직임 정보가 상기 제2 움직임 정보를 대체해야 하는, 방법.
  4. 제1항에 있어서,
    상기 복수의 화상들은 복수의 디지털 화상들의 연속 코딩 시퀀스와 연관된 시퀀스 파라미터 집합에 의해 기술되고,
    상기 방법은,
    상기 연속 코딩 시퀀스의 디지털 화상들 각각과 연관된 추가 움직임 정보가, 상기 시퀀스 파라미터 집합에 의해 기술된 상기 연속 코딩 시퀀스의 디지털 화상들 모두에 대해 이전에 코딩된 화상의 디지털 화상의 움직임 정보를 대체해야 하는지를 결정하는 단계;
    상기 연속 코딩 시퀀스의 디지털 화상들 각각의 움직임 정보가 상기 연속 코딩 시퀀스의 디지털 화상들 모두에 대해 이전 화상의 움직임 정보를 대체해야 하는 경우,
    상기 이전 화상의 움직임 정보를 상기 연속 코딩 시퀀스의 디지털 화상들 각각의 움직임 정보로 대체하고, 상기 연속 코딩 시퀀스의 복수의 디지털 화상들과 연관된 제2 움직임 신호 정보를 제3 값으로 설정하는 단계; 및
    그 외의 경우, 상기 연속 코딩 시퀀스의 복수의 디지털 화상들과 연관된 상기 제2 움직임 신호 정보를 제4 값으로 설정하는 단계
    를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 연속 코딩 시퀀스의 화상들 각각의 움직임 정보가 상기 이전 화상의 움직임 정보를 대체해야 하는 경우,
    상기 제1 움직임 신호 정보를 갖지 않는 비트 스트림을 송신하는, 방법.
  6. 제5항에 있어서,
    상기 제1 움직임 신호 정보는 플래그 또는 인덱스인, 방법.
  7. 제6항에 있어서,
    상기 제1 움직임 신호 정보는 슬라이스 헤더에 포함되고, 상기 제2 움직임 신호 정보는 상기 시퀀스 파라미터 집합에 포함되는, 방법.
  8. 복수의 디지털 화상들 중 적어도 2개의 디지털 화상들에 도시된 이미지의 움직임을 도시하는 복수의 디지털 화상들의 압축 시퀀스 및 제1 움직임 신호 정보를 갖는 비트 스트림을 처리하기 위한 방법으로서,
    메모리 내에 저장된 제2 움직임 정보에 따라 상기 복수의 디지털 화상들의 시퀀스의 제1 화상을 디코딩하여 상기 제1 화상과 연관된 제1 움직임 정보를 생성하는 단계 - 상기 제1 움직임 정보는 적어도 하나의 움직임 벡터를 포함하고 상기 제2 움직임 정보는 상기 움직임을 기술하고 상기 제1 화상의 디코딩에 시간적으로 앞서 디코딩된 제2 디지털 화상과 연관되는 적어도 하나의 움직임 벡터를 포함함 - ;
    상기 제1 움직임 신호 정보가 제1 값을 갖는 경우에만 다음 화상들의 움직임 벡터들을 예측하는데 사용하기 위해 상기 메모리 내의 상기 제2 움직임 정보를 상기 제1 움직임 정보로 대체하고, 상기 제1 움직임 신호 정보가 제2 값을 갖는 경우 다음 화상들의 움직임 벡터들을 예측하는데 사용하기 위해 상기 메모리 내에 상기 제2 움직임 정보를 보유하는 단계; 및
    상기 제1 움직임 신호 정보가 상기 제1 값을 갖는 경우 상기 제1 움직임 정보에 따라 상기 시퀀스의 제3 화상을 디코딩하고, 상기 제1 움직임 신호 정보가 상기 제2 값을 갖는 경우 상기 제2 움직임 정보에 따라 상기 제3 화상을 디코딩하는 단계를 포함하고,
    상기 제3 화상과 상기 제2 디지털 화상 간의 제1 시간적 거리가 상기 제3 화상과 상기 제1 화상 간의 제2 시간적 거리보다 더 큰 경우, 상기 제1 움직임 신호 정보는 상기 제1 값을 갖는 방법.
  9. 제8항에 있어서,
    상기 복수의 화상들은 연속 디코딩 시퀀스의 복수의 디지털 화상들과 연관된 시퀀스 파라미터 집합에 의해 기술되고, 상기 시퀀스 파라미터 집합은 제2 움직임 신호 정보를 포함하며,
    상기 방법은,
    상기 제2 움직임 신호 정보가 제1 값을 갖는 경우:
    상기 시퀀스 파라미터 집합에 의해 기술된 상기 연속 디코딩 시퀀스의 디지털 화상들의 디지털 화상들 각각에 대해, 이전에 디코딩된 디지털 화상의 움직임 정보를 현재 디코딩된 디지털 화상의 움직임 정보로 대체하는 단계;
    상기 제2 움직임 신호 정보가 제2 값을 갖는 경우:
    상기 시퀀스 파라미터 집합에 의해 기술된 상기 연속 디코딩 시퀀스의 디지털 화상들의 디지털 화상들 각각에 대해, 상기 이전에 디코딩된 디지털 화상의 움직임 정보를 상기 제1 움직임 신호 정보에 따라 상기 현재 디코딩된 디지털 화상의 움직임 정보로 대체하는 단계
    를 더 포함하는 방법.
  10. 제9항에 있어서,
    상기 제1 움직임 신호 정보는 슬라이스 헤더에 포함되고, 상기 제2 움직임 신호 정보는 상기 시퀀스 파라미터 집합에 포함되는, 방법.
  11. 복수의 디지털 화상들 중 적어도 2개의 디지털 화상들에 도시된 이미지의 움직임을 도시하는 복수의 디지털 화상들의 시퀀스를 갖는 비트 스트림을 처리하기 위한 장치로서,
    프로세서; 및
    상기 프로세서에 통신 가능하게 연결되어 복수의 명령어들을 저장하는 메모리
    를 포함하고,
    상기 복수의 명령어들은,
    상기 복수의 디지털 화상들의 시퀀스의 제1 화상을 코딩하여 제1 움직임 정보를 생성하고 - 상기 제1 움직임 정보는 상기 움직임을 기술하고 상기 제1 화상과 연관되는 적어도 하나의 움직임 벡터를 포함함 - ;
    상기 제1 움직임 정보가 상기 움직임을 기술하고 상기 제1 화상의 코딩에 시간적으로 앞서 코딩된 제2 디지털 화상과 연관되는 적어도 하나의 움직임 벡터를 포함하는 제2 움직임 정보를 대체해야 하는지를 결정하며 - 상기 제2 움직임 정보는 메모리 내에 저장되어 다음 화상들의 움직임 벡터들을 예측하는데 사용됨 -;
    시간적으로 상기 제1 화상의 코딩 후에 상기 시퀀스의 제3 화상을 코딩하여 상기 움직임을 기술하며 상기 제3 화상과 연관되는 적어도 하나의 움직임 벡터를 포함하는 제3 움직임 정보를 생성
    하기 위한 명령어들을 포함하고,
    상기 제1 움직임 정보가 상기 제2 움직임 정보를 대체해야 하는지를 결정하는 것은,
    상기 제3 화상과 상기 제1 화상 간의 제1 시간적 거리를 결정하는 것;
    상기 제3 화상과 상기 제2 디지털 화상 간의 제2 시간적 거리를 결정하는 것;
    상기 제1 시간적 거리와 상기 제2 시간적 거리를 비교하는 것; 및
    상기 비교에 따라 상기 제1 움직임 정보가 상기 제2 움직임 정보를 대체해야 하는지를 결정하는 것
    을 포함하며,
    상기 복수의 명령어들은,
    상기 제1 움직임 정보가 상기 제2 움직임 정보를 대체해야 하는 경우:
    다음 화상들의 움직임 벡터들을 예측하는데 사용하기 위해 상기 메모리에서 상기 제2 움직임 정보를 상기 제1 움직임 정보로 대체하고;
    제1 움직임 신호 정보에 대한 제1 값을 갖는 비트 스트림을 송신하며;
    상기 제1 움직임 정보가 상기 제2 움직임 정보를 대체하지 않아야 하는 경우:
    다음 화상들의 움직임 벡터들을 예측하는데 사용하기 위해 상기 메모리 내에 상기 제2 움직임 정보를 보유하고;
    상기 제1 움직임 신호 정보에 대한 제2 값을 갖는 비트 스트림을 송신
    하기 위한 명령어들을 더 포함하는, 장치.
  12. 제11항에 있어서,
    상기 제3 화상과 상기 제2 디지털 화상 간의 제1 시간적 거리가 상기 제3 화상과 상기 제1 화상 간의 제2 시간적 거리보다 더 큰 경우, 상기 제1 움직임 정보가 상기 제2 움직임 정보를 대체해야 하는, 장치.
  13. 제11항에 있어서,
    상기 복수의 화상들은 상기 복수의 디지털 화상들의 연속 코딩 시퀀스와 연관된 시퀀스 파라미터 집합에 의해 기술되고,
    상기 명령어들은,
    상기 연속 코딩 시퀀스의 디지털 화상들 각각과 연관된 추가 움직임 정보가 상기 시퀀스 파라미터 집합에 의해 기술된 상기 연속 코딩 시퀀스의 디지털 화상들 모두에 대해 이전에 코딩된 화상의 디지털 화상의 움직임 정보를 대체해야 하는지를 결정하고;
    상기 연속 코딩 시퀀스의 디지털 화상들 각각의 움직임 정보가 상기 연속 코딩 시퀀스의 디지털 화상들 모두에 대해 이전 화상의 움직임 정보를 대체해야 하는 경우,
    상기 이전 화상의 움직임 정보를 상기 연속 코딩 시퀀스의 디지털 화상들 각각의 움직임 정보로 대체하고, 상기 연속 코딩 시퀀스의 복수의 디지털 화상들과 연관된 제2 움직임 신호 정보를 제3 값으로 설정하며;
    그 외의 경우, 상기 연속 코딩 시퀀스의 복수의 디지털 화상들과 연관된 상기 제2 움직임 신호 정보를 제4 값으로 설정하기 위한
    명령어들을 더 포함하는 장치.
  14. 제13항에 있어서,
    상기 명령어들은, 상기 연속 코딩 시퀀스의 화상들 각각의 움직임 정보가 상기 이전 화상의 움직임 정보를 대체해야 하는 경우, 상기 제1 움직임 신호 정보를 갖지 않는 비트 스트림을 제공하기 위한 명령어들을 포함하는, 장치.
  15. 복수의 디지털 화상들 중 적어도 2개의 디지털 화상들에 도시된 이미지의 움직임을 도시하는 복수의 디지털 화상들의 압축 시퀀스 및 제1 움직임 신호 정보를 갖는 비트 스트림을 처리하기 위한 장치로서,
    프로세서; 및
    상기 프로세서에 통신 가능하게 연결되어 명령어들을 저장하는 메모리
    를 포함하고,
    상기 명령어들은,
    메모리 내에 저장된 제2 움직임 정보에 따라 상기 복수의 디지털 화상들의 시퀀스의 제1 화상을 디코딩하여 상기 제1 화상과 연관된 제1 움직임 정보를 생성하고 - 상기 제1 움직임 정보는 적어도 하나의 움직임 벡터를 포함하고 상기 제2 움직임 정보는 상기 움직임을 기술하고 상기 제1 화상의 디코딩에 시간적으로 앞서 디코딩된 제2 디지털 화상과 연관되는 적어도 하나의 움직임 벡터를 포함함 - ;
    상기 제1 움직임 신호 정보가 제1 값을 갖는 경우에만 다음 화상들의 움직임 벡터들을 예측하는데 사용하기 위해 상기 메모리 내의 상기 제2 움직임 정보를 상기 제1 움직임 정보로 대체하고, 상기 제1 움직임 신호 정보가 제2 값을 갖는 경우 다음 화상들의 움직임 벡터들을 예측하는데 사용하기 위해 상기 메모리 내에 상기 제2 움직임 정보를 보유하며;
    상기 제1 움직임 신호 정보가 상기 제1 값을 갖는 경우 상기 제1 움직임 정보에 따라 상기 시퀀스의 제3 화상을 디코딩하고, 상기 제1 움직임 신호 정보가 상기 제2 값을 갖는 경우 상기 제2 움직임 정보에 따라 상기 제3 화상을 디코딩
    하기 위한 명령어들을 포함하고,
    상기 제3 화상과 상기 제2 디지털 화상 간의 제1 시간적 거리가 상기 제3 화상과 상기 제1 화상 간의 제2 시간적 거리보다 더 큰 경우, 상기 제1 움직임 신호 정보는 상기 제1 값을 갖는, 장치.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
KR1020147013237A 2011-11-18 2012-11-16 고효율 비디오 코딩을 위한 움직임 정보의 효율적인 저장 KR101662139B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201161561779P 2011-11-18 2011-11-18
US61/561,779 2011-11-18
US201161562418P 2011-11-21 2011-11-21
US61/562,418 2011-11-21
US201261595141P 2012-02-05 2012-02-05
US61/595,141 2012-02-05
PCT/US2012/065699 WO2013075042A1 (en) 2011-11-18 2012-11-16 Efficient storage of motion information for high efficiency video coding
US13/679,720 US9185408B2 (en) 2011-11-18 2012-11-16 Efficient storage of motion information for high efficiency video coding
US13/679,720 2012-11-16

Publications (2)

Publication Number Publication Date
KR20140085515A KR20140085515A (ko) 2014-07-07
KR101662139B1 true KR101662139B1 (ko) 2016-10-10

Family

ID=47258123

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147013237A KR101662139B1 (ko) 2011-11-18 2012-11-16 고효율 비디오 코딩을 위한 움직임 정보의 효율적인 저장

Country Status (5)

Country Link
US (1) US9185408B2 (ko)
KR (1) KR101662139B1 (ko)
CN (1) CN103959774B (ko)
BR (1) BR112014012038A2 (ko)
WO (1) WO2013075042A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9392235B2 (en) * 2011-11-18 2016-07-12 Google Technology Holdings LLC Explicit way for signaling a collocated reference picture for video coding
US9386309B2 (en) * 2011-11-18 2016-07-05 Google Technology Holdings LLC Explicit way for signaling a collocated picture for high efficiency video coding (HEVC) using a single reference list
EP2783510A1 (en) 2011-11-21 2014-10-01 Motorola Mobility LLC Implicit determination and combined implicit and explicit determination of collocated picture for temporal prediction
US9300959B2 (en) 2011-12-26 2016-03-29 Google Technology Holdings LLC Implicit determination of collocated picture for temporal prediction
CN104937939B (zh) 2012-04-11 2018-10-23 谷歌技术控股有限责任公司 用于时间运动矢量预测符标志的编码器和解码器及其方法
US9549177B2 (en) 2012-04-11 2017-01-17 Google Technology Holdings LLC Evaluation of signaling of collocated reference picture for temporal prediction
US9813732B2 (en) * 2012-06-28 2017-11-07 Axis Ab System and method for encoding video content using virtual intra-frames
US9319681B2 (en) 2012-07-18 2016-04-19 Google Technology Holdings LLC Signaling of temporal motion vector predictor (MVP) enable flag
US9729875B2 (en) * 2013-07-08 2017-08-08 Sony Corporation Palette coding mode
FR3011429A1 (fr) * 2013-09-27 2015-04-03 Orange Codage et decodage video par heritage d'un champ de vecteurs de mouvement
EP3120561B1 (en) * 2014-03-16 2023-09-06 VID SCALE, Inc. Method and apparatus for the signaling of lossless video coding
CA2951009A1 (en) * 2014-06-20 2015-12-23 Sony Corporation Image encoding device and method, and image decoding device and method
US20170064301A1 (en) * 2015-08-26 2017-03-02 Zhan Ma Methods and Apparatus for Use of Reference Block in Video Coding
US10542279B2 (en) * 2017-09-25 2020-01-21 Intel Corporation Temporal motion vector prediction control in video coding
US11601668B2 (en) * 2018-03-01 2023-03-07 Arris Enterprises Llc System and method of motion information storage for video coding and signaling
WO2019194435A1 (ko) * 2018-04-02 2019-10-10 엘지전자 주식회사 Tmvp에 기반한 영상 코딩 방법 및 그 장치
US20190320196A1 (en) * 2018-04-12 2019-10-17 Arris Enterprises Llc Motion Information Storage for Video Coding and Signaling
US11606575B2 (en) 2018-07-10 2023-03-14 Qualcomm Incorporated Multiple history based non-adjacent MVPs for wavefront processing of video coding
EP3979649A4 (en) * 2019-06-14 2023-06-07 Hyundai Motor Company METHOD AND DEVICE FOR VIDEO CODING AND DECODING USING INTER PREDICTION
CN114513661B (zh) * 2022-04-20 2022-09-06 宁波康达凯能医疗科技有限公司 一种基于方向检测的帧内图像模式决策方法与***

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004194274A (ja) 2002-07-26 2004-07-08 Matsushita Electric Ind Co Ltd 動画像符号化方法、動画像復号化方法および記録媒体
US20110110428A1 (en) 2009-11-11 2011-05-12 Mediatek Inc. Method of Storing Motion Vector Information and Video Decoding Apparatus

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7466843B2 (en) 2000-07-07 2008-12-16 Pryor Timothy R Multi-functional control and entertainment systems
AU2001290670A1 (en) 2000-09-20 2002-04-02 Dataplay, Inc. Etched micro lens and method and apparatus for fabricating
US6961055B2 (en) 2001-05-09 2005-11-01 Free Radical Design Limited Methods and apparatus for constructing virtual environments
CN101039424B (zh) 2002-07-15 2010-05-26 株式会社日立制作所 动态图像编码方法
AU2003241696A1 (en) * 2002-07-26 2004-02-16 Matsushita Electric Industrial Co., Ltd. Moving picture encoding method, moving picture decoding method, and recording medium
US7227901B2 (en) 2002-11-21 2007-06-05 Ub Video Inc. Low-complexity deblocking filter
CA2524031C (en) 2003-05-20 2015-07-07 Interlego Ag Method and system for manipulating a digital representation of a three-dimensional object
US7609763B2 (en) * 2003-07-18 2009-10-27 Microsoft Corporation Advanced bi-directional predictive coding of video frames
JP4262014B2 (ja) 2003-07-31 2009-05-13 キヤノン株式会社 画像撮影装置および画像処理方法
US7567617B2 (en) * 2003-09-07 2009-07-28 Microsoft Corporation Predicting motion vectors for fields of forward-predicted interlaced video frames
US7400681B2 (en) * 2003-11-28 2008-07-15 Scientific-Atlanta, Inc. Low-complexity motion vector prediction for video codec with two lists of reference pictures
JP3879741B2 (ja) 2004-02-25 2007-02-14 ソニー株式会社 画像情報符号化装置および画像情報符号化方法
CN1943247A (zh) 2004-04-08 2007-04-04 皇家飞利浦电子股份有限公司 应用于多媒体数据的编码方法
EP1589763A2 (en) 2004-04-20 2005-10-26 Sony Corporation Image processing apparatus, method and program
IL165190A (en) 2004-11-14 2012-05-31 Elbit Systems Ltd System and method for stabilizing an image
US7261266B2 (en) 2005-03-31 2007-08-28 Satterfield Johnny A Deployable video arm
US8385427B2 (en) 2005-04-15 2013-02-26 Apple Inc. Reduced resolution video decode
US8270492B2 (en) 2006-05-12 2012-09-18 Panasonic Corporation Moving picture decoding device
US8254455B2 (en) 2007-06-30 2012-08-28 Microsoft Corporation Computing collocated macroblock information for direct mode macroblocks
US8896712B2 (en) 2007-07-20 2014-11-25 Omnivision Technologies, Inc. Determining and correcting for imaging device motion during an exposure
US8908765B2 (en) * 2007-11-15 2014-12-09 General Instrument Corporation Method and apparatus for performing motion estimation
US9078007B2 (en) * 2008-10-03 2015-07-07 Qualcomm Incorporated Digital video coding with interpolation filters and offsets
US8917769B2 (en) * 2009-07-03 2014-12-23 Intel Corporation Methods and systems to estimate motion based on reconstructed reference frames at a video decoder
US20120230405A1 (en) 2009-10-28 2012-09-13 Media Tek Singapore Pte. Ltd. Video coding methods and video encoders and decoders with localized weighted prediction
US9083984B2 (en) * 2010-03-19 2015-07-14 Texas Instruments Incorporated Adaptive coding structure and adaptive FCode determination in video coding
US10104391B2 (en) 2010-10-01 2018-10-16 Dolby International Ab System for nested entropy encoding
EP3139611A1 (en) 2011-03-14 2017-03-08 HFI Innovation Inc. Method and apparatus for deriving temporal motion vector prediction
US9392235B2 (en) 2011-11-18 2016-07-12 Google Technology Holdings LLC Explicit way for signaling a collocated reference picture for video coding
US9386309B2 (en) 2011-11-18 2016-07-05 Google Technology Holdings LLC Explicit way for signaling a collocated picture for high efficiency video coding (HEVC) using a single reference list
EP2783510A1 (en) 2011-11-21 2014-10-01 Motorola Mobility LLC Implicit determination and combined implicit and explicit determination of collocated picture for temporal prediction
US9300959B2 (en) 2011-12-26 2016-03-29 Google Technology Holdings LLC Implicit determination of collocated picture for temporal prediction
CN104937939B (zh) 2012-04-11 2018-10-23 谷歌技术控股有限责任公司 用于时间运动矢量预测符标志的编码器和解码器及其方法
US9549177B2 (en) 2012-04-11 2017-01-17 Google Technology Holdings LLC Evaluation of signaling of collocated reference picture for temporal prediction
US9319681B2 (en) 2012-07-18 2016-04-19 Google Technology Holdings LLC Signaling of temporal motion vector predictor (MVP) enable flag
US20140056356A1 (en) 2012-08-21 2014-02-27 Motorola Mobility Llc Method and apparatus for efficient signaling of weighted prediction in advanced coding schemes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004194274A (ja) 2002-07-26 2004-07-08 Matsushita Electric Ind Co Ltd 動画像符号化方法、動画像復号化方法および記録媒体
US20110110428A1 (en) 2009-11-11 2011-05-12 Mediatek Inc. Method of Storing Motion Vector Information and Video Decoding Apparatus

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
S. Kadono, et al. Memory Reduction for Temporal Technique of Direct Mode. JVT of ISO/IEC MPEG & ITU-T VCEG. JVT-E076. Oct. 2002, pp.1-12*
Y. Yu, et al. Implicit signaling of collocated picture for HEVC. JCT-VC of ITU-T and ISO/IEC. JCTVC-H0548 Ver.3, Feb. 1, 2012, pp.1-6*

Also Published As

Publication number Publication date
CN103959774A (zh) 2014-07-30
US20130182769A1 (en) 2013-07-18
WO2013075042A1 (en) 2013-05-23
US9185408B2 (en) 2015-11-10
CN103959774B (zh) 2017-11-24
KR20140085515A (ko) 2014-07-07
BR112014012038A2 (pt) 2017-05-30

Similar Documents

Publication Publication Date Title
KR101662139B1 (ko) 고효율 비디오 코딩을 위한 움직임 정보의 효율적인 저장
CA2977526C (en) Modification of unification of intra block copy and inter signaling related syntax and semantics
EP2862353B1 (en) Method and apparatus for efficient slice header processing
US11317105B2 (en) Modification of picture parameter set (PPS) for HEVC extensions
US11363301B2 (en) Conditionally parsed extension syntax for HEVC extension processing
CN112887737B (zh) 用于hevc扩展处理的条件解析扩展语法
EP2781093B1 (en) Efficient storage of motion information for high efficiency video coding

Legal Events

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