KR102490706B1 - 비디오 코딩을 위한 해시 기반 인코더 결정 - Google Patents

비디오 코딩을 위한 해시 기반 인코더 결정 Download PDF

Info

Publication number
KR102490706B1
KR102490706B1 KR1020227003023A KR20227003023A KR102490706B1 KR 102490706 B1 KR102490706 B1 KR 102490706B1 KR 1020227003023 A KR1020227003023 A KR 1020227003023A KR 20227003023 A KR20227003023 A KR 20227003023A KR 102490706 B1 KR102490706 B1 KR 102490706B1
Authority
KR
South Korea
Prior art keywords
block
hash
category
precision
blocks
Prior art date
Application number
KR1020227003023A
Other languages
English (en)
Other versions
KR20220019297A (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 KR20220019297A publication Critical patent/KR20220019297A/ko
Application granted granted Critical
Publication of KR102490706B1 publication Critical patent/KR102490706B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/142Detection of scene cut or scene change
    • 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/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction

Landscapes

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

Abstract

해시 기반 블록 매칭의 결과를 사용하는 인코더측 결정에서의 혁신안이 제공된다. 예를 들면, 혁신안 중 몇몇은, 몇몇(그러나 전부는 아님) 균일한 블록을 포함하는 해시 테이블을 구축하는 방식에 관한 것이다. 다른 혁신안은, 해시 기반 블록 매칭의 결과에 기초하여 모션 벡터 해상도를 결정하는 방식에 관한 것이다. 여전히 다른 혁신안은, 장기간 참조 픽처선택 및 인코딩 동안의 픽처 품질 결정을 비롯한, 장면 전환 검출에 관한 것이다.

Description

비디오 코딩을 위한 해시 기반 인코더 결정{HASH-BASED ENCODER DECISIONS FOR VIDEO CODING}
엔지니어는 디지털 비디오의 비트 레이트를 감소시키기 위해 압축(또한 소스 코딩 또는 소스 인코딩으로 칭해짐)을 사용한다. 압축은 정보를 더 낮은 비트 레이트 형태로 변환하는 것에 의해 비디오 정보를 저장 및 송신하는 비용을 감소시킨다. 압축해제(decompression)(디코딩으로도 또한 칭해짐)는 압축된 형태로부터 원래의 정보의 버전을 재구성한다. "코덱"은 인코더/디코더 시스템이다.
지난 이십 여년에 걸쳐, ITU-T H.261, H.262 (MPEG-2 또는 ISO/IEC 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(VC-1) 표준을 비롯한, 다양한 비디오 코덱 표준이 채택되었다. 보다 최근에는, H.265/HEVC 표준(ITU-T H.265 또는 ISO/IEC 23008-2)이 승인되었다. (예를 들면, 스케일러블 비디오 코딩/디코딩을 위한, 샘플 비트 깊이 또는 크로마 샘플링 레이트의 관점에서 충실도가 더 높은 비디오의 코딩/디코딩을 위한, 스크린 캡처 컨텐츠를 위한, 또는 멀티뷰 코딩/디코딩을 위한) H.265/HEVC 표준에 대한 확장안이 현재 개발 중에 있다. 비디오 코덱 표준은 통상적으로, 인코딩된 비디오 비트스트림의 신택스(syntax)에 대한 옵션을 정의하고, 인코딩 및 디코딩에서 특정 피처가 사용될 때의 비트스트림에서의 파라미터를 상술한다. 많은 경우에서, 비디오 코덱 표준은 또한, 디코딩에서 적합한 결과를 달성하기 위해 디코더가 수행해야 하는 디코딩 동작에 관한 상세를 제공한다. 코덱 표준 외에, 다양한 독점적 코덱 포맷은 인코딩된 비디오 비트스트림의 신택스에 대한 다른 옵션 및 대응하는 디코딩 동작을 정의한다.
일반적으로, 비디오 압축 기술은 "인트라 픽처" 압축 및 "인터 픽처" 압축을 포함한다. 인트라 픽처압축 기술은 개개의 픽처를 압축하고, 인터 픽처압축 기술은 선행하는 및/또는 후행하는 픽처(종종 참조 또는 앵커 픽처로 칭해짐) 또는 픽처들을 참조로 픽처를 압축한다.
인터 픽처압축 기술은, 종종, 비디오 시퀀스에서의 시간적 중복성을 활용하는 것에 의해 비트 레이트를 감소시키기 위해 모션 추정 및 모션 보상을 사용한다. 모션 추정은 픽처사이의 모션을 추정하기 위한 프로세스이다. 하나의 일반적인 기술에서, 모션 추정을 사용하는 인코더는 현재 픽처의 샘플 값의 현재 블록을, 다른 픽처, 즉 참조 픽처의 검색 영역에서의 동일한 사이즈의 후보(candidate) 블록과 매치시키려고 시도한다. 참조 픽처는, 일반적으로, 다른 픽처의 디코딩 프로세스에서 예측을 위해 사용될 수도 있는 샘플 값을 포함하는 픽처이다.
현재 블록에 대해, 인코더가 참조 픽처의 검색 영역에서 정확한 또는 "충분히 근접한" 매치를 발견했을 때, 인코더는, 현재 블록과 후보 블록 사이의 위치에서의 변화를 모션 데이터 예컨대 모션 벡터(motion vector; "MV")로서 파라미터화한다. MV는, 전통적으로는, 왼쪽으로의 또는 오른쪽으로의 공간적 변위를 나타내는 수평 MV 성분 및 위쪽으로의 또는 아래쪽으로의 공간적 변위를 나타내는 수직 MV 성분을 갖는 2차원 값이다. 일반적으로, 모션 보상은 모션 데이터를 사용하여 참조 픽처(들)로부터 픽처를 재구성하는 프로세스이다.
몇몇 인코딩 기술에서, 현재 픽처의 블록은 하나 이상의 참조 픽처의 블록과 매치된다. 그러나, 이러한 매칭 기술은, 많은 수의 블록이 저장되거나 또는 매치되는 것을 필요로 할 때 성능 저하를 겪을 수 있다. 다른 인코딩 기술에서, 모션 벡터 정밀도가 (예를 들면, 픽처단위 기반으로) 변경될 수 있지만, 모션 벡터 정밀도를 언제 변경할지를 결정하는 것은 어려운 태스크이다. 또 다른 인코딩 기술에서, 장면 전환(scene change) 검출이 수행된다. 그러나 이러한 검출 기술은, 스크린 컨텐츠를 수반하는 장면 전환을 효율적으로 또는 정확하게 검출할 수 없을 수도 있다.
요약하면, 상세한 설명은, 인코딩 동안 다양한 태스크 및 동작을 수행함에 있어서 해시 기반 블록 매칭의 결과를 사용하는 인코더측 결정에서 혁신안을 제공한다. 예를 들면, 혁신안 중 몇몇은, 몇몇(그러나 전부는 아님) 균일한 블록을 포함하는 해시 테이블을 구축하는 방식에 관한 것이다. 다른 혁신안은, 해시 기반 블록 매칭에 기초하여 모션 벡터 해상도를 결정하는 것에 관한 것이다. 예를 들면, 픽처의 블록은 복수의 카테고리로 분류될 수 있고, 각각의 카테고리에 할당되는 블록의 수는, 어떤 모션 벡터 정밀도를 사용할지를 결정하는 데 사용될 수 있다. 다른 혁신안은, 해시 기반 블록 매칭을 적어도 부분적으로 사용하는 장면 전환 검출에 관한 것이다. 예를 들면, 픽처는 장면 전환의 다양한 스테이지에서(예를 들면, 안정적인 장면 동안, 장면 전환 직전에, 장면 전이 동안, 그리고 신규의 장면의 시작에서) 식별될 수 있다. 장면 전환 정보는 장기간(long-term) 참조 픽처를 선택함에 있어서 및/또는 인코딩 동안 픽처의 품질을 조정할 때 사용될 수 있다.
본 발명의 및 다른 목적, 특징, 및 이점은, 첨부의 도면을 참조로 진행하는 하기의 상세한 설명으로부터 더 명확하게 될 것이다.
도 1은 몇몇 설명된 실시형태가 구현될 수 있는 예시적인 컴퓨팅 시스템의 도면이다.
도 2a 및 도 2b는 몇몇 설명된 실시형태가 구현될 수 있는 예시적인 네트워크 환경의 도면이다.
도 3은 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 인코더 시스템의 도면이다.
도 4a 및 도 4b는 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 비디오 인코더를 예시하는 도면이다.
도 5는 스크린 캡처를 위한 입력을 제공할 수도 있는 컨텐츠를 갖는 컴퓨터 데스크탑 환경을 예시하는 도면이다.
도 6은 내추럴 비디오 컨텐츠(natural video content) 및 인공적으로 생성된 비디오 컨텐츠(artificially-created video content)를 갖는 복합 비디오를 예시하는 도면이다.
도 7은 해시 기반 블록 매칭에서의 후보 블록에 대한 해시 값을 예시하는 테이블이다.
도 8a 내지 도 8c는 해시 기반 블록 매칭을 위한 후보 블록을 편제하는(organize) 예시적인 데이터 구조체를 예시하는 테이블이다.
도 9a 내지 도 9c는 해시 기반 블록 매칭을 위한 후보 블록을 편제하는 예시적인 데이터 구조체를 예시하는 테이블이다.
도 10a 내지 도 10c는 후보 블록의 패턴을 예시하는 도면이다.
도 11은, 해시 테이블 구성 동안 동질성 선택 기준(homogeneous selection criterion)을 사용하여 동질성 블록(homogeneous block)을 선택하기 위한 기술을 예시하는 플로우차트이다.
도 12a 및 도 12b는, 정수의 샘플 공간적 변위(integer-sample spatial displacement) 및 분수의 샘플 공간적 변위(fractional-sample spatial displacement)를 각각 구비하는 MV 값을 통한 모션 보상을 예시하는 도면이다.
도 13은 결과 블록 분류에 따라 MV 정밀도를 선택하기 위한 기술을 예시하는 플로우차트이다.
도 14는 MV 정밀도를 선택할 때 사용되는 블록 분류를 수행하기 위한 기술을 예시하는 플로우차트이다.
도 15는 비디오 인코딩 동안 장면 전환을 검출하기 위한 기술을 예시하는 플로우차트이다.
상세한 설명은, 다양한 타입의 동작의 성능을 향상시키기 위해 해시 기반 매칭 기술을 사용하는 인코더측 결정에서의 혁신안을 제공한다. 예를 들면, 혁신안 중 몇몇은, 몇몇의(그러나 모두는 아닌) 균일한 블록(예를 들면, 선택 기준을 충족하는 동질성 블록만을 포함함)을 포함하는 해시 테이블을 구축하는 방식에 관한 것이다. 다른 혁신안은, 해시 기반 블록 매칭에 기초하여 모션 벡터 해상도를 결정하는 것에 관한 것이다. 예를 들면, 픽처의 블록은 복수의 카테고리로 분류될 수 있고, 각각의 카테고리에 할당되는 블록의 수는, 어떤 모션 벡터 정밀도를 사용할지를 결정하는 데 사용될 수 있다. 다른 혁신안은, 해시 기반 블록 매칭을 적어도 부분적으로 사용하는 장면 전환 검출에 관한 것이다. 예를 들면, 픽처는 장면 전환의 다양한 스테이지에서(예를 들면, 안정적인 장면 동안, 장면 전환 직전에, 장면 전이 동안, 그리고 신규의 장면의 시작에서) 식별될 수 있다. 장면 전환 정보는 장기간 참조 픽처를 선택함에 있어서 및/또는 인코딩 동안 픽처의 품질을 조정할 때 사용될 수 있다.
특히, 혁신안은, 스크린 캡처 컨텐츠와 같은 인공적으로 생성된 비디오 컨텐츠를 인코딩하는 동안 파라미터를 설정하는 계산 효율적인 방식을 제공할 수 있다.
본원에서 설명되는 동작이 비디오 인코더에 의해 수행되고 있는 것으로 여기저기에서 설명되지만, 많은 경우에서, 동작은 다른 타입의 미디어 프로세싱 툴(예를 들면, 이미지 인코더)에 의해 수행될 수 있다.
본원에서 설명되는 혁신안 중 몇몇은 H.265/HEVC 표준에 고유한 신택스 엘리먼트 및 동작을 참조로 예시된다. 예를 들면, H.265/HEVC 표준의 드래프트 버전 JCTVC-P1005 - 2014년 2월의 JCTVC-P1005_v1, "High Efficiency Video Coding (HEVC) Range Extensions Text Specification: Draft 6"에 대한 참조가 이루어진다. 본원에서 설명되는 혁신안은 또한, 다른 표준 또는 포맷에 대해 구현될 수 있다.
본원에서 설명되는 혁신안 중 많은 것은, 스크린 캡처 모듈로부터의 스크린 캡처 컨텐츠와 같은 소정의 인공적으로 생성된 비디오 컨텐츠를 인코딩할 때 의사 결정(decision-making) 프로세스를 향상시킬 수 있다. 스크린 캡처 컨텐츠는 통상적으로 반복된 구조(예를 들면, 그래픽, 텍스트 문자)를 포함한다. 스크린 캡처 컨텐츠는, 일반적으로, 높은 크로마 샘플링 해상도를 갖는 포맷(예를 들면, YUV 4:4:4 또는 RGB 4:4:4)으로 인코딩되지만, 스크린 캡처 컨텐츠는 또한 더 낮은 크로마 샘플링 해상도(예를 들면, YUV 4:2:0)를 갖는 포맷으로 인코딩될 수도 있다. 스크린 캡처 컨텐츠의 인코딩/디코딩을 위한 공통 시나리오는, 원격 데스크탑 회의 및 내추럴 비디오(natural video) 또는 다른 "혼합된 컨텐츠" 비디오 상의 그래픽 오버레이의 인코딩/디코딩을 포함한다. 이들 혁신안은 또한 내추럴 비디오 컨텐츠에 대해 사용될 수 있지만, 그 만큼 효과적이지는 않을 수도 있다.
보다 일반적으로는, 본원에서 설명되는 예에 대한 다양한 대안예도 가능하다. 예를 들면, 본원에서 설명되는 방법 중 몇몇은, 설명되는 방법 액트(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)을 도시한다. 유형의(tangible) 메모리(120, 125)는, 프로세싱 유닛(들)에 의해 액세스될 수 있는, 휘발성 메모리(예를 들면, 레지스터, 캐시, RAM), 불휘발성 메모리(예를 들면, ROM, EEPROM, 플래시 메모리 등등), 또는 이 둘의 어떤 조합일 수도 있다. 메모리(120, 125)는, (예를 들면, 해시 테이블을 구축하기 위한, MV 정밀도를 선택하기 위한, 그리고 장면 전환을 검출하고 장면 전환에 기초하여 의사 결정을 행하기 위한) 해시 기반 블록 매칭의 결과에 기초한 인코더 결정을 위한 하나 이상의 혁신안을 구현하는 소프트웨어(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)를 포함한다. 용어 컴퓨터 판독가능 저장 매체는 신호 및 반송파(carrier wave)를 포함하지 않는다. 또한, 용어 컴퓨터 판독가능 저장 매체는 통신 연결부(예를 들면, 170)를 포함하지 않는다.
혁신안은, 컴퓨팅 시스템에서 타겟인 실제 또는 가상의 프로세서 상에서 실행되는, 프로그램 모듈에 포함되는 것과 같은 컴퓨터 실행가능 명령어의 일반적 맥락에서 설명될 수 있다. 일반적으로, 프로그램 모듈은, 특정 태스크를 수행하거나 또는 특정한 추상 데이터 타입을 구현하는 루틴, 프로그램, 라이브러리, 오브젝트, 클래스, 컴포넌트, 데이터 구조체 등등을 포함한다. 프로그램 모듈의 기능성은 다양한 실시형태에서 소망에 따라 프로그램 모듈 사이에서 분할되거나 또는 결합될 수도 있다. 프로그램 모듈에 대한 컴퓨터 실행가능 명령어는 로컬 컴퓨팅 시스템 또는 분산형 컴퓨팅 시스템 내에서 실행될 수도 있다.
용어 "시스템" 및 "디바이스"는 본원에서 상호교환적으로 사용된다. 문맥상 그렇지 않다고 명확하게 나타내지 않는 한, 어떠한 용어도 컴퓨팅 디바이스 또는 컴퓨팅 시스템의 타입에 대해 아무런 제한을 내포하지 않는다. 일반적으로, 컴퓨팅 시스템 또는 컴퓨팅 디바이스는 로컬이거나 또는 분산될 수도 있으며, 본원에서 설명되는 기능성을 구현하는 소프트웨어와의 특수 목적의 하드웨어 및/또는 범용 하드웨어의 임의의 조합을 포함할 수 있다.
개시된 방법은 또한, 개시된 방법 중 임의의 것을 수행하도록 구성되는 특수한 컴퓨팅 하드웨어를 사용하여 구현될 수 있다. 예를 들면, 개시된 방법은, 개시된 방법 중 임의의 것을 구현하도록 특별하게 설계되거나 구성되는 집적 회로(예를 들면, ASIC(예컨대 ASIC 디지털 신호 프로세서(digital signal processor; "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)는, H.265/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)에 의한 디코딩을 관리한다.
도 2b에서 도시되는 네트워크 환경(202)에서, 인코딩 툴(212)은, 디코더(270)를 포함하는 다수의 재생 툴(214)로 전달하기 위한 비디오를 인코딩하는 인코더(220)를 포함한다. 단방향 통신은, 비디오 감시 시스템, 웹 카메라 모니터링 시스템, 원격 데스크탑 회의 표시 또는 비디오가 인코딩되어 한 장소에서 하나 이상의 다른 장소로 전송되는 다른 시나리오에 대해 제공될 수 있다. 도 2b의 네트워크 환경(202)이 두 개의 재생 툴(214)을 포함하지만, 네트워크 환경(202)은 더 많은 또는 더 적은 재생 툴(214)을 포함할 수 있다. 일반적으로, 재생 툴(214)은, 재생 툴(214)이 수신할 비디오의 스트림을 결정하기 위해 인코딩 툴(212)과 통신한다. 재생 툴(214)은 스트림을 수신하고, 수신된 인코딩된 데이터를 적절한 기간 동안 버퍼링하고, 디코딩 및 재생을 시작한다.
도 3은 인코딩 툴(212)에 포함될 수 있는 예시적인 인코더 시스템(300)을 도시한다. 대안적으로, 인코딩 툴(212)은 다른 인코더 시스템을 사용한다. 인코딩 툴(212)은 또한, 하나 이상의 재생 툴(214)과의 연결을 관리하기 위한 서버측 컨트롤러 로직을 포함할 수 있다. 재생 툴(214)은 또한, 인코딩 툴(212)과의 연결을 관리하기 위한 클라이언트측 컨트롤러 로직을 포함할 수 있다.
III. 예시적인 인코더 시스템.
도 3은 몇몇 설명된 실시형태가 연계하여 구현될 수도 있는 예시적인 인코더 시스템(300)의 블록도이다. 인코더 시스템(300)은, 다수의 인코딩 모드 예컨대 실시간 통신을 위한 로우 레이턴시(low-latency) 인코딩 모드, 트랜스코딩 모드, 및 파일 또는 스트림으로부터 재생용 미디어를 생성하기 위한 더 높은 레이턴시의 인코딩 모드 중 임의의 것에서 동작할 수 있는 범용 인코딩 툴일 수 있거나, 또는 인코더 시스템(300)은 하나의 이러한 인코딩 모드에 대해 적응되는 특수 목적의 인코딩 툴일 수 있다. 인코더 시스템(300)은 특정한 타입의 컨텐츠(예를 들면, 스크린 캡처 컨텐츠)의 인코딩을 위해 적응될 수 있다. 인코더 시스템(300)은 오퍼레이팅 시스템 모듈로서, 애플리케이션 라이브러리의 일부로서 또는 독립형 애플리케이션으로서 구현될 수 있다. 종합하면, 인코더 시스템(300)은 비디오 소스(310)로부터 소스 비디오 프레임(311)의 시퀀스를 수신하고 인코딩된 데이터를 채널(390)로의 출력으로서 생성한다. 채널로의 출력되는 인코딩된 데이터는 본원에서 설명되는 바와 같이 인코더측 결정을 사용하여 인코딩되는 컨텐츠를 포함할 수 있다.
비디오 소스(310)는 카메라, 튜너 카드, 저장 매체, 스크린 캡처 모듈, 또는 다른 디지털 비디오 소스일 수 있다. 비디오 소스(310)는, 예를 들면, 초당 30프레임의 프레임 레이트에서 비디오 프레임의 시퀀스를 생성한다. 본원에서 사용되는 바와 같이, 용어 "프레임"은 일반적으로, 소스, 코딩된 또는 재구성된 이미지 데이터를 가리킨다. 순차 주사 비디오(progressive-scan 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) 성분의 샘플 값은 컬러 차이 값을 나타낸다. 컬러 차이 값(및 RGB와 같은 다른 컬러 공간으로부터 YUV 컬러 공간으로의/YUV 컬러 공간으로부터 RGB와 같은 다른 컬러 공간으로의 변환 동작)의 정확한 정의는 구현예에 의존한다. 일반적으로, 본원에서 사용되는 바와 같이, 용어 YUV는, 루마(또는 휘도) 성분 및 하나 이상의 크로마(또는 색차(chrominance)) 성분을 갖는 임의의 컬러 공간을 나타내는데, Y'UV, YIQ, Y'IQ 및 YDbDr뿐만 아니라 YCbCr 및 YCoCg와 같은 변형예를 포함한다. 크로마 샘플 값은 (예를 들면, YUV 4:2:0 포맷의 경우) 더 낮은 크로마 샘플링 레이트로 서브샘플링될 수도 있거나, 또는 크로마 샘플 값은 (예를 들면, YUV 4:4:4 포맷의 경우) 루마 샘플 값과 동일한 해상도를 가질 수도 있다. 또는, 비디오는 다른 포맷(예를 들면, RGB 4:4:4 포맷, GBR 4:4:4 포맷 또는 BGR 4:4:4 포맷)으로 인코딩될 수 있다.
인코더(340)는, 코딩된 프레임(341)을 생성하기 위해, 선택된 프레임(331)을 인코딩하고 또한 메모리 관리 제어 동작(memory management control operation; "MMCO") 신호(342) 또는 참조 픽처세트(reference picture set; "RPS") 정보를 생성한다. RPS는, 현재 프레임 또는 임의의 후속하는 프레임에 대한 모션 보상에서 참조를 위해 사용될 수도 있는 프레임의 세트이다. 현재 프레임이 인코딩된 첫 번째 프레임이 아니면, 자신의 인코딩 프로세스를 수행하고 있을 때, 인코더(340)는, 디코딩된 프레임 임시 메모리 저장 영역(360)에 저장되어 있는 하나 이상의 이전에 인코딩된/디코딩된 프레임(369)을 사용할 수도 있다. 이렇게 저장된 디코딩된 프레임(369)은 현재 소스 프레임(331)의 컨텐츠의 인터 프레임 예측(inter-frame prediction)을 위한 참조 프레임으로서 사용된다. MMCO/RPS 정보(342)는 디코더에게, 어떤 재구성된 프레임이 참조 프레임으로서 사용될 수도 있는지, 따라서 프레임 저장 영역에 저장되어야 하는지를 나타낸다. RPS에 어떤 참조 픽처를 유지할지에 관한 의사 결정을 행하는 예시적인 방식이 하기에 설명된다.
일반적으로, 인코더(340)는, 타일로의 구획화, 인트라 예측 추정 및 예측, 모션 추정 및 보상, 주파수 변환, 양자화 및 엔트로피 코딩과 같은 인코딩 태스크를 수행하는 다수의 인코딩 모듈을 포함한다. 인코더(340)에 의해 수행되는 정확한 동작은 압축 포맷에 따라 변할 수 있다. 출력된 인코딩된 데이터의 포맷은, H.265/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)는, 프레임 경계와 함께, 프레임 내에서의 타일의 수평 및 수직 경계를 정의하는 타일 행 및 타일 열을 따라 프레임을 분할하는데, 이 경우 각각의 타일은 직사각형 영역이다. 타일은 종종 병렬 프로세싱을 위한 옵션을 제공하기 위해 사용된다. 프레임은 또한 하나 이상의 슬라이스로서 편제될 수 있는데, 이 경우 슬라이스는 전체 프레임 또는 프레임의 영역일 수 있다. 슬라이스는 프레임의 다른 슬라이스와는 무관하게 디코딩될 수 있는데, 슬라이스가 프레임의 다른 슬라이스와는 무관하게 디코딩되는 것은 에러 복원성(error resilience)을 향상시킨다. 슬라이스 또는 타일의 컨텐츠는 인코딩 및 디코딩의 목적을 위해 블록 또는 샘플 값의 다른 세트로 더 구획된다.
H.265/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로 분할될 수 있는데, 각각의 CU는 32×32 루마 CB 및 두 개의 32×32 크로마 CB를 포함하고, 그리고 각각의 CU는 어쩌면 더 작은 CU로 더 분할된다. 또는, 다른 예로서, 64×64 루마 CTB 및 두 개의 32×32 크로마 CTB를 갖는 CTU(YUV 4:2:0 포맷)는 네 개의 CU로 분할될 수 있는데, 각각의 CU는 32×32 루마 CB 및 두 개의 16×16 크로마 CB를 포함하고, 그리고 각각의 CU는 어쩌면 더 작은 CU로 더 분할된다. CU의 가장 작은 허용가능한 사이즈(예를 들면, 8×8, 16×16)는 비트스트림으로 시그널링될 수 있다.
일반적으로, CU는 인터 또는 인트라와 같은 예측 모드를 갖는다. CU는 예측 정보(예컨대 예측 모드 상세, 변위 값 등등) 및/또는 예측 프로세싱을 시그널링하는 목적을 위한 하나 이상의 예측 유닛을 포함한다. 예측 유닛(prediction unit; "PU")은 루마 예측 블록(prediction block; "PB") 및 두 개의 크로마 PB를 구비한다. 인트라 예측된 CU의 경우, CU가 최소 사이즈(예를 들면, 8×8)를 갖지 않는 한, PU는 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를 포함할 수도 있다. 인코더는 비디오를 CTU, CU, PU, TU 등등으로 구획하는 방법을 결정한다.
H.265/HEVC 구현예에서, 슬라이스는 단일의 슬라이스 세그먼트(독립 슬라이스 세그먼트)를 포함할 수 있거나 또는 다수의 슬라이스 세그먼트(독립 슬라이스 세그먼트 및 하나 이상의 종속 슬라이스 세그먼트)로 분할될 수 있다. 슬라이스 세그먼트는, 단일의 네트워크 추상화 레이어(network abstraction layer; "NAL") 유닛에 포함되는, 타일 주사에서 연속적으로 순서가 정해지는 정수 개수의 CTU이다. 독립 슬라이스 세그먼트의 경우, 슬라이스 세그먼트 헤더는 독립 슬라이스 세그먼트에 적용되는 신택스 엘리먼트의 값을 포함한다. 종속 슬라이스 세그먼트의 경우, 잘려진 슬라이스 세그먼트 헤더는 그 종속 슬라이스 세그먼트에 적용되는 신택스 엘리먼트의 몇몇 값을 포함하고, 종속 슬라이스 세그먼트에 대한 다른 신택스 엘리먼트의 값은 디코딩 순서에서 선행하는 독립 슬라이스 세그먼트에 대한 값으로부터 추론된다.
본원에서 사용되는 바와 같이, 용어 "블록"은, 상황에 따라, 매크로블록, 예측 유닛, 잔차 데이터 유닛, 또는 CB, PB 또는 TB, 또는 샘플 값의 몇몇 다른 세트를 나타낼 수 있다.
도 3을 참조하면, 인코더는 소스 프레임(331)의 인트라 코딩된 블록을, 프레임(331)에서의 다른 이전에 재구성된 샘플 값으로부터의 예측의 관점에서 나타낸다. 인트라 블록 카피(block copy: "BC") 예측을 위해, 인트라 픽처 추정기 또는 모션 추정기는, 동일한 프레임의 다른 이전에 재구성된 샘플 값에 대한 블록의 변위를 추정한다. 인트라 프레임 예측 참조 영역은, 블록에 대한 BC 예측 값을 생성하기 위해 사용되는, 프레임에서의 샘플 값의 영역이다. 인트라 프레임 예측 영역은, 모션 벡터(motion vector; "MV") 값으로서 비트스트림으로 나타내어질 수 있는 블록 벡터(block vector; "BV") 값으로 나타내어질 수 있다. 블록에 대한 인트라 공간 예측의 경우, 인트라 픽처 추정기는, 이웃하는 재구성된 샘플 값의 블록으로의 외삽(extrapolation)을 추정한다. 예측 정보(예컨대 인트라 BC 예측을 위한 BV/MV 값, 또는 인트라 공간 예측을 위한 예측 모드(방향))가 엔트로피 코딩되어 출력될 수 있다. 인트라 프레임 예측 예측자(또는 BV/MV 값에 대한 모션 보상기)는 인트라 예측 값을 결정하기 위해 예측 정보를 적용한다.
인코더(340)는, 소스 프레임(331)의 인터 프레임 코딩되고 예측된 블록을, 하나 이상의 참조 프레임(369)으로부터의 예측의 관점에서 나타낸다. 모션 추정기는 하나 이상의 참조 프레임(369)에 대한 블록의 모션을 추정한다. 모션 추정기는, 예를 들면, 본원에서 사용되는 접근 방식(approach)을 사용하여, MV 정밀도(예를 들면, 정수 샘플 MV 정밀도, 1/2 샘플 MV 정밀도, 또는 1/4 샘플 MV 정밀도)를 선택할 수 있고, 그 다음 선택된 MV 정밀도를 모션 추정 동안 사용할 수 있다. 다수의 참조 프레임이 사용될 때, 다수의 참조 프레임은 상이한 시간적 방향 또는 동일한 시간적 방향으로부터 유래할 수 있다. 모션 보상된 예측 참조 영역은, 현재 프레임의 샘플 값의 블록에 대한 모션 보상된 예측 값을 생성하기 위해 사용되는, 참조 프레임(들)에서의 샘플 값의 영역이다. 모션 추정기는 MV 정보와 같은 모션 정보를 출력하는데, 모션 정보는 엔트로피 코딩된다. 모션 보상기는 참조 프레임(369)에 MV를 적용하여 인터 프레임 예측을 위한 모션 보상된 예측 값을 결정한다.
인코더는 블록의 예측 값(인트라 또는 인터)과 대응하는 원래의 값 사이의 차이를 (만약 있다면) 결정할 수 있다. 이들 예측 잔차 값은 또한, 주파수 변환, 양자화 및 엔트로피 인코딩을 사용하여 인코딩된다. 예를 들면, 인코더(340)는, 비디오의 픽처, 타일, 슬라이스 및/또는 다른 부분에 대한 양자화 파라미터(quantization parameter; "QP")에 대한 값을 설정하고, 상응하여 변환 계수를 양자화한다. 인코더(340)의 엔트로피 코더는 양자화된 변환 계수 값뿐만 아니라 소정의 부가 정보(예를 들면, MV 정보, 선택된 MV 정밀도, SAO 필터링 파라미터, RPS 업데이트 정보, QP 값, 모드 결정, 다른 파라미터 선택)를 압축한다. 통상적인 엔트로피 코딩 기술은, 지수 골룸 코딩(Exp-Golomb coding), 골룸 라이스 코딩(Golomb-Rice coding), 산술 코딩(arithmetic coding), 차분 코딩(differential coding), 허프만 코딩(Huffman coding), 런 길이 코딩(run length coding), 가변 길이 대 가변 길이(variable-length-to-variable-length; "V2V") 코딩, 가변 길이 대 고정 길이(variable-length-to-fixed-length; "V2F") 코딩, 렘펠 지브(Lempel-Ziv; "LZ") 코딩, 딕셔너리 코딩(dictionary coding), 확률 구간 구획화 엔트로피 코딩(probability interval partitioning entropy coding; "PIPE"), 및 상기의 조합을 포함한다. 엔트로피 코더는 상이한 종류의 정보에 대해 상이한 코딩 기술을 사용할 수 있고, (예를 들면, 골룸 라이스 코딩 및 후속하여 산술 코딩을 적용하는 것에 의해) 다수의 기술을 조합하여 적용할 수 있고, 특정한 코딩 기술 내의 다수의 코드 테이블 중에서 선택할 수 있다.
디코딩된 프레임에서 블록 경계 행 및/또는 열에 걸친 불연속부를 평활화하기 위해, 인코더(340)의 모션 보상 루프 내에 적응적 디블록화 필터(adaptive deblocking filter)가 포함된다. 루프 내 필터링 동작(in-loop filtering operation)으로서, 다른 필터링(예컨대 디링잉 필터링(de-ringing filtering), 적응적 루프 필터링(adaptive loop filtering; "ALF"), SAO 필터링)이 대안적으로 또는 추가적으로 적용될 수 있다.
인코더(340)에 의해 생성되는 인코딩된 데이터는 비트스트림 신택스의 다양한 레이어에 대한 신택스 엘리먼트를 포함한다. H.265/HEVC 표준에 따른 신택스의 경우, 예를 들면, 픽처파라미터 세트(picture parameter set; "PPS")는, 픽처와 관련될 수도 있는 신택스 엘리먼트를 포함하는 신택스 구조체이다. PPS는 단일의 픽처에 대해 사용될 수 있거나, 또는 PPS는 한 시퀀스의 다수의 픽처에 대해 재사용될 수 있다. PPS는 통상적으로 픽처에 대한 인코딩된 데이터와는 별개로 시그널링된다(예를 들면, PPS에 대한 하나의 NAL 유닛, 및 픽처에 대한 인코딩된 데이터에 대한 하나 이상의 다른 NAL 유닛). 픽처에 대한 인코딩된 데이터 내에서, 신택스 엘리먼트는 픽처에 대해 어떤 PPS를 사용할지를 나타낸다. 마찬가지로, H.265/HEVC 표준에 따른 신택스의 경우, 시퀀스 파라미터 세트(sequence parameter set; "SPS")는, 픽처의 시퀀스와 관련될 수도 있는 신택스 엘리먼트를 포함하는 신택스 구조체이다. 비트스트림은 단일의 SPS 또는 다수의 SPS를 포함할 수 있다. SPS는 통상적으로 시퀀스에 대한 다른 데이터와는 별개로 시그널링되고, 다른 데이터의 신택스 엘리먼트는 어떤 SPS를 사용할지를 나타낸다.
코딩된 프레임(341) 및 MMCO/RPS 정보(342)(또는, 프레임에 대한 종속성(dependency) 및 순서화 구조(ordering structure)가 인코더(340)에서 이미 알려져 있기 때문에, MMCO/RPS 정보(342) 정보와 등가의 정보)는 디코딩 프로세스 에뮬레이터(350)에 의해 프로세싱된다. 디코딩 프로세스 에뮬레이터(350)는 디코더의 기능성 중 몇몇, 예를 들면, 참조 프레임을 재구성하는 디코딩 태스크를 구현한다. MMCO/RPS 정보(342)와 부합하는 방식에서, 디코딩 프로세스 에뮬레이터(350)는, 인코딩될 후속 프레임의 인터 프레임 예측에서의 참조 프레임으로서의 사용을 위해, 주어진 코딩된 프레임(341)이 재구성되고 저장될 필요가 있는지의 여부를 결정한다. 코딩된 프레임(341)이 저장될 필요가 있다면, 디코딩 프로세스 에뮬레이터(350)는, 코딩된 프레임(341)을 수신하는 그리고 대응하는 디코딩된 프레임(351)을 생성하는 디코더에 의해 행해질 디코딩 프로세스를 모델링한다. 이렇게 함에 있어서, 디코딩된 프레임 저장 영역(360)에 저장되어 있던 디코딩된 프레임(들)(369)을 인코더(340)가 사용했을 때, 디코딩 프로세스 에뮬레이터(350)는 또한, 디코딩 프로세스의 일부로서, 저장 영역(360)으로부터의 디코딩된 프레임(들)(369)을 사용한다.
디코딩된 프레임 임시 메모리 저장 영역(360)은 다수의 프레임 버퍼 저장 영역(361, 362, ..., 36n)을 포함한다. MMCO/RPS 정보(342)와 부합하는 방식에서, 디코딩 프로세스 에뮬레이터(350)는, 참조 프레임으로서의 사용을 위해 인코더(340)에 의해 더 이상 필요로 되지 않는 프레임을 갖는 임의의 프레임 버퍼(361, 362, 등등)를 식별하기 위해, 저장 영역(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)는, 미디어 스트림으로서의 송신 또는 저장을 위해 집성된 데이터를 (예를 들면, ITU-T H.222.0 | ISO/IEC 13818-1와 같은 미디어 프로그램 스트림 또는 전송 스트림 포맷 또는 IETF RFC 3550과 같은 인터넷 실시간 전송 프로토콜 포맷에 따라) 패킷화할 수 있고 및/또는 멀티플렉싱할 수 있는데, 이 경우, 채널 인코더(380)는 신택스 엘리먼트를 미디어 송신 스트림의 신택스의 일부로서 추가할 수 있다. 또는, 채널 인코더(380)는, 파일로서의 저장을 위해, 집성된 데이터를 (예를 들면, ISO/IEC 14496-12와 같은 미디어 컨테이너 포맷에 따라) 편제할 수 있는데, 이 경우, 채널 인코더(380)는 신택스 엘리먼트를 미디어 저장 파일의 신택스의 일부로서 추가할 수 있다. 또는, 보다 일반적으로는, 채널 인코더(380)는 하나 이상의 미디어 시스템 멀티플렉싱 프로토콜 또는 전송 프로토콜을 구현할 수 있는데, 이 경우, 채널 인코더(380)는 신택스 엘리먼트를 프로토콜(들)의 신택스의 일부로서 추가할 수 있다. 채널 인코더(380)는 채널(390)로 출력을 제공하는데, 채널(390)은 출력에 대한 저장, 통신 연결, 또는 다른 채널을 나타낸다. 채널 인코더(380) 또는 채널(390)은 또한, 예를 들면, 순방향 에러 정정(forward-error correction; "FEC") 인코딩 및 아날로그 신호 변조를 위해, 다른 엘리먼트(도시되지 않음)를 포함할 수도 있다.
IV. 예시적인 비디오 인코더.
도 4a 및 도 4b는 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 일반화된 비디오 인코더(400)의 블록도이다. 인코더(400)는 현재 픽처를 입력 비디오 신호(405)로서 포함하는 비디오 픽처의 시퀀스를 수신하고 인코딩된 데이터를 코딩된 비디오 비트스트림(495)에서 출력으로서 생성한다.
인코더(400)는 블록 기반이며 구현예에 의존하는 블록 포맷을 사용한다. 블록은 상이한 스테이지에서, 예를 들면, 예측, 주파수 변환 및/또는 엔트로피 인코딩 스테이지에서, 더 세분된다(sub-divided). 예를 들면, 픽처는 64×64 블록, 32×32 블록 또는 16×16 블록으로 분할될 수 있는데, 이들은 결국에는 코딩 및 디코딩을 위해 샘플 값의 더 작은 블록으로 분할될 수 있다. H.265/HEVC 표준에 대한 인코딩의 구현예에서, 인코더는 픽처를 CTU(CTB), CU(CB), PU(PB) 및 TU(TB)로 구획한다.
인코더(400)는 인트라 픽처코딩 및/또는 인터 픽처코딩을 사용하여 픽처를 압축한다. 인코더(400)의 컴포넌트 중 많은 것은 인트라 픽처코딩 및 인터 픽처코딩 둘 다에 대해 사용된다. 이들 컴포넌트에 의해 수행되는 정확한 동작은, 압축되고 있는 정보의 타입에 따라 변할 수 있다.
타일화 모듈(tiling module; 410)은, 옵션적으로, 픽처를, 동일한 사이즈의 또는 상이한 사이즈의 다수의 타일로 구획한다. 예를 들면, 타일화 모듈(410)은, 픽처경계와 함께, 픽처 내에서의 타일의 수평 및 수직 경계를 정의하는 타일 행 및 타일 열을 따라 픽처를 분할하는데, 각각의 타일은 직사각형 영역이다. H.265/HEVC 구현예에서, 인코더(400)는 픽처를 하나 이상의 슬라이스로 구획하는데, 이 경우 각각의 슬라이스는 하나 이상의 슬라이스 세그먼트를 포함한다.
일반적인 인코딩 제어부(420)는 입력 비디오 신호(405)에 대한 픽처뿐만 아니라 인코더(400)의 다양한 모듈로부터 피드백(도시되지 않음)을 수신한다. 종합하면, 일반적인 인코딩 제어부(420)는, 인코딩 동안 코딩 파라미터를 설정하고 변경하기 위해, 제어 신호(도시되지 않음)를 다른 모듈(예컨대 타일화 모듈(410), 변환기/스케일러/양자화기(430), 스케일러/역변환기(435), 인트라 픽처 추정기(440), 모션 추정기(450), 필터링 제어부(460) 및 인트라/인터 스위치)로 제공한다. 예를 들면, 인코딩 동안, 일반적인 디코딩 제어부(420)는, 해시 테이블 생성, MV 정밀도, 및 RPS에 어떤 참조 픽처를 유지할지에 관한 결정을 관리할 수 있다. 일반적인 인코딩 제어부(420)는 또한, 인코딩 동안 중간 결과를 평가할 수 있는데, 예를 들면, 레이트 왜곡 분석을 수행한다. 일반적인 인코딩 제어부(420)는, 인코딩 동안 만들어진 결정을 나타내는 일반적인 제어 데이터(422)를 생성하고, 그 결과 대응하는 디코더는 일관된 결정을 행할 수 있다. 일반적인 제어 데이터(422)는 헤더 포맷터(header formatter)/엔트로피 코더(490)로 제공된다.
현재 픽처가 인터 픽처예측을 사용하여 예측되면, 모션 추정기(450)는, 하나 이상의 참조 픽처에 대한, 입력 비디오 신호(405)의 현재 픽처의 샘플 값의 블록의 모션을 추정한다. 디코딩된 픽처 버퍼(decoded picture buffer; "DPB")(470)는, 참조 픽처로서의 사용을 위해 하나 이상의 재구성된 이전에 코딩된 픽처를 버퍼링한다. 다수의 참조 픽처가 사용될 때, 다수의 참조 픽처는 상이한 시간적 방향 또는 동일한 시간적 방향으로부터 유래할 수 있다.
일반적인 디코딩 제어부(420) 및 블록 해시 딕셔너리(451)와 함께 동작하면, 모션 추정기(450)는 본원에서 설명되는 접근 방식을 사용하여 MV 정밀도(예를 들면, 정수 샘플 MV 정밀도, 1/2 샘플 MV 정밀도, 또는 1/4 샘플 MV 정밀도)를 선택할 수 있고, 그 다음 선택된 MV 정밀도를 모션 추정 동안 사용할 수 있다. 모션 추정 동안 해시 기반 블록 매칭을 위해, 모션 추정기(450)는 블록 해시 딕셔너리(451)를 사용하여 현재 블록에 대한 MV 값을 찾을 수 있다. 블록 해시 딕셔너리(451)는, 해시 기반 블록 매칭을 위한 후보 블록을 편제하는 데이터 구조체이다. 블록 해시 딕셔너리(451)는 해시 테이블의 예이다. 도 4b에서, 블록 해시 딕셔너리(451)는 입력 샘플 값에 기초하여 구성된다. 대안적으로, 블록 해시 딕셔너리는 재구성된 샘플 값에 기초하여 구성될 수 있고, 신규의 후보 블록이 해시 기반 블록 매칭에서의 사용에 이용가능하게 됨에 따라, 이들 후보 블록에 관한 정보를 저장하기 위해 인코딩 동안 업데이트될 수 있다.
모션 추정기(450)는, 부가 정보로서 MV 데이터와 같은 모션 데이터(452), 병합 모드 인덱스 값, 및 참조 픽처선택 데이터, 및 선택된 MV 정밀도를 생성한다. 이들은 헤더 포맷터/엔트로피 코더(490)뿐만 아니라 모션 보상기(455)에 제공된다.
모션 보상기(455)는 MV를, DPB(470)로부터의 재구성된 참조 픽처(들)에 적용한다. 모션 보상기(455)는 현재 픽처에 대한 모션 보상된 예측을 생성한다.
인코더(400) 내에서의 별개의 경로에서, 인트라 픽처 추정기(440)는, 입력 비디오 신호(405)의 현재 픽처의 샘플 값의 블록에 대한 인트라 픽처예측을 수행하는 방법을 결정한다. 현재 픽처는 인트라 픽처코딩을 사용하여 전적으로 또는 부분적으로 코딩될 수 있다. 현재 픽처의 재구성치(438)의 값을 사용하여, 인트라 공간 예측을 위해, 인트라 픽처 추정기(440)는, 현재 픽처의 이웃하는 이전에 재구성된 샘플 값으로부터, 현재 픽처의 현재 블록의 샘플 값을 공간적으로 예측하는 방법을 결정한다. 인트라 픽처 추정기(440)는 현재 블록에 대해 사용할 공간적 예측의 방향을 결정할 수 있다.
또는, BV/MV 값을 사용한 인트라 BC 예측의 경우, 인트라 픽처 추정기(440) 또는 모션 추정기(450)는, 참조 픽처로서의 현재 픽처 내의 상이한 후보 참조 영역까지의, 현재 블록의 샘플 값의 변위를 추정한다. 해시 기반 블록 매칭의 경우, 인트라 픽처 추정기(440) 또는 모션 추정기(450)는 현재 블록에 대한 BV/MV 값을 찾기 위해 블록 해시 딕셔너리(도시되지 않음)를 사용할 수 있다. 또는, 인트라 픽처딕셔너리 코딩 모드의 경우, 블록의 픽셀은 딕셔너리 또는 다른 장소에 저장되는 이전 샘플 값을 사용하여 인코딩되는데, 이 경우, 픽셀은 병치된(co-located) 샘플 값의 세트(예를 들면, RGB 트리플릿(triplet) 또는 YUV 트리플릿)이다.
인트라 픽처 추정기(440)는, 인트라 예측 데이터(442), 예컨대 모드 정보, (인트라 공간 예측을 위한) 예측 모드 방향, 및 (딕셔너리 모드를 위한) 오프셋 및 길이를 부가 정보로서 생성한다. 인트라 예측 데이터(442)는, 헤더 포맷터/엔트로피 코더(490)뿐만 아니라 인트라 픽처 예측기(445)에도 제공된다.
인트라 예측 데이터(442)에 따르면, 인트라 픽처 예측기(445)는, 현재 픽처의 이웃하는 이전에 재구성된 샘플 값으로부터, 현재 픽처의 현재 블록의 샘플 값을 공간적으로 예측한다. 또는, 인트라 BC 예측의 경우, 인트라 픽처 예측기(445) 또는 모션 보상기(455)는, 현재 블록에 대한 BV/MV 값에 의해 나타내어지는 인트라 픽처예측 참조 영역의 이전에 재구성된 샘플 값을 사용하여 현재 블록의 샘플 값을 예측한다. 또는, 인트라 픽처딕셔너리 모드의 경우, 인트라 픽처 예측기(445)는 오프셋 및 길이를 사용하여 픽셀을 재구성한다.
인트라/인터 스위치는, 주어진 블록에 대한 예측(458)이 모션 보상된 예측일 것인지 또는 인트라 픽처예측일 것인지의 여부를 선택한다.
예측(458)의 블록과 입력 비디오 신호(405)의 원래의 현재 블록의 대응하는 부분 사이의 차이는 (만약 있다면) 비스킵 모드 블록에 대한 잔차(418)의 값을 제공한다. 현재 픽처의 재구성 동안, 비스킵 모드 블록의 경우, 재구성된 잔차 값은 예측치(458)와 결합되어 비디오 신호(405)로부터의 원래의 컨텐츠의 근사하는 또는 정확한 재구성치(438)를 생성한다. (손실성 압축에서, 몇몇 정보는 여전히 비디오 신호(405)로부터 상실된다.)
변환기/스케일러/양자화기(430)에서, 주파수 변환기는 공간적 도메인 비디오 정보를 주파수 도메인(즉, 스펙트럼, 변환) 데이터로 변환한다. 블록 기반 비디오 코딩을 위해, 주파수 변환기는, 예측 잔차 데이터(또는 예측(458)이 널(null)인 경우 샘플 값 데이터)의 블록에 대해, 이산 코사인 변환(discrete cosine transform; "DCT"), 그 정수 근사, 또는 다른 타입의 순방향 블록 변환(forward block transform)(예를 들면, 이산 사인 변환 또는 그 정수 근사)을 적용하여, 주파수 변환 계수의 블록을 생성한다. 변환기/스케일러/양자화기(430)는 가변 블록 사이즈를 가지고 변환을 적용할 수 있다. 인코더(400)는 또한 몇몇 경우에 변환 단계를 스킵할 수 있다.
스케일러/양자화기는 변환 계수를 스케일링하고 양자화한다. 예를 들면, 양자화기는, 픽처단위 기반으로, 타일 단위 기반으로, 슬라이스 단위 기반으로, 블록 단위 기반으로, 주파수별 기반으로 또는 다른 기반으로 변하는 양자화 스텝 사이즈를 가지고 주파수 도메인 데이터에 데드 존 스칼라 양자화(dead-zone scalar quantization)를 적용한다. 양자화된 변환 계수 데이터(432)는 헤더 포맷터/엔트로피 코더(490)에 제공된다.
스케일러/역변환기(435)에서, 스케일러/역양자화기는, 양자화된 변환 계수에 관해 역스케일링 및 역양자화를 수행한다. 변환 스테이지가 스킵되지 않았을 때, 역주파수 변환기는 역주파수 변환을 수행하여, 재구성된 예측 잔차 값 또는 샘플 값의 블록을 생성한다. 비스킵 모드 블록의 경우, 인코더(400)는 재구성된 잔차 값을 예측치(458)의 값(예를 들면, 모션 보상된 예측 값, 인트라 픽처예측 값)과 결합하여 재구성치(438)를 형성한다. 스킵 모드 블록 또는 딕셔너리 모드 블록의 경우, 인코더(400)는 예측치(458)의 값을 재구성치(438)로서 사용한다.
공간 인트라 픽처예측의 경우, 재구성치(438)의 값은 인트라 픽처 추정기(440) 및 인트라 픽처 예측기(445)로 다시 공급될 수 있다. 인트라 BC 예측의 경우, 재구성치(438)의 값은 재구성된 샘플 값을 제공하도록 마찬가지로 피드백될 수 있다. 또한, 재구성치(438)의 값은 후속하는 픽처의 모션 보상된 예측에 대해 사용될 수 있다.
재구성치(438)의 값은 추가로 필터링될 수 있다. 필터링 제어부(460)는, 비디오 신호(405)의 주어진 픽처에 대해, 재구성치(438)의 값에 관한 디블록 필터링을 수행하는 방법을 결정한다. 필터링 제어부(460)는 필터 제어 데이터(462)를 생성하는데, 필터 제어 데이터(462)는 헤더 포맷터/엔트로피 코더(490) 및 병합기/필터(들)(465)로 제공된다.
병합기/필터(들)(465)에서, 인코더(400)는 상이한 타일로부터의 컨텐츠를 픽처의 재구성된 버전으로 병합한다. 인코더(400)는 필터 제어 데이터(462)에 따라 디블록 필터링을 선택적으로 수행한다. 다른 필터링(예컨대 디링잉 필터링 또는 ALF)이 대안적으로 또는 추가적으로 적용될 수 있다. 타일 경계는, 인코더(400)의 설정에 따라, 선택적으로 필터링될 수 있거나 또는 전혀 필터링되지 않을 수도 있고, 인코더(400)는 이러한 필터링이 적용되었는지 또는 그렇지 않은지의 여부를 나타내기 위해 코딩된 비트스트림 내에 신택스를 제공할 수도 있다.
DPB(470)는 후속하는 모션 보상된 예측에서의 사용을 위해 재구성된 현재 픽처를 버퍼링한다. 특히, RPS의 참조 픽처가 DPB(470)에 버퍼링될 수 있다. 그러나, DPB(470)는 제한된 메모리 공간을 갖는다. 재구성된 현재 픽처가 참조 픽처로서의 사용을 위해 DPB(470)에 유지되면, 다른 픽처가 DPB(470)로부터 제거될 수도 있다(그리고 RPS로부터 드랍될 수도 있다). 일반적인 디코딩 제어부(420)는, 어떤 픽처를 RPS에 유지하고 DPB(470)에 버퍼링할지를 결정한다. 블록 해시 딕셔너리(451)를 사용하여, 일반적인 디코딩 제어부(420)는, 하기에서 설명되는 바와 같이, 어떤 참조 픽처를 RPS에 유지할지에 관한 의사 결정을 행할 수 있다.
헤더 포맷터/엔트로피 코더(490)는, 일반적인 제어 데이터(422), 양자화된 변환 계수 데이터(432), 인트라 예측 데이터(442), 모션 데이터(452), 및 필터 제어 데이터(462)를 포맷하고 및/또는 엔트로피 코딩한다. 모션 데이터(452)의 경우, 헤더 포맷터/엔트로피 코더(490)는 병합 모드 인덱스 값을 선택 및 엔트로피 코딩할 수 있거나, 또는 디폴트 MV 예측자가 사용될 수 있다. 몇몇 경우에서, 헤더 포맷터/엔트로피 코더(490)는 또한, (MV 예측자와 관련한) MV 값에 대한 MV 차분을 결정하고, 그 MV 차분을, 예를 들면, 콘텍스트 적응 이진 산술 코딩(context-adaptive binary arithmetic coding)을 사용하여 엔트로피 코딩한다.
헤더 포맷터/엔트로피 코더(490)는 인코딩된 데이터를 코딩된 비트 스트림(495)에서 제공한다. 코딩된 비디오 비트스트림(495)의 포맷은, H.265/HEVC 포맷, 윈도우 미디어 비디오 포맷, VC-1 포맷, MPEG-x 포맷(예를 들면, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예를 들면, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형안 또는 확장안일 수 있다.
소망되는 압축의 타입 및 구현예에 따라서, 인코더(400)의 모듈은 추가될 수 있고, 제외될 수 있고, 다수의 모듈로 분할될 수 있고, 다른 모듈과 결합될 수 있고 및/또는 유사한 모듈로 대체될 수 있다. 대안적인 실시형태에서, 상이한 모듈 및/또는 모듈의 다른 구성을 갖는 인코더가 설명된 기술 중 하나 이상을 수행한다. 인코더의 특정 실시형태는, 통상적으로, 인코더(400)의 변형예 또는 보충된 버전을 사용한다. 인코더(400) 내에서 모듈 사이에 도시되는 관계는, 인코더에서의 정보의 일반적인 흐름을 나타내며; 다른 관계는 간략화를 위해 도시되지 않는다.
V. 비디오의 타입.
해시 테이블을 생성하고, MV 정밀도를 선택하고, 장면 전환을 결정하기 위한 본원에서 설명되는 접근 방식은, 임의의 타입의 비디오를 인코딩할 때 적용될 수 있다. 그러나, 특히, 이들 접근 방식은, 스크린 캡처 컨텐츠와 같은 소정의 인공적으로 생성된 비디오 컨텐츠를 인코딩할 때 성능을 향상시킬 수 있다.
일반적으로, 스크린 캡처 컨텐츠는 컴퓨터 스크린 또는 다른 디스플레이의 출력을 나타낸다. 도 5은 스크린 캡처를 위한 입력을 제공할 수도 있는 컨텐츠를 갖는 컴퓨터 데스크탑 환경(510)을 도시한다. 예를 들면, 스크린 캡처 컨텐츠의 비디오는 전체 컴퓨터 데스크탑(511)의 일련의 이미지를 나타낼 수 있다. 또는, 스크린 캡처 컨텐츠의 비디오는, 게임 컨텐츠를 포함하는 앱 윈도우(513), 웹 페이지 컨텐츠를 갖는 브라우저 윈도우(512) 또는 워드 프로세서 컨텐츠를 갖는 윈도우(514)와 같은, 컴퓨터 데스크탑 환경의 윈도우 중 하나에 대한 일련의 이미지를 나타낼 수 있다.
컴퓨터가 생성하는 인공적으로 생성된 비디오 컨텐츠로서, 스크린 캡처 컨텐츠는, 비디오 카메라를 사용하여 캡처되는 내추럴 비디오 컨텐츠에 비해, 상대적으로 적은 별개의 샘플 값을 갖는 경향이 있다. 예를 들면, 스크린 캡처 컨텐츠의 한 영역은, 종종, 단일의 균일한 컬러를 포함하지만, 반면 내추럴 비디오 컨텐츠에서의 한 영역은 점진적으로 변하는 컬러를 포함할 가능성이 더 높다. 또한, 스크린 캡처 컨텐츠는, 컨텐츠가 (예를 들면, 스크롤링으로 인해) 공간적으로 변위될 수도 있는 경우에도, 통상적으로, 프레임마다 정확히 반복되는 별개의 구조체(예를 들면, 그래픽, 텍스트 문자)를 포함한다. 스크린 캡처 컨텐츠는, 종종, 높은 크로마 샘플링 해상도를 갖는 포맷(예를 들면, YUV 4:4:4 또는 RGB 4:4:4)으로 인코딩되지만, 스크린 캡처 컨텐츠는 또한 더 낮은 크로마 샘플링 해상도(예를 들면, YUV 4:2:0, YUV 4:2:2)를 갖는 포맷으로 인코딩될 수도 있다.
도 6은 내추럴 비디오 컨텐츠(621) 및 인공적으로 생성된 비디오 컨텐츠를 포함하는 복합 비디오(620)를 도시한다. 인공적으로 생성된 비디오 컨텐츠는, 내추럴 비디오 컨텐츠(621) 옆의 그래픽(622) 및 내추럴 비디오 컨텐츠(621) 아래에서 실행하는 티커(ticker)(623)를 포함한다. 도 5에서 도시되는 스크린 캡처 컨텐츠와 같이, 도 6에서 도시되는 인공적으로 생성된 비디오 컨텐츠는 상대적으로 적은 별개의 샘플 값을 갖는 경향이 있다. 그것은 또한, 프레임 단위로 정확하게 반복되는 또는 (예를 들면, 스크롤링으로 인해) 프레임 단위로 점차적으로 오프셋되는 별개의 구조체(예를 들면, 그래픽, 텍스트 문자)를 갖는 경향이 있다.
VI. 해시 기반 블록 매칭의 예.
본원에서 설명되는 다양한 혁신안에서, 비디오 인코더는, 인코딩 동안 파라미터에 관한 의사 결정을 행할 때, 해시 기반 블록 매칭의 결과를 사용한다. 이 섹션은 해시 기반 블록 매칭의 예를 설명한다.
A. 해시 기반 블록 매칭
인코더가 해시 기반 블록 매칭을 사용할 때, 인코더는 하나 이상의 참조 픽처의 다수의 후보 블록 각각에 대한 해시 값을 결정한다. 해시 테이블은 후보 블록에 대한 해시 값을 저장한다. 인코더는 또한, 동일한 해싱 접근 방식에 의해 현재 블록에 대한 해시 값을 결정하고, 그 다음, 매치하는 해시 값을 찾아 해시 테이블을 검색한다. 두 개의 블록이 동일하면, 그들의 해시 값은 동일하다. 해시 값을 사용하여, 인코더는 현재 블록과 동일한 해시 값을 갖는 후보 블록을 빠르게 그리고 효율적으로 식별할 수 있고, 상이한 해시 값을 갖는 후보 블록을 필터링할 수 있다. 해시 기반 블록 매칭의 구현예 및 목적에 따라, 그 다음, 인코더는 현재 블록과 동일한 해시 값을 갖는 이들 후보 블록을 추가로 평가할 수도 있다. (상이한 블록이 동일한 해시 값을 가질 수 있다. 따라서, 동일한 해시 값을 갖는 후보 블록 중에서, 인코더는 또한, 현재 블록과 매치하는 후보 블록을 식별할 수 있다.
몇몇 예시적인 구현예에서, 후보 블록에 대한 해시 값은, 후보 블록을 포함하는 픽처(참조 픽처)에 대한 입력 샘플 값으로부터 결정된다. 해시 기반 블록 매칭 동안, 인코더는 현재 블록에 대한 해시 값을 입력 샘플 값을 사용하여 결정한다. 인코더는 현재 블록에 대한 해시 값을, 후보 블록에 대한 입력 샘플 값으로부터 결정되는 해시 값에 대해 비교한다(또는 다르게는 그 해시 값을 사용한다). 그렇더라도, 매치하는 블록으로부터의 재구성된 샘플 값이 현재 블록을 표현하기 위해 사용된다. 따라서, 예측 동작은 여전히 재구성된 샘플 값을 사용한다.
대안적으로, 해시 기반 블록 매칭에서 고려되는 후보 블록은 재구성된 샘플 값을 포함한다. 즉, 후보 블록은 픽처에서의 이전에 인코딩된 다음 재구성된 컨텐츠의 일부이다. 후보 블록에 대한 해시 값은 재구성된 샘플 값으로부터 결정된다. 해시 기반 블록 매칭 동안, 인코더는 현재 블록에 대한 해시 값을 입력 샘플 값을 사용하여 결정한다. 인코더는 현재 블록에 대한 해시 값을, 후보 블록에 대한 재구성된 샘플 값으로부터 결정되는 해시 값에 대해 비교한다(또는 다르게는 그 해시 값을 사용한다).
도 7은 해시 기반 블록 매칭에서의 후보 블록 B(x, y)에 대한 해시 값(700)을 예시하는데, 여기서 x 및 y는, 각각, 주어진 후보 블록의 좌상(top-left) 위치에 대한 수평 및 수직 좌표를 나타낸다. 후보 블록은 해시 함수 h()를 사용하여 결정되는 해시 값을 갖는다. 참조 픽처의 후보 블록 B(x, y)에 대해, 인코더는 참조 픽처에 대한 입력 샘플 값으로부터 후보 블록에 대한 해시 값 h(B)를 결정한다. 인코더는 참조 픽처의 모든 후보 블록에 대한 해시 값을 결정할 수 있다. 또는, 인코더는 몇몇 후보 블록을 걸러낼 수 있다.
일반적으로, 해시 함수 h()는, h0 내지 hn-1로 표시되는 n개의 가능한 해시 값을 산출한다. 주어진 해시 값에 대해, 그 해시 값을 갖는 후보 블록은 그룹화된다. 예를 들면, 도 7에서, 후보 블록 B(1266, 263), B(1357, 365), B(1429, 401), B(502, 464), ...은 해시 값 h0을 갖는다. 그룹은 상이한 수의 후보 블록을 포함할 수 있다. 예를 들면, 도 7에서, 해시 값 h4에 대한 그룹은 단일의 후보 블록을 포함하지만, 해시 값 h0에 대한 그룹은 네 개보다 많은 후보 블록을 포함한다.
이렇게 하여, 가능한 후보 블록은 n개의 카테고리로 분산된다. 예를 들면, 해시 함수 h()가 12비트의 해시 값을 생성하는 경우, 후보 블록은 212=4,096 카테고리로 분할된다. 해시 값마다의 후보 블록의 수는, 그 해시 값을 갖는 중복적이고 동일한 블록을 제거하는 것에 의해, 또는 샘플 값의 소정 패턴을 갖는 후보 블록을 걸러내는 것에 의해, 추가적으로 감소될 수 있다. 또한, 인코더는 상이한 해시 함수를 사용하여 후보 블록의 수를 반복적으로 줄여갈 수 있다.
해시 기반 블록 매칭을 위해 사용되는 해시 함수는 구현예에 의존한다. 해시 함수는 8비트, 12비트, 16비트, 24비트, 32비트, 또는 어떤 다른 수의 비트를 갖는 해시 값을 생성할 수 있다. 해시 값이 더 적은 비트를 가지면, 데이터 구조체는 더 적은 카테고리를 포함하지만, 그러나 각각의 카테고리는 더 많은 후보 블록을 포함할 수도 있다. 한편, 더 많은 비트를 갖는 해시 값을 사용하는 것은, 후보 블록을 편제하는 데이터 구조체의 사이즈를 증가시키는 경향이 있다. 해시 값이 더 많은 비트를 가지면, 데이터 구조체는 더 많은 카테고리를 포함하지만, 그러나 각각의 카테고리는 더 적은 후보 블록을 포함할 수도 있다. 해시 함수 h()는 암호화 해시 함수, 암호화 해시 함수의 일부, 순환 중복 검사(cyclic redundancy check; "CRC") 함수, CRC의 일부, 또는 다른 해시 함수(예를 들면, 후보 블록 또는 현재 블록의 시그니처를 결정하기 위해 평균화 및 XOR 연산을 사용함)일 수 있다. 몇몇 타입의 해시 함수(예를 들면, CRC 함수)는 유사한 블록을 상이한 해시 값에 매핑하는데, 이것은 현재 블록과 정확하게 대응하는 매칭 블록을 찾고 있을 때 효율적일 수도 있다. 다른 타입의 해시 함수(예를 들면, 위치 민감 해시 함수(locality-sensitive hash function))는 유사한 블록을 동일한 해시 값에 매핑한다.
해시 기반 블록 매칭 동안, 해시 함수 h()를 통해, 인코더는 현재 블록 Bcurrent에 대한 해시 값을 결정한다. 도 7에서, 해시 함수 h(Bcurrent)는 h3이다. 현재 블록의 해시 함수를 사용하여, 인코더는 동일한 해시 값을 갖는 후보 블록을 식별할 수 있고(도 7에서는 테두리가 그려진 박스에서 도시됨), 다른 후보 블록을 필터링할 수 있다. 해시 함수가 유사한 블록을 상이한 해시 값으로 매핑할 때, 식별된 후보 블록(현재 블록과 동일한 해시 값)은 현재 블록과 동일할 수도 있는 블록을 포함한다. 해시 함수가 유사한 블록을 동일한 해시 값에 매핑할 때, 식별된 후보 블록(현재 블록과 동일한 해시 값)은, 현재 블록과 동일할 수도 있는 또는 현재 블록의 근사치에 가까울 수도 있는 블록을 포함한다. 어느 쪽이든, 이들 식별된 후보 블록으로부터, 인코더는 (예를 들면, 샘플 단위 블록 매칭 동작(sample-wise block matching operation)을 사용하여, 제2 해시 함수를 사용하여) 현재 블록에 대한 매칭 블록을 또한 식별할 수 있다.
종합하면, 해시 값 비교가 샘플 단위 블록 매칭보다 훨씬 더 간단하기 때문에, 해시 기반 블록 매칭은 참조 픽처(들)의 후보 블록을 평가하는 프로세스를 훨씬 더 효율적이게 만들 수 있다. 또한, 후보 블록에 대한 해시 값은 인코딩 동안 픽처 내의 상이한 블록에 대한 해시 기반 블록 매칭에서 재사용될 수 있다. 이 경우, 후보 블록에 대한 해시 값을 계산하기 위한 비용은, 전체 픽처에 대한, 동일한 참조 픽처를 사용하는 다른 픽처에 대한, 그리고 해시 값을 사용하는 다른 인코더측 결정에 대한 해시 기반 블록 매칭 동작 전체에 걸쳐 상환될 수 있다.
B. 해시 기반 블록 매칭을 위한 데이터 구조체.
몇몇 예시적인 구현예에서, 인코더는 후보 블록을 그들의 해시 값에 따라 편제하는 데이터 구조체를 사용한다. 데이터 구조체는 해시 기반 블록 매칭을 더욱 계산 효율적이게 만드는 것을 도울 수 있다. 데이터 구조체는, 예를 들면, 블록 해시 딕셔너리 또는 해시 테이블을 본원에서 설명되는 바와 같이 구현한다.
도 8a는 해시 기반 블록 매칭을 위한 후보 블록을 편제하는 예시적인 데이터 구조체(800)를 예시한다. 해시 함수 h()의 경우, n개의 가능한 해시 값은 h0 내지 hn-1이다. 동일한 해시 값을 갖는 후보 블록은 동일한 후보 블록 리스트에 분류된다. 주어진 후보 블록 리스트는 0개 이상의 엔트리를 포함할 수 있다. 예를 들면, 해시 값 h2에 대한 후보 블록 리스트는 엔트리가 없고, 해시 값 h6에 대한 리스트는 두 개의 엔트리를 가지며, 해시 값 h1에 대한 리스트는 네 개보다 많은 엔트리를 갖는다.
엔트리(hi, k)는 해시 값 hi를 갖는 k번째 후보 블록에 대한 정보를 포함한다. 도 8b에서 도시되는 바와 같이, 후보 블록 리스트의 엔트리는 블록 B(x, y)의 어드레스(예를 들면, 블록의 좌상 위치에 대한 수평 및 수직 좌표)를 포함할 수 있다. 또는, 도 8c에서 도시되는 바와 같이, 후보 블록 리스트의 엔트리는 블록 B(x, y)의 어드레스 및 제2 해시 함수로부터의 해시 값을 포함할 수 있는데, 제2 해시 함수로부터의 해시 값은 반복적 해시 기반 블록 매칭에 대해 사용될 수 있다.
현재 블록에 대한 해시 기반 블록 매칭 동안, 인코더는 현재 블록의 해시 값 h(Bcurrent)를 결정한다. 인코더는 동일한 해시 값을 갖는 후보 블록 리스트를 유지하고 나머지 n-1개의 리스트를 배제한다. 매칭 블록을 선택하기 위해, 인코더는 현재 블록을, 유지된 후보 블록 리스트의 후보 블록과, 만약 있다면, 비교할 수 있다. 따라서, 해시 값 h(Bcurrent)를 사용하는 간단한 룩업 동작에 의해, 인코더는 (평균적으로) 후보 블록 중 (n-1)/n을 제거할 수 있고, (평균적으로) 유지된 리스트의 나머지 1/n 후보 블록에 집중할 수 있어서, 샘플 단위 블록 매칭 동작의 수를 상당히 감소시키게 된다.
상이한 참조 픽처에 대해 상이한 데이터 구조체가 사용될 수 있다. 대안적으로, 데이터 구조체의 후보 블록에 대한 엔트리는, 해시 기반 블록 매칭에서 사용될 수 있는 후보 블록을 포함하는 참조 픽처를 나타내는 정보를 저장한다.
또한, 상이한 사이즈의 블록에 대해 상이한 데이터 구조체가 사용될 수 있다. 예를 들면, 하나의 데이터 구조체는 8×8 후보 블록에 대한 해시 값을 포함하고, 제2 데이터 구조체는 16×16 후보 블록에 대한 해시 값을 포함하고, 제3 데이터 구조체는 32×32 후보 블록에 대한 해시 값을 포함하고, 등등이다. 해시 기반 블록 매칭 동안 사용되는 데이터 구조체는 현재 블록의 사이즈에 의존한다. 대안적으로, 상이한 사이즈의 블록에 대해, 단일의 통합된 데이터 구조가 사용될 수 있다. 해시 함수는 n 비트의 해시 값을 생성할 수 있는데, 여기서 n 비트의 해시 값 중 m 비트는 m 비트 해시 함수에 따른 주어진 블록의 가능한 블록 중의 해시 값을 나타내고, n 비트의 해시 값 중 나머지 n-m 비트는 블록 사이즈를 나타낸다. 예를 들면, 14 비트 해시 함수의 처음 두 비트는 블록 사이즈를 나타낼 수 있고, 한편 나머지 12 비트는 12 비트 해시 함수에 따른 해시 값을 나타낸다. 또한, 해시 함수는, 블록의 사이즈에 무관하게 m 비트 해시 값을 생성하고, 데이터 구조체의 후보 블록에 대한 엔트리는, 해시 기반 블록 매칭에서 사용될 수 있는 후보 블록에 대한 블록 사이즈를 나타내는 정보를 저장한다.
고해상도 픽처의 경우, 데이터 구조체는 아주 많은 수의 후보 블록을 나타내는 정보를 저장할 수 있다. 데이터 구조체에 대해 사용되는 메모리의 양을 감소시키기 위해, 인코더는 중복 값을 제거할 수 있다. 예를 들면, 인코더는 동일한 블록을 데이터 구조체에 추가하는 것을 스킵할 수 있다. 일반적으로, 동일한 블록을 제거하는 것에 의해 데이터 구조체의 사이즈를 감소시키는 것은 코딩 효율성을 손상시킬 수 있다. 따라서, 동일한 블록을 제거할지의 여부를 결정하는 것에 의해, 인코더는 데이터 구조체에 대한 메모리 사이즈와 코딩 효율성을 절충할 수 있다. 인코더는 또한, 블록의 컨텐츠에 따라, 후보 블록을 걸러 낼 수 있다.
C. 반복적 해시 기반 블록 매칭.
인코더가 n개의 가능한 해시 값을 갖는 단일의 해시 함수를 사용할 때, 인코더는 현재 블록의 해시 값에 기초하여 후보 블록의 n-1개의 리스트를 배제할 수 있지만, 그러나 인코더는, 매치하는 해시 값을 갖는 리스트에 대한 나머지 후보 블록(들)에 대해, 만약 있다면, 샘플 단위 블록 매칭 동작을 수행하는 것을 여전히 필요로 할 수도 있다. 후보 블록을 편제하는 데이터 구조체를 업데이트할 때, 인코더는 동일한 블록을 식별하기 위해 샘플 단위 블록 매칭 동작을 수행하는 것을 필요로 할 수도 있다. 총체적으로, 이들 샘플 단위 블록 매칭 동작은 계산 집약적일 수 있다.
따라서, 몇몇 예시적인 구현예에서, 인코더는 반복적 해시 기반 블록 매칭을 사용한다. 반복적 해시 기반 블록 매칭은 블록 매칭 프로세스를 가속시킬 수 있고 또한 후보 블록을 편제하는 데이터 구조체를 업데이트하는 프로세스를 가속시킬 수 있다.
반복적 해시 기반 블록 매칭은 상이한 해시 함수를 통해 결정되는 다수의 해시 값을 사용한다. 블록 B(현재 블록 또는 후보 블록)에 대해, 해시 값 h(B) 외에, 인코더는 상이한 해시 함수 h'()를 사용하여 다른 해시 값 h'(B)을 결정한다. 현재 블록에 대한 제1 해시 값 h(Bcurrent)을 이용하여, 인코더는 제1 해시 함수 h()에 대해 동일한 해시 값을 갖는 후보 블록을 식별한다. 이들 식별된 후보 블록 중 몇몇을 추가로 배제하기 위해, 인코더는 현재 블록에 대한 제2 해시 값 h'(Bcurrent)을 사용하는데, 제2 해시 값 h'(Bcurrent)은 상이한 해시 함수를 사용하여 결정된다. 인코더는, 더 많은 후보 블록을 필터링하기 위해, 제2 해시 값 h'(Bcurrent)를, 이전에 식별된 후보 블록(동일한 제1 해시 값을 가짐)에 대한 제2 해시 값과 비교한다. 해시 테이블은, 상이한 해시 함수에 따라 후보 블록에 대한 해시 값을 추적한다.
도 8a의 예에서, h(Bcurrent)=h3이면, 인코더는 추가적인 개선(refinement)를 위해 엔트리(3, 0), 엔트리(3, 1), 엔트리(3, 2), 엔트리(3, 3),...을 갖는 후보 블록을 선택한다. 도 8c에서 도시되는 바와 같이, 후보 블록 B에 대해, 엔트리는 블록 어드레스 및 해시 함수 h'()로부터의 제2 해시 값 h'(B)를 포함한다. 인코더는 현재 블록에 대한 제2 해시값 h'(Bcurrent)을 엔트리(3, 0), 엔트리(3, 1), 엔트리(3, 2), 엔트리(3, 3),...을 갖는 각각의 후보 블록에 대한 제2 해시 값 h'(B)과 비교한다. 제2 해시 값 비교의 결과에 기초하여, 인코더는 후보 블록 중 더 많은 것을 배제할 수 있고, h(Bcurrent) 및 h'(Bcurrent)와 각각 매칭하는 제1 및 제2 해시 값을 갖는 후보 블록을 남기게 된다. 인코더는 매칭 블록을 선택하기 위해 나머지 후보 블록에 대해 샘플 단위 블록 매칭을 수행할 수 있다.
도 9a 내지 도 9c는 상이한 데이터 구조체를 사용하는 반복적 해시 기반 블록 매칭의 다른 예를 도시한다. 도 9a의 데이터 구조체(900)는 제1 해시 함수 h()로부터의 제1 해시 값에 의해 후보 블록을 편제하는데, 제1 해시 값은 n1개의 가능한 해시 값을 갖는다. 데이터 구조체(900)는 h0 ... hn1-1의 해시 값에 대한 리스트를 포함한다. 그 예에서, 인코더는 현재 블록에 대한 제1 해시 값 h(Bcurrent) = h2를 결정하고, 구조(900)로부터 h2에 대한 리스트를 선택한다.
도 9b에서 도시되는 바와 같이, h2에 대한 리스트(910)는, n2개의 가능한 해시 값을 갖는, 제2 해시 함수 h'()로부터의 제2 해시 값에 의해 나머지 후보 블록을 추가로 편제하는 다수의 리스트를 포함한다. 리스트(910)는 h'0 ... h'n2-1의 해시 값에 대한 리스트를 포함하는데, 각각의 리스트는, 도 9c의 엔트리(920)에 대해 도시되는 바와 같이, 블록 어드레스(예를 들면, 각각의 후보 블록의 좌상 위치에 대한 수평 및 수직 좌표)를 갖는 엔트리를 포함한다. 그 예에서, 인코더는 현재 블록에 대한 제2 해시 값 h'(Bcurrent) = h'0을 결정하고, 리스트(910)로부터 h'0에 대한 리스트를 선택한다. h'0에 대한 리스트의 후보 블록에 대해, 인코더는 매칭 블록을 선택하기 위해 샘플 단위 블록 매칭을 수행할 수 있다. 이 예에서, 제2 해시 값에 대한 리스트는 제1 해시 값에 대한 주어진 리스트에 고유하다. 대안적으로, 제2 해시 값에 대한 리스트의 하나의 세트가 존재하고, 인코더는, (1) 해시 값에 대한 매치하는 리스트에 있는 그리고 또한 (2) 제2 해시 값에 대한 매치하는 리스트에 있는 임의의 후보 블록을 식별한다.
해시 기반 블록 매칭 외에, 제2 해시 함수 h'() 는, 후보 블록을 편제하는 데이터 구조체를 업데이트하는 프로세스를 단순화하기 위해 사용될 수 있다. 예를 들면, 신규의 후보 블록이 데이터 구조체에서 이미 표현된 후보 블록과 동일한지의 여부를 인코더가 체크할 때, 인코더는 동일하지 않은 블록을 필터링하기 위해 상이한 해시 함수를 갖는 다수의 해시 값을 사용할 수 있다. 나머지 후보 블록에 대해, 인코더는 임의의 동일한 블록을 식별하기 위해 샘플 단위 블록 매칭을 수행할 수 있다.
앞선 예에서, 반복적 해시 기반 블록 매칭 및 업데이팅은 두 개의 상이한 해시 함수를 사용한다. 대안적으로, 인코더는, 해시 기반 블록 매칭을 더 가속시키기 위해 또는 동일하지 않은 블록을 필터링하고, 그에 의해 샘플 단위 블록 매칭 동작의 수를 감소시키기 위해, 세 개, 네 개 또는 더 많은 해시 함수를 사용한다. 또한, 낮은 복잡도(low-complexity)의 인코더를 위해 또는 더 빠른 의사 결정 프로세스를 위해, 인코더는, 해시 값이 매치할 때, 샘플 단위 블록 매칭 동작을 스킵할 수 있다. 많은 수의 가능한 해시 값을 갖는 해시 함수의 경우, 두 블록에 대한 해시 값이 매치하면 두 블록이 동일할 높은 확률이 존재한다. 특히, 하기에 설명되는 인코더측 결정의 몇몇 예시적인 구현예에서, 인코더는, 해시 기반 블록 매칭의 결과로서, 해시 값이 매치하는지의 여부를 고려하지만, 그러나 어떠한 샘플 단위 블록 매칭 동작도 수행하지 않는다.
VII. 해시 테이블 사이즈 관리
이 섹션은, 해시 기반 블록 매칭에서 사용되는 해시 테이블의 사이즈를 관리하는 다양한 접근 방식을 제공한다. 몇몇 솔루션에서, 해시 테이블의 사이즈는, 샘플 값의 소정 패턴을 갖는 후보 블록을 걸러내는(제외시키는) 것에 의해(예를 들면, 동질성 블록을 걸러내는 것에 의해) 감소된다. 특정한 구현예에서, (예를 들면, 참조 픽처의) 다수의 후보 블록 각각에 대해, 인코더는 후보 블록이 복잡도 기준(complexity criterion)을 충족하는지의 여부를 평가한다. 만약 그렇다면, 인코더는 후보 블록에 대한 블록 해시 값을 결정하고 블록 해시 값을 해시 테이블에 추가한다. 블록 해시 값은 원래의 샘플 값 또는 재구성된 샘플 값을 사용하여 계산될 수 있다. 후보 블록이 복잡도 기준을 충족하지 않으면, 인코더는 후보 블록에 대한 블록 해시 값을 결정하지 않는다. 예를 들면, 복잡도 기준은, (a) 주어진 후보 블록의 적어도 하나의 행(row)이 균일하지 않은 샘플 값을 가지면, 및/또는 (b) 주어진 후보 블록의 적어도 하나의 열(column)이 균일하지 않은 샘플 값을 가지면, 주어진 후보 블록에 대해 충족될 수 있다. 이 기준을 가지고, 인코더는 균일한 블록(동질성 블록), 균일한 샘플 값의 행을 갖는 블록(수평으로 동질성 블록) 및 균일한 샘플 값의 열을 갖는 블록(수직으로 동질성 블록)을 걸러낼 수 있다. 더 일반적으로는, 주어진 후보 블록이 복잡도 기준을 충족하는지의 여부를 평가할 때, 인코더는 후보 블록에 대한 복잡도 메트릭을 계산할 수 있고 복잡도 메트릭을 임계치에 비교할 수 있다.
도 10a 내지 도 10c는, 후보 블록에 대한 블록 해시 값이 해시 테이블에 추가되기 이전에 해시 테이블 구성 동안 인코더가 걸러낼 수 있는 후보 블록의 패턴을 도시한다. 도 10a는 균일한 샘플 값을 갖는 블록(1000)을 도시한다. 도 10b는, 각각의 행이 균일한 샘플 값을 갖는 블록(1010)(수평으로 동질성 블록)을 도시하지만, 값은 행 단위로 상이할 수 있다. 도 10c는, 각각의 열이 균일한 샘플 값을 갖는 블록(1020)(수직으로 동질성 블록)을 도시하지만, 값은 열 단위로 상이할 수 있다. 예를 들면, 후보 블록의 이들 패턴을 식별하기 위해, 인코더는, 후보 블록 각각의 행 또는 각각의 열이 균일한 샘플 값을 갖는지를 체크한다.
그러나, 동질성 블록(예를 들면, 모두 동질성 블록)을 해시 테이블 내의 후보로서 배제하는 것은, 소정의 상황에서 해시 기반 매칭의 이점에 부정적인 영향을 끼칠 수 있다. 예를 들면, 몇몇 인코딩 알고리즘은, (예를 들면, 일단 해시 매치가 발견되면 매칭 프로세스를 종료하는 것에 의해) 정확한 매치가 발견될 때 더욱 효율적으로 동작한다. 또한, 동질성 블록을 후보로서 배제하는 것은, 정확한 매치의 가능성을 감소시킬 수 있다. 따라서, 인코딩 효율성에서의 향상은, 적어도 몇몇 동질성 블록을 해시 테이블에서 유지하는 것에 의해 실현될 수 있다.
이 섹션에서 제공되는 접근 방식에서, 해시 테이블 사이즈는, 다른 동질성 블록이 여전히 배제되지만 몇몇 동질성 블록이 해시 테이블에 포함되도록 관리된다(예를 들면, 이것은 해시 매치 및/또는 정확한 매치를 발견할 기회를 향상시킬 수 있고, 결과적으로 인코딩 효율성을 향상시킬 수 있다). 예를 들면, 단지 몇몇의 동질성 블록만을(예를 들면, 주어진 픽처에서의 동질성 블록의 상대적으로 작은 부분만을) 포함시키는 것은, 더 작은 해시 테이블의 이점을 또한 유지하면서, 향상된 인코딩 효율성의 이점을 여전히 제공할 수 있다.
몇몇 구현예에서, 동질성 선택 기준을 충족하는 동질성 블록만이 해시 테이블에 포함된다. 동질성 선택 기준은, 주어진 동질성 블록의 좌표가 픽처의 특정한 구획(division)과 정렬되는지의 여부를 체크하는 것을 포함할 수 있다. 예를 들면, 참조 픽처가 특정한 수평 및 수직 간격을 갖는 그리드(예를 들면, 16×16 픽셀 그리드, 16×8 픽셀 그리드, 등등)로 분할될 수 있다. 동질성 블록이 그리드로 정렬되면(예를 들면, 블록의 시작 픽셀 좌표가 수평으로 및/또는 수직으로 정렬되면), 그것은 기준에 매치하는 것으로 선택될 수 있다. 다른 방식으로 말하면, 좌표 (x, y)로부터 시작하는 폭 및 높이(W×H)의 치수를 갖는 블록을 고려한다. 동질성 선택 기준은 다음으로 정의될 수 있는데:
Figure 112022010063402-pat00001
여기서 M 및 N은 미리 정의된 수(예를 들면, 동일한 수 또는 상이한 수)이다. 선택 기준을 표현하는 다른 방식은 다음인데:
Figure 112022010063402-pat00002
여기서 M과 N 둘 다는 2의 멱승이다. 몇몇 구현예에서, M 및 N 둘 다는 16이다. 예를 들면, 동질성 블록이 좌표 32, 32에 있으면, 그것은, (0, 0 및 32, 0 및 64, 0 및 0, 32 및 0, 64 및 등등에 있는 블록인 것과 같이) M=16 및 N=16의 값을 사용할 때 선택될 것이고, 한편 좌표 35, 32에 있는 동질성 블록은 선택되지 않을 것이다. 몇몇 구현예에서, M은 블록의 폭(W)으로 설정되고 N은 블록의 높이(H)로 설정된다.
도 11은 해시 테이블 구성 동안 특정한 동질성 블록을 선택하기 위한 기술(1100)이다. 도 3 또는 도 4a 및 도 4b를 참조로 설명된 바와 같은 이미지 인코더 또는 비디오 인코더가 기술(1100)을 수행할 수 있다.
인코더는 다음 번 후보 블록을 얻고(1110) 후보 블록이 복잡도 기준을 충족하는지의 여부를 평가한다(1120). 예를 들면, 몇몇 예시적인 구현예에서, 복잡도 기준은, (a) 주어진 후보 블록의 적어도 하나의 행이 균일하지 않은 샘플 값을 가지면 및/또는 (b) 주어진 후보 블록의 적어도 하나의 열이 균일하지 않은 샘플 값을 가지면 충족되고, 복잡도 기준은, (a) 블록이 균일한 샘플 값의 행을 가지면(수평으로 동질성 블록) 및/또는 블록이 균일한 샘플 값의 열을 가지면(수직으로 동질성 블록) 충족되지 않는다. 또한, 더 일반적으로는, 인코더는 후보 블록에 대한 복잡도 메트릭을 계산할 수 있고, 그 다음 복잡도 메트릭을 임계치에 비교한다. 예를 들면, 복잡도 메트릭은, 주파수 변환(예를 들면, DCT) 이후의 후보 블록에 대한 넌제로의 수평 위치 및/또는 넌제로의 수직 위치에서의 넌제로의 AC 계수의 카운트이고, 임계치는 제로이다. 복잡성 기준은, 후보 블록에 대한 AC 계수의 최상부 행(top row) 및 AC 계수의 좌측 열 밖에 임의의 넌제로 AC 계수가 존재하면 충족된다. 대안적으로, 인코더는 다른 복잡도 메트릭을 고려한다. 복잡도 기준은, 적어도 부분적으로, 후보 블록의 섹션(예를 들면, 행, 열, 서브블록)의 해시 값을 비교하는 것에 의해, 평가될 수 있다.
후보 블록이 복잡도 기준을 충족하면, 인코더는, 후보 블록에 대한 블록 해시 값을 결정하고(1130) 블록 해시 값을 해시 테이블에 추가한다(1140). 블록 해시 값은 임의의 해싱 접근 방식을 사용하여 결정될 수 있다.
후보 블록이 (예를 들면, 후보 블록이 수평으로 동질성이고 및/또는 수직으로 동질성라는 것의) 복잡도 기준을 충족하지 않으면, 후보 블록은, 후보 블록이 동질성 선택 기준을 충족하는지를 결정하도록(1160) 체크된다. 후보 블록이 동질성 선택 기준을 충족하면, 인코더는, 후보 블록에 대한 블록 해시 값을 결정하고(1130) 블록 해시 값을 해시 테이블에 추가한다(1140). 블록 해시 값은 임의의 해싱 접근 방식을 사용하여 결정될 수 있다. 그렇지 않다면(후보 블록이 동질성 선택 기준을 충족하지 않으면), 후보 블록에 대한 어떠한 블록 해시 값도 해시 테이블에 추가되지 않는다.
몇몇 구현예에서, 후보 블록은, 후보 블록의 x 및 y 좌표(예를 들면, 좌상(upper-left) 픽셀 좌표) 중 적어도 하나가 미리 결정된 값에 의해 균등하게 나누어질 수 있들 때, 동질성 선택 기준을 충족한다. 예를 들면, 미리 결정된 값이 16이면, 0, 16, 32, 48, 등등의 x 좌표 값이 조건을 충족할 것이다. 미리 결정된 값은 x 및 y 좌표에 대해 상이할 수 있다. 몇몇 구현예에서, x 좌표에 대한 미리 결정된 값은 후보 블록의 폭으로 설정되고 y 좌표에 대한 미리 결정된 값은 후보 블록의 높이로 설정된다.
인코더는, 다음 번 후보 블록으로 계속할지의 여부를 결정한다(1150). 만약 그렇다면, 인코더는, 계속해서, 다음 번 후보 블록을 얻고(1110) 다음 번 후보 블록이 복잡도 기준을 충족하는지의 여부를 평가한다(1120). 이 방식에서, 인코더는, 각각의 후보 블록이 복잡도 기준 및 동질성 선택 기준을 충족하는지의 여부에 따라, 다수의 후보 블록에 대한(예를 들면, 참조 픽처와 같은 픽처의 후보 블록에 대한) 블록 해시 값을 선택적으로 결정할 수 있다.
VIII. MV 해상도의 결정.
이 섹션은, 해시 기반 블록 매칭의 결과(예를 들면, 매치하는 해시 값)에 따라, 인코딩 동안 모션 벡터("MV") 해상도의 적응적 결정을 위한 다양한 접근 방식을 제공한다. 인코딩 동안 MV 해상도에 대한 적절한 MV 정밀도를 선택하는 것에 의해, 이들 접근 방식은, 인코딩 및 디코딩의 레이트 왜곡 성능 및/또는 계산 효율성의 관점에서, 효과적인 압축을 가능하게 할 수 있다. MV 정밀도는, 픽처, 블록, 슬라이스, 등등에 대해 결정될 수 있다.
A. 상이한 MV 정밀도.
인공적으로 생성된 비디오 컨텐츠를 인코딩할 때, MV 값은, 일반적으로는, 정수 샘플 공간적 변위(정수 MV 정밀도)를 나타내고, 아주 적은 MV 값이 분수의 샘플 공간적 변위(분수의 MV 정밀도)를 나타낸다. 이것은, 전체 성능을 향상시킬 (예를 들면, 한 번에 전체 픽처에 대한, 또는 픽처의 일부에 대한) MV 정밀도를 효율적으로 결정하기 위한 기회를 제공한다.
도 12a는 정수 샘플 공간적 변위를 갖는 MV(1220)를 통한 모션 보상을 도시한다. MV(1220)는, 현재 블록에 대한 참조 픽처 내의 병치된 위치(1210)에 대한, 왼쪽으로 네 개의 샘플, 그리고 위쪽으로 하나의 샘플의 공간적 변위를 나타낸다. 예를 들면, 4현재 픽처의 위치 (64, 96)에 있는 4×4 현재 블록의 경우, MV(1220)는, 그 위치가 참조 픽처의 (60, 95)에 있는 4×4 예측 영역(1230)을 나타낸다. 예측 영역(1230)은 참조 픽처의 정수 샘플 위치에서 재구성된 샘플 값을 포함한다. 인코더 또는 디코더는 예측 영역(1230)의 값을 결정하기 위해 보간(interpolation)을 수행할 필요가 없다.
도 12b는 분수의 샘플 공간적 변위를 갖는 MV(1221)를 통한 모션 보상을 도시한다. MV(1221)는, 현재 블록에 대한 참조 픽처 내의 병치된 위치(1210)에 대한, 왼쪽으로 3.75개의 샘플, 그리고 위쪽으로 0.5개의 샘플의 공간적 변위를 나타낸다. 예를 들면, 현재 픽처의 위치 (64, 96)에 있는 4×4 현재 블록의 경우, MV(1221)는, 그 위치가 참조 픽처의 (60.25, 95.5)에 있는 4×4 예측 영역(1231)을 나타낸다. 예측 영역(1231)은 참조 픽처의 분수의 샘플 위치에서 보간된 샘플 값을 포함한다. 인코더 또는 디코더는 예측 영역(1231)의 샘플 값을 결정하기 위해 보간을 수행한다. 분수의 샘플 공간적 변위가 허용될 때, 현재 블록과 매치할 수도 있는 더 많은 후보 예측 영역이 존재하고, 따라서 모션 보상된 예측의 품질은, 몇몇 타입의 비디오 컨텐츠(예를 들면, 내추럴 비디오 컨텐츠(natural video content))에 대해 적어도, 일반적으로 향상한다.
B. MV 값의 표현.
MV 값은, 그 의미가 MV 정밀도에 의존하는 정수 값을 사용하여 통상적으로 표현된다. 정수 샘플 MV 정밀도의 경우, 예를 들면, 1의 정수 값은 1개의 샘플의 공간적 변위를 나타내고, 2의 정수 값은 2개의 샘플의 공간적 변위를 나타내고, 및 등등이다. 1/4 샘플 MV 정밀도의 경우, 예를 들면, 1의 정수 값은 0.25 샘플의 공간적 변위를 나타낸다. 2, 3, 4 및 5의 정수 값은, 각각, 0.5, 0.75, 1.0 및 1.25개의 샘플의 공간적 변위를 나타낸다. MV 정밀도와 무관하게, 정수 값은 공간적 변위의 크기를 나타낼 수 있고, 별개의 플래그 값이, 변위가 음인지 또는 양인지의 여부를 나타낼 수 있다. 주어진 MV 값의 수평의 MV 성분 및 수직의 MV 성분은 두 개의 정수 값을 사용하여 표현될 수 있다. 따라서, MV 값을 나타내는 두 개의 정수 값의 의미는, MV 정밀도에 의존한다. 예를 들면, 2샘플의 수평 변위를 가지며 수직 변위가 없는 MV 값의 경우, MV 정밀도가 1/4 샘플의 1/4 샘플 MV 정밀도이면, MV 값은 (8, 0)으로 표현된다. 그러나, MV 정밀도가 정수 샘플 MV 정밀도이면, MV 값은 (2, 0)으로 표현된다.
인코딩된 비디오 데이터의 비트스트림의 MV 값은, 통상적으로 (예를 들면, MV 성분 단위 기반으로) 엔트로피 코딩된다. MV 값은 또한, 예측된 MV 값에 대해 (예를 들면, MV 성분 단위 기반으로) 차동적으로 인코딩될 수도 있다. 많은 경우에서, MV 값은 예측된 MV 값과 동일하고, 따라서 차동 MV 값은 제로인데, 차동 MV 값이 제로인 것은 아주 효율적으로 인코딩될 수 있다. 차동 MV 값(또는 MV 예측이 사용되지 않는 경우 MV 값)은, 지수 골룸 코딩, 콘텍스트 적응 이진 산술 코딩 또는 다른 형태의 엔트로피 코딩을 사용하여 엔트로피 인코딩될 수 있다. 비록 MV 값(또는 차동 MV 값)과 인코딩된 비트 사이의 정확한 관계가, 사용되는 엔트로피 코딩의 형태에 의존할지라도, 일반적으로는, 더 작은 값이, 이들이 더 일반적이기 때문에, 더 효율적으로 인코딩되고(즉, 더 적은 비트를 사용하고), 더 큰 값은, 이들이 덜 일반적이기 때문에, 덜 효율적으로 인코딩된다(즉, 더 많은 비트를 사용한다).
C. 적응적 MV 정밀도 -- 서론
선행하는 두 섹션을 요약하면, 정수 샘플 MV 정밀도를 갖는 MV를 사용하는 것은, (참조 픽처의 분수의 샘플 위치에서 샘플 값의 보간을 방지하는 것에 의해) MV 값을 시그널링하는 것과 관련되는 비트 레이트를 감소시키고 인코딩 및 디코딩의 계산 복잡도를 감소시키는 경향이 있지만, 그러나 몇몇 타입의 비디오 컨텐츠에 대해서는 적어도, 모션 보상된 예측의 품질을 감소시킬 수도 있다. 한편, 분수의 샘플 MV 정밀도를 갖는 MV 값을 사용하는 것은, (참조 픽처의 분수의 샘플 위치에서 샘플 값의 보간을 포함하는 것에 의해), MV 값을 시그널링하는 것과 관련되는 비트 레이트를 증가시키고 인코딩 및 디코딩의 계산 복잡도를 증가시키는 경향이 있지만, 그러나 몇몇 타입의 비디오 컨텐츠에 대해서는 적어도, 모션 보상된 예측의 품질을 향상시킬 수도 있다. 일반적으로, 계산적 복잡도, MV 값을 시그널링하기 위한 비트 레이트, 및 모션 보상된 예측의 품질은, MV 정밀도가 (예를 들면, 정수 샘플로부터 1/2 샘플로, 또는 1/2 샘플로부터 1/4 샘플로) 증가함에 따라, 수확 체감 지점(a point of diminishing returns)까지 증가한다.
인공적으로 생성된 비디오 컨텐츠를 인코딩할 때, (비트 레이트 및 계산적 복잡도의 관점에서의) 분수의 샘플 MV 정밀도의 추가된 비용은 정당화되지 않을 수도 있다. 예를 들면, 대부분의 MV 값이 정수 샘플 공간적 변위를 나타내고, 아주 적은 몇몇 MV 값이 분수의 샘플 공간적 변위를 나타내면, 분수의 샘플 MV 정밀도의 추가적 변위는 보장되지 않는다. 인코더는 모션 추정 동안 분수의 샘플 위치에서의 검색(및 이들 위치에서 샘플 값을 결정하기 위한 보간 동작)을 스킵할 수 있다. 이러한 컨텐츠의 경우, 비트 레이트 및 계산적 복잡도는, 정수 샘플 MV 정밀도를 갖는 MV 값을 사용하는 것에 의해, 모션 보상된 예측의 품질에 대한 유의미한 불이익 없이, 감소될 수 있다.
다른 타입의 비디오 컨텐츠(예를 들면, 카메라에 의해 캡처되는 내추럴 비디오)에 대해 분수의 샘플 MV 정밀도가 여전히 유용할 수도 있기 때문에, 인코더 및 디코더는 MV 정밀도 사이를 전환하도록 적응될 수 있다. 예를 들면, 인코더 및 디코더는 인공적으로 생성된 비디오 컨텐츠에 대해 정수 샘플 MV 정밀도를 사용할 수 있지만, 그러나 내추럴 비디오 컨텐츠에 대해 분수의 샘플 MV 정밀도(예컨대 1/4 샘플 MV 정밀도)를 사용할 수 있다. MV 정밀도를 선택할 때, 인코더가 따를 수도 있는 접근 방식은 다음 섹션에서 설명된다. 인코더는 선택된 MV 정밀도를, 비트스트림의 하나 이상의 신택스 엘리먼트를 사용하여 디코더로 시그널링할 수 있다.
MV 정밀도를 시그널링하는 하나의 접근 방식에서, MV 정밀도의 적응적 선택이 인에이블될 때, 인코더는 MV 정밀도를 슬라이스 단위 기반으로 선택한다. 시퀀스 파라미터 세트("SPS"), 픽처파라미터 세트("PPS") 또는 다른 신택스 구조체의 플래그 값이, MV 정밀도의 적응적 선택이 인에이블되는지의 여부를 나타낸다. 만약 그렇다면, 주어진 슬라이스에 대한 슬라이스 헤더의 하나 이상의 신택스 엘리먼트는, 그 슬라이스의 블록에 대한 선택된 MV 정밀도를 나타낸다. 예를 들면, 0의 플래그 값은 1/4 샘플 MV 정밀도를 나타내고, 1의 플래그 값은 정수 샘플 MV 정밀도를 나타낸다.
MV 정밀도를 시그널링하는 다른 접근 방식에서, 인코더는 MV 정밀도를 픽처단위 기반으로 또는 슬라이스 단위 기반으로 선택한다. PPS의 신택스 엘리먼트는, 세 개의 MV 정밀도 모드 중 하나를 나타낸다: (0) PPS와 관련되는 픽처의 슬라이스(들)의 MV 값에 대한 1/4 샘플 MV 정밀도, (1) PPS와 관련되는 픽처의 슬라이스(들)의 MV 값에 대한 정수 샘플 MV 정밀도 또는 (2) 슬라이스 헤더마다 시그널링되는 플래그 값에 의존하는 슬라이스 적응 MV 정밀도, 여기서 슬라이스 헤더의 플래그 값은 슬라이스의 MV 값에 대한 1/4 샘플 MV 정밀도 또는 정수 샘플 MV 정밀도를 나타낼 수 있다.
MV 정밀도를 시그널링하는 여전히 다른 접근 방식에서, MV 정밀도의 적응적 선택이 인에이블될 때, 인코더는 MV 정밀도를 CU 단위 기반으로 선택한다. 주어진 CU에 대한 구조체의 하나 이상의 신택스 엘리먼트는, 그 CU의 블록에 대한 선택된 MV 정밀도를 나타낸다. 예를 들면, CU에 대한 CU 신택스 구조체의 플래그 값은, CU와 관련되는 모든 PU에 대한 MV 값이 정수 샘플 MV 정밀도를 갖는지 또는 1/4 샘플 MV 정밀도를 갖는지의 여부를 나타낸다.
이들 접근 방식 중 임의의 것에서, 인코더 및 디코더는, 수평 및 수직 MV 성분에 대해 상이한 MV 정밀도를 사용할 수 있다. 이것은, (예를 들면, 스케일링되지 않은 치수에서 정수 샘플 MV 정밀도를 사용하고, 스케일링된 치수에서 분수의 샘플 MV 정밀도를 사용하여) 수평으로 또는 수직으로 스케일링된 인공적으로 생성된 비디오 컨텐츠를 인코딩할 때 유용할 수 있다. 몇몇 예시적인 구현예에서, QP 값의 조정을 통해서만 레이트 제어가 달성될 수 없으면, 인코더는 비트 레이트를 감소시키기 위해 비디오를 수평으로 또는 수직으로 리사이징할 수도 있고, 그 다음 리사이징된 비디오를 인코딩할 수도 있다. 디코더측에서, 비디오는, 디코딩 이후, 자신의 원래의 치수로 다시 스케일링된다. 인코더는, 디코더로, 수평 MV 성분에 대한 MV 정밀도를 시그널링할 수 있고 또한 수직 MV 성분에 대한 MV 정밀도를 시그널링할 수 있다.
더 일반적으로는, MV 정밀도의 적응적 선택이 인에이블될 때, 인코더는 MV 정밀도를 선택하고 그 선택된 MV 정밀도를 몇몇 방식으로 시그널링한다. 예를 들면, SPS, PPS 또는 다른 신택스 구조체의 플래그 값은, MV 정밀도의 적응적 선택이 인에이블되는지의 여부를 나타낼 수 있다. 적응적 MV 정밀도가 인에이블될 때, 시퀀스 레이어 신택스, GOP 레이어 신택스, 픽처레이어 신택스, 슬라이스 레이어 신택스, 타일 레이어 신택스, 블록 레이어 신택스 또는 다른 신택스 구조체의 하나 이상의 신택스 엘리먼트는, MV 값의 수평 및 수직 성분에 대한 선택된 MV 정밀도를 나타낼 수 있다. 또는, 시퀀스 레이어 신택스, GOP 레이어 신택스, 픽처레이어 신택스, 슬라이스 데이터 레이어 신택스, 타일 레이어 신택스, 블록 레이어 신택스 또는 다른 신택스 구조체의 하나 이상의 신택스 엘리먼트는 상이한 MV 성분에 대한 MV 정밀도를 나타낼 수 있다. 두 개의 이용가능한 MV 정밀도가 존재할 때, 플래그 값은 두 개의 MV 정밀도 사이의 선택을 나타낼 수 있다. 여기서 더 많은 이용가능한 MV 정밀도가 존재하는 경우, 정수 값은 이들 MV 정밀도 사이의 선택일 수 있다.
선택된 MV 정밀도(들)를 나타내는 신택스 엘리먼트를 시그널링/파싱하기 위한 수정과는 별도로, 디코딩은, 시그널링된 MV 값이 선택된 MV 정밀도에 따라 해석되는 방법을 변경하도록 수정될 수 있다. MV 값이 인코딩되고 재구성되는 방법의 상세는 MV 정밀도에 따라 변할 수 있다. 예를 들면, MV 정밀도가 정수 샘플 정밀도일 때, 예측된 MV 값은 가장 가까운 정수로 반올림 처리될 수 있고, 차동 MV 값은 정수 샘플 오프셋을 나타낼 수 있다. 또는, MV 정밀도가 1/4 샘플 정밀도일 때, 예측된 MV 값은 가장 가까운 1/4 샘플 오프셋으로 반올림 처리될 수 있고, 차동 MV 값은 1/4 샘플 오프셋을 나타낼 수 있다. 또는, MV 값은 몇몇 다른 방식으로 시그널링될 수 있다. MV 값이 정수 샘플 MV 정밀도를 가지며 비디오가 4:2:2 또는 4:2:0 크로마 샘플링을 사용할 때, 크로마 MV 값은 스케일링 등등에 의해 유도될 수 있는데, 크로마 MV 값은 크로마에 대한 1/2 샘플 변위로 나타날 수도 있다. 또는, 크로마 MV 값은 정수 값으로 반올림 처리될 수 있다.
대안적으로, 인코더는, MV 값이 예측되는 방법 또는 MV 차이가 비트스트림으로 시그널링되는 방법을 변경하지 않으며, 또한 디코더도 MV 값이 예측되는 방법 또는 MV 차이가 재구성되는 방법을 변경하지 않지만, 재구성된 MV 값의 해석은 선택된 MV 정밀도에 따라 변한다. 선택된 MV 정밀도가 정수 샘플 정밀도이면, 재구성된 MV 값은, 모션 보상 프로세스(이것은 1/4 샘플 정밀도에서 동작한다)에서 사용되기 이전에, 4배만큼 스케일링된다. 선택된 MV 정밀도가 1/4 샘플 정밀도이면, 재구성된 MV 값은, 모션 보상 프로세스에서 사용되기 이전에 스케일링되지 않는다.
D. 카테고리를 사용한 MV 해상도 결정.
MV 해상도가 비디오 인코딩 동안 적응될 수 있을 때, 인코더는 비디오의 유닛에 대한 MV 정밀도(예를 들면, 그 유닛에 대한 MV 값의 하나의 또는 둘 다의 성분에 대한 MV 정밀도)를 선택한다. 인코더는, 블록을 복수의 카테고리로 분류하는 결과에 따라, 사용할 MV 정밀도를 선택할 수 있는데, 복수의 카테고리는 분류 동작 중 하나 이상에서 해시 기반 블록 매칭(예를 들면, 매치하는 해시 값)을 포함할 수 있다. MV 정밀도의 선택은 또한, 다른 요인, 예컨대 균일한 블록(예를 들면, 수평으로 및/또는 수직으로 동질성 블록)으로서의 블록의 분류에 의존할 수 있다. 이들 접근 방식은, 적절한 MV 정밀도를 선택하는 계산 효율적인 방식을 제공할 수 있다.
1. MV 정밀도를 선택하기 위한 예시적인 기술.
도 13은 결과 블록 분류에 따라 MV 정밀도를 선택하기 위한 일반화된 기술(1300)을 도시한다. 기술(1300)은, 도 3 또는 도 4a 및 도 4b를 참조로 설명되는 것과 같은 인코더에 의해, 또는 다른 인코더에 의해 수행될 수 있다.
인코더는 비디오를 인코딩하여 인코딩된 데이터를 생성하고, 그 다음 인코딩된 데이터를 비트스트림으로 출력한다. 인코딩의 일부로서, 인코더는 비디오의 유닛을 다수의 블록으로 분할한다(1310)(예를 들면, 픽처, 슬라이스, 또는 비디오의 다른 유닛을 분할한다). 그 다음, 블록 각각에 대해, 인코더는 블록을 복수의 카테고리 중 하나로 분류한다(1320). 카테고리는, 동질성 분류 기준을 사용하는 동질성 카테고리 및/또는 해시 기반 매칭 분류 기준을 사용하는 해시 매치 카테고리를 포함할 수 있다. 분류(예를 들면, 복수의 카테고리 중 하나 이상의 카테고리에서의 블록의 카운트)에 기초하여, 인코더는 비디오의 유닛에 대한 MV 정밀도를 결정한다(1330). 예를 들면, 인코더는, 정수 MV 정밀도를 사용할지 또는 분수의 MV 정밀도(예를 들면, 1/4 샘플 MV 정밀도)를 사용할지의 여부를 결정할 수 있다.
도 14는 MV 정밀도를 선택할 때 사용되는 블록 분류를 수행하기 위한 기술(1400)을 도시한다. 기술(1400)은, 도 3 또는 도 4a 및 도 4b를 참조로 설명되는 것과 같은 인코더에 의해, 또는 다른 인코더에 의해 수행될 수 있다. 기술(1400)은 도 13에 관하여 상기에서 논의되는 블록 분류(1320)를 구현하기 위해 사용될 수 있다.
블록을 분류하기 위해, 기술(1400)은 먼저 블록을 전블록 카테고리(all-blocks category)에 할당한다(1410). 블록을 전블록 카테고리에 할당하는 것은, 전블록 카테고리와 관련되는 블록 카운트를 1만큼 증가시키는 것에 의해 수행될 수 있다.
기술(1400)은, 다음으로, 블록이 참조 픽처 내의 병치된 블록과 매치하는지(1420)(예를 들면, 블록에 의해 사용되는 하나 이상의 참조 픽처중 적어도 하나의 블록과 매치하는지)를 결정하고, 만약 그렇다면, 블록을 병치된 매치 카테고리에 할당한다(1430). 블록을 병치된 매치 카테고리에 할당하는 것은, 병치된 매치 카테고리와 관련되는 블록 카운트를 1만큼 증가시키는 것에 의해 수행될 수 있다.
블록이 참조 픽처 내의 병치된 블록과 매치하지 않으면, 기술(1400)은, 계속해서, 블록이 동질성 블록인지(예를 들면, 블록이 수평으로 동질성이고 및/또는 수직으로 동질성이면 충족될 수 있는 동질성 분류 기준을 블록이 충족하는지)를 체크하고(1440), 만약 그렇다면, 블록을 동질성 카테고리에 할당한다(1450). 블록을 동질성 카테고리에 할당하는 것은, 동질성 카테고리와 관련되는 블록 카운트를 1만큼 증가시키는 것에 의해 수행될 수 있다.
블록이 동질성 블록이 아니면, 기술(1400)은, 계속해서, 블록이 해시 기반 매칭 분류 기준을 충족하는지(예를 들면, 블록에 대한 해시 값이, 하나 이상의 참조 픽처의 후보 블록으로부터 생성되는 해시 테이블에서 발견되는지)를 체크하고(1460), 만약 그렇다면, 블록을 해시 매치 카테고리에 할당한다(1470). 블록을 해시 매치 카테고리에 할당하는 것은, 해시 매치 카테고리와 관련되는 블록 카운트를 1만큼 증가시키는 것에 의해 수행될 수 있다.
일단 블록이 분류되었다면, 기술(1400)은 (예를 들면, 비디오의 유닛의 모든 블록을 분류하기 위해), 계속해서, 만약 임의의 것이 남아 있다면 다음 블록을 분류한다(1480).
기술(1400)은, 블록이 카테고리에 할당될 때 각각의 카테고리와 관련되는 카운터를 증가시키는 것에 의해, 비디오 유닛의 다수의 블록을 복수의 카테고리로 분류하도록 수행될 수 있다.
몇몇 구현예에서, 현재 픽처의 블록이 분류된다. 현재 픽처는 중첩되지 않는 폭(W) 및 높이(H)의 블록으로 분할될 수 있다. 하나의 구현예에서, W=H=8이다. 인코더는, 현재 픽처의 모든 블록에 대해 해시 기반 블록 매칭을 수행할 수 있다. 검색 영역은 현재 픽처에 대한 하나(또는 그 이상의) 참조 픽처일 수 있다. 하나의 구현예에서, 참조 픽처리스트 0의 제1 참조 픽처는 해시 매치를 수행하기 위해 사용된다.
몇몇 구현예에서, 블록은 다음의 네 개의 카테고리를 사용하여 분류된다. 제1 카테고리는 "T"(예를 들면, 전블록 카테고리)로 칭해진다. 모든 블록은 "T" 카테고리에 할당된다.
제2 카테고리는 "C"(예를 들면, 병치된 매치 카테고리)로 칭해진다. 참조 픽처 내의 병치된 블록과 매치하는 블록은 "C" 카테고리에 할당된다. 하나보다 많은 참조 픽처가 사용되면, 그 블록이 참조 픽처중 적어도 하나의 병치된 블록과 매치하는 경우, 그 블록은 할당된다.
제3 카테고리는 "S"(예를 들면, 동질성 또는 "스무스(smooth)" 카테고리)로 칭해진다. "C" 카테고리에 할당되지 않은 그리고 동질성인(예를 들면, 수평으로 및/또는 수직으로 동질성인) 블록이 "S" 카테고리에 할당된다.
제4 카테고리는 "M"(예를 들면, 해시 매치 카테고리)으로 칭해진다. "C" 카테고리 또는 "S" 카테고리 중 어느 것에도 할당되지 않았지만 그러나 하나 이상의 참조 픽처의 후보 블록으로부터 생성되는 해시 테이블에서 발견되는 해시 값을 갖는 블록은 "M" 카테고리에 할당된다.
"T", "C", "S", 및 "M" 카테고리를 사용하는 구현예에서, CSMRate(예를 들면, 비율 값)는 다음과 같이 계산될 수 있다:
Figure 112022010063402-pat00003
CSMRate는 픽처(또는 비디오의 다른 유닛)에서의 "C", "S", 및 "M" 블록의 비율을 나타낸다. 현재 픽처에 대한 CSMRate 및 다수("Ncsm")의 이전에 코딩된 픽처의 CSMRate의 평균 값인 AverageCSMRate가 또한 계산될 수 있다. MRate = M/T("M" 블록의 비율)인 MRate가 또한 계산될 수 있다. AverageMRate는 현재 픽처에 대한 MRate 및 다수("Nm")의 이전에 코딩된 픽처의 MRate의 평균 값이다.
상기에서 설명되는 카테고리 및 "T", "C", "S", 및 "M" 카테고리로부터 계산되는 값을 사용하여, MV 정밀도를 결정하기 위해(예를 들면, 정수 MV 정밀도를 사용할지 또는 분수의 MV 정밀도, 예컨대 1/4 픽셀 정밀도를 사용할지의 여부를 정하기 위해) 다음의 규칙 중 하나 이상이 (개별적으로 또는 조합하여) 적용될 수 있다.
규칙 1: CSMRate가 임계치보다 더 크면, 정수 MV 정밀도를 사용한다. 그렇지 않으면, 1/4 픽셀 정밀도를 사용한다. (현재 픽처의 매칭율이 너무 낮으면, 분수의 정밀도 MV를 사용한다.)
규칙 2: AverageCSMRate가 임계치보다 더 크면, 정수 MV 정밀도를 사용한다. 그렇지 않으면, 1/4 픽셀 정밀도를 사용한다. (슬라이딩 윈도우의 픽처의 매칭율이 너무 낮으면, 분수의 정밀도 MV를 사용한다.)
규칙 3: MRate가 임계치보다 더 크면, 정수 MV 정밀도를 사용한다. 그렇지 않으면, 1/4 픽셀 정밀도를 사용한다. (비병치된(non-collocated) 비스무스(non-smooth) 블록의 매칭율이 임계치보다 더 크면, 정수 정밀도 MV를 사용한다.)
규칙 42: AverageCSMRate가 임계치보다 더 크면, 정수 MV 정밀도를 사용한다. 그렇지 않으면, 1/4 픽셀 정밀도를 사용한다. (슬라이딩 윈도우의 픽처의 비병치된 비스무스 블록의 평균 매칭율이 임계치보다 더 크면, 정수 정밀도 MV를 사용한다.)
규칙 5: C==T이면, 정수 MV 정밀도를 사용한다. 그렇지 않으면, 1/4 픽셀 정밀도를 사용한다. (현재 픽처의 모든 블록이 참조 픽처 내의 병치된 블록과 매치하면(두 개의 픽처가 동일하면), 정수 정밀도 MV를 사용한다. 몇몇 구현예에서, 이것은 코딩 효율성에 유의미한 영향을 끼치지 않을 수도 있지만, 그러나, 인코딩 프로세스에서 정수 정밀도 MV를 사용하는 것이 분수의 픽셀에 대한 몇몇 동작, 예컨대 분수의 픽셀에 대한 모션 추정을 스킵할 수도 있기 때문에, 인코딩 시간을 절약하는 것을 도울 수도 있다.)
규칙 6: M>(T-C-S)/비율1이면, 정수 MV 정밀도를 사용한다. 그렇지 않으면, 1/4 픽셀 정밀도를 사용한다. (모든 비병치된 비스무스 블록의 매칭된 블록의 비율이 임계치보다 더 높으면, 정수 정밀도 MV를 사용한다.)
규칙 7: CSMRate>임계치1이고 MRate>임계치2이면, 정수 MV 정밀도를 사용한다. 그렇지 않으면, 1/4 픽셀 정밀도를 사용한다. (CSM 블록의 비율이 임계치보다 더 크고(몇몇 구현예에서, 이 임계치는, 대부분의 블록이 정수 정밀도 MV를 사용하는 데 적합하다는 것을 보장하기 위해 거의 1이다) M개의 블록의 비율이 (예를 들면, 비병치된 비스무스 블록에 대해 약간의 매치를 발견할 수 있는 것을 보장하기 위해) 임계치보다 더 크면, 정수 정밀도 MV를 사용한다.)
규칙 8: AverageCSMRate+AverageMRate>임계치3이면, 정수 MV 정밀도를 사용한다. 그렇지 않으면, 1/4 픽셀 정밀도를 사용한다. (상기의 것과 유사한 조건, 그러나 슬라이딩 윈도우의 픽처를 고려하고 있다.)
예시적인 구현예에서, 다음의 설정이 적용된다. 블록 사이즈는 8×8이다. 해시 매칭은 참조 픽처리스트 0의 첫 번째 참조 픽처에 대해서만 수행된다. Ncsm 및 Nm 둘 다는 31로 설정된다(현재 픽처를 포함해서, 총 32개의 픽처). 예시적인 구현예에서, 모션 벡터 정밀도는 다음의 순서로 결정된다(충족되는 첫 번째 "~이면(if)" 조건문은 MV 정밀도를 설정하고, "~이면" 조건문 중 어느 것도 충족되지 않으면, "그렇지 않다면" 조건문은 1/4 픽셀 정밀도를 설정할 것이다):
CSMRate<0.8이면, 1/4 픽셀 정밀도를 사용한다.
T==C이면, 정수 정밀도를 사용한다.
AverageCSMRate<0.95이면, 1/4 픽셀 정밀도를 사용한다.
M>(T-C-S)/3이면, 정수 정밀도를 사용한다.
CSMRate>0.99 && MRate>0.01이면, 정수 정밀도를 사용한다.
AverageCSMRate+AverageMRate>1.01이면, 정수 정밀도를 사용한다.
그렇지 않으면, 1/4 픽셀 정밀도를 사용한다.
이 섹션에서 설명되는 기술에서, 인코더는 1/4 샘플 MV 정밀도를 사용하는 것과 정수 샘플 MV 정밀도를 사용하는 것 사이에서 선택할 수 있다. 더 일반적으로는, 인코더는 다수의 이용가능한 MV 정밀도 사이에서 선택할 수 있는데, 다수의 이용가능한 MV 정밀도는, 정수 샘플 MV 정밀도, 1/2 샘플 MV 정밀도, 1/4 샘플 MV 정밀도 및/또는 다른 MV 정밀도를 포함할 수 있다. 선택된 MV 정밀도는, 비디오의 유닛에 대한 MV 값의 수평 성분 및/또는 수직 성분에 적용될 수 있다.
이 섹션에서 설명되는 기술에서, 해시 기반 블록 매칭은 유닛의 입력 샘플 값 및 (후보 블록의 경우) 하나 이상의 참조 픽처에 대한 입력 샘플 값으로부터 결정되는 해시 값을 사용한다. 대안적으로, 해시 테이블에서 표현되는 후보 블록의 경우, 해시 기반 블록 매칭은 재구성된 샘플 값으로부터 결정되는 해시 값을 사용할 수 있다.
이 섹션에서 설명되는 기술에서, 비디오의 유닛에 대한 MV 정밀도를 결정할 때, 인코더는 다른 요인, 예컨대, 다음 섹션에서 설명되는 바와 같이, 매치되지 않은 블록이 상당한 양의 내추럴 비디오 컨텐츠(카메라 캡처 비디오)를 포함하는지의 여부를 또한 고려할 수 있다.
2. 대안예 및 변형예
인코더가 픽처대 픽처(picture-to-picture)로부터의 동일한 패턴의 타일을 사용할 때, 인코더는 픽처대 픽처로부터의 타일별 MV 정밀도(per-tile MV precision)를 반복할 수 있다. 픽처대 픽처로부터의 병치된 타일은 동일한 MV 정밀도를 사용할 수 있다. 마찬가지로, 픽처대 픽처로부터의 병치된 슬라이스는 동일한 MV 정밀도를 사용할 수 있다. 예를 들면, 비디오가 컴퓨터 데스크탑을 묘사하고, 데스크탑의 일부가 내추럴 비디오 컨텐츠를 디스플레이하는 윈도우를 갖는다는 것을 가정한다. 텍스트 또는 다른 렌더링된 컨텐츠를 나타내는 다른 영역이 정수 샘플 MV 정밀도를 사용하여 인코딩되는지의 여부에 무관하게, 픽처대 픽처로부터의 데스크탑의 그 영역 내에서는 분수의 샘플 MV 정밀도가 사용될 수도 있다.
인코더는, 정수 샘플 MV 정밀도가 적절하다는 신뢰도에 적어도 부분적으로 기초하여 정수 샘플 MV 정밀도를 향한 또는 그에 대한 바이어스의 양을 조정할 수 있다. 인코더는 또한, 인코딩 및/또는 디코딩의 목표 계산 복잡도에 적어도 부분적으로 기초하여 정수 샘플 MV 정밀도를 향한 또는 그에 대한 바이어스의 양을 조정할 수 있다(계산적 복잡도를 감소시키기 위해서는 정수 샘플 MV 정밀도를 선호함). 예를 들면, 인코더는, 정수 샘플 MV 정밀도가 선택될 가능성을 높게 또는 낮게 만들기 위해, 비교 동작에서 사용되는 임계치를 조정할 수 있다.
선택된 MV 정밀도는 비디오의 유닛 내의 블록의 MV 값의 수평 MV 성분 및/또는 수직 MV 성분에 대한 것일 수 있는데, 여기서 수평 MV 성분 및 수직 MV 성분은 상이한 MV 정밀도를 갖는 것이 허용된다. 또는, 선택된 MV 정밀도는 비디오의 유닛 내의 블록의 MV 값의 수평 MV 성분 및 수직 MV 성분 둘 다에 대한 것일 수 있는데, 여기서 수평 MV 성분 및 수직 MV 성분은 동일한 MV 정밀도를 갖는다.
MV 정밀도의 선택의 이전의 예의 대부분에서는, 비트스트림 내의 인코딩된 비디오는, 유닛에 대한 선택된 MV 정밀도를 나타내는 하나 이상의 신택스 엘리먼트를 포함한다. 디코더는, 선택된 MV 정밀도를 나타내는 신택스 엘리먼트(들)를 파싱하고 선택된 MV 정밀도에 따라 MV 값을 해석한다. 대안적으로, 비트스트림 내의 인코딩된 비디오는, 선택된 MV 정밀도를 나타내는 임의의 신택스 엘리먼트가 부족할 수 있다. 예를 들면, 비트스트림이 분수의 샘플 MV 정밀도를 갖는 MV 값의 시그널링을 지원하더라도, 인코더는 비디오의 유닛에 대한 모션 추정을, 제로의 분수의 부분을 갖는 MV 값만을 사용하도록 제약할 수 있고, 정수 샘플 오프셋을 나타내는 MV 값만이 모션 보상에서 사용된다. 디코더는 분수의 샘플 MV 정밀도에서 MV 값을 재구성하여 적용한다(여기서 MV 값은 정수 샘플 오프셋을 나타낸다). 이것은 보간 동작을 방지하는 것에 의해 디코딩의 계산적 복잡도를 감소시킬 수 있다.
IX. 해시 매칭을 사용한 장면 전환 검출.
이 섹션은, 해시 매칭에 기초하여 장면 전환을 검출하는 다양한 접근 방식을 제공한다. 장면 전환은 비디오 인코딩 동안 검출될 수 있다. 예를 들면, 장면 전환 픽처로서 식별되는 픽처는, 코딩 효율성을 향상시키기 위해 사용될 수 있다(예를 들면, 참조 픽처는, 주어진 픽처가 장면 전환 픽처인지의 여부에 적어도 부분적으로 기초하여 결정될 수 있다).
A. 장면 전환 픽처검출.
적어도 부분적으로, 이전 픽처와 관련하여 현재 픽처중 얼마나 많은 블록이 해시 테이블에서 해시 매치를 갖는지를 나타내는 정보(일반적으로, "매치율", "매치 비율", 또는 "R"로 칭해짐)를 사용하여, 장면 전환이 검출된다. 몇몇 구현예에서, 매치율은 다음과 같이 계산된다: R=(C+S+M)/T. 대안적으로, 매치율은 다음과 같이 계산된다: R=(C+M)/T 또는 R=M/T. 현재 픽처에 대해, 매치율은 "Rcurr"로 라벨링된다. 또한, (현재 픽처이전의) 이전 픽처로부터 평균 매치율이 계산될 수 있다. 예를 들면, 모든 이전에 코딩된 픽처의 평균 또는 (예를 들면, 슬라이딩 윈도우를 사용하여) 다수의 이전의 픽처에 걸친 평균이 유지될 수 있다. 평균 매치율은 "Ravg"로 라벨링된다.
몇몇 구현예에서, Rcurr이 Ravg보다 더 작으면(예를 들면, 상당히 더 작으면), 현재 픽처는 장면 전환 픽처로서 식별될 수 있다. 몇몇 구현예에서, Rcurr<a*Ravg이면, 현재 픽처는 장면 전환 픽처로서 검출된다. "a"의 값(가중값)은 특정한 구현예에서 0.5로 설정된다.
B. 장기간 참조 픽처선택.
비디오 코딩에서, 시간적 중복성을 제거하기 위해, 참조 픽처로부터의 모션 보상이 사용된다. 따라서, 참조 픽처는 코딩 효율성에 아주 중요할 수 있다. 몇몇 구현예에서, 단기간 참조 픽처및 장기간 참조 픽처둘 다가 사용된다. 단기간 참조 픽처는 일반적으로는 현재 코딩 픽처로부터 너무 멀리 떨어져 있지 않은 다수의 픽처이다. 장기간 참조 픽처는 상대적으로 더 긴 시간 동안 디코딩된 픽처 버퍼("DPB")에 저장될 수도 있다. 장기간 참조 픽처는, 복제된 장면이 발생할 수도 있거나 또는 복제된 윈도우가 비디오 시퀀스에서 나중에 발생할 수도 있는 몇몇 스크린 컨텐츠에 대한 코딩 효율성을 향상시키는 데 도움이 될 수 있다. 몇몇 구현예에서, 장면 전환 이전의(예를 들면, 장면 전환 직전의) 픽처는 장기간 참조 픽처로서 유지되고, 한편 장면 전환 동안의 픽처는 유지되지 않는다.
장기간 참조 픽처선택의 다양한 예를 예시하기 위해, 픽처의 다음의 예시적인 시퀀스가 사용된다:
Figure 112022010063402-pat00004
이 예시적인 시퀀스에서는, 13개의 픽처("f0" 내지 "f12"로 라벨링됨) 및 두 개의 장면("s0" 및 "s1"로 라벨링됨)이 존재한다. 제1 장면과 제2 장면 사이의 전이는 "s0->1"로 라벨링된다. 예시적인 시퀀스에서 묘사되는 바와 같이, 픽처f0 내지 f6은 제1 시퀀스 s0에 속하고, 픽처f7 내지 f10은 제1 시퀀스 s0으로부터 제2 시퀀스 s1로 전이하고, 픽처f11 및 f12는 제2 시퀀스 s1에 속한다. 픽처의 제2 시퀀스가 스크린 컨텐츠를 포함하면, f0, f1, f2, f3, f4, f5, 및 f6에 대한 매치율은 상대적으로 높을 가능성이 있고, f7, f8, f9, f10, 및 f11에 대한 매치율은 상대적으로 낮을 가능성이 있고, f12에 대한 매치율은 상대적으로 높을 가능성이 있다.
다양한 인코딩 상황의 결과에 기초하여, 이전 장면의 최종 픽처를 유지하는 것은 코딩 효율성을 향상시키는 데 도움이 될 수 있다. 따라서, 상기의 예시적인 시퀀스에서, f6은 장기간 참조 픽처로서 유지될 것이다. 몇몇 구현예에서, 주어진 픽처를 장기간 참조 픽처로서 유지할 것인지의 여부의 결정은 현재 픽처를 인코딩할 때 이루어진다. 예를 들면, fn-1을 장기간 참조 픽처로서 유지할지의 여부의 결정은, fn(현재 픽처)을 인코딩할 때 이루어진다. 특정한 구현예에서, 다음의 두 개의 조건이 충족되면, fn-1은 장기간 참조 픽처로서 유지된다:
1. 매칭율 Rn(현재 픽처fn에 대한 Rcurr)이 임계치보다 더 낮다(fn이 장면 전환 픽처로서 검출된다는 것을 나타냄).
2. 모든 이전 픽처(Rn-1, Rn-2, ... Rn-X)의 매칭율이 임계치보다 더 높다(안정한 장면을 나타냄, 장면 전환 동안의 픽처, 예컨대 f7, f8, f9를 잘라낼 수 있다).
상기의 두 조건을 사용하여, X개의 픽처의 안정한 장면에 바로 뒤따라 발생하는 장면 전환의 시작이 검출될 수 있다. 상기의 예시적인 시퀀스를 사용하여, 현재 픽처f7을 인코딩할 때 두 조건이 적용되면, f7의 매치율은 임계치보다 더 낮은 것으로 발견되고(f7이 장면 전환 픽처이라는 것을 나타냄) 한편 이전의 X개의 픽처(예를 들면, f6, f5, f4, 등등)는 임계치보다 높은 것으로 발견된다. 결과적으로, 두 조건이 충족되면, f6은 장기간 참조 픽처로서 유지될 수 있다.
C. 픽처 품질 조정
상기의 예시적인 시퀀스에서, 제2 장면 s1에 많은 픽처가 (그들 사이에 변화가 거의 없이) 존재하면, s1의 처음 몇 개의 픽처를 더 나은 품질로 인코딩하는 것은 코딩 효율성을 향상시키는 데 도움이 될 수도 있다. 몇몇 구현예에서는, 인트라 픽처를 인코딩하기 위해 QPI 및 람다I가 사용되고 P 및 B 픽처를 인코딩하기 위해 다른 QP 값 및 람다 값(예를 들면, 일반적으로 QPI 및 람다I보다 더 크고, 상이한 P 및 B 픽처에 대해 또한 상이할 수도 있다)이 사용된다.
몇몇 구현예에서, 현재 픽처가 해시 기반 블록 매치에 의해 신규의 장면의 시작(또는 시작 근처)인 것으로 검출되면, 현재 픽처는 더 나은 품질로 인코딩된다(예를 들면, QPI 및 람다I를 사용하여 인코딩된다). 예를 들면, 안정한 장면의 시작에 있는, 또는 시작 근처에 있는 픽처를 더 나은 품질로 인코딩하는 것에 의해, 동일한 안정한 장면의 후속하는 픽처의 인코딩 효율성 및/또는 품질은 향상될 수 있다.
사전 분석(pre-analysis)이 허용되면, 현재 픽처가 신규의 안정한 장면의 시작에 있는지의 여부를 검출하는 것은 간단한 태스크일 수 있다. 예를 들면, 현재 픽처이후의 다음 번 X개의 픽처가 체크될 수 있다. 현재 픽처가 상대적으로 낮은 매치율을 가지며 한편 다음 번 X개의 픽처가 상대적으로 높은 매치율을 가지면, 인코더는 현재 픽처를 상대적으로 높은 품질로 인코딩할 수도 있다. 예를 들면, 상기의 예시적인 예를 사용하여, 인코더는 f11의 매치율이 상대적으로 낮고 한편 f12, f13, 및 f14의 매치율이 상대적으로 높다는 것을 발견할 수도 있다. 이 상황에서, f11은 신규의 안정한 장면의 시작에 있는 것으로 결정될 수 있고 따라서 더 나은 품질로 인코딩될 수 있다. 특정한 구현예에서, 다음의 두 조건이 충족되면, 현재 픽처fn은 더 나은 품질로 코딩된다(예를 들면, QPI 및 람다I로 인코딩된다):
1. 매칭율 Rn이 임계치보다 더 낮다(fn이 신규의 장면의 시작으로서 검출된다는 것을 나타냄).
2. 모든 미래의 X개의 픽처(Rn+1, rn+2, ... Rn+X)의 매칭율이 임계치보다 더 높다(안정한 장면을 나타냄).
사전 분석이 허용되지 않으면, 인코더는 신규의 안정한 장면의 시작에서 의사 결정을 행할 수 없을 수도 있고, 대신 신규의 안정한 장면이 확인될 수 있기 이전에 몇몇의 픽처를 기다려야 할 수도 있다. 예를 들면, 인코더는, 신규의 안정한 장면이 도달되었다는 것을 확인하기 위해 다수(X)의 픽처를 대기할 수 있고 그 다음 현재 픽처를 향상된 품질로 인코딩할 수 있다. 예를 들면, 상기의 예시적인 시퀀스를 참조하여, f12, f13, f14, 및 f15(여기서 X=4)가 상대적으로 높은 매치율을 가지면(예를 들면, f11이 상대적으로 낮은 매치율을 가지면), f15는 향상된 품질로 인코딩될 수 있다. 특정한 구현예에서, 다음의 두 조건이 충족되면, 현재 픽처fn은 더 나은 품질로 코딩된다(예를 들면, QPI 및 람다I로 인코딩된다):
1. 현재 픽처및 이전 X개의 픽처(Rn, Rn-1, Rn-2, ... Rn-X)의 매칭율은 임계치보다 더 높다.
2. 픽처n-X-1의 매칭율(Rn-X-1)은 임계치보다 더 낮다.
D. 예시적인 구현예.
해시 기반 블록 매칭을 사용하여 장면 전환을 검출하기 위한 다양한 방법이 제공될 수 있다. 또한, 장면 전환 정보의 결과는, 다른 목적, 예컨대 장기간 참조 픽처선택 및 인코딩 동안의 픽처 품질 설정을 위해 사용될 수 있다.
도 15는, 적어도 부분적으로, 해시 기반 블록 매칭의 결과를 사용하여, 비디오 인코딩 동안 장면 전환을 검출하기 위한 일반화된 기술(1500)을 도시한다. 기술(1500)은, 도 3 또는 도 4a 및 도 4b를 참조로 설명되는 것과 인코더에 의해, 또는 다른 인코더에 의해 수행될 수 있다.
인코더는 비디오를 인코딩하여 인코딩된 데이터를 생성하는데, 인코더는 그 인코딩된 데이터를 비트스트림의 일부로서 출력한다. 인코딩 동안, 인코더는 현재 픽처에 대한 매치율을 계산한다(1510). 매치율은, 적어도 부분적으로, (하나 이상의 참조 픽처와 관련한) 현재 픽처에 대한 해시 기반 블록 매칭을 사용하여, 계산된다. 몇몇 구현예에서, 매치율은, 현재 픽처의 블록을 복수의 카테고리로 분류하는 것에 의해 계산된다. 몇몇 구현예에서, 매치율은, R=(C+S+M)/T로서, 또는 R=(C+M)/T로서, 또는 R=M/T로서 계산된다.
그 다음, 인코더는 복수의 이전의 픽처에 대한 평균 매치율을 계산한다(1520). 평균 매치율은 이전 픽처각각에 대한 개별 매치율을 계산하고 개별 매치율을 평균내는 것에 의해, 계산될 수 있다. 몇몇 구현예에서, 매치율은, 주어진 이전 픽처의 블록을 복수의 카테고리로 분류하는 것에 의해 계산된다. 몇몇 구현예에서, 매치율은, R=(C+S+M)/T로서, 또는 R=(C+M)/T로서, 또는 R=M/T로서 계산된다.
그 다음, 인코더는 가중된(weighted) 평균 매치율을 계산한다(1530). 예를 들면, 인코더는 평균 매치율을, 1.0 미만인 가중값으로 승산할 수 있다. 특정한 구현예에서, 0.5의 가중값이 사용된다.
그 다음, 인코더는, 현재 픽처에 매치율 및 가중된 평균 매치율에 기초하여, 현재 픽처가 장면 전환 픽처인지의 여부를 결정한다(1540). 예를 들면, 현재 픽처는, 현재 픽처에 매치율이 가중된 평균 매치율보다 더 작으면, 장면 전환 픽처인 것으로 결정될 수 있다.
현재 픽처가 장면 전환 픽처인 것으로 검출될 때 다양한 결정이 이루어질 수 있다. 예를 들면, 현재 픽처 바로 직전의 픽처는 장기간 참조 픽처인 것으로 선택될 수 있다. 또한, 인코딩 동안 픽처 품질 파라미터를 결정할 때, 픽처(또는 픽처들)가 장면 전환에 연루되는 때에 관한 정보가 사용될 수 있다.
개시된 발명의 원칙이 적용될 수도 있는 많은 가능한 실시형태의 관점에서, 예시된 실시형태는 단지 본 발명의 바람직한 예에 불과하며 본 발명의 범위를 제한하는 것으로 간주되어선 안된다는 것이 인식되어야 한다. 대신, 본 발명의 범위는 하기의 청구범위에 의해 정의된다. 따라서, 이들 특허청구범위의 취지와 범위 내에 있는 모든 것을 본 발명으로서 주장한다.

Claims (20)

  1. 비디오의 유닛에 대한 모션 벡터(motion vector, MV) 정밀도를 결정하는 것을 포함하는, 인코딩된 데이터를 생성하기 위해 상기 비디오를 인코딩하기 위한 컴퓨팅 디바이스에 의해 구현되는 방법에 있어서,
    상기 비디오의 상기 유닛을 다수의 블록들로 분할하는 단계;
    상기 유닛의 상기 다수의 블록들의 각각의 블록에 대해:
    상기 블록을 복수의 카테고리 중 하나로 분류하는 단계 - 상기 복수의 카테고리 중 적어도 하나의 카데고리는 동질성 분류 기준을 사용하는 동질성 카테고리이고, 상기 복수의 카테고리 중 적어도 하나의 다른 카데고리는 해시 기반 매칭 분류 기준을 사용하는 해시 매치 카테고리인 것임 -;
    상기 다수의 블록들에 대한 분류에 기초하여, 상기 비디오의 상기 유닛에 대한 MV 정밀도를 결정하는 단계; 및
    상기 인코딩된 데이터를 비스트스림으로 출력하는 단계
    를 포함하는 컴퓨팅 디바이스에 의해 구현되는 방법.
  2. 제1항에 있어서,
    상기 동질성 분류 기준을 사용하여 상기 블록을 분류하는 것은:
    상기 블록이 수평으로 동질성인 것 및 수직으로 동질성인 것 중 하나이거나 둘 다일 때, 상기 블록을 상기 동질성 카테고리에 할당하는 것을 포함하는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법.
  3. 제1항에 있어서,
    상기 해시 기반 매칭 분류 기준을 사용하여 상기 블록을 분류하는 것은:
    상기 블록의 해시 값에 대한 매치가 해시 테이블에서 발견될 때 상기 블록을 상기 해시 매치 카테고리에 할당하는 것을 포함하고, 상기 해시 테이블은 하나 이상의 참조 픽처의 후보 블록들을 포함하는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법.
  4. 제1항에 있어서,
    상기 블록을 복수의 카테고리 중 하나로 분류하는 단계는:
    상기 블록을 전블록 카테고리(all-blocks category)에 할당하는 단계;
    상기 블록이 참조 픽처 내의 병치된 블록과 매치하면, 상기 블록을 병치된 매치 카테고리에 할당하는 단계, 그리고 그렇지 않으면:
    상기 블록이 상기 동질성 분류 기준을 만족하면, 상기 블록을 상기 동질성 카테고리에 할당하는 단계, 그리고 그렇지 않으면:
    상기 블록이 상기 해시 기반 매칭 분류 기준을 만족하면, 상기 블록을 상기 해시 매치 카테고리에 할당하는 단계
    를 포함하는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법.
  5. 제4항에 있어서,
    상기 전블록 카테고리, 병치된 매치 카테고리, 동질성 카테고리, 및 해시 매치 카테고리 각각 내의 블록들의 개수를 계산하는 단계를 더 포함하고,
    상기 비디오의 상기 유닛에 대한 상기 MV 정밀도는, 적어도 부분적으로, 상기 복수의 카테고리 각각 내의 블록들의 개수를 사용하여 결정되는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법.
  6. 제5항에 있어서,
    상기 병치된 매치 카테고리, 동질성 카테고리, 및 해시 매치 카테고리 내의 블록들의 개수를 더한 후, 상기 전블록 카테고리 내의 블록들의 개수로 나눔으로써 비율(rate) 값을 계산하는 단계를 더 포함하고,
    상기 비율 값이 임계값 아래일 때, 상기 유닛에 대한 상기 MV 정밀도는 분수의 MV 정밀도인 것인, 컴퓨팅 디바이스에 의해 구현되는 방법.
  7. 제6항에 있어서,
    상기 임계값은 0.8인 것인, 컴퓨팅 디바이스에 의해 구현되는 방법.
  8. 제1항에 있어서,
    상기 비디오의 상기 유닛에 대한 MV 정밀도를 결정하는 단계는 정수 MV 정밀도와 분수의 MV 정밀도 간에 선택하는 단계를 포함하는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법.
  9. 프로세싱 유닛 및 메모리를 포함하는 컴퓨팅 디바이스로서, 상기 컴퓨팅 디바이스는, 비디오의 유닛에 대한 모션 벡터(motion vector, MV) 정밀도를 결정하는 것을 포함하는 인코딩된 데이터를 생성하기 위해 비디오를 인코딩하기 위한 동작들을 수행하도록 구성되고, 상기 동작들은:
    상기 비디오의 상기 유닛을 다수의 블록들로 분할하는 동작;
    상기 유닛의 상기 다수의 블록들의 각각의 블록에 대해:
    상기 블록을 복수의 카테고리 중 하나로 분류하는 동작 - 상기 복수의 카테고리 중 적어도 하나의 카데고리는 동질성 분류 기준을 사용하는 동질성 카테고리이고, 상기 복수의 카테고리 중 적어도 하나의 다른 카데고리는 해시 기반 매칭 분류 기준을 사용하는 해시 매치 카테고리인 것임 -;
    상기 다수의 블록들에 대한 분류에 기초하여, 상기 비디오의 상기 유닛에 대한 MV 정밀도를 결정하는 동작; 및
    상기 인코딩된 데이터를 비스트스림으로 출력하는 동작
    을 포함하는 것인, 컴퓨팅 디바이스.
  10. 제9항에 있어서,
    상기 동질성 분류 기준을 사용하여 상기 블록을 분류하는 것은:
    상기 블록이 수평으로 동질성인 것 및 수직으로 동질성인 것 중 하나이거나 둘 다일 때, 상기 블록을 상기 동질성 카테고리에 할당하는 것을 포함하는 것인, 컴퓨팅 디바이스.
  11. 제9항에 있어서,
    상기 해시 기반 매칭 분류 기준을 사용하여 상기 블록을 분류하는 것은:
    상기 블록의 해시 값에 대한 매치가 해시 테이블에서 발견될 때 상기 블록을 상기 해시 매치 카테고리에 할당하는 것을 포함하고, 상기 해시 테이블은 하나 이상의 참조 픽처의 후보 블록들을 포함하는 것인, 컴퓨팅 디바이스.
  12. 제9항에 있어서,
    상기 블록을 복수의 카테고리 중 하나로 분류하는 동작은:
    상기 블록을 전블록 카테고리(all-blocks category)에 할당하는 동작;
    상기 블록이 참조 픽처 내의 병치된 블록과 매치하면, 상기 블록을 병치된 매치 카테고리에 할당하는 동작, 그리고 그렇지 않으면:
    상기 블록이 상기 동질성 분류 기준을 만족하면, 상기 블록을 상기 동질성 카테고리에 할당하는 동작, 그리고 그렇지 않으면:
    상기 블록이 상기 해시 기반 매칭 분류 기준을 만족하면, 상기 블록을 상기 해시 매치 카테고리에 할당하는 동작
    을 포함하는 것인, 컴퓨팅 디바이스.
  13. 제12항에 있어서,
    상기 동작들은:
    상기 전블록 카테고리, 병치된 매치 카테고리, 동질성 카테고리, 및 해시 매치 카테고리 각각 내의 블록들의 개수를 계산하는 동작을 더 포함하고,
    상기 비디오의 상기 유닛에 대한 상기 MV 정밀도는, 적어도 부분적으로, 상기 복수의 카테고리 각각 내의 블록들의 개수를 사용하여 결정되는 것인, 컴퓨팅 디바이스.
  14. 제13항에 있어서,
    상기 동작들은:
    상기 병치된 매치 카테고리, 동질성 카테고리, 및 해시 매치 카테고리 내의 블록들의 개수를 더한 후, 상기 전블록 카테고리 내의 블록들의 개수로 나눔으로써 비율 값을 계산하는 동작을 더 포함하고,
    상기 비율 값이 임계값 아래일 때, 상기 유닛에 대한 상기 MV 정밀도는 분수의 MV 정밀도인 것인, 컴퓨팅 디바이스.
  15. 제14항에 있어서,
    상기 임계값은 0.8인 것인, 컴퓨팅 디바이스.
  16. 제9항에 있어서,
    상기 비디오의 상기 유닛에 대한 MV 정밀도를 결정하는 동작은 정수 MV 정밀도와 분수의 MV 정밀도 간에 선택하는 동작을 포함하는 것인, 컴퓨팅 디바이스.
  17. 컴퓨터-판독가능한 명령어들을 저장한 하나 이상의 컴퓨터-판독가능한 저장 매체로서, 상기 컴퓨터-판독가능한 명령어들은, 상기 컴퓨터-판독가능한 명령어들에 의해 프로그래밍된 컴퓨팅 디바이스가, 비디오의 유닛에 대한 모션 벡터(motion vector, MV) 정밀도를 결정하는 것을 포함하는 인코딩된 데이터를 생성하기 위해 비디오를 인코딩하기 위한 동작들을 수행하도록 하기 위한 것이고, 상기 동작들은:
    상기 비디오의 상기 유닛을 다수의 블록들로 분할하는 동작;
    상기 유닛의 상기 다수의 블록들의 각각의 블록에 대해:
    상기 블록을 복수의 카테고리 중 하나로 분류하는 동작 - 상기 복수의 카테고리 중 적어도 하나의 카데고리는 동질성 분류 기준을 사용하는 동질성 카테고리이고, 상기 복수의 카테고리 중 적어도 하나의 다른 카데고리는 해시 기반 매칭 분류 기준을 사용하는 해시 매치 카테고리인 것임 -;
    상기 다수의 블록들에 대한 분류에 기초하여, 상기 비디오의 상기 유닛에 대한 MV 정밀도를 결정하는 동작; 및
    상기 인코딩된 데이터를 비스트스림으로 출력하는 동작
    을 포함하는 것인, 하나 이상의 컴퓨터-판독가능한 저장 매체.
  18. 제17항에 있어서,
    상기 동질성 분류 기준을 사용하여 상기 블록을 분류하는 것은:
    상기 블록이 수평으로 동질성인 것 및 수직으로 동질성인 것 중 하나이거나 둘 다일 때, 상기 블록을 상기 동질성 카테고리에 할당하는 것을 포함하는 것인, 하나 이상의 컴퓨터-판독가능한 저장 매체.
  19. 제17항에 있어서,
    상기 해시 기반 매칭 분류 기준을 사용하여 상기 블록을 분류하는 것은:
    상기 블록의 해시 값에 대한 매치가 해시 테이블에서 발견될 때 상기 블록을 상기 해시 매치 카테고리에 할당하는 것을 포함하고, 상기 해시 테이블은 하나 이상의 참조 픽처의 후보 블록들을 포함하는 것인, 하나 이상의 컴퓨터-판독가능한 저장 매체.
  20. 제17항에 있어서,
    상기 블록을 복수의 카테고리 중 하나로 분류하는 동작은:
    상기 블록을 전블록 카테고리(all-blocks category)에 할당하는 동작;
    상기 블록이 참조 픽처 내의 병치된 블록과 매치하면, 상기 블록을 병치된 매치 카테고리에 할당하는 동작, 그리고 그렇지 않으면:
    상기 블록이 상기 동질성 분류 기준을 만족하면, 상기 블록을 상기 동질성 카테고리에 할당하는 동작, 그리고 그렇지 않으면:
    상기 블록이 상기 해시 기반 매칭 분류 기준을 만족하면, 상기 블록을 상기 해시 매치 카테고리에 할당하는 동작
    을 포함하는 것인, 하나 이상의 컴퓨터-판독가능한 저장 매체.
KR1020227003023A 2014-09-30 2014-09-30 비디오 코딩을 위한 해시 기반 인코더 결정 KR102490706B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/CN2014/087869 WO2016049834A1 (en) 2014-09-30 2014-09-30 Hash-based encoder decisions for video coding
KR1020177011764A KR102358276B1 (ko) 2014-09-30 2014-09-30 비디오 코딩을 위한 해시 기반 인코더 결정

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020177011764A Division KR102358276B1 (ko) 2014-09-30 2014-09-30 비디오 코딩을 위한 해시 기반 인코더 결정

Publications (2)

Publication Number Publication Date
KR20220019297A KR20220019297A (ko) 2022-02-16
KR102490706B1 true KR102490706B1 (ko) 2023-01-19

Family

ID=55629261

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177011764A KR102358276B1 (ko) 2014-09-30 2014-09-30 비디오 코딩을 위한 해시 기반 인코더 결정
KR1020227003023A KR102490706B1 (ko) 2014-09-30 2014-09-30 비디오 코딩을 위한 해시 기반 인코더 결정

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020177011764A KR102358276B1 (ko) 2014-09-30 2014-09-30 비디오 코딩을 위한 해시 기반 인코더 결정

Country Status (11)

Country Link
US (3) US11025923B2 (ko)
EP (3) EP3202142B1 (ko)
JP (1) JP6462119B2 (ko)
KR (2) KR102358276B1 (ko)
CN (3) CN105981382B (ko)
AU (1) AU2014408223B2 (ko)
BR (1) BR112017004490B1 (ko)
CA (2) CA2961089C (ko)
MX (1) MX2017004210A (ko)
RU (1) RU2679981C2 (ko)
WO (1) WO2016049834A1 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3061233B1 (en) 2013-10-25 2019-12-11 Microsoft Technology Licensing, LLC Representing blocks with hash values in video and image coding and decoding
WO2015131325A1 (en) 2014-03-04 2015-09-11 Microsoft Technology Licensing, Llc Hash table construction and availability checking for hash-based block matching
US10368092B2 (en) 2014-03-04 2019-07-30 Microsoft Technology Licensing, Llc Encoder-side decisions for block flipping and skip mode in intra block copy prediction
CN105706450B (zh) 2014-06-23 2019-07-16 微软技术许可有限责任公司 根据基于散列的块匹配的结果的编码器决定
KR102358276B1 (ko) 2014-09-30 2022-02-04 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 코딩을 위한 해시 기반 인코더 결정
CN107113443B (zh) * 2014-12-26 2020-04-28 索尼公司 影像处理设备和影像处理方法
US10462479B2 (en) * 2015-07-10 2019-10-29 Nec Corporation Motion picture encoding device, motion picture encoding method, and storage medium storing motion picture encoding program
CN105426413B (zh) * 2015-10-31 2018-05-04 华为技术有限公司 一种编码方法及装置
US10390039B2 (en) 2016-08-31 2019-08-20 Microsoft Technology Licensing, Llc Motion estimation for screen remoting scenarios
US10192295B2 (en) * 2016-11-09 2019-01-29 AI Analysis, Inc. Methods and systems for normalizing images
US11095877B2 (en) 2016-11-30 2021-08-17 Microsoft Technology Licensing, Llc Local hash-based motion estimation for screen remoting scenarios
US10694205B2 (en) * 2017-12-18 2020-06-23 Google Llc Entropy coding of motion vectors using categories of transform blocks
CN108495139A (zh) * 2018-04-18 2018-09-04 北方工业大学 屏幕内容编码的哈希块匹配
CN109168001B (zh) * 2018-09-27 2021-02-12 苏州科达科技股份有限公司 视频场景变化的检测方法、装置及视频采集设备
US11469881B2 (en) * 2018-12-26 2022-10-11 Korea Institute Of Science And Technology Apparatus and method for forgery prevention of digital information
EP3918801A4 (en) * 2019-01-28 2022-06-15 OP Solutions, LLC ONLINE AND OFFLINE CHOICE OF EXTENDED LONG-TERM REFERENCE IMAGE STORAGE
JP7384910B2 (ja) * 2019-02-02 2023-11-21 北京字節跳動網絡技術有限公司 映像符号化におけるイントラブロックコピーのためのバッファ管理
CN113396592B (zh) * 2019-02-02 2023-11-14 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的缓冲区管理
WO2020156547A1 (en) 2019-02-02 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Buffer resetting for intra block copy in video coding
EP3915265A4 (en) 2019-03-01 2022-06-22 Beijing Bytedance Network Technology Co., Ltd. DIRECTION-BASED PREDICTION FOR INTRA BLOCK COPY IN VIDEO CODING
KR20210125506A (ko) 2019-03-04 2021-10-18 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 버퍼 관리
CN111567044A (zh) * 2019-03-13 2020-08-21 北京大学 一种视频处理方法、装置、编码设备及解码设备
EP3981151A4 (en) 2019-07-06 2022-08-24 Beijing Bytedance Network Technology Co., Ltd. VIRTUAL PREDICTION BUFFER FOR INTRA-BLOCK COPY IN VIDEO ENCODING
MX2022000110A (es) 2019-07-10 2022-02-10 Beijing Bytedance Network Tech Co Ltd Identificacion de muestras para la copia intra-bloque en codificacion de video.
CN117579816A (zh) 2019-07-11 2024-02-20 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的比特流一致性约束
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
US11956441B2 (en) * 2021-12-23 2024-04-09 Ati Technologies Ulc Identifying long term reference frame using scene detection and perceptual hashing
US11882295B2 (en) 2022-04-15 2024-01-23 Meta Platforms Technologies, Llc Low-power high throughput hardware decoder with random block access
US20230334702A1 (en) * 2022-04-15 2023-10-19 Meta Platforms Technologies, Llc Hardware Encoder for Color Data in a 2D Rendering Pipeline

Family Cites Families (240)

* 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
US6765963B2 (en) 2001-01-03 2004-07-20 Nokia Corporation Video decoder architecture and method for using same
US6920175B2 (en) 2001-01-03 2005-07-19 Nokia Corporation Video coding architecture and methods 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
AU2002346116A1 (en) 2001-07-20 2003-03-03 Gracenote, Inc. Automatic identification of sound recordings
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
EP1467569A4 (en) 2002-01-18 2007-11-14 Toshiba Kk METHOD AND APPARATUS FOR ENCODING IMAGES IN MOTION, 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 セイコーエプソン株式会社 動画像符号化装置および動画像符号化方法
US7386049B2 (en) * 2002-05-29 2008-06-10 Innovation Management Sciences, Llc Predictive interpolation of a video signal
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
US20040174570A1 (en) 2002-12-02 2004-09-09 Plunkett Richard Thomas Variable size dither matrix usage
US7121639B2 (en) 2002-12-02 2006-10-17 Silverbrook Research Pty Ltd Data rate equalisation to account for relatively different printhead widths
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
JP5567246B2 (ja) 2003-10-27 2014-08-06 ザ ジェネラル ホスピタル コーポレイション 周波数ドメイン干渉測定を利用して光学撮像を実行する方法および装置
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
DE602004010040T2 (de) 2003-12-11 2008-09-11 Tokendo Messvorrichtung für eine video-endoskopische Sonde
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 삼성전자주식회사 수직 및 수평 방향의 패턴을 고려한 전역 움직임 보상순차주사화 방법
WO2005116837A1 (en) 2004-05-26 2005-12-08 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
US7773784B2 (en) 2004-10-15 2010-08-10 University Of Colorado Board Of Regents Revocable biometrics with robust distance metrics
JP2006265087A (ja) 2004-12-13 2006-10-05 Ohara Inc 光学素子用プリフォーム
KR100677548B1 (ko) 2004-12-31 2007-02-02 삼성전자주식회사 복호된 영상의 오류 재은닉 방법 및 그 장치
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 삼성전자주식회사 영상의 대칭성을 이용한 인트라 예측 방법, 이를 이용한영상의 복호화, 부호화 방법 및 장치
US7822278B1 (en) 2005-09-20 2010-10-26 Teradici Corporation Methods and apparatus for encoding a digital video signal
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
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.
AU2006299819B2 (en) 2005-10-12 2011-02-10 Carbonite Gmbh Method and system for data backup
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
BRPI0720806B1 (pt) * 2007-01-18 2023-03-28 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Corrente de dados de vídeo de qualidade escalonável
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
JP4755624B2 (ja) 2007-04-23 2011-08-24 ルネサスエレクトロニクス株式会社 動き補償装置
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 삼성전자주식회사 영상의 해상도의 조정을 통하여 동영상을 효율적으로부호화/복호화하는 방법 및 장치
JP5417342B2 (ja) 2007-12-21 2014-02-12 テレフオンアクチーボラゲット エル エム エリクソン(パブル) ビデオ符号化に対する改善された画素予測
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 삼성전자주식회사 영상 부호화장치 및 영상 복호화장치
WO2009102013A1 (ja) * 2008-02-14 2009-08-20 Nec Corporation 移動ベクトル検出装置
JP2009230537A (ja) 2008-03-24 2009-10-08 Olympus Corp 画像処理装置、画像処理プログラム、画像処理方法、および、電子機器
EP2277317B1 (en) 2008-05-19 2021-01-27 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
WO2010001433A1 (ja) 2008-06-30 2010-01-07 富士通マイクロエレクトロニクス株式会社 メモリ装置及びそれを制御するメモリコントローラ
US8515123B2 (en) 2008-07-03 2013-08-20 Verimatrix, Inc. Efficient watermarking approaches 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
JP5240530B2 (ja) 2008-10-02 2013-07-17 ソニー株式会社 画像処理装置および方法
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
EP2392130A4 (en) 2009-02-02 2013-04-03 Calgary Scient Inc TRANSMISSION OF IMAGE DATA
WO2010090630A1 (en) 2009-02-03 2010-08-12 Thomson Licensing Methods and apparatus for motion compensation with smooth reference frame in bit depth scalability
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
US9113169B2 (en) 2009-05-07 2015-08-18 Qualcomm Incorporated Video encoding with temporally constrained spatial dependency for localized decoding
US8724707B2 (en) 2009-05-07 2014-05-13 Qualcomm Incorporated Video decoding using temporally constrained spatial dependency
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
US9274001B2 (en) 2010-01-22 2016-03-01 Duke University Dual 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
EP2559238B1 (en) 2010-04-13 2015-06-03 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
CN103477635B (zh) * 2010-10-08 2017-01-18 Ge视频压缩有限责任公司 编码器和编码方法与解码器和解码方法
EP4270957A3 (en) 2010-11-04 2024-06-19 GE Video Compression, LLC Picture coding supporting block merging and skip mode
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
CN107360420B (zh) 2011-02-09 2020-11-06 Lg 电子株式会社 一种图像解码装置和图像编码装置
HUE044727T2 (hu) 2011-02-09 2019-11-28 Lg Electronics Inc Eljárás kép adatok kódolására és dekódolására egy ideiglenes mozgás vektor becsléssel és azt alkalmazó készülék
KR20120095610A (ko) 2011-02-21 2012-08-29 삼성전자주식회사 다시점 비디오의 부호화 방법 및 장치, 그 복호화 방법 및 장치
JPWO2012128242A1 (ja) 2011-03-18 2014-07-24 ソニー株式会社 画像処理装置、画像処理方法、及び、プログラム
JP6061150B2 (ja) 2011-03-18 2017-01-18 ソニー株式会社 画像処理装置、画像処理方法、及び、プログラム
US8480743B2 (en) 2011-03-25 2013-07-09 Vicente Vanaclocha Vanaclocha Universal disc prosthesis
WO2012147350A1 (ja) * 2011-04-28 2012-11-01 パナソニック株式会社 高画質化に関わる記録媒体、再生装置、記録装置、符号化方法、復号化方法
US8582886B2 (en) 2011-05-19 2013-11-12 Microsoft Corporation Compression of text contents for display remoting
CN103563374B (zh) 2011-05-27 2017-02-08 索尼公司 图像处理设备及方法
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
US11496760B2 (en) 2011-07-22 2022-11-08 Qualcomm Incorporated Slice header prediction for depth maps in three-dimensional video codecs
US9521418B2 (en) 2011-07-22 2016-12-13 Qualcomm Incorporated Slice header three-dimensional video extension for slice header prediction
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
KR101616010B1 (ko) * 2011-11-04 2016-05-17 구글 테크놀로지 홀딩스 엘엘씨 비균일 움직임 벡터 그리드에 대한 움직임 벡터 스케일링
US10003817B2 (en) * 2011-11-07 2018-06-19 Microsoft Technology Licensing, Llc Signaling of state information for a decoded picture buffer and reference picture lists
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
EP3739886A1 (en) 2011-11-18 2020-11-18 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
US20140003494A1 (en) 2012-01-05 2014-01-02 Yaniv Frishman 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
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
US9979959B2 (en) 2012-04-20 2018-05-22 Qualcomm Incorporated Video coding with enhanced support for stream adaptation and splicing
US9549180B2 (en) 2012-04-20 2017-01-17 Qualcomm Incorporated Disparity vector generation for inter-view prediction for video coding
US9479776B2 (en) 2012-07-02 2016-10-25 Qualcomm Incorporated Signaling of long-term reference pictures for video coding
CA2878807C (en) 2012-07-09 2018-06-12 Vid Scale, Inc. Codec architecture for multiple layer video coding
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 华为技术有限公司 用于运动矢量预测的运动矢量列表建立的方法、装置
CN103916673B (zh) * 2013-01-06 2017-12-22 华为技术有限公司 基于双向预测的编码方法、解码方法和装置
US9225979B1 (en) 2013-01-30 2015-12-29 Google Inc. Remote access encoding
US9578339B2 (en) * 2013-03-05 2017-02-21 Qualcomm Incorporated Parallel processing for video coding
KR20140110221A (ko) * 2013-03-06 2014-09-17 삼성전자주식회사 비디오 인코더, 장면 전환 검출 방법 및 비디오 인코더의 제어 방법
US9201642B2 (en) 2013-03-15 2015-12-01 International Business Machines Corporation Extending platform trust during program updates
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 ルネサスエレクトロニクス株式会社 動画像符号化装置およびその動作方法
EP3061233B1 (en) 2013-10-25 2019-12-11 Microsoft Technology Licensing, LLC Representing blocks with hash values in video and image coding and decoding
EP3061253A1 (en) 2013-10-25 2016-08-31 Microsoft Technology Licensing, LLC Hash-based block matching in video and image coding
WO2015131325A1 (en) 2014-03-04 2015-09-11 Microsoft Technology Licensing, Llc Hash table construction and availability checking for hash-based block matching
US10368092B2 (en) 2014-03-04 2019-07-30 Microsoft Technology Licensing, Llc Encoder-side decisions for block flipping and skip mode in intra block copy prediction
CN105359531B (zh) 2014-03-17 2019-08-06 微软技术许可有限责任公司 用于针对屏幕内容编码的编码器侧判定的方法和***
US9715559B2 (en) 2014-03-17 2017-07-25 Qualcomm Incorporated Hash-based encoder search for intra block copy
US10091512B2 (en) 2014-05-23 2018-10-02 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
CN105706450B (zh) 2014-06-23 2019-07-16 微软技术许可有限责任公司 根据基于散列的块匹配的结果的编码器决定
EP3175614A4 (en) 2014-07-31 2018-03-28 Hewlett-Packard Development Company, L.P. Virtual changes to a real object
KR102358276B1 (ko) 2014-09-30 2022-02-04 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 코딩을 위한 해시 기반 인코더 결정
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 安科智慧城市技术(中国)有限公司 一种视频运动目标跟踪方法及装置
US10681326B2 (en) 2016-05-19 2020-06-09 AVAGO TECHNOLOGlES INTERNATIONAL SALES PTE. LIMITED 360 degree video system with coordinate compression
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
US20180196609A1 (en) 2017-01-12 2018-07-12 Qualcomm Incorporated Data Deduplication Using Multi-Chunk Predictive Encoding
WO2018164955A1 (en) 2017-03-06 2018-09-13 Rivetz Corp. Device enrollment protocol
US10992939B2 (en) 2017-10-23 2021-04-27 Google Llc Directional intra-prediction coding
US10848782B2 (en) 2018-09-21 2020-11-24 Tencent America LLC Method and apparatus for video coding
US11146800B2 (en) 2018-09-24 2021-10-12 Tencent America LLC Low latency local illumination compensation
US11509919B2 (en) 2018-10-17 2022-11-22 Tencent America Reference sample memory size restrictions for intra block copy
US10917493B2 (en) 2018-10-19 2021-02-09 Bby Solutions, Inc. Dynamic edge cache content management
US10701385B1 (en) 2019-01-13 2020-06-30 Tencent America LLC Method and apparatus for reference sample memory reuse for intra picture block compensation
US10771799B2 (en) 2019-01-15 2020-09-08 Tencent America LLC Method and apparatus for video coding
US10958904B2 (en) 2019-02-01 2021-03-23 Tencent America LLC Method and apparatus for video coding
US11252442B2 (en) 2019-04-08 2022-02-15 Tencent America LLC Method and apparatus for video coding
US11363279B2 (en) 2019-04-15 2022-06-14 Tencent America LLC Method and apparatus in video coding with flexible coding order
US11930159B2 (en) 2019-11-29 2024-03-12 Intel Corporation Method and system of video coding with intra block copying
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

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Bin li, et al. Adpative motion vector resolution for screen content, JCT-VC of ITU-T and ISO/IEC. JCTVC-R1006_r1, 2014-06-29, pp. 1-10*

Also Published As

Publication number Publication date
US20170302936A1 (en) 2017-10-19
RU2017110461A3 (ko) 2018-10-04
EP3389276B1 (en) 2021-01-13
CN110582001A (zh) 2019-12-17
RU2017110461A (ru) 2018-10-04
EP3202142A1 (en) 2017-08-09
CN105981382A (zh) 2016-09-28
WO2016049834A1 (en) 2016-04-07
AU2014408223A1 (en) 2017-03-16
EP3202142B1 (en) 2020-11-11
RU2679981C2 (ru) 2019-02-14
CA2961089A1 (en) 2016-04-07
EP3202142A4 (en) 2018-02-28
CN105981382B (zh) 2019-05-28
US11025923B2 (en) 2021-06-01
BR112017004490B1 (pt) 2023-03-14
MX2017004210A (es) 2017-11-15
BR112017004490A2 (pt) 2017-12-05
US11736701B2 (en) 2023-08-22
JP2017535148A (ja) 2017-11-24
EP3416386B1 (en) 2021-01-13
EP3416386A1 (en) 2018-12-19
CA2961089C (en) 2023-03-28
JP6462119B2 (ja) 2019-01-30
EP3389276A1 (en) 2018-10-17
CN115665423A (zh) 2023-01-31
US20210218974A1 (en) 2021-07-15
KR20170063895A (ko) 2017-06-08
CN110582001B (zh) 2022-10-14
AU2014408223B2 (en) 2019-12-05
US20230345013A1 (en) 2023-10-26
KR102358276B1 (ko) 2022-02-04
KR20220019297A (ko) 2022-02-16
CA3186389A1 (en) 2016-04-07

Similar Documents

Publication Publication Date Title
US11736701B2 (en) Hash-based encoder decisions for video coding
KR102287779B1 (ko) 해시 기반의 블록 매칭의 결과에 기초한 인코더 결정
US10136140B2 (en) Encoder-side decisions for screen content encoding
US10567754B2 (en) Hash table construction and availability checking for hash-based block matching
RU2683165C1 (ru) Внутреннее предсказание блочного копирования с асимметричными разделами и схемами поиска на стороне кодера, диапазоны поиска и подходы к разделению
US10368092B2 (en) Encoder-side decisions for block flipping and skip mode in intra block copy prediction

Legal Events

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