KR102197505B1 - 비디오 및 이미지 코딩 및 디코딩에서의 해시 값을 갖는 블록의 표현 - Google Patents

비디오 및 이미지 코딩 및 디코딩에서의 해시 값을 갖는 블록의 표현 Download PDF

Info

Publication number
KR102197505B1
KR102197505B1 KR1020167013774A KR20167013774A KR102197505B1 KR 102197505 B1 KR102197505 B1 KR 102197505B1 KR 1020167013774 A KR1020167013774 A KR 1020167013774A KR 20167013774 A KR20167013774 A KR 20167013774A KR 102197505 B1 KR102197505 B1 KR 102197505B1
Authority
KR
South Korea
Prior art keywords
block
current block
hash value
hash
value
Prior art date
Application number
KR1020167013774A
Other languages
English (en)
Other versions
KR20160075709A (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 KR20160075709A publication Critical patent/KR20160075709A/ko
Application granted granted Critical
Publication of KR102197505B1 publication Critical patent/KR102197505B1/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/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
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/44Secrecy systems
    • H04N1/4446Hiding of documents or document information
    • H04N1/4466Enveloping, wrapping, or sealing, i.e. keeping the document closed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/44Secrecy systems
    • H04N1/448Rendering the image unintelligible, e.g. scrambling
    • H04N1/4486Rendering the image unintelligible, e.g. scrambling using digital data encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/97Matching pursuit coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder

Abstract

해시 기반의 블록 매칭에서의 혁신안은, 인코딩의 계산 효율성 및/또는 레이트 왜곡 성능의 관점에서 보다 효과적인 블록 카피("BC") 예측을 용이하게 한다. 예를 들면, 혁신안 중 몇몇은 해시 기반의 블록 매칭을 사용하여 결정되는 해시 값을 갖는 블록을 인코딩하는 것에 관련이 있다. 다른 혁신안은 해시 기반의 블록 매칭을 사용하여 결정되는 블록을 재구성하는 것에 관련이 있다.

Description

비디오 및 이미지 코딩 및 디코딩에서의 해시 값을 갖는 블록의 표현{REPRESENTING BLOCKS WITH HASH VALUES IN VIDEO AND IMAGE CODING AND DECODING}
엔지니어는 디지털 비디오의 비트 레이트를 감소시키기 위해 압축(또한 소스 코딩 또는 소스 인코딩으로 칭해짐)을 사용한다. 압축은 정보를 더 낮은 비트 레이트 형태로 변환하는 것에 의해 비디오 정보를 저장 및 송신하는 비용을 감소시킨다. 압축해제(decompression)(또한 디코딩으로 칭해짐)는 압축된 형태로부터 원래의 정보의 버전을 재구성한다. "코덱"은 인코더/디코더 시스템이다.
지난 이십 여년에 걸쳐, 다양한 비디오 코덱 표준이 채택되었는데, ITU-T H.261, H.262 (MPEG-2 또는 ISO/EC 13818-2), H.263 및 H.264 (MPEG-4 AVC 또는 ISO/IEC 14496-10) 표준, MPEG-1 (ISO/IEC 11172-2) 및 MPEG-4 비주얼 (ISO/IEC 14496-2) 표준, 및 SMPTE 421M 표준을 포함한다. 보다 최근에는, HEVC 표준(ITU-T H.265 또는 ISO/IEC 23008-2)이 승인되었다. (예를 들면, 스케일러블 비디오 코딩/디코딩을 위한, 샘플 비트 깊이 또는 크로마 샘플링 레이트의 관점에서 충실도가 더 높은 비디오의 코딩/디코딩을 위한, 또는 멀티뷰 코딩/디코딩을 위한) HEVC 표준에 대한 확장안이 현재 개발 중에 있다. 비디오 코덱 표준은 통상적으로, 인코딩된 비디오 비트스트림의 구문(syntax)에 대한 옵션을 정의하고, 인코딩 및 디코딩에서 특정 피쳐가 사용되는 경우 비트스트림에서의 파라미터를 상술한다. 많은 경우에서, 비디오 코덱 표준은 또한, 디코딩에서의 일치하는 결과를 달성하기 위해 디코더가 수행해야 하는 디코딩 동작에 관한 상세를 제공한다. 코덱 표준 외에, 다양한 독점적 코덱 포맷은 인코딩된 비디오 비트스트림의 구문에 대한 다른 동작 및 대응하는 디코딩 동작을 정의한다.
인트라 블록 카피(block copy; "BC")는 HEVC 확장안에 대해 고려 중에 있는 예측 모드이다. 인트라 BC 예측 모드의 경우, 픽쳐의 현재 블록의 샘플 값은, 동일 픽쳐에서 이전에 재구성된 샘플 값을 사용하여 예측된다. 블록 벡터(block vector; "BV")는, 현재 블록으로부터, 예측을 위해 사용되는 이전에 재구성된 샘플 값을 포함하는 픽쳐의 영역까지의 변위를 나타낸다. BV는 비트스트림에서 시그널링된다. 인트라 BC 예측은 인트라 픽쳐 예측의 형태이다 - 픽쳐의 블록에 대한 인트라 BC 예측은 동일 픽쳐에서의 샘플 값 외에는 어떠한 샘플 값도 사용하지 않는다.
HEVC 표준에서 현재 규정되고 HEVC 표준에 대한 몇몇 참조 소프트웨어(reference software)에서 구현되는 바와 같이, 인트라 BC 예측 모드는 여러 문제점을 갖는다. 예를 들면, 인트라 BC 예측을 사용하는 방법에 관한 인코더측 결정은 효과적으로 이루어지지 않는다.
요약하면, 상세한 설명은 해시 기반의 블록 매칭에서의 혁신안(innovation)을 제공한다. 예를 들면, 혁신안 중 몇몇은 해시 값을 갖는 블록을 인코딩하는 것에 관련되는데, 이 경우 인코더는 인코딩되고 있는 현재 블록과 매칭하는 블록을 검색할 때 블록에 대한 해시 값을 사용한다. 대응하는 디코더는 재구성 동안 어떤 블록을 사용할지를 결정하기 위해, 시그널링된 해시 값을 사용한다.
해시 기반의 블록 매칭에 대한 혁신안은, 방법의 일부로서, 방법을 수행하도록 적응되는 컴퓨팅 디바이스의 일부로서 또는 컴퓨팅 디바이스로 하여금 방법을 수행하게 하기 위한 컴퓨터 실행가능 명령어를 저장하는 유형의(tangible) 컴퓨터 판독가능 매체의 일부로서 구현될 수 있다. 다양한 혁신안은 조합하여 또는 개별적으로 사용될 수 있다.
본 발명의 상기 및 다른 목적, 특징, 및 이점은, 첨부의 도면을 참조로 진행하는 하기의 상세한 설명으로부터 더 명확하게 될 것이다.
도 1은 몇몇 설명된 실시형태가 구현될 수 있는 예시적인 컴퓨팅 시스템의 도면이다.
도 2a 및 도 2b는 몇몇 설명된 실시형태가 구현될 수 있는 예시적인 네트워크 환경의 도면이다.
도 3은 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 인코더 시스템의 도면이다.
도 4는 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 디코더 시스템의 도면이다.
도 5a 및 도 5b는 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 비디오 인코더를 예시하는 도면이다.
도 6은 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 비디오 디코더를 예시하는 도면이다.
도 7은 픽쳐의 블록에 대한 인트라 BC 예측을 예시하는 도면이다.
도 8은 블록 매칭에서 프레임의 블록에 대한 후보 블록을 예시하는 도면이다.
도 9는 예시적인 프레임의 블록에 대한 블록 매칭에서의 후보 블록의 수를 예시하는 도면이다.
도 10은 해시 기반의 블록 매칭에서의 후보 블록에 대한 해시 값을 예시하는 테이블이다.
도 11a 및 도 11b는 해시 값을 갖는 블록을 인코딩하기 위한 기술을 예시하는 플로우차트이다.
도 12a 및 도 12b는 재구성 블록을 결정하기 위해 시그널링된 해시 값을 사용하는 디코딩을 위한 기술을 예시하는 플로우차트이다.
상세한 설명은 해시 기반의 블록 매칭의 사용에서의 혁신안을 제공한다. 특히, 상세한 설명은 해시 값을 갖는 블록을 인코딩하고 해시 블록을 사용하여 블록을 재구성하기 위한 혁신안을 제공한다.
본원의 여기저기에서 설명되는 동작이 비디오 인코더에 의해 수행되고 있는 것으로 설명되지만, 많은 경우에서, 동작은 다른 타입의 미디어 프로세싱 툴(예를 들면, 이미지 인코더)에 의해 수행될 수 있다.
본원에서 설명되는 혁신안 중 몇몇은 HEVC 표준에 고유한 구문 엘리먼트 및 동작을 참조로 예시된다. 예를 들면, HEVC 표준의 드래프트 버전 JCTVC-N1005 - 2013년 7월의 JCTVC-N1005 "High Efficiency Video Coding (HEVC) Range Extensions Text Specification: Draft 4"에 대한 참조가 이루어진다. 본원에서 설명되는 혁신안은 또한, 다른 표준 또는 포맷에 대해 구현될 수 있다.
보다 일반적으로는, 본원에서 설명되는 예에 대한 다양한 대안예도 가능하다. 예를 들면, 본원에서 설명되는 방법 중 몇몇은, 설명되는 방법 액트(act)의 순서를 변경하는 것에 의해, 소정의 방법 액트를 분할, 반복, 또는 생략하는 것에 의해, 등등에 의해 변경될 수 있다. 개시된 기술의 다양한 양태는 조합하여 또는 개별적으로 사용될 수 있다. 상이한 실시형태는 설명된 혁신안 중 하나 이상을 사용한다. 본원에서 설명되는 혁신안 중 몇몇은 배경에서 언급된 문제점 중 하나 이상을 중점적으로 다룬다. 통상적으로는, 주어진 기술/툴은 이러한 문제점 모두를 해결하지는 않는다.
I. 예시적인 컴퓨팅 시스템.
도 1은, 설명된 혁신안 중 몇몇이 구현될 수도 있는 적절한 컴퓨팅 시스템(100)의 일반화된 예를 예시한다. 컴퓨팅 시스템(100)은, 혁신안이 다양한 범용의 또는 특수 목적의 컴퓨팅 시스템에서 구현될 수도 있기 때문에, 사용 또는 기능성의 범위에 관해 어떠한 제한도 제시하도록 의도되지는 않는다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 하나 이상의 프로세싱 유닛(110, 115) 및 메모리(120, 125)를 포함한다. 프로세싱 유닛(110, 115)은 컴퓨터 실행가능 명령어를 실행한다. 프로세싱 유닛은 범용 중앙 프로세싱 유닛(central processing unit; "CPU"), 주문형 반도체(application-specific integrated circuit; "ASIC")에서의 프로세서, 또는 임의의 다른 타입의 프로세서일 수 있다. 다중 프로세싱 시스템에서, 프로세싱 파워를 증가시키기 위해 복수의 프로세싱 유닛이 컴퓨터 실행가능 명령어를 실행한다. 예를 들면, 도 1은 중앙 프로세싱 유닛(110)뿐만 아니라 그래픽 프로세싱 유닛 또는 코프로세싱 유닛(co-processing unit)(115)을 도시한다. 유형의 메모리(120, 125)는 휘발성 메모리(예를 들면, 레지스터, 캐시, RAM), 불휘발성 메모리(예를 들면, ROM, EEPROM, 플래시 메모리 등등), 또는 프로세싱 유닛(들)에 의해 액세스될 수 있는 이 둘의 어떤 조합일 수도 있다. 메모리(120, 125)는, 해시 기반의 블록 매칭 및/또는 해시 기반의 블록 재구성에 대한 하나 이상의 혁신안을 구현하는 소프트웨어(180)를, 프로세싱 유닛(들)에 의한 실행에 적합한 컴퓨터 실행가능 명령어의 형태로 저장한다.
컴퓨팅 시스템은 추가적인 피쳐를 구비할 수도 있다. 예를 들면, 컴퓨팅 시스템(100)은 스토리지(140), 하나 이상의 입력 디바이스(150), 하나 이상의 출력 디바이스(160), 및 하나 이상의 통신 연결부(170)를 포함한다. 인터커넥션 메커니즘(interconnection mechanism)(도시되지 않음) 예컨대 버스, 컨트롤러, 또는 네트워크는 컴퓨팅 시스템(100)의 컴포넌트를 인터커넥트한다. 통상적으로, 오퍼레이팅 시스템 소프트웨어(도시되지 않음)는 컴퓨팅 시스템(100)에서 실행하는 다른 소프트웨어에 대한 동작 환경을 제공하고, 컴퓨팅 시스템(100)의 컴포넌트의 활동을 조화시킨다(coordinate).
유형의 스토리지(140)는 착탈식 또는 비착탈식일 수도 있고, 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, DVD, 또는 정보를 저장하기 위해 사용될 수 있고 컴퓨팅 시스템(100) 내에서 액세스될 수 있는 임의의 다른 매체를 포함한다. 스토리지(140)는 해시 기반의 블록 매칭 및/또는 해시 기반의 블록 재구성에 대한 하나 이상의 혁신안을 구현하는 소프트웨어(180)에 대한 명령어를 저장한다.
입력 디바이스(들)(150)는 터치 입력 디바이스 예컨대 키보드, 마우스, 펜, 또는 트랙볼, 음성 입력 디바이스, 스캐닝 디바이스, 또는 컴퓨팅 시스템(100)으로 입력을 제공하는 다른 디바이스일 수도 있다. 비디오의 경우, 입력 디바이스(들)(150)는 카메라, 비디오 카드, TV 튜너 카드, 또는 비디오 입력을 아날로그 또는 디지털 형태로 받아들이는 유사한 디바이스, 또는 비디오 샘플을 컴퓨팅 시스템(100) 안으로 읽어들이는 CD-ROM 또는 CD-RW일 수도 있다. 출력 디바이스(들)(160)는 디스플레이, 프린터, 스피커, CD-라이터, 또는 컴퓨팅 시스템(100)으로부터의 출력을 제공하는 다른 디바이스일 수도 있다.
통신 연결부(들)(170)는 통신 매체를 통한 다른 통신 엔티티로의 통신을 가능하게 한다. 통신 매체는 컴퓨터 판독가능 명령어, 오디오 또는 비디오 입력 또는 출력, 또는 변조된 데이터 신호에서의 다른 데이터와 같은 정보를 전달한다. 변조된 데이터 신호는, 자신의 특성 중 하나 이상을, 신호에서 정보를 인코딩하는 것과 같은 방식으로 설정하거나 변경한 신호를 의미한다. 비제한적인 예로서, 통신 매체는 전기적 캐리어, 광학적 캐리어, RF 캐리어, 또는 다른 캐리어를 사용할 수 있다.
혁신안은 컴퓨터 판독가능 매체의 일반적 맥락에서 설명될 수 있다. 컴퓨터 판독가능 매체는, 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 이용가능한 유형의 매체이다. 비제한적인 예로서, 컴퓨팅 시스템(100)과 관련하여, 컴퓨터 판독가능 매체는 메모리(120, 125), 스토리지(140), 및 상기 중 임의의 것의 조합을 포함한다.
혁신안은, 컴퓨팅 시스템에서 타겟인 실제 또는 가상의 프로세서 상에서 실행되는, 프로그램 모듈에 포함되는 것과 같은 컴퓨터 실행가능 명령어의 일반적 맥락에서 설명될 수 있다. 일반적으로, 프로그램 모듈은, 특정 작업(task)을 수행하거나 또는 특정한 추상 데이터 타입을 구현하는 루틴, 프로그램, 라이브러리, 오브젝트, 클래스, 컴포넌트, 데이터 구조 등등을 포함한다. 프로그램 모듈의 기능성은 다양한 실시형태에서 소망에 따라 프로그램 모듈 사이에서 분할되거나 또는 결합될 수도 있다. 프로그램 모듈에 대한 컴퓨터 실행가능 명령어는 로컬 컴퓨팅 시스템 또는 분산형 컴퓨팅 시스템 내에서 실행될 수도 있다.
용어 "시스템" 및 "디바이스"는 본원에서 상호교환적으로 사용된다. 문맥상 그렇지 않다고 명확하게 나타내지 않는 한, 어떠한 용어도 컴퓨팅 디바이스 또는 컴퓨팅 시스템의 타입에 관해 아무런 제한을 내포하지 않는다. 일반적으로, 컴퓨팅 시스템 또는 컴퓨팅 디바이스는 로컬이거나 또는 분산될 수도 있으며, 본원에서 설명되는 기능성을 구현하는 소프트웨어와의 특수 목적의 하드웨어 및/또는 범용 하드웨어의 임의의 조합을 포함할 수 있다.
개시된 방법은 또한, 개시된 방법 중 임의의 것을 수행하도록 구성되는 특수한 컴퓨팅 하드웨어를 사용하여 구현될 수 있다. 예를 들면, 개시된 방법은, 개시된 방법 중 임의의 것을 구현하도록 특별하게 설계되거나 구성되는 집적 회로(예를 들면, ASIC(예컨대 ASIC 디지털 신호 프로세싱 유닛(digital signal process unit; "DSP"), 그래픽 프로세싱 유닛(graphics processing unit; "GPU"), 프로그래머블 로직 디바이스(programmable logic device; "PLD"), 예컨대 필드 프로그래머블 게이트 어레이(field programmable gate array; "FPGA")))에 의해 구현될 수 있다.
표현 때문에, 상세한 설명은, 컴퓨팅 시스템에서의 컴퓨터 동작을 설명하기 위해, "결정한다" 및 "사용한다"와 같은 용어를 사용한다. 이들 용어는 컴퓨터에 의해 수행되는 동작에 대한 하이 레벨의 추상 개념이며 사람에 의해 수행되는 행위와 혼돈되어선 안된다. 이들 용어에 대응하는 실제 컴퓨터 동작은 구현예에 의존하여 달라진다.
II. 예시적인 네트워크 환경.
도 2a 및 도 2b는 비디오 인코더(220) 및 비디오 디코더(270)를 포함하는 예시적인 네트워크 환경(201, 202)을 도시한다. 인코더(220) 및 디코더(270)는 적절한 통신 프로토콜을 사용하는 네트워크(250)를 통해 연결된다. 네트워크(250)는 인터넷 또는 다른 컴퓨터 네트워크를 포함할 수 있다.
도 2a에서 도시되는 네트워크 환경(201)에서, 각각의 실시간 통신(real-time communication; "RTC") 툴(210)은 양방향 통신을 위해 인코더(220) 및 디코더(270) 둘 다를 포함한다. 주어진 인코더(220)는, HEVC 표준, SMPTE 421M 표준, ISO-IEC 14496-10 표준(H.264 또는 AVC로 또한 알려짐), 다른 표준, 또는 독점적 포맷의 변형안 또는 확장안을 따르는 출력을 생성할 수 있는데, 대응하는 디코더(270)가 인코더(220)로부터 인코딩된 데이터를 받아들이게 된다. 양방향 통신은 화상 회의, 영상 전화, 또는 다른 양자간 통신 시나리오의 일부일 수 있다. 도 2a의 네트워크 환경(201)이 두 개의 실시간 통신 툴(210)을 포함하지만, 네트워크 환경(201)은, 대신, 다자간 통신(multiparty communication)에 참여하는 세 개 이상의 실시간 통신 툴(210)을 포함할 수 있다.
실시간 통신 툴(210)은 인코더(220)에 의한 인코딩을 관리한다. 도 3은 실시간 통신 툴(210)에 포함될 수 있는 예시적인 인코더 시스템(300)을 도시한다. 대안적으로, 실시간 통신 툴(210)은 다른 인코더 시스템을 사용한다. 실시간 통신 툴(210)은 또한 디코더(270)에 의한 디코딩을 관리한다. 도 4는 실시간 통신 툴(210)에 포함될 수 있는 예시적인 디코더 시스템(400)을 도시한다. 대안적으로, 실시간 통신 툴(210)은 다른 디코더 시스템을 사용한다.
도 2b에서 도시되는 네트워크 환경(202)에서, 인코딩 툴(212)은, 디코더(270)를 포함하는 복수의 재생 툴(214)로 전달하기 위한 비디오를 인코딩하는 인코더(220)를 포함한다. 양방향 통신은, 비디오 감시 시스템, 웹 카메라 모니터링 시스템, 원격 데스크탑 회의 프리젠테이션 또는 비디오가 인코딩되고 한 장소에서 하나 이상의 다른 장소로 전송되는 다른 시나리오에 대해 제공될 수 있다. 도 2b의 네트워크 환경(202)이 두 개의 재생 툴(214)을 포함하지만, 네트워크 환경(202)은 더 많은 또는 더 적은 재생 툴(214)을 포함할 수 있다. 일반적으로, 재생 툴(214)은, 재생 툴(214)이 수신할 비디오의 스트림을 결정하기 위해 인코딩 툴(212)과 통신한다. 재생 툴(214)은 스트림을 수신하고, 수신된 인코딩된 데이터를 적절한 기간 동안 버퍼링하고, 디코딩 및 재생을 시작한다.
도 3은 인코딩 툴(212)에 포함될 수 있는 예시적인 인코더 시스템(300)을 도시한다. 대안적으로, 인코딩 툴(212)은 다른 인코더 시스템을 사용한다. 인코딩 툴(212)은 또한, 하나 이상의 재생 툴(214)과의 연결을 관리하기 위한 서버측 컨트롤러 로직을 포함할 수 있다. 도 4는, 재생 툴(214)에 포함될 수 있는 예시적인 디코더 시스템(400)을 도시한다. 대안적으로, 재생 툴(214)은 다른 디코더 시스템을 사용한다. 재생 툴(214)은 또한, 인코딩 툴(212)과의 연결을 관리하기 위한 클라이언트측 컨트롤러 로직을 포함할 수 있다.
III. 예시적인 인코더 시스템.
도 3은 몇몇 설명된 실시형태가 연계하여 구현될 수도 있는 예시적인 인코더 시스템(300)의 블록도이다. 인코더 시스템(300)은, 복수의 인코딩 모드 예컨대 실시간 통신을 위한 로우 레이턴시(low-latency) 인코딩 모드, 트랜스코딩 모드, 및 파일 또는 스트림으로부터의 미디어 재생을 위한 보통의 인코딩 모드 중 임의의 것에서 동작할 수 있는 범용 인코딩 툴일 수 있거나, 또는 그것은 하나의 이러한 인코딩 모드에 대해 적응되는 특수 목적의 인코딩 툴일 수 있다. 인코더 시스템(300)은 오퍼레이팅 시스템 모듈로서, 애플리케이션 라이브러리의 일부로서 또는 독립형 애플리케이션으로서 구현될 수 있다. 종합하면, 인코더 시스템(300)은 비디오 소스(310)로부터 소스 비디오 프레임(311)의 시퀀스를 수신하고 인코딩된 데이터를 채널(390)에 대한 출력으로서 생성한다. 채널로 출력되는 인코딩된 데이터는, 해시 기반의 블록 매칭을 사용하여 인코딩된 컨텐츠를 포함할 수 있다.
비디오 소스(310)는 카메라, 튜너 카드, 저장 매체, 또는 다른 디지털 비디오 소스일 수 있다. 비디오 소스(310)는, 예를 들면, 초당 30프레임의 프레임 레이트에서 비디오 프레임의 시퀀스를 생성한다. 본원에서 사용되는 바와 같이, 용어 "프레임"은 일반적으로, 소스, 코딩된 또는 재구성된 이미지 데이터를 지칭한다. 순차 비디오(progressive video)의 경우, 프레임은 순차 비디오 프레임이다. 인터레이스 비디오(interlaced video)의 경우, 예시적인 실시형태에서, 인터레이스 비디오 프레임은 인코딩 이전에 디인터레이스된다(de-interlaced). 대안적으로, 두 개의 상보적 인터레이스 비디오 필드가 인터레이스 비디오 프레임 또는 별개의 필드로서 인코딩된다. 순차 비디오 프레임을 나타내는 것 외에, 용어 "프레임" 또는 "픽쳐"는 단일의 짝을 이루지 않는 비디오 필드(single non-paired video field), 비디오 필드의 상보적 쌍, 주어진 시간에서의 비디오 오브젝트를 나타내는 비디오 오브젝트 플레인, 또는 더 큰 이미지에서의 주목(of interest) 영역을 나타낼 수 있다. 비디오 오브젝트 플레인 또는 영역은, 한 장면의 복수의 오브젝트 또는 영역을 포함하는 더 큰 이미지의 일부일 수 있다.
도달하는 소스 프레임(311)은, 복수의 프레임 버퍼 저장 영역(321, 322,…, 32n)을 포함하는 소스 프레임 임시 메모리 저장 영역(320)에 저장된다. 프레임 버퍼(321, 322 등등)는 소스 프레임 저장 영역(320)에 하나의 소스 프레임을 유지한다. 소스 프레임(311) 중 하나 이상이 프레임 버퍼(321, 322, 등등)에 저장된 이후, 프레임 선택기(330)는 소스 프레임 저장 영역(320)으로부터 개개의 소스 프레임을 주기적으로 선택한다. 인코더(340)에 대한 입력을 위해 프레임 선택기(330)에 의해 프레임이 선택되는 순서는, 비디오 소스(310)에 의해 프레임이 재생되는 순서와는 상이할 수도 있다, 예를 들면, 시간적으로 역방향의 예측(temporally backward prediction)을 용이하게 하기 위해, 한 프레임이 순서에서 앞설 수도 있다. 인코더(340) 이전에, 인코더 시스템(300)은, 인코딩 이전에, 선택된 프레임(331)의 전처리(pre-processing)(예를 들면, 필터링)를 수행하는 전처리기(pre-processor)(도시되지 않음)를 포함할 수 있다. 전처리는 또한, 인코딩을 위한 주 성분 및 부 성분으로의 컬러 공간 변환을 포함할 수 있다. 통상적으로는, 인코딩 이전에, 비디오는 YUV와 같은 컬러 공간으로 변환되었는데, 여기서 루마(Y) 성분의 샘플 값은 휘도 또는 강도(intensity) 값을 나타내고, 크로마(U, V) 성분의 샘플 값은 컬러 차이 값을 나타낸다. 크로마 샘플 값은 (예를 들면, YUV 4:4:4 포맷에 대해) 더 낮은 크로마 샘플링 레이트로 서브샘플링될 수도 있거나, 또는 크로마 샘플 값은 (예를 들면, YUV 2:0:4 포맷에 대해) 루마 샘플 값과 동일한 해상도를 가질 수도 있다. 또는, 비디오는 다른 포맷(예를 들면, RGB 4:4:4 포맷)으로 인코딩될 수 있다.
인코더(340)는, 코딩된 프레임(341)을 생성하기 위해, 선택된 프레임(331)을 인코딩하고 또한 메모리 관리 제어 동작(memory management control operation; "MMCO") 신호(342) 또는 참조 픽쳐 세트(reference picture set; "RPS") 정보를 생성한다. 현재의 프레임이 인코딩된 첫 번째 프레임이 아니고, 자신의 인코딩 프로세스를 수행하고 있는 경우, 인코더(340)는, 디코딩된 프레임 임시 메모리 저장 영역(360)에 저장되어 있는 하나 이상의 이전에 인코딩된/디코딩된 프레임(369)을 사용할 수도 있다. 이렇게 저장된 디코딩된 프레임(369)은 현재 소스 프레임(331)의 컨텐츠의 인터 프레임 예측(inter-frame prediction)을 위한 참조 프레임으로서 사용된다. 일반적으로, 인코더(340)는, 타일로의 구획화, 인트라 예측 추정 및 예측, 모션 추정 및 보상, 주파수 변환, 양자화 및 엔트로피 코딩과 같은 인코딩 작업을 수행하는 복수의 인코딩 모듈을 포함한다. 인코더(340)에 의해 수행되는 정확한 동작은 압축 포맷에 의존하여 변할 수 있다. 출력된 인코딩된 데이터의 포맷은, HEVC 포맷, 윈도우 미디어 비디오(Windows Media Video) 포맷, VC-1 포맷, MPEG-x 포맷(예를 들면, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예를 들면, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형안 또는 확장안일 수 있다.
인코더(340)는 프레임을 동일한 사이즈의 또는 상이한 사이즈의 복수의 타일로 구획할 수 있다. 예를 들면, 인코더(340)는, 프레임 경계와 함께, 프레임 내에서의 타일의 수평 및 수직 경계를 정의하는 타일 행(row) 및 타일 열(column)을 따라 프레임을 분할하는데, 각각의 타일은 직사각형 영역이다. 타일은 종종 병렬 프로세싱을 위한 옵션을 향상시키기 위해 사용된다. 프레임은 또한 하나 이상의 슬라이스로서 편제될(organized) 수 있는데, 슬라이스는 전체 프레임 또는 프레임의 영역일 수 있다. 슬라이스는 프레임의 다른 슬라이스와 무관하게 디코딩될 수 있는데, 이것은 에러 복원성(error resilience)을 향상시킨다. 슬라이스 또는 타일의 컨텐츠는 인코딩 및 디코딩의 목적을 위해 블록 또는 샘플의 다른 세트로 추가로 구획된다.
HEVC 표준에 따른 구문의 경우, 인코더는 프레임(또는 슬라이스 또는 타일)의 컨텐츠를 코딩 트리 단위로 분할한다. 코딩 트리 단위(coding tree unit; "CTU")는 루마 코딩 트리 블록(luma coding tree block; "CTB")으로 편제되는 루마 샘플 값 및 두 개의 크로마 CTB로 편제되는 대응하는 크로마 샘플 값을 포함한다. CTU(및 그것의 CTB)의 사이즈는 인코더에 의해 선택되고, 예를 들면, 64×64, 32×32 또는 16×16 샘플 값일 수 있다. CTU는 하나 이상의 코딩 단위를 포함한다. 코딩 단위(coding unit; "CU")는 루마 코딩 블록(coding block; "CB") 및 두 개의 대응하는 크로마 CB를 구비한다. 예를 들면, 64×64 루마 CTB 및 두 개의 64×64 크로마 CTB를 갖는 CTU(YUV 4:4:4 포맷)는, 각각의 CU가 32×32 루마 CB 및 두 개의 32×32 크로마 CB를 포함하면서, 그리고 각각의 CU가 어쩌면 더 작은 CU로 더 분할되면서, 네 개의 CU로 분할될 수 있다. 또는, 다른 예로서, 64×64 루마 CTB 및 두 개의 32×32 크로마 CTB를 갖는 CTU(YUV 4:2:0 포맷)는, 각각의 CU가 32×32 루마 CB 및 두 개의 16×16 크로마 CB를 포함하면서, 그리고 각각의 CU가 어쩌면 더 작은 CU로 더 분할되면서, 네 개의 CU로 분할될 수 있다. CU의 가장 작은 허용가능한 사이즈(예를 들면, 8×8, 16×16)는 비트스트림에서 시그널링될 수 있다.
일반적으로, CU는 인터 또는 인트라와 같은 예측 모드를 갖는다. CU는 예측 정보(예컨대 예측 모드 상세, 변위 값 등등) 및/또는 예측 프로세싱을 시그널링하는 목적을 위한 하나 이상의 예측 단위를 포함한다. 예측 단위(prediction unit; "PU")는 루마 예측 블록(prediction block; "PB") 및 두 개의 크로마 PB를 구비한다. 인트라 예측된 CU의 경우, PU는, CU가 가장 작은 사이즈(예를 들면, 8×8)를 갖지 않는 한, CU와 동일한 사이즈를 갖는다. 그 경우, CU는 네 개의 더 작은 PU(예를 들면, 가장 작은 CU 사이즈가 8×8이면 각각 4×4)로 분할될 수 있거나 또는 PU는, CU에 대한 구문 엘리먼트에 의해 나타내어지는 바와 같이, 가장 작은 CU 사이즈를 가질 수 있다. CU는 또한 잔차(residual) 코딩/디코딩의 목적을 위해 하나 이상의 변환 단위를 갖는데, 변환 단위(transform unit; "TU")는 변환 블록(transform block; "TB") 및 두 개의 크로마 TB를 갖는다. 인트라 예측된 CU에서의 PU는 단일의 TU(사이즈에서 PU와 동일) 또는 복수의 TU를 포함할 수도 있다. 본원에서 사용되는 바와 같이, 용어 "블록"은, 문맥에 의존하여, CB, PB, TB 또는 다른 세트의 샘플 값을 포함할 수 있다. 인코더는 비디오를 CTU, CU, PU, TU 등등으로 구획하는 방법을 결정한다.
도 3을 참조하면, 인코더는 소스 프레임(331)의 인트라 코딩된 블록을, 프레임(331)에서의 다른 이전에 재구성된 샘플 값으로부터의 예측의 관점에서 나타낸다. 인트라 BC 예측의 경우, 인트라 픽쳐 추정기(intra-picture estimator)는, 다른 이전에 재구성된 샘플 값에 대한 한 블록의 변위를 추정한다. 인트라 예측 참조 영역은, 블록에 대한 BC 예측 값을 생성하기 위해 사용되는, 프레임에서의 샘플의 영역이다. 인트라 예측 영역은 블록 벡터("BV") 값(이때 인코딩되는 BV 추정에서 결정됨), 또는 대안적으로, 블록 해시 사전(block hash dictionary)에서의 재구성 블록을 나타내는 해시 값으로 나타내어질 수 있다. 블록에 대한 인트라 공간 예측의 경우, 인트라 픽쳐 추정기는, 이웃하는 재구성된 샘플 값의 블록으로의 외삽(extrapolation)을 추정한다. 인트라 픽쳐 추정기는 예측 정보(예컨대 인트라 BC 예측을 위한 BV 값 또는 해시 값 및 인트라 공간 예측을 위한 예측 모드(방향))를 출력하는데, 예측 정보는 엔트로피 코딩된다. 인트라 예측 예측기(intra-prediction predictor)는 인트라 예측 값을 결정하기 위해 예측 정보를 적용한다.
인코더(340)는, 소스 프레임(331)의 인터 코딩되고 예측된 블록을, 참조 프레임으로부터의 예측의 관점에서 나타낸다. 모션 추정기는 하나 이상의 참조 프레임(369)에 대한 블록의 모션을 추정한다. 복수의 참조 프레임이 사용되는 경우, 복수의 참조 프레임은 상이한 시간적 방향 또는 동일한 시간적 방향으로부터 유래할 수 있다. 모션 보상된 예측 참조 영역은, 현재의 프레임의 샘플의 블록에 대한 모션 보상된 예측 값을 생성하기 위해 사용되는, 참조 프레임(들)에서의 샘플의 영역이다. 모션 추정기는 모션 벡터 정보와 같은 모션 정보를 출력하는데, 모션 정보는 엔트로피 코딩된다. 모션 보상기는 모션 보상된 예측 값을 결정하기 위해 모션 벡터를 참조 프레임(369)에 적용한다.
인코더는 블록의 예측 값(인트라 또는 인터)과 대응하는 원래의 값 사이의 차이를 (만약 존재한다면) 결정한다. 이들 예측 잔차 값은, 주파수 변환, 양자화, 및 엔트로피 인코딩을 사용하여 추가로 인코딩된다. 예를 들면, 인코더(340)는, 비디오의 픽쳐, 타일, 슬라이스 및/또는 다른 부분에 대한 양자화 파라미터(quantization parameter; "QP")에 대한 값을 설정하고, 상응하여 변환 계수를 양자화한다. 인코더(340)의 엔트로피 코더는, 양자화된 변환 계수 값뿐만 아니라 소정의 부가 정보(side information)(예를 들면, 모션 벡터 정보, BV 값, 해시 값, QP 값, 모드 결정, 파라미터 선택)도 압축한다. 통상적인 엔트로피 코딩 기술은, 지수 골룸 코딩(Exp-Golomb coding), 산술 코딩(arithmetic coding), 차분 코딩(differential coding), 허프만 코딩(Huffman coding), 런 길이 코딩(run length coding), 가변 길이 대 가변 길이(variable-length-to-variable-length; "V2V") 코딩, 가변 길이 대 고정 길이(variable-length-to-fixed-length; "V2F") 코딩, LZ 코딩, 사전 코딩(dictionary coding), 확률 구간 구획화 엔트로피 코딩(probability interval partitioning entropy coding; "PIPE"), 및 상기의 조합을 포함한다. 엔트로피 코더는 상이한 종류의 정보에 대해 상이한 코딩 기술을 사용할 수 있고, 특정한 코딩 기술 내에서 복수의 코드 테이블 중에서부터 선택할 수 있다.
코딩된 프레임(341) 및 MMCO/RPS 정보(342)는 디코딩 프로세스 에뮬레이터(350)에 의해 프로세싱된다. 디코딩 프로세스 에뮬레이터(350)는 디코더의 기능성 중 몇몇, 예를 들면, 참조 프레임을 재구성하기 위한 디코딩 작업을 구현한다. 디코딩 프로세스 에뮬레이터(350)는, 인코딩될 후속 프레임의 인터 프레임 예측에서 참조 프레임으로서의 사용을 위해 주어진 코딩된 프레임(341)이 재구성되어 저장될 필요가 있는지의 여부를 결정하기 위해, MMCO/RPS 정보(342)를 사용한다. 코딩된 프레임(341)이 저장될 필요가 있다는 것을 MMCO/RPS 정보(342)가 나타내면, 디코딩 프로세스 에뮬레이터(350)는, 코딩된 프레임(341)을 수신하는 그리고 대응하는 디코딩된 프레임(351)을 생성하는 디코더에 의해 행해질 디코딩 프로세스를 모델링한다. 이렇게 함에 있어서, 디코딩된 프레임 저장 영역(360)에 저장되어 있던 디코딩된 프레임(들)(369)을 인코더(340)가 사용한 경우, 디코딩 프로세스 에뮬레이터(350)는 또한, 디코딩 프로세스의 일부로서, 저장 영역(360)으로부터의 디코딩된 프레임(들)(369)을 사용한다.
디코딩된 프레임 임시 메모리 저장 영역(360)은 복수의 프레임 버퍼 저장 영역(361, 362,…, 36n)을 포함한다. 참조 프레임으로서의 사용을 위해 인코더(340)에 의해 더 이상 필요로 되지 않는 프레임을 갖는 임의의 프레임 버퍼(361, 362 등등)를 식별하기 위해, 디코딩 프로세스 에뮬레이터(350)는 MMCO/RPS 정보(342)를 사용하여 저장 영역(360)의 컨텐츠를 관리한다. 디코딩 프로세스를 모델링한 이후, 디코딩 프로세스 에뮬레이터(350)는 이 방식으로 식별된 프레임 버퍼(361, 362 등등)에 새롭게 디코딩된 프레임(351)을 저장한다.
코딩된 프레임(341) 및 MMCO/RPS 정보(342)는 임시적인 코딩된 데이터 영역(temporary coded data area; 370)에 버퍼링된다. 코딩된 데이터 영역(370)에 집성되는 코딩된 데이터는, 기본 코딩된 비디오 비트스트림의 구문의 일부로서, 하나 이상의 픽쳐에 대한 인코딩된 데이터를 포함한다. 코딩된 데이터 영역(370)에 집성되는 코딩된 데이터는 또한, 코딩된 비디오 데이터에 관련이 있는 미디어 메타데이터를 (예를 들면, 하나 이상의 보충적인 향상 정보(supplemental enhancement information; "SEI") 메시지 또는 비디오 사용가능성 정보(video usability information; "VUI") 메시지에서의 하나 이상의 파라미터로서) 포함할 수 있다.
임시적인 코딩된 데이터 영역(370)으로부터의 집성된 데이터(371)는 채널 인코더(380)에 의해 프로세싱된다. 채널 인코더(380)는, 미디어 스트림으로서의 송신을 위해, 집성된 데이터를 (예를 들면, ISO/IEC 13818-1와 같은 미디어 스트림 멀티플렉싱 포맷에 따라) 패킷화 할 수 있는데, 이 경우, 채널 인코더(380)는 구문 엘리먼트를 미디어 송신 스트림의 구문의 일부로서 추가할 수 있다. 또는, 채널 인코더(380)는, 파일로서의 저장을 위해, 집성된 데이터를 (예를 들면, ISO/IEC 14496-12와 같은 미디어 컨테이너 포맷에 따라) 편제할 수 있는데, 이 경우, 채널 인코더(380)는 구문 엘리먼트를 미디어 저장 파일의 구문의 일부로서 추가할 수 있다. 또는, 보다 일반적으로는, 채널 인코더(380)는 하나 이상의 미디어 시스템 멀티플렉싱 프로토콜 또는 전송 프로토콜을 구현할 수 있는데, 이 경우, 채널 인코더(380)는 구문 엘리먼트를 프로토콜(들)의 구문의 일부로서 추가할 수 있다. 채널 인코더(380)는 채널(390)로 출력을 제공하는데, 이것은 출력에 대한 저장, 통신 연결, 또는 다른 채널을 나타낸다.
IV. 예시적인 디코더 시스템.
도 4는 몇몇 설명된 실시형태가 연계하여 구현될 수도 있는 예시적인 디코더 시스템(400)의 블록도이다. 디코더 시스템(400)은, 복수의 디코딩 모드 예컨대 실시간 통신을 위한 로우 레이턴시 인코딩 모드 및 파일 또는 스트림으로부터의 미디어 재생을 위한 보통의 디코딩 모드 중 임의의 것에서 동작할 수 있는 범용 디코딩 툴일 수 있거나, 또는 그것은 하나의 이러한 디코딩 모드에 대해 적응되는 특수 목적의 디코딩 툴일 수 있다. 디코더 시스템(400)은 오퍼레이팅 시스템 모듈로서, 애플리케이션 라이브러리의 일부로서 또는 독립형 애플리케이션으로서 구현될 수 있다. 종합하면, 디코더 시스템(400)은 채널(410)로부터 코딩된 데이터를 수신하고 출력 목적지(490)에 대한 출력으로서 재구성된 프레임을 생성한다. 코딩된 데이터는 해시 기반의 블록 매칭을 사용하여 인코딩된 컨텐츠를 포함한다.
디코더 시스템(400)은 채널(410)을 포함하는데, 이것은 코딩된 데이터에 대한 저장, 통신 연결, 또는 다른 채널을 입력으로서 나타낼 수 있다. 채널(410)은 채널 코딩되어 있는 코딩된 데이터를 생성한다. 채널 디코더(420)는 코딩된 데이터를 프로세싱할 수 있다. 예를 들면, 채널 디코더(420)는, 미디어 스트림으로서의 송신을 위해 집성되었던 데이터를 (예를 들면, ISO/IEC 13818-1와 같은 미디어 스트림 멀티플렉싱 포맷에 따라) 패킷화해제(de-packetize) 할 수 있는데, 이 경우, 채널 디코더(420)는 미디어 송신 스트림의 구문의 일부로서 추가된 구문 엘리먼트를 파싱할 수 있다. 또는, 채널 디코더(420)는, 파일로서의 저장을 위해 집성되었던 코딩된 비디오 데이터를 (예를 들면, ISO/IEC 14496-12와 같은 미디어 컨테이너 포맷에 따라) 분리하는데, 이 경우, 채널 디코더(420)는 미디어 저장 파일의 구문의 일부로서 추가된 구문 엘리먼트를 파싱할 수 있다. 또는, 보다 일반적으로는, 채널 디코더(420)는 하나 이상의 미디어 시스템 디멀티플렉싱 프로토콜 또는 전송 프로토콜을 구현할 수 있는데, 이 경우, 채널 디코더(420)는 프로토콜(들)의 구문의 일부로서 추가된 구문 엘리먼트를 파싱할 수 있다.
채널 디코더(420)로부터 출력되는 코딩된 데이터(421)는, 충분한 양의 이러한 데이터가 수신될 때까지 임시적인 코딩된 데이터 영역(430)에 저장된다. 코딩된 데이터(421)는 코딩된 프레임(431) 및 MMCO/RPS 정보(432)를 포함한다. 코딩된 데이터 영역(430)의 코딩된 데이터(421)는, 기본 코딩된 비디오 비트스트림의 구문의 일부로서, 하나 이상의 픽쳐에 대한 코딩된 데이터를 포함한다. 코딩된 데이터 영역(430)의 코딩된 데이터(421)는 또한, 인코딩된 비디오 데이터에 관련이 있는 미디어 메타데이터를 (예를 들면, 하나 이상의 SEI 메시지 또는 VUI 메시지에서의 하나 이상의 파라미터로서) 포함할 수 있다.
일반적으로, 코딩된 데이터 영역(430)은, 이러한 코딩된 데이터(421)가 디코더(450)에 의해 사용될 때까지, 코딩된 데이터(421)를 일시적으로 저장한다. 그때, 코딩된 프레임(431) 및 MMCO/RPS 정보(432)에 대한 코딩된 데이터는 코딩된 데이터 영역(430)으로부터 디코더(450)로 전송된다. 디코딩이 진행함에 따라, 새로 코딩된 데이터가 코딩된 데이터 영역(430)에 추가되고 코딩된 데이터 영역(430)에 남아 있는 가장 오래된 코딩된 데이터는 디코더(450)로 전송된다.
디코더(450)는 대응하는 디코딩된 프레임(451)을 생성하기 위해 코딩된 프레임(431)을 주기적으로 디코딩한다. 적절하게는, 자신의 디코딩 프로세스를 수행하고 있을 때, 디코더(450)는 하나 이상의 이전에 디코딩된 프레임(469)을, 인터 프레임 예측을 위한 참조 프레임으로서 사용할 수도 있다. 디코더(450)는 이러한 이전에 디코딩된 프레임(469)을 디코딩된 프레임 임시 메모리 저장 영역(460)으로부터 판독한다. 일반적으로, 디코더(450)는, 타일의 엔트로피 디코딩, 역 양자화, 역 주파수 변환, 인트라 예측, 모션 보상 및 병합과 같은 디코딩 작업을 수행하는 복수의 디코딩 모듈을 포함한다. 디코더(450)에 의해 수행되는 정확한 동작은 압축 포맷에 의존하여 변할 수 있다.
예를 들면, 디코더(450)는 압축된 프레임 또는 프레임의 시퀀스에 대한 인코딩된 데이터를 수신하고 디코딩된 프레임(451)을 포함하는 출력을 생성한다. 디코더(450)에서, 버퍼는 압축된 프레임에 대한 인코딩된 데이터를 수신하고, 적절한 시간에, 수신된 인코딩된 데이터를 엔트로피 디코더가 이용가능하게 만든다. 엔트로피 디코더는, 엔트로피 코딩된 양자화된 데이터뿐만 아니라 엔트로피 코딩된 부가 정보를 엔트로피 디코딩하는데, 통상적으로는, 인코더에서 수행된 엔트로피 인코딩의 역을 적용한다. 모션 보상기는 하나 이상의 참조 프레임에 대해 모션 정보를 적용하여, 재구성되고 있는 프레임의 임의의 인터 코딩된 블록에 대한 모션 보상된 예측 값을 형성한다. 인트라 예측 모듈은, 이웃하는 이전에 재구성된 샘플 값으로부터 현재 블록의 샘플 값을 공간적으로 예측할 수 있거나, 또는 인트라 BC 예측의 경우, 프레임의 인트라 예측 영역의 이전에 재구성된 샘플 값을 사용하여 현재 블록의 샘플 값을 예측할 수 있다. 인트라 예측 영역은, BV 값, 또는, 대안적으로, 블록 해시 사전에서의 재구성 블록을 나타내는 해시 값으로 나타내어질 수 있다. 디코더(450)는 또한 예측 잔차를 재구성한다. 역 양자화기는 엔트로피 디코딩된 데이터를 역 양자화한다. 예를 들면, 디코더(450)는, 비트 스트림의 구문 엘리먼트에 기초하여 비디오의 픽쳐, 타일, 슬라이스 및/또는 다른 부분에 대한 QP에 대한 값을 설정하고, 그에 따라 변환 계수를 역 양자화한다. 역 주파수 변환은 양자화된 주파수 도메인 데이터를 공간 도메인 정보로 변환한다. 인터 예측된 블록에 대해, 디코더(450)는 재구성된 예측 잔차를 모션 보상된 예측치와 결합한다. 마찬가지로, 디코더(450)는 예측 잔차를 인트라 예측으로부터의 예측치와 결합할 수 있다. 디코더(450)에서의 모션 보상 루프는, 디코딩된 프레임(451)에서의 블록 경계 행 및/또는 열에 걸친 불연속부를 평활화하기 위해 적응적 디블로킹 필터(adaptive de-blocking filter)를 포함한다.
디코딩된 프레임 임시 메모리 저장 영역(460)은 복수의 프레임 버퍼 저장 영역(461, 462,…, 46n)을 포함한다. 디코딩된 프레임 저장 영역(460)은 디코딩된 픽쳐 버퍼의 예이다. 디코더(450)는, 디코딩된 프레임(451)을 내부에 저장할 수 있는 프레임 버퍼(461, 462 등등)를 식별하기 위해 MMCO/RPS 정보(432)를 사용한다. 디코더(450)는 그 프레임 버퍼에 디코딩된 프레임(451)을 저장한다.
출력 시퀀서(output sequencer; 480)는, 출력 순서에서 출력될 다음 프레임이 디코딩된 프레임 저장 영역(460)에서 이용가능할 때를 식별하기 위해, MMCO/RPS 정보(432)를 사용한다. 출력 순서에서 출력될 다음 프레임(481)이 디코딩된 프레임 저장 영역(460)에서 이용가능할 때, 그것은 출력 시퀀서(480)에 의해 판독되고 출력 목적지(490)(예를 들면, 디스플레이)로 출력된다. 일반적으로, 디코딩된 프레임 저장 영역(460)으로부터 출력 시퀀서(480)에 의해 프레임이 출력되는 순서는, 프레임이 디코더(450)에 의해 디코딩되는 순서와는 상이할 수도 있다.
V. 예시적인 비디오 인코더.
도 5a 및 도 5b는 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 일반화된 비디오 인코더(500)의 블록도이다. 인코더(500)는 현재 픽쳐를 입력 비디오 신호(505)로서 포함하는 비디오 픽쳐의 시퀀스를 수신하고 인코딩된 데이터를 코딩된 비디오 비트스트림(595)에서 출력으로서 생성한다.
인코더(500)는 블록 기반이며 구현예에 의존하는 블록 포맷을 사용한다. 블록은 상이한 단계에서, 예를 들면, 예측, 주파수 변환 및/또는 엔트로피 인코딩 단계에서, 추가로 세분된다(sub-divided). 예를 들면, 픽쳐는 64×64 블록, 32×32 블록 또는 16×16 블록으로 분할될 수 있는데, 이것은 종국에는 코딩 및 디코딩을 위해 샘플 값의 더 작은 블록으로 분할될 수 있다. HEVC 표준에 대한 인코딩의 구현예에서, 인코더는 픽쳐를 CTU(CTB), CU(CB), PU(PB) 및 TU(TB)로 구획한다.
인코더(500)는 인트라 픽쳐 코딩 및/또는 인터 픽쳐 코딩을 사용하여 픽쳐를 압축한다. 인코더(500)의 컴포넌트 중 많은 것은 인트라 픽쳐 코딩 및 인터 픽쳐 코딩 둘 다에 대해 사용된다. 이들 컴포넌트에 의해 수행되는 정확한 동작은, 압축되고 있는 정보의 타입에 의존하여 변할 수 있다.
타일링 모듈(tiling module; 510)은, 옵션적으로, 픽쳐를, 동일한 사이즈의 또는 상이한 사이즈의 복수의 타일로 구획한다. 예를 들면, 타일링 모듈(510)은, 픽쳐 경계와 함께, 픽쳐 내에서의 타일의 수평 및 수직 경계를 정의하는 타일 행 및 타일 열을 따라 픽쳐를 분할하는데, 각각의 타일은 직사각형 영역이다.
일반적인 인코딩 제어부(520)는 입력 비디오 신호(505)에 대한 픽쳐뿐만 아니라 인코더(500)의 다양한 모듈로부터 피드백(도시되지 않음)을 수신한다. 종합하면, 일반적인 인코딩 제어부(520)는, 인코딩 동안 코딩 파라미터를 설정하고 변경하기 위해, 제어 신호(도시되지 않음)를 다른 모듈(예컨대 타일링 모듈(510), 변환기/스케일러/양자화기(530), 스케일러/역변환기(535), 인트라 픽쳐 추정기(540), 모션 추정기(550) 및 인트라/인터 스위치)로 제공한다. 특히, 일반적인 인코딩 제어(520)는, 인코딩 동안 해시 기반의 블록 매칭을 사용하는지의 여부 및 그 사용 방법을 결정할 수 있다. 일반적인 인코딩 제어부(520)는 또한, 인코딩 동안, 예를 들면, 레이트 왜곡 분석을 수행하는 동안 중간 결과를 평가할 수 있다. 일반적인 인코딩 제어부(520)는, 인코딩 동안 만들어진 결정을 나타내는 일반적인 제어 데이터(522)를 생성하고, 그 결과 대응하는 디코더는 일관된 결정을 행할 수 있다. 일반적인 제어 데이터(522)는 헤더 포맷터(header formatter)/엔트로피 코더(590)로 제공된다.
현재 픽쳐가 인터 픽쳐 예측을 사용하여 예측되면, 모션 추정기(550)는, 하나 이상의 참조 픽쳐에 대한 입력 비디오 신호(505)의 현재 픽쳐의 샘플 값의 블록의 모션을 추정한다. 디코딩된 픽쳐 버퍼(570)는, 참조 픽쳐로서의 사용을 위해 하나 이상의 재구성된 이전에 코딩된 픽쳐를 버퍼링한다. 복수의 참조 픽쳐가 사용되는 경우, 복수의 참조 픽쳐는 상이한 시간적 방향 또는 동일한 시간적 방향으로부터 유래할 수 있다. 모션 추정기(550)는 모션 데이터(552) 예컨대 모션 벡터 데이터 및 참조 픽쳐 선택 데이터를 부가 정보로서 생성한다. 모션 데이터(552)는 헤더 포맷터/엔트로피 코더(590)뿐만 아니라 모션 보상기(555)로 제공된다.
모션 보상기(555)는 모션 벡터를, 디코딩된 픽쳐 버퍼(570)로부터의 재구성된 참조 픽쳐(들)에 적용한다. 모션 보상기(555)는 현재 픽쳐에 대한 모션 보상된 예측을 생성한다.
인코더(500) 내에서의 별개의 경로에서, 인트라 픽쳐 추정기(540)는, 입력 비디오 신호(505)의 현재 픽쳐의 샘플 값의 블록에 대한 인트라 픽쳐 예측을 수행하는 방법을 결정한다. 현재 픽쳐는 인트라 픽쳐 코딩을 사용하여 전적으로 또는 부분적으로 코딩된다. 현재 픽쳐의 재구성치(538)의 값을 사용하여, 인트라 공간 예측에 대해, 인트라 픽쳐 추정기(540)는, 현재 픽쳐의 이웃하는 이전에 재구성된 샘플 값으로부터, 현재 픽쳐의 현재 블록의 샘플 값을 공간적으로 예측하는 방법을 결정한다. 또는, BV 값을 사용한 인트라 BC 예측의 경우, 인트라 픽쳐 추정기(540)는, 현재 픽쳐 내에서의 상이한 후보 영역까지의, 현재 블록의 샘플 값의 변위를 추정한다. BV 추정 동안 해시 기반의 블록 매칭을 위해, 인트라 픽쳐 추정기(540)는 블록 해시 사전(541)을 사용하여 현재 블록에 대한 BV 값을 찾을 수 있다. 블록 해시 사전(541)은, 하기에서 설명되는 바와 같이, 해시 기반의 블록 매칭을 위한 후보 블록을 편제하는 데이터 구조이다. 블록 해시 사전(541)은 새로운 후보 블록에 관한 정보를 저장하기 위해 인코딩 동안 업데이트될 수 있는데, 이들 후보 블록이 해시 기반의 블록 매칭에 사용될 수 있기 때문이다. 대안적으로, BV 값을 사용하는 대신, 인트라 BC 예측은 블록을 나타내는 해시 값을 사용할 수 있다. 이 경우, 해시 기반의 블록 매칭을 위해, 인트라 픽쳐 추정기(540)는, 하기에서 설명되는 바와 같이, 현재 블록을 나타내기 위해 사용할 해시 값을 찾기 위해, 블록 해시 사전(541)을 사용할 수 있다.
인트라 예측 추정기(540)는, 부가 정보로서, 인트라 예측 데이터(542), 예컨대 인트라 예측이 공간적 예측을 사용하는지 또는 BC 예측을 사용하는지의 여부를 나타내는 정보(예를 들면, 인트라 블록마다의 플래그 값), (인트라 공간 예측을 위한) 예측 모드 방향 및 (인트라 BC 예측을 위한) BV 값 또는 해시 값을 생성한다. 인트라 예측 데이터(542)는, 헤더 포맷터/엔트로피 코더(590)뿐만 아니라 인트라 픽쳐 예측기(545)에도 제공된다.
인트라 예측 데이터(542)에 따르면, 인트라 픽쳐 예측기(545)는, 현재 픽쳐의 이웃하는 이전에 재구성된 샘플 값으로부터, 현재 픽쳐의 현재 블록의 샘플 값을 공간적으로 예측한다. 또는, 인트라 BC 예측의 경우, 인트라 픽쳐 예측기(545)는, 현재 블록에 대한 BV 값에 의해 나타내어지는(또는 블록 해시 사전(541)에서의 해시 값에 의해 나타내어지는) 인트라 예측 영역의 이전에 재구성된 샘플 값을 사용하여 현재 블록의 샘플 값을 예측한다. 픽쳐에 대한 크로마 데이터가 루마 데이터와 동일한 해상도를 갖는 경우(예를 들면, 포맷이 YUV 4:4:4 포맷 또는 RGB 4:4:4 포맷인 경우), 크로마 블록에 대해 적용되는 BV 값은 루마 블록에 대해 적용된 BV 값과 동일할 수도 있다. 한편, 픽쳐에 대한 크로마 데이터가 루마 데이터에 비해 감소된 해상도를 갖는 경우(예를 들면, 포맷이 YUV 4:2:0 포맷인 경우), 크로마 블록에 대해 적용되는 BV 값은, 크로마 해상도에서의 차이를 조정하기 위해 (예를 들면, BV 값의 수직 및 수평 성분을 2에 의해 나누고 그들을 정수 값으로 버림하거나(truncating) 반올림하는 것에 의해) 값이 감소되거나 어쩌면 반올림될 수도 있다. 해시 값이 프레임의 루마 샘플 값에 대한 (블록 해시 사전(541)으로부터의) 재구성 블록을 나타내는 경우, 프레임의 대응하는 위치에서의 크로마 샘플 값에 대한 재구성 블록이 사용될 수 있다.
인트라/인터 스위치는, 주어진 블록에 대한 예측치(558)로서의 사용을 위한 모션 보상된 예측 또는 인트라 픽쳐 예측의 값을 선택한다. 예측치(558)의 블록과 입력 비디오 신호(505)의 원래의 현재 픽쳐의 대응하는 부분 사이의 차이는 (만약 존재한다면) 잔차(518)의 값을 제공한다. 현재 픽쳐의 재구성 동안, 재구성된 잔차 값은 예측치(558)와 결합되어 비디오 신호(505)로부터의 원래의 컨텐츠의 재구성치(538)를 생성한다. 그러나, 손실성 압축에서, 몇몇 정보는 여전히 비디오 신호(505)로부터 상실된다.
변환기/스케일러/양자화기(530)에서, 주파수 변환기는 공간적 도메인 비디오 정보를 주파수 도메인(즉, 스펙트럼, 변환) 데이터로 변환한다. 블록 기반의 비디오 코딩을 위해, 주파수 변환기는, 예측 잔차 데이터(또는 예측치(558)가 널(null)인 경우 샘플 값 데이터)의 블록에 대해, 이산 코사인 변환(discrete cosine transform; "DCT"), 그 정수 근사, 또는 다른 타입의 순방향 블록 변환(forward block transform)을 적용하여, 주파수 변환 계수의 블록을 생성하게 된다. 인코더(500)는 또한 이러한 변환 단계가 생략된다는 것을 나타낼 수도 있다. 스케일러/양자화기는 변환 계수를 스케일링하고 양자화한다. 예를 들면, 양자화기는, 프레임 단위(frame-by-frame) 기반, 타일 단위(tile-by-tile) 기반, 슬라이스 단위(slice-by-slice) 기반, 블록 단위(block-by-block) 기반 또는 다른 기반으로 변하는 스텝 사이즈를 갖는 불균일한 스칼라 양자화를 주파수 도메인 데이터에 적용한다. 양자화된 변환 계수 데이터(532)는 헤더 포맷터/엔트로피 코더(590)에 제공된다.
스케일러/역 변환기(535)에서, 스케일러/역 양자화기는, 양자화된 변환 계수에 관해 역 스케일링 및 역 양자화를 수행한다. 역 주파수 변환기는 역 주파수 변환을 수행하여, 재구성된 예측 잔차 또는 샘플 값의 블록을 생성한다. 인코더(500)는 재구성된 잔차를 예측치(558)의 값(예를 들면, 모션 보상된 예측 값, 인트라 픽쳐 예측 값)과 결합하여 재구성치(538)를 형성한다.
인트라 픽쳐 예측의 경우, 재구성치(538)의 값은 인트라 픽쳐 추정기(540) 및 인트라 픽쳐 예측기(545)로 다시 공급될 수 있다. 재구성치(538)의 값은 또한 블록 해시 사전(541)을 업데이트하기 위해 사용될 수 있다. 또한, 재구성치(538)의 값은 후속하는 픽쳐의 모션 보상된 예측에 대해 사용될 수 있다. 재구성치(538)의 값은 추가로 필터링될 수 있다. 필터링 제어부(560)는, 비디오 신호(505)의 주어진 픽쳐에 대해, 재구성치(538)의 값에 관한 디블록 필터링 및 샘플 적응 오프셋(sample adaptive offset; "SAO") 필터링을 수행하는 방법을 결정한다. 필터링 제어부(560)는 필터 제어 데이터(562)를 생성하는데, 필터 제어 데이터(562)는 헤더 포맷터/엔트로피 코더(590) 및 병합기/필터(들)(565)로 제공된다.
병합기/필터(들)(565)에서, 인코더(500)는 상이한 타일로부터의 컨텐츠를 픽쳐의 재구성된 버전으로 병합한다. 인코더(500)는, 프레임에서의 경계에 걸친 불연속부를 적응적으로 평활화하기 위해, 필터 제어 데이터(562)에 따라 디블록 필터링 및 SAO 필터링을 선택적으로 수행한다. 타일 경계는, 인코더(500)의 설정에 의존하여, 선택적으로 필터링될 수 있거나 또는 전혀 필터링되지 않을 수도 있고, 인코더(500)는 이러한 필터링이 적용되었는지 또는 그렇지 않은지의 여부를 나타내기 위해 코딩된 비트스트림 내에 구문을 제공할 수도 있다. 디코딩된 픽쳐 버퍼(570)는, 후속하는 모션 보상된 예측에서의 사용을 위해 재구성된 현재 픽쳐를 버퍼링한다.
헤더 포맷터/엔트로피 코더(590)는, 일반적인 제어 데이터(522), 양자화된 변환 계수 데이터(532), 인트라 예측 데이터(542), 모션 데이터(552), 및 필터 제어 데이터(562)를 포맷하고 및/또는 엔트로피 코딩한다. 예를 들면, 헤더 포맷터/엔트로피 코더(590)는 다양한 구문 엘리먼트의 엔트로피 코딩을 위해 콘텍스트 적응 이진 산술 코딩(context-adaptive binary arithmetic coding)을 사용한다.
헤더 포맷터/엔트로피 코더(590)는 코딩된 비트 스트림(595)에서 인코딩된 데이터를 제공한다. 코딩된 비디오 비트스트림(595)의 포맷은, HEVC 포맷, 윈도우 미디어 비디오 포맷, VC-1 포맷, MPEG-x 포맷(예를 들면, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예를 들면, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형안 또는 확장안일 수 있다.
소망되는 압축의 구현 및 타입에 의존하여, 인코더의 모듈은 추가되고, 생략되고, 복수의 모듈로 분할되고, 다른 모듈과 결합되고 및/또는 유사한 모듈로 대체될 수 있다. 대안적인 실시형태에서, 상이한 모듈 및/또는 모듈의 다른 구성을 갖는 인코더는 설명된 기술 중 하나 이상을 수행한다. 인코더의 특정 실시형태는, 통상적으로, 인코더(500)의 변형예 또는 보충된 버전을 사용한다. 인코더(500) 내에서 모듈 사이에 도시되는 관계는, 인코더에서의 정보의 일반적인 흐름을 나타내며; 다른 관계는 간략화를 위해 도시되지 않는다.
VI. 예시적인 비디오 디코더.
도 6은 여러 설명된 실시형태가 연계하여 구현될 수도 있는 일반화된 디코더(600)의 블록도이다. 디코더(600)는 인코딩된 데이터를 코딩된 비트 스트림(605)에서 수신하고 재구성된 비디오(695)에 대한 픽쳐를 포함하는 출력을 생성한다. 코딩된 비디오 비트스트림(605)의 포맷은, HEVC 포맷, 윈도우 미디어 비디오 포맷, VC-1 포맷, MPEG-x 포맷(예를 들면, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예를 들면, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형안 또는 확장안일 수 있다.
디코더(600)는 블록 기반이며 구현예에 의존하는 블록 포맷을 사용한다. 블록은 상이한 단계에서 더 세분될 수도 있다. 예를 들면, 픽쳐는 64×64 블록, 32×32 블록 또는 16×16 블록으로 분할될 수 있는데, 이것은 종국에는 샘플 값의 더 작은 블록으로 분할될 수 있다. HEVC 표준에 대한 디코딩의 구현예에서, 픽쳐는 CTU(CTB), CU(CB), PU(PB) 및 TU(TB)로 구획된다.
디코더(600)는 인트라 픽쳐 디코딩 및/또는 인터 픽쳐 디코딩을 사용하여 픽쳐를 압축해제한다. 디코더(600)의 컴포넌트 중 많은 것은 인트라 픽쳐 디코딩 및 인터 픽쳐 디코딩 둘 다에 대해 사용된다. 이들 컴포넌트에 의해 수행되는 정확한 동작은, 압축해제되고 있는 정보의 타입에 의존하여 변할 수 있다.
버퍼는 인코딩된 데이터를 코딩된 비디오 비트스트림(605)에서 수신하고 수신된 인코딩된 데이터를 파서/엔트로피 디코더(610)가 이용가능하게 만든다. 파서/엔트로피 디코더(610)는 엔트로피 코딩된 데이터를 엔트로피 디코딩하는데, 통상적으로는 인코더(500)에서 수행된 엔트로피 코딩의 역(예를 들면, 콘텍스트 적응 이진 산술 디코딩)을 적용한다. 파싱 및 엔트로피 디코딩의 결과로서, 파서/엔트로피 디코더(610)는, 일반적인 제어 데이터(622), 양자화된 변환 계수 데이터(632), 인트라 예측 데이터(642), 모션 데이터(652) 및 필터 제어 데이터(662)를 생성한다.
일반적인 디코딩 제어부(620)는 일반적인 제어 데이터(622)를 수신하고, 디코딩 동안 디코딩 파라미터를 설정하고 변경하기 위해, 제어 신호(도시되지 않음)를 다른 모듈(예컨대, 스케일러/역 변환기(635), 인트라 픽쳐 예측기(645), 모션 보상기(655) 및 인트라/인터 스위치)로 제공한다.
현재 픽쳐가 인터 픽쳐 예측을 사용하여 예측되면, 모션 보상기(655)는 모션 데이터(652), 예컨대 모션 벡터 데이터 및 참조 픽쳐 선택 데이터를 수신한다. 모션 보상기(655)는 모션 벡터를, 디코딩된 픽쳐 버퍼(670)로부터의 재구성된 참조 픽쳐(들)에 적용한다. 모션 보상기(655)는 현재 픽쳐의 인터 코딩된 블록에 대한 모션 보상된 예측을 생성한다. 디코딩된 픽쳐 버퍼(670)는 참조 픽쳐로서의 사용을 위해 하나 이상의 이전에 재구성된 픽쳐를 저장한다.
디코더(600) 내의 별개의 경로에서, 인트라 예측 예측기(645)는, 인트라 예측 데이터(642), 예컨대 인트라 예측이 공간적 예측을 사용하는지 또는 BC 예측을 사용하는지의 여부를 나타내는 정보(예를 들면, 인트라 블록마다의 플래그 값), (인트라 공간 예측을 위한) 예측 모드 방향 및 (인트라 BC 예측을 위한) BV 값 또는 해시 값을 수신한다. 인트라 공간 예측의 경우, 예측 모드 데이터에 따라 현재 픽쳐의 재구성치(638)의 값을 사용하여, 인트라 픽쳐 예측기(645)는, 현재 픽쳐의 이웃하는 이전에 재구성된 샘플 값으로부터, 현재 픽쳐의 현재 블록의 샘플 값을 공간적으로 예측한다. 또는, BV 값을 사용하는 인트라 BC 예측의 경우, 인트라 픽쳐 예측기(645)는, 현재 블록에 대한 BV 값에 의해 나타내어지는 인트라 예측 영역의 이전에 재구성된 샘플 값을 사용하여 현재 블록의 샘플 값을 예측한다. 대안적으로, 해시 값을 사용하는 인트라 BC 예측의 경우, 인트라 픽쳐 예측기(645)는 현재 블록에 대한 시그널링된 해시 값을 사용하여 현재 블록에 대한 재구성 블록을 결정한다. 이 경우, 인트라 픽쳐 예측기(645)는, 시그널링된 재구성 블록을 찾기 위해, 블록 해시 사전(641)을 사용한다. 블록 해시 사전(641)은, 해시 값에 따라 후보 블록 값을 편제하는 데이터 구조이다.
인트라/인터 스위치는, 주어진 블록에 대한 예측치(658)로서 사용하기 위한 모션 보상된 예측 또는 인트라 픽쳐 예측의 값을 선택한다. 예를 들면, HEVC 구문이 후속되면, 인트라/인터 스위치는, 인트라 예측된 CU 및 인터 예측된 CU를 포함할 수 있는 픽쳐의 CU에 대해 인코딩되는 구문 엘리먼트에 기초하여 제어될 수 있다. 디코더(600)는 예측치(658)를 재구성된 잔차 값과 결합하여 비디오 신호로부터의 컨텐츠의 재구성치(638)를 생성한다.
잔차를 재구성하기 위해, 스케일러/역 변환기(635)는 양자화된 변환 계수 데이터(632)를 수신하여 프로세싱한다. 스케일러/역 변환기(635)에서, 스케일러/역 양자화기는, 양자화된 변환 계수에 관해 역 스케일링 및 역 양자화를 수행한다. 역 주파수 변환기는 역 주파수 변환을 수행하여, 재구성된 예측 잔차 또는 샘플 값의 블록을 생성한다. 예를 들면, 역 주파수 변환기는 주파수 변환 계수에 대해 역 블록 변환을 적용하여, 샘플 값 데이터 또는 예측 잔차 데이터를 생성한다. 역 주파수 변환은 역 DCT, 그 정수 근사, 또는 다른 타입의 역 주파수 변환일 수 있다.
인트라 픽쳐 예측의 경우, 재구성치(638)의 값은 인트라 픽쳐 예측기(645)로 다시 공급될 수 있다. 재구성치(638)의 값은 블록 해시 사전(641)을 업데이트하기 위해 사용될 수 있다. 인터 픽쳐 예측의 경우, 재구성치(638)의 값은 추가로 필터링될 수 있다. 병합기/필터(들)(665)에서, 디코더(600)는 상이한 타일로부터의 컨텐츠를 픽쳐의 재구성된 버전으로 병합한다. 디코더(600)는, 프레임에서의 경계에 걸친 불연속부를 적응적으로 평활화하기 위해, 필터 제어 데이터(662) 및 필터 적응을 위한 규칙에 따라 디블록 필터링 및 SAO 필터링을 선택적으로 수행한다. 타일 경계는, 인코딩된 비트 스트림 데이터 내에서의 구문 표시 또는 디코더(600)의 설정에 의존하여, 선택적으로 필터링될 수 있거나 또는 전혀 필터링되지 않을 수 있다. 디코딩된 픽쳐 버퍼(670)는, 후속하는 모션 보상된 예측에서의 사용을 위해 재구성된 현재 픽쳐를 버퍼링한다.
디코더(600)는 또한 후처리 디블록 필터(post-processing deblock filter)를 포함할 수 있다. 후처리 디블록 필터는, 옵션적으로, 재구성된 픽쳐에서의 불연속부를 평활화한다. 후처리 필터링의 일부로서, 다른 필터링(예컨대, 디링 필터링(de-ring filtering))도 또한 적용될 수 있다.
소망되는 압축해제의 구현 및 타입에 의존하여, 디코더의 모듈은 추가되고, 생략되고, 복수의 모듈로 분할되고, 다른 모듈과 결합되고 및/또는 유사한 모듈로 대체될 수 있다. 대안적인 실시형태에서, 상이한 모듈 및/또는 모듈의 다른 구성을 갖는 디코더는 설명된 기술 중 하나 이상을 수행한다. 디코더의 특정 실시형태는, 통상적으로, 디코더(600)의 변형예 또는 보충된 버전을 사용한다. 디코더(600) 내에서 모듈 사이에 도시되는 관계는, 디코더에서의 정보의 일반적인 흐름을 나타내며; 다른 관계는 간략화를 위해 도시되지 않는다.
VII. 해시 기반의 블록 매칭.
이 섹션은 해시 기반의 블록 매칭의 다양한 피쳐를 제공한다. 피쳐 중 몇몇은 해시 값을 갖는 블록을 인코딩하는 것에 관련되고, 한편 다른 피쳐는 해시 값을 사용하여 블록을 재구성하는 것에 관련된다. 이들 피쳐는, 레이트 왜곡 성능(rate-distortion performance) 및/또는 계산 효율성의 관점에서 효과적인 인트라 BC 예측을 가능하게 할 수 있다.
특히, 해시 기반의 블록 매칭은, 소정의 "인공적으로" 생성된 비디오 컨텐츠 예컨대 스크린 캡쳐 컨텐츠를 인코딩할 때 레이트 왜곡 성능을 향상시킬 수 있다. 스크린 캡쳐 컨텐츠는, 통상적으로, 반복된 구조물(예를 들면, 그래픽, 텍스트 문자)를 포함하는데, 반복된 구조물은 해시 기반의 블록 매칭이 성능을 향상시킬 기회를 제공한다. 스크린 캡쳐 컨텐츠는, 일반적으로, 높은 크로마 샘플링 해상도를 갖는 포맷(예를 들면, YUV 4:4:4 또는 RGB 4:4:4)으로 인코딩되지만, 그것은 또한 더 낮은 크로마 샘플링 해상도(예를 들면, YUV 4:2:0)를 갖는 포맷으로 인코딩될 수도 있다. 스크린 캡쳐 컨텐츠의 인코딩/디코딩에 대한 공통 시나리오는, 원격 데스크탑 회의 및 미가공 비디오(natural video) 또는 다른 "혼합된 컨텐츠" 비디오 상의 그래픽 오버레이의 인코딩/디코딩을 포함한다.
A. 인트라 BC 예측 모드 및 BV 값 - 소개.
인트라 BC 예측의 경우, 픽쳐의 현재 블록의 샘플 값은, 동일 픽쳐에서의 샘플 값을 사용하여 예측된다. BV 값은, 예측을 위해 사용되는 샘플 값을 포함하는 픽쳐의 영역까지의 현재 블록으로부터의 변위를 나타낸다. 예측을 위해 사용되는 샘플 값은 이전에 재구성된 샘플 값이다. BV 값은 비트스트림에서 시그널링되고, 디코더는 예측에 사용할 픽쳐의 영역을 결정하기 위해 BV 값을 사용할 수 있는데, 그 영역은 디코더에서 또한 재구성된다. 인트라 BC 예측은 인트라 픽쳐 예측의 형태이다 - 픽쳐의 블록에 대한 인트라 BC 예측은 동일 픽쳐에서의 샘플 값 외에는 어떠한 샘플 값도 사용하지 않는다.
도 7은 현재 프레임(710)의 현재 블록(730)에 대한 인트라 BC 예측을 예시한다. 현재 블록은 코딩 단위("CU")의 코딩 블록("CB"), 예측 단위("PU")의 예측 블록("PB"), 변환 단위("TU")의 변환 블록("TB") 또는 다른 블록일 수 있다. 현재 블록의 사이즈는 64×64, 32×32, 16×16, 8×8 또는 어떤 다른 사이즈일 수 있다. 더 일반적으로는, 현재 블록의 사이즈는 m×n인데, 여기서 m 및 n의 각각은 정수이고, m 및 n은 서로 동일할 수 있거나 또는 상이한 값을 가질 수 있다. 대안적으로, 현재 블록은 어떤 다른 형상(예를 들면, 비직사각형 형상을 갖는 코딩된 비디오 오브젝트의 영역)을 가질 수 있다.
BV(740)는, 예측을 위해 사용되는 샘플 값을 포함하는 픽쳐의 영역(750)까지의 현재 블록(730)으로부터의 변위(또는 오프셋)를 나타낸다. BV(740)에 의해 나타내어지는 인트라 예측 영역(750)은, 종종, 현재 블록(730)에 대한 "매칭 블록"으로 칭해진다. 매칭 블록은 현재 블록(730)과 동일할 수 있거나, 또는 그것은 현재 블록(730)의 근사치일 수 있다. 현재 블록의 좌상 위치(top left position)가 현재 프레임에서 위치 (x0, y0)에 있다고 가정하고, 인트라 예측 영역의 좌상 위치가 현재 프레임에서 위치 (x1, y1)에 있다고 가정한다. BV는 변위 (x1-x0, y1-y0)를 나타낸다. 예를 들면, 현재 블록의 좌상 위치가 위치 (320, 256)에 있고, 인트라 예측 영역의 좌상 위치가 위치 (295, 270)에 있으면, BV 값은 (-25, 14)이다. 음의 수평 변위는, 현재 블록의 좌측에 있는 위치를 나타내고, 음의 수직 변위는 현재 블록 위의 위치를 나타낸다.
인트라 BC 예측은, 블록 카피 동작을 사용하여 중복성(redundancy)(예컨대 프레임 내부에서의 반복된 패턴)을 활용하는 것에 의해 코딩 효율성을 향상시킬 수 있다. 그러나, 인코더가 평가할 수도 있는 후보 블록의 수를 고려하면, 현재 블록에 대한 매칭 블록을 찾는 것은 계산적으로 복잡하고 시간 소모적일 수 있다. 샘플 단위의 블록 매칭에서 현재 블록의 샘플 값을 단일의 후보 블록의 샘플 값에 비교하는 것은 수천 번의 동작을 수반할 수 있다. 예를 들면, 64×64의 현재 블록 및 64×64의 후보 블록의 샘플 값을 비교하는 것은, 64×64=4096번의 비교 동작(예를 들면, 감산 동작)뿐만 아니라 비교 동작의 결과를 기록하는 동작도 수반할 수 있다.
도 8은 블록 매칭 동작에서 현재 프레임(810)의 현재 블록(830)에 대한 후보 블록 중 몇몇을 도시한다. 네 개의 BV(841, 842, 843, 844)는 네 개의 후보 블록에 대한 변위를 나타낸다. 후보 블록은 프레임(810)의 재구성된 컨텐츠 내의 임의의 곳에 있을 수 있다. (블록은 좌에서 우로, 그 다음 위에서 아래로 코딩된다.) BV(843, 844)에 의해 나타내어진 후보 블록에 대해 도시된 바와 같이, 후보 블록은 다른 블록과 중첩할 수 있다. BV 추정의 계산적 복잡성은, BV 값에 대한 검색 범위가 프레임의 이전에 재구성된 영역 전체를 포괄할 때 특히 문제가 된다.
도 9는, 1920의 샘플 값의 폭과 1080의 샘플 값의 높이를 갖는 예시적인 프레임(910)의 한 블록(930)에 대한 블록 매칭을 위한 후보 블록의 수를 예시한다. 현재 블록(930)은 프레임(910)의 위치 (896, 576)에 있는 64×64 블록이고, 후보 블록도 또한 64×64 블록이다. 후보 블록에 대한 검색 영역은 도 9에서 사선으로 도시된다. 검색 영역 내의 임의의 64×64 블록은 후보 블록으로 간주될 수 있다. 프레임(910) 내에서의 후보 블록의 수는 다음에 의해 주어진다: (ypositionblock-heightblock+1)×(widthframe-widthblock+1)+(xpositionblock-widthblock+1), 여기서 xpositionblock 및 ypositionblock은 프레임(910)에서의 현재 블록(930)의 위치를 나타내고, widthframe은 프레임(910)의 폭이고 widthblock 및 heightblock은 현재 블록(930)의 치수이다. 도 9에서 도시되는 값의 경우, 현재 블록(930)에 대한 검색 영역에 (576-64+1)×(1920-64+1)+(896-64+1)=953,474개의 후보 블록이 존재한다. 현재 블록(930)과 가능한 후보 블록의 한 층 작은 세트 사이의 샘플 단위의 블록 매칭 동작을 수행하는 것도 아주 계산 집약적일 것이다. 검색 범위가 다른 이전에 재구성된 프레임을 포함하면, 동작의 수는 한 층 더 많아진다.
B. 해시 기반의 블록 매칭.
인코더가 해시 기반의 블록 매칭을 사용하는 경우, 인코더는 복수의 후보 블록의 각각에 대한 해시 값을 결정한다. 인코더는 또한 현재 블록에 대한 해시 값을 결정한다. 두 개의 블록이 동일하면, 그들의 해시 값은 동일하다. 해시 값을 사용하여, 인코더는 동일한 해시 값을 갖는 후보 블록을 빠르게 그리고 효율적으로 식별할 수 있고, 상이한 해시 값을 갖는 후보 블록을 필터링할 수 있다. 그 다음, 인코더는 또한, 현재 블록과 동일한 해시 값을 갖는 이들 후보 블록을 평가할 수 있다. 해시 기반의 블록 매칭은 현재 블록에 대한 매칭 블록을 발견하는 프로세스를 가속시킨다.
도 10은 해시 기반의 블록 매칭에서의 후보 블록 B(x, y)에 대한 해시 값(1000)을 예시하는데, 여기서 x 및 y는, 각각, 주어진 후보 블록의 좌상 위치에 대한 수평 및 수직 좌표를 나타낸다. 후보 블록은 해시 함수 h()를 사용하여 결정되는 해시 값을 갖는다. 검색 범위에서의 각각의 후보 블록 B(x, y)에 대해, 인코더는 후보 블록에 대한 해시 값 h(B)를 결정한다. 일반적으로, 해시 함수 h()는, h0 내지 hn -1로 표시되는 n개의 가능한 해시 값을 산출한다. 주어진 해시 값에 대해, 그 해시 값을 갖는 후보 블록은 그룹화된다. 예를 들면, 도 10에서, 후보 블록 B(1266, 263), B(1357, 365), B(1429, 401), B(502, 464), …은 해시 값 h0을 갖는다. 그룹은 상이한 수의 후보 블록을 포함할 수 있다. 예를 들면, 도 10에서, 해시 값 h4에 대한 그룹은 단일의 후보 블록을 포함하지만, 해시 값 h0에 대한 그룹은 네 개의 후보 블록을 포함한다.
이렇게 하여, 가능한 후보 블록은 n개의 카테고리로 분산된다. 예를 들면, 해시 함수 h()가 12비트의 해시 값을 생성하면, 도 9에서의 953,474 개의 후보 블록은 212=4,096개의 카테고리로 분할되는데, 각각의 카테고리는 후보 블록의 해시 값 카테고리로의 균등한 분산을 가정하여 평균 233개의 후보 블록을 포함한다.
해시 함수 h()는 순환 중복 검사(cyclic redundancy check; "CRC") 함수 또는 다른 해시 함수일 수 있다. 몇몇 타입의 해시 함수(예를 들면, CRC 함수)는 유사한 블록을 상이한 해시 값에 매핑하는데, 이것은 현재 블록과 정확하게 일치하는 매칭 블록을 찾고 있을 때 효율적일 수도 있다. 다른 타입의 해시 함수(예를 들면, 지역 민감 해시 함수(locality-sensitive hash function))는 유사한 블록을 동일한 해시 값에 매핑하는데, 이것은 매칭 블록이 현재 블록을 근사할 수 있을 때 적절할 수도 있다. 예시적인 해시 함수는 하기에서 설명된다.
해시 함수 h()를 이용하여, 인코더는 현재 블록 Bcurrent에 대한 해시 값을 결정한다. 도 10에서, 해시 함수 h(Bcurrent)는 h3이다. 현재 블록의 해시 함수를 사용하여, 인코더는 동일한 해시 값을 갖는 후보 블록을 식별할 수 있고(도 10에서는 테두리가 그려진 박스에서 도시됨), 다른 후보 블록을 필터링할 수 있다. 해시 함수가 유사한 블록을 상이한 해시 값에 매핑하는 경우, 식별된 후보 블록(현재 블록과 동일한 해시 값)은 현재 블록과 동일할 수도 있는 블록을 포함한다. 해시 함수가 유사한 블록을 동일한 해시 값에 매핑하는 경우, 식별된 후보 블록(현재 블록과 동일한 해시 값)은 현재 블록과 동일할 수도 있는 또는 현재 블록의 근사치에 가까울 수도 있는 블록을 포함한다. 어느 쪽이든, 이들 식별된 후보 블록으로부터, 인코더는 (예를 들면, 샘플 단위의 블록 매칭 동작을 사용하여) 현재 블록에 대한 매칭 블록을 식별할 수 있다.
종합하면, 해시 값 비교가 샘플 단위의 블록 매칭보다 훨씬 더 간단하기 때문에, 해시 기반의 블록 매칭은 큰 검색 범위에서 후보 블록을 평가하는 프로세스를 훨씬 더 효율적이게 만들 수 있다. 또한, 후보 블록에 대한 해시 값이 픽쳐 내의 상이한 블록에 대한 해시 기반의 블록 매칭에서 재사용될 수 있고, 따라서 후보 블록에 대한 해시 값을 계산하는 비용은 전체 픽쳐에 대한 해시 기반의 블록 매칭 동작에 걸쳐 분할 상환될(amortized) 수 있다.
C. 해시 값을 갖는 블록의 표현.
몇몇 예시적인 구현예에서, 현재 블록에 대한 매칭 블록에 대한 BV 값을 전송하는 대신, 인코더는 현재 블록을 나타내는 매칭 블록의 해시 값을 시그널링한다. 디코더는, 시그널링된 해시 값을 사용하여, 해시 값에 따라 후보 블록을 편제하는 자기 고유의 데이터 구조를 사용하여 현재 블록을 재구성한다. 이 방식에서, 디코더는 후보 블록을 편제하는 데이터 구조를 생성하고 업데이트한다. 현재 블록에 대한 시그널링된 해시 값을 사용하여, 디코더는 데이터 구조에서 적절한 블록을 발견하고, 그 다음 현재 블록에 대해 그 블록을 사용한다. 몇몇 경우에서, 해시 값을 시그널링하는 것은 BV 값을 시그널링하는 것보다 더 적은 비트를 소비한다.
이 방식에서, 인코더 및 디코더는 후보 블록에 대한 해시 값을 재구성된 샘플 값을 사용하여 결정하고, 따라서 해시 값은 인코더 및 디코더에서 동일하다. 데이터 구조의 편제는 구현예에 의존한다. 인코더는, 매치하지 않는 블록을 필터링하기 위해, 현재 블록마다 복수의 해시 값을 시그널링할 수 있다. 또는, 인코더는 현재 블록마다 단일의 해시 값을 시그널링할 수 있다. 또는, 하나 이상의 해시 값 외에, 인코더는 복수의 나머지 후보 블록 중에서 매칭 블록을 나타내는 인덱스 값을 시그널링할 수 있다.
이 방식은, 현재 블록에 대해 시그널링되는 해시 값(들)이 후보 블록 중에서 동일한 블록을, 높은 확률로, 식별하는 경우에 잘 동작한다. 성능은, 현재 블록에 대해 시그널링되는 해시 값(들)이 후보 블록 중에서 동일하지 않은 매칭 블록을 식별하는 경우에 저하된다. 그러나, 이 경우, 인코더는 현재 블록에 대해 다른 형태의 인코딩(예를 들면, 인트라 공간 예측 또는 다른 인트라 픽쳐 예측)을 대신 사용할 수 있다.
도 11a는 블록을 나타내기 위한 해시 값을 사용하여 픽쳐를 인코딩하기 위한 일반화된 기술(1100)을 도시한다. 도 3 또는 도 5a 및 도 5b를 참조로 설명된 것과 같은 인코더가 기술(1100)을 수행할 수 있다.
인코더는, 해시 기반의 블록 매칭을 이용한 BC 예측을 사용하여 픽쳐에 대한 데이터를 인코딩한다(1110). BC 예측은 (후보 블록이 현재 블록과 동일한 픽쳐에 있으면) 인트라 BC 예측일 수 있거나, 또는 BC 예측은 다른 픽쳐의(동일한 비디오 시퀀스의, 다른 비디오 시퀀스의, 또는 스프라이트(sprite) 또는 생성된 참조 픽쳐에 대한) 후보 블록을 참조할 수 있다. 후보 블록은 검색 범위의 일부인데, 검색 범위는 현재 블록을 갖는 픽쳐(또는 다른 픽쳐)에서의 이전에 재구성된 컨텐츠 전체를 포함할 수 있거나, 또는 이전에 재구성된 컨텐츠의 서브셋(예를 들면, 현재 블록을 갖는 픽쳐의 현재 CTU 및 하나 이상의 다른 CTU에서의 재구성된 컨텐츠, 또는 현재 블록과 동일한 타일에서의 재구성된 컨텐츠, 또는 현재 블록과 동일한 슬라이스에서의 재구성된 컨텐츠)을 포함할 수 있다. 인코더가 픽쳐에 대한 데이터를 인코딩하는(1110) 경우, 인코더는 도 11b에서 도시되는 기술(1111)을 수행할 수 있다. 또는, 인코더는 픽쳐에 대한 데이터의 인코딩(1110)을 몇몇 다른 방식으로 수행할 수 있다.
도 11b의 기술(1111)에 따르면, 인코더는 인코딩될 다음 블록을 획득하고(1120), 현재 블록으로서의 그 블록에 대한 해시 값을 결정한다(1130). 해시 함수는 CRC 함수, 지역 민감 해시 함수, 또는 다른 해시 함수일 수 있다.
인코더는 현재 블록에 대한 해시 값(들)에 적어도 부분적으로 기초하여 복수의 후보 블록 중에서 매칭 블록을 식별한다(1140). 예를 들면, 후보 블록 중 하나 이상의 각각에 대해, 인코더는 현재 블록에 대한 해시 값(들)을 후보 블록에 대한 해시 값(들)과 비교한다. 또는, 데이터 구조가 해시 값에 따라 후보 블록을 편제하는 경우, 인코더는 후보 블록 리스트를 선택하기 위해 현재 블록에 대한 해시 값(들)을 사용하고, 그 다음 선택된 리스트에서의 임의의 후보 블록 중에서 매칭 블록을 결정한다(예를 들면, 현재 블록의 샘플 값과 주어진 후보 블록의 샘플 값 사이의 블록 매칭 동작을 수행한다).
해시 기반의 블록 매칭이 성공하면, 인코더는 현재 블록을 나타내는 매칭 블록에 대한 해시 값(들)을 시그널링한다. 인코더는 또한, 적용가능한 경우, 후보 블록 리스트 내의 매칭 블록에 대한 인덱스 값을 시그널링할 수 있다. 인코더는, 예를 들면, CABAC 또는 다른 형태의 엔트로피 코딩을 사용하여 BV 값을 인코딩할 수 있다. 그렇지 않고, 해시 기반의 블록 매칭이 실패하면, 인코더는 공간 인트라 예측 또는 다른 형태의 인트라 픽쳐 예측을 사용하여 현재 블록을 인코딩할 수 있다.
인코더는 픽쳐의 다음 블록으로 계속할지의 여부를 점검한다(1150). 만약 그렇다면, 데이터 구조가 해시 값에 따라 현재 블록을 편제하는 경우, 인코더는 방금 인코딩된 블록과 중첩하는 새로운 후보 블록을 고려하기 위해 데이터 구조를 업데이트할 수 있고(1160), 그 다음 블록을 획득할 수 있고(1120) 그것에 대한 해시 값(들)을 결정할 수 있다(1130).
도 11a를 참조하면, 인코더는 인코딩된 데이터를 출력하는데(1190), 인코딩된 데이터는 시그널링된 해시 값을 포함한다. 인코더는 다음 픽쳐에 대해 기술(1100)을 반복할 수 있다.
도 12a는 블록을 나타내기 위한 해시 값을 사용하여 픽쳐를 디코딩하기 위한 일반화된 기술(1200)을 도시한다. 도 4 또는 도 6을 참조로 설명된 것과 같은 디코더가 기술(1200)을 수행할 수 있다.
디코더는 픽쳐에 대한 인코딩된 데이터를 수신하는데(1210), 이 경우 인코딩된 데이터는 픽쳐의 블록을 나타내는 해시 값을 포함한다. 디코더는 픽쳐에 대한 데이터를, 해시 기반의 블록 재구성을 이용한 BC 예측을 사용하여 디코딩한다(1220). BC 예측은 (후보 블록이 현재 블록과 동일한 픽쳐에 있으면) 인트라 BC 예측일 수 있거나, 또는 BC 예측은 다른 픽쳐의 후보 블록을 참조할 수 있다. 디코더가 픽쳐에 대한 데이터를 디코딩하는(1220) 경우, 디코더는 도 12b에서 도시되는 기술(1221)을 수행할 수 있다. 또는, 디코더는 픽쳐에 대한 데이터의 디코딩(1220)을 몇몇 다른 방식으로 수행할 수 있다.
도 12b의 기술(1221)에 따르면, 디코더는, 현재 블록에 대한 시그널링된 해시 값(들)을 포함하고, 어쩌면 현재 블록에 대한 시그널링된 인덱스 값을 포함하는, 디코딩될 다음 블록에 대한 데이터를 획득한다(1230). 디코더는 시그널링된 값(들)을 디코딩할 수 있다.
디코더는 현재 블록에 대해 시그널링된 해시 값(들)에 적어도 부분적으로 기초하여 복수의 후보 블록 중에서 재구성 블록을 식별한다(1240). 예를 들면, 후보 블록 중 하나 이상의 각각에 대해, 디코더는, 재구성 블록을 찾기 위해, 현재 블록에 대한 해시 값(들)을 후보 블록에 대한 해시 값(들)과 비교한다. 후보 블록의 해시 값에 대해, 해시 함수는 CRC 함수, 지역 민감 해시 함수, 또는 다른 해시 함수일 수 있다. 데이터 구조가 해시 값에 따라 후보 블록을 편제하는 경우, 디코더는, 데이터 구조에서 재구성 블록을 찾기 위해, 현재 블록에 대한 해시 값(들)을 사용할 수 있다. 또는, 디코더는 데이터 구조에서 후보 블록 리스트를 찾기 위해, 그 다음 (예를 들면, 시그널링된 인덱스를 사용하여) 선택된 리스트에서의 임의의 후보 블록 중 재구성 블록을 찾기 위해, 현재 블록에 대한 해시 값(들)을 사용할 수 있다.
해시 기반의 블록 재구성이 사용되는 경우, 디코더는 현재 블록에 대한 식별된 재구성 블록을 사용한다(1250). 그렇지 않고, 해시 기반의 블록 재구성이 사용되지 않으면, 디코더는 공간 인트라 예측 또는 다른 형태의 인트라 픽쳐 예측을 사용하여 현재 블록을 디코딩할 수 있다.
디코더는 픽쳐의 다음 블록으로 계속할지의 여부를 점검한다(1260). 만약 그렇다면, 데이터 구조가 해시 값에 따라 후보 블록을 편제하는 경우, 디코더는, 방금 디코딩된 블록과 중첩하는 새로운 후보 블록을 고려하기 위해 데이터 구조를 업데이트할 수 있고(1270), 그 다음 블록에 대한 해시 값(들)을 획득할 수 있고(1220) 계속할 수 있다.
디코더는 다음 픽쳐에 대해 기술(1200)을 반복할 수 있다.
D. 예시적인 해시 함수.
해시 기반의 블록 매칭에 대해(그리고 섹션 C의 해시 기반의 블록 재구성에 대해) 사용되는 해시 함수는 구현예에 의존한다.
해시 함수는 8비트, 12비트, 16비트, 24비트, 32비트, 또는 어떤 다른 수의 비트를 갖는 해시 값을 생성할 수 있다. 일반적으로, 더 적은 비트를 갖는 해시 값을 사용하는 것은, 적어도 동일한 블록이 제거되는 경우, 후보 블록을 편제하는 데이터 구조의 사이즈를 감소시키는 경향이 있다. 해시 값이 더 적은 비트를 가지면, 데이터 구조는 더 적은 카테고리를 포함하지만, 그러나 각각의 카테고리는 더 많은 후보 블록을 포함할 수도 있다. 한편, 더 많은 비트를 갖는 해시 값을 사용하는 것은, 후보 블록을 편제하는 데이터 구조의 사이즈를 증가시키는 경향이 있다. 해시 값이 더 많은 비트를 가지면, 데이터 구조는 더 많은 카테고리를 포함하지만, 각각의 카테고리는 더 적은 후보 블록을 포함할 수도 있다.
몇몇 예시적인 구현예에서, 해시 기반의 블록 매칭(및 해시 기반의 블록 재구성)에서 사용되는 해시 함수는 순환 중복 검사("CRC") 함수이다. CRC 함수는, 그들이 에러 검사 목적을 위해 일반적으로 사용되기 때문에, 빠르고 광범위하게 구현된다. CRC 함수는 유사한 입력 값에 적용될 때 아주 상이한 해시 값을 생성하는 경향이 있다. 즉, 블록의 샘플 값을 약간 변경하는 것은, 상이한 CRC 해시 값으로 이어질 수 있다. CRC 함수는 8비트, 12비트, 16비트, 24비트, 32비트, 또는 어떤 다른 수의 비트를 갖는 해시 값을 생성할 수 있다.
해시 기반의 블록 매칭에 대해 사용되는 경우, CRC 함수는, 현재 블록과 정확하게 동일한 매칭 블록을 찾도록 잘 작동한다. 그러나, CRC 함수는 통상적으로, 현재 블록에만 근사하는 매칭 블록을 찾는 것을 돕지는 않는다.
다른 예시적인 구현예에서, 해시 기반의 블록 매칭(및 해시 기반의 블록 재구성)에서 사용되는 해시 함수는, 후보 블록 또는 현재 블록의 시그니쳐를 결정하기 위해, 평균화 및 XOR 연산을 사용한다. 해시 값은 블록의 평균에 기초한 성분 및 방향성 XOR 연산에 기초하는 하나 이상의 성분을 포함한다.
예를 들면, 8비트의 샘플 값을 갖는 8×8 블록 B[i,j]의 경우, 해시 값은 세 개의 8비트 성분을 갖는 24비트 값이다. 첫 번째 8비트 성분은 블록에서의 샘플 값의 평균(μ)이다.
Figure 112016049908102-pct00001
.
두 번째 및 세 번째 8비트 성분에 대해, 블록에 대한 평균 값(μ)을 사용하여, 샘플 값의 레벨 맵 L[i,j]가 유도된다.
Figure 112016049908102-pct00002
.
두 번째 8비트 성분(r)은 레벨 맵 L[i,j]의 행을 따른 XOR 연산에 기초한다. 레벨 맵 L[i,j]의 각각의 행(0≤j<8)에 대해, 두 번째 성분의 비트 r[j]가 결정된다.
Figure 112016049908102-pct00003
, 여기서
Figure 112016049908102-pct00004
는 XOR 연산을 나타낸다.
세 번째 8비트 성분(c)은 레벨 맵 L[i,j]의 열을 따른 XOR 연산에 기초한다. 레벨 맵 L[i,j]의 각각의 열(0≤i<8)에 대해, 세 번째 성분의 비트 c[i]가 결정된다.
Figure 112016049908102-pct00005
.
따라서, 두 번째 성분(r)의 경우, j 번째 비트는 j 번째 행의 레벨 맵의 XOR이다. 그리고, 세 번째 성분(c)의 경우, i 번째 비트는 i 번째 열의 레벨 맵의 XOR이다. 24비트의 해시 값은 (μ<<16)+(r<<8)+c인데, 여기서 <<는 좌 시프트 연산을 나타낸다.
이 해시 함수의 경우, (XOR 연산에 기초하는) 두 번째 및 세 번째 성분은 샘플 값의 작은 변화에 민감하다. 그러나, 해시 기반의 블록 매칭에 대해 사용되는 경우, 평균화 및 XOR 연산에 기초하는 해시 함수는, 현재 블록과 정확히 동일한 매칭 블록을 찾도록 잘 작동한다.
8×8 블록 대신, 평균화 및 XOR 연산을 사용하는 해시 함수는 상이한 사이즈의 블록에 대해 사용될 수 있는데, 예를 들면, 8비트의 성분(r 또는 c)을 결정하기 위해 16×16 블록에 대한 행의 쌍 또는 열의 쌍을 따라 XOR 연산을 계산하고, 8비트의 성분(r 또는 c)을 결정하기 위해 32×32 블록에 대한 네 개의 행 또는 네 개의 열의 그룹을 따라 XOR 연산을 계산하고, 등등을 한다. 대안적으로, 평균화 및 XOR 연산을 사용하는 해시 함수는 상이한 수의 비트를 갖는 해시 값을 생성할 수 있다.
다른 예시적인 구현예에서, 해시 기반의 블록 매칭(및 해시 기반의 블록 재구성)에서 사용되는 해시 함수는 지역 민감 해시 함수이다. 지역 민감 해시 함수는 유사한 입력 값에 대해 적용되는 경우 동일한 해시 값을 생성하는 경향이 있다. 즉, 블록의 샘플 값을 약간 변경하는 것은, 통상적으로는, 상이한 해시 값으로 이어지 않는다. 지역 민감 해시 함수는 8비트, 12비트, 16비트, 24비트, 32비트, 또는 어떤 다른 수의 비트를 갖는 해시 값을 생성할 수 있다.
예를 들면, 8×8 블록 B의 경우, 블록 B의 64개의 샘플 값으로부터 64 차원 벡터
Figure 112016049908102-pct00006
가 생성된다. 다른 64차원 벡터
Figure 112016049908102-pct00007
는 랜덤하게 생성된다. 해시 함수는 곱
Figure 112016049908102-pct00008
에 의존한다. 예를 들면, 해시 함수는
Figure 112016049908102-pct00009
일 수 있는데, 여기서 d는 범위 0…drange로부터 선택되는 실수(real number)이다. 두 블록이 유사하면, 그들의 벡터
Figure 112016049908102-pct00010
는 유사하고, 그들의 해시 값
Figure 112016049908102-pct00011
Figure 112016049908102-pct00012
는 또한 동일하거나 또는 유사해야 한다.
몇몇 예시적인 구현예에서, 해시 기반의 블록 매칭(및 해시 기반의 블록 재구성)에서 사용되는 해시 함수는 블록 폭 및 블록 높이를 입력으로서 포함한다. 예를 들면, 해시 함수는 수정된 CRC 함수, 평균화 및 XOR 연산을 사용하는 수정된 해시 함수, 또는 수정된 지역 민감 해시 함수일 수 있는데, 이들에 대한 해시 값은 입력으로서의 블록 높이 및 블록 폭에 부분적으로 의존한다. 해시 함수의 이 변형을 통해, 상이한 사이즈(예컨대 64×64, 32×32, 16×16 및 8×8)의 후보 블록은, 그들이 동일한 해시 값을 가지면 함께 그룹화되고, 상이한 사이즈의 후보 블록은 단일의 데이터 구조 내에 편제될 수 있다.
대안적으로, 해시 기반의 블록 매칭에 대해 다른 해시 함수가 사용된다.
E. 인트라 BC 예측 모드 - 구현 광학장치.
인트라 BC 예측의 예측 모드를 갖는 블록은 CB, PB 또는 다른 블록일 수 있다. 블록이 CB인 경우, 블록에 대한 BV 값은 CU 레벨에서 시그널링될 수 있다(그리고 CU에서의 다른 CB는 동일한 BV 값 또는 그 스케일링된 버전을 사용한다). 또는, 블록이 PB인 경우, 블록에 대한 BV 값은 PU 레벨에서 시그널링될 수 있다(그리고 PU에서의 다른 PB는 동일한 BV 값 또는 그 스케일링된 버전을 사용한다). 더 일반적으로는, 인트라 BC 예측 블록에 대한 BV 값은 블록에 대한 적절한 구문 레벨에서 시그널링된다.
인트라 BC 예측 모드에 따른 예측의 블록 카피 동작(block copying operation)은 (BV 값이 CB마다 시그널링되는 경우) CB의 레벨에서 또는 (BV 값이 PB마다 시그널링되는 경우) PB의 레벨에서 수행될 수 있다. 예를 들면, 16×16 CB가 단일의 16×16 PB를 갖는다고 가정한다. 16×16 영역을 블록 카피하기 위해 (PB에 대한) BV가 적용된다. 대안적으로, 블록 카피 동작은, BV 값이 PB 또는 CB에 대해 시그널링되는 경우에도, PB 또는 CB 내에서의 TB의 레벨에서 수행될 수 있다. 이렇게 하여, BV 값은, TB에 적용되는 바와 같이, 동일한 PB 또는 CB의 다른 TB의 위치를 참조할 수 있다.
몇몇 구현예에서, 인트라 BC 예측된 CU의 경우, PU에서의 크로마 블록에 대한 인트라 BC 예측은, 크로마 데이터가 루마 데이터에 비해 감소된 해상도를 갖는 경우에는(예를 들면, 포맷이 YUV 4:2:0 포맷인 경우에는) 어쩌면 스케일링 및 반올림 이후에, PU에서의 루마 블록에 대한 인트라 BC 예측과 동일한 BV 값을 사용한다. 대안적으로, PU의 루마 블록 및 크로마 블록에 대해, 상이한 BV 값이 시그널링될 수 있다.
개시된 발명의 원칙이 적용될 수도 있는 많은 가능한 실시형태의 관점에서, 예시된 실시형태는 단지 본 발명의 바람직한 예에 불과하며 본 발명의 범위를 제한하는 것으로 간주되어선 안된다는 것이 인식되어야 한다. 대신, 본 발명의 범위는 하기의 청구범위에 의해 정의된다. 따라서, 이들 특허청구범위의 취지와 범위 내에 있는 모든 것을 본 발명으로서 주장한다.

Claims (29)

  1. 하나 이상의 프로세싱 유닛 및 메모리를 포함하는 컴퓨팅 디바이스에 있어서,
    상기 컴퓨팅 디바이스는 동작들을 수행하도록 구성되는 비디오 또는 이미지들의 인코더를 구현하며, 상기 동작들은:
    픽쳐의 샘플 값들의 현재 블록에 대한 데이터를 인코딩하는 것 ― 상기 데이터를 인코딩하는 것은:
    상기 현재 블록에 대한 제1 해시 값을 결정하는 것 - 상기 현재 블록에 대한 상기 제1 해시 값은 상기 현재 블록의 샘플 값들을 사용하여 결정되는 것임 -; 및
    상기 현재 블록에 대한 상기 제1 해시 값에 적어도 부분적으로 기초하여, 복수의 후보 블록들 중에서 매칭 블록을 식별하는 것
    을 포함하고,
    상기 식별하는 것은
    상기 복수의 후보 블록들 중에서 적어도 몇몇 매치하지 않는 블록을 필터링하기 위해, 상기 제1 해시 값을 사용하는 것; 및
    상기 복수의 후보 블록들의 나머지 후보 블록들 중에서 적어도 몇몇 매치하지 않는 블록을 필터링하기 위해 상기 현재 블록에 대해 상기 제1 해시 값과 상이한 제2 해시값을 사용하는 것 및 상기 나머지 후보 블록들 중에서 상기 매칭 블록을 표시하는 상기 현재 블록에 대한 인덱스 값을 결정하는 것 중 적어도 하나
    를 포함함 ― ; 및
    상기 인코딩된 데이터를 출력하는 것
    을 포함하고,
    상기 인코딩된 데이터는 상기 현재 블록을 나타내기 위해 상기 현재 블록에 대한 상기 제2 해시 값 및 상기 현재 블록에 대한 상기 인덱스 값 중 적어도 하나 뿐만 아니라 상기 현재 블록에 대한 상기 제1 해시 값을 포함하는 것인, 컴퓨팅 디바이스.
  2. 제1항에 있어서,
    상기 현재 블록에 대한 데이터를 인코딩하는 것은, 상기 현재 블록에 대한 상기 제1 해시 값을 엔트로피 코딩하는 것 및 상기 현재 블록에 대한 상기 제2 해시 값 및 상기 현재 블록에 대한 상기 인덱스 값 중 적어도 하나를 엔트로피 코딩하는 것을 더 포함하는 것인, 컴퓨팅 디바이스.
  3. 제1항에 있어서,
    상기 현재 블록에 대한 상기 제1 해시 값을 결정하는 것은, 순환 중복 검사 함수(cyclic redundancy check function), 평균화(averaging) 및 XOR 연산을 포함하는 해시 함수, 및 지역 민감 해시 함수(locality-sensitive hash function) 중 하나를 사용하는 것인, 컴퓨팅 디바이스.
  4. 삭제
  5. 삭제
  6. 제1항에 있어서,
    상기 현재 블록에 대한 상기 제1 해시 값을 결정하는 것은, 블록 폭 및 블록 높이를 입력으로서 포함하는 해시 함수를 사용하는 것인, 컴퓨팅 디바이스.
  7. 제1항에 있어서,
    상기 현재 블록을 포함하는 상기 픽쳐는 또한 상기 복수의 후보 블록들을 포함하고, 상기 현재 블록에 대한 데이터를 인코딩하는 것은 인트라 블록 카피 예측을 사용하는 것인, 컴퓨팅 디바이스.
  8. 제1항에 있어서,
    다른 픽쳐는 상기 복수의 후보 블록들 중 적어도 일부를 포함하는 것인, 컴퓨팅 디바이스.
  9. 제1항에 있어서,
    상기 매칭 블록을 식별하는 것은, 상기 복수의 후보 블록들 중 하나 이상의 후보 블록 각각에 대해, 상기 현재 블록에 대한 상기 제2 해시 값을 후보 블록에 대한 제2 해시 값과 비교하는 것을 포함하는 것인, 컴퓨팅 디바이스.
  10. 비디오 디코더 또는 이미지 디코더를 갖는 컴퓨팅 디바이스에서의 방법에 있어서,
    픽쳐에 대한 인코딩된 데이터를 수신하는 단계 ― 상기 인코딩된 데이터는 상기 픽쳐의 샘플 값들의 현재 블록에 대한 제1 해시 값을 포함하고, 상기 현재 블록에 대한 상기 제1 해시 값은 상기 현재 블록의 샘플 값들을 사용하여 결정되고, 상기 인코딩된 데이터는 또한, 상기 제1 해시 값과는 상이한 상기 현재 블록에 대한 제2 해시 값 및 상기 현재 블록에 대한 인덱스 값 중 적어도 하나를 포함함 ― ; 및
    상기 현재 블록을 디코딩하는 단계 ― 상기 현재 블록을 디코딩하는 단계는:
    상기 현재 블록에 대한 상기 제1 해시 값에 적어도 부분적으로 기초하여, 복수의 후보 블록들 중에서 재구성 블록을 식별하는 단계; 및
    상기 현재 블록에 대해 상기 재구성 블록을 사용하는 단계
    를 포함하고,
    상기 식별하는 단계는
    상기 복수의 후보 블록들 중에서 적어도 몇몇 매치하지 않는 블록을 필터링하기 위해, 상기 제1 해시 값을 사용하는 단계; 및
    상기 복수의 후보 블록들의 나머지 후보 블록들 중에서 적어도 몇몇 매치하지 않는 블록을 필터링하기 위해 상기 현재 블록에 대한 제2 해시값을 사용하는 단계 및 상기 나머지 후보 블록들 중에서 상기 재구성 블록을 식별하기 위해 상기 현재 블록에 대한 인덱스 값을 사용하는 단계 중 적어도 하나
    를 포함함 ―
    를 포함하는, 컴퓨팅 디바이스에서의 방법.
  11. 제10항에 있어서,
    상기 현재 블록을 디코딩하는 단계는, 상기 현재 블록에 대한 상기 제1 해시 값을 엔트로피 디코딩하는 단계 및 상기 현재 블록에 대한 상기 제2 해시 값 및 상기 현재 블록에 대한 상기 인덱스 값 중 적어도 하나를 엔트로피 디코딩하는 단계를 더 포함하는 것인, 컴퓨팅 디바이스에서의 방법.
  12. 제10항에 있어서,
    데이터 구조는 제1 해시 값에 따라 상기 복수의 후보 블록들을 편제하는(organize) 것인, 컴퓨팅 디바이스에서의 방법.
  13. 제10항에 있어서,
    상기 복수의 후보 블록들 각각에 대해, 순환 중복 검사 함수, 평균화 및 XOR 연산을 포함하는 해시 함수, 및 지역 민감 해시 함수 중 하나를 사용하여 제1 해시 값을 결정하는 단계를 더 포함하는, 컴퓨팅 디바이스에서의 방법.
  14. 삭제
  15. 삭제
  16. 제10항에 있어서,
    상기 복수의 후보 블록들 각각에 대해, 블록 폭 및 블록 높이를 입력으로서 포함하는 해시 함수를 사용하여 제1 해시 값을 결정하는 단계를 더 포함하는, 컴퓨팅 디바이스에서의 방법.
  17. 제10항에 있어서,
    상기 현재 블록을 포함하는 상기 픽쳐는 또한 상기 복수의 후보 블록들을 포함하고, 상기 현재 블록을 디코딩하는 단계는 인트라 블록 카피 예측을 사용하는 것인, 컴퓨팅 디바이스에서의 방법.
  18. 제10항에 있어서,
    다른 픽쳐는 상기 복수의 후보 블록들 중 적어도 일부를 포함하는 것인, 컴퓨팅 디바이스에서의 방법.
  19. 삭제
  20. 삭제
  21. 컴퓨팅 디바이스로 하여금 프로그래밍될 때 동작들을 수행하게 하기 위한 컴퓨터 실행가능 명령어들을 저장하는 하나 이상의 컴퓨터 판독가능 매체에 있어서,
    상기 동작들은:
    픽쳐에 대한 인코딩된 데이터를 수신하는 것 ― 상기 인코딩된 데이터는 상기 픽쳐의 샘플 값들의 현재 블록에 대한 제1 해시 값을 포함하고, 상기 현재 블록에 대한 상기 제1 해시 값은 상기 현재 블록의 샘플 값들을 사용하여 결정되고, 상기 인코딩된 데이터는 또한, 상기 제1 해시 값과는 상이한 상기 현재 블록에 대한 제2 해시 값 및 상기 현재 블록에 대한 인덱스 값 중 적어도 하나를 포함함 ― ; 및
    상기 현재 블록을 디코딩하는 것 ― 상기 현재 블록을 디코딩하는 것은:
    상기 현재 블록에 대한 상기 제1 해시 값에 적어도 부분적으로 기초하여, 복수의 후보 블록들 중에서 재구성 블록을 식별하는 것; 및
    상기 현재 블록에 대해 상기 재구성 블록을 사용하는 것
    을 포함하고,
    상기 식별하는 것은
    상기 복수의 후보 블록들 중에서 적어도 몇몇 매치하지 않는 블록을 필터링하기 위해, 상기 제1 해시 값을 사용하는 것; 및
    상기 복수의 후보 블록들의 나머지 후보 블록들 중에서 적어도 몇몇 매치하지 않는 블록을 필터링하기 위해 상기 현재 블록에 대한 제2 해시값을 사용하는 것 및 상기 나머지 후보 블록들 중에서 상기 재구성 블록을 식별하기 위해 상기 현재 블록에 대한 인덱스 값을 사용하는 것 중 적어도 하나
    를 포함함 ―
    을 포함하는, 하나 이상의 컴퓨터 판독가능 매체.
  22. 제21항에 있어서,
    상기 현재 블록을 디코딩하는 것은, 상기 현재 블록에 대한 상기 제1 해시 값을 엔트로피 디코딩하는 것 및 상기 현재 블록에 대한 상기 제2 해시 값 및 상기 현재 블록에 대한 상기 인덱스 값 중 적어도 하나를 엔트로피 디코딩하는 것을 더 포함하는 것인, 하나 이상의 컴퓨터 판독가능 매체.
  23. 제21항에 있어서,
    데이터 구조는 제1 해시 값에 따라 상기 복수의 후보 블록들을 편제하는 것인, 하나 이상의 컴퓨터 판독가능 매체.
  24. 제21항에 있어서,
    상기 동작들은, 상기 복수의 후보 블록들 각각에 대해, 순환 중복 검사 함수, 평균화 및 XOR 연산을 포함하는 해시 함수, 및 지역 민감 해시 함수 중 하나를 사용하여 제1 해시 값을 결정하는 것을 더 포함하는 것인, 하나 이상의 컴퓨터 판독가능 매체.
  25. 제21항에 있어서,
    상기 현재 블록을 포함하는 상기 픽쳐는 또한 상기 복수의 후보 블록들을 포함하고, 상기 현재 블록을 디코딩하는 것은 인트라 블록 카피 예측을 사용하는 것인, 하나 이상의 컴퓨터 판독가능 매체.
  26. 제21항에 있어서,
    다른 픽쳐는 상기 복수의 후보 블록들 중 적어도 일부를 포함하는 것인, 하나 이상의 컴퓨터 판독가능 매체.
  27. 제21항에 있어서,
    상기 복수의 후보 블록들 각각에 대해, 상기 제1 해시 값을 결정하는데 사용되는 함수는 블록 폭 및 블록 높이를 입력으로서 포함하는 것인, 하나 이상의 컴퓨터 판독가능 매체.
  28. 제21항에 있어서,
    상기 재구성 블록을 식별하는 것은 후보 블록 리스트를 찾기 위해 상기 제1 해시 값을 사용하고 상기 후보 블록 리스트 내의 상기 재구성 블록을 찾기 위해 상기 제2 해시 값 및 상기 인덱스 값 중 적어도 하나를 사용하는 것인, 하나 이상의 컴퓨터 판독가능 매체.
  29. 제10항에 있어서,
    상기 재구성 블록을 식별하는 단계는 후보 블록 리스트를 찾기 위해 상기 제1 해시 값을 사용하고 상기 후보 블록 리스트 내의 상기 재구성 블록을 찾기 위해 상기 제2 해시 값 및 상기 인덱스 값 중 적어도 하나를 사용하는 것인, 컴퓨팅 디바이스에서의 방법.




KR1020167013774A 2013-10-25 2013-10-25 비디오 및 이미지 코딩 및 디코딩에서의 해시 값을 갖는 블록의 표현 KR102197505B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/085939 WO2015058397A1 (en) 2013-10-25 2013-10-25 Representing blocks with hash values in video and image coding and decoding

Publications (2)

Publication Number Publication Date
KR20160075709A KR20160075709A (ko) 2016-06-29
KR102197505B1 true KR102197505B1 (ko) 2020-12-31

Family

ID=52992154

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167013774A KR102197505B1 (ko) 2013-10-25 2013-10-25 비디오 및 이미지 코딩 및 디코딩에서의 해시 값을 갖는 블록의 표현

Country Status (5)

Country Link
US (1) US11076171B2 (ko)
EP (1) EP3061233B1 (ko)
KR (1) KR102197505B1 (ko)
CN (1) CN105684409B (ko)
WO (1) WO2015058397A1 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11076171B2 (en) 2013-10-25 2021-07-27 Microsoft Technology Licensing, Llc Representing blocks with hash values in video and image coding and decoding
US10264290B2 (en) 2013-10-25 2019-04-16 Microsoft Technology Licensing, Llc Hash-based block matching in video and image coding
CN104754343B (zh) * 2013-12-27 2019-07-19 财团法人工业技术研究院 图像处理方法与系统、解码方法、编码器与解码器
WO2015116176A1 (en) * 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. Device provided script to convert command
CN105556971B (zh) 2014-03-04 2019-07-30 微软技术许可有限责任公司 针对帧内块复制预测中的块翻动和跳跃模式的编码器侧判定
US10567754B2 (en) 2014-03-04 2020-02-18 Microsoft Technology Licensing, Llc Hash table construction and availability checking for hash-based block matching
US9715559B2 (en) * 2014-03-17 2017-07-25 Qualcomm Incorporated Hash-based encoder search for intra block copy
GB2527099B (en) * 2014-06-11 2018-07-18 Gurulogic Microsystems Oy Apparatus and method for data compression
WO2015196322A1 (en) 2014-06-23 2015-12-30 Microsoft Technology Licensing, Llc Encoder decisions based on results of hash-based block matching
JP6462119B2 (ja) 2014-09-30 2019-01-30 マイクロソフト テクノロジー ライセンシング,エルエルシー コンピューティングデバイス
US10091511B2 (en) * 2015-01-05 2018-10-02 Getgo, Inc. Efficient video block matching
JP6527949B2 (ja) 2015-01-29 2019-06-12 ヴィド スケール インコーポレイテッド イントラブロックコピー探索
US10390026B2 (en) * 2016-03-25 2019-08-20 Google Llc Smart reordering in recursive block partitioning for advanced intra prediction in video coding
US10390039B2 (en) 2016-08-31 2019-08-20 Microsoft Technology Licensing, Llc Motion estimation for screen remoting scenarios
US10523956B2 (en) 2016-11-16 2019-12-31 Citrix Systems, Inc. Multi-pixel caching scheme for lossless encoding
US11095877B2 (en) 2016-11-30 2021-08-17 Microsoft Technology Licensing, Llc Local hash-based motion estimation for screen remoting scenarios
WO2020092795A2 (en) * 2018-11-02 2020-05-07 Fungible, Inc. Parallel coding of syntax elements for jpeg accelerator
US10827191B2 (en) 2018-11-02 2020-11-03 Fungible, Inc. Parallel coding of syntax elements for JPEG accelerator
US10848775B2 (en) 2018-11-02 2020-11-24 Fungible, Inc. Memory layout for JPEG accelerator
US10827192B2 (en) 2018-11-02 2020-11-03 Fungible, Inc. Work allocation for JPEG accelerator
US10931958B2 (en) 2018-11-02 2021-02-23 Fungible, Inc. JPEG accelerator using last-non-zero (LNZ) syntax element
EP4307681A3 (en) 2018-11-29 2024-04-03 Beijing Bytedance Network Technology Co., Ltd. Interaction between intra block copy mode and inter prediction tools
CN113170194A (zh) * 2019-01-02 2021-07-23 北京字节跳动网络技术有限公司 基于散列的运动搜索的简化
WO2020177660A1 (en) * 2019-03-01 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Block vector representation for intra block copy in video coding
JP7405861B2 (ja) 2019-03-01 2023-12-26 北京字節跳動網絡技術有限公司 映像符号化におけるイントラブロックコピーのための方向に基づく予測
US11039150B2 (en) * 2019-04-19 2021-06-15 Tencent America LLC Method and apparatus for video coding
JP7359934B2 (ja) 2019-07-10 2023-10-11 北京字節跳動網絡技術有限公司 映像符号化におけるイントラブロックコピーのためのサンプル識別
CN111614961A (zh) * 2020-05-25 2020-09-01 绍兴文理学院 采用不同方式计算哈希值建立哈希表进行搜索的编码方法
US11202085B1 (en) 2020-06-12 2021-12-14 Microsoft Technology Licensing, Llc Low-cost hash table construction and hash-based block matching for variable-size blocks
US11503336B2 (en) * 2020-12-07 2022-11-15 Tencent America LLC Method and apparatus for video coding
US20220286675A1 (en) * 2021-03-05 2022-09-08 Tencent America LLC Decoupled transform partitioning

Family Cites Families (211)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2239538A (en) 1939-03-30 1941-04-22 Zeiss Carl Fa Photographic teleobjective
US2718173A (en) 1950-09-26 1955-09-20 Cycloptic Anstalt Fur Optik Un High intensity five component photographic objective
US3059528A (en) 1957-07-02 1962-10-23 Allan Ted Panoramic motion picture camera
US3142236A (en) 1961-03-08 1964-07-28 American Optical Corp Cameras and high speed optical system therefor
CH486707A (de) 1968-06-14 1970-02-28 Voigtlaender Ag Lichtstarkes objektiv aus mindestens vier in Luft stehenden Gliedern vom erweiterten Triplet-typus
US5016980A (en) 1985-11-12 1991-05-21 Waldron Robert D Systems for deviating and (optionally) converging radiation
US4918583A (en) 1988-04-25 1990-04-17 Nikon Corporation Illuminating optical device
US5565921A (en) 1993-03-16 1996-10-15 Olympus Optical Co., Ltd. Motion-adaptive image signal processing system
US5610841A (en) 1993-09-30 1997-03-11 Matsushita Electric Industrial Co., Ltd. Video server
US5850312A (en) 1993-10-22 1998-12-15 Olympus Optical Co., Ltd. Three-unit zoom lens
JP3580869B2 (ja) 1994-09-13 2004-10-27 オリンパス株式会社 立体視内視鏡
US5613004A (en) * 1995-06-07 1997-03-18 The Dice Company Steganographic method and device
US5774271A (en) 1996-07-29 1998-06-30 Welch Allyn, Inc. Lamp assembly
JP3869895B2 (ja) 1996-12-27 2007-01-17 キヤノン株式会社 防振機能を有した光学系
US7206346B2 (en) 1997-06-25 2007-04-17 Nippon Telegraph And Telephone Corporation Motion vector predictive encoding method, motion vector decoding method, predictive encoding apparatus and decoding apparatus, and storage media storing motion vector predictive encoding and decoding programs
US6904110B2 (en) 1997-07-31 2005-06-07 Francois Trans Channel equalization system and method
US6879266B1 (en) * 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
JPH1166301A (ja) 1997-08-15 1999-03-09 Nippon Telegr & Teleph Corp <Ntt> カラー画像分類方法及び装置及びこの方法を記録した記録媒体
US6895048B2 (en) 1998-03-20 2005-05-17 International Business Machines Corporation Adaptive encoding of a sequence of still frames or partially still frames within motion video
US6332092B1 (en) 1998-07-08 2001-12-18 Lifespex, Incorporated Optical probe having and methods for uniform light irradiation and/or light collection over a volume
US6487440B2 (en) 1998-07-08 2002-11-26 Lifespex, Inc. Optical probe having and methods for difuse and uniform light irradiation
US6400764B1 (en) 1999-04-06 2002-06-04 Koninklijke Philips Electronics N. V. Motion estimation method featuring orthogonal-sum concurrent multi matching
US7216232B1 (en) * 1999-04-20 2007-05-08 Nec Corporation Method and device for inserting and authenticating a digital signature in digital data
US6785815B1 (en) * 1999-06-08 2004-08-31 Intertrust Technologies Corp. Methods and systems for encoding and protecting data using digital signature and watermarking techniques
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6671407B1 (en) 1999-10-19 2003-12-30 Microsoft Corporation System and method for hashing digital images
JP2001228401A (ja) 2000-02-16 2001-08-24 Canon Inc 投影光学系、および該投影光学系による投影露光装置、デバイス製造方法
GB0006153D0 (en) * 2000-03-14 2000-05-03 Inpharmatica Ltd Database
CA2304433A1 (en) * 2000-04-05 2001-10-05 Cloakware Corporation General purpose access recovery scheme
GB2364459B (en) 2000-06-30 2004-03-31 Nokia Mobile Phones Ltd Video error resilience
US6938128B1 (en) 2000-07-20 2005-08-30 Silicon Graphics, Inc. System and method for reducing memory latency during read requests
US6915387B1 (en) 2000-07-20 2005-07-05 Silicon Graphics, Inc. System and method for handling updates to memory in a distributed shared memory system
US6920175B2 (en) 2001-01-03 2005-07-19 Nokia Corporation Video coding architecture and methods for using same
US6765963B2 (en) 2001-01-03 2004-07-20 Nokia Corporation Video decoder architecture and method for using same
GB2375673A (en) 2001-05-14 2002-11-20 Salgen Systems Ltd Image compression method using a table of hash values corresponding to motion vectors
JP2004536348A (ja) * 2001-07-20 2004-12-02 グレースノート インコーポレイテッド 録音の自動識別
DE10158658A1 (de) 2001-11-30 2003-06-12 Bosch Gmbh Robert Verfahren zur gerichteten Prädiktion eines Bildblockes
US6819322B2 (en) 2002-01-04 2004-11-16 Hewlett-Packard Development Company, L.P. Method and apparatus for detecting potential lock-up conditions in a video graphics controller
CA2574444A1 (en) 2002-01-18 2003-07-31 Kabushiki Kaisha Toshiba Video encoding method and apparatus and video decoding method and apparatus
US6894289B2 (en) 2002-02-22 2005-05-17 Xenogen Corporation Fluorescence illumination assembly for an imaging apparatus
US6922246B2 (en) 2002-02-22 2005-07-26 Xenogen Corporation Bottom fluorescence illumination assembly for an imaging apparatus
JP3983573B2 (ja) 2002-03-06 2007-09-26 富士重工業株式会社 ステレオ画像特性検査システム
US6983020B2 (en) * 2002-03-25 2006-01-03 Citrix Online Llc Method and apparatus for fast block motion detection
JP4151374B2 (ja) 2002-03-29 2008-09-17 セイコーエプソン株式会社 動画像符号化装置および動画像符号化方法
US7400774B2 (en) 2002-09-06 2008-07-15 The Regents Of The University Of California Encoding and decoding of digital data using cues derivable at a decoder
US7152942B2 (en) * 2002-12-02 2006-12-26 Silverbrook Research Pty Ltd Fixative compensation
US20040174570A1 (en) * 2002-12-02 2004-09-09 Plunkett Richard Thomas Variable size dither matrix usage
US7792121B2 (en) 2003-01-03 2010-09-07 Microsoft Corporation Frame protocol and scheduling system
JP4499370B2 (ja) 2003-04-04 2010-07-07 オリンパス株式会社 結像光学系及びそれを用いた撮像装置
DE10316428A1 (de) 2003-04-08 2004-10-21 Carl Zeiss Smt Ag Katadioptrisches Reduktionsobjektiv
HUP0301368A3 (en) 2003-05-20 2005-09-28 Amt Advanced Multimedia Techno Method and equipment for compressing motion picture data
US8264489B2 (en) 2003-07-11 2012-09-11 Intel Corporation Interface remoting
US7609763B2 (en) 2003-07-18 2009-10-27 Microsoft Corporation Advanced bi-directional predictive coding of video frames
US20050060643A1 (en) * 2003-08-25 2005-03-17 Miavia, Inc. Document similarity detection and classification system
WO2005027491A2 (en) 2003-09-05 2005-03-24 The Regents Of The University Of California Global motion estimation image coding and processing
EP1685366B1 (en) 2003-10-27 2011-06-15 The General Hospital Corporation Method and apparatus for performing optical imaging using frequency-domain interferometry
US20050105621A1 (en) 2003-11-04 2005-05-19 Ju Chi-Cheng Apparatus capable of performing both block-matching motion compensation and global motion compensation and method thereof
EP1542053B1 (fr) 2003-12-11 2007-11-14 Tokendo Dispositif de métrologie pour sonde vidéoendoscopique
US20040133548A1 (en) * 2003-12-15 2004-07-08 Alex Fielding Electronic Files Digital Rights Management.
US7095568B2 (en) 2003-12-19 2006-08-22 Victor Company Of Japan, Limited Image display apparatus
KR100995398B1 (ko) 2004-01-20 2010-11-19 삼성전자주식회사 수직 및 수평 방향의 패턴을 고려한 전역 움직임 보상순차주사화 방법
US7606974B2 (en) 2004-05-26 2009-10-20 Intel Corporation Automatic caching generation in network applications
US7672005B1 (en) * 2004-06-30 2010-03-02 Teradici Corporation Methods and apparatus for scan block caching
US20060062303A1 (en) 2004-09-17 2006-03-23 Sony Corporation Hybrid global motion estimator for video encoding
US7526607B1 (en) 2004-09-23 2009-04-28 Juniper Networks, Inc. Network acceleration and long-distance pattern detection using improved caching and disk mapping
WO2006044917A2 (en) * 2004-10-15 2006-04-27 The Regents Of The University Of Colorado, A Body Corporate Revocable biometrics with robust distance metrics
JP2006265087A (ja) 2004-12-13 2006-10-05 Ohara Inc 光学素子用プリフォーム
US20060153295A1 (en) 2005-01-12 2006-07-13 Nokia Corporation Method and system for inter-layer prediction mode coding in scalable video coding
US20060224594A1 (en) 2005-04-04 2006-10-05 Oracle International Corporation Methods and systems for identifying highly contended blocks in a database
CN100484233C (zh) 2005-06-03 2009-04-29 中国科学院研究生院 数字电视信号安全认证装置及带有该装置的电视设备
KR100716999B1 (ko) 2005-06-03 2007-05-10 삼성전자주식회사 영상의 대칭성을 이용한 인트라 예측 방법, 이를 이용한영상의 복호화, 부호화 방법 및 장치
US8107527B1 (en) 2005-07-28 2012-01-31 Teradici Corporation Progressive block encoding using region analysis
US20070025442A1 (en) 2005-07-28 2007-02-01 Sanyo Electric Co., Ltd. Coding method for coding moving images
US7822278B1 (en) * 2005-09-20 2010-10-26 Teradici Corporation Methods and apparatus for encoding a digital video signal
US8787460B1 (en) 2005-07-28 2014-07-22 Teradici Corporation Method and apparatus for motion vector estimation for an image sequence
KR101211665B1 (ko) 2005-08-12 2012-12-12 삼성전자주식회사 영상의 인트라 예측 부호화, 복호화 방법 및 장치
JP4815944B2 (ja) 2005-08-19 2011-11-16 富士ゼロックス株式会社 ホログラム記録方法及び装置
JP2007066191A (ja) 2005-09-01 2007-03-15 Toshiba Corp 再生装置および再生方法
FR2891685B1 (fr) 2005-10-03 2008-04-18 Envivio France Entpr Uniperson Procede et dispositif d'estimation de mouvement a references multiples, procede et dispositif de codage, produits programme d'ordinateur et moyens de stockage correspondants.
JP5563220B2 (ja) * 2005-10-12 2014-07-30 データキャッスル・コーポレーション データ・バックアップのための方法およびシステム
US7702127B2 (en) * 2005-10-21 2010-04-20 Microsoft Corporation Video fingerprinting using complexity-regularized video watermarking by statistics quantization
RU2298226C1 (ru) 2005-10-28 2007-04-27 Самсунг Электроникс Ко., Лтд. Способ улучшения цифровых изображений
GB2431798A (en) 2005-10-31 2007-05-02 Sony Uk Ltd Motion vector selection based on integrity
US7986844B2 (en) 2005-11-22 2011-07-26 Intel Corporation Optimized video compression using hashing function
US20070199011A1 (en) 2006-02-17 2007-08-23 Sony Corporation System and method for high quality AVC encoding
US20070217702A1 (en) 2006-03-14 2007-09-20 Sung Chih-Ta S Method and apparatus for decoding digital video stream
US7949186B2 (en) * 2006-03-15 2011-05-24 Massachusetts Institute Of Technology Pyramid match kernel and related techniques
KR100763917B1 (ko) 2006-06-21 2007-10-05 삼성전자주식회사 고속으로 움직임을 추정하는 방법 및 장치
US7636824B1 (en) 2006-06-28 2009-12-22 Acronis Inc. System and method for efficient backup using hashes
DE102006045565B3 (de) 2006-08-04 2008-06-26 Leica Camera Ag Weitwinkel-Aufstecksucher an Messsucherkameras für fotografische Aufnahmen mit unterschiedlichen Brennweiten
US7747584B1 (en) * 2006-08-22 2010-06-29 Netapp, Inc. System and method for enabling de-duplication in a storage system architecture
US8099415B2 (en) * 2006-09-08 2012-01-17 Simply Hired, Inc. Method and apparatus for assessing similarity between online job listings
GB0618057D0 (en) 2006-09-14 2006-10-25 Perkinelmer Ltd Improvements in and relating to scanning confocal microscopy
US8443398B2 (en) 2006-11-01 2013-05-14 Skyfire Labs, Inc. Architecture for delivery of video content responsive to remote interaction
US8320683B2 (en) 2007-02-13 2012-11-27 Sharp Kabushiki Kaisha Image processing method, image processing apparatus, image reading apparatus, and image forming apparatus
US20080212687A1 (en) 2007-03-02 2008-09-04 Sony Corporation And Sony Electronics Inc. High accurate subspace extension of phase correlation for global motion estimation
US8494234B1 (en) 2007-03-07 2013-07-23 MotionDSP, Inc. Video hashing system and method
US8817878B2 (en) 2007-11-07 2014-08-26 Broadcom Corporation Method and system for motion estimation around a fixed reference vector using a pivot-pixel approach
KR101365444B1 (ko) 2007-11-19 2014-02-21 삼성전자주식회사 영상의 해상도의 조정을 통하여 동영상을 효율적으로부호화/복호화하는 방법 및 장치
EP2220869A1 (en) 2007-12-21 2010-08-25 Telefonaktiebolaget LM Ericsson (publ) Improved pixel prediction for video coding
US8213515B2 (en) 2008-01-11 2012-07-03 Texas Instruments Incorporated Interpolated skip mode decision in video compression
KR101446771B1 (ko) 2008-01-30 2014-10-06 삼성전자주식회사 영상 부호화장치 및 영상 복호화장치
JP4471039B2 (ja) 2008-02-14 2010-06-02 日本電気株式会社 移動ベクトル検出装置
JP2009230537A (ja) 2008-03-24 2009-10-08 Olympus Corp 画像処理装置、画像処理プログラム、画像処理方法、および、電子機器
WO2009143120A2 (en) 2008-05-19 2009-11-26 Citrix Systems, Inc. Systems and methods for enhanced image encoding
US8527482B2 (en) 2008-06-06 2013-09-03 Chrysalis Storage, Llc Method for reducing redundancy between two or more datasets
GB2460844B (en) 2008-06-10 2012-06-06 Half Minute Media Ltd Automatic detection of repeating video sequences
EP2299449A1 (en) 2008-06-30 2011-03-23 Fujitsu Semiconductor Limited Memory device and memory controller for controlling the same
EP2310983A4 (en) 2008-07-03 2011-12-21 Verimatrix Inc EFFECTIVE APPROACHES OF DIGITAL TATTOO OF COMPRESSED MEDIA
US9235577B2 (en) 2008-09-04 2016-01-12 Vmware, Inc. File transfer using standard blocks and standard-block identifiers
US8213503B2 (en) 2008-09-05 2012-07-03 Microsoft Corporation Skip modes for inter-layer residual video coding and decoding
US8831103B2 (en) 2008-10-02 2014-09-09 Sony Corporation Image processing apparatus and method
EP2351288B1 (en) * 2008-10-23 2014-12-10 University Of Ulster An encryption method
US20100119170A1 (en) 2008-11-07 2010-05-13 Yahoo! Inc. Image compression by comparison to large database
US20100166073A1 (en) 2008-12-31 2010-07-01 Advanced Micro Devices, Inc. Multiple-Candidate Motion Estimation With Advanced Spatial Filtering of Differential Motion Vectors
US8599929B2 (en) 2009-01-09 2013-12-03 Sungkyunkwan University Foundation For Corporate Collaboration Distributed video decoder and distributed video decoding method
WO2010086548A1 (fr) 2009-01-28 2010-08-05 France Telecom Procede et dispositif de codage d'une image, procede et dispositif de decodage, et programmes d'ordinateur correspondants
US8345994B2 (en) 2009-02-02 2013-01-01 Calgary Scientific Inc. Image data transmission
KR101660558B1 (ko) 2009-02-03 2016-09-27 톰슨 라이센싱 비트 깊이 스케일리빌리티에서 스무드 참조 프레임에 의한 모션 보상을 하는 방법들 및 장치
US7868792B2 (en) 2009-02-05 2011-01-11 Polytechnic Institute Of New York University Generating a boundary hash-based hierarchical data structure associated with a plurality of known arbitrary-length bit strings and using the generated hierarchical data structure for detecting whether an arbitrary-length bit string input matches one of a plurality of known arbitrary-length bit springs
US8838824B2 (en) * 2009-03-16 2014-09-16 Onmobile Global Limited Method and apparatus for delivery of adapted media
US8724707B2 (en) 2009-05-07 2014-05-13 Qualcomm Incorporated Video decoding using temporally constrained spatial dependency
US9113169B2 (en) 2009-05-07 2015-08-18 Qualcomm Incorporated Video encoding with temporally constrained spatial dependency for localized decoding
US8355585B2 (en) 2009-05-12 2013-01-15 Red Hat Israel, Ltd. Data compression of images using a shared dictionary
US8694547B2 (en) 2009-07-07 2014-04-08 Palo Alto Research Center Incorporated System and method for dynamic state-space abstractions in external-memory and parallel graph search
JP2011024066A (ja) 2009-07-17 2011-02-03 Sony Corp 画像処理装置および方法
KR101712097B1 (ko) 2009-08-19 2017-03-03 삼성전자 주식회사 유연한 직교 변환에 기초한 영상 부호화, 복호화 방법 및 장치
US8345750B2 (en) 2009-09-02 2013-01-01 Sony Computer Entertainment Inc. Scene change detection
US8411750B2 (en) 2009-10-30 2013-04-02 Qualcomm Incorporated Global motion parameter estimation using block-based motion vectors
US8633838B2 (en) * 2010-01-15 2014-01-21 Neverfail Group Limited Method and apparatus for compression and network transport of data in support of continuous availability of applications
EP2526374A1 (en) 2010-01-22 2012-11-28 Duke University Multiple window processing schemes for spectroscopic optical coherence tomography (oct) and fourier domain low coherence interferometry
CN103385002A (zh) * 2010-02-17 2013-11-06 韩国电子通信研究院 用于对超高清图像进行编码的装置及其方法、以及解码装置及其方法
US9237355B2 (en) 2010-02-19 2016-01-12 Qualcomm Incorporated Adaptive motion resolution for video coding
EP2365456B1 (en) 2010-03-11 2016-07-20 CompuGroup Medical SE Data structure, method and system for predicting medical conditions
US8442942B2 (en) 2010-03-25 2013-05-14 Andrew C. Leppard Combining hash-based duplication with sub-block differencing to deduplicate data
US8619857B2 (en) 2010-04-09 2013-12-31 Sharp Laboratories Of America, Inc. Methods and systems for intra prediction
WO2011127961A1 (en) 2010-04-13 2011-10-20 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e. V. Adaptive image filtering method and apparatus
WO2011127964A2 (en) 2010-04-13 2011-10-20 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus for intra predicting a block, apparatus for reconstructing a block of a picture, apparatus for reconstructing a block of a picture by intra prediction
KR20110123651A (ko) 2010-05-07 2011-11-15 한국전자통신연구원 생략 부호화를 이용한 영상 부호화 및 복호화 장치 및 그 방법
CN102918441B (zh) 2010-06-01 2016-05-25 Hoya株式会社 内窥镜用物镜及内窥镜
US8417039B2 (en) 2010-06-03 2013-04-09 Microsoft Corporation Motion detection techniques for improved image remoting
CN101866366B (zh) 2010-07-15 2012-01-18 哈尔滨工业大学 一种基于内容的图像格式中文文档检索方法
GB2483294B (en) 2010-09-03 2013-01-02 Canon Kk Method and device for motion estimation of video data coded according to a scalable coding structure
WO2012042792A1 (en) * 2010-09-30 2012-04-05 Nec Corporation Storage system
JP6258704B2 (ja) 2010-11-04 2018-01-10 ジーイー ビデオ コンプレッション エルエルシー ブロック統合およびスキップモードをサポートする画像符号化および画像復号化
EP2647202A1 (en) * 2010-12-01 2013-10-09 iMinds Method and device for correlation channel estimation
US20120170653A1 (en) 2010-12-30 2012-07-05 General Instrument Corporation Block based sampling coding systems
KR20120095610A (ko) 2011-02-21 2012-08-29 삼성전자주식회사 다시점 비디오의 부호화 방법 및 장치, 그 복호화 방법 및 장치
WO2012128242A1 (ja) 2011-03-18 2012-09-27 ソニー株式会社 画像処理装置、画像処理方法、及び、プログラム
JP6061150B2 (ja) 2011-03-18 2017-01-18 ソニー株式会社 画像処理装置、画像処理方法、及び、プログラム
US8480743B2 (en) 2011-03-25 2013-07-09 Vicente Vanaclocha Vanaclocha Universal disc prosthesis
US8582886B2 (en) 2011-05-19 2013-11-12 Microsoft Corporation Compression of text contents for display remoting
US9317933B2 (en) 2011-05-27 2016-04-19 Sony Corporation Image processing device and method
US9167020B2 (en) 2011-06-10 2015-10-20 Microsoft Technology Licensing, Llc Web-browser based desktop and application remoting solution
US8644620B1 (en) 2011-06-21 2014-02-04 Google Inc. Processing of matching regions in a stream of screen images
US9521418B2 (en) 2011-07-22 2016-12-13 Qualcomm Incorporated Slice header three-dimensional video extension for slice header prediction
US11496760B2 (en) 2011-07-22 2022-11-08 Qualcomm Incorporated Slice header prediction for depth maps in three-dimensional video codecs
JP5651560B2 (ja) 2011-09-07 2015-01-14 日本放送協会 動きベクトル予測装置、符号化装置、復号装置、及びこれらのプログラム
US10031636B2 (en) 2011-09-08 2018-07-24 Microsoft Technology Licensing, Llc Remoting desktop displays using move regions
US9351808B2 (en) 2011-09-27 2016-05-31 Sharon M. E. McCarthy Apparatus for removing dental appliance and dental system
GB2495301B (en) 2011-09-30 2018-01-17 Advanced Risc Mach Ltd Method of and apparatus for encoding data
US9357235B2 (en) 2011-10-13 2016-05-31 Qualcomm Incorporated Sample adaptive offset merged with adaptive loop filter in video coding
US9609217B2 (en) 2011-11-02 2017-03-28 Mediatek Inc. Image-based motion sensor and related multi-purpose camera system
US9332271B2 (en) 2011-11-03 2016-05-03 Cisco Technology, Inc. Utilizing a search scheme for screen content video coding
GB201119206D0 (en) 2011-11-07 2011-12-21 Canon Kk Method and device for providing compensation offsets for a set of reconstructed samples of an image
EP2781091B1 (en) 2011-11-18 2020-04-08 GE Video Compression, LLC Multi-view coding with efficient residual handling
KR101874100B1 (ko) 2011-12-02 2018-07-04 삼성전자주식회사 영상의 부호화 방법 및 장치, 그 복호화 방법 및 장치
US9262986B2 (en) * 2011-12-07 2016-02-16 Cisco Technology, Inc. Reference frame management for screen content video coding using hash or checksum functions
US9223534B1 (en) 2011-12-30 2015-12-29 hopTo Inc. Client side detection of motion vectors for cross-platform display
WO2013103376A1 (en) 2012-01-05 2013-07-11 Intel Corporation Device, system and method of video encoding
US9235313B2 (en) 2012-01-11 2016-01-12 Google Inc. Efficient motion estimation for remote desktop sharing
US9380320B2 (en) 2012-02-10 2016-06-28 Broadcom Corporation Frequency domain sample adaptive offset (SAO)
US20130258052A1 (en) 2012-03-28 2013-10-03 Qualcomm Incorporated Inter-view residual prediction in 3d video coding
US20130268621A1 (en) 2012-04-08 2013-10-10 Broadcom Corporation Transmission of video utilizing static content information from video source
US9154749B2 (en) 2012-04-08 2015-10-06 Broadcom Corporation Power saving techniques for wireless delivery of video
US9286862B2 (en) 2012-04-09 2016-03-15 Oracle International Corporation System and method for detecting a scrolling event during a client display update
US9123084B2 (en) * 2012-04-12 2015-09-01 Activevideo Networks, Inc. Graphical application integration with MPEG objects
US20130271565A1 (en) 2012-04-16 2013-10-17 Qualcomm Incorporated View synthesis based on asymmetric texture and depth resolutions
US9549180B2 (en) 2012-04-20 2017-01-17 Qualcomm Incorporated Disparity vector generation for inter-view prediction for video coding
US10051264B2 (en) 2012-04-20 2018-08-14 Qualcomm Incorporated Marking reference pictures in video sequences having broken link pictures
AU2012202352A1 (en) * 2012-04-20 2013-11-07 Canon Kabushiki Kaisha Method, system and apparatus for determining a hash code representing a portion of an image
US9479776B2 (en) 2012-07-02 2016-10-25 Qualcomm Incorporated Signaling of long-term reference pictures for video coding
TWI606716B (zh) 2012-07-09 2017-11-21 Vid衡器股份有限公司 多層視訊編碼編解碼器架構
US9264713B2 (en) 2012-07-11 2016-02-16 Qualcomm Incorporated Rotation of prediction residual blocks in video coding with transform skipping
US9277237B2 (en) 2012-07-30 2016-03-01 Vmware, Inc. User interface remoting through video encoding techniques
US9467692B2 (en) 2012-08-31 2016-10-11 Qualcomm Incorporated Intra prediction improvements for scalable video coding
US9565452B2 (en) 2012-09-28 2017-02-07 Qualcomm Incorporated Error resilient decoding unit association
CN103841426B (zh) 2012-10-08 2017-04-26 华为技术有限公司 用于运动矢量预测的运动矢量列表建立的方法、装置
US9225979B1 (en) 2013-01-30 2015-12-29 Google Inc. Remote access encoding
US11317123B2 (en) 2013-04-25 2022-04-26 Vmware, Inc. Systems and methods for using pre-calculated block hashes for image block matching
CN104142939B (zh) 2013-05-07 2019-07-02 杭州智棱科技有限公司 一种基于运动特征信息匹配特征码的方法与设备
CN103281538B (zh) 2013-06-06 2016-01-13 上海交通大学 基于滚动哈希和块级别帧内预测的帧内编码方法
US9210434B2 (en) 2013-06-12 2015-12-08 Microsoft Technology Licensing, Llc Screen map and standards-based progressive codec for screen content coding
US20140369413A1 (en) 2013-06-18 2014-12-18 Vmware, Inc. Systems and methods for compressing video data using image block matching
US10812694B2 (en) 2013-08-21 2020-10-20 Faro Technologies, Inc. Real-time inspection guidance of triangulation scanner
US20150063451A1 (en) 2013-09-05 2015-03-05 Microsoft Corporation Universal Screen Content Codec
JP6212345B2 (ja) 2013-10-02 2017-10-11 ルネサスエレクトロニクス株式会社 動画像符号化装置およびその動作方法
US11076171B2 (en) 2013-10-25 2021-07-27 Microsoft Technology Licensing, Llc Representing blocks with hash values in video and image coding and decoding
US10264290B2 (en) 2013-10-25 2019-04-16 Microsoft Technology Licensing, Llc Hash-based block matching in video and image coding
US10567754B2 (en) 2014-03-04 2020-02-18 Microsoft Technology Licensing, Llc Hash table construction and availability checking for hash-based block matching
CN105556971B (zh) 2014-03-04 2019-07-30 微软技术许可有限责任公司 针对帧内块复制预测中的块翻动和跳跃模式的编码器侧判定
US9715559B2 (en) 2014-03-17 2017-07-25 Qualcomm Incorporated Hash-based encoder search for intra block copy
CN105359531B (zh) 2014-03-17 2019-08-06 微软技术许可有限责任公司 用于针对屏幕内容编码的编码器侧判定的方法和系统
US10091512B2 (en) 2014-05-23 2018-10-02 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
WO2015196322A1 (en) 2014-06-23 2015-12-30 Microsoft Technology Licensing, Llc Encoder decisions based on results of hash-based block matching
US10223839B2 (en) 2014-07-31 2019-03-05 Hewlett-Packard Development Company, L.P. Virtual changes to a real object
JP6462119B2 (ja) 2014-09-30 2019-01-30 マイクロソフト テクノロジー ライセンシング,エルエルシー コンピューティングデバイス
GB2531811B (en) 2014-11-03 2021-02-17 Sony Europe Bv A method, system and apparatus for providing improved audience participation
CN104574440A (zh) 2014-12-30 2015-04-29 安科智慧城市技术(中国)有限公司 一种视频运动目标跟踪方法及装置
US10390039B2 (en) 2016-08-31 2019-08-20 Microsoft Technology Licensing, Llc Motion estimation for screen remoting scenarios
US11095877B2 (en) 2016-11-30 2021-08-17 Microsoft Technology Licensing, Llc Local hash-based motion estimation for screen remoting scenarios

Also Published As

Publication number Publication date
EP3061233A1 (en) 2016-08-31
US11076171B2 (en) 2021-07-27
WO2015058397A1 (en) 2015-04-30
KR20160075709A (ko) 2016-06-29
CN105684409B (zh) 2019-08-13
EP3061233A4 (en) 2016-10-12
CN105684409A (zh) 2016-06-15
EP3061233B1 (en) 2019-12-11
US20160241876A1 (en) 2016-08-18

Similar Documents

Publication Publication Date Title
KR102197505B1 (ko) 비디오 및 이미지 코딩 및 디코딩에서의 해시 값을 갖는 블록의 표현
JP6931690B2 (ja) コンテンツをエンコードする方法及び計算装置
US11252437B2 (en) Features of base color index map mode for video and image coding and decoding
US10264290B2 (en) Hash-based block matching in video and image coding
KR102283407B1 (ko) 중첩 구역 내에서의 재구성된 샘플 값의 블록 벡터 예측 및 추정에서의 혁신
KR102245704B1 (ko) 파면 병렬 프로세싱이 인에이블되는 경우의 인트라 픽쳐 예측 모드에 대한 규칙
US10542274B2 (en) Dictionary encoding and decoding of screen content
EP3114838B1 (en) Hash table construction and availability checking for hash-based block matching
KR102401946B1 (ko) 인트라 블록 카피 예측에서의 스킵 모드 및 블록 플립핑
EP3090553A1 (en) Block vector prediction in video and image coding/decoding
KR102210946B1 (ko) 스크린 컨텐츠의 딕셔너리 인코딩 및 디코딩

Legal Events

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