KR102577071B1 - 가장 가능성 있는 인트라 모드를 예측하는 방법 및 장치 - Google Patents
가장 가능성 있는 인트라 모드를 예측하는 방법 및 장치 Download PDFInfo
- Publication number
- KR102577071B1 KR102577071B1 KR1020217011383A KR20217011383A KR102577071B1 KR 102577071 B1 KR102577071 B1 KR 102577071B1 KR 1020217011383 A KR1020217011383 A KR 1020217011383A KR 20217011383 A KR20217011383 A KR 20217011383A KR 102577071 B1 KR102577071 B1 KR 102577071B1
- Authority
- KR
- South Korea
- Prior art keywords
- intra prediction
- prediction mode
- mode
- value
- validity
- 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/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- 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/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- 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/46—Embedding additional information in the video signal during the compression process
- H04N19/463—Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
-
- 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/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
MPM(Most Probable Mode) 리스트를 구성하는 방법이 제공된다. 이웃 블록으로부터 유도된 각 인트라 예측 모드는 모드 방향과 그의 소스 블록의 위치에 따라 유효하거나 유효하지 않은 주제로 분류된다. 유효 모드와 유효하지 않은 모드는 각각 가능성이 가장 높은 모드와 가장 가능성이 낮은 모드로 간주된다. 이 분류 절차는 MPM의 지향성 모드 및 비 지향성 모드의 순서를 문제시하지 않는다(defy).
Description
본 개시는 이미지 및/또는 비디오 코딩 및 디코딩의 기술 분야에 관한 것으로, 특히 인트라 예측을 위한 방법 및 장치에 관한 것이다.
디지털 비디오는 DVD 디스크 도입 이후 널리 사용되었다. 전송 전에 비디오는 인코딩되고 전송 매체를 사용하여 전송된다. 뷰어(viewer)는 비디오를 수신하고, 보기(viewing) 디바이스를 사용하여 비디오를 디코딩하고 디스플레이한다. 예를 들어, 더 높은 해상도, 색상 심도 및 프레임 레이트로 인해, 비디오 품질이 수년에 걸쳐 향상되었다. 이것은 오늘날 인터넷과 이동 통신 네트워크를 통해 일반적으로 전송되는 더 큰 데이터 스트림으로 이어졌다.
그러나, 고해상도 비디오는 일반적으로 정보가 많기 때문에 더 많은 대역폭이 필요하다. 대역폭 요건을 줄이기 위해 비디오 압축과 관련된 비디오 코딩 표준이 도입되었다. 비디오가 인코딩되는 경우, 대역폭 요건(또는 저장(stroage)의 경우 대응하는 메모리 요건)이 감소된다. 종종 이러한 감소는 품질을 희생한다. 따라서, 비디오 코딩 표준은 대역폭 요건과 품질 간의 균형을 찾으려고 한다.
HEVC(High Efficiency Video Coding)는 당업자에게 일반적으로 알려진 비디오 코딩 표준의 예이다. HEVC에서 코딩 유닛(coding unit, CU)을 예측 유닛(prediction unit, PU) 또는 변환 유닛(transform unit, TU)으로 분할한다(split). VVC(Versatile Video Coding) 차세대 표준은 JVET(Joint Video Exploration Team)로 알려진 파트너십으로 서로 협력하는, ITU-T VCEG(Video Coding Experts Group) 및 ISO/IEC MPEG(Moving Picture Experts Group) 표준화 조직의 가장 최근 공동 비디오 프로젝트이다. VVC는 ITU-T H.266/NGVC(Next Generation Video Coding) 표준이라고도 한다. VVC에서, 다중 파티션(multiple partition) 유형의 개념은 제거될 것이며, 즉 CU, PU 및 TU 개념의 분리는 최대 변환 길이에 비해 크기가 너무 큰 CU에 필요한 경우를 제외하고, CU 파티션 모양에 대해 더 많은 유연성을 지원한다.
이러한 코딩 유닛(coding unit, CU)(블록이라고도 함)의 처리는 인코더에 의해 지정된 크기, 공간 위치 및 코딩 모드에 따라 달라진다. 코딩 모드는 예측 유형에 따라 인트라 예측 모드와 인터 예측 모드의 두 가지 그룹으로 분류될 수 있다. 인트라 예측 모드는 동일한 화상(프레임 또는 이미지라고도 함)의 샘플을 사용하여 참조 샘플을 생성하여, 재구성되는 블록의 샘플에 대한 예측 값을 계산한다. 인트라 예측은 공간 예측(spatial prediction)이라고도 한다. 인터 예측 모드는 시간 예측(temporal prediction)을 위해 설계되었으며, 이전 화상 또는 다음 화상의 참조 샘플을 사용하여 현재 화상의 블록의 샘플을 예측한다.
ITU-T VCEG(Q6/16) 및 ISO/IEC MPEG(JTC 1/SC 29/WG 11)는 현재 HEVC 표준(화면 콘텐츠 코딩 및 높은 동적 범위 코딩을 위한 현재 확장(extension)과 단기 확장 포함)을 훨씬 능가하는 압축 기능을 갖춘 미래 비디오 코딩 기술의 표준화에 대한 잠재적 필요성을 연구하고 있다. 그룹은 이 분야의 전문가가 제안한 압축 기술 설계를 평가하기 위해 JVET(Joint Video Exploration Team)로 알려진 공동 협력 노력으로 이 탐사 활동에 협력하고 있다.
VTM(Versatile Test Model) 표준은 35개의 인트라 모드를 사용하는 반면 BMS(Benchmark Set)는 67개의 인트라 모드를 사용한다.
현재 BMS에서 설명하는 인트라 모드 코딩 방식은 복잡하고, 선택되지 않은 모드 세트의 단점은 인덱스 리스트가 항상 일정하고 현재 블록 속성(예: 이웃 블록 INTRA 모드)에 기반하여 적응적이지 않다는 것이다.
인트라 예측을 위한 장치 및 방법이 개시된다. 장치 및 방법은 코딩 효율을 향상시키기 위해 매핑 프로세스(mapping process)을 사용하여 인트라 예측을 위한 계산 절차를 단순화한다. 보호 범위는 독립 청구항에 의해 정의된다. 유리한 실시 예 중 일부는 종속 항에 의해 제공된다.
일 실시 예에 따르면, 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 방법이 제공되며, 상기 방법은, 현재 블록에 인접한 제1 이웃 블록의 인트라 예측(intra prediction) 모드를 획득하는 단계; 상기 제1 이웃 블록의 인트라 예측 모드가 제2 이웃 블록으로부터 획득된 인트라 예측 모드와 상이하면, 상기 인트라 예측 모드에 대한 유효성을 결정하는 단계; 상기 인트라 예측 모드의 유효성에 따라 상기 인트라 예측 모드를 여러 유효성 버퍼 중 대응하는 유효성 버퍼에 저장하는 단계; 및 상기 MPM 리스트가 최대 개수의 예측 모드를 포함하거나 또는 상기 유효성 버퍼에 저장된 모든 예측 모드가 상기 MPM 리스트로 페치(fetch)될 때까지 가장 유효한 버퍼부터 시작하여, 상기 여러 유효성 버퍼에서 상기 MPM 리스트로 인트라 예측 모드를 페치하는 단계를 포함한다.
상기 방법은 MPM 구성을 용이하게 할 수 있으며, 특히 현재 블록의 예측에 대해 더 높은 유효성을 갖는 모드를 포함하는 MPM을 제공할 수 있으며, 예를 들어, 현재 블록에서 더 많은 샘플을 예측하게 할 수 있다. 따라서, 인트라 예측 모드의 효율적인 코딩이 가능해진다.
예를 들어, 상기 유효성 값은, 상기 인트라 예측 모드가 지향성 모드(directional mode)인지 여부; 상기 제1 이웃 블록이 상기 현재 블록의 어느 쪽에 위치하는지; 및/또는 상기 인트라 예측 모드의 방향 중 적어도 하나에 의존한다(depend).
일부 예시적인 구현에서, 상기 인트라 예측 모드에 대한 유효성을 결정하는 단계는, 상기 인트라 예측 모드가 비 지향성(non directional)이면, 상기 유효성이 VALID_NON_DIR 값으로 설정되는 단계; 상기 제1 이웃 블록이 상기 현재 블록의 왼쪽에 위치되고 상기 인트라 예측 모드가 HOR_IDX보다 크거나 같으며, 상기 인트라 예측 모드가 VER_IDX - dblStrictThr보다 작으면, 상기 유효성이 VALID_DIR 값으로 설정되는 단계; 이웃 블록이 상기 현재 블록의 위에 위치되고, 상기 인트라 예측 모드가 HOR_IDX + dblStrictThr보다 크며, 상기 인트라 예측 모드가 VER_IDX보다 작거나 같으면, 상기 유효성이 VALID_DIR로 설정되는 단계를 포함하고, HOR_IDX는 수평 예측 모드의 인덱스이며, VER_IDX는 수직 예측 모드의 인덱스이고, dblStrictThr는 미리 구성된 임계 값이다.
유효한 비 지향성 모드 및 유효한 지향성 모드는 다른 유효성 범주보다 현재 블록에서 더 많은 샘플의 예측을 제공할 수 있다.
예를 들어, dblStrictThr은 4와 같다(equal). 이는 도 4, 도 7, 및 도 13에 도시된 바와 같은 0 ~ 66(예: π/4 ~ 5π/4의 방향을 커버함(cover)) 또는 -10 ~ 76(예: π/4-x 에서 5π/4+x 까지의 방향을 커버하며, x는 π/4보다 작음) 인트라 모드들 중에서 값 4일 수 있다.
일부 예시적인 구현에서, 여러 유효성 버퍼 중 제1 버퍼 FIFO0에 대한 유효성은 VALID_DIR이고, 여러 유효성 버퍼 중 제2 버퍼 FIFO1에 대한 유효성은 VALID_DIR보다 낮은 VALID_NON_DIR이다.
일부 예시적인 추가적 또는 대안적인 구현에서, 상기 인트라 예측 모드가 -10(위에서 언급된 범위 x에 대응)보다 크고 HOR_IDX보다 작으면, 왼쪽 또는 왼쪽 아래 이웃 블록인 상기 제1 이웃 블록에 대한 유효성은 VALID_DIR로 설정되거나, 및/또는 상기 인트라 예측 모드가 VER_IDX - strictThr 보다 크거나 같고 VER_IDX + strictThr 보다 작거나 같으면, 상기 유효성은 STRICTLY_INVALID_DIR 값으로 설정된다.
예를 들어, STRICTLY_INVALID_DIR 값은 VALID_DIR 값보다 낮고 VALID_NON_DIR 값보다 낮다.
예를 들어, 인트라 예측 모드가 VER_IDX보다 크고 76보다 작으면(예: 66이 도 13에서와 같이 π/4에 대응하고, 76은 66+x에 대응하며, 위에서 언급된 바와 같이 x = 10인 경우), 위쪽 또는 위의 오른쪽 이웃 블록인 제1 이웃 블록에 대한 유효성은 VALID_DIR로 설정되며; 및/또는 인트라 예측 모드가 HOR_IDX - strictThr 보다 크거나 같고 HOR_IDX + strictThr 보다 작거나 같으면, 유효성은 STRICTLY_INVALID_DIR로 설정된다.
추가로 또는 다르게는 일부 예시적인 구현에서, 상기 인트라 예측 모드가 HOR_IDX보다 크고 VER_IDX보다 작으면, 왼쪽 위 이웃 블록인 상기 제1 이웃 블록에 대한 유효성이 VALID_DIR로 설정되거나; 및/또는 상기 인트라 예측 모드가 VDIA_IDX-strictThr보다 크거나 같고 2 + strictThr보다 작거나 같으면, 상기 유효성은 STRICTLY_INVALID_DIR로 설정된다.
strictThr의 특정 값과 위에서 언급된 2, 4 또는 10과 같은 숫자 값도 상이할 수 있으며, 이들은 특정 방향 라벨링(laveling) 및 그래뉼래러티(granularity)에 맞게 조정될 수 있음을 유의한다. 추가로 또는 다르게는, 상기 인트라 예측 모드는 상기 인트라 예측 모드에 대해 결정된 것과 동일한 유효성 식별을 갖는 버퍼에 저장되고, VALID_DIR 버퍼 및 VALID_NON_DIR 버퍼가 최대 MPM 리스트 크기보다 크거나 같은 인트라 예측 모드의 수를 저장하는지를 확인하며(check), VALID_DIR 버퍼 및 VALID_NON_DIR 버퍼가 최대 MPM 리스트 크기보다 크거나 같은 인트라 예측 모드의 수를 저장하면, 상기 MPM 리스트가 채워진다filled).
추가로 또는 다르게는, 유효성이 STRICTLY_INVALID_DIR인 버퍼는 상기 MPM 리스트를 덧붙이는(populate) 데 사용되지 않거나, 및/또는 상기 인트라 예측 모드가 STRICTLY_INVALID_DIR 유효성을 가지면, 임의의 버퍼에 저장되지 않는다. 다시 말하자면, STRICTLY_INVALID_DIR 모드는 임의의 유효성 버퍼에 저장되지 않거나 MPM 리스트에 입력되지 않아 버퍼 요건과 복잡성을 줄일 수 있다.
예를 들어, 버퍼에 저장된 인트라 예측 모드의 수가 MPM 리스트의 크기보다 적으면, MPM 리스트 내의 빈 위치(vacant position)가 기본(default) 모드로 채워진다. 기본 모드는 미리 정의될 수 있으며, 표준 또는 다른 방식으로 규정된다.
일 실시 예에 따르면, 이미지를 디코딩하기 위한 방법이 제공되며, 상기 방법은, 인코딩된 비트스트림으로부터 모드 지시(indication)를 추론하는(infer) 단계; 전술한 실시 예들 및 예시적인 구현들 중 임의의 것에 따라 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 방법의 단계; 및 상기 MPM 리스트에 대한 포인터(pointer)로서의 모드 지시 및 상기 MPM 리스트에 따라 상기 이미지에서의 현재 블록을 재구성하는 단계를 포함한다.
일 실시 예에 따르면, 이미지를 인코딩하는 방법이 제공되며, 상기 방법은, 전술한 실시 예들 및 예시적인 구현들 중 임의의 것에 따라 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 방법의 단계; 상기 MPM 리스트에 대한 포인터로서 현재 블록에 대한 모드 지시를 결정하는 단계; 및 상기 모드 지시를 인코딩된 비트스트림에 포함하는 단계를 포함한다.
일 실시 예에 따르면, 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 장치가 제공되며, 상기 장치는, 현재 블록에 인접한 제1 이웃 블록의 인트라 예측 모드를 획득하고; 상기 제1 이웃 블록의 인트라 예측 모드가 제2 이웃 블록으로부터 획득된 인트라 예측 모드와 상이하면, 상기 인트라 예측 모드에 대한 유효성을 결정하며; 상기 인트라 예측 모드의 유효성에 따라 상기 인트라 예측 모드를 여러 유효성 버퍼 중 대응하는 유효성 버퍼에 저장하고; 그리고 상기 MPM 리스트가 최대 개수의 예측 모드를 포함하거나 또는 상기 유효성 버퍼에 저장된 모든 예측 모드가 상기 MPM 리스트로 페치될 때까지 가장 유효한 버퍼부터 시작하여, 상기 여러 유효성 버퍼에서 상기 MPM 리스트로 인트라 예측 모드를 페치하도록 구성되는 처리 회로를 포함한다.
일 실시 예에 따르면, 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 장치가 제공되며, 상기 장치는, 현재 블록에 인접한 제1 이웃 블록의 인트라 예측 모드를 획득하도록 구성된 인트라 모드 결정 유닛(1610); 상기 제1 이웃 블록의 인트라 예측 모드가 제2 이웃 블록으로부터 획득된 인트라 예측 모드와 상이하면, 상기 인트라 예측 모드에 대한 유효성을 결정하도록 구성된 유효성 결정 유닛(1620); 상기 인트라 예측 모드의 유효성에 따라 상기 인트라 예측 모드를 여러 유효성 버퍼 중 대응하는 유효성 버퍼에 저장하도록 구성된 버퍼 액세스 유닛(1630); 및 상기 MPM 리스트가 최대 개수의 예측 모드를 포함하거나 또는 상기 유효성 버퍼에 저장된 모든 예측 모드가 상기 MPM 리스트로 페치될 때까지 가장 유효한 버퍼부터 시작하여, 상기 여러 유효성 버퍼에서 상기 MPM 리스트로 인트라 예측 모드를 페치하도록 구성된 MPM 구성 유닛(1640)을 포함한다.
예를 들어, 상기 유효성 값은, 상기 인트라 예측 모드가 지향성 모드인지 여부; 상기 제1 이웃 블록이 상기 현재 블록의 어느 쪽에 위치하는지; 상기 인트라 예측 모드의 방향 중 적어도 하나에 의존한다.
일부 실시 예에서, 상기 유효성 결정 유닛은, 상기 인트라 예측 모드가 비 지향성이면, 상기 유효성이 VALID_NON_DIR 값으로 설정되는 것; 상기 제1 이웃 블록이 상기 현재 블록의 왼쪽에 위치되고 상기 인트라 예측 모드가 HOR_IDX보다 크거나 같으며, 상기 인트라 예측 모드가 VER_IDX - dblStrictThr보다 작으면, 상기 유효성이 VALID_DIR 값으로 설정되는 것; 및 이웃 블록이 상기 현재 블록의 위에 위치되고, 상기 인트라 예측 모드가 HOR_IDX + dblStrictThr보다 크며, 상기 인트라 예측 모드가 VER_IDX보다 작거나 같으면, 상기 유효성이 VALID_DIR로 설정되는 것 - HOR_IDX는 수평 예측 모드의 인덱스이며, VER_IDX는 수직 예측 모드의 인덱스이고, dblStrictThr는 미리 구성된 임계 값임 - 을 포함하여, 상기 인트라 예측 모드에 대한 유효성을 결정하도록 구성된다.
예를 들어, dblStrictThr은 4와 같다.
일부 실시 예에서, 상기 여러 유효성 버퍼 중 제1 버퍼 FIFO0에 대한 유효성은 VALID_DIR이고, 상기 여러 유효성 버퍼 중 제2 버퍼 FIFO1에 대한 유효성은 VALID_DIR보다 낮은 VALID_NON_DIR이다.
예를 들어, 상기 인트라 예측 모드가 -10보다 크고 HOR_IDX보다 작으면, 왼쪽 또는 왼쪽 아래 이웃 블록인 상기 제1 이웃 블록에 대한 유효성이 VALID_DIR로 설정되거나, 및/또는 상기 인트라 예측 모드가 VER_IDX - strictThr보다 크거나 같고 VER_IDX + strictThr보다 작거나 같으면, 상기 유효성은 STRICTLY_INVALID_DIR 값으로 설정된다.
예를 들어, STRICTLY_INVALID_DIR 값은 VALID_DIR 값보다 낮고 VALID_NON_DIR 값보다 낮다.
일부 실시 예에서, 상기 인트라 예측 모드가 VER_IDX보다 크고 76보다 작으면, 위 또는 오른쪽 위 이웃 블록인 상기 제1 이웃 블록에 대한 유효성이 VALID_DIR로 설정되거나; 및/또는 상기 인트라 예측 모드가 HOR_IDX - strictThr보다 크거나 같고 HOR_IDX + strictThr보다 작거나 같으면, 상기 유효성은 STRICTLY_INVALID_DIR로 설정된다.
일부 실시 예에서, 상기 인트라 예측 모드가 HOR_IDX보다 크고 VER_IDX보다 작으면, 왼쪽 위 이웃 블록인 상기 제1 이웃 블록에 대한 유효성이 VALID_DIR로 설정되거나; 및/또는 상기 인트라 예측 모드가 VDIA_IDX - strictThr보다 크거나 같고 2 + strictThr보다 작거나 같으면, 상기 유효성은 STRICTLY_INVALID_DIR로 설정된다.
예를 들어, 상기 인트라 예측 모드는 상기 인트라 예측 모드에 대해 결정된 것과 동일한 유효성 식별을 갖는 버퍼에 저장되고, VALID_DIR 버퍼 및 VALID_NON_DIR 버퍼가 최대 MPM 리스트 크기보다 크거나 같은 인트라 예측 모드의 수를 저장하는지를 확인하며, VALID_DIR 버퍼 및 VALID_NON_DIR 버퍼가 최대 MPM 리스트 크기보다 크거나 같은 인트라 예측 모드의 수를 저장하면, 상기 MPM 리스트가 채워진다.
일부 예시적인 구현에서, 유효성이 STRICTLY_INVALID_DIR인 버퍼는 상기 MPM 리스트를 덧붙이는 데 사용되지 않거나, 및/또는 상기 인트라 예측 모드가 STRICTLY_INVALID_DIR 유효성을 가지면, 임의의 버퍼로 푸시되지 않는다.
예를 들어, 상기 버퍼에 저장된 인트라 예측 모드의 수가 상기 MPM 리스트의 크기보다 적으면, 상기 MPM 리스트 내의 빈 위치가 기본 모드로 채워진다.
일 실시 예에 따르면, 이미지를 디코딩하는 장치(30)가 제공되며, 상기 장치는, 인코딩된 비트스트림으로부터 모드 지시를 추론하는 비트스트림 파싱(parsing) 유닛; 위의 장치 중 어느 하나에 따라 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 장치; 및 상기 MPM 리스트에 대한 포인터로서의 모드 지시 및 상기 MPM 리스트에 따라 상기 이미지에서의 현재 블록을 재구성하는 재구성 유닛을 포함한다.
일 실시 예에 따르면, 이미지를 인코딩하는 장치가 제공되며, 상기 장치는, 위의 장치 중 어느 하나에 따라 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 장치; 상기 MPM 리스트에 대한 포인터로서 현재 블록에 대한 모드 지시를 결정하는 인트라 예측 유닛; 및 상기 모드 지시를 인코딩된 비트스트림에 포함하는 비트스트림 생성기를 포함한다.
일 실시 예에 따르면, 위의 실시 예 및 예 중 어느 하나에 따른 장치를 구현하는 집적 회로를 제공한다.
일 실시 예에 따르면, 컴퓨터가 판독 가능한 비 일시적 매체 상에 저장된 프로그램 제품이 제공되며, 상기 프로그램 제품은 명령을 포함하며, 상기 명령이 하나 이상의 프로세서 상에서 실행될 때 상기 하나 이상의 프로세서가 위에서 설명된 방법 중 어느 하나에 따른 방법을 실행하게 한다.
다음의 실시 예는 첨부된 도면 및 도면을 참조하여 더 상세하게 설명된다.
도 1은 본 발명의 실시 예를 구현하도록 구성된 비디오 코딩 시스템의 예를 도시하는 블록도이다.
도 2는 본 발명의 실시 예를 구현하도록 구성된 비디오 인코더의 예를 도시하는 블록도이다.
도 3은 본 발명의 실시 예를 구현하도록 구성된 비디오 디코더의 예시적인 구조를 도시하는 블록도이다.
도 4는 제안된 67개의 인트라 예측 모드를 예시하는 개략도를 도시한다.
도 5는 MPM 유도를 위한 이웃 블록을 예시하는 개략도를 도시한다.
도 6은 나머지 모드 리스트에서 처음 3개의 모드를 유도하는 데 사용되는 제2 계층(tier) 이웃 블록 인트라 모드를 예시하는 개략도를 도시한다.
도 7은 나머지 모드 리스트 생성 프로세스에서 처음 3개의 모드의 예를 예시하는 개략도를 도시한다.
도 8은 이웃 블록으로부터 유도된 인트라 예측 모드가 블록을 인트라 예측하는 데 사용되면 이웃 블록의 참조 샘플이 사용되지 않는 예를 예시하는 개략도를 도시한다.
도 9는 참조 샘플 세트의 예를 예시하는 다른 개략도를 도시한다.
도 10은 장치의 블록도를 도시한다.
도 11은 참조 샘플 세트의 예를 예시하는 다른 개략도를 도시한다.
도 12는 참조 샘플 페치(fetching) 절차에서 사용되는 현재 예측 블록의 이웃 블록의 예를 나타낸다.
도 13은 제안된 85개의 인트라 예측 모드를 예시하는 개략도를 도시한다.
도 14는 하나 이상의 유효성 버퍼를 제공하기 위한 예시적인 방법을 예시하는 흐름도이다.
도 15는 MPM 리스트를 구성하기 위한 예시적인 방법을 예시하는 흐름도이다.
도 16은 본 개시의 실시 예들에 따른 장치의 기능적 구조를 개략적으로 예시하는 블록도이다.
도 17은 본 개시의 실시 예들에 따른 MPM 구성 리스트를 포함하는 비디오 코딩을 위한 컴퓨팅 디바이스의 개략도이다.
도 1은 본 발명의 실시 예를 구현하도록 구성된 비디오 코딩 시스템의 예를 도시하는 블록도이다.
도 2는 본 발명의 실시 예를 구현하도록 구성된 비디오 인코더의 예를 도시하는 블록도이다.
도 3은 본 발명의 실시 예를 구현하도록 구성된 비디오 디코더의 예시적인 구조를 도시하는 블록도이다.
도 4는 제안된 67개의 인트라 예측 모드를 예시하는 개략도를 도시한다.
도 5는 MPM 유도를 위한 이웃 블록을 예시하는 개략도를 도시한다.
도 6은 나머지 모드 리스트에서 처음 3개의 모드를 유도하는 데 사용되는 제2 계층(tier) 이웃 블록 인트라 모드를 예시하는 개략도를 도시한다.
도 7은 나머지 모드 리스트 생성 프로세스에서 처음 3개의 모드의 예를 예시하는 개략도를 도시한다.
도 8은 이웃 블록으로부터 유도된 인트라 예측 모드가 블록을 인트라 예측하는 데 사용되면 이웃 블록의 참조 샘플이 사용되지 않는 예를 예시하는 개략도를 도시한다.
도 9는 참조 샘플 세트의 예를 예시하는 다른 개략도를 도시한다.
도 10은 장치의 블록도를 도시한다.
도 11은 참조 샘플 세트의 예를 예시하는 다른 개략도를 도시한다.
도 12는 참조 샘플 페치(fetching) 절차에서 사용되는 현재 예측 블록의 이웃 블록의 예를 나타낸다.
도 13은 제안된 85개의 인트라 예측 모드를 예시하는 개략도를 도시한다.
도 14는 하나 이상의 유효성 버퍼를 제공하기 위한 예시적인 방법을 예시하는 흐름도이다.
도 15는 MPM 리스트를 구성하기 위한 예시적인 방법을 예시하는 흐름도이다.
도 16은 본 개시의 실시 예들에 따른 장치의 기능적 구조를 개략적으로 예시하는 블록도이다.
도 17은 본 개시의 실시 예들에 따른 MPM 구성 리스트를 포함하는 비디오 코딩을 위한 컴퓨팅 디바이스의 개략도이다.
약어 및 용어의 정의(Definitions of Acronyms & Glossary)
CTU/CTB - 코딩 트리 유닛/코딩 트리 블록(Coding Tree Unit/Coding Tree Block)
CU/CB - 코딩 유닛/코딩 블록(Coding Unit/Coding Block)
PU/PB - 예측 유닛/예측 블록(Prediction Unit/Prediction Block)
TU/TB - 변환 유닛/변환 블록(Transform Unit/Transform Block)
HEVC - 고효율 비디오 코딩(High Efficiency Video Coding)
H.264/AVC 및 HEVC와 같은 비디오 코딩 체계(scheme)는 블록 기반 하이브리드 비디오 코딩의 성공적인 원칙에 따라 설계되었다. 이 원리를 사용하여 화상은 먼저 블록으로 파티셔닝(partition)되며, 그 다음에 각 블록은 인트라 화상(intra-picture) 예측 또는 인터 화상(inter-picture) 예측을 사용하여 예측된다.
H.261 이후의 여러 비디오 코딩 표준은 "손실 하이브리드 비디오 코덱" 그룹(즉, 샘플 도메인에서의 공간 및 시간 예측과 변환 도메인에서 양자화를 적용하기 위해 2D 변환 코딩을 조합)에 속한다. 비디오 시퀀스의 각 화상은 일반적으로 겹치지 않는 블록의 세트로 파티셔닝되고, 코딩은 일반적으로 블록 레벨에서 수행된다. 다시 말해서, 인코더에서 비디오는 예를 들어, 공간(인트라 화상) 예측 및 시간(인터 화상) 예측을 사용하여 예측 블록을 생성하고, 현재 블록(현재 처리되는/처리할 블록)에서 예측 블록을 빼서 잔차(residual) 블록을 획득하며, 변환 도메인에서 잔차 블록을 변환하고 잔차 블록을 양자화하여 전송될 데이터의 양을 감소(압축)하는 것에 의해, 일반적으로 블록(화상 블록) 레벨에서 처리되는 반면, 디코더에서, 인코더와 비교하여 역 처리(inverse processing)가 인코딩되거나 압축된 블록에 부분적으로 적용되어, 표현을 위해 현재 블록을 재구성한다. 더욱이, 인코더는 디코더 처리 루프(loop)를 복제하여 둘 다 똑같은(identical) 예측(예: 인트라 예측 및 인터 예측) 및/또는 후속 블록을 처리, 즉, 코딩하기 위한 재구성을 생성할 것이다.
여기서 사용되는 용어 "블록"은 화상 또는 프레임의 일부일 수 있다. 설명의 편의를 위해, 본 개시의 실시 예는 HEVC(High-Efficiency Video Coding) 또는 ITU-T VCEG(Video Coding Experts Group) 및 ISO/IEC MPEG(Motion Picture Experts Group)의 JCT-VC(Joint Collaboration Team on Video Coding)에 의해 개발된 VVC(Versatile Video Coding)의 참조 소프트웨어를 참조하여 설명된다. 당업자는 본 발명의 실시 예가 HEVC 또는 VVC에 제한되지 않음을 이해할 것이다. CU, PU 및 TU를 참조할 수 있다. HEVC에서, CTU는 코딩 트리(coding tree)로 표시된 쿼드 트리(quad-tree) 구조를 사용하여 CU로 분할된다(split). 인터 화상(시간적) 또는 인트라 화상(공간적) 예측을 사용하여 화상 영역을 코딩할지는 CU 레벨에서 결정된다. 각 CU는 PU 분할 유형(splitting type)에 따라 1개, 2개 또는 4개의 PU로 추가로 분할될 수 있다. 하나의 PU 내부에서, 동일한 예측 프로세스가 적용되고 관련 정보가 PU 기반으로 디코더로 전송된다. PU 분할 유형에 기반한 예측 프로세스를 적용하여 잔차 블록을 획득한 후, CU는 CU에 대한 코딩 트리와 유사한 다른 쿼드 트리 구조에 따라 변환 유닛(transform unit, TU)으로 파티셔닝될 수 있다. 비디오 압축 기술의 최신 개발에서, 쿼드 트리 및 이진 트리(Quad-tree and binary tree, QTBT) 파티셔닝은 코딩 블록을 파티셔닝하는 데 사용된다. QTBT 블록 구조에서, CU는 정사각형 또는 직사각형 모양을 가질 수 있다. 예를 들어, 코딩 트리 유닛(coding tree unit, CTU)은 먼저 쿼드 트리 구조에 의해 파티셔닝된다. 쿼드 트리 리프(leaf) 노드는 이진 트리 구조에 의해 추가로 파티셔닝된다. 이진 트리 리프 노드를 코딩 유닛(coding unit, CU)이라고 하며, 대응하는 세그먼테이션(segmentation)은 추가 파티셔닝 없이 예측 및 변환 처리에 사용된다. 이는 CU, PU 및 TU가 QTBT 코딩 블록 구조에서 동일한 블록 크기를 가짐을 의미한다. 동시에, 다중 파티션, 예를 들어, 트리플 트리 파티션도 QTBT 블록 구조와 함께 사용하도록 제안되었다.
ITU-T VCEG(Q6/16) 및 ISO/IEC MPEG(JTC 1/SC 29/WG 11)는 현재 HEVC 표준(화면 콘텐츠 코딩 및 높은 동적 범위 코딩을 위한 현재 확장과 단기 확장 포함)을 훨씬 능가하는 압축 기능을 갖춘 미래 비디오 코딩 기술의 표준화에 대한 잠재적 필요성을 연구하고 있다. 그룹은 이 분야의 전문가가 제안한 압축 기술 설계를 평가하기 위해 JVET(Joint Video Exploration Team)로 알려진 공동 협력 노력으로 이 탐사 활동에 협력하고 있다.
VTM(Versatile Test Model)은 35개의 인트라 모드를 사용하는 반면 BMS(Benchmark Set)는 67개의 인트라 모드를 사용한다. 67개의 인트라 모드를 코딩하기 위해, BMS의 현재 인트라 모드 코딩 체계는 다음 방법을 사용한다.
BMS에서 증가된 지향성 인트라 모드 수를 수용하기 위해, 6개의 MPM(Most Probable Modes)이 있는 인트라 모드 코딩 방법이 사용된다. 두 가지 주요 기술적 측면이 관련된다.
1) 6개의 MPM의 유도, 및
2) 6개의 MPM 및 나머지 비 MPM(non-MPM) 모드의 엔트로피 코딩.
BMS에서, MPM 리스트에 포함된 모드는 이웃 인트라 모드(Neighbor intra mode), 유도된 인트라 모드(Derived intra mode) 및 기본 인트라 모드(Default intra mode)의 세 그룹으로 분류된다.
5개의 이웃 인트라 예측 모드(즉, 이웃 블록의 인트라 예측 모드)는 현재 블록에 대한 MPM 리스트를 형성하는 데 사용된다. 5개의 이웃 블록의 위치는 병합(merge) 모드에서 사용되는 위치와 동일하며, 즉, 도 5에 도시된 바와 같이, 왼쪽(left, L), 위(above, A), 왼쪽 아래(below left, BL), 오른쪽 위(above right, AR), 왼쪽 위(above left, AL)이다. 예를 들어, 왼쪽 블록(L)은 현재 블록(현재 CU)의 왼쪽 하단 모서리(bottom-left corner) 샘플의 왼쪽 측에 이웃하는 샘플을 포함하는 블록으로 정의될 수 있다. 위 블록(A)은 현재 블록의 오른쪽 상단 모서리(top-right corner) 샘플에 이웃하는 샘플을 포함하는 블록으로 정의될 수 있다. 마찬가지로, BL 블록은 현재 블록의 왼쪽 하단 모서리 샘플에 대각선으로 인접한 (왼쪽 하단 방향) 샘플을 포함한다. AL 블록은 현재 블록의 왼쪽 상단 모서리 샘플에 대각선으로 인접한(왼쪽 상단 방향) 샘플을 포함한다. AR 블록은 현재 블록의 오른쪽 상단 모서리 샘플에 대각선으로 인접한(오른쪽 상단 방향) 샘플을 포함한다. L 블록, A 블록, BL 블록, AL 블록, AR 블록은 일반적으로, 이웃하는 왼쪽 블록, 왼쪽 하단(bottom-left) 블록, 상단(top) 블록 및/또는 오른쪽 상단(top-right) 블록의 분할 모드에 따라 상이한 크기를 가질 수 있다.
초기 MPM 리스트는 위에서 언급된 5개의 인접 인트라 모드, 그 다음에 평면(planer) 모드 및 DC 모드를 MPM 리스트에 삽입하는 것에 의해 형성된다. 프루닝(pruning) 프로세스는 고유 모드만 MPM 리스트에 포함되도록 복제된 모드를 제거하는 데 사용된다. 다시 말해서, 각 인트라 모드는 MPM 리스트에 한 번만 나열된다. 초기 모드가 포함되는 순서는 왼쪽, 위, 평면, DC, 왼쪽 아래, 오른쪽 위, 왼쪽 위이다.
MPM 리스트가 가득 차지 않으면(즉, 리스트에 MPM 후보가 6개보다 작으면) 유도된 모드가 추가된다. 이러한 인트라 모드는 MPM 리스트에 이미 포함된 각도 모드(angular mode)에 -1 또는 +1을 추가하는 것에 의해 획득될 수 있다. 비 각도 모드(non-angular mode), 즉 DC 또는 평면에는 유도가 적용되지 않는다. 예시적인 각도 모드가 도 4에 예시되어 있다. 왼쪽 하단 방향의 대각선 모드는 인덱스 2를 가지며, 수평 모드(horizontal mode)는 인덱스 18을 가지고, 왼쪽 상단 대각선 모드는 인덱스 34를 가지며, 수직 모드(vertical mode)는 인덱스 50을 가지고, 오른쪽 상단 대각선 모드는 인덱스 66을 가진다. MPM 리스트에 대한 추가 후보 모드는 MPM 리스트에 있는 각도 모드의 인트라 모드 인덱스에 +1 또는 -1(일반적으로 미리 정의된 오프셋)을 추가하는 것에 의해 유도된다. 예를 들어, 인덱스 34를 갖는 후보 모드가 이미 MPM에 있으면, MPM의 예비 위치(spare position)는 모드 35 및/또는 모드 33으로 채워질 수 있다.
마지막으로, MPM 리스트가 아직 완료되지 않으면, 기본 모드가 수직, 수평, 인트라 모드 2 및 대각선 모드의 순서로 추가된다. 이 프로세스의 결과로, 6개의 MPM 모드의 고유한 리스트가 생성된다.
6개의 MPM의 엔트로피 코딩의 경우, MPM의 잘린 단항 이진화(truncated unary binarization)가 사용된다. 처음 세개의 빈(bin)은 현재 시그널링되는 빈과 관련된 MPM 모드에 따라 달라지는 콘텍스트(context)로 코딩된다. MPM 모드는 (a) 모드가 수평(MPM 모드가 대각선 방향보다 작거나 같음), (b) 수직(대각선 방향보다 큰 MPM 모드), 또는 (c) 비 각도(non-angular)(DC 및 평면) 클래스에 속하는지에 따라 세 가지 범주 중 하나로 분류된다. 따라서, MPM 인덱스를 시그널링하기 위해 세 가지 콘텍스트가 사용된다.
나머지 61개의 비 MPM(non-MPM)의 코딩은 다음과 같이 수행된다. 61개의 비 MPM은 먼저 선택된 모드 세트(selected modes set)와 선택되지 않은 모드 세트(non-selected modes set)의 두 세트로 나뉜다. 선택된 모드 세트는 16개의 모드를 포함하고, 나머지(45 개 모드)는 선택되지 않은 모드 세트에 할당된다. 현재 모드가 속한 모드 세트는 플래그(flag)와 함께 비트스트림(bitstream)에서 지시된다(indicate). 그런 다음, 선택된 세트로부터의 모드는 4 비트 고정 길이 코드로 시그널링되고, 선택되지 않은 세트로부터의 모드는 잘린 이진 코드(truncated binary code)로 코딩된다. 선택된 모드 세트는 다음:
선택된 모드 세트 = {0, 4, 8, 12, 16, 20... 60}
선택되지 않은 모드 세트 = {1, 2, 3, 5, 6, 7, 9, 10... 59}
과 같은 인덱스를 가지는 총 61개의 비 MPM을 서브샘플링(sub-sampling)하는 것에 의해 생성된다.
상이한 INTRA 모드 신호 메커니즘의 요약이 표 1에 나와 있다.
본 개시는 MPM 리스트의 임의의 특정 크기에 한정되지 않음을 유의한다. 또한, MPM 리스트에 입력되지 않은 나머지 인트라 모드는 추가 세트(예: 선택된 및 선택되지 않은, 또는 이들 이상)로 분리될 수 있지만 더 이상 분리될 필요는 없다. 다른 예에서, 3개의 MPM(Most Probable Modes)을 갖는 인트라 모드 코딩 방법이 사용된다. 일 예에서, 신택스 엘리먼트 intra_luma_mpm_flag[x0][y0], intra_luma_mpm_idx[x0][y0] 및 intra_luma_mpm_remainder[x0][y0]은 루마(luma) 샘플에 대한 인트라 예측 모드를 명시한다(specify). 어레이 인덱스 x0, y0은 화상의 왼쪽 상단 루마 샘플을 기준으로 고려된 예측 블록의 왼쪽 상단 루마 샘플의 위치(x0, y0)를 명시한다. intra_luma_mpm_flag[x0][y0]이 1과 같은 경우, 인트라 예측 모드는 이웃하는 인트라 예측 유닛으로부터 추론된다.
현재 블록에 대한 내부 예측(IntraPredModeY [xPb][yPb])은 다음과 같은 순서의 단계에 의해 유도된다:
이웃하는 위치(xNbA, yNbA) 및 (xNbB, yNbB)는 (xPb - 1, yPb) 및 (xPb, yPb - 1)와 각각 같게 설정된다.
A 또는 B로 대체되는 X의 경우, 변수 candIntraPredModeX는 다음과 같이 유도된다:
블록에 대한 가용성(availability) 유도 프로세스는 (xPb, yPb)와 같게 설정된 위치(xCurr, yCurr) 및 (xNbY, yNbY)와 같게 설정된 이웃 위치(xPb, yPb)를 입력으로 하여 호출되고, 출력이 availableX에 할당된다.
후보 인트라 예측 모드 candIntraPredModeX는 다음과 같이 유도된다:
다음 조건 중 하나 이상이 참(true)이면, candIntraPredModeX는 INTRA_DC와 같게 설정된다.
변수 availableX는 FALSE와 같다.
CuPredMode[xNbX][yNbX]는 MODE_INTRA와 같지 않다.
X는 B와 같으며, yPb - 1은 ((yPb >> CtbLog2SizeY) << CtbLog2SizeY)보다 작다.
그렇지 않으면, candIntraPredModeX는 IntraPredModeY[xNbX][yNbX]와 같게 설정된다.
x = 0..2인 candModeList[x]는 다음과 같이 유도된다:
candIntraPredModeB가 candIntraPredModeA와 같으면, 다음이 적용된다:
candIntraPredModeA이 2보다 작으면(즉, INTRA_PLANAR 또는 INTRA_DC와 같음), x = 0..2인 candModeList[x]는 다음과 같이 유도된다:
candModeList[0] = INTRA_PLANAR
candModeList[1] = INTRA_DC
candModeList[2] = INTRA_ANGULAR50
그렇지 않으면, x = 0..2인 candModeList[x]는 다음과 같이 유도된다:
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 +((candIntraPredModeA + 61) % 64)
candModeList[2] = 2 +((candIntraPredModeA - 1) % 64)
그렇지 않으면(candIntraPredModeB가 candIntraPredModeA와 같음), 다음이 적용된다:
candModeList[0] 및 candModeList[1]는 다음과 같이 유도된다:
candModeList[0] = candIntraPredModeA
candModeList[1] = candIntraPredModeB
candModeList[0] 및 candModeList[1] 중 어느 것도 INTRA_PLANAR와 같지 않으면, candModeList[2]는 INTRA_PLANAR와 같게 설정된다,
그렇지 않으면, candModeList[0] 및 candModeList[1] 중 어느 것도 INTRA_DC와 같이 않으면, candModeList[2]는 INTRA_DC와 같게 설정된다,
그렇지 않으면, candModeList[2]는 INTRA_ANGULAR50와 같게 설정된다.
IntraPredModeY[xPb][yPb]는 다음 절차를 적용하는 것에 의해 유도된다:
intra_luma_mpm_flag[xPb][yPb]이 1과 같으면, IntraPredModeY[xPb][yPb]는 candModeList[intra_luma_mpm_idx[xPb][yPb]]와 같게 설정된다.
그렇지 않으면, IntraPredModeY[xPb][yPb]는 다음 순서화된 단계를 적용하는 것에 의해 유도된다:
x = 0..2인 어레이 candModeList[x]는 다음 순서화된 단계에 의해 수정된다:
candModeList[0]이 candModeList[1]보다 큰 경우, 두 값이 다음과 같이 바뀐다(awap):
(candModeList[0], candModeList[1]) = Swap(candModeList[0], candModeList[1])
candModeList [0]이 candModeList [2]보다 큰 경우, 두 값이 다음과 같이 바뀐다:
(candModeList[0], candModeList[2]) = Swap(candModeList[0], candModeList[2])
candModeList [1]이 candModeList [2]보다 큰 경우, 두 값이 다음과 같이 바뀐다:
(candModeList[1], candModeList[2]) = Swap(candModeList[1], candModeList[2]) (8-11)
IntraPredModeY[xPb][yPb]는 다음 순서화된 단계에 의해 유도된다:
IntraPredModeY[xPb][yPb]는 intra_luma_mpm_remainder[xPb][yPb]와 같게 설정된다.
i가 0 ~ 2인 경우, IntraPredModeY[xPb][yPb]가 candModeList [i]보다 크거나 같은 경우, IntraPredModeY[xPb][yPb]의 값이 1씩 증가한다.
본 출원의 일 구현 형태에서, 프레임은 화상과 동일하다.
본 출원의 일 구현 형태에서, 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 방법으로서, 상기 방법은, 현재 블록에 인접한 이웃 블록의 인트라 예측 모드를 획득하는 단계; 이웃 블록의 인트라 예측 모드가 MPM 리스트에 포함(또는 포함)되지 않고 이웃 블록의 인트라 예측 모드가 지향성(예를 들어, 각도) 인트라 예측 모드이면, 현재 블록의 경계에서 참조 샘플 세트의 위치에 따라 현재 블록의 예측된 샘플의 수량 N을 결정하는 단계 - N은 정수임 -; 및 N이 임계 값(예를 들어, 제1 임계 값) 보다 크거나 같으면, 이웃 블록의 인트라 예측 모드를 MPM 리스트에 추가하는 단계를 포함한다.
예측된 샘플의 수량 N을 결정하는 것은 추정 또는 예를 들어, 인트라 모드 인덱스에 따라 룩업 테이블로부터 N을 페치하는 것에 의해 결정하고, 그리고 가능한 경우 참조 픽셀의 가용성을 고려하는 것일 수 있음을 유의한다. 이러한 방식으로, 모드는 현재 블록의 특정 샘플 수(예: 제1 임계 값을 초과하는 샘플)를 예측할 수 있는 경우에만 MPM 리스트에 포함된다.
본 출원의 구현 형태에 따라, MPM 리스트의 이웃 블록에서 유도된 인트라 예측 모드의 순서는 블록 샘플의 영향(impact)에 의해 결정된다. 예를 들어, 더 높은 N을 갖는 유도된 인트라 예측 모드 후보는 더 낮은 N을 갖는 유도된 인트라 예측 모드 후보를 포함하기 전에 포함된다.
본 출원의 구현 형태에 따라, 현재 블록의 예측을 위한 인트라 예측 모드의 유효성에 따라 이웃 블록에서 유도된 인트라 예측 모드의 순서가 결정된다. 여기서, "순서(order)"라는 용어는 MPM 리스트 구성을 위해 특정 인트라 예측 모드(intra prediction mode, IPM) 후보가 고려되는 순서를 지칭한다. 일반적으로, 예측 모드 후보는 현재 블록의 가능한 많은 부분을 예측할 수 있는 것이 바람직하다. 임의 샘플 또는 무시할 정도로 적은 수의 샘플을 예측할 수 없는 IPM 후보가 있을 수 있다. 예를 들어, 참조 샘플이 사용 가능하지 않은 방향을 가진 각도 모드의 경우가 이에 대응한다. 현재 블록을 예측하기 위한 관련성(relevance)에 따라 IPM 후보를 정렬할(sort) 수 있도록 하기 위해, 본 개시는 IPM 후보를 유효성에 따라 범주화한다(categorize). 여기서, 유효성은 현재 블록의 샘플을 예측하기 위한 특정 인트라 예측 모드의 적용 가능성(applicability)을 반영(지시(indicate)할 수 있다. 적용 가능성은 인트라 예측 모드에 의해 예측 가능한 현재 블록의 샘플 양(현재 블록의 영역)과 관련이 있다.
유효성을 결정하는 방법의 단계는 예시적인 도 14에 도시되어 있으며, 다음과 같다.
1 단계(step one) S1410: 현재 블록에 인접한 이웃 블록의 인트라 예측 모드를 획득한다. 이 단계에서, 후보 IPM은 이전에 처리된 블록(코딩 유닛)의 IPM이 저장된 메모리로부터 획득될 수 있다. 예를 들어, 왼쪽에서 오른쪽으로, 위에서 아래로 일반적인 처리 순서가 채택되면, 주로 왼쪽 및 위쪽 인접 블록들과 그들의 IPM을 사용할 수 있다. 이웃 블록은 인코더 및 디코더에서 알려진 미리 결정된 순서에 따라 결정될 수 있다.
2 단계(step two) S1420: 인트라 예측 모드가 다른 이웃 블록으로부터 이미 획득되었는지를 확인한다(check). 이 단계는 레지스터를 통해 수행될 수 있으며, 이 레지스터의 각각의 비트는 인트라 예측 모드가 획득되었는지를 지시하는 플래그이다. 모드가 성공적으로 획득된 후에, 이 레지스터의 대응하는 비트가 1로 설정된다. 대응하는 비트의 값이 0과 같으면 인트라 예측 모드 획득 중 확인(check)이 성공한다. 이 단계는 프루닝(pruning)에 속한다. 목표는 임의의 IPM 후보가 MPM 리스트 및/또는 임시 리스트 또는 버퍼에서 한 번만 리스터(lister)인 것을 보장하는 것이다.
3 단계(step three): 후보 인트라 모드의 유효성을 결정한다(S1430). 후보 IPM의 유효성은 다음 규칙 중 하나 이상(또는 모두)을 기반으로 추정될 수 있다: 인트라 예측 모드가 지향성이 아니면 유효성은 VALID_NON_DIR, 즉 "유효, 비 지향성(Valid, non-directional)"으로 설정된다. 이웃 블록이 현재 블록의 왼쪽에 있고, 인트라 예측 모드가 HOR_IDX보다 크거나 같으며, 인트라 예측 모드가 VER_IDX - dblStrictThr보다 작으면, 유효성은 VALID_DIR("유효, 지향성(Valid, directional)")으로 설정된다. 이웃 블록이 현재 블록보다 위에 위치되고 인트라 예측 모드가 HOR_IDX + dblStrictThr보다 크고 인트라 예측 모드가 VER_IDX보다 작거나 같으면, 유효성은 VALID_DIR로 설정된다. dblStrictThr은 미리 정의된 임계 값이다. 특정 실시 예에서, 이는 4와 같게 설정될 수 있다. 사전 정의는 표준 정의에 대응할 수 있다. 그러나, 임계 값은 상이한 값을 갖거나 예를 들어 비트스트림으로 구성 가능할 수도 있으며, 또는 인코더와 디코더 모두에서 표준화되거나 그렇지 않으면, 다른 방식으로 알려진 방식에 기반하여 유도 가능하다. 임계 값은 현재 블록의 크기 및/또는 현재 블록에 대해 구성 가능한 인트라 모드의 수에 기반하여 달라질 수 있다.
인트라 예측 모드가 -10(도 13 참조)보다 크고 HOR_IDX보다 작으면, 왼쪽 및 왼쪽 아래 이웃 블록(도 5에 표시된 "L" 및 "BL")에 대해, 유효성은 VALID_DIR로 설정된다. 인트라 예측 모드가 VER_IDX - strictThr 보다 크거나 같고 VER_IDX + strictThr보다 작거나 같으면, 유효성은 STRICTLY_INVALID_DIR로 설정된다. 그렇지 않으면, 유효성이 INVALID_DIR로 설정된다. 무효성(invalidity)은 이러한 IPM이 있는 L 및 BL 블록이 현재 블록을 절단하지 않는 방향으로 예측되어, 정확한 예측으로 이어지지 않을 가능성이 있다는 사실에 대응한다.
인트라 예측 모드가 VER_IDX보다 크고 76보다 작으면, 위 및 오른쪽 위 이웃 블록(도 5에 표시된 "A" 및 "AR")에 대해, 유효성이 VALID_DIR로 설정된다. 인트라 예측 모드가 HOR_IDX - strictThr보다 크거나 같고 HOR_IDX + strictThr보다 작거나 같으면, 유효성이 STRICTLY_INVALID_DIR로 설정된다. 그렇지 않으면, 유효성이 INVALID_DIR로 설정된다.
인트라 예측 모드가 HOR_IDX보다 크고 VER_IDX보다 작으면, 왼쪽 위의 이웃 블록(도 5의 "AL")에 대해 유효성이 VALID_DIR로 설정된다. 인트라 예측 모드가 VDIA_IDX - strictThr보다 크거나 같고 2 + strictThr보다 작거나 같으면, 유효성이 STRICTLY_INVALID_DIR로 설정된다. 그렇지 않으면, 유효성이 INVALID_DIR로 설정된다.
전술한 예는 도 13에 도시된 바와 같이 -10에서 76까지 번호가 매겨진 인트라 예측 모드를 참조함을 유의한다. 그러나, 본 개시는 이에 제한되지 않고, 상이한 수의 모드 및 상이한 번호/라벨링이 있을 수 있다(도 4 및 7 참조). 일반적으로 이웃 블록 위치가 주어지면, VALID_DIR은 이웃 블록 위치와 현재 블록의 중심 사이의 방향에 일정 범위를 더하거나 뺀 값에 대응할 수 있다. 범위는 예를 들어, π/4일 수 있다. 그러나, 범위는 더 작거나 더 클 수 있으며, 예를 들어, π/3 또는 π/5이다. STRICTLY_INVALID_DIR은 현재 블록의 모서리/끝에 위치한 이웃 블록에 대해 수직 또는 수평 방향으로의 좁은 간격(narrow interval)에 해당할 수 있다. 왼쪽(또는 오른쪽) 이웃들의 경우, 수직 방향으로의 좁은 간격은 STRICTLY_INVALID_DIR에 속한다. 상단(또는 하단) 이웃들의 경우, 수평 방향으로의 좁은 간격이 STRICTLY_INVALID_DIR에 속할 수 있다. 여기서 좁은 간격은 strictThr에 대응하며, 약 π/16, π/18 이하일 수 있다. 나머지 모드는 INVALID_DIR로서 식별될 수 있다.
4 단계 S1440: 3 단계에서 결정된 유효성에 따라 인트라 예측 모드를 (FIFO) 버퍼로 푸시(push)(저장)한다. 특정 실시 예에서, 여러 버퍼는 VALID_NON_DIR, 즉 "유효, 비 지향성", VALID_DIR, 즉 "유효, 지향성", INVALID_DIR, 즉 "유효하지 않음(Invalid), 지향성", STRICTLY_INVALID_DIR, 즉 "엄격히 유효하지 않음(Strictly invalid), 지향성"과 같이 식별되어, 제시될(구성될) 수 있다. 1 단계에서 획득된 인트라 예측 모드는 3 단계(S1430)에서의 획득된 인트라 예측 모드에 대해 결정된 것과 동일한 유효성 식별을 갖는 FIFO로 푸시된다. 이 단계에서, VALID_DIR FIFO 및 VALID_NON_DIR FIFO가 최대 MPM 리스트 크기보다 크거나 같은 인트라 예측 모드의 수를 저장하는지를 확인할 수 있다. 이 조건이 충족되면, 유효성 결정 절차가 완료된다. 여기서 "버퍼"라는 용어는 메모리의 임의의 부분, 일반적으로 모드를 저장하기 위한 스토리지일 수 있다는 점에 유의한다. 버퍼는 미리 정의된 크기를 가질 수도 있고 구성 가능한 크기일 수도 있다. FIFO(First-In First-Out)는 단지 예일뿐이다. 일반적으로, 버퍼는 임의의 액세스 전략(access strategy)을 구현할 수 있다.
추가 실시 예에서, 4 단계는 STRICTLY_INVALID_DIR의 유효성을 갖는 FIFO를 사용하지 않을 수 있다. 이전 단계에서 결정된 인트라 예측 모드가 STRICTLY_INVALID_DIR 유효성을 가지면, 어떤 FIFO에도 푸시되지 않고 5 단계가 수행된다. 추가 실시 예 및 변형이 가능한다. 예를 들어, 각각의 예측 방향 세트에 대응하는 더 많거나 적은 버퍼가 있을 수 있다.
그렇지 않으면, 각 후보 인트라 예측 모드(intra prediction mode, IPM)에 대해 이전 단계 S1410 내지 S1440을 반복하는 5 단계가 수행되고, 현재 블록의 모든 후보 IPM이 처리되면 다음 이웃 블록에 대해 단계가 반복된다.
유효성을 결정한 후, 도 15에 따른 단계가 수행된다. 이 예에서, FIFO0의 유효성은 VALID_DIR이다. FIFO1의 유효성은 VALID_NON_DIR이다. FIFO2의 유효성은 INVALID_DIR이다. 다시 말해서, 유효성이 높을수록 버퍼 인덱스가 된다. 이러한 단계의 결과로, MPM 리스트가 FIFO 버퍼로부터 덧붙여진다(populated). FIFO 버퍼에 저장된 인트라 예측 모드의 수가 MPM 리스트의 크기보다 적으면, 이 리스트의 빈 위치가 기본 모드로 채워진다.
특히, 단계 S1510에서, 버퍼의 인덱스 i는 0, 즉 가장 유효한 인트라 예측 모드를 저장하는 버퍼로 초기화된다. 단계 S1520에서, mpm_count도 0으로 초기화된다. 변수 mpm_count는 MPM 리스트의 MPM 엔트리 수에 대응하는 값을 가지며, 범위는 0에서 max_mpm으로 표시된 MPM 리스트의 최대 엔트리 수까지이다. 단계 S1530에서, MPM 리스트가 채워진 현재(즉, i에 의해 주어진 현재 반복에서) 버퍼, FIFOi로부터의 인트라 예측 모드 수가 계산된다. 특히, FIFOi로부터의 num_mpm 모드는 MPM 리스트의 엔트리로 저장된다. 변수 num_mpm는 다음:
num_mpm = min(max_mpm - mpm_count, N)
과 같이 주어진다.
N은 현재 FIFOi의 인트라 예측 모드의 수이다. 다시 말해서, 반복 i에서 모든 FIFOi 엔트리(N) 또는 MPM 리스트에서 여전히 프리(free)인 엔트리(max_mpm - mpm_count)가 MPM 리스트에 저장되며, 둘 중 더 작은 엔트리가 저장된다. 단계 S1540에서, MPM 리스트는 현재 FIFOi의 모드로 채워진다. 특히, 계산된(단계 S1530에서) num_mpm 모드는 FIFOi에서 페치되어 MPM 리스트에 저장된다. MPM 리스트의 현재 길이를 캡처하는 변수인 mpm_count는 입력된 모드의 수에 따라 다음:
mpm_count = mpm_count + num_mpm
과 같이 업데이트된다.
단계 S1550에서, 평가된다(판단됨(judged)):
조건 1: MPM 리스트가 채워지는지 여부l(num_mpm == max_mpm) 및
조건 2: 현재 FIFOi 가 MPM 리스트를 채우는데 사용될 마지막 버퍼인지의 여부
조건 1도 조건 2도 충족되지 않으면(단계 S1550에서 "아니오"), 단계 S1560에서 반복 인덱스 i가 증분되고, 다음 버퍼(다음으로 낮은 유효성을 갖는 버퍼)가 단계 S1530 이상에서 설명한 바와 같이 처리된다.
조건 1 또는 조건 2가 충족되면(단계 S1550에서 "예"), 특히 단계 S1570의 평가에서 조건 1이 충족되면(단계 S1570에서 "예"), MPM 리스트가 가득 찼기 때문에 절차가 종료된다. 한편, 단계 S1570에서 조건 1이 충족되지 않으면(단계 S1570에서 "아니오"), 이는 조건 2가 충족되고, 모드가 MPM 리스트에 저장될 수 있는 추가 버퍼가 없음을 의미한다. 이에 대응하여, 단계 S1580에서, MPM 리스트는 기본 모드로 채워진다. 특히, max_mpm - num_mpm 기본 모드가 MPM 리스트에 삽입된다. 그런 다음 절차가 종료된다. 다시 말해서, 일 실시 예에 따르면, 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 방법이 제공된다. 상기 방법은, 현재 블록에 인접한 이웃 블록의 인트라 예측 모드를 획득하는 단계; 이웃 블록의 인트라 예측 모드가 다른 이웃 블록에 대해 획득되지 않으면, 이 인트라 예측 모드에 대한 유효성을 결정하는 단계; 인트라 예측 모드를 인트라 예측 모드의 유효성에 따라 결정되는 FIFO 버퍼로 푸시하는 단계; 및 MPM 리스트가 최대 개수의 mpm 리스트를 포함하거나 FIFO에 저장된 모든 모드가 MPM 리스트로 페치될 때까지 가장 유효한 FIFO부터 시작하여, FIFO에서 MPM 리스트로 인트라 예측 모드를 페치하는 단계를 포함한다. 일부 구현에서, 상기 방법에서, FIFO0에 대한 유효성은 VALID_DIR이고, FIFO1에 대한 유효성은 VALID_NON_DIR이다.
도 16은 일 실시 예에 따른 예시적인 장치(1600)를 도시한다. 장치(1600)는 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 역할을 한다. 이는 현재 블록에 인접한 제1 이웃 블록의 인트라 예측 모드를 획득하도록 구성된 인트라 모드 결정 유닛(1610)을 포함한다. 이는 예를 들어(현재 블록에 대해) 이전에 처리된 블록의 예측 모드가 저장된 메모리로부터 인트라 예측 모드를 페치하는 것에 의해 수행될 수 있다. 장치(1600)는 제1 이웃 블록의 인트라 예측 모드가 제2 이웃 블록으로부터 획득된 인트라 예측 모드와 상이하면, 인트라 예측 모드에 대한 유효성을 결정하도록 구성된 유효성 결정 유닛(1620)을 더 포함한다. 다시 말해서, 유효성 결정 유닛에서, 이웃 블록의 인트라 예측 모드의 유효성이 결정된다. 위에서 언급한 바와 같이, 유효성은 현재 블록에 대한 이웃 블록의 위치와 관련하여 이웃 블록의 IPM 방향을 기반으로 평가된다. 이웃 블록의 인트라 예측 모드가 유효성 버퍼 중 하나에 이미 포함되어 있다면 유효성을 결정할 필요가 없다. 다시 말해서, 유효성 결정을 수행하기 전에 프루닝 단계가 수행될 수 있으며, 이는 "제1 이웃 블록의 인트라 예측 모드가 제2 이웃 블록에서 획득한 인트라 예측 모드와 상이하면"이라는 조건으로 반영된다. 이 조건에서, 제2 블록은 IPM이 결정된 임의의 블록이다. 이는 MPM이 이미 유효성 버퍼 중 하나에 있는 블록에 IPM이 이미 있는 블록일 수 있다. 그러나, 본 개시는 유효성을 결정하기 전에 이러한 프루닝 단계를 수행하는 것으로 제한되지 않는다. 프루닝 단계는 다르게는, IPM이 적절한 유효성 버퍼에 삽입되기 전에 유효성 결정 후 수행될 수 있거나, 또는 유효성 버퍼(들)로부터 MPM 리스트를 채울 때 수행될 수 있다.
장치는, 인트라 예측 모드의 유효성에 따라 인트라 예측 모드를 여러 유효성 버퍼(예: 장치(1600)의 내부 또는 외부에 있을 수 있는 버퍼 메모리(1690)의 버퍼) 중 대응하는 유효성 버퍼에 저장하도록 구성된 버퍼 액세스 유닛(1630) 및 MPM 리스트가 최대 개수의 예측 모드를 포함하거나 또는 유효성 버퍼에 저장된 모든 예측 모드가 MPM 리스트로 페치될때까지 가장 유효한 버퍼부터 시작하여, 여러 유효성 버퍼로부터 인트라 예측 모드를 MPM 리스트로 페치하도록 구성된 MPM 구성 유닛(1640)을 더 포함한다. 다시 말해서, 위에서 언급된 유효 비 지향성, 엄격하게 유효한 각도(지향성), 유효한 각도(지향성), 유효하지 않음, 엄격히 유효하지 않음, 등과 같이 정의된 여러 유효성 범주가 있을 수 있다. 이러한 범주의 적어도 하나의 서브 세트(하나 이상)에 대해, 각각 유효성 버퍼가 있으며, 예를 들어, 유효 지향성 IPM 및/또는 유효 비 지향성에 대한 제1 버퍼가 있다. MPM 리스트를 구성할 때, 유효성 버퍼로부터의 IPM은 유효성(즉, 각각의 버퍼가 저장하는 모드의 유효성)에 따라 버퍼의 순서대로 MPM 리스트에 저장된다.
위의 장치의 설명은 본 개시를 제한하기 위한 것이 아니라 단지 예시적인 것임을 유의한다. 장치는 하나 이상의 프로세서 또는 다른 처리 하드웨어뿐만 아니라 대응하는 소프트웨어를 포함하는 회로의 일부로서 구현될 수 있다. 일 실시 예에서, 위의 장치는 집적 회로 예를 들어, 칩 상에 내장된다. 집적 회로는 비디오의 인코딩 또는 디코딩과 같은 추가 기능을 수행할 수 있다.
도 17은 본 개시의 실시 예에 따른 비디오 코딩을 위한 예시적인 컴퓨팅 디바이스(1200)의 개략도이다. 비디오 코딩은 전술한 MPM 구성을 사용하는 비디오 인코딩 및/또는 비디오 디코딩일 수 있다. 컴퓨팅 디바이스(1200)는 여기서 설명된 바와 같이 개시된 실시 예를 구현하기에 적합하다. 컴퓨팅 디바이스(1200)는 데이터를 수신하기 위한 진입(ingress) 포트(1220) 및 수신기 유닛(Rx)(1210); 데이터를 처리하기 위한 프로세서, 로직 유닛 또는 중앙 처리 유닛(central processing unit, CPU)(1230); 데이터를 전송하기 위한 송신기 유닛(Tx)(1240) 및 출구(egress) 포트(1250); 데이터를 저장하기 위한 메모리(1260)를 포함한다. 컴퓨팅 디바이스(1200)는 또한 광학 또는 전기 신호의 출력 또는 진입을 위해, 진입 포트(1220), 수신기 유닛(1210), 송신기 유닛(1240) 및 출구 포트(1250)에 결합된 광-전기(optical-to-electrical, OE) 구성 요소 및 전기-광(electrical-to-optical, EO) 구성 요소를 포함할 수 있다. 컴퓨팅 디바이스(1200)는 또한 일부 예에서 무선 송신기 및/또는 수신기를 포함할 수 있다.
프로세서(1230)는 하드웨어 및 소프트웨어에 의해 구현된다. 프로세서(1230)는 하나 이상의 CPU 칩, 코어(예: 멀티 코어 프로세서), 필드 프로그래밍 가능 게이트 어레이(field-programmable gate array, FPGA), 애플리케이션 특정 집적 회로(application-specific integrated circuit, ASIC), 및 디지털 신호 프로세서(digital signal processor, DSP)로 구현될 수 있다. 프로세서(1230)는 진입 포트(1220), 수신기 유닛(1210), 송신기 유닛(1240), 출구 포트(1250) 및 메모리(1260)와 통신한다. 프로세서(1230)는 코딩 모듈(1214)을 포함한다. 코딩 모듈(1214)은 위에서 설명된 개시된 실시 예들을 구현한다. 예를 들어, 코딩 모듈(1214)은 다양한 코딩 작동을 구현, 처리, 준비 또는 제공한다. 따라서, 코딩 모듈(1214)의 포함은 컴퓨팅 디바이스(1200)의 기능에 실질적인 개선을 제공하고, 컴퓨팅 디바이스(1200)의 다른 상태로의 변환에 영향을 미친다. 다르게는, 코딩 모듈(1214)은 메모리(1260)에 저장되고 프로세서(1230)에 의해 실행되는 명령으로서(예를 들어, 비 일시적 매체에 저장된 컴퓨터 프로그램 제품으로서) 구현된다.
메모리(1260)는 하나 이상의 디스크, 테이프 드라이브 및 솔리드 스테이트 드라이브를 포함하고, 오버플로우(overflow) 데이터 저장 디바이스로 사용되어, 프로그램이 실행을 위해 선택될 때 프로그램을 저장하고 그리고 프로그램 실행 중에 읽은 명령 및 데이터를 저장할 수 있다. 메모리(1260)는 휘발성 및/또는 비 휘발성일 수 있으며, ROM(read-only memory), RAM(random access memory), TCAM(ternary content-addressable memory) 및/또는 SRAM(static random-access memory)일 수 있다. 컴퓨팅 디바이스(1200)는 또한 최종 사용자(end user)와 상호 작용하기 위한 입력/출력(input/output, I/O) 디바이스일 수 있다. 예를 들어, 컴퓨팅 디바이스(1200)는 시각적 출력을 위한 모니터와 같은 디스플레이, 오디오 출력을 위한 스피커, 사용자 입력을 위한 키보드/마우스/트랙볼 등을 포함할 수 있다.
본 출원의 일 구현에서, 이웃 블록의 인트라 예측 모드를 획득하는 단계는, 이웃 블록에 적용된 인트라 예측 모드에 대응하는 값을 획득하는 것을 의미하거나, 또는 인트라 예측 모드를 MPM 리스트에 추가하는 단계는, 인트라 예측 모드에 대응하는 값을 MPM 리스트에 추가하는 것을 의미함을 이해할 수 있다.
본 출원의 하나의 구현 형태에서, 현재 블록의 경계상의 참조 샘플 세트의 위치에 따라 현재 블록의 예측된 샘플의 수량 N을 결정하는 단계는, 이웃 블록에 포함된 복수의 샘플을 참조 샘플 세트로 결정하는 단계; 참조 샘플 세트의 위치에 따라 수량 N을 결정하는 단계를 포함한다. 일부 예시적인 구현에서, 참조 샘플 또는 참조 샘플의 세트는, 현재 블록의 크기, 참조 샘플로서 사용 가능한(즉, 화상/슬라이스 내에 있거나 및/또는 인트라 예측에 사용하도록 허용되거나, 이미 처리됨) 이웃 블록의 수 또는 샘플의 크기 중 하나 이상에 의존할 수 있다는 점에 유의한다.
본 출원의 일 구현 형태에서, 현재 블록의 경계상의 참조 샘플 세트의 위치에 따라 현재 블록의 예측된 샘플의 수량 N을 결정하는 단계는, 현재 블록과 이웃 블록 사이의 상대 위치에 따라 현재 블록의 측면(side)을 결정하는 단계; 현재 블록의 측면에 인접한 복수의 샘플을 참조 샘플 세트로 결정하는 단계(예를 들어, 이웃 블록이 현재 예측된 블록의 상단(예: "A" 또는 "AR")에 인접하면, 상단의 사용 가능한(즉, 패딩되지 않은(non-padded)) 참조 샘플은 참조 샘플 세트에 포함된다. 이웃 블록이 현재 예측 블록의 왼쪽(예: "L" 또는 "BL")에 인접하면, 왼쪽의 사용 가능한(패딩되지 않은) 참조 샘플이 참조 샘플 세트에 포함된다. "AL" 이웃 블록의 경우, 사용 가능한 양측의 참조 샘플이 유사한 방식으로 사용됨); 및 참조 샘플 세트의 위치에 따라 수량 N을 결정하는 단계를 포함한다.
본 출원의 하나의 구현 형태에서, 현재 블록의 경계상의 참조 샘플 세트의 위치에 따라 현재 블록의 예측된 샘플의 수량 N을 결정하는 단계는, 이웃 블록의 인트라 예측 모드에 대응하는 값과 현재 블록에 인접한 다른 이웃 블록의 인트라 예측 모드에 대응하는 값 사이의 절대 차이값이 다른 임계 값(예: 제2 임계 값)보다 작으면, 다른 이웃 블록에 포함된 복수의 샘플과 이웃 블록에 포함된 복수의 샘플을 참조 샘플 세트로서 결정하는 단계; 및 참조 샘플 세트의 위치에 따라 수량 N을 결정하는 단계를 포함한다.
본 출원의 일 구현 형태에서, 임계 값(제1 임계 값)은 미리 정의되고, 임계 값(제1 임계 값)의 값은 2, 4, 8 또는 16과 같다.
본 출원의 일 구현 형태에서, 임계 값(제1 임계 값)은 현재 블록의 샘플 수량에 따라 결정된다(예를 들어, 임계 값의 값은 ½, ¼, 1/8 또는 현재 블록의 총 샘플 수의 임의의 다른 분수(fractional part)와 같음). 이는 수량 N이 예를 들어, 측면(블록이 정사각형인 경우) 또는 2개의 측면(블록이 직사각형이지만 정사각형이 아닌 경우)의 크기로 제공된, 블록 크기에 기반하여 결정되는 구현을 포함한다.
본 출원의 하나의 구현 형태에서, 상기 방법은 이웃 블록의 인트라 예측 모드를 MPM 리스트에 추가한 후, MPM 리스트에 포함된 인트라 예측 모드의 수량이 다른 임계 값(예를 들어, 제3 임계 값)보다 작으면, 인트라 예측 모드 세트의 제1 인트라 예측 모드가 MPM 리스트에 포함되는지 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계를 포함하며, 인트라 예측 모드 세트는 평면(planner) 모드(0), DC 모드(1), 수직 모드(VER_IDX), 수평 모드(HOR_IDX), 인트라 모드 2(2), 수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)를 포함한다. 여기서, 도 4를 참조하면, VDIA_IDX는 인덱스 값 66에 대응하고 DIA_IDX는 인덱스 값 34에 대응할 수 있다.
본 출원의 하나의 구현 형태에서, 상기 방법은 N이 임계 값(예를 들어, 제1 임계 값)보다 작으면, 이웃 블록의 인트라 예측 모드가 이 프로세스에서 MPM 리스트에 추가되지 않는 것을 더 포함한다.
본 출원의 하나의 구현 형태에서, 상기 방법은 N이 임계 값(예를 들어, 제1 임계 값)보다 작으면, 이웃 블록의 인트라 예측 모드를 MPM 리스트의 마지막 부분에 추가하는 단계(예를 들어, 3MPM의 경우, 이웃 블록의 인트라 예측 모드가 MPM 리스트의 제3 위치에 추가되고; 6MPM의 경우, 이웃 블록의 인트라 예측 모드가 MPM 리스트의 제5 위치 또는 제6 위치에 추가됨)를 포함한다.
본 출원의 일 구현 형태에서, 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 방법이 제공되며, 상기 방법은, 현재 블록에 인접한 이웃 블록의 인트라 예측 모드를 획득하는 단계; 이웃 블록의 인트라 예측 모드가 MPM 리스트에 포함되지 않고 이웃 블록의 인트라 예측 모드가 지향성(예를 들어, 각도) 인트라 예측 모드이면, 이웃 블록에 따라 현재 블록의 예측된 샘플의 수량이 임계 값보다 크거나 같은지를 판정하는 단계; 현재 블록의 예측된 샘플의 수량이 임계 값 보다 크거나 같으면 이웃 블록의 인트라 예측 모드를 MPM 리스트에 추가하는 단계를 포함한다. 여기서, 수량은 카운트되거나, 추정되거나 그렇지 않으면 결정된, 인트라 예측 모드로 예측하고자 하는 현재 블록의 샘플의 수(양)일 수 있다.
본 출원의 일 구현 형태에서, 상기 방법은, 이웃 블록의 인트라 예측 모드를 MPM 리스트에 추가한 후, MPM 리스트에 포함된 인트라 예측 모드의 수량이 임계 값보다 작으면, 인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지를 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계 - 인트라 예측 모드 세트는 평면 모드(0), DC 모드(1), 수직 모드(VER_IDX), 수평 모드(HOR_IDX), 인트라 모드 2(2), 수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)를 포함함 - 를 더 포함한다.
본 출원의 일 구현 형태에서, 상기에 언급된 방법을 수행하기 위한 처리 회로를 포함하는 인코더가 개시(구성)된다.
본 출원의 일 구현 형태에서, 언급된 방법을 수행하기 위한 처리 회로를 포함하는 디코더가 개시(구성)된다. 처리 회로는 범용 프로세서, DSP와 같은 하나 이상의 프로세서, FPGA와 같은 프로그래밍 가능한 하드웨어 또는 ASIC와 같은 특수 하드웨어 및/또는 임의의 다른 회로일 수 있다. 따라서, 처리 회로의 구성은 하드웨어 설계, 하드웨어 프로그래밍 또는 소프트웨어 프로그래밍의 조합을 포함할 수 있다.
본 출원의 일 구현 형태에서, 언급된 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품(예를 들어, 비 일시적 매체에 저장됨)이 개시된다.
본 출원의 일 구현 형태에서, MPM(Most Probable Mode) 리스트를 구성하기 위한 디코더는, 하나 이상의 프로세서; 및 프로세서에 결합되면서 프로세서에 의해 실행되는 프로그래밍을 저장하는 컴퓨터가 판독 가능한 비 일시적 저장 매체를 포함하고, 상기 프로그래밍은 프로세서에 의해 실행될 때 상기 언급된 방법을 수행하도록 디코더를 구성한다.
본 출원의 일 구현 형태에서, MPM(Most Probable Mode) 리스트를 구성하기 위한 인코더는, 하나 이상의 프로세서; 및 프로세서에 결합되면서 프로세서에 의해 실행되는 프로그래밍을 저장하는 컴퓨터가 판독 가능한 비 일시적 저장 매체를 포함하고, 상기 프로그래밍은 프로세서에 의해 실행될 때 상기 언급된 방법을 수행하도록 인코더를 구성한다.
일 예에서, MPM 리스트에서 현재 예측 블록의 이웃 블록에서 유도된 인트라 예측 모드의 순서는 재구성된 이웃 블록의 샘플에 의해 결정된다. 여기서, 재구성은 예측으로 사용되는 샘플을 획득하기 위해 인코더 또는 디코더에서 재구성하는 것을 의미한다. 재구성은 임의 처리 순서(인코딩, 디코딩)로 수행된다.
일 예에서, MPM 리스트는 다음 단계로 구성된다. 일 예에서, MPM 리스트는 1 단계 이전의 빈(empty) 리스트일 수 있다. 다시 말해서, MPM 리스트는 빈 리스트로 초기화될 수 있다.
1 단계: 현재 예측 블록에 인접한 이웃 블록이 사용 가능한지를 판정한다.
일 예에서, 도 5에서, 블록 AL(왼쪽 위), 블록 A(위), 블록 AR(오른쪽 위), 블록 L(왼쪽) 또는 블록 BL(왼쪽 아래)은 현재 예측 블록에 인접한 이웃 블록이다. 도 5의 현재 코딩 유닛은 현재 블록이라고도 하는 현재 예측 블록을 나타낼 수 있다.
이 단계에서, 일 예에서, 현재 예측 블록에 인접한 모든 이웃 블록이 사용 가능하거나 또는 결정되지 않으며; 또는 다른 예에서, 현재 예측 블록에 인접한 이웃 블록의 일부가 사용 가능한지를 확인하며, 예를 들어, 블록 L이 처음에 사용 가능한지를 판정한 다음, 블록 A가 사용 가능한지를 판정한다. 다른 예에서, 하나의 이웃 블록만이 확인되면, 예를 들어, 처음에 1 단계를 수행할 때 블록 L이 사용 가능한지만 판정한다. 가용성의 결정은 이웃 블록이 존재하는지를 판정하는 것을 포함할 수 있는데, 이는 특정 위치를 갖는 현재 블록에 이웃 블록이 있는지를 의미한다. 가용성 결정은 후보 인트라 모드로 사용될 수 있는 인트라 모드로 이웃 블록이 예측되는지를 판정하는 것을 포함할 수 있다.
2 단계: 사용 가능한 이웃 블록에 대해, 이웃 블록의 인트라 예측 모드가 MPM 리스트에 포함되는지를 판정한다.
일 예에서, 사용 가능한 이웃 블록에 대해, 이웃 블록의 인트라 예측 모드가 획득된다.
일 예에서, 2 단계를 처음 수행하면, 이 단계 이전에 MPM 리스트가 빈 리스트인 경우, 이웃 블록의 인트라 예측 모드가 MPM 리스트에 추가된다.
본 출원의 일 구현에서, 인트라 예측 모드를 MPM 리스트에 추가하는 단계는 인트라 예측 모드에 대응하는 값을 MPM 리스트에 추가하는 것을 의미함을 이해할 수 있다.
다른 예에서, 이웃 블록의 인트라 예측 모드가 MPM 리스트에 포함되어 있으면(예를 들어, 인트라 예측 모드에 대응하는 값이 MPM 리스트에 포함됨), 다음 단계(3 단계 또는 4 단계)를 수행하지 않는다. 사용 가능한 다음 이웃 블록이 있으면, 다음 블록에 대해 이 단계를 반복한다.
다른 예에서, 이웃 블록의 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 3 단계로 이동한다.
일 예에서, 2 단계는 사용 가능한 모든 이웃 블록이 처리되거나 MPM 리스트의 인트라 예측 모드의 수량이 제3 임계 값과 같은 후에 완료된다.
3 단계: 이웃 블록의 인트라 예측 모드가 지향성 인트라 예측 모드(예를 들어, 각도 모드)인지를 판정한다.
일 예에서, 이웃 블록의 인트라 예측 모드가 지향성 인트라 예측 모드인 경우, 4 단계로 이동한다.
다른 예에서, 이웃 블록의 인트라 예측 모드가 지향성 인트라 예측 모드가 아닌 경우, 예를 들어, 이웃 블록의 인트라 예측 모드가 DC 모드이거나 평면 모드인 경우, 이웃 블록의 인트라 예측 모드를 MPM 리스트에 추가한다.
그리고 일 예에서, DC 모드 또는 평면(Planar) 모드가 MPM 리스트에 추가된 후, MPM 리스트의 인트라 예측 모드의 수량이 제3 임계 값보다 작고, 다음 사용 가능한 이웃 블록이 처리되지 않았으면, 2 단계로 이동하여 사용 가능한 다음 이웃 블록을 결정한다. 다른 예에서, MPM 리스트의 인트라 예측 모드의 수량이 제3 임계 값보다 작고, 사용 가능한 이웃 블록이 없으면, 5 단계로 이동한다.
제3 임계 값은 미리 정의될 수 있으며, 제3 임계 값은 양의 정수이다. 일 예에서, 제3 임계 값은 3 또는 6일 수 있다. 여기서, 제3 임계 값은 MPM 리스트 길이에 대응한다. 고정되거나 추가 파라미터에 기반하여 표준에 의해 정의되거나 비트스트림 내에서 시그널링될 수 있다.
MPM 리스트의 인트라 예측 모드 수량이 제3 임계 값과 같으면, MPM 리스트를 구성하는 프로세스가 완료되고 MPM 리스트가 가득 차서 사용될 수 있다.
일 예에서, DC 모드 또는 평면(Planar) 모드가 MPM 리스트의 시작 부분에 추가되거나 또는 DC 모드(값은 1) 또는 평면(Planar) 모드(값은 0)가 MPM 리스트의 제1 부분에 추가된다. 예를 들어, 구성될 MPM 리스트에서 인트라 예측 모드의 수량이 3이고 MPM 리스트에 두개의 인트라 예측 모드가 있다(20, 18). 구체적인 예에서, DC 모드를 MPM 리스트에 추가한 후 MPM 리스트는 (1, 20, 18)이거나 MPM 리스트는 (20, 1, 18)일 수 있다.
4 단계: 이웃 블록의 참조 샘플 세트로부터 획득된 현재 예측 블록의 예측된 샘플의 수량(N)이 제1 임계 값보다 크거나 같은지를 판정한다.
일 예에서, 현재 블록의 경계에 있는 참조 샘플 세트의 위치에 따라 현재 블록의 예측된 샘플 수량 N이 결정된다.
현재 예측 블록의 예측된 샘플의 수량 N과 비교하는 데 사용되는 제1 임계 값은 미리 정의될 수 있으며, 제1 임계 값의 값은 2, 4, 8 또는 16과 같다.
현재 예측 블록의 예측된 샘플 수량 N과 비교하는 데 사용되는 제1 임계 값은 현재 블록의 샘플의 수량에 따라 결정될 수 있다(예를 들어, 제1 임계 값은 ½, ¼, 1/8 또는 현재 블록의 총 샘플 수의 기타 분수 부분과 같음).
일 예에서, 현재 예측 블록의 예측된 샘플 수량 N이 제1 임계 값보다 작으면, 이웃 블록의 인트라 예측 모드를 MPM 리스트의 마지막 부분에 추가한다(예를 들어, 3MPM의 경우, 이웃 블록의 인트라 예측 모드는 MPM 리스트의 제3 위치에 추가되고, 6MPM의 경우 이웃 블록의 인트라 예측 모드는 MPM 리스트의 제5 위치 또는 제6 위치에 추가됨). 이 인트라 예측 모드가 MPM 리스트에 추가된 후, MPM 리스트의 인트라 예측 모드의 수량이 제3 임계 값보다 작고, 다음 사용 가능한 이웃 블록이 있으면 2 단계로 이동하고; MPM 리스트의 인트라 예측 모드의 수량이 제3 임계 값보다 작고 사용 가능한 이웃 블록이 없으면 5 단계로 이동한다. 제3 임계 값은 미리 정의될 수 있으며, 제3 임계 값은 양의 정수이다. 일 예에서, 제3 임계 값은 3 또는 6일 수 있다. MPM 리스트의 인트라 예측 모드 수량이 제3 임계 값과 같으면, MPM 리스트 구성 프로세스가 종료된다.
일 예에서, 현재 예측 블록의 예측된 샘플의 수량 N이 제1 임계 값보다 작으면, 이 프로세스에서 이웃 블록의 인트라 예측 모드가 MPM 리스트에 추가되지 않는다. 사용 가능한 다음 이웃 블록이 없으면 5 단계로 이동하고, 사용 가능한 다음 이웃 블록이 있으면 2 단계로 이동한다.
일 예에서, N이 제1 임계 값 보다 크거나 같으면, 이웃 블록의 인트라 예측 모드를 MPM 리스트에 추가한다. 일 예에서, 이웃 블록의 인트라 예측 모드가 MPM 리스트의 시작 부분에 추가되거나, 이웃 블록의 인트라 예측 모드가 MPM 리스트의 제1 부분에 추가된다. 이 인트라 예측 모드가 MPM 리스트에 추가된 후, MPM 리스트의 인트라 예측 모드의 수량이 제3 임계 값보다 작고 사용 가능한 다음 이웃 블록이 있으면, 2 단계로 이동하고; MPM 리스트의 인트라 예측 모드의 수량이 제3 임계 값보다 작고 사용 가능한 다음 이웃 블록이 없으면 5 단계로 이동한다. 제3 임계 값은 미리 정의될 수 있으며, 제3 임계 값은 양의 정수이다. 일 예에서, 제3 임계 값은 3 또는 6일 수 있다. MPM 리스트의 인트라 예측 모드 수량이 제3 임계 값과 같으면, MPM 리스트 구성 프로세스가 종료된다.
일 예에서, 현재 예측 블록의 경계에 있는 참조 샘플 세트의 위치에 따라 현재 예측 블록의 예측된 샘플의 수량(N)이 획득된다. 일 예에서, 샘플의 설명 예측은 "Versatile Video Coding(Draft 2)"[JVET-K1001]의 "인트라 샘플 예측"에 따라 수행될 수 있다.
일 예에서, 현재 예측 블록의 경계에 있는 참조 샘플 세트의 위치는 다음 예에 따라 획득된다:
예제 1(Example 1): 이웃 블록에 포함된 복수의 샘플이 참조 샘플 세트로 결정된다.
예제 2: 참조 샘플 세트는 선택된 이웃 블록이 인접한 쪽에 속하는 참조 샘플로 정의된다.
일 예에서, 도 9 또는 도 11에 도시된 바와 같이, 선택된 이웃 블록이 예측 블록의 상단 측(예: "A" 또는 "AR")에 인접하면, 상단 측의 사용 가능한(즉, 패딩되지 않은(non-padded)) 참조 샘플이 참조 샘플 세트에 포함된다. 이것은 A, AL 및/또는 AR 블록 및/또는 상단의 현재 블록에 인접한 다른 블록 예를 들어, A와 AL 사이의 블록에 속할 수 있다. 선택된 이웃 블록이 예측된 블록의 왼쪽(예: "L" 또는 "BL")에 인접하면, 왼쪽의 사용 가능한(패딩되지 않은) 참조 샘플이 참조 샘플 세트에 포함된다. "AL" 이웃 블록의 경우, 양측의 사용 가능한 참조 샘플이 유사한 방식으로 사용된다. 참조 샘플은 L, AL 및/또는 BL 블록 및/또는 왼쪽의 현재 블록에 인접한 다른 블록, 예를 들어, L과 AL 사이의 블록에 속할 수 있다. "패딩되지 않은 참조 샘플"이라는 용어는 샘플이 참조 샘플로 인트라 예측에 사용될 수 있는 재구성된 샘플임을 의미한다. 사용 가능하지 않은(Non-available) 참조 샘플은 패딩될 수 있다. 사용 가능하지 않은 참조 샘플은 화상 중 상이한 슬라이스 등의 것일 수 있다.
실시 예 3: 참조 샘플 세트는 참조 샘플 페치 절차에 의해 정의된 페치 절차에 의해 정의된다.
참조 샘플 페치 절차는 주어진 인트라 예측 모드 m에 대한 이웃 샘플 세트를 유도하기 위해 다음 단계를 수행하는 것으로 구성된다(도 12 참조):
단계 1(step 1): 모든 이웃 블록에 대해 반복하고, 반복된 각 이웃 블록 S i 는 인트라 예측 모드 IPM i 를 가지며, 각 반복에 대해 다음 서브 단계를 수행한다:
서브 단계 1: IPM i 가 비 지향성이면, 나머지 서브 단계를 건너 뛰고 다음 반복을 시작한다.
서브 단계 2: | m - IPM i < T |이면, S i 의 참조 샘플을 이웃 샘플 세트에 추가한다. T(제2 임계 값)의 값은 2, 4, 8 또는 16과 같도록 미리 결정될 수 있다. 다른 실시 예에서, T의 값은 MPM 리스트의 최대 크기와 같게 설정된다.
예를 들어, 도 12에서 {A, B, C, D, E, F}로 표시된 단계 1에서 반복된 이웃 블록은 {2, 10, 11, 57, 56, 38}에 대응하는 인트라 예측 모드를 제공한다. 임계 값 T는 4와 같도록 할당된다.
후보 블록 C는 모드 m=11을 제공한다. 조건 | m - IPM i < T |에 따라, 이 후보 모드의 경우, 참조 샘플 세트는 블록 B 및 블록 C의 참조 샘플을 포함한다.
후보 블록 E는 모드 m=56을 제공한다. 조건 | m - IPM i < T |에 따라, 이 후보 모드의 경우, 참조 샘플 세트는 블록 D 및 블록 E의 참조 샘플을 포함한다.
일 예에서, 현재 예측 블록의 예측된 샘플의 수량(N)은 예측된 블록에 대한 이웃 블록 샘플의 효과에 대한 추정치(estimation)이다. 이 추정치는 참조 샘플의 측면 내에서 참조 샘플의 지정된 시작 위치 및 종료 위치에 대해 다음 규칙을 사용하여 획득될 수 있다.
예를 들어, 이웃 블록이 예측된 블록의 위쪽에 위치되면, x 0 및 x 1 은 각각 이웃 블록에 속하는 참조 샘플의 가장 왼쪽(left-most) 위치와 가장 오른쪽(right-most) 위치를 나타낸다. 여기서 그리고 더 나아가, 왼쪽 상단 참조 샘플에 상대적으로 주어진 좌표 x, y는 x=0,y=0로 명시된다. x가 1씩 증가하는 것은 오른쪽으로의 한 샘플 위치 시프트를 의미하고, y가 1씩 증가하는 것은 아래로의 한 샘플 위치 시프트를 의미한다. 지향성 모드 및 위에서 언급된 이웃 블록의 위치에 대해, N의 값은 다음과 같이 추정된다(여기서 H는 예측된 블록의 높이를 나타냄).
- 인트라 예측 모드(예를 들어, 인트라 예측 모드는 확인 중인 이웃 블록에서 획득된 모드)가 VER_IDX와 같으면, N의 값은 (x 1 -x 0 )<<log2(H)와 같게 설정된다.
- 인트라 예측 모드가 VER_IDX보다 크면,
○ x 0 > H 및 x 1 > H이면, N의 값은(x 1 -x 0 )<<log2(H)와 같게 설정된다.
○ x 0 < H 및 x 1 > H이면, N의 값은 (x 1 -H)<<log2(H) +(H-x 0 ) <<log2(H-1) 와 같게 설정된다.
○ 그렇지 않으면, N의 값은 (x 1 -x 0 )<<(log2(H) - log2(x 1 )-1)과 같게 설정된다.
- 그렇지 않으면, 인트라 예측 모드 인덱스가 HOR_IDX보다 크면,
○ x 0 > H 및 x 1 > H이면, N의 값은 (x 1 -x 0 )<<(log2(H) - log2(x 1 )-1)와 같게 설정된다.
○ x 0 < H 및 x 1 > H이면, N의 값이 (x 1 -H)<<log2(H) +(H-x 0 ) <<log2(H-1)와 같게 설정된다.
○ 그렇지 않으면, N의 값은 (x 1 -x 0 )<<log2(H)와 같게 설정된다.
- 그렇지 않으면, N의 값이 0으로 설정된다.
또 다른 예에서, 대칭적으로, 이웃 블록이 예측 블록의 왼쪽에 위치되면, x 0 및 x 1 은 각각 이웃 블록에 속하는 참조 샘플의 가장 왼쪽 위치와 가장 오른쪽 위치를 나타낸다. 여기서 그리고 더 나아가, 왼쪽 상단 참조 샘플에 상대적으로 주어진 좌표 x,y는 x=0,y=0으로 명시된다. x가 1씩 증가하는 것은 오른쪽으로의 한 샘플 위치 시프트를 의미하고, y가 1씩 증가하는 것은 아래로의 한 샘플 위치 시프트를 의미한다. 지향성 모드 및 위에서 언급된 이웃 블록의 위치에 대해, N의 값은 다음과 같이 추정된다(여기서 W는 예측 블록의 너비를 나타냄).
- 인트라 예측 모드가 VER_IDX와 같으면, N의 값은 (y 1 -y 0 )<<log2(W)와 같게 설정된다.
- 인트라 예측 모드가 VER_IDX보다 크면,
○ y 0 > W 및 y 1 > W이면, N의 값은 (y 1 -y 0 )<<log2(W)와 같게 설정된다.
○ y 0 < W 및 y 1 > W이면, N의 값은 (y 1 -W)<<log2(W) +(W-y 0 ) <<log2(W-1) 와 같게 설정된다.
○ 그렇지 않으면, N의 값은 (y 1 -y 0 )<<(log2(W) - log2(y 1 )-1)와 같게 설정된다.
- 그렇지 않고, 인트라 예측 모드 인덱스가 HOR_IDX보다 크면,
○ x 0 > W 및 x 1 > W이면, N의 값은 (y 1 -y 0 )<<(log2(W) - log2(y 1 )-1)와 같게 설정된다.
○ x 0 < W 및 x 1 > W 이면, N의 값은 (y 1 -W)<<log2(W) +(W-y 0 ) <<log2(W-1)와 같게 설정된다.
○ 그렇지 않으면, N의 값은 (y 1 -y 0 )<<log2(W)와 같게 설정된다.
- 그렇지 않으면, N의 값이 0으로 설정된다.
분수 임계 값이 사용되면, 임계값 T의 값은 블록 크기에 상대적으로 정의된다. 예를 들어, 분수 임계 값이 ½와 같게 설정되면, T의 값은 (log2(W)+ log2(H)))>>1로 설정된다. 분수 임계 값이 ¼와 같게 설정되면, T의 값은 (log2(W)+ log2(H)))>>2로 설정된다. 분수 임계 값이 1/8와 같게 설정되면, T의 값은 (log2(W)+ log2(H)))>>3으로 설정된다. 임계 값과의 비교는 위에서 설명한 임계 값 수정을 사용하여 고정 소수점 연산에서 수행될 수 있다.
그러나, N을 획득하기 위한 상기 접근법은 단지 예시 일뿐임을 유의한다. 위에서 언급된 계산은 실제로 수행할 필요가 없다: 각 인트라 예측 모드 값(인덱스) 또는 여러 범위의 IPM 인덱스에 대해, 룩업 테이블에 추정된 수량 N이 나열될(list) 수 있다. 그 다음, N의 결정은 각각의 IPM에 기반하여 이웃 블록 A 내지 F 각각에 대한 N의 값을 찾는 것을 포함할 수 있다.
더욱이, 일부 실시 예에서, 수량 N(결정된/추정된 방법에 관계 없이)은 각각의 IPM으로 예측을 위한 참조 픽셀을 제공하는 이웃 블록의 가용성을 고려하면서 추정될 수 있다. 예를 들어, 도 12를 볼 때, 블록 B가 사용 가능하지 않으면, 현재 블록의 예측을 위한 블록 A의 IPM도 블록 B의 참조 샘플을 사용하기 때문에, 블록 A의 IPM에 대한 수량 N이 표로 작성되거나 그렇지 않으면, 추정된 N에 대해 감소될 수 있다. 감소는 사용 가능하지 않은 블록에 있는 참조 픽셀의 수에 따라 달라질 수 있다.
5 단계(step five): 인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지를 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가한다.
일 예에서, 인트라 예측 모드 세트는 평면 모드(0), DC 모드(1), 수직 모드(VER_IDX), 수평 모드(HOR_IDX), 인트라 모드 2(2), 수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)를 포함한다. 인트라 예측 모드는 MPM 리스트의 인트라 예측 모드의 수량이 제3 임계 값과 같을 때까지 순서대로 MPM 리스트에 추가된다.
인트라 예측 모드 세트는 다른 예들에 개시된 다른 인트라 예측 모드를 포함할 수 있다.
다른 예에서, MPM 리스트의 이웃 블록으로부터 유도된 인트라 예측 모드의 순서는 예측된 신호에 대한 재구성된 이웃 블록의 샘플의 영향에 의해 결정된다.
예시적인 실시 예에서, MPM 리스트는 도 5에 도시된 바와 같이 공간 이웃 블록으로부터 구성된다. 모드가 MPM에 포함되어야 하는지와 이 리스트 내 삽입된 모드의 위치에 대한 결정은, 인트라 예측 모드와 후보 인트라 예측 모드를 제공하는 공간적 이웃 블록의 위치의 조합에 의해 영향을 받는다. 그러나, 본 개시는 특정 이웃 블록에 제한되지 않는다. MPM은 리스트를 구성할 때 동일한 방식으로 동작할 수 있도록 블록을 고려하는 순서가 인코더와 디코더에 알려져 있는 한, 임의의 이웃 블록 예를 들어, 또한 블록 AL과 L 또는 AL과 R 사이에 있는 블록에 기반하여 구성될 수 있다. 더욱이, 이러한 예에서 상단 블록 및 왼쪽 블록에 대한 참조는 왼쪽에서 오른쪽으로 그리고 상단에서 하단으로 블록의 처리 순서를 반영한다는 점에 유의한다. 화상/슬라이스/타일(tile)에서 블록의 상이한 처리(인코딩, 디코딩) 순서로, 고려되는 이웃 블록은 물론, 당업자에게 명백한 바와 같이 예측을 위한 사용 가능한 참조 샘플이 변경될 수 있다.
본 실시 예에서, 재구성된 이웃 블록의 샘플이 예측 신호에 미치는 영향을 추정하고, 추정 결과를 사용하여 이웃 블록에 속하는 후보 모드에 대한 MPM 리스트 위치를 결정하는 것이 제안된다.
일부 경우에(도 8 참조), 인트라 예측 모드가 이 블록에서 추론되면 이웃 블록에 속하는 참조 샘플이 예측 신호에 영향을 주지 않을 수 있다. 이러한 종류의 MPM 후보 인트라 예측 모드의 경우, 이웃 블록을 확인할 때 이러한 모드를 고려하지 않거나, 또는 MPM 리스트를 구성할 때 이러한 인트라 예측 모드의 우선 순위를 낮추는 즉, 더 긴 코드 단어로 이들을 시그널링하는 것이 제안된다.
다른 예에서, 블록의 참조 샘플이 스캐닝 순서에서 사용 가능하지 않은 경우가 발생할 수 있다.
이 실시 예에서, MPM 리스트 처리에 대한 유사한 수정이, 참조 샘플의 패딩된 값을 제공하는 블록으로부터 추론되는 인트라 예측 모드에 적용된다. 일부 예시적인 실시 예에서, 패딩된 값은 N에 영향을 주지 않으며, N의 수량으로 카운트되지 않는다.
도 9에서 "AR" 후보는 예측 블록에 대한 예측 신호를 생성할 때 아직 재구성되지 않는다. 따라서, 이 공간 후보 블록으로부터의 인트라 예측 모드는 건너 뛰거나 낮은 우선 순위로 MPM에 놓일 수 있다.
이 실시 예는 쿼드 트리(quad-tree, QT, 도 9 참조), 쿼드 트리 및 바이너리 트리(quad-tree and binary-tree, QTBT, 도 11 참조) 및 다중 트리(multiple-tree, MTT) 파티셔닝(partitioning) 유형을 포함하지만 이에 제한되지 않는 상이한 파티셔닝 트리와 조합하여 적용할 수 있다.
일 예에서, 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 방법은,
현재 블록에 인접한 제1 이웃 블록의 사용 가능한지를 판정하는 단계,
제1 이웃 블록이 사용 가능하지 않으면, 현재 블록에 인접한 다음 이웃 블록을 제1 이웃 블록으로 사용하고 위의 단계를 반복하는 단계;
제1 이웃 블록이 사용 가능하면, 제1 이웃 블록의 인트라 예측 모드가 MPM 리스트에 포함되는지를 판정하는 단계;
제1 이웃 블록의 인트라 예측 모드가 MPM 리스트에 포함되면, 현재 블록에 인접한 다음 이웃 블록을 제1 이웃 블록으로 사용하고 위의 단계를 반복하는 단계;
제1 이웃 블록의 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 이웃 블록의 인트라 예측 모드가 방향 예측 모드인지를 판정하는 단계;
제1 이웃 블록의 인트라 예측 모드가 방향 예측 모드이면, 제1 이웃 블록에 따라, 현재 블록의 예측된 샘플의 수량이 임계 값보다 크거나 같은지를 판정하는 단계;
현재 블록의 예측된 샘플의 수량이 임계 값보다 크거나 같으면, 제1 이웃 블록의 인트라 예측 모드를 MPM 리스트에 추가하는 단계;
MPM 리스트에 포함된 인트라 예측 모드의 수량이 임계 값보다 작은지를 판정하는 단계,
MPM 리스트에 포함된 인트라 예측 모드의 수량이 임계 값보다 작으면, 현재 블록에 인접한 다음 이웃 블록을 제1 이웃 블록으로 사용하고, 위의 단계를 반복하는 단계를 포함한다.
본 개시의 한 측면에서, MPM(Most Probable Mode) 리스트를 구성하는 방법이 개시되며, 상기 방법은,
현재 코딩 블록의 왼쪽 블록이 사용 가능한지를 판정하고, 현재 코딩 블록의 왼쪽 블록이 사용 가능하면, 왼쪽 블록의 인트라 예측 모드를 MPM 리스트에 추가하는 단계;
현재 코딩 블록의 위 블록이 사용 가능한지를 판정하고, 현재 코딩 블록의 위 블록이 사용 가능하면, 위 블록의 인트라 예측 모드를 MPM 리스트에 추가하는 단계;
평면 모드가 MPM 리스트에 포함되지 않으면, 평면 모드를 MPM 리스트에 추가하는 단계;
DC 모드가 MPM 리스트에 포함되지 않으면, DC 모드를 MPM 리스트에 추가하는 단계를 포함한다.
본 출원의 일 구현 형태에서, 현재 코딩 블록의 위 블록이 사용 가능하고 위 블록의 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 위 블록의 인트라 예측 모드를 MPM 리스트에 추가한다.
본 출원의 일 구현 형태에서, 현재 코딩 블록의 위 블록이 사용 가능하고 위 블록의 인트라 예측 모드가 MPM 리스트에 포함되면, "추가"가 수행되거나 "추가" 프로세스의 결과가 MPM 리스트를 변경하지 않는다고 할 수 있다.
본 출원의 일 구현 형태에서, 왼쪽 블록의 예측 모드가 인트라 예측 모드가 아니면, 현재 코딩 블록의 왼쪽 블록은 사용 가능하지 않다.
본 출원의 일 구현 형태에서, 현재 코딩 블록이 프레임의 가장 왼쪽에 위치한 코딩 블록인 경우, 현재 코딩 블록의 왼쪽 블록은 사용 가능하지 않다.
본 출원의 일 구현 형태에서, 병렬 처리가 지원되고 현재 코딩 블록은 타일의 가장 왼쪽에 위치한 코딩 블록이며, 현재 코딩 블록의 왼쪽 블록은 사용 가능하지 않다.
본 출원의 일 구현 형태에서, 병렬 처리가 지원되지 않고 현재 코딩 블록은 타일의 가장 왼쪽에 위치하지만 프레임의 가장 왼쪽에 위치하지 않은 코딩 블록이며, 현재 코딩 블록의 왼쪽 블록은 사용가능하지 않다.
본 출원의 일 구현 형태에서, 병렬 처리가 지원되고 현재 코딩 블록은 슬라이스의 가장 왼쪽에 위치한 코딩 블록이며, 현재 코딩 블록의 왼쪽 블록은 사용 가능하지 않다.
본 출원의 일 구현 형태에서, 병렬 처리는 지원되지 않으며 현재 코딩 블록은 슬라이스의 가장 왼쪽에 위치하지만 프레임의 가장 왼쪽에 위치하지 않은 코딩 블록이고, 현재 코딩 블록의 왼쪽 블록은 사용 가능하다.
본 출원의 일 구현 형태에서, 위 블록의 예측 모드가 인트라 예측 모드가 아니면, 현재 코딩 블록의 위 블록은 사용가능하지 않다.
본 출원의 일 구현 형태에서, 현재 코딩 블록이 프레임의 최상단(top-most)에 위치한 코딩 블록인 경우, 현재 코딩 블록의 위 블록은 사용 가능하지 않다.
본 출원의 일 구현 형태에서, 병렬 처리가 지원되고 현재 코딩 블록은 타일의 최상단에 위치한 코딩 블록이고, 현재 코딩 블록의 위 블록은 사용 가능하지 않다.
본 출원의 일 구현 형태에서, 병렬 처리는 지원되지 않으며 현재 코딩 블록은 타일의 최상단에 위치하지만 프레임의 최상단에 위치하지 않는 코딩 블록이며, 현재 코딩 블록의 위 블록은 사용 가능하다.
본 출원의 일 구현 형태에서, 병렬 처리가 지원되고 현재 코딩 블록은 슬라이스의 최상단에 위치한 코딩 블록이고, 현재 코딩 블록의 위 블록은 사용 가능하지 않다.
본 출원의 일 구현 형태에서, 병렬 처리는 지원되지 않으며 현재 코딩 블록은 슬라이스의 최상단에 위치하지만 프레임의 최상단에는 위치하지 않는 코딩 블록이고, 현재 코딩 블록의 위 블록은 사용 가능하다.
본 출원의 일 구현 형태에서, 라인 버퍼 크기가 제한되고 현재 코딩 블록이 현재 CTU의 최상단에 위치한 코딩 블록인 경우, 현재 코딩 블록의 위 블록은 사용 가능하지 않다.
본 출원의 일 구현 형태에서, 현재 코딩 블록이 프레임의 가장 왼쪽에 위치하지 않는 코딩 블록인 경우, 현재 코딩 블록의 왼쪽 블록은 사용 가능하다.
본 출원의 일 구현 형태에서, 현재 코딩 블록이 프레임의 최상단에 위치하지 않는 코딩 블록인 경우, 현재 코딩 블록의 위 블록은 사용 가능하다.
본 출원의 하나의 구현 형태에서, 상기 방법은 MPM 리스트에서의 인트라 예측 모드의 수량이 임계 값보다 작으면, 인트라 예측 모드 세트의 제1 인트라 예측 모드가 MPM 리스트에 포함되는지를 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계 - 인트라 예측 모드 세트는 수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수평 모드(HOR_IDX), 인트라 모드 2(2), 수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)를 포함함 - 를 더 포함한다.
본 출원의 일 구현 형태에서, VER_IDX에 대응하는 값은 50이고; HOR_IDX에 대응하는 값은 18이며; VDIA_IDX에 대응하는 값은 66이고, 이 값은 각도 모드에 대응하는 값 중 가장 큰 값일 수 있으며, 인트라 모드 2에 대응하는 값 2는 각도 모드에 대응하는 값 중 가장 작은 값일 수 있고; DIA_IDX에 대응하는 값은 34이다.
본 출원의 일 구현 형태에서, MPM 리스트 내의 인트라 예측 모드의 수량이 임계 값보다 작으면, 인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지를 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하며, 여기서 인트라 예측 모드 세트는 수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수평 모드(HOR_IDX), 인트라 모드 2(2), 수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)를 포함한다.
본 출원의 일 구현 형태에서, 상기 방법은, MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작으면, 인트라 예측 모드가 MPM 리스트에 포함되지 않은 경우, 예측 모드의 수량이 임계 값과 같을 때까지, 언급된 순서에 따라, 수직 모드(VER_IDX), 수평 모드(HOR_IDX), 인트라 모드 2(2), 수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)를 포함하는 인트라 예측 모드 세트의 인트라 예측 모드를 MPM 리스트에 반복적으로 추가하는 단계를 더 포함한다. 여기서 임계 값은 미리 정의된 MPM 리스트 길이에 대응한다.
본 출원의 일 구현 형태에서, 상기 방법은,
현재 코딩 블록의 왼쪽 블록이 사용 가능하지 않고, MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작으면,
인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계 - 인트라 예측 모드 세트는 수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수직 대각선 모드(VDIA_IDX), 대각선 모드(DIA_IDX) 또는 인트라 모드 2(2)를 포함함 - 를 더 포함한다.
본 출원의 일 구현 형태에서, 상기 방법은,
MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작으면,
인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계 - 인트라 예측 모드 세트는 수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수평 모드(HOR_IDX), 오프셋 -4를 갖는 VER_IDX에 대응하는 인트라 예측 모드, 또는 오프셋 4를 갖는 VER_IDX에 대응하는 인트라 예측 모드를 포함함 - 를 더 포함한다.
본 출원의 일 구현 형태에서, 오프셋 -4를 갖는 VER_IDX에 대응하는 인트라 예측 모드는 VER_IDX에 대응하는 값을 사용하여, 오프셋 -4를 추가하고 대응하는 인트라 예측 모드의 값을 획득하는 것이며, 예를 들어, VER_IDX의 값은 50이므로, 오프셋 -4를 갖는 VER_IDX에 대응하는 인트라 예측 모드는 인트라 예측 모드 46이며, 오프셋 4를 갖는 VER_IDX에 대응하는 인트라 예측 모드는 인트라 예측 모드 54이다. 오프셋을 가지는 다른 예제는 이 예제와 유사한 프로세스를 가지고 있다.
-1 또는 +1 또는 다른 오프셋 값을 수행할 때, 예를 들어, 인트라 모드(2)의 값이 2(각도 모드에 대응하는 값에서 가장 작은 값)이기 때문에 랩 업(wrap up) 및 랩 다운(wrap down) 작동을 포함할 수 있으며, 그 다음에 인트라 모드(2)-1은 66(랩 업 케이스)이 되거나, 또는 VDIA_IDX의 값이 66(각 모드에 대응하는 값에서 가장 큰 값)이므로, VDIA_IDX+1은 2(랩 다운 케이스)가 된다.
본 출원의 일 구현 형태에서, 상기 방법은,
MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작으면,
인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계 - 인트라 예측 모드 세트는 수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수평 모드(HOR_IDX), 오프셋 4를 갖는 VER_IDX에 대응하는 인트라 예측 모드 또는 오프셋 -4를 갖는 VER_IDX에 대응하는 인트라 예측 모드를 포함함 - 를 더 포함한다.
본 출원의 일 구현 형태에서, 상기 방법은,
현재 코딩 블록의 왼쪽 블록이 사용 가능하지 않고 MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작으면,
인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계를 더 포함하고,
인트라 예측 모드 세트는, 다음 인트라 예측 모드 세트:
수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수직 대각선 모드(VDIA_IDX), 오프셋 -1을 갖는 VER_IDX에 대응하는 인트라 예측 모드, 및 오프셋 +1을 갖는 VER_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수직 대각선 모드(VDIA_IDX), 오프셋 -4를 갖는 VER_IDX에 대응하는 인트라 예측 모드, 및 오프셋 4를 갖는 VER_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수직 대각선 모드(VDIA_IDX), 오프셋 -4를 갖는 VDIA_IDX에 대응하는 인트라 예측 모드, 및 오프셋 -1을 갖는 VER_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수직 대각선 모드(VDIA_IDX), 오프셋 -4를 갖는 VDIA_IDX에 대응하는 인트라 예측 모드, 및 오프셋 +1을 갖는 VER_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수직 대각선 모드(VDIA_IDX), 오프셋 -1을 갖는 VDIA_IDX에 대응하는 인트라 예측 모드, 및 오프셋 -1을 갖는 VER_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수직 대각선 모드(VDIA_IDX), 오프셋 -1을 갖는 VDIA_IDX에 대응하는 인트라 예측 모드, 및 오프셋 +1을 갖는 VER_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수직 대각선 모드(VDIA_IDX), 오프셋 -1을 갖는 VER_IDX에 대응하는 인트라 예측 모드, 및 오프셋 -4를 갖는 VDIA_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수직 대각선 모드(VDIA_IDX), 오프셋 1을 갖는 VER_IDX에 대응하는 인트라 예측 모드, 및 오프셋 -4를 갖는 VDIA_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수직 대각선 모드(VDIA_IDX), 오프셋 -1을 갖는 VER_IDX에 대응하는 인트라 예측 모드, 및 오프셋 -1을 갖는 VDIA_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수직 대각선 모드(VDIA_IDX), 오프셋 1을 갖는 VER_IDX에 대응하는 인트라 예측 모드, 및 오프셋 -1을 갖는 VDIA_IDX에 대응하는 인트라 예측 모드 중 하나를 포함한다.
본 출원의 일 구현 형태에서, 상기 방법은,
현재 코딩 블록의 왼쪽 블록이 사용 가능하지 않고 MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작으면,
인트라 예측 모드가 MPM 리스트에 포함되지 않은 경우 예측 모드의 수량이 임계 값과 같을 때까지 전술한 순서에 따라 일련의 인트라 예측 모드의 인트라 예측 모드를 MPM 리스트에 반복적으로 추가하는 단계를 더 포함하며,
인트라 예측 모드 세트는 다음의 인트라 예측 모드 세트:
수직 모드(VER_IDX), 수직 대각선 모드(VDIA_IDX), 오프셋 -1을 갖는 VER_IDX에 대응하는 인트라 예측 모드 및 오프셋 1을 갖는 VER_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX), 수직 대각선 모드(VDIA_IDX), 오프셋 -4를 갖는 VER_IDX에 대응하는 인트라 예측 모드, 및 오프셋 4를 갖는 VER_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX), 수직 대각선 모드(VDIA_IDX), 오프셋 -4를 갖는 VDIA_IDX에 대응하는 인트라 예측 모드, 및 오프셋 -1을 갖는 VER_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX), 수직 대각선 모드(VDIA_IDX), 오프셋 -4를 갖는 VDIA_IDX에 대응하는 인트라 예측 모드, 및 오프셋 +1을 갖는 VER_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX), 수직 대각선 모드(VDIA_IDX), 오프셋 -1을 갖는 VDIA_IDX에 대응하는 인트라 예측 모드, 및 오프셋 -1을 갖는 VER_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX), 수직 대각선 모드(VDIA_IDX), 오프셋 -1을 갖는 VDIA_IDX에 대응하는 인트라 예측 모드, 및 오프셋 1을 갖는 VER_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX), 수직 대각선 모드(VDIA_IDX), 오프셋 -1을 갖는 VER_IDX에 대응하는 인트라 예측 모드, 및 오프셋 -4를 갖는 VDIA_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX), 수직 대각선 모드(VDIA_IDX), 오프셋 1을 갖는 VER_IDX에 대응하는 인트라 예측 모드, 및 오프셋 -4를 갖는 VDIA_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX), 수직 대각선 모드(VDIA_IDX), 오프셋 -1를 갖는 VER_IDX에 대응하는 인트라 예측 모드, 및 오프셋 -1을 갖는 VDIA_IDX에 대응하는 인트라 예측 모드; 또는
수직 모드(VER_IDX), 수직 대각선 모드(VDIA_IDX), 오프셋 1을 갖는 VER_IDX에 대응하는 인트라 예측 모드, 및 오프셋 -1을 갖는 VDIA_IDX에 대응하는 인트라 예측 모드 중 하나를 포함한다.
본 출원의 일 구현 형태에서, 상기 방법은,
MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작고 현재 코딩 블록의 위 블록은 사용 가능하지 않으면,
인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계 - 인트라 예측 모드 세트는 수평 모드(HOR_IDX)(제1 인트라 예측 모드로서), 인트라 모드 2(2), 대각선 모드(DIA_IDX) 또는 수직 대각선 모드(VDIA_IDX)를 포함함 - 를 더 포함한다.
본 출원의 일 구현 형태에서, 상기 방법은,
MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작고, 현재 코딩 블록의 왼쪽 블록이 사용 가능하고, 현재 코딩 블록의 위 블록이 사용 가능하면,
인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계 - 인트라 예측 모드 세트는 수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수평 모드(HOR_IDX), 인트라 모드 2(2), 수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)를 포함함 - 를 더 포함한다.
본 출원의 일 구현 형태에서, 상기 방법은,
MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작고, 현재 코딩 블록의 위 블록이 사용 가능하지 않으면,
인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계 - 인트라 예측 모드 세트는 수평 모드(HOR_IDX)(제1 인트라 예측 모드로서), 인트라 모드 2(2), 대각선 모드(DIA_IDX) 또는 수직 대각선 모드(VDIA_IDX)를 포함함 - 를 더 포함한다.
본 출원의 일 구현 형태에서, 상기 방법은,
MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작고, 현재 코딩 블록의 왼쪽 블록이 사용 가능하고, 현재 코딩 블록의 위 블록이 사용 가능하면,
인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계 - 인트라 예측 모드 세트는 수직 모드(VER_IDX)(제1 인트라 예측 모드로서), 수평 모드(HOR_IDX), 오프셋 -4를 갖는 VER_IDX에 대응하는 인트라 예측 모드 또는 오프셋 4를 갖는 VER_IDX에 대응하는 인트라 예측 모드를 포함함 - 를 더 포함한다.
본 출원의 일 구현 형태에서, 상기 방법은,
현재 코딩 블록의 위 블록이 사용 가능하지 않고 MPM 리스트에서 인트라 예측 모드의 수량이 임계 값보다 작으면,
인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계를 더 포함하고,
인트라 예측 모드 세트는 다음 인트라 예측 모드 세트:
수평 모드(HOR_IDX)(제1 인트라 예측 모드로서), 인트라 모드 2(2), 오프셋 -1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드, 및 오프셋 1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX)(제1 인트라 예측 모드로서), 인트라 모드 2(2), 오프셋 -4를 갖는 HOR_IDX에 대응하는 인트라 예측 모드, 및 오프셋 4를 추가하는 HOR_IDX(HOR_IDX add an offset 4); 또는
수평 모드(HOR_IDX)(제1 인트라 예측 모드로서), 인트라 모드 2(2), 오프셋 4를 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드, 및 오프셋 -1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX)(제1 인트라 예측 모드로서), 인트라 모드 2(2), 오프셋 4를 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드, 및 오프셋 1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX)(제1 인트라 예측 모드로서), 인트라 모드 2(2), 오프셋 1를 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드, 및 오프셋 -1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX)(제1 인트라 예측 모드로서), 인트라 모드 2(2), 오프셋 1을 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드, 및 오프셋 1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX)(제1 인트라 예측 모드로서), 인트라 모드 2(2), 오프셋 -1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드, 및 오프셋 4를 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX)(제1 인트라 예측 모드로서), 인트라 모드 2(2), 오프셋 1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드, 및 오프셋 4를 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX)(제1 인트라 예측 모드로서), 인트라 모드 2(2), 오프셋 -1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드, 및 오프셋 1을 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX)(제1 인트라 예측 모드로서), 인트라 모드 2(2), 오프셋 1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드, 및 오프셋 1을 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드 중 하나를 포함한다.
본 출원의 일 구현 형태에서, 상기 방법은,
현재 코딩 블록의 위 블록이 사용 가능하지 않고 MPM 리스트에서 인트라 예측 모드의 수량이 임계 값보다 작으면,
인트라 예측 모드가 MPM 리스트에 포함되지 않는 경우, 예측 모드의 수량이 임계 값과 같을 때까지 전술한 순서에 따라 일련의 인트라 예측 모드의 인트라 예측 모드를 MPM 리스트에 반복적으로 추가하는 단계를 더 포함하고,
인트라 예측 모드 세트는 다음 인트라 예측 모드 세트:
수평 모드(HOR_IDX), 인트라 모드 2(2), 오프셋 -1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드, 및 오프셋 1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX), 인트라 모드 2(2), 오프셋 -4를 갖는 HOR_IDX에 대응하는 인트라 예측 모드, 및 오프셋 4를 추가하는 HOR_IDX; 또는
수평 모드(HOR_IDX), 인트라 모드 2(2), 오프셋 4를 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드, 및 오프셋 -1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX), 인트라 모드 2(2), 오프셋 4를 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드, 및 오프셋 1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX), 인트라 모드 2(2), 오프셋 1을 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드, 및 오프셋 -1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX), 인트라 모드 2(2), 오프셋 1을 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드, 및 오프셋 1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX), 인트라 모드 2(2), 오프셋 -1를 갖는 HOR_IDX에 대응하는 인트라 예측 모드, 및 오프셋 4를 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX), 인트라 모드 2(2), 오프셋 1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드, 오프셋 4를 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX), 인트라 모드 2(2), 오프셋 -1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드, 및 오프셋 1을 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드; 또는
수평 모드(HOR_IDX), 인트라 모드 2(2), 오프셋 1을 갖는 HOR_IDX에 대응하는 인트라 예측 모드, 및 오프셋 1을 갖는 인트라 모드 2(2)에 대응하는 인트라 예측 모드 중 하나를 포함한다.
본 출원의 하나의 구현 형태에서, 상기 방법은, MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작으면, 인트라 예측 모드가 MPM 리스트에 포함되지 않은 경우 예측 모드의 수량이 임계 값과 같을 때까지, 전술한 순서에 따라 수직 모드(VER_IDX), 수평 모드(HOR_IDX), 인트라 모드 2(2), 수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)를 포함하는 인트라 예측 모드 세트의 인트라 예측 모드를 MPM 리스트에 반복적으로 추가하는 단계를 더 포함한다.
본 출원의 일 구현 형태에서, 상기 방법은 현재 코딩 블록의 왼쪽 블록이 사용 가능하지 않고 MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작으면,
인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계 - 인트라 예측 모드 세트는 수직 모드(VER_IDX), 수직 대각선 모드(VDIA_IDX), 대각선 모드(DIA_IDX) 또는 인트라 모드 2(2)를 포함함 - 를 더 포함한다.
본 출원의 일 구현 형태에서, 인트라 예측 모드를 MPM 리스트에 추가하는 것은 인트라 예측 모드에 대응하는 값을 MPM 리스트에 추가하는 것임을 이해할 수 있다.
본 출원의 일 구현 형태에서, 임계 값은 6이다.
본 출원의 한 측면에서, 인코더는 상기 방법을 수행하기 위한 처리 회로를 포함한다.
본 출원의 일 측면에서, 디코더는 상기 방법을 수행하기 위한 처리 회로를 포함한다.
본 출원의 한 측면에서, 컴퓨터 프로그램 제품은 상기 방법을 수행하기 위한 프로그램 코드를 포함한다.
본 출원의 한 측면에서, MPM(Most Probable Mode) 리스트를 구성하기 위한 디코더는: 하나 이상의 프로세서; 및 프로세서에 결합되면서 또한 프로세서에 의한 실행을 위한 프로그래밍을 저장하는 컴퓨터가 판독 가능한 비 일시적 저장 매체를 포함하고, 프로그래밍은 프로세서에 의해 실행될 때 상기 방법을 수행하도록 디코더를 구성한다.
본 출원의 한 측면에서, MPM(Most Probable Mode) 리스트를 구성하기 위한 인코더는: 하나 이상의 프로세서; 및 프로세서에 결합되고 프로세서에 의해 실행되는 프로그래밍을 저장하는 컴퓨터가 판독 가능한 비 일시적 저장 매체를 포함하고, 프로그래밍은 프로세서에 의해 실행될 때 상기 방법을 수행하도록 인코더를 구성한다.
일 예에서,
1 단계: 현재 코딩 블록의 왼쪽 블록이 사용 가능한지를 판정한다.
현재 코딩 블록의 왼쪽 블록이 사용 가능하면, 왼쪽 블록의 인트라 예측 모드를 MPM 리스트에 추가한다. MPM 리스트는 빈 리스트일 수 있으며, 현재 코딩 블록의 왼쪽 블록이 사용 가능하면 왼쪽 블록의 인트라 예측 모드가 MPM 리스트에 추가되고, 그 다음에 MPM 리스트는 하나의 인트라 예측 모드를 포함하며; 그리고 현재 코딩 블록의 왼쪽 블록이 사용 가능하지 않으면, MPM 리스트는 1 단계 후에도 여전히 빈 리스트이다.
2 단계: 현재 코딩 블록의 위 블록이 사용 가능한지를 판정한다.
현재 코딩 블록의 위 블록이 사용 가능하면, 위 블록의 인트라 예측 모드를 MPM 리스트에 추가한다. MPM 리스트는 왼쪽 블록의 인트라 예측 모드를 포함하거나, 여전히 비어 있는 리스트이다.
현재 코딩 블록의 위 블록이 사용 가능하고 MPM 리스트가 왼쪽 블록의 인트라 예측 모드를 포함하면, 추가로, 위 블록의 인트라 예측 모드가 왼쪽 블록의 인트라 예측 모드와 동일한지를 판정하고, 동일하다면 "위 블록의 인트라 예측 모드를 MPM 리스트에 추가" 하는 단계의 결과는 MPM 리스트에서 인트라 예측 모드의 수량을 변경하지 않으며, MPM 리스트는 하나의 인트라 예측 모드만 포함하며; 위 블록의 인트라 예측 모드가 왼쪽 블록의 인트라 예측 모드와 동일하지 않으면, 위 블록의 인트라 예측 모드를 MPM 리스트에 추가하고 그 다음에 MPM 리스트는 두개의 인트라 예측 모드를 포함한다.
현재 코딩 블록의 위 블록이 사용 가능하고 MPM 리스트가 여전히 빈 리스트 이면, 위 블록의 인트라 예측 모드를 MPM 리스트에 추가하며, MPM 리스트는 하나의 인트라 예측 모드만 포함한다.
현재 코딩 블록의 위 블록이 사용 가능하지 않고 MPM 리스트가 왼쪽 블록의 인트라 예측 모드를 포함하면, MPM 리스트는 여전히 왼쪽 블록의 인트라 예측 모드만 포함한다.
현재 코딩 블록의 위 블록이 사용 가능하지 않고 MPM 리스트가 여전히 빈 리스트이면, MPM 리스트는 여전히 빈 리스트이다.
3 단계: 평면 모드가 MPM 리스트에 없으면, 평면 모드를 MPM 리스트에 추가한다.
2 단계 이후에 MPM 리스트가 평면 모드를 포함하지 않으면, 평면 모드를 MPM 리스트에 추가한다.
왼쪽 블록의 인트라 예측 모드와 위 블록의 인트라 예측 모드가 모두 사용가능하지 않거나 사용 가능한 인트라 예측 모드가 평면 모드가 아니면, MPM 리스트는 평면 모드를 포함하지 않는다.
평면 모드가 MPM 리스트에 있으면, 4 단계로 이동한다.
4 단계: DC 모드가 MPM 리스트에 없으면, DC 모드를 MPM 리스트에 추가한다.
2 단계 또는 3 단계 후에 MPM 리스트가 DC 모드를 포함하지 않으면, DC 모드를 MPM 리스트에 추가한다.
왼쪽 블록의 인트라 예측 모드와 위 블록의 인트라 예측 모드가 모두 사용가능하지 않거나 사용 가능한 인트라 예측 모드가 DC 모드가 아니면, MPM 리스트는 DC 모드를 포함하지 않는다.
DC 모드가 MPM 리스트에 있으면, 다음 단계로 이동하거나 MPM 리스트 구성을 완료한다.
본 출원의 하나의 구현 형태에서, 각 단계에서, MPM 리스트에 예측 모드를 추가하는 프로세스는 MPM 리스트에 중복된 예측 모드가 없는지 확인해야 한다. 따라서, MPM 리스트에 추가해야 하는 인트라 예측 모드가 MPM 리스트의 하나의 인트라 예측 모드와 동일하면, "추가" 프로세스는 MPM 리스트를 변경하지 않거나 "추가" 프로세스가 수행되지 않는다.
본 출원의 하나의 구현 형태에서, 단계 4 이후, 각도 모드가 존재하는 경우에만 각도 -1, 각도 +1을 수행한다.
예를 들어, MPM 리스트에서 인트라 예측 모드의 수량이 6이면, 4 단계 이후에, MPM 길이와 관련된 세 가지 케이스가 있다.
케이스 1: MPM 길이는 2이며: L과 A 모두 각도가 아니거나(> DC) 또는 사용 가능하지 않으며, 네 가지 기본 모드 모두 사용시에 평면 및 DC만.
케이스 2: MPM 길이는 3이며: L과 A 중 하나가 각도이거나 이들은 동일한 각도이다. 하나의 기본 모드를 사용한다.
케이스 3: MPM 길이는 4이며: L과 A는 모두 각도이며 이들은 서로 상이하며, L-1, L+1 중 적어도 하나가 추가되므로 기본 모드가 사용되지 않는다. 그 중 하나가 위의 중복(diff(L-A) = 1)이면, A-1과 A+1 중 적어도 하나가 추가로 삽입된다.
본 출원의 일 구현 형태에서, 상기 방법은, 현재 코딩 블록의 왼쪽 블록이 사용 가능하고 왼쪽 블록의 인트라 예측 모드가 각도 모드이면, 오프셋을 왼쪽 블록의 예측 모드에 추가하여 신규 예측 모드를 획득하고, 신규 예측 모드가 MPM 리스트에 없으면, 신규 예측 모드를 MPM 리스트에 추가하는 단계를 더 포함한다.
다른 예에서, 위의 4개의 단계는 가장 큰 케이스에만 4개의 인트라 예측 모드를 얻을 수 있기 때문에, MPM 리스트는 6개의 인트라 예측 모드를 포함한다. 상기 방법은 다음을 더 포함한다:
5 단계: 현재 코딩 블록의 왼쪽 블록이 사용 가능하고 왼쪽 블록의 인트라 예측 모드가 각도 모드이면, 오프셋을 왼쪽 블록의 예측 모드에 추가하여 신규 예측 모드를 획득하고, 신규 예측 모드가 MPM 리스트에 없으면, 신규 예측 모드를 MPM 리스트에 추가한다.
예를 들어, 현재 코딩 블록의 왼쪽 블록이 각도 모드 27(이 각도 인트라 예측 모드에 대응하는 값이 27)이고, 위의 4개의 단계 이후의 MPM 리스트가 (27, 15, 0, 1)이면. 왼쪽 블록의 예측 모드에 오프셋을 추가하여 신규 예측 모드를 획득하고, 신규 예측 모드가 MPM 리스트에 없으면 신규 예측 모드를 MPM 리스트에 추가한다. 일 예에서, 오프셋은 -1이며, 따라서 신규 예측 모드는 26이고 업데이트된 MPM 리스트는 (27, 15, 0, 1, 26)이다. 다른 예에서, 오프셋은 1이며, 따라서 신규 예측 모드는 28이고 업데이트된 MPM 리스트는 (27, 15, 0, 1, 28)이다. 다른 예에서, 5 단계는 두개의 오프셋을 왼쪽 블록의 인트라 예측 모드에 추가할 수 있으며, 먼저 -1을 추가하고 그 다음에 1을 추가하거나 또는 먼저 1을 추가한 다음 -1을 추가하므로, 업데이트된 MPM 리스트는 (27, 15, 0, 1, 26, 28) 또는 (27, 15, 0, 1, 28, 26)이다.
5 단계 후 MPM 리스트가 가득 찼는지 확인한다(MPM 리스트의 인트라 예측 모드의 수량이 임계 값과 같으면, 예를 들어, 임계 값이 6이면, MPM 리스트가 가득 찬다. MPM 리스트의 인트라 예측 모드 수량이 임계 값보다 작으면, MPM 리스트가 가득 차지 않는다). MPM 리스트가 가득 차면, MPM 리스트 구성을 완료하며; MPM 리스트가 가득 차지 않으면 다음 단계로 이동한다.
그리고 현재 코딩 블록의 왼쪽 블록이 사용 가능하지 않으면 5 단계를 수행하지 않고 다음 단계로 이동한다.
각도 예측 모드에 오프셋(예를 들어, -1 또는 +1)을 추가할 때 랩 업 및 랩 다운 작동을 포함할 수 있으며, 예를 들어, 각도 예측 모드 angularLeft가 2이면, angularLeft-1은 66가 되며(랩 업 케이스), 또는 angularLeft가 66이면 angularLeft+1은 2가 된다(랩 다운 케이스).
본 출원의 일 구현 형태에서, 상기 방법은, 현재 코딩 블록의 위 블록이 사용 가능하고 위 블록의 인트라 예측 모드가 각도 모드이면, 오프셋을 위 블록의 예측 모드에 추가하여, 위-오프셋 예측 모드(above-offset prediction mode)를 획득하고, 위-오프셋 예측 모드가 MPM 리스트에 없으면, 위-오프셋 예측 모드를 MPM 리스트에 추가하는 단계를 더 포함한다.
일 예에서, 상기 방법은 다음을 추가로 포함하다:
6 단계(step six): 현재 코딩 블록의 위 블록이 사용 가능하고 위 블록의 인트라 예측 모드가 각도 모드이면, 오프셋을 위 블록의 예측 모드에 추가하여 위-오프셋 예측 모드를 획득하고, 위-오프셋 예측 모드가 MPM 리스트에 없으면 신규 예측 모드를 MPM 리스트에 추가한다.
예를 들어, 현재 코딩 블록의 위 블록이 각도 모드 26(이 각도 인트라 예측 모드에 대응하는 값은 26)이고, 위 5개의 단계 이후의 MPM 리스트가 (27, 26, 0, 1, 28)이면. 오프셋을 왼쪽 블록의 예측 모드에 추가하여 위-오프셋 예측 모드를 획득하고, 위-오프셋 예측 모드가 MPM 리스트에 없으면, 위-오프셋 예측 모드를 MPM 리스트에 추가한다. 일 예에서, 오프셋은 -1이므로, 위-오프셋 예측 모드는 25이고 업데이트된 MPM 리스트는 (27, 26, 0, 1, 28, 25)이다. 다른 예에서, 오프셋은 1이므로, 위-오프셋 예측 모드는 27이고, 위-오프셋 모드 27의 삽입은 모드 27이 삽입되었으므로 차단된다. 다른 예에서, 6 단계는 두개의 오프셋을 위 블록의 인트라 예측 모드에 추가하고, 하나의 오프셋이 추가된 후에도 MPM 리스트가 여전히 가득 차지 않으면, 먼저 -1을 추가한 다음 1을 추가하거나 또는 먼저 1을 추가한 다음 -1을 추가할 수 있다.
더욱이, 현재 코딩 블록의 위 블록이 사용 가능하지 않으면, 6 단계를 수행하지 않고 다음 단계로 이동한다. 6 단계 후 MPM 리스트가 가득 찼는지 확인한다(MPM 리스트의 인트라 예측 모드 수량이 6과 같음). MPM 리스트가 가득 차면 MPM 리스트 구성을 완료하며; MPM 리스트가 가득 차지 않으면(MPM 리스트의 인트라 예측 모드의 수량이 6 보다 작음), 다음 단계로 이동한다.
본 출원의 일 구현 형태에서, 현재 코딩 블록의 왼쪽 블록이 사용 가능하지 않는 경우, 현재 코딩 블록의 위 블록이 사용 가능하거나 사용 가능하지 않을 수 있다.
본 출원의 일 구현 형태에서, 현재 코딩 블록의 위 블록이 사용 가능하지 않은 경우, 현재 코딩 블록의 왼쪽 블록이 사용 가능하거나 사용 가능하지 않을 수 있다.
본 출원의 일 구현 형태에서, 상기 방법은 수직 모드(VER_IDX), 또는 수평 모드(HOR_IDX), 또는 인트라 모드 2(2), 또는 수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)를 MPM 리스트에 추가하는 단계를 더 포함한다.
본 출원의 하나의 구현 형태에서, 상기 방법은 MPM 리스트 내의 인트라 예측 모드의 수량이 임계 값보다 작으면, 인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지를 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계 - 인트라 예측 모드 세트는 수직 모드(VER_IDX), 수평 모드(HOR_IDX), 인트라 모드 2(2), 수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)를 포함함 - 를 더 포함한다.
본 출원의 하나의 구현 형태에서, 상기 방법은, MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작으면, 인트라 예측 모드가 MPM 리스트에 포함되지 않은 경우 예측 모드의 수량이 임계 값과 같을 때까지, 전술한 순서에 따라 수직 모드(VER_IDX), 수평 모드(HOR_IDX), 인트라 모드 2(2), 수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)를 포함하는 인트라 예측 모드 세트의 인트라 예측 모드를 MPM 리스트에 반복적으로 추가하는 단계를 더 포함한다.
예를 들어, 6 단계 이후에, MPM 리스트가 여전히 가득 차지 않으면(MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작음), 기본 모드 리스트의 인트라 예측 모드를 이 모드 또는 이러한 모드가 MPM 리스트에 없으면 순서대로 MPM 리스트에 추가하며, MPM 리스트가 가득 찰 때까지 이 단계를 반복한다.
7 단계(step seven): 수직 모드(VER_IDX), 또는 수평 모드(HOR_IDX), 또는 인트라 모드 2(2), 또는 수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)를 MPM 리스트에 추가한다.
예를 들어, 수직 모드가 MPM 리스트에 없고 MPM 리스트가 가득 차지 않으면 수직 모드를 MPM 리스트에 추가하고, 수직 모드를 추가한 후 MPM 리스트가 가득 차면 MPM 리스트 구성을 완료한다.
더욱이, 수직 모드를 추가한 후에 MPM 리스트가 여전히 가득 차지 않으면, 수평 모드가 MPM 리스트에 있는지 확인한다. 수평 모드가 MPM 리스트에 있으면, 추가로 인트라 모드 2가 MPM 리스트에 있는지를 확인하며; 수평 모드가 MPM 리스트에 없으면 수평 모드를 MPM 리스트에 추가한다. MPM 리스트가 가득 찰 때까지 이 단계를 반복한다.
본 출원의 일 구현 형태에서, 7 단계에서, 기본 모드 리스트를 사용하여, 기본 모드를 MPM 리스트에 삽입할 때마다 중복 모드가 삽입되지 않도록 해야 한다. 삽입이 성공하면, MPM이 가득 찼는지를 감지하기 위해 또 다른 확인(check)이 수행된다. 그렇다면, MPM 구성 프로세스가 종료되며; 그렇지 않으면, 지정된 순서로 다른 기본 모드로 계속 삽입한다.
본 출원의 하나의 구현 형태에서, 상기 방법은 현재 코딩 블록의 왼쪽 블록이 사용 가능하지 않고 MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작으면,
인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계 - 인트라 예측 모드 세트는 수직 모드(VER_IDX), 수직 대각선 모드(VDIA_IDX), 대각선 모드(DIA_IDX) 또는 인트라 모드 2(2)를 포함함 - 를 더 포함한다.
본 출원의 일 구현 형태에서, 상기 방법은,
현재 코딩 블록의 왼쪽 블록이 사용 가능하지 않고 MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작으면,
인트라 예측 모드가 MPM 리스트에 포함되지 않은 경우, 예측 모드의 수량이 임계 값과 같을 때까지, 전술한 순서에 따라, 수직 모드(VER_IDX), 수직 대각선 모드(VDIA_IDX), 대각선 모드(DIA_IDX) 또는 인트라 모드 2(2)를 포함하는 인트라 예측 모드 세트의 인트라 예측 모드를 MPM 리스트에 반복적으로 추가하는 단계를 더 포함한다.
일 예에서, 6 단계 이후에, MPM 리스트가 아직 가득 차지 않고 현재 코딩 블록의 왼쪽 블록이 사용 가능하지 않으면, 기본 모드 리스트의 인트라 예측 모드를 이 모드 또는 이러한 모드가 MPM 리스트에 없으면, MPM 리스트에 순서대로 추가하며, MPM 리스트가 가득 찰 때까지 이 단계를 반복한다.
7 단계: 수직 모드(VER_IDX), 또는 수직 대각선 모드(VDIA_IDX), 또는 대각선 모드(DIA_IDX) 또는 인트라 모드 2(2)를 MPM 리스트에 추가한다.
예를 들어, 수직 모드가 MPM 리스트에 없고 MPM 리스트가 가득 차지 않으면, 수직 모드를 MPM 리스트에 추가하고, 수직 모드를 추가한 후 MPM 리스트가 가득 차면 MPM 리스트 구성을 완료한다.
더욱이, 수직 모드를 추가한 후에도 MPM 리스트가 가득 차지 않으면, 수직 대각선 모드가 MPM 리스트에 있는지 확인한다. 수직 대각선 모드가 MPM 리스트에 있으면, 추가로 대각선 모드가 MPM 리스트에 있는지 확인하며; 대각선 모드가 MPM 리스트에 없으면 대각선 모드를 MPM 리스트에 추가한다. MPM 리스트가 가득 찰 때까지 이 단계를 반복한다.
본 출원의 일 구현 형태에서, 상기 방법은,
MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작고 현재 코딩 블록의 위 블록이 사용 가능하지 않으면,
인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계 - 인트라 예측 모드 세트는 수평 모드(HOR_IDX), 인트라 모드 2(2), 대각선 모드(DIA_IDX) 또는 수직 대각선 모드(VDIA_IDX)를 포함함 - 를 더 포함한다.
본 출원의 일 구현 형태에서, 상기 방법은,
MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작고 현재 코딩 블록의 위 블록이 사용 가능하지 않으면,
인트라 예측 모드가 MPM 리스트에 포함되지 않은 경우, 예측 모드의 수량이 임계 값과 같을 때까지, 전술한 순서에 따라, 수평 모드(HOR_IDX), 인트라 모드 2(2), 대각선 모드(DIA_IDX) 또는 수직 대각선 모드(VDIA_IDX)를 포함하는 인트라 예측 모드 세트의 인트라 예측 모드를 MPM 리스트에 반복적으로 추가하는 단계를 더 포함한다.
일 예에서, 6 단계 이후에 MPM 리스트가 여전히 가득 차지 않고, 현재 코딩 블록의 위 블록이 사용 가능하지 않으면, 기본 모드 리스트의 인트라 예측 모드를 이 모드 또는 이러한 모드가 MPM 리스트에 없으면 MPM 리스트에 순서대로 추가하며, MPM 리스트가 가득 찰 때까지 이 단계를 반복한다.
7 단계: 수평 모드(HOR_IDX), 또는 인트라 모드 2(2), 또는 대각선 모드(DIA_IDX) 또는 수직 대각선 모드(VDIA_IDX)를 MPM 리스트에 추가한다.
예를 들어, 수평 모드가 MPM 리스트에 없고 MPM 리스트가 가득 차지 않으면 수평 모드를 MPM 리스트에 추가하고, 수평 모드를 추가한 후 MPM 리스트가 가득 차면 MPM 리스트 구성을 완료한다.
또한, 수평 모드를 추가한 후에도 MPM 리스트가 여전히 가득 차지 않으면, 인트라 모드 2가 MPM 리스트에 있는지 확인한다. 인트라 모드 2가 MPM 리스트에 있으면, 추가로 대각선 모드가 MPM 리스트에 있는지 확인하고; 대각선 모드가 MPM 리스트에 없으면 대각선 모드를 MPM 리스트에 추가한다. MPM 리스트가 가득 찰 때까지 이 단계를 반복한다.
본 출원의 하나의 구현 형태에서, 상기 방법은, MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작고, 현재 코딩 블록의 왼쪽 블록이 사용 가능하고 현재 코딩 블록의 위 블록이 사용 가능하면,
인트라 예측 모드 세트 중 제1 인트라 예측 모드가 MPM 리스트에 포함되는지 확인하고, 제1 인트라 예측 모드가 MPM 리스트에 포함되지 않으면, 제1 인트라 예측 모드를 MPM 리스트에 추가하는 단계 - 인트라 예측 모드 세트는 수직 모드(VER_IDX), 수평 모드(HOR_IDX), 인트라 모드 2(2), 수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)를 포함함 - 를 더 포함한다.
본 출원의 일 구현 형태에서, 상기 방법은,
MPM 리스트의 인트라 예측 모드의 수량이 임계 값보다 작고, 현재 코딩 블록의 왼쪽 블록이 사용 가능하고, 현재 코딩 블록의 위 블록이 사용 가능하면,
인트라 예측 모드가 MPM 리스트에 포함되지 않은 경우 예측 모드의 수량이 임계 값과 같을 때까지, 전술한 순서에 따라 수직 모드(VER_IDX), 수평 모드(HOR_IDX), 인트라 모드 2(2), 수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)를 포함하는 인트라 예측 모드 세트의 인트라 예측 모드를 MPM 리스트에 반복적으로 추가하는 단계를 더 포함한다.
일 예에서, 6 단계 이후에 MPM 리스트가 아직 가득 차지 않고, 현재 코딩 블록의 왼쪽 블록이 사용 가능하고 현재 코딩 블록의 위 블록도 사용가능하면, 기본 모드 리스트의 인트라 예측 모드를 이 모드 또는 이러한 모드가 MPM 리스트에 없으면 MPM 리스트에 추가하며, MPM 리스트가 가득 찰 때까지 이 단계를 반복한다.
7 단계: 수직 모드(VER_IDX), 또는 수평 모드(HOR_IDX), 또는 인트라 모드 2(2), 수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)를 MPM 리스트에 추가한다.
예를 들어, 수직 모드가 MPM 리스트에 없고 MPM 리스트가 가득 차지 않으면 수직 모드를 MPM 리스트에 추가하고, 수직 모드를 추가한 후 MPM 리스트가 가득 차면 MPM 리스트 구성을 완료한다.
또한, 수직 모드를 추가한 후에도 MPM 리스트가 여전히 가득 차지 않으면, 수평 모드가 MPM 리스트에 있는지 확인한다. 수평 모드가 MPM 리스트에 있으면 추가로 인트라 모드 2가 MPM 리스트에 있는지를 확인하며; 인트라 모드 2가 MPM 리스트에 없으면 인트라 모드 2를 MPM 리스트에 추가한다. MPM 리스트가 가득 찰 때까지 이 단계를 반복한다.
본 출원의 일 구현 형태에서, 상기 방법은 수직 모드(VER_IDX), 수평 모드(HOR_IDX), 오프셋 -4를 추가하는 VER_IDX, 또는 오프셋 4를 추가하는 VER_IDX를 MPM 리스트에 추가하는 단계를 더 포함한다.
본 출원의 일 구현 형태에서, 상기 방법은 수직 모드(VER_IDX), 수평 모드(HOR_IDX), 오프셋 4를 추가하는 VER_IDX, 또는 오프셋 -4를 추가하는 VER_IDX를 MPM 리스트에 추가하는 단계를 더 포함한다.
일 예에서, 6 단계 이후에 MPM 리스트가 아직 가득 차지 않으면, 기본 모드 리스트의 인트라 예측 모드를 이 모드 또는 이러한 모드가 MPM 리스트에 없으면 MPM 리스트에 추가하고, MPM 리스트가 가득 찰 때까지 이 단계를 반복한다.
7 단계: 수직 모드(VER_IDX), 수평 모드(HOR_IDX), 오프셋 -4를 추가하는 VER_IDX 또는 오프셋 4를 MPM 리스트에 추가하는 VER_IDX를 MPM 리스트에 추가하거나; 수직 모드(VER_IDX), 수평 모드(HOR_IDX), 오프셋 4를 추가하는 VER_IDX, 또는 오프셋 -4를 MPM 리스트에 추가하는 VER_IDX를 MPM 리스트에 추가한다.
예를 들어, 수직 모드가 MPM 리스트에 없고 MPM 리스트가 가득 차지 않으면 수직 모드를 MPM 리스트에 추가하고, 수직 모드를 추가한 후 MPM 리스트가 가득 차면 MPM 리스트 구성을 완료한다.
더욱이, 수직 모드를 추가한 후에도 MPM 리스트가 여전히 가득 차지 않으면, 수평 모드가 MPM 리스트에 있는지 확인한다. 수평 모드가 MPM 리스트에 있으면, 추가로, 오프셋 -4를 추가하는 VER_IDX의 값과 동일한 값인 예측 모드가 MPM 리스트에 있는지를 확인하며; 오프셋 -4를 추가하는 VER_IDX의 값과 동일한 값인 예측 모드가 MPM 리스트에 없으면, 오프셋 -4를 추가하는 VER_IDX의 값과 동일한 값인 예측 모드를 MPM 리스트에 추가한다. MPM 리스트가 가득 찰 때까지 이 단계를 반복한다.
일 예에서, 6 단계 이후에 MPM 리스트가 아직 가득 차 있지 않고 현재 코딩 블록의 왼쪽 블록이 사용 가능하지 않으면, 기본 모드 리스트의 인트라 예측 모드를 이 모드 또는 이러한 모드가 MPM 리스트에 없으면, MPM 리스트에 추가하며, MPM 리스트가 가득 찰 때까지 이 단계를 반복한다.
7 단계: 수직 모드(VER_IDX), 또는 수직 대각선 모드(VDIA_IDX), 또는 대각선 모드(DIA_IDX) 또는 인트라 모드 2(2)를 MPM 리스트에 추가한다.
예를 들어, 수직 모드가 MPM 리스트에 없고 MPM 리스트가 가득 차지 않으면 수직 모드를 MPM 리스트에 추가하고, 수직 모드를 추가한 후 MPM 리스트가 가득 차면 MPM 리스트 구성을 완료한다.
더욱이, 수직 모드를 추가한 후에도 MPM 리스트가 여전히 가득 차지 않으면, 수직 대각선 모드가 MPM 리스트에 있는지 확인한다. 수직 대각선 모드가 MPM 리스트에 있으면, 추가로 대각선 모드가 MPM 리스트에 있는지 확인하고; 대각선 모드가 MPM 리스트에 없으면 대각선 모드를 MPM 리스트에 추가한다. MPM 리스트가 가득 찰 때까지 이 단계를 반복한다.
일 예에서, 6 단계 이후에 MPM 리스트가 아직 가득 차지 않고 현재 코딩 블록의 위 블록이 사용 가능하지 않으면, 기본 모드 리스트의 인트라 예측 모드를 이 모드 또는 이러한 모드가 MPM 리스트에 없으면 MPM 리스트에 추가하며, MPM 리스트가 가득 찰 때까지 이 단계를 반복한다.
7 단계: 수평 모드(HOR_IDX), 또는 인트라 모드 2(2), 또는 대각선 모드(DIA_IDX) 또는 수직 대각선 모드(VDIA_IDX)를 MPM 리스트에 추가한다.
예를 들어, 수평 모드가 MPM 리스트에 없고 MPM 리스트가 가득 차지 않으면 수평 모드를 MPM 리스트에 추가하고, 수평 모드를 추가한 후 MPM 리스트가 가득 차면 MPM 리스트 구성을 완료한다.
더욱이, 수평 모드를 추가한 후에도 MPM 리스트가 여전히 차지 않으면, 인트라 모드 2가 MPM 리스트에 있는지를 확인한다. 인트라 모드 2가 MPM 리스트에 있으면 추가로 대각선 모드가 MPM 리스트에 있는지를 확인하고; 대각선 모드가 MPM 리스트에 없으면 대각선 모드를 MPM 리스트에 추가한다. MPM 리스트가 가득 찰 때까지 이 단계를 반복한다.
일 예에서, 6 단계 후에도 MPM 리스트가 아직 가득 차지 않고, 현재 코딩 블록의 왼쪽 블록이 사용 가능하고 현재 코딩 블록의 위 블록이 사용 가능하면, 기본 모드 리스트의 인트라 예측 모드를 이 모드 또는 이러한 모드가 MPM 리스트에 없으면 MPM 리스트에 추가하며, MPM 리스트가 가득 찰 때까지 이 단계를 반복한다.
7 단계: 수직 모드(VER_IDX), 또는 수평 모드(HOR_IDX), 또는 오프셋 -4를 추가하는 VER_IDX 또는 오프셋 4를 추가하는 VER_IDX를 MPM 리스트에 추가한다.
본 개시의 일 측면에서, 6-엔트리 MPM 리스트를 구성하는 단순화된 방법이 제안되며, 이는 현재 코딩 유닛의 왼쪽 블록의 가용성을 확인하는 단계를 포함한다. 왼쪽 블록의 위치는 도 5에 예시되어 있으며, 왼쪽 블록은 "L"로 라벨링되어 있다.
인트라 예측 정보(즉, 인트라 예측 모드)가 왼쪽 블록으로부터 유도될 수 없으면 왼쪽 블록은 사용 가능하지 않다. 이는 다음과 같은 케이스를 포함한다.
왼쪽 블록은 인트라 예측된 블록이 아니다: 왼쪽 블록이 존재하지 않으며, 예를 들어, 현재 블록이 프레임의 가장 왼쪽에 위치한 코딩 블록이다; 인코더 또는 디코더가 병렬 처리를 지원하면, 왼쪽 블록이 현재 블록의 상이한 타일에 있거나 현재 블록과 함께 있는 경우 즉, 현재 코딩 블록이 위치하거나 또는 타일의 가장 왼쪽에 위치하는 경우, 왼쪽 블록은 존재하지 않는 것(또는 사용 가능하지 않음)으로 간주될 수 있다.
다른 예에서, 병렬 처리가 인코더 또는 디코더에서 지원되지 않으면, 왼쪽 블록이 현재 블록의 상이한 타일에 있는 경우 즉, 현재 코딩 블록이 타일의 가장 왼쪽에 위치되는 경우, 왼쪽 블록은 사용 가능한 것으로 간주될 수 있다.
병렬 처리가 인코더 또는 디코더에서 지원되면, 왼쪽 블록이 현재 블록과 상이한 슬라이스에 있는 경우, 즉 현재 코딩 블록이 슬라이스의 가장 왼쪽에 있는 경우, 왼쪽 블록은 존재하지 않는 것으로 간주될 수 있다.
다른 예에서, 병렬 처리가 인코더 또는 디코더에서 지원되지 않으면, 왼쪽 블록이 현재 블록과 상이한 슬라이스에 있는 경우 즉, 현재 코딩 블록이 슬라이스의 가장 왼쪽에 위치하는 경우, 왼쪽 블록은 사용 가능한 것으로 간주될 수 있다.
그렇지 않으면(즉, 왼쪽 블록이 사용 가능함), 6-엔트리 MPM 리스트에 왼쪽 블록의 인트라 예측 모드를 포함한다.
현재 코딩 유닛의 위 블록의 가용성을 확인한다. 위 블록의 위치는 도 5에 예시되어 있으며, 위 블록은 "A"로 라벨링된다.
인트라 예측 정보(즉, 인트라 예측 모드)가 위 블록으로부터 유도될 수 없으면 위 블록은 사용 가능하지 않다. 이는 다음과 같은 케이스를 포함한다.
위 블록은 인트라 예측된 블록이 아니다.
위 블록이 존재하지 않는다. 예를 들어, 현재 블록은 프레임의 최상단에 위치한 코딩 블록이다.
인코더 또는 디코더에서 병렬 처리가 지원되면, 상단 블록이 현재 블록과 상이한 타일에 있는 경우 즉, 현재 코딩 블록이 타일의 최상단에 위치하는 경우, 상단 블록은 존재하지 않는 것으로 간주될 수 있다.
또 다른 예에서, 병렬 처리가 인코더 또는 디코더에서 지원되지 않으면, 상단 블록이 현재 블록과 상이한 타일에 있는 경우 즉, 현재 코딩 블록이 타일의 최상단에 위치하는 경우, 상단 블록은 사용 가능한 것으로 간주될 수 있다.
병렬 처리가 인코더 또는 디코더에서 지원되면, 상단 블록이 현재 블록과 상이한 슬라이스에 있는 경우 즉, 현재 코딩 블록이 슬라이스의 최상위에 위치하는 경우, 상단 블록이 존재하지 않는 것으로 간주될 수 있다.
다른 예에서, 병렬 처리가 인코더 또는 디코더에서 지원되지 않으면, 상단 블록이 현재 블록과 상이한 슬라이스에 있는 경우 즉, 현재 코딩 블록이 슬라이스의 최상위에 위치하는 경우, 상단 블록은 사용 가능한 것으로 간주될 수 있다.
인코더 또는 디코더에서 라인 버퍼 크기를 제한해야 하면, 상단 블록이 현재 블록과 상이한 CTU에 있는 경우 즉, 현재 코딩 블록이 현재 CTU의 최상단에 위치하는 경우, 상단 블록은 존재하지 않는 것으로 간주될 수 있다.
일 예에서, 디코더 측 또는 인코더 측이 라인 버퍼 제한을 지원하면, 현재 블록 CTU와 상이한 CTU에 있는 위 블록은 존재하지 않는 것으로 간주된다. 라인 버퍼 제한을 지원하지 않으면 존재하는 것으로 간주한다.
그렇지 않으면(즉, 왼쪽 블록이 사용 가능함) 6-엔트리 MPM 리스트에 상단 블록의 인트라 예측 모드가 포함된다.
평면(PLANAR_IDX = 0) 모드가 MPM 리스트에 삽입되었는지 확인하며(즉, 왼쪽 및 상단 블록의 인트라 모드가 평면 모드인지 확인), 평면 모드가 MPM 리스트에 삽입되지 않은 경우에만, 평면 모드를 MPM 리스트에 삽입한다. DC(DC_IDX = 1) 모드가 MPM 리스트에 삽입되었는지 확인하며(즉, 왼쪽 및 상단 블록의 인트라 모드가 DC 모드인지 확인), DC 모드가 MPM 리스트에 삽입되지 않은 경우에만 DC 모드를 MPM 리스트에 삽입한다.
왼쪽 블록이 사용 가능하고, 그의 인트라 예측 모드가 각도 모드이면(즉: mode > DC_IDX이고, 모드가 angularLeft라고 함), angularLeft-1, angularLeft+1을 수행하여 가장 가까운 두 개의 각도 모드를 가져온다. -1 또는 1을 수행할 때, 랩 업 및 랩 다운 작동을 포함할 수 있으며, 예를 들어,
angularLeft가 2이면, angularLeft-1은 66이 되거나(랩 업 케이스), 또는 angularLeft가 66이면 angularLeft+1은 2가 된다(랩 다운 케이스).
angularLeft-1의 예측 모드가 MPM 리스트에 삽입되지 않았으면, 이를 MPM 리스트에 삽입한다.
angularLeft+1의 예측 모드가 MPM 리스트에 삽입되지 않았으면, 이를 MPM 리스트에 삽입한다.
MPM 리스트가 가득 차 있지 않고 위 블록이 사용 가능하고 그의 인트라 예측 모드가 각도 모드이면(즉: mode > DC_IDX이고, 모드가 angularAbove라고 함), angularAbove-1, angularAbove+1을 수행하여 가장 가까운 두 개의 각도 모드를 가져온다. -1 또는 1을 수행할 때 랩 업 및 랩 다운 작동이 포함될 수 있으며, 일 예에서 angularLeft가 2이면 angularLeft-1은 66이 되거나(랩 업 케이스), angularLeft가 66이면 angularLeft+1이 2가 된다(랩 다운 케이스).
angularAbove-1의 예측 모드가 MPM 리스트에 삽입되지 않았으며, 이를 MPM 리스트에 삽입한다.
MPM 리스트가 가득 차지 않고(예를 들어, MPM 리스트의 예측 모드의 수량이 6보다 작음), angularAbove+1의 예측 모드가 MPM 리스트에 삽입되지 않았으면, 이를 MPM 리스트에 삽입한다.
MPM 리스트가 가득 차지 않으면, 가득 찰 때까지 다음 모드:
수직 모드(VER_IDX),
수평 모드(HOR_IDX),
인트라 모드 2(2),
수직 대각선 모드(VDIA_IDX) 또는 대각선 모드(DIA_IDX)
를 MPM 리스트에 삽입한다(예를 들어, MPM 리스트의 예측 모드 수량이 6과 같음).
본 개시는 인트라 모드 시그널링 방식의 개선을 목표로 한다. 본 개시에서, 비디오 디코딩 방법 및 비디오 디코더가 제안된다.
도 7은 VVC에 대해 제안된 바와 같은 67개의 인트라 예측 모드의 예를 도시하며, 67개의 인트라 예측 모드의 복수의 인트라 예측 모드는 평면 모드(인덱스 0), dc 모드(인덱스 1), 인덱스 2 내지 66의 각도 모드를 포함하며, 여기서 도 7의 왼쪽 하단 각도 모드는 인덱스 2를 나타내며, 인덱스 번호가 인덱스 66인 도 7의 오른쪽 상단 각도 모드가 될 때까지 증가한다.
도 13은 85개의 인트라 예측 모드의 예를 도시하며, 여기서 점선 방향은 정사각형이 아닌 블록에 적용되는 광각 모드(wide-angle mode)와 연관되어 있다.
본 출원의 다른 측면에서, 상기 디코딩 방법을 수행하도록 구성된 처리 회로를 포함하는 디코더가 개시된다.
본 출원의 다른 측면에서, 상기 디코딩 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품이 개시된다.
본 출원의 다른 측면에서, 비디오 데이터를 디코딩하기 위한 디코더가 개시되고, 상기 디코더는: 하나 이상의 프로세서; 및 프로세서에 결합되고 프로세서에 의해 실행되는 프로그래밍을 저장하는 컴퓨터가 판독 가능한 비 일시적 저장 매체를 포함하고, 프로그래밍은 프로세서에 의해 실행될 때 상기 디코딩 방법을 수행하도록 디코더를 구성한다.
처리 회로는 예를 들어, 소프트웨어 프로그래밍 가능 프로세서 등에 의해 하드웨어 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다.
다음의 설명에서, 본 개시의 일부를 형성하고 본 발명이 배치될 수 있는 특정 측면이 예시로서 도시된 첨부된 도면을 참조한다.
예를 들어, 설명된 방법과 관련된 개시는 또한 방법을 수행하도록 구성된 대응하는 디바이스 또는 시스템에 대해 참일 수 있고 그 반대의 경우도 마찬가지인 것으로 이해된다. 예를 들어, 특정 방법 단계가 기술된 경우, 그러한 디바이스가 도면에 명시적으로 설명되거나 예시되지 않아도, 대응하는 디바이스는 설명된 방법 단계를 수행하기 위한 디바이스를 포함할 수 있다. 또한, 여기서 설명된 다양한 예시적인 측면의 특징은 특별히 달리 언급되지 않는 한 서로 조합될 수 있음이 이해된다.
비디오 코딩은 일반적으로 비디오 또는 비디오 시퀀스를 형성하는 일련의 화상을 처리하는 것을 말한다. 화상, 이미지 또는 프레임이라는 용어는 비디오 코딩 분야 및 본 출원에서 동의어로 사용될 수 있다. 각 화상은 일반적으로 겹치지 않는 블록 세트로 분할된다. 화상의 인코딩/디코딩은 일반적으로 블록 레벨에서 수행되며, 여기서 인터 프레임 예측 또는 인트라 프레임 예측은 예측 블록을 생성하고, 현재 블록(현재 처리/처리 될 블록)에서 예측 블록을 빼서 잔차 블록을 획득하는데 사용되며, 잔차 블록은 추가로 변환되고 양자화되어 전송될 데이터의 양을 감소(압축)시키는데 반해, 디코더 측에서는 역 처리가 인코딩/압축된 블록에 적용되어 표현을 위해 블록을 재구성한다.
도 1은 본 출원(본 개시)의 기술을 사용할 수 있는 예를 들어, 비디오 코딩 시스템(10)인 코딩 시스템(10)을 예시하는 개념적 또는 개략적인 블록도이다. 비디오 코딩 시스템(10)의 인코더(20)(예를 들어, 비디오 인코더(20)) 및 디코더(30)(예를 들어, 비디오 디코더(30))는 본 출원에서 설명된 다양한 예에 따라 기술을 수행하도록 구성될 수 있는 디바이스의 예를 나타낸다. 도 1에 도시된 바와 같이, 코딩 시스템(10)은 인코딩된 데이터(13), 예를 들어 인코딩된 화상(13)을, 인예를 들어 코딩된 데이터(13)를 디코딩하기 위한 목적지 디바이스(14)에 제공하도록 구성된 소스 디바이스(12)를 포함한다.
소스 디바이스(12)는 인코더(20)를 포함하고, 추가적으로, 즉 선택적으로 화상 소스(16), 전처리 유닛(18), 예를 들어, 화상 전처리 유닛(18) 및 통신 인터페이스 또는 통신 유닛(22)을 포함한다.
화상 소스(16)는 예를 들어, 실제 화상을 캡처하기 위한 임의의 종류의 화상 캡처 디바이스 및/또는 임의의 종류의 화상 또는 코멘트(comment)(화면 콘텐츠 코딩의 경우, 화면 상의 일부 텍스트도 인코딩될 화상 또는 이미지의 일부로 간주됨) 생성 디바이스, 예를 들어, 컴퓨터 애니메이션 화상을 생성하기 위한 컴퓨터 그래픽 프로세서, 또는 실제 화상, 컴퓨터 애니메이션 화상(예: 화면 콘텐츠, 가상 현실(virtual reality, VR) 화상) 및/또는 이들의 임의의 조합(예; 증강 현실(augmented reality, AR) 화상)을 획득 및/또는 제공하기 위한 임의의 종류의 디바이스일 수 있거나, 이들을 포함할 수 있다.
(디지털) 화상은 강도(intensity) 값이 있는 2차원 어레이 또는 샘플 행렬이거나 이로 간주될 수 있다. 어레이의 샘플은 픽셀(화상 엘리먼트의 짧은 형태) 또는 펠(pel)이라고도 한다. 어레이 또는 화상의 수평 방향 및 수직 방향(또는 축)에 있는 샘플 수는 화상의 크기 및/또는 해상도를 정의한다. 색상 표현을 위해, 일반적으로 세 가지 색상 성분이 사용되며, 즉, 화상이 세개의 샘플 어레이로 표현되거나 이들을 포함할 수 있다. RBG 포맷 또는 색 공간에서, 화상은 대응하는 적색, 녹색 및 청색 샘플 어레이로 구성된다. 그러나, 비디오 코딩에서 각 픽셀은 일반적으로 휘도(luminance)/색차(chrominance) 포맷 또는 색 공간으로 표현되며, 예를 들어, Y로 표시된 휘도 성분(때로는 대신 L이 사용됨)과 Cb 및 Cr로 표시된 두개의 색차 성분으로 구성된 YCbCr로 표현된다. 휘도(또는 루마(luma)) 성분 Y는 밝기 또는 그레이 레벨 강도(예: 그레이 스케일 화상에서와 같이)를 나타내는 반면, 두 개의 색차(또는 크로마(chroma)) 성분 Cb 및 Cr은 색도(chromaticity) 또는 색상 정보 성분을 나타낸다. 따라서, YCbCr 포맷의 화상은 휘도 샘플 값(Y)의 휘도 샘플 어레이와 색차 값(Cb 및 Cr)의 두개의 색차 샘플 어레이로 구성된다. RGB 포맷의 화상은 YCbCr 포맷으로 컨버트(convert)되거나 변환될 수 있으며 그 반대의 경우도 마찬가지이며, 이 프로세스는 색상 변환 또는 컨버전(conversion)이라고도 한다. 화상이 단색이면, 화상은 휘도 샘플 어레이만 포함할 수 있다.
화상 소스(16)(예: 비디오 소스(16))는 예를 들어, 화상을 캡처하기 위한 카메라, 메모리, 예를 들어, 이전에 캡처되거나 생성된 화상을 포함하거나 저장하는 화상 메모리, 및/또는 화상을 획득하거나 수신하기 위한 임의의 종류의 인터페이스(내부 또는 외부)일 수 있다. 카메라는 예를 들어, 소스 디바이스에 통합된 로컬 또는 통합 카메라일 수 있으며, 메모리는 예를 들어, 소스 디바이스에 통합된 로컬 또는 통합 메모리일 수 있다. 인터페이스는 예를 들어, 외부 비디오 소스, 예를 들어, 카메라와 같은 외부 화상 캡처 디바이스, 외부 메모리 또는 외부 화상 생성 디바이스, 예를 들어, 외부 컴퓨터 그래픽 프로세서, 컴퓨터 또는 서버로부터 화상을 수신하기 위한 외부 인터페이스일 수 있다. 인터페이스는 임의 종류의 인터페이스, 예를 들어, 독점적이거나 표준화된 인터페이스 프로토콜에 따른 유선 또는 무선 인터페이스, 광학 인터페이스일 수 있다. 화상 데이터(17)를 획득하기 위한 인터페이스는 통신 인터페이스(22)와 동일한 인터페이스이거나 그 일부일 수 있다.
전처리 유닛(18) 및 전처리 유닛(18)에 의해 수행되는 처리와 구분하여, 화상 또는 화상 데이터(17)(예를 들어, 비디오 데이터(16))는 또한 원시(raw) 화상 또는 원시 화상 데이터(17)로 지칭될 수 있다.
전처리 유닛(18)은 (원시) 화상 데이터(17)를 수신하고 화상 데이터(17)에 대해 전처리를 수행하여, 전처리된 화상(19) 또는 전처리된 화상 데이터(19)를 획득하도록 구성된다. 전처리 유닛(18)에 의해 수행되는 전처리는, 예를 들어, 트리밍(trimming), 컬러 포맷 변환(예를 들어, RGB에서 YCbCr로), 컬러 보정 또는 노이즈 제거(de-noising)를 포함할 수 있다. 전처리 유닛(18)은 선택적 구성 요소일 수 있음을 이해할 수 있다.
인코더(20)(예를 들어, 비디오 인코더(20))는 전처리된 화상 데이터(19)를 수신하고, 인코딩된 화상 데이터(21)를 제공하도록 구성된다(자세한 내용은 예를 들어, 도 2에 기반하여 아래에서 설명될 것이다).
소스 디바이스(12)의 통신 인터페이스(22)는 인코딩된 화상 데이터(21)를 수신하고 이를 다른 디바이스, 예를 들어, 디코딩 또는 저장을 위한 목적지 디바이스(14) 또는 임의의 다른 디바이스로 전송하고, 또는 인코딩된 데이터(13)를 저장하기 전에 인코딩된 화상 데이터(21)를 각각 처리하거나 및/또는 인코딩된 데이터(13)를 다른 디바이스, 예를 들어, 디코딩 또는 저장을 위해 목적지 디바이스(14) 또는 임의의 다른 디바이스로 전송하도록 구성될 수 있다.
목적지 디바이스(14)는 디코더(30)(예를 들어, 비디오 디코더(30))를 포함하고, 추가적으로, 즉 선택적으로 통신 인터페이스 또는 통신 유닛(28), 후 처리(post-processing) 유닛(32) 및 디스플레이 디바이스(34)를 포함할 수 있다.
목적지 디바이스(14)의 통신 인터페이스(28)는 예를 들어, 소스 디바이스(12)로부터 직접 또는 다른 소스, 예를 들어, 저장 디바이스, 예를 들어, 인코딩된 화상 데이터 저장 디바이스로부터, 인코딩된 화상 데이터(21) 또는 인코딩된 데이터(13)를 수신하도록 구성된다.
통신 인터페이스(22) 및 통신 인터페이스(28)는 소스 디바이스(12)와 목적지 디바이스(14) 사이의 직접 통신 링크 예를 들어, 직접 유선 또는 무선 연결 또는 임의의 종류의 네트워크, 예를 들어, 유선 또는 무선 네트워크 또는 이들의 조합, 또는 모든 종류의 사설 및 공용 네트워크, 또는 이들의 모든 종류의 조합을 통해, 인코딩된 화상 데이터(21) 또는 인코딩된 데이터(13)를 송신 또는 수신하도록 구성될 수 있다.
통신 인터페이스(22)는 예를 들어, 인코딩된 화상 데이터(21)를 적절한 포맷, 예를 들어, 통신 링크 또는 통신 네트워크를 통한 전송을 위한 패킷으로 패키징하도록(package) 구성될 수 있다.
통신 인터페이스(22)의 대응물(counterpart)을 형성하는 통신 인터페이스(28)는 예를 들어, 인코딩된 화상 데이터(21)를 획득하기 위해 인코딩된 데이터(13)를 디패키징하도록(de-package) 구성될 수 있다.
통신 인터페이스(22) 및 통신 인터페이스(28) 모두는 소스 디바이스(12)로부터 목적지 디바이스(14)를 가리키는 도 1a의 인코딩된 화상 데이터(13)에 대한 화살표로 표시된 바와 같이 단방향 통신 인터페이스 또는 양방향 통신 인터페이스로서 구성될 수 있으며, 예를 들어, 메시지 보내기 및 받기, 예를 들어 연결을 설정하고, 통신 링크 및/또는 데이터 전송 예를 들어, 인코딩된 화상 데이터 전송과 관련된 기타 정보를 확인하고 교환하도록 구성될 수 있다.
디코더(30)는 인코딩된 화상 데이터(21)를 수신하고, 디코딩된 화상 데이터(31) 또는 디코딩된 화상(31)을 제공하도록 구성된다(더 자세한 사항은 예를 들어, 도 3에 기반하여 후술될 것이다).
목적지 디바이스(14)의 후 처리기(post-processor)(32)는 디코딩된 화상 데이터(31)(또한 재구성된 화상 데이터라고도 함), 예를 들어, 디코딩된 화상(31)을 후처리하여, 후 처리된 화상 데이터(33) 예를 들어, 후 처리된 화상(33)을 획득하도록 구성된다. 후 처리 유닛(32)에 의해 수행되는 후 처리는 예를 들어, 색상 포맷 변환(예: YCbCr에서 RGB로), 색상 보정, 트리밍 또는 재 샘플링(re-sampling) 또는 기타 처리, 예를 들어, 디스플레이 디바이스(34)에 의해 디코딩된 화상 데이터(31)를 준비하는 것을 포함할 수 있다.
목적지 디바이스(14)의 디스플레이 디바이스(34)는 화상을 예를 들어, 사용자 또는 뷰어(viewer)에게 디스플레이하기 위해, 후 처리된 화상 데이터(33)를 수신하도록 구성된다. 디스플레이 디바이스(34)는 재구성된 화상을 표현하기 위한 임의의 종류의 디스플레이, 예를 들어, 통합 또는 외부 디스플레이 또는 모니터이거나 이를 포함할 수 있다. 디스플레이는 예를 들어, 액정 디스플레이(liquid crystal display, LCD), 유기 발광 다이오드(organic light emitting diode, OLED) 디스플레이, 플라즈마 디스플레이, 프로젝터, 마이크로 LED 디스플레이, 액정 온 실리콘(liquid crystal on silicon, LCoS), 디지털 조명 프로세서(digital light processor, DLP) 또는 기타 모든 종류의 디스플레이를 포함할 수 있다.
도 1이 소스 디바이스(12) 및 목적지 디바이스(14)를 별개의 디바이스로서 도시하지만, 디바이스의 실시 예는 또한 둘 또는 둘 모두의 기능, 소스 디바이스(12) 또는 대응하는 기능 및 목적지 디바이스(14) 또는 대응하는 기능을 포함할 수 있다. 이러한 실시 예에서, 소스 디바이스(12) 또는 대응하는 기능 그리고 목적지 디바이스(14) 또는 대응하는 기능은 동일한 하드웨어 및/또는 소프트웨어를 사용하거나 별개의 하드웨어 및/또는 소프트웨어 또는 이들의 임의의 조합에 의해 구현될 수 있다.
설명에 기반하여 당업자에게 명백한 바와 같이, 도 1에 도시된 바와 같이 소스 디바이스(12) 및/또는 목적지 디바이스(14) 내의 상이한 유닛 또는 상이한 기능의 기능의 존재 및(정확한) 분할은 실제 디바이스 및 애플리케이션에 따라 달라질 수 있다.
인코더(20)(예: 비디오 인코더(20)) 및 디코더(30)(예: 비디오 디코더(30))는 각각 하나 이상의 마이크로 프로세서, 디지털 신호 프로세서(digital signal processor, DSP), 애플리케이션 특정 집적 회로(application-specific integrated circuit, ASIC), 필드 프로그래밍 가능 게이트 어레이(field-programmable gate array, FPGA), 이산 로직, 하드웨어 또는 이들의 조합과 같은 다양한 적절한 회로 중 어느 하나로 구현될 수 있다. 기술이 소프트웨어에서 부분적으로 구현되면, 디바이스는 소프트웨어에 대한 명령을 적절한 컴퓨터가 판독 가능한 비 일시적 저장 매체에 저장할 수 있고, 본 개시의 기술을 수행하기 위해 하나 이상의 프로세서를 사용하여 하드웨어에서 명령을 실행할 수 있다. 앞서 언급한 것 중 하나(하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등 포함)는 하나 이상의 프로세서로 간주될 수 있다. 비디오 인코더(20) 및 비디오 디코더(30) 각각은 하나 이상의 인코더 또는 디코더에 포함될 수 있으며, 이들 중 어느 하나는 각각의 디바이스에서 결합된 인코더/디코더(CODEC)의 일부로서 통합될 수 있다.
도 2는 본 출원의 기술을 구현하도록 구성된 예시적인 비디오 인코더(20)의 개략적/개념적 블록도를 도시한다. 도 2의 예에서, 비디오 인코더(20)는 잔차 계산 유닛(204), 변환 처리 유닛(206), 양자화 유닛(208), 역 양자화(inverse quantization) 유닛(210) 및 역 변환(inverse transform) 처리 유닛(212), 재구성 유닛(214), 버퍼(216), 루프 필터 유닛(220), 디코딩된 화상 버퍼(decoded picture buffer, DPB)(230), 예측 처리 유닛(260) 및 엔트로피 인코딩 유닛(270)을 포함한다. 예측 처리 유닛(260)는 인터 예측 유닛(244), 인트라 예측 유닛(254) 및 모드 선택 유닛(262)를 포함할 수 있다. 인터 예측 유닛(244)는 모션 추정 유닛 및 모션 보상 유닛(도시되지 않음)를 포함할 수 있다. 도 2에 도시된 비디오 인코더(20)는 또한 하이브리드 비디오 인코더 또는 하이브리드 비디오 코덱에 따른 비디오 인코더로 지칭될 수 있다.
예를 들어, 잔차 계산 유닛(204), 변환 처리 유닛(206), 양자화 유닛(208), 예측 처리 유닛(260) 및 엔트로피 인코딩 유닛(270)은 인코더(20)의 순방향 신호 경로를 형성하는 반면, 예를 들어, 역 양자화 유닛(210), 역변환 처리 유닛(212), 재구성 유닛(214), 버퍼(216), 루프 필터(220), 디코딩된 화상 버퍼(decoded picture buffer, DPB)(230), 예측 처리 유닛(260)은 인코더의 역방향 신호 경로를 형성하며, 여기서 인코더의 역방향 신호 경로는 디코더의 신호 경로에 대응한다(도 3의 디코더(30) 참조).
인코더(20)는 예를 들어, 입력(202)에 의해, 예를 들어, 비디오 또는 비디오 시퀀스를 형성하는 일련의 화상의 화상인, 화상(201) 또는 화상(201)의 블록(203)을 수신하도록 구성된다. 화상 블록(203)은 또한 코딩될 현재 화상 블록 또는 화상 블록으로 지칭될 수 있고, 화상(201)은 (특히, 비디오 코딩에서, 현재 화상을 다른 화상, 예를 들어, 동일한 비디오 시퀀스 즉 현재 화상도 포함하는 비디오 시퀀스의 이전에 인코딩된 및/또는 디코딩된 화상 과 구별하기 위해) 코딩될 현재 화상 또는 화상으로서 지칭될 수 있다.
블록 예측 처리 유닛(260)이라고도 하는 예측 처리 유닛(260)은 블록(203)(현재 화상(201)의 현재 블록(203)) 및 재구성된 화상 데이터, 예를 들어, 버퍼(216)로부터의 동일한(현재) 화상의 참조 샘플 및/또는 디코딩된 화상 버퍼(230)로부터의 하나 또는 복수의 이전에 디코딩된 화상으로부터의 참조 화상 데이터(231)를 수신하거나 획득하고, 예측을 위해 이러한 데이터를 처리, 즉 인터 예측된 블록(245) 또는 인트라 예측된 블록(255)일 수 있는, 예측 블록(265)을 제공하도록 구성된다.
모드 선택 유닛(262)은 예측 모드(예를 들어, 인트라 또는 인터 예측 모드) 및/또는 잔차 블록(205)의 계산 및 재구성된 블록(215)의 재구성을 위해 예측 블록(265)으로 사용될, 대응하는 예측 블록(245 또는 255)을 선택하도록 구성될 수 있다.
모드 선택 유닛(262)의 실시 예는 (예: 예측 처리 유닛(260)에 의해 지원되는 것들로부터) 예측 모드를 선택하도록 구성될 수 있으며, 이는 최상의 매칭 다시 말해서, 최소 잔차(최소 잔차는 전송 또는 저장을 위한 더 나은 압축을 의미함), 또는 최소 시그널링 오버헤드(최소 시그널링 오버 헤드는 전송 또는 저장을 위한 더 나은 압축을 의미함)를 제공하거나, 또는 둘 모두를 고려하거나 균형을 유지한다. 모드 선택 유닛(262)은 레이트 왜곡 최적화(rate distortion optimization, RDO)에 기반하여 예측 모드를 결정하도록 구성될 수 있으며, 다시 말해서, 최소 레이트 왜곡 최적화를 제공하거나 또는 연관된 레이트 왜곡이 적어도 예측 모드 선택 기준을 충족시키는 예측 모드를 선택하도록 구성될 수 있다.
인트라 예측 유닛(254)은 추가로, 인트라 예측 파라미터 예를 들어, 선택된 인트라 예측 모드에 기반하여 인트라 예측 블록(255)을 결정하도록 구성된다. 어쨌든, 블록에 대한 인트라 예측 모드를 선택한 후, 인트라 예측 유닛(254)은 또한 인트라 예측 파라미터, 즉 블록에 대해 선택된 인트라 예측 모드를 나타내는 정보를 엔트로피 인코딩 유닛(270)에 제공하도록 구성된다. 일 예에서, 인트라 예측 유닛(254)은 후술하는 인트라 예측 기술의 임의의 조합을 수행하도록 구성될 수 있다.
도 3은 본 출원의 기술을 구현하도록 구성된 예시적인 비디오 디코더(30)이다. 비디오 디코더(30)는 예를 들어, 인코더(100)에 의해 인코딩된, 인코딩된 화상 데이터(예: 인코딩된 비트스트림)(21)를 수신하여 디코딩된 화상(131)을 획득하도록 구성된다. 디코딩 프로세스 동안, 비디오 디코더(30)는 비디오 데이터, 예를 들어, 비디오 인코더(100)로부터의 인코딩된 비디오 슬라이스의 화상 블록 및 관련 신택스 엘리먼트를 나타내는 인코딩된 비디오 비트스트림을 수신한다.
도 3의 예에서, 디코더(30)는 엔트로피 디코딩 유닛(304), 역 양자화 유닛(310), 역 변환 처리 유닛(312), 재구성 유닛(314)(예를 들어, 합산기(summer)(314)), 버퍼(316), 루프 필터(320), 디코딩된 화상 버퍼(330) 및 예측 처리 유닛(360)을 포함한다. 예측 처리 유닛(360)는 인터 예측 유닛(344), 인트라 예측 유닛(354) 및 모드 선택 유닛(362)를 포함할 수 있다. 비디오 디코더(30)는, 일부 예들에서, 도 2의 비디오 인코더(100)에 대해 설명된 인코딩 패스와 일반적으로 역인 디코딩 패스를 수행할 수 있다.
엔트로피 디코딩 유닛(304)은 인코딩된 화상 데이터(21)에 대한 엔트로피 디코딩을 수행하여, 예를 들어, 양자화된 계수(309) 및/또는 디코딩된 코딩 파라미터(도 3에 도시되지 않음), 예를 들어, (디코딩된) 인터 예측 파라미터, 인트라 예측 파라미터, 루프 필터 파라미터 및/또는 기타 신택스 엘리먼트 중 일부 또는 전부를 획득하도록 구성된다. 엔트로피 디코딩 유닛(304)은 추가로, 인터 예측 파라미터, 인트라 예측 파라미터 및/또는 다른 신택스 엘리먼트를 예측 처리 유닛(360)으로 전달하도록 구성된다. 비디오 디코더(30)는 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 신택스 엘리먼트를 수신할 수 있다.
역 양자화 유닛(310)은 역 양자화 유닛(110)과 기능면에서 동일할 수 있고, 역변환 처리 유닛(312)은 역변환 처리 유닛(112)과 기능면에서 동일할 수 있으며, 재구성 유닛(314)은 재구성 유닛(114)과 기능면에서 동일할 수 있고, 버퍼(316)는 버퍼(116)와 기능면에서 동일할 수 있으며, 루프 필터(320)는 루프 필터(120)와 기능면에서 동일할 수 있고, 디코딩된 화상 버퍼(330)는 디코딩된 화상 버퍼(130)와 기능면에서 동일할 수 있다.
예측 처리 유닛(360)은 인터 예측 유닛(344) 및 인트라 예측 유닛(354)을 포함할 수 있고, 인터 예측 유닛(344)은 기능적으로 인터 예측 유닛(144)과 유사할(resemble) 수 있고, 인트라 예측 유닛(354)은 기능적으로 인트라 예측 유닛(154)과 유사할 수 있다. 예측 처리 유닛(360)은 일반적으로 블록 예측을 수행하거나 및/또는 인코딩된 데이터(21)로부터 예측 블록(365)을 획득하고, 예측 관련 파라미터 및/또는 선택된 예측 모드에 대한 정보를(명시적으로 또는 묵시적으로) 예를 들어, 엔트로피 디코딩 유닛(304)으로부터 수신하거나 획득하도록 구성된다.
비디오 슬라이스가 인트라 코딩(I) 슬라이스로 코딩될 때, 예측 처리 유닛(360)의 인트라 예측 유닛(354)은 시그널링된 인트라 예측 모드 및 현재 프레임 또는 화상의 이전에 디코딩된 블록으로부터의 데이터에 기반하여, 현재 비디오 슬라이스의 화상 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 비디오 프레임이 인터 코딩된(즉, B 또는 P) 슬라이스로 코딩될 때, 예측 처리 유닛(360)의 인터 예측 유닛(예: 모션 보상 유닛)은, 엔트로피 디코딩 유닛(304)으로부터 수신된 모션 벡터 및 다른 신택스 엘리먼트에 기반하여 현재 비디오 슬라이스의 비디오 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 인터 예측을 위해, 예측 블록은 참조 화상 리스트 중 하나 내의 참조 화상 중 하나로부터 생산될(produce) 수 있다. 비디오 디코더(30)는 DPB(330)에 저장된 참조 화상에 기반한 디폴트 구성 기술을 사용하여 참조 프레임 리스트인 리스트 0 및 리스트 1을 구성할 수 있다.
예측 처리 유닛(360)은 모션 벡터 및 다른 신택스 엘리먼트를 파싱하는 것에 의해 현재 비디오 슬라이스의 비디오 블록에 대한 예측 정보를 결정하고, 예측 정보를 사용하여 디코딩되는 현재 비디오 블록에 대한 예측 블록을 생성하도록 구성된다. 예를 들어, 예측 처리 유닛(360)은 수신된 신택스 엘리먼트의 일부를 사용하여, 비디오 슬라이스의 비디오 블록을 코딩하는데 사용되는 예측 모드(예: 인트라 예측 또는 인터 예측), 인터 예측 슬라이스 유형(예: B 슬라이스, P 슬라이스 또는 GPB 슬라이스), 슬라이스에 대한 참조 화상 리스트 중 하나 이상에 대한 구성 정보, 슬라이스의 각 인터 인코딩된 비디오 블록에 대한 모션 벡터, 슬라이스의 각 인터 코딩된 비디오 블록에 대한 인터 예측 상태 및 현재 비디오 슬라이스의 비디오 블록을 디코딩하기 위한 기타 정보를 결정하도록 구성된다.
역 양자화 유닛(310)은 비트스트림에서 제공되면서 또한 엔트로피 디코딩 유닛(304)에 의해 디코딩된 양자화된 변환 계수를 역 양자화(inverse quantize), 즉 역양자화(de-quantize)하도록 구성된다. 역 양자화 프로세스는 양자화 정도(degree) 및 마찬가지로 적용되어야 하는 역 양자화 정도를 결정하기 위해, 비디오 슬라이스의 각 비디오 블록에 대해 비디오 인코더(100)에 의해 계산된 양자화 파라미터의 사용을 포함할 수 있다.
역 변환 처리 유닛(312)은 픽셀 도메인에서 잔차 블록을 생성하기 위하여, 역 변환, 예를 들어, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역 변환 프로세스를 변환 계수에 적용하도록 구성된다.
재구성 유닛(314)(예: 합산기(314))은 역 변환 블록(313)(즉, 재구성된 잔차 블록(313))을 예측 블록(365)에 추가하여, 예를 들어, 재구성된 잔차 블록(313)의 샘플 값과 예측 블록(365)의 샘플 값을 더하는 것에 의해, 샘플 도메인에서 재구성된 블록(315)을 획득하도록 구성된다.
루프 필터 유닛(320)(코딩 루프에서 또는 코딩 루프 이후)은 재구성된 블록(315)을 필터링하여 예를 들어, 픽셀 전환(pixel transition)을 평활화하거나(smooth) 그렇지 않으면, 비디오 품질을 향상시켜서 필터링된 블록(321)을 획득하도록 구성된다. 일 예에서, 루프 필터 유닛(320)은 후술하는 필터링 기술의 임의의 조합을 수행하도록 구성될 수 있다. 루프 필터 유닛(320)은 디블로킹(de-blocking) 필터, 샘플 적응 오프셋(sample-adaptive offset, SAO) 필터 또는 다른 필터 예를 들어, 양방향(bilateral) 필터 또는 적응형 루프 필터(adaptive loop filter, ALF) 또는 선명하게 하기(sharpening) 또는 평활화 필터 또는 협업(collaborative) 필터와 같은 하나 이상의 루프 필터를 나타내도록 의도된다. 루프 필터 유닛(320)은 도 3에 도시된 바와 같이 인 루프 필터(in loop filter)이어도, 다른 구성에서 루프 필터 유닛(320)은 포스트 루프 필터로 구현될 수 있다.
주어진 프레임 또는 화상에서의 디코딩된 비디오 블록(321)은 이후의 모션 보상을 위해 사용되는 참조 화상을 저장하는 디코딩된 화상 버퍼(330)에 저장된다.
디코더(30)는 디코딩된 화상(331)을 예를 들어, 출력(332)을 통해 사용자에게 제시하거나(present) 보여주기 위해 출력하도록 구성된다.
압축된 비트스트림을 디코딩하기 위해 비디오 디코더(30)의 다른 변형이 사용될 수 있다. 예를 들어, 디코더(30)는 루프 필터링 유닛(320) 없이 출력 비디오 스트림을 생산할 수 있다. 예를 들어, 비 변환 기반 디코더(non-transform based decoder)(30)는 특정 블록 또는 프레임에 대해 역변환 처리 유닛(312) 없이 직접 잔차 신호를 역 양자화할 수 있다. 다른 구현에서, 비디오 디코더(30)는 역 양자화 유닛(310) 및 역변환 처리 유닛(312)이 단일 유닛으로 조합될 수 있다.
HEVC/H.265 표준에 따라 35개의 인트라 예측 모드가 사용 가능하다. 도 4에 도시된 바와 같이, 이 세트는 평면 모드(인트라 예측 모드 인덱스는 0), DC 모드(인트라 예측 모드 인덱스는 1) 및 180°범위를 커버(cover)하면서 또한 도 4에서 검은 색 화살표로 표시된 2 ~ 34의 인트라 예측 모드 인덱스 값 범위를 가지는 방향(각도) 모드를 포함한다. 자연스러운 비디오에 존재하는 임의의 에지(edge) 방향을 캡처하기 위해, 지향성 인트라 모드의 수가 HEVC에서 사용되는 33개에서 65개로 확장되었다. 추가 지향성 모드는 도 4에서 점선 화살표로 표시되며, 평면 및 DC 모드는 동일하게 유지된다. 인트라 예측 모드에서 커버되는 범위는 180°보다 더 넓을 수 있다. 특히, 인덱스 값이 3 ~ 64인 62개의 지향성 모드는 약 230°범위를 커버하며, 즉, 여러 쌍의 모드는 반대 방향을 갖는다. HEVC HM(Reference Model) 및 JEM 플랫폼의 경우, 한 쌍의 각도 모드(즉, 모드 2 및 모드 66)만 도 4에 도시된 바와 같이 반대 방향을 갖는다. 예측자(predictor)를 구성하기 위해, 기존 각도 모드는 참조 샘플을 취하고(필요한 경우) 이를 필터링하여 샘플 예측자를 획득한다. 예측자를 구성하는 데 필요한 참조 샘플의 수는 보간에 사용되는 필터의 길이에 따라 다르다(예: 이중 선형 및 입방형 필터(bilinear and cubic filter)의 길이는 각각 2와 4임).
디코더는 상기 방법을 수행하도록 구성된 처리 회로를 포함한다.
본 개시에서, 상기 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품이 개시된다.
본 개시에서, 비디오 데이터를 디코딩하기 위한 디코더가 개시되며, 상기 디코더는 하나 이상의 프로세서; 및 프로세서에 결합되고 프로세서에 의한 실행을 위한 프로그래밍을 저장하는 컴퓨터가 판독 가능한 비 일시적 저장 매체를 포함하고, 프로그래밍은 프로세서에 의해 실행될 때 상기 방법을 수행하도록 디코더를 구성한다.
도 7은 예를 들어 VCC에 제안된, 67개의 인트라 예측 모드의 예를 도시하며, 67개의 인트라 예측 모드의 복수의 인트라 예측 모드는, 평면 모드(인덱스 0), DC 모드(인덱스 1) 및 인덱스가 2~66인 각도 모드를 포함하며, 도 7의 왼쪽 하단 각도 모드는 인덱스 2를 지칭하고, 도 7의 오른쪽 상단 각도 모드인 인덱스 66이 될 때까지 인덱스의 넘버링이 증가한다.
도 10은 본 개시의 실시 예에 따른 네트워크 디바이스(1300)의 개략도이다. 네트워크 디바이스(1300)는 여기에 설명된 바와 같이 개시된 실시 예들을 구현하기에 적합하다. 네트워크 디바이스(1300)는 데이터를 수신하기 위한 진입 포트(1310) 및 수신기 유닛(Rx)(1320); 데이터를 처리하는 프로세서, 로직 유닛 또는 중앙 처리 유닛(CPU)(1330); 데이터를 전송하기 위한 송신기 유닛(Tx)(1340) 및 출구 포트(1350); 및 데이터를 저장하기 위한 메모리(1360)를 포함한다. 네트워크 디바이스(1300)는 광학 또는 전기 신호의 출력 및 유입을 위해, 또한 진입 포트(1310), 수신기 유닛(1320), 송신기 유닛(1340) 및 출구 용 출구 포트(1350)에 결합된 광-전기(optical-to-electrical, OE) 구성 요소 및 전기-광(electrical-to-optical, EO) 구성 요소를 포함할 수 있다.
프로세서(1330)는 하드웨어 및 소프트웨어로 구현된다. 프로세서(1330)는 하나 이상의 CPU 칩, 코어(예를 들어, 멀티 코어 프로세서), FPGA(field-programmable gate array), ASIC(application specific integrated circuits) 및 DSP(digital signal processor)로 구현될 수 있다. 프로세서(1330)는 진입 포트(1310), 수신기 유닛(1320), 송신기 유닛(1340), 출구 포트(1350) 및 메모리(1360)와 통신한다. 프로세서(1330)는 코딩 모듈(1370)을 포함한다. 코딩 모듈(1370)은 위에서 설명된 개시된 실시 예들을 구현한다. 예를 들어, 코딩 모듈(1370)은 다양한 네트워킹 기능을 구현, 처리, 준비 또는 제공한다. 따라서, 코딩 모듈(1370)의 포함은 네트워크 디바이스(1300)의 기능에 실질적인 개선을 제공하고 네트워크 디바이스(1300)의 다른 상태로의 변환에 영향을 미친다. 다르게는, 코딩 모듈(1370)은 메모리(1360)에 저장되고 프로세서(1330)에 의해 실행되는 명령으로 구현된다.
메모리(1360)는 하나 이상의 디스크, 테이프 드라이브 및 솔리드 스테이트 드라이브를 포함하고 오버 플로우 데이터 저장 디바이스로 사용될 수 있으며, 이러한 프로그램이 실행을 위해 선택될 때 프로그램을 저장하고, 프로그램 실행 중 판독된 명령 및 데이터를 저장하기 위해 사용될 수 있다. 메모리(1360)는 휘발성 및/또는 비 휘발성일 수 있으며 ROM(read-only memory), RAM(random access memory), TCAM(ternary content-addressable memory) 및/또는 SRAM(static random-access memory)일 수 있다.
도 10은 다양한 실시 예를 구현하는 데 사용될 수 있는 장치(1100)의 블록도이다. 장치(1100)는 도 1에 도시된 바와 같은 소스 디바이스(102) 또는 도 2에 도시된 바와 같은 비디오 인코더(200), 또는 도 1에 도시된 바와 같은 목적지 디바이스(104) 또는 도 2에 도시된 바와 같은 비디오 디코더(300)일 수 있다. 추가적으로, 장치(1100)는 설명된 엘리먼트들 중 하나 이상을 호스팅할(host) 수 있다. 일부 실시 예에서, 장치(1100)는 스피커, 마이크로폰, 마우스, 터치 스크린, 키패드, 키보드, 프린터, 디스플레이 등과 같은 하나 이상의 입력/출력 디바이스를 갖추고 있다. 장치(1100)는 버스에 연결된 하나 이상의 중앙 처리 유닛(CPU)(1510), 메모리(1520), 대용량 저장 장치(mass storage)(1530), 비디오 어댑터(1540) 및 I/O 인터페이스(1560)를 포함할 수 있다. 버스는 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 비디오 버스 등을 포함하는 여러 버스 아키텍처 중 하나 이상이다.
CPU(1510)는 임의의 유형의 전자 데이터 프로세서를 가질 수 있다. 메모리(1520)는 SRAM(static random access memory), DRAM(dynamic random access memory), SDRAM(synchronous DRAM), ROM(read-only memory), 이들의 조합 등과 같은 임의의 유형의 시스템 메모리를 갖거나 가질 수 있다. 일 실시 예에서, 메모리(1520)는 부팅시 사용하기 위한 ROM, 프로그램을 실행하는 동안 사용하기 위한 프로그램 및 데이터 저장을 위한 DRAM을 포함할 수 있다. 실시 예에서, 메모리(1520)는 비 일시적이다. 대용량 저장 장치(1530)는 데이터, 프로그램 및 기타 정보를 저장하고, 데이터, 프로그램 및 기타 정보를 버스를 통해 액세스할 수 있도록하는 임의의 유형의 저장 디바이스를 포함한다. 대용량 저장 장치(1530)는 예를 들어, 솔리드 스테이트 드라이브, 하드 디스크 드라이브, 자기 디스크 드라이브, 광 디스크 드라이브 등 중 하나 이상을 포함한다.
비디오 어댑터(1540) 및 I/O 인터페이스(1560)는 장치(1100)에 외부 입력 및 출력 디바이스를 연결하기 위한 인터페이스를 제공한다. 예를 들어, 장치(1100)는 클라이언트에게 SQL 명령 인터페이스를 제공할 수 있다. 도시된 바와 같이, 입력 및 출력 디바이스의 예는 비디오 어댑터(1540)에 결합된 디스플레이(1590) 및 I/O 인터페이스(1560)에 결합된 마우스/키보드/프린터(1570)의 임의의 조합을 포함한다. 다른 디바이스가 장치(1100)에 결합될 수 있고, 추가 또는 더 적은 인터페이스 카드가 사용될 수 있다. 예를 들어, 직렬 인터페이스 카드(도시되지 않음)를 사용하여 프린터에 직렬 인터페이스를 제공할 수 있다.
장치(1100)는 또한 이더넷 케이블 등과 같은 유선 링크 및/또는 액세스 노드 또는 하나 이상의 네트워크(1580)에 대한 무선 링크를 포함하는 하나 이상의 네트워크 인터페이스(1550)를 포함한다. 네트워크 인터페이스(1550)는 장치(1100)가 네트워크(1580)를 통해 원격 유닛과 통신할 수 있게 한다. 예를 들어, 네트워크 인터페이스(1550)는 데이터베이스에 통신을 제공할 수 있다. 일 실시 예에서, 장치(1100)는 데이터 처리 및 다른 처리 유닛, 인터넷, 원격 저장 설비 등과 같은 원격 디바이스와의 통신을 위한 근거리 네트워크 또는 광역 네트워크에 결합된다.
주어진 블록 내에서 픽셀을 예측하는 데 필요한 가중치 계수(weighting coefficient) 값을 계산하기 위해 부분 선형 근사(Piecewise linear approximation)가 도입되었다. 부분 선형 근사는 한편으로는 간단한 가중화된 계수 계산과 비교하여 거리 가중 예측 메커니즘의 계산 복잡성을 크게 줄이며, 다른 한편으로는 이전 단순화에 비해 가중치 계수 값의 정확도를 높이는 데 도움이 된다.
실시 예는 다른 양방향 및 위치 의존적 인트라 예측 기술(예: PDPC의 상이한 수정)뿐만 아니라, 한 픽셀에서 다른 픽셀까지의 거리에 의존하는 가중 계수를 사용하여 화상의 상이한 부분을 블렌딩(예: 이미지 처리의 일부 블렌딩 방법)하는 메커니즘에 적용될 수 있다.
본 개시에 설명된 주제 및 작동의 구현은 디지털 전자 회로, 또는 본 개시에 개시된 구조 및 그들의 구조적 등가물을 포함하는, 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어서, 또는 이들의 하나 이상의 조합으로 구현될 수 있다. 본 개시에 설명된 주제의 구현은 하나 이상의 컴퓨터 프로그램, 즉, 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 작동을 제어하기 위해 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램 명령의 하나 이상의 모듈로서 구현될 수 있다. 다르게는 또는 추가로, 프로그램 명령은 인공적으로 생성된 전파 신호, 예를 들어, 데이터 처리 장치에 의한 실행을 위해 적절한 수신기 장치로의 전송을 위해 정보를 인코딩하도록 생성된 기계 생성 전기, 광학 또는 전자기 신호에 인코딩될 수 있다. 컴퓨터 저장 매체, 예를 들어, 컴퓨터가 판독 가능한 매체는 컴퓨터 판독 가능 저장 디바이스, 컴퓨터 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스, 또는 그들 중 하나 이상의 조합일 수 있거나 이들을 포함할 수 있다. 더욱이, 컴퓨터 저장 매체는 전파된 신호가 아니지만, 컴퓨터 저장 매체는 인위적으로 생성된 전파 신호로 인코딩된 컴퓨터 프로그램 명령의 소스 또는 목적지일 수 있다. 컴퓨터 저장 매체는 또한 하나 이상의 별개의 물리적 및/또는 비 일시적 구성 요소 또는 매체(예를 들어, 다중 CD, 디스크 또는 다른 저장 디바이스)일 수 있거나 그 안에 포함될 수 있다.
일부 구현에서, 본 개시에 설명된 작동은 클라우드 컴퓨팅 네트워크의 서버에서 제공되는 호스팅된 서비스로서 구현될 수 있다. 예를 들어, 컴퓨터가 판독 가능한 저장 매체는 클라우드 컴퓨팅 네트워크 내에서 논리적으로 그룹화되고 액세스 가능할 수 있다. 클라우드 컴퓨팅 네트워크 내의 서버는 클라우드 기반 서비스를 제공하기 위한 클라우드 컴퓨팅 플랫폼을 포함할 수 있다. 용어 "클라우드", "클라우드 컴퓨팅" 및 "클라우드 기반"은 본 개시의 범위를 벗어나지 않고 적절하게 상호 교환적으로 사용될 수 있다. 클라우드 기반 서비스는 클라이언트 컴퓨터에서 로컬로 실행되는 애플리케이션을 향상, 보완 또는 대체하기 위해 서버에 의해 제공되고 네트워크를 통해 클라이언트 플랫폼에 전달되는 호스팅 서비스일 수 있다. 회로는 클라우드 기반 서비스를 사용하여 리소스가 회로에 전달되기까지 오랜 시간이 소요되는 소프트웨어 업그레이드, 애플리케이션 및 기타 리소스를 신속하게 수신할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은 컴파일 또는 해석 언어, 선언적 또는 절차적 언어를 포함하여 모든 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램 또는 모듈, 구성 요소, 서브 루틴, 개체 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 유닛을 포함하는 모든 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 해당할 수 있지만 반드시 그럴 필요는 없다. 프로그램은 다른 프로그램이나 데이터를 보유하는 파일의 일부(예를 들어, 마크업(marku) 언어 문서에 저장된 하나 이상의 스크립트), 대응하는 프로그램 전용 단일 파일 또는 여러개의 조정된 파일(예를 들어, 하나 이상의 모듈, 서브프로그램 또는 코드 일부를 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 한 사이트에 위치하거나 여러 사이트에 분산되고 통신 네트워크로 상호 연결된 여러 컴퓨터에서 실행되도록 배포될 수 있다.
본 개시에서 설명된 프로세스 및 로직 흐름은 입력 데이터에 대해 작동하고 출력을 생성하는 것에 의해 작동을 수행하기 위해, 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능한 프로세서에 의해 수행될 수 있다. 프로세스 및 로직 흐름은 또한 수행될 수 있으며, 장치는 특수 목적 로직 회로, 예를 들어, FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit)로 구현될 수도 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서는 예를 들어, 범용 및 특수 목적의 마이크로프로세서와 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로 프로세서는 읽기 전용 메모리나 랜덤 액세스 메모리 또는 둘 다에서 명령과 데이터를 수신한다. 컴퓨터의 필수 엘리먼트는 명령에 따라 동작을 수행하기 위한 프로세서와 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치, 예를 들어, 자기, 광 자기 디스크 또는 광 디스크로부터 데이터를 수신하거나 데이터를 전송하거나 둘 모두를 포함하거나 작동 가능하게 결합된다. 그러나 컴퓨터에는 이러한 디바이스가 필요하지 않다. 또한, 컴퓨터는 다른 디바이스 예를 들어, 몇가지만 말하면, 휴대 전화, PDA(Personal Digital Assistant), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS(Global Positioning System) 수신기 또는 휴대용 저장 디바이스(예: 범용 직렬 버스(universal serial bus, USB) 플래시 드라이브)에 내장될 수 있다. 컴퓨터 프로그램 명령 및 데이터를 저장하기에 적합한 디바이스는 예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스와 같은 반도체 메모리 디바이스를 포함하는 모든 형태의 비 휘발성 메모리, 매체 및 메모리 디바이스; 예를 들어, 내부 하드 디스크 또는 이동식 디스크와 같은 자기 디스크; 광 자기 디스크; 및 CD ROM 및 DVD-ROM 디스크를 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다.
본 개시는 많은 특정 구현 세부 사항을 포함하지만, 이는 임의의 구현 또는 청구될 수 있는 범위에 대한 제한으로 해석되어서는 안되며, 특정 구현의 특정 구현에 특정한 특징의 설명으로 해석되어야 한다. 별개의 구현의 맥락(context)에서 본 개시에 설명된 특정 특징은 또한 단일 구현에서 조합하여 구현될 수 있다. 반대로, 단일 구현의 맥락에서 설명되는 다양한 특징은 또한 여러 구현에서 개별적으로 또는 임의의 적절한 서브 조합으로 구현될 수 있다. 더욱이, 특징이 특정 조합으로 작용하는 것으로 위에서 설명될 수 있고 심지어 처음에 그렇게 청구될 수도 있지만, 청구된 조합으로부터의 하나 이상의 특징은 일부 경우에 조합으로부터 절제될(excised) 수 있고, 청구된 조합은 서브 조합 또는 서브 조합의 변형으로 향할 수 있다.
유사하게, 작동이 특정 순서로 도면에 도시되어 있지만, 이는 바람직한 결과를 달성하기 위해 그러한 작동이 도시된 특정 순서 또는 순차적 순서로 수행되거나 모든 예시된 작동이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 특정 상황에서는 멀티 태스킹 및 병렬 처리가 유리할 수 있다. 더욱이, 위에서 설명된 구현에서 다양한 시스템 구성 요소의 분리는 모든 구현에서 그러한 분리를 요구하는 것으로 이해되어서는 안되며, 설명된 프로그램 구성 요소 및 시스템은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 여러 소프트웨어 제품에 패키지로 통합될 수 있음을 이해해야 한다.
따라서, 주제의 특정 구현이 설명되었다. 다른 구현은 다음 청구항의 범위 내에 있다. 일부 경우에, 청구항에 언급된 동작은 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 얻을 수 있다. 또한, 첨부된 도면에 묘사된 프로세스는 바람직한 결과를 획득하기 위해 도시된 특정 순서 또는 순차적인 순서를 반드시 필요로 하지 않는다. 특정 구현에서, 멀티태스킹(multitasking) 및 병렬 처리가 유리할 수 있다.
본 개시에서 여러 실시 예가 제공되었지만, 개시된 시스템 및 방법은 본 개시의 사상 또는 범위를 벗어나지 않고 많은 다른 특정 형태로 구현될 수 있음을 이해해야 한다. 본 실시 예는 제한적이지 않고 예시적인 것으로 간주되어야 하며, 의도는 여기에 제공된 세부 사항에 제한되지 않는다. 예를 들어, 다양한 엘리먼트 또는 구성 요소는 다른 시스템에서 결합 또는 통합될 수 있거나, 특정 기능이 생략되거나 구현되지 않을 수 있다.
또한, 다양한 실시 예에서 개별적 또는 별개로 설명되고 예시된 기술, 시스템, 서브 시스템 및 방법은 본 개시의 범위를 벗어나지 않고 다른 시스템, 모듈, 기술 또는 방법과 결합되거나 통합될 수 있다. 결합되거나 직접 결합되거나 서로 통신하는 것으로 도시되거나 논의된 다른 항목은, 간접적으로 결합되거나 전기적, 기계적으로 또는 다른 방식으로 일부 인터페이스, 디바이스 또는 중간 구성 요소를 통해 통신할 수 있다. 변경, 대체 및 변경의 다른 예는 당업자에 의해 확인될 수 있고 여기에 개시된 정신 및 범위를 벗어나지 않고 이루어질 수 있다.
Claims (31)
- 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 방법으로서, 상기 방법은,
현재 블록에 인접한 제1 이웃 블록의 제1 인트라 예측(intra prediction) 모드를 획득하는 단계(S1410);
상기 제1 인트라 예측 모드가 제2 이웃 블록의 제2 인트라 예측 모드와 상이한 경우, 상기 제1 인트라 예측 모드에 대한 유효성(validity)을 결정하는 단계(S1420);
상기 유효성의 결정에 응답하여, 상기 제1 인트라 예측 모드를 복수의 유효성 버퍼 중 대응하는 유효성 버퍼에 저장하는 단계; 및
인트라 예측 모드를 상기 MPM 리스트에 저장하기 위해, 상기 유효성 버퍼에서 상기 인트라 예측 모드를 페치(fetch)하는 단계(S1440) - 상기 페치는 상기 MPM 리스트가 최대 개수의 인트라 예측 모드를 포함하거나 상기 유효성 버퍼에 저장된 인트라 예측 모드가 상기 MPM 리스트로 페치될 때까지 가장 유효한 버프부터 시작함 -
를 포함하고,
상기 유효성을 결정하는 단계는,
상기 유효성을 제1 값으로 설정하는 단계 - 상기 제1 값은 유효한 비 지향성(non-directional) 예측 모드임 -; 및
상기 제1 이웃 블록이 상기 현재 블록의 왼쪽 측에 위치하고, 상기 제1 인트라 예측 모드가 제3 값보다 크거나 같고, 제4 값과 제5 값의 차이보다 작은 경우, 상기 유효성을 제2 값으로 설정하는 단계
를 포함하고,
상기 제2 값은 유효한 지향성 예측 모드를 지시하고, 상기 제3 값은 수평 예측 모드의 인덱스이고, 제4 값은 수직 예측 모드의 인덱스이며, 상기 제5 값은 미리 구성된 임계 값인, 방법. - 제1항에 있어서,
상기 유효성은, 상기 제1 인트라 예측 모드가 지향성 모드(directional mode)인지 여부, 상기 제1 이웃 블록이 위치한 현재 블록의 측 또는 상기 제1 인트라 예측 모드의 방향에 의존하는(depend), 방법. - 제1항에 있어서,
상기 유효성을 결정하는 단계는,
상기 제1 이웃 블록이 상기 현재 블록 위에 위치하고, 상기 제1 인트라 예측 모드가 상기 제3 값과 상기 제5 값의 합보다 크며, 상기 제1 인트라 예측 모드가 상기 제5 값보다 작거나 같은 경우, 상기 유효성을 상기 제2 값으로 설정하는 단계
를 더 포함하는, 방법. - 제3항에 있어서,
상기 제5 값은 4와 같은, 방법. - 제4항에 있어서,
상기 유효성 버퍼 중 제1 유효성 버퍼에 대한 유효성은 상기 제2 값이고, 상기 유효성 버퍼 중 제2 유효성 버퍼에 대한 유효성은 상기 제1 값이며, 상기 제1 값은 상기 제2 값보다 작은, 방법. - 제1항에 있어서,
제1 이웃 블록이 왼쪽 이웃 블록 또는 왼쪽 아래 이웃 블록인 경우, 상기 유효성을 제2 값으로 설정하는 단계; 및
상기 제1 인트라 예측 모드가 -10보다 크고 상기 제3 값보다 작은 경우, 또는 상기 제1 인트라 예측 모드가 상기 제4 값과 상기 제5 값의 차이보다 같거나 크고 상기 제4 값과 상기 제5 값의 합보다 같거나 작은 경우, 상기 유효성을 제6 값으로 설정하는 단계
더 포함하는, 방법. - 제6항에 있어서,
상기 제6 값은 상기 제2 값과 상기 제1 값보다 작은, 방법. - 제1항에 있어서,
상기 제1 이웃 블록이 위 이웃 블록 또는 오른쪽 위 이웃 블록인 경우, 상기 유효성을 상기 제2 값으로 설정하는 단계;
상기 제1 인트라 예측 모드가 상기 제4 값보다 크고 76보다 작은 경우, 또는 상기 제1 인트라 예측 모드가 상기 제3 값과 상기 제5 값의 차이보다 같거나 크고 상기 제3 값과 상기 제5 값의 합보다 같거나 작은 경우, 상기 유효성을 제6 값으로 설정하는 단계 - 상기 제6 값은 엄격히 유효하지 않은 지향성 예측 모드를 지시함 -
를 더 포함하는, 방법. - 제1항에 있어서,
상기 제1 이웃 블록이 왼쪽 위 이웃 블록인 경우, 상기 유효성을 상기 제2 값으로 설정하는 단계; 및
상기 제1 인트라 예측 모드가 상기 제3 값보다 크고 상기 제4 값보다 작은 경우, 또는 상기 제1 인트라 예측 모드가 제7 값과 상기 제5 값의 차이보다 같거나 크고 2와 상기 제5 값의 합보다 같거나 작은 경우, 상기 유효성을 제6 값으로 설정하는 단계 - 상기 제6 값은 엄격히 유효하지 않은 지향성 예측 모드를 지시하고, 상기 제7 값은 수직 대각선 모드의 인덱스임 -
를 포함하는, 방법. - 제1항에 있어서,
상기 제1 인트라 예측 모드를 상기 제1 인트라 예측 모드와 동일한 유효성 식별을 갖는 제1 버퍼에 저장하는 단계;
제2 버퍼와 제3 버퍼가 MPM 리스트 크기보다 같거나 큰 인트라 예측 모드의 수를 저장하는지를 확인하는 단계 - 상기 제2 버퍼는 상기 유효한 지향성 인트라 예측 모드를 위한 것이고, 상기 제3 버퍼는 유효한 비 비향성 제1 인트라 예측 모드 값을 위한 것임 -; 및
상기 제2 버퍼와 상기 제3 버퍼가 상기 MPM 리스트 크기보다 같거나 큰 인트라 예측 모드의 수를 저장하는 경우 상기 MPM 리스트를 채우는(filling) 단계
를 더 포함하는 방법. - 제3항에 있어서,
버퍼는 상기 MPM 리스트를 덧붙이지(populate) 않고,
상기 버퍼 및 상기 제1 인트라 예측 모드가 제7 값의 유효성을 갖는 경우, 상기 유효성 버퍼 중 임의의 버퍼에 저장되지 않고, 상기 제7 값은 엄격히 유효하지 않은 지향성 예측 모드를 지시하는, 방법. - 제1항에 있어서,
상기 유효성 버퍼에 저장된 인트라 예측 모드의 수가 상기 MPM 리스트의 크기보다 작은 경우, 상기 MPM 리스트 내의 빈(vacant) 위치가 기본(default) 모드로 채워지는, 방법. - 이미지를 디코딩하는 방법으로서,
인코딩된 비트스트림으로부터 모드 지시(indication)를 추론하는(infer) 단계;
제1항 내지 제12항 중 어느 한 항에 따른 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 방법의 단계; 및
상기 MPM 리스트에 대한 포인터(pointer)로서의 모드 지시 및 상기 MPM 리스트에 따라 상기 이미지에서의 현재 블록을 재구성하는 단계
를 포함하는 방법. - 이미지를 인코딩하는 방법으로서,
제1항 내지 제12항 중 어느 한 항에 따른 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 방법의 단계;
상기 MPM 리스트에 대한 포인터로서 현재 블록에 대한 모드 지시를 결정하는 단계; 및
상기 모드 지시를 인코딩된 비트스트림에 포함하는 단계
를 포함하는 방법. - 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 장치로서,
상기 장치는
현재 블록에 인접한 제1 이웃 블록의 인트라 예측 모드를 획득하고;
상기 제1 이웃 블록의 인트라 예측 모드가 제2 이웃 블록으로부터 획득된 인트라 예측 모드와 상이하면, 상기 인트라 예측 모드에 대한 유효성을 결정하며;
상기 인트라 예측 모드의 유효성에 따라 상기 인트라 예측 모드를 여러 유효성 버퍼 중 대응하는 유효성 버퍼에 저장하고; 그리고
상기 MPM 리스트가 최대 개수의 예측 모드를 포함하거나 또는 상기 유효성 버퍼에 저장된 모든 예측 모드가 상기 MPM 리스트로 페치될 때까지 가장 유효한 버퍼부터 시작하여, 상기 여러 유효성 버퍼에서 상기 MPM 리스트로 인트라 예측 모드를 페치하도록 구성되는 처리 회로
를 포함하고,
상기 유효성을 결정하는 것은,
상기 유효성을 제1 값으로 설정하는 것 - 상기 제1 값은 유효한 비 지향성(non-directional) 예측 모드임 -; 및
상기 제1 이웃 블록이 상기 현재 블록의 왼쪽 측에 위치하고, 상기 제1 이웃 블록의 인트라 예측 모드가 제3 값보다 크거나 같고, 제4 값과 제5 값의 차이보다 작은 경우, 상기 유효성을 제2 값으로 설정하는 것
을 포함하고,
상기 제2 값은 유효한 지향성 예측 모드를 지시하고, 상기 제3 값은 수평 예측 모드의 인덱스이고, 제4 값은 수직 예측 모드의 인덱스이며, 상기 제5 값은 미리 구성된 임계 값인, 장치. - 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 장치(1600)로서,
상기 장치는
현재 블록에 인접한 제1 이웃 블록의 인트라 예측 모드를 획득하도록 구성된 인트라 모드 결정 유닛(1610);
상기 제1 이웃 블록의 인트라 예측 모드가 제2 이웃 블록으로부터 획득된 인트라 예측 모드와 상이하면, 상기 인트라 예측 모드에 대한 유효성을 결정하도록 구성된 유효성 결정 유닛(1620);
상기 인트라 예측 모드의 유효성에 따라 상기 인트라 예측 모드를 여러 유효성 버퍼 중 대응하는 유효성 버퍼에 저장하도록 구성된 버퍼 액세스 유닛(1630); 및
상기 MPM 리스트가 최대 개수의 예측 모드를 포함하거나 또는 상기 유효성 버퍼에 저장된 모든 예측 모드가 상기 MPM 리스트로 페치될 때까지 가장 유효한 버퍼부터 시작하여, 상기 여러 유효성 버퍼에서 상기 MPM 리스트로 인트라 예측 모드를 페치하도록 구성된 MPM 구성 유닛(1640)
을 포함하고,
상기 유효성을 결정하는 것은,
상기 유효성을 제1 값으로 설정하는 것 - 상기 제1 값은 유효한 비 지향성(non-directional) 예측 모드임 -; 및
상기 제1 이웃 블록이 상기 현재 블록의 왼쪽 측에 위치하고, 상기 제1 인트라 예측 모드가 제3 값보다 크거나 같고, 제4 값과 제5 값의 차이보다 작은 경우, 상기 유효성을 제2 값으로 설정하는 것
을 포함하고,
상기 제2 값은 유효한 지향성 예측 모드를 지시하고, 상기 제3 값은 수평 예측 모드의 인덱스이고, 제4 값은 수직 예측 모드의 인덱스이며, 상기 제5 값은 미리 구성된 임계 값인, 장치. - 제16항에 있어서,
상기 유효성은,
상기 인트라 예측 모드가 지향성 모드인지 여부;
상기 제1 이웃 블록이 상기 현재 블록의 어느 쪽에 위치하는지; 및
상기 인트라 예측 모드의 방향
중 적어도 하나에 의존하는, 장치. - 제16항에 있어서,
상기 유효성 결정 유닛은,
상기 인트라 예측 모드가 비 지향성이면, 상기 유효성이 VALID_NON_DIR 값으로 설정되는 것;
상기 제1 이웃 블록이 상기 현재 블록의 왼쪽에 위치되고 상기 인트라 예측 모드가 HOR_IDX보다 크거나 같으며, 상기 인트라 예측 모드가 VER_IDX - dblStrictThr보다 작으면, 상기 유효성이 VALID_DIR 값으로 설정되는 것; 및
이웃 블록이 상기 현재 블록의 위에 위치되고, 상기 인트라 예측 모드가 HOR_IDX + dblStrictThr보다 크며, 상기 인트라 예측 모드가 VER_IDX보다 작거나 같으면, 상기 유효성이 VALID_DIR로 설정되는 것 - HOR_IDX는 수평 예측 모드의 인덱스이며, VER_IDX는 수직 예측 모드의 인덱스이고, dblStrictThr는 미리 구성된 임계 값임 -
을 포함하여, 상기 인트라 예측 모드에 대한 유효성을 결정하도록 구성되는, 장치. - 제18항에 있어서,
dblStrictThr이 4와 같은, 장치. - 제19항에 있어서,
상기 유효성 버퍼 중 제1 버퍼 FIFO0에 대한 유효성은 VALID_DIR이고, 상기 유효성 버퍼 중 제2 버퍼 FIFO1에 대한 유효성은 VALID_DIR보다 낮은 VALID_NON_DIR인, 장치. - 제18항에 있어서,
상기 인트라 예측 모드가 -10보다 크고 HOR_IDX보다 작으면, 왼쪽 또는 왼쪽 아래 이웃 블록인 상기 제1 이웃 블록에 대한 유효성이 VALID_DIR로 설정되거나, 및/또는
상기 인트라 예측 모드가 VER_IDX - strictThr보다 크거나 같고 VER_IDX + strictThr보다 작거나 같으면, 상기 유효성은 STRICTLY_INVALID_DIR 값으로 설정되고, strictThr는 미리 구성된 임계 값인, 장치. - 제21항에 있어서,
STRICTLY_INVALID_DIR 값은 VALID_DIR 값보다 낮고, VALID_NON_DIR 값보다 낮은, 장치. - 제16항에 있어서,
상기 인트라 예측 모드가 VER_IDX보다 크고 76보다 작으면, 위 또는 오른쪽 위 이웃 블록인 상기 제1 이웃 블록에 대한 유효성이 VALID_DIR로 설정되거나; 및/또는
상기 인트라 예측 모드가 HOR_IDX - strictThr보다 크거나 같고 HOR_IDX + strictThr보다 작거나 같으면, 상기 유효성은 STRICTLY_INVALID_DIR로 설정되는, 장치. - 제16항에 있어서,
상기 인트라 예측 모드가 HOR_IDX보다 크고 VER_IDX보다 작으면, 왼쪽 위 이웃 블록인 상기 제1 이웃 블록에 대한 유효성이 VALID_DIR로 설정되거나; 및/또는
상기 인트라 예측 모드가 VDIA_IDX - strictThr보다 크거나 같고 2 + strictThr보다 작거나 같으면, 상기 유효성은 STRICTLY_INVALID_DIR로 설정되는, 장치. - 제18항에 있어서,
상기 인트라 예측 모드는 상기 인트라 예측 모드에 대해 결정된 것과 동일한 유효성 식별을 갖는 버퍼에 저장되고,
VALID_DIR 버퍼 및 VALID_NON_DIR 버퍼가 최대 MPM 리스트 크기보다 크거나 같은 인트라 예측 모드의 수를 저장하는지를 확인하며,
VALID_DIR 버퍼 및 VALID_NON_DIR 버퍼가 최대 MPM 리스트 크기보다 크거나 같은 인트라 예측 모드의 수를 저장하면, 상기 MPM 리스트가 채워지는, 장치. - 제18항에 있어서,
유효성이 STRICTLY_INVALID_DIR인 버퍼는 상기 MPM 리스트를 덧붙이는 데 사용되지 않거나, 및/또는
상기 인트라 예측 모드가 STRICTLY_INVALID_DIR 유효성을 가지면, 임의의 버퍼에 저장되지 않는, 장치. - 제16항에 있어서,
상기 버퍼에 저장된 인트라 예측 모드의 수가 상기 MPM 리스트의 크기보다 적으면, 상기 MPM 리스트 내의 빈 위치가 기본 모드로 채워지는, 장치. - 이미지를 디코딩하는 장치(30)로서,
인코딩된 비트스트림으로부터 모드 지시를 추론하는 비트스트림 파싱(parsing) 유닛(304);
제15항 내지 제27항 중 어느 한 항에 따른 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 장치(1600); 및
상기 MPM 리스트에 대한 포인터로서의 모드 지시 및 상기 MPM 리스트에 따라 상기 이미지에서의 현재 블록을 재구성하는 재구성 유닛(314)
를 포함하는 장치. - 이미지를 인코딩하는 장치(20)로서,
제15항 내지 제27항 중 어느 한 항에 따른 인트라 예측을 위한 MPM(Most Probable Mode) 리스트를 구성하는 장치(1600);
상기 MPM 리스트에 대한 포인터로서 현재 블록에 대한 모드 지시를 결정하는 인트라 예측 유닛(254); 및
상기 모드 지시를 인코딩된 비트스트림에 포함하는 비트스트림 생성기(270)
를 포함하는 장치. - 제15항 내지 제27항 중 어느 한 항에 따른 장치를 구현하는 집적 회로.
- 컴퓨터가 판독 가능한 비 일시적 매체 상에 저장된 프로그램으로서,
명령을 포함하며,
상기 명령이 하나 이상의 프로세서 상에서 실행될 때 상기 하나 이상의 프로세서가 제1항 내지 제12항 또는 제15항 중 어느 한 항에 따른 방법을 실행하게 하는, 프로그램.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862733580P | 2018-09-19 | 2018-09-19 | |
US62/733,580 | 2018-09-19 | ||
PCT/CN2019/106627 WO2020057589A1 (en) | 2018-09-19 | 2019-09-19 | Method and apparatus for predicting most probable intra-modes |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210057171A KR20210057171A (ko) | 2021-05-20 |
KR102577071B1 true KR102577071B1 (ko) | 2023-09-08 |
Family
ID=69888287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217011383A KR102577071B1 (ko) | 2018-09-19 | 2019-09-19 | 가장 가능성 있는 인트라 모드를 예측하는 방법 및 장치 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11445181B2 (ko) |
EP (1) | EP3844964A4 (ko) |
KR (1) | KR102577071B1 (ko) |
CN (1) | CN112703739B (ko) |
CA (1) | CA3113369A1 (ko) |
WO (1) | WO2020057589A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023075450A1 (ko) * | 2021-10-28 | 2023-05-04 | 엘지전자 주식회사 | Mpm 리스트를 이용하는 영상 코딩 방법 및 장치 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160134867A1 (en) * | 2011-11-04 | 2016-05-12 | Infobridge Pte. Ltd. | Method and apparatus of deriving intra prediction mode using most probable mode group |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857750B (zh) * | 2011-07-01 | 2015-05-06 | 华为技术有限公司 | 帧内预测编解码处理方法、装置和系统 |
KR20130049524A (ko) * | 2011-11-04 | 2013-05-14 | 오수미 | 인트라 예측 블록 생성 방법 |
WO2016204478A1 (ko) * | 2015-06-15 | 2016-12-22 | 엘지전자(주) | 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치 |
US10841593B2 (en) | 2015-06-18 | 2020-11-17 | Qualcomm Incorporated | Intra prediction and intra mode coding |
US10939096B2 (en) * | 2016-05-05 | 2021-03-02 | Interdigital Madison Patent Holdings, Sas | Control-point based intra direction representation for intra coding |
US10547854B2 (en) * | 2016-05-13 | 2020-01-28 | Qualcomm Incorporated | Neighbor based signaling of intra prediction modes |
WO2018026166A1 (ko) * | 2016-08-01 | 2018-02-08 | 한국전자통신연구원 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
EP4075798B1 (en) * | 2016-10-04 | 2024-09-11 | HFI Innovation Inc. | Method and apparatus for intra chroma coding in image and video coding |
US10917660B2 (en) * | 2017-01-13 | 2021-02-09 | Vid Scale, Inc. | Prediction approaches for intra planar coding |
EP3399754A1 (en) * | 2017-05-04 | 2018-11-07 | Thomson Licensing | Method and apparatus for most probable mode (mpm) reordering for intra prediction |
EP3685580A1 (en) * | 2017-10-09 | 2020-07-29 | Huawei Technologies Co., Ltd. | Devices and methods for image and video coding |
CN109547782B (zh) * | 2018-11-28 | 2021-03-19 | 北京达佳互联信息技术有限公司 | Mpm候选列表构建方法、装置、电子设备及存储介质 |
CN110166772B (zh) * | 2019-03-12 | 2021-04-27 | 浙江大华技术股份有限公司 | 帧内预测模式的编解码方法、装置、设备和可读存储介质 |
-
2019
- 2019-09-19 KR KR1020217011383A patent/KR102577071B1/ko active IP Right Grant
- 2019-09-19 WO PCT/CN2019/106627 patent/WO2020057589A1/en unknown
- 2019-09-19 CN CN201980060719.5A patent/CN112703739B/zh active Active
- 2019-09-19 EP EP19861553.6A patent/EP3844964A4/en active Pending
- 2019-09-19 CA CA3113369A patent/CA3113369A1/en active Pending
-
2021
- 2021-03-18 US US17/205,350 patent/US11445181B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160134867A1 (en) * | 2011-11-04 | 2016-05-12 | Infobridge Pte. Ltd. | Method and apparatus of deriving intra prediction mode using most probable mode group |
Non-Patent Citations (1)
Title |
---|
Kotra A M et al: "CE3.2.2:Intra mode signaling with priority based MPM and non-MPM list construction", JVET-K0365 2918.7.11. |
Also Published As
Publication number | Publication date |
---|---|
EP3844964A4 (en) | 2021-11-03 |
KR20210057171A (ko) | 2021-05-20 |
US11445181B2 (en) | 2022-09-13 |
US20210250578A1 (en) | 2021-08-12 |
EP3844964A1 (en) | 2021-07-07 |
CN112703739A (zh) | 2021-04-23 |
CA3113369A1 (en) | 2020-03-26 |
WO2020057589A1 (en) | 2020-03-26 |
CN112703739B (zh) | 2022-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2023229601B2 (en) | Method and apparatus for intra prediction | |
US11044469B2 (en) | Method and apparatus for intra prediction | |
US11503335B2 (en) | Method and apparatus for intra prediction | |
US11277608B2 (en) | Method and apparatus for intra prediction | |
KR102577071B1 (ko) | 가장 가능성 있는 인트라 모드를 예측하는 방법 및 장치 | |
US11297345B2 (en) | Intra prediction mode derivation based on neighboring blocks | |
KR102727268B1 (ko) | 이웃 블록에 기초한 인트라 예측 모드 도출 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |