KR20150115833A - 인트라 예측을 위한 모드 결정 단순화 - Google Patents
인트라 예측을 위한 모드 결정 단순화 Download PDFInfo
- Publication number
- KR20150115833A KR20150115833A KR1020157023224A KR20157023224A KR20150115833A KR 20150115833 A KR20150115833 A KR 20150115833A KR 1020157023224 A KR1020157023224 A KR 1020157023224A KR 20157023224 A KR20157023224 A KR 20157023224A KR 20150115833 A KR20150115833 A KR 20150115833A
- Authority
- KR
- South Korea
- Prior art keywords
- mode
- intra prediction
- prediction modes
- current set
- approximate
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/11—Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/19—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding using optimisation based on Lagrange multipliers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
일반적으로, 다수의, 상이한 예측 모드들로부터 선택할 때 모드 선택의 복잡성을 감소시키는 기법들이 설명된다. 프로세서를 포함하는 비디오 코딩 디바이스가 그 기법들을 수행할 수도 있다. 프로세서는 현재 세트에 식별된 인트라 예측 모드들의 미리 정의된 세트를 위한 근사 비용들을 계산할 수도 있다. 인트라 예측 모드들의 현재 세트는 인트라 예측 모드들의 전체 수보다 더 적은 수의 모드들을 포함할 수도 있다. 프로세서는 하나 이상의 최고 확률 인트라 예측 모드들을 위해 계산된 근사 비용들을 임계치와 비교하고 하나 이상의 최고 확률 인트라 예측 모드들로 현재 세트의 인트라 예측 모드들 중의 하나 이상을 교체할 수도 있다. 프로세서는 현재 세트에서 식별된 각각의 인트라 예측 모드에 대해 레이트 왜곡 분석을 수행하고 현재 세트의 모드를 이용하여 현재 블록에 대해 인트라 예측 코딩을 수행할 수도 있다.
Description
본 개시는 비디오 코딩에 관한 것이고, 보다 상세하게는, 비디오 코딩의 인트라 예측 양태들에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인 휴대정보 단말기 (PDA) 들, 랩탑 또는 데스크탑 컴퓨터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 휴대 또는 위성 무선 전화기들, 원격 화상회의 디바이스들 등을 포함한, 광범위한 디바이스들에 포함될 수 있다. 디지털 비디오 디바이스들은, MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, AVC (Advanced Video Coding) 에 의해 정의되는 표준들, 그리고 그러한 표준들의 확장들에서 설명된 것들과 같은 비디오 압축 기법들을 구현하여, 디지털 비디오 정보를 더 효율적으로 송신 및 수신한다. MPEG 과 ITU-T 간의 공동 작업인 JCT-VC ("Joint Collaborative Team - Video Coding") 에 의해 개발되고 있는 고 효율 비디오 코딩 (HEVC) 표준과 같은 새로운 비디오 코딩 표준들이 개발되고 있다. 신생의 HEVC 표준은 종종 H.265 로 지칭되지만, 그러한 표기가 공식적으로 이루어진 것은 아니다.
개요
일반적으로, 본 개시는 다수의, 상이한 예측 모드들로부터 선택할 때 모드 선택의 복잡성을 감소시키는 기법들을 설명한다. 일반적으로, 비디오 코더는 (예를 들어, 동일한 화상의 다른 블록들에 상대적으로 인코딩된) 인트라 모드 인코딩, 또는 (예를 들어, 이전에 코딩된 화상의 블록들에 상대적으로 인코딩된) 인터 모드 인코딩을 이용하여 화상의 블록들을 코딩할 수도 있다. 일부 예들에서, 비디오 코더는 많은 수의 상이한 모드들로부터 정해진 블록을 코딩하기 위한 모드를 선택할 수도 있다. 비디오 코더는 선택된 모드를 위한 왜곡의 레이트의 근사치를 나타내는 대응하는 근사 비용 값에 기초하여 모드를 선택할 수도 있다. 각각의 가능한 예측 모드를 위한 근사 비용 값들을 결정하기 보다는, 비디오 코더는 낮은 왜곡을 제공할 가능성이 더 높은 모드들의 서브세트를 초기에 선택하고 낮은 왜곡을 제공하는 추가 모드들에 대한 검색으로 선택된 서브세트를 후속하여 정제 (refine) 함으로써 모드들의 수를 감소시킬 수도 있다.
일 실시형태에서, 비디오 데이터를 인코딩하는 방법은, 적어도 하나의 인트라 예측 모드를 갖는 인트라 예측 모드들의 미리 정의된 세트를 포함하는 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 근사 비용을 계산하는 것을 포함한다. 인트라 예측 모드들의 현재 세트는 비디오 데이터의 현재 블록을 코딩하기 위해 이용가능한 인트라 예측 모드들의 전체 수보다 더 적은 수의 인트라 예측 모드들을 포함할 수도 있다. 그 방법은 또한, 현재 블록에 인접한 비디오 데이터의 하나 이상의 이웃 블록들을 인코딩하는데 사용된 인트라 예측 모드들에 기초하여 결정된 현재 블록을 위한 하나 이상의 최고 확률 인트라 예측 모드들을 위한 근사 비용을 계산하는 것을 포함할 수도 있다. 그 방법은 또한 하나 이상의 최고 확률 인트라 예측 모드들을 위해 계산된 근사 비용들의 각각을 임계치와 비교하는 것을 포함할 수도 있다. 그 방법은 또한, 그 비교들에 기초하여 하나 이상의 최고 확률 인트라 예측 모드들로 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들 중의 하나 이상을 교체하는 것을 포함할 수도 있다. 그 방법은 또한, 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 레이트 왜곡 비용을 결정하기 위하여 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드에 대해 레이트 왜곡 분석을 수행하는 것을 포함할 수도 있다. 그 방법은 또한, 현재 블록을 인코딩하기 위하여 결정된 레이트 왜곡 비용들에 기초하여 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들 중의 하나에 따라 현재 블록에 대해 인트라 예측 코딩을 수행하는 것을 포함할 수도 있다.
일 실시형태에서, 비디오 코딩 디바이스는 비디오 데이터를 코딩하기 위해 인트라 예측 프로세스를 수행하도록 구성될 수도 있다. 비디오 코딩 디바이스는 적어도 하나의 인트라 예측 모드를 갖는 인트라 예측 모드들의 미리 정의된 세트를 포함하는 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 근사 비용을 계산하도록 구성된 프로세서를 포함할 수도 있고, 여기서 인트라 예측 모드들의 현재 세트는 비디오 데이터의 현재 블록을 코딩하기 위해 이용가능한 인트라 예측 모드들의 전체 수보다 더 적은 수의 인트라 예측 모드들을 포함한다. 그 비디오 코딩 디바이스는 또한, 현재 블록에 인접한 비디오 데이터의 하나 이상의 이웃 블록들을 인코딩하는데 사용된 인트라 예측 모드들에 기초하여 결정된 현재 블록을 위한 하나 이상의 최고 확률 인트라 예측 모드들을 위한 근사 비용을 계산하도록 구성될 수도 있다. 그 비디오 코딩 디바이스는 또한 하나 이상의 최고 확률 인트라 예측 모드들을 위해 계산된 근사 비용들의 각각을 임계치와 비교하도록 구성될 수도 있다. 그 비디오 코딩 디바이스는 또한, 그 비교들에 기초하여 하나 이상의 최고 확률 인트라 예측 모드들로 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들 중의 하나 이상을 교체하도록 구성될 수도 있다. 그 비디오 코딩 디바이스는 또한, 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 레이트 왜곡 비용을 결정하기 위하여 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드에 대해 레이트 왜곡 분석을 수행하도록 구성될 수도 있다. 그 비디오 코딩 디바이스는 또한, 현재 블록을 인코딩하기 위하여 결정된 레이트 왜곡 비용들에 기초하여 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들 중의 하나에 따라 현재 블록에 대해 인트라 예측 코딩을 수행하도록 구성될 수도 있다.
일 실시형태에서, 비디오 코딩 디바이스는, 비디오 데이터를 코딩하기 위해 인트라 예측 프로세스를 수행하도록 구성될 수도 있고, 상기 비디오 코딩 디바이스는 적어도 하나의 인트라 예측 모드를 갖는 인트라 예측 모드들의 미리 정의된 세트를 포함하는 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 근사 비용을 계산하는 수단을 포함하고, 여기서 인트라 예측 모드들의 현재 세트는 비디오 데이터의 현재 블록을 코딩하기 위해 이용가능한 인트라 예측 모드들의 전체 수보다 더 적은 수의 인트라 예측 모드들을 포함한다. 그 비디오 코딩 디바이스는 또한, 현재 블록에 인접한 비디오 데이터의 하나 이상의 이웃 블록들을 인코딩하는데 사용된 인트라 예측 모드들에 기초하여 결정된 현재 블록을 위한 하나 이상의 최고 확률 인트라 예측 모드들을 위한 근사 비용을 계산하는 수단을 포함할 수도 있다. 그 비디오 코딩 디바이스는 또한 하나 이상의 최고 확률 인트라 예측 모드들을 위해 계산된 근사 비용들의 각각을 임계치와 비교하는 수단을 포함할 수도 있다. 그 비디오 코딩 디바이스는 또한, 그 비교들에 기초하여 하나 이상의 최고 확률 인트라 예측 모드들로 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들 중의 하나 이상을 교체하는 수단을 포함할 수도 있다. 그 비디오 코딩 디바이스는 또한, 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 레이트 왜곡 비용을 결정하기 위하여 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드에 대해 레이트 왜곡 분석을 수행하는 수단을 포함할 수도 있다. 그 비디오 코딩 디바이스는 또한, 현재 블록을 인코딩하기 위하여 결정된 레이트 왜곡 비용들에 기초하여 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들 중의 하나에 따라 현재 블록에 대해 인트라 예측 코딩을 수행하는 수단을 포함할 수도 있다.
일 실시형태에서, 비일시적 컴퓨터 판독가능 저장 매체는, 실행될 때, 하나 이상의 프로세서들로 하여금, 적어도 하나의 인트라 예측 모드를 갖는 인트라 예측 모드들의 미리 정의된 세트를 포함하는 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 근사 비용을 계산하게 하는 저장된 명령을 포함하고, 여기서 인트라 예측 모드들의 현재 세트는 비디오 데이터의 현재 블록을 코딩하기 위해 이용가능한 인트라 예측 모드들의 전체 수보다 더 적은 수의 인트라 예측 모드들을 포함한다. 그 비일시적 컴퓨터 판독가능 저장 매체는 또한, 실행될 때, 하나 이상의 프로세서들로 하여금, 현재 블록에 인접한 비디오 데이터의 하나 이상의 이웃 블록들을 인코딩하는데 사용된 인트라 예측 모드들에 기초하여 결정된 현재 블록을 위한 하나 이상의 최고 확률 인트라 예측 모드들을 위한 근사 비용을 계산하게 하는 저장된 명령을 포함할 수도 있다. 그 비일시적 컴퓨터 판독가능 저장 매체는 또한, 실행될 때, 하나 이상의 프로세서들로 하여금, 하나 이상의 최고 확률 인트라 예측 모드들을 위해 계산된 근사 비용들의 각각을 임계치와 비교하게 하는 저장된 명령을 포함할 수도 있다. 그 비일시적 컴퓨터 판독가능 저장 매체는 또한, 실행될 때, 하나 이상의 프로세서들로 하여금, 그 비교들에 기초하여 하나 이상의 최고 확률 인트라 예측 모드들로 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들 중의 하나 이상을 교체하게 하는 저장된 명령을 포함할 수도 있다. 그 비일시적 컴퓨터 판독가능 저장 매체는 또한, 실행될 때, 하나 이상의 프로세서들로 하여금, 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 레이트 왜곡 비용을 결정하기 위하여 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드에 대해 레이트 왜곡 분석을 수행하게 하는 저장된 명령을 포함할 수도 있다. 그 비일시적 컴퓨터 판독가능 저장 매체는 또한, 실행될 때, 하나 이상의 프로세서들로 하여금, 현재 블록을 인코딩하기 위하여 결정된 레이트 왜곡 비용들에 기초하여 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들 중의 하나에 따라 현재 블록에 대해 인트라 예측 코딩을 수행하게 하는 저장된 명령을 포함할 수도 있다.
하나 이상의 예들의 상세는 첨부 도면 및 아래의 설명에 제시되어 있다. 다른 특징, 목적 및 이점들은 상세한 설명 및 도면, 그리고 청구항들로부터 분명해질 것이다.
도 1은, 다수의 상이한 예측 모드들로부터 선택할 때 모드 선택의 복잡성을 감소시키기 위하여 본 개시에서 설명된 기법들을 이용하도록 구성될 수도 있는 예의 비디오 인코딩 및 디코딩 시스템을 도시하는 블록도이다.
도 2는, 다수의 상이한 예측 모드들로부터 선택할 때 모드 선택의 복잡성을 감소시키기 위한 기법들을 구현할 수도 있는 비디오 인코더의 예를 도시하는 블록도이다.
도 3 은 본 개시에 기재된 기법들을 구현할 수도 있는 예의 비디오 디코더를 도시하는 블록도이다.
도 4a 는 본 개시에 설명된 기법들에 따라, 비디오 코더가 선택할 수도 있는 인트라 예측 모드들의 개념적인 표현을 도시하는 블록도이다.
도 4b 는 본 개시에 설명된 기법들에 따라, 인트라 예측 코딩될 현재 블록 및 이웃 블록들의 개념적인 표현을 도시하는 블록도이다.
도 5는 다수의 상이한 예측 모드들로부터 선택할 때 모드 선택의 복잡성을 감소시키는 도 2에 도시된 비디오 인코더와 같은 비디오 코더의 예시적인 동작들을 도시하는 플로우차트이다.
도 6은 본 개시의 기법들에 따라, 인트라 예측 모드들의 현재 세트를 초기에 구성하기 위한, 도 2에 도시된 비디오 인코더와 같은 비디오 코더의 예시적인 동작들을 도시하는 플로우차트이다.
도 7a는, 인트라 예측 모드들의 현재 세트를 포스트 프로세싱하기 위한, 도 2에 도시된 비디오 인코더와 같은 비디오 코더의 예시적인 동작들을 도시하는 플로우차트이다.
도 7b는, 인트라 예측 모드들의 현재 세트를 포스트 프로세싱하기 위한, 도 2에 도시된 비디오 인코더와 같은 비디오 코더의 예시적인 동작들을 도시하는 플로우차트이다.
도 8은, 인트라 예측 모드들의 현재 세트를 정제하기 위한, 도 2에 도시된 비디오 인코더와 같은 비디오 코더의 예시적인 동작들을 도시하는 플로우차트이다.
도 2는, 다수의 상이한 예측 모드들로부터 선택할 때 모드 선택의 복잡성을 감소시키기 위한 기법들을 구현할 수도 있는 비디오 인코더의 예를 도시하는 블록도이다.
도 3 은 본 개시에 기재된 기법들을 구현할 수도 있는 예의 비디오 디코더를 도시하는 블록도이다.
도 4a 는 본 개시에 설명된 기법들에 따라, 비디오 코더가 선택할 수도 있는 인트라 예측 모드들의 개념적인 표현을 도시하는 블록도이다.
도 4b 는 본 개시에 설명된 기법들에 따라, 인트라 예측 코딩될 현재 블록 및 이웃 블록들의 개념적인 표현을 도시하는 블록도이다.
도 5는 다수의 상이한 예측 모드들로부터 선택할 때 모드 선택의 복잡성을 감소시키는 도 2에 도시된 비디오 인코더와 같은 비디오 코더의 예시적인 동작들을 도시하는 플로우차트이다.
도 6은 본 개시의 기법들에 따라, 인트라 예측 모드들의 현재 세트를 초기에 구성하기 위한, 도 2에 도시된 비디오 인코더와 같은 비디오 코더의 예시적인 동작들을 도시하는 플로우차트이다.
도 7a는, 인트라 예측 모드들의 현재 세트를 포스트 프로세싱하기 위한, 도 2에 도시된 비디오 인코더와 같은 비디오 코더의 예시적인 동작들을 도시하는 플로우차트이다.
도 7b는, 인트라 예측 모드들의 현재 세트를 포스트 프로세싱하기 위한, 도 2에 도시된 비디오 인코더와 같은 비디오 코더의 예시적인 동작들을 도시하는 플로우차트이다.
도 8은, 인트라 예측 모드들의 현재 세트를 정제하기 위한, 도 2에 도시된 비디오 인코더와 같은 비디오 코더의 예시적인 동작들을 도시하는 플로우차트이다.
비디오 인코더와 같은 비디오 코더로 하여금 다수의 상이한 예측 모드들로부터 선택할 때 모드 선택의 복잡성을 감소시키는 것을 가능하게 할 수도 있는 기법들이 본 개시에서 설명된다. 일반적으로, 인코딩된 비디오 데이터는 예측 데이터 및 잔차 데이터를 포함할 수도 있다. 예를 들어, 비디오 인코더는 인트라 예측 모드 또는 인터 예측 모드 동안 예측 데이터를 생성할 수도 있다. 인트라 예측은, 가령, 화상의 블록에서 픽셀 값들을, 동일한 화상의 이웃하는 이전에 코딩된 블록들에서의 참조 샘플들에 상대적으로, 예측하는 것을 일반적으로 수반하고, 여기서 선택된 이전에 코딩된 블록은 참조 블록으로 지칭될 수도 있다. 인트라 예측은 또한 공간 예측으로 지칭될 수도 있는데, 왜냐하면 선택된 참조 블록이 예측될 블록과 동일한 화상로부터 있기 때문이다. 인터 예측은 통상, 시간적으로 떨어진 화상 (temporally removed picture) 들에서 하나 이상의 참조 샘플들에 상대적으로 화상의 블록에서 픽셀 값들을 예측하는 것을 수반한다. 이런 이유로, 인트라 예측은 시간 예측으로 지칭될 수도 있는데, 왜냐하면 선택된 참조 블록들이 예측될 블록을 갖는 화상과는 상이한 (그리고 따라서 시간적으로 떨어진 (temporally removed)) 화상들로부터 있기 때문이다.
인트라 예측을 수행할 때, 비디오 인코더는 다수의 상이한 인트라 예측 모드들 중에서 선택할 수도 있다. 인트라 예측을 수행할 때, 비디오 인코더는 종종, 35개 인트라 예측 모드들 중의 각각과 연관된 근사 비용 (approximate cost) 을 분석한다. 이 근사 비용은 전체 레이트 왜곡 비용 (full rate-distortion cost) 에 근사할 수도 있다. 전체 레이트 왜곡 비용을 계산하는 것은 통상, 비디오 인코더가 인트라 예측 모드들 중의 각각을 이용하여 예측된 블록을 계산할 것을 요구한다. 다음으로, 비디오 인코더는, 예측된 블록들의 각각과 현재 블록간의 차이 (보통, 위에 언급된 잔차 픽셀 값들을 명시하는 "잔차 블록" 으로 지칭된다) 를 결정하고 공간 도메인 (spatial domain) 으로부터 주파수 도메인 (frequency domain) 으로 잔차 블록의 각각을 변환한다. 다음으로, 비디오 인코더는 대응하는 인코딩된 비디오 블록을 생성하기 위하여 변환된 잔차 블록들의 각각을 양자화할 수도 있다. 마지막으로, 비디오 인코더는 인코딩된 비디오 블록을 디코딩하며, 디코딩된 비디오 블록의 각각을 현재 블록과 비교하여 왜곡 메트릭을 결정할 수도 있다. 또한, 이 전체 레이트 왜곡 분석은 인트라 예측 모드들 중의 각각을 위해, 인코딩된 비디오 블록들의 각각을 시그널링하는데 사용된 비트들의 양을 계산하는 것을 수반한다. 그러므로, 비디오 인코더는 35개 인트라 예측 모드들 중의 대응하는 하나를 이용하여 예측된 블록들의 각각을 위해 이 레이트 왜곡 분석을 수행하기 보다는 근사 비용을 계산할 수도 있다.
일부 예들에서, 비디오 인코더는 인트라 예측 모드들 중의 각각을 위해 예측된 예측 블록들의 각각을 위한 근사 비용을 계산할 수도 있다. 가령, 비디오 인코더는 초기에, 35개 인트라 예측 모드들 중의 각각에 대응하는 35개 근사 비용들을 계산할 수도 있다. 다음으로, 비디오 인코더는, 근사 비용이 어떤 상황들하에서 레이트 왜곡 비용을 부정확하게 근사할 수도 있으므로, 인트라 예측 모드들 중의 일부 서브세트를 위해 전체 레이트 왜곡 분석을 수행할 수도 있다.
서브세트를 이용한 위의 단순화는 무차별 대입 검색 (brute force searching) 과 비교하여 필요한 계산의 양을 감소시킬 수도 있지만, 그러한 기법들은 대체로, 35개 인트라 예측 모드들 중의 각각에 대응하는 근사된 비용들의 35개 계산들을 여전히 필요로 할 수도 있다. 그러한 기법들은, 비디오 인코더가 계산 집약적인 전체 레이트 왜곡 분석을 수행하는 횟수를 감소시킬 수도 있지만, 이 프로세스는 35개 모드들의 각각에 대해 근사 비용들을 계산하는데 필요한 복잡성 및 시간을 고려하면 비디오 데이터의 실시간 인코딩 또는 근실시간 인코딩에 잘 맞지 않을 수도 있다. 일부 실시간 비디오 인코딩 환경들에서, 모든 가능한 모드들을 위한 근사 비용들을 계산하기 위한 프로세싱 요건들은 설계 제약들을 초과할 수도 있다.
본 개시에 설명된 기법들에 따르면, 비디오 인코더는 근사, 및 일부 경우들에서, 전체 레이트 왜곡 분석이 수행되는 모드들의 수를 감소시킴으로써, 인트라 예측 프로세스를 수행하는 것과 연관된 시간 및 복잡성을 감소시키는 것이 가능할 수도 있다. 인트라 예측 프로세스를 수행하는 것과 연관된 시간 및 복잡성을 감소시킴으로써, 비디오 인코더는 실시간 비디오 인코딩 또는 근실시간 비디오 인코딩을 수행할 수도 있다.
동작에 있어서, 비디오 인코더는, 적어도 하나의 인트라 예측 모드를 포함하지만 비디오 데이터의 현재 블록을 코딩하기 위해 이용가능한 인트라 예측 모드들의 전체 수보다 더 적은 수의 인트라 예측 모드들의 미리 정의된 세트에서 식별된 각각의 인트라 예측 모드를 위한 근사 비용을 계산할 수도 있다. 종종, 이 미리 정의된 세트는 인트라 예측을 수행할 때 사용될 가능성이 통계적으로 더 높은 것으로 관찰된 그러한 모드들을 포함한다. 일부 사례들에서, 이 미리 정의된 세트는 고정적 (fixed) 일 수도 있다. 일 예에서, 이 미리 정의된 세트는 모드들 0, 1 및 26 을 포함한다. 이 미리 정의된 세트는, 이 점에서, 현재 블록을 위한 인트라 예측 모드들의 현재 세트를 포함할 수도 있다. 일부 사례들에서, 미리 정의된 세트는, 샘플링 오프셋으로 평면 모드 (planar mode), 최고 확률 모드 (most probable mode) 및 각도 모드 (angular mode) 들에 의해 형성될 수 있다.
다음으로, 비디오 인코더는 정제 프로세스에서 추가 인트라 예측 모드들을 검색하여, 인트라 예측 모드들의 현재 세트에 추가 인트라 예측 모드들을 추가할 수도 있다. 일부 예들에서, 이 검색은, 인트라 예측 모드들의 미리 정의된 세트에서 식별된 각각의 모드를 위해 계산된 근사 비용들 중에서 최저 상대 계산 근사 비용을 갖는 인트라 예측 모드들의 미리 정의된 세트에서의 모드로부터 출발하는 2진 검색과 비슷할 수도 있다.
예시하자면, 모드 26 은 현재 예에서 최저 근사 비용을 가질 수도 있다. 이 가정하에서, 2진 검색은 모드 26으로부터 시작될 수도 있고, 여기서 모드 값, 즉 26 은 약간의 오프셋 F 만큼 감소 및 증가되어 26 + F 및 26 - F 에 도달한다. 다음으로 비디오 인코더는 모드들 26 + F 및 26 - F 의 각각을 위한 근사 비용들을 계산할 수도 있고 모드들 26, 26 + F 및 26 - F 중에서 최저 근사 비용들을 갖는 모드를 선택한다. 다음으로 비디오 인코더는 이 비교에 기초하여 현재 세트에서 모드를 교체, 예를 들어, 현재 세트에서의 모드 26 을, 모드들 26, 26 + F 및 26 - F 중에서 최저 근사 비용들을 갖는 선택된 모드로 교체할 수도 있다.
다음으로 검색은 이런 식으로 반복하여, F 를 F/2 로 이등분하고, 검색을 모드 26 ( 모드 26 + F 또는 모드 26 - F 중의 어느 것도 모드 26보다 작은 근사 비용을 갖지 않은 경우), 모드 26 + F (모드 26 + F 가 현재 세트에 추가된 경우) 또는 모드 26 - F (모드 26 - F가 현재 세트에 추가된 경우) 에 대해 리포커싱한다. 검색 프로세스는 F 가 분수로 나누어질 때까지 계속된다 (F 가 2의 거듭제곱 (power) 인 값으로서 시작하는 것으로 가정한다). 그래서, 예를 들어, F 가 4 로 설정되는 경우에, 프로세스는 F = 4 로 한번, F = 2 로 한번, F =1 로 한번 반복되고 다음으로 F = 0.5 일 때 종결된다.
이런 식으로, 비디오 인코더는 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들을 위해 계산된 근사 비용들에 기초하여 추가 인트라 예측 모드들을 검색할 수도 있다. 다음으로, 비디오 인코더는 추가 인트라 예측 모드들 중의 각각을 위한 근사 비용들을 계산하며, 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들의 각각을 위해 계산된 근사 비용들과 추가 인트라 예측 모드들을 위해 계산된 근사 비용들의 비교에 기초하여 인트라 예측 모드들의 현재 세트에 추가 인트라 예측 모드들을 추가할 수도 있다. 결과적으로, 본 개시의 기법들은 인트라 예측에서 모드 판정을 단순화할 수도 있고 동시에 예측의 정확도가 현저히 감소되지 않을 수도 있고, 코딩 효율이 현저히 희생되지 않을 수도 있다. 제안된 기법들은, 일부 예들에서, 근사 비용 계산들의 수 및 전체 레이트 왜곡 비용 계산들의 수를 1/2 를 넘는 만큼 감소시킬 수도 있다.
도 1은, 다수의 상이한 예측 모드들로부터 선택할 때 모드 선택의 복잡성을 감소시키기 위하여 본 개시에서 설명된 기법들을 이용하도록 구성될 수도 있는 예의 비디오 인코딩 및 디코딩 시스템 (10) 을 도시하는 블록도이다. 도 1의 예에 도시된 바처럼, 시스템 (10) 은 목적지 디바이스 (14) 에 의한 디코딩을 위해 인코딩된 비디오를 생성하는 소스 디바이스 (12) 를 포함한다. 소스 디바이스 (12) 는 통신 채널 (16) 을 통해 목적지 디바이스 (14) 로 인코딩된 비디오를 송신할 수도 있거나 또는 인코딩된 비디오를 저장 매체 (34) 또는 파일 서버 (36) 에 저장하여, 인코딩된 비디오가 원하는 대로 목적지 디바이스 (14) 에 의해 액세스될 수 있도록 할 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 데스크탑 컴퓨터들, 노트북 (즉, 랩탑) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 전화기 핸드셋 (셀룰러 전화기 또는 핸드셋 그리고 소위 스마트폰들 포함), 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 재생기들, 비디오 게임용 콘솔들 등을 포함한, 광범위하게 다양한 디바이스들 중 어느 것을 포함할 수도 있다.
많은 경우들에서, 그러한 디바이스들은 무선 통신을 위해 갖추어질 수도 있다. 그러므로, 통신 채널 (16) 은 무선 채널을 포함할 수도 있다. 다르게는, 통신 채널 (16) 은 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들과 같은 인코딩된 비디오 데이터의 송신에 적합한, 유선 채널, 무선 및 유선 채널들의 조합 또는 임의의 다른 타입의 통신 채널 또는 통신 채널들의 조합을 포함할 수도 있다. 일부 예들에서, 통신 채널 (16) 은, 로컬 영역 네트워크 (LAN), 와이드 영역 네트워크 (WAN), 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷 기반 네트워크의 부분을 형성할 수도 있다. 그러므로, 통신 채널 (16) 은 일반적으로, 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 비디오 데이터를 송신하기 위한, 임의의 적합한 통신 매체, 또는 상이한 통신 매체들의 집합 (collection) 을 나타내며, 유선 또는 무선 매체의 임의의 적합한 조합을 포함한다. 통신 채널 (16) 은 라우터, 스위치, 기지국, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 통신을 용이하게 하기 위해 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
또한 도 1의 예에 도시된 바처럼, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 변조기/복조기 (22) ("모뎀 22") 및 송신기 (24) 를 포함한다. 소스 디바이스 (12) 에서, 비디오 소스 (18) 는 비디오 캡쳐 디바이스와 같은 소스를 포함할 수도 있다. 예로써, 비디오 캡쳐 디바이스는, 비디오 카메라, 이전에 캡쳐된 비디오를 포함하는 비디오 아카이브, 비디오 콘텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스, 및/또는 소스 비디오로서 컴퓨터 그래픽스 데이터를 생성하기 위한 컴퓨터 그래픽스 시스템 중의 하나 이상을 포함할 수도 있다. 일 예로서, 비디오 소스 (18) 가 비디오 카메라이면, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 소위 카메라 폰들 또는 비디오 폰들을 형성할 수도 있다. 하지만, 본 개시에 기재된 기법들은 무선 애플리케이션들 또는 세팅들에 한정되지 않고, 비디오 인코딩 및/또는 디코딩 능력을 포함하는 비무선 디바이스들에 적용될 수도 있다. 그러므로, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 여기에 기재된 기법들을 지원할 수 있는 코딩 디바이스들의 예들일뿐이다.
비디오 인코더 (20) 는 캡쳐된, 이전에 캡쳐된 또는 컴퓨터 생성된 비디오를 인코딩할 수도 있다. 인코딩되면, 비디오 인코더 (20) 는 이 인코딩된 비디오를 모뎀 (22) 으로 출력할 수도 있다. 다음으로, 모뎀 (22) 은 무선 통신 프로토콜과 같은 통신 표준에 따라 인코딩된 비디오를 변조할 수도 있고, 그 결과 송신기 (24) 는 목적지 디바이스 (14) 로 변조된 인코딩 비디오 데이터를 송신할 수도 있다. 모뎀 (22) 은 다양한 믹서들, 필터들, 증폭기들 또는 신호 변조를 위해 설계된 다른 컴포넌트들을 포함할 수도 있다. 송신기 (24) 는 증폭기들, 필터들 및 하나 이상의 안테나들을 포함하는, 데이터를 송신하기 위해 설계된 회로들을 포함할 수도 있다.
비디오 인코더 (20) 에 의해 인코딩되는, 캡쳐된, 미리 캡쳐된, 또는 컴퓨터 생성된 비디오가 또한, 나중의 취출, 디코딩 및 소비를 위해 저장 매체 (34) 또는 파일 서버 (36) 에 저장될 수도 있다. 저장 매체 (34) 는 블루레이 디스크, DVD, CD-ROM, 플래시 메모리, 또는 인코딩된 비디오를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체를 포함할 수도 있다. 목적지 디바이스 (14) 는 저장 매체 (34) 또는 파일 서버 (36) 에 저장된 인코딩된 비디오에 액세스하고, 이 인코딩된 비디오를 디코딩하여 디코딩된 비디오를 생성하고 이 디코딩된 비디오를 플레이백할 수도 있다.
파일 서버 (36) 는, 인코딩된 비디오를 저장하고 그 인코딩된 비디오를 목적지 디바이스 (14) 로 송신할 수 있는 임의의 타입의 서버일 수도 있다. 예의 파일 서버들은 웹 서버 (예를 들어, 웹사이트용), FTP 서버, NAS (network attached storage) 디바이스, 로컬 디스크 드라이브, 또는 인코딩된 비디오 데이터를 저장하고 이를 목적지 디바이스로 송신할 수 있는 임의의 다른 타입의 디바이스를 포함한다. 파일 서버 (36) 로부터 인코딩된 비디오 데이터의 송신은, 스트리밍 송신, 다운로드 송신 또는 양자 모두의 조합일 수도 있다. 목적지 디바이스 (14) 는, 인터넷 접속을 포함한, 임의의 표준 데이터 접속에 따라 파일 서버 (36) 에 액세스할 수도 있다. 이 접속은 무선 채널 (예를 들어, Wi-Fi 접속 또는 무선 셀룰러 데이터 접속), 유선 접속 (예를 들어, DSL, 케이블 모뎀 등), 유선 및 무선 채널들 양자 모두의 조합 또는 파일 서버에 저장된 인코딩된 비디오 데이터에 액세스하는데 적합한 임의의 다른 타입의 통신 채널을 포함할 수도 있다.
도 1의 예에서, 목적지 디바이스 (14) 는 수신기 (26), 모뎀 (28), 비디오 디코더 (30) 및 디스플레이 디바이스 (32) 를 포함한다. 목적지 디바이스 (14) 의 수신기 (26) 는 채널 (16) 을 통해 정보를 수신하고, 모뎀 (28) 은 그 정보를 복조하여 비디오 디코더 (30) 를 위한 복조된 비트스트림을 생성한다. 채널 (16) 상에서 통신되는 정보는 연관된 인코딩 비디오 데이터를 디코딩함에 있어서 비디오 디코더 (30) 에 의한 사용을 위해 비디오 인코더 (20) 에 의해 생성되는 다양한 신택스 정보를 포함할 수도 있다. 그러한 신택스는 또한, 저장 매체 (34) 또는 파일 서버 (36) 에 저장된 인코딩된 비디오 데이터와 함께 포함될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 비디오 데이터를 인코딩 또는 디코딩할 수 있는 각각의 인코더-디코더 (CODEC) 의 부분을 형성할 수도 있다.
목적지 디바이스 (14) 의 디스플레이 디바이스 (32) 는 뷰어에 의한 소비를 위해 비디오 데이터를 표출할 수 있는 임의의 타입의 디스플레이를 나타낸다. 목적지 디바이스 (14) 와 통합된 것으로 도시되었지만, 디스플레이 디바이스 (32) 는 목적지 디바이스 (14) 와 통합되거나, 또는 외부에 있을 수도 있다. 일부 예들에서, 목적지 디바이스 (14) 는, 통합된 디스플레이 디바이스를 포함할 수도 있고 또한 외부 디스플레이 디바이스와 인터페이스 접속하도록 구성될 수도 있다. 다른 예들에서, 목적지 디바이스 (14) 는 디스플레이 디바이스일 수도 있다. 일반적으로, 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 어느 것을 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 비디오 압축 표준, 이를테면 현재 개발중인 HEVC (High Efficiency Video Coding) 표준에 따라 동작할 수도 있고, HEVC 테스트 모델 (HM) 에 따를 수도 있다. 다르게는, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, MPEG4, Part 10, AVC (Advanced Video Coding) 으로도 다르게 지칭되는, ITU-T H.264 표준과 같은 다른 사유 (proprietary) 또는 산업 표준들 또는 그러한 표준들의 확장들에 따라 동작할 수도 있다. 하지만, 본 개시의 기법들은 임의의 특정 코딩 표준에 한정되지 않는다. 비디오 압축 표준들의 다른 예들은 MPEG-2 및 ITU-T H.263 를 포함한다.
비록 도 1에 도시되지는 않았지만, 일부 양태들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 각각 오디오 인코더 및 디코더와 통합될 수도 있고, 적절한 MUX-DEMUX 유닛들 또는 다른 하드웨어 및 소프트웨어를 포함하여, 공통 데이터 스트림 또는 분리된 데이터 스트림들에서 오디오 및 비디오 양자 모두의 인코딩을 핸들링 (handling) 할 수도 있다. 적용가능하면, 일부 예들에서, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜 또는 다른 프로토콜들 이를테면 사용자 데이터그램 프로토콜 (UDP) 을 따를 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 각각 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서 (DSP) 들, 주문형 반도체 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합과 같은 임의의 다양한 적합한 인코더 회로로서 구현될 수도 있다. 그 기법들이 부분적으로 소프트웨어로 구현될 때, 디바이스는 적합한 비일시적 컴퓨터 판독가능 매체에 그 소프트웨어를 위한 명령들을 저장하고 본 개시의 기법들을 수행하기 위하여 하나 이상의 프로세서들을 이용하여 하드웨어에서 그 명령들을 실행할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있는데, 이들 중 어느 쪽이 각각의 디바이스에서 결합된 인코더/디코더 (CODEC) 의 부분으로서 통합될 수도 있다.
JCT-VC 는 HEVC 표준의 개발에 대해 작업중이다. HEVC 표준화 노력들은 HEVC 테스트 모델 (HM) 로 지칭되는 비디오 코딩 디바이스의 진화 모델에 기초한다. HM 은 예컨대, ITU-TH.264/AVC 에 따른 기존 디바이스들에 비하여 비디오 코딩 디바이스들의 여러 추가적인 능력들을 상정한다. 예를 들어, H.264 는 9개의 인트라 예측 인코딩 모드들을 제공하지만, HM 는 무려 35개의 인트라 예측 인코딩 모드들을 제공할 수도 있다.
일반적으로, HM 의 작업 모델은, 비디오 프레임 또는 화상이, 루마 및 크로마 샘플들 양자 모두를 포함하는 트리블록들 또는 최대 코딩 유닛 (LCU) 들의 시퀀스로 분할될 수도 있다는 것을 설명한다. 트리블록은 H.264 표준의 매크로블록과 유사한 목적을 갖는다. 슬라이스는, 코딩 순서에서 다수의 연속적인 트리블록들을 포함한다. 비디오 프레임 또는 화상은, 하나 이상의 슬라이스들로 파티셔닝될 수도 있다. 각 트리블록은 쿼드트리에 따라 코딩 유닛 (CU) 들로 스플릿될 수도 있다. 예를 들어, 쿼드트리의 루트 노드로서, 트리블록은 4개의 자식 노드 (child node) 들로 스플릿될 수도 있고, 각 자식 노드는 차례로 부모 노드 (parent node) 가 될 수도 있고 또 다른 4개의 자식 노드들로 스플릿될 수도 있다. 쿼드트리의 리프 노드로서, 최종, 스플릿되지 않은 자식 노드는, 코딩 노드, 즉 코딩된 비디오 블록을 포함한다. 코딩된 비트스트림과 연관된 신택스 데이터는, 트리블록이 스플릿될 수도 있는 최대 횟수를 정의할 수도 있고, 또한 코딩 노드들의 최소 크기를 정의할 수도 있다.
CU 는 코딩 노드 그리고 그 코딩 노드와 연관된 예측 유닛 (PU) 들 및 변환 유닛 (TU) 들을 포함한다. CU 의 크기는 코딩 노드의 크기에 대응하고 형상이 정사각형이어야 한다. CU 의 크기는 8x8 픽셀들로부터, 최대 64x64 픽셀들 이상인 트리블록의 크기에 이르는 범위일 수도 있다. 각 CU 는 하나 이상의 PU 들 및 하나 이상의 TU 들을 포함할 수도 있다. CU 와 연관된 신택스 데이터는, 예를 들어, CU 를 하나 이상의 PU 들로 파티셔닝하는 것을 기술할 수도 있다. 파티셔닝 모드들은, CU 가 스킵 또는 직접 모드 인코딩되는지, 인트라 예측 모드 인코딩되는지, 또는 인터 예측 모드 인코딩되는지 간에 달라질 수도 있다. PU 들은 형상이 비정사각형으로 파티셔닝될 수도 있다. CU 와 연관된 신택스 데이터는, 예를 들어, 쿼드트리에 따라 CU 를 하나 이상의 TU 들로 파티셔닝하는 것을 기술할 수도 있다. TU 는 형상이 정사각형 또는 비정사각형일 수 있다.
HEVC 표준은, TU들에 따른 변환을 허용하고, 이는 상이한 CU들에 대해서 상이할 수도 있다. TU 들은 통상적으로, 파티셔닝된 LCU에 대해 정의된 정해진 CU 내에 PU 들의 크기에 기초하여 사이징되지만, 이는 항상 그렇지 않을 수도 있다. TU 들은 통상적으로 동일한 크기이거나 또는 PU 들보다 더 작다. 일부 예들에서, CU 에 대응하는 잔차 샘플들은 "잔차 쿼드트리 (residual quad tree)" (RQT) 로 알려진, 쿼드트리 구조를 이용하여 더 작은 유닛들로 세분될 수도 있다. RQT 의 리프 노드들은 변환 유닛 (TU) 들로 지칭될 수도 있다. TU 들과 연관된 픽셀 차이 값들이 변환되어 변환 계수들을 생성하고, 이는 양자화될 수도 있다.
일반적으로, PU 는 예측 프로세스에 관련된 데이터를 포함한다. 예를 들어, PU 가 인트라 모드 인코딩될 때, PU 는 PU 를 위한 인트라-예측 모드를 설명하는 데이터를 포함할 수도 있다. 또 다른 예로서, PU 가 인터 모드 인코딩될 때, PU 는 PU 를 위한 하나 이상의 모션 벡터들을 정의하는 데이터를 포함할 수도 있다. PU 를 위한 모션 벡터를 정의하는 데이터는, 예를 들어, 모션 벡터의 수평 성분, 모션 벡터의 수직 성분, 모션 벡터를 위한 해상도 (예를 들어, 1/4 픽셀 정밀도 또는 1/8 픽셀 정밀도), 모션 벡터가 가리키는 참조 화상, 예측 방향 (양방향 예측 또는 단방향 예측인지) 및/또는 모션 벡터를 위한 참조 화상 리스트 (예를 들어, 리스트 0, 리스트 1, 또는 리스트 C) 를 기술할 수도 있다.
일반적으로, TU 는 변환 및 양자화 프로세스들에 사용된다. 하나 이상의 PU 들을 갖는 정해진 CU 는 하나 이상의 변환 유닛 (TU) 들을 또한 포함할 수도 있다. 예측 다음에, 비디오 인코더 (20) 는 PU 에 대응하는 잔차 값들을 계산할 수도 있다. 잔차 값들은, 엔트로피 코딩을 위한 직렬화된 변환 계수들을 생성하기 위하여 TU들을 이용하여, 변환 계수들로 변환, 양자화 및 스캔될 수도 있는 픽셀 차이 값들을 포함한다. 본 개시는 통상적으로, CU의 코딩 노드를 지칭하기 위하여 용어 "비디오 블록" 을 사용한다. 일부의 특정 경우들에서, 본 개시는 또한, 코딩 노드 및 PU 및 TU 들을 포함하는, 이를테면 CU 또는 LCU 인, 트리블록을 지칭하기 위해 용어 "비디오 블록" 을 사용할 수도 있다.
비디오 시퀀스는 통상적으로 일련의 비디오 프레임들 또는 화상들을 포함한다. 화상들의 그룹 (GOP) 은 일반적으로, 일련의 하나 이상의 비디오 화상들을 포함한다. GOP 는 GOP 의 헤더, 하나 이상의 화상들의 헤더, 또는 다른 곳에 신택스 데이터를 포함할 수도 있고, 이 신택스 데이터는 GOP 에 포함된 화상들의 수를 기술한다. 화상의 각 슬라이스는, 각각의 슬라이스를 위한 인코딩 모드를 기술하는 슬라이스 신택스 데이터를 포함할 수도 있다. 비디오 인코더 (20) 는 통상적으로 비디오 데이터를 인코딩하기 위하여 개개의 비디오 슬라이스들 내의 비디오 블록들에 대해 동작한다. 비디오 블록은 CU 내의 코딩 노드에 대응할 수도 있다. 비디오 블록들은 고정되거나 또는 변화하는 크기를 가질 수도 있고, 지정된 코딩 표준에 따라 크기가 다를 수도 있다.
예로서, HM 은 다양한 PU 크기들에서의 예측을 지원한다. 특정 CU 의 크기가 2Nx2N 이라고 가정하면, HM 는 2Nx2N 또는 NxN 의 PU 크기들에서의 인트라 예측, 그리고 2Nx2N, 2NxN, Nx2N, 또는 NxN 의 대칭적 PU 크기들에서의 인터 예측을 지원한다. HM 은 또한, 2NxnU, 2NxnD, nLx2N, 및 nRx2N 의 PU 크기들에서의 인터 예측을 위한 비대칭적 파티셔닝을 지원한다. 비대칭적 파티셔닝에서, CU 의 하나의 방향은 파티셔닝되지 않는 반면, 다른 방향은 25% 및 75% 으로 파티셔닝된다. 25% 파티션에 대응하는 CU 의 부분은 "n" 다음에 "상 (Up)", "하 (Down)", "좌 (Left)", 또는 "우 (Right)" 의 표시에 의해 표시된다. 따라서, 예를 들어, 2NxnU" 는, 상단의 2Nx0.5N PU 및 하단의 2Nx1.5N PU 와 수평적으로 파티셔닝되는 2Nx2N CU 를 지칭한다.
본 개시에서, "NxN" 그리고 "N 바이 N" 은, 수직 및 수평 차원 (dimension) 들의 면에서 비디오 블록의 픽셀 차원들, 예를 들면, 16x16 픽셀들 또는 16 바이 16 픽셀들을 지칭하는데 상호교환가능하게 사용될 수도 있다. 일반적으로, 16x16 블록은, 수직 방향에서 16 픽셀들 (y = 16) 그리고 수평 방향에서 16 픽셀들 (x = 16) 을 가질 것이다. 마찬가지로, NxN 블록은 일반적으로 수직 방향에서 N 픽셀들 그리고 수평 방향에서 N 픽셀들을 갖고, 여기서 N 은 음이 아닌 정수 값을 나타낸다. 블록에서 픽셀들은 행과 열들로 배열될 수도 있다. 더욱이, 블록들은 수직 방향과 동일한 수의 수평 방향 픽셀들을 반드시 가질 필요는 없다. 예를 들면, 블록들은 NxM 픽셀들을 포함할 수도 있고, 여기서 M은 N과 반드시 동일한 것은 아니다.
CU 의 PU 들을 이용한 인트라 예측 또는 인터 예측 코딩 다음에, 비디오 인코더 (20) 는 CU 의 TU 들을 위한 잔차 데이터를 계산할 수도 있다. PU 들은, (픽셀 도메인으로도 지칭되는) 공간 도메인에서 픽셀 데이터를 포함할 수도 있고, TU들은, 변환, 예를 들어, 이산 코사인 변환 (DCT), 정수 변환, 웨이블릿 변환, 또는 개념적으로 유사한 변환을, 잔차 비디오 데이터에 적용한 다음에 변환 도메인에서의 계수들을 포함할 수도 있다. 잔차 데이터는, PU 들에 대응하는 예측 값들 및 인코딩되지 않은 화상의 픽셀들간의 픽셀 차이들에 대응할 수도 있다. 비디오 인코더 (20) 는, CU 를 위한 잔차 데이터를 포함한 TU 들을 형성할 수도 있고, 다음으로 그 TU 들을 변환하여 CU 를 위한 변환 계수들을 생성할 수도 있다.
변환 계수들을 생성하기 위한 임의의 변환 다음에, 비디오 인코더 (20) 는 변환 계수들의 양자화를 수행할 수도 있다. 일반적으로 양자화는, 변환 계수들이 양자화되어 그 계수들을 나타내는데 사용된 데이터의 양을 감소시킬 수 있으며, 추가 압축을 제공하는 프로세스를 지칭한다. 양자화 프로세스는 계수들의 일부 또는 전부와 연관된 비트 깊이를 감소시킬 수도 있다. 예를 들면, n 비트 값은 양자화 동안 m 비트 값으로 절사 (round down) 될 수도 있고, 여기서 n은 m보다 더 크다.
일부 예들에서, 비디오 인코더 (20) 는, 미리 정의된 스캔 순서를 이용하여 양자화된 변환 계수들을 스캔함으로써 엔트로피 인코딩될 수 있는 직렬화된 벡터를 생성할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는 적응적 스캔을 수행할 수도 있다. 양자화된 변환 계수들을 스캔하여 1차원 벡터를 형성한 후에, 비디오 인코더 (20) 는 1차원 벡터를, 예를 들어, CAVLC (context adaptive variable length coding), CABAC (context adaptive binary arithmetic coding), SBAC (syntax-based context-adaptive binary arithmetic coding), PIPE (Probability Interval Partitioning Entropy) 코딩 또는 또 다른 엔트로피 인코딩 방법론에 따라, 엔트로피 인코딩할 수도 있다. 비디오 인코더 (20) 는 또한, 비디오 데이터를 디코딩함에 있어서 비디오 디코더 (30) 에 의한 사용을 위해 인코딩된 비디오 데이터와 연관된 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다.
CABAC 을 수행하기 위하여, 비디오 인코더 (20) 는, 송신될 심볼에 콘텍스트 모델 내의 콘텍스트를 할당할 수도 있다. 콘텍스트는, 예를 들어, 심볼의 이웃 값들이 비영 (non-zero) 인지 여부에 관한 것일 수도 있다. CAVLC 을 수행하기 위하여, 비디오 인코더 (20) 는, 송신될 심볼을 위해 가변 길이 코드를 선택할 수도 있다. VLC 에서의 코드워드들은, 상대적으로 더 짧은 코드들이 더 높은 확률 심볼들에 대응하는 한편, 더 긴 코드들이 더 적은 확률 심볼들에 대응하도록 구성될 수도 있다. 이런 식으로, VLC 의 사용은, 예를 들어, 송신될 각 심볼에 동일 길이 코드워드들을 이용하는 것에 비해, 비트 절약 (bit savings) 을 달성할 수도 있다. 확률 결정은, 심볼에 할당된 콘텍스트에 기초할 수도 있다.
이전에 설명된 바처럼, 인트라 예측을 위한 모드를 선택할 때, 일부 프로세스들은 각각의 가능한 인트라 예측 모드에 대응하는 근사된 비용들의 계산들을 필요로 할 수도 있다. 일부 프로세스들은, 비디오 인코더가 계산 집약적인 전체 레이트 왜곡 분석을 수행하는 횟수를 감소시킬 수도 있지만, 이 프로세스는 가능한 인트라 예측 모드들의 각각을 위한 근사 비용들을 계산하는데 필요한 복잡성 및 시간을 고려하면 비디오 데이터의 실시간 인코딩 또는 근실시간 인코딩에 잘 맞지 않을 수도 있다.
본 개시의 기법들에 따르면, 비디오 인코더 (20) 는 인트라 예측을 위한 고속 모드 판정 기법들을 구현할 수도 있다. 비디오 인코더 (20) 는 초기에, 모든 가능한 인트라 예측 모드들을 균일하게 샘플링하고 커트 리스트에 있는 하나 이상의 예측 모드들을 걸러냄으로써 예비 모드들의 현재 세트를 구성할 수도 있다. 다음으로, 비디오 인코더 (20) 는 현재 세트의 모드들에 대해 정제 검색 (refinery search) 을 수행할 수도 있다. 마지막으로, 비디오 인코더 (20) 는 최고 확률 모드 및 비최고 확률 모드의 각각의 근사 비용들의 관계에 기초하여 최저 근사 비용과 연관된 최고 확률 모드로 최대 근사 비용을 갖는 현재 세트의 비최고 확률 모드를 교체할 수도 있다. 본 개시의 그러한 기법들은, 근사 비용 계산들의 수를, 일부 예들에서, 17 미만으로 그리고 전체 레이트 왜곡 비용 계산들의 수를 (4x4 및 8x8 의 PU 크기에 대해) 3 으로 그리고 (8x8 보다 더 큰 PU 크기에 대해) 2 로 감소시킬 수도 있다.
일 예에서, 비디오 인코더 (20) 는 초기에, 인트라 예측을 수행할 때 사용될 가능성이 통계적으로 더 높을 수도 있는 미리 정의된 예측 모드들의 세트를 결정한다. 다음으로, 비디오 인코더 (20) 는, 근사 비용들을 제공하는 추가 인트라 예측 모드들을 검색, 예를 들어, 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들을 위한 계산된 근사 비용들에 기초하여 추가 인트라 예측 모드들을 검색함으로써, 서브세트를 정제할 수도 있다. 가령, 비디오 인코더 (20) 는 보다 낮은 근사 비용들을 제공하는 검색에서의 인트라 예측 모드를 식별할 수도 있다. 식별된 인트라 예측 모드와 연관된 근사 왜곡 비용에 기초하여, 비디오 인코더 (20) 는 식별된 모드를 (미리 정의된 예측 모드들을 포함하는) 현재 세트에 추가하거나 및/또는 식별된 모드로 서브세트에서의 미리 정의된 모드를 교체할 수도 있다.
이런 식으로, 비디오 인코더 (20) 는 낮은 근사 비용들을 제공하는 모드들을 포함하도록 예측 모드들의 현재 세트를 정제할 수도 있는 한편, 모든 가능한 인트라 예측 모드들의 서브세트만을 위한 근사 비용들을 생성할 수도 있다. 결과적으로, 비디오 인코더 (20) 는 모든 가능한 인트라 예측 모드들보다는 현재 세트 (예를 들어, 인트라 예측 모드들의 서브세트) 에서 식별된 그러한 인트라 예측 모드들만을 위한 전체 레이트 왜곡 분석을 수행할 수도 있다. 현재 세트에서 인트라 예측 모드들의 수는 인트라 예측 모드들의 전체 수보다 작고 보다 낮은 근사 비용들을 제공할 수도 있으므로, 본 개시의 기법들은 모드 선택을 수행하기 위한 복잡성 및 프로세싱 요건들을 감소시킬 수도 있다. 일부 예들에서, 그러한 프로세싱 요건들을 감소시키는 것은 병렬- 및/또는 직렬- 프로세싱 비디오 코더들에서 비디오 코딩 성능을 향상시킬 수도 있다.
비디오 디코더 (30) 는, 코딩된 데이터를 포함하는 비트스트림을 수신하고 그 데이터를 비디오 인코더 (20) 로부터 수신된 대응하는 신택스 엘리먼트들에 따라 디코딩할 수도 있다. 비디오 디코더 (30) 는 일반적으로 비디오 인코더 (20) 에 관하여 상술된 것들에 대한 상호적인 동작들을 수행할 수도 있다. 즉, 비디오 디코더 (30) 는 인코딩된 비디오 데이터의 각각의 블록을 엔트로피 디코딩하고, 역 양자화를 수행하여 인코딩된 비디오 데이터의 블록을 탈양자화하고 역 변환을 적용하여 인코딩된 비디오 데이터의 탈양자화된 블록을 주파수 도메인으로부터 공간 도메인으로 변환할 수도 있다. 인코딩된 비디오 데이터의 이 변환된 블록은 잔차 데이터의 재구성된 버전을 나타낼 수도 있다. 예측 프로세스에서, 비디오 디코더 (30) 는, 예측 모드들을 시그널링하는 신택스 엘리먼트들에 기초하여 정해진 블록을 디코딩하기 위하여 대응하는 예측 모드를 선택할 수도 있다. 즉, 비디오 인코더 (20) 는, 본 개시의 기법들에 따라, 정해진 블록을 위한 예측 모드를 시그널링하는 하나 이상의 신택스 엘리먼트들을 전송할 수도 있고, 비디오 디코더 (30) 는 후속하여 이를 이용해 정해진 블록을 디코딩할 수도 있다.
도 2는, 다수의 상이한 예측 모드들로부터 선택할 때 모드 선택의 복잡성을 감소시키기 위한 기법들을 구현할 수도 있는 비디오 인코더 (20) 의 예를 도시하는 블록도이다. 비디오 인코더 (20) 는, 비디오 슬라이스들 내의 비디오 블록들의 인트라 코딩 및 인터 코딩을 수행할 수도 있다. 인트라 코딩은, 정해진 비디오 프레임 또는 화상 내의 비디오에서 공간적 중복성을 감소 또는 제거하기 위하여 공간적 예측에 의거한다. 인터 코딩은 비디오 시퀀스의 인접 프레임들 또는 화상들 내의 비디오에서 시간적 중복성을 감소 또는 제거하기 위하여 시간적 예측에 의거한다. 인트라 모드 (I 모드) 는 여러 공간 기반 압축 모드들 중 어느 것을 지칭할 수도 있다. 인터 모드들, 이를테면 단방향 예측 (P 모드) 또는 양방향 예측 (B 모드) 은, 여러 시간 기반 압축 모드들 중 어느 것을 지칭할 수도 있다.
도 2 의 예에서, 비디오 인코더 (20) 는, 파티셔닝 유닛 (40), 예측 유닛 (41), 참조 화상 메모리 (64), 합산기 (50), 변환 프로세싱 유닛 (52), 양자화 유닛 (54), 및 엔트로피 인코딩 유닛 (56) 을 포함한다. 예측 유닛 (41) 은 모션 추정 유닛 (42), 모션 보상 유닛 (44) 및 인트라 예측 유닛 (46) 을 포함한다. 비디오 블록 재구성을 위해, 비디오 인코더 (20) 는 또한 역 양자화 유닛 (58), 역 변환 프로세싱 유닛 (60), 및 합산기 (62) 를 포함한다. 디블록킹 필터 (도 2에 미도시) 가 또한 포함되어, 재구성된 비디오로부터 블록키니스 아티팩트 (blockiness artifact) 를 제거하기 위해 블록 경계들을 필터링할 수도 있다. 원하는 경우, 디블록킹 필터는 통상적으로 합산기 (62) 의 출력을 필터링한다. 추가적인 루프 필터들 (인 루프 또는 포스트 루프) 이 또한, 디블록킹 필터에 추가하여 사용될 수도 있다. 비디오 인코더 (20) 는 또한 모드 선택 유닛 (43) 을 포함한다. 모드 선택 유닛 (43) 은, 예를 들어, 에러 결과들에 기초하여, 코딩 모드들 중의 하나로, 인트라 또는 인터를 선택할 수도 있다. 도 2에 더 설명된 바처럼, 모드 선택 유닛 (43) 은 다수의 상이한 예측 모드들로부터 선택할 때 레이트 왜곡 값들을 저장하는데 필요한 공간을 감소시키기 위한 기법들을 구현할 수도 있다.
도 2에 도시된 바처럼, 비디오 인코더 (20) 는 비디오 데이터를 수신하고 파티셔닝 유닛 (40) 은 데이터를 비디오 블록들로 파티셔닝한다. 이 파티셔닝은 또한, 예를 들어, LCU 및 CU 들의 쿼드트리 구조에 따른, 비디오 블록 파티셔닝 뿐만 아니라 슬라이스들, 타일들 또는 다른 더 큰 유닛들로의 파티셔닝을 포함할 수도 있다. 비디오 인코더 (20) 는 일반적으로, 인코딩될 비디오 슬라이스 내의 비디오 블록들을 인코딩하는 컴포넌트들을 예시한다. 일반적으로, 슬라이스는, 다수의 비디오 블록들로 (그리고 가능하게는 타일들로 지칭되는 비디오 블록들의 세트들로) 분할될 수도 있다.
모드 선택 유닛 (43) 은, 복수의 가능한 코딩 모드들 중 하나, 이를테면 복수의 인트라 코딩 모드들 중 하나 또는 복수의 인터 코딩 모드들 중 하나를, 에러 결과 (예를 들어, 코딩 레이트 및 왜곡의 레벨) 에 기초하여 현재 비디오 블록을 위해, 선택할 수도 있다. 예측 유닛 (41) 은 결과적인 인트라 또는 인터 코딩 블록을 합산기 (50) 에 제공하여 잔차 블록 데이터를 생성하고 합산기 (62) 에 제공하여 참조 화상으로서의 사용을 위해 인코딩된 블록을 재구성할 수도 있다. 일부 예들에서, 모드 선택 유닛 (43) 은, "RDO" 로 축약될 수도 있는, "레이트 왜곡 최적화" 로 보통 지칭되는 프로세스를 통해 최선 레이트 대 왜곡 비를 선택하기 위해 재구성된 비디오 블록들의 각각을 분석할 수도 있다. 후술되는 도 2의 추가 상세들은 본 개시의 하나 이상의 양태들에 따른 모드 선택 기법들을 예시한다.
본 개시의 양태들은 일반적으로 인트라 코딩에 관한 것이다. 그래서, 본 개시의 일정 기법들은 모드 선택 유닛 (43) 에 의해 수행될 수도 있다. 즉, 예를 들어, 모드 선택 유닛 (43) 은 아래의 도 2 내지 도 8을 참조하여 설명된 본 개시의 기법들을 수행할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 의 하나 이상의 다른 유닛들, 예를 들어, 인트라 예측 유닛 (46) 은, 추가적으로, 총괄적으로 또는 대안적으로, 본 개시의 기법들을 수행하는 것을 담당할 수도 있다.
예측 유닛 (41) 내의 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 하나 이상의 참조 화상들에서의 하나 이상의 예측 블록들에 대해 현재 비디오 블록의 인터 예측 코딩을 수행하여 시간적 압축을 제공한다. 모션 추정 유닛 (42) 은, 비디오 시퀀스에 대해 미리결정된 패턴에 따라 비디오 슬라이스를 위한 인터 예측 모드를 결정하도록 구성될 수도 있다. 미리결정된 패턴은, P 슬라이스들, B 슬라이스들 또는 GPB 슬라이스들로서 시퀀스에서 비디오 슬라이스들을 표기할 수도 있다. 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 고도로 통합될 수도 있지만, 개념적인 목적을 위해 따로따로 예시되어 있다. 모션 추정 유닛 (42) 에 의해 수행되는, 모션 추정은, 비디오 블록들을 위한 모션을 추정하는 모션 벡터들을 생성하는 프로세스이다. 예를 들어, 모션 벡터는, 참조 화상 내의 예측 블록에 대해 현재 비디오 프레임 또는 화상 내의 비디오 블록의 PU 의 변위를 나타낼 수도 있다.
예측 블록은, 절대 차이의 합 (sum of absolute difference; SAD), 제곱 차이의 합 (sum of square difference; SSD), 또는 다른 차이 메트릭들에 의해 결정될 수도 있는, 픽셀 차이 측면에서, 코딩될 비디오 블록의 PU에 밀접하게 매치하는 것으로 구해진 블록이다. 일부 예들에서, 비디오 인코더 (20) 는 참조 화상 메모리 (64) 에 저장된 참조 화상들의 서브 정수 픽셀 위치 (sub-integer pixel position) 들을 위한 값들을 계산할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 참조 화상의 1/4 픽셀 위치들, 1/8 픽셀 위치들, 또는 다른 분수 픽셀 위치 (fractional pixel position) 들의 값들을 보간할 수도 있다. 그러므로, 모션 추정 유닛 (42) 은, 전 (full) 픽셀 위치들 그리고 분수 픽셀 위치들에 대해 모션 검색을 수행하고 분수 픽셀 정밀도로 모션 벡터를 출력할 수도 있다.
모션 추정 유닛 (42) 은, PU 의 위치와 참조 화상의 예측 블록의 위치를 비교함으로써 인터 코딩된 슬라이스에서 비디오 블록의 PU를 위한 모션 벡터를 계산한다. 참조 화상은, 제 1 참조 화상 리스트 (리스트 0) 또는 제 2 참조 화상 리스트 (리스트 1) 로부터 선택될 수도 있고, 이들의 각각은 참조 화상 메모리 (64) 에 저장된 하나 이상의 참조 화상들을 식별한다. 모션 추정 유닛 (42) 은 계산된 모션 벡터를 엔트로피 인코딩 유닛 (56) 및 모션 보상 유닛 (44) 으로 전송한다.
모션 보상 유닛 (44) 에 의해 수행된 모션 보상은, 모션 추정에 의해 결정된 모션 벡터에 기초한 예측 블록의 페칭 (fetching) 또는 생성을 수반할 수도 있으며, 가능하게는 서브-픽셀 정밀도로 보간을 수행한다. 현재 비디오 블록의 PU를 위한 모션 벡터의 수신시에, 모션 보상 유닛 (44) 은, 모션 벡터가 참조 화상 리스트들 중 하나에서 가리키는 예측 블록을 로케이팅할 수도 있다. 비디오 인코더 (20) 는, 코딩되는 현재 비디오 블록의 픽셀 값들로부터 예측 블록의 픽셀 값들을 감산하여, 픽셀 차이 값들을 형성함으로써, 잔차 비디오 블록을 형성한다. 픽셀 차이 값들은, 블록을 위한 잔차 데이터를 형성하고, 루마 및 크로마 차이 컴포넌트들 양자 모두를 포함할 수도 있다. 합산기 (50) 는 이 감산 연산을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 모션 보상 유닛 (44) 은 또한, 비디오 슬라이스의 비디오 블록들을 디코딩함에 있어서 비디오 디코더 (30) 에 의한 사용을 위해 비디오 블록들 및 비디오 슬라이스와 연관된 신택스 엘리먼트들을 생성할 수도 있다.
예측 유닛 (41) 내의 인트라 예측 유닛 (46) 은 코딩될 현재 블록과 동일한 화상 또는 슬라이스에서의 하나 이상의 이웃 블록들에 대해 현재 비디오 블록의 인트라 예측 코딩을 수행하여 공간적 압축을 제공할 수도 있다. 따라서, 인트라-예측 유닛 (46) 은, 상술된 바와 같이, 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 수행되는 인터 예측에 대한 대안으로서, 현재 블록을 인트라 예측할 수도 있다
특히, 모드 선택 유닛 (43) 은, 정해진 모드 및 블록에 대응하는 레이트 왜곡의 양들에 기초하여 현재 블록을 인코딩하는데 사용할 인트라 예측 모드를 결정할 수도 있다. 일부 예들에서, 인트라 예측 유닛 (46) 은, 예를 들어, 별개의 인코딩 패스들 동안, 모드 선택 유닛 (43) 으로부터 수신된 다양한 인트라 예측 모드들을 이용하여 현재 블록을 인코딩할 수도 있다.
모드 선택 유닛 (43) 은 다양한 테스트된 인트라-예측 모드들을 위한 레이트 왜곡 분석을 이용하여 레이트 왜곡 값들을 산출하고, 테스트된 모드들 중에서 최선의 레이트 왜곡 특성들을 갖는 인트라-예측 모드를 선택할 수도 있다. 레이트 왜곡 분석은 일반적으로, 인코딩된 블록과, 인코딩된 블록을 생성하기 위해 인코딩되었던 원래의 인코딩되지 않은 블록 사이의 왜곡 (또는 에러) 의 양 뿐만 아니라 인코딩된 블록을 생성하는데 이용된 비트 레이트 (즉, 비트들의 수) 를 결정한다. 모드 선택 유닛 (43) 은 그 왜곡들로부터 비 (ratio) 및 여러 인코딩된 블록들을 위한 레이트들을 산출하여 어느 인트라 예측 모드가 블록을 위한 최선의 레이트 왜곡 값을 나타내는지를 결정할 수도 있다. 제안된 HEVC 표준에 따라, 35 개에 이르는 인트라 예측 모드들이 있을 수도 있고, 각각의 인트라 예측 모드는 인덱스와 연관될 수도 있다.
인트라 예측을 수행할 때, 모드 선택 유닛 (43) 은, 전체 레이트 왜곡 분석을 수행하기 보다는 각각의 가능한 인트라 예측 모드들과 연관된 근사 비용을 분석할 수도 있다. 이 근사 비용은 레이트 왜곡 비용에 근사할 수도 있다. 전체 레이트 왜곡 비용을 계산하는 것은 통상적으로, 비디오 인코더가 인트라 예측 모드들 중의 각각을 사용하여 예측된 블록을 계산하고, 예측된 블록들 중의 각각과 현재 블록 사이의 차이 (위에서 언급된 잔차 픽셀 값들을 명시하는 "잔차 블록" 으로 보통 지칭됨) 를 결정하고, 공간 도메인으로부터 주파수 도메인으로 잔차 블록들의 각각을 변환하고, 변환된 잔차 블록들의 각각에서 계수 값들을 양자화하여 계수들의 대응하는 인코딩된 비디오 블록을 생성하고, 다음으로 인코딩된 비디오 블록을 디코딩하며, 디코딩된 비디오 블록들의 각각을 현재 블록과 비교하여 왜곡 메트릭을 결정할 것을 필요로 한다. 또한, 이 전체 레이트 왜곡 분석은, 양자화 레벨을 고려하여, 인트라 예측 모드들 중의 각각에 대해, 인코딩된 비디오 블록들의 각각을 시그널링하는데 사용된 비트들의 양을 계산하는 것을 수반할 수도 있다.
전술된 바처럼, 35개 인트라 예측 모드들 중의 대응하는 하나를 이용하여 예측된 예측 블록들의 각각을 위해 전체 레이트 왜곡 분석을 수행하기 보다는, 모드 선택 유닛 (43) 이 하나 이상의 인트라 예측 모드들을 위한 근사 비용을 계산할 수도 있다. 모드 선택 유닛 (43) 은 다양한 수학 프로세스들을 이용하여 전체 레이트 왜곡 비용의 근사치를 계산할 수도 있다. 일부 예의 프로세스들은 일반적으로, 라그랑주의 레이트 왜곡 근사 (Lagrangian rate distortion approximation) 들로 지칭될 수도 있다. 많은 수의 가능한 모드들 중에서 최선 모드를 결정하기 위하여, 라그랑주 승수 (Lagrange multiplier) 가 각각의 상이한 모드를 위한 비용을 측정하기 위해 적용될 수도 있다. 라그랑주 승수는 왜곡 척도 D 및 레이트 척도 R 에 기초할 수도 있다. 왜곡 척도는 상이한 구현, 예를 들어, SSE (sum of square error), SAD (sum of absolute difference), 또는 SATD (sum of absolute transform difference) 에 대하여 상이하게 정의될 수 있다. 레이트 척도는 현재 모드 정보를 인코딩하는데 얼마나 많은 비트들이 필요한지를 나타낸다. 예를 들어, 레이트 척도는, 예측 모드 타입, 인트라 모드 인덱스, 또는 모션 벡터 등을 시그널링하는데 사용된 비트들을 포함할 수도 있다. D 및 R 의 값들이 획득되고 나면, 비용 C 는 등식 (1) 에 나타낸 바처럼 계산될 수도 있고, 여기서 λ 은 미리 정의된 상수이다:
모드 선택 유닛 (43) 은 최소 C 를 낳는 모드를 선택함으로써 최선 모드를 선택할 수도 있다.
일 예로서, 모드 선택 유닛 (43) 은 SSD (sum of squared distortion), SAD (sum of absolute difference) 및 SATD (sum of absolute transform difference) 를 계산할 수도 있다. 모드 선택 유닛 (43) 은 레이트 왜곡 비용에 근사할 방법으로서 SATD 를 계산할 수도 있다. 모드 선택 유닛 (43) 은, 다음 등식 (2) 에 따라 SATD 를 계산할 수도 있다:
등식 (2) 에서, 는 현재 블록 를 위한 예측 블록을 나타내고, 는 NxN 변환 (이를테면 Hadamard 변환) 이고, λ 는 (경험적으로 선택될 수도 있는) 라그랑주 승수이고, R mode 는 모드를 인코딩하는데 사용된 비트들 수이다. 결과적으로, J(SATD) 비용은 감소된 복잡성을 갖는 전체 레이트 왜곡의 근사치일 수도 있다.
통상적으로, 현재 블록이 크기 4x4 또는 8x8 일 때, 비디오 인코더는 남아 있는 27 내지 25개 인트라 예측 모드들과 비교하여 최저 근사 비용을 갖는 8 내지 10 개 인트라 예측 모드들을 분석할 수도 있다. 현재 블록이 8x8 보다 더 클 때, 비디오 인코더는 남아 있는 32 내지 30 개 인트라 예측 모드들과 비교하여 최저 근사 비용을 갖는 3 내지 5 개 인트라 예측 모드들을 분석할 수도 있다. 일부 예들에서, 비디오 인코더는 또한, 인트라 예측 코딩 동안 소위 "최고 확률 (most probable)" 인트라 예측 모드들을 고려할 수도 있다. 이 최고 확률 모드를 식별하기 위하여, 비디오 인코더는 (종종 현재 블록에 인접한 이웃 블록들인) 이전에 인코딩된 블록들의 인트라 예측 모드를 식별할 수도 있다. 최고 확률 모드들은 현재 블록에 대한 이웃 블록들의 공간적 근접성에 기인하여 현재 블록에 유사하거나 또는 동일할 상대적으로 높은 확률을 가질 수도 있다.
HEVC 에는, 3개의 최고 확률 모드들이 있다. 첫번째 2개는 상측과 좌측의 PU 들의 인트라 예측 모드들인데, 그러한 PU 들이 이용가능하고 인트라 예측 모드를 이용하여 코딩되는 경우에 그러하다. 임의의 이용가능하지 않은 예측 모드는 인트라 DC 모드인 것으로 고려된다. 그 2개의 최고 확률 모드들이 동일하지 않을 때, 제 3 최고 확률 모드가 Intra_Planar, Intra_DC 또는 Intra_Angular[ 26 ] (수직) 과 동일하게, 이들 모드들 중의 어느 것이, 이 순서에서, 하나의 첫번째 2개 모드들의 사본이 아닌 것에 따라, 설정된다. 첫번째 2개 최고 확률 모드들이 동일할 때, 이 제 1 모드가 값 Intra_Planar 또는 Intra_DC 를 가지면, 제 2 및 제 3 최고 확률 모드들은 Intra_Planar, Intra_DC, 또는 Intra_Angular[ 26 ] 으로서, 이들 모드들 중에서 어느 것이, 이 순서에서, 사본이 아닌 것에 따라, 할당된다. 첫번째 2개 최고 확률 모드들이 동일하고 제 1 모드가 Intra_Angular 값을 가질 때, 제 2 및 제 3 최고 확률 모드들이 첫번째 것의 각도 (즉, k의 값) 에 가장 가까운 2개 각도 예측 모드들로서 선택된다.
일부 예들에서, 비디오 인코더는 인트라 예측 모드들 중의 각각을 위한 그리고 예측된 예측 블록들의 각각을 위한 근사 비용을 계산할 수도 있다. 가령, 비디오 인코더는 초기에, 35개 인트라 예측 모드들 중의 각각에 대응하는 35개 근사 비용들을 계산할 수도 있다. 다음으로, 비디오 인코더는, 근사 비용이 어떤 상황들하에서 레이트 왜곡 비용을 부정확하게 근사할 수도 있으므로, 인트라 예측 모드들 중의 일부 서브세트를 위해 전체 레이트 왜곡 분석을 수행할 수도 있다.
모드들의 서브세트에 대한 전체 레이트 왜곡 분석을 수행하는 단순화는 무차별 대입 검색과 비교하여 필요한 계산의 양을 감소시킬 수도 있지만, 그러한 기법들은 대체로, 35개 인트라 예측 모드들 중의 각각에 대응하는 근사된 비용들의 35개 계산들을 여전히 필요로 한다. 그러므로, 이들 기법들은, 비디오 인코더가 계산 집약적인 전체 레이트 왜곡 분석을 수행하는 횟수를 감소시킬 수도 있지만, 이 프로세스는 35개 모드들의 각각을 위한 근사 비용들을 계산하는데 필요한 복잡성 및 시간을 고려하면 비디오 데이터의 실시간 인코딩 또는 근실시간 인코딩에 잘 맞지 않을 수도 있다.
모드 선택의 복잡성을 감소시키기 위하여, 이 개시는, 낮은 근사 비용을 제공할 가능성이 더 높은 모드들의 서브세트를 초기에 선택하고 후속하여 보다 낮은 근사 비용을 제공하는 추가 모드들을 검색하여 선택된 서브세트를 정제함으로써 전체 레이트 왜곡 분석을 이용하여 적용되는 모드들의 수를 감소시키기 위한 기법들을 설명한다. 기법들은, 비디오 인코더 (20) 와 같은 비디오 인코더로 하여금 최선 모드, 예를 들어 현재 블록을 인코딩하기 위한 최저 레이트 왜곡을 갖는 모드를 선택하는 것을 가능하게 할 수도 있다. 인트라 예측 프로세스를 수행하는 것과 연관된 시간 및 복잡성을 감소시킴으로써, 그 기법들은 향상된 실시간 비디오 인코딩 및/또는 근실시간 비디오 인코딩을 증진시킬 수도 있다.
예시하자면, 모드 선택 유닛 (43) 은 파티셔닝 유닛 (40) 으로부터 인코딩할 현재 블록을 결정하기 위하여 본 개시에 설명된 기법들을 초기에 수행할 수도 있다. 모드 선택 유닛 (43) 은, 적어도 하나의 인트라 예측 모드를 갖는 인트라 예측 모드들의 미리 정의된 세트를 포함하는 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 근사 비용을 계산할 수도 있다. 인트라 예측 모드들의 현재 세트는 비디오 데이터의 현재 블록을 코딩하기 위해 이용가능한 인트라 예측 모드들의 전체 수보다 더 적은 수의 인트라 예측 모드들을 포함할 수도 있다. 종종, 인트라 예측 모드들의 미리 정의된 세트는 인트라 예측을 수행할 때 사용될 가능성이 통계적으로 더 높은 것으로 관찰된 그러한 모드들을 포함한다. 즉, 일부 예들에서, 모드 선택 유닛 (43) 은, 하나 이상의 모드들이 선택되는 발생의 수를 나타내는 하나 이상의 통계들을 결정할 수도 있다. 통계들에 적어도 부분적으로 기초하여, 모드 선택 유닛 (43) 은 인트라 예측 모드들의 제 1 세트에 포함된 모드들을 선택할 수도 있다.
일부 사례들에서, 미리 정의된 세트는 고정적일 수도 있다. 일 예에서, 이 미리 정의된 세트는 모드들 0, 1 및 26 을 포함한다. 이 미리 정의된 세트는, 이 점에서, 현재 블록을 위한 인트라 예측 모드들의 현재 세트를 포함할 수도 있다. 일부 사례들에서, 미리 정의된 세트는, 아래에서 더 설명되는 바처럼, 샘플링 오프셋으로 평면 모드, 최고 확률 모드 및 각도 모드들에 의해 형성될 수 있다. 평면 모드 및 최고 확률 모드들이 종종 최종 선택 모드로서 보일 수도 있으므로, 모드 선택 유닛 (43) 은 이들 각각의 모드들 및 현재 세트에 대한 모드들의 근사 비용을 결정할 수도 있다.
미리 정의된 세트에 포함된 최고 확률 모드들을 식별하기 위하여, 모드 선택 유닛 (43) 은 도 4a 내지 도 4b 및 도 5 를 참조하여 더 설명되는 바처럼, 이전의 인코딩된 블록들의 하나 이상의 인트라 예측 모드들을 식별할 수도 있다. 이전의 인코딩된 블록들은 현재 블록에 인접한 이웃 블록들일 수도 있다. 이들 소위 이웃 블록들의 인트라 예측 모드들은, 현재 블록에 대한 이웃 블록들의 공간적 근접성에 기인하여 현재 블록을 위한 낮은 레이트 왜곡을 제공하는 인트라 예측 모드들에 유사하거나 또는 동일할 상대적으로 높은 확률을 가질 수도 있다. 결과적으로, 비디오 인코더 (20) 는 최고 확률 모드들로서 이웃 블록들의 이들 인트라 모드들을 식별하고, 최고 확률 모드들의 근사 비용을 계산하고, 현재 세트에 그 모드들을 포함할 수도 있다.
샘플링 오프셋을 이용하여 하나 이상의 각도 모드들을 식별하기 위하여, 모드 선택 유닛 (43) 은 본 개시의 도 6 을 참조하여 더 설명되는 바처럼, 모든 가능한 각도 인트라 예측 모드들의 그룹에 포함된 하나 이상의 각도 모드들을 샘플링할 수도 있다. 모드 선택 유닛 (43) 은 근사 비용 계산들의 수를 감소시키기 위하여 각도 예측 모드들의 전부를 위한 근사 비용들을 계산하지 않을 수도 있다. 그 대신에, 모드 선택 유닛 (43) 은 오프셋을 이용하여 하나 이상의 각도 모드들을 샘플링할 수도 있다. 즉, 근사 비용 계산을 위한 모드들을 선택하기 위해 오프셋을 사용함으로써, 모드 선택 (43) 은 전체 가능한 각도 예측 모드들의 서브세트를 균일하게 샘플링할 수도 있다.
샘플링 프로세스에서, 모드 선택 유닛 (43) 은, 모든 가능한 각도 모드들의 샘플링된 서브세트에 대하여, 각 각각의 샘플링된 각도 모드가 커트 리스트에 포함되는지 여부를, 결정할 수도 있다. 커트 리스트는, 낮거나 또는 최소 확률을 갖는 것으로 보이는 하나 이상의 인트라 예측 모드들을 포함할 수도 있다. 가령, 하나 이상의 인트라 예측 모드들이 임계 값을 만족시키지 않는 (예를 들어, 임계 값보다 더 작은) 각각의 확률 및/또는 빈도와 연관될 수도 있다. 각각의 샘플링된 각도 모드가 커트 리스트에 포함되는 경우, 모드 선택 유닛 (43) 은 그 모드를 현재 세트에 추가하고 그 모드를 위한 근사 비용을 계산하지 않을 수도 있다. 또한, 일부 예들에서, 모드 선택 유닛 (43) 이 각각의 샘플링된 각도 모드를 위한 근사 비용을 이미 계산한 경우, 모드 선택 유닛 (43) 은 그 모드를 위한 근사 비용을 계산하지 않을 수도 있다. 하나 이상의 각도 모드들을 샘플링하는 이 프로세스를 통하여, 모드 선택 유닛 (43) 은 인트라 예측 모드들의 미리 정의된 세트에 하나 이상의 샘플링된 각도 모드들을 포함할 수도 있다.
현재 세트는, 일부 예들에서, 근사 비용 (예를 들어, SATD 비용) 의 오름 차순에서 미리 정의된 모드들의 길이 N 을 가질 수도 있다. HM 에서, N 은 4x4 및 8x8 의 PU 크기에 대해 8 로, 8x8 보다 큰 PU 크기에 대해 3 으로 설정된다. 변수 N 의 값이 더 작아질수록, 모드 선택 유닛 (43) 이 수행할 수도 있는 전체 레이트 왜곡 비용 계산들의 수는 더 작아진다. 복잡성 및 코딩 효율 트레이드오프들의 균형을 맞추기 위하여, 모드 선택 유닛 (43) 은 4x4 및 8x8 의 PU 크기에 대해 N 을 3 으로 설정할 수도 있고, 16x16 및 32x32 의 PU 크기에 대해 N 을 2 로 설정할 수도 있다.
모드들의 미리 정의된 세트를 포함하는 현재 세트를 초기에 구성할 시에 그리고 또한 후술되는 현재 세트의 포스트 프로세싱 전에, 모드 선택 유닛 (43) 은 현재 세트를 정제하기 위하여 검색을 수행할 수도 있다. 현재 세트를 정제하기 위한 예의 기법들이 또한 도 8에 도시되어 있다. 일 예에서, 모드 선택 유닛 (43) 은, 인트라 예측 모드들의 미리 정의된 세트에서 식별된 각각의 모드를 위해 계산된 근사 비용들 중에서 최저 상대 근사 비용을 갖는 인트라 예측 모드들의 미리 정의된 세트에 있는 모드를 선택할 수도 있다. 예시하자면, 모드 26 은 인트라 예측 모드들의 미리 정의된 세트에서 최저 근사 비용을 가질 수도 있다. 그러므로, 모드 선택 유닛 (43) 은 모드 26으로부터 검색을 시작할 수도 있고, 여기서 모드 값, 즉 26 은 약간의 오프셋 F 만큼 감소 및 증가되어 26 + F 및 26 - F 에 도달한다. 다음으로 모드 선택 유닛 (43) 은 모드들 26 + F 및 26 - F 의 각각을 위해 근사 비용들을 계산할 수도 있고 모드들 26, 26 + F 및 26 - F 중에서 최저 근사 비용들을 갖는 모드를 선택한다. 다음으로 모드 선택 유닛 (43) 은 이 비교에 기초하여 현재 세트에서 모드를 교체, 예를 들어, 현재 세트에서의 모드 26 을, 모드들 26, 26 + F 및 26 - F 중에서 최저 근사 비용들을 갖는 선택된 모드로 교체할 수도 있다.
다음으로 모드 선택 유닛 (43) 은 검색을 이런 식으로 반복하여, F 를 F/2 로 이등분하고, 검색을 모드 26 (모드 26 + F 또는 모드 26 - F 중의 어느 것도 모드 26보다 작은 근사 비용을 갖지 않은 경우), 모드 26 + F (모드 26 + F 가 현재 세트에 추가된 경우) 또는 모드 26 - F (모드 26 - F가 현재 세트에 추가된 경우) 에 대해 리포커싱할 수도 있다. 다른 예들에서, 모드 선택 유닛 (43) 은 임의의 적합한 값 d 에 의해 F 를 나눌 수도 있고, 여기서 d 는 현재 예에서 2와 같다. 모드 선택 유닛 (43) 은 F 가 분수로 나누어질 때까지 검색 프로세스를 계속할 수도 있다 (F 가 2의 거듭제곱 (power) 인 값으로서 시작하는 것으로 가정한다). 그래서, 예를 들어, F 가 4 로 설정되는 경우에, 프로세스는 F = 4 로 한번, F = 2 로 한번, F =1 로 한번 반복되고 다음으로 F = 0.5 일 때 종결된다.
정제 프로세스를 이용하여 선택된 미리 정의된 인트라 예측 모드들 및/또는 각도 인트라 예측 모드들을 포함하는 현재 세트를 초기에 생성할 시에, 모드 선택 유닛 (43) 은 도 7a, 도 7b 에 더 예시되는 바처럼, 현재 리스트에 대해 포스트 프로세싱을 수행할 수도 있다. 최고 확률 모드들은 블록들을 인트라 예측하기 위한 모드들로서 더 높은 확률로 일어날 수도 있지만, 최고 확률 모드들은 반드시 작은 근사 비용들을 갖는 것은 아닐 수도 있다. 그러므로, 현재 세트에서 최고 확률 모드들만을 이용하는 것은 상당한 성능 손실을 초래할 수도 있다. 결과적으로, 모드 선택 유닛 (43) 은 최고 확률 모드들 및 근사 비용 양자 모두를 이용하여 현재 세트를 포스트 프로세싱하고 현재 블록을 인트라 예측하기 위한 모드를 선택할 수도 있다. 즉, 모드 선택 유닛 (43) 은, 현재 세트가 최고 확률 모드들 및 상대적으로 작은 근사 비용 양자 모두를 갖는 모드들을 포함하도록 현재 세트에 대해 포스트 프로세싱을 수행할 수도 있다.
현재 세트를 포스트 프로세싱하기 위하여, 모드 선택 유닛 (43) 은 모든 가능한 최고 확률 모드들로부터 최저 근사 비용을 갖는 최고 확률 모드를 결정할 수도 있다. 모드 선택 유닛 (43) 은 이 최저 근사 비용을 갖는 최고 확률 인트라 예측 모드와 임계치를 비교할 수도 있다. 일부 예들에서, 임계치 비교는 다음 등식에 따라 정의될 수도 있다:
위의 등식에서, 변수 J 는 현재 세트에서 비최고 확률 인트라 예측 모드의 근사 비용 (예를 들어, SATD) 일 수도 있는 한편, 변수 J M 는 모든 가능한 최고 확률 모드들 중의 최저 근사 비용을 갖는 최고 확률 인트라 예측 모드의 근사 비용이다. 위의 등식에서, 변수 T 는 통상적으로 0 과 1 사이의 값을 갖는 임계치를 나타낸다. 등식은 J M 과 J 간의 차이의 절대 값을 J 로 나눈 것이 임계 값보다 작은 경우, 모드 선택 유닛 (43) 은 최고 확률 모드가 비교되었던 비최고 확률 모드 대신에 최고 확률 모드를 추가하는 것을 제공한다. 이런 식으로, 모드 선택 유닛 (43) 은, 그 비교들에 기초하여 하나 이상의 최고 확률 인트라 예측 모드들로 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들 중의 하나 이상을 교체할 수도 있다.
그러므로, 이 설명에 제시된 기법들에 따라, 모드 선택 유닛 (43) 은 인트라 예측을 위한 고속 모드 판정 프로세스를 제공할 수도 있다. 이들 기법들은 근사 비용 계산들의 수를 17 미만으로 감소시킬 수도 있다. 일부 예들에서, 이들 기법들은 전체 레이트 왜곡 비용 계산들의 수를 (4x4 및 8x8 의 PU 크기에 대해) 3 으로 그리고 (8x8 보다 큰 PU 크기에 대해) 2 로 감소시킬 수도 있다.
다음으로 모드 선택 유닛 (43) 은, 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 전체 레이트 왜곡 비용을 결정하기 위하여 포스트 프로세싱된 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드에 대한 전체 레이트 왜곡 분석을 수행할 수도 있다. 다음으로 인트라 예측 유닛 (46) 은, 현재 블록을 인코딩하기 위하여 결정된 레이트 왜곡 비용들에 기초하여 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들 중의 하나에 따라 현재 블록에 대해 인트라 예측을 수행할 수도 있다. 종종, 인트라 예측 유닛 (46) 은 최저 레이트 왜곡 비용을 갖는 모드를 수행한다.
상술된 바처럼, 일부 예들에서, 모드 선택 유닛 (43) 은 추가 인트라 예측 모드들을 위한 정제 검색 (refinement search) 을 수행할지 여부를 결정할 수도 있다. 일 예로서, 정제 검색 이전에 초기에 구성된 현재 세트는 모드 0, 1, 및 각도 모드 26 를 포함할 수도 있다. 모드 26을 위해 계산된 근사 비용이 모드 0 및 모드 1을 위해 계산된 근사 비용들에 상대적으로 최저 근사 비용인지 여부에 기초하여 정제 검색을 수행할지 여부를 모드 선택 유닛 (43) 이 결정할 수도 있다. 즉, 모드 선택 유닛 (43) 은, 현재 세트에서 최저 근사 비용이, 예를 들어, 평면 모드 또는 최고 확률 모드와 대조적으로, 각도 모드와 연관되어 있는지 여부를 결정할 수도 있다. 이런 점에서, 최저 근사 비용이 현재 세트에서 각도 모드와 연관되면, 모드 선택 유닛 (43) 은, 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들을 위한 계산된 근사 비용에 기초하여 추가 인트라 예측 모드들을 검색할 수도 있다. 대조적으로, 모드 0, 1 및 26 이 모두 현재 세트에 있고 모드 26 이 모드 1 및 모드 0 을 위해 계산된 근사 비용들에 상대적으로 최저 근사 비용과 연관되지 않으면, 모드 선택 유닛 (43) 는 현재 세트에 대해 정제 검색을 수행하지 않을 수도 있다. 따라서, 일부 사례들에서, 모드 선택 유닛 (43) 은 최저 근사 비용과 연관된 모드가 각도 모드일 때 상술된 정제 검색을 수행할 수도 있다.
일부 예들에서, 현재 세트를 포스트 프로세싱할 시에, 인트라 예측 유닛 (46) 은 인트라 예측 모드들의 포스트 프로세싱된 현재 세트에 의해 식별된 인트라 예측 모드들 중의 하나에 따라 현재 블록을 인코딩하기 위한 인트라 예측을 수행할 수도 있다. 선택된 모드를 사용하여, 인트라 예측 유닛 (46) 은 현재 블록을 인코딩하기 위한 예측 블록을 결정할 수도 있다. 가령, 예측 모드는 인트라 예측 모드가 예측 모드를 선택하기 위하여 어느 블록 또는 그룹의 블록들을 평가할 것인지를 표시할 수도 있다.
인트라 예측 유닛 (46) 이 현재 비디오 블록에 대한 예측 블록을 결정한 후에, 합산기 (50) 는 현재 비디오 블록으로부터 예측 블록을 감산함으로써 잔차 비디오 블록을 형성한다. 잔차 블록에서 잔차 비디오 데이터는 하나 이상의 TU 들에 포함될 수도 있고 변환 프로세싱 유닛 (52) 에 적용될 수도 있다. 변환 프로세싱 유닛 (52) 은 DCT (discrete cosine transform) 또는 개념적으로 유사한 변환과 같은 변환을 이용하여 잔차 변환 계수들로 잔차 비디오 데이터를 변환한다. 변환 프로세싱 유닛 (52) 은 잔차 비디오 데이터를 픽셀 도메인으로부터 변환 도메인, 이를테면 주파수 도메인으로 변환할 수도 있다.
변환 프로세싱 유닛 (52) 은 양자화 유닛 (54) 에 결과적인 변환 계수들을 전송할 수도 있다. 양자화 유닛 (54) 은 변환 계수들을 양자화하여 비트 레이트를 더 감소시킨다. 양자화 프로세스는 계수들의 일부 또는 전부와 연관된 비트 깊이를 감소시킬 수도 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 변경될 수도 있다. 다음으로, 일부 예들에서, 양자화 유닛 (54) 은 양자화된 변환 계수들을 포함하는 매트릭스의 스캔을 수행할 수도 있다. 대안적으로, 엔트로피 인코딩 유닛 (56) 은 스캔을 수행할 수도 있다.
양자화 다음에, 엔트로피 인코딩 유닛 (56) 은 양자화된 변환 계수들을 엔트로피 인코딩한다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 CAVLC (context adaptive variable length coding), CABAC (context adaptive binary arithmetic coding), SBAC (syntax-based context-adaptive binary arithmetic coding), PIPE (probability interval partitioning entropy) 코딩 또는 또 다른 엔트로피 인코딩 방법론 또는 기법을 수행할 수도 있다. 엔트로피 인코딩된 유닛 (56) 은 또한, 모션 벡터들 그리고 코딩되고 있는 현재 비디오 슬라이스에 대한 다른 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다. 엔트로피 인코딩 유닛 (56) 에 의한 엔트로피 인코딩 다음에, 인코딩된 비트스트림은, 비디오 디코더 (30) 로 송신되거나 또는 비디오 디코더 (30) 에 의한 나중의 송신 또는 취출을 위해 보관될 수도 있다.
엔트로피 코딩 유닛 (56) 은 본 개시의 기법들에 따라 선택된 인트라 예측 모드를 나타내는 정보를 인코딩할 수도 있다. 비디오 인코더 (20) 는 송신된 비트스트림에서 구성 데이터 (configuration data), 하나 이상의 인트라 예측 모드 인덱스 테이블들 및 복수의 수정된 인트라 예측 모드 인덱스 테이블들 (코드워드 맵핑 테이블로도 지칭된다), 다양한 블록들을 위한 인코딩 콘텍스트들의 정의, 인코딩된 비디오 데이터 등을 포함할 수도 있다. 비디오 인코더 (20) 가 송신된 비트스트림에서 포함할 수도 있는 이러한 타입들의 정보는 예시적이고, 많은 다른 타입들의 정보가 또한 비트스트림에 포함될 수도 있다.
역 양자화 유닛 (58) 및 역 변환 프로세싱 유닛 (60) 은 역 양자화 및 역 변환을 각각 적용하여, 참조 화상의 참조 블록으로서 나중에 사용하기 위해 픽셀 도메인에서 잔차 블록을 재구성한다. 모션 보상 유닛 (44) 은, 참조 화상 리스트들 중의 하나 내의 참조 화상들 중의 하나의 예측 블록에 잔차 블록을 가산함으로써 참조 블록을 계산할 수도 있다. 모션 보상 유닛 (44) 은 또한 하나 이상의 보간 필터들을 그 재구성된 잔차 블록에 적용하여, 모션 추정에 사용하기 위한 서브 정수 픽셀 값들을 산출할 수도 있다. 합산기 (62) 는 재구성된 잔차 블록을 모션 보상 유닛 (44) 에 의해 생성되는 모션 보상된 예측 블록에 가산하여 참조 블록을 생성해 참조 화상 메모리 (64) 에 저장한다. 참조 블록은 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 레퍼런스 블록으로서 사용되어 후속 비디오 프레임 또는 화상에서 블록을 인터 예측할 수도 있다.
도 3은 본 개시에 기재된 기법들을 구현할 수도 있는 예시적인 비디오 디코더 (30) 를 예시하는 블록도이다. 도 3 의 예에서, 비디오 디코더 (30) 는, 엔트로피 디코딩 유닛 (70), 예측 유닛 (73), 역 양자화 유닛 (76), 역 변환 프로세싱 유닛 (78), 합산기 (80), 및 참조 화상 메모리 (82) 를 포함한다. 예측 유닛 (73) 은, 모션 보상 유닛 (72) 및 인트라 예측 유닛 (74) 을 포함한다. 비디오 디코더 (30) 는, 일부 예들에서, 도 2 로부터의 비디오 인코더 (20) 에 대해 설명된 인코딩 패스에 일반적으로 상호적인 디코딩 패스를 수행할 수도 있다.
디코딩 프로세스 동안, 비디오 디코더 (30) 는, 비디오 인코더 (20) 로부터 연관된 신택스 엘리먼트들 및 인코딩된 비디오 슬라이스의 비디오 블록들을 나타내는 인코딩된 비디오 비트스트림을 수신한다. 인코딩된 비트스트림은, 다른 정보 중에서, 본 개시의 기법들에 따라, 도 2를 참조하여 이전에 설명된 바처럼 모드 선택 유닛 (43) 에 의해 선택되었고 블록들에 대응하는 예측 모드들을 포함할 수도 있다. 비디오 디코더 (30) 의 엔트로피 디코딩 유닛 (70) 은 양자화된 계수들, 모션 벡터들, 및 다른 신텍스 엘리먼트들을 생성하기 위하여 비트스트림을 엔트로피 디코딩할 수도 있다. 엔트로피 디코딩 유닛 (70) 은 모션 벡터들 및 다른 신택스 엘리먼트들을 예측 유닛 (73) 에 포워딩할 수도 있다. 비디오 디코더 (30) 는 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 신택스 엘리먼트들을 수신할 수도 있다.
비디오 슬라이스가 인트라 코딩된 (I) 슬라이스로서 코딩될 때, 예측 유닛 (73) 의 인트라 예측 유닛 (74) 은, 현재 프레임 또는 화상의 이전에 디코딩된 블록들로부터 시그널링된 인트라 예측 모드 및 데이터에 기초하여 현재 비디오 슬라이스의 비디오 블록을 위한 예측 데이터를 생성할 수도 있다. 인트라 예측 유닛 (74) 은, 인덱스에 기초하여 비디오 데이터의 현재 블록을 디코딩하기 위한 적절한 인트라 예측 모드가 현재 블록을 위한 인트라 예측 모드에 대응한다는 것을 결정할 수도 있다. 인트라 예측 모드는 도 2를 참조하여 이전에 설명된 바처럼 모드 선택 유닛 (43) 에 의해 이전에 설명되었을 수도 있고, 인덱스는 비디오 인코더 (20) 에 의해 비디오 디코더 (30) 로 전송된 인코딩된 비트스트림에 포함되었을 수도 있다. 인트라 예측 유닛 (74) 은 인덱스에 대응하는 인트라 예측 모드에 기초하여 예측 블록을 선택할 수도 있다. 합산기 (80) 는 디코딩된 현재 블록을 생성하기 위하여 역 변환 프로세싱 유닛 (78) 으로부터 예측 블록 데이터 및 잔차 블록 데이터를 가산할 수도 있다. 메모리 (82) 는 디코딩된 현재 블록을 저장할 수도 있고, 이는 후속하여 디스플레이 디바이스에 의해 출력되거나 또는 또 다른 컴퓨팅 디바이스로 전송될 수도 있다.
위에 언급된 바처럼, 본 개시의 양태들은 일반적으로 인트라 코딩에 관한 것이다. 그래서, 본 개시의 특정한 기법들은 인트라 예측 유닛 (74) 에 의해 수행될 수도 있다. 즉, 예를 들어, 인트라 예측 유닛 (74) 은 아래의 도 4a 내지 도 8을 참조하여 설명된 본 개시의 기법들을 수행할 수도 있다. 다른 예들에서, 비디오 디코더 (30) 의 하나 이상의 다른 유닛들은 추가적으로 또는 대안적으로, 본 개시의 기법들을 수행하는 것을 담당할 수도 있다.
비디오 화상이 인터 코딩된 (예를 들어, B, P 또는 GPB) 슬라이스로서 코딩될 때, 예측 유닛 (73) 의 모션 보상 유닛 (72) 은 엔트로피 디코딩 유닛 (70) 으로부터 수신된 모션 벡터들 및 다른 신택스 엘리먼트들에 기초하여 현재 비디오 슬라이스의 비디오 블록을 위한 예측 블록들을 생성한다. 예측 블록들은 참조 화상 리스트들 중의 하나의 리스트 내의 참조 화상들 중의 하나의 화상로부터 생성될 수도 있다. 비디오 디코더 (30) 는 참조 화상 메모리 (82) 에 저장된 참조 화상들에 기초하여 디폴트 (default) 구성 기법들을 이용하여 참조 화상 리스트들, 리스트 0 및 리스트 1 을 구성할 수도 있다.
모션 보상 유닛 (72) 은, 모션 벡터들 및 다른 신택스 엘리먼트들을 파싱 (parsing) 하여 현재 비디오 슬라이스의 비디오 블록을 위한 예측 정보를 결정하고, 그 예측 정보를 사용하여 디코딩되는 현재 비디오 블록을 위한 예측 블록들을 생성한다. 예를 들어, 모션 보상 유닛 (72) 은 수신된 신택스 엘리먼트들의 일부를 사용하여 비디오 슬라이스의 비디오 블록들을 코딩하는데 사용된 예측 모드 (예를 들어, 인트라 또는 인터 예측), 인터 예측 슬라이스 타입 (예를 들어, B 슬라이스, P 슬라이스, 또는 GPB 슬라이스), 슬라이스를 위한 참조 화상 리스트들 중의 하나 이상을 위한 구성 정보, 슬라이스의 각 인터 인코딩된 비디오 블록을 위한 모션 벡터들, 슬라이스의 각 인터 코딩된 비디오 블록을 위한 인터 예측 상태, 및 현재 비디오 슬라이스에서 비디오 블록들을 디코딩하기 위한 다른 정보를 결정한다.
모션 보상 유닛 (72) 은 또한, 보간 필터들에 기초하여 보간을 수행할 수도 있다. 모션 보상 유닛 (72) 은 비디오 블록들의 인코딩 동안 비디오 인코더 (20) 에 의해 이용되는 보간 필터들을 이용하여 참조 블록들의 서브 정수 픽셀들을 위한 보간된 값들을 계산할 수도 있다. 이 경우에, 모션 보상 유닛 (72) 은 수신된 신택스 엘리먼트들로부터 비디오 인코더 (20) 에 의해 이용된 보간 필터들을 결정하고, 그 보간 필터들을 이용하여 예측 블록들을 생성할 수도 있다.
역 양자화 유닛 (76) 은 비트스트림에서 제공되고 엔트로피 디코딩 유닛 (70) 에 의해 디코딩되는 양자화된 변환 계수들을 역 양자화, 예를 들어, 탈 양자화한다. 역 양자화 프로세스는, 양자화의 정도, 그리고, 마찬가지로, 적용되어야 하는 역 양자화의 정도를 결정하기 위해, 비디오 슬라이스에서 각 비디오 블록을 위해 비디오 인코더 (20) 에 의해 계산된 양자화 파라미터의 이용을 포함할 수도 있다. 역 변환 프로세싱 유닛 (78) 은, 픽셀 도메인에서 잔차 블록들을 생성하기 위해 변환 계수들에, 역 변환, 예를 들어, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역 변환 프로세스를 적용한다.
모션 보상 유닛 (72) 이 모션 벡터들 및 다른 신택스 엘리먼트들에 기초하여 현재 비디오 블록을 위한 예측 블록을 생성한 후에,비디오 디코더 (30) 는 역 변환 프로세싱 유닛 (78) 으로부터의 잔차 블록들과 모션 보상 유닛 (72) 에 의해 생성된 대응하는 예측 블록들을 합산함으로써 디코딩된 비디오 블록을 형성한다. 합산기 (80) 는 이 합산 연산을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 원하는 경우, 블로키니스 아티팩트 (blockiness artifact) 들을 제거하기 위하여 디코딩된 블록들을 필터링하기 위한 디블록킹 필터가 또한 적용될 수도 있다. (코딩 루프내 또는 코딩 루프 후의) 다른 루프 필터들이 또한 픽셀 천이들을 매끄럽게 하거나 또는 다른 방법으로 비디오 품질을 향상시키는데 사용될 수도 있다. 다음으로, 정해진 프레임 또는 화상에서 디코딩된 비디오 블록들은 참조 화상 메모리 (82) 에 저장되고, 이는 후속 모션 보상을 위해 사용된 참조 화상들을 저장한다. 참조 화상 메모리 (82) 는 또한, 도 1의 디스플레이 디바이스 (32) 와 같은 디스플레이 디바이스 상에 나중에 표출하기 위해 디코딩된 비디오를 저장한다.
도 4a 는 본 개시에 설명된 기법들에 따라, 비디오 코더가 선택할 수도 있는 인트라 예측 모드들의 개념적인 표현을 도시하는 블록도이다. H.264/AVC, MPEG-2, 및 HEVC 와 같은 비디오 코딩 표준들은 블록 기반 하이브리드 비디오 코딩 프레임워크들을 이용한다. 그러한 프레임워크들에서, 화상은 상이한 크기들의 블록들로 분할되고, 이는 HEVC 에서 CU (코딩 유닛) 으로 칭해진다. 이전에 설명된 바처럼, 각각의 CU 는 예측 (PU) 또는 변환 (TU) 을 위한 더 작은 블록들로 스플릿될 수도 있다. 각각의 PU 는 인트라 모드의 경우에 현재 슬라이스 내에서 또는 인터 모드의 경우에 시간적으로 이웃하는 슬라이스들로부터 예측될 수도 있다. 예측 에러는 도 1 내지 도 3에 설명된 바처럼, 변환, 양자화 및 가변 길이 코딩 기법들을 이용하여 코딩된다.
비디오 데이터에서, 직사각형 영역에 있는 샘플들과 그 영역에 바로 인접한 샘플들 사이에 상대적으로 높은 상관이 존재할 수도 있다. 일부 예들에서, HEVC 와 같은 비디오 코딩 기법들은 인접한, 이전에 코딩된 PU 들에 있는 샘플들로부터 현재 PU 를 예측하기 위해 인트라 예측을 사용한다. HEVC 에서, 인트라 예측은 상이한 PU 들에 대해 35 개의 모드들을 제공한다. 35 개의 모드들은 평면 모드 (모드 0), DC 모드 (모드 1) 및 +/-[0,2,5,9,13,17,21,26,32]/32 각도들의 33개의 예측 방향에 대응하는 33 개 각도 예측 모드들을 포함한다.
도 4a 는 HEVC 에서 정의된 모든 모드들을 위한 35개 각도 예측 방향들을 도시한다. 평면 모드 ("모드 0" 또는 "0" 으로 표기됨) 에서, 비디오 인코더 (20) 는 현재 블록의 좌측 열에 인접한 열에 있는 픽셀 값들 및 현재 블록의 상측 행에 인접한 행에 있는 픽셀 값들로부터 현재 블록을 위한 픽셀 값들을 예측할 수도 있다. DC 모드 ("모드 1" 또는 "1" 로 표기됨) 에서, 비디오 인코더 (20) 는 현재 블록의 상단 행 위의 행에 있는 픽셀들의 값들과 현재 블록의 가장 좌측 열에 인접한 열에 있는 픽셀들의 값들의 합산의 평균으로부터 예측 블록을 계산할 수도 있다. 각도 예측 모드에서, 비디오 인코더 (20) 는 통상적으로, 현재 블록의 상단 행 위의 행으로부터의 픽셀 값들 또는 현재 블록의 가장 좌측 열에 인접한 열의 픽셀 값들로부터 정해진 각도 (이는 인트라 예측 모드들 2-34 로서 위에서 보여짐) 를 따라 픽셀들을 예측할 수도 있다.
인트라 예측을 수행할 때, 비디오 인코더는 다수의 상이한 인트라 예측 모드들 중에서 선택할 수도 있다. 인트라 예측을 수행할 때, 비디오 인코더는 종종, 35개 인트라 예측 모드들 중의 각각과 연관된 근사 비용을 분석한다. 이 근사 비용은 레이트 왜곡 비용에 근사할 수도 있다. 레이트 왜곡 비용을 계산하는 것은 통상적으로, 비디오 인코더가 인트라 예측 모드들 중의 각각을 사용하여 예측된 블록을 계산하고, 예측된 블록들 중의 각각과 현재 블록 사이의 차이 (위에서 언급된 잔차 픽셀 값들을 명시하는 "잔차 블록" 으로 보통 지칭됨) 를 결정하고, 공간 도메인으로부터 주파수 도메인으로 각각의 잔차 블록을 변환하고, 변환된 잔차 블록들의 각각을 양자화하여 대응하는 인코딩된 비디오 블록을 생성하고, 다음으로 인코딩된 비디오 블록을 디코딩하며, 각각의 디코딩된 비디오 블록을 현재 블록과 비교하여 왜곡 메트릭을 결정할 것을 필요로 한다. 또한, 이 레이트 왜곡 분석은 인트라 예측 모드들 중의 각각에 대해, 인코딩된 비디오 블록들의 각각을 시그널링하는데 사용된 비트들의 양을 계산하는 것을 수반한다. 그러므로, 비디오 인코더는 35개 인트라 예측 모드들 중의 대응하는 하나를 이용하여 예측된 블록들의 각각을 위해 이 레이트 왜곡 분석을 수행하기 보다는 근사 비용을 계산할 수도 있다.
일부 예들에서, 비디오 인코더는 인트라 예측 모드들 중의 각각을 이용하여 예측된 예측 블록들의 각각을 위한 근사 비용을 계산할 수도 있다. 가령, 비디오 인코더는 초기에, 35개 인트라 예측 모드들 중의 각각에 대응하는 35개 근사 비용들을 계산할 수도 있다. 다음으로, 비디오 인코더는, 근사 비용이 어떤 상황들하에서 레이트 왜곡 비용을 부정확하게 근사할 수도 있으므로, 인트라 예측 모드들 중의 일부 서브세트를 위해 전체 레이트 왜곡 분석을 수행할 수도 있다.
서브세트를 이용한 위의 단순화는 무차별 대입 검색과 비교하여 필요한 계산의 양을 감소시킬 수도 있지만, 그러한 기법들은 대체로, 35개 인트라 예측 모드들 중의 각각에 대응하는 근사된 비용들의 35개 계산들을 여전히 필요로 한다. 그러한 기법들은, 비디오 인코더가 계산 집약적인 레이트 왜곡 분석을 수행하는 횟수를 감소시킬 수도 있지만, 이 프로세스는 35개 모드들의 각각을 위해 근사 비용들을 계산하는데 필요한 복잡성 및 시간을 고려하면 비디오 데이터의 실시간 인코딩 또는 근실시간 인코딩에 잘 맞지 않을 수도 있다. 일부 실시간 비디오 인코딩 환경들에서, 모든 가능한 모드들을 위한 근사 비용들을 계산하기 위한 프로세싱 요건들은 설계 제약들을 초과할 수도 있다.
본 개시에 설명된 기법들에 따르면, 비디오 인코더 (20) 는, 레이트 왜곡 분석이 수행되는 모드들의 수를 더 감소시킴으로써, 인트라 예측 프로세스를 수행하는 것과 연관된 시간 및 복잡성을 감소시키는 것이 가능할 수도 있다. 가령, 비디오 인코더 (20) 는, 인트라 예측을 수행할 때 사용될 가능성이 통계적으로 더 높은 미리 정의된 예측 모드들의 서브세트를 초기에 결정할 수도 있다. 비디오 인코더 (20) 는 보다 낮은 레이트 왜곡 근사 비용을 제공하는 추가 인트라 예측 모드들을 검색함으로써 서브세트를 정제할 수도 있다. 가령, 비디오 인코더 (20) 는 보다 낮은 레이트 왜곡 근사 비용을 제공하는 검색에서의 인트라 예측 모드를 식별할 수도 있다.
식별된 인트라 예측 모드와 연관된 근사 왜곡 비용에 기초하여, 비디오 인코더 (20) 는 식별된 모드를 서브세트에 추가하거나 및/또는 식별된 모드로 서브세트에서의 미리 정의된 모드를 교체할 수도 있다. 이런 식으로, 비디오 인코더 (20) 는 보다 낮은 레이트 왜곡 근사 비용을 제공하는 모드들을 포함하도록 예측 모드들의 서브세트를 정제할 수도 있다. 결과적으로, 비디오 인코더 (20) 는 모든 가능한 인트라 예측 모드들보다는 인트라 예측 모드들의 서브세트에서 식별된 그러한 인트라 예측 모드들만을 위한 전체 레이트 왜곡 분석을 수행할 수도 있다. 현재 세트에서 인트라 예측 모드들의 수는 인트라 예측 모드들의 전체 수보다 작고 보다 낮은 레이트 왜곡 근사 비용을 제공할 수도 있으므로, 본 개시의 기법들은 모드 선택을 수행하기 위한 복잡성 및 프로세싱 요건들을 감소시킬 수도 있다. 일부 예들에서, 그러한 프로세싱 요건들을 감소시키는 것은 병렬- 및/또는 직렬 프로세싱 비디오 코더들에서 비디오 코딩 성능을 향상시킬 수도 있다. 인트라 예측 프로세스를 수행하는 것과 연관된 시간 및 복잡성을 감소시킴으로써, 비디오 인코더 (20) 는 실시간 비디오 인코딩 또는 근실시간 비디오 인코딩을 수행할 수도 있다.
도 4b 는 본 개시에 설명된 기법들에 따라, 인트라 예측 코딩될 현재 블록 및 이웃 블록들의 개념적인 표현을 도시하는 블록도이다. 도 4b 는, 현재 코딩 유닛 ("현재 CU") 로 지칭될 수도 있는 현재 블록 (100) 및 인트라 코딩 동안에 고려될 수도 있는 2개 이웃 블롯들, 즉 블록 (102) ("블록 A") 및 블록 (104) ("블록 B") 의 일 예를 예시한다. 예를 들어, 비디오 인코더는 (현재 블록의 좌측에 배치된) 이웃 블록 (102) 및 (현재 블록의 상측에 배치된) 이웃 블록 (104) 을 코딩하는데 사용된 인트라 예측 모드들을 현재 블록의 최고 확률 인트라 모드들로서 고려할 수도 있다.
도 2 및 도 4에서 이전에 설명된 바처럼, 비디오 인코더는, 전체 레이트 왜곡 비용을 계산하기 보다는, 레이트 왜곡 비용에 근사할 수도 있는 근사 비용을 계산할 수도 있다. 가능한 인트라 예측 모드들 중의 각각을 위한 근사 비용을 계산하는 대신에, 비디오 인코더는 인트라 예측 코딩 동안 하나 이상의 소위 "최고 확률 (most probable)" 인트라 예측 모드들을 식별할 수도 있다. 최고 확률 모드를 식별하기 위하여, 비디오 인코더는 (종종 현재 블록에 인접한 이웃 블록들인) 이전에 인코딩된 블록들의 인트라 예측 모드를 식별할 수도 있다. 이들 소위 이웃 블록들의 인트라 모드들은 현재 블록에 대한 이웃 블록들의 공간적 근접성에 기인하여 현재 블록에 유사하거나 또는 동일할 상대적으로 높은 확률을 가질 수도 있다. 비디오 인코더는 다른 모드들보다 인트라 예측을 수행할 때 사용될 가능성이 통계적으로 더 높은 이들 최고 확률 모드들 또는 이들 최고 확률 모드들과 다른 가능한 모드들 (이를테면 평면 및 DC 모드들) 만으로 근사 비용 계산들의 수를 감소시킬 수도 있다.
비디오 인코더는, 위에서 식별된 크기 (8x8 이하 크기의 블록들에 대해 8 내지 10 그리고 8x8 보다 큰 크기의 블록들에 대해 3 내지 5) 의 리스트를 형성할 수도 있으며, 리스트에서 최저 근사 비용을 갖는 인트라 예측 모드들을 그들 각각의 비용에 의해 순서화한다. 즉, 최저 비용 모드가 리스트에 먼저 배치되며 제 2 최저 비용 모드 등이 뒤 따를 수도 있다. 다음으로 비디오 인코더는 이웃 블록들을 인코딩하는데 사용된 인트라 예측 모드에 기초하여 최고 확률 모드들을 식별하고 이들 모드들을 리스트에 추가하거나, 이들 모드들을 리스트에 첨부할 수도 있다. 일부 사례들에서, 이들 최고 확률 모드들이 이미 리스트에 존재할 수도 있으며, 그 결과 비디오 인코더는 이 최고 확률 모드를 리스트에 재추가 (re-add) 하지 않는다. 다음으로, 비디오 인코더는 리스트에 있는 모드들에 대해 전체 레이트 왜곡 분석을 수행할 수도 있으며, 그에 의해 비디오 인코더가 전체 레이트 왜곡 분석을 수행하는 예측 블록들의 수를 감소시킨다.
이 프로세스는, 비디오 인코더가 계산 집약적인 레이트 왜곡 분석을 수행하는 횟수를 감소시킬 수도 있지만, 이 프로세스는 여전히 35개 모드들의 각각을 위한 근사 비용 계산을 수행하는데 필요한 복잡성 및 시간을 고려하면 비디오 데이터의 실시간 인코딩 또는 근실시간 인코딩에 잘 맞지 않을 수도 있다. 본 개시에 기재된 기법들에 따르면, 일부 예들에서 비디오 인코더 (20) 와 같은 병렬 비디오 인코더 (현재 블록 (100) 을 인코딩하는 것과 동시에 이웃 블록 (102 및 104) 을 인코딩하는 비디오 인코더를 의미함) 은 도 4a 에 도시된 전체 35개의 인트라 예측 모드들의 서브세트를 위한 근사 비용들만을 계산할 수도 있는데, 그에 의해 모드 선택의 복잡성을 감소시키고 비디오 인코더 (20) 의 제조 측면에서의 비용 절감을 제공할 수도 있다.
동작에 있어서, 비디오 인코더 (20) 는, 적어도 하나의 인트라 예측 모드를 포함하지만 비디오 데이터의 현재 블록을 코딩하기 위해 이용가능한 인트라 예측 모드들의 전체 수보다 더 적은 수의 인트라 예측 모드들의 미리 정의된 세트에서 식별된 각각의 인트라 예측 모드를 위한 근사 비용을 계산할 수도 있다. 종종, 이 미리 정의된 세트는 인트라 예측을 수행할 때 사용될 가능성이 통계적으로 더 높은 것으로 관찰된 그러한 모드들을 포함한다. 일부 사례들에서, 이 미리 정의된 세트는 고정적일 수도 있다. 이 미리 정의된 세트는, 이 점에서, 현재 블록을 위한 인트라 예측 모드들의 현재 세트를 포함할 수도 있다. 일부 사례들에서, 미리 정의된 세트는, 샘플링 오프셋으로 샘플링된 평면 모드, 모드 확률 모드 및 각도 모드들에 의해 형성될 수 있다.
다음으로, 비디오 인코더 (20) 는 (예를 들어, 도 4a 에 도시된 바처럼) 추가 인트라 예측 모드들을 검색하여, 인트라 예측 모드들의 현재 세트에 추가 인트라 예측 모드들을 추가할 수도 있다. 일부 예들에서, 이 검색은, 비디오 인코더 (20) 가 인트라 예측 모드들의 미리 정의된 세트에서 식별된 각각의 모드를 위해 계산된 근사 비용들 중에서 최저 상대 계산 근사 비용을 갖는 인트라 예측 모드들의 미리 정의된 세트에서의 모드로부터 출발하는 2진 검색과 비슷할 수도 있다.
예시하자면, 모드 26 은 최저 근사 비용을 가질 수도 있다. 이런 가정하에서, 비디오 인코더 (20) 는 모드 26으로부터 검색을 시작할 수도 있고, 여기서 모드 값, 즉 26 은 약간의 오프셋 F 만큼 감소 및 증가되어 26 + F 및 26 - F 에 도달한다. 다음으로 비디오 인코더 (20) 은 모드들 26 + F 및 26 - F 의 각각을 위해 근사 비용들을 계산할 수도 있고 모드들 26, 26 + F 및 26 - F 중에서 최저 근사 비용들을 갖는 모드를 선택한다. 다음으로 비디오 인코더 (20) 는 이 비교에 기초하여 현재 세트에서 모드를 교체, 예를 들어, 현재 세트에서의 모드 26 을, 모드들 26, 26 + F 및 26 - F 중에서 최저 근사 비용들을 갖는 선택된 모드로 교체할 수도 있다.
다음으로 비디오 인코더 (20) 는 검색을 이런 식으로 반복하여, F 를 F/2 로 이등분하고, 검색을 모드 26 (모드 26 + F 또는 모드 26 - F 중의 어느 것도 모드 26보다 작은 근사 비용을 갖지 않은 경우), 모드 26 + F (모드 26 + F 가 현재 세트에 추가된 경우) 또는 모드 26 - F (모드 26 - F가 현재 세트에 추가된 경우) 에 대해 리포커싱한다. 비디오 인코더 (20) 는 F 가 분수로 나누어질 때까지 검색 프로세스를 계속한다 (F 가 2의 거듭제곱 (power) 인 값으로서 시작하는 것으로 가정한다).
이런 식으로, 비디오 인코더 (20) 는 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들을 위해 계산된 근사 비용들에 기초하여 추가 인트라 예측 모드들을 검색하고 추가 인트라 예측 모드들의 각각을 위한 근사 비용을 계산할 수도 있다. 비디오 인코더 (20) 는, 인트라 예측 모드들의 현재 세트에서 식별된 인트라 예측 모드들의 각각을 위해 계산된 근사 비용들과 추가 인트라 예측 모드들을 위해 계산된 근사 비용들의 비교에 기초하여 인트라 예측 모드들의 현재 세트에 추가 인트라 예측 모드들을 추가할 수도 있다.
도 5는 다수의 상이한 예측 모드들로부터 선택할 때 모드 선택의 복잡성을 감소시키는 도 2에 도시된 비디오 인코더 (20) 와 같은 비디오 코더의 예시적인 동작들을 도시하는 플로우차트이다. 특히, 비디오 인코더 (20) 는 미리 정의된 모드들을 포함하는 초기 후보 세트를 구성하고, 현재 세트를 포스트 프로세싱할 수도 있다. 도 5에 도시되지는 않았지만, 비디오 인코더 (20) 는, 일부 예들에서, 도 8에 또한 예시된 바처럼, 낮은 근사 비용을 갖는 모드들을 더 식별하기 위하여 현재 세트를 정제할 수도 있다. 본 개시의 이들 기법들을 수행함에 있어서, 비디오 인코더 (20) 는 현재 세트에서 모드들의 수를 감소시킬 수도 있다. 비디오 인코더 (20) 는 레이트 왜곡 최적화 프로세스에서 포스트 프로세싱된 후보 리스트를 사용하고 현재 블록을 인트라 예측하기 위하여 최선의 모드 (예를 들어, 최저 레이트 왜곡) 을 선택할 수도 있다.
초기에, 비디오 인코더 (20) 는, 적어도 하나의 인트라 예측 모드를 갖는 인트라 예측 모드들의 미리 정의된 세트를 포함하는 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 근사 비용을 계산할 수도 있다 (120). 인트라 예측 모드들의 현재 세트는 비디오 데이터의 현재 블록을 코딩하기 위해 이용가능한 인트라 예측 모드들의 전체 수보다 더 적은 수의 인트라 예측 모드들을 포함할 수도 있다. 인트라 예측 모드들의 미리 정의된 세트는 인트라 예측을 수행할 때 사용될 가능성이 통계적으로 더 높은 것으로 관찰된 그러한 모드들을 포함할 수도 있다. 즉, 일부 예들에서, 비디오 인코더 (20) 는 하나 이상의 모드들이 선택되는 발생수를 나타내는 하나 이상의 통계들을 결정할 수도 있고, 그 통계에 적어도 부분적으로 기초하여, 비디오 인코더 (20) 는 인트라 예측 모드들의 제 1 세트에 포함된 모드들을 선택할 수도 있다.
도 2에서 이전에 설명된 바처럼, 미리 정의된 세트는, 샘플링 오프셋으로 샘플링된 평면 모드, 모드 확률 모드 및 각도 모드들에 의해 형성될 수 있다. 평면 모드 및 최고 확률 모드들이 종종 최종 선택 모드로서 보일 수도 있으므로, 비디오 인코더 (20) 는 이하에서 또한 설명된 바처럼 현재 세트에서 이들 각각의 모드들의 근사 비용을 결정할 수도 있다.
미리 정의된 세트에 포함된 최고 확률 모드들을 식별하기 위하여, 비디오 인코더 (20) 는 이전에 인코딩된 블록들의 하나 이상의 인트라 예측 모드들을 식별할 수도 있다. 이전의 인코딩된 블록들은 도 4b 에 예시된 바처럼 현재 블록에 인접한 이웃 블록들일 수도 있다. 최고 확률 모드들은 현재 블록에 대한 이웃 블록들의 공간적 근접성에 기인하여 현재 블록에 유사하거나 또는 동일할 상대적으로 높은 확률을 가질 수도 있다. 결과적으로, 비디오 인코더 (20) 는 최고 확률 모드들을 식별하고, 최고 확률 모드들의 근사 비용을 계산하고, 현재 세트에 각각의 모드들을 포함할 수도 있다 (122).
샘플링 오프셋을 이용하여 하나 이상의 각도 모드들을 식별하기 위하여, 비디오 인코더 (20) 는 도 6 을 참조하여 또한 설명되는 바처럼, 모든 가능한 각도 인트라 예측 모드들의 그룹에 포함된 하나 이상의 각도 모드들을 샘플링할 수도 있다. 비디오 인코더 (20) 는 근사 비용 계산들이 수를 감소시키기 위하여 각도 예측 모드들의 전부를 위한 근사 비용들을 계산하지 않을 수도 있다. 그 대신에, 비디오 인코더 (20) 는 오프셋을 이용하여 하나 이상의 각도 모드들을 샘플링할 수도 있다. 일부 예들에서, 근사 계산을 위한 모드들을 선택하기 위해 오프셋을 사용함으로써, 비디오 인코더 (20) 은 전체 가능한 각도 예측 모드들의 서브세트를 균일하게 샘플링할 수도 있다. 도 2 및 도 6에 기재된 커트 리스트를 사용하여, 비디오 인코더 (20) 는 현재 세트로부터 하나 이상의 샘플링된 각도 모드들을 제외할 수도 있다.
미리 정의된 인트라 예측 모드들 및/또는 각도 인트라 예측 모드들을 포함하는 현재 세트를 초기에 생성할 시에, 비디오 인코더 (20) 는 (도 7a, 도 7b 에 더 예시된) 현재 리스트에 대해 포스트 프로세싱을 수행할 수도 있다. 최고 확률 모드들은 블록들을 인트라 예측하기 위한 모드들로서 더 높은 확률로 일어날 수도 있지만, 최고 확률 모드들은 반드시 작은 근사 비용들을 갖는 것은 아닐 수도 있다.
현재 세트를 포스트 프로세싱하기 위하여, 비디오 인코더 (20) 는 모든 가능한 최고 확률 모드들로부터 최저 근사 비용을 갖는 최고 확률 모드를 결정할 수도 있다. 가령, 비디오 인코더 (20) 는 모든 가능한 최고 확률 모드의 그룹으로부터 최저 근사 비용과 연관된 모드를 선택할 수도 있다 (124). 모드 선택 유닛 (43) 은 최저 근사 비용을 갖는 최고 확률 인트라 예측 모드와 임계치를 비교할 수도 있다.
비디오 인코더 (20) 는 비교가 임계치를 만족하는지 여부를 결정할 수도 있다 (126). 가령, 비디오 인코더 (20) 는 최저 근사 비용을 갖는 최고 확률 인트라 예측 모드의 근사 비용과 현재 세트에서 비최고 확률 인트라 예측 모드의 근사 비용 사이의 차이가 임계 값보다 작다고 결정하면 (130), 비디오 인코더 (20) 는 최고 확률 모드가 비교된 비최고 확률 모드 대신에 최고 확률 모드를 추가할 수도 있다 (132). 일부 예들에서, 비디오 인코더 (20) 는 또한, 비교를 수행할 때 비최고 확률 모드의 근사 비용으로 그 차이를 나눌 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는 근사 비용의 비교가 임계치를 만족하지 않다고 결정하면 (128), 비디오 인코더 (20) 는 또 다른 최고 확률 모드를 선택할지 여부를 결정할 수도 있다.
비디오 인코더 (20) 는 모든 가능한 최고 확률 모드들 중의 또 다른 최고 확률 모드를 선택할지 여부를 결정할 수도 있다 (124). 가령, 비디오 인코더 (20) 는 비디오 인코더 (20) 에 의해 아직 평가되지 않은 또 다른 최고 확률 모드 (예를 들어, 다음 최저 근사 비용을 갖는 최고 확률 모드) 가 존재한다고 결정하면, 비디오 인코더 (20) 는 그 새로 선택된 최고 확률 모드와 연관된 근사 비용을 선택할 수도 있고 (124) 동작들 (124) - (134) 중의 하나 이상을 반복할 수도 있다. 다르게는, 체크되지 않은 최고 확률 모드가 존재하지 않거나 및/또는 비디오 인코더 (20) 가 또 다른 최고 확률 모드를 선택하지 않으면 (138), 비디오 인코더 (20) 는 현재 세트에서 식별된 각각의 인트라 예측 모드를 위해 전체 레이트 왜곡 비용을 생성할 수도 있다 (140).
현재 세트의 각각의 인트라 예측 모드들을 위해 전체 레이트 왜곡 비용들을 생성할 시에, 비디오 인코더 (20) 는 전체 레이트 왜곡 비용들에 기초하여 현재 세트로부터 인트라 예측 모드를 선택할 수도 있다 (142). 대안의 예에서, 비디오 인코더 (20) 는 근사 비용에 기초하여 현재 세트로부터 인트라 예측 모드를 선택하고 현재 세트의 하나 이상의 모드들에 전체 레이트 왜곡 분석을 수행하지 않을 수도 있다. 어느 경우든, 비디오 인코더 (20) 는, 예를 들어, 인트라 예측 모드를 선택할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는 최저 근사 비용과 연관되지 않은 인트라 예측 모드를 선택할 수도 있다.
인트라 예측 모드를 선택할 시에, 비디오 인코더 (20) 는 선택된 모드를 이용하여 현재 블록을 인코딩하기 위하여 인트라 예측을 수행할 수도 있다 (144). 이런 식으로, 이 설명에 제시된 기법들은 인트라 예측을 위한 고속 모드 판정 프로세스를 제공할 수도 있다. 이들 기법들은, 일부 사례들에서, 근사 비용 계산들의 수를 17 미만으로 감소시킬 수도 있다. 일부 예들에서, 이들 기법들은 전체 레이트 왜곡 비용 계산들의 수를 (4x4 및 8x8 의 PU 크기에 대해) 3 으로 그리고 (8x8 보다 큰 PU 크기에 대해) 2 로 감소시킬 수도 있다.
도 6은 본 개시의 기법들에 따라, 인트라 예측 모드들의 현재 세트를 초기에 구성하기 위한, 도 2에 도시된 비디오 인코더 (20) 와 같은 비디오 코더의 예시적인 동작들을 도시하는 플로우차트이다. 특히, 도 6 에서, 비디오 인코더 (20) 는 하나 이상의 미리 정의된 모드들 및/또는 각도 모드들을 포함하는 초기 현재 세트를 구성할 수도 있다.
초기에, 비디오 인코더 (20) 는 하나 이상의 미리 정의된 인트라 예측 모드들을 결정하고 각 모드를 위한 근사 비용을 계산할 수도 있다 (160). 그러한 미리 정의된 인트라 예측 모드들의 예들은, 모드 0 (평면 모드) 및 모드 1을 포함할 수도 있는데, 왜냐하면 이들 모드들은 최종 선택된 인트라 예측 모드에 종종 나타나기 때문이다. 비디오 인코더 (20) 는, 모드들의 근사 비용을 결정할 수도 있고 모드들을 현재 세트에 삽입할 수도 있고, 이들은 길이 N 을 가질 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 모드들을 근사 비용의 오름 차순으로 현재 세트에 삽입한다. HM 에서, N 은 4x4 및 8x8 의 PU 크기에 대해 8 로, 8x8 보다 큰 PU 크기에 대해 3 으로 설정된다. 수 N 이 더 작아질수록, 비디오 인코더 (20) 가 수행할 수도 있는 레이트 왜곡 비용 계산들의 수는 더 적어진다. 복잡성 및 코딩 효율의 향상된 트레이드오프들을 획득하기 위하여 비디오 인코더 (20) 는, 4x4 및 8x8 의 PU 크기에 대해 3, 16x16 및 32x32 의 PU 크기에 대해 2 로 N 을 설정할 수도 있다.
다음으로, 비디오 인코더 (20) 는 하나 이상의 최고 확률 모드들을 결정하고 각 모드를 위한 근사 비용을 계산할 수도 있다 (162). 최고 확률 모드들을 식별하기 위하여, 비디오 인코더 (20) 는 이전에 인코딩된 블록들의 인트라 예측 모드를 식별할 수도 있다. 이전의 인코딩된 블록들은 현재 블록에 인접한 이웃 블록들일 수도 있다. 일부 사례들에서, 3개의 최고 확률 모드들이 있다. 첫번째 2개는 상측과 좌측의 PU 들의 인트라 예측 모드들인데, 그러한 PU 들이 이용가능하고 인트라 예측 모드를 이용하여 코딩되는 경우에 그러하다. 임의의 이용가능하지 않은 예측 모드는 인트라 DC 모드인 것으로 고려된다. 그 2개의 최고 확률 모드들이 동일하지 않을 때, 제 3 최고 확률 모드가 Intra_Planar, Intra_DC 또는 Intra_Angular[ 26 ] (수직) 과 동일하게, 이들 모드들 중의 어느 것이, 이 순서에서, 하나의 첫번째 2개 모드들의 사본이 아닌 것에 따라, 설정된다. 첫번째 2개 최고 확률 모드들이 동일할 때, 이 제 1 모드가 값 Intra_Planar 또는 Intra_DC 를 가지면, 제 2 및 제 3 최고 확률 모드들은 Intra_Planar, Intra_DC, 또는 Intra_Angular[ 26 ] 로서, 이들 모드들 중에서 어느 것이, 이 순서에서, 사본이 아닌 것에 따라, 할당된다. 첫번째 2개 최고 확률 모드들이 동일하고 제 1 모드가 Intra_Angular 값을 가질 때, 제 2 및 제 3 최고 확률 모드들이 첫번째 것의 각도 (즉, k의 값) 에 가장 가까운 2개 각도 예측 모드들로서 선택된다.
최고 확률 모드들은 현재 블록에 대한 이웃 블록들의 공간적 근접성에 기인하여 현재 블록에 유사하거나 또는 동일할 상대적으로 높은 확률을 가질 수도 있다. 결과적으로, 비디오 인코더 (20) 는 최고 확률 모드들의 근사 비용들을 결정하고, 현재 세트에 그 모드들을 삽입할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 모드들을 근사 비용의 오름 차순으로 현재 세트에 삽입한다.
비디오 인코더 (20) 는 또한, 현재 세트에 하나 이상의 각도 인트라 예측 모드들을 추가할 수도 있다. 근사 비용 계산들의 수를 감소시키기 위하여, 비디오 인코더 (20) 는 각각의 가능한 각도 인트라 예측 모드를 위한 근사 비용들을 계산하지 않을 수도 있다. 그 대신에, 비디오 인코더 (20) 는 오프셋으로 각도 인트라 예측 모드들을 균일하게 샘플링할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 또한, 아래에서 또 설명되는 커트 리스트에 포함된 하나 이상의 인트라 예측 모드들을 위한 근사 비용들을 계산하지 않을 수도 있다.
하나 이상의 각도 모드들을 샘플링하기 위하여, 비디오 인코더 (20) 는 초기 각도 모드를 선택할 수도 있다 (164). 일부 예들에서, 초기 각도 모드는 2의 모드 인덱스를 갖는 각도 모드일 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는 오프셋에 기초하여 초기 각도를 결정할 수도 있다. 가령, 비디오 인코더 (20) 는 오프셋 또는 오프셋에 적어도 부분적으로 기초한 값과 동일한 인덱스를 갖는 모드를 초기 모드로서 선택할 수도 있다.
다음으로, 비디오 인코더 (20) 는 선택된 각도 모드의 인덱스가 가능한 각도 모드들의 전체 수보다 더 큰지 여부를 결정할 수도 있다 (166). 가령, 각도 모드들의 전체 수는 33 과 동일할 수도 있고 비디오 인코더 (20) 는 선택된 각도 모드 (예를 들어, 인트라 예측 모드 (2))가 33 보다 작은지 여부를 결정할 수도 있다. 선택된 각도 모드의 인덱스가 가능한 각도 모드들의 전체 수보다 작다고 결정할 시에 (168), 비디오 인코더 (20) 는 선택된 각도 모드가 커트 리스트에 있는지 여부를 결정할 수도 있다. 커트 리스트는 낮거나 또는 최소 확률로 선택된 인트라 예측 모드들을 포함할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 수집된 통계에 기초하여 커트 리스트를 결정할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 33 개의 각도 모드들에서 중복성을 결정할 수도 있다. 일 예로서, 비디오 인코더 (20) 는 이미지에서 동일한 에지 방향을 예측하기 위하여 모드 2 및 모드 34를 사용할 수 있다. 비디오 인코더 (20) 가 오름 차순으로 각도 모드들을 선택할 때 비디오 인코더 (20) 는 먼저 모드 2를 체크할 수도 있으므로, 비디오 인코더 (20) 는 현재 세트내에 모드 34를 삽입할 가능성이 낮다. 일부 예들에서, 모드 34 는 매우 낮은 확률로 일어날 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는 전체 레이트 왜곡 최적화에 의해 선택된 모드들의 수를 결정하는 것에 의해 커트 리스트를 획득할 수도 있다. 이런 식으로, 비디오 인코더 (20) 는 인트라 예측 모드들의 분포를 도출할 수 있다. 가령, 비디오 인코더 (20) 에 의해 선택된 인트라 예측 모드들의 확률은 하나 이상의 최고 확률 모드들, 즉, 현재 PU 의 좌측과 상측의 PU들과 같은 이전에 코딩된 이웃 PU 들의 인트라 예측 모드들에 의존할 수도 있다.
하나 이상의 최고 확률 모드들에 기초한 커트 리스트들의 일 예로서, 비디오 인코더는 오프셋으로서 4의 값을 사용할 수도 있다. 32x32 PU들에 대해, 비디오 인코더 (20) 에 의해 선택된 커트 리스트는 좌측 PU 의 예측 모드에 의존할 수도 있고, 다수의 커트 리스트들을 포함하는 커트 리스트 테이블은 하기와 같이 정의될 수도 있다:
결과적으로, 좌측 이웃 PU 의 인트라 예측 모드가 2 이면, 비디오 인코더 (20) 에 의해 선택된 커트 리스트는 {14,22,18,34,30,10} 이다. 위의 테이블에서, 모드 {34, 14, 18, 22} 는 최고 횟수로 나타난다. 결과적으로, 일부 예들에서, 이웃 블록에 독립적인 커트 리스트는 {34, 14, 18, 22} 일 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는 최고 확률 모드들 및 이웃 PU 들의 예측 모드에 기초하여 커트 리스트를 구성할 수도 있다. 예를 들어, 좌측 이웃 PU 들 및 상측 이웃 PU 들의 예측 모드들이 동일하면, 비디오 인코더 (20) 는 그러한 모드들이 높은 확률과 연관되어 있다고 결정할 수도 있는 한편, 그 높은 확률 모드들에 직각인 (예를 들어, 90 도 각도인) 모드들은 선택될 가능성이 더 적다. 그러므로, 비디오 인코더 (20) 는 이웃 블록들의 모드들에 기초하여 선택될 가능성이 더 적은 모드들을 포함하는 커트 리스트를 구성할 수도 있다.
비디오 인코더 (20) 는 또한, 일부 예들에서, 가능성이 더 적은 모드들의 인덱스들과 이웃 모드들 또는 최고 확률 모드들의 인덱스들 사이의 차이가 대략 11 내지 13 과 동일 또는 그 사이의 값이라는 것을 결정할 수도 있다. 비디오 인코더 (20) 는 모드 인덱스가 대략 11 내지 13 과 동일 또는 그 사이의 값 만큼 최고 확률 모드 인덱스와는 상이한 그러한 모드들을 커트 리스트에 포함할 수도 있다. 결과적으로, 비디오 인코더 (20) 가 2개의 이웃 모드들이 가깝지만 동일하지 않다고 결정하면, 비디오 인코더 (20) 는 V 를 넘는 차이를 갖는 모드들의, 수치적으로, 양측에 있는 그러한 모드들을 커트 리스트에 포함할 수도 있다. 일부 예들에서, V 는 8 과 12 사이의 값 (예를 들어, 10) 과 동일할 수도 있다. 다르게는, 비디오 인코더 (20) 는 2개 이웃 모드들이 멀리 떨어져 있다고 (예를 들어, 2개 모드들의 모드 인덱스들 사이의 큰 차이) 결정하면, 비디오 인코더 (20) 는 2개 이웃 모드들의 각각의 모드 인덱스들 사이의 모드 인덱스를 갖는 모드에서 및/또는 그의 중점에서 하나 이상의 모드들을 커트 리스트에 포함할 수도 있다.
도 5의 예에서, 비디오 인코더 (20) 는 선택된 각도 모드가 커트 리스트에 있는지 여부를 결정할 수도 있다 (170). 선택된 각도 모드가 커트 리스트에 있는 경우 (172), 비디오 인코더 (20) 는 선택된 각도 모드를 현재 세트에 삽입하고 모드의 근사 비용을 결정하지 않을 수도 있다. 다음으로, 비디오 인코더 (20) 는 비디오 인코더 (20) 에 의해 선택된 오프셋에 기초하여 다음 각도 인덱스를 결정할 수도 있다. 가령, 비디오 인코더 (20) 는 일 예에서 오프셋만큼 선택된 각도 모드의 인덱스를 증가시킬 수도 있다. 또 다른 예에서, 비디오 인코더 (20) 는 다음 각도 모드 인덱스를 결정하기 위하여 오프셋을 사용하여 선택된 각도의 인덱스에 함수를 적용할 수도 있다.
비디오 인코더 (20) 는 선택된 각도 모드가 커트 리스트에 있지 않다고 결정하면 (174), 다음으로 비디오 인코더는, 근사 비용이 선택된 각도 모드를 위해 이전에 계산되었는지 여부를 결정할 수도 있다 (176). 근사 비용이 선택된 각도 모드를 위해 이전에 계산되었다면 (178), 비디오 인코더 (20) 는 상술된 바처럼, 비디오 인코더 (20) 에 의해 선택된 오프셋에 기초하여 다음 각도 모드 인덱스를 결정할 수도 있다. 하지만, 근사 비용이 선택된 각도 모드를 위해 계산되지 않았다면 (180), 비디오 인코더 (20) 는 선택된 모드를 위한 근사 비용을 계산할 수도 있다 (182). 다음으로 비디오 인코더 (20) 는 각도 모드를 현재 세트에 삽입할 수도 있다 (184). 일부 예들에서, 다음으로 비디오 인코더 (20) 는 상술된 바처럼, 비디오 인코더 (20) 에 의해 선택된 오프셋에 기초하여 다음 각도 인덱스를 결정한다. 도 6에 도시된 바처럼, 비디오 인코더 (20) 는 모드가 커트 리스트에 있지 않고 이미 체크되지 않았다면 각도 모드의 근사 비용만을 계산할 수도 있다. 결과적으로, 근사 비용 계산들의 수 N1 는 하기와 같을 수도 있다:
식중, offset 는 각도 모드들에 대한 샘플링 오프셋이고 K 는 커트 리스트의 길이이다.
일부 예들에서, 다음 생성된 각도 모드 인덱스가 가능한 각도 모드들의 전체 수보다 더 크면 (167), 비디오 인코더 (20) 는 현재 세트에서의 최저 근사 비용이 각도 모드와 연관되어 있는지를 결정할 수도 있다 (188). 현재 세트에서 최저 근사 비용이 각도 모드와 연관되어 있으면 (190), 비디오 인코더 (20) 는 또한, 현재 세트에서 인트라 예측 모드들을 정제할 수도 있다. 정제 동작들의 추가 상세들이 도 8에 설명되어 있다. 다르게는, 비디오 인코더 (20) 는 현재 세트에서의 최저 근사 비용이 각도 모드와 연관되어 있지 않다고 (예를 들어, 최저 근사 비용이 현재 세트에 포함된 평면 또는 DC 모드와 같은 미리 정의된 모드들 중의 하나와 연관되어 있다고) 결정하면, 비디오 인코더 (20) 는 현재 세트를 더 정제함이 없이 도 7a 및 도 7b 에 또한 기재된 바처럼 현재 세트를 포스트 프로세싱할 수도 있다 (194).
도 7a는, 인트라 예측 모드들의 현재 세트를 포스트프로세싱하기 위한, 도 2에 도시된 비디오 인코더 (20) 와 같은 비디오 코더의 예시적인 동작들을 도시하는 플로우차트이다. 특히, 도 5 에서, 비디오 인코더 (20) 는 비디오 인코더 (20) 에 의해 이전에 생성된 인트라 예측 모드들의 세트 (예를 들어, 현재 세트) 의 포스트 프로세싱을 수행할 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는 높은 확률 및/또는 발생 수로 선택된 최고 확률 모드들을 식별할 수도 있다. 근사 비용은 단지 전체 레이트 왜곡 비용의 근사치이므로, 최고 확률 모드들은 작은 근사 비용들을 갖지 않을 수도 있다. 반면에, 전체 레이트 왜곡 분석을 수행하기 위한 후보 모드들로서 최고 확률 모드들만을 사용하는 것은 일부 예들에서 감소된 성능을 초래할 수도 있다. 그러므로, 비디오 인코더 (20) 에 의해 구현되는 본 개시의 기법들은 도 7a 및 도 7b 에 또한 예시된 바처럼 하나 이상의 인트라 예측 모드들을 선택할 때 최고 확률 모드들 및 근사 비용들 양자 모두를 채용할 수도 있다. 즉, 일부 예들에서, 인트라 예측 모드들의 현재 세트는 최고 확률 모드들 및 작은 근사 비용들을 갖는 모드들을 포함할 수도 있다. 도 7a 및 도 7b 는 근사 비용 및 최고 확률 모드들에 기초한 현재 세트의 포스트 프로세싱을 예시한다. 일부 예들에서, 현재 세트는 도 6에 예시된 기법들에 따라 생성된 인트라 예측 모드들의 현재 세트일 수도 있다. 일부 예들에서, 현재 세트는 도 8에 예시된 기법들에 따라 정제된 인트라 예측 모드들의 현재 세트일 수도 있다.
도 6의 예에서 이전에 설명된 바처럼, 비디오 인코더 (20) 는 현재 리스트에 포함되지 않은 하나 이상의 최고 확률 모드들이 현재 세트에서의 하나 이상의 모드들보다 더 낮은 근사 비용 값들을 갖는지 여부를 결정할 수도 있다. 비디오 인코더 (20) 는 현재 세트에 포함되지 않은 최고 확률 모드와 현재 세트에 있는 비최고 확률 모드 사이의 근사 비용의 차이가 임계 값보다 작다고 결정하면, 비디오 인코더 (20) 는, 예를 들어, 비최고 확률 모드를 교체함으로써, 현재 세트에 최고 확률 모드를 포함할 수도 있다.
초기에, 비디오 인코더 (20) 는 모든 가능한 최고 확률 모드들로부터 최저 근사 비용을 갖는 최고 확률 모드를 결정할 수도 있다. 가령, 비디오 인코더 (20) 는 초기에 최고 확률 모드 리스트로부터 모드를 선택할 수도 있다 (210). 비디오 인코더 (20) 에 의해 선택된 제 1 최고 확률 모드는 최고 확률 모드 인덱스와 연관된 최고 확률 모드일 수도 있다. 최고 확률 모드를 선택할 시에, 비디오 인코더 (20) 는 선택된 최고 확률 모드가 현재 세트 (예를 들어, 도 6 및/또는 도 8 에 예시된 기법들을 이용하여 생성된 현재 세트) 에 있는지 여부를 결정할 수도 있다 (212).
비디오 인코더 (20) 는 선택된 최고 확률 모드가 현재 세트에 포함된다고 결정하면 (214), 비디오 인코더 (20) 는 모든 가능한 최고 확률 모드들의 그룹에 추가 최고 확률 모드들이 아직 평가되지 않았는지를 결정할 수도 있다 (226). 평가될 추가 최고 확률 모드들이 남아 있으면 (228), 비디오 인코더 (20) 는 모든 가능한 최고 확률 모드들의 그룹에 포함된 다음 미평가 최고 확률 모드를 선택할 수도 있다 (210).
비디오 인코더 (20) 는 선택된 최고 확률 모드가 현재 세트에 포함되어 있지 않다고 결정하면 (216), 비디오 인코더 (20) 는 선택된 최고 확률 모드와 연관된 근사 비용을 결정할 수도 있다. 비디오 인코더 (20) 는 선택된 최고 확률 모드와 연관된 근사 비용이 비디오 인코더 (20) 에 의해 이전에 체크된 최고 확률 모드들의 최저 근사 비용인지 여부를 결정할 수도 있다 (218). 즉, 비디오 인코더 (20) 는 도 7a 의 동작들을 수행하는 동안 최저 근사 비용 (그리고 일부 예들에서 모드의 대응하는 근사 비용) 을 갖는 모드의 인덱스를 보유할 수도 있다. 비디오 인코더 (20) 는 선택된 최고 확률 모드와 연관된 근사 비용이 임의의 이전에 체크된 최고 확률 모드의 근사 비용보다 작지 않다고 결정하면 (222), 비디오 인코더 (20) 는 모든 가능한 최고 확률 모드들의 그룹에 있는 추가 최고 확률 모드들이 아직 체크되지 않았는지를 결정할 수도 있다 (226). 즉, 비디오 인코더 (20) 는 모든 가능한 최고 확률 모드들의 최저 근사 비용을 갖는 모드로서 선택된 최고 확률 모드를 보유하지 않을 수도 있다.
하지만, 비디오 인코더 (20) 가 선택된 최고 확률 모드의 근사 비용이 모든 이전에 체크된 최고 확률 모드들의 근사 비용보다 작다고 결정하면 (220), 비디오 인코더 (20) 는 최저 근사 비용을 갖는 모드로서 선택된 최고 확률 모드를 설정할 수도 있다 (224). 가령, 비디오 인코더 (20) 는 모든 평가된 최고 확률 모드들의 최저 근사 비용을 갖는 모드로서 선택된 최고 확률 모드의 인덱스를 저장할 수도 있다. 이런식으로, 비디오 인코더 (20) 는 모든 가능한 모드 확률 모드들의 그룹에서 각각의 최고 확률 모드를 통해 반복할 때 최저 근사 비용과 연관된 최고 확률 모드를 업데이트할 수도 있다. 결과적으로, 비디오 인코더 (20) 는 최저 근사 비용을 갖는 최고 확률 모드를 선택하기 위하여 모든 가능한 모드 확률 모드들의 그룹을 검색하는데 이 기법들을 사용할 수도 있다.
상술된 바처럼, 비디오 인코더 (20) 는 모든 가능한 최고 확률 모드들의 그룹에 있는 추가 최고 확률 모드들이 아직 평가되지 않았는지를 결정할 수도 있다 (226). 추가 최고 확률 모드들이 아직 평가되지 않은 경우 (228), 비디오 인코더 (20) 는 다음 미체크 최고 확률 모드를 선택할 수도 있다 (210). 하지만, 비디오 인코더 (20) 는 모든 최고 확률 모드들이 평가되었다고 결정하면 (230), 다음으로 비디오 인코더 (20) 는 현재 세트를 포함하는 최대 근사 비용과 연관된 모드를 포함한다고 결정할 수도 있다 (232).
도 7b 에서, 비디오 인코더 (20) 는 현재 세트로부터 이 모드 (예를 들어, 현재 세트를 포함하는 최대 근사 비용과 연관된 모드) 를 선택할 수도 있다 (234). 모드를 선택할 시에, 비디오 인코더 (20) 는 현재 세트로부터 선택된 모드가 최고 확률 모드인지 여부를 결정할 수도 있다 (234). 선택된 모드가 최고 확률 모드이면 (240), 비디오 인코더 (20) 는 현재 세트에서 다음 모드를 선택할 수도 있다. 가령, 모드들의 현재 세트가 근사 비용에 기초하여 내림 차순으로 순서화되어 있고 비디오 인코더 (20) 가 초기에 최고 근사 비용과 연관된 모드를 선택하면, 비디오 인코더 (20) 는 다음 최고 근사 비용과 연관된 현재 세트에서 다음 미평가 모드를 선택할 수도 있다 (234).
비디오 인코더 (20) 는 선택된 모드가 최고 확률 모드가 아니라고 결정하면 (238), 비디오 인코더 (20) 는 현재 세트로부터 선택된 모드 (즉, 비최고 확률 모드) 의 근사 비용과 최저 근사 비용을 갖는 것으로 (224) 에서 비디오 인코더 (20) 에 의해 이전에 선택된 최고 확률 모드의 근사 비용 사이의 차이를 결정할 수도 있다 (242). 비디오 인코더 (20) 는 차이가 임계치를 만족하는지 여부를 결정할 수도 있다 (244). 가령, 비디오 인코더는 그 차이가 다음 방식으로 임계치를 만족시키는지 여부를 결정할 수도 있다:
식중 J 는 비최고 확률 모드의 근사 비용이고, J M 는 최저 근사 비용을 갖는 것으로서 (224) 에서 비디오 인코더 (20) 에 의해 이전에 선택된 최고 확률 모드의 근사 비용이고, T 는 임계치이다. 가령, 그 차이는 지수 (예를 들어, 값) 이 임계치보다 작을 때 임계치를 만족할 수도 있다. 다른 예에서, 그 차이는 지수가 임계치 이상일 때 임계치를 만족할 수도 있다.
비디오 인코더 (20) 는 그 차이가 임계치를 만족한다고 결정하면 (246), 비디오 인코더 (20) 는 최저 근사 비용을 갖는 것으로서 (224) 에서 비디오 인코더 (20) 에 의해 이전에 선택된 최고 확률 모드로 현재 세트의 선택된 모드를 교체할 수도 있다 (250). 비디오 인코더 (20) 는 그 차이가 임계치를 만족하지 않는다고 결정하면 (248), 비디오 인코더 (20) 는 최저 근사 비용을 갖는 것으로서 (224) 에서 비디오 인코더 (20) 에 의해 이전에 선택된 최고 확률 모드로 선택된 모드를 교체하지 않을 수도 있다.
다음으로, 비디오 인코더 (20) 는 현재 블록을 인트라 예측하기 위하여 현재 세트로부터 모드를 선택할 수도 있다 (252). 즉, 비디오 인코더 (20) 는 도 7a 및 도 7b 에 예시된 동작들에 따라 포스트 프로세싱된 현재 세트에 포함된 모드들을 이용하여 현재 블록을 위한 레이트 왜곡 분석을 수행할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 현재 블록을 인트라 코딩하기 위하여 포스트 프로세싱된 현재 세트로부터 모드를 선택할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 현재 세트로부터 최저 근사 비용과 연관된 최선 모드를 선택할 수도 있다. 그 모드를 선택할 시에, 비디오 인코더 (20) 는 도 2의 예에 또한 설명된 바처럼, 선택된 모드에 따라 현재 블록을 인코딩하기 위하여 인트라 예측을 수행할 수도 있다. 이런 식으로, 인트라 예측은 최선 모드가 비디오 인코더 (20) 에 의해 선택되는 모드들의 포스트 프로세싱된 현재 세트에서 식별된 각각의 인트라 예측 모드를 위해 계산된 근사 비용에 기초한다.
일부 예들에서, SATD 비용 외의 근사 비용들, 이를테면, SSD, SAD 또는 추정 비트 레이트들이, 역시 사용될 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 현재 세트가 더 이상 변하지 않을 때까지 위의 기법들의 여러 반복들을 수행할 수도 있다. 또 다른 예에서, 비디오 인코더 (20) 는, 검색 프로세스의 복잡성을 감소시키기 위하여 평가를 하나 (좌측 PU의 인트라 모드가 상측 PU 의 인트라 모드와 동일할 때), 또는 2개의 MPM (좌측 PU 의 인트라 모드가 상측 PU 의 인트라 모드와 동일하지 않을 때) 로 제한하는 것과 같은 전부보다 적은 수의 최고 확률 모드들을 평가한다.
도 8은 다수의 상이한 예측 모드들로부터 선택할 때 모드 선택의 복잡성을 감소시키는 도 2에 도시된 비디오 인코더 (20) 와 같은 비디오 코더의 예시적인 동작들을 도시하는 플로우차트이다. 특히, 도 8 에서, 비디오 인코더 (20) 는 비디오 인코더 (20) 에 의해 이전에 생성된 인트라 예측 모드들의 세트 (예를 들어, 현재 세트) 를 정제할 수도 있다. 도 6 에서 이전에 예시된 바처럼, 초기에 비디오 인코더는 미리 정의된 인트라 예측 모드들의 현재 세트를 생성한다. 하지만, 현재 세트에 있는 모드들은, 부분적으로 각도 모드들의 근사 샘플링 때문에 모든 가능한 인트라 예측 모드들의 최소 근사 비용들을 반드시 갖는 것은 아닐 수도 있다. 도 8의 예의 동작들에서, 비디오 인코더 (20) 는 초기에 구성된 현재 세트에 포함된 그러한 모드들보다 더 낮은 근사 비용들을 갖는 하나 이상의 모드들을 취출하기 위하여 정제 프로세스를 이행할 수도 있다.
초기에, 비디오 인코더 (20) 는 현재 세트로부터 최저 근사 비용을 갖는 각도 모드 M 인 초기 모드를 선택할 수도 있다. 예를 들어, 초기에 비디오 인코더 (20) 는 정제 프로세스에서 모드들을 선택하기 위한 스텝 값을 결정할 수도 있다 (270). 일부 예들에서, 스텝 값은 도 6 에서 각도 모드들을 샘플링하기 위하여 비디오 인코더 (20) 에 의해 사용된 오프셋 값과 동일할 수도 있다. 다음으로, 비디오 인코더 (20) 는 현재 세트로부터 모드를 선택할 수도 있다 (272). 비디오 인코더 (20) 는 선택된 모드가 각도 모드가 아니라고 결정하면 (276), 비디오 인코더 (20) 는 현재 세트에서 다음 모드를 선택할 수도 있다 (272). 비디오 인코더 (20) 는 선택된 모드가 각도 모드이고 현재 세트에 현재 포함된 각도 모드들의 최저 근사 비용을 갖는다고 결정하면 (278), 비디오 인코더 (20) 는 스텝 값을 업데이트하는 것을 진행할 수도 있다. 가령, 업데이트된 스텝 값은, 어떤 수로 나누어진 현재 스텝 값과 동일할 수도 있다. 예를 들어, 업데이트된 스텝 값은 2로 나누어진 현재 스텝 값과 동일, 즉, 업데이트된 스텝 값 = (현재 스텝 값 / 2) 일 수도 있다.
다음으로, 비디오 인코더 (20) 는 업데이트된 스텝 값이 임계치를 만족하는지 여부를 결정할 수도 있다. 예를 들어, 비디오 (20) 는 임계 값을 0 으로 결정할 수도 있다. 업데이트된 스텝 값이 임계치보다 작을 때, 비디오 인코더 (20) 는 도 7a 및 도 7b 에 또한 예시된 바처럼 인트라 예측을 수행하기 위하여 현재 세트의 포스트 프로세싱을 진행할 수도 있다 (296).
스텝 값이 임계치를 만족하면 (예를 들어, 스텝 값이 0 보다 크면) (284), 비디오 인코더 (20) 는 2개의 이웃 모드들 M - 스텝 및 M + 스텝의 근사 비용들을 결정할 수도 있고 여기서 M 은 (274) 에서 이전에 선택된 모드의 인덱스를 나타낼 수도 있다. 가령, 비디오 인코더 (20) 가 (이를테면, 초기에 생성된 현재 세트에서 최저 근사 비용과 연관된 이전에 선택된 각도 모드인) 현재 선택된 모드의 모드 인덱스 및 스텝 값의 차이와 동일한 모드 인덱스를 갖는 모드를 위한 근사 비용을 결정할 수도 있다 (288). 가령, 초기에 생성된 현재 세트에서 최저 근사 비용과 연관된 이전에 선택된 각도 모드가 M 이면, 비디오 인코더 (20) 는 (이를테면, M 의 모드 인덱스와 스텝 값 스텝 사이의 차이인) 인덱스 M - 스텝을 갖는 모드를 위한 근사치를 결정할 수도 있다.
비디오 인코더 (20) 는 또한, (이를테면, 초기에 생성된 현재 세트에서 최저 근사 비용과 연관된 이전에 선택된 각도 모드인) 현재 선택된 모드의 모드 인덱스 및 스텝 값의 합과 동일한 모드 인덱스를 갖는 모드를 위한 근사 비용을 결정할 수도 있다 (290). 가령, 초기에 생성된 현재 세트에서 최저 근사 비용과 연관된 이전에 선택된 각도 모드의 인덱스가 M 이면, 비디오 인코더 (20) 는 (이를테면, M 의 모드 인덱스와 스텝 값 스텝 사이의 합인) 인덱스 M +스텝을 갖는 모드를 위한 근사치를 결정할 수도 있다.
모드 M 의 인덱스가 2 또는 34 와 같은 경계 모드일 때, 비디오 인코더 (20) 는 이웃 모드들 중의 하나 이상을 클립핑 (즉, 비선택) 하고, 대신에 모드 M 자체를 선택할 수도 있다. 다르게는, 비디오 인코더 (20) 는 반대 수치 방향의 모드들을 선택할 수 있다. 예를 들어, 모드 M = 2 인 경우, 비디오 인코더 (20) 는 2 로 클립핑되거나, 또는 모드 34에 이르는 반대 방향의 인접 모드를 선택함으로써, 이웃 모드 M - 스텝을 획득할 수도 있다. 그러한 예들에서, 비디오 인코더 (20) 는 2개의 이웃 모드들, 2 및 34 를, 오름순 근사 비용의 순서로 현재 세트에, 그들의 근사 비용들이 현재 세트에 있는 것들보다 더 작은 지 여부에 따라, 삽입할 수도 있다.
모드들 M + 스텝 및 M - 스텝을 위한 근사 비용을 결정할 시에, 비디오 인코더 (20) 는 현재 세트에서 2개 각각의 모드들의 각각을 저장할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 또한 현재 세트에서 각 각각의 모드와 연관된 근사 비용을 저장할 수도 있다. 어느 경우든, 비디오 인코더 (20) 는 비디오 인코더 (20) 에 의해 평가될 다음 선택된 모드로서 모드들 M, M + 스텝, 및 M - 스텝 중에 최저 근사 비용을 갖는 모드를 선택할 수도 있다 (294). 즉, 비디오 인코더 (20) 는 하기 식을 이용하여 다음 선택된 모드를 결정할 수도 있다:
일부 구현에서, 근사 비용을 획득함에 있어서 계산들의 수를 더 감소시키기 위하여, M - 스텝 (M + 스텝) 의 근사 비용이 먼저 계산되고 M - 스텝 (M + 스텝) 의 근사 비용이 모드 M 보다 더 작다는 것이 발견되면, M + 스텝 (M - 스텝) 의 근사 비용의 추가 계산이 생략될 수 있고 모드 M 은 M - 스텝 (M + 스텝) 으로 교체된다. 일부 구현에서, 정제 프로세스 전에 초기 구성된 현재 세트는 모드 0, 1, 및 각도 모드 26 를 포함할 수도 있고, 모드 26 은 평면 모드 0 및 DC 모드 1 을 위해 계산된 근사 비용들에 상대적으로 최저 근사 비용과 연관되지 않고, 그러면 위의 정제 검색은 생략될 수 있다.
모드 M, M + 스텝, 및 M - 스텝 중에 최저 근사 비용을 갖는 모드를 선택할 시에, 비디오 인코더 (20) 는 스텝 값을 업데이트할 수도 있다 (280) 예를 들어, 업데이트된 스텝 값은 (현재 스텝 값/2) 와 동일할 수도 있다. 상술된 바처럼, 비디오 인코더 (20) 가 업데이트된 스텝 값이 임계치를 만족하지 않는다고 (예를 들어, 0 미만이라고) 결정하면 (286), 비디오 인코더 (20) 는 현재 블록에 대해 인트라 예측을 수행하기 위하여 현재 세트를 포스트 프로세싱하는 것을 진행할 수도 있다 (296). 비디오 인코더 (20) 가 업데이트된 스텝 값이 임계치를 만족한다고 (예를 들어, 0 보다 크다고) 결정하면 (284), 비디오 인코더 (20) 는, 선택된 모드로서, 모드들 M, M + 스텝, 및 M - 스텝 중에 최저 근사 비용을 갖는 모드를 이용하여, 또한 도 8 에 예시된 프로세스를 수행할 수도 있다.
도 8의 예의 기법들은 2log2(offset) 과 같은 근사 비용 계산들의 수 N2(SATD) 를 초래할 수도 있다. 그러므로, 비디오 인코더 (20) 는 하나 이상의 각도 모드들을 통해 반복하여, 임계치가 더 이상 만족되지 않을 때까지, 보다 낮은 근사 비용들을 갖는 각도 모드들로 현재 세트를 정제할 수도 있다. 샘플링 오프셋이 도 6 에서 4 인 예의 경우에서, 현재 세트의 각도 인트라 예측 모드들을 반복할 때 도 8의 동작들 (280) - (294) 에서 4개의 근사 비용 계산들이 있을 수도 있다. 결과적으로, 근사 비용들의 전체 수 N(SATD) 는 하기와 같이 표현될 수도 있다:
32x32 의 PU 크기에 대해 offset = 4 인 예에서, 커트 리스트의 길이는 4 일 수도 있으며, 그래서 본 개시의 기법들은 근사 비용 (예를 들어, SATD) 계산들의 전체 수를 13 으로 감소시킬 수도 있다. 이런 식으로, 본 개시의 기법들은 다른 구현들 (예를 들어, HM) 에서 35개 근사 비용 계산들을 수행하는 것과 비교하여 복잡성의 감소를 제공할 수도 있다.
일부 예들에서, 평균적으로 더 작은 근사 비용을 갖는 모드들의 현재 세트를 생성하기 위하여, 비디오 인코더 (20) 는 도 8의 기법들을 반복할 수도 있다. 예를 들어, 초기 평가 모드 앞의 모드들이 이전 단계에서 업데이트되는 경우, 비디오 인코더 (20) 는 후보 리스트에서 (이제 최소 근사 비용을 갖는 각도 모드인) 이 업데이트된 모드를 위한 동작들 (280) - (294) 을 반복할 수도 있다. 초기 평가 모드 앞의 모드들이 (294) 에서 이전 단계에서 업데이트되지 않은 경우, 비디오 인코더 (20) 는 다음 최소 근사 비용을 갖는 각도 모드를 위해 동작들 (280) - (294) 을 반복할 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되면, 그 기능들은 컴퓨터 판독가능 매체 상의 하나 이상의 명령 또는 코드로서 저장되거나 송신될 수도 있다. 컴퓨터 판독가능 매체는 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체 또는 컴퓨터 데이터 저장 매체를 포함할 수도 있다. 데이터 저장 매체는, 본 개시에서 설명된 기술들의 구현을 위해 명령들, 코드 및/또는 데이터 구조들을 취출하기 위하여 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 가용 매체일 수도 있다. 비한정적 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 명령 또는 데이터 구조의 형태로 원하는 프로그램 코드를 반송 또는 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 칭해진다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선 (twisted pair), 디지털 가입자 라인 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되는 경우, 그 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술은 매체의 정의 내에 포함된다. 여기에 사용된 바와 같이, 디스크 (disk) 및 디스크 (disc) 는 콤팩트 디스크 (CD), 레이저 디스크, 광 디스크, DVD (digital versatile disc), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서, 디스크 (disk) 는 보통 데이터를 자기적으로 재생하지만, 디스크 (disc) 는 레이저를 이용하여 광학적으로 데이터를 재생한다. 또한, 상기의 조합은 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
코드는 하나 이상의 프로세서, 이를테면 하나 이상의 DSP (digital signal processor), 범용 마이크로프로세서, ASIC (application specific integrated circuit), FPGA (field programmable logic array), 또는 다른 동등한 집적 또는 이산 로직 회로에 의해 실행될 수도 있다. 따라서, 본원에 사용된 용어 "프로세서" 는 이전 구조 중 임의의 것 또는 본원에 설명된 기술들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 추가로, 일부 양태들에서, 여기서 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공되거나 또는 결합된 코덱에 포함될 수도 있다. 또한, 그 기법들은 하나 이상의 회로 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC 들의 세트 (예를 들면, 칩 세트) 를 포함하여, 광범위하게 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들 또는 유닛들이, 개시된 기술들을 수행하도록 구성된 디바이스들의 기능적인 양태들을 강조하기 위하여 본 개시에 설명되었지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로 하는 것은 아니다. 오히려, 상술된 바처럼, 다양한 유닛들이 코덱 하드웨어 유닛에 결합될 수도 있거나, 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상술된 하나 이상의 프로세서들을 포함하는 연동적인 (interoperative) 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.
Claims (40)
- 비디오 데이터를 인코딩하는 방법으로서,
적어도 하나의 인트라 예측 모드를 갖는 인트라 예측 모드들의 미리 정의된 세트를 포함하는 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 근사 비용을 계산하는 단계로서, 상기 인트라 예측 모드들의 현재 세트는 상기 비디오 데이터의 현재 블록을 코딩하기 위해 이용가능한 인트라 예측 모드들의 전체 수보다 더 적은 수의 인트라 예측 모드들을 포함하는, 상기 근사 비용을 계산하는 단계;
상기 현재 블록에 인접한 비디오 데이터의 하나 이상의 이웃 블록들을 인코딩하는데 사용된 인트라 예측 모드들에 기초하여 결정된 상기 현재 블록을 위해 하나 이상의 최고 확률 인트라 예측 모드들을 위한 근사 비용을 계산하는 단계;
상기 하나 이상의 최고 확률 인트라 예측 모드들을 위해 계산된 상기 근사 비용들의 각각을 임계치와 비교하는 단계;
상기 비교들에 기초하여 상기 하나 이상의 최고 확률 인트라 예측 모드들로 상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들 중의 하나 이상을 교체하는 단계;
상기 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 레이트 왜곡 비용을 결정하기 위하여 상기 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드에 대해 레이트 왜곡 분석을 수행하는 단계; 및
상기 현재 블록을 인코딩하기 위하여 결정된 상기 레이트 왜곡 비용들에 기초하여 상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들 중의 하나에 따라 상기 현재 블록에 대해 인트라 예측 코딩을 수행하는 단계
를 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 1 항에 있어서,
상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들을 위해 계산된 근사 비용들에 기초하여 추가 인트라 예측 모드들을 검색하는 단계;
상기 추가 인트라 예측 모드들의 각각을 위해 근사 비용들을 계산하는 단계; 및
상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들 중의 적어도 하나를 위해 계산된 상기 근사 비용들과 상기 추가 인트라 예측 모드들을 위해 계산된 상기 근사 비용들 중의 적어도 하나의 비교에 기초하여 상기 인트라 예측 모드들의 현재 세트에 상기 추가 인트라 예측 모드들을 추가하는 단계
를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 1 항에 있어서,
상기 현재 세트에 포함된 최저 근사 비용과 연관된 모드가 각도 모드인지 여부를 결정하는 단계; 및
상기 현재 세트에 포함된 상기 최저 근사 비용과 연관된 상기 모드가 각도 모드라고 결정하는 것에 응답하여, 상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들을 위해 계산된 상기 근사 비용들에 기초하여 추가 인트라 예측 모드들을 검색하는 단계
를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 1 항에 있어서,
복수의 각도 모드들로부터 각도 모드를 선택하는 단계;
상기 각도 모드가 커트 리스트에 포함되는지 여부를 결정하는 단계로서, 상기 커트 리스트는 임계치를 만족하지 않는 확률로 일어나는 적어도 하나의 인트라 예측 모드를 포함하는, 상기 커트 리스트에 포함되는지 여부를 결정하는 단계; 및
상기 각도 모드가 상기 커트 리스트에 포함된다고 결정하는 것에 응답하여, 상기 각도 모드를 위한 근사 비용을 결정하지 않는 단계
를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 4 항에 있어서,
상기 각도 모드는 제 1 각도 모드이고,
상기 방법은
상기 제 1 각도 모드로부터 오프셋에 적어도 부분적으로 기초하여 제 2 각도 모드를 결정하는 단계;
상기 제 2 각도 모드가 커트 리스트에 포함되지 않는다고 결정하는 것에 응답하여:
상기 제 2 각도 모드와 연관된 근사 비용을 계산하는 단계; 및
상기 제 2 각도 모드를 상기 현재 세트에 삽입하는 단계
를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 1 항에 있어서,
복수의 최고 확률 모드들로부터 최저 근사 비용과 연관된 최고 확률 모드를 결정하는 단계;
상기 최고 확률 모드와 상기 현재 세트에서의 적어도 하나의 모드 사이의 차이에 적어도 부분적으로 기초한 값을 결정하는 단계; 및
상기 값이 임계치를 만족한다고 결정하는 것에 응답하여, 상기 현재 세트에서의 상기 적어도 하나의 모드를 교체하기 위하여 상기 현재 세트에 상기 최고 확률 모드를 삽입하는 단계
를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 6 항에 있어서,
상기 현재 세트에서의 상기 적어도 하나의 모드는 상기 현재 세트에서의 최대 근사 비용과 연관되고;
상기 값은 상기 값이 상기 임계치보다 작을 때 상기 임계치를 만족하는, 비디오 데이터를 인코딩하는 방법. - 제 1 항에 있어서,
상기 현재 세트에서 최저 근사 비용과 연관된 제 1 각도 모드를 결정하는 단계로서, 상기 제 1 각도 모드는 제 1 모드 인덱스와 연관되는, 상기 제 1 각도 모드를 결정하는 단계;
상기 제 1 각도 모드 인덱스 및 스텝 값의 합을 포함하는 제 2 모드 인덱스와 연관된 제 2 각도 모드를 결정하는 단계; 및
상기 제 1 각도 모드 인덱스 및 상기 스텝 값의 차이를 포함하는 제 3 모드 인덱스와 연관된 제 3 각도 모드를 결정하는 단계
를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 8 항에 있어서,
상기 제 1 각도 모드와 연관된 상기 최저 근사 비용은 제 1 근사 비용이고,
상기 방법은
상기 제 2 각도 모드와 연관된 제 2 근사 비용을 결정하는 단계;
상기 제 3 각도 모드와 연관된 제 3 근사 비용을 결정하는 단계; 및
상기 제 2 또는 제 3 근사 비용들 중의 적어도 하나가 상기 제 1 근사 비용보다 작다고 결정하는 것에 응답하여, 제 1 모드를 교체하기 위하여 상기 현재 세트에 상기 제 1 근사 비용보다 작은 상기 제 2 또는 제 3 근사 비용들 중의 상기 적어도 하나와 각각 연관된 상기 제 2 또는 제 3 모드를 삽입하는 단계
를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 9 항에 있어서,
상기 현재 세트에 삽입된 상기 제 2 또는 제 3 모드 중의 상기 적어도 하나는 선택된 모드이고,
상기 방법은
상기 스텝 값 및 상기 선택된 모드에 적어도 부분적으로 기초하는 업데이트된 스텝 값을 결정하는 단계;
상기 업데이트된 스텝 값이 상기 임계치를 만족한다고 결정하는 것에 응답하여, 상기 현재 블록에 대해 인트라 예측 코딩을 수행하기 위하여 상기 현재 세트에서 최저 전체 레이트 왜곡 비용과 연관된 모드를 선택하는 단계; 및
상기 업데이트된 스텝 값이 상기 임계치를 만족하지 않는다고 결정하는 것에 응답하여:
상기 선택된 모드와 연관된 인덱스 및 상기 업데이트된 스텝 값의 합을 포함하는 제 4 모드 인덱스와 연관된 제 4 각도 모드를 결정하는 단계; 및
상기 선택된 모드와 연관된 인덱스 및 상기 업데이트된 스텝 값의 차이를 포함하는 제 5 모드 인덱스와 연관된 제 5 각도 모드를 결정하는 단계, 및
상기 제 4 각도 모드의 제 4 근사 비용 또는 상기 제 5 각도 모드의 제 5 근사 비용 중의 적어도 하나가 상기 선택된 모드와 연관된 근사 비용보다 작다고 결정하는 것에 응답하여, 상기 현재 세트에 상기 선택된 모드와 연관된 상기 근사 비용보다 작은 상기 제 4 또는 제 5 근사 비용들 중의 상기 적어도 하나와 각각 연관된 상기 제 4 또는 제 5 모드를 삽입하는 단계
를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 비디오 데이터를 코딩하기 위해 인트라 예측 프로세스를 수행하도록 구성된 비디오 코딩 디바이스로서,
프로세서를 포함하고,
상기 프로세서는
적어도 하나의 인트라 예측 모드를 갖는 인트라 예측 모드들의 미리 정의된 세트를 포함하는 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 근사 비용을 계산하는 것으로서, 상기 인트라 예측 모드들의 현재 세트는 상기 비디오 데이터의 현재 블록을 코딩하기 위해 이용가능한 인트라 예측 모드들의 전체 수보다 더 적은 수의 인트라 예측 모드들을 포함하는, 상기 근사 비용을 계산하고;
상기 현재 블록에 인접한 비디오 데이터의 하나 이상의 이웃 블록들을 인코딩하는데 사용된 인트라 예측 모드들에 기초하여 결정된 상기 현재 블록을 위해 하나 이상의 최고 확률 인트라 예측 모드들을 위한 근사 비용을 계산하고;
상기 하나 이상의 최고 확률 인트라 예측 모드들을 위해 계산된 상기 근사 비용들의 각각을 임계치와 비교하고;
상기 비교들에 기초하여 상기 하나 이상의 최고 확률 인트라 예측 모드들로 상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들 중의 하나 이상을 교체하고;
상기 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 레이트 왜곡 비용을 결정하기 위하여 상기 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드에 대해 레이트 왜곡 분석을 수행하고;
상기 현재 블록을 인코딩하기 위하여 결정된 상기 레이트 왜곡 비용들에 기초하여 상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들 중의 하나에 따라 상기 현재 블록에 대해 인트라 예측 코딩을 수행하도록 구성되는, 비디오 코딩 디바이스. - 제 11 항에 있어서,
상기 프로세서는 또한
상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들을 위해 계산된 근사 비용들에 기초하여 추가 인트라 예측 모드들을 검색하고;
상기 추가 인트라 예측 모드들의 각각을 위해 근사 비용들을 계산하고;
상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들 중의 적어도 하나를 위해 계산된 상기 근사 비용들과 상기 추가 인트라 예측 모드들을 위해 계산된 상기 근사 비용들 중의 적어도 하나의 비교에 기초하여 상기 인트라 예측 모드들의 현재 세트에 상기 추가 인트라 예측 모드들을 추가하도록 구성되는, 비디오 코딩 디바이스. - 제 11 항에 있어서,
상기 프로세서는 또한
상기 현재 세트에 포함된 최저 근사 비용과 연관된 모드가 각도 모드인지 여부를 결정하고;
상기 현재 세트에 포함된 상기 최저 근사 비용과 연관된 상기 모드가 각도 모드라고 결정하는 것에 응답하여, 상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들을 위해 계산된 상기 근사 비용들에 기초하여 추가 인트라 예측 모드들을 검색하도록 구성되는, 비디오 코딩 디바이스. - 제 11 항에 있어서,
상기 프로세서는 또한
복수의 각도 모드들로부터 각도 모드를 선택하고;
상기 각도 모드가 커트 리스트에 포함되는지 여부를 결정하는 것으로서, 상기 커트 리스트는 임계치를 만족하지 않는 확률로 일어나는 적어도 하나의 인트라 예측 모드들을 포함하는, 상기 커트 리스트에 포함되는지 여부를 결정하고;
상기 각도 모드가 상기 커트 리스트에 포함된다고 결정하는 것에 응답하여, 상기 각도 모드를 위한 근사 비용을 결정하지 않도록 구성되는, 비디오 코딩 디바이스. - 제 14 항에 있어서,
상기 각도 모드는 제 1 각도 모드이고,
상기 프로세서는 또한
상기 제 1 각도 모드로부터 오프셋에 적어도 부분적으로 기초하여 제 2 각도 모드를 결정하고;
상기 제 2 각도 모드가 커트 리스트에 포함되지 않는다고 결정하는 것에 응답하여:
상기 제 2 각도 모드와 연관된 근사 비용을 계산하고;
상기 제 2 각도 모드를 상기 현재 세트에 삽입하도록 구성되는, 비디오 코딩 디바이스. - 제 11 항에 있어서,
상기 프로세서는 또한
복수의 최고 확률 모드들로부터 최저 근사 비용과 연관된 최고 확률 모드를 결정하고;
상기 최고 확률 모드와 상기 현재 세트에서의 적어도 하나의 모드 사이의 차이에 적어도 부분적으로 기초한 값을 결정하고;
상기 값이 임계치를 만족한다고 결정하는 것에 응답하여, 상기 현재 세트에서의 상기 적어도 하나의 모드를 교체하기 위하여 상기 현재 세트에 상기 최고 확률 모드를 삽입하도록 구성되는, 비디오 코딩 디바이스. - 제 16 항에 있어서,
상기 현재 세트에서의 상기 적어도 하나의 모드는 상기 현재 세트에서의 최대 근사 비용과 연관되고;
상기 값은 상기 값이 상기 임계치보다 작을 때 상기 임계치를 만족하는, 비디오 코딩 디바이스. - 제 11 항에 있어서,
상기 프로세서는 또한
상기 현재 세트에서 최저 근사 비용과 연관된 제 1 각도 모드를 결정하는 것으로서, 상기 제 1 각도 모드는 제 1 모드 인덱스와 연관되는, 상기 제 1 각도 모드를 결정하고;
상기 제 1 각도 모드 인덱스 및 스텝 값의 합을 포함하는 제 2 모드 인덱스와 연관된 제 2 각도 모드를 결정하고;
상기 제 1 각도 모드 인덱스 및 상기 스텝 값의 차이를 포함하는 제 3 모드 인덱스와 연관된 제 3 각도 모드를 결정하도록 구성되는, 비디오 코딩 디바이스. - 제 18 항에 있어서,
상기 제 1 각도 모드와 연관된 상기 최저 근사 비용은 제 1 근사 비용이고,
상기 프로세서는 또한,
상기 제 2 각도 모드와 연관된 제 2 근사 비용을 결정하고;
상기 제 3 각도 모드와 연관된 제 3 근사 비용을 결정하고;
상기 제 2 또는 제 3 근사 비용들 중의 적어도 하나가 상기 제 1 근사 비용보다 작다고 결정하는 것에 응답하여, 제 1 모드를 교체하기 위하여 상기 현재 세트에 상기 제 1 근사 비용보다 작은 상기 제 2 또는 제 3 근사 비용들 중의 상기 적어도 하나와 각각 연관된 상기 제 2 또는 제 3 모드를 삽입하도록 구성되는, 비디오 코딩 디바이스. - 제 19 항에 있어서,
상기 현재 세트에 삽입된 상기 제 2 또는 제 3 모드 중의 상기 적어도 하나는 선택된 모드이고,
상기 프로세서는 또한,
상기 스텝 값 및 상기 선택된 모드에 적어도 부분적으로 기초하는 업데이트된 스텝 값을 결정하고;
상기 업데이트된 스텝 값이 상기 임계치를 만족한다고 결정하는 것에 응답하여, 상기 현재 블록에 대해 인트라 예측 코딩을 수행하기 위하여 상기 현재 세트에서 최저 전체 레이트 왜곡 비용과 연관된 모드를 선택하고;
상기 업데이트된 스텝 값이 상기 임계치를 만족하지 않는다고 결정하는 것에 응답하여:
상기 선택된 모드와 연관된 인덱스 및 상기 업데이트된 스텝 값의 합을 포함하는 제 4 모드 인덱스와 연관된 제 4 각도 모드를 결정하고;
상기 선택된 모드와 연관된 인덱스 및 상기 업데이트된 스텝 값의 차이를 포함하는 제 5 모드 인덱스와 연관된 제 5 각도 모드를 결정하고,
상기 제 4 각도 모드의 제 4 근사 비용 또는 상기 제 5 각도 모드의 제 5 근사 비용 중의 적어도 하나가 상기 선택된 모드와 연관된 근사 비용보다 작다고 결정하는 것에 응답하여, 상기 현재 세트에 상기 선택된 모드와 연관된 상기 근사 비용보다 작은 상기 제 4 또는 제 5 근사 비용들 중의 상기 적어도 하나와 각각 연관된 상기 제 4 또는 제 5 모드를 삽입하도록 구성되는, 비디오 코딩 디바이스. - 비디오 데이터를 코딩하기 위해 인트라 예측 프로세스를 수행하도록 구성된 비디오 코딩 디바이스로서,
적어도 하나의 인트라 예측 모드를 갖는 인트라 예측 모드들의 미리 정의된 세트를 포함하는 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 근사 비용을 계산하는 수단으로서, 상기 인트라 예측 모드들의 현재 세트는 상기 비디오 데이터의 현재 블록을 코딩하기 위해 이용가능한 인트라 예측 모드들의 전체 수보다 더 적은 수의 인트라 예측 모드들을 포함하는, 상기 근사 비용을 계산하는 수단;
상기 현재 블록에 인접한 비디오 데이터의 하나 이상의 이웃 블록들을 인코딩하는데 사용된 인트라 예측 모드들에 기초하여 결정된 상기 현재 블록을 위해 하나 이상의 최고 확률 인트라 예측 모드들을 위한 근사 비용을 계산하는 수단;
상기 하나 이상의 최고 확률 인트라 예측 모드들을 위해 계산된 상기 근사 비용들의 각각을 임계치와 비교하는 수단;
상기 비교들에 기초하여 상기 하나 이상의 최고 확률 인트라 예측 모드들로 상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들 중의 하나 이상을 교체하는 수단;
상기 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 레이트 왜곡 비용을 결정하기 위하여 상기 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드에 대해 레이트 왜곡 분석을 수행하는 수단; 및
상기 현재 블록을 인코딩하기 위하여 결정된 상기 레이트 왜곡 비용들에 기초하여 상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들 중의 하나에 따라 상기 현재 블록에 대해 인트라 예측 코딩을 수행하는 수단
을 포함하는, 비디오 코딩 디바이스. - 제 21 항에 있어서,
상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들을 위해 계산된 근사 비용들에 기초하여 추가 인트라 예측 모드들을 검색하는 수단;
상기 추가 인트라 예측 모드들의 각각을 위해 근사 비용들을 계산하는 수단; 및
상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들 중의 적어도 하나를 위해 계산된 상기 근사 비용들과 상기 추가 인트라 예측 모드들을 위해 계산된 상기 근사 비용들 중의 적어도 하나의 비교에 기초하여 상기 인트라 예측 모드들의 현재 세트에 상기 추가 인트라 예측 모드들을 추가하는 수단
을 더 포함하는, 비디오 코딩 디바이스. - 제 21 항에 있어서,
상기 현재 세트에 포함된 최저 근사 비용과 연관된 모드가 각도 모드인지 여부를 결정하는 수단; 및
상기 현재 세트에 포함된 상기 최저 근사 비용과 연관된 상기 모드가 각도 모드라고 결정하는 것에 응답하여, 상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들을 위해 계산된 상기 근사 비용들에 기초하여 추가 인트라 예측 모드들을 검색하는 수단
을 더 포함하는, 비디오 코딩 디바이스. - 제 21 항에 있어서,
복수의 각도 모드들로부터 각도 모드를 선택하는 수단;
상기 각도 모드가 커트 리스트에 포함되는지 여부를 결정하는 수단으로서, 상기 커트 리스트는 임계치를 만족하지 않는 확률로 일어나는 적어도 하나의 인트라 예측 모드들을 포함하는, 상기 커트 리스트에 포함되는지 여부를 결정하는 수단;
상기 각도 모드가 상기 커트 리스트에 포함된다고 결정하는 것에 응답하여, 상기 각도 모드를 위한 근사 비용을 결정하지 않는 수단
을 더 포함하는, 비디오 코딩 디바이스. - 제 24 항에 있어서,
상기 각도 모드는 제 1 각도 모드이고,
상기 비디오 코딩 디바이스는
상기 제 1 각도 모드로부터 오프셋에 적어도 부분적으로 기초하여 제 2 각도 모드를 결정하는 수단;
상기 제 2 각도 모드가 커트 리스트에 포함되지 않는다고 결정하는 것에 응답하여:
상기 제 2 각도 모드와 연관된 근사 비용을 계산하는 수단; 및
상기 제 2 각도 모드를 상기 현재 세트에 삽입하는 수단
을 더 포함하는, 비디오 코딩 디바이스. - 제 21 항에 있어서,
복수의 최고 확률 모드들로부터 최저 근사 비용과 연관된 최고 확률 모드를 결정하는 수단;
상기 최고 확률 모드와 상기 현재 세트에서의 적어도 하나의 모드 사이의 차이에 적어도 부분적으로 기초한 값을 결정하는 수단; 및
상기 값이 임계치를 만족한다고 결정하는 것에 응답하여, 상기 현재 세트에서의 상기 적어도 하나의 모드를 교체하기 위하여 상기 현재 세트에 상기 최고 확률 모드를 삽입하는 수단
을 더 포함하는, 비디오 코딩 디바이스. - 제 26 항에 있어서,
상기 현재 세트에서의 상기 적어도 하나의 모드는 상기 현재 세트에서의 최대 근사 비용과 연관되고;
상기 값은 상기 값이 상기 임계치보다 작을 때 상기 임계치를 만족하는, 비디오 코딩 디바이스. - 제 21 항에 있어서,
상기 현재 세트에서 최저 근사 비용과 연관된 제 1 각도 모드를 결정하는 수단으로서, 상기 제 1 각도 모드는 제 1 모드 인덱스와 연관되는, 상기 제 1 각도 모드를 결정하는 수단;
상기 제 1 각도 모드 인덱스 및 스텝 값의 합을 포함하는 제 2 모드 인덱스와 연관된 제 2 각도 모드를 결정하는 수단; 및
상기 제 1 각도 모드 인덱스 및 상기 스텝 값의 차이를 포함하는 제 3 모드 인덱스와 연관된 제 3 각도 모드를 결정하는 수단
을 더 포함하는, 비디오 코딩 디바이스. - 제 28 항에 있어서,
상기 제 1 각도 모드와 연관된 상기 최저 근사 비용은 제 1 근사 비용이고,
상기 비디오 코딩 디바이스는
상기 제 2 각도 모드와 연관된 제 2 근사 비용을 결정하는 수단;
상기 제 3 각도 모드와 연관된 제 3 근사 비용을 결정하는 수단; 및
상기 제 2 또는 제 3 근사 비용들 중의 적어도 하나가 상기 제 1 근사 비용보다 작다고 결정하는 것에 응답하여, 제 1 모드를 교체하기 위하여 상기 현재 세트에 상기 제 1 근사 비용보다 작은 상기 제 2 또는 제 3 근사 비용들 중의 상기 적어도 하나와 각각 연관된 상기 제 2 또는 제 3 모드를 삽입하는 수단
을 더 포함하는, 비디오 코딩 디바이스. - 제 29 항에 있어서,
상기 현재 세트에 삽입된 상기 제 2 또는 제 3 모드 중의 상기 적어도 하나는 선택된 모드이고,
상기 비디오 코딩 디바이스는
상기 스텝 값 및 상기 선택된 모드에 적어도 부분적으로 기초하는 업데이트된 스텝 값을 결정하는 수단;
상기 업데이트된 스텝 값이 상기 임계치를 만족한다고 결정하는 것에 응답하여, 상기 현재 블록에 대해 인트라 예측 코딩을 수행하기 위하여 상기 현재 세트에서 최저 전체 레이트 왜곡 비용과 연관된 모드를 선택하는 수단; 및
상기 업데이트된 스텝 값이 상기 임계치를 만족하지 않는다고 결정하는 것에 응답하여:
상기 선택된 모드와 연관된 인덱스 및 상기 업데이트된 스텝 값의 합을 포함하는 제 4 모드 인덱스와 연관된 제 4 각도 모드를 결정하는 수단; 및
상기 선택된 모드와 연관된 인덱스 및 상기 업데이트된 스텝 값의 차이를 포함하는 제 5 모드 인덱스와 연관된 제 5 각도 모드를 결정하는 수단, 및
상기 제 4 각도 모드의 제 4 근사 비용 또는 상기 제 5 각도 모드의 제 5 근사 비용 중의 적어도 하나가 상기 선택된 모드와 연관된 근사 비용보다 작다고 결정하는 것에 응답하여, 상기 현재 세트에 상기 선택된 모드와 연관된 상기 근사 비용보다 작은 상기 제 4 또는 제 5 근사 비용들 중의 상기 적어도 하나와 각각 연관된 상기 제 4 또는 제 5 모드를 삽입하는 수단
을 더 포함하는, 비디오 코딩 디바이스. - 저장된 명령을 갖는 비일시적 컴퓨터 판독가능 저장 매체로서,
상기 명령은 실행될 때 하나 이상의 프로세서들로 하여금,
적어도 하나의 인트라 예측 모드를 갖는 인트라 예측 모드들의 미리 정의된 세트를 포함하는 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 근사 비용을 계산하는 것으로서, 상기 인트라 예측 모드들의 현재 세트는 상기 비디오 데이터의 현재 블록을 코딩하기 위해 이용가능한 인트라 예측 모드들의 전체 수보다 더 적은 수의 인트라 예측 모드들을 포함하는, 상기 근사 비용을 계산하고;
상기 현재 블록에 인접한 비디오 데이터의 하나 이상의 이웃 블록들을 인코딩하는데 사용된 인트라 예측 모드들에 기초하여 결정된 상기 현재 블록을 위해 하나 이상의 최고 확률 인트라 예측 모드들을 위한 근사 비용을 계산하고;
상기 하나 이상의 최고 확률 인트라 예측 모드들을 위해 계산된 상기 근사 비용들의 각각을 임계치와 비교하고;
상기 비교들에 기초하여 상기 하나 이상의 최고 확률 인트라 예측 모드들로 상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들 중의 하나 이상을 교체하고;
상기 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드를 위한 레이트 왜곡 비용을 결정하기 위하여 상기 인트라 예측 모드들의 현재 세트에서 식별된 각각의 인트라 예측 모드에 대해 레이트 왜곡 분석을 수행하고;
상기 현재 블록을 인코딩하기 위하여 결정된 상기 레이트 왜곡 비용들에 기초하여 상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들 중의 하나에 따라 상기 현재 블록에 대해 인트라 예측 코딩을 수행하도록 하는,
저장된 명령을 갖는 비일시적 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
상기 명령들은, 실행될 때, 상기 하나 이상의 프로세서들로 하여금,
상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들을 위해 계산된 근사 비용들에 기초하여 추가 인트라 예측 모드들을 검색하고;
상기 추가 인트라 예측 모드들의 각각을 위해 근사 비용들을 계산하고;
상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들 중의 적어도 하나를 위해 계산된 상기 근사 비용들과 상기 추가 인트라 예측 모드들을 위해 계산된 상기 근사 비용들 중의 적어도 하나의 비교에 기초하여 상기 인트라 예측 모드들의 현재 세트에 상기 추가 인트라 예측 모드들을 추가하도록 하는, 저장된 명령을 갖는 비일시적 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
상기 명령들은, 실행될 때, 상기 하나 이상의 프로세서들로 하여금,
상기 현재 세트에 포함된 최저 근사 비용과 연관된 모드가 각도 모드인지 여부를 결정하고;
상기 현재 세트에 포함된 상기 최저 근사 비용과 연관된 상기 모드가 각도 모드라고 결정하는 것에 응답하여, 상기 인트라 예측 모드들의 현재 세트에서 식별된 상기 인트라 예측 모드들을 위해 계산된 상기 근사 비용들에 기초하여 추가 인트라 예측 모드들을 검색하도록 하는, 저장된 명령을 갖는 비일시적 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
상기 명령들은, 실행될 때, 상기 하나 이상의 프로세서들로 하여금,
복수의 각도 모드들로부터 각도 모드를 선택하고;
상기 각도 모드가 커트 리스트에 포함되는지 여부를 결정하는 것으로서, 상기 커트 리스트는 임계치를 만족하지 않는 확률로 일어나는 적어도 하나의 인트라 예측 모드들을 포함하는, 상기 커트 리스트에 포함되는지 여부를 결정하고;
상기 각도 모드가 상기 커트 리스트에 포함된다고 결정하는 것에 응답하여, 상기 각도 모드를 위한 근사 비용을 결정하지 않도록 하는, 저장된 명령을 갖는 비일시적 컴퓨터 판독가능 저장 매체. - 제 34 항에 있어서,
상기 각도 모드는 제 1 각도 모드이고,
상기 명령들은, 실행될 때, 상기 하나 이상의 프로세서들로 하여금
상기 제 1 각도 모드로부터 오프셋에 적어도 부분적으로 기초하여 제 2 각도 모드를 결정하고;
상기 제 2 각도 모드가 커트 리스트에 포함되지 않는다고 결정하는 것에 응답하여:
상기 제 2 각도 모드와 연관된 근사 비용을 계산하고;
상기 제 2 각도 모드를 상기 현재 세트에 삽입하도록 하는, 저장된 명령을 갖는 비일시적 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
상기 명령들은, 실행될 때, 상기 하나 이상의 프로세서들로 하여금
복수의 최고 확률 모드들로부터 최저 근사 비용과 연관된 최고 확률 모드를 결정하고;
상기 최고 확률 모드와 상기 현재 세트에서의 적어도 하나의 모드 사이의 차이에 적어도 부분적으로 기초한 값을 결정하고;
상기 값이 임계치를 만족한다고 결정하는 것에 응답하여, 상기 현재 세트에서의 상기 적어도 하나의 모드를 교체하기 위하여 상기 현재 세트에 상기 최고 확률 모드를 삽입하도록 하는, 저장된 명령을 갖는 비일시적 컴퓨터 판독가능 저장 매체. - 제 36 항에 있어서,
상기 현재 세트에서의 상기 적어도 하나의 모드는 상기 현재 세트에서의 최대 근사 비용과 연관되고;
상기 값은 상기 값이 상기 임계치보다 작을 때 상기 임계치를 만족하는, 저장된 명령을 갖는 비일시적 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
상기 명령들은, 실행될 때, 상기 하나 이상의 프로세서들로 하여금
상기 현재 세트에서 최저 근사 비용과 연관된 제 1 각도 모드를 결정하는 것으로서, 상기 제 1 각도 모드는 제 1 모드 인덱스와 연관되는, 상기 제 1 각도 모드를 결정하고;
상기 제 1 각도 모드 인덱스 및 스텝 값의 합을 포함하는 제 2 모드 인덱스와 연관된 제 2 각도 모드를 결정하고;
상기 제 1 각도 모드 인덱스 및 상기 스텝 값의 차이를 포함하는 제 3 모드 인덱스와 연관된 제 3 각도 모드를 결정하도록 하는, 저장된 명령을 갖는 비일시적 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
상기 제 1 각도 모드와 연관된 상기 최저 근사 비용은 제 1 근사 비용이고,
상기 명령들은, 실행될 때, 상기 하나 이상의 프로세서들로 하여금
상기 제 2 각도 모드와 연관된 제 2 근사 비용을 결정하고;
상기 제 3 각도 모드와 연관된 제 3 근사 비용을 결정하고;
상기 제 2 또는 제 3 근사 비용들 중의 적어도 하나가 상기 제 1 근사 비용보다 작다고 결정하는 것에 응답하여, 제 1 모드를 교체하기 위하여 상기 현재 세트에 상기 제 1 근사 비용보다 작은 상기 제 2 또는 제 3 근사 비용들 중의 상기 적어도 하나와 각각 연관된 상기 제 2 또는 제 3 모드를 삽입하도록 하는, 저장된 명령을 갖는 비일시적 컴퓨터 판독가능 저장 매체. - 제 39 항에 있어서,
상기 현재 세트에 삽입된 상기 제 2 또는 제 3 모드 중의 상기 적어도 하나는 선택된 모드이고,
상기 명령들은, 실행될 때, 상기 하나 이상의 프로세서들로 하여금
상기 스텝 값 및 상기 선택된 모드에 적어도 부분적으로 기초하는 업데이트된 스텝 값을 결정하고;
상기 업데이트된 스텝 값이 상기 임계치를 만족한다고 결정하는 것에 응답하여, 상기 현재 블록에 대해 인트라 예측 코딩을 수행하기 위하여 상기 현재 세트에서 최저 전체 레이트 왜곡 비용과 연관된 모드를 선택하고; 및
상기 업데이트된 스텝 값이 상기 임계치를 만족하지 않는다고 결정하는 것에 응답하여:
상기 선택된 모드와 연관된 인덱스 및 상기 업데이트된 스텝 값의 합을 포함하는 제 4 모드 인덱스와 연관된 제 4 각도 모드를 결정하고;
상기 선택된 모드와 연관된 인덱스 및 상기 업데이트된 스텝 값의 차이를 포함하는 제 5 모드 인덱스와 연관된 제 5 각도 모드를 결정하고,
상기 제 4 각도 모드의 제 4 근사 비용 또는 상기 제 5 각도 모드의 제 5 근사 비용 중의 적어도 하나가 상기 선택된 모드와 연관된 근사 비용보다 작다고 결정하는 것에 응답하여, 상기 현재 세트에 상기 선택된 모드와 연관된 상기 근사 비용보다 작은 상기 제 4 또는 제 5 근사 비용들 중의 상기 적어도 하나와 각각 연관된 상기 제 4 또는 제 5 모드를 삽입하도록 하는, 저장된 명령을 갖는 비일시적 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/756,659 | 2013-02-01 | ||
US13/756,659 US9426473B2 (en) | 2013-02-01 | 2013-02-01 | Mode decision simplification for intra prediction |
PCT/US2014/010231 WO2014120389A1 (en) | 2013-02-01 | 2014-01-03 | Mode decision simplification for intra prediction |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150115833A true KR20150115833A (ko) | 2015-10-14 |
KR101752989B1 KR101752989B1 (ko) | 2017-07-03 |
Family
ID=50033784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157023224A KR101752989B1 (ko) | 2013-02-01 | 2014-01-03 | 인트라 예측을 위한 모드 결정 단순화 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9426473B2 (ko) |
EP (1) | EP2951996B1 (ko) |
JP (1) | JP6284954B2 (ko) |
KR (1) | KR101752989B1 (ko) |
CN (1) | CN104937936B (ko) |
ES (1) | ES2625821T3 (ko) |
HU (1) | HUE032054T2 (ko) |
WO (1) | WO2014120389A1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018074617A1 (ko) * | 2016-10-17 | 2018-04-26 | 디지털인사이트주식회사 | 화면 내 예측에 대한 참조 모드 리스트를 사용하는 비디오 코딩 방법 및 장치 |
WO2018117334A1 (ko) * | 2016-12-21 | 2018-06-28 | 전자부품연구원 | 고효율 비디오 부호화 모드 결정방법 및 결정장치 |
WO2018124333A1 (ko) * | 2016-12-28 | 2018-07-05 | 엘지전자(주) | 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치 |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103385002A (zh) * | 2010-02-17 | 2013-11-06 | 韩国电子通信研究院 | 用于对超高清图像进行编码的装置及其方法、以及解码装置及其方法 |
US9148667B2 (en) | 2013-02-06 | 2015-09-29 | Qualcomm Incorporated | Intra prediction mode decision with reduced storage |
WO2014190468A1 (en) | 2013-05-27 | 2014-12-04 | Microsoft Corporation | Video encoder for images |
EP3120556B1 (en) | 2014-03-17 | 2021-01-13 | Microsoft Technology Licensing, LLC | Encoder-side decisions for screen content encoding |
US20150271491A1 (en) * | 2014-03-24 | 2015-09-24 | Ati Technologies Ulc | Enhanced intra prediction mode selection for use in video transcoding |
WO2015200822A1 (en) * | 2014-06-26 | 2015-12-30 | Huawei Technologies Co., Ltd | Method and device for reducing a computational load in high efficiency video coding |
EP3198869A1 (en) * | 2014-09-23 | 2017-08-02 | Intel Corporation | Intra-prediction complexity reduction using a reduced number of angular modes and subsequent refinement |
US9807398B2 (en) * | 2014-09-30 | 2017-10-31 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Mode complexity based coding strategy selection |
US10142626B2 (en) | 2014-10-31 | 2018-11-27 | Ecole De Technologie Superieure | Method and system for fast mode decision for high efficiency video coding |
GB2534606A (en) * | 2015-01-29 | 2016-08-03 | Canon Kk | Method and device for encoding or decoding an image comprising encoding of decoding information representing prediction modes |
CN106416254B (zh) | 2015-02-06 | 2019-08-02 | 微软技术许可有限责任公司 | 在媒体编码期间跳过评估阶段 |
US10085027B2 (en) * | 2015-03-06 | 2018-09-25 | Qualcomm Incorporated | Adaptive mode checking order for video encoding |
CN105100799B (zh) * | 2015-04-25 | 2018-07-31 | 芯原微电子(北京)有限公司 | 一种减少hevc编码器中帧内编码时延的方法 |
US10038917B2 (en) | 2015-06-12 | 2018-07-31 | Microsoft Technology Licensing, Llc | Search strategies for intra-picture prediction modes |
US10136132B2 (en) | 2015-07-21 | 2018-11-20 | Microsoft Technology Licensing, Llc | Adaptive skip or zero block detection combined with transform size decision |
US9432668B1 (en) * | 2016-03-15 | 2016-08-30 | NGCodec Inc. | Apparatus and method for inter and intra mode selection and block partitioning |
US11722677B2 (en) | 2016-05-06 | 2023-08-08 | Interdigital Madison Patent Holdings, Sas | Method and system for decoder-side intra mode derivation for block-based video coding |
FR3051309A1 (fr) * | 2016-05-10 | 2017-11-17 | Bcom | Procedes et dispositifs de codage et de decodage d'un flux de donnees representatif d'au moins une image |
US20170347094A1 (en) * | 2016-05-31 | 2017-11-30 | Google Inc. | Block size adaptive directional intra prediction |
WO2018066863A1 (ko) * | 2016-10-04 | 2018-04-12 | 한국전자통신연구원 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
CN109845261B (zh) * | 2016-10-07 | 2021-11-09 | 联发科技股份有限公司 | 图像和视频编解码中帧内色度编解码的方法及装置 |
US20180146191A1 (en) * | 2016-11-22 | 2018-05-24 | Futurewei Technologies, Inc. | System and Method for Coding Intra Prediction Mode using a Second Set of Most Probable Modes |
CA2986600A1 (en) * | 2016-11-24 | 2018-05-24 | Ecole De Technologie Superieure | Method and system for parallel rate-constrained motion estimation in video coding |
US10666937B2 (en) * | 2016-12-21 | 2020-05-26 | Qualcomm Incorporated | Low-complexity sign prediction for video coding |
US10469877B1 (en) * | 2017-04-28 | 2019-11-05 | Mozilla Corporation | Systems and methods for reduced complexity entropy coding |
US10630974B2 (en) * | 2017-05-30 | 2020-04-21 | Google Llc | Coding of intra-prediction modes |
CN107222743B (zh) * | 2017-07-04 | 2020-02-04 | 西安万像电子科技有限公司 | 一种图像处理方法、装置和系统 |
WO2019023200A1 (en) * | 2017-07-24 | 2019-01-31 | Arris Enterprises Llc | INTRA-MODE JVET CODING |
CN109587491B (zh) * | 2017-09-28 | 2022-09-23 | 腾讯科技(深圳)有限公司 | 一种帧内预测方法、装置及存储介质 |
KR20230152835A (ko) * | 2017-10-18 | 2023-11-03 | 삼성전자주식회사 | 비디오 복호화 방법 및 장치, 비디오 부호화 방법 및 장치 |
WO2019083284A1 (ko) * | 2017-10-24 | 2019-05-02 | 주식회사 윌러스표준기술연구소 | 비디오 신호 처리 방법 및 장치 |
WO2019096221A1 (en) * | 2017-11-17 | 2019-05-23 | Fg Innovation Ip Company Limited | Device and method for coding video data based on adjusted intra mode list |
WO2019129166A1 (en) * | 2017-12-29 | 2019-07-04 | Fg Innovation Ip Company Limited | Device and method for coding video data based on mode list including different mode groups |
CN108881905B (zh) * | 2018-08-04 | 2021-08-31 | 福州大学 | 基于概率的帧内编码器优化方法 |
US10771778B2 (en) | 2018-09-14 | 2020-09-08 | Tencent America LLC | Method and device for MPM list generation for multi-line intra prediction |
US11265544B2 (en) | 2018-09-18 | 2022-03-01 | Sony Corporation | Apparatus and method for image compression based on optimal sequential encoding scheme |
WO2020140213A1 (zh) * | 2019-01-02 | 2020-07-09 | Oppo广东移动通信有限公司 | 预测方向的确定方法、解码器以及计算机存储介质 |
CN113661712A (zh) * | 2019-03-12 | 2021-11-16 | 夏普株式会社 | 在视频编码中用于执行帧内预测编码的系统和方法 |
CN110139098B (zh) * | 2019-04-09 | 2023-01-06 | 中南大学 | 基于决策树的高效率视频编码器帧内快速算法选择方法 |
CN110611819B (zh) * | 2019-08-01 | 2021-07-27 | 杭州当虹科技股份有限公司 | 一种提升h.264中b帧质量的编码方法 |
WO2021032112A1 (en) * | 2019-08-19 | 2021-02-25 | Beijing Bytedance Network Technology Co., Ltd. | Initialization for counter-based intra prediction mode |
CN110868391A (zh) * | 2019-09-06 | 2020-03-06 | 深圳市朗强科技有限公司 | 一种远距离传输方法、系统及设备 |
CN110868426A (zh) * | 2019-11-28 | 2020-03-06 | 深圳市朗强科技有限公司 | 一种数据传输方法、系统及设备 |
JP6849781B2 (ja) * | 2019-12-20 | 2021-03-31 | 日本電信電話株式会社 | 画像符号化装置、画像符号化方法及びコンピュータプログラム |
CN111277824B (zh) * | 2020-02-12 | 2023-07-25 | 腾讯科技(深圳)有限公司 | 图像预测处理方法、装置、终端及计算机可读存储介质 |
WO2022108421A1 (ko) * | 2020-11-23 | 2022-05-27 | 현대자동차주식회사 | 적응적 대체 모드를 이용한 영상 부호화 및 복호화 방법 |
WO2023014164A1 (ko) * | 2021-08-05 | 2023-02-09 | 현대자동차주식회사 | 비디오 부호화/복호화 방법 및 장치 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003304404A (ja) * | 2002-04-09 | 2003-10-24 | Canon Inc | 画像符号化装置 |
EP1604530A4 (en) | 2003-03-03 | 2010-04-14 | Agency Science Tech & Res | FAST-DECISION ALGORITHM FOR INTRAPRADICTION FOR ADVANCED VIDEO CODING |
JP2005184241A (ja) * | 2003-12-17 | 2005-07-07 | Kddi Corp | 動画像フレーム内モード判定方式 |
JP4501631B2 (ja) * | 2004-10-26 | 2010-07-14 | 日本電気株式会社 | 画像符号化装置及び方法、画像符号化装置のコンピュータ・プログラム、並びに携帯端末 |
BRPI0517069A (pt) | 2004-11-04 | 2008-09-30 | Thomson Licensing | previsão rápida intra modo para um codificador de vìdeo |
JP2007251865A (ja) | 2006-03-20 | 2007-09-27 | Sony Corp | 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体 |
JP4921240B2 (ja) * | 2007-05-10 | 2012-04-25 | キヤノン株式会社 | 画像処理装置およびその方法 |
JP2007267414A (ja) * | 2007-05-24 | 2007-10-11 | Toshiba Corp | フレーム内画像符号化方法及びその装置 |
JP2009055542A (ja) | 2007-08-29 | 2009-03-12 | Toshiba Corp | 動画像符号化装置および動画像符号化方法 |
KR102139535B1 (ko) | 2007-10-16 | 2020-07-30 | 엘지전자 주식회사 | 비디오 신호 처리 방법 및 장치 |
US20090161757A1 (en) | 2007-12-21 | 2009-06-25 | General Instrument Corporation | Method and Apparatus for Selecting a Coding Mode for a Block |
US8670488B2 (en) * | 2007-12-21 | 2014-03-11 | Telefonaktiebolaget Lm Ericsson (Publ) | Adaptive intra mode selection |
JP2009177357A (ja) * | 2008-01-22 | 2009-08-06 | Canon Inc | 符号化装置及び符号化方法 |
KR101353301B1 (ko) | 2008-04-11 | 2014-01-21 | 에스케이 텔레콤주식회사 | 인트라 예측 모드 결정 방법 및 그 장치와 이를 이용한영상 부호화/복호화 방법 및 그 장치 |
US8665964B2 (en) * | 2009-06-30 | 2014-03-04 | Qualcomm Incorporated | Video coding based on first order prediction and pre-defined second order prediction mode |
KR101702553B1 (ko) | 2009-07-04 | 2017-02-03 | 에스케이 텔레콤주식회사 | 영상 부호화/복호화 방법 및 장치 |
US20110002386A1 (en) | 2009-07-06 | 2011-01-06 | Mediatek Singapore Pte. Ltd. | Video encoder and method for performing intra-prediction and video data compression |
KR101507344B1 (ko) | 2009-08-21 | 2015-03-31 | 에스케이 텔레콤주식회사 | 가변 길이 부호를 이용한 인트라 예측모드 부호화 방법과 장치, 및 이를 위한기록 매체 |
WO2011031332A1 (en) | 2009-09-14 | 2011-03-17 | Thomson Licensing | Methods and apparatus for efficient video encoding and decoding of intra prediction mode |
US9467705B2 (en) | 2009-12-30 | 2016-10-11 | Ariscale Inc. | Video encoding apparatus, video decoding apparatus, and video decoding method for performing intra-prediction based on directionality of neighboring block |
KR101432771B1 (ko) * | 2010-03-05 | 2014-08-26 | 에스케이텔레콤 주식회사 | 영상 부호화 장치, 그 영상 부호화 방법, 영상 복호화 장치 및 그 영상 복호화 방법 |
HUE040604T2 (hu) * | 2010-08-17 | 2019-03-28 | M&K Holdings Inc | Berendezés intra predikció mód dekódolására |
US9008175B2 (en) * | 2010-10-01 | 2015-04-14 | Qualcomm Incorporated | Intra smoothing filter for video coding |
US8913662B2 (en) | 2011-01-06 | 2014-12-16 | Qualcomm Incorporated | Indicating intra-prediction mode selection for video coding using CABAC |
US8811760B2 (en) * | 2011-10-25 | 2014-08-19 | Mitsubishi Electric Research Laboratories, Inc. | Coding images using intra prediction modes |
US9148667B2 (en) | 2013-02-06 | 2015-09-29 | Qualcomm Incorporated | Intra prediction mode decision with reduced storage |
-
2013
- 2013-02-01 US US13/756,659 patent/US9426473B2/en active Active
-
2014
- 2014-01-03 JP JP2015556022A patent/JP6284954B2/ja active Active
- 2014-01-03 EP EP14702664.5A patent/EP2951996B1/en active Active
- 2014-01-03 CN CN201480005928.7A patent/CN104937936B/zh active Active
- 2014-01-03 HU HUE14702664A patent/HUE032054T2/en unknown
- 2014-01-03 WO PCT/US2014/010231 patent/WO2014120389A1/en active Application Filing
- 2014-01-03 KR KR1020157023224A patent/KR101752989B1/ko active IP Right Grant
- 2014-01-03 ES ES14702664.5T patent/ES2625821T3/es active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018074617A1 (ko) * | 2016-10-17 | 2018-04-26 | 디지털인사이트주식회사 | 화면 내 예측에 대한 참조 모드 리스트를 사용하는 비디오 코딩 방법 및 장치 |
WO2018117334A1 (ko) * | 2016-12-21 | 2018-06-28 | 전자부품연구원 | 고효율 비디오 부호화 모드 결정방법 및 결정장치 |
WO2018124333A1 (ko) * | 2016-12-28 | 2018-07-05 | 엘지전자(주) | 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치 |
US10904567B2 (en) | 2016-12-28 | 2021-01-26 | Lg Electronics Inc. | Intra prediction mode-based image processing method, and apparatus therefor |
Also Published As
Publication number | Publication date |
---|---|
EP2951996B1 (en) | 2017-02-22 |
JP6284954B2 (ja) | 2018-02-28 |
JP2016511975A (ja) | 2016-04-21 |
EP2951996A1 (en) | 2015-12-09 |
ES2625821T3 (es) | 2017-07-20 |
WO2014120389A1 (en) | 2014-08-07 |
CN104937936A (zh) | 2015-09-23 |
US9426473B2 (en) | 2016-08-23 |
CN104937936B (zh) | 2018-05-08 |
HUE032054T2 (en) | 2017-08-28 |
KR101752989B1 (ko) | 2017-07-03 |
US20140219342A1 (en) | 2014-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101752989B1 (ko) | 인트라 예측을 위한 모드 결정 단순화 | |
US11838548B2 (en) | Video coding using mapped transforms and scanning modes | |
KR101670623B1 (ko) | 감소된 저장에 의한 인트라 예측 모드 결정 | |
KR101534416B1 (ko) | 인트라-예측을 이용한 비디오 코딩 | |
RU2582062C2 (ru) | Учитывающие параллелизацию кандидаты слияния для кодирования видео | |
EP2622858B1 (en) | Intra smoothing filter for video coding | |
KR101590237B1 (ko) | 변환 계수들에 대한 함수-기반의 스캐닝 순서를 이용한 비디오 코딩 | |
KR101642615B1 (ko) | 비디오 코딩에서 양자화 파라미터 예측 | |
KR101662411B1 (ko) | 방향성 파티션들에 의한 인트라 예측 모드 코딩 | |
KR101641808B1 (ko) | 비디오 코딩에서 적응 루프 필터 및 샘플 적응 오프셋에 대한 최대 코딩 유닛 (lcu) 또는 파티션-기반 신택스 | |
US20130107950A1 (en) | Non-square transforms in intra-prediction video coding | |
EP2767086A1 (en) | Most probable transform for intra prediction coding | |
EP2754294A1 (en) | Run-mode based coefficient coding for video coding | |
RU2574280C2 (ru) | Выбор единых кандидатов режима слияния и адаптивного режима предсказания вектора движения |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |