KR102597838B1 - 비디오 코딩을 위한 위치 종속 공간 가변 변환 - Google Patents

비디오 코딩을 위한 위치 종속 공간 가변 변환 Download PDF

Info

Publication number
KR102597838B1
KR102597838B1 KR1020227029522A KR20227029522A KR102597838B1 KR 102597838 B1 KR102597838 B1 KR 102597838B1 KR 1020227029522 A KR1020227029522 A KR 1020227029522A KR 20227029522 A KR20227029522 A KR 20227029522A KR 102597838 B1 KR102597838 B1 KR 102597838B1
Authority
KR
South Korea
Prior art keywords
svt
block
residual block
transform
type
Prior art date
Application number
KR1020227029522A
Other languages
English (en)
Other versions
KR20220122809A (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 KR20220122809A publication Critical patent/KR20220122809A/ko
Application granted granted Critical
Publication of KR102597838B1 publication Critical patent/KR102597838B1/ko

Links

Classifications

    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Abstract

비디오 코딩을 위한 위치 종속 공간 가변 변환(SVT) 메커니즘. 예측 블록 및 대응하는 변환된 잔차 블록은 디코더에서 수신된다. 변환된 잔차 블록을 생성하기 위해 이용되는 공간 가변 변환(SVT)의 유형이 결정된다. 변환된 잔차 블록에 대한 SVT의 위치도 결정된다. SVT의 역이 재구성된 잔차 블록을 재구성하기 위해 변환된 잔차 블록에 적용된다. 재구성된 잔차 블록은 이후 이미지 블록을 재구성하기 위해 예측 블록과 결합된다.

Description

비디오 코딩을 위한 위치 종속 공간 가변 변환{POSITION DEPENDENT SPATIAL VARYING TRANSFORM FOR VIDEO CODING}
본 출원은 Yin Zhao 등에 의해 2018년 2월 23일에 "비디오 코딩을 위한 위치 종속 공간 가변 변환"이라는 명칭으로 출원된, 미국 가출원 번호 62/634,613의 우선권을 주장하며, 그것의 교시 및 개시는 여기에 그 전체가 참조로서 병합된다.
비디오 코딩은 비디오 이미지를 더 작은 형식으로 압축하는 프로세스이다. 비디오 코딩은 매체 상에 저장될 때 인코딩된 비디오로 하여금 공간을 덜 차지하도록 한다. 또한, 비디오 코딩은 스트리밍 미디어를 지원한다. 구체적으로, 콘텐츠 제공자는 더 높은 해상도로 최종 사용자에게 미디어를 제공하고자 한다. 또한, 콘텐츠 제공자는 이러한 미디어가 텔레비전, 컴퓨터, 태블릿, 전화 등과 같은 최종 사용자 기기에게 전송될 때까지 사용자가 오랜 시간 동안 기다리게 하지 않으면서 주문형 미디어(media on demand)를 제공하고자 한다. 비디오 코딩 압축의 발전은 비디오 파일의 크기의 감소를 지원하고, 그러므로 대응하는 콘텐츠 배포 시스템과 함께 적용될 때 위에서 언급된 두 가지 목표를 모두 지원한다.
제1 측면은 컴퓨팅 기기에서 구현되는 방법에 관한 것이다. 상기 방법은, 컴퓨팅 기기의 프로세서가, 예측 블록 및 예측 블록에 대응하는 변환된 잔차 블록을 획득하기 위해 비트스트림을 파싱하는 단계, 프로세서가, 변환된 잔차 블록을 생성하기 위해 사용된 SVT(Spatial Variableing Transform) 유형을 결정하는 단계, 프로세서가, 변환된 잔차 블록에 대한 SVT의 위치를 결정하는 단계, 프로세서가, SVT의 위치에 기반하여 SVT의 역을 결정하는 단계, 프로세서가, 재구성된 잔차 블록을 생성하기 위해 변환된 잔차 블록에 SVT의 역을 적용하는 단계, 및 프로세서가, 이미지 블록을 재구성하기 위해 재구성된 잔차 블록을 예측 블록과 결합하는 단계를 포함한다.
이 방법은 SVT의 코딩 효율의 증가를 용이하게 한다. 이와 관련하여, 변환 블록은 대응하는 잔차 블록에 대해 다양한 후보 위치에 위치한다. 이와 같이, 개시된 메커니즘은 후보 위치에 기반하여 변환 블록에 대해 서로 다른 변환을 이용한다.
이와 같은 제1 측면에 따른 방법의 제1 구현 형태에서, SVT의 유형은 SVT 수직(SVT-V) 유형 또는 SVT 수평(SVT-H) 유형이다.
제1 측면에 따른 방법의 제2 구현 형태 또는 제1 측면의 임의의 선행하는 구현 형태에서, SVT-V 유형은 변환된 잔차 블록의 높이와 동일한 높이 및 변환된 잔차 블록의 폭의 절반인 폭을 포함하고, SVT-H 유형은 변환된 잔차 블록의 높이의 절반인 높이 및 변환된 잔차 블록의 폭과 동일한 폭을 포함한다.
제1 측면에 따른 방법의 제3 구현 형태 또는 제1 측면의 임의의 선행 구현 형태에서, svt_type_flag는 SVT의 유형을 결정하기 위해 비트스트림으로부터 파싱된다.
제1 측면에 따른 방법의 제4 구현 형태 또는 제1 측면의 임의의 선행 구현 형태에서, SVT의 유형은 오직 하나의 유형의 SVT이 잔차 블록에 대해 허용될 때 추론에 의해 결정된다.
제1 측면에 따른 방법의 제5 구현 형태 또는 제1 측면의 임의의 선행 구현 형태에서, 위치 인덱스는 SVT의 위치를 결정하기 위해 비트스트림으로부터 파싱된다.
제1 측면에 따른 방법의 제6 구현 형태 또는 제1 측면의 임의의 선행 구현 형태에서, 위치 인덱스는 후보 위치 단계 크기(candidate position step size, CPSS)에 따라 결정된 후보 위치의 집합에서 위치를 지시하는 이진 코드(binary code)를 수용한다.
제1 측면에 따른 방법의 제7 구현 형태 또는 제1 측면의 임의의 선행 구현 형태에서, SVT의 가장 가능성 있는 위치는 위치 인덱스를 지시하는 이진 코드 내의 최소 개수의 비트로 할당된다.
제1 측면에 따른 방법의 제8 구현 형태 또는 제1 측면의 임의의 선행 구현 형태에서, SVT의 위치는 단일 후보 위치가 SVT 변환에 대해 사용 가능할 때 프로세서에 의해 추론된다.
제1 측면에 따른 방법의 제9 구현 형태 또는 제1 측면의 임의의 선행 구현 형태에서, SVT의 위치는 잔차 블록이 인터-예측 모드에서의 템플릿 매칭에 의해 생성되었을 때 프로세서에 의해 추론된다.
제1 측면에 따른 방법의 제10 구현 형태 또는 제1 측면의 임의의 선행 구현 형태에서, 역 이산 사인 변환(DST)은 잔차 블록의 왼쪽 경계에 위치하는 SVT 수직(SVT-V) 유형 변환을 위해 이용된다.
제1 측면에 따른 방법의 제11 구현 형태 또는 제1 측면의 임의의 선행 구현 형태에서, 역 DST는 잔차 블록의 상부 경계에 위치하는 SVT 수평(SVT-H) 유형 변환을 위해 이용된다.
제1 측면에 따른 방법의 제12 구현 형태 또는 제1 측면의 임의의 선행 구현 형태에서, 역 이산 코사인 변환(DCT)은 잔차 블록의 오른쪽 경계에 위치하는 SVT-V 유형 변환을 위해 이용된다.
제1 측면에 따른 방법의 제13 구현 형태 또는 제1 측면의 임의의 선행 구현 형태에서, 역 DCT는 잔차 블록의 하부 경계에 위치하는 SVT-H 유형 변환을 위해 이용된다.
제1 측면에 따른 방법의 제14 구현 형태 또는 제1 측면의 임의의 선행 구현 형태에서, 재구성된 잔차 블록 내의 샘플은, 재구성된 잔차 블록과 관련된 코딩 단위의 우측 이웃이 재구성되어 있고 코딩 단위의 좌측 이웃이 재구성되지 않았을 때 재구성된 잔차 블록을 예측 블록과 결합하는 단계에 앞서 수평으로 플리핑된다.
제2 측면은 컴퓨팅 기기에서 구현되는 방법에 관한 것이다. 상기 방법은, 비디오 캡처 기기로부터 이미지 블록을 포함하는 비디오 신호를 수신하는 단계, 컴퓨팅 기기의 프로세서가, 이미지 블록을 나타내기 위해 예측 블록 및 잔차 블록을 생성하는 단계, 프로세서가, 잔차 블록에 대한 SVT의 위치를 기반으로 공간 가변 변환(SVT)을 위한 변환 알고리즘을 선택하는 단계, 프로세서에 의해 선택된 인코딩된 SVT를 사용하여 잔차 블록을 변환된 잔차 블록으로 바꾸는 단계, 프로세서가, SVT의 유형을 비트스트림으로 인코딩하는 단계, 프로세서가, SVT의 위치를 비트스트림으로 인코딩하는 단계, 및 프로세서가, 디코더로의 전송을 위해 예측 블록 및 변환된 잔차 블록을 비트스트림으로 인코딩하는 단계를 포함한다.
상기 방법은 SVT의 코딩 효율의 증가를 용이하게 한다. 이와 관련하여, 변환 블록은 대응하는 잔차 블록에 대해 다양한 후보 위치에 위치한다. 이와 같이, 개시된 메커니즘은 후보 위치에 기반하여 변환 블록에 대해 서로 다른 변환을 이용한다.
이와 같은 제1 측면에 따른 방법의 제1 구현 형태에서, SVT의 유형은 SVT 수직(SVT-V) 유형 또는 SVT 수평(SVT-H) 유형이다.
제2 측면에 따른 방법의 제2 구현 형태 또는 제2 측면의 임의의 선행 구현 형태에서, SVT-V 유형은 잔차 블록의 높이와 동일한 높이 및 잔차 블록의 폭의 절반인 폭을 포함한다.
제2 측면에 따른 방법의 제3 구현 형태 또는 제2 측면의 임의의 선행 구현 형태에서, SVT-H 유형은 잔차 블록의 높이의 절반인 높이 및 잔차 블록의 폭과 동일한 폭을 포함한다.
제2 측면에 따른 방법의 제4 구현 형태 또는 제2 측면의 임의의 선행 구현 형태에서, SVT의 위치는 위치 인덱스로 인코딩된다.
제2 측면에 따른 방법의 제5 구현 형태 또는 제2 측면의 임의의 선행 구현 형태에서, 위치 인덱스는 후보 위치 단계 크기(CPSS)에 따라 결정된 후보 위치 집합에서 위치를 지시하는 이진 코드를 포함한다.
제2 측면에 따른 방법의 제6 구현 형태 또는 제2 측면의 임의의 선행 구현 형태에서, SVT의 가장 가능성 있는 위치는 위치 인덱스를 지시하는 이진 코드 내의 최소 개수의 비트로 할당된다.
제2 측면에 따른 방법의 제7 구현 형태 또는 제2 측면의 임의의 선행 구현 형태에서, 이산 사인 변환(DST) 알고리즘은 잔차 블록의 왼쪽 경계에 위치하는 SVT 수직(SVT-V) 유형 변환을 위해 프로세서에 의해 이용된다.
제2 측면에 따른 방법의 제8 구현 형태 또는 제2 측면의 임의의 선행 구현 형태에서, DST 알고리즘은 잔차 블록의 상부 경계에 위치하는 SVT 수평(SVT-H) 유형 변환을 위해 프로세서에 의해 선택된다.
제2 측면에 따른 방법의 제9 구현 형태 또는 제2 측면의 임의의 선행 구현 형태에서, DCT(Discrete Cosine Transform) 알고리즘은 잔차 블록의 오른쪽 경계에 위치하는 SVT-V 유형 변환을 위해 프로세서에 의해 선택된다.
제2 측면에 따른 방법의 제10 구현 형태 또는 제2 측면의 임의의 선행 구현 형태에서, DCT 알고리즘은 잔차 블록의 하부 경계에 위치하는 SVT-H 유형 변환을 위해 프로세서에 의해 선택된다.
제2 측면에 따른 방법의 제11 구현 형태 또는 제2 측면의 임의의 선행 구현 형태에서, 상기 방법은, 프로세서가, 잔차 블록과 관련된 코딩 단위의 우측 이웃이 인코딩되어 있고 코딩 단위의 좌측 이웃이 인코딩되어 있지 않을 때, 프로세서가, 잔차 블록을 변환된 잔차 블록으로 변환하는 단계에 앞서, 프로세서가, 잔차 블록 내의 샘플을 수평으로 플립하는 단계를 더 포함한다.
제3 측면은, 인코딩할 픽처를 수신하거나 또는 디코딩할 비트스트림을 수신하도록 구성된 수신기, 수신기에 커플링되고, 디코더에게 비트스트림을 전송하거나 또는 디코딩된 이미지를 디스플레이에게 전송하도록 구성된 송신기, 수신기 또는 송신기 중 적어도 하나에 커플링되고, 명령어를 저장하도록 구성된 메모리, 및 메모리에 커플링되고, 이전 측면 또는 구현의 임의의 방법을 수행하기 위해 메모리 내에 저장된 명령어를 실행하도록 구성된 프로세서를 포함하는 코딩 장치에 관한 것이다.
코딩 장치는 SVT의 코딩 효율의 증가를 용이하게 한다. 이와 관련하여, 변환 블록은 대응하는 잔차 블록에 대해 다양한 후보 위치에 위치한다. 이와 같이, 개시된 메커니즘은 후보 위치에 기반하여 변환 블록에 대해 서로 다른 변환을 이용한다.
이와 같은 제3 측면에 따른 장치의 제1 구현 형태에서, 장치는 이미지를 디스플레이하도록 구성된 디스플레이를 더 포함한다.
제4 측면은 인코더 및 인코더와 통신하는 디코더를 포함하는 시스템에 관한 것이다. 인코더 또는 디코더는 임의의 선행 측면 또는 구현의 임의의 코딩 장치를 포함한다.
이 시스템은 SVT의 코딩 효율의 증가를 용이하게 한다. 이와 관련하여, 변환 블록은 대응하는 잔차 블록에 대해 다양한 후보 위치에 위치한다. 이와 같이, 개시된 메커니즘은 후보 위치에 기반하여 변환 블록에 대해 서로 다른 변환을 이용한다.
제5 측면은 인코딩할 픽처를 수신하거나 또는 디코딩할 비트스트림을 수신하도록 구성된 수신 수단, 수신 수단에 커플링되고, 비트스트림을 디코더에게 전송하거나 또는 디코딩된 이미지를 디스플레이 수단에게 전송하도록 구성된 전송 수단, 수신 수단 또는 전송 수단 중 적어도 하나에 커플링되고, 명령어를 저장하도록 구성된 저장 수단, 및 저장 수단에 커플링되고, 선행하는 측면 또는 구현의 임의의 방법을 수행하기 위해 저장 수단 내에 저장된 명령어를 실행하도록 구성된 처리 수단을 포함하는 코딩 수단에 관한 것이다.
코딩 수단은 SVT의 코딩 효율의 증가를 용이하게 한다. 이와 관련하여, 변환 블록은 대응하는 잔차 블록에 대해 다양한 후보 위치에 위치한다. 이와 같이, 개시된 메커니즘은 후보 위치에 기반하여 변환 블록에 대해 서로 다른 변환을 이용한다.
명확성을 위해, 전술한 실시예 중 임의의 하나는 본 개시의 범위 내에서 새로운 실시예를 생성하기 위해 전술한 다른 실시예 중 임의의 하나 이상과 조합될 수 있다.
이들 특징 및 다른 특징은 첨부된 도면 및 청구 범위와 함께 결합된 다음의 상세한 설명으로부터 보다 명확하게 이해될 것이다.
본 개시의 보다 완전한 이해를 위해, 첨부 도면 및 상세한 설명과 관련하여 취해진 다음의 간단한 설명이 참조되고, 여기서 유사한 참조 번호는 유사한 부분을 나타낸다.
도 1은 공간 가변 변환(SVT) 변환을 활용할 수 있는 예시적인 코딩 시스템을 도시하는 블록도이다.
도 2는 공간적 SVT 변환을 활용할 수 있는 예시적인 비디오 인코더를 도시하는 블록도이다.
도 3은 공간적 SVT 변환을 활용할 수 있는 비디오 디코더의 예시를 도시하는 블록도이다.
도 4는 비디오 코딩에 이용되는 인트라 예측 모드의 개략도이다.
도 5는 비디오 코딩에서의 인트라 예측의 예시를 도시한다.
도 6은 예시적인 비디오 인코딩 메커니즘의 개략도이다.
도 7은 예시적인 SVT 변환을 도시한다.
도 8은 예시적인 SVT 변환을 도시한다.
도 9는 잔차 블록에 대한 예시적인 SVT 변환 후보 위치를 도시한다.
도 10은 잔차 블록에 대한 예시적인 SVT 변환 위치를 도시한다.
도 11은 잔차 샘플 수평 플리핑의 예시를 도시한다.
도 12는 위치 종속 SVT에 따른 비디오 디코딩의 예시적인 방법의 흐름도이다.
도 13은 비디오 코딩의 예시적인 방법의 흐름도이다.
도 14는 비디오 코딩의 예시적인 방법의 흐름도이다.
도 15는 비디오 코딩을 위한 예시적인 컴퓨팅 기기의 개략도이다.
도 16은 코딩 수단의 실시예의 개략도이다.
처음 이해되어야 할 것은, 하나 이상의 실시예의 예시적인 구현이 아래에 제공되지만, 개시된 시스템 및/또는 방법은 현재 알려져 있거나 존재하는지 여부에 관계없이 임의의 개수의 기술을 사용하여 구현될 수 있다는 것이다. 개시는 여기에 도시되고 설명된 예시적인 설계 및 구현을 포함하여, 아래에 도시된 예시적인 구현, 도면, 및 기술로 제한되지 않아야 하고, 등가물의 전체 범위와 함께 첨부된 청구항들의 범위 내에서 수정될 수 있다.
현재 고효율 비디오 코딩(High Efficiency Video Coding, HEVC)로 알려진 표준은 국제전기통신연합-전기통신표준화부문(International Telecommunication Union -Telecommunication Standardization Sector, ITU-T) 스터디 그룹에서의 비디오 코딩 전문가들의 JCT-VC(Joint Collaborative Team on Video Coding) 그룹 하에서 발전된 첨단 비디오 코딩 시스템이다.
HEVC 표준과 관련된 세부사항은 ITU-T Rec. H.265 및 국제 표준화 기구(International Organization for Standardization, ISO)/국제전기기술위원회(International Electrotechnical Commission, IEC) 23008-2 (2013), 고효율 비디오 코딩(High efficiency video coding), 2013년 1월 승인 최종 드래프트(final draft approval Jan. 2013)(ITU-T에 의해 2013년 6월에 그리고 ISO/IEC에서 2013년 11월에 공식 출파됨)에서 발견되고, 이는 여기에 참조로서 병합된다. HEVC의 오버뷰는 G. J. Sullivan, J.-R. Ohm, W.-J. Han, 및 T. Wiegand의, "Overview of the High Efficiency Video Coding (HEVC) Standard", IEEE Trans. Circuits and Systems for Video Technology, Vol. 22, No. 12, pp. 16491668, Dec. 2012에서 발견되고, 여기에 참조로서 병합된다.
도 1은 SVT 메커니즘을 사용하는 코딩과 같은 비디오 코딩 기술을 활용할 수 있는 예시적인 코딩 시스템(10)을 도시하는 블록도이다. 도 1에 도시된 대로, 코딩 시스템(10)은 목적지 기기(14)에 의해 나중에 디코딩될 인코딩된 비디오 데이터를 제공하는 소스 기기(12)를 포함한다. 특히, 소스 기기(12)는 컴퓨터가 판독 가능한 매체(16)를 거쳐 목적지 기기(14)에게 비디오 데이터를 제공할 수 있다. 소스 기기(12) 및 목적지 기기(14)는 데스크톱 컴퓨터, 또는 노트북(예를 들어, 랩톱) 컴퓨터, 또는 태블릿 컴퓨터, 또는 셋톱 박스, 또는 소위 "스마트" 전화, "스마트" 패드와 같은 전화 핸드셋, 또는 텔레비전, 또는 카메라, 또는 디스플레이 기기, 또는 디지털 미디어 플레이어, 또는 비디오 게임 콘솔, 또는 비디오 스트리밍 기기 등을 포함하는, 임의의 광범위한 기기를 포함할 수 있다 일부 경우, 소스 기기(12) 및 목적지 기기(14)는 무선 통신을 위해 장착될 수 있다.
목적지 기기(14)는 컴퓨터가 판독 가능한 매체(16)를 거쳐 디코딩될 인코딩된 비디오 데이터를 수신할 수 있다. 컴퓨터가 판독 가능한 매체(16)는 인코딩된 비디오 데이터를 소스 기기(12)로부터 목적지 기기(14)로 이동시킬 수 있는 임의의 유형의 매체 또는 기기를 포함할 수 있다. 한 예시에서, 컴퓨터가 판독 가능한 매체(16)는 소스 기기(12)로 하여금 인코딩된 비디오 데이터를 목적지 기기(14)에게 실시간으로 직접 전송할 수 있도록 하는 통신 매체를 포함할 수 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조될 수 있고, 목적지 기기(14)에게 전송될 수 있다. 통신 매체는 무선 주파수(RF) 스펙트럼 또는 하나 이상의 물리적 전송 회선과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수 있다. 통신 매체는 로컬 영역 네트워크, 또는 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은, 패킷 기반 네트워크의 일부분을 형성할 수 있다. 통신 매체는 라우터, 또는 스위치, 또는 기지국, 또는 소스 기기(12)로부터 목적지 기기(14)로의 통신을 용이하게 하는 데 유용할 수 있는 임의의 다른 장비를 포함할 수 있다.
일부 예시에서, 인코딩된 데이터는 출력 인터페이스(22)로부터 저장 기기로 출력될 수 있다. 유사하게, 인코딩된 데이터는 입력 인터페이스에 의해 저장 기기로부터 액세스될 수 있다. 저장 기기는 하드 드라이브, 또는 블루레이(Blu-ray) 디스크, 또는 디지털 비디오 디스크(DVD), 또는 CD-ROM(Compact Disc Read-Only Memories), 또는 플래시 메모리, 또는 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 기타 적절한 디지털 저장 매체와 같은 다양한 분산 또는 로컬 액세스 데이터 저장 매체를 포함할 수 있다. 추가 예시에서, 저장 기기는 소스 기기(12)에 의해 생성된 인코딩된 비디오를 저장할 수 있는 파일 서버 또는 다른 중간 저장 기기에 대응할 수 있다. 목적지 기기(14)는 스트리밍 또는 다운로드를 거쳐 저장 기기로부터 저장된 비디오 데이터에 액세스할 수 있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 그 인코딩된 비디오 데이터를 목적지 기기(14)에게 전송할 수 있는 임의의 유형의 서버일 수 있다. 파일 서버의 예시는 웹 서버(예를 들어, 웹 사이트 용), 또는 파일 전송 프로토콜(file transfer protocol, FTP) 서버, 또는 NAS(Network Attached Storage) 기기, 또는 로컬 디스크 드라이브를 포함한다. 목적지 기기(14)는 인터넷 연결을 포함하는, 임의의 표준 데이터 연결을 통해 인코딩된 비디오 데이터에 액세스할 수 있다. 이는 무선 채널(예를 들어, Wi-Fi 연결), 또는 유선 연결(예를 들어, 디지털 가입자 회선(DSL), 케이블 모뎀 등), 또는 파일 서버 상에 저장된 인코딩된 비디오 데이터에 액세스하는 데 적합한 둘의 조합을 포함할 수 있다. 저장 기기로부터의 인코딩된 비디오 데이터의 전송은 스트리밍 전송, 또는 다운로드 전송, 또는 이들의 조합일 수 있다.
본 개시의 기술은 반드시 무선 애플리케이션 또는 설정으로 제한되는 것은 아니다. 상기 기술은 공중파 텔레비전 방송, 또는 케이블 텔레비전 전송, 또는 위성 텔레비전 전송, HTTP를 통한 동적 적응 스트리밍(dynamic adaptive streaming over HTTP, DASH) 과 같은 인터넷 스트리밍 비디오 전송, 또는 데이터 저장 매체 상에서 인코딩된 디지털 비디오, 또는 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션과 같은 다양한 멀티미디어 애플리케이션을 지원하는 비디오 코딩에 적용될 수 있다. 일부 예시에서, 코딩 시스템(10)은 비디오 스트리밍, 비디오 플레이백(playback), 비디오 방송, 및/또는 비디오 전화와 같은 애플리케이션을 지원하기 위해 단방향 또는 양방향 비디오 전송을 지원하도록 구성될 수 있다.
도 1의 예시에서, 소스 기기(12)는 비디오 소스(18), 비디오 인코더(20), 및 출력 인터페이스(22)를 포함한다. 목적지 기기(14)는 입력 인터페이스(28), 비디오 디코더(30), 및 디스플레이 기기(32)를 포함한다. 본 개시에 따르면, 소스 기기(12)의 비디오 인코더(20) 및/또는 목적지 기기(14)의 비디오 디코더(30)는 비디오 코딩을 위한 기술을 적용하도록 구성될 수 있다. 다른 예시에서, 소스 기기 및 목적지 기기는 다른 구성 요소 또는 배열을 포함할 수 있다. 예를 들어, 소스 기기(12)는 외부 카메라와 같은 외부 비디오 소스로부터 비디오 데이터를 수신할 수 있다. 마찬가지로, 목적지 기기(14)는 통합 디스플레이 기기를 포함하는 대신, 외부 디스플레이 기기와 인터페이싱할 수 있다.
도 1의 예시된 코딩 시스템(10)은 단지 하나의 예시이다. 비디오 코딩을 위한 기술은 임의의 디지털 비디오 인코딩 및/또는 디코딩 기기에 의해 수행될 수 있다. 본 개시의 기술은 일반적으로 비디오 코딩 기기에 의해 수행되지만, 기술은 일반적으로 "CODEC"로 지칭되는 비디오 인코더/디코더에 의해 수행될 수도 있다. 더욱이, 본 개시의 기술은 또한 비디오 전처리기(preprocessor)에 의해 수행될 수 있다. 비디오 인코더 및/또는 디코더는 그래픽 처리 기기(GPU) 또는 유사한 기기일 수 있다.
소스 기기(12) 및 목적지 기기(14)는 소스 기기(12)가 목적지 기기(14)로의 전송을 위해 코딩된 비디오 데이터를 생성하는 그러한 코딩 기기의 예시일 뿐이다. 일부 예시에서, 소스 기기(12) 및 목적지 기기(14)는 소스 기기 및 목적지 기기(12, 14) 각각이 비디오 인코딩 및 디코딩 구성 요소를 포함하는 것과 같은, 실질적 대칭 방식(symmetrical manner)으로 동작할 수 있다. 따라서, 코딩 시스템(10)은, 예를 들어, 비디오 스트리밍, 또는 비디오 플레이백, 또는 비디오 방송, 또는 비디오 전화를 위해, 비디오 기기(12, 14) 사이의 단방향 또는 양방향 비디오 전송을 지원할 수 있다.
소스 기기(12)의 비디오 소스(18)는, 비디오 카메라와 같은, 비디오 캡처 기기, 이전에 캡처된 비디오를 수용하는 비디오 아카이브(video archive), 및/또는 비디오 콘텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스(feed interface)를 포함할 수 있다. 추가 대안으로서, 비디오 소스(18)는 소스 비디오로서 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터 생성 비디오의 조합으로서 컴퓨터 그래픽 기반 데이터를 생성할 수 있다.
일부 경우에, 비디오 소스(18)가 비디오 카메라일 때, 소스 기기(12) 및 목적지 기기(14)는 소위 카메라 폰 또는 비디오 폰을 형성할 수 있다. 위에서 언급된 대로, 하지만, 본 개시에서 설명된 기술은 일반적으로 비디오 코딩에 적용될 수 있고, 무선 및/또는 유선 애플리케이션에 적용될 수 있다. 각각의 경우에, 캡처된, 또는 사전 캡처된, 또는 컴퓨터에 의해 생성된 비디오는 비디오 인코더(20)에 의해 인코딩될 수 있다. 인코딩된 비디오 정보는 출력 인터페이스(22)에 의해 컴퓨터가 판독 가능한 매체(16) 상으로 출력될 수 있다.
컴퓨터가 판독 가능한 매체(16)는, 무선 방송 또는 유선 네트워크 전송과 같은, 일시적 매체(transient media), 또는 하드 디스크, 또는 플래시 드라이브, 또는 콤팩트 디스크, 또는 디지털 비디오 디스크, 또는 블루레이(Blu-ray) 디스크, 또는 기타 컴퓨터가 판독 가능한 매체와 같은, 저장 매체(즉, 비일시적 저장 매체)를 포함할 수 있다. 일부 예시에서, 네트워크 서버(도시되지 않음)는 소스 기기(12)로부터 인코딩된 비디오 데이터를 수신하고 인코딩된 비디오 데이터를, 예를 들어, 네트워크 전송을 거쳐, 목적지 기기(14)에게 제공할 수 있다. 유사하게, 디스크 스탬핑 설비(disc stamping facility)와 같은 매체 생산 설비의 컴퓨팅 기기는 소스 기기(12)로부터 인코딩된 비디오 데이터를 수신하고 인코딩된 비디오 데이터를 수용하는 디스크를 생산할 수 있다. 그러므로, 컴퓨터가 판독 가능한 매체(16)는, 다양한 예시에서, 다양한 형태의 하나 이상의 컴퓨터가 판독 가능한 매체를 포함하는 것으로 이해될 수 있다.
목적지 기기(14)의 입력 인터페이스(28)는 컴퓨터가 판독 가능한 매체(16)로부터 정보를 수신한다. 컴퓨터가 판독 가능한 매체(16)의 정보는, 비디오 디코더(30)에 의해 또한 사용되는, 블록 및 기타 코딩된 유닛, 예를 들어, 픽처의 그룹(group of pictures, GOPs)의 처리 및/또는 특성을 설명하는 신택스 요소(syntax element)를 포함하는, 비디오 인코더(20)에 의해 정의된 신택스 정보를 포함할 수 있다. 디스플레이 기기(32)는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 음극선 관(cathode ray tube, CRT), 또는 액정 디스플레이(liquid crystal display, LCD), 또는 플라즈마 디스플레이, 또는 유기 발광 다이오드(organic light emitting diode, OLED) 디스플레이, 또는 다른 유형의 디스플레이 기기와 같은 임의의 다양한 디스플레이 기기를 포함할 수 있다.
비디오 인코더(20) 및 비디오 디코더(30)는 현재 개발 중인 고효율 비디오 코딩(High Efficiency Video Coding, HEVC) 표준과 같은, 비디오 코딩 표준에 따라 동작할 수 있고, HEVC 테스트 모델(Test Model, HM)을 준수할 수 있다. 대안으로, 비디오 인코더(20) 및 비디오 디코더(30)는, 대안적으로 MPEG(Motion Picture Expert Group)-4 Part 10으로 지칭되는, ITU-T(International Telecommunications Union Telecommunication Standardization Sector) H.264 표준, 또는 AVC(Advanced Video Coding), 또는 H.265/HEVC, 또는 이러한 표준의 확장과 같은 기타 사설(proprietary) 또는 산업 표준에 따라 동작할 수 있다. 그러나, 본 개시의 기술은 임의의 특정 코딩 표준으로 한정되지 않는다. 비디오 코딩 표준의 다른 예시는 MPEG-2 및 ITU-T H.263를 포함한다. 도 1에 도시되어 있지는 않지만, 일부 측면에서, 비디오 인코더(20) 및 비디오 디코더(30)는 각각 오디오 인코더 및 디코더와 통합될 수 있고, 공통 데이터 스트림 또는 개별 데이터 스트림 내의 비디오 및 오디오 양쪽의 인코딩을 처리하기 위한, 적절한 다중화기-역다중화기(multiplexer-demultiplexer, MUX-DEMUX)부, 또는 다른 하드웨어 및 소프트웨어를 포함할 수 있다. 해당된다면, MUX-DEMUX부는 ITU H.223 다중화기 프로토콜, 또는 사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)와 같은 기타 프로토콜을 준수할 수 있다.
비디오 인코더(20) 및 비디오 디코더(30)는 각각, 하나 이상의 마이크로 프로세서, 또는 디지털 신호 프로세서(digital signal processor, DSP), 또는 주문형 집적 회로(application specific integrated circuit, ASIC), 또는 필드 프로그래밍 가능 게이트 어레이(field programming gate array, FPGA), 또는 분산 로직, 또는 소프트웨어, 또는 하드웨어, 또는 펌웨어, 또는 이들의 조합과 같은, 임의의 다양한 적절한 인코더 회로로 구현될 수 있다. 기술이 소프트웨어 내에서 부분적으로 구현될 때, 기기는, 적절한, 비일시적 컴퓨터가 판독 가능한 매체 내에 소프트웨어를 위한 명령을 저장할 수 있고 본 개시의 기술을 수행하기 위해 하나 이상의 프로세서를 사용하여 하드웨어 내에서 명령을 실행할 수 있다. 비디오 인코더(20) 및 비디오 디코더(30) 각각은 하나 이상의 인코더 또는 디코더 내에 포함될 수 있고, 이들 중 어느 하나는 각각의 기기 내의 결합된 인코더/디코더(CODEC)의 일부로서 통합될 수 있다. 비디오 인코더(20) 및/또는 비디오 디코더(30)를 포함하는 기기는, 집적 회로, 마이크로 프로세서, 및/또는 셀룰러 전화와 같은 무선 통신 기기를 포함할 수 있다.
도 2는 비디오 코딩 기술을 구현할 수 있는 비디오 인코더(20)의 예시를 도시하는 블록도이다. 비디오 인코더(20)는 비디오 슬라이스 이내의 비디오 블록의 인트라 코딩(intra-coding) 및 인터 코딩(inter-coding)을 수행할 수 있다. 인트라 코딩은 주어진 비디오 프레임 또는 픽처 내의 비디오에서 공간 중복(spatial redundancy)을 줄이거나 또는 제거하기 위해 공간 예측(spatial prediction)에 의존한다. 인터 코딩은 인접한 프레임 또는 비디오 시퀀스의 픽처 내의 비디오에서 시간 중복(time redundancy)을 줄이거나 또는 제거하기 위해 시간 예측(temporal prediction)에 의존한다. 인트라 모드(I 모드)는 임의의 여러 공간 기반 코딩 모드(spatial based coding mode)를 지칭할 수 있다. 단방향(단일 예측(uni prediction)으로도 알려져 있음) 예측(P 모드) 또는 양방향 예측(양방향 예측(bi prediction)으로도 알려져 있음)(B 모드)과 같은 인터 모드는 임의의 여러 시간 기반 코딩 모드(temporal-based coding mode)를 지칭할 수 있다.
도 2에 도시된 대로, 비디오 인코더(20)는 인코딩될 비디오 프레임 이내의 현재 비디오 블록을 수신한다. 도 2의 예시에서, 비디오 인코더(20)는 모드 선택부(mode select unit)(40), 기준 프레임 메모리(reference frame memory)(64), 합산기(summer)(50), 변환 처리부(transform processing unit)(52), 양자화부(quantization unit)(54), 엔트로피 코딩부(entropy coding unit)(56)를 포함한다. 모드 선택부(40)는 움직임 보상부(motion compensation unit)(44), 움직임 추정부(motion estimation unit)(42), 인트라 예측(intra-prediction)(내적 예측(intra prediction)으로도 알려져 있음)부(46), 및 분할부(48)를 포함한다. 비디오 블록 재구성을 위해, 비디오 인코더(20)는 또한 역양자화부(inverse quantization unit)(58), 역변환부(inverse transform unit)(60), 및 합산기(62)를 포함한다. 디블록킹 필터(deblocking filter)(도 2에 도시되지 않음)가 재구성된 비디오로부터 블록성 아티팩트(blockiness artifact)를 제거하기 위해 블록 경계(block boundary)를 필터링하기 위해 또한 포함될 수 있다. 원한다면, 디블로킹 필터는 일반적으로 합산기(62)의 출력을 필터링한다. 추가 필터(additional filter)(루프(loop) 또는 포스트 루프(post loop))가 디블로킹 필터와 함께 사용될 수도 있다. 이러한 필터는 간결함을 위해 도시되지 않았지만, 원한다면, 합산기(50)의 출력을 필터링할 수 있다(인-루프(in-loop) 필터로서).
인코딩 프로세스 동안, 비디오 인코더(20)는 코딩될 비디오 프레임 또는 슬라이스를 수신한다. 프레임 또는 슬라이스는 다수의 비디오 블록으로 나눠질 수 있다. 움직임 추정부(42) 및 움직임 보상부(44)는 시간 예측을 제공하기 위해 하나 이상의 기준 프레임 내의 하나 이상의 블록에 대해 수신된 비디오 블록의 인터-예측 코딩을 수행한다. 인트라 예측부(46)는 대안으로, 공간 예측을 제공하기 위해 코딩될 블록과 동일한 프레임 또는 슬라이스 내의 하나 이상의 이웃 블록에 대해 수신된 비디오 블록의 인트라 예측 코딩을 수행할 수 있다. 비디오 인코더(20)는, 예를 들어, 비디오 데이터의 각 블록에 대해 적절한 코딩 모드를 선택하기 위해, 다중 코딩 패스(multiple coding passes)를 수행할 수 있다.
더욱이, 분할부(48)는 이전 코딩 패스 내의 이전 분할 방식의 평가에 기반하여, 비디오 데이터의 블록을 서브 블록으로 분할할 수 있다. 예를 들어, 분할부(48)는 최초에, 프레임 또는 슬라이스를 최대 코딩 단위(largest coding unit, LCU)로 분할하고, 레이트 왜곡 분석(rate-distortion analysis)(예를 들어, 레이트 왜곡 최적화(rate-distortion optimization))에 기반하여 각각의 LCU를 서브-코딩 단위(sub-CU)로 분할할 수 있다. 모드 선택부(40)는 LCU를 서브-CU로 분할하는 것을 지시하는 쿼드 트리(quad-tree) 데이터 구조를 또한 생산할 수 있다. 쿼드 트리의 리프 노드(leaf node) CU는 하나 이상의 예측 단위(prediction unit, PU) 및 하나 이상의 변환 단위(transform unit, TU)를 포함할 수 있다.
본 개시는 HEVC의 컨텍스트 내의 CU, 또는 PU, 또는 TU 중 임의의 것, 또는 다른 표준의 컨텍스트 내의 유사한 데이터 구조(예를 들어, H. 264/AVC 내의 매크로블록 및 그들의 서브 블록)를 지칭하기 위해 용어 "블록"을 사용한다. CU는 코딩 노드, PU, 및 코딩 노드와 관련된 TU를 포함한다. CU의 크기는 코딩 노드의 크기에 대응하고 정사각(square) 모양이다. CU의 크기는 8x8 픽셀에서 최대 64x64 픽셀 이상의 트리 블록 크기까지의 범위일 수 있다. 각 CU는 하나 이상의 PU 및 하나 이상의 TU를 수용할 수 있다. CU와 관련된 신택스 데이터는, 예를 들어, CU를 하나 이상의 PU로 분할하는 것을 설명할 수 있다. 분할 모드는 CU가 스킵 또는 직접 모드(skip or direct mode) 인코딩되는지, 또는 인트라 예측 모드(intra-prediction mode) 인코딩되는지, 또는 인터 예측(inter-prediction) 모드 인코딩되는지 여부들 사이에서 서로 다를 수 있다. PU는 비 정사각 모양으로 분할될 수 있다. CU와 관련된 신택스 데이터는 또한, 예를 들어, 쿼드 트리에 따라 CU를 하나 이상의 TU로 분할하는 것을 설명할 수 있다. TU는 정사각 모양 또는 비 정사각(예를 들어, 직사각형) 모양일 수 있다.
모드 선택부(40)는, 예를 들어, 오류 결과에 기반하여, 인트라 또는 인터, 코딩 모드 중 하나를 선택할 수 있고, 잔차 블록(residual block) 데이터를 생성하기 위해 합산기(50)에게 그리고 기준 프레임으로서 사용하기 위한 인코딩된 데이터를 재구성하기 위해 합산기(62)에게 결과 인트라 코딩된 블록 또는 인터 코딩된 블록을 제공한다. 모드 선택부(40)는 또한 움직임 벡터, 인트라 모드 지시자(indicator), 분할 정보, 및 기타 그러한 신택스 정보와 같은 신택스 요소를, 엔트로피 코딩부(56)에게 제공한다.
움직임 추정부(42) 및 움직임 보상부(44)는 통합될 가능성이 높지만, 개념적 목적을 위해 별도로 도시된다. 움직임 추정부(42)에 의해 수행되는 움직임 추정은, 비디오 블록에 대한 움직임을 추정하는, 움직임 벡터를 생성하는 프로세스이다. 움직임 벡터는, 예를 들어, 현재 비디오 프레임 이내의 비디오 블록의 PU의 변위 또는 현재 프레임(또는 다른 코딩된 단위) 이내에서 코딩될 현재 블록에 대한 기준 프레임(또는 다른 코딩된 단위) 이내의 예측 블록에 대한 픽처를 지시할 수 있다. 예측 블록은 절대 차이의 합(sum of absolute difference, SAD), 또는 제곱 차이의 합(sum of square difference, SSD), 또는 다른 차이 메트릭(difference metric)에 의해 결정될 수 있는, 픽셀 차이 측면에서의, 코딩될 블록과 밀접하게 매칭하는 것으로 알려진 블록이다. 일부 예시에서, 비디오 인코더(20)는 기준 프레임 메모리(64) 내에 저장된 기준 픽처의 서브 정수 픽셀 위치(sub-integer pixel position)에 대한 값을 계산할 수 있다. 예를 들어, 비디오 인코더(20)는 1/4 픽셀 위치, 또는 1/8 픽셀 위치, 또는 기준 픽처의 다른 분수 픽셀 위치의 값을 보간할 수 있다. 그러므로, 움직임 추정부(42)는 전체 픽셀 위치(full pixel position) 및 부분 픽셀 위치(fractional pixel position)에 대한 움직임 검색(motion search)을 수행하고 분수 픽셀 정밀도(fractional pixel precision)로 움직임 벡터를 출력할 수 있다.
움직임 추정부(42)는 PU의 위치를 기준 픽처의 예측 블록의 위치와 비교함으로써 인터 코딩된 슬라이스 내의 비디오 블록의 PU에 대한 움직임 벡터를 계산한다. 기준 픽처는 제1 기준 픽처 목록(List 0) 또는 제2 기준 픽처 목록(List 1)로부터 선택될 수 있고, 각각은 기준 프레임 메모리(64) 내에 저장된 하나 이상의 기준 픽처를 식별할 수 있다. 움직임 추정부(42)는 계산된 움직임 벡터를 엔트로피 인코딩부(56) 및 움직임 보상부(44)에게 송신한다.
움직임 보상부(44)에 의해 수행되는, 움직임 보상은 움직임 추정부(42)에 의해 결정된 움직임 벡터에 기반하여 예측 블록을 가져오거나(fetching) 또는 생성하는 것을 내포할 수 있다. 다시, 움직임 추정부(42) 및 움직임 보상부(44)는 일부 예시에서, 기능적으로 통합될 수 있다. 현재 비디오 블록의 PU에 대한 움직임 벡터를 수신하면, 움직임 보상부(44)는 기준 픽처 목록 중 하나에서 움직임 벡터가 가리키는 예측 블록을 찾아낼 수 있다. 합산기(50)는 아래에서 논의되는 대로, 픽셀 차이 값을 형성하는, 코딩될 현재 비디오 블록의 픽셀 값으로부터 예측 블록의 픽셀 값을 차감함으로써 잔차 비디오 블록을 형성한다. 일반적으로, 움직임 추정부(42)는 루마 성분(luma component)에 대한 움직임 추정을 수행하고, 움직임 보상부(44)는 크로마 성분(chroma component) 및 루마 성분(luma component) 모두에 대한 루마 성분에 기반하여 계산된 움직임 벡터를 사용한다. 모드 선택부(40)는 또한 비디오 슬라이스의 비디오 블록을 디코딩하는 데 있어서 비디오 디코더(30)에 의한 사용을 위해 비디오 블록 및 비디오 슬라이스와 관련된 신택스 요소를 생성할 수 있다.
인트라 예측부(46)는 위에서 설명한 대로, 움직임 추정부(42) 및 움직임 보상부(44)에 의해 수행되는 인터-예측에 대한 대안으로서, 현재 블록을 인트라 예측할 수 있다. 특히, 인트라 예측부(46)는 현재 블록을 인코딩하기 위해 사용할 인트라 예측 모드를 결정할 수 있다. 일부 예시에서, 인트라 예측부(46)는, 예를 들어, 개별 인코딩 패스 동안, 다양한 인트라 예측 모드를 사용하여 현재 블록을 인코딩할 수 있고, 인트라 예측부(46)(또는 일부 예시에서 모드 선택부(40))는 테스트된 모드로부터 사용할 적절한 인트라 예측 모드를 선택할 수 있다.
예를 들어, 인트라 예측부(46)는 테스트된 다양한 인트라 예측 모드에 대한 레이트 왜곡 분석을 사용하여 레이트 왜곡 값을 계산할 수 있고, 테스트된 모드 중에서 가장 좋은 레이트 왜곡 특성을 갖는 인트라 예측 모드를 선택할 수 있다. 레이트 왜곡 분석은 일반적으로 인코딩된 블록을 생산하기 위해 사용되는 비트레이트(즉, 비트의 개수)뿐만 아니라, 인코딩된 블록 및 인코딩된 블록을 생산하기 위해 인코딩된 원래의, 인코딩되지 않은 블록 사이의 왜곡(또는 오류)의 양을 결정한다. 인트라 예측부(46)는 어떤 인트라 예측 모드가 블록에 대해 최상의 레이트-왜곡 값을 나타내는지 여부를 결정하기 위해 다양한 인코딩된 블록에 대한 왜곡 및 레이트로부터 비율을 계산할 수 있다.
게다가, 인트라 예측부(46)는 깊이 모델링 모드(depth modeling mode, DMM)를 사용하여 깊이 맵(depth map)의 깊이 블록을 코딩하도록 구성될 수 있다. 모드 선택부(40)는 사용 가능한 DMM 모드가, 예를 들어, 레이트 왜곡 최적화(rate-distortion optimization, RDO)를 사용하여, 인트라 예측 모드 및 다른 DMM 모드보다 더 나은 코딩 결과를 생산하는지 여부를 결정할 수 있다. 깊이 맵에 대응하는 텍스처 이미지에 대한 데이터는 기준 프레임 메모리(64) 내에 저장될 수 있다. 움직임 추정부(42) 및 움직임 보상부(44)는 또한 깊이 맵의 깊이 블록을 인터 예측하도록 구성될 수 있다.
블록에 대한 인트라 예측 모드(예를 들어, DMM 모드 중 하나 또는 종래의 인트라 예측 모드)를 선택한 후, 인트라 예측부(46)는 블록에 대한 선택된 인트라 예측 모드를 지시하는 정보를 엔트로피 코딩부(56)에게 제공할 수 있다. 엔트로피 코딩부(56)는 선택된 인트라 예측 모드를 지시하는 정보를 인코딩할 수 있다. 비디오 인코더(20)는, 복수의 인트라 예측 모드 인덱스 테이블 및 복수의 수정된 인트라 예측 모드 인덱스 테이블(코드워드 매핑 테이블이라고도 함), 다양한 블록에 대한 인코딩 컨텍스트의 정의, 및 가장 가능성 있는(most probable) 인트라 예측 모드의 지시를 포함할 수 있는, 전송된 비트스트림 구성 데이터 내에, 컨텍스트 각각에 대해 사용하기 위해, 인트라 예측 모드 인덱스 테이블 및 수정된 인트라 예측 모드 인덱스 테이블을 포함할 수 있다.
비디오 인코더(20)는 코딩될 원본 비디오 블록에서 모드 선택부(40)로부터 예측 데이터를 감산함으로써 잔차 비디오 블록을 형성한다. 합산기(50)는 이 감산 연산을 수행하는 구성 요소를 나타낸다.
변환 처리부(52)는, 잔차 블록에, 이산 코사인 변환(discrete cosine transform, DCT) 또는 개념적으로 유사한 변환과 같은, 잔차 변환 계수 값을 포함하는 비디오 블록을 생성하는 변환을 적용한다. 변환 처리부(52)는 개념적으로 DCT와 유사한 다른 변환을 수행할 수 있다. 웨이블릿 변환(wavelet transform), 또는 정수 변환(integer transform), 또는 서브밴드 변환(sub-band transform), 또는 기타 유형의 변환도 사용될 수 있다.
변환 처리부(52)는 잔차 변환 계수의 블록을 생성하는 변환을 잔차 블록에 적용한다. 변환은 잔차 정보를 픽셀 값 도메인으로부터 주파수 도메인과 같은 변환 도메인으로 변환할 수 있다. 변환 처리부(52)는 결과 변환 계수를 양자화부(54)에 송신할 수 있다. 양자화부(54)는 비트율을 더 감소시키기 위해 변환 계수를 양자화한다. 양자화 프로세스는 계수의 일부 또는 전부와 관련된 비트 깊이를 감소시킬 수 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수 있다. 일부 예시에서, 양자화부(54)는 이후 양자화된 변환 계수를 포함하는 행렬의 스캔을 수행할 수 있다. 대안으로, 엔트로피 인코딩부(56)가 상기 스캔을 수행할 수 있다.
양자화에 이어서, 엔트로피 코딩부(56)는 양자화된 변환 계수를 엔트로피 코딩한다. 예를 들어, 엔트로피 코딩부(56)는 컨텍스트 적응 가변 길이 코딩(context adaptive variable length coding, CAVLC), 또는 컨텍스트 적응 이진 산술 코딩(context adaptive binary arithmetic coding, CABAC), 또는 신택스 기반 컨텍스트 적응 이진 산술 코딩(syntax-based context-adaptive binary arithmetic coding, SBAC), 또는 확률 간격 분할 엔트로피(probability interval partitioning entropy, PIPE) 코딩, 또는 다른 엔트로피 코딩 기술을 수행할 수 있다. 컨텍스트 기반 엔트로피 코딩의 경우, 컨텍스트는 이웃 블록에 기반할 수 있다. 엔트로피 코딩부(56)에 의한 엔트로피 코딩에 이어서, 인코딩된 비트스트림은 다른 기기(예를 들어, 비디오 디코더(30))에게 전송되거나 또는 이후 전송 또는 복구(retrieval)를 위해 보관될 수 있다.
역양자화부(58) 및 역변환부(60)는 각각, 예를 들어, 기준 블록으로서의 이후 사용을 위해, 픽셀 도메인 내의 잔차 블록을 재구성하기 위해, 역양자화 및 역변환을 적용한다. 움직임 보상부(44)는 기준 프레임 메모리(64)의 프레임들 중 하나의 예측 블록에 잔차 블록을 부가함으로써 기준 블록을 계산할 수 있다. 움직임 보상부(44)는 또한 움직임 추정에의 사용을 위한 서브 정수 픽셀 값을 계산하기 위해 하나 이상의 보간 필터(interpolation filter)를 재구성된 잔차 블록에 적용할 수 있다. 합산기(62)는 기준 프레임 메모리(64) 내을 저장을 위한 재구성된 비디오 블록을 생산하기 위해 움직임 보상부(44)에 의해 생산된 움직임 보상된 예측 블록에 재구성된 잔차 블록을 부가한다. 재구성된 비디오 블록은 이어지는 비디오 프레임 내의 블록을 인터 코딩하기 위한 기준 블록으로서 움직임 추정부(42) 및 움직임 보상부(44)에 의해 사용될 수 있다.
도 3은 비디오 코딩 기술을 구현할 수 있는 비디오 디코더(30)의 예시를 도시하는 블록도이다. 도 3의 예시에서, 비디오 디코더(30)는 엔트로피 디코딩부(entropy decoding unit)(70), 움직임 보상부(motion compensation unit)(72), 인트라 예측부(intra-prediction unit)(74), 역양자화부(76), 역변환부(78), 기준 프레임 메모리(82), 및 합산기(80)을 포함한다. 비디오 디코더(30)는, 일부 예시에서, 비디오 인코더(20)(도 2)에 대해 설명된 인코딩 패스에 일반적으로 역(reciprocal)인 디코딩 패스를 수행할 수 있다. 움직임 보상부(72)는 엔트로피 디코딩부(70)로부터 수신된 움직임 벡터에 기반하여 예측 데이터를 생성할 수 있는 반면, 인트라 예측부(74)는 엔트로피 디코딩부(70)로부터 수신된 인트라 예측 모드 지시자(intra-prediction mode indicator)에 기반하여 예측 데이터를 생성할 수 있다.
디코딩 프로세스 동안, 비디오 디코더(30)는 비디오 인코더(20)로부터의 인코딩된 비디오 슬라이스 및 관련된 신택스 요소의 비디오 블록을 나타내는, 인코딩된 비디오 비트스트림을 수신한다. 비디오 디코더(30)의 엔트로피 디코딩부(70)는 양자화된 계수, 움직임 벡터 또는 인트라 예측 모드 지시자, 및 다른 신택스 요소를 생성하기 위해 비트스트림을 엔트로피 디코딩한다. 엔트로피 디코딩부(70)는 움직임 벡터 및 다른 신택스 요소를 움직임 보상부(72)에게 전달한다. 비디오 디코더(30)는 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 신택스 요소를 수신할 수 있다.
비디오 슬라이스가 인트라 코딩된(I) 슬라이스로 코딩될 때, 인트라 예측부(74)는 시그널링된 인트라 예측 모드 및 현재 프레임 또는 픽터의 이전에 디코딩된 블록으로부터의 데이터에 기반하여 현재 비디오 슬라이스의 비디오 블록에 대한 예측 데이터를 생성할 수 있다. 비디오 프레임이 인터 코딩된(예를 들어, B, 또는 P, 또는 GPB) 슬라이스로서 코딩될 때, 움직임 보상부(72)는 움직임 벡터 및 엔트로피 디코딩부(70)로부터 수신된 다른 신택스 요소에 기반하여 현재 비디오 슬라이스의 비디오 블록에 대한 예측 블록을 생산한다. 예측 블록은 기준 픽처 목록 중 하나 내의 기준 픽처 중 하나로부터 생산될 수 있다. 비디오 디코더(30)는 기준 프레임 메모리(82) 내에 저장된 기준 픽처에 기반하여 기본 구성 기술(default construction technique)을 사용하여 기준 프레임 목록, 목록 0, 및 목록 1을 구성할 수 있다.
움직임 보상부(72)는 움직임 벡터 및 다른 신택스 요소를 파싱함으로써 현재 비디오 슬라이스의 비디오 블록에 대한 예측 정보를 결정하고, 디코딩될 현재 비디오 블록에 대한 예측 블록을 생산하기 위해 예측 정보를 사용한다. 예를 들어, 움직임 보상부(72)는 비디오 슬라이스의 비디오 블록을 코딩하기 위해 사용되는 예측 모드(예를 들어, 인트라 또는 인터-예측), 인터 예측 슬라이스 유형(B 슬라이스, 또는 P 슬라이스, 또는 GPB 슬라이스), 슬라이스에 대한 기준 픽처 목록 중 하나 이상에 대한 구성 정보, 슬라이스의 각 인터-인코딩된 비디오 블록에 대한 움직임 벡터, 슬라이스의 각 인터-코딩된 비디오 블록에 대한 인터-예측 상태, 및 현재 비디오 슬라이스 내의 비디오 블록을 디코딩하기 위한 기타 정보를 결정하기 위해 수신된 신택스 요소 중 일부를 사용한다.
움직임 보상부(72)는 또한 보간 필터에 기반하여 보간을 수행할 수 있다. 움직임 보상부(72)는 기준 블록의 서브 정수 픽셀에 대한 보간된 값을 계산하기 위한 비디오 블록의 인코딩 동안 비디오 인코더(20)에 의해 사용되는 보간 필터를 사용할 수 있다. 이 경우, 움직임 보상부(72)는 수신된 신택스 요소로부터 비디오 인코더(20)에 의해 사용되는 보간 필터를 결정하고 예측 블록을 생산하기 위해 보간 필터를 사용할 수 있다.
깊이 맵에 대응하는 텍스처 이미지(texture image)에 대한 데이터는 기준 프레임 메모리(82) 내에 저장될 수 있다. 움직임 보상부(72)는 또한 깊이 맵의 깊이 블록을 인터-예측하도록 구성될 수 있다.
여기 개시된 것은 SVT의 코딩 효율을 높이기 위한 다양한 메커니즘이다. 위에서 언급된 대로, 변환 블록은 대응하는 잔차 블록에 대한 다양한 후보 위치에 위치할 수 있다. 개시된 메커니즘은 후보 위치에 기반하여 변환 블록에 대해 서로 다른 변환을 이용한다. 예를 들어, 역 이산 사인 변환(Discrete Sine Transform, DST)이 잔차 블록의 하부 오른쪽(bottom-right) 모서리를 커버하는 후보 위치에 적용될 수 있다. 또한, 역 DCT가 잔차 블록의 상부 왼쪽(top-left) 모서리를 커버하는 후보 위치에 적용될 수 있다. 이 메커니즘은, DST가 일반적으로 하부 오른쪽 모서리에 분산된 더 많은 잔차 정보로 잔차 블록을 변환하는 DCT보다 더 효율적이고, 반면 DCT는 일반적으로 상부 왼쪽 모서리에 분산된 더 많은 잔차 정보로 잔차 블록을 변환하는 DST보다 더 효율적이기 때문에 유용할 수 있다. 또한 주의해야 할 것은, 잔차 블록의 하부 오른쪽 모서리는 대부분의 경우에 통계적으로 더 많은 잔차 정보가 수용하고 있다는 것이다. 개시된 메커니즘은 또한 일부 경우에 변환 블록의 잔차 샘플을 수평으로 뒤집는 것(reversing)을 지원한다. 예를 들어, 잔차 샘플은 역변환 블록이 적용된 후 수평으로 반전/플립(flip)될 수 있다. 이는, 현재 잔차 블록의 우측의 이웃 블록이 이미 재구성되어 있고 현재 잔차 블록의 좌측의 이웃 블록이 재구성되어 있지 않을 때 발생할 수 있다. 이는 역 DST가 대응하는 전송 블록의 일부로서 이용되었을 때에도 발생할 수 있다. 이 접근 방식은 재구성된 블록에 가장 가까운 정보를 인코딩하는 데 더 큰 유연성을 제공하여, 대응하는 잔차 정보의 감소를 가져올 수 있다. 개시된 메커니즘은 또한 변환 블록에 대한 후보 위치 정보의 컨텍스트 코딩을 지원한다. 잔차 블록에 대응하는 예측 정보는 후보 위치 정보를 코딩하기 위해 사용될 수 있다. 예를 들어, 몇몇 경우에, 잔차 블록은 템플릿 매칭 모드(template matching mode)에 의해 생성된 예측 블록에 대응할 수 있다. 또한, 템플릿 매칭 모드에 의해 이용되는 템플릿은 잔차 블록의 공간적으로 이웃하는 재구성 영역에 기반하여 선택될 수 있다. 이 경우, 잔차 블록의 하부 오른쪽 부분은 잔차 블록의 다른 부분보다 더 많은 잔차 정보를 수용할 수 있다. 따라서, 잔차 블록의 하부 오른쪽 부분을 커버하는 후보 위치는 변환을 위한 최고의 위치로 선택될 가능성이 가장 높다. 이와 같이, 잔차 블록이 인터 예측에 기반하는 템플릿 매칭과 관련될 때, 단지 하나의 후보 위치가 잔차 블록에 대해 사용 가능하게 될 수 있고, 및/또는 다른 컨텍스트 코딩 접근 방식이 변환을 위한 위치 정보의 코딩을 위해 이용될 수 있다.
도 4는 HEVC 모델에서 비디오 코딩에 이용되는 예시적인 인트라 예측 모드(400)의 개략도이다. 비디오 압축 방식은 데이터 중복성을 활용한다. 예를 들어, 대부분의 이미지는 인접 픽셀과 동일하거나 유사한 색상 및/또는 밝기를 수용하는 픽셀의 그룹을 수용한다. 특정 예시로서, 밤하늘의 이미지는 큰 영역의 검은색 픽셀과 별을 묘사하는 흰색 픽셀의 클러스터를 수용할 수 있다. 인트라 예측 모드(400)는 이러한 공간 관계를 활용한다. 구체적으로, 프레임은 샘플을 수용하는 일련의 블록으로 분해될 수 있다. 이후, 각 블록을 전송하는 대신, 블록의 밝기/색상이 인접한 블록 내의 기준 샘플과의 공간 관계를 기반으로 예측될 수 있다. 예를 들어, 인코더는 현재 블록이 현재 블록의 상부 왼쪽 모서리에 위치한 이전에 인코딩된 블록의 기준 샘플과 동일한 데이터를 수용하는 것을 표시할 수 있다. 인코더는 이후 블록의 값 대신 예측 모드를 인코딩할 수 있다. 이는 인코딩 크기를 크게 감소시킨다. 인트라 예측 모드(400)에 의해 도시된 대로, 상부 왼쪽 모서리는 HEVC 내의 예측 모드 18에 대응한다. 이와 같이, 인코더는 블록에 대한 픽셀 정보를 인코딩하는 대신 블록에 대한 예측 모드 18을 간단히 저장할 수 있다. 도시된 대로, HEVC의 인트라 예측 모드(400)는 예측 모드 2에서 예측 모드 34로의 33개의 각도 예측 모드를 포함한다. 인트라 예측 모드(400)는 또한 부드러운 영역(smooth region)을 예측하는, 인트라 플래너(intra-planar) 모드 0 및 인트라 직류(direct current, DC) 모드 1을 포함한다. 인트라 플래너 모드 0은 이웃하는 기준 샘플로부터 유도된 수직 및 수평 기울기를 갖는 진폭 표면으로 블록을 예측한다. 인트라 DC 모드 1은 이웃하는 기준 샘플의 평균값으로 블록을 예측한다. 인트라 예측 모드(400)는 블록의 루마(luma)(예를 들어, 밝기) 성분을 시그널링하기 위해 이용될 수 있다. 인트라 예측은 크로마(chroma)(예를 들어, 색상) 값에도 적용될 수 있다. HEVC에서, 크로마 값은 플래너 모드, 각도 26 모드(예를 들어, 수직), 각도 10 모드(예를 들어, 수평), 인트라 DC, 및 유도된 모드를 이용하여 예측되고, 여기서 유도된 모드는 인트라 예측 모드(400)에 의해 인코딩된 크로마 성분 및 루마 성분 사이의 상관관계를 예측한다.
영상 블록에 대한 인트라 예측 모드(400)는 인코더에 의해 예측 정보로 저장된다. 주의해야 할 것은, 인트라 예측 모드(400)가 단일 프레임에서의 예측을 위해 이용되는 반면, 인터 예측도 또한 이용될 수 있다는 것이다. 인터 예측은 다수의 프레임에 걸친 일시적인 중복성을 활용한다. 예를 들어, 영화의 장면은 움직이지 않는 책상과 같이, 상대적으로 정적인 배경을 포함할 수 있다. 따라서, 책상은 다수의 프레임에 걸쳐 실질적으로 동일한 픽셀의 집합으로 묘사된다. 인터 예측은 두 번째 프레임 내의 블록을 예측하기 위해 첫 번째 프레임 내의 블록을 사용하고, 이 예시에서, 각 프레임의 책상을 인코딩할 필요가 없다. 인터 예측은 현재 프레임 내의 블록을 기준 프레임 내의 블록과 매칭하고 비교하기 위해 블록 매칭 알고리즘을 이용한다. 움직임 벡터는, 이후 기준 프레임 내의 가장 매칭하는 블록 위치 및 현재/목표(target) 블록의 동시 존재 위치(co-located position)를 지시하기 위해 인코딩될 수 있다. 이와 같이, 일련의 이미지 프레임은 일련의 블록으로 표현될 수 있고, 이는 이후 예측 모드 및/또는 움직임 벡터를 수용하는 예측 블록으로 표현될 수 있다.
도 5는 인트라 예측 모드(400)와 같은, 인트라 예측 모드를 이용하는 비디오 코딩에서의 인트라 예측(500)의 예시를 도시한다. 도시된 대로, 현재 블록(501)은 이웃 블록(510) 내의 샘플에 의해 예측될 수 있다. 인코더는 일반적으로 상부 왼쪽에서 하부 오른쪽으로 이미지를 인코딩할 수 있다. 하지만, 인코더는 아래에서 논의된 것처럼 일부 경우에 오른쪽에서 왼쪽으로 인코딩할 수 있다. 주의해야 할 것은, 여기서 사용된 오른쪽은 인코딩된 이미지의 우측을 말하고, 왼쪽은 인코딩된 이미지의 좌측을 말하고, 상부는 인코딩된 이미지의 상측을 말하고, 아래쪽은 인코딩된 이미지의 하측을 말한다는 것이다.
주의해야 할 것은, 현재 블록(501)이 이웃 블록(510)으로부터의 샘플과 항상 정확히 매칭하지 않을 수 있다는 것이다. 이러한 경우, 예측 모드는 가장 가까운 매칭하는 이웃 블록(510)으로부터 인코딩된다. 디코더로 하여금 적절한 값을 결정할 수 있도록 하기 위해, 예측된 값과 실제 값 사이의 차이가 유지된다. 이는 잔차 정보(residual information)라고 한다. 잔차 정보는 인터 예측뿐만 아니라, 인트라 예측(500) 모두에서 발생한다.
도 6은 인트라 예측(500) 및/또는 인터-예측에 기초한 예시적인 비디오 인코딩 메커니즘(600)의 개략도이다. 이미지 블록(601)은 하나 이상의 프레임으로부터 인코더에 의해 획득될 수 있다. 예를 들어, 이미지는 복수의 직사각형 이미지 영역으로 쪼개질 수 있다. 이미지의 각 영역은 코딩 트리 단위(Coding Tree Unit, CTU)에 대응한다. CTU는 HEVC의 코딩 단위와 같이, 복수의 블록으로 분할된다. 블록 분할 정보는 비트스트림(611)으로 이후 인코딩된다. 따라서, 이미지 블록(601)은 이미지의 분할된 부분이고 이미지의 대응하는 부분에서 루마 성분 및/또는 크로마 성분을 나타내는 픽셀을 수용한다. 인코딩 동안, 이미지 블록(601)은 인트라 예측을 위한 예측 모드(예를 들어, 인트라 예측 모드(400)) 및/또는 인터-예측을 위한 움직임 벡터와 같은 예측 정보를 수용하는 예측 블록(603)으로서 인코딩된다. 이미지 블록(601)을 예측 블록(603)으로 인코딩하는 것은 예측 블록(603)과 이미지 블록(601) 사이의 차이를 지시하는 잔차 정보를 수용하는 잔차 블록(605)을 남길 수 있다.
주의해야 할 것은, 이미지 블록(601)은 하나의 예측 블록(603) 및 하나의 잔차 블록(605)을 수용하는 코딩 단위로 분할될 수 있다는 것이다. 예측 블록(603)은 코딩 단위의 모든 예측 샘플을 수용할 수 있고, 잔차 블록(605)은 코딩 단위의 모든 잔차 샘플을 수용할 수 있다. 이러한 경우, 예측 블록(603)은 잔차 블록(605)과 동일한 크기이다. 다른 예시에서, 이미지 블록(601)은 두 개의 예측 블록(603) 및 하나의 잔차 블록(605)을 수용하는 코딩 단위로 분할될 수 있다. 이러한 경우, 각 예측 블록(603)은 코딩 단위의 예측 샘플의 일부를 수용하고, 잔차 블록(605)은 코딩 단위의 모든 잔차 샘플을 수용한다. 또 다른 예시에서, 이미지 블록(601)은 두 개의 예측 블록(603) 및 네 개의 잔차 블록(605)을 수용하는 코딩 단위로 분할된다. 코딩 단위 내의 잔차 블록(605)의 분할 패턴은 비트스트림(611) 내에서 시그널링될 수 있다. 이러한 위치 패턴은 HEVC의 잔차 쿼드 트리(Residual Quad-Tree, RQT)를 포함할 수 있다. 또한, 이미지 블록(601)은 이미지 샘플(또는 픽셀)의, Y 성분으로 표시되는, 루마 성분(예를 들어, 밝기)만을 수용할 수 있다. 다른 경우에, 이미지 블록(601)은 이미지 샘플의 Y, U, 및 V 성분을 수용할 수 있고, 여기서 U 및 V는 청색 휘도(blue luminance) 및 적색 휘도(red luminance)(UV) 색 공간 내의 색차(chrominance) 성분(예를 들어, 색상)을 지시한다.
SVT가 정보를 더 압축하기 위해 이용될 수 있다. 구체적으로, SVT는 잔차 블록(605)을 더 압축하기 위해 변환 블록(607)을 이용한다. 변환 블록(607)은 역 DCT 및/또는 역 DST와 같은 변환을 수용한다. 예측 블록(603)과 이미지 블록(601) 사이의 차이는 변환 계수를 이용함으로써 변환에 적합하다. 변환 블록(607)의 변환 모드(예를 들어, 역 DCT 및/또는 역 DST) 및 대응하는 변환 계수를 지시함으로써, 디코더는 잔차 블록(605)을 재구성할 수 있다. 정확한 재현이 요구되지 않을 때, 변환을 위한 나은 적합(better fit)을 만들기 위해 변환 계수가 특정 값을 반올림하여 더 압축될 수 있다. 이 프로세스는 양자화라고 하며 사용 가능한 양자화를 설명하는 양자화 파라미터에 따라 수행된다. 따라서, 변환 블록(607)의 변환 모드, 변환 계수, 및 양자화 파라미터는 변환된 잔차 블록(609) 내에 변환된 잔차 정보로서 저장되고, 일부 경우에 이는 간단히 잔차 블록이라고도 지칭될 수 있다.
예측 블록(603)의 예측 정보 및 변환된 잔차 블록(609)의 변환된 잔차 정보는 비트스트림(611)으로 인코딩될 수 있다. 비트스트림(611)은 저장되거나 및/또는 디코더에게 전송될 수 있다. 디코더는 이후 이미지 블록(601)을 복구하기 위해 역으로 프로세스를 수행할 수 있다. 구체적으로, 디코더는 변환 블록(607)을 결정하기 위해 변환된 잔차 정보를 이용할 수 있다. 변환 블록(607)은 이후, 잔차 블록(605)을 결정하기 위해 변환된 잔차 블록(609)과 함께 이용될 수 있다. 잔차 블록(605) 및 예측 블록(603)은 이후 이미지 블록(601)을 재구성하기 위해 이용될 수 있다. 이미지 블록(601)은 이후 인코딩된 비디오를 복구하기 위해 프레임을 재구성하고 그러한 프레임을 위치시기 위해 다른 디코딩된 이미지 블록(601)에 대해 위치될 수 있다.
SVT가 이제 또한 자세히 설명된다. SVT를 실시하기 위해, 변환 블록(607)은 잔차 블록(605)보다 작도록 선택된다. 변환 블록(607)은 잔차 블록(605)의 대응하는 부분을 변환하고 추가적인 코딩/압축 없이 잔차 블록(605)의 나머지(remainder)를 남기기 위해 이용된다. 이는 잔차 정보가 잔차 블록(605)에 걸쳐 일반적으로 고르게 분포되지 않기 때문이다. SVT는, 전체 잔차 블록(605)이 변환될 것을 요구하지 않고, 잔차 블록(605) 내의 잔차 정보의 대부분을 캡처하기 위해 적응 위치를 갖는 더 작은 변환 블록(607)을 이용한다. 이 접근 방식은 잔차 블록(605) 내의 모든 잔차 정보를 변환하는 것보다 더 나은 코딩 효율을 달성할 수 있다. 변환 블록(607)이 잔차 블록(605)보다 작기 때문에, SVT는 잔차 블록(605)에 대한 변환의 위치를 시그널링하기 위한 메커니즘을 이용한다. 예를 들어, SVT가 크기 wxh(예를 들어, 폭 x 높이)의 잔차 블록(605)에 적용될 때, 변환 블록(607)의 크기 및 위치 정보는 비트스트림(611) 이내로 코딩될 수 있다. 이것은 디코더로 하여금 변환 블록(607)을 재구성하도록 허용하고 변환 블록(607)을 잔차 블록(605)의 재구성을 위해 변환된 잔차 블록(609)에 대한 정확한 위치로 구성하도록 허용한다.
주의해야 할 것은, 일부 예측 블록(603)은 잔차 블록(605)을 만들어 내지 않고 인코딩될 수 있다는 것이다. 하지만, 이러한 경우는 SVT를 사용하지 않으므로 더 이상 논의되지 않는다. 위에서 언급된 대로, SVT는 인터 예측 블록 또는 인트라 예측 블록에 이용될 수 있다. 또한, SVT는 특정 인터-예측 메커니즘(예를 들어, 변환 모델 기반 움직임 보상)에 의해 생성된 잔차 블록(605) 상에 이용될 수 있지만, 다른 특정 인터-예측 메커니즘(예를 들어, 아핀 모델(affine model) 기반 움직임 보상)에 의해 생성된 잔차 블록(605)에는 사용될 수 없다.
도 7은 변환 블록(707) 및 잔차 블록(705)을 수용하는 SVT 예시(700)를 도시한다. 도 7의 변환 블록(707) 및 잔차 블록(705)은 각각, 도 6의 변환 블록(607) 및 잔차 블록(605)과 유사하다. 참조의 편의를 위해, SVT 예시(700)는 SVT-I, SVT-II, 및 SVT-III로 지칭된다.
SVT-I는 w_t = w/2, h_t = h/2로 설명되며, 여기서 w_t 및 h_t는 각각 변환 블록(707)의 폭 및 높이를 표시하고, w 및 h는 각각 잔차 블록(705)의 폭 및 높이를 표시한다. 예를 들어, 변환 블록(707)의 폭과 높이는 모두 잔차 블록(705)의 폭과 높이의 절반이다. SVT-II는 w_t = w/4, h_t = h로 설명되고 여기서 변수는 위에서 설명한 것과 같다. 예를 들어, 변환 블록(707) 폭은 잔차 블록(705)의 폭의 1/4이고 변환 블록(707)의 높이는 잔차 블록(705)의 높이와 동일하다. SVT-III는 w_t = w, h_t = h/4로 설명되고 여기서 변수는 위에서 설명한 것과 같다. 예를 들어, 변환 블록(707)의 폭은 잔차 블록(705)의 폭과 동일하고 변환 블록(707)의 높이는 잔차 블록(705)의 높이의 1/4이다. SVT의 유형을 지시하는 유형 정보(type information)(예를 들어, SVT-I, 또는 SVT-II, 또는 SVT-III)는 디코더에 의한 재구성을 지원하기 위해 비트스트림으로 코딩된다.
도 7에서 알 수 있는 대로, 각 변환 블록(707)은 잔차 블록(705)에 대해 다양한 위치에 위치할 수 있다. 변환 블록(707)의 위치는 잔차 블록(705)의 상부 왼쪽 모서리에 대한 위치 오프셋(x, y)로 표현되고, 여기서 x는 변환 블록(707)의 상부 왼쪽 모서리와 잔차 블록(705)의 상부 왼쪽 모서리 사이의 픽셀 단위의 수평 거리를 지시하고, y는 변환 블록(707)의 상부 왼쪽 모서리와 잔차 블록(705)의 상부 왼쪽 모서리 사이의 픽셀 단위의 수직 거리를 지시한다. 잔차 블록(705) 내부의 변환 블록(707)의 각 잠재 위치(potential position)는 후보 위치(candidate position)라고 지칭된다. 잔차 블록(705)의 경우, 후보 위치의 개수는 SVT의 유형에 대해 (w-w_t+1)×(h-h_t+1)이다. 보다 구체적으로, 16×16 잔차 블록(705)에 대해, SVT-I가 사용될 때, 81개의 후보 위치가 있다. SVT-II 또는 SVT-III가 사용될 때, 13개의 후보 위치가 있다. 일단 결정되면, 위치 오프셋의 x 및 y 값은 이용된 SVT 블록의 유형과 함께 비트스트림으로 코딩된다. SVT-I의 복잡성을 줄이기 위해, 32개 위치의 서브세트가 81개의 가능한 후보 위치 중에서 선택될 수 있다. 이 서브세트는 SVT-I에 대해 허용된 후보 위치 역할을 한다.
SVT 예시(700) 중 하나를 이용하는 SVT 방식의 한 가지 단점은 상당한 시그널링 오버헤드가 일으키는 잔차 정보고 SVT 위치 정보를 인코딩하는 것이다. 게다가, RDO(Rate-Distortion Optimization)와 같은 압축 품질 프로세스에 의해 테스트되는 위치의 개수가 증가함에 따라 인코더 복잡성이 크게 증가할 수 있다. 후보 위치의 개수가 잔차 블록(705)의 크기에 따라 증가하기 때문에, 시그널링 오버헤드가 32×32 또는 64×128과 같은 더 큰 잔차 블록(705)에 대해 더 클 수 있다. SVT 예시(700) 중 하나를 이용하는 또 다른 단점은 변환 블록(707)의 크기가 잔차 블록(705) 크기의 1/4이라는 것이다. 이러한 크기의 변환 블록(707)은 많은 경우에 잔차 블록(705)의 중요한 잔차 정보를 커버하기에 충분히 크지 않을 수 있다.
도 8은 변환 블록(807) 및 잔차 블록(805)을 수용하는 추가 SVT 예시(800)를 도시한다. 도 8의 변환 블록(807) 및 잔차 블록(805)은 도 6-7의 변환 블록(607, 707) 및 잔차 블록(605, 705)과 각각 유사하다. 참조의 편의를 위해, SVT 예시(800)는 SVT 수직(SVT-V) 및 SVT 수평(SVT-H)으로 지칭된다. SVT 예시(800)는 SVT 예시(700)와 유사하지만, 감소된 시그널링 오버헤드 및 덜 복잡한 처리 요구 사항을 인코더 상에서 지원하도록 설계되었다.
SVT-V는 w_t = w/2 및 h_t = h로 설명되고, 여기서 변수는 위에서 설명한 것과 같다. 변환 블록(807)의 폭은 잔차 블록(805)의 폭의 절반이고 변환 블록(807)의 높이는 잔차 블록(805)의 높이와 동일하다. SVT-H는 w_t = w 및 h_t = h/2로 설명되고, 여기서 변수는 위에 설명된 것과 같다. 예를 들어, 변환 블록(807)의 폭은 잔차 블록(805)의 폭과 동일하고 변환 블록(807)의 높이는 잔차 블록(805)의 높이의 절반이다. SVT-V는 SVT-II와 유사하고 SVT-H는 SVT-III와 유사하다. SVT-II 및 SVT-III와 비교하여, SVT-V 및 SVT-H 내의 변환 블록(807)은 잔차 블록(805)의 절반으로 확대되어서, 변환 블록(807)은 잔차 블록(805) 내의 더 많은 잔차 정보를 커버할 수 있다.
SVT 예시(700)에서와 같이, SVT 예시(800)는 여러 후보 위치를 포함할 수 있고, 여기서 후보 위치는 잔차 블록(예를 들어, 잔차 블록(805))에 대한 변환 블록(예를 들어, 변환 블록(807))의 가능한 허용 가능 위치(allowable position)이다. 후보 위치는 후보 위치 단계 크기(Candidate Position Step Size, CPSS)에 따라 결정된다. 후보 위치는 CPSS에 의해 지정된 동일한 공백으로 구별될 수 있다. 이 경우, 후보 위치의 개수는 다섯 개를 넘지 않도록 줄어 든다. 감소된 개수의 후보 위치는 변환을 위해 선택된 위치가 더 적은 비트로 시그널링될 수 있으므로 위치 정보와 관련된 시그널링 오버헤드를 완화시킨다. 또한, 후보 위치의 개수를 줄이는 것은 알고리즘적으로 변환 위치의 선택을 더 간단히 만들고, 이는 인코더 복잡성을 줄어들게 할 수 있다(예를 들어, 인코딩에 이용되는 컴퓨팅 자원이 줄어드는 결과를 낳는다).
도 9는 변환 블록(907) 및 잔차 블록(905)을 수용하는 SVT 예시(900)를 도시한다. 도 9의 변환 블록(907) 및 잔차 블록(905)은 각각, 도 6-8의 변환 블록(607, 707, 807) 및 잔차 블록(605, 705, 805)과 유사하다. 도 9는 다양한 후보 위치를 도시하고, 여기서 후보 위치는 잔차 블록(예를 들어, 잔차 블록(905))에 대한 변환 블록(예를 들어, 변환 블록(907))의 가능한 허용 가능 위치이다. 구체적으로, 도 9a 내지 9e의 SVT 예시는 SVT-V를 이용하고 도 9f 내지 9j의 SVT 예시는 SVT-H를 이용한다. 변환을 위한 허용 가능 후보 위치는 CPSS에 의존하며, 이는 변환 블록(907)이 커버해야 하는 잔차 블록(905)의 부분 및/또는 후보 위치 사이의 단계 크기에 더 의존한다. 예를 들어, CPSS는 SVT-V에 대해 s = w/M1 또는 SVT-H에 대해 s = h/M2로 계산될 수 있고, 여기서 w와 h는 각각 잔차 블록의 폭과 높이이고 M1과 M2는 2 내지 8 범위의 미리 결정된 정수이다. 더 많은 후보 위치가 더 큰 M1 또는 M2 값으로 허용된다. 예를 들어, M1과 M2는 모두 8로 설정될 수 있다. 이 경우, 잔차 블록(905)에 대한 변환 블록(907)의 위치를 설명하는 위치 인덱스(position index)(P)의 값은 0과 4 사이이다.
다른 예시에서, CPSS는 SVT-V에 대해 s = max(w/M1, Th1) 또는 SVT-H에 대해 s = max(h/M2, Th2)로 계산되고, 여기서 Th1 및 Th2는 최소 단계 크기를 지정하는 미리 정의된 정수이다. Th1 및 Th2는 2보다 작지 않은 정수일 수 있다. 이 예시에서, Th1과 Th2는 4로 설정되고, M1과 M2는 8로 설정되며, 서로 다른 블록 크기는 서로 다른 개수의 후보 위치를 가질 수 있다. 예를 들어, 잔차 블록(905)의 폭이 8일 때, 두 개의 후보 위치가 SVT-V에 대해, 특히 도 9a 및 도 9e의 후보 위치가 사용 가능하다. 예를 들어, Th1로 지시된 단계 크기가 크고 w/M1로 표시된 대로의, 변환 블록(907)이 커버하는 잔차 블록(905)의 부분도 클 때, 두 개의 후보 위치만이 CPSS를 충족한다. 하지만, w가 16으로 설정될 때, 변환 블록(907)이 커버하는 잔차 블록(905)의 부분은 w/M1의 변화로 인해 감소한다. 이것은 더 많은 후보 위치, 이 경우 도 9a, 9c, 및 9e에 도시된 대로의 세 개의 후보 위치를 발생시킨다. 도 9a 내지 9e에 도시된 다섯 개의 모든 후보 위치는 잔차 블록(905)의 폭이 16보다 더 크고 Th1 및 M1의 값은 위에서 논의된 바와 같을 때 사용 가능하다.
CPSS가 다른 메커니즘에 따라 계산될 때 다른 예시도 알 수 있다. 구체적으로, CPSS는 SVT-V에 대해 s = w/M1 또는 SVT-H에 대해 s = h/M2로 계산될 수 있다. 이 경우, M1 및 M2가 4로 설정될 때, 세 개의 후보 위치가 SVT-V에 대해 허용되고(예를 들어,도 9a, 9c, 및 9e의 후보 위치), 세 개의 후보 위치가 SVT-H에 대해 허용된다(예를 들어, 도 9f, 9h, 및 9j의 후보 위치). 또한, M1 및 M2가 4로 설정되면, 변환 블록(907)이 커버하는 잔차 블록(905)의 부분이 증가하여 SVT-V의 두 개의 허용 가능 후보 위치(예를 들어,도 9a 및 9e의 후보 위치) 및 SVT-H에 대한 두 개의 허용 가능한 후보 위치(예를 들어, 도 9f 및 9j의 후보 위치)를 발생시킨다.
다른 예시에서, CPSS는 SVT-V에 대해 s = max(w/M1, Th1) 또는 SVT-H에 대해 s = max(h/M2, Th2)로 계산된다. 이 경우, T1과 T2는 미리 정의된 정수로 설정, 예를 들어 2로 설정되고, M1은 w ≥ h 이면 8로 설정되거나 또는 w < h 이면 4로 설정되고, M2는 h ≥ w 일 때 8로 설정되거나 또는 h < w 일 때 4로 설정된다. 예를 들어, 변환 블록(907)이 커버하는 잔차 블록(905)의 부분은 잔차 블록(905)의 높이가 잔차 블록(905)의 폭보다 큰지 또는 잔차 블록(905)의 폭이 잔차 블록(905)의 높이보다 큰지(vice versa) 여부에 의존한다. 따라서, SVT-H 또는 SVT-V에 대한 후보 위치의 개수는 잔차 블록(905)의 가로세로비(aspect ratio)에 더 의존한다.
다른 예시에서, CPSS는 위에서 논의된 대로, SVT-V에 대해 s = max(w/M1, Th1) 또는 SVT-H에 대해 s = max(h/M2, Th2)로 계산된다. 이 경우, M1, M2, Th1, 및 Th2의 값은 비트스트림 내의 하이레벨 신택스 구조(예를 들어, 시퀀스 파라미터 세트)로부터 유도된다. 예를 들어, CPSS를 유도하기 위해 이용되는 값은 비트스트림 내에서 시그널링될 수 있다. M1 및 M2는 신택스 요소로부터 파싱된 동일한 값을 공유할 수 있고, Th1 및 Th2는 다른 신택스 요소로부터 파싱된 동일한 값을 공유할 수 있다.
도 10은 잔차 블록(1005)에 대한 변환 블록(1007)의 위치를 표시하는 예시적인 SVT 위치(1000)를 도시한다. 6개의 서로 다른 위치(예를 들어, 3개의 수직 위치 및 3개의 수평 위치)가 도시되어 있지만, 서로 다른 개수의 위치가 실제 적용에서 사용될 수 있음이 이해되어야 한다. SVT 변환 위치(1000)는 도 9의 SVT 예시(900)의 후보 위치로부터 선택된다. 구체적으로, 선택된 SVT 변환 위치(1000)는 위치 인덱스(P)로 인코딩될 수 있다. 위치 인덱스(P)는 잔차 블록의 상부 왼쪽 모서리에 대한 변환 블록의 상부 왼쪽 모서리의 위치 오프셋(Z)을 결정하기 위해 이용될 수 있다. 예를 들어, 이 위치 상관(position correlation)은 Z = s × P에 따라 결정될 수 있고, 여기서 s는 SVT 유형에 기반한 변환 블록에 대한 CPSS이고 도 9와 관련하여 논의된 대로 계산된다. P의 값은 변환 블록이 SVT-V 유형일 때, 0, 1, ..., 로 인코딩될 수 있다. 변환 블록이 SVT-H 유형일 때, P의 값은 0, 1, ..., 로 인코딩될 수 있다. 보다 구체적으로, (0, 0)은 잔차 블록의 상부 왼쪽 모서리의 좌표를 나타낼 수 있다. 이러한 경우, 변환 블록의 상부 왼쪽 모서리의 좌표는 SVT-V에서 (Z, 0) 또는 SVT-H에서 (0, Z)이다.
아래에서 더 상세히 논의되는 대로, 인코더는 플래그를 이용함으로써 비트스트림에서 SVT 변환 유형(예를 들어, SVT-H 또는 SVT-T) 및 잔차 블록 크기를 인코딩할 수 있다. 디코더는 이후 SVT 변환 크기 및 잔차 블록 크기에 기반하여 SVT 변환 크기를 결정할 수 있다. SVT 변환 크기가 일단 결정되면, 디코더는, CPSS 기능에 따라, 도 9의 SVT 예시(900)에서의 후보 위치와 같은, SVT 변환의 허용 가능 후보 위치를 결정할 수 있다. 디코더가 SVT 변환의 후보 위치를 결정할 수 있기 때문에, 인코더는 위치 오프셋의 좌표를 시그널링하지 않을 수 있다. 대신, 코드가 어떤 후보 위치가 대응하는 변환을 위해 이용되는지 지시하기 위해 이용될 수 있다. 예를 들어, 위치 인덱스(P)는 증가된 압축을 위해 잘린 단항 코드(unary code)를 사용하여 하나 이상의 빈(bin)으로 이진화될 수 있다. 특정 예시로서, P 값이 0 내지 4까지의 범위일 때, P 값 0, 4, 2, 3, 및 1은 각각, 0, 01, 001, 0001, 및 0000으로 이진화될 수 있다. 이 바이너리 코드는 위치 인덱스의 기본 10 개의 값(base ten value)을 표현하는 것보다 더 압축된다. 또 다른 예시로서, P 값이 0 내지 1까지의 범위일 때, P 값 0과 1은 각각 0과 1로 이진화될 수 있다. 이와 같이, 위치 인덱스는 변환 블록에 대한 가능한 후보 위치에 비추어, 특정 변환 블록 위치를 시그널링하기 위해 원하는 대로 크기가 커지거나 줄어들 수 있다.
위치 인덱스 P는 가장 가능성 있는 위치(most probable position)와 덜 가능성 있는 남아있는 위치를 이용함으로써 하나 이상의 빈으로 이진화될 수 있다. 예를 들어, 왼쪽 및 상부 이웃 블록이 디코더에서 이미 복호화되고, 따라서 예측이 가능하게 될 때, 가장 가능성 있는 위치는 잔차 블록의 하부 오른쪽 모서리를 커버하는 위치로 설정될 수 있다. 한 예시에서, P 값이 0 내지 4까지의 범위이고, 위치 4가 가장 가능성 있는 위치로 설정될 때, P 값 4, 0, 1, 2, 및 3은 1, 000, 001, 010, 및 011로 각각 이진화된다. 또한, P 값이 0 내지 2까지의 범위이고 위치 2가 가장 가능성 있는 위치로 설정될 때, P 값 2, 0, 및 1은 각각 1, 01, 및 00으로 이진화된다. 따라서, 후보 위치의 가장 가능성 있는 위치 인덱스는 가장 일반적인 경우(most common case)에 대한 시그널링 오버헤드를 줄이기 위해 가장 적은 비트로 표시된다. 확률은 인접한 재구성된 블록의 코딩 순서에 따라 결정될 수 있다. 따라서, 디코더는 채택된 복호화 방식에 기반하여 대응하는 블록을 위해 이용될 코드워드 방식(code word scheme)을 추론할 수 있다.
예를 들어, HEVC에서, 코딩 단위 코딩 순서(coding unit coding order)는 일반적으로 위에서 아래로 그리고 왼쪽에서 오른쪽으로이다. 이러한 경우, 현재 인코딩/디코딩 코딩 단위의 우측은 상부 오른쪽 모서리를 더 가능성 있는 변환 위치(more probable transform position)로 렌더링할 수 없다. 하지만, 움직임 벡터 예측자(motion vector predictor)는 왼쪽 및 상부 공간 이웃으로부터 유도된다. 이러한 경우, 잔차 정보는 통계적으로 하부 오른쪽으로 갈수록 더 집중되어 있다. 이 경우, 하부 오른쪽 부분을 커버하는 후보 위치가 가장 가능성 있는 위치이다. 또한, 적응형 코딩 단위 코딩 순서(adaptive coding unit coding order)가 활용될 때, 하나의 노드는 수직으로 두 개의 자식 노드로 쪼갤 수 있고 오른쪽 자식 노드(right child node)는 왼쪽 노드보다 먼저 코딩될 수 있다. 이 경우, 왼쪽 자식 노드(left child node)의 디코딩/인코딩 이전에 왼쪽 자식 노드의 우측 이웃이 재구성되어 있다. 또한, 이러한 경우, 좌측 이웃 픽셀은 사용 가능하지 않다. 우측 이웃이 사용 가능하고 좌측 이웃은 사용 가능하지 않을 때, 잔차 블록의 하부 왼쪽 부분이 많은 양의 잔차 정보를 수용할 가능성이 높고, 그러므로 잔차 블록의 하부 왼쪽 부분을 커버하는 후보 위치가 가장 가능성 있는 위치가 된다.
그러므로, 위치 인덱스(P)는 잔차 블록 옆의 우측이 재구성되었는지 여부에 따라 하나 이상의 빈으로 이진화될 수 있다. 한 예시에서, P 값은 SVT 변환 위치(1000)으로 표시된 대로, 0 내지 2까지의 범위 내에 있다. 잔차 블록 옆의 오른쪽이 재구성되어 있을 때, P 값 0, 2, 및 1ㅓ은 0, 01, 및 00으로 이진화된다. 그렇지 않으면, P 값 2, 0, 및 1이 0, 01, 및 00으로 이진화된다. 또 다른 예시에서, 잔차 블록 옆의 오른쪽이 재구성되어 있지만 잔차 블록 옆의 왼쪽이 재구성되어 있지 않을 때, P 값 0, 2, 및 1은 0, 00, 및 01로 이진화된다. 그렇지 않으면 P 값 2, 0, 및 1이 0, 00, 및 01로 이진화된다. 이 예시에서, 단일 빈(single bin)에 대응하는 위치는 가장 가능성 있는 위치이고 다른 두 위치는 나머지 위치이다. 예를 들어, 가장 가능성 있는 위치는 우측 이웃의 사용 가능성에 의존한다.
레이트 왜곡 성능의 측면에서 최상 위치(best position)의 확률 분포는 인터 예측 모드에 걸쳐 상당히 서로 다를 수 있다. 예를 들어, 잔차 블록이 공간적으로 이웃하는 재구성된 픽셀과 템플릿 매칭을 통해 템플릿으로 생성된 예측 블록에 대응할 때, 최상 위치는 위치 2일 가능성이 높다. 다른 인터 예측 모드의 경우, 위치 2(또는 오른쪽 이웃이 사용 가능하고 왼쪽 이웃은 사용 가능하지 않을 때 위치 0)가 최상 위치가 될 확률은 템플릿 매칭 모드의 확률보다 낮다. 이런 측면에서, 위치 인덱스 P의 첫 번째 빈에 대한 컨텍스트 모델은 잔차 블록과 관련된 인터 예측 모드에 따라 결정될 수 있다. 보다 구체적으로, 잔차 블록이 인터 예측 기반의 템플릿 매칭과 관련될 때, 위치 인덱스 P의 첫 번째 빈은 첫 번째 컨텍스트 모델을 사용한다. 그렇지 않으면, 두 번째 컨텍스트 모델이 이 빈을 인코딩/디코딩하는 데 사용된다.
다른 예시에서, 잔차 블록이 인터 예측 기반의 템플릿 매칭과 관련될 때, 가장 가능성 있는 위치(예를 들어, 위치 2 또는 오른쪽 이웃이 사용 가능하지만 왼쪽 이웃이 사용 가능하지 않은 경우 위치 0)는 변환 블록 위치로 바로 설정되고 위치 정보는 비트스트림에서 시그널링되지 않는다. 그렇지 않으면, 위치 인덱스가 비트스트림에서 명시 적으로 시그널링된다.
또한 주의해야 할 것은, 서로 다른 변환이 잔차 블록에 대한 변환 블록의 위치에 의존하여 이용될 수 있다는 것이다. 예를 들어, 잔차 블록의 좌측은 재구성되고 잔차 블록의 우측을 재구성되지 않고, 이는 왼쪽에서 오른쪽으로 그리고 위에서 아래로 고정된 코딩 단위 코딩 순서(예를 들어, HEVC에서의 코딩 순서)를 사용하는 비디오 코딩에서 발생한다. 이 경우, 잔차 블록의 하부 오른쪽 모서리를 커버하는 후보 위치는 인코딩시 변환 블록 내의 변환을 위해 DST(예를 들어, DST 버전 7(DST-7) 또는 DST 버전 1(DST-1))를 이용할 수 있다. 따라서, 역 DST 변환은 대응하는 후보 위치에 대한 디코더에서 이용된다. 또한, 잔차 블록의 상부 왼쪽 모서리를 커버하는 후보 위치는 인코딩시 변환 블록 내의 변환을 위해 DCT(예를 들어, DCT 버전 8(DCT-8) 또는 DCT 버전 2(DCT-2))를 이용할 수 있다. 따라서, 역 DCT 변환은 대응하는 후보 위치에 대한 디코더에서 사용된다. 이것은, 하부 오른쪽 모서리가 이 경우에 네 개의 모서리 중에서 공간적으로 재구성된 영역에서 가장 멀리 떨어져 있기 때문이다. 또한, DST는, 변환 블록이 잔차 블록의 하부 오른쪽 모서리를 커버할 때 잔차 정보 분포를 변환하기 위한 DCT보다 효과적이다. 하지만, DCT는, 변환 블록이 잔차 블록의 상부 왼쪽 모서리를 커버할 때 잔차 정보 분포를 변환하기 위한 DST보다 효과적이다. 후보 위치의 나머지 경우, 변환 유형은 역 DST 또는 DCT일 수 있다. 예를 들어, 후보 위치가 상부 왼쪽 모서리보다 하부 오른쪽 모서리에 더 가까울 때, 역 DST가 변환 유형으로 이용된다. 그렇지 않으면, 역 DCT가 변환 유형으로 이용된다.
구체적인 예시로서, 변환 블록(1007)에 대한 세 개의 후보 위치는 도 10에 도시된 대로 허용될 수 있다. 이 경우, 위치 0은 상부 왼쪽 모서리를 커버하고 위치 2는 하부 오른쪽 모서리를 커버한다. 위치 1은 잔차 블록(1005)의 중앙에 있고 왼쪽 및 오른쪽 모서리 모두에서 등거리에 있다. 변환 유형은, 인코더에서 각각, 위치 0, 위치 1, 및 위치 2에 대해 DCT-8, DST-7, 및 DST-7으로 선택될 수 있다. 역변환 DCT-8, DST-7, 및 DST-7은 각각, 위치 0, 위치 1, 및 위치 2에 대한 디코더에서 사용될 수 있다. 다른 예시에서, 위치 0, 위치 1, 및 위치 2에 대한 변환 유형은 인코더에서 각각, DCT-2, DCT-2, 및 DST-7이다. 역변환 DCT-2, DCT-2, 및 DST-7은 이후 각각, 위치 0, 위치 1, 및 위치 2에 대한 디코더에서 사용될 수 있다. 이와 같이, 대응하는 후보 위치에 대한 변환 유형이 미리 결정될 수 있다.
일부 경우에, 위에서 설명한 위치 종속 다중 변환(position-dependent multiple transform)은 루마 변환 블록(luma transform block)에만 적용될 수 있다. 대응하는 크로마 변환 블록(chroma transform block)은 변환/역변환 프로세스에서 항상 역 DCT-2를 사용할 수 있다.
도 11은 잔차 샘플 수평 플리핑의 예시(1100)를 도시한다. 일부 경우에, 유익한 잔차 압축(residual compression)은 인코더에서 변환 블록(예를 들어, 변환 블록 607)을 적용하기 전에 잔차 블록(예를 들어, 잔차 블록(605)) 내의 잔차 정보를 수평으로 플립함으로써 달성될 수 있다. 예시(1100)는 이러한 수평 플리핑(horizontal flipping)을 설명한다. 이 맥락에서, 수평 플리핑은 잔차 블록의 좌측과 잔차 블록의 우측 사이의 중간 축(axis half way)을 중심으로 잔차 블록 내의 잔차 샘플을 회전시키는 것을 말한다. 이러한 수평 플리핑은 인코더에서 변환(예를 들어, 변환 블록)을 적용하기 전에 그리고 디코더에서 역변환(예를 들어, 변환 블록)을 적용한 후에 발생한다. 이러한 플리핑은 특정된 사전 정의 조건(pre-defined condition)이 발생할 때 이용될 수 있다.
한 예시에서, 수평 플리핑은 변환 블록이 변환 프로세스에서 DST/역DST를 이용할 때 발생한다. 이 경우, 잔차 블록의 우측 이웃은 현재 블록 이전에 인코딩/재구성되고, 좌측 이웃은 현재 블록 이전에 인코딩/재구성되지 않는다. 수평 플리핑 프로세스는 잔차 블록의 i 열에 있는 잔차 샘플을 잔차 블록의 w-1-i 열에 있는 잔차 샘플과 교환한다. 이 맥락에서, w는 변환 블록의 폭이고 i = 0,1, ..., (w/2) -1이다. 잔차 샘플의 수평 플리핑은 잔차 분포를 DST 변환에 더 적합하게 만들어 코딩 효율성을 높일 수 있다.
도 12는 위에서 논의된 메커니즘을 이용하는 위치 종속 SVT를 갖는 비디오 디코딩의 예시적인 방법(1200)의 흐름도이다. 상기 방법(1200)은 비트스트림(611)과 같은, 비트스트림을 수신할 때 디코더에서 개시될 수 있다. 상기 방법(1200)은 예측 블록(603) 및 변환된 잔차 블록(609)과 같은, 예측 블록 및 변환된 잔차 블록을 결정하기 위해 비트스트림을 이용한다. 상기 방법(1200)은 또한 잔차 블록(605)과 같은 잔차 블록을 결정하고, 변환 블록(607)과 같은 변환 블록을 결정하기 위해 이용된다. 잔차 블록(605) 및 예측 블록(603)은 이후 이미지 블록(601)과 같은 이미지 블록을 재구성하기 위해 이용된다. 주의해야 할 것은, 방법(1200)이 디코더의 관점에서 설명되지만, 유사한 방법이 SVT를 이용하여 비디오를 인코딩하기 위해 이용(예를 들어, 역으로)될 수 있다는 것이다.
블록 1201에서, 비트스트림이 디코더에서 획득된다. 비트스트림은 메모리 또는 스트리밍 소스로부터 수신될 수 있다. 비트스트림은 인코더로부터의 비디오 데이터에 대응하는 적어도 하나의 이미지로 디코딩될 수 있는 데이터를 포함한다. 구체적으로, 비트스트림은 메커니즘(600)에서 설명된 대로의 비트스트림으로부터의 예측 블록 및 잔차 블록을 수용하는 코딩 단위를 결정하기 위해 이용될 수 있는 블록 분할 정보(block partition information)를 수용한다. 이와 같이, 코딩 단위와 관련된 코딩 정보는 비트스트림으로부터 파싱될 수 있고 코딩 단위의 픽셀은 아래에서 논의된 대로 코딩 정보에 기반하여 재구성될 수 있다.
블록 1203에서, 예측 블록 및 대응하는 변환된 잔차 블록이 블록 분할 정보에 기반하여 비트스트림으로부터 획득된다. 이 예시에서, 변환된 잔차 블록은 위의 메커니즘(600)과 관련하여 논의된 대로의 SVT에 따라 인코딩되어 있다. 방법(1200)은 이후 아래에서 논의되는 대로 변환된 잔차 블록으로부터 크기 wxh의 잔차 블록을 재구성한다.
블록 1205에서, SVT 사용 방식(usage), SVT 유형, 및 변환 블록 크기가 결정된다. 예를 들어, 디코더는 먼저 SVT가 인코딩에 사용되었는지 여부를 결정한다. 이는 일부 인코딩이 잔차 블록의 크기인 변환을 이용하기 때문이다. SVT의 사용 방식은 비트스트림 내의 신택스 요소에 의해 시그널링될 수 있다. 구체적으로, 잔차 블록이 SVT를 이용하도록 허용될 때, svt_flag와 같은 플래그가 비트스트림으로부터 파싱된다. 잔차 블록은, 변환된 잔차 블록이 0이 아닌 변환 계수(non-zero transform coefficient)(예를 들어, 임의의 루마 또는 크로마 성분에 대응함)를 가질 때 SVT를 이용하도록 허용될 수 있다. 예를 들어, 잔차 블록이 임의의 잔차 데이터를 수용할 때, 잔차 블록은 SVT를 이용할 수 있다. SVT 플래그는, 잔차 블록이 잔차 블록과 동일한 크기의 변환 블록을 사용하여 코딩되는지(예를 들어, svt_flag가 0으로 설정됨) 또는 잔차 블록이 잔차 블록보다 작은 크기의 변환 블록으로 코딩되는지(예를 들어, svt_flag가 1로 설정됨) 여부를 지시한다. 코딩된 블록 플래그(coded block flag, cbf)는, HEVC에서 사용되는 것처럼, 잔차 블록이 색상 성분의 0이 아닌 변환 계수를 포함하는지 여부를 지시하기 위해 이용될 수 있다. 또한, 루트 코딩된 블록 플래그(root cbf)는, HEVC에서 사용되는 것처럼, 잔차 블록이 임의의 색상 성분의 0이 아닌 변환 계수를 포함하는지 여부를 지시할 수 있다. 특정 예시로서, 이미지 블록이 인터 예측을 사용하여 예측되고 잔차 블록 폭 또는 잔차 블록 높이가 [a1, a2]의 미리 결정된 범위 내에 속할 때 잔차 블록은 SVT를 사용하도록 허용되고, 여기서 a1 = 16 및 a2 = 64이거나, 또는 a1 = 8 및 a2 = 64이거나, 또는 a1 = 16 및 a2 = 128이다. a1 및 a2의 값은 미리 결정된 고정 값일 수 있다. 값은 또한 시퀀스 파라미터 집합(sequence parameter set, SPS) 또는 비트스트림 내의 슬라이스 헤더(slice header)로부터 유도될 수 있다. 잔차 블록이 SVT를 이용하지 않을 때, 변환 블록 크기는 잔차 블록 크기의 폭과 높이로 설정된다. 그렇지 않으면, 변환 크기는 SVT 변환 유형에 기반하여 결정된다.
디코더가 일단 SVT가 잔차 블록에 대해 사용된 것으로 결정하면, 디코더는 사용된 SVT 변환 블록의 유형을 결정하고 SVT 유형에 따라 변환 블록 크기를 유도한다. 잔차 블록에 허용되는 SVT 유형은 잔차 블록의 폭과 높이에 기반하여 결정된다. 도 8에 도시된 바와 같은 SVT-V 변환은, 잔차 블록의 폭이 [a1, a2] 범위에 있는 경우 허용되고, 이러한 값은 위에 정의되어 있다. 도 8에 도시된 바와 같은 SVT-H 변환은 잔차 블록의 높이가 [a1, a2] 범위에 있는 경우 허용되고, 이러한 값은 위에 정의되어 있다. SVT는 잔차 블록 내의 루마 성분에만 사용되거나, 또는 SVT는 잔차 블록의 루마 및 크로마 성분 양쪽에 대해 이용될 수 있다. SVT가 루마 성분에만 사용될 때, 루마 성분 잔차 정보는 SVT에 의해 변환되고 크로마 성분은 잔차 블록의 크기의 변환에 의해 변환된다. SVT-V 및 SVT-H가 모두 허용될 때, svt_type_flag와 같은 플래그는 비트스트림으로 인코딩될 수 있다. svt_type_flag는, SVT-V가 잔차 블록에 대해 사용되는지(예를 들어, svt_type_flag는 0으로 설정됨) 또는 SVT-H가 잔차 블록에 대해 사용되는지(예를 들어, svt_type_flag는 1로 설정됨)를 지시한다. SVT 변환의 유형이 일단 결정되고, 변환 블록 크기는 시그널링된 SVT 유형(예를 들어, SVT-V에서 w_t = w/2 및 h_t = h이고, SVT-H에서 w_t = w 및 h_t = h/2임)에 따라 설정된다. SVT-V 만 허용되거나 또는 SVT-H 만 허용될 때, svt_type_flag는 비트스트림으로 인코딩되지 않을 수 있다. 이러한 경우, 디코더는 허용된 SVT 유형에 기반하여 변환 블록 크기를 추론할 수 있다.
SVT 유형 및 크기가 일단 결정되고, 디코더는 블록 1207로 진행한다. 블록 1207에서, 디코더는 변환의 유형(예를 들어, DST 또는 DCT)뿐만 아니라 잔차 블록에 대한 변환의 위치를 결정한다. 변환 블록의 위치는 비트스트림 내의 신택스 요소에 따라 결정될 수 있다. 예를 들어, 위치 인덱스는 직접 시그널링될 수 있고, 그러므로 일부 예시에서 비트스트림으로부터 파싱된다. 다른 예시에서, 위치는 도 8 내지 10과 관련하여 논의된 대로 추론될 수 있다. 구체적으로, 변환의 후보 위치는 CPSS 기능에 따라 결정될 수 있다. CPSS 기능은 잔차 블록의 폭, 잔차 블록의 높이, 블록 1205에 의해 결정된 SVT 유형, 변환의 단계 크기, 및/또는 상기 변환이 커버하는 잔차 블록의 부분을 고려하여 후보 위치를 결정할 수 있다. 디코더는 이후 위에서 도 10과 관련하여 논의된 대로 후보 위치 선택 확률(candidate position selection probability)에 따라 정확한 후보 위치를 시그널링하는 코드를 포함하는 p-인덱스를 획득함으로써 후보 위치로부터 변환 블록 위치를 결정할 수 있다. 10 위. 변환 블록 위치가 일단 알려지면, 디코더는 위의 도 10과 관련하여 논의된 대로 변환 블록에 의해 이용되는 변환의 유형을 추론할 수 있다. 따라서, 인코더는 대응하는 역변환을 선택할 수 있다.
블록 1209에서, 디코더는 블록 1205에서 결정된 변환 블록 크기에 기반하여 변환 블록의 변환 계수를 파싱한다. 이 프로세스는, HEVC, H.264, 및/또는 AVC에서 이용되는 변환 계수 파싱 메커니즘에 따라 달성될 수 있다. 변환 계수는 런-길이(run-length) 코딩을 사용하여 및/또는 변환 계수 그룹(coefficient group, CG)의 집합으로서 코딩될 수 있다. 주의해야 할 것은, 블록 1209는 일부 예시에서 블록 1207 이전에 수행될 수 있다는 것이다.
블록 1211에서, 잔차 블록은 위에서 결정된 대로의 변환 위치, 변환 계수, 및 변환 유형에 기반하여 재구성된다. 구체적으로, 크기 w_t × h_t의 역양자화 및 역변환이 잔차 블록의 잔차 샘플을 복구하기 위해 변환 계수에 적용된다. 잔차 샘플을 갖는 잔차 블록의 크기는 w_t × h_t이다. 역변환은 블록 1207에서 결정된 위치-종속 변환 유형에 따라 역 DCT 또는 역 DST일 수 있다. 잔차 샘플은 변환 블록 위치에 따라 잔차 블록 내부의 대응하는 영역에 할당된다. 잔차 블록 내부와 변환 블록 외부의 임의의 잔차 샘플은 0으로 설정될 수 있다. 예를 들어, SVT-V가 이용될 때, 후보 위치의 개수는 5이고 위치 인덱스는 다섯 번째 변환 블록 위치를 지시한다. 이와 같이, 재구성된 잔차 샘플은 도 9의 SVT 예시(900)의 변환 후보 위치 내의 영역(예를 들어,도 9의 음영 처리된 영역) 그리고 제로 잔차 샘플을 갖는 영역(예를 들어,도 9에서 음영 처리되지 않은 영역)의 좌측의 크기(w/2) × h 영역에 할당된다.
선택적인 블록(1213)에서, 재구성된 블록의 잔차 블록 정보는 도 11과 관련하여 논의된 대로 수평으로 플리핑될 수 있다. 위에서 언급된 대로, 이는 디코더에서의 변환 블록이 역 DST를 이용하고, 우측 이웃 블록이 이미 재구성되었으며, 좌측 이웃은 아직 재구성되지 않았을 때 발생할 수 있다. 구체적으로, 인코더는, 코딩 효율을 높이기 위해 전술한 경우에 DST 변환을 적용함에 앞서 잔차 블록을 수평으로 플립할 수 있다. 따라서, 선택적인 블록(1213)은 정확한 재구성된 블록을 생성하기 위한 인코더에서의 이러한 수평 플립을 보정하기 위해 이용될 수 있다.
블록 1215에서, 재구성된 잔차 블록은 코딩 단위의 일부로서 샘플을 수용하는 재구성된 이미지 블록을 생성하기 위해 예측 블록으로 구성될 수 있다. 필터링 프로세스는 또한, HEVC의 디블로킹(deblocking) 필터 및 샘플 적응 오프셋(sample adaptive offset, SAO) 처리와 같이, 재구성된 샘플에 적용될 수 있다. 재구성된 이미지 블록은 미디어/비디오 파일의 프레임을 생성하기 위해 유사한 방식으로 디코딩된 다른 이미지 블록과 결합될 수 있다. 재구성된 미디어 파일은 이후 모니터 또는 다른 디스플레이 기기 상에서 사용자에게 디스플레이될 수 있다.
주의해야 할 것은, 방법(1200)의 등가 구현이 이용되어 잔차 블록 내에 재구성된 샘플을 생성할 수 있다는 것이다. 구체적으로, 변환 블록의 잔차 샘플은, 먼저 잔차 블록을 복구하지 않고, 변환 블록 위치 정보에 의해 지시된 위치에서 예측 블록으로 직접 구성될 수 있다.
도 13은 비디오 코딩의 방법(1300)이다. 상기 방법(1300)은 디코더(예를 들어, 비디오 디코더(30))에서 구현될 수 있다. 특히, 상기 방법(1300)은 디코더의 프로세서에 의해 구현될 수 있다. 상기 방법(1300)은, 비트스트림이 인코더(예를 들어, 비디오 인코더(20))로부터 직접 또는 간접적으로 수신되거나 또는 메모리로부터 검색될 때 구현될 수 있다. 블록 1301에서, 비트스트림이 예측 블록(예를 들어, 예측 블록 603) 및 예측 블록에 대응하는 변환된 잔차 블록(예를 들어, 변환된 잔차 블록 609)을 획득하기 위해 파싱된다. 블록 1303에서, 변환된 잔차 블록을 생성하기 위해 사용된 SVT의 유형이 결정된다. 위에서 언급된 대로, SVT의 유형은 SVT-V 또는 SVT-H일 수 있다. 일 실시예에서, SVT-V 유형은 변환된 잔차 블록의 높이와 동일한 높이 및 변환된 잔차 블록의 폭의 절반인 폭을 포함한다.
일 실시예에서, SVT-H 유형은 변환된 잔차 블록의 높이의 절반인 높이 및 변환된 잔차 블록의 폭과 동일한 폭을 포함한다. 일 실시예에서, svt_type_flag는 SVT의 유형을 결정하기 위해 비트스트림으로부터 파싱된다. 일 실시예에서, SVT의 유형은, 오직 한 유형의 SVT이 잔차 블록에 대해 허용될 때 추론에 의해 결정된다.
블록 1305에서, 변환된 잔차 블록에 대한 SVT의 위치가 결정된다. 일 실시예에서, 위치 인덱스는 SVT의 위치를 결정하기 위해 비트스트림으로부터 파싱된다. 일 실시예에서, 위치 인덱스는 CPSS에 따라 결정된 후보 위치의 집합에서 위치를 지시하는 이진 코드(binary code)를 수용한다. 일 실시예에서, SVT의 가장 가능성 있는 위치에는 위치 인덱스를 지시하는 이진 코드 내의 최소 개수의 비트가 할당된다. 일 실시예에서, SVT의 위치는, 단일 후보 위치가 SVT 변환에 대해 사용 가능할 때 프로세서에 의해 추론된다. 일 실시예에서, SVT의 위치는, 잔차 블록이 인터 예측 모드에서 템플릿 매칭에 의해 생성되었을 때 프로세서에 의해 추론된다.
블록 1307에서, SVT의 위치에 기반하는 SVT의 역이 결정된다. 블록 1309에서, SVT의 역이 재구성된 잔차 블록(예를 들어, 잔차 블록(605))을 생성하기 위해 변환된 잔차 블록에 적용된다. 일 실시예에서, 역 DST는 잔차 블록의 왼쪽 경계에 위치하는 SVT-V 유형 변환에 이용된다. 일 실시예에서, 역 DST는 잔차 블록의 상부 경계에 위치하는 SVT-H 유형 변환에 이용된다. 일 실시예에서, 역 DCT는 잔차 블록의 오른쪽 경계에 위치하는 SVT-V 유형 변환에 이용된다. 일 실시예에서, 역 DCT는 잔차 블록의 하부 경계에 위치하는 SVT-H 유형 변환에 이용된다.
블록 1311에서, 재구성된 잔차 블록은 이미지 블록을 재구성하기 위해 예측 블록과 결합된다. 일 실시예에서, 이미지 블록은 전자 기기(예를 들어, 스마트 폰, 태블릿, 랩톱 컴퓨터, 개인용 컴퓨터 등)의 디스플레이 또는 모니터 상에 디스플레이된다.
선택적으로, 상기 방법(1300)은 또한, 재구성된 잔차 블록과 관련된 코딩 단위의 우측 이웃이 재구성되어 있고 코딩 단위의 좌측 이웃은 재구성되지 않았을 때 재구성된 잔차 블록을 예측 블록과 결합하기에 앞서 재구성된 잔차 블록 내의 샘플을 수평으로 플립하는 단계를 포함할 수 있다.
도 14는 비디오 코딩의 방법(1400)이다. 상기 방법(1400)은 인코더(예를 들어, 비디오 인코더(20))에서 구현될 수 있다. 특히, 상기 방법(1400)은 인코더의 프로세서에 의해 구현될 수 있다. 상기 방법(1400)은 비디오 신호를 인코딩하도록 구현될 수 있다. 상기 블록 1401에서, 비디오 신호가 비디오 캡처 기기(예를 들어, 카메라)로부터 수신된다. 일 실시예에서, 비디오 신호는 이미지 블록(예를 들어, 이미지 블록(601))을 포함한다.
블록 1403에서, 이미지 블록을 나타내기 위해 예측 블록(예를 들어, 예측 블록 603) 및 잔차 블록(예를 들어, 잔차 블록 605)이 생성된다. 블록 1405에서, 변환 알고리즘은 잔차 블록에 대한 SVT의 위치에 기반하여 선택된다. 블록 1407에서, 잔차 블록은 선택된 SVT를 사용하여 변환된 잔차 블록으로 변환된다.
블록 1409에서, SVT의 유형이 비트스트림으로 인코딩된다. 일 실시예에서, SVT의 유형은 SVT-V 유형 또는 SVT-H 유형이다. 일 실시예에서, SVT-V 유형은 잔차 블록의 높이와 동일한 높이와 잔차 블록의 폭의 절반인 폭을 포함한다. 일 실시예에서, SVT_H 유형은 잔차 블록의 높이의 절반인 높이와 잔차 블록의 폭과 동일한 폭을 포함한다.
블록 1411에서, SVT의 위치가 비트스트림으로 인코딩된다. 일 실시예에서, SVT의 위치는 위치 인덱스로 인코딩된다. 일 실시예에서, 위치 인덱스는 CPSS에 따라 결정된 후보 위치의 집합에서 위치를 지시하는 이진 코드를 수용한다. 일 실시예에서, SVT의 가장 가능성 있는 위치는 위치 인덱스를 지시하는 이진 코드 내의 최소 개수의 비트로 할당된다.
일 실시예에서, DST 알고리즘은 잔차 블록의 왼쪽 경계에 위치하는 SVT-V 유형 변환을 위해 프로세서에 의해 이용된다. 일 실시예에서, DST 알고리즘은 잔차 블록의 상부 경계에 위치하는 SVT-H 유형 변환을 위해 프로세서에 의해 선택된다. 일 실시예에서, DCT 알고리즘은 잔차 블록의 오른쪽 경계에 위치하는 SVT-V 유형 변환을 위해 프로세서에 의해 선택된다. 일 실시예에서, DCT 알고리즘은 잔차 블록의 하부 경계에 위치하는 SVT-H 유형 변환을 위해 프로세서에 의해 선택된다.
선택적으로, 프로세서는, 잔차 블록과 관련된 코딩 단위의 우측 이웃이 인코딩되어 있고 코딩 단위의 좌측 이웃이 인코딩되어 있지 않을 때, 잔차 블록을 변환된 잔차 블록으로 바꾸기에 앞서 잔차 블록 내의 샘플을 수평으로 플립할 수 있다.
블록 1413에서, 예측 블록 및 변환된 잔차 블록이 비트스트림으로 인코딩된다. 일 실시예에서, 비트스트림은 디코더에게 전송되거나 및/또는 디코더에게 전송되도록 구성된다.
도 15는 본 개시의 일 실시예에 따른 비디오 코딩을 위한 예시적인 컴퓨팅 기기(1500)의 개략도이다. 컴퓨팅 기기(1500)는 여기에 설명된 대로, 개시된 실시예를 구현하기에 적합하다. 컴퓨팅 기기(1500)는, 데이터를 수신하기 위한 입구 포트(1520) 및 수신기 유닛(Rx)(1510); 데이터를 처리하는 프로세서, 또는 논리 유닛, 또는 중앙 처리 장치(CPU)(1530); 데이터를 전송하기 위한 송신기 유닛(Tx)(1540) 및 출구 포트(1550); 및 데이터를 저장하기 위한 메모리(1560)를 포함한다. 컴퓨팅 기기(1500)는 또한 광신호 또는 전기 신호의 진출 또는 진입을 위한, 입구 포트(1520), 수신기 유닛(1510), 송신기 유닛(1540), 및 출구 포트(1550)에 커플링된 광-전기(optical-to-electrical, OE) 구성 요소 및 전기-광(electrical-to-optical, EO) 구성 요소를 포함할 수 있다. 컴퓨팅 기기(1500)는 또한 일부 예시에서 무선 송신기 및/또는 수신기를 포함할 수 있다.
프로세서(1530)는 하드웨어 및 소프트웨어로 구현된다. 프로세서(1530)는 하나 이상의 CPU 칩, 코어(예를 들어, 멀티 코어 프로세서), FPGA(field-programmable gate array), ASIC(application specific integrated circuits) 및 DSP(digital signal processor)로 구현될 수 있다. 프로세서(1530)는 입구 포트(1520), 수신기 유닛(1510), 송신기 유닛(1540), 출구 포트(1550), 및 메모리(1560)와 통신한다. 프로세서(1530)는 인코딩/디코딩 모듈(1514)을 포함한다. 인코딩/디코딩 모듈(1514)은 SVT뿐만 아니라 위에서 설명된 임의의 다른 메커니즘을 이용할 때 변환 블록 위치에 기반하여 잔차 블록을 인코딩/재구성하기 위한 방법(1300), 및 방법(1400), 및 다른 메커니즘과 같은, 위에서 설명된, 개시된 실시예들을 구현한다. 예를 들어, 인코딩/디코딩 모듈(1514)은 위에서 논의된 대로의 비디오 데이터의 인코딩 및/또는 비디오 데이터의 디코딩과 같은 다양한 코딩 동작을 구현, 또는 처리, 또는 준비, 또는 제공한다. 인코딩/디코딩 모듈(1514)의 포함은 그러므로 컴퓨팅 기기(1500)의 기능에 실질적인 개선을 제공하고 컴퓨팅 기기(1500)의 다른 상태로의 변환에 영향을 미친다. 대안으로, 인코딩/디코딩 모듈(1514)은 메모리(1560) 내에 저장되면서 프로세서(1530)에 의해 실행되는 명령으로서 구현된다(예를 들어, 비일시적 매체 상에 저장된 컴퓨터 프로그램 제품으로서).
메모리(1560)는 하나 이상의 디스크, 테이프 드라이브, 및 솔리드 스테이트 드라이브를 포함하고, 이러한 프로그램이 실행을 위해 선택될 때 프로그램을 저장하고, 프로그램 실행 중에 판독되는 명령 및 데이터를 저장하기 위해, 오버플로(over-flow) 데이터 저장 기기로 사용될 수 있다. 메모리(1560)는 휘발성 및/또는 비휘발성일 수 있고, ROM(read-only memory), RAM(random access memory), TCAM(ternary content-addressable memory), 및/또는 SRAM(static random-access memory)일 수 있다. 컴퓨팅 기기(1500)는 또한 최종 사용자와 상호 작용하기 위한 입력/출력(I/O) 기기를 포함할 수 있다. 예를 들어, 컴퓨팅 기기(1500)는 시각적 출력을 위한 모니터와 같은, 시각적 출력을 위한 디스플레이, 오디오 출력을 위한 스피커, 및 사용자 입력을 위한 키보드/마우스/트랙볼 등을 포함할 수 있다.
요약하면, 상기 개시는 서로 다른 위치에서 변환 블록에 대해 다중 변환 유형을 적응적으로 이용하는 메커니즘을 포함한다. 또한, 본 개시는 코딩 효율을 지원하기 위해 잔차 블록 내의 잔차 샘플을 수평으로 플리핑하는 것을 허용한다. 이는, 변환 블록이 인코더와 디코더에서 각각 DST 및 역 DST를 각각 사용하고 오른쪽 이웃 블록이 사용 가능하고 왼쪽 이웃 블록이 사용 가능하지 않을 때 발생한다. 또한, 본 개시는 잔차 블록과 관련된 인터-예측 모드에 기반하여 비트스트림 내에서 위치 정보를 코딩하는 것을 지원하는 메커니즘을 포함한다.
도 16은 코딩 수단(1600)의 일 실시예의 개략도이다. 실시예에서, 코딩 수단(1600)은 비디오 코딩 기기(1602)(예를 들어, 비디오 인코더(20) 또는 비디오 디코더(30))로 구현된다. 비디오 코딩 기기(1602)는 수신 수단(1601)을 포함한다. 수신 수단(1601)은 인코딩할 픽처를 수신하거나 또는 디코딩할 비트스트림을 수신하도록 구성된다. 비디오 코딩 기기(1602)는 수신 수단(1601)에 연결된 전송 수단(1607)을 포함한다. 전송 수단(1607)은 비트스트림을 디코더에게 전송하거나 또는 디코딩된 이미지를 디스플레이 수단(예를 들어, 컴퓨팅 기기(1500) 내의 I/O 기기 중 하나)에게 전송하도록 구성된다.
비디오 코딩 기기(1602)는 저장 수단(1603)을 포함한다. 저장 수단(1603)은 수신 수단(1601) 또는 전송 수단(1607) 중 적어도 하나에 커플링된다. 저장 수단(1603)은 명령을 저장하도록 구성된다. 비디오 코딩 기기(1602)는 또한 처리 수단(1605)을 포함한다. 처리 수단(1605)은 저장 수단(1603)에 커플링된다. 처리 수단(1605)은 여기에 개시된 방법을 수행하기 위해 저장 수단(1603) 내에 저장된 명령을 실행하도록 구성된다.
제1 구성 요소와 제2 구성 요소 사이에 선, 트레이스, 또는 다른 매체를 제외하고, 중간 구성 요소가 없을 때 제1 구성 요소는 제2 구성 요소에 직접 커플링된다. 제1 구성 요소와 제2 구성 요소 사이에 선, 트레이스, 또는 다른 매체 이외에 중간 구성 요소가 있을 때 제1 구성 요소는 제2 구성 요소에 간접적으로 커플링된다. 용어 "커플링된" 및 그 변형은 직접 커플링 및 간접 커플링을 모두 포함한다. 용어 "약"의 사용은 달리 명시되지 않는 한 이어지는 숫자의 ±10%를 포함하는 범위를 의미한다.
여러 실시예가 본 개시에서 제공되었지만, 개시된 시스템 및 방법은 본 개시의 사상 또는 범위를 벗어나지 않고 많은 다른 특정 형태로 구현될 수 있다는 것이 이해될 수 있다. 본 실시예는 한정이 아닌 예시로 간주되어야하며, 그 의도는 여기에 제공된 세부 사항으로 한정되지 않는다. 예를 들어, 다양한 요소 또는 구성 요소는 다른 시스템에서 결합 또는 통합될 수 있거나 또는 특정 기능이 생략되거나 또는 구현되지 않을 수 있다.
게다가, 다양한 실시예 내에 개별적 또는 별개로 설명되고 도시된, 기술, 시스템, 서브 시스템, 및 방법은 본 개시의 범위를 벗어나지 않고 다른 시스템, 구성 요소, 기술, 또는 방법과 결합되거나 통합될 수 있다. 커플링된 것으로 도시되거나 논의된 다른 항목은 직접 연결되거나 또는 간접적으로 커플링되거나 또는 전기적, 기계적으로 또는 다른 방식으로 일부 인터페이스, 또는 기기, 또는 중간 구성 요소를 통해 통신할 수 있다. 변경, 대체, 및 교체의 다른 예시는 당업자에 의해 확인될 수 있고 여기에 개시된 사상 및 범위를 벗어나지 않고 이루어질 수 있다.

