KR102369117B1 - 비대칭 구획을 갖는 인트라 블록 카피 예측 및 인코더측 검색 패턴, 검색 범위 및 구획화 접근법 - Google Patents

비대칭 구획을 갖는 인트라 블록 카피 예측 및 인코더측 검색 패턴, 검색 범위 및 구획화 접근법 Download PDF

Info

Publication number
KR102369117B1
KR102369117B1 KR1020167021252A KR20167021252A KR102369117B1 KR 102369117 B1 KR102369117 B1 KR 102369117B1 KR 1020167021252 A KR1020167021252 A KR 1020167021252A KR 20167021252 A KR20167021252 A KR 20167021252A KR 102369117 B1 KR102369117 B1 KR 102369117B1
Authority
KR
South Korea
Prior art keywords
block
partition
current
prediction
frame
Prior art date
Application number
KR1020167021252A
Other languages
English (en)
Other versions
KR20160110961A (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 KR20160110961A publication Critical patent/KR20160110961A/ko
Application granted granted Critical
Publication of KR102369117B1 publication Critical patent/KR102369117B1/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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/162User input
    • 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/167Position within a video image, e.g. region of interest [ROI]
    • 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
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

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

Abstract

인트라 블록 카피("BC") 예측에서의 혁신안뿐만 아니라 인코더측 검색 패턴 및 구획화 접근법에서의 혁신안. 예를 들면, 혁신안 중 몇몇은 인트라 BC 예측을 위한 비대칭 구획의 사용에 관한 것이다. 다른 혁신안은, (인트라 BC 예측을 위한) 블록 벡터 추정 또는 모션 추정 동안 인코더가 사용하는 검색 패턴 또는 접근법에 관한 것이다. 또 다른 혁신안은, BV 예측 동안 수평 또는 수직 편향(bias)을 갖는 BV 검색 범위의 사용에 관한 것이다.

Description

비대칭 구획을 갖는 인트라 블록 카피 예측 및 인코더측 검색 패턴, 검색 범위 및 구획화 접근법{INTRA BLOCK COPY PREDICTION WITH ASYMMETRIC PARTITIONS AND ENCODER-SIDE SEARCH PATTERNS, SEARCH RANGES AND APPROACHES TO PARTITIONING}
본 발명은 비대칭 구획을 갖는 인트라 블록 카피 예측 및 인코더측 검색 패턴, 검색 범위 및 구획화 접근법에 관한 것이다.
배경
엔지니어는 디지털 비디오의 비트 레이트를 감소시키기 위해 압축(소스 코딩 또는 소스 인코딩으로도 또한 칭해짐)을 사용한다. 압축은 정보를 더 낮은 비트 레이트 형태로 변환하는 것에 의해 비디오 정보를 저장 및 송신하는 비용을 감소시킨다. 압축해제(decompression)(디코딩으로도 또한 칭해짐)는 압축된 형태로부터 원래의 정보의 버전을 재구성한다. "코덱"은 인코더/디코더 시스템이다.
지난 이십 여년에 걸쳐, 다양한 비디오 코덱 표준이 채택되었는데, ITU-T H.261, H.262 (MPEG-2 또는 ISO/EC 13818-2), H.263 및 H.264 (MPEG-4 AVC 또는 ISO/IEC 14496-10) 표준, MPEG-1 (ISO/IEC 11172-2) 및 MPEG-4 비주얼(ISO/IEC 14496-2) 표준, 및 SMPTE 421M(VC-1) 표준을 포함한다. 보다 최근에는, H.265/HEVC 표준(ITU-T H.265 또는 ISO/IEC 23008-2)이 승인되었다. (예를 들면, 스케일러블 비디오 코딩/디코딩을 위한, 샘플 비트 깊이 또는 크로마 샘플링 레이트의 관점에서 충실도가 더 높은 비디오의 코딩/디코딩을 위한, 스크린 캡쳐 컨텐츠를 위한, 또는 멀티뷰 코딩/디코딩을 위한) H.265/HEVC 표준에 대한 확장안이 현재 개발 중에 있다. 비디오 코덱 표준은 통상적으로, 인코딩된 비디오 비트스트림의 신택스(syntax)에 대한 옵션을 정의하고, 인코딩 및 디코딩에서 특정 피쳐가 사용되는 경우 비트스트림에서의 파라미터를 상술한다. 많은 경우에서, 비디오 코덱 표준은 또한, 디코딩에서의 일치하는 결과를 달성하기 위해 디코더가 수행해야 하는 디코딩 동작에 관한 상세를 제공한다. 코덱 표준 외에, 다양한 독점적 코덱 포맷은 인코딩된 비디오 비트스트림의 신택스에 대한 다른 옵션 및 대응하는 디코딩 동작을 정의한다.
인트라 블록 카피(block copy; "BC")는 HEVC 확장안에 대해 개발 중에 있는 예측 모드이다. 인트라 BC 예측 모드의 경우, 픽처의 현재 블록의 샘플 값은, 동일 픽처에서 이전에 재구성된 샘플 값을 사용하여 예측된다. 블록 벡터(block vector; "BV")는, 현재 블록으로부터, 예측을 위해 사용되는 이전에 재구성된 샘플 값을 포함하는 픽처의 영역까지의 변위를 나타낸다. BV는 비트스트림에서 시그널링된다. 인트라 BC 예측은 인트라 픽처 예측의 형태이다 - 픽처의 블록에 대한 인트라 BC 예측은 동일 픽처에서의 샘플 값 외에는 어떠한 샘플 값도 사용하지 않는다.
HEVC 표준에서 현재 명시되고 HEVC 표준에 대한 몇몇 참조 소프트웨어(reference software)에서 구현되는 바와 같이, 인트라 BC 예측 모드는 여러 문제점을 갖는다. 특히, 인트라 BC 예측을 위한 블록 사이즈에 대한 옵션도 또한 많은 시나리오에서 제한되며, 블록 사이즈 및 인트라 BC 예측을 어떻게 사용할지에 관한 인코더측 결정이 많은 시나리오에서 효율적으로 이루어지지 않는다.
개요
요약하면, 상세한 설명은 인트라 블록 카피("BC") 예측에서의 혁신안뿐만 아니라 인코더측 검색 패턴, 검색 범위 및 구획화 접근법(approach to partitioning)에서의 혁신안을 제시한다. 예를 들면, 혁신안 중 몇몇은 인트라 BC 예측을 위한 비대칭 구획(asymmetric partition)(종종 "AMP"로 칭해짐)의 사용에 관한 것이다. 다른 혁신안은, (인트라 BC 예측을 위한) 블록 벡터(block vector; "BV") 추정 또는 모션 추정 동안 인코더가 사용하는 검색 패턴 또는 접근법에 관한 것이다. 또 다른 혁신안은, BV 예측 동안 수평 또는 수직 편향(bias)을 갖는 BV 검색 범위의 사용에 관한 것이다.
본원에서 설명되는 혁신안 중 제1 양태에 따르면, 이미지 인코더 또는 비디오 인코더는 이미지 또는 비디오를 인코딩하여 인코딩된 데이터를 생성하고, 인코딩된 데이터를 비트스트림의 일부로서 출력한다. 인코딩의 일부로서, 인코더는, 인트라 BC 예측을 위해 비대칭적으로 구획되는 현재 블록에 대해 인트라 BC 예측을 수행한다. 예를 들면, 현재 블록은 2N×2N 블록이고, 현재 블록은 (1) 2N×N/2 블록과 2N×3N/2 블록으로 구획되거나 또는 (2) 2N×3N/2 블록과 2N×N/2 블록으로 구획된다. 또는, 다른 예로서, 현재 블록은 2N×2N 블록이고, 현재 블록은 (1) N/2×2N 블록과 3N/2×2N으로 구획되거나 또는 (2) 3N/2×2N 블록과 N/2×2N 블록으로 구획된다. 보다 일반적으로는, 비대칭 구획화의 경우, 현재 블록은 상이한 치수를 갖는 두 개의 구획으로 분할될 수 있다. 인코딩의 일부로서, 인코더는 또한, 인트라 BC 예측을 위해 대칭적으로 구획되는 다른 블록에 대해 인트라 BC 예측을 수행할 수 있다. 예를 들면, 다른 블록은, (1) 두 개의 2N×N 블록으로 구획되거나, (2) 두 개의 N×2N으로 구획되거나, 또는 (3) 네 개의 N×N 블록으로 구획되는 2N×2N 블록인데, 네 개의 N×N 블록 각각은 두 개의 N×N/2 블록, 두 개의 N/2×N 블록 또는 네 개의 N/2×N/2 블록으로 더 구획될 수 있다. 보다 일반적으로는, 대칭 구획화의 경우, 다른 블록은 동일한 치수를 갖는 구획으로 더 분할될 수 있다.
본원에서 설명되는 혁신안 중 제2 양태에 따르면, 이미지 디코더 또는 비디오 디코더는 인코딩된 데이터를 비트스트림의 일부로서 수신하고 인코딩된 데이터를 디코딩하여 이미지 또는 비디오를 재구성한다. 디코딩의 일부로서, 디코더는, 인트라 BC 예측을 위해 비대칭적으로 구획되는 현재 블록에 대해 인트라 BC 예측을 수행한다. 예를 들면, 현재 블록은 2N×2N 블록이고, 현재 블록은 (1) 2N×N/2 블록과 2N×3N/2 블록으로 구획되거나 또는 (2) 2N×3N/2 블록과 2N×N/2 블록으로 구획된다. 또는, 다른 예로서, 현재 블록은 2N×2N 블록이고, 현재 블록은 (1) N/2×2N 블록과 3N/2×2N으로 구획되거나 또는 (2) 3N/2×2N 블록과 N/2×2N 블록으로 구획된다. 보다 일반적으로는, 비대칭 구획화의 경우, 현재 블록은 상이한 치수를 갖는 두 개의 구획으로 분할될 수 있다. 디코딩의 일부로서, 디코더는 또한, 인트라 BC 예측을 위해 대칭적으로 구획되는 다른 블록에 대해 인트라 BC 예측을 수행할 수 있다. 예를 들면, 다른 블록은, (1) 두 개의 2N×N 블록으로 구획되거나, (2) 두 개의 N×2N으로 구획되거나, 또는 (3) 네 개의 N×N 블록으로 구획되는 2N×2N 블록인데, 네 개의 N×N 블록 각각은 두 개의 N×N/2 블록, 두 개의 N/2×N 블록 또는 네 개의 N/2×N/2 블록으로 더 구획될 수 있다. 보다 일반적으로는, 대칭 구획화의 경우, 다른 블록은 동일한 치수를 갖는 구획으로 더 분할될 수 있다.
본원에서 설명되는 혁신안 중 제3 양태에 따르면, 이미지 인코더 또는 비디오 인코더는 이미지 또는 비디오를 인코딩하여 인코딩된 데이터를 생성하고, 인코딩된 데이터를 비트스트림의 일부로서 출력한다. 인코딩의 일부로서, 인코더는 현재 픽처의 현재 블록(예를 들면, 예측 단위의 현재 블록)에 대한 예측치를 계산한다. 예측치는 인트라 BC 예측을 위한 BV 추정 또는 모션 추정에 대한 것일 수 있다. 어느 경우든, 예측치를 계산하는 것은 현재 블록의 구획을 식별하기 위해 상향식 접근법(bottom-up approach)을 사용한다. 일반적으로, 현재 블록에 대한 구획은, 상이한 치수를 갖는 두 개 이상의 구획을 포함한다. 예를 들면, 현재 블록은 2N×2N 블록이고, 상향식 접근법은: (a) 2N×2N 블록의 N×N 블록마다 모드를 체크하는 것; (b) 각각의 N×N 블록에 대한 최상의 모드를 선택하는 것; (c) 각각의 N×N 블록에 대한 벡터 값을 캐싱하는 것; (d) 캐싱된 벡터 값을 사용하는 것을 포함해서, 2N×2N 블록에 대한 2N 치수를 갖는 모드를 체크하는 것; (e) 2N×2N 블록에 대한 2N 치수를 갖는 최상의 모드를 선택하는 것; 및 (f) 2N×2N 블록에 대한 2N 치수를 갖는 최상의 모드와 2N×2N 블록의 각각의 N×N 블록에 대한 선택된 최상의 모드 사이에서 선택하는 것을 포함한다. 또는 다른 예로서, 현재 블록은 2N×2N 블록이고, 상향식 접근법은: (a) 2N×2N 블록의 N×N 블록마다 모드의 서브셋을 체크하는 것; (b) 각각의 N×N 블록에 대한 벡터 값을 캐싱하는 것; (c) 캐싱된 벡터 값을 포함해서, 2N×2N 블록에 대한 2N 치수를 갖는 모드의 서브셋을 체크하는 것; (d) 2N×2N 블록에 대한 2N 치수를 갖는 최상의 모드를 선택하는 것; 및 (e) 2N×2N 블록에 대한 2N 치수를 갖는 최상의 모드와 각각의 N×N 블록에 대한 최상의 모드 사이에서 선택하는 것을 포함한다.
본원에서 설명되는 혁신안 중 제4 양태에 따르면, 이미지 인코더 또는 비디오 인코더는 이미지 또는 비디오를 인코딩하여 인코딩된 데이터를 생성하고, 인코딩된 데이터를 비트스트림의 일부로서 출력한다. 인코딩의 일부로서, 인코더는 현재 픽처의 현재 블록에 대한 예측치를 계산한다. 예측치는 인트라 BC 예측을 위한 BV 추정 또는 모션 추정에 대한 것일 수 있다. 어느 경우든, 예측치를 계산하는 것은 (a) 현재의 최상의 위치 근처의 적은 이웃(예를 들면, 현재 최상의 위치에 수평으로 또는 수직으로 바로 인접하는 위치)에서 반복적인 평가를 통해 예측을 위한 현재의 최상의 위치를 식별하는 것; 및 (b) 현재의 최상의 위치 근처에서 연속적으로 더 큰 이웃(예를 들면, 적은 이웃 바깥쪽의 링(ring)에 있는 위치)에서의 반복적인 평가를 통해 현재의 최상의 위치를 확증하는(confirming) 것을 포함한다. 예를 들면, 현재의 최상의 위치가 더 큰 이웃 중 하나에 있는 위치보다 더 나쁜 경우, 인코더는 현재의 최상의 위치를 대체하고 식별하는 것 및 확증하는 것을 반복한다. 확증 스테이지는, 연속적으로 더 큰 이웃에서의 평가 반복의 임계 횟수가 도달되면 정지할 수 있다.
본원에서 설명되는 혁신안의 제 5 양태에 따르면, 이미지 인코더 또는 비디오 인코더는 픽처의 현재 블록에 대한 BV를 결정하고, BV를 사용하여 현재 블록에 대한 인트라 BC 예측을 수행하고, BV를 인코딩한다. BV는 픽처 내의 한 영역까지의 변위를 나타낸다. BV를 결정할 때, 인코더는, 그 영역이 수평 편향 또는 수직 편향을 갖는 BV 검색 범위 내에 있다는 제약을 체크한다. 인코더는, 예를 들면, 하나 이상의 이전 블록의 BV 값에 적어도 부분적으로 의존하여, 다수의 이용가능한 BV 검색 범위 중에서 BV 검색 범위를 선택할 수 있는데, 하나 이상의 이전 블록의 BV 값은 히스토그램 데이터 구조에서 추적될 수 있다.
본원에서 설명되는 혁신안 중 제6 양태에 따르면, 이미지 인코더 또는 비디오 인코더는 인트라 BC 예측을 사용하여 픽처에 대한 데이터를 인코딩하고, 인코딩된 데이터를 비트스트림의 일부로서 출력한다. 인코딩의 일부로서, 인코더는 수평 또는 수직 편향을 갖는 BV 검색 범위를 사용하여 BV 추정 동작을 수행한다. 인코더는, 예를 들면, 하나 이상의 이전 블록의 BV 값에 적어도 부분적으로 의존하여, 다수의 이용가능한 BV 검색 범위 중에서 BV 검색 범위를 선택할 수 있는데, 하나 이상의 이전 블록의 BV 값은 히스토그램 데이터 구조에서 추적될 수 있다.
혁신안은, 한 방법의 일부로서, 그 방법을 수행하도록 적응되는 컴퓨팅 디바이스의 일부로서 또는 컴퓨팅 디바이스로 하여금 그 방법을 수행하게 하기 위한 컴퓨터 실행가능 명령어를 저장하는 유형의(tangible) 컴퓨터 판독가능 매체의 일부로서 구현될 수 있다. 다양한 혁신안은 조합하여 또는 개별적으로 사용될 수 있다.
본 발명의 상기 및 다른 목적, 피쳐, 및 이점은, 첨부의 도면을 참조로 진행하는 하기의 상세한 설명으로부터 더욱 명확하게 될 것이다.
도면의 간단한 설명
도 1은 몇몇 설명된 실시형태가 구현될 수 있는 예시적인 컴퓨팅 시스템의 도면이다.
도 2a 및 도 2b는 몇몇 설명된 실시형태가 구현될 수 있는 예시적인 네트워크 환경의 도면이다.
도 3은 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 인코더 시스템의 도면이다.
도 4는 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 디코더 시스템의 도면이다.
도 5a 및 도 5b는 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 비디오 인코더를 예시하는 도면이다.
도 6은 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 비디오 디코더를 예시하는 도면이다.
도 7 및 도 8은 픽처의 블록에 대한 인트라 BC 예측 및 블록 매칭에서의 블록에 대한 후보 블록을 예시하는 도면이다.
도 9는, 몇몇 비대칭 구획 및 몇몇 대칭 구획을 포함해서, 인트라 BC 예측을 위한 예시적인 블록 사이즈를 예시하는 도면이다.
도 10 및 도 11은, 각각, 비대칭 구획을 갖는 인트라 BC 예측을 포함하는 인코딩 및 디코딩을 위한 일반화된 기술이다.
도 12는 픽처의 블록에 대한 모션 추정을 예시하는 도면이다.
도 13은 인트라 BC 예측된 블록을 구획화하는 하향식 접근법(top-down approach)을 예시하는 플로우차트 및 수반하는 도면이다.
도 14는, 상향식 구획화 접근법을 사용하기 위한 일반화된 기술을 예시하는 플로우차트이다.
도 15는 인트라 BC 예측된 블록을 구획화하는 상향식 접근법을 예시하는 플로우차트 및 수반하는 도면이다.
도 16은 인트라 BC 예측된 블록을 구획화하는 더욱 빠른 상향식 접근법을 예시하는 플로우차트 및 수반하는 도면이다.
도 17은 적은 이웃(들)에서의 한 위치의 반복적 평가 및 더 큰 이웃(들)에서의 그 위치의 반복적 확증을 사용하여 블록에 대한 BV 값 또는 MV 값을 검색하기 위한 일반화된 기술을 예시하는 플로우차트이다.
도 18a 및 도 18b는, 블록에 대한 BV 값 또는 MV 값을 검색할 때, 적은 이웃에서의 한 위치의 반복적 평가를 예시하는 도면이다.
도 19는, 블록에 대한 BV 값 또는 MV 값을 검색할 때, 하나 이상의 더 큰 이웃에서의 한 위치의 반복적 확증을 예시하는 도면이다.
도 20은 적은 이웃(들)에서의 한 위치의 반복적 평가 및 더 큰 이웃(들)에서의 그 위치의 반복적 확증을 사용하여 블록에 대한 BV 값 또는 MV 값을 검색하기 위한 예시적인 기술을 예시하는 플로우차트이다.
도 21a 내지 도 21e는 BV 값에 대한 검색 범위에 관한 예시적인 제약을 예시하는 도면이다.
도 22는, BV 값의 선택에 관한 하나 이상의 제약에 종속하는, 인트라 BC 예측 모드를 이용하여 인코딩하기 위한 일반화된 기술을 예시하는 플로우차트이다.
도 23은 픽처의 블록에 대한 예시적인 z 스캔 순서를 예시하는 도면이다.
상세한 설명
상세한 설명은 인트라 블록 카피("BC") 예측에서의 혁신안뿐만 아니라 인코더측 검색 패턴, 검색 범위 및 구획화 접근법에서의 혁신안을 제시한다. 예를 들면, 혁신안 중 몇몇은 인코딩 및/또는 디코딩 동안 인트라 BC 예측을 위한 비대칭 구획(종종 "AMP"로 칭해짐)의 사용에 관한 것이다. 다른 혁신안은, (인트라 BC 예측을 위한) 블록 벡터(block vector; "BV") 추정 또는 모션 추정 동안 인코더가 사용하는 검색 패턴 또는 접근법에 관한 것이다. 또 다른 혁신안은, BV 예측 동안 수평 또는 수직 편향(bias)을 갖는 BV 검색 범위의 사용에 관한 것이다.
본원에서 설명되는 동작이 비디오 인코더 또는 비디오 디코더에 의해 수행되고 있는 것으로 여기저기에 설명되지만, 많은 경우에서, 동작은 다른 타입의 미디어 프로세싱 툴(예를 들면, 이미지 인코더, 이미지 디코더)에 의해 수행될 수 있다.
본원에서 설명되는 혁신안 중 몇몇은 H.265/HEVC 표준에 고유한 신택스 엘리먼트 및 동작을 참조로 예시된다. 예를 들면, H.265/HEVC 표준의 드래프트 버전 JCTVC-P1005 - 2014년 2월의 JCTVC-P1005_v1 "High Efficiency Video Coding (HEVC) Range Extensions Text Specification: Draft 6"에 대한 참조가 이루어진다. 본원에서 설명되는 혁신안은 또한, 다른 표준 또는 포맷에 대해 구현될 수 있다.
본원에서 설명되는 혁신안 중 많은 것은, 스크린 캡쳐 컨텐츠와 같은 소정의 "인공적으로 생성된(artificially-created)" 비디오 컨텐츠를 인코딩할 때 레이트-왜곡 성능을 향상시킬 수 있다. 일반적으로, 스크린 캡쳐 비디오(스크린 컨텐츠 비디오로도 또한 칭해짐)는, 카메라 캡쳐 비디오 컨텐츠만을 대상으로 하는 것과는 반대로, 렌더링된 텍스트, 컴퓨터 그래픽, 애니메이션 생성 컨텐츠 또는, 컴퓨터 디스플레이로 렌더링될 때 캡쳐되는 다른 유사한 타입의 컨텐츠를 포함하는 비디오이다. 스크린 캡쳐 컨텐츠는 통상적으로 반복된 구조(예를 들면, 그래픽, 텍스트 문자)를 포함한다. 스크린 캡쳐 컨텐츠는, 일반적으로, 높은 크로마 샘플링 해상도를 갖는 포맷(예를 들면, 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)는, 비대칭 구획을 갖는 인트라 BC 예측에 대한 하나 이상의 혁신안 및/또는 인코더측 검색 패턴, 수평 또는 수직 편향을 갖는 검색 범위 및/또는 구획화 접근법에 대한 하나 이상의 혁신안을 구현하는 소프트웨어(180)를, 프로세싱 유닛(들)에 의한 실행에 적합한 컴퓨터 실행가능 명령어의 형태로 저장한다.
컴퓨팅 시스템은 추가적인 피쳐를 구비할 수도 있다. 예를 들면, 컴퓨팅 시스템(100)은 스토리지(140), 하나 이상의 입력 디바이스(150), 하나 이상의 출력 디바이스(160), 및 하나 이상의 통신 연결부(170)를 포함한다. 인터커넥션 메커니즘(interconnection mechanism)(도시되지 않음), 예컨대 버스, 컨트롤러, 또는 네트워크는 컴퓨팅 시스템(100)의 컴포넌트를 인터커넥트한다. 통상적으로, 오퍼레이팅 시스템 소프트웨어(도시되지 않음)는 컴퓨팅 시스템(100)에서 실행하는 다른 소프트웨어에 대한 동작 환경을 제공하고, 컴퓨팅 시스템(100)의 컴포넌트의 활동을 조화시킨다(coordinate).
유형의 스토리지(140)는 착탈식 또는 비착탈식일 수도 있고, 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, DVD, 또는 정보를 저장하기 위해 사용될 수 있고 컴퓨팅 시스템(100) 내에서 액세스될 수 있는 임의의 다른 매체를 포함한다. 스토리지(140)는 비대칭 구획을 갖는 인트라 BC 예측에 대한 하나 이상의 혁신안 및/또는 인코더측 검색 패턴, 검색 범위 및/또는 구획화 접근법에 대한 하나 이상의 혁신안을 구현하는 소프트웨어(180)에 대한 명령어를 저장한다.
입력 디바이스(들)(150)는 터치 입력 디바이스 예컨대 키보드, 마우스, 펜, 또는 트랙볼, 음성 입력 디바이스, 스캐닝 디바이스, 또는 컴퓨팅 시스템(100)으로 입력을 제공하는 다른 디바이스일 수도 있다. 비디오의 경우, 입력 디바이스(들)(150)는 카메라, 비디오 카드, TV 튜너 카드, 스크린 캡쳐 모듈, 또는 비디오 입력을 아날로그 또는 디지털 형태로 받아들이는 유사한 디바이스, 또는 비디오 입력을 컴퓨팅 시스템(100) 안으로 읽어들이는 CD-ROM 또는 CD-RW일 수도 있다. 출력 디바이스(들)(160)는 디스플레이, 프린터, 스피커, CD-라이터, 또는 컴퓨팅 시스템(100)으로부터의 출력을 제공하는 다른 디바이스일 수도 있다.
통신 연결부(들)(170)는 통신 매체를 통한 다른 통신 엔티티로의 통신을 가능하게 한다. 통신 매체는 컴퓨터 실행가능 명령어, 오디오 또는 비디오 입력 또는 출력, 또는 변조된 데이터 신호에서의 다른 데이터와 같은 정보를 전달한다. 변조된 데이터 신호는, 자신의 특성 중 하나 이상을, 신호에서 정보를 인코딩하는 것과 같은 방식으로 설정하거나 변경한 신호를 의미한다. 비제한적인 예로서, 통신 매체는 전기적 캐리어, 광학적 캐리어, RF 캐리어, 또는 다른 캐리어를 사용할 수 있다.
혁신안은 컴퓨터 판독가능 매체의 일반적 맥락에서 설명될 수 있다. 컴퓨터 판독가능 매체는, 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 이용가능한 유형의 매체이다. 비제한적인 예로서, 컴퓨팅 시스템(100)과 관련하여, 컴퓨터 판독가능 매체는 메모리(120, 125), 스토리지(140), 및 상기 중 임의의 것의 조합을 포함한다.
혁신안은, 컴퓨팅 시스템에서 타겟인 실제 또는 가상의 프로세서 상에서 실행되고 있는, 프로그램 모듈에 포함되는 것과 같은 컴퓨터 실행가능 명령어의 일반적 맥락에서 설명될 수 있다. 일반적으로, 프로그램 모듈은, 특정한 태스크를 수행하거나 또는 특정한 추상 데이터 타입을 구현하는 루틴, 프로그램, 라이브러리, 오브젝트, 클래스, 컴포넌트, 데이터 구조 등등을 포함한다. 프로그램 모듈의 기능성은 다양한 실시형태에서 소망되는 바에 따라 프로그램 모듈 사이에서 분할되거나 또는 결합될 수도 있다. 프로그램 모듈에 대한 컴퓨터 실행가능 명령어는 로컬 컴퓨팅 시스템 또는 분산형 컴퓨팅 시스템 내에서 실행될 수도 있다.
용어 "시스템" 및 "디바이스"는 본원에서 상호교환적으로 사용된다. 문맥상 그렇지 않다고 명확하게 나타내지 않는 한, 어떠한 용어도 컴퓨팅 디바이스 또는 컴퓨팅 시스템의 타입에 대해 아무런 제한도 내포하지 않는다. 일반적으로, 컴퓨팅 시스템 또는 컴퓨팅 디바이스는 로컬이거나 또는 분산될 수도 있으며, 본원에서 설명되는 기능성을 구현하는 소프트웨어와의 특수 목적의 하드웨어 및/또는 범용 하드웨어의 임의의 조합을 포함할 수 있다.
개시된 방법은 또한, 개시된 방법 중 임의의 것을 수행하도록 구성되는 특수한 컴퓨팅 하드웨어를 사용하여 구현될 수 있다. 예를 들면, 개시된 방법은, 개시된 방법 중 임의의 것을 구현하도록 특별하게 설계되거나 구성되는 집적 회로(예를 들면, ASIC(예컨대 ASIC 디지털 신호 프로세싱 유닛(digital signal process unit; "DSP"), 그래픽 프로세싱 유닛(graphics processing unit; "GPU"), 또는 프로그래머블 로직 디바이스(programmable logic device; "PLD"), 예컨대 필드 프로그래머블 게이트 어레이(field programmable gate array; "FPGA")))에 의해 구현될 수 있다.
표현 때문에, 상세한 설명은, 컴퓨팅 시스템에서의 컴퓨터 동작을 설명하기 위해, "결정한다" 및 "사용한다"와 같은 용어를 사용한다. 이들 용어는 컴퓨터에 의해 수행되는 동작에 대한 하이 레벨의 추상개념이며 사람에 의해 수행되는 행위와 혼돈되어선 안된다. 이들 용어에 대응하는 실제 컴퓨터 동작은 구현예에 따라 달라진다. 코딩 옵션을 설명하기 위해 본원에서 사용되는 바와 같이, (구획화를 위한 "최상의 위치", "최상의 모드" 또는 "최상의 조합"에서와 같은) 용어 "최상의"는, 왜곡 비용(distortion cost), 비트 레이트 비용(bit rate cost) 또는 왜곡 비용 및 비트 레이트 비용의 몇몇 조합의 관점에서, 추정된 코딩 효율성 또는 실제 코딩 효율성에 관한, 다른 코딩 옵션과 비교한 바람직한 코딩 옵션을 나타낸다. 왜곡 비용에 대해 임의의 이용가능한 왜곡 메트릭이 사용될 수 있다. 비트 레이트 비용에 대해 임의의 이용가능한 비트 레이트 메트릭이 사용될 수 있다. 어떤 코딩 옵션이 "최상"인지에 관한 결정에 다른 인자(예컨대 알고리즘 코딩 복잡성, 알고리즘 디코딩 복잡성, 리소스 사용량 및/또는 지연)가 또한 영향을 끼칠 수 있다.
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)에 의한 디코딩을 관리한다. 도 4는 실시간 통신 툴(210)에 포함될 수 있는 예시적인 디코더 시스템(400)을 도시한다. 대안적으로, 실시간 통신 툴(210)은 다른 디코더 시스템을 사용한다.
도 2b에서 도시되는 네트워크 환경(202)에서, 인코딩 툴(212)은, 디코더(270)를 포함하는 다수의 재생 툴(214)로 전달하기 위해 비디오를 인코딩하는 인코더(220)를 포함한다. 단방향 통신은, 비디오 감시 시스템, 웹 카메라 모니터링 시스템, 스크린 캡쳐 모듈, 원격 데스크탑 회의 프리젠테이션 또는 비디오가 인코딩되어 한 장소에서 하나 이상의 다른 장소로 전송되는 다른 시나리오에 대해 제공될 수 있다. 도 2b의 네트워크 환경(202)이 두 개의 재생 툴(214)을 포함하지만, 네트워크 환경(202)은 더 많은 또는 더 적은 재생 툴(214)을 포함할 수 있다. 일반적으로, 재생 툴(214)은, 재생 툴(214)이 수신할 비디오의 스트림을 결정하기 위해 인코딩 툴(212)과 통신한다. 재생 툴(214)은 스트림을 수신하고, 수신된 인코딩된 데이터를 적절한 기간 동안 버퍼링하고, 디코딩 및 재생을 시작한다.
도 3은 인코딩 툴(212)에 포함될 수 있는 예시적인 인코더 시스템(300)을 도시한다. 대안적으로, 인코딩 툴(212)은 다른 인코더 시스템을 사용한다. 인코딩 툴(212)은 또한, 하나 이상의 재생 툴(214)과의 연결을 관리하기 위한 서버측 컨트롤러 로직을 포함할 수 있다. 도 4는, 재생 툴(214)에 포함될 수 있는 예시적인 디코더 시스템(400)을 도시한다. 대안적으로, 재생 툴(214)은 다른 디코더 시스템을 사용한다. 재생 툴(214)은 또한, 인코딩 툴(212)과의 연결을 관리하기 위한 클라이언트측 컨트롤러 로직을 포함할 수 있다.
III. 예시적인 인코더 시스템.
도 3은 몇몇 설명된 실시형태가 연계하여 구현될 수도 있는 예시적인 인코더 시스템(300)의 블록도이다. 인코더 시스템(300)은, 다수의 인코딩 모드 예컨대 실시간 통신을 위한 로우 레이턴시(low-latency) 인코딩 모드, 트랜스코딩 모드, 및 파일 또는 스트림으로부터 재생용 미디어를 생성하기 위한 더 높은 레이턴시의 인코딩 모드 중 임의의 것에서 동작할 수 있는 범용 인코딩 툴일 수 있거나, 또는 인코더 시스템(300)은 하나의 이러한 인코딩 모드에 대해 적응되는 특수 목적의 인코딩 툴일 수 있다. 인코더 시스템(300)은 특정한 타입의 컨텐츠(예를 들면, 스크린 캡쳐 컨텐츠)의 인코딩을 위해 적응될 수 있다. 인코더 시스템(300)은 오퍼레이팅 시스템 모듈로서, 애플리케이션 라이브러리의 일부로서 또는 독립형 애플리케이션으로서 구현될 수 있다. 종합하면, 인코더 시스템(300)은 비디오 소스(310)로부터 소스 비디오 프레임(311)의 시퀀스를 수신하고 인코딩된 데이터를 채널(390)로의 출력으로서 생성한다. 채널로 출력되는 인코딩된 데이터는, 인트라 BC 예측 모드를 사용하여 인코딩된 컨텐츠를 포함할 수 있다.
비디오 소스(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)는 디코더에게, 어떤 재구성된 프레임이 참조 프레임으로서 사용될 수도 있는지를 나타내고, 따라서 프레임 저장 영역에 저장되어야 한다.
일반적으로, 인코더(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)는, 프레임 경계와 함께, 프레임 내에서의 타일의 수평 및 수직 경계를 정의하는 타일 행(row) 및 타일 열(column)을 따라 프레임을 분할하는데, 이 경우 각각의 타일은 직사각형 영역이다. 타일은 종종 병렬 프로세싱을 위한 옵션을 제공하기 위해 사용된다. 프레임은 또한 하나 이상의 슬라이스로서 편제될(organized) 수 있는데, 이 경우 슬라이스는 전체 프레임 또는 프레임의 영역일 수 있다. 슬라이스는 프레임의 다른 슬라이스와는 무관하게 디코딩될 수 있는데, 슬라이스가 프레임의 다른 슬라이스와는 무관하게 디코딩되는 것은 에러 복원성(error resilience)을 향상시킨다. 슬라이스 또는 타일의 컨텐츠는 인코딩 및 디코딩의 목적을 위해 블록 또는 샘플 값의 다른 세트로 더 구획된다.
H.265/HEVC 표준에 따른 신택스의 경우, 인코더는 프레임(또는 슬라이스 또는 타일)의 컨텐츠를 코딩 트리 단위로 분할한다. 코딩 트리 단위(coding tree unit; "CTU")는 루마 코딩 트리 블록(luma coding tree block; "CTB")으로 편제되는 루마 샘플 값 및 두 개의 크로마 CTB로 편제되는 대응하는 크로마 샘플 값을 포함한다. CTU(및 CTU의 CTB)의 사이즈는 인코더에 의해 선택된다. 루마 CTB는, 예를 들면, 64×64, 32×32 또는 16×16 루마 샘플 값을 포함할 수 있다. CTU는 하나 이상의 코딩 단위를 포함한다. 코딩 단위(coding unit; "CU")는 루마 코딩 블록(coding block; "CB") 및 두 개의 대응하는 크로마 CB를 구비한다. 예를 들면, 64×64 루마 CTB 및 두 개의 64×64 크로마 CTB를 갖는 CTU(YUV 4:4:4 포맷)는, 각각의 CU가 32×32 루마 CB 및 두 개의 32×32 크로마 CB를 포함하면서, 그리고 각각의 CU가 어쩌면 더 작은 CU로 더 분할되면서, 네 개의 CU로 분할될 수 있다. 또는, 다른 예로서, 64×64 루마 CTB 및 두 개의 32×32 크로마 CTB를 갖는 CTU(YUV 4:2:0 포맷)는, 각각의 CU가 32×32 루마 CB 및 두 개의 16×16 크로마 CB를 포함하면서, 그리고 각각의 CU가 어쩌면 더 작은 CU로 더 분할되면서, 네 개의 CU로 분할될 수 있다. CU의 가장 작은 허용가능한 사이즈(예를 들면, 8×8, 16×16)는 비트스트림에서 시그널링될 수 있다.
일반적으로, CU는 인터 또는 인트라와 같은 예측 모드를 갖는다. CU는 예측 정보(예컨대 예측 모드 상세, 변위 값 등등) 및/또는 예측 프로세싱을 시그널링하는 목적을 위한 하나 이상의 예측 단위를 포함한다. 예측 단위(prediction unit; "PU")는 루마 예측 블록(prediction block; "PB") 및 두 개의 크로마 PB를 구비한다. H.265/HEVC 표준에 따르면, 인트라 예측된 CU의 경우, CU가 최소 사이즈(예를 들면, 8×8)를 갖지 않는 한, PU는 CU와 동일한 사이즈를 갖는다. 그 경우, CU는 네 개의 더 작은 PU(예를 들면, 인트라 예측의 경우, 최소 CU 사이즈가 8×8이면 각각 4×4)로 분할될 수 있거나 또는 PU는, CU에 대한 신택스 엘리먼트에 의해 나타내어지는 바와 같이, 최소 CU 사이즈를 가질 수 있다. 그러나, 인트라 BC 예측에서 사용되는 비대칭 구획의 경우, CU는 도 9에서 도시되는 바와 같이 다수의 PU로 분할될 수 있다. 이 경우, 더 큰 CU(예를 들면, 64×64, 32×32 또는 16×16) 또는 최소 사이즈(예를 들면, 8×8)의 CU는 다수의 PU로 분할될 수 있다.
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)에서의 다른 이전에 재구성된 샘플 값으로부터의 예측의 관점에서 나타낸다. 인트라 BC 예측의 경우, 인트라 픽처 추정기(intra-picture estimator)는, 다른 이전에 재구성된 샘플 값에 대한 한 블록의 변위를 추정한다. 인트라 예측 참조 영역은, 블록에 대한 BC 예측 값을 생성하기 위해 사용되는, 프레임에서의 샘플 값의 영역이다. 인트라 프레임 예측 영역은 블록 벡터("BV") 값(BV 추정에서 결정됨)으로 나타내어질 수 있다. 인트라 픽처 인코딩 동안 결정을 행하는 예시적인 접근법이 하기에서 설명된다. 구현예에 따라서, 인코더는 입력 샘플 값 또는 재구성된 샘플 값(동일한 픽처에서 이전에 인코딩된 샘플 값)을 사용하여 블록에 대한 BV 추정을 수행할 수 있다. 추가 상세를 위해서는, 섹션 V의 BV 추정의 설명을 참조한다.
블록에 대한 인트라 공간 예측의 경우, 인트라 픽처 추정기는, 이웃하는 재구성된 샘플 값의 블록으로의 외삽(extrapolation)을 추정한다. 인트라 픽처 추정기는 예측 정보(예컨대 인트라 BC 예측을 위한 BV 값, 또는 인트라 공간 예측을 위한 예측 모드(방향))를 출력할 수 있는데, 예측 정보는 엔트로피 코딩된다. 인트라 프레임 예측 예측기(intra-prediction predictor)는 인트라 예측 값을 결정하기 위해 예측 정보를 적용한다.
인코더(340)는, 소스 프레임(331)의 인터 프레임 코딩되고 예측된 블록을, 참조 프레임으로부터의 예측의 관점에서 나타낸다. 모션 추정기는 하나 이상의 참조 프레임(369)에 대한 블록의 모션을 추정한다. 다수의 참조 프레임이 사용되는 경우, 다수의 참조 프레임은 상이한 시간적 방향 또는 동일한 시간적 방향으로부터 유래할 수 있다. 모션 보상된 예측 참조 영역은, 현재 프레임의 샘플 값의 블록에 대한 모션 보상된 예측 값을 생성하기 위해 사용되는, 참조 프레임(들)에서의 샘플 값의 영역이다. 모션 추정기는 모션 벡터("MV") 정보와 같은 모션 정보를 출력하는데, 모션 정보는 엔트로피 코딩된다. 모션 보상기는 참조 프레임(369)에 MV를 적용하여 인터 프레임 예측을 위한 모션 보상된 예측 값을 결정한다. 인터 픽처 인코딩 동안 결정을 행하는 예시적인 접근법이 하기에서 설명된다.
인코더는 블록의 예측 값(인트라 또는 인터)과 대응하는 원래의 값 사이의 차이를 (만약 존재한다면) 결정할 수 있다. 이들 예측 잔차 값은 또한, 주파수 변환(예를 들면, 주파수 변환이 스킵되지 않은 경우), 양자화 및 엔트로피 인코딩을 사용하여 인코딩된다. 예를 들면, 인코더(340)는, 비디오의 픽처, 타일, 슬라이스 및/또는 다른 부분에 대한 양자화 파라미터(quantization parameter; "QP")에 대한 값을 설정하고, 상응하여 변환 계수를 양자화한다. 인코더(340)의 엔트로피 코더는 양자화된 변환 계수 값뿐만 아니라 소정의 부가 정보(side information)(예를 들면, MV 정보, BV 예측자(predictor)에 대한 인덱스 값, BV 차이, 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)" 필터링). 3루프 내 필터링 동작(in-loop filtering operation)으로서, 다른 필터링(예컨대 디링잉 필터링(de-ringing filtering), 적응적 루프 필터링(adaptive loop filtering; "ALF"), 또는 샘플 적응 오프셋(sample-adaptive offset; "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. 예시적인 디코더 시스템.
도 4는 몇몇 설명된 실시형태가 연계하여 구현될 수도 있는 예시적인 디코더 시스템(400)의 블록도이다. 디코더 시스템(400)은, 다수의 디코딩 모드 예컨대 실시간 통신을 위한 로우 레이턴시 인코딩 모드 및 파일 또는 스트림으로부터의 미디어 재생을 위한 더 높은 레이턴시의 디코딩 모드 중 임의의 것에서 동작할 수 있는 범용 디코딩 툴일 수 있거나, 또는 그것은 하나의 이러한 디코딩 모드에 대해 적응되는 특수 목적의 디코딩 툴일 수 있다. 디코더 시스템(400)은 오퍼레이팅 시스템 모듈로서, 애플리케이션 라이브러리의 일부로서 또는 독립형 애플리케이션으로서 구현될 수 있다. 종합하면, 디코더 시스템(400)은 채널(410)로부터 코딩된 데이터를 수신하고 출력 목적지(490)에 대한 출력으로서 재구성된 프레임을 생성한다.
디코더 시스템(400)은 채널(410)을 포함하는데, 채널(410)은 코딩된 데이터에 대한 저장, 통신 연결, 또는 다른 채널을 입력으로서 나타낼 수 있다. 채널(410)은 채널 코딩된 코딩 데이터를 생성한다. 채널 디코더(420)는 코딩된 데이터를 프로세싱할 수 있다. 채널 디코더(420)는, 미디어 스트림으로서의 송신 또는 저장을 위해, 집성된 데이터를 (예를 들면, ITU-T H.222.0 | ISO/IEC 13818-1와 같은 미디어 프로그램 스트림 또는 전송 스트림 포맷 또는 IETF RFC 3550과 같은 인터넷 실시간 전송 프로토콜 포맷에 따라) 패킷화해제할 수 있고/있거나 디멀티플렉싱할 수 있는데, 이 경우, 채널 디코더(420)는 미디어 송신 스트림의 신택스의 일부로서 추가된 신택스 엘리먼트를 파싱할 수 있다. 또는, 채널 디코더(420)는, 파일로서의 저장을 위해 집성되었던 코딩된 비디오 데이터를 (예를 들면, ISO/IEC 14496-12와 같은 미디어 컨테이너 포맷에 따라) 분리하는데, 이 경우, 채널 디코더(420)는 미디어 저장 파일의 신택스의 일부로서 추가된 신택스 엘리먼트를 파싱할 수 있다. 또는, 보다 일반적으로는, 채널 디코더(420)는 하나 이상의 미디어 시스템 디멀티플렉싱 프로토콜 또는 전송 프로토콜을 구현할 수 있는데, 이 경우, 채널 디코더(420)는 프로토콜(들)의 신택스의 일부로서 추가된 신택스 엘리먼트를 파싱할 수 있다. 채널(410) 또는 채널 디코더(420)는 또한, 예를 들면, FEC 디코딩 및 아날로그 신호 변조를 위해, 다른 엘리먼트(도시되지 않음)를 포함할 수도 있다.
채널 디코더(420)로부터 출력되는 코딩된 데이터(421)는, 충분한 양의 이러한 데이터가 수신될 때까지 임시적인 코딩된 데이터 영역(430)에 저장된다. 코딩된 데이터(421)는 코딩된 프레임(431) 및 MMCO/RPS 정보(432)를 포함한다. 코딩된 데이터 영역(430)의 코딩된 데이터(421)는, 기본 코딩된 비디오 비트스트림의 신택스의 일부로서, 하나 이상의 픽처에 대한 코딩된 데이터를 포함한다. 코딩된 데이터 영역(430)의 코딩된 데이터(421)는 또한, 인코딩된 비디오 데이터에 관련이 있는 미디어 메타데이터를 (예를 들면, 하나 이상의 SEI 메시지 또는 VUI 메시지에서의 하나 이상의 파라미터로서) 포함할 수 있다.
일반적으로, 코딩된 데이터 영역(430)은, 이러한 코딩된 데이터(421)가 디코더(450)에 의해 사용될 때까지, 코딩된 데이터(421)를 일시적으로 저장한다. 그때, MMCO/RPS 정보(432) 및 코딩된 프레임(431)에 대한 코딩된 데이터는 코딩된 데이터 영역(430)으로부터 디코더(450)로 전송된다. 디코딩이 진행함에 따라, 새로 코딩된 데이터가 코딩된 데이터 영역(430)에 추가되고 코딩된 데이터 영역(430)에 남아 있는 가장 오래된 코딩된 데이터는 디코더(450)로 전송된다.
디코더(450)는 대응하는 디코딩된 프레임(451)을 생성하기 위해 코딩된 프레임(431)을 디코딩한다. 적절하다면, 자신의 디코딩 프로세스를 수행하고 있을 때, 디코더(450)는 하나 이상의 이전에 디코딩된 프레임(469)을, 인터 프레임 예측을 위한 참조 프레임으로서 사용할 수도 있다. 디코더(450)는 이러한 이전에 디코딩된 프레임(469)을 디코딩된 프레임 임시 메모리 저장 영역(460)으로부터 판독한다. 일반적으로, 디코더(450)는, 타일의 엔트로피 디코딩, 인트라 프레임 예측, 모션 보상된 인터 프레임 예측, 역 양자화, 역 주파수 변환(스킵되지 않은 경우), 및 병합과 같은 디코딩 태스크를 수행하는 다수의 디코딩 모듈을 포함한다. 디코더(450)에 의해 수행되는 정확한 동작은 압축 포맷에 의존하여 변할 수 있다.
예를 들면, 디코더(450)는 압축된 프레임 또는 프레임의 시퀀스에 대한 인코딩된 데이터를 수신하고 디코딩된 프레임(451)을 포함하는 출력을 생성한다. 디코더(450)에서, 버퍼는 압축된 프레임에 대한 인코딩된 데이터를 수신하고, 적절한 시간에, 수신된 인코딩된 데이터를 엔트로피 디코더가 이용가능하게 만든다. 엔트로피 디코더는, 엔트로피 코딩된 양자화된 데이터뿐만 아니라 엔트로피 코딩된 부가 정보를 엔트로피 디코딩하는데, 통상적으로는, 인코더에서 수행된 엔트로피 인코딩의 역을 적용한다. 모션 보상기는 하나 이상의 참조 프레임에 대해 모션 정보를 적용하여, 재구성되고 있는 프레임의 임의의 인터 코딩된 블록에 대한 모션 보상된 예측 값을 형성한다. 인트라 예측 모듈은, 이웃하는 이전에 재구성된 샘플 값으로부터 현재 블록의 샘플 값을 공간적으로 예측할 수 있거나, 또는 인트라 BC 예측의 경우, 프레임의 인트라 예측 영역의 이전에 재구성된 샘플 값을 사용하여 현재 블록의 샘플 값을 예측할 수 있다. 인트라 프레임 예측 영역은 BV 값으로 나타내어질 수 있다. 디코더(450)는 또한 예측 잔차를 재구성한다. 역 양자화기는 엔트로피 디코딩된 데이터를 역 양자화한다. 예를 들면, 디코더(450)는, 비트 스트림의 신택스 엘리먼트에 기초하여 비디오의 픽처, 타일, 슬라이스 및/또는 다른 부분에 대한 QP에 대한 값을 설정하고, 그에 따라 변환 계수를 역 양자화한다. 역 주파수 변환은 양자화된 주파수 도메인 데이터를 공간 도메인 데이터로 변환한다. 몇몇 구현예에서, 주파수 변환은 스킵될 수 있는데, 이 경우 역 주파수 변환도 또한 스킵된다. 주파수 변환이 스킵되어 역 주파수 변환도 또한 스킵되면, 예측 잔차 값은 엔트로피 디코딩되고 역 양자화된다. 인터 프레임 예측된 블록의 경우, 디코더(450)는 재구성된 예측 잔차 값을 모션 보상된 예측 값과 결합한다. 마찬가지로, 디코더(450)는 예측 잔차 값을 인트라 예측으로부터의 예측 값과 결합할 수 있다. 디코딩된 프레임(451)에서 블록 경계 행 및/또는 열에 걸친 불연속부를 평활화하기 위해, 비디오 디코더(450)의 모션 보상 루프 내에 적응적 디블로킹 필터가 포함된다. 루프 내 필터링 동작으로서, 다른 필터링(예컨대 디링잉 필터링, ALF, 또는 SAO 필터링; 도시되지 않음)이 대안적으로 또는 추가적으로 적용될 수 있다.
디코딩된 프레임 임시 메모리 저장 영역(460)은 다수의 프레임 버퍼 저장 영역(461, 462, …, 46n)을 포함한다. 디코딩된 프레임 저장 영역(460)은 디코딩된 픽처 버퍼의 예이다. 디코더(450)는, 디코딩된 프레임(451)을 내부에 저장할 수 있는 프레임 버퍼(461, 462 등등)를 식별하기 위해 MMCO/RPS 정보(432)를 사용한다. 디코더(450)는 그 프레임 버퍼에 디코딩된 프레임(451)을 저장한다.
출력 시퀀서(output sequencer; 480)는, 출력 순서에서 생성될 다음 프레임이 디코딩된 프레임 저장 영역(460)에서 이용가능할 때를 식별한다. 출력 순서에서 생성될 다음 프레임(481)이 디코딩된 프레임 저장 영역(460)에서 이용가능할 때, 다음 프레임(481)은 출력 시퀀서(480)에 의해 판독되고 출력 목적지(490)(예를 들면, 디스플레이)로 출력된다. 일반적으로, 디코딩된 프레임 저장 영역(460)으로부터 출력 시퀀서(480)에 의해 프레임이 출력되는 순서는, 프레임이 디코더(450)에 의해 디코딩되는 순서와는 상이할 수도 있다.
V. 예시적인 비디오 인코더.
도 5a 및 도 5b는 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 일반화된 비디오 인코더(500)의 블록도이다. 인코더(500)는 현재 픽처를 입력 비디오 신호(505)로서 포함하는 비디오 픽처의 시퀀스를 수신하고 인코딩된 데이터를 코딩된 비디오 비트스트림(595)에서 출력으로서 생성한다.
인코더(500)는 블록 기반이며 구현예에 의존하는 블록 포맷을 사용한다. 블록은 상이한 스테이지에서, 예를 들면, 예측, 주파수 변환 및/또는 엔트로피 인코딩 스테이지에서, 추가로 세분된다(sub-divided). 예를 들면, 픽처는 64×64 블록, 32×32 블록 또는 16×16 블록으로 분할될 수 있는데, 이들은 종국에는 코딩 및 디코딩을 위해 샘플 값의 더 작은 블록으로 분할될 수 있다. H.265/HEVC 표준에 대한 인코딩의 구현예에서, 인코더는 픽처를 CTU(CTB), CU(CB), PU(PB) 및 TU(TB)로 구획한다. 블록(예를 들면, CU)은, 도 9에서 도시되는 바와 같이, 인트라 BC 예측의 목적을 위해 더 작은 블록(예를 들면, PU)으로 비대칭적으로 구획될 수 있다.
인코더(500)는 인트라 픽처 코딩 및/또는 인터 픽처 코딩을 사용하여 픽처를 압축한다. 인코더(500)의 컴포넌트 중 많은 것은 인트라 픽처 코딩 및 인터 픽처 코딩 둘 다에 대해 사용된다. 이들 컴포넌트에 의해 수행되는 정확한 동작은, 압축되고 있는 정보의 타입에 의존하여 변할 수 있다.
타일화 모듈(tiling module; 510)은, 옵션적으로, 픽처를, 동일한 사이즈의 또는 상이한 사이즈의 다수의 타일로 구획한다. 예를 들면, 타일화 모듈(510)은, 픽처 경계와 함께, 픽처 내에서의 타일의 수평 및 수직 경계를 정의하는 타일 행 및 타일 열을 따라 픽처를 분할하는데, 이 경우 각각의 타일은 직사각형 영역이다. H.265/HEVC 구현예에서, 인코더(500)는 픽처를 하나 이상의 슬라이스로 구획하는데, 이 경우 각각의 슬라이스는 하나 이상의 슬라이스 세그먼트를 포함한다.
일반적인 인코딩 제어부(520)는 입력 비디오 신호(505)에 대한 픽처뿐만 아니라 인코더(500)의 다양한 모듈로부터 피드백(도시되지 않음)을 수신한다. 종합하면, 일반적인 인코딩 제어부(520)는, 인코딩 동안 코딩 파라미터를 설정하고 변경하기 위해, 제어 신호(도시되지 않음)를 다른 모듈(예컨대 타일화 모듈(510), 변환기/스케일러/양자화기(530), 스케일러/역변환기(535), 인트라 픽처 추정기(540), 모션 추정기(550) 및 인트라/인터 스위치)로 제공한다. 특히, 일반적인 인코딩 제어부(520)는 인코딩 동안 구획화에 관한 결정을 관리할 수 있다. 보다 일반적으로는, 일반적인 인코딩 제어부(520)는, 인코딩 동안 인트라 BC 예측을 사용할지의 여부 및 그 사용 방법을 결정할 수 있다. 일반적인 인코딩 제어부(520)는 또한, 인코딩 동안, 예를 들면, 레이트 왜곡 분석을 수행하는 동안 중간 결과를 평가할 수 있다. 일반적인 인코딩 제어부(520)는, 인코딩 동안 만들어진 결정을 나타내는 일반적인 제어 데이터(522)를 생성하고, 그 결과, 대응하는 디코더는 일관된 결정을 행할 수 있다. 일반적인 제어 데이터(522)는 헤더 포맷터(header formatter)/엔트로피 코더(590)로 제공된다.
현재 픽처가 인터 픽처 예측을 사용하여 예측되면, 모션 추정기(550)는, 하나 이상의 참조 픽처에 대한 입력 비디오 신호(505)의 현재 픽처의 샘플 값의 블록의 모션을 추정한다. 디코딩된 픽처 버퍼(570)는, 참조 픽처로서의 사용을 위해 하나 이상의 재구성된 이전에 코딩된 픽처를 버퍼링한다. 모션 예측을 위해 블록을 어떻게 구획할지를 결정하는 경우, 모션 추정기(550)는, 하기에서 설명되는 바와 같이, 하향식 접근법 또는 상향식 접근법을 적용할 수 있다. 모션 추정기(550)는 하기에서 설명되는 바와 같은 검색 패턴 또는 다른 검색 패턴을 사용할 수 있다. 다수의 참조 픽처가 사용되는 경우, 다수의 참조 픽처는 상이한 시간적 방향 또는 동일한 시간적 방향으로부터 유래할 수 있다. 모션 추정기(550)는, MV 데이터와 같은 모션 데이터(552), 병합 모드 인덱스 값, 및 참조 픽처 선택 데이터를 부가 정보로서 생성한다. 모션 데이터(552)는 헤더 포맷터/엔트로피 코더(590)뿐만 아니라 모션 보상기(555)로 제공된다.
모션 보상기(555)는 MV를, 디코딩된 픽처 버퍼(570)로부터의 재구성된 참조 픽처(들)에 적용한다. 모션 보상기(555)는 현재 픽처에 대한 모션 보상된 예측치를 생성한다.
인코더(500) 내에서의 별개의 경로에서, 인트라 픽처 추정기(540)는, 입력 비디오 신호(505)의 현재 픽처의 샘플 값의 블록에 대한 인트라 픽처 예측을 수행하는 방법을 결정한다. 현재 픽처는 인트라 픽처 코딩을 사용하여 전적으로 또는 부분적으로 코딩된다. 현재 픽처의 재구성(538)의 값을 사용하여, 인트라 공간 예측에 대해, 인트라 픽처 추정기(540)는, 현재 픽처의 이웃하는 이전에 재구성된 샘플 값으로부터, 현재 픽처의 현재 블록의 샘플 값을 공간적으로 예측하는 방법을 결정한다.
또는, BV 값을 사용한 인트라 BC 예측의 경우, 인트라 픽처 추정기(540)는, 현재 픽처 내에서의 상이한 후보 참조 영역까지의, 현재 블록의 샘플 값의 변위를 추정한다. BV 예측(및 인트라 BC 예측)을 위해 블록을 어떻게 구획할지를 결정하는 경우, 인트라 픽처 추정기(540)는, 하기에서 설명되는 바와 같이, 하향식 접근법 또는 상향식 접근법을 적용할 수 있다. 모션 추정기(540)는 하기에서 설명되는 바와 같은 검색 패턴 또는 다른 검색 패턴을 사용할 수 있다. 인트라 BC 예측의 경우, 인트라 예측 추정기(540)는 하기에서 설명되는 하나 이상의 제약을 사용하여 BV 선택 프로세스를 제약할 수 있다.
구현예에 따라서, 인코더는, 입력 샘플 값, 루프 내 필터링 이전의 재구성된 샘플 값, 또는 루프 내 필터링 이후의 재구성된 샘플 값을 사용하여 현재 블록에 대한 BV 추정을 수행할 수 있다. 일반적으로, BV 추정을 위해 입력 샘플 값 또는 필터링되지 않은 재구성된 샘플 값을 사용하는 것에 의해, 인코더는 순차 프로세싱 병목현상(sequential-processing bottleneck)(순차 프로세싱 병목현상은, BV 추정/인트라 BC 예측 이전에 참조 영역의 재구성된 샘플 값을 필터링하는 것으로부터 유래할 수도 있다)을 방지할 수 있다. 한편, 필터링되지 않은 재구성된 샘플 값을 저장하는 것은 추가적인 메모리 사용한다. 또한, 루프 내 필터링이 BV 추정 이전에 적용되면, 현재 블록 영역이 디코딩된 이후 적용될 필터링 프로세스와 BV 추정/인트라 BC 예측을 위해 사용되고 있는 영역 사이에서 중첩하는 영향의 영역이 존재할 수도 있다. 이러한 경우, BV 추정/인트라 예측은 필터링 동작의 그 양태 이전에 적용될 것이다. 몇몇 구현예에서, 인코더는, BV 추정/인트라 BC 예측 이전에 몇몇 루프 내 필터링 동작을 적용할 수 있고, 나중의 프로세싱 스테이지에서 추가적인 또는 대안적인 필터링을 수행할 수 있다.
또는, 인트라 픽처 딕셔너리 코딩 모드의 경우, 블록의 픽셀은 딕셔너리 또는 다른 위치에 저장된 이전의 샘플 값을 사용하여 인코딩되는데, 이 경우, 픽셀은 동일 위치의 샘플 값의 세트(예를 들면, RGB 트리플릿(triplet) 또는 YUV 트리플릿)이다. 예를 들면, 인코더(500)는 이전에 재구성된 샘플 값(예를 들면, 1 픽셀, 2 픽셀, 4 픽셀, 8 픽셀, 기타 등등의 그룹화)의 해시 값을 계산할 수 있고 이들 해시 값을 인코딩되고 있는 현재 픽셀의 세트의 해시 값에 비교할 수 있다. 해시 비교에 기초하여 이전에 재구성된 샘플 값에서 하나 이상의 길이의 매치가 식별될 수 있다. 현재 픽셀(들)(또는 샘플 값)은, 이전 픽셀 내에서의 위치를 (예를 들면, 딕셔너리에서) 식별하는 오프셋 및 그 오프셋으로부터 예측되고 있는 다수의 픽셀을 나타내는 길이를 사용하여, 다양한 1D 및 의사 2D 딕셔너리 모드에서 인코딩될 수 있다. 통상적으로, 인트라 픽처 딕셔너리 코딩 모드에서 인코딩된 블록에 대해 어떠한 잔차도 계산되지 않는다.
인트라 픽처 추정기(540)는, 부가 정보로서, 인트라 예측이 공간 예측을 사용하는지, 인트라 BC 예측을 사용하는지 또는 딕셔너리 모드를 사용하는지의 여부를 나타내는 정보, 예측 모드 방향(인트라 공간 예측의 경우), BV 값(인트라 BC 예측의 경우) 및 오프셋 및 길이(딕셔너리 모드의 경우)와 같은 인트라 예측 데이터(542)를 생성한다. 인트라 예측 데이터(542)는, 헤더 포맷터/엔트로피 코더(590)뿐만 아니라 인트라 픽처 예측기(545)에도 제공된다.
인트라 예측 데이터(542)에 따르면, 인트라 픽처 예측기(545)는, 현재 픽처의 이웃하는 이전에 재구성된 샘플 값으로부터, 현재 픽처의 현재 블록의 샘플 값을 공간적으로 예측한다. 또는, 인트라 BC 예측의 경우, 인트라 픽처 예측기(545)는, 현재 블록에 대한 BV 값에 의해 나타내어지는 인트라 픽처 예측 참조 영역의 이전에 재구성된 샘플 값을 사용하여 현재 블록의 샘플 값을 예측한다. 몇몇 경우에서, BV 값은 BV 예측자(예측된 BV 값)일 수 있다. 다른 경우에서, BV 값은 자신의 예측된 BV 값은 상이할 수 있는데, 이 경우 BV 차이는 예측된 BV 값과 BV 값 사이의 차이를 나타낸다. 또는, 인트라 픽처 딕셔너리 모드의 경우, 인트라 픽처 예측기(545)는 오프셋 및 길이를 사용하여 픽셀을 재구성한다.
인트라/인터 스위치는, 주어진 블록에 대한 예측(558)이 모션 보상된 예측일 것인지 또는 인트라 픽처 예측일 것인지의 여부를 선택한다.
비딕셔너리 모드의 경우, 잔차 코딩이 스킵되지 않으면, 예측(558)의 블록과 입력 비디오 신호(505)의 원래의 현재 픽처의 대응하는 부분 사이의 차이는 (만약 있다면) 잔차(518)의 값을 제공한다. 현재 픽처의 재구성 동안, 잔차 값이 인코딩/시그널링되었다면, 재구성된 잔차 값은 예측치(558)와 결합되어 비디오 신호(505)로부터의 원래의 컨텐츠의 근사하는 또는 정확한 재구성치(538)를 생성한다. (손실성 압축에서, 몇몇 정보는 여전히 비디오 신호(505)로부터 상실된다.)
변환기/스케일러/양자화기(530)에서, 비딕셔너리 모드의 경우, 주파수 변환이 스킵되지 않으면, 주파수 변환은 공간 도메인 비디오 정보를 주파수 도메인(즉, 스펙트럼, 변환) 데이터로 변환한다. 블록 기반의 비디오 코딩을 위해, 주파수 변환기는, 예측 잔차 데이터(또는 예측(558)이 널(null)인 경우 샘플 값 데이터)의 블록에 대해, 이산 코사인 변환(discrete cosine transform; "DCT"), 그 정수 근사, 또는 다른 타입의 순방향 블록 변환(forward block transform)을 적용하여, 주파수 변환 계수의 블록을 생성하게 된다. 변환기/스케일러/양자화기(530)는 가변 블록 사이즈를 가지고 변환을 적용할 수 있다. 이 경우, 변환기/스케일러/양자화기(530)는, 현재 블록에 대한 잔차 값에 대해 어떤 블록 사이즈의 변환을 사용할지를 결정할 수 있다. 스케일러/양자화기는 변환 계수를 스케일링하고 양자화한다. 예를 들면, 양자화기는, 픽처 단위 기반으로, 타일 단위 기반으로, 슬라이스 단위 기반으로, 블록 단위 기반으로, 주파수별 기반으로 또는 다른 기반으로 변하는 양자화 스텝 사이즈를 갖는 데드 존 스칼라 양자화(dead-zone scalar quantization)를 주파수 도메인 데이터에 적용할 수 있다. 양자화된 변환 계수 데이터(532)는 헤더 포맷터/엔트로피 코더(590)에 제공된다. 주파수변환이 스킵되면, 스케일러/양자화기는 예측 잔차 데이터(또는 예측치(558)가 널(null)인 경우 샘플 값 데이터)의 블록을 스케일링 및 양자화하여, 헤더 포맷터/엔트로피 코더(590)로 제공되는 양자화된 값을 생성할 수 있다.
스케일러/역 변환기(535)에서, 스케일러/역 양자화기는, 양자화된 변환 계수에 관해 역 스케일링 및 역 양자화를 수행한다. 변환 스테이지가 스킵되지 않은 경우, 역 주파수 변환기는 역 주파수 변환을 수행하여, 재구성된 예측 잔차 또는 샘플 값의 블록을 생성한다. 변환 스테이지가 스킵된 경우, 역 주파수 변환도 또한 스킵된다. 이 경우, 스케일러/역 양자화기는 예측 잔차 데이터(또는 샘플 값 데이터)의 블록에 대해 역 스케일링 및 역 양자화를 수행하여, 재구성된 값을 생성할 수 있다. 잔차 값이 인코딩/시그널링되었다면, 인코더(500)는 재구성된 잔차 값을 예측(558)의 값(예를 들면, 모산 보상된 예측 값, 인트라 픽처 예측 값)과 결합하여 재구성치(538)를 형성한다. 잔차 값이 인코딩/시그널링되지 않은 경우, 인코더(500)는 예측(558)의 값을 재구성치(538)로서 사용한다.
인트라 픽처 예측의 경우, 재구성(538)의 값은 인트라 픽처 추정기(540) 및 인트라 픽처 예측기(545)로 다시 공급될 수 있다. 또한, 재구성(538)의 값은 후속하는 픽처의 모션 보상된 예측에 대해 사용될 수 있다. 재구성(538)의 값은 추가로 필터링될 수 있다. 필터링 제어부(560)는, 비디오 신호(505)의 주어진 픽처에 대해, 재구성(538)의 값에 관한 디블록 필터링 및 샘플 적응 오프셋(sample adaptive offset; "SAO") 필터링을 수행하는 방법을 결정한다. 필터링 제어부(560)는 필터 제어 데이터(562)를 생성하는데, 필터 제어 데이터(562)는 헤더 포맷터/엔트로피 코더(590) 및 병합기/필터(들)(565)로 제공된다.
병합기/필터(들)(565)에서, 인코더(500)는 상이한 타일로부터의 컨텐츠를 픽처의 재구성된 버전으로 병합한다. 인코더(500)는, 픽처에서의 경계에 걸친 불연속부를 적응적으로 평활화하기 위해, 필터 제어 데이터(562)에 따라 디블록 필터링 및 SAO 필터링을 선택적으로 수행한다. 다른 필터링(예컨대 디링잉 필터링 또는 ALF; 도시되지 않음)이 대안적으로 또는 추가적으로 적용될 수 있다. 타일 경계는, 인코더(500)의 설정에 의존하여, 선택적으로 필터링될 수 있거나 또는 전혀 필터링되지 않을 수도 있고, 인코더(500)는 이러한 필터링이 적용되었는지 또는 그렇지 않은지의 여부를 나타내기 위해 코딩된 비트스트림 내에 신택스를 제공할 수도 있다. 디코딩된 픽처 버퍼(570)는, 후속하는 모션 보상된 예측에서의 사용을 위해 재구성된 현재 픽처를 버퍼링한다.
헤더 포맷터/엔트로피 코더(590)는, 일반적인 제어 데이터(522), 양자화된 변환 계수 데이터(532), 인트라 예측 데이터(542), 모션 데이터(552), 및 필터 제어 데이터(562)를 포맷하고 및/또는 엔트로피 코딩한다. 모션 데이터(552)의 경우, 헤더 포맷터/엔트로피 코더(590)는 병합 모드 인덱스 값을 선택 및 엔트로피 코딩할 수 있거나, 또는 디폴트 MV 예측자가 사용될 수 있다. 몇몇 경우에서, 헤더 포맷터/엔트로피 코더(590)는 또한, (MV 값에 대한 MV 예측자를 기준으로 하는) MV 값에 대한 MV 차이를 결정하고, 그 MV 차이를, 예를 들면, 콘텍스트 적응 이진 산술 코딩(context-adaptive binary arithmetic coding)을 사용하여 엔트로피 코딩한다. 인트라 예측 데이터(542)의 경우, BV 값은 BV 예측을 사용하여 인코딩될 수 있다. BV 예측은 (예를 들면, 하나 이상의 이웃 블록으로부터의) 디폴트 BV 예측자를 사용할 수 있다. 다수의 BV 예측자가 가능한 경우, BV 예측자 인덱스는, BV 예측을 위해 다수의 BV 예측자 중 어떤 것을 사용할지를 나타낼 수 있다. 헤더 포맷터/엔트로피 코더(590)는 (인트라 BC 예측을 위해) BV 예측자 인덱스 값을 선택 및 엔트로피 코딩할 수 있거나, 또는 디폴트 BV 예측자가 사용될 수 있다. 몇몇 경우에서, 헤더 포맷터/엔트로피 코더(590)는 또한, (BV 값에 대한 BV 예측자를 기준으로 하는) BV 값에 대한 BV 차이를 결정하고, 그 BV 차이를, 예를 들면, 콘텍스트 적응 이진 산술 코딩을 사용하여 엔트로피 코딩한다.
헤더 포맷터/엔트로피 코더(590)는 코딩된 비트 스트림(595)에서 인코딩된 데이터를 제공한다. 코딩된 비디오 비트스트림(595)의 포맷은, H.265/HEVC 포맷, 윈도우 미디어 비디오 포맷, VC-1 포맷, MPEG-x 포맷(예를 들면, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예를 들면, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형안 또는 확장안일 수 있다.
소망되는 압축의 타입 및 구현예에 따라서, 인코더(500)의 모듈은 추가될 수 있고, 생략될 수 있고, 다수의 모듈로 분할될 수 있고, 다른 모듈과 결합될 수 있고 및/또는 유사한 모듈로 대체될 수 있다. 대안적인 실시형태에서, 상이한 모듈 및/또는 모듈의 다른 구성을 갖는 인코더는 설명된 기술 중 하나 이상을 수행한다. 인코더의 특정 실시형태는, 통상적으로, 인코더(500)의 변형예 또는 보충된 버전을 사용한다. 인코더(500) 내에서의 모듈 사이에 도시되는 관계는, 인코더에서의 정보의 일반적인 흐름을 나타내며; 다른 관계는 간략화를 위해 도시되지 않는다.
VI. 예시적인 비디오 디코더.
도 6은 여러 설명된 실시형태가 연계하여 구현될 수도 있는 일반화된 디코더(600)의 블록도이다. 디코더(600)는 인코딩된 데이터를 코딩된 비트 스트림(605)에서 수신하고 재구성된 비디오(695)에 대한 픽처를 포함하는 출력을 생성한다. 코딩된 비디오 비트스트림(605)의 포맷은, HEVC 포맷, 윈도우 미디어 비디오 포맷, VC-1 포맷, MPEG-x 포맷(예를 들면, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예를 들면, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형안 또는 확장안일 수 있다.
디코더(600)는 블록 기반이며 구현예에 의존하는 블록 포맷을 사용한다. 블록은 상이한 스테이지에서 더 세분될 수도 있다. 예를 들면, 픽처는 64×64 블록, 32×32 블록 또는 16×16 블록으로 분할될 수 있는데, 이들은 종국에는 샘플 값의 더 작은 블록으로 분할될 수 있다. HEVC 표준에 대한 디코딩의 구현예에서, 픽처는 CTU(CTB), CU(CB), PU(PB) 및 TU(TB)로 구획된다. 블록(예를 들면, CU)은, 도 9에서 도시되는 바와 같이, 인트라 BC 예측의 목적을 위해 더 작은 블록(예를 들면, PU)으로 비대칭적으로 구획될 수 있다.
디코더(600)는 인트라 픽처 디코딩 및/또는 인터 픽처 디코딩을 사용하여 픽처를 압축해제한다. 디코더(600)의 컴포넌트 중 많은 것은 인트라 픽처 디코딩 및 인터 픽처 디코딩 둘 다에 대해 사용된다. 이들 컴포넌트에 의해 수행되는 정확한 동작은, 압축해제되고 있는 정보의 타입에 의존하여 변할 수 있다.
버퍼는 인코딩된 데이터를 코딩된 비디오 비트스트림(605)에서 수신하고 수신된 인코딩된 데이터를 파서/엔트로피 디코더(610)가 이용가능하게 만든다. 파서/엔트로피 디코더(610)는 엔트로피 코딩된 데이터를 엔트로피 디코딩하는데, 통상적으로는 인코더(500)에서 수행된 엔트로피 코딩(예를 들면, 콘텍스트 적응 이진 산술 디코딩)의 역을 적용한다. 파싱 및 엔트로피 디코딩의 결과로서, 파서/엔트로피 디코더(610)는, 일반적인 제어 데이터(622), 양자화된 변환 계수 데이터(632), 인트라 예측 데이터(642), 모션 데이터(652) 및 필터 제어 데이터(662)를 생성한다. 인트라 예측 데이터(642)의 경우, BV 예측자 인덱스 값이 시그널링되면, 파서/엔트로피 디코더(610)는, 예를 들면, 콘텍스트 적응 이진 산술 디코딩(context-adaptive binary arithmetic decoding)을 사용하여 BV 예측자 인덱스 값을 엔트로피 디코딩할 수 있다. 몇몇 경우에서, 파서/엔트로피 디코더(610)는 또한 (예를 들면, 콘텍스트 적응 이진 산술 디코딩을 사용하여) BV 값에 대한 BV 차이를 엔트로피 디코딩하고, 그 다음, 그 BV 차이를, 대응하는 BV 예측자와 결합하여 BV 값을 재구성한다. 다른 경우에서, BV 차이는 비트스트림으로부터 생략되고, BV 값은 단순히 (예를 들면, BV 예측자 인덱스 값으로 나타내어지는) BV 예측자이다.
일반적인 디코딩 제어부(620)는 일반적인 제어 데이터(622)를 수신하고, 디코딩 동안 디코딩 파라미터를 설정하고 변경하기 위해, 제어 신호(도시되지 않음)를 다른 모듈(예컨대, 스케일러/역 변환기(635), 인트라 픽처 예측기(645), 모션 보상기(655) 및 인트라/인터 스위치)로 제공한다.
현재 픽처가 인터 픽처 예측을 사용하여 예측되면, 모션 보상기(655)는 모션 데이터(652), 예컨대 MV 데이터, 참조 픽처 선택 데이터 및 병합 모드 인덱스 값을 수신한다. 모션 보상기(655)는 MV를, 디코딩된 픽처 버퍼(670)로부터의 재구성된 참조 픽처(들)에 적용한다. 모션 보상기(655)는 현재 픽처의 인터 코딩된 블록에 대한 모션 보상된 예측치를 생성한다. 디코딩된 픽처 버퍼(670)는 참조 픽처로서의 사용을 위해 하나 이상의 이전에 재구성된 픽처를 저장한다.
디코더(600) 내의 별개의 경로에서, 인트라 프레임 예측 예측기(645)는 인트라 예측 데이터(642), 예컨대 인트라 예측이 공간 예측을 사용하는지, 인트라 BC 예측을 사용하는지 또는 딕셔너리 모드를 사용하는지의 여부를 나타내는 정보, 및 예측 모드 방향(인트라 공간 예측의 경우), BV 값(인트라 BC 예측의 경우) 또는 오프셋 및 길이(딕셔너리 모드의 경우)를 수신한다. 인트라 공간 예측의 경우, 현재 픽처의 재구성(638)의 값을 사용하여, 예측 모드 데이터에 따라, 인트라 픽처 예측기(645)는, 현재 픽처의 이웃하는 이전에 재구성된 샘플 값으로부터, 현재 픽처의 현재 블록의 샘플 값을 공간적으로 예측한다. 또는, BV 값을 사용하는 인트라 BC 예측의 경우, 인트라 픽처 예측기(645)는, 현재 블록에 대한 BV 값에 의해 나타내어지는 인트라 예측 영역의 이전에 재구성된 샘플 값을 사용하여 현재 블록의 샘플 값을 예측한다. 또는, 인트라 픽처 딕셔너리 모드의 경우, 인트라 픽처 예측기(645)는 오프셋 및 길이를 사용하여 픽셀을 재구성한다.
인트라/인터 스위치는, 주어진 블록에 대한 예측(658)으로서 사용하기 위한 모션 보상된 예측 또는 인트라 픽처 예측의 값을 선택한다. 예를 들면, HEVC 신택스가 후속되면, 인트라/인터 스위치는, 인트라 예측된 CU 및 인터 예측된 CU를 포함할 수 있는 픽처의 CU에 대해 인코딩되는 신택스 엘리먼트에 기초하여 제어될 수 있다. 잔차 값이 인코딩/시그널링되었다면, 디코더(600)는 예측치(658)를 재구성된 잔차 값과 결합하여, 비디오 신호로부터의 컨텐츠의 재구성치(638)를 생성한다. 잔차 값이 인코딩/시그널링되지 않은 경우, 디코더(600)는 예측(658)의 값을 재구성치(638)로서 사용한다.
잔차 값이 인코딩/시그널링 된 경우 잔차를 재구성하기 위해, 스케일러/역 변환기(635)는 양자화된 변환 계수 데이터(632)를 수신 및 프로세싱한다. 스케일러/역 변환기(635)에서, 스케일러/역 양자화기는, 양자화된 변환 계수에 관해 역 스케일링 및 역 양자화를 수행한다. 역 주파수 변환기는 역 주파수 변환을 수행하여, 재구성된 예측 잔차 또는 샘플 값의 블록을 생성한다. 예를 들면, 역 주파수 변환기는 주파수 변환 계수에 대해 역 블록 변환을 적용하여, 샘플 값 데이터 또는 예측 잔차 데이터를 생성한다. 역 주파수 변환은 역 DCT, 역 DCT의 정수 근사, 또는 다른 타입의 역 주파수 변환(예를 들면, 역 이산 사인 변환 또는 역 이산 사인 변환의 정수 근사)일 수 있다. 인코딩 동안 주파수 변환이 스킵되었다면, 역 주파수 변환도 또한 스킵된다. 이 경우, 스케일러/역 양자화기는 예측 잔차 데이터(또는 샘플 값 데이터)의 블록에 대해 역 스케일링 및 역 양자화를 수행하여, 재구성된 값을 생성할 수 있다.
인트라 픽처 예측의 경우, 재구성(638)의 값은 인트라 픽처 예측기(645)로 다시 공급될 수 있다. 인터 픽처 예측의 경우, 재구성(638)의 값은 추가로 필터링될 수 있다. 병합기/필터(들)(665)에서, 디코더(600)는 상이한 타일로부터의 컨텐츠를 픽처의 재구성된 버전으로 병합한다. 디코더(600)는, 프레임에서의 경계에 걸친 불연속부를 적응적으로 평활화하기 위해, 필터 제어 데이터(662) 및 필터 적응을 위한 규칙에 따라 디블록 필터링 및 SAO 필터링을 선택적으로 수행한다. 다른 필터링(예컨대 디링잉 필터링 또는 ALF; 도시되지 않음)이 대안적으로 또는 추가적으로 적용될 수 있다. 타일 경계는, 인코딩된 비트 스트림 데이터 내에서의 신택스 표시(syntax indication) 또는 디코더(600)의 설정에 의존하여, 선택적으로 필터링될 수 있거나 또는 전혀 필터링되지 않을 수 있다. 디코딩된 픽처 버퍼(670)는, 후속하는 모션 보상된 예측에서의 사용을 위해 재구성된 현재 픽처를 버퍼링한다.
디코더(600)는 또한 후처리 필터(post-processing deblock filter)를 포함할 수 있다. 후처리 필터(608)는, 디블록 필터링, 디링잉 필터링, 적응적 위이너 필터링(adaptive Wiener filtering), 필름 그레인 재현 필터링(film-grain reproduction filtering), SAO 필터링 또는 다른 종류의 필터링을 포함할 수 있다. 반면 모션 보상 루프에서 프레임의 재구성된 샘플 값에 대해 "루프 내" 필터링이 수행되고, 그에 따라 참조 프레임의 샘플 값에 영향을 끼치는 까닭에, 후처리 필터(608)는, 디스플레이를 위한 출력 이전에, 모션 보상 루프 외부에서, 재구성된 샘플 값에 적용된다.
소망되는 압축해제의 타입 및 구현예에 따라서, 디코더(600)의 모듈은 추가될 수 있고, 생략될 수 있고, 다수의 모듈로 분할될 수 있고, 다른 모듈과 결합될 수 있고 및/또는 유사한 모듈로 대체될 수 있다. 대안적인 실시형태에서, 상이한 모듈 및/또는 모듈의 다른 구성을 갖는 디코더는 설명된 기술 중 하나 이상을 수행한다. 디코더의 특정 실시형태는, 통상적으로, 디코더(600)의 변형예 또는 보충된 버전을 사용한다. 디코더(600) 내에서 모듈 사이에 도시되는 관계는, 디코더에서의 정보의 일반적인 흐름을 나타내며; 다른 관계는 간략화를 위해 도시되지 않는다.
VII. 비대칭 구획을 갖는 인트라 블록 카피 예측
이 섹션은 인트라 BC 예측된 블록에 대한 비대칭 구획의 예를 제시한다. 비대칭 구획을 사용하는 것은, 블록 내의 강하게 정의된 그러나 불규칙한 이미지 패턴에 대해 인코더가 구획을 적응시키는 것을 허용할 수 있는데, 블록 내의 강하게 정의된 그러나 불규칙한 이미지 패턴은 텍스트, 웹 페이지 및 스크린 캡쳐 비디오의 다른 부분 및 다른 인공적으로 생성된 비디오에서 일반적이다.
A. 인트라 BC 예측 모드 및 BV 값 - 서론.
인트라 BC 예측의 경우, 픽처의 현재 블록의 샘플 값은, 동일 픽처에서의 샘플 값을 사용하여 예측된다. BV 값은, 예측을 위해 사용되는 샘플 값을 포함하는 픽처의 영역("참조 영역")까지의 현재 블록으로부터의 변위를 나타낸다. 참조 영역은 현재 블록에 대한 예측 값을 제공한다. 예측을 위해 사용되는 샘플 값은 미리 재구성된 샘플 값인데, 그러므로, 미리 재구성된 샘플 값은 인코딩 동안 인코더에서 그리고 디코딩 동안 디코더에서 이용가능하다. BV 값은 비트스트림에서 시그널링되고, 디코더는 예측을 위해 사용할 픽처의 참조 영역을 결정하기 위해 BV 값을 사용할 수 있는데, BV 값은 디코더에서 또한 재구성된다. 인트라 BC 예측은 인트라 픽처 예측의 형태이다 - 픽처의 블록에 대한 인트라 BC 예측은 동일 픽처에서의 샘플 값 외에는 어떠한 샘플 값도 사용하지 않는다.
도 7은 현재 픽처(710)의 현재 블록(730)에 대한 인트라 BC 예측을 예시한다. 현재 블록은 코딩 단위("CU")의 코딩 블록("CB"), 예측 단위("PU")의 예측 블록("PB"), 변환 단위("TU")의 변환 블록("TB") 또는 다른 블록일 수 있다. 현재 블록의 사이즈는 64×64, 32×32, 16×16, 8×8 또는 어떤 다른 사이즈일 수 있다. 보다 일반적으로는, 현재 블록의 사이즈는 m×n인데, 여기서 m 및 n의 각각은 0을 포함한 자연수(whole number)이고, m 및 n은 서로 동일할 수 있거나 또는 상이한 값을 가질 수 있다. 따라서, 현재 블록은 정사각형 또는 직사각형일 수 있다. 대안적으로, 현재 블록은 몇몇 다른 형태를 가질 수 있다.
BV(740)는, 예측을 위해 사용되는 샘플 값을 포함하는 픽처의 영역(750)까지의 현재 블록(730)으로부터의 변위(또는 오프셋)를 나타낸다. BV(740)에 의해 나타내어지는 참조 영역(750)은 현재 블록(730)에 대한 "매칭 블록"으로 종종 칭해진다. 매칭 블록은 현재 블록(730)과 동일할 수 있거나, 또는 매칭 블록은 현재 블록(730)의 근사치일 수 있다. 현재 블록의 좌상(top-left) 위치가 현재 픽처의 위치 (x0, y0)에 있다고 가정하고, 참조 영역의 좌상 위치가 현재 픽처의 위치 (x1, y1)에 있다고 가정한다. BV는 변위 (x1-x0, y1-y0)를 나타낸다. 예를 들면, 현재 블록의 좌상 위치가 위치 (256, 128)에 있고, 참조 영역의 좌상 위치가 위치 (126, 104)에 있으면, BV 값은 (-130, -24)이다. 이 예에서, 음의 수평 변위는, 현재 블록의 좌측에 있는 위치를 나타내고, 음의 수직 변위는 현재 블록 위의 위치를 나타낸다.
인트라 BC 예측은, BC 동작을 사용하여 중복성(redundancy)(예컨대 프레임 내부에서의 반복된 패턴)을 활용하는 것에 의해 코딩 효율성을 향상시킬 수 있다. 그러나, 인코더가 평가할 수도 있는 후보 블록의 수를 고려하면, 현재 블록에 대한 매칭 블록을 찾는 것은 계산적으로 복잡하고 시간 소모적일 수 있다. 도 8은 블록 매칭 동작에서 현재 픽처(810)의 현재 블록(830)에 대한 후보 블록 중 몇몇을 도시한다. 네 개의 BV(841, 842, 843, 844)는 네 개의 후보 블록에 대한 변위를 나타낸다. 후보 블록은 현재 프레임(810)의 재구성된 컨텐츠 내의 임의의 곳에 있을 수 있다. (블록은 일반적으로 좌에서 우로, 그 다음 위에서 아래로 코딩된다.) BV(843, 844)에 의해 나타내어진 후보 블록에 대해 도시된 바와 같이, 후보 블록은 다른 후보 블록과 중첩할 수 있다.
몇몇 예시적인 구현예에서, 인트라 예측된 영역(850)은 현재 블록(830)과 동일한 슬라이스 및 타일 내에 있도록 제약된다. 이러한 인트라 BC 예측은 다른 슬라이스 또는 타일의 샘플 값을 사용하지 않는다. 인트라 예측된 영역(850)의 위치는, (예를 들면, 검색 범위의 경우, 인터 코딩된 블록의 재구성된 샘플 값의 사용에 관한) 하나 이상의 다른 제약에 종속될 수도 있다. 대안적으로, 인트라 예측된 영역(850)의 위치는, 현재 픽처(810)의 재구성된 컨텐츠 내에서 제약되지 않는다(즉, 전체 검색 범위이다).
인트라 BC 예측의 예측 모드를 갖는 블록은 CB, PB 또는 다른 블록일 수 있다. 블록이 CB인 경우, 블록에 대한 BV는 CU 레벨에서 시그널링될 수 있다(그리고 CU에서의 다른 CB는 동일한 BV 또는 그 스케일링된 버전을 사용한다). 또는, 블록이 PB인 경우, 블록에 대한 BV는 PU 레벨에서 시그널링될 수 있다(그리고 PU에서의 다른 PB는 동일한 BV 또는 그 스케일링된 버전을 사용한다). 보다 일반적으로는, 인트라 BC 예측 블록에 대한 BV는 블록에 대한 적절한 신택스 레벨에서 시그널링된다.
인트라 BC 예측 모드에 따른 예측의 블록 카피 동작(block copying operation)은 (BV가 CB마다 시그널링되는 경우) CB의 레벨에서 또는 (BV가 PB마다 시그널링되는 경우) PB의 레벨에서 수행될 수 있다. 예를 들면, 16×16 BC가 단일의 16×16 PB를 갖는다고 가정한다. 16×16 영역을 블록 카피하기 위해 (PB에 대한) BV가 적용된다. 인트라 예측 영역이, 예측되고 있는 16×16 블록과 중첩하지 않도록 제약되는 경우, BV는 수평에서 또는 수직에서 적어도 16의 크기(절대값)를 갖는다.
대안적으로, 블록 카피 동작은, BV 값이 PB 또는 CB에 대해 시그널링되는 경우에도, PB 또는 CB 내에서의 TB의 레벨에서 수행될 수 있다. 이렇게 하여, BV 값은, TB에 적용되는 바와 같이, 동일한 PB 또는 CB의 다른 TB의 위치를 참조할 수 있다. 예를 들면, 16×16 CB가 단일의 16×16 PB를 가지지만 잔차 코딩/디코딩의 목적을 위해 열여섯 개의 4×4 TB로 분할된다고 가정한다. (PB에 대한) BV는 래스터 스캔 순서에서 첫 번째 TB에 대한 4×4 영역을 블록 카피하도록 적용되고, 그 다음 동일한 BV는 래스터 스캔 순서에서 두 번째 TB에 대한 4×4 블록 영역을 블록 카피하도록 적용되고, 등등이다. TB에 대한 BC 동작에서 사용되는 4×4 영역은, 잔차 값을 이들 이전에 재구성된 TB에 대한 예측 값과 결합한 이후, 동일한 CB의 이전에 재구성된 TB에서의 위치를 포함할 수 있다. (BV는 예측되고 있는 동일한 TB에서의 위치를 여전히 참조하지 않는다). TB 레벨에서 BC 동작을 적용하는 것은, 상대적으로 작은 크기를 갖는 BV의 사용을 용이하게 한다.
TB 레벨 중첩은 PU 내에서의 TU에 대한 재구성에서 직렬의 종속성을 명시적으로 생성한다. 이것은 병렬 컴퓨팅에 대한 기회를 감소시키고 하드웨어 레벨에서의 스루풋을 잠재적으로 감소시킨다. PU 레벨 중첩은 TB 사이에서의 이러한 직렬의 종속성을 제거할 수 있다. 이 경우, 블록 카피 동작은, 중첩할 수 있는 PB의 레벨에서 수행된다. 이 방식에서, BV는, PB에 대해 적용되는 바와 같이, 동일한 CB에서 다른 PB의 위치를 참조할 수 있다. 인트라 BC 예측의 목적을 위해 16×16 CB가 두 개의 PB(예를 들면, 두 개의 16×8 PB, 또는 두 개의 8×16 PB, 또는 4×16 PB와 12×16 PB 등등)로 분할된다고 가정한다. 하나의 PB에 대한 BV는 그 PB에 대한 영역을 블록 카피하기 위해 적용되고, 그 다음, 다른 PB에 대한 BV는 다른 PB에 대한 영역을 블록 카피하기 위해 적용된다. 제2 PB에 대한 BC 동작에서 사용되는 영역은, 잔차 값을 제1 PB에 대한 예측 값과 결합한 이후, 동일한 CB의 이전에 재구성된 제1 PB에서의 위치를 포함할 수 있다. (BV는 예측되고 있는 동일한 PB에서의 위치를 여전히 참조하지 않는다). PB 레벨에서 BC 동작을 적용하는 것은, (CB 레벨에서 BC 동작을 적용하는 것과 비교하여) 상대적으로 작은 크기를 갖는 BV의 사용을 용이하게 한다. 또한, BC 동작이 PB 레벨에서 적용되는 경우, TU 레벨 병렬 프로세싱은 PB 내의 TB에 대해 여전히 허용된다.
CU의 크로마 블록에 대한 인트라 BC 예측 동작은, 일반적으로, CU의 루마 블록에 대한 인트라 BC 예측 동작에 대응한다. 보통은, 크로마 PB 및 크로마 TB의 세그먼트화(segmentation)는, CU에서의 루마 PB 및 루마 TB의 세그먼트화에 직접적으로 대응한다. 비디오의 포맷이 YUV 4:4:4인 경우, 크로마 PB 및 TB의 사이즈는 대응하는 루마 PB 및 TB의 사이즈와 매칭한다. 비디오의 포맷이 YUV 4:2:0인 경우, 크로마 PB 및 TB는 대응하는 루마 PB 및 TB의 절반의 폭 및 절반의 높이이다. 그러나, 루마 TB가 최소 변환 사이즈를 가지면, 그 최소 변환 사이즈를 갖는 단일의 크로마 TB가 사용된다. 비디오의 포맷이 YUV 4:2:2인 경우, 크로마 PB 및 TB는 대응하는 루마 PB 및 TB의 절반의 폭이다.
몇몇 구현예에서, 인트라 BC 예측된 CU의 경우, PU에서의 크로마 블록에 대한 인트라 BC 예측은, 크로마 데이터가 루마 데이터에 비해 감소된 해상도를 갖는 경우에는 어쩌면 스케일링 및 반올림 이후에, PU에서의 루마 블록에 대한 인트라 BC 예측과 동일한 BV 값을 사용한다(예를 들면, 포맷이 YUV 4:2:0 포맷인 경우, BV 값은 수평 및 수직 성분에 대해 2에 의해 나누어지거나; 또는, 포맷이 4:2:2 포맷인 경우, BV 값은 수평 성분에 대해 2에 의해 나누어진다). 대안적으로, PU의 루마 블록 및 크로마 블록에 대해, 상이한 BV 값이 시그널링될 수 있다.
몇몇 구현예에서, 인코더는 BV 추정 또는 MV 추정 동안 BV 값 또는 MV 값을 식별할 때 루마 샘플 값을 고려한다. 예를 들면, 인코더는 현재 블록(예를 들면, PU의 PB)에 대한 루마 샘플 값을, 재구성된 루마 샘플 값에 매칭시키도록 시도한다. 그러나, 결과적으로 나타나는 BV 값 또는 MV 값은 대응하는 크로마 블록의 크로마 샘플 값에 또한 적용된다. 대안적으로, 인코더는 BV 추정 또는 MV 추정 동안 BV 값 또는 MV 값을 식별할 때 루마 샘플 값 및 대응하는 크로마 샘플 값을 고려한다.
몇몇 구현예에서, PU의 루마 블록의 예측 모드가 인트라 BC 예측이면, PU의 크로마 블록에 대한 예측 모드도 또한 인트라 BC 예측된다. 예를 들면, 예측 모드는 PU에 대해 시그널링된다. 대안적으로, 예측 모드는 PU의 루마 블록 또는 크로마 블록에 대한 인트라 BC 예측일 수 있지만, 그러나 둘 다에 대해서는 아니다.
B. 비대칭 구획.
도 9는 몇몇 예시적인 구현예에서의 인트라 BC 예측을 위한 블록의 구획의 예(900)를 도시한다. 2N×2N 블록은 인트라 BC 예측을 사용하여 인코딩된다. 예를 들면, 2N×2N 블록은 64×64 블록, 32×32 블록, 16×16 블록 또는 8×8 블록이다. 2N×2N 블록은 구획화 없이 인트라 BC 예측될 수 있다. 또는, 2N×2N 블록은, 도 9에서 도시되는 바와 같이, 다양한 방식으로 구획될 수 있다.
2N×2N 블록은 수평으로 두 개의 구획으로 구획될 수 있다. 두 개의 구획은 대칭 구획화의 경우 동일한 치수 - 두 개의 2N×N 블록 - 를 가질 수 있다. 또는, 두 개의 구획은 비대칭일 수 있다. 예를 들면, 상위 구획은 2N×N/2 블록이고, 하위 구획은 2N×3N/2 블록이다. 또는, 다른 예로서, 상위 구획은 2N×3N/2 블록이고, 하위 구획은 2N×N/2 블록이다. 따라서, 64×64 블록은 두 개의 64×32 블록, 64×16 블록과 64×48 블록, 또는 64×48 블록과 64×16 블록으로 구획될 수 있다. 32×32, 16×16 또는 8×8 블록은 마찬가지로 수평으로 구획될 수 있다.
대신, 2N×2N 블록은 수직으로 두 개의 구획으로 구획될 수 있다. 두 개의 구획은 대칭 구획화의 경우 동일한 치수 - 두 개의 N×2N 블록 - 를 가질 수 있다. 또는, 두 개의 구획은 비대칭일 수 있다. 예를 들면, 왼쪽 구획은 N/2×2N 블록이고, 오른쪽 구획은 3N/2×2N 블록이다. 또는, 다른 예로서, 왼쪽 구획은 3N/2×2N 블록이고, 오른쪽 구획은 N/2×2N 블록이다. 따라서, 64×64 블록은 두 개의 32×64 블록, 16×64 블록과 48×64 블록, 또는 48×64 블록과 16×64 블록으로 구획될 수 있다. 32×32, 16×16 또는 8×8 블록은 마찬가지로 수직으로 구획될 수 있다.
또는, 2N×2N 블록은 네 개의 N×N 구획으로 구획될 수 있는데, 네 개의 N×N 구획은 더 세분될 수도 있다. 예를 들면, 도 9에서 도시되는 바와 같이, 주어진 N×N 구획은 두 개의 N×N/2 블록, 두 개의 N/2×N 블록 또는 네 개의 N/2×N/2 블록으로 더 구획될 수 있다. 따라서, 64×64 블록은 네 개의 32×32 블록으로 구획될 수 있는데, 네 개의 32×32 블록의 각각은 두 개의 32×16 블록, 두 개의 16×32 블록 또는 네 개의 16×16 블록으로 구획될 수도 있다. 32×32, 16×16 또는 8×8 블록은 쿼드트리 분할에 의해 네 개의 구획으로 마찬가지로 구획될 수 있다.
본원에서 용어가 사용될 때, "N×N" 구획은, 대부분의 경우에, 2N×2N 구획으로 또한 간주될 수 있다. H.265/HEVC 구현예에서, 용어 N×N은 통상적으로, CU 또는 CB가 아닌, PU 또는 PB를 설명하기 위해 사용된다. 본원에서 사용되는 바와 같이, "N×N 구획" 또는 "N×N 블록"은 (예를 들면, 구획 모드의 하향식 평가 또는 구획 모드의 상향식 평가의 일부로서) 2N×2N의 현재 블록의 구획을 나타낸다. 이 맥락에서, N×N 구획 또는 N×N 블록은, N×N 구획 또는 N×N 블록이 최소 사이즈를 가지며 더 이상 구획되지 않지 않는 한, 그 자체가 2N×2N 블록으로 간주될 수 있고, 추가 구획화에서 그러한 것으로 취급될 수도 있다. N×N 구획 또는 N×N 블록 내에서의 구획에 대한 표시법(notation)은 마찬가지로 조정될 수 있다.
비대칭 구획 사이즈를 다수의 N/2로 제한하는 것은, 인코딩 동안 어떤 구획 모드를 사용할지를 평가하는 복잡성을 감소시킬 수 있다. 대안적으로, 인코더는 다른 구획 사이즈(예를 들면, 다수의 N/4 또는 보다 일반적으로는 구획 사이즈 m×n)를 고려할 수 있다. 다른 구획 사이즈를 고려하는 것은 코딩 이득을 약간 향상시킬 수도 있지만, 인코딩 동안 검색 프로세스의 복잡성을 또한 증가시킬 수도 있고, 시그널링 오버헤드를 증가시킬 수도 있다.
C. 비대칭 구획을 갖는 인트라 BC 예측을 포함하는 인코딩 또는 디코딩을 위한 예시적인 기술
도 10은 비대칭 구획을 갖는 인트라 BC 예측을 포함하는 인코딩을 위한 일반화된 기술(1000)을 도시한다. 도 3 또는 도 5a 및 도 5b를 참조로 설명된 바와 같은 이미지 인코더 또는 비디오 인코더가 기술(1000)을 수행할 수 있다. 도 11은 비대칭 구획을 갖는 인트라 BC 예측을 포함하는 디코딩을 위한 일반화된 기술(1100)을 도시한다. 도 4 또는 도 6을 참조로 설명된 바와 같은 이미지 디코더 또는 비디오 디코더가 기술(1100)을 수행할 수 있다.
도 10을 참조하면, 인코더는 이미지 또는 비디오를 인코딩하여 인코딩된 데이터를 생성한다(1010). 인코딩의 일부로서, 인코더는, 인트라 BC 예측을 위해 비대칭적으로 구획되는 현재 블록에 대해 인트라 BC 예측을 수행한다. 특히, 현재 블록은 상이한 치수를 갖는 두 개의 구획으로 분할될 수 있다. 인코더는 인코딩된 데이터를 비트스트림의 일부로서 출력한다(1020).
도 11을 참조하면, 디코더는 인코딩된 데이터를 비트스트림의 일부로서 수신한다(1110). 디코더는 인코딩된 데이터를 디코딩하여 이미지 또는 비디오를 재구성한다(1120). 디코딩의 일부로서, 디코더는, 인트라 BC 예측을 위해 비대칭적으로 구획되는 현재 블록에 대해 인트라 BC 예측을 수행한다. 특히, 현재 블록은 상이한 치수를 갖는 두 개의 구획으로 분할될 수 있다.
예를 들면, 현재의 2N×2N 블록은 수평으로 (1) 2N×N/2 블록과 2N×3N/2 블록으로 구획되거나 또는 (2) 2N×3N/2 블록과 2N×N/2 블록으로 구획된다. 또는, 현재의 2N×2N 블록은 수직으로 (1) N/2×2N 블록과 3N/2×2N으로 구획되거나 또는 (2) 3N/2×2N 블록과 N/2×2N 블록으로 구획된다. 대안적으로, 현재 블록은 몇몇 다른 방식으로 비대칭적으로 구획된다.
다른 블록은 인트라 BC 예측에 대해 대칭적으로 구획될 수 있다. 예를 들면, 다른 블록은, (1) 두 개의 2N×N 블록으로 구획되거나, (2) 두 개의 N×2N으로 구획되거나, 또는 (3) 네 개의 N×N 블록으로 구획되는 2N×2N 블록인데, 네 개의 N×N 블록 각각은 두 개의 N×N/2 블록, 두 개의 N/2×N 블록 또는 네 개의 N/2×N/2 블록으로 더 구획될 수 있다. 보다 일반적으로는, 대칭 구획화의 경우, 다른 블록은 동일한 치수를 갖는 구획으로 더 분할될 수 있다.
VIII. 인코더측 구획화 접근법
이 섹션은 (인트라 BC 예측을 위한) 모션 추정 또는 블록 벡터 추정 동안 구획을 식별하는 다양한 인코더측 접근법을 제시한다.
인트라 BC 예측 및 BV 추정의 예가, 예를 들면, 섹션 V, VII, IX 및 X에서 제시된다. BV 추정은, 현재 블록에 대한 많은 수의 가능한 후보 블록을 고려하면, 계산적으로 복잡할 수 있다. BV 추정의 계산적 복잡성은, BV 값에 대한 검색 범위가 픽처의 이전에 재구성된 영역의 모두를 포괄하는 경우에 특히 문제가 되는데, 현재 블록이 비교되어야 하는 많은 수의 후보 블록 때문이다. 전체 프레임의 후보 블록의 경우, 동작의 수는 더욱더 많다. 인코더가 비대칭 구획을 평가하는 경우, BV 추정의 복잡성은 더 증가된다.
하기의 섹션에서 설명되는 바와 같이, 모션 추정의 계산적 복잡성도 또한 높을 수 있다.
A. 모션 추정 및 MV 값 - 서론.
모션 추정의 경우, 현재 픽처의 현재 블록의 샘플 값은 다른 픽처의 샘플 값을 사용하여 예측되는데, 다른 픽처는 참조 픽처로 칭해진다. 모션 벡터("MV") 값은, 참조 픽처의 현재 블록의 위치로부터, 예측을 위해 사용되는 샘플 값을 포함하는 참조 픽처("참조 영역")의 영역까지의 변위를 나타낸다. 참조 영역은 현재 블록에 대한 예측 값을 제공한다. 예측을 위해 사용되는 샘플 값은 미리 재구성된 샘플 값인데, 그러므로, 미리 재구성된 샘플 값은 인코딩 동안 인코더에서 그리고 디코딩 동안 디코더에서 이용가능하다. MV 값은 비트스트림에서 시그널링되고, 디코더는 예측을 위해 사용할 참조 픽처의 참조 영역을 결정하기 위해 MV 값을 사용할 수 있는데, MV 값은 디코더에서 또한 재구성된다. 다수의 참조 픽처가 이용가능한 경우, 비트스트림은 또한, 참조 영역을 찾기 위해 참조 픽처 중 어떤 것을 사용할지의 표시(indication)를 포함할 수 있다.
도 12는 현재 픽처(1210)의 현재 블록(1230)에 대한 모션 추정을 예시한다. 현재 블록은 코딩 단위("CU")의 코딩 블록("CB"), 예측 단위("PU")의 예측 블록("PB"), 변환 단위("TU")의 변환 블록("TB") 또는 다른 블록일 수 있다. 현재 블록의 사이즈는 64×64, 32×32, 16×16, 8×8 또는 어떤 다른 사이즈일 수 있다. 보다 일반적으로는, 현재 블록의 사이즈는 m×n인데, 여기서 m 및 n의 각각은 0을 포함한 자연수(whole number)이고, m 및 n은 서로 동일할 수 있거나 또는 상이한 값을 가질 수 있다. 따라서, 현재 블록은 정사각형 또는 직사각형일 수 있다. 대안적으로, 현재 블록은 몇몇 다른 형태를 가질 수 있다.
MV 값(1240)은, 현재 블록(1230)의 위치로부터 참조 픽처(1250)의 참조 영역(종종 참조 블록으로 칭해짐)까지의 변위(또는 오프셋)를 나타내는데, 참조 영역은 예측을 위해 사용되는 샘플 값을 포함한다. MV 값(1240)에 의해 나타내어진 참조 영역은 현재 블록(1230)에 대한 "매칭 블록"으로 종종 칭해진다. 매칭 블록은 현재 블록(1230)과 동일할 수 있거나, 또는 매칭 블록은 현재 블록(1230)의 근사치일 수 있다. 현재 블록(1230)의 좌상(top-left) 위치가 현재 픽처(1210)의 위치 (x0, y0)에 있다고 가정하고, 참조 영역의 좌상 위치가 현재 픽처(1250)의 위치 (x1, y1)에 있다고 가정한다. \MV 값(1240)은 변위 (x1-x0, y1-y0)를 나타낸다. 예를 들면, 현재 블록의 좌상 위치가 위치 (256, 128)에 있고, 참조 영역의 좌상 위치가 위치 (126, 104)에 있으면, MV 값은 (-130, -24)이다. 이 예에서, 음의 수평 변위는, 현재 블록의 좌측에 있는 위치를 나타내고, 음의 수직 변위는 현재 블록 위의 위치를 나타낸다.
현재 블록(1230)에 대한 참조 영역은 모션 추정 동안 다수의 후보 블록 중에서 선택된다. 도 12는 또한, 모션 추정에서의 현재 픽처(1210)의 현재 블록(1230)에 대한 후보 블록 중 몇몇을 도시한다. 네 개의 MV 값 (1241, 1242, 1243, 1244)은 네 개의 후보 블록에 대한 변위를 나타낸다. 일반적으로, 후보 블록은 참조 픽처(1250) 내의 임의의 곳에 있을 수 있다. 후보 블록은, MV 값 (1243, 1244)에 의해 나타내어지는 후보 블록에 대해 도시된 바와 같이, 다른 후보 블록과 중첩할 수 있다. 모션 추정의 계산적 복잡성은, MV 값에 대한 검색 범위가 참조 픽처의 모두를 포괄하는 경우에 특히 문제가 되는데, 현재 블록이 비교되어야 하는 많은 수의 후보 블록 때문이다. 이 계산적 복잡성은, 모션 추정이 다수의 참조 픽처에 대해 수행될 때 더 증가된다.
B. BV 값 및 MV 값의 정밀도.
본원에서 설명된 예 중 많은 것에서, BV 값은 정수 샘플 정밀도를 갖는다. 이러한 BV 값은 정수 샘플 오프셋을 나타낸다. 인트라 BC 예측은 인공적으로 생성된 비디오(예컨대 스크린 컨텐츠 비디오)를 인코딩할 때 종종 사용되는데, 인공적으로 생성된 비디오의 경우, 분수적 샘플 변위(fractional-sample displacement)는 더물고, 따라서 정수 샘플 정밀도가 BV 값에 대해서는 충분하다. 대안적으로, BV 값은 분수적 샘플 오프셋을 나타낼 수 있다. 예를 들면, 1/2 샘플 정밀도를 갖는 BV 값은, 1/2 샘플 오프셋(예컨대 1.5 샘플, 2.5 샘플, 등등)을 갖는 수평 및/또는 수직 변위를 나타낼 수 있다. 또는 1/4 샘플 정밀도를 갖는 BV 값은 1/4, 1/2 또는 3/4 샘플 오프셋을 갖는 수평 및/또는 수직 변위를 나타낼 수 있다. 또는 1/8 샘플 정밀도를 갖는 BV 값은 1/8, 1/4, 3/8, 1/2, 5/8, 3/4, 또는 7/8 샘플 오프셋을 갖는 수평 및/또는 수직 변위를 나타낼 수 있다. 또는, BV 값은 어떤 다른 정밀도를 가질 수 있다.
한편, MV 값은 통상적으로 분수적 샘플 정밀도를 갖는데, 미가공 비디오를 인코딩할 때 분수적 샘플 변위가 일반적이기 때문이다. 예를 들면, MV 값은 1/2 샘플 정밀도, 1/4 샘플 정밀도, 1/8 샘플 정밀도 또는 어떤 다른 정밀도를 가질 수 있다. 대안적으로, MV 값은 정수 샘플 정밀도를 갖는다.
C. 구획 식별 접근법
일반적으로, 인코더는, (인트라 BC 예측을 위한) 모션 추정 또는 BV 추정 동안 구획을 식별할 때 하향식 접근법 또는 상향식 접근법을 사용할 수 있다. 상향식 접근법은, 최초, 최소 사이즈의 구획에 대한 옵션을 평가하고, 그 다음, 연속적으로 더 큰 사이즈의 구획에 대한 옵션을 평가할 때 최초 평가로부터의 결과를 사용한다. 상향식 접근법은 계산적으로 고비용일 수 있다. 한편, 하향식 접근법은, 최초, 더 큰 사이즈의 구획에 대한 옵션을 평가하고, 그 다음, 연속적으로 더 작은 사이즈의 구획에 대한 옵션을 평가할 때 최초 평가로부터의 결과를 사용한다. 하향식 접근법은 블록을 구획하는 최적의 방식을 식별할 가능성이 낮지만, 그러나 보통은 상향식 접근법보다 계산적으로 더 간단하다.
구획화 접근법에 관한 추가 상세에 대해서는, 예를 들면: (1) (적어도 몇몇 상황 하에서의) 트리 구조의 코딩을 위한 레이트-왜곡 감지에서의 최적의 트리를 식별하는 방법을 설명하는 Sullivan 등의 『"Efficient Quadtree Coding of Images and Video", in Proc. IEEE Int. Conf. on Acoust., Speech, and Signal Proc. (ICASSP), Toronto, Canada, Vol. 4, pp. 2661-2664, May 1991』; (2) (트리를 갖는 또는 트리가 없는) 모션 보상에 대해 레이트-왜곡 최적화를 적용하는 방법을 설명하는 Sullivan 등의 『"Rate-Distortion Optimized Motion Compensation for Video Compression using Fixed or Variable Size Blocks", in Proc. IEEE Global Telecom. Conf. (GLOBECOM), Phoenix, Arizona, pp. 85-90, Dec. 1991』; 및 (3) 트리 구조의 코딩을 위한 레이트-왜곡 감지에서의 최적의 트리를 식별하는 방법을 추가로 설명하는 Sullivan 등의 『 "Efficient Quadtree Coding of Images and Video", IEEE Trans, on Image Proc. Vol. IP-3, No. 3, pp. 327-331, May 1994』를 참조한다.
하기에서 설명되는 하향식 접근법 또는 상향식 접근법 중 하나를 적용하는 몇몇 구현예에서, 인코더는 PU에 대한 구획을 식별한다. 인코더는 PU의 루마 PB의 분석에 기초하여 PU에 대한 구획을 설정할 수 있다. 또는, 인코더는 PU의 루마 PB 및 크로마 PB 둘 다의 분석에 기초하여 PU에 대한 구획을 설정할 수 있다. 어느 경우든, PU 기반으로 설정되는 구획은, 다음에, PU의 PB에 적용된다. 대안적으로, 인코더는 다른 타입의 단위 또는 블록에 대한 구획을 식별한다.
1. 하향식 구획 식별 접근법.
인코더는, (인트라 BC 예측을 위한) BV 추정 또는 모션 추정 동안 현재 블록의 구획을 식별할 때 하향식 접근법을 사용할 수 있다. 현재 블록은 PU의 PB, 또는 다른 타입의 블록일 수 있다. 도 13은 인트라 BC 예측된 블록을 구획화하는 하향식 접근법을 예시하는 플로우차트 및 수반하는 도면이다. 도 3 또는 도 5a 및 도 5b를 참조로 설명된 바와 같은 이미지 인코더 또는 비디오 인코더가 접근법(1300)을 사용할 수 있다. 도 13에서 도시되는 예에서, 인코더는 비대칭 구획화를 갖는 인트라 BC 예측된 2N×2N 블록의 적어도 몇몇 구획을 식별한다.
인코더는 2N 치수를 갖는 모드를 체크한다(1310). 예를 들면, 인코더는 단일의 2N×2N 블록에 대한 모드, 두 개의 2N×N 블록에 대한 모드, 두 개의 N×2N 블록에 대한 모드, 하나의 N/2×2N 블록과 하나의 3N/2×2N 블록(도 13에서 도시되는 두 옵션, 왼쪽 또는 오른쪽에서 폭이 좁은 블록을 가짐)에 대한 모드 및 하나의 2N×N/2 블록과 하나의 2N×3N/2 블록(도 13에서 도시되는 두 옵션, 위쪽 또는 아래쪽에서 더 짧은 블록을 가짐)에 대한 모드를 체크한다. 16×16 CU의 경우, 예를 들면, 인코더는 사이즈 16×P를 갖는 모든 PU 및 사이즈 P×16을 갖는 모든 PU를 체크하는데, 여기서 P는 허용된 조합에서 4, 8, 12 및 16일 수 있다.
현재의 2N×2N 블록에 대한 주어진 모드에 대해, 인코더는 모드에 따른 현재 2N×2N 블록의 블록(들)에 대한 BV 값(들)을 결정한다. 현재의 2N×2N 블록의 블록에 대해, 인코더는, 예를 들면, (1) 현재 픽처의 이웃 블록(들)에 의해 사용되는 BV 값(들), (2) 이전 픽처의 연결된(collocated) 블록에 의해 사용되는 BV 값, 또는 (3) 앞선 모션 추정에서 현재의 2N×2N 블록의 블록에 대해 식별된 MV 값에 기초하여, 시작 BV 값(starting BV value)을 선택할 수 있다. 그 다음, 인코더는 현재의 2N×2N 블록의 블록에 대한 적절한 BV 값을 찾는다.
인코더는 2N 치수를 갖는 최상의 모드를 선택한다(1320). 선택 기준은 왜곡 비용, 비트 레이트 비용 또는 왜곡 비용과 비트 레이트 비용의 어떤 조합일 수 있거나, 또는 선택 기준은 (예를 들면, 변동 임계치 또는 에지 검출기를 사용하는) 어떤 다른 메트릭을 사용할 수 있다. 예를 들면, 도 13에서, 인코더는 왼쪽 N/2×2N 블록 및 오른쪽 3N/2×2N 블록을 갖는 모드를 선택한다.
쿼드트리로서의 2N×2N 블록의 분할 이후, 인코더는 또한 2N×2N 블록의 N×N 블록마다 모드를 체크한다(1330). 예를 들면, 주어진 N×N 블록의 경우, 인코더는 단일의 N×N 블록에 대한 모드, 두 개의 N×N/2 블록에 대한 모드, 두 개의 N/2×N 블록에 대한 모드, 및 네 개의 N/2×N/2 블록에 대한 모드를 체크한다. 인코더는 각각의 N×N 블록을 개별적으로 체크할 수 있다. 8×8 CU의 경우, 예를 들면, 인코더는 8×8 PU, 두 개의 8×4 PU, 두 개의 4×8 및 네 개의 4×4 PU를 체크한다.
주어진 N×N 블록에 대한 주어진 모드에 대해, 인코더는 모드에 따른 주어진 N×N 블록의 블록(들)에 대한 BV 값(들)을 결정한다. 인코더는, 예를 들면, 현재의 2N×2N 블록에 대해 식별되었던 BV 값에 기초하여, 시작 BV 값을 선택할 수 있다. 그 다음, 인코더는 모드에 따른 주어진 N×N 블록의 블록(들)에 대한 적절한 BV 값(들)을 찾는다.
인코더는 각각의 N×N 블록에 대한 모드의 최상의 조합을 선택한다(1340). 선택 기준은 왜곡 비용, 비트 레이트 비용 또는 왜곡 비용과 비트 레이트 비용의 어떤 조합일 수 있거나, 또는 선택 기준은 (예를 들면, 변동 임계치 또는 에지 검출기를 사용하는) 어떤 다른 메트릭을 사용할 수 있다. 도 13에서 도시되는 바와 같이, 상이한 N×N 블록은 동일한 모드 또는 상이한 모드를 가질 수 있다.
2N×2N 블록의 경우, 인코더는, 그 다음, 2N 치수를 갖는 최상의 모드와 각각의 N×N 블록에 대한 최상의 모드의 조합 사이에서 선택한다(1350). 선택 기준은 왜곡 비용, 비트 레이트 비용 또는 왜곡 비용과 비트 레이트 비용의 어떤 조합일 수 있거나, 또는 선택 기준은 (예를 들면, 변동 임계치 또는 에지 검출기를 사용하는) 어떤 다른 메트릭을 사용할 수 있다.
2. 상향식 구획 식별 접근법
하향식 접근법을 사용하는 대신, 인코더는, (인트라 BC 예측을 위한) BV 추정 또는 모션 추정 동안 현재 블록의 구획을 식별할 때 상향식 접근법을 사용할 수 있다. 도 14는, 상향식 구획화 접근법을 사용하기 위한 일반화된 기술을 예시하는 플로우차트이다. 도 3 또는 도 5a 및 도 5b를 참조로 설명된 바와 같은 이미지 인코더 또는 비디오 인코더가 기술(1400)을 수행할 수 있다.
인코더는 이미지 또는 비디오를 인코딩하여 인코딩된 데이터를 생성한다(1410). 인코딩의 일부로서(예를 들면, 모션 추정의 일부로서 또는 인트라 BC 예측을 위한 블록 벡터 추정의 일부로서), 인코더는 현재 픽처의 현재 블록에 대한 예측치를 계산한다. 현재 블록은 PU의 PB, 또는 다른 타입의 블록일 수 있다. 예측치를 계산할 때, 인코더는 현재 블록의 구획을 식별하기 위해 상향식 접근법을 사용한다. 인코더는, 현재 블록의 구획이 상이한 치수를 갖는 두 개의 구획이 되도록 현재 블록을 비대칭적으로 구획할 수 있거나, 또는 현재 블록의 구획이 동일한 치수를 갖도록, 현재 블록을 대칭적으로 구획할 수 있다.
일반적으로 상향식 접근법의 경우, 현재 블록에 대해, 인코더는 현재 블록 내의 더 작은 블록에 대한 적어도 몇몇 구획 모드를 체크한다. 인코드는 더 작은 블록에 대한 결과 예컨대 BV 값 또는 MV 값을 캐싱한다. 그 다음, 인코더는, 현재 블록에 대한 구획 모드 체크의 계산적 복잡성을 감소시키기 위해 (더 작은 블록으로부터의) 캐싱된 결과를 사용하여, 현재 블록에 대한 적어도 몇몇 구획 모드를 체크한다. 예를 들면, 인코더는, 현재 블록에 대한 구획 모드에 대한 (BV 추정 동안의) 시작 BV 값 또는 (모션 추정 동안의) MV 값을 식별하기 위해, 더 작은 블록으로부터의 캐싱된 결과를 사용한다. 많은 경우에서, 시작 BV 값(또는 MV 값)은 현재 블록에 대해 사용될 것인데, 시작 BV 값(또는 MV 값)이 현재 블록에 대해 사용되는 것은, 검색 프로세스를 상당히 짧아지게 한다. 도 15 및 도 16은 현재 블록에 대한 구획을 식별하는 예시적인 상향식 접근법을 도시한다. 대안적으로, 인코더는 다른 상향식 접근법을 사용한다.
그 다음, 인코더는 인코딩된 데이터를 비트스트림의 일부로서 출력한다(1420).
도 15는 인트라 BC 예측된 블록을 구획화하는 상향식 접근법(1500)을 예시하는 플로우차트 및 수반하는 도면이다. 도 3 또는 도 5a 및 도 5b를 참조로 설명된 바와 같은 이미지 인코더 또는 비디오 인코더가 접근법(1500)을 사용할 수 있다.
쿼드트리로서 분할되는 2N×2N 블록의 경우, 인코더는 2N×2N 블록의 N×N 블록마다의 모드를 체크한다(1510). 예를 들면, 주어진 N×N 블록의 경우, 인코더는 단일의 N×N 블록에 대한 모드, 두 개의 N×N/2 블록에 대한 모드, 두 개의 N/2×N 블록에 대한 모드, 및 네 개의 N/2×N/2 블록에 대한 모드를 체크한다. 인코더는 각각의 N×N 블록을 개별적으로 체크할 수 있다. 8×8 CU의 경우, 예를 들면, 인코더는 8×8 PU, 두 개의 8×4 PU, 두 개의 4×8 및 네 개의 4×4 PU를 체크한다.
주어진 N×N 블록에 대한 주어진 모드에 대해, 인코더는 모드에 따른 주어진 N×N 블록의 블록(들)에 대한 BV 값(들)을 결정한다. 주어진 N×N 블록의 블록에 대해, 인코더는, 예를 들면, (1) 현재 픽처의 이웃 블록(들)에 의해 사용되는 BV 값(들), (2) 이전 픽처의 연결된 블록에 의해 사용되는 BV 값, 또는 (3) 앞선 모션 추정에서 주어진 N×N 블록의 블록에 대해 식별된 MV 값에 기초하여, 시작 BV 값을 선택할 수 있다. 그 다음, 인코더는 주어진 N×N 블록의 블록에 대한 적절한 BV 값을 찾는다.
인코더는 각각의 N×N 블록에 대한 모드의 최상의 조합을 선택한다(1520). 선택 기준은 왜곡 비용, 비트 레이트 비용 또는 왜곡 비용과 비트 레이트 비용의 어떤 조합일 수 있거나, 또는 선택 기준은 (예를 들면, 변동 임계치 또는 에지 검출기를 사용하는) 어떤 다른 메트릭을 사용할 수 있다. 도 15에서 도시되는 바와 같이, 상이한 N×N 블록은 동일한 모드 또는 상이한 모드를 가질 수 있다.
인코더는 벡터 값, 구획 모드 정보 및/또는 2N×2N 블록의 N×N 블록마다의 모드를 체크한(1510) 다른 결과를 캐싱한다(1530). 예를 들면, 인코더는 BV 추정 동안의 BV 값뿐만 아니라, 2N×2N 블록의 N×N 블록에 대한 구획 모드 선택을 캐싱한다.
인코더는, 많은 경우에서 검색 프로세스를 짧아지게 하는 것에 의해 계산적 복잡성을 감소시키기 위해 캐싱된 정보를 사용하여, 2N 치수를 갖는 모드를 체크한다(1540). 인코더는 2N×2N 블록에 대한 (BV 추정 동안의) 시작 BV 값을 식별하기 위해 캐싱된 결과를 사용할 수 있다. 많은 경우에서, 시작 BV 값은 2N×2N 블록의 2N 치수 구획 모드에 대해 사용될 것인데, 시작 BV 값이 2N×2N 블록의 2N 치수 구획 모드에 대해 사용되는 것은 검색 프로세스를 상당히 짧아지게 한다.
예를 들면, 인코더는 단일의 2N×2N 블록에 대한 모드, 두 개의 2N×N 블록에 대한 모드, 두 개의 N×2N 블록에 대한 모드, 하나의 N/2×2N 블록과 하나의 3N/2×2N 블록(도 15에서 도시되는 두 옵션, 왼쪽 또는 오른쪽에서 폭이 좁은 블록을 가짐)에 대한 모드 및 하나의 2N×N/2 블록과 하나의 2N×3N/2 블록(도 15에서 도시되는 두 옵션, 위쪽 또는 아래쪽에서 더 짧은 블록을 가짐)에 대한 모드를 체크한다. 16×16 CU의 경우, 예를 들면, 인코더는 16×16 CU의 네 개의 8×8 CU에 대한 구획 모드를 체크한 이후 캐싱되는 정보를 재사용한다. 많은 경우에서, 16×16 CU에 대한 구획 모드는 8×8 CU로부터의 캐싱된 BV 값을 사용하여 종료하는데, 16×16 CU에 대한 구획 모드가 8×8 CU로부터의 캐싱된 BV 값을 사용하여 종료하는 것은 검색 프로세스를 상당히 짧아지게 한다.
인코더는 2N 치수를 갖는 최상의 모드를 선택한다(1550). 선택 기준은 왜곡 비용, 비트 레이트 비용 또는 왜곡 비용과 비트 레이트 비용의 어떤 조합일 수 있거나, 또는 선택 기준은 (예를 들면, 변동 임계치 또는 에지 검출기를 사용하는) 어떤 다른 메트릭을 사용할 수 있다. 예를 들면, 도 15에서, 인코더는 왼쪽 N/2×2N 블록 및 오른쪽 3N/2×2N 블록을 갖는 모드를 선택한다.
2N×2N 블록의 경우, 인코더는, 그 다음, 2N 치수를 갖는 최상의 모드와 각각의 N×N 블록에 대한 모드의 조합 사이에서 선택한다(1650). 선택 기준은 왜곡 비용, 비트 레이트 비용 또는 왜곡 비용과 비트 레이트 비용의 어떤 조합일 수 있거나, 또는 선택 기준은 (예를 들면, 변동 임계치 또는 에지 검출기를 사용하는) 어떤 다른 메트릭을 사용할 수 있다.
도 15를 참조로 설명되는 기술(1500)은 또한, 인터 코딩된 블록의 상향식 구획화를 위해 사용될 수 있다. 이 경우, MV 값 및 N×N 블록으로부터의 다른 결과는 캐싱된다. 인코더는 2N×2N 블록에 대한 (모션 추정 동안의) 시작 MV 값을 식별하기 위해 캐싱된 결과를 사용할 수 있다. 많은 경우에서, 시작 MV 값은 2N×2N 블록의 2N 치수 구획 모드에 대해 사용될 것인데, 시작 MV 값이 2N×2N 블록의 2N 치수 구획 모드에 대해 사용되는 것은 검색 프로세스를 상당히 짧아지게 한다.
도 16은 인트라 BC 예측된 블록을 구획화하는 더욱 빠른 상향식 접근법(1600)을 예시하는 플로우차트 및 수반하는 도면이다. 도 3 또는 도 5a 및 도 5b를 참조로 설명된 바와 같은 이미지 인코더 또는 비디오 인코더가 접근법(1600)을 사용할 수 있다. 도 16의 접근법(1600)은 도 15의 접근법(1500)과 유사하지만, 그러나 검색 프로세스를 더 짧아지게 하기 위해 여러 곳에서 수정되었다.
쿼드트리로서 분할되는 2N×2N 블록의 경우, 인코더는 또한 2N×2N 블록의 N×N 블록마다의 모드의 서브셋을 체크한다(1610). 즉, 인코더는 N×N 블록마다의 모드 중 전체가 아닌 몇몇을 체크한다. 예를 들면, 주어진 N×N 블록의 경우, 인코더는 두 개의 N×N/2 블록을 갖는 모드만을 체크한다. 또한, 다른 예로서, 인코더는 두 개의 N/2×N 블록을 갖는 모드만을 체크한다. 인코더는 각각의 N×N 블록을 개별적으로 체크할 수 있다. 그러나, 더 적은 모드를 체크하는 것에 의해, 검색 프로세스는 더 짧아진다. 대안적으로, 인코더는 N×N 블록마다 다른 및/또는 추가 모드를 체크한다.
다수의 모드가 체크되었다면(1610), 인코더는 각각의 N×N 블록에 대한 모드의 최상의 조합을 선택한다(1620). 선택 기준은 왜곡 비용, 비트 레이트 비용 또는 왜곡 비용과 비트 레이트 비용의 어떤 조합일 수 있거나, 또는 선택 기준은 (예를 들면, 변동 임계치 또는 에지 검출기를 사용하는) 어떤 다른 메트릭을 사용할 수 있다. 단일의 모드만이 체크되었다면(1610), 인코더는 N×N 블록마다 단순히 그 모드를 사용한다.
인코더는 벡터 값, 구획 모드 정보 및/또는 2N×2N 블록의 N×N 블록마다의 모드를 체크한(1610) 다른 결과를 캐싱한다(1630). 예를 들면, 인코더는 BV 추정 동안의 BV 값뿐만 아니라, 2N×2N 블록의 N×N 블록에 대한 구획 모드 선택을 캐싱한다.
인코더는, 계산적 복잡성을 감소시키기 위해 캐싱된 정보를 사용하여, 2N 치수를 갖는 모드의 서브셋을 체크한다(1640). 예를 들면, 인코더가 N×N 블록의 N×N/2 블록만을 체크하면(1610), 인코더는 단일의 2N×2N 블록에 대한 모드, 두 개의 2N×N 블록에 대한 모드, 및 하나의 2N×N/2 블록과 하나의 2N×3N/2 블록(도 16에서 도시된 두 옵션, 위쪽 또는 아래쪽에서 더 짧은 블록을 가짐)에 대한 모드를 체크한다. 또는 인코더가 N×N 블록의 N/2×N 블록만을 체크하면(1610), 인코더는 단일의 2N×2N 블록에 대한 모드, 두 개의 N×2N 블록에 대한 모드, 및 하나의 N/2×2N 블록과 하나의 3N/2×2N 블록(도 16에서 도시된 두 옵션, 왼쪽 또는 오른쪽에 폭이 좁은 블록을 가짐)에 대한 모드를 체크한다.
또는, 다른 예(도 16에서 예시되지 않음)로서, 인코더는 2N×2N 블록의 N×N 블록마다 N×N 구획만을 체크한다(1610). 2N×2N 블록이 인트라 코딩된 블록이면, 인코더는 단일의 2N×2N 블록에 대한 모드, 두 개의 N×2N 블록에 대한 모드, 및 하나의 N/2×2N 블록과 하나의 3N/2×2N 블록(왼쪽 또는 오른쪽에 폭이 좁은 블록을 가짐)에 대한 모드를 체크한다(1640). 2N×2N 블록이 인터 코딩된 블록이면, 인코더는 단일의 2N×2N 블록에 대한 모드, 두 개의 2N×N 블록에 대한 모드, 및 하나의 2N×N/2 블록과 하나의 2N×3N/2 블록(위쪽 또는 아래쪽에서 더 짧은 블록을 가짐)에 대한 모드를 체크한다(1640).
인코더는 2N 치수를 갖는 최상의 모드를 선택한다(1650). 선택 기준은 왜곡 비용, 비트 레이트 비용 또는 왜곡 비용과 비트 레이트 비용의 어떤 조합일 수 있거나, 또는 선택 기준은 (예를 들면, 변동 임계치 또는 에지 검출기를 사용하는) 어떤 다른 메트릭을 사용할 수 있다. 2N×2N 블록의 경우, 인코더는, 그 다음, 2N 치수를 갖는 최상의 모드와 각각의 N×N 블록에 대한 모드의 조합 사이에서 선택한다(1660). 선택 기준은 왜곡 비용, 비트 레이트 비용 또는 왜곡 비용과 비트 레이트 비용의 어떤 조합일 수 있거나, 또는 선택 기준은 (예를 들면, 변동 임계치 또는 에지 검출기를 사용하는) 어떤 다른 메트릭을 사용할 수 있다.
도 16을 참조로 설명되는 기술(1600)은 또한, 인터 코딩된 블록의 상향식 구획화를 위해 사용될 수 있다. 이 경우, MV 값 및 N×N 블록으로부터의 다른 결과는 캐싱된다. 인코더는 2N×2N 블록에 대한 (모션 추정 동안의) 시작 MV 값을 식별하기 위해 캐싱된 결과를 사용할 수 있다. 많은 경우에서, 시작 MV 값은 2N×2N 블록의 2N 치수 구획 모드에 대해 사용될 것인데, 시작 MV 값이 2N×2N 블록의 2N 치수 구획 모드에 대해 사용되는 것은 검색 프로세스를 상당히 짧아지게 한다.
도 15 및 도 16에서 도시되는 접근법(1500, 1600)에서, 인코더는 캐싱된 BV 값 또는 MV 값의 수를 제한할 수 있다. 예를 들면, 인코더는 2N×2N 블록의 N×N 블록마다 최상의 구획 모드에 대한 BV 값(들) 또는 MV 값(들)만을 저장한다. 대안적으로, 인코더는 다른 BV 값 또는 MV 값도 또한 저장한다. 인코더 제약은 얼마나 많은 BV 값 또는 MV 값을 인코더가 저장하는지를 제어할 수 있다.
IX. 검색 패턴.
이 섹션은 모션 추정 또는 인트라 BC 예측에서 사용될 수 있는 다양한 검색 패턴을 제시한다. 특히, 검색 패턴은 스크린 캡쳐 비디오 또는 다른 인공적으로 생성된 비디오에서 모션의 공통 타입을 활용한다. 이러한 비디오에서, 블록에 대한 모션은 종종 (예를 들면, 컴퓨터 데스크탑 환경에서의 웹 페이지 컨텐츠 또는 애플리케이션 컨텐츠의 스크롤링으로부터의, 또는 혼합된 컨텐츠 비디오에서의 티커 그래픽(ticker graphic)의 스크롤링으로부터의) 순수한 수평 모션이거나 또는 순수한 수직 모션이다. 이 장면에서, 검색 패턴은 스크린 캡쳐 비디오 또는 다른 인공적으로 생성된 비디오에 대해 적응되지만, 검색 패턴은 또한 미가공 비디오를 인코딩할 때 사용될 수 있다.
도 17은 적은 이웃(들)에서의 한 위치의 반복적 평가 및 더 큰 이웃(들)에서의 그 위치의 반복적 확증을 사용하여 블록에 대한 BV 값 또는 MV 값을 검색하기 위한 일반화된 기술(1700)을 예시하는 플로우차트이다. 도 3 또는 도 5a 및 도 5b를 참조로 설명된 바와 같은 이미지 인코더 또는 비디오 인코더가 기술(1700)을 수행할 수 있다.
인코더는 이미지 또는 비디오를 인코딩하여 인코딩된 데이터를 생성하고, 인코딩된 데이터를 비트스트림의 일부로서 출력한다. 인코딩 동안, 인코더는 (예를 들면, BV 추정 또는 모션 추정을 사용하여) 현재 픽처의 현재 블록에 대한 예측치를 계산한다. 예측치를 계산할 때, 인코더는 예측을 위한 현재의 최상의 위치를, 예측을 위한 그 현재의 최상의 위치 근처의 작은 이웃에서의 반복적인 평가를 통해 식별한다(1710). 예를 들면, 작은 이웃은 현재의 최상의 위치에 수평으로 또는 수직으로 바로 인접하는 위치를 포함한다. 작은 이웃의 위치 중 하나가 현재의 최상의 위치보다 더 나은 결과를 제공하면, 현재의 최상의 위치는 작은 이웃의 더 나은 위치로 대체되고, 신규의 위치는 자기 주변의 작은 이웃에서 체크된다. 이 방식에서, 작은 이웃 패턴을 사용하는 검색 프로세스는, 현재의 최상의 위치가 자기 주변의 작은 이웃에서 최상의 위치일 때까지 반복적으로 반복된다. 현재의 최상의 위치가 자기 주변의 작은 이웃에서 최상의 위치가 되는 것은 제1 반복에서 또는 다수의 반복 이후에 발생할 수 있을 것이다.
도 18a 및 도 18b는, 블록에 대한 BV 값 또는 MV 값을 검색할 때, 적은 이웃에서의 한 위치의 반복적 평가를 예시한다. 도 18a에서, 현재의 최상의 위치는 검은 원으로 도시된다. 다이아몬드 패턴의 인접한 위치(회색 원으로 도시됨)가 평가된다. 네 개의 인접한 위치에 대한 결과는, (왜곡 비용, 비트 레이트 비용 또는 왜곡 비용과 비트 레이트 비용의 몇몇 조합의 관점에서) 현재의 최상의 위치에 대한 결과에 대해 반복적으로 비교된다. 도 18a 및 도 18b의 예에서, 도 18a의 현재의 최상의 위치 아래의 위치가 더 나은 결과를 제공하고 현재의 최상의 위치가 된다. 다음 반복에서, 도 18b에서 도시되는 바와 같이, 신규의 현재의 최상의 위치 주변의 다이아몬드 패턴의 인접 위치가 평가된다. 대안적으로, 더 작은 이웃은 다른 형상을 가질 수 있다.
인코더는 식별(1710) 스테이지에서 반복의 횟수를 제한하는 임계치를 사용할 수 있다. 임계치는 구현예에 따르며, 예를 들면, 4회 반복이다. 반복의 임계 횟수에 도달되면, 인코더는 예측치에 대한 최상의 위치를 결정하기 위해 다른 검색 프로세스(예를 들면, 전체 검색 프로세스 또는 해싱 프로세스)를 수행할 수 있다.
도 17로 돌아가서, (반복의 임계 횟수 내에) 작은 이웃에서 현재의 최상의 위치를 식별한 이후, 인코더는 예측치에 대한 현재의 최상의 위치 주변의 연속적으로 더 큰 이웃에서의 반복적인 평가를 통해 예측치에 대한 현재의 최상의 위치를 확증한다(1720). 예를 들면, 더 큰 이웃의 각각은 작은 이웃 외부에 있는 링 내의 위치를 포함한다. 연속적으로 더 큰 이웃은 각각의 변에서 하나의 샘플, 두 개의 샘플 등등만큼 증가적으로 성장할 수 있다. 또는, 연속적으로 더 큰 이웃은 어떤 인자만큼 스케일업될 수 있다. 예를 들면, 더 큰 이웃의 반경은 첫 번째 이후의 각각의 반복에서 2배만큼 스케일링된다.
더 큰 이웃의 위치 중 하나가 현재의 최상의 위치보다 더 나은 결과를 제공하면, 현재의 최상의 위치는 더 큰 이웃의 더 나은 위치로 대체되고, 인코더는 신규의 현재의 최상의 위치에서 프로세스를 재시작한다. 그렇지 않다면(더 큰 이웃의 위치 중 어느 것도 현재의 최상의 위치보다 더 나은 결과를 제공하지 않으면), 인코더는, 확증(1720) 프로세스의 반복의 임계 횟수에 도달될 때까지, 다음 더 큰 이웃을 가지고 확증 프로세스를 반복한다. 임계치는 구현예에 따르며, 예를 들면, 연속적으로 더 큰 이웃에 대해서 4 내지 7 스테이지 중 임의의 것이다.
가장 큰 이웃이 성공적으로 체크된 이후, 인코더는 검색 프로세스를 종료한다. 가장 큰 이웃이 성공적으로 체크되지 않으면(결정 1730으로서 도시됨), 인코더는 신규의 현재의 최상의 위치에서 프로세스를 재시작한다.
도 19는, 블록에 대한 BV 값 또는 MV 값을 검색할 때, 하나 이상의 더 큰 이웃에서의 한 위치의 반복적 확증을 예시한다. 도 19에서, 현재의 최상의 위치는 검은 원으로 도시된다. 인코더는 현재의 최상의 위치 주변의 정사각형(안쪽 정사각형)의 코너 및 중간점에 있는 여덟 개의 위치를 체크한다. 여덟 개의 위치는 도 19에서 회색 원으로서 도시되어 있다. 여덟 개의 인접한 위치에 대한 결과는, (왜곡 비용, 비트 레이트 비용 또는 왜곡 비용과 비트 레이트 비용의 몇몇 조합의 관점에서) 현재의 최상의 위치에 대한 결과에 대해 반복적으로 비교된다. 안쪽 정사각형의 여덟 개의 위치 중 어느 것도 현재의 최상의 위치보다 더 낫지 않으면, 인코더는 더 큰 정사각형(도 19에서의 바깥쪽 정사각형)의 여덟 개의 위치(코너 및 중간점)를 체크한다. 대안적으로, 더 큰 이웃은 다른 형상(예를 들면, 위치의 원)을 가질 수 있고, 평가되는 더 적은 위치(예를 들면, 단지 코너만)를 포함할 수 있거나 또는 평가되는 더 많은 위치(예를 들면, 형상의 둘레에 있는 위치)를 포함할 수 있다.
제1 임계치(작은 이웃 반복)에 대한 카운터는 식별(1710) 스테이지가 시작되거나 재시작될 때마다 리셋될 수 있다. 또는 인코더는 제1 임계치에 대한 카운터를 프로세스(1700)의 시작에서 한 번만 리셋할 수 있다. 마찬가지로, 제2 임계치(큰 이웃 반복)에 대한 카운터는 확증(1720) 스테이지가 시작되거나 재시작될 때마다 리셋될 수 있다. 또는, 인코더는 제2 임계치에 대한 카운터를 프로세스(1700)의 시작에서 한 번만 리셋할 수 있다. 카운터가 프로세스(1700) 내에서 리셋되면, 인코더는 검색 프로세스가 얼마나 오래 지속되어야 하는지를 제한하여, 프로세스(1700)가 합리적인 시간 내에 종료하는 것을 보장하기 위해, 다른 제약을 사용할 수 있다.
도 20은 적은 이웃(들)에서의 한 위치의 반복적 평가 및 더 큰 이웃(들)에서의 그 위치의 반복적 확증을 사용하여 블록에 대한 BV 값 또는 MV 값을 검색하기 위한 예시적인 기술을 예시하는 플로우차트이다.
인코더는 제1 및 제2 카운터를 리셋한다(2010). 인코더는 현재의 최상의 위치를 설정하고(2020) (현재의 최상의 위치에 대한 결과가 이전 평가로부터 아직 이용가능하지 않으면) 현재의 최상의 위치를 평가한다. 그 다음, 인코더는 (인접한 위치에 대한 결과가 이전 평가로부터 아직 이용가능하지 않으면) 현재의 최상의 위치 주변의 작은 이웃에 있는 인접한 위치를 평가한다(2030). 인코더는 신규의 최상의 위치가 발견되는지를 (결과를 비교하는 것에 의해) 체크한다(2040). 최상의 위치가 발견되면, 인코더는 제1 카운터를 사용하여 제1 임계치에 도달되어 있는지를 체크한다(2042). 제1 임계치에 도달되지 않았다면, 인코더는 제1 카운터를 증가시키고(도시되지 않음), 현재의 최상의 위치가 (인접 위치 중에서) 신규의 최상의 위치가 되도록 설정하고(2010) 신규의 최상 위치로부터 계속한다. 이 방식에서, 인코더는 현재의 최상의 위치 주변의 인접 위치의 작은 이웃을 반복적으로 체크할 수 있다.
제1 임계치에 도달되면, 인코더는 전체 검색을 수행한다(2080). 대안적으로, 인코더는 해싱 프로세스와 같은 다른 검색 프로세스를 사용한다.
신규의 최상의 위치가 (결정(2040)에서) 발견되지 않으면, 인코더는 현재의 최상의 위치 주변의 위치의 링을 평가한다(2050). 인코더는 신규의 최상의 위치가 발견되는지를 (결과를 비교하는 것에 의해) 체크한다(2060). 신규의 최상의 위치가 발견되면, 인코더는 제1 및 제2 카운터를 리셋하고(2090), 현재의 최상의 위치가 (인접 위치 중에서) 신규의 최상의 위치가 되도록 설정하고(2010), 신규의 최상 위치로부터 계속한다. 이 방식에서, 인코더는 프로세스(2000)를 재시작한다.
그렇지 않으면(결정(2060)에서 신규의 최상의 위치가 발견되지 않으면), 인코더는 제2 카운터를 사용하여 제2 임계치에 도달되어 있는지를 체크한다(2062). 제2 임계치에 도달되어 있다면, 인코더는 검색 프로세스를 (성공적으로) 종료한다. 제2 임계치에 도달되지 않았다면, 인코더는 제2 카운터를 증가시키고(도시되지 않음), 위치의 링을 확장시키고(2070) 현재의 최상의 위치 주변의 위치의 (확장된) 링을 평가한다(2050).
이 섹션에서 설명되는 예에서, BV 값 및 MV 값은 정수 샘플 오프셋을 나타낸다. 대안적으로, BV 값 및/또는 MV 값은 분수적 샘플 오프셋을 나타낼 수 있다. 분수적 샘플 오프셋이 허여되면, 인코더는 도 17 내지 도 20을 참조로 설명되는 바와 같은 정수 샘플 오프셋을 갖는 BV 값 또는 MV 값을 식별할 수 있다. 그 다음, 인코더는 정수 샘플의 BV 또는 MV 값 주변의 이웃에서의(예를 들면, 정수 샘플의 BV 또는 MV 값으로부터의 단일의 샘플 오프셋 이내의) BV 값 또는 MV 값을 식별할 수 있다.
대안적으로, 분수적 샘플 오프셋이 허여되면, 인코더는 도 17 내지 도 20을 참조로 설명되는 스테이지의 각각에서 허여된 정밀도를 갖는 분수적 샘플 오프셋을 구비하는 BV 값 또는 MV 값을 식별할 수 있다(즉, 작은 이웃에서 분수적 샘플 오프셋을 구비하는 BV 값 또는 MV 값을 식별할 수 있고, 더 큰 이웃에서 분수적 샘플 오프셋을 구비하는 BV 값 또는 MV 값을 식별할 수 있고, 등등을 할 수 있다).
X. 인트라 BC 예측을 위한 BV 검색 범위 제약.
몇몇 예시적인 구현예에서, 인코더는 BV 추정을 위해 전체 검색 범위를 사용한다. 현재 블록에 대한 BV 값을 식별하기 위해, 재구성된 샘플 값의 전체 영역이 검색된다. 전체 검색 범위를 사용하는 것이 인트라 BC 예측에서 사용할 최상의 BV 값을 식별하는 것을 도울 수 있지만, 전체 검색 범위를 사용하는 것은 BV 추정의 복잡성을 더욱 증가시킬 수 있다.
다른 예시적인 구현예에서, 인코더는 하나 이상의 제약에 따라 BV 검색 범위를 제한한다. BV 검색 범위를 제한하는 것에 의해, 인코딩 및 디코딩 동안 인트라 BC 예측을 위한 빠른 메모리 액세스에 의해 참조되는 재구성된 샘플 값의 영역은 감소될 수 있고, 이것은 구현 비용을 저감하는 경향이 있다.
이 섹션의 예에서, 인코더는 BV 추정 동안 BV 값을 추정할 때 현재 루마 블록의 루마 샘플 값을 고려한다. 인코더가 현재 블록에 대한 루마 샘플 값을 이전 루마 블록의 재구성된 루마 샘플 값에 매치시키도록 시도한다. 그러나, 결과적으로 나타나는 BV 값은 또한, 대응하는 크로마 블록의 크로마 샘플 값에 적용된다.
도 21a는 BV 값에 대한 검색 범위에 관한 예시적인 제약을 예시한다. 현재 프레임(2110)의 현재 블록(2130) 외에, 도 21a는 두 개의 CTB(2120, 2122)에 의해 정의되는 검색 범위를 도시한다. 현재 CTB(2120)는 현재 CTU의 일부이고 현재 블록(2130)을 포함한다. CTB(2122)를 자신의 왼쪽에 둔 상태에서, 현재 CTB(2120)는, 현재 블록(2130)에 대해 허용가능한 BV가 발견될 수 있는 검색 범위를 정의한다. BV(2142, 2144)는, 검색 범위 밖에 있는 영역을 참조하기 때문에, 이들 BV 값(2142, 2144)은 허용되지 않는다.
몇몇 예시적인 구현예에서, 현재 블록에 대한 BV 값에 대한 검색 범위는 현재 CTB 및 현재 CTB 좌측의 CTB이다. 예를 들면, CTB는 64×64, 32×32 또는 16×16 샘플 값의 사이즈를 가질 수 있는데, 이들은 128×64, 64×32 또는 32×16 샘플 값의 검색 범위를 산출한다. 현재 블록에 대한 인트라 BC 예측을 위해, 현재 CTB 및 좌측 CTB의 샘플 값만이 사용된다. 현재 CTB 및 좌측 CTB의 샘플 값만이 사용되는 것은, 검색 프로세스를 제약하는 것에 의해 인코더 구현을 단순화한다. 현재 CTB 및 좌측 CTB의 샘플 값만이 사용되는 것은 또한, 디코더가 인트라 예측을 위해 패스트 메모리에 버퍼링하는 샘플 값의 수를 제한하는 것에 의해, 디코더 구현을 단순화한다. (디코더는, 더 작은 CTU/CTB 사이즈가 선택되더라도, 가장 큰 가능한 치수의 두 개의 CTB에 대한 샘플 값을 저장할 충분한 버퍼 용량을 갖는다.) 다른 제약은, 인트라 예측이 다른 슬라이스 또는 타일로부터의 샘플 값을 참조할 수 없다는 것이다. (x0, y0)에서 좌상 위치를 갖는 현재의 m×n 블록 및 치수 CTBsizeY×CTBsizeY를 각각 갖는 CTB(들)의 경우, 인코더는 수평 성분 BV[0] 및 수직 성분 BV[1]을 갖는 2차원 BV에 대한 이들 제약을 다음과 같이 체크할 수 있다.
● BV[0] ≥ -((x0 % CTBsizeY) + CTBsizeY)
● BV[1] ≥ -(y0 % CTBsizeY)
● 위치 (x0, y0), (x0+BV[0], y0+BV[1]) 및 (x0+BV[0]+m-1, y0+BV[1]+n-1)에서의 샘플 값은 동일한 슬라이스에 있어야 한다.
● 위치 (x0, y0), (x0+BV[0], y0+BV[1]) 및 (x0+BV[0]+m-1, y0+BV[1]+n-1)에서의 샘플 값은 동일한 타일에 있어야 한다.
실제, 큰 정사각형의 검색 범위(예컨대 S×S 검색 범위 여기서 S는 CTBsizeY) 또는 큰 직사각형 검색 범위(예컨대 2S×S 검색 범위, 여기서 S는 CTBsizeY)에서 후보 BV 값을 평가하는 것은, 최상의 BV 값이 수평으로 배향되거나 또는 수직으로 배향되는 경향이 있으면, 합리적이지 않다. 대신, 인코더는, 후보 BV 값을 여전히 포함할 것 같은 더 작은 검색 범위를 사용할 수 있는데, 이 경우 더 작은 BV 검색 범위는 수평으로 배향되거나(예를 들면, 치수 2S×(1/4)S 또는 2S×(3/4)S를 가짐) 또는 수직으로 배향된다(예를 들면, 치수 (1/4)S×2S 또는 (3/4)S×2S를 가짐). 대부분의 시나리오에서, 인코더는 BV 추정 동안 더 적은 BV 값을 체크하지만, 그러나 여전히 가장 적합한 BV 값을 찾는다.
수평 편향(또는 수평 배향)을 갖는 BV 검색 범위는, 수직 BV 성분 값보다 더 넓은 범위의 수평 BV 성분 값을 갖는 후보 BV 값을 포함한다. 역으로, 수직 편향(또는 수직 배향)을 갖는 BV 검색 범위는, 수평 BV 성분 값보다 더 넓은 범위의 수직 BV 성분 값을 갖는 후보 BV 값을 포함한다.
BV 검색 범위는 또한 다른 제약에 종속될 수 있다. 예를 들면, BV 검색 범위는 또한, 현재 블록에 대한 임의의 BV 값이, 현재 CTB 및/또는 현재 CTB의 왼쪽에 있는 CTB 내에 놓여 있는 영역을 참조해야 한다는 제약에 종속될 수 있다. 즉, BV 검색 범위는 현재 CTB 및 현재 CTB 왼쪽에 있는 CTB 내에 적합된다. 또는, 다른 예로서, BV 검색 범위는, 현재 블록에 대한 임의의 BV 값이, 현재 CTB 및/또는 현재 CTB의 위쪽에 있는 CTB 내에 놓여 있는 영역을 참조해야 한다는 제약에 종속될 수 있다. 즉, BV 검색 범위는 현재 CTB 및 현재 CTB 위쪽에 있는 CTB 내에 적합된다. BV 검색 범위는 또한, 현재 픽처 내에서 적합하도록 제약될 수 있다. 몇몇 구현예에서, BV 검색 범위는 또한, 현재의 슬라이스 및/또는 현재의 타일 내에서 적합하도록 제약된다.
(현재 블록으로부터 멀리 떨어진) BV 검색 범위의 먼 경계에서의 제약을 제외하고, BV 검색 범위는 자기 근처의 경계에서(현재 블록 근처에서) 제약될 수 있다. 예를 들면, 몇몇 구현예에서, 사이즈 2N×2N을 갖는 CU의 경우, PU 구획은 사이즈 N×N 및 2N×N 또는 N×2N을 가질 수 있는데, 이 경우 각각의 PU는 자기 자신의 BV, 또는 몇몇 다른 구획 사이즈를 갖는다. 그러나, PU의 BV는 동일한 CU 내의 다른 PU 영역을 참조하도록 허용되지 않는다. BV 검색 범위에 대한 이 제약은 PU 레벨 중첩을 허용하는 것에 비해 성능을 다소 감소시키지만, 그러나 각각의 PU가 자기 자신의 BV를 갖는 것을 허용하고 각각의 CU 내의 PU가 병렬로 재구성되는 것을 허용하는데, 이것은 효율적인 디코딩을 용이하게 할 수도 있다.
대안적으로, CB와 대응하는 인트라 예측 영역 사이의 중첩이 허용되지 않으면, 인코더는 중첩 프로세싱을 수행할 수 있다. 이 경우, 수평 편향 또는 수직 편향을 갖는 BV 검색 범위는 현재 CU로 확장될 수 있다.
도 21b는 수평 편향(수평 배향)을 갖는 제1의 대안적인 검색 범위(2181)를 도시한다. 검색 범위(2181)는 2S×(1/4)S까지의 치수를 갖는다. 검색 범위(2181)는, 검색 범위(2181)의 십자 사선(cross-hatched) 부분 및 사선(hatched) 부분에서 도시되는 바와 같이, 현재 CTB 또는 현재 CTB 왼쪽에 있는 CTB 내에 적합하도록 잘려질 수도 있다. 또는, 검색 범위(2181)는 또한, 현재 CTB(도 21b의 검색 범위(2181)의 사선 부분으로서 도시됨) 내의 어떠한 부분도 포함하지 않도록 제약될 수도 있다.
도 21c는 수평 편향을 갖는 제2의 대안적인 검색 범위(2182)를 도시한다. 검색 범위(2182)는 2S×(3/4)S까지의 치수를 갖는다. 검색 범위(2182)는, 검색 범위(2182)의 십자 사선 부분 및 사선 부분에서 도시되는 바와 같이, 현재 CTB 또는 현재 CTB 왼쪽에 있는 CTB 내에 적합하도록 잘려질 수도 있다. 또는, 검색 범위(2182)는 또한, 현재 CTB(도 21c의 검색 범위(2182)의 사선 부분으로서 도시됨) 내의 어떠한 부분도 포함하지 않도록 제약될 수도 있다.
도 21d는 수직 편향(수직 배향)을 갖는 제3의 대안적인 검색 범위(2183)를 도시한다. 검색 범위(2183)는 (1/4)S×2S까지의 치수를 갖는다. 검색 범위(2183)는, 검색 범위(2183)의 십자 사선 부분 및 사선 부분에서 도시되는 바와 같이, 현재 CTB 또는 현재 CTB 위쪽에 있는 CTB 내에 적합하도록 잘려질 수도 있다. 또는, 검색 범위(2183)는 또한, 현재 CTB(도 21d의 검색 범위(2183)의 사선 부분으로서 도시됨) 내의 어떠한 부분도 포함하지 않도록 제약될 수도 있다.
도 21e는 수직 편향을 갖는 제4의 대안적인 검색 범위(2184)를 도시한다. 검색 범위(2184)는 (3/4)S×2S까지의 치수를 갖는다. 검색 범위(2184)는, 검색 범위(2184)의 십자 사선 부분 및 사선 부분에서 도시되는 바와 같이, 현재 CTB 또는 현재 CTB 위쪽에 있는 CTB 내에 적합하도록 잘려질 수도 있다. 또는, 검색 범위(2184)는 또한, 현재 CTB(도 21e의 검색 범위(2184)의 사선 부분으로서 도시됨) 내의 어떠한 부분도 포함하지 않도록 제약될 수도 있다.
BV 추정 동안, 비디오 인코더 또는 이미지 인코더는 BV 추정을 포함하는 인코딩을 다음과 같이 수행할 수 있다.
인코더는 픽처의 현재 블록에 대한 BV를 결정한다. BV는 픽처 내의 한 영역까지의 변위를 나타낸다. 현재 블록은 사이즈 S를 갖는 현재 CTB 안에 있다. BV를 결정하는 것의 일부로서, 인코더는, 수평 편향 또는 수직 편향을 갖는 BV 검색 범위 내에 영역이 있다는 제약을 체크한다. 인코더는 BV를 사용하여 현재 블록에 대한 인트라 BC 예측을 수행한다. 인코더는 또한 BV를 인코딩한다. 예를 들면, 인코더는 BC 예측을 수행하고 BV를 본 출원의 그 밖의 곳에서 설명된 바와 같이 인코딩한다.
보다 일반적으로는, 인코더는 인트라 BC 예측을 사용하여 픽처에 대한 데이터를 인코딩한다. 인코딩은 수평 또는 수직 편향을 갖는 BV 검색 범위를 사용하여 BV 추정 동작을 수행하는 것을 포함한다. 인코더는 픽처에 대한 인코딩된 데이터를 출력한다.
BV 검색 범위는 수평 편향을 가질 수 있어서, 치수 2S x (1/4)S 또는 2S×(3/4)S를 가질 수 있다. 또는, 보다 일반적으로는, 수평으로 편향된 BV 검색 범위는 S 이상 2S 이하의 폭을 가지며, (1/4)S 이상 (3/4)S 이하의 높이를 갖는다. 또는, BV 검색 범위는 수직 편향을 가질 수 있어서, 치수 (1/4)S×2S 또는 (3/4)S×2S를 가질 수 있다. 또는, 보다 일반적으로는, 수직으로 편향된 BV 검색 범위는 S 이상 2S 이하의 높이를 가지며, (1/4)S 이상 (3/4)S 이하의 높이를 갖는다.
인코더는 다수의 이용가능한 BV 검색 범위 중에서 BV 검색 범위를 선택할 수 있다. 예를 들면, 인코더는 수평 편향을 갖는 다수의 검색 범위(예컨대 2S x (1/4)S 및 2S x (3/4)S의 검색 범위) 중에서 선택한다. 또는, 인코더는 수직 편향을 갖는 다수의 검색 범위(예컨대 (1/4)S×2S 및 (3/4)S×2S 검색 범위) 중에서 선택한다. 또는, 인코더는 수평 편향 또는 수직 편향 중 어느 하나를 각각 갖는 다수의 검색 범위 중에서 선택한다.
인코더는 하나 이상의 이전 블록의 BV 값에 적어도 부분적으로 기초하여 BV 검색 범위를 선택할 수 있다. 예를 들면, 이전 블록(들)은 현재 픽처 안에 있다. 또는, 이전 블록(들)은 하나 이상의 이전 픽처 안에 있다. 또는, 이전 블록은 현재 픽처 안에 그리고 하나 이상의 이전 픽처 안에 있다. 이전 블록(들)의 BV 값(들)을 고려하는 것에 의해, 인코더는 BV 값에서의 경향(예를 들면, 대부분의 BV 값이 강한 수평 BV 성분을 가지지만 수직 BV 성분은 거의 없거나 전혀 없다는 것)을 식별할 수 있고 적절한 BV 검색 범위를 선택할 수 있다. BV 검색 범위의 선택은 또한, 다른 인자(예를 들면, 유저 설정)에 의존할 수 있다.
이전 블록(들)에 대한 BV 값(들)은, 상이한 카테고리(또는 "빈")가 BV 값의 상이한 범위에 대응하게 하고 카테고리/빈마다의 카운트를 저장하게 하여, 예를 들면, BV 값(들)을 히스토그램으로서 편제하는 데이터 구조를 사용하여, 추적될 수 있다. 따라서, 히스토그램 데이터 구조는 상이한 BV 값의 사용의 빈도에 관한 통계치를 제공할 수 있다. 또는, BV 값(들)은 어떤 다른 방식으로 추적될 수 있다. 예를 들면, 인코더는 현재 픽처의 블록에 대한 BV 값을 추적하고, 그 다음, 현재 블록 주변의 이웃에 있는 이전 블록의 BV 값을 평가하여 어떤 BV 검색 범위를 사용할지를 결정한다.
수평 또는 수직 편향을 갖는 더 작은 BV 검색 범위를 사용하는 것은, (레이트-왜곡 성능의 관점에서) 더 큰 S×S 또는 2S×S 검색 범위를 사용하는 것보다 약간 덜 효율적일 수도 있다. 많은 인코딩 시나리오의 경우, BV 추정의 계산적 복잡성에서의 감소는 이 패널티를 정당화한다.
도 22는, BV 값의 선택에 관한 하나 이상의 제약에 종속하는, 인트라 BC 예측 모드를 이용하여 인코딩하기 위한 기술(2200)을 도시한다. 도 3 또는 도 5a 및 도 5b를 참조로 설명된 것과 같은 인코더가 기술(2200)을 수행할 수 있다.
시작하기 위해, 인코더는 픽처의 현재 블록에 대한 BV를 결정한다(2210). 현재 블록은 CB, PB 또는 다른 블록일 수 있다. BV는 픽처 내의 한 영역까지의 변위를 나타낸다. BV를 결정함에 있어서, 인코더는 하나 이상의 제약을 체크한다.
하나의 가능한 제약에 따르면, 인코더는 인트라 BC 예측을 위해 사용되는 샘플 값의 범위를 체크한다. 인코더는, 후보 인트라 예측 영역이, 현재 CTB 및 하나 이상의 다른 CTB(예를 들면, 현재 CTB의 좌측에 있는 CTB)에 의해 정의되는 범위 내에 있는지를 체크할 수 있다. 예를 들면, BV가 제1 성분 BV[0] 및 제2 성분 BV[1]을 구비하고, 현재 블록이 위치 (x0, y0)에서 좌상 위치를 가지며, CTB(들)의 각각이 폭 CTBwidth 및 높이 CTBheight을 갖는 경우, BV[0] >= -((x0 % CTBwidth) + CTBwidth) 이고 BV[1] >= -(y0 % CTBheight)이면, 제약은 충족된다. 인코더는, 마찬가지로, 검색 범위 내에서의 BV[0] 및 BV[1]에 관한 상한을 점검할 수 있다: BV[0] < (CTBwidth-m-(x0 % CTBwidth)) 및 BV[1] < (CTBheight-n-(y0 % CTBheight)). 대안적으로, 검색 범위는 더 많은 또는 더 적은 CTB를 포함하거나, 또는 검색 범위는 어떤 다른 방식으로 정의된다.
다른 가능한 제약에 따르면, 인코더는 현재 슬라이스 및 타일에 대한 검색을 제한한다(즉, 현재 블록 및 영역은 픽처의 단지 하나의 슬라이스 및 픽처의 단지 하나의 타일의 일부이다). 인코더는, 현재 블록의 좌상 위치, 후보 인트라 예측 영역의 좌상 위치 및 후보 인트라 예측 영역의 우하(bottom right) 위치가 단일의 슬라이스 및 단일의 타일의 일부인지를 체크할 수 있다. 예를 들면, (x0, y0), (x0+BV[0], y0+BV[1]) 및 (x0+BV[0]+m-1, y0+BV[1]+n-1)가 단일의 슬라이스 및 단일의 타일의 일부이면, 제약이 충족된다.
대안적으로, 인코더는 다른 및/또는 추가적인 제약을 체크한다.
인코더는 BV를 사용하여 현재 블록에 대한 인트라 BC 예측을 수행한다(2220). 예를 들면, 인코더는 전체 현재 블록에 대한 인트라 BC 예측을 수행한다. 또는, 인코더는 현재 블록과 관련되는 다수의 블록에 대한 인트라 BC 예측을 수행한다(예를 들면, TB 단위 기반의 다수의 TB의 경우, TB는 BV를 갖는 현재 PB와 관련된다).
인코더는 BV를 인코딩한다(2230). 인코더는 다른 인트라 BC 예측 모드 블록에 대해 기술(2200)을 반복할 수 있다.
인트라 BC 예측의 경우, 인코더 및 디코더는 재구성된 샘플 값을 사용한다. 재구성되지 않은 샘플 값은, 아직 인코딩 및 재구성되지 않은 픽처의 일부로서 존재할 수도 있을 것이다. 인트라 BC 예측에 대해 재구성되지 않은 샘플 값을 사용하는 것을 방지하기 위해, 인코더는, 실제로 이전에 재구성된 샘플 값만이 BV에 따른 인트라 BC 예측에 대해 사용되도록, BV의 허용가능한 값에 관해 제약을 설정할 수 있다.
몇몇 예시적인 구현예에서, 인코더는, 현재 블록 및 후보 인트라 예측 영역의 우하 위치를 포함하는 블록의 z 스캔 순서를 고려하는 것에 의해 BV 값을 체크한다. 보다 구체적으로는, 인코더는, 위치 (x0+BV[0]+m-1, y0+BV[1]+n-1)을 포함하는 블록의 z 스캔 순서치가, (x0, y0)를 포함하는 블록의 z 스캔 순서치보다 더 작은지를 체크한다. 만약 그렇다면, 인트라 예측 영역의 우하 위치를 포함하는 블록은 이전에 재구성되었다(따라서 인트라 예측 영역의 나머지를 갖는다). BV는 또한, 조건 BV[0]+m ≤ 0 및 BV[1]+n ≤ 0 중 적어도 하나를 충족하고, 인트라 예측 영역이 현재 블록과 중첩하지 않는다는 것을 보장한다.
z 스캔 순서는, 픽처를 구획하는 블록의 순차적으로 명시된 순서화를 따른다. 도 23은, 후보 BV에 대한 인트라 예측 영역의 우하 위치를 포함할 수도 있는 블록 및 현재 블록(2330)에 대한 예시적인 z 스캔 순서(2300)를 도시한다. 현재 블록(2330)은 CP, PB 또는 다른 블록일 수 있다. z 스캔 순서는 일반적으로 한 행의 좌에서 우로 순차적으로 블록에 대해 할당되고, 연속하는 행에서 위에서 아래로 반복한다. 블록이 분할되면, z 스캔 순서는 분할된 블록 내에서, 재귀적으로, 할당된다. HEVC 표준에 대한 인코딩/디코딩의 구현예의 경우, z 스캔 순서는 CTB 래스터 스캔 패턴(CTB 행에서 좌에서 우로, 연속하는 CTB 행에서 위에서 아래로 반복함)에 의해 CTB 단위로 진행한다. CTB가 분할되면, z 스캔 순서는 분할된 CTB 내에서 쿼드트리의 CB에 대한 래스터 스캔 패턴을 따른다. 그리고, CB가 (예를 들면, 다수의 CB로, 또는 다수의 PB로) 분할되면, z 스캔 순서는 분할된 CB 내에서 블록에 대한 래스터 스캔 패턴을 따른다.
대안적으로, 인트라 BC 예측이 TB 단위 기반으로 수행될 수 있는 경우, 인코더 및 디코더는 인트라 예측 영역과 현재 블록(TB) 사이의 가능한 중첩을 체크할 수 있고, 그 다음, 인트라 BC 예측 동작의 적용을 위해 현재 TB가 더 작은 TB로 분할되어야 하는지의 여부를 결정하기 위해 체크의 결과를 사용한다. 현재 TB가 m×n의 사이즈를 갖는다고 가정하는데, 여기서 m 및 n은 서로 동일할 수 있거나 또는 상이한 값을 가질 수 있다. BV[0] > -m이고 BV[1] > -n이면, 인트라 예측 영역은 현재의 m×n TB와 중첩하는데, 이것은, 인트라 BC 예측 동작의 적용을 위해 현재의 m×n TB가 더 작은 TB로 분할되지 않는 한 문제가 된다. 따라서, BV[0] > -m이고 BV[1] > -n이면, 인코더 및 디코더는 현재의 TB를 더 작은 TB로 분할한다. 더 작은 TB에 대해서도 동일한 조건이 체크되는데(예를 들면, 재귀적으로 체크되는데), 분할 이후 m 및 n의 더 작은 값에 대해서도 BV[0] > -m이고 BV[1] > -n이면 그 더 작은 TB는 더 분할된다.
예를 들면, PB에 대한 BV가 (-9, -5)이고, 현재 TB가 32×32 블록이라고 가정한다. 인코더 및 디코더는, -9 > -32 및 -5 > -32를 결정하는데, 인트라 예측 영역(그 좌상 코너가 -9, -5에 배치됨)이 현재의 32×32 TB와 중첩할 것이다는 것을 나타낸다. 인코더 및 디코더는 32×32 TB를 네 개의 16×16 TB로 분할한다. 16×16 TB의 각각에 대해, 인코더 및 디코더는, -9 > -16 및 -5 > -16를 결정하는데, 인트라 예측 영역(그 좌상 코너가 -9, -5에 배치됨)이 현재의 16×16 TB와 중첩할 것이다는 것을 나타낸다. 인코더 및 디코더는 각각의 16×16 TB를 네 개의 8×8 TB로 연속해서 분할한다. 8×8 TB의 경우, (-9, -5)의 BV는 문제가 되지 않으며, 따라서 8×8 TB는 강제로 더 분할되지 않는다.
이 시나리오에서, TB가 BV 값 및 TB의 사이즈로 인해 분할되는 경우, 인코더는, 그렇지 않은 경우, 현재 TB를 더 작은 TB로 분할할지의 여부를 시그널링할 플래그 값의 시그널링을 스킵할 수 있다. 인코딩된 데이터의 비트스트림은, 현재 TB를 더 작은 TB로 분할할 것을 디코더에게 지시하는 플래그 값이 없다. 대신, 디코더는, BV 값 및 TB의 사이즈로 인해 TB가 분할되어야 한다는 것을 추론할 수 있다. 이것은, 그렇지 않았다면, TB를 분할하는 것에 관한 정보를 시그널링하는 데 소비될 비트를 절약할 수 있다.
BV 추정의 일부로서, 인코더는 여러 접근법 중 임의의 것을 사용할 수 있다. 인코더는 전체 검색을 사용하여, 검색 범위 안에서 허용되는 모든 후보 BV 값을 평가할 수 있다. 또는, 인코더는 부분 검색을 사용하여, 검색 범위 안에서 허용되는 모든 후보 BV 값 중 몇몇 만을 평가할 수 있다. 예를 들면, 인코더는, 현재 블록에 대한 (예를 들면, 하나 이상의 이웃 블록의 BV 값에 기초하여 예측되는) 예측된 BV 값에서 부분 검색을 시작할 수 있다. 부분 검색을 위한 시작 지점에서 후보 BV 값을 평가한 이후, 인코더는 시작 지점에서 증가한 거리에 있는 하나 이상의 다른 후보 BV 값을 (예를 들면, 부분 검색 패턴 또는 어떤 다른 패턴에 따라) 평가할 수 있다. 또는, 인코더는 이전 섹션에서 설명된 바와 같은 검색 패턴을 사용할 수 있다. 주어진 후보 BV 값을 평가할 때, 인코더는 인트라 예측 영역 및 현재 블록의 모든 샘플 값을 비교할 수 있다. 또는, 인코더는 샘플 값의 서브셋(즉, 그 값이 평가되는 서브 샘플)을 평가할 수 있다. 인트라 예측 영역과 현재 블록 사이의 샘플 값을 비교하여 왜곡 비용을 결정할 때, 인코더는 평균 제곱 오차(mean square error), 제곱차의 합(sum of squared differences; "SSD"), 절대차의 합(sum of absolute differences; "SAD"), 또는 왜곡의 어떤 다른 척도를 계산할 수 있다. 인코더는 또한, 후보 BV 값의 인코딩과 관련되는 비트 레이트 비용을 결정할 수 있다.
XI. 대안예 및 변형예
본원에서 설명되는 예 중 많은 것에서, 인트라 BC 예측 및 모션 보상은 별개의 컴포넌트 또는 프로세스에서 구현되고, BV 추정 및 모션 추정은 별개의 컴포넌트 또는 프로세스에서 구현된다. 대안적으로, 인트라 BC 예측은 모션 보상의 특수한 경우로서 구현될 수 있고, BV 추정은 모션 추정의 특수한 경우로서 구현될 수 있는데, 이것에 대해서는 현재 픽처가 참조 픽처로서 사용된다. 이러한 구현예에서, BV 값은, 인트라 픽처 예측이 아니라 (현재 픽처 내에서) 인트라 BC 예측을 위해 단지 사용되는 MV 값으로서 시그널링될 수 있다. 용어가 본원에서 사용될 때, "인트라 BC 예측"은, 그 예측이 인트라 픽처 예측 모듈을 사용하여 제공되든, 모션 보상 모듈을 사용하여 제공되든, 또는 어떤 다른 모듈을 사용하여 제공되든 간에, 현재 픽처 내에서의 예측을 나타낸다. 마찬가지로, BV 값은 MV 값을 사용하여 또는 상이한 타입의 파라미터 또는 신택스 엘리먼트를 사용하여 표현될 수 있고, BV 추정은 인트라 예측 추정 모듈, 모션 추정 모듈 또는 어떤 다른 모듈을 사용하여 제공될 수 있다.
개시된 발명의 원칙이 적용될 수도 있는 많은 가능한 실시형태의 관점에서, 예시된 실시형태는 단지 본 발명의 바람직한 예에 불과하며 본 발명의 범위를 제한하는 것으로 간주되어선 안된다는 것이 인식되어야 한다. 대신, 본 발명의 범위는 하기의 청구범위에 의해 정의된다.

Claims (19)

  1. 스크린 캡쳐 컨텐츠를 인코딩하도록 구성된 비디오 인코더를 구현하는 컴퓨팅 디바이스에서의 방법에 있어서,
    스크린 캡쳐 컨텐츠의 프레임을 수신하는 단계;
    상기 스크린 캡쳐 컨텐츠의 프레임을 다수의 2N×2N 블록들 - 상기 다수의 2N×2N 블록들은 상기 스크린 캡쳐 컨텐츠의 프레임의 현재 2N×2N 블록을 포함함 - 로 분할하는 단계;
    인코딩된 데이터를 생성하기 위해 상기 스크린 캡쳐 컨텐츠의 프레임의 상기 현재 2N×2N 블록 - 상기 현재 2N×2N 블록은 상기 스크린 캡쳐 컨텐츠의 프레임의 주어진 슬라이스 내에 있고 상기 스크린 캡쳐 컨텐츠의 프레임의 주어진 타일 내에 있으며, 상기 현재 2N×2N 블록은 64×64, 32×32 또는 16×16의 치수를 가짐 - 을 인코딩하는 단계로서,
    정수 샘플 정밀도를 가지도록, 그리고 상기 주어진 슬라이스 내에 있고, 상기 주어진 타일 내에 있고, 상기 스크린 캡쳐 컨텐츠의 프레임 내의 상기 현재 2N×2N 블록과 중첩하지 않는 참조 영역들을 나타내도록, 인트라 블록 카피(block copy; “BC”) 예측을 위한 벡터들의 값들을 제한하는 단계;
    상기 현재 2N×2N 블록을 수평으로 또는 수직으로 제1 구획(partition) 및 제2 구획으로 분할함으로써, 인트라 BC 예측을 위해 상기 현재 2N×2N 블록을 상기 제1 구획 및 상기 제2 구획으로 비대칭적으로 구획하는 단계로서, 상기 제1 구획 및 상기 제2 구획은,
    (a) 상기 현재 2N×2N 블록이 64×64의 치수를 갖는 경우, 각각 64×16 및 64×48, 또는 각각 16×64 및 48×64의 치수를;
    (b) 상기 현재 2N×2N 블록이 32×32의 치수를 갖는 경우, 각각 32×8 및 32×24, 또는 각각 8×32 및 24×32의 치수를; 그리고
    (c) 상기 현재 2N×2N 블록이 16×16의 치수를 갖는 경우, 각각 16×4 및 16×12, 또는 각각 4×16 및 12×16의 치수를
    갖는 것인, 상기 현재 2N×2N 블록을 상기 제1 구획 및 상기 제2 구획으로 비대칭적으로 구획하는 단계;
    상기 제1 구획에 대한 인트라 BC 예측을 수행하는 단계; 및
    상기 제2 구획에 대한 인트라 BC 예측을 수행하는 단계
    를 포함하는 상기 스크린 캡쳐 컨텐츠의 프레임의 상기 현재 2N×2N 블록을 인코딩하는 단계; 및
    상기 인코딩된 데이터를 비트스트림(bitstream)의 일부로서 출력하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 인코딩하는 단계는, 상기 인트라 BC 예측을 위해 대칭적으로 구획되는 다른 2N×2N 블록에 대해 인트라 BC 예측을 수행하는 단계를 더 포함하고, 상기 다른 2N×2N 블록은 (1) 두 개의 2N×N 블록들, (2) 두 개의 N×2N 블록들, 또는 (3) 네 개의 N×N 블록들로 구획되고, 상기 네 개의 N×N 블록들 각각은 두 개의 N×N/2 블록들, 두 개의 N/2×N 블록들 또는 네 개의 N/2×N/2 블록들로 더 구획될 수 있는 것인 방법.
  3. 컴퓨팅 디바이스에 있어서,
    하나 이상의 프로세싱 유닛;
    휘발성 메모리; 및
    비휘발성 메모리 및 스토리지 중 적어도 하나를 포함하고,
    상기 비휘발성 메모리 및 스토리지 중 적어도 하나는, 프로그래밍되었을 때, 상기 컴퓨팅 디바이스가 스크린 캡쳐 컨텐츠를 디코딩하도록 구성된 비디오 디코더의 동작들을 수행하도록 하는, 컴퓨터 실행 가능 명령어들을 내부에 저장하고, 상기 동작들은,
    인코딩된 데이터를 비트스트림의 일부로서 수신하는 동작; 및
    스크린 캡쳐 컨텐츠의 프레임을 재구성하기 위해 상기 인코딩된 데이터를 디코딩하는 동작으로서, 상기 스크린 캡쳐 컨텐츠의 프레임의 현재 2N×2N 블록의 제1 구획 및 제2 구획에 대해 인트라 블록 카피(block copy; “BC”) 예측을 수행하는 동작을 포함하고, 상기 현재 2N×2N 블록은 상기 스크린 캡쳐 컨텐츠의 프레임의 주어진 슬라이스 내에 있고 상기 스크린 캡쳐 컨텐츠의 프레임의 주어진 타일 내에 있고, 상기 인트라 BC 예측을 위한 벡터들의 값들은, 정수 샘플 정밀도를 가지도록, 그리고 상기 주어진 슬라이스 내에 있고, 상기 주어진 타일 내에 있고, 상기 스크린 캡쳐 컨텐츠의 프레임 내의 상기 현재 2N×2N 블록과 중첩하지 않는 참조 영역들을 나타내도록 제한되고, 상기 현재 2N×2N 블록은 상기 인트라 BC 예측을 위해 비대칭적으로 구획된 것이고, 상기 현재 2N×2N 블록은 64×64, 32×32 또는 16×16의 치수를 가지고, 상기 현재 2N×2N 블록은 수평으로 또는 수직으로 상기 제1 구획 및 상기 제2 구획으로 분할된 것이고, 상기 제1 구획 및 상기 제2 구획은,
    (a) 상기 현재 2N×2N 블록이 64×64의 치수를 갖는 경우, 각각 64×16 및 64×48, 또는 각각 16×64 및 48×64의 치수를;
    (b) 상기 현재 2N×2N 블록이 32×32의 치수를 갖는 경우, 각각 32×8 및 32×24, 또는 각각 8×32 및 24×32의 치수를; 그리고
    (c) 상기 현재 2N×2N 블록이 16×16의 치수를 갖는 경우, 각각 16×4 및 16×12, 또는 각각 4×16 및 12×16의 치수를
    갖는 것인, 상기 스크린 캡쳐 컨텐츠의 프레임을 재구성하기 위해 상기 인코딩된 데이터를 디코딩하는 동작
    을 포함하는 것인 컴퓨팅 디바이스.
  4. 제3항에 있어서,
    상기 디코딩하는 동작은, 상기 인트라 BC 예측을 위해 대칭적으로 구획된 다른 2N×2N 블록에 대해 인트라 BC 예측을 수행하는 동작을 더 포함하고, 상기 다른 2N×2N 블록은 (1) 두 개의 2N×N 블록들, (2) 두 개의 N×2N 블록들, 또는 (3) 네 개의 N×N 블록들로 구획된 것이고, 상기 네 개의 N×N 블록들 각각은 두 개의 N×N/2 블록들, 두 개의 N/2×N 블록들 또는 네 개의 N/2×N/2 블록들로 더 구획될 수 있는 것인 컴퓨팅 디바이스.
  5. 제1항에 있어서,
    상기 인코딩하는 단계는, 상기 현재 2N×2N 블록에 대해,
    상기 스크린 캡쳐 컨텐츠의 프레임의 제1 참조 영역까지의 제1 변위를 나타내는 제1 벡터를 결정하는 단계;
    상기 제1 구획에 대한 인트라 BC 예측을 수행하는 단계의 일부로서, 상기 제1 벡터를 사용하여, 상기 스크린 캡쳐 컨텐츠의 프레임의 상기 제1 참조 영역 내의 이전에 재구성된 샘플 값들로부터, 상기 제1 구획에 대한 예측된 샘플 값들을 결정하는 단계;
    상기 스크린 캡쳐 컨텐츠의 프레임의 제2 참조 영역까지의 제2 변위를 나타내는 제2 벡터를 결정하는 단계; 및
    상기 제2 구획에 대한 인트라 BC 예측을 수행하는 단계의 일부로서, 상기 제2 벡터를 사용하여, 상기 스크린 캡쳐 컨텐츠의 프레임의 상기 제2 참조 영역 내의 이전에 재구성된 샘플 값들로부터, 상기 제2 구획에 대한 예측된 샘플 값들을 결정하는 단계
    를 더 포함하는 것인 방법.
  6. 제3항에 있어서,
    상기 디코딩하는 동작은, 상기 현재 2N×2N 블록에 대해,
    상기 스크린 캡쳐 컨텐츠의 프레임의 제1 참조 영역까지의 제1 변위를 나타내는 제1 벡터를 재구성하는 동작;
    상기 스크린 캡쳐 컨텐츠의 프레임의 제2 참조 영역까지의 제2 변위를 나타내는 제2 벡터를 재구성하는 동작;
    상기 제1 구획에 대한 인트라 BC 예측의 수행의 일부로서, 상기 제1 벡터를 사용하여, 상기 스크린 캡쳐 컨텐츠의 프레임의 상기 제1 참조 영역 내의 이전에 재구성된 샘플 값들로부터, 상기 제1 구획에 대한 예측된 샘플 값들을 결정하는 동작; 및
    상기 제2 구획에 대한 인트라 BC 예측의 수행의 일부로서, 상기 제2 벡터를 사용하여, 상기 스크린 캡쳐 컨텐츠의 프레임의 상기 제2 참조 영역 내의 이전에 재구성된 샘플 값들로부터, 상기 제2 구획에 대한 예측된 샘플 값들을 결정하는 동작
    을 포함하는 것인 컴퓨팅 디바이스.
  7. 스크린 캡쳐 컨텐츠를 디코딩하도록 구성된 비디오 디코더를 구현하는 컴퓨팅 디바이스에서의 방법에 있어서,
    인코딩된 데이터를 비트스트림의 일부로서 수신하는 단계; 및
    스크린 캡쳐 컨텐츠의 프레임을 재구성하기 위해 상기 인코딩된 데이터를 디코딩하는 단계로서, 상기 스크린 캡쳐 컨텐츠의 프레임의 현재 2N×2N 블록의 제1 구획 및 제2 구획에 대해 인트라 블록 카피(block copy; “BC”) 예측을 수행하는 단계를 포함하고, 상기 현재 2N×2N 블록은 상기 스크린 캡쳐 컨텐츠의 프레임의 주어진 슬라이스 내에 있고 상기 스크린 캡쳐 컨텐츠의 프레임의 주어진 타일 내에 있고, 상기 인트라 BC 예측을 위한 벡터들의 값들은, 정수 샘플 정밀도를 가지도록, 그리고 상기 주어진 슬라이스 내에 있고, 상기 주어진 타일 내에 있고, 상기 스크린 캡쳐 컨텐츠의 프레임 내의 상기 현재 2N×2N 블록과 중첩하지 않는 참조 영역들을 나타내도록 제한되고, 상기 현재 2N×2N 블록은 상기 인트라 BC 예측을 위해 비대칭적으로 구획된 것이고, 상기 현재 2N×2N 블록은 64×64, 32×32 또는 16×16의 치수를 가지고, 상기 현재 2N×2N 블록은 수평으로 또는 수직으로 상기 제1 구획 및 상기 제2 구획으로 분할된 것이고, 상기 제1 구획 및 상기 제2 구획은,
    (a) 상기 현재 2N×2N 블록이 64×64의 치수를 갖는 경우, 각각 64×16 및 64×48, 또는 각각 16×64 및 48×64의 치수를;
    (b) 상기 현재 2N×2N 블록이 32×32의 치수를 갖는 경우, 각각 32×8 및 32×24, 또는 각각 8×32 및 24×32의 치수를; 그리고
    (c) 상기 현재 2N×2N 블록이 16×16의 치수를 갖는 경우, 각각 16×4 및 16×12, 또는 각각 4×16 및 12×16의 치수를
    갖는 것인, 상기 스크린 캡쳐 컨텐츠의 프레임을 재구성하기 위해 상기 인코딩된 데이터를 디코딩하는 단계
    를 포함하는 방법.
  8. 제7항에 있어서,
    상기 디코딩하는 단계는, 상기 현재 2N×2N 블록에 대해,
    상기 스크린 캡쳐 컨텐츠의 프레임의 제1 참조 영역까지의 변위를 나타내는 제1 벡터를 재구성하는 단계;
    상기 제1 구획에 대한 상기 인트라 BC 예측의 일부로서, 상기 제1 벡터를 사용하여, 상기 스크린 캡쳐 컨텐츠의 프레임의 상기 제1 참조 영역 내의 이전에 재구성된 샘플 값들로부터, 상기 제1 구획에 대한 예측된 샘플 값들을 결정하는 단계;
    상기 스크린 캡쳐 컨텐츠의 프레임의 제2 참조 영역까지의 변위를 나타내는 제2 벡터를 재구성하는 단계; 및
    상기 제2 구획에 대한 상기 인트라 BC 예측의 일부로서, 상기 제2 벡터를 사용하여, 상기 스크린 캡쳐 컨텐츠의 프레임의 상기 제2 참조 영역 내의 이전에 재구성된 샘플 값들로부터, 상기 제2 구획에 대한 예측된 샘플 값들을 결정하는 단계
    를 포함하는 것인 방법.
  9. 제7항에 있어서,
    상기 현재 2N×2N 블록은 수평으로 분할된 것이고,
    상기 제1 구획 및 상기 제2 구획은 각각 상단 구획 및 하단 구획이거나; 또는
    상기 제1 구획 및 상기 제2 구획은 각각 하단 구획 및 상단 구획인 것인 방법.
  10. 제7항에 있어서,
    상기 현재 2N×2N 블록은 수직으로 분할된 것이고,
    상기 제1 구획 및 상기 제2 구획은 각각 왼쪽 구획 및 오른쪽 구획이거나; 또는
    상기 제1 구획 및 상기 제2 구획은 각각 오른쪽 구획 및 왼쪽 구획인 것인 방법.
  11. 제1항에 있어서,
    상기 현재 2N×2N 블록은 수평으로 분할되고,
    상기 제1 구획 및 상기 제2 구획은 각각 상단 구획 및 하단 구획이거나; 또는
    상기 제1 구획 및 상기 제2 구획은 각각 하단 구획 및 상단 구획인 것인 방법.
  12. 제1항에 있어서,
    상기 현재 2N×2N 블록은 수직으로 분할되고,
    상기 제1 구획 및 상기 제2 구획은 각각 왼쪽 구획 및 오른쪽 구획이거나; 또는
    상기 제1 구획 및 상기 제2 구획은 각각 오른쪽 구획 및 왼쪽 구획인 것인 방법.
  13. 제3항에 있어서,
    상기 현재 2N×2N 블록은 수평으로 분할된 것이고,
    상기 제1 구획 및 상기 제2 구획은 각각 상단 구획 및 하단 구획이거나; 또는
    상기 제1 구획 및 상기 제2 구획은 각각 하단 구획 및 상단 구획인 것인 컴퓨팅 디바이스.
  14. 제3항에 있어서,
    상기 현재 2N×2N 블록은 수직으로 분할된 것이고,
    상기 제1 구획 및 상기 제2 구획은 각각 왼쪽 구획 및 오른쪽 구획이거나; 또는
    상기 제1 구획 및 상기 제2 구획은 각각 오른쪽 구획 및 왼쪽 구획인 것인 컴퓨팅 디바이스.
  15. 컴퓨팅 디바이스에 있어서,
    하나 이상의 프로세싱 유닛;
    휘발성 메모리; 및
    비휘발성 메모리 및 스토리지 중 적어도 하나를 포함하고,
    상기 비휘발성 메모리 및 스토리지 중 적어도 하나는, 프로그래밍되었을 때, 상기 컴퓨팅 디바이스가 스크린 캡쳐 컨텐츠를 인코딩하도록 구성된 비디오 인코더의 동작들을 수행하도록 하는, 컴퓨터 실행 가능 명령어들을 내부에 저장하고, 상기 동작들은,
    스크린 캡쳐 컨텐츠의 프레임을 수신하는 동작;
    상기 스크린 캡쳐 컨텐츠의 프레임을 다수의 2N×2N 블록들 - 상기 다수의 2N×2N 블록들은 상기 스크린 캡쳐 컨텐츠의 프레임의 현재 2N×2N 블록을 포함함 - 로 분할하는 동작;
    인코딩된 데이터를 생성하기 위해 상기 스크린 캡쳐 컨텐츠의 프레임의 상기 현재 2N×2N 블록 - 상기 현재 2N×2N 블록은 상기 스크린 캡쳐 컨텐츠의 프레임의 주어진 슬라이스 내에 있고 상기 스크린 캡쳐 컨텐츠의 프레임의 주어진 타일 내에 있으며, 상기 현재 2N×2N 블록은 64×64, 32×32 또는 16×16의 치수를 가짐 - 을 인코딩하는 동작으로서,
    정수 샘플 정밀도를 가지도록, 그리고 상기 주어진 슬라이스 내에 있고, 상기 주어진 타일 내에 있고, 상기 스크린 캡쳐 컨텐츠의 프레임 내의 상기 현재 2N×2N 블록과 중첩하지 않는 참조 영역들을 나타내도록, 인트라 블록 카피(block copy; “BC”) 예측을 위한 벡터들의 값들을 제한하는 동작;
    상기 현재 2N×2N 블록을 수평으로 또는 수직으로 제1 구획 및 제2 구획으로 분할함으로써, 인트라 BC 예측을 위해 상기 현재 2N×2N 블록을 상기 제1 구획 및 상기 제2 구획으로 비대칭적으로 구획하는 동작으로서, 상기 제1 구획 및 상기 제2 구획은,
    (a) 상기 현재 2N×2N 블록이 64×64의 치수를 갖는 경우, 각각 64×16 및 64×48, 또는 각각 16×64 및 48×64의 치수를;
    (b) 상기 현재 2N×2N 블록이 32×32의 치수를 갖는 경우, 각각 32×8 및 32×24, 또는 각각 8×32 및 24×32의 치수를; 그리고
    (c) 상기 현재 2N×2N 블록이 16×16의 치수를 갖는 경우, 각각 16×4 및 16×12, 또는 각각 4×16 및 12×16의 치수를
    갖는 것인, 상기 현재 2N×2N 블록을 상기 제1 구획 및 상기 제2 구획으로 비대칭적으로 구획하는 동작;
    상기 제1 구획에 대한 인트라 BC 예측을 수행하는 동작; 및
    상기 제2 구획에 대한 인트라 BC 예측을 수행하는 동작
    을 포함하는 상기 스크린 캡쳐 컨텐츠의 프레임의 상기 현재 2N×2N 블록을 인코딩하는 동작; 및
    상기 인코딩된 데이터를 비트스트림의 일부로서 출력하는 동작
    을 포함하는 것인 컴퓨팅 디바이스.
  16. 제15항에 있어서,
    상기 현재 2N×2N 블록은 수평으로 분할되고,
    상기 제1 구획 및 상기 제2 구획은 각각 상단 구획 및 하단 구획이거나; 또는
    상기 제1 구획 및 상기 제2 구획은 각각 하단 구획 및 상단 구획인 것인 컴퓨팅 디바이스.
  17. 제15항에 있어서,
    상기 현재 2N×2N 블록은 수직으로 분할되고,
    상기 제1 구획 및 상기 제2 구획은 각각 왼쪽 구획 및 오른쪽 구획이거나; 또는
    상기 제1 구획 및 상기 제2 구획은 각각 오른쪽 구획 및 왼쪽 구획인 것인 컴퓨팅 디바이스.
  18. 제15항에 있어서,
    상기 인코딩하는 동작은, 상기 인트라 BC 예측을 위해 대칭적으로 구획되는 다른 2N×2N 블록에 대해 인트라 BC 예측을 수행하는 동작을 더 포함하고, 상기 다른 2N×2N 블록은 (1) 두 개의 2N×N 블록들, (2) 두 개의 N×2N 블록들, 또는 (3) 네 개의 N×N 블록들로 구획되고, 상기 네 개의 N×N 블록들 각각은 두 개의 N×N/2 블록들, 두 개의 N/2×N 블록들 또는 네 개의 N/2×N/2 블록들로 더 구획될 수 있는 것인 컴퓨팅 디바이스.
  19. 제15항에 있어서,
    상기 인코딩하는 동작은, 상기 현재 2N×2N 블록에 대해,
    상기 스크린 캡쳐 컨텐츠의 프레임의 제1 참조 영역까지의 제1 변위를 나타내는 제1 벡터를 결정하는 동작;
    상기 제1 구획에 대한 인트라 BC 예측의 수행의 일부로서, 상기 제1 벡터를 사용하여, 상기 스크린 캡쳐 컨텐츠의 프레임의 상기 제1 참조 영역 내의 이전에 재구성된 샘플 값들로부터, 상기 제1 구획에 대한 예측된 샘플 값들을 결정하는 동작;
    상기 스크린 캡쳐 컨텐츠의 프레임의 제2 참조 영역까지의 제2 변위를 나타내는 제2 벡터를 결정하는 동작; 및
    상기 제2 구획에 대한 인트라 BC 예측의 수행의 일부로서, 상기 제2 벡터를 사용하여, 상기 스크린 캡쳐 컨텐츠의 프레임의 상기 제2 참조 영역 내의 이전에 재구성된 샘플 값들로부터, 상기 제2 구획에 대한 예측된 샘플 값들을 결정하는 동작
    을 더 포함하는 것인 컴퓨팅 디바이스.
KR1020167021252A 2014-01-17 2015-01-12 비대칭 구획을 갖는 인트라 블록 카피 예측 및 인코더측 검색 패턴, 검색 범위 및 구획화 접근법 KR102369117B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201461928970P 2014-01-17 2014-01-17
US61/928,970 2014-01-17
US201461954572P 2014-03-17 2014-03-17
US61/954,572 2014-03-17
US14/455,856 US11284103B2 (en) 2014-01-17 2014-08-08 Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US14/455,856 2014-08-08
PCT/US2015/010944 WO2015108793A1 (en) 2014-01-17 2015-01-12 Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning

Publications (2)

Publication Number Publication Date
KR20160110961A KR20160110961A (ko) 2016-09-23
KR102369117B1 true KR102369117B1 (ko) 2022-02-28

Family

ID=52469898

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167021252A KR102369117B1 (ko) 2014-01-17 2015-01-12 비대칭 구획을 갖는 인트라 블록 카피 예측 및 인코더측 검색 패턴, 검색 범위 및 구획화 접근법

Country Status (11)

Country Link
US (5) US11284103B2 (ko)
EP (2) EP4329298A3 (ko)
JP (2) JP2017507554A (ko)
KR (1) KR102369117B1 (ko)
CN (1) CN105917648B (ko)
AU (1) AU2015206771B2 (ko)
BR (1) BR112016015740A2 (ko)
CA (1) CA2935156A1 (ko)
MX (1) MX361225B (ko)
RU (1) RU2683165C1 (ko)
WO (1) WO2015108793A1 (ko)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9491461B2 (en) * 2012-09-27 2016-11-08 Qualcomm Incorporated Scalable extensions to HEVC and temporal motion vector prediction
KR102257269B1 (ko) 2013-10-14 2021-05-26 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩 및 디코딩을 위한 인트라 블록 카피 예측 모드의 피쳐
CN105659602B (zh) 2013-10-14 2019-10-08 微软技术许可有限责任公司 用于视频和图像编码的帧内块复制预测模式的编码器侧选项
KR102275639B1 (ko) 2013-10-14 2021-07-08 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 영상 코딩 및 디코딩에 대한 기본 색상 인덱스 맵 모드의 특징
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
US10469863B2 (en) 2014-01-03 2019-11-05 Microsoft Technology Licensing, Llc Block vector prediction in video and image coding/decoding
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
US20160373744A1 (en) * 2014-04-23 2016-12-22 Sony Corporation Image processing apparatus and image processing method
WO2015192353A1 (en) 2014-06-19 2015-12-23 Microsoft Technology Licensing, Llc Unified intra block copy and inter prediction modes
EP3202150B1 (en) 2014-09-30 2021-07-21 Microsoft Technology Licensing, LLC Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US9811882B2 (en) * 2014-09-30 2017-11-07 Electronics And Telecommunications Research Institute Method and apparatus for processing super resolution image using adaptive preprocessing filtering and/or postprocessing filtering
US10091511B2 (en) * 2015-01-05 2018-10-02 Getgo, Inc. Efficient video block matching
CN105872539B (zh) 2015-02-08 2020-01-14 同济大学 图像编码方法和装置及图像解码方法和装置
CN106664405B (zh) 2015-06-09 2020-06-09 微软技术许可有限责任公司 用调色板模式对经逸出编码的像素的稳健编码/解码
US10368073B2 (en) * 2015-12-07 2019-07-30 Qualcomm Incorporated Multi-region search range for block prediction mode for display stream compression (DSC)
MX2018009722A (es) 2016-02-12 2019-01-24 Thomson Licensing Un metodo y dispositivo para codificacion/decodificacion intra-predictiva de una unidad de codificacion comprendiendo datos de imagen, tal codificacion intra-predictiva dependiente de un arbol de prediccion y un arbol de transformacion.
US10575007B2 (en) 2016-04-12 2020-02-25 Microsoft Technology Licensing, Llc Efficient decoding and rendering of blocks in a graphics pipeline
EP4030754A1 (en) 2016-05-02 2022-07-20 Industry-University Cooperation Foundation Hanyang University Image encoding/decoding method and computer-readable medium
US10157480B2 (en) 2016-06-24 2018-12-18 Microsoft Technology Licensing, Llc Efficient decoding and rendering of inter-coded blocks in a graphics pipeline
CA3227652A1 (en) * 2016-10-04 2018-04-12 Kt Corporation Method and apparatus for processing video signal
EP3306927A1 (en) 2016-10-05 2018-04-11 Thomson Licensing Encoding and decoding methods and corresponding devices
US11197010B2 (en) 2016-10-07 2021-12-07 Microsoft Technology Licensing, Llc Browser-based video decoder using multiple CPU threads
CN116582690A (zh) * 2016-11-08 2023-08-11 株式会社Kt 对图像进行解码和编码的方法、非暂态计算机可读介质
CA2986600A1 (en) * 2016-11-24 2018-05-24 Ecole De Technologie Superieure Method and system for parallel rate-constrained motion estimation in video coding
US10674159B2 (en) 2017-07-28 2020-06-02 Microsoft Technology Licensing, Llc Effective intra encoding for screen data
EP3701721A1 (en) * 2017-10-27 2020-09-02 Huawei Technologies Co., Ltd. Apparatus and method for picture coding with asymmetric partitioning
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
US10687071B2 (en) * 2018-02-05 2020-06-16 Tencent America LLC Method and apparatus for video coding
US10848782B2 (en) 2018-09-21 2020-11-24 Tencent America LLC Method and apparatus for video coding
AU2018233042B2 (en) 2018-09-21 2024-06-13 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tree of blocks of video samples
US11509919B2 (en) * 2018-10-17 2022-11-22 Tencent America Reference sample memory size restrictions for intra block copy
CN112997493B (zh) * 2018-11-13 2024-01-05 北京字节跳动网络技术有限公司 用于单一类型运动候选列表的构建方法
US10771799B2 (en) 2019-01-15 2020-09-08 Tencent America LLC Method and apparatus for video coding
US11570435B2 (en) 2019-01-16 2023-01-31 Telefonaktiebolaget Lm Ericsson (Publ) Video coding comprising uniform tile split with remainder
WO2020156541A1 (en) * 2019-02-02 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Data storage in buffers for intra block copy in video coding
CN113366853B (zh) 2019-02-02 2024-08-02 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的缓冲区初始化
CN113545068B (zh) 2019-03-01 2023-09-15 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的基于顺序的更新
EP3915265A4 (en) 2019-03-01 2022-06-22 Beijing Bytedance Network Technology Co., Ltd. DIRECTION-BASED PREDICTION FOR INTRA BLOCK COPY IN VIDEO CODING
EP3915252A4 (en) 2019-03-04 2022-03-23 Beijing Bytedance Network Technology Co., Ltd. IMPLEMENTATION OF ASPECTS IN AN INTRA BLOCK COPY IN VIDEO ENCODING
CN114666607A (zh) * 2019-03-09 2022-06-24 腾讯美国有限责任公司 视频解码方法、装置及介质
WO2020248105A1 (zh) * 2019-06-10 2020-12-17 Oppo广东移动通信有限公司 预测值的确定方法、编码器以及计算机存储介质
AU2020303803B2 (en) 2019-06-24 2023-12-07 Lg Electronics Inc. Image encoding/decoding method and device using maximum transform size restriction of chroma component encoding block, and method for transmitting bitstream
WO2020262963A1 (ko) * 2019-06-24 2020-12-30 엘지전자 주식회사 크로마 블록의 최대 변환 크기 설정을 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
KR102677020B1 (ko) 2019-07-06 2024-06-19 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 카피를 위한 가상 예측 버퍼
JP7359934B2 (ja) 2019-07-10 2023-10-11 北京字節跳動網絡技術有限公司 映像符号化におけるイントラブロックコピーのためのサンプル識別
KR102695788B1 (ko) 2019-07-11 2024-08-14 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 비트스트림 적합 제약
CN114208187A (zh) * 2019-07-25 2022-03-18 北京字节跳动网络技术有限公司 帧内块复制虚拟缓冲区的映射限制
WO2021013239A1 (en) * 2019-07-25 2021-01-28 Beijing Bytedance Network Technology Co., Ltd. Size restriction for intra-block copy virtual buffer
KR20220044894A (ko) 2019-08-29 2022-04-12 엘지전자 주식회사 영상 코딩 장치 및 방법
CN117459723A (zh) 2019-09-23 2024-01-26 北京字节跳动网络技术有限公司 基于虚拟管线数据单元设置帧内块复制虚拟缓冲区
WO2021185306A1 (en) 2020-03-18 2021-09-23 Beijing Bytedance Network Technology Co., Ltd. Intra block copy buffer and palette predictor update
CN115812306A (zh) * 2020-06-08 2023-03-17 抖音视界有限公司 使用非紧邻临近块的帧内块复制的约束
US12052438B2 (en) * 2021-09-17 2024-07-30 Tencent America LLC Method and apparatus for intra block copy (IntraBC) mode coding with search range restrictions
US11849129B2 (en) * 2022-03-18 2023-12-19 Qualcomm Incorporated Intra-block copy decoding using dynamic re-mapping of on-chip memory

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110194613A1 (en) * 2010-02-11 2011-08-11 Qualcomm Incorporated Video coding with large macroblocks

Family Cites Families (258)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2114404B (en) 1982-01-28 1986-07-02 British Broadcasting Corp Generating a colour video signal representative of a stored picture
JPH087553B2 (ja) 1988-10-27 1996-01-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 色画像量子化方法及び装置
US5706290A (en) 1994-12-15 1998-01-06 Shaw; Venson Method and apparatus including system architecture for multimedia communication
US6389162B2 (en) 1996-02-15 2002-05-14 Canon Kabushiki Kaisha Image processing apparatus and method and medium
JPH10262258A (ja) * 1997-03-19 1998-09-29 Sony Corp 画像符号化装置及び方法
JP2000102016A (ja) 1998-09-22 2000-04-07 Victor Co Of Japan Ltd 動き補償予測回路
JP2001251507A (ja) 2000-03-03 2001-09-14 Fujitsu Ltd 画像処理装置
US6701012B1 (en) 2000-07-24 2004-03-02 Sharp Laboratories Of America, Inc. Out-of-layer pixel generation for a decomposed-image layer
US6748116B1 (en) 2000-08-22 2004-06-08 Airzip, Inc. Apparatus and method for compressing and decompressing image files
DE10049571C1 (de) 2000-10-06 2002-06-13 Siemens Ag Verfahren und Anordnung zum Übertragen eines Vektors
US7023924B1 (en) 2000-12-28 2006-04-04 Emc Corporation Method of pausing an MPEG coded video stream
US6853755B2 (en) 2001-03-28 2005-02-08 Sharp Laboratories Of America, Inc. Method and apparatus for adaptive compression of scanned documents
US7031540B2 (en) 2001-09-12 2006-04-18 Mobitv, Inc. Transformation to increase the lempel-ziv compressibility of images with minimal visual distortion
JP2004007379A (ja) 2002-04-10 2004-01-08 Toshiba Corp 動画像符号化方法及び動画像復号化方法
US7120196B2 (en) 2002-04-29 2006-10-10 Ess Technology, Inc. Intra-prediction using intra-macroblock motion compensation
RU2314656C2 (ru) 2002-06-11 2008-01-10 Нокиа Корпорейшн Внутреннее кодирование, основанное на пространственном прогнозировании
US7289674B2 (en) 2002-06-11 2007-10-30 Nokia Corporation Spatial prediction based intra coding
US7016547B1 (en) 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
EP1582061A4 (en) 2003-01-10 2010-09-22 Thomson Licensing DECODER AND METHOD FOR SMOOTHING ARTIFACTS RESULTING FROM ERROR MASKING
DE10301362B4 (de) 2003-01-16 2005-06-09 GEMAC-Gesellschaft für Mikroelektronikanwendung Chemnitz mbH Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
US7373005B2 (en) 2003-04-10 2008-05-13 Micron Technology, Inc. Compression system for integrated sensor devices
US7609763B2 (en) 2003-07-18 2009-10-27 Microsoft Corporation Advanced bi-directional predictive coding of video frames
BRPI0413988A (pt) 2003-08-26 2006-11-07 Thomson Licensing método e aparelho para decodificar blocos intra-inter codificador hìbridos
US7317839B2 (en) 2003-09-07 2008-01-08 Microsoft Corporation Chroma motion vector derivation for interlaced forward-predicted fields
US7724827B2 (en) 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
KR101044934B1 (ko) 2003-12-18 2011-06-28 삼성전자주식회사 움직임 벡터 추정방법 및 부호화 모드 결정방법
JP4591657B2 (ja) 2003-12-22 2010-12-01 キヤノン株式会社 動画像符号化装置及びその制御方法、プログラム
US8036271B2 (en) 2004-02-24 2011-10-11 Lsi Corporation Method and apparatus for determining a second picture for temporal direct-mode block prediction
JP4338654B2 (ja) * 2004-03-18 2009-10-07 三洋電機株式会社 動きベクトル検出装置及び方法、及びその動きベクトル検出装置を利用可能な画像符号化装置
JP4418762B2 (ja) 2004-05-07 2010-02-24 キヤノン株式会社 画像符号化装置及び画像復号装置及びそれらの制御方法、並びに、コンピュータプログラム及びコンピュータ可読記憶媒体
US8116374B2 (en) 2004-05-07 2012-02-14 Broadcom Corporation Method and system for generating a transform size syntax element for video decoding
KR100907847B1 (ko) 2004-07-20 2009-07-14 퀄컴 인코포레이티드 순간적 비디오 압축으로 이동 벡터 예측을 위한 방법 및장치
JP2006140683A (ja) 2004-11-11 2006-06-01 Canon Inc 画像符号化装置
JP2006140758A (ja) 2004-11-12 2006-06-01 Toshiba Corp 動画像符号化方法、動画像符号化装置および動画像符号化プログラム
US7720154B2 (en) 2004-11-12 2010-05-18 Industrial Technology Research Institute System and method for fast variable-size motion estimation
KR100679035B1 (ko) 2005-01-04 2007-02-06 삼성전자주식회사 인트라 bl 모드를 고려한 디블록 필터링 방법, 및 상기방법을 이용하는 다 계층 비디오 인코더/디코더
US20060274070A1 (en) 2005-04-19 2006-12-07 Herman Daniel L Techniques and workflows for computer graphics animation system
US20060282855A1 (en) 2005-05-05 2006-12-14 Digital Display Innovations, Llc Multiple remote display system
KR100716999B1 (ko) 2005-06-03 2007-05-10 삼성전자주식회사 영상의 대칭성을 이용한 인트라 예측 방법, 이를 이용한영상의 복호화, 부호화 방법 및 장치
KR101211665B1 (ko) 2005-08-12 2012-12-12 삼성전자주식회사 영상의 인트라 예측 부호화, 복호화 방법 및 장치
JP2007053561A (ja) 2005-08-17 2007-03-01 Matsushita Electric Ind Co Ltd 画像符号化装置および画像符号化方法
WO2007021227A1 (en) 2005-08-19 2007-02-22 Telefonaktiebolaget Lm Ericsson (Publ) Texture compression based on two hues with modified brightness
US7986844B2 (en) 2005-11-22 2011-07-26 Intel Corporation Optimized video compression using hashing function
US7956930B2 (en) 2006-01-06 2011-06-07 Microsoft Corporation Resampling and picture resizing operations for multi-resolution video coding and decoding
US8792555B2 (en) 2006-01-31 2014-07-29 Qualcomm Incorporated Methods and systems for resizing multimedia content
CN101026761B (zh) 2006-02-17 2010-05-12 中国科学院自动化研究所 一种具有最小误差的快速变尺寸块匹配的运动估计方法
US7668382B2 (en) 2006-02-24 2010-02-23 Microsoft Corporation Block-based fast image compression
US7616816B2 (en) 2006-03-20 2009-11-10 Sarnoff Corporation System and method for mission-driven visual information retrieval and organization
CN101422047B (zh) 2006-04-14 2011-01-12 Nxp股份有限公司 图像边界处的运动估计方法及显示设备
WO2008004940A1 (en) 2006-07-07 2008-01-10 Telefonaktiebolaget Lm Ericsson (Publ) Video data management
DE102007035204A1 (de) 2006-07-28 2008-02-07 Mediatek Inc. Videoverarbeitungs- und - betriebsvorrichtung
US8472527B2 (en) 2006-09-13 2013-06-25 Texas Instruments Incorporated Hierarchical motion estimation using original frame for sub-sampled reference
CN101518085A (zh) 2006-09-22 2009-08-26 汤姆森许可贸易公司 多通道视频编码和解码的方法及装置
FR2906433B1 (fr) 2006-09-22 2009-02-27 Canon Kk Procedes et dispositifs de codage et de decodage d'images, programme d'ordinateur les mettant en oeuvre et support d'informaton permettant de les mettre en oeuvre
US20080084924A1 (en) 2006-10-05 2008-04-10 Donald Martin Monro Matching pursuits basis selection design
US8218640B2 (en) 2006-10-31 2012-07-10 Sony Computer Entertainment Inc. Picture decoding using same-picture reference for pixel reconstruction
US8218641B2 (en) 2006-10-31 2012-07-10 Sony Computer Entertainment Inc. Picture encoding using same-picture reference for pixel reconstruction
JP2008154015A (ja) 2006-12-19 2008-07-03 Hitachi Ltd 復号化方法および符号化方法
US7907783B2 (en) 2007-01-24 2011-03-15 Samsung Electronics Co., Ltd. Apparatus and method of matching symbols in a text image coding and decoding system
CN100527842C (zh) 2007-01-26 2009-08-12 清华大学 基于背景的运动估计编码方法
RU2472305C2 (ru) 2007-02-23 2013-01-10 Ниппон Телеграф Энд Телефон Корпорейшн Способ кодирования видео и способ декодирования видео, устройства для этого, программы для этого и носители хранения, на которых хранятся программы
US8160150B2 (en) 2007-04-10 2012-04-17 Texas Instruments Incorporated Method and system for rate distortion optimization
WO2008130367A1 (en) 2007-04-19 2008-10-30 Thomson Licensing Adaptive reference picture data generation for intra prediction
US7903873B2 (en) 2007-09-13 2011-03-08 Microsoft Corporation Textual image coding
CN101420606A (zh) 2007-10-23 2009-04-29 青岛海信电器股份有限公司 图像处理方法和装置
JP2009147807A (ja) 2007-12-17 2009-07-02 Fujifilm Corp 画像処理装置
CN101232619B (zh) 2008-01-25 2011-05-11 浙江大学 嵌入帧内编码块的视频编码方法
TWI375472B (en) 2008-02-04 2012-10-21 Ind Tech Res Inst Intra prediction method for luma block of video
CN101552924B (zh) 2008-03-31 2011-08-03 深圳市融创天下科技发展有限公司 一种用于视频编码的空间预测方法
JP5413923B2 (ja) 2008-04-11 2014-02-12 トムソン ライセンシング 変位イントラ予測およびテンプレート・マッチングのためのデブロッキング・フィルタリング
JP2009260473A (ja) 2008-04-14 2009-11-05 Canon Inc 色処理方法及び装置、プログラム、記録媒体
JP2010035137A (ja) 2008-07-01 2010-02-12 Sony Corp 画像処理装置および方法、並びにプログラム
WO2010017166A2 (en) 2008-08-04 2010-02-11 Dolby Laboratories Licensing Corporation Overlapped block disparity estimation and compensation architecture
US8213503B2 (en) 2008-09-05 2012-07-03 Microsoft Corporation Skip modes for inter-layer residual video coding and decoding
US8385404B2 (en) 2008-09-11 2013-02-26 Google Inc. System and method for video encoding using constructed reference frame
KR101306834B1 (ko) 2008-09-22 2013-09-10 에스케이텔레콤 주식회사 인트라 예측 모드의 예측 가능성을 이용한 영상 부호화/복호화 장치 및 방법
US8254704B2 (en) 2008-10-30 2012-08-28 Microsoft Corporation Remote computing platforms providing high-fidelity display and interactivity for clients
US8180165B2 (en) 2008-12-19 2012-05-15 Microsoft Corp. Accelerated screen codec
KR101359490B1 (ko) 2008-12-23 2014-02-10 에스케이 텔레콤주식회사 컬러 영상 부호화/복호화 방법 및 장치
TW201028018A (en) 2009-01-07 2010-07-16 Ind Tech Res Inst Encoder, decoder, encoding method and decoding method
CA2750735C (en) 2009-02-02 2018-09-18 Calgary Scientific Inc. Image data transmission
RU2420021C2 (ru) 2009-03-24 2011-05-27 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ сжатия изображений и видеопоследовательностей
EP2249571A1 (en) 2009-05-04 2010-11-10 Thomson Licensing SA Method and device for encoding an image frame comprising macroblocks
CN102804771B (zh) 2009-06-22 2015-07-01 汤姆森特许公司 基于匹配追踪编码图像序列的视频数据的方法
JPWO2011004598A1 (ja) 2009-07-10 2012-12-20 パナソニック株式会社 動画像符号化方法、装置、プログラム、および集積回路
CN101626512A (zh) 2009-08-11 2010-01-13 北京交通大学 一种基于相关性优化准则的多描述视频编码方法及装置
CN102918840B (zh) 2009-10-01 2016-05-25 Sk电信有限公司 使用分割层进行图像编码/解码的方法和装置
TWI566586B (zh) 2009-10-20 2017-01-11 湯姆生特許公司 一序列形象的現時區塊之寫碼方法和重建方法
US20120213288A1 (en) 2009-10-20 2012-08-23 Yoshihiro Kitaura Video encoding device, video decoding device, and data structure
JP5321426B2 (ja) 2009-11-26 2013-10-23 株式会社Jvcケンウッド 画像符号化装置、画像復号化装置、画像符号化方法、及び画像復号化方法
KR101623124B1 (ko) 2009-12-03 2016-05-24 에스케이 텔레콤주식회사 비디오 인코딩 장치 및 그 인코딩 방법, 비디오 디코딩 장치 및 그 디코딩 방법, 및 거기에 이용되는 방향적 인트라 예측방법
WO2011095260A1 (en) 2010-02-05 2011-08-11 Telefonaktiebolaget L M Ericsson (Publ) Managing predicted motion vector candidates
JP5375676B2 (ja) 2010-03-04 2013-12-25 富士通株式会社 画像処理装置、画像処理方法、および画像処理プログラム
EP2553927B1 (fr) 2010-03-31 2018-11-28 Orange Procedes et dispositifs de codage et de decodage d'une sequence d'images mettant en oeuvre une prediction par compensation de mouvement avant, et programme d'ordinateur correspondant
US8644375B2 (en) 2010-04-09 2014-02-04 Sharp Laboratories Of America, Inc. Methods and systems for intra prediction
KR101752418B1 (ko) 2010-04-09 2017-06-29 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
US8619857B2 (en) 2010-04-09 2013-12-31 Sharp Laboratories Of America, Inc. Methods and systems for intra prediction
KR101789634B1 (ko) 2010-04-09 2017-10-25 엘지전자 주식회사 비디오 데이터 처리 방법 및 장치
WO2011136896A1 (en) 2010-04-27 2011-11-03 Sony Corporation Boundary adaptive intra prediction for improving subjective video quality
KR20110123651A (ko) 2010-05-07 2011-11-15 한국전자통신연구원 생략 부호화를 이용한 영상 부호화 및 복호화 장치 및 그 방법
CN103141091A (zh) 2010-06-21 2013-06-05 汤姆逊许可公司 图像数据编码/解码的方法及其设备
WO2012002785A2 (ko) 2010-07-02 2012-01-05 (주)휴맥스 화면내 예측 부호화를 위한 영상 부호화/복호화 장치 및 방법
KR101484281B1 (ko) 2010-07-09 2015-01-21 삼성전자주식회사 블록 병합을 이용한 비디오 부호화 방법 및 그 장치, 블록 병합을 이용한 비디오 복호화 방법 및 그 장치
HUE053802T2 (hu) 2010-07-14 2021-07-28 Ntt Docomo Inc Kis komplexitású intra predikció videó kódoláshoz
CN105227958B (zh) 2010-07-20 2019-06-25 Sk电信有限公司 用于解码视频信号的解码装置
KR102126374B1 (ko) 2010-11-04 2020-06-24 지이 비디오 컴프레션, 엘엘씨 블록 병합 및 스킵 모드를 지원하는 화상 코딩
US8787459B2 (en) 2010-11-09 2014-07-22 Sony Computer Entertainment Inc. Video coding methods and apparatus
KR101756442B1 (ko) 2010-11-29 2017-07-11 에스케이텔레콤 주식회사 인트라예측모드의 중복성을 최소화하기 위한 영상 부호화/복호화 방법 및 장치
US8767835B2 (en) 2010-12-28 2014-07-01 Mitsubishi Electric Research Laboratories, Inc. Method for coding videos using dictionaries
US20120163457A1 (en) 2010-12-28 2012-06-28 Viktor Wahadaniah Moving picture decoding method, moving picture coding method, moving picture decoding apparatus, moving picture coding apparatus, and moving picture coding and decoding apparatus
KR101739579B1 (ko) 2011-01-04 2017-05-24 에스케이 텔레콤주식회사 코딩 유닛 단위 병렬 인트라예측을 이용한 부호화/복호화 방법 및 장치
US8913662B2 (en) 2011-01-06 2014-12-16 Qualcomm Incorporated Indicating intra-prediction mode selection for video coding using CABAC
KR20120080122A (ko) 2011-01-06 2012-07-16 삼성전자주식회사 경쟁 기반의 다시점 비디오 부호화/복호화 장치 및 방법
KR102390352B1 (ko) 2011-01-07 2022-04-25 엘지전자 주식회사 영상 정보 부호화 방법 및 복호화 방법과 이를 이용한 장치
WO2012097377A1 (en) 2011-01-14 2012-07-19 General Instrument Corporation Joint spatial and temporal block merge mode for hevc
WO2012097376A1 (en) 2011-01-14 2012-07-19 General Instrument Corporation Spatial block merge mode
KR102588145B1 (ko) 2011-01-14 2023-10-12 지이 비디오 컴프레션, 엘엘씨 엔트로피 인코딩 및 디코딩 방식
US8755437B2 (en) 2011-03-17 2014-06-17 Mediatek Inc. Method and apparatus for derivation of spatial motion vector candidate and motion vector prediction candidate
CN103329534B (zh) 2011-01-19 2017-03-08 瑞萨电子株式会社 图像编码装置及图像解码装置
US9532066B2 (en) 2011-01-21 2016-12-27 Qualcomm Incorporated Motion vector prediction
US8548057B2 (en) 2011-01-25 2013-10-01 Microsoft Corporation Video coding redundancy reduction
US9319716B2 (en) 2011-01-27 2016-04-19 Qualcomm Incorporated Performing motion vector prediction for video coding
US9288501B2 (en) 2011-03-08 2016-03-15 Qualcomm Incorporated Motion vector predictors (MVPs) for bi-predictive inter mode in video coding
US9788019B2 (en) 2011-03-09 2017-10-10 Hfi Innovation Inc. Method and apparatus of transform unit partition with reduced complexity
KR101532665B1 (ko) 2011-03-14 2015-07-09 미디어텍 인크. 시간적 움직임 백터 예측을 도출하기 위한 방법 및 장치
ES2900107T3 (es) 2011-03-21 2022-03-15 Lg Electronics Inc Método para seleccionar un predictor de vector de movimiento
US8693547B2 (en) 2011-04-06 2014-04-08 Google Inc. Apparatus and method for coding using motion vector segmentation
MY185091A (en) 2011-04-21 2021-04-30 Samsung Electronics Co Ltd Method of quantizing linear predictive coding coefficients, sound encoding method, method of de-quantizing linear predictive coding coefficients, sound decoding method, and recording medium
US20140050414A1 (en) 2011-04-29 2014-02-20 Telefonaktiebolaget L M Ericsson (Publ) Encoder, Decoder and Methods Thereof for Texture Compression
US20120281760A1 (en) 2011-05-04 2012-11-08 Hyung Joon Kim Iterative Grid-Pattern Motion Search
US8971416B2 (en) 2011-05-05 2015-03-03 Vixs Systems, Inc Video decoder with vector processor and methods for use therewith
CN102137263B (zh) 2011-05-09 2013-07-03 松日数码发展(深圳)有限公司 基于cnm关键帧分类的分布式视频编码及解码方法
US20140085418A1 (en) 2011-05-16 2014-03-27 Sony Corporation Image processing device and image processing method
US20120294353A1 (en) 2011-05-16 2012-11-22 Mediatek Inc. Apparatus and Method of Sample Adaptive Offset for Luma and Chroma Components
CN102238391B (zh) 2011-05-25 2016-12-07 深圳市云宙多媒体技术有限公司 一种预测编码方法、装置
JP5727873B2 (ja) 2011-06-10 2015-06-03 日本放送協会 動きベクトル検出装置、符号化装置、及びこれらのプログラム
CN103688533B (zh) 2011-06-20 2015-12-23 联发科技(新加坡)私人有限公司 可减少行存储器的色度帧内预测方法及装置
WO2012174990A1 (en) 2011-06-24 2012-12-27 Mediatek Inc. Method and apparatus for removing redundancy in motion vector predictors
CA2842646C (en) 2011-06-27 2018-09-04 Panasonic Corporation Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus
US9060173B2 (en) 2011-06-30 2015-06-16 Sharp Kabushiki Kaisha Context initialization based on decoder picture buffer
CN103650496B (zh) 2011-07-12 2018-09-21 华为技术有限公司 用于在hevc中编码的基于像素的帧内预测
CN102223541B (zh) 2011-07-14 2013-07-03 北京工业大学 一种混合图像的编码方法
US9232237B2 (en) 2011-08-05 2016-01-05 Texas Instruments Incorporated Block-based parallel deblocking filter in video coding
WO2013023518A1 (en) 2011-08-17 2013-02-21 Mediatek Singapore Pte. Ltd. Method and apparatus for intra prediction using non-square blocks
KR101492105B1 (ko) 2011-08-29 2015-02-11 주식회사 아이벡스피티홀딩스 Amvp 모드에서 영상 부호화 방법
US8804816B2 (en) 2011-08-30 2014-08-12 Microsoft Corporation Video encoding enhancements
US9578336B2 (en) 2011-08-31 2017-02-21 Texas Instruments Incorporated Hybrid video and graphics system with automatic content detection process, and other circuits, processes, and systems
US9451284B2 (en) 2011-10-10 2016-09-20 Qualcomm Incorporated Efficient signaling of reference picture sets
WO2013057359A1 (en) 2011-10-21 2013-04-25 Nokia Corporation Method for video coding and an apparatus
GB2495990A (en) 2011-10-28 2013-05-01 Canon Kk Motion compensated image coding with omission of coding mode cost calculation for a motion predictor in a set.
US9484952B2 (en) 2011-11-03 2016-11-01 Qualcomm Incorporated Context state and probability initialization for context adaptive entropy coding
US10390046B2 (en) 2011-11-07 2019-08-20 Qualcomm Incorporated Coding significant coefficient information in transform skip mode
BR112014011149A2 (pt) 2011-11-08 2017-05-16 Motorola Mobility Llc dispositivos e métodos para codificação e / ou de sinalização de deslocamento adaptativo de amostra
EP2777284B1 (en) 2011-11-11 2018-09-05 GE Video Compression, LLC Effective wedgelet partition coding using spatial prediction
US20130121417A1 (en) 2011-11-16 2013-05-16 Qualcomm Incorporated Constrained reference picture sets in wave front parallel processing of video data
EP2781091B1 (en) 2011-11-18 2020-04-08 GE Video Compression, LLC Multi-view coding with efficient residual handling
US9883203B2 (en) 2011-11-18 2018-01-30 Qualcomm Incorporated Adaptive overlapped block motion compensation
CN103621097B (zh) 2011-11-25 2018-04-24 太阳专利托管公司 图像处理方法及图像处理装置
RU2493670C2 (ru) 2011-12-15 2013-09-20 Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "МИЭТ" Способ блочной межкадровой компенсации движения для видеокодеков
EP2795901A1 (en) 2011-12-20 2014-10-29 Motorola Mobility LLC Method and apparatus for efficient transform unit encoding
US9762904B2 (en) 2011-12-22 2017-09-12 Qualcomm Incorporated Performing motion vector prediction for video coding
US20130163664A1 (en) 2011-12-22 2013-06-27 Qualcomm Incorporated Unified partition mode table for intra-mode coding
US9900615B2 (en) 2011-12-28 2018-02-20 Microsoft Technology Licensing, Llc Representative motion information for temporal motion prediction in video encoding and decoding
WO2013102293A1 (en) 2012-01-04 2013-07-11 Mediatek Singapore Pte. Ltd. Improvements of luma-based chroma intra prediction
US9451252B2 (en) 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
US9332259B2 (en) 2012-01-18 2016-05-03 Qualcomm Incorporated Indication of use of wavefront parallel processing in video coding
JP2013150173A (ja) 2012-01-19 2013-08-01 Sony Corp 画像処理装置および方法
US20130188719A1 (en) 2012-01-20 2013-07-25 Qualcomm Incorporated Motion prediction in svc using motion vector for intra-coded block
JP2013150215A (ja) 2012-01-20 2013-08-01 Fujitsu Ltd 動画像復号装置、動画像符号化装置、動画像復号方法、動画像符号化方法、動画像復号プログラム及び動画像符号化プログラム
CA3081964A1 (en) 2012-01-20 2013-07-25 Ge Video Compression, Llc Coding concept allowing parallel processing, transport demultiplexer and video bitstream
US9210438B2 (en) 2012-01-20 2015-12-08 Sony Corporation Logical intra mode naming in HEVC video coding
US10244246B2 (en) 2012-02-02 2019-03-26 Texas Instruments Incorporated Sub-pictures for pixel rate balancing on multi-core platforms
WO2013128010A2 (en) 2012-03-02 2013-09-06 Canon Kabushiki Kaisha Method and devices for encoding a sequence of images into a scalable video bit-stream, and decoding a corresponding scalable video bit-stream
US8737824B1 (en) 2012-03-09 2014-05-27 Google Inc. Adaptively encoding a media stream with compound prediction
US9503720B2 (en) 2012-03-16 2016-11-22 Qualcomm Incorporated Motion vector coding and bi-prediction in HEVC and its extensions
JP2015515806A (ja) 2012-03-26 2015-05-28 ユークリッド・ディスカバリーズ・エルエルシーEuclid Discoveries,Llc コンテキストベースの映像符号化及び映像復号化
US20130258052A1 (en) 2012-03-28 2013-10-03 Qualcomm Incorporated Inter-view residual prediction in 3d video coding
US9838684B2 (en) 2012-04-11 2017-12-05 Qualcomm Incorporated Wavefront parallel processing for video coding
US20130272409A1 (en) 2012-04-12 2013-10-17 Qualcomm Incorporated Bandwidth reduction in video coding through applying the same reference index
US20150085932A1 (en) 2012-04-24 2015-03-26 Mediatek Inc. Method and apparatus of motion vector derivation for 3d video coding
GB2501535A (en) 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
US9521410B2 (en) 2012-04-26 2016-12-13 Qualcomm Incorporated Quantization parameter (QP) coding in video coding
US9762903B2 (en) 2012-06-01 2017-09-12 Qualcomm Incorporated External pictures in video coding
US9621905B2 (en) 2012-06-29 2017-04-11 Qualcomm Incorporated Tiles and wavefront parallel processing
CN102752595B (zh) 2012-06-29 2014-07-09 香港应用科技研究院有限公司 用于深度图编码和解码的混合型跳过模式
US9602827B2 (en) 2012-07-02 2017-03-21 Qualcomm Incorporated Video parameter set including an offset syntax element
US9264713B2 (en) 2012-07-11 2016-02-16 Qualcomm Incorporated Rotation of prediction residual blocks in video coding with transform skipping
US9549182B2 (en) 2012-07-11 2017-01-17 Qualcomm Incorporated Repositioning of prediction residual blocks in video coding
US9467692B2 (en) 2012-08-31 2016-10-11 Qualcomm Incorporated Intra prediction improvements for scalable video coding
US20140071235A1 (en) 2012-09-13 2014-03-13 Qualcomm Incorporated Inter-view motion prediction for 3d video
WO2014050030A1 (ja) 2012-09-26 2014-04-03 パナソニック株式会社 画像復号方法、画像符号化方法、画像復号装置、画像符号化装置及び画像符号化復号装置
WO2014050948A1 (ja) 2012-09-28 2014-04-03 シャープ株式会社 画像復号装置及び画像符号化装置
EP2904795A4 (en) 2012-10-03 2016-09-07 Mediatek Inc METHOD AND APPARATUS FOR THE HEREDITY OF MOTION INFORMATION IN THREE-DIMENSIONAL VIDEO CODING
US9357214B2 (en) 2012-12-07 2016-05-31 Qualcomm Incorporated Advanced merge/skip mode and advanced motion vector prediction (AMVP) mode for 3D video
US9615090B2 (en) 2012-12-28 2017-04-04 Qualcomm Incorporated Parsing syntax elements in three-dimensional video coding
US9826244B2 (en) 2013-01-08 2017-11-21 Qualcomm Incorporated Device and method for scalable coding of video information based on high efficiency video coding
CN103067716B (zh) 2013-01-10 2016-06-29 华为技术有限公司 深度图像的编解码方法和编解码装置
US9800857B2 (en) 2013-03-08 2017-10-24 Qualcomm Incorporated Inter-view residual prediction in multi-view or 3-dimensional video coding
US9516306B2 (en) 2013-03-27 2016-12-06 Qualcomm Incorporated Depth coding modes signaling of depth data for 3D-HEVC
US10904551B2 (en) 2013-04-05 2021-01-26 Texas Instruments Incorporated Video coding using intra block copy
CN103237226B (zh) 2013-04-07 2016-08-03 宁波大学 一种立体视频宏块丢失错误隐藏方法
WO2014166104A1 (en) 2013-04-12 2014-10-16 Mediatek Singapore Pte. Ltd. Removal of parsing dependency for illumination compensation
US11323747B2 (en) 2013-06-05 2022-05-03 Qualcomm Incorporated Residual differential pulse code modulation (DPCM) extensions and harmonization with transform skip, rotation, and scans
CN103281538B (zh) 2013-06-06 2016-01-13 上海交通大学 基于滚动哈希和块级别帧内预测的帧内编码方法
CN104244007B (zh) 2013-06-13 2020-09-01 上海天荷电子信息有限公司 一种图像编码方法和装置及解码方法和装置
US9300967B2 (en) 2013-06-19 2016-03-29 Apple Inc. Sample adaptive offset control
US10015515B2 (en) 2013-06-21 2018-07-03 Qualcomm Incorporated Intra prediction from a predictive block
GB2516422A (en) 2013-07-09 2015-01-28 Sony Corp Data encoding and decoding
US9558567B2 (en) 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
US20150016533A1 (en) 2013-07-12 2015-01-15 Qualcomm Incorporated Intra motion compensation extensions
US20150016516A1 (en) 2013-07-15 2015-01-15 Samsung Electronics Co., Ltd. Method for intra prediction improvements for oblique modes in video coding
WO2015010226A1 (en) 2013-07-24 2015-01-29 Qualcomm Incorporated Simplified advanced motion prediction for 3d-hevc
CN112383781B (zh) 2013-08-16 2023-05-02 上海天荷电子信息有限公司 参考块的位置决定其重构阶段的块匹配编解码方法和装置
US9774879B2 (en) 2013-08-16 2017-09-26 Sony Corporation Intra-block copying enhancements for HEVC in-range-extension (RExt)
US10313682B2 (en) 2013-08-26 2019-06-04 Qualcomm Incorporated Determining regions when performing intra block copying
US9503715B2 (en) 2013-08-30 2016-11-22 Qualcomm Incorporated Constrained intra prediction in video coding
WO2015032350A1 (zh) 2013-09-07 2015-03-12 同济大学 一种使用块匹配的图像压缩方法和装置
US20150071357A1 (en) 2013-09-12 2015-03-12 Qualcomm Incorporated Partial intra block copying for video coding
AU2013228045A1 (en) 2013-09-13 2015-04-02 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data
US10009629B2 (en) 2013-10-11 2018-06-26 Sony Corporation Video coding system with search range and method of operation thereof
KR102257269B1 (ko) 2013-10-14 2021-05-26 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩 및 디코딩을 위한 인트라 블록 카피 예측 모드의 피쳐
KR102275639B1 (ko) 2013-10-14 2021-07-08 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 영상 코딩 및 디코딩에 대한 기본 색상 인덱스 맵 모드의 특징
CN105659602B (zh) 2013-10-14 2019-10-08 微软技术许可有限责任公司 用于视频和图像编码的帧内块复制预测模式的编码器侧选项
US20150110181A1 (en) 2013-10-18 2015-04-23 Samsung Electronics Co., Ltd. Methods for palette prediction and intra block copy padding
US10291827B2 (en) 2013-11-22 2019-05-14 Futurewei Technologies, Inc. Advanced screen content coding solution
US10321141B2 (en) 2013-12-18 2019-06-11 Hfi Innovation Inc. Method and apparatus for palette initialization and management
TWI536811B (zh) 2013-12-27 2016-06-01 財團法人工業技術研究院 影像處理方法與系統、解碼方法、編碼器與解碼器
US10469863B2 (en) 2014-01-03 2019-11-05 Microsoft Technology Licensing, Llc Block vector prediction in video and image coding/decoding
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
US9883197B2 (en) 2014-01-09 2018-01-30 Qualcomm Incorporated Intra prediction of chroma blocks using the same vector
US20150271515A1 (en) 2014-01-10 2015-09-24 Qualcomm Incorporated Block vector coding for intra block copy in video coding
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
GB2522844A (en) 2014-01-29 2015-08-12 Sony Corp Data encoding and decoding
US9699468B2 (en) 2014-02-10 2017-07-04 Microsoft Technology Licensing, Llc Adaptive screen and video coding scheme
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
KR101908205B1 (ko) 2014-02-21 2018-10-15 미디어텍 싱가폴 피티이. 엘티디. 인트라 화상 블록 카피에 기초한 예측을 이용하는 비디오 코딩 방법
KR102185245B1 (ko) 2014-03-04 2020-12-01 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 해시 기반 블록 매칭을 위한 해시 테이블 구성 및 이용가능성 검사
US10368091B2 (en) 2014-03-04 2019-07-30 Microsoft Technology Licensing, Llc Block flipping and skip mode in intra block copy prediction
US9681135B2 (en) 2014-03-14 2017-06-13 Hfi Innovation Inc. Method for palette table initialization and management
US20150264348A1 (en) 2014-03-17 2015-09-17 Qualcomm Incorporated Dictionary coding of video content
US20150312573A1 (en) 2014-03-17 2015-10-29 Nokia Technologies Oy Method and technical equipment for video encoding and decoding
US10432928B2 (en) 2014-03-21 2019-10-01 Qualcomm Incorporated Using a current picture as a reference for video coding
US10477232B2 (en) 2014-03-21 2019-11-12 Qualcomm Incorporated Search region determination for intra block copy in video coding
AU2014202682A1 (en) 2014-05-16 2015-12-03 Canon Kabushiki Kaisha Method, apparatus and system for copying a block of video samples
US11323733B2 (en) 2014-05-23 2022-05-03 Qualcomm Incorporated Predictor palette initialization in palette-based video coding
US9877043B2 (en) 2014-06-19 2018-01-23 Vid Scale Inc. Methods and systems for intra block copy coding with block vector derivation
WO2015192353A1 (en) 2014-06-19 2015-12-23 Microsoft Technology Licensing, Llc Unified intra block copy and inter prediction modes
KR101748620B1 (ko) 2014-06-20 2017-07-04 성균관대학교산학협력단 영상의 부호화/복호화 방법 및 이를 이용하는 장치
WO2015194187A1 (en) 2014-06-20 2015-12-23 Sharp Kabushiki Kaisha Harmonized palette coding
US9948949B2 (en) 2014-06-20 2018-04-17 Qualcomm Incorporated Intra block copy block vector signaling for video coding
US20150381994A1 (en) 2014-06-27 2015-12-31 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
US10412387B2 (en) 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
EP3202150B1 (en) 2014-09-30 2021-07-21 Microsoft Technology Licensing, LLC Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US9591325B2 (en) 2015-01-27 2017-03-07 Microsoft Technology Licensing, Llc Special case handling for merged chroma blocks in intra block copy prediction mode
US10638140B2 (en) 2015-05-29 2020-04-28 Qualcomm Incorporated Slice level intra block copy and other video coding improvements
CA3025477C (en) * 2016-05-25 2023-10-03 Arris Enterprises Llc Jvet coding block structure with asymmetrical partitioning
JP2018032949A (ja) * 2016-08-23 2018-03-01 キヤノン株式会社 動きベクトル検出装置およびその制御方法
US10817747B2 (en) 2019-03-14 2020-10-27 Ubicquia Iq Llc Homography through satellite image matching

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110194613A1 (en) * 2010-02-11 2011-08-11 Qualcomm Incorporated Video coding with large macroblocks

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Chun-Chi Chen et. al., "AHG8: Pseudo-PU-based Intra Block Copy", Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 15th Meeting, 2013.10.18., JCTVC-O0*

Also Published As

Publication number Publication date
MX2016009128A (es) 2016-10-13
EP4329298A3 (en) 2024-04-03
WO2015108793A1 (en) 2015-07-23
EP3095239B1 (en) 2024-02-28
US20150208084A1 (en) 2015-07-23
US11284103B2 (en) 2022-03-22
CN105917648B (zh) 2019-07-12
CN105917648A (zh) 2016-08-31
US11979600B2 (en) 2024-05-07
JP2020039167A (ja) 2020-03-12
AU2015206771B2 (en) 2018-08-23
EP3095239A1 (en) 2016-11-23
US11979601B2 (en) 2024-05-07
CA2935156A1 (en) 2015-07-23
US11595679B1 (en) 2023-02-28
MX361225B (es) 2018-11-29
US20230038995A1 (en) 2023-02-09
RU2683165C1 (ru) 2019-03-26
BR112016015740A2 (pt) 2017-08-08
US20240244252A1 (en) 2024-07-18
US20230239495A1 (en) 2023-07-27
EP4329298A2 (en) 2024-02-28
KR20160110961A (ko) 2016-09-23
JP2017507554A (ja) 2017-03-16
AU2015206771A1 (en) 2016-07-07
US20230164349A1 (en) 2023-05-25
JP6931690B2 (ja) 2021-09-08

Similar Documents

Publication Publication Date Title
US11979601B2 (en) Encoder-side search ranges having horizontal bias or vertical bias
US12081779B2 (en) Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US11317113B2 (en) Features of intra block copy prediction mode for video and image coding and decoding
CN107211155B (zh) 图内块拷贝预测模式下的合并的色度块的特殊情况处理
KR102298599B1 (ko) 샘플 적응 오프셋 필터링에 대한 인코더측 결정
KR102283407B1 (ko) 중첩 구역 내에서의 재구성된 샘플 값의 블록 벡터 예측 및 추정에서의 혁신
KR102287779B1 (ko) 해시 기반의 블록 매칭의 결과에 기초한 인코더 결정
US20170064330A1 (en) Dictionary encoding and decoding of screen content
EP3120556A1 (en) Encoder-side decisions for screen content encoding
KR102210946B1 (ko) 스크린 컨텐츠의 딕셔너리 인코딩 및 디코딩

Legal Events

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