Claims (30)

  1. 디코딩 기기에서 구현되는 방법으로서,
    상기 디코딩 기기의 프로세서가, 예측 블록(prediction block) 및 상기 예측 블록에 대응하는 변환된 잔차 블록(residual block)을 획득하기 위해 비트스트림(bitstream)을 파싱하는 단계;
    상기 프로세서가, 상기 변환된 잔차 블록을 생성하기 위해 사용된 공간 가변 변환(spatial varying transform, SVT)의 유형을 결정하는 단계;
    상기 프로세서가, 상기 변환된 잔차 블록에 대한 상기 SVT의 위치를 결정하는 단계;
    상기 프로세서가, 상기 SVT의 상기 위치에 기반하여 상기 SVT의 역(inverse)을 결정하는 단계 - 상기 SVT의 위치가 상기 변환된 잔차 블록의 하부 오른쪽 모서리를 커버하면 상기 SVT의 역은 역 DST 버전 7(DST-7)을 포함하고, 상기 SVT의 위치가 상기 변환된 잔차 블록의 상부 왼쪽 모서리를 커버하면 상기 SVT의 역은 역 DCT 버전 8(DCT-8)을 포함함 - ;
    상기 프로세서가, 재구성된 잔차 블록을 생성하기 위해 상기 SVT의 상기 역을 상기 변환된 잔차 블록에 적용하는 단계; 및
    상기 프로세서가, 이미지 블록을 재구성하기 위해 상기 재구성된 잔차 블록을 상기 예측 블록과 결합하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 SVT의 상기 유형은 SVT 수직(SVT vertical, SVT-V) 유형 또는 SVT 수평(SVT horizontal, SVT-H) 유형인, 방법.
  3. 제2항에 있어서,
    상기 SVT-V 유형은 상기 변환된 잔차 블록의 높이와 동일한 높이 및 상기 변환된 잔차 블록의 폭의 절반인 폭을 포함하고, 상기 SVT-H 유형은 상기 변환된 잔차 블록의 상기 높이의 절반인 높이 및 상기 변환된 잔차 블록의 폭과 동일한 폭을 포함하는, 방법.
  4. 제1항에 있어서,
    상기 SVT의 유형을 결정하기 위해 상기 비트스트림으로부터 svt_type_flag를 파싱하는 단계를 더 포함하는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    하나의 유형의 SVT만이 상기 잔차 블록에 대해 허용될 때 추론(inference)에 의해 SVT의 유형을 결정하는 단계를 더 포함하는 방법.
  6. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 SVT의 위치를 결정하기 위해 상기 비트스트림으로부터 위치 인덱스를 파싱하는 단계를 더 포함하는 방법.
  7. 제1항 내지 제4항 중 어느 한 항에 있어서,
    위치 인덱스는 후보 위치 단계 크기(candidate position step size, CPSS)에 따라 결정된 후보 위치의 집합으로부터 상기 위치를 지시하는 이진 코드를 수용하는, 방법.
  8. 제7항에 있어서,
    상기 SVT의 가장 가능성 있는 위치(most probable position)는 상기 위치 인덱스를 지시하는 상기 이진 코드 내의 최소 비트 수로 할당되는, 방법.
  9. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 SVT의 위치는, 단일 후보 위치가 상기 SVT 변환을 위해 사용 가능할 때 상기 프로세서에 의해 추론되는, 방법.
  10. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 SVT의 위치는, 상기 잔차 블록이 예측 간(inter-prediction) 모드에서 템플릿 매칭에 의해 생성될 때 상기 프로세서에 의해 추론되는, 방법.
  11. 제1항 내지 제4항 중 어느 한 항에 있어서,
    역 이산 사인 변환(Discrete Sine Transform, DST)이 상기 잔차 블록의 좌측 경계에 위치하는 SVT 수직(SVT-V) 유형 변환을 위해 이용되는, 방법.
  12. 제1항 내지 제4항 중 어느 한 항에 있어서,
    역 DST가 상기 잔차 블록의 상부 경계에 위치하는 SVT 수평(SVT-H) 유형 변환을 위해 이용되는, 방법.
  13. 제1항 내지 제4항 중 어느 한 항에 있어서,
    역 이산 코사인 변환(Discrete Cosine Transform, DCT)이 상기 잔차 블록의 우측 경계에 위치하는 SVT-V 유형 변환을 위해 이용되는, 방법.
  14. 제1항 내지 제4항 중 어느 한 항에 있어서,
    역 DCT가 상기 잔차 블록의 하부 경계에 위치하는 SVT-H 유형 변환을 위해 이용되는, 방법.
  15. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 재구성된 잔차 블록과 관련된 코딩 단위의 우측 이웃이 재구성되었고 상기 코딩 단위의 왼쪽 이웃이 재구성되지 않았을 때, 상기 재구성된 잔차 블록을 상기 예측 블록과 결합하는 단계에 앞서 상기 재구성된 잔차 블록 내의 샘플을 수평으로 플립하는 단계
    를 더 포함하는 방법.
  16. 코딩 기기에서 구현되는 방법으로서,
    이미지 블록을 포함하는 비디오 신호를 비디오 캡처 기기로부터 수신하는 단계;
    상기 코딩 기기의 프로세서가, 상기 이미지 블록을 표현하기 위해 예측 블록 및 잔차 블록을 생성하는 단계;
    상기 프로세서가, 상기 잔차 블록에 대한 공간 가변 변환(spatial varying transform, SVT)의 위치에 기반하여 상기 SVT를 위한 변환 알고리즘을 선택하는 단계 - 상기 SVT의 위치가 상기 잔차 블록의 하부 오른쪽 모서리를 커버하면 상기 SVT는 DST 버전 7(DST-7)을 포함하고, 상기 SVT의 위치가 상기 잔차 블록의 상부 왼쪽 모서리를 커버하면 상기 SVT는 DCT 버전 8(DCT-8)을 포함함 - ;
    상기 프로세서가, 상기 선택된 SVT를 사용하여 상기 잔차 블록을 변환된 잔차 블록으로 바꾸는 단계;
    상기 프로세서가, 상기 SVT의 유형을 비트스트림으로 인코딩하는 단계;
    상기 프로세서가, 상기 SVT의 위치를 상기 비트스트림으로 인코딩하는 단계; 및
    상기 프로세서가, 디코더로의 전송을 위해 상기 예측 블록 및 상기 변환된 잔차 블록을 상기 비트스트림으로 인코딩하는 단계
    를 포함하는 방법.
  17. 제16항에 있어서,
    상기 SVT의 상기 유형은 SVT 수직(SVT vertical, SVT-V) 유형 또는 SVT 수평(SVT horizontal, SVT-H) 유형인, 방법.
  18. 제17항에 있어서,
    상기 SVT-V 유형은 상기 잔차 블록의 높이와 동일한 높이 및 상기 잔차 블록의 폭의 절반인 폭을 포함하는, 방법.
  19. 제17항에 있어서,
    상기 SVT-H 유형은 상기 잔차 블록 높이의 절반인 높이 및 상기 잔차 블록의 폭과 동일한 폭을 포함하는, 방법.
  20. 제16항 내지 제19항 중 어느 한 항에 있어서,
    상기 SVT의 위치는 위치 인덱스 내에 인코딩되는, 방법.
  21. 제16항 내지 제19항 중 어느 한 항에 있어서,
    위치 인덱스는 후보 위치 단계 크기(candidate position step size, CPSS)에 따라 결정된 후보 위치의 집합으로부터 상기 위치를 지시하는 이진 코드를 수용하는, 방법.
  22. 제21항에 있어서,
    상기 SVT의 가장 가능성 있는 위치(most probable position)는 상기 위치 인덱스를 지시하는 상기 이진 코드 내의 최소 비트 수로 할당되는, 방법.
  23. 제16항 내지 제19항 중 어느 한 항에 있어서,
    이산 사인 변환(Discrete Sine Transform, DST) 알고리즘이 상기 잔차 블록의 좌측 경계에 위치하는 SVT 수직(SVT-V) 유형 변환을 위해 상기 프로세서에 의해 이용되는, 방법.
  24. 제16항 내지 제19항 중 어느 한 항에 있어서,
    DST 알고리즘이 상기 잔차 블록의 상부 경계에 위치하는 SVT 수평(SVT-H) 유형 변환을 위해 상기 프로세서에 의해 선택되는, 방법.
  25. 제16항 내지 제19항 중 어느 한 항에 있어서,
    이산 코사인 변환(Discrete Cosine Transform, DCT) 알고리즘이 상기 잔차 블록의 오른쪽 경계에 위치하는 SVT-V 유형 변환을 위해 상기 프로세서에 의해 선택되는, 방법.
  26. 제16항 내지 제19항 중 어느 한 항에 있어서,
    DCT 알고리즘이 상기 잔차 블록의 하부 경계에 위치하는 SVT-H 유형 변환을 위해 프로세서에 의해 선택되는, 방법.
  27. 제16항 내지 제19항 중 어느 한 항에 있어서,
    상기 잔차 블록과 관련된 코딩 단위의 우측 이웃이 인코딩되었고 상기 코딩 단위의 좌측 이웃은 인코딩되지 않았을 때, 상기 프로세서가, 상기 잔차 블록을 상기 변환된 잔차 블록으로 바꾸는 단계에 앞서 상기 프로세서가, 상기 잔차 블록 내의 샘플을 수평으로 플립하는 단계
    를 더 포함하는 방법.
  28. 디코딩 장치로서,
    인코딩할 픽처를 수신하거나 또는 디코딩할 비트스트림을 수신하도록 구성된 수신기;
    상기 수신기에 결합되고, 상기 비트스트림을 디코더에게 전송하거나 또는 디코딩된 이미지를 디스플레이에게 전송하도록 구성된 송신기;
    상기 수신기 또는 상기 송신기 중 적어도 하나에 커플링되고, 명령을 저장하도록 구성된 메모리; 및
    메모리에 커플링되고, 제1항 내지 제4항 중 어느 한 항에 따른 방법을 수행하기 위해 상기 메모리 내에 저장된 상기 명령을 실행하도록 구성된 프로세서
    를 포함하는 디코딩 장치.
  29. 코딩 장치로서,
    인코딩할 픽처를 수신하거나 또는 디코딩할 비트스트림을 수신하도록 구성된 수신기;
    상기 수신기에 결합되고, 상기 비트스트림을 디코더에게 전송하거나 또는 디코딩된 이미지를 디스플레이에게 전송하도록 구성된 송신기;
    상기 수신기 또는 상기 송신기 중 적어도 하나에 커플링되고, 명령을 저장하도록 구성된 메모리; 및
    메모리에 커플링되고, 제16항 내지 제19항 중 어느 한 항에 따른 방법을 수행하기 위해 상기 메모리 내에 저장된 상기 명령을 실행하도록 구성된 프로세서
    를 포함하는 코딩 장치.
  30. 제16항 내지 제19항 중 어느 하나의 항에 따른 방법에 의해 인코딩되는 비트스트림을 포함하는 비 일시적 저장 매체.
KR1020227029522A 2018-02-23 2019-02-04 비디오 코딩을 위한 위치 종속 공간 가변 변환 KR102597838B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862634613P 2018-02-23 2018-02-23
US62/634,613 2018-02-23
KR1020207027057A KR102438149B1 (ko) 2018-02-23 2019-02-04 비디오 코딩을 위한 위치 종속 공간 가변 변환
PCT/US2019/016479 WO2019164660A1 (en) 2018-02-23 2019-02-04 Position dependent spatial varying transform for video coding

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020207027057A Division KR102438149B1 (ko) 2018-02-23 2019-02-04 비디오 코딩을 위한 위치 종속 공간 가변 변환

Publications (2)

Publication Number Publication Date
KR20220122809A KR20220122809A (ko) 2022-09-02
KR102597838B1 true KR102597838B1 (ko) 2023-11-02

Family

ID=65444371

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020207027057A KR102438149B1 (ko) 2018-02-23 2019-02-04 비디오 코딩을 위한 위치 종속 공간 가변 변환
KR1020227029522A KR102597838B1 (ko) 2018-02-23 2019-02-04 비디오 코딩을 위한 위치 종속 공간 가변 변환

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020207027057A KR102438149B1 (ko) 2018-02-23 2019-02-04 비디오 코딩을 위한 위치 종속 공간 가변 변환

Country Status (8)

Country Link
US (2) US11388402B2 (ko)
EP (1) EP3750310A1 (ko)
JP (3) JP7121133B2 (ko)
KR (2) KR102438149B1 (ko)
CN (1) CN111758255A (ko)
BR (1) BR112020016913A2 (ko)
SG (1) SG11202008036TA (ko)
WO (1) WO2019164660A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6808889B2 (ja) * 2018-03-29 2021-01-06 日本放送協会 画像符号化装置、画像復号装置、及びプログラム

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
CN100452883C (zh) 2001-12-17 2009-01-14 微软公司 处理视频图像的方法
KR101403338B1 (ko) 2007-03-23 2014-06-09 삼성전자주식회사 영상의 부호화, 복호화 방법 및 장치
US20120128074A1 (en) 2008-08-12 2012-05-24 Nokia Corporation Video coding using spatially varying transform
GB0906058D0 (en) 2009-04-07 2009-05-20 Nokia Corp An apparatus
US9736500B2 (en) 2009-07-06 2017-08-15 Thomson Licensing Methods and apparatus for spatially varying residue coding
CN101668205B (zh) 2009-09-25 2011-04-20 南京邮电大学 基于残差宏块自适应下采样立体视频压缩编码方法
US8885714B2 (en) 2010-01-14 2014-11-11 Texas Instruments Incorporated Method and system for intracoding in video encoding
KR101487687B1 (ko) 2010-01-14 2015-01-29 삼성전자주식회사 큰 크기의 변환 단위를 이용한 영상 부호화, 복호화 방법 및 장치
KR101791078B1 (ko) 2010-04-16 2017-10-30 에스케이텔레콤 주식회사 영상 부호화/복호화 장치 및 방법
US9215470B2 (en) 2010-07-09 2015-12-15 Qualcomm Incorporated Signaling selected directional transform for video coding
BR122019025405B8 (pt) 2011-01-13 2023-05-02 Canon Kk Aparelho de codificação de imagem, método de codificação de imagem, aparelho de decodificação de imagem, método de decodificação de imagem e meio de armazenamento
WO2012167713A1 (en) 2011-06-10 2012-12-13 Mediatek Inc. Method and apparatus of scalable video coding
KR101943049B1 (ko) 2011-06-30 2019-01-29 에스케이텔레콤 주식회사 영상 부호화/복호화 방법 및 장치
JP5711098B2 (ja) 2011-11-07 2015-04-30 日本電信電話株式会社 画像符号化方法,画像復号方法,画像符号化装置,画像復号装置およびそれらのプログラム
US10390046B2 (en) 2011-11-07 2019-08-20 Qualcomm Incorporated Coding significant coefficient information in transform skip mode
KR20130050404A (ko) 2011-11-07 2013-05-16 오수미 인터 모드에서의 복원 블록 생성 방법
US9549182B2 (en) 2012-07-11 2017-01-17 Qualcomm Incorporated Repositioning of prediction residual blocks in video coding
CN103581676B (zh) 2012-08-10 2016-12-28 联发科技股份有限公司 视频编码变换系数的解码方法及装置
US20140056347A1 (en) 2012-08-23 2014-02-27 Microsoft Corporation Non-Transform Coding
CN103716623B (zh) 2013-12-17 2017-02-15 北京大学深圳研究生院 基于加权量化的视频压缩编解码方法及编解码器
CN104935927A (zh) 2014-03-17 2015-09-23 上海京知信息科技有限公司 一种基于流水线的hevc视频序列编解码加速方法
CN103997650B (zh) 2014-05-30 2017-07-14 华为技术有限公司 一种视频解码的方法和视频解码器
CN104125466B (zh) 2014-07-10 2017-10-10 中山大学 一种基于gpu的hevc并行解码方法
CN105530518B (zh) 2014-09-30 2019-04-26 联想(北京)有限公司 一种视频编码、解码方法及装置
US10306229B2 (en) * 2015-01-26 2019-05-28 Qualcomm Incorporated Enhanced multiple transforms for prediction residual
CN106254870B (zh) 2015-06-08 2020-08-18 财团法人工业技术研究院 采用自适性色彩转换的视频编码方法、系统和计算机可读取记录介质
US10491922B2 (en) 2015-09-29 2019-11-26 Qualcomm Incorporated Non-separable secondary transform for video coding
EP3410710A4 (en) 2016-01-28 2019-09-11 Nippon Hoso Kyokai CODING DEVICE, DECODING DEVICE AND PROGRAM
ES2817100B1 (es) 2016-03-28 2022-04-13 Kt Corp Metodo y aparato para procesar senales de video
PT3782361T (pt) * 2018-05-31 2023-11-17 Huawei Tech Co Ltd Transformada que varia espacialmente com um tipo de transformada adaptativa
US10516885B1 (en) * 2018-07-11 2019-12-24 Tencent America LLC Method and apparatus for video coding
US11102513B2 (en) * 2018-12-06 2021-08-24 Tencent America LLC One-level transform split and adaptive sub-block transform

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Cixun Zhang et al, Video Coding Using Spatially Varying Transform, IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, VOL. 21, NO. 2 (2011.02) 1부.
Cixun Zhang et al, VIDEO CODING USING VARIABLE BLOCK-SIZE SPATIALLY VARYING TRANSFORMS, 2009 IEEE International Conference on Acoustics, Speech and Signal Processing (2009.04.24.) 1부.
Jicheng An et al, Non-CE7: Boundary-Dependent Transform for Inter-Predicted Residue, JCT-VC of ITU-T and ISO/IEC, JCTVC-G281 (2011.11.22.) 1부.

Also Published As

Publication number Publication date
KR102438149B1 (ko) 2022-08-29
US11388402B2 (en) 2022-07-12
CN111758255A (zh) 2020-10-09
KR20200118890A (ko) 2020-10-16
WO2019164660A1 (en) 2019-08-29
EP3750310A1 (en) 2020-12-16
JP7121133B2 (ja) 2022-08-17
KR20220122809A (ko) 2022-09-02
JP2024029063A (ja) 2024-03-05
US20220124329A9 (en) 2022-04-21
JP7410236B2 (ja) 2024-01-09
US20200252610A1 (en) 2020-08-06
US11917152B2 (en) 2024-02-27
US20220377331A1 (en) 2022-11-24
JP2022159392A (ja) 2022-10-17
SG11202008036TA (en) 2020-09-29
JP2021515461A (ja) 2021-06-17
BR112020016913A2 (pt) 2020-12-15

Similar Documents

Publication Publication Date Title
CN115941942B (zh) 视频编码器、视频解码器及相应的编解码方法
JP2019515580A (ja) イントラ予測モードのネイバーベースのシグナリング
JP7423647B2 (ja) 異なるクロマフォーマットを使用した三角予測ユニットモードでのビデオコーディング
CN112352429A (zh) 利用分组的旁路剩余级别进行系数编码以用于依赖量化
TW202135530A (zh) 用於編碼和解碼視訊樣本區塊的方法、設備及系統
KR102660195B1 (ko) 루마 인트라 모드 시그널링
JP2024029063A (ja) ビデオ符号化のための位置依存の空間変化変換
US11601667B2 (en) Inter prediction method and related apparatus
JP2023104953A (ja) ビデオコーディングのための変換ユニット区分方法
WO2023154359A1 (en) Methods and devices for multi-hypothesis-based prediction
WO2023114155A1 (en) Methods and devices for decoder-side intra mode derivation
KR20240063982A (ko) 루마 인트라 모드 시그널링

Legal Events

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