KR20150135519A - 인트라 예측 샘플을 생성하는 방법, 장치 및 시스템 - Google Patents

인트라 예측 샘플을 생성하는 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR20150135519A
KR20150135519A KR1020157031037A KR20157031037A KR20150135519A KR 20150135519 A KR20150135519 A KR 20150135519A KR 1020157031037 A KR1020157031037 A KR 1020157031037A KR 20157031037 A KR20157031037 A KR 20157031037A KR 20150135519 A KR20150135519 A KR 20150135519A
Authority
KR
South Korea
Prior art keywords
intra prediction
intra
prediction mode
angle
sample
Prior art date
Application number
KR1020157031037A
Other languages
English (en)
Inventor
크리스토퍼 제임스 로즈원
볼로디미르 콜레스니코프
Original Assignee
캐논 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 캐논 가부시끼가이샤 filed Critical 캐논 가부시끼가이샤
Publication of KR20150135519A publication Critical patent/KR20150135519A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods 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 a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

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

Abstract

4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 방법에 관한 것이다. 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도가 결정된다(1104). 4:2:2 크로마 포맷에 의한 인트라 예측 각도가 조정된다(1108-1118). 조정된 각도가 미리 정해진 값을 초과하는 경우, 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값이 수정되고(1122), 수정된 변경 임계값은 조정된 인트라 예측 각도를 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성된다. 변경 임계값과, 조정된 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플이 생성된다(1126).

Description

인트라 예측 샘플을 생성하는 방법, 장치 및 시스템{METHOD, APPARATUS AND SYSTEM FOR GENERATING INTRA-PREDICTED SAMPLES}
본 발명은 전반적으로 디지털 비디오 신호 처리에 관한 것으로, 특히, 비디오 데이터의 비디오 프레임에 대한 인트라 예측 샘플(intra-predicted sample)을 생성하는 방법, 장치 및 시스템에 관한 것이다. 또한, 본 발명은 비디오 데이터의 비디오 프레임에 대한 인트라 예측 샘플을 생성하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품에 관한 것이다.
현재 비디오 데이터의 전송 및 저장을 위한 애플리케이션을 포함하는 비디오 코딩을 위한 많은 애플리케이션이 존재한다. 많은 비디오 코딩 표준들 또한 개발되었으며, 다른 비디오 코딩 표준들이 현재 개발 중에 있다. 최근의 비디오 코딩 표준의 개발은 "JCT-VC(Joint Collaborative Team on Video Coding)"라고 불리는 그룹을 형성하였다. JCT-VC(Joint Collaborative Team on Video Coding)는 ITU(International Telecommunication Union)의 통신 표준 섹터 (ITU-T)의 SG16/Q6(Study Group 16, Question 6)의 멤버 및 MPEG(Moving Picture Experts Group)이라고도 알려진 ISO/IEC JTC1/SC29/WG11(International Organisations for Standardisation / International Electrotechnical Commission Joint Technical Committee 1 / Subcommittee 29 / Working Group 11) 멤버를 포함한다.
JCT-VC(Joint Collaborative Team on Video Coding)는 "H.264/MPEG-4 AVC"로 알려진 현재 존재하는 비디오 코딩 표준을 상당히 능가하는 새로운 비디오 코딩 표준을 만드는 목적을 가진다. 비디오 코딩 표준의 성능은 많은 방식으로 측정된다. 비디오 코딩 표준에 존재하거나, 제안되는 알고리즘의 복잡도의 측정은 특정 알고리즘을 비디오 코딩 표준에 도입하는 데 있어서의 비용 증가 또는 절감을 추정하는 데에 이용된다. 복잡도의 한 가지 간단한 척도는 비디오 코딩 표준의 소프트웨어 구현의 런타임이다. 비압축 비디오 데이터를 콤팩트하게 나타내기 위한 비디오 코딩 표준의 구현 성능의 척도는 '코딩 효율'로 알려져 있다. 전형적으로, 비디오 코딩 표준의 구현은 압축해제된 비디오 데이터에 왜곡을 도입한다. 이것은 '손실(lossy)' 압축이라고 알려져 있으며, 보다 높은 코딩 효율을 획득할 수 있게 한다. 그 결과, 코딩 효율의 척도는 왜곡의 척도(예컨대, PSNR) 대 압축 비디오 데이터('비트스트림')에 대한 비트레이트의 척도 모두를 고려하여야 한다. H.264/MPEG-4 AVC 표준은 그 자체가 MPEG-4 및 ITU-T H.263과 같은 이전의 비디오 코딩 표준에 대하여 큰 개선을 이룬 것이다. 개발 중인 새로운 비디오 코딩 표준은 "HEVC(high efficiency video coding)"라고 명명되고 있다. HEVC(high efficiency video coding)의 추가적인 개발은 '크로마 포맷(chroma format)'으로 알려진 비디오 데이터에 존재하는 크로마 정보의 상이한 표현의 지원을 도입하는 것에 관련되어 있다. JCT-VC(Joint Collaborative Team on Video Coding)는 실시간 고해상도 또는 고프레임레이트에서 동작하도록 표준 구현을 스케일링할 때에 어려움을 만드는 HEVC(high efficiency video coding)에 대하여 제안된 기술로부터 발생하는 구현의 문제점 또한 고려하고 있다. HEVC(high efficiency video coding)에 존재하는 알고리즘의 복잡도는, 예컨대 하드웨어 구현의 회로 사이즈의 구현에 영향을 미친다.
특정 비디오 코딩 표준으로 얻을 수 있는 코딩 효율의 한 가지 양태는 이용가능한 예측 방법의 특성이다. 2차원 비디오 프레임의 압축 시퀀스를 위하여 의도된 비디오 코딩 표준에 대해서는, 2가지 유형의 예측, 즉 인트라 예측(intra-prediction) 및 인터 예측(inter-prediction)이 존재한다. 인트라 예측법은 비디오 프레임의 일부분의 콘텐츠가 동일한 비디오 프레임의 다른 부분으로부터 예측될 수 있게 한다. 인트라 예측법은 전형적으로 방향성 텍스쳐(directional texture)를 가지는 블록을 생성하며, 인트라 예측 모드에서는 텍스쳐를 생성하기 위한 기초로서 사용되는 프레임 내의 근접 샘플 및 텍스쳐의 방향을 특정한다. 인터 예측법은 비디오 프레임 내의 블록의 콘텐츠가 이전 비디오 프레임의 블록으로부터 예측될 수 있게 한다. 이전 비디오 프레임은 '참조 프레임'이라고 불릴 수 있다. 비디오 프레임의 시퀀스 내의 제1 비디오 프레임은 프레임 내의 모든 블록에 대하여 전형적으로 인트라 예측을 사용하는 데, 참조를 위하여 이용가능한 이전 프레임이 존재하지 않기 때문이다. 후속 비디오 프레임은 블록을 예측하기 위하여 하나 이상의 이전 비디오 프레임을 이용할 것이다. 가장 높은 코딩 효율을 획득하기 위해, 오리지널 비디오 데이터에 가장 가까운 예측 블록(predicted block)을 생성하는 예측 방법이 전형적으로 사용된다. 예측 블록과 오리지널 비디오 데이터 사이의 남은 차분은 '레지듀(residue)'로 알려져 있다. '레지듀얼(residual)' 이라고 알려진 레지듀의 손실 표현은 비트 스트림 내에 저장될 수 있다. 레지듀얼 내의 손실량은 오리지널 비디오 데이터에 대하여 비트스트림으로부터 디코딩되는 비디오 데이터의 왜곡 및 비트스트림의 사이즈에 영향을 미친다.
비디오 데이터를 표현하는 데에 사용되는 '크로마 포맷'은 비디오 데이터의 루마(luma)와 복수의 크로마 채널 간의 샘플 종횡비를 특정한다. 이러한 종횡비는 각각의 크로마 포맷에 대한 루마 및 크로마에 대한 병치된 블록 사이즈 간의 고정된 관계를 의미한다. 이러한 고정된 관계는 병치된 블록의 루마 채널 및 크로마 채널에 사용되는 이용가능한 변환 사이즈에도 영향을 미친다. "4:2:2" 크로마 포맷을 사용하여 비디오 데이터가 표현되는 경우, 루마 샘플과 크로마 샘플 사이에 비정방형(non-square) 관계가 존재한다.
4:2:2 크로마 포맷을 위한 크로마 포맷에서 사용되는 비정방형 블록 사이즈의 한 가지 결과는, 인트라 예측 동작의 방향성 텍스쳐가 루마 채널에 비해 크로마 채널 내에서 왜곡된다는 점이다. 이러한 왜곡은 크로마 채널에 대한 예측 블록의 정확도를 감소시킨다. 이러한 왜곡을 보상하기 위해, 크로마 채널에 대한 레지듀의 사이즈의 증가가 요구된다. 이러한 증가는 비디오 코딩 표준의 구현에 의해서 취득되는 코딩 효율의 바람직하지 않은 감소를 초래한다.
본 발명의 목적은 기존 장치의 하나 이상의 단점을 실질적으로 극복하거나, 적어도 개선하는 것이다.
본 개시의 일 양태에 따르면, 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 방법으로서, 상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 단계와, 상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 단계와, 조정된 상기 각도가 미리 정해진 값을 초과하는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 단계로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성되는 단계와, 상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 단계를 포함하는 방법이 제공된다.
본 개시의 다른 양태에 따르면, 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 시스템으로서, 데이터 및 컴퓨터 프로그램을 저장하는 메모리와, 상기 컴퓨터 프로그램을 실행하기 위해 상기 메모리에 결합되는 프로세서를 포함하고, 상기 컴퓨터 프로그램은, 상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 단계와, 상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 단계와, 조정된 상기 각도가 이미 정해진 값을 초과하는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 단계로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성되는 단계와, 상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 단계를 위한, 인스트럭션들을 포함하는 시스템이 제공된다.
본 개시의 다른 양태에 따르면, 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 장치로서, 상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 수단과, 상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 수단과, 조정된 상기 각도가 미리 정해진 값을 초과하는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 수단으로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성되는 수단과, 상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 수단을 포함하는 장치가 제공된다.
본 개시의 또 다른 양태에 따르면, 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 컴퓨터 프로그램을 포함하는 컴퓨터 판독가능 매체로서, 상기 프로그램은, 상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 코드와, 상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 코드와, 조정된 상기 각도가 미리 정해진 값을 초과하는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 코드로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성되는 코드와, 상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 코드를 포함하는 컴퓨터 판독가능 매체가 제공된다.
본 개시의 또 다른 양태에 따르면, 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 방법으로서, 상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 단계와, 상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 단계와, 상기 비트스트림이 4:2:2 크로마 포맷용으로 구성되는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 단계로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성되는 단계와, 상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 단계를 포함하는 방법이 제공된다.
본 개시의 또 다른 양태에 따르면, 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 시스템으로서, 데이터 및 컴퓨터 프로그램을 저장하는 메모리와, 상기 컴퓨터 프로그램을 실행하기 위해 상기 메모리에 결합되는 프로세서를 포함하고, 상기 컴퓨터 프로그램은, 상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 단계와, 상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 단계와, 상기 비트스트림이 4:2:2 크로마 포맷용으로 구성되는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 단계로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성되는 단계와, 상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 단계를 위한, 인스트럭션들을 포함하는 시스템이 제공된다.
본 개시의 또 다른 양태에 따르면, 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 장치로서, 상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 수단과, 상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 수단과, 상기 비트스트림이 4:2:2 크로마 포맷용으로 구성되는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 수단으로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성되는 수단과, 상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 수단을 포함하는 장치가 제공된다.
본 개시의 또 다른 양태에 따르면, 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 컴퓨터 프로그램을 포함하는 컴퓨터 판독가능 매체로서, 상기 프로그램은, 상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 코드와, 상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 코드와, 상기 비트스트림이 4:2:2 크로마 포맷용으로 구성되는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 코드로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성되는 코드와, 상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 코드를 포함하는 컴퓨터 판독가능 매체가 제공된다.
본 개시의 또 다른 양태에 따르면, 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 방법으로서, 상기 비디오 비트스트림의 크로마 포맷을 디코딩하는 단계와, 각도 파라미터를 결정하는 단계 이전에, 인트라 예측 모드를 조정하는 단계로서, 상기 조정은 디코딩된 상기 크로마 포맷에 의존하는 단계와, 조정된 상기 인트라 예측 모드로부터 상기 각도 파라미터를 결정하는 단계와, 결정된 상기 각도 파라미터를 사용하여 참조 샘플을 생성하는 단계와, 결정된 상기 각도 파라미터와 생성된 상기 참조 샘플을 사용하여 인트라 예측 샘플을 생성하는 단계를 포함하는 방법이 제공된다.
본 개시의 또 다른 양태에 따르면, 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 시스템으로서, 데이터 및 컴퓨터 프로그램을 저장하는 메모리와, 상기 컴퓨터 프로그램을 실행하기 위해 상기 메모리에 결합되는 프로세서를 포함하고, 상기 컴퓨터 프로그램은, 상기 비디오 비트스트림의 크로마 포맷을 디코딩하는 단계와, 각도 파라미터를 결정하는 단계 이전에, 인트라 예측 모드를 조정하는 단계로서, 상기 조정은 디코딩된 상기 크로마 포맷에 의존하는 단계와, 조정된 상기 인트라 예측 모드로부터 상기 각도 파라미터를 결정하는 단계와, 결정된 상기 각도 파라미터를 사용하여 참조 샘플을 생성하는 단계와, 결정된 상기 각도 파라미터와 생성된 상기 참조 샘플을 사용하여 인트라 예측 샘플을 생성하는 단계를 위한, 인스트럭션들을 포함하는 시스템이 제공된다.
본 개시의 또 다른 양태에 따르면, 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 장치로서, 상기 비디오 비트스트림의 크로마 포맷을 디코딩하는 수단과, 각도 파라미터를 결정하기 전에, 인트라 예측 모드를 조정하는 수단으로서, 상기 조정은 디코딩된 상기 크로마 포맷에 의존하는 수단과, 조정된 상기 인트라 예측 모드로부터 상기 각도 파라미터를 결정하는 수단과, 결정된 상기 각도 파라미터를 사용하여 참조 샘플을 생성하는 수단과, 결정된 상기 각도 파라미터와 생성된 상기 참조 샘플을 사용하여 인트라 예측 샘플을 생성하는 수단을 포함하는 장치가 제공된다.
본 개시의 또 다른 양태에 따르면, 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 컴퓨터 프로그램을 포함하는 컴퓨터 판독가능 매체로서, 상기 프로그램은, 상기 비디오 비트스트림의 크로마 포맷을 디코딩하는 코드와, 각도 파라미터를 결정하기 전에, 인트라 예측 모드를 조정하는 코드로서, 상기 조정은 디코딩된 상기 크로마 포맷에 의존하는 코드와, 조정된 상기 인트라 예측 모드로부터 상기 각도 파라미터를 결정하는 코드와, 결정된 상기 각도 파라미터를 사용하여 참조 샘플을 생성하는 코드와, 결정된 상기 각도 파라미터와 생성된 상기 참조 샘플을 사용하여 인트라 예측 샘플을 생성하는 코드를 포함하는 컴퓨터 판독가능 매체가 제공된다.
다른 양태 또한 개시된다.
이제, 본 발명의 적어도 일 실시예가 이하의 도면 및 부록을 참조하여 설명될 것이다.
도 1은 비디오 인코딩 및 디코딩 시스템을 나타내는 개략적인 블록도.
도 2a 및 2b는 도 1의 비디오 인코딩 및 디코딩 시스템 중 하나 또는 양자 모두가 실시될 수 있는 범용 컴퓨터 시스템의 개략적인 블록도를 형성하는 도면.
도 3은 비디오 인코더의 기능 모듈을 도시하는 개략적인 블록도.
도 4는 비디오 디코더의 기능 모듈을 도시하는 개략적인 블록도.
도 5a 및 5b는 프레임 데이터를 나타내는 크로마 포맷을 개략적으로 도시하는 도면.
도 6은 코딩 트리 유닛(CTB)을 복수의 코딩 유닛(CU), 예측 유닛(PU) 및 변환 유닛(TU)으로 하위분할하는 것을 개략적으로 도시하는 도면.
도 7은 방향성 인트라 예측 모드를 개략적으로 도시하는 도면.
도 8a는 예시적인 인트라 예측 방향에 대한 인트라 예측 처리를 개략적으로 도시하는 도면.
도 8b는 다른 예시적인 인트라 예측 방향에 대한 인트라 예측 처리를 개략적으로 도시하는 도면.
도 9a는 4:2:2 크로마 포맷을 사용하도록 구성된 프레임의 루마 샘플 그리드 상의 인트라 예측된 예측 유닛(PU)을 개략적으로 도시하는 도면.
도 9b는 도 9a의 4:2:2 크로마 포맷을 사용하도록 구성된 프레임의 크로마 샘플 그리드 상의 인트라 예측된 예측 유닛(PU)을 개략적으로 도시하는 도면.
도 10은 도 4의 인트라 프레임 예측 모듈의 기능 모듈을 도시하는 개략적인 블록도.
도 11은 도 3의 비디오 인코더 또는 도 4의 비디오 디코더 내의 예측 샘플을 생성하는 방법을 나타내는 개략적인 블록도.
도 12는 인트라 예측 각도 및 역 각도(inverse angle)의 양자화에 의해 인트라 예측 모드를 인트라 예측 각도 및 역 각도로 변환하기 위한 표.
도 13은 인트라 예측 각도 및 역 각도와, 블록 유형에 의해서 결정되는 수평 및 수직 인트라 예측 모드 사이의 경계의 양자화에 의해 인트라 예측 모드를 인트라 예측 각도 및 역 각도로 변환하기 위한 표.
도 14는 인트라 예측 각도 및 역 각도의 다른 양자화에 의해 인트라 예측 모드를 인트라 예측 각도 및 역 각도로 변환하기 위한 표.
도 15는 인트라 예측 각도 및 역 각도와, 블록 유형에 의해서 결정되는 수평 및 수직 인트라 예측 모드 사이의 경계의 양자화에 의해 인트라 예측 모드를 인트라 예측 각도 및 역 각도로 변환하기 위한 표.
부록 A는 도 12에 따른 인트라 예측 샘플을 생성하는 방법의 예를 나타낸다.
부록 B는 도 13에 따른 인트라 예측 샘플을 생성하는 방법의 예를 나타낸다.
부록 C는 도 14에 따른 인트라 예측 샘플을 생성하는 방법의 예를 나타낸다.
부록 D는 도 15에 따른 인트라 예측 샘플을 생성하는 방법의 예를 나타낸다.
첨부 도면의 하나 이상에서 동일한 참조 부호를 가지는 단계 및/또는 특징부를 참조하는 경우, 다른 취지가 기재되지 않는 한, 이들 단계 및/또는 특징부는 설명을 위하여 동일한 기능 또는 동작을 가지는 것으로 한다.
도 1은 비디오 인코딩 및 디코딩 시스템(100)의 기능 모듈을 도시하는 개략적인 블록도이다. 시스템(100)은 컬러 채널에 대해 이용가능한 변환 로직의 선택을 개선하는 레지듀얼 쿼드 트리 변환 선택(residual quad-tree transform selection)을 위한 기술을 이용할 수 있다. 컬러 채널은 시스템(100)에 의해서 지원되는 모든 크로마 포맷을 위한 크로마 채널 중 하나를 포함할 수 있다. 시스템(100)은 소스 디바이스(110) 및 목적지 디바이스(130)를 포함한다. 통신 채널(120)은 인코딩된 비디오 정보를 소스 디바이스(110)로부터 목적지 디바이스(130)로 통신하는 데에 이용된다. 소스 디바이스(110) 및 목적지 디바이스(130)는 각각의 휴대 전화 핸드셋을 포함할 수 있으며, 이 경우에 통신 채널(120)은 무선 채널이다. 또는, 소스 디바이스(110) 및 목적지 디바이스(130)는 비디오 컨퍼런싱 장치를 포함할 수 있으며, 이 경우 통신 채널(120)은 전형적으로 인터넷 접속과 같은 유선 채널이다. 또한, 소스 디바이스(110) 및 목적지 디바이스(130)는 무선으로 텔레비전 방송, 케이블 텔레비전 애플리케이션, 인터넷 비디오 애플리케이션 및 인코딩된 비디오가 일부 저장 매체 또는 파일 서버에서 캡쳐되는 애플리케이션을 지원하는 디바이스를 포함하는 넓은 범위의 디바이스 중 임의의 것을 포함할 수 있다.
도 1에 도시된 바와 같이, 소스 디바이스(110)는 비디오 소스(112), 비디오 인코더(114) 및 송신기(116)를 포함한다. 비디오 소스(112)는, 이미징 센서와 같이, 캡쳐된 비디오 프레임 데이터, 비일시적 기록 매체에 저장된 이전에 캡쳐된 비디오 시퀀스, 또는 원격의 이미징 센서로부터 공급되는 비디오의 소스를 전형적으로 포함한다. 비디오 소스(112)로서 이미징 센서를 포함할 수 있는 소스 디바이스(110)의 예는 스마트폰, 비디오 캠코더 및 네트워크 비디오 카메라를 포함한다. 비디오 인코더(114)는 비디오 소스(112)로부터 캡쳐된 프레임 데이터를 인코딩된 비디오 데이터로 변환하고, 도 3을 참조하여 후술될 것이다. 인코딩된 비디오 데이터는 전형적으로 통신 채널(120)를 통해서 인코딩된 비디오 데이터(또는 "인코딩된 비디오 정보")로서 송신기(116)에 의해서 송신된다. 인코딩된 비디오 데이터가 "플래시" 메모리 또는 하드 디스크 드라이브와 같은 어떤 저장 디바이스에 저장되고 나중에 통신 채널(120)을 통해서 송신되는 것 또한 가능하다.
목적지 디바이스(130)는 수신기(132), 비디오 디코더(134) 및 디스플레이 디바이스(136)를 포함한다. 수신기(132)는 인코딩된 비디오 데이터를 통신 채널(120)로부터 수신하고, 수신된 비디오 데이터를 비디오 디코더(134)로 보낸다. 그 후에, 비디오 디코더(134)는 디코딩된 프레임 데이터를 디스플레이 디바이스(136)에 출력한다. 디스플레이 디바이스(136)의 예는 스마트폰, 테블릿 컴퓨터, 컴퓨터 모니터 또는 독립형 텔레비전 세트 등의 액정 디스플레이, 음극선관을 포함한다. 소스 디바이스(110) 및 목적지 디바이스(130) 각각의 기능이 단일 디바이스 내에 포함되는 것도 가능하다.
전술한 예시적인 디바이스에도 불구하고, 소스 디바이스(110) 및 목적지 디바이스(130)의 각각은, 전형적으로 하드웨어 및 소프트웨어 컴포넌트의 조합을 통해 범용 컴퓨팅 시스템 내에 구성될 수도 있다. 도 2a는 그러한 컴퓨터 시스템(200)을 도시하는데, 이것은 컴퓨터 모듈(201), 키보드(202), 마우스 포인터 디바이스(203), 스캐너(226), 비디오 소스(112)로서 구성될 수 있는 카메라(227), 마이크로폰(280)과 같은 입력 디바이스, 프린터(215), 디스플레이 디바이스(136)로서 구성될 수 있는 디스플레이 디바이스(214) 및 스피커(217)를 포함하는 출력 디바이스를 포함한다. 외부 변복조기(모뎀) 송수신 디바이스(216)가 접속(221)을 통해서 통신 네트워크(220)에 대하여 통신을 행하기 위하여 컴퓨터 모듈(201)에 의해서 사용될 수도 있다. 통신 채널(120)을 나타낼 수 있는 통신 네트워크(220)는 인터넷과 같은 WAN(wide-area network), 셀룰러 원거리 통신 네트워크, 또는 사설 WAN일 수도 있다. 접속(221)이 전화선인 경우, 모뎀(216)은 전통적으로 "다이얼업" 모뎀일 수 있다. 또는, 접속(221)이 고용량(예컨대, 케이블) 접속인 경우, 모뎀(216)은 광대역 모뎀일 수 있다. 무선 모뎀 또한 통신 네트워크(220)에 대한 무선 접속에 사용될 수 있다. 송수신기 디바이스(216)는 송신기(116) 및 수신기(132)의 기능을 제공할 수 있으며, 통신 채널(120)은 접속(221)에 포함될 수 있다.
컴퓨터 모듈(201)은 전형적으로 적어도 하나의 프로세서 유닛(205) 및 메모리 유닛(206)을 포함한다. 예컨대, 메모리 유닛(206)은 반도체 RAM(random access memory) 및 반도체 ROM(read only memory)을 구비할 수 있다. 컴퓨터 모듈(201)은 비디오 디스플레이(214), 스피커(217) 및 마이크로폰(280)에 결합하는 오디오 비디오 인터페이스(207)와, 키보드(202), 마우스(203), 스캐너(226), 카메라(227) 및 선택적으로는 조이스틱 또는 기타 휴먼 인터페이스 디바이스(도시하지 않음)에 결합하는 I/O 인터페이스(213)와, 외부 모뎀(216) 및 프린터(215)용의 인터페이스(208)를 포함하는 많은 입출력(I/O) 인터페이스 또한 포함한다. 일부 구현에서는, 모뎀(216)은 컴퓨터 모듈(201) 내에, 예컨대 인터페이스(208) 내에 포함될 수도 있다. 컴퓨터 모듈(201)은 컴퓨터 시스템(200)이 접속(223)을 통해서 LAN(Local Area Network)라고도 알려진 근거리 통신 네트워크(222)에 결합하는 것을 가능하게 하는 로컬 네트워크 인터페이스(211) 또한 구비한다. 도 2a에 도시된 바와 같이, 로컬 통신 네트워크(222)는 접속(224)을 통해서 원거리 네트워크(220)에도 결합될 수 있으며, 이것은 전형적으로, 소위 "방화벽" 디바이스 또는 유사한 기능의 디바이스를 포함할 것이다. 로컬 네트워크 인터페이스(211)는 EthernetTM 회로 카드, BluetoothTM 무선 장치 또는 IEEE 802.11 무선 장치를 포함할 수 있으나, 많은 다른 유형의 인터페이스가 인터페이스(211)로 실시될 수도 있다. 로컬 네트워크 인터페이스(211)는 송신기(116) 및 수신기(132)의 기능을 제공할 수도 있으며, 통신 채널(120)이 로컬 통신 네트워크(222) 내에 포함될 수도 있다.
I/O 인터페이스(208, 213)는 직렬 및 병렬 접속 중 하나 또는 양자 모두를 제공할 수 있으며, 전자는 전형적으로 USB(Universal Serial Bus) 표준에 따라서 구현되며, 대응하는 USB 커넥터(도시하지 않음)를 구비한다. 저장 디바이스(209)가 제공되며, 전형적으로 하드 디스크 드라이브(HDD)(210)를 포함한다. 플로피 디스크 드라이브 및 자기 테이프 드라이브(도시하지 않음)와 같은 다른 저장 디바이스 또한 사용될 수 있다. 광 디스크 드라이브(212)가 전형적으로 제공되어 비휘발성 데이터 소스로서 동작한다. 예컨대, 광 디스크(예컨대, CD-ROM, DVD, Blu-ray DiscTM), USB RAM, 이동식 외장 하드 드라이브, 플로피 디스크와 같은 이동식 메모리 디바이스가 컴퓨터 시스템(200)에 대한 적절한 데이터의 소스로서 이용될 수도 있다. 전형적으로, HDD(210), 광 드라이브(212), 네트워크(220, 222) 중 임의의 것이 비디오 소스(112) 또는 디스플레이(214)를 통해서 재생을 위하여 저장될 디코딩된 비디오 데이터의 목적지로서 동작하도록 구성될 수 있다.
컴퓨터 모듈(201)의 컴포넌트(205 내지 213)는 전형적으로 상호접속된 버스(204)를 통해서 관련 기술에서 공지된 컴퓨터 시스템(200)의 통상적인 동작 모드에서 동작하게 하는 방식으로 통신한다. 예컨대, 프로세서(205)는 접속(218)을 이용하여 시스템 버스(204)에 결합된다. 마찬가지로, 메모리(206) 및 광 디스크 드라이브(212)는 접속(219)에 의해 시스템 버스(204)에 결합된다. 전술한 장치가 실시될 수 있는 컴퓨터의 예는, IBM PC 및 이와 호환가능한 것, Sun SPARCstations, Apple MacTM 또는 유사한 컴퓨터 시스템을 포함한다.
적절하거나 원하는 경우에, 비디오 인코더(114) 및 비디오 디코더(134)와, 후술하는 방법은, 컴퓨터 시스템(200)을 사용하여 구현될 수 있으며, 여기서 비디오 인코더(114), 비디오 디코더(134) 및 후술하는 도 11의 프로세스는 컴퓨터 시스템(200) 내에서 실행가능한 하나 이상의 소프트웨어 애플리케이션 프로그램(233)으로서 구현될 수 있다. 특히, 비디오 인코더(114), 비디오 디코더(134) 및 상기 방법의 단계는 컴퓨터 시스템(200) 내에서 수행되는 소프트웨어(233) 내의 인스트럭션(231)(도 2b 참조)에 의해서 실행된다. 소프트웨어 인스트럭션(231)은 각각 하나 이상의 특정 태스크를 수행하기 위한 하나 이상의 코드 모듈로서 형성될 수 있다. 소프트웨어는 2개의 별도의 부분으로 분할될 수도 있는데, 제1 부분과 대응하는 코드 모듈은 전술한 방법을 수행하고, 제2 부분과 대응하는 코드 모듈은 제1 부분과 유저 사이의 유저 인터페이스를 관리한다.
예컨대, 소프트웨어는 후술하는 저장 디바이스를 포함하는 컴퓨터 판독가능 매체에 저장될 수 있다. 소프트웨어는 컴퓨터 판독가능 매체로부터 컴퓨터 시스템(200)에 로딩되고, 그 후에 컴퓨터 시스템(200)에 의해서 실행된다. 컴퓨터 판독가능 매체에 기록된 그러한 소프트웨어 또는 컴퓨터 프로그램을 구비하는 컴퓨터 판독가능 매체는 컴퓨터 프로그램 제품이다. 컴퓨터 프로그램 제품의 컴퓨터 시스템(200) 내에서의 사용은, 바람직하게 비디오 인코더(114), 비디오 디코더(134) 및 상기 방법을 구현하는 데에 유리한 장치를 실시한다.
소프트웨어(233)는 전형적으로 HDD(210) 또는 메모리(206)에 저장된다. 소프트웨어는 컴퓨터 판독가능 매체로부터 컴퓨터 시스템(200) 내에 로딩되고, 컴퓨터 시스템(200)에 의해서 실행된다. 따라서, 예컨대, 소프트웨어(233)는 광 디스크 드라이브(212)에 의해서 판독되는 광학적으로 판독가능한 디스크 저장 매체(예컨대, CD-ROM)(225) 상에 저장될 수 있다.
일부 경우에, 하나 이상의 CD-ROM(225) 상에 인코딩되고 대응하는 드라이브(212)를 통해서 판독되거나, 또는 네트워크(220, 222)로부터 유저에 의해 판독될 수 있는 애플리케이션 프로그램(233)이 유저에게 공급될 수 있다. 또한, 소프트웨어는 다른 컴퓨터 판독가능 매체로부터 컴퓨터 시스템(200)에 로딩될 수 있다. 컴퓨터 판독가능 저장 매체는 실행 및/또는 처리를 위하여 기록된 인스트럭션 및/또는 데이터를 컴퓨터 시스템(200)에 제공하는 임의의 유형의 비일시적 저장 매체를 가리킨다. 그러한 저장 매체의 예는, 플로피 디스크, 자기 테이프, CD-ROM, DVD, 블루레이 디스크, 하드 디스크 드라이브, ROM 또는 집적 회로, USB 메모리, 자기-광 디스크 또는 PCMCIA 카드 등의 컴퓨터 판독가능 카드를, 그러한 디바이스가 컴퓨터 모듈(201) 내부에 있는지 외부에 있는지에 관계없이, 포함한다. 소프트웨어, 애플리케이션 프로그램, 인스트럭션 및/또는 비디오 데이터 또는 인코딩된 비디오 데이터를 컴퓨터 모듈(401)에 제공하는 데에 참여할 수도 있는 일시적이거나, 무형인 컴퓨터 판독가능 전송 매체의 예는, 다른 컴퓨터 또는 네트워킹된 디바이스에의 네트워크 접속, 웹사이트 등에 기록된 정보 및 이메일 송신을 포함하는 인터넷 또는 인트라넷뿐만 아니라 무선 또는 적외선 송신 채널을 포함한다.
앞서 언급된 애플리케이션 프로그램(233)의 제2 부분 및 대응하는 코드 모듈은 실행되어 하나 이상의 GUI(graphical user interface)가 디스플레이(214) 상에 제공되거나 표현되도록 구현할 수 있다. 전형적으로 키보드(202) 및 마우스(203)의 처리를 통해, 컴퓨터 시스템(200) 및 애플리케이션의 유저는, GUI에 관련된 애플리케이션에 대한 커맨드 및/또는 입력의 제어를 제공하도록 인터페이스를 기능적으로 조정할 수 있는 방식으로 처리할 수 있다. 또한, 스피커(217)를 통한 스피치 프롬프트 출력 및 마이크로폰(280)을 통한 유저 보이스 커맨드 입력을 이용하는 오디오 인터페이스와 같은 다른 형태의 기능적으로 조정가능한 유저 인터페이스가 구현될 수도 있다.
도 2b는 프로세서(205) 및 "메모리"(234)의 상세한 개략 블록도이다. 메모리(234)는 도 2a의 컴퓨터 모듈(201)에 의해서 액세스될 수 있는 (HDD(209) 및 반도체 메모리(206)를 포함하는) 모든 메모리 모듈의 논리적인 집합을 나타낸다.
컴퓨터 모듈(201)에 처음에 전원이 인가되면, 전원 온 자기 테스트(POST) 프로그램(250)이 실행된다. POST 프로그램(250)은 전형적으로 도 2a의 반도체 메모리(206)의 ROM(249)에 저장된다. 소프트웨어를 저장하는 ROM(249)과 같은 하드웨어 디바이스는 펌웨어라고 불리는 경우도 있다. POST 프로그램(250)은 올바른 기능을 보장하기 위해서 컴퓨터 모듈(201) 내의 하드웨어를 검사하고, 전형적으로 프로세서(205), 메모리(234(209, 206)) 및 BIOS(basic input-output systems software) 모듈(251)을 검사하며, 또한, 전형적으로 올바른 동작을 위하여 ROM(249)에 저장되어 있다. 일단 POST 프로그램(250)이 성공적으로 실행되면, BIOS(251)가 도 2a의 하드 디스크 드라이브(210)를 기동한다. 하드 디스프 드라이브(210)를 기동하면, 하드 디스크 드라이브(210) 상에 상주하는 부트스트랩 로더 프로그램(252)이 프로세서(205)를 통해서 실행되게 된다. 이것은 오퍼레이팅 시스템(253)을 RAM 메모리(206)에 로딩하고, 이때에 오퍼레이팅 시스템(253)이 동작을 개시한다. 오퍼레이팅 시스템(253)은 시스템 레벨 애플리케이션으로, 프로세서(205)에 의해서 실행되어 프로세서 관리, 메모리 관리, 디바이스 관리, 저장 관리, 소프트웨어 애플리케이션 인터페이스 및 제네릭 유저 인터페이스(generic user interface)를 포함하는 다양한 고레벨 기능을 수행할 수 있다.
오퍼레이팅 시스템(253)은 컴퓨터 모듈(201) 상에서 실행되고 있는 각각의 프로세스 또는 애플리케이션이 다른 프로세스에 할당된 메모리와 충돌하지 않고서 실행되기에 충분한 메모리를 가질 것을 보장하도록 메모리(234(209, 206))를 관리한다. 또한, 도 2a의 컴퓨터 시스템(200)에서 이용가능한 상이한 유형의 메모리는, 각각의 처리가 효과적으로 실행될 수 있게 올바르게 이용되어야 한다. 따라서, 집합 메모리(234)는 (달리 언급되지 않는 한) 특정한 메모리의 세그먼트가 할당되는 방식을 설명하기 위한 것이 아니라, 컴퓨터 시스템(200)에 의해서 액세스될 수 있는 메모리의 일반적인 관점 및 메모리가 이용되는 방식을 제공하기 위한 것이다.
도 2b에 도시된 바와 같이, 프로세서(205)는 제어 유닛(239), ALU(arithmetic logic unit)(240) 및 종종 캐시 메모리로 불리는 로컬 또는 내부 메모리(248)를 포함하는 많은 기능 모듈을 포함한다. 캐시 메모리(248)는 전형적으로 많은 저장 레지스터(244-246)를 레지스터 섹션에 포함한다. 하나 이상의 내부 버스(241)는 이들 기능 모듈에 기능적으로 상호접속된다. 또한, 프로세서(205)는 전형적으로 접속(218)을 사용하여 시스템 버스(204)를 통해서 외부 디바이스와 통신하는 하나 이상의 인터페이스(242)를 구비한다. 메모리(234)는 접속(219)을 통해서 버스(204)에 결합된다.
애플리케이션 프로그램(233)은 조건 브랜치 및 루프 인스트럭션을 포함할 수 있는 인스트럭션(231)의 시퀀스를 포함한다. 프로그램(233)은 프로그램(233)의 실행 시에 이용되는 데이터(232) 또한 포함할 수 있다. 인스트럭션(231) 및 데이터(232)는 각각 메모리 위치(228, 229, 230 및 235, 236, 237)에 저장된다. 인스트럭션(231)과 메모리 위치(228-230)의 상대적인 위치에 따라, 특정 인스트럭션은 메모리 위치(230)에 나타난 인스트럭션에 의해서 도시된 바와 같은 단일 메모리 위치에 저장될 수 있다. 또는, 인스트럭션은 메모리 위치(228, 229)에 나타난 인스트럭션 세그먼트에 의해서 도시된 바와 같이, 각각 별도의 메모리 위치에 저장되는 많은 부분으로 분할될 수도 있다.
통상적으로, 프로세서(205)에는 내부에서 실행되는 인스트럭션의 세트가 제공된다. 프로세서(205)는 후속 입력을 대기하고, 프로세서(205)는 그것에 대하여 다른 인스트럭션의 세트를 실행함으로써 반응한다. 각각의 입력은 많은 소스 중 하나 이상으로부터 제공될 수 있으며, 입력 디바이스(202, 203) 중 하나 이상에 의해서 생성되는 데이터, 네트워크(220, 202) 중 하나를 통하여 외부 소스로부터 수신되는 데이터, 저장 디바이스(206, 209) 중 하나로부터 인출되는 데이터, 또는 대응하는 리더(212)로 삽입된 저장 매체(225)로부터 인출되는 데이터를 포함하며, 이들은 모두 도 2a에 도시되어 있다. 인스트럭션의 세트의 실행은 데이터의 출력을 야기하는 경우가 있다. 또한, 실행은 데이터 또는 변수를 메모리(234)에 저장하는 것을 포함하기도 한다.
비디오 인코더(114), 비디오 디코더(134) 및 상기 방법은 메모리(234)의 대응하는 메모리 위치(255, 256, 257)에 저장되는 입력 변수(254)를 사용할 수도 있다. 비디오 인코더(114), 비디오 디코더(134) 및 상기 방법은 출력 변수(261)를 생성하며, 이들 출력 변수는 메모리(234)의 대응하는 메모리 위치(262, 263, 264)에 저장된다. 중간 변수(258)는 메모리 위치( 259, 260, 266, 267)에 저장될 수 있다.
도 2b의 프로세서(205)를 참조하면, 레지스터(244, 245, 246), ALU(arithmetic logic unit)(240) 및 제어 유닛(239)은 함께 동작하여 프로그램(233)을 구성하는 인스트럭션 세트 내의 모든 인스트럭션에 대한 "페치, 디코드 및 실행" 사이클을 행하는 데에 필요한 마이크로 동작의 시퀀스를 수행한다. 각각의 페치, 디코드 및 실행 사이클은,
(a) 메모리 위치(228, 229, 230)로부터 인스트럭션(231)을 페치하거나 판독하는 페치 동작,
(b) 제어 유닛(239)이 어느 인스트럭션이 페치되었는지를 결정하는 디코드 동작, 및
(c) 제어 유닛(239) 및/또는 ALU(240)가 인스트럭션을 실행하는 실행 동작을 포함한다.
그 후에, 다음 인스트럭션을 위한 추가적인 페치, 디코드 및 실행 사이클이 실행될 수 있다. 마찬가지로, 제어 유닛(239)이 소정의 값을 메모리 위치(232)에 저장하거나 기록하는 저장 사이클이 실행될 수도 있다.
후술되는 도 11의 프로세스의 각각의 단계 또는 서브프로세스는 프로그램(233)의 하나 이상의 세그먼트와 관련되어 있고, 전형적으로 프로세서(205) 내의 레지스터 섹션(244, 245, 247), ALU(240) 및 제어 유닛(239)에 의해서 함께 동작하도록 수행되어, 프로그램(233)의 표시된 세그먼트에 대한 인스트럭션 세트 내의 모든 인스트럭션에 대한 사이클을 페치, 디코드 및 실행한다.
도 3은 비디오 인코더(114)의 기능 모듈을 도시하는 개략적인 블록도이다. 도 4는 비디오 디코더(134)의 기능 모듈을 도시하는 개략적인 블록도이다. 비디오 인코더(114) 및 비디오 디코더(134)는 도 2a 및 2b에 도시된 바와 같은 범용 컴퓨터 시스템(200)을 사용하여 구현될 수 있으며, 여기서 각종 기능 모듈은 컴퓨터 시스템(200) 내의 전용 하드웨어에 의해서, 하드 디스크 드라이브(205) 상에 상주하고, 프로세서(205)에 의해서 그 실행이 제어되는 소프트웨어 애플리케이션 프로그램(233)의 하나 이상의 소프트웨어 코드 모듈과 같은 컴퓨터 시스템(200) 내에서 실행가능한 소프트웨어에 의해서, 또는 대안적으로 전용 하드웨어와 컴퓨터 시스템(200) 내에서 실행가능한 소프트웨어의 조합에 의해서 실시될 수 있다. 비디오 인코더(114), 비디오 디코더(134) 및 상기 방법은 대안적으로 상기 방법의 기능 또는 부기능을 수행하는 하나 이상의 집적 회로와 같은 전용 하드웨어에서 실시될 수 있다. 전용 하드웨어는 그래픽 프로세서, 디지털 신호 프로세서, ASIC(application specific integrated circuit), FPGA(field programmable gate array) 또는 하나 이상의 마이크로프로세서 및 관련 메모리를 포함할 수도 있다. 특히, 비디오 인코더(114)는 모듈(320-346)을 포함하고, 비디오 디코더(134)는 모듈(420-434)을 포함하며, 이들은 각각 소프트웨어 애플리케이션 프로그램(233)의 하나 이상의 소프트웨어 코드 모듈로서 실시될 수 있다.
도 3의 비디오 인코더(114)는 HEVC(high efficiency video coding) 비디오 인코딩 파이프라인의 일례이지만, 여기서 설명되는 처리 스테이지를 수행하는 데에 다른 비디오 코덱이 이용될 수도 있다. 비디오 인코더(114)는 각각의 프레임이 하나 이상의 컬러 채널을 포함하는 일련의 프레임과 같은 캡쳐된 프레임 데이터를 수신한다. 각각의 프레임은 컬러 채널당 하나의 샘플 그리드를 포함한다. 컬러 정보는 ITU-R BT.709 권고('YUV')와 같은 '컬러 공간'을 사용하여 표현되지만, 다른 컬러 공간도 가능하다. YUV 컬러 공간과 같은 컬러 공간이 사용되는 경우, 컬러 채널은 루마 컬러 채널('Y') 및 2개의 크로마 컬러 채널('U' 및 'V')을 포함한다. 또한, 이미지 샘플링에 따라, 또는 캡쳐된 프레임 데이터의 리샘플링에 대한 필터링의 애플리케이션에 따라 정보의 양을 달리하는 것도 캡쳐된 프레임 데이터의 각각의 컬러 채널의 샘플 그리드에 포함될 수 있다. '크로마 포맷'으로 알려진 몇몇 가능한 샘플링 방법이 존재하며, 그중 일부는 도 5a 및 5b를 참조하여 설명될 것이다.
비디오 인코더(114)는 프레임 데이터(310)와 같은 캡쳐된 프레임 데이터의 각각의 프레임을 통상적으로 '코딩 트리 블록'(CTB)이라고 불리는 영역으로 분할한다. 각각의 코딩 트리 블록(CTB)은 프레임의 일부의 '코딩 유닛'(CU)의 집합으로의 계층적인 쿼드 트리 하위분할을 포함한다. 코딩 트리 블록(CTB)은 통상적으로 64x64의 루마 샘플의 영역을 차지하지만, 16x16 또는 32x32와 같은 다른 사이즈도 가능하다. 일부 경우에는 128x128 루마 샘플과 같이 보다 큰 사이즈가 코딩 트리 블록(CTB)에 이용될 수도 있다. 코딩 트리 블록(CTB)은 스플릿(split)을 통해서 4개의 동일한 사이즈의 영역으로 하위분할되어서 새로운 계층적 레벨을 생성할 수 있다. 스플릿이 재귀적으로 적용되어서 쿼드 트리 계층이 될 수도 있다. 코딩 트리 블록(CTB) 측의 크기는 항상 2의 거듭제곱이고, 쿼드 트리 스플릿은 항상 폭과 높이를 1/2로 하기 때문에, 영역 측 크기 또한 항상 2의 거듭제곱이다. 영역의 추가적인 스플릿이 수행되지 않을 경우, '코딩 유닛'(CU)은 영역 내에 존재한다고 한다. 코딩 트리 블록의 최상위 레벨(또는 전형적으로 "최고 레벨")에서 스플릿이 행해지지 않을 경우, 전체 코딩 트리 블록을 차지하는 영역은 통상적으로 '최대 코딩 유닛'(LCU)이라고 불리는 하나의 코딩 유닛(CU)을 포함한다. 8x8 루마 샘플에 의해서 점유되는 영역과 같이 각각의 코딩 유닛(CU)에 대한 최소 사이즈 또한 존재하지만 다른 최소 사이즈 또한 가능한다. 최소 사이즈의 코딩 유닛은 통상적으로 '최소 코딩 유닛'(SCU)이라고 한다. 쿼드 트리 계층구조의 결과로서, 코딩 트리 블록(CTB) 전체가 하나 이상의 코딩 유닛(CU)에 의해서 점유된다.
비디오 인코더(114)는 통상적으로 각각의 코딩 유닛(CU)에 대하여 '예측 유닛'(PU)이라고 불리는 데이터 샘플의 어레이를 하나 이상 생성한다. 예측 유닛(PU)이 중첩되지 않으며, 코딩 유닛(CU) 전체가 하나 이상의 예측 유닛(PU)에 의해서 점유된다는 요건 하에서, 각각의 코딩 유닛(CU) 내의 예측 유닛(PU)의 다양한 배열이 가능하다. 예측 유닛(PU)이 중첩하지 않으며, 코딩 유닛(CU) 전체가 하나 이상의 예측 유닛(PU)에 의해서 점유되는 요건은 예측 유닛(PU)이 프레임 영역 전체를 커버하는 것을 보장한다.
비디오 인코더(114)는 멀티플렉서 모듈(340)로부터 예측 유닛(PU)(382)을 출력함으로써 동작한다. 차(difference) 모듈(344)은 예측 유닛(PU)(382)과 대응하는 데이터 샘플의 2D 어레이를 프레임 데이터(310)의 코딩 트리 블록(CTB)의 코딩 유닛(CU)으로부터 공간 도메인에 출력하며, 이 차는 '레지듀얼 샘플 어레이'(360)로 알려져 있다. 레지듀얼 샘플 어레이(360)는 변환 모듈(320)에서 주파수 도메인으로 변환될 수 있다. 차 모듈(344)로부터의 레지듀얼 샘플 어레이(360)는 '순방향 변환'을 적용함으로써 레지듀얼 샘플 어레이(360)를 공간 표현으로부터 주파수 도메인 표현으로 변환하는 (또는 '인코딩하는') 변환 모듈(320)에 의해서 수신된다. 변환 모듈(320)은 변환 계수를 생성한다. 변환 계수는 코딩 유닛(CU)의 계층구조적 하위분할 내의 변환 유닛(TU) 내의 각각의 변환에 대해서 레지듀얼 변환 어레이(362)로서 구성된다. 코딩 유닛(CU)은 하나 이상의 변환 유닛(TU)으로 하위분할된다. 하위분할된 코딩 유닛(CU)은 '레지듀얼 쿼드 트리' 또는 '레지듀얼 쿼드 트리(RQT)'라고 불릴 수 있다. 코딩 유닛(CU)의 레지듀얼 데이터의 레지듀얼 쿼드 트리(RQT)로의 하위분할은 변환 제어 모듈(346)의 제어 하에서 행해진다.
변환 제어 모듈(346)은 '레이트-왜곡 기준'에 따라서 현재의 코딩 유닛(CU)의 레지듀얼 쿼드 트리 내의 변환 유닛(TU)의 다양한 가능한 배열에 대하여 인코딩된 비트스트림(312)에서 요구되는 비트레이트를 테스트할 수 있다. 레이트-왜곡 기준은 인코딩된 비트스트림(312) 또는 그 로컬 영역의 비트레이트와, 왜곡 또는 프레임 버퍼(332) 내에 존재하는 프레임과 캡쳐된 프레임 데이터 간의 차 사이의 수용가능한 트레이드오프의 척도이다. 일부 배열에서, 레이트-왜곡 기준은 루마에 대한 레이트 및 왜곡만 고려하기 때문에, 인코딩 결정이 루마 채널의 특성에만 기초하여 이루어진다. 통상적으로, 레지듀얼 쿼드 트리(RQT)는 루마와 크로마 간에 공유되며, 크로마 정보의 양은 루마에 비하여 비교적 작아서, 레이트-왜곡 기준에서 루마만을 고려하는 것이 적절하다. 크로마에만 특정된 결정이 이루어질 필요가 있는 경우에는, 레이트-왜곡 기준은 크로마 비트 비용 및 레이트 비용을 고려하는 것으로 확장될 수 있으며, 또는, 대안적으로 루마에 대한 레이트-왜곡 기준 결정에 기초하여 크로마로부터 타당한 결론을 내리기 위하여 규칙 또는 '휴리스틱(heuristic)'이 도입될 수도 있다. 이리하여, 변환 제어 모듈(346)은 레지듀얼 쿼드 트리로서의 변환 유닛(TU)의 배열을 선택할 수 있다. 선택된 배열은 가능한 변환 유닛(TU)의 세트로부터 현재의 코딩 유닛(CU)의 레지듀얼 샘플 어레이(360)를 인코딩하기 위해서 구성된다. 코딩 유닛(CU)의 레지듀얼 쿼트 트리(RQT)의 구성은 스플릿 변환 플래그(386)의 세트에 의해서 특정된다. 레지듀얼 쿼드 트리(RQT)는 도 5a 및 5b를 참조하여 이하에서 더 설명될 것이다.
레지듀얼 쿼드 트리에 대한 가능한 변환 유닛(TU)의 세트는 이용가능한 변환 사이즈 및 코딩 유닛(CU) 사이즈에 의존한다. 레지듀얼 쿼드 트리는 인코딩된 비트스트림(312)에서의 보다 낮은 비트레이트를 야기하여, 보다 높은 코딩 효율을 달성한다. 보다 큰 사이즈의 변환 유닛(TU)은 루마 및 크로마 양쪽 모두에 대한 보다 큰 변환의 사용을 야기한다. 통상적으로, 보다 큰 변환은 샘플 데이터 (또는 '레지듀얼 에너지')가 레지듀얼 샘플 어레이 전체에 걸쳐 확산된 상태에서 레지듀얼 샘플 어레이의 보다 컴팩트한 표현을 제공한다. 보다 작은 변환 유닛(TU)은 레지듀얼 에너지가 레지듀얼 샘플 어레이의 특정 영역에 국소화된 상태에서 레지듀얼 샘플 어레이의 보다 컴팩트한 표현을 제공한다. 이에 의해, 레지듀얼 쿼드 트리의 많은 가능한 구성은 개발 중인 HEVC(high efficiency video coding) 표준에서 레지듀얼 샘플 어레이(360)의 높은 코딩 효율을 획득하기 위한 유용한 수단을 제공한다.
개발 중인 HEVC(high efficiency video coding) 표준에 대하여, 레지듀얼 샘플 어레이(360)의 주파수 도메인 표현으로의 변환은 변형된 이산 코사인 변환(DCT)을 사용하여 실시되는데, 시프트(shift) 및 가산(addition)을 이용하여 실행되도록 DCT가 변형된 것이다. 지원되는 변환 사이즈에 따라서 다양한 사이즈의 레지듀얼 샘플 어레이(360) 및 변환 계수(362)가 가능하다. 개발 중인 HEVC(high efficiency video coding) 표준에서는, 32x32, 16x16, 8x8 및 4x4와 같은 사이즈를 가지는 데이터 샘플의 2D 어레이에 대하여 변환이 행해진다. 이에 의해, 변환 사이즈의 미리 정해진 세트가 비디오 인코더(114)에 대해 이용가능하다. 또한, 변환 사이즈의 세트는 루마 채널 및 크로마 채널 사이에서 상이할 수 있다.
통상적으로 2차원 변환은 '분리가능하게(separable)' 구성되어서, 일 방향에서의(예컨대, 행에서의) 데이터 샘플의 2D 어레이에 대하여 동작하는 1D 변환의 제1 세트로서의 실시를 가능하게 한다. 1D 변환의 제1 세트 이후에는 다른 방향에서의(예컨대, 열에서의) 1D 변환의 제1 세트로부터 출력되는 데이터 샘플의 2D 어레이에 동작하는 1D 변환의 제2 세트가 이어진다. 동일한 폭 및 높이를 가지는 변환은 통상적으로 '정방형 변환'으로 불린다. 상이한 폭 및 높이를 가지는 추가적인 변환 또한 이용될 수 있으며, 통상적으로 '비정방형 변환'이라고 불린다. 행과 열의 1차원 변환은 4x4 변환 모듈 또는 8x8 변환 모듈과 같이 특정 하드웨어 또는 소프트웨어 모듈과 결합될 수도 있다.
보다 큰 크기를 가지는 변환은, 비록 그러한 보다 큰 크기의 변환이 자주 이용되지는 않지만, 구현하기에 보다 많은 양의 회로를 필요로 한다. 따라서, 개발 중인 HEVC(high efficiency video coding) 표준은 32x32 루마 샘플의 최대 변환 사이즈를 정의한다. 개발 중인 HEVC(high efficiency video coding) 표준에 대해서 정의되는 변환 실시의 통합적인 성질 또한 선호도(preference)를 도입하여 지원되는 비정방형 변환 사이즈를 감소시킨다. 비정방형 변환 사이즈는 전형적으로 각각의 비정방형 변환 사이즈에 대하여 전체적으로 새로운 하드웨어가 구현되는 것을 요구하거나, 다양한 1D 변환 로직의 특정한 비정방형 변환 사이즈로의 재구성을 가능하게 하는 추가적인 선택 로직을 요구한다. 또한, 비정방형 변환 사이즈는 각각의 지원되는 비정방형 변환 사이즈에 대하여 변환 및 역변환 동작을 수행하기 위한 추가적인 방법을 도입함으로써 소프트웨어 구현의 복잡도를 증가시킬 것이며, 추가적인 변환 사이즈의 필요한 버퍼 관리 기능을 실시하기 위한 복잡도를 증가시킬 것이다.
변환은 루마 및 크로마 채널 양자 모두에 적용될 수 있다. 변환 유닛(TU)에 관한 루마와 크로마 채널의 취급 간의 차이가 존재하며, 도 5a 및 5b를 참조하여 이하에서 논의될 것이다. 각각의 레지듀얼 쿼드 트리는 하나의 코딩 유닛(CU)을 차지하고, 코딩 유닛(CU)을 레지듀얼 쿼드 트리 계층구조의 각각의 리프 노드에서의 하나의 변환 유닛(TU)을 포함하는 계층구조로 쿼드 트리 분해하는 것으로서 정의되며, 여기서 각각의 변환 유닛(TU)은 지원되는 변환 사이즈의 특정한 변환을 이용할 수 있다. 코딩 트리 블록(CTB)과 유사하게, 코딩 유닛(CU) 전체가 하나 이상의 변환 유닛(TU)에 의해서 점유될 필요가 있다. 레지듀얼 쿼드 트리 계층구조의 각 레벨에서, '코딩된 블록 플래그 값'은 각각의 컬러 채널 내의 가능한 변환의 존재에 대한 신호를 현재의 계층구조 레벨에서 보내거나(추가적인 스플릿이 존재하지 않을 경우), 보다 낮은 계층구조 레벨이 결과적인 변환 유닛(TU) 중에서 적어도 하나의 변환을 포함할 수 있음을 나타내는 신호를 보낸다. 코딩된 블록 플래그 값이 0인 경우, 현재의 또는 보다 낮은 계층구조 레벨에서의 모든 레지듀얼 계수는 0으로 알려져 있고, 따라서, (현재의 계층구조 레벨 또는 보다 낮은 계층구조 레벨에서의) 레지듀얼 쿼드 트리의 임의의 변환 유닛(TU)의 대응하는 컬러 채널에 대하여 변환이 행해질 필요가 없다. 코딩된 블록 플래그 값이 1인 경우, 현재 영역이 더 이상 하위분할되지 않는다면, 그 영역은 적어도 하나의 0이 아닌 레지듀얼 계수를 필요로 하는 변환을 포함한다. 현재의 영역이 더 하위분할되는 경우, 1의 코딩된 블록 플래그 값은 각각의 결과적인 하위분할된 영역이 0이 아닌 레지듀얼 계수를 포함할 수 있음을 나타낸다. 이러한 방식으로, 각각의 컬러 채널에 대하여, 0 이상의 변환이 코딩 유닛(CU)의 비존재(none)로부터 전체까지 변하는, 코딩 유닛(CU)의 영역의 부분을 커버할 수 있다. 별도의 코딩된 블록 플래그 값이 각각의 컬러 채널에 대하여 존재한다. 단지 하나의 가능한 코딩된 블록 플래그 값이 존재하는 경우가 있지만, 각각의 코딩된 블록 플래그 값은 인코딩될 필요가 없다.
변환 계수(362)는 데이터 샘플 값이 결정된 양자화 파라미터(384)에 따라 스케일링되고 양자화되는 스케일 및 양자화 모듈(322)에 입력되어 레지듀얼 데이터 어레이(364)를 생성한다. 스케일 및 양자화는 결정된 양자화 파라미터(384)의 값에 따라 정확도의 손실을 초래한다. 결정된 양자화 파라미터(384)의 보다 높은 값은 보다 많은 정보가 레지듀얼 데이터로부터 소실되는 것을 초래한다. 소실된 정보는 비디오 디코더(134)로부터의 출력의 시각적 품질의 감소시키는 대신에 비디오 인코더(114)에 의해서 취득되는 압축을 증가시킨다. 결정된 양자화 파라미터(384)는 프레임 데이터(310)의 각 프레임의 인코딩 중에 조정될 수 있다. 또는, 결정된 양자화 파라미터(384)가 프레임 데이터(310)의 일부에 대하여 고정될 수도 있다. 추가적인 대안에서, 결정된 양자화 파라미터(384)는 프레임 데이터(310)의 프레임 전체에 대하여 고정될 수도 있다. 별개의 값을 가지는 상이한 레지듀얼 계수의 양자화와 같은, 결정된 양자화 파라미터(384)의 다른 조정 또한 가능하다.
레지듀얼 데이터 어레이(364) 및 결정된 양자화 파라미터(384)는 역 스케일링 모듈(326)에 대한 입력으로서 간주된다. 역 스케일링 모듈(326)은 스케일 및 양자화 모듈(322)에 의해서 행해진 스케일링을 역전시켜서 리스케일링된 데이터 어레이(366)를 생성하는데, 이것은 레지듀얼 데이터 어레이(364)의 리스케일링된 버전이다. 레지듀얼 데이터 어레이(364), 결정된 양자화 파라미터(384) 및 스플릿 변환 플래그(386) 또한 엔트로피 인코더 모듈(324)에 대한 입력으로서 간주된다. 엔트로피 인코더 모듈(324)은 인코딩된 비트스트림(312) (또는 '비디오 비트스트림') 내의 레지듀얼 데이터 어레이(364)의 값을 인코딩한다. 스케일 및 양자화 모듈(322)에 기인하는 정확도의 손실에 기인하여, 리스케일링된 데이터 어레이(366)는 어레이(363) 내의 오리지널 값과 동일하지 않다. 그 후에, 역 스케일링 모듈(326)로부터의 리스케일링된 데이터 어레이(366)가 역변환 모듈(328)에 출력된다. 역변환 모듈(328)은 주파수 도메인으로부터 공간 도메인으로의 역변환을 행하여 리스케일링된 변환 계수 어레이(366)의 공간 도메인 표현(368)을 생성한다. 공간 도메인 표면(368)은 비디오 디코더(134)에서 생성되는 공간 도메인 표현과 실질적으로 동일하다. 그 후에, 공간 도메인 표현(368)은 합 모듈(342)에 입력된다.
움직임 추정 모듈(338)은 통상적으로 메모리(206) 내에 구성되는 프레임 버퍼 모듈(332)에 저장된 프레임의 하나 이상의 세트로부터의 이전 프레임 데이터와 프레임 데이터(310)를 비교함으로써 움직임 벡터(374)를 생성한다. 이러한 프레임의 세트는 '참조 화상 리스트'라고 알려져 있다. 그 후에, 움직임 벡터(374)로부터 유도되는 공간적인 오프셋을 고려하면서 프레임 버퍼 모듈(332)에 저장된 데이터 샘플을 필터링함으로써, 움직임 벡터(374)가 인터 예측된 예측 유닛(PU)(376)을 생성하는 움직임 보상 모듈(334)에 입력된다. 도 3에 도시되어 있지 않지만, 움직임 벡터(374)는 인코딩된 비트스트림(312)에서의 인코딩을 위하여 구문 요소로서 엔트로피 인코더 모듈(324)에도 보내어진다. 인트라 프레임 예측 모듈(336)은 멀티플렉서 모듈(340)로부터의 예측 유닛(PU)(382)과 멀티플렉서(369)의 공간 도메인 출력을 합하는 합 모듈(342)로부터 얻어진 샘플(370)을 이용하여 인트라 예측된 예측 유닛(PU)(378)을 생성한다. 인트라 프레임 예측 모듈(336)은 인코딩된 비트스트림(312)으로 인코딩하기 위하여 엔트로피 인코더(324)로 보내어지는 인트라 예측 모드(380) 또한 생성한다.
예측 유닛(PU)은 인트라 예측법 또는 인터 예측법 중 하나를 이용하여 생성될 수도 있다. 인트라 예측법은 예측 유닛(PU) 내의 참조 데이터 샘플을 생성하기 위하여 이전에 디코딩된 예측 유닛(PU)에 근접하는 데이터 샘플(전형적으로, 예측 유닛의 상측 및 좌측)을 이용한다. '인트라 예측 모드'라고 불리는 인트라 예측의 다양한 방향이 가능하다. 인터 예측법은 선택된 참조 프레임으로부터 블록을 참조하는 데에 움직임 벡터를 이용한다. 움직임 추정 모듈(338) 및 움직임 보상 모듈(334)은 루마 샘플의 1/8의 정확도를 가지고서 움직임 벡터(374)에 대하여 동작하여, 프레임 데이터(310) 내의 프레임 사이의 움직임의 정확한 모델링을 가능하게 한다. 인트라 예측법 또는 인터 예측법 중 어느 것을 사용할 것인지에 관한 결정은 결과적인 인코딩된 비트스트림(312)의 원하는 비트레이트와, 인트라 예측법 또는 인터 예측법 중 하나에 의해서 도입되는 이미지 품질 왜곡의 양 사이의 레이트-왜곡 트레이드오프에 따라 이루어진다. 인트라 예측이 이용되는 경우에는, 마찬가지로 레이트-왜곡 트레이트오프에 따라서, 가능한 인트라 예측 모드의 세트로부터 하나의 인트라 예측 모드가 선택된다. 멀티플렉서 모듈(340)은, 레이트 왜곡 알고리즘에 의해서 이루어진 결정에 따라 인트라 프레임 예측 모듈(336)로부터의 인트라 예측 참조 샘플(378) 또는 움직임 보상 블록(334)으로부터의 인터 예측된 예측 유닛(PU)(376) 중 하나를 선택한다.
합 모듈(342)은 디블록킹 필터 모듈(330)에 입력되는 합(370)을 생성한다. 디블록킹 필터 모듈(330)은 블록 경계를 따른 필터링을 행하고, 메모리(206) 내에 구성된 프레임 버퍼 모듈(332)에 기록되는 디블록킹된 샘플(372)을 생성한다. 프레임 버퍼 모듈(332)은 참조 화상 리스트의 일부로서 장래의 참조를 위하여 하나 이상의 과거의 프레임으로부터의 데이터를 보유하기에 충분한 용량을 가지는 버퍼이다.
개발 중인 HEVC(high efficiency video coding) 표준에 대하여, 엔트로피 인코더(324)에 의해서 생성되는 인코딩된 비트스트림(312)은 네트워크 추상 계층(NAL) 유닛으로 기술된다. 통상적으로 프레임의 각각의 슬라이스는 하나의 NAL 유닛 내에 포함된다. 엔트로피 인코더(324)는 컨텍스트 적응형 이진 산술 코딩(CABAC) 알고리즘을 수행함으로써 집합적으로 '구문 요소'라고 불리는, 레지듀얼 어레이(364), 인트라 예측 모드(380), 움직임 벡터 및 다른 파라미터를 인코딩된 비트스트림(312)으로 인코딩한다. 구문 요소는 '구문 구조'로 함께 그룹핑된다. 그룹핑은 계층구조적 구조를 기술하기 위한 반복을 포함할 수 있다. 인트라 예측 모드와 같은 오디널 값(ordinal value) 또는 움직임 벡터와 같은 정수 값에 추가하여, 구문 요소 또한, 예컨대 쿼드 트리 스플릿을 나타내는 플래그를 포함한다.
도 4의 비디오 디코더(134)가 HEVC(high efficiency video coding) 비디오 디코딩 파이프라인을 참조하여 기술되지만, 다른 비디오 코덱이 모듈(420-434)의 처리 스테이지를 이용할 수도 있다. 인코딩된 비디오 정보는 메모리(206), 하드 디스크 드라이브(210), CD-ROM, Blu-rayTM 디스크 또는 다른 컴퓨터 판독가능 저장 매체로부터 판독될 수도 있다. 또는, 인코딩된 비디오 정보는 통신 네트워크(220)에 접속된 서버와 같은 외부 소스 또는 무선 주파수 수신기로부터 수신될 수도 있다.
도 4로부터 알 수 있는 바와 같이, 인코딩된 비트스트림(312)과 같은 수신된 비디오 데이터는 비디오 디코더(134)에 입력된다. 인코딩된 비트스트림(312)은 메모리(206), 하드 디스크 드라이브(210), CD-ROM, Blu-rayTM 디스크 또는 다른 컴퓨터 판독가능 저장 매체로부터 판독될 수도 있다. 또는, 인코딩된 비트스트림(312)은 통신 네트워크(220)에 접속된 서버와 같은 외부 소스 또는 무선 주파수 수신기로부터 수신될 수도 있다. 인코딩된 비트스트림(312)은 디코딩될 캡쳐된 프레임 데이터를 나타내는 인코딩된 구문 요소를 포함한다.
인코딩된 비트스트림(312)은 인코딩된 비트스트림(312)으로부터 구문 요소를 추출하고, 구문 요소의 값을 비디오 디코더(134) 내의 다른 블록에 보내는 엔트로피 디코더 모듈(420)에 입력된다. 엔트로피 디코더 모듈(420)은 컨텍스트 적응형 이진 산술 코딩(CABAC) 알고리즘을 적용하여 인코딩된 비트스트림(312)으로부터 구문 요소를 디코딩한다. 디코딩된 구문 요소는 비디오 디코더(134) 내의 파라미터를 재현하는 데에 사용된다. 파라미터는 0 이상의 레지듀얼 데이터 어레이(450), 움직임 벡터(452), 예측 모드(454) 및 스플릿 변환 플래그(468)를 포함한다. 레지듀얼 데이터 어레이(450)는 역 스케일 모듈(421)로 보내어지고, 움직임 벡터(452)는 움직임 보상 모듈(434)로 보내어지고, 예측 모드(454)는 인트라 프레임 예측 모듈(426) 및 멀티플렉서(428)로 보내어진다. 역 스케일 모듈(421)은 레지듀얼 데이터에 대하여 역 스케일링을 행하여 변환 계수 형태의 재현된 데이터(455)를 생성한다. 역 스케일 모듈(421)은 재현된 데이터(455)를 역변환 모듈(422)에 출력한다. 역변환 모듈(422)은 '역변환'을 적용하여 재현된 데이터(455)(즉, 변환 계수)를 주파수 도메인 표현으로부터 공간 도메인 표현으로 변환(또는 '디코딩')하여, 멀티플렉서 모듈(423)을 통해서 레지듀얼 샘플 어레이(456)를 출력한다. 역변환 모듈(422)은 역변환 모듈(328)과 동일한 동작을 행한다. 역변환 모듈(422)은 스플릿 변환 플래그(468)에 의해서 특정되는 레지듀얼 쿼드 트리에 따라서 변환을 행하도록 구성된다. 역변환 모듈(422)에 의해서 행해지는 변환은 개발 중인 HEVC(high efficiency video coding) 표준에 준거하는 인코딩된 비트스트림(312)을 디코딩하는 데에 필요한 변환 사이즈의 미리 정해진 세트로부터 선택된다.
움직임 보상 모듈(434)은 엔트로피 디코더 모듈(420)로부터의, 메모리(206) 내에 구성되는 프레임 버퍼 블록(432)으로부터의 참조 프레임 데이터(460)와 결합된 움직임 벡터(452)를 이용하여, 출력 디코딩된 프레임 데이터의 예측인 예측 유닛(PU)을 위한 인터 예측된 예측 유닛(PU)(462)을 생성한다. 예측 모드(454)가, 현재 예측 유닛이 인트라 예측을 사용하여 코딩된 것을 나타낼 경우, 인트라 프레임 예측 모듈(426)은 예측 유닛(PU)에 공간적으로 근접하는 데이터 샘플 및 마찬가지로 예측 모드(454)에 의해서 제공되는 예측 방향을 이용하여 예측 유닛(PU)(464)을 위한 인트라 예측된 예측 유닛(PU)을 생성한다. 공간적으로 근접하는 데이터 샘플은 합 모듈(424)로부터 출력되는 합(458)으로부터 얻어진다. 멀티플렉서 모듈(428)은 현재 예측 모드(454)에 따라서 예측 유닛(PU)(466)에 대하여 인트라 예측된 예측 유닛(PU)(464) 또는 인터 예측된 예측 유닛(PU)(462)을 선택한다. 멀티플렉서 모듈(428)로부터 출력되는 예측 유닛(PU)(466)은 합 모듈(424)에 의해서 역 스케일 및 변환 모듈(422)로부터의 레지듀얼 샘플 어레이(456)에 가산되어 합(458)을 생성한다. 그 후에, 합(458)은 디블록킹 필터 모듈(430) 및 인트라 프레임 예측 모듈(426) 각각에 입력된다. 디블록킹 필터 모듈(430)은 변환 유닛(TU) 경계와 같은 데이터 블록 경계를 따라 필터링을 행하여 가시적인 결함을 매끄럽게 한다. 디블록킹 필터 모듈(430)의 출력은 메모리(206) 내에 구성되는 프레임 버퍼 모듈(432)에 기록된다. 프레임 버퍼 모듈(432)은 장래의 참조를 위하여 하나 이상의 디코딩된 프레임을 보유하기에 충분한 저장소를 제공한다. 디코딩된 프레임(412)은 프레임 버퍼 모듈(432)로부터 (예컨대, 디스플레이 디바이스(214)의 형태의) 디스플레이 디바이스(136)와 같은 디스플레이 디바이스에도 출력된다.
도 5a는 4:2:0 크로마 포맷을 사용하여 인코딩된 프레임 부분(500)의 샘플 그리드를 도시한다. 도 5b는 4:2:2 크로마 포맷을 사용하여 인코딩된 프레임 부분(510)을 도시한다. 크로마 포맷은 비디오 인코더(114)에 대한 구성 파라미터로서 특정되며, 비디오 인코더(114)는 'chroma_format_idc' 구문 요소를 크로마 포맷을 특정하는 인코딩된 비트스트림(312)으로 인코딩한다. 비디오 디코더(134)는 'chroma_format_idc' 구문 요소를 인코딩된 비트스트림(312)으로부터 디코딩하여 사용 중인 크로마 포맷을 결정한다. 예컨대, 4:2:0 크로마 포맷이 사용 중인 경우에는, chroma_format_idc의 값은 1이고, 4:2:2 크로마 포맷이 사용 중인 경우에는, chroma_format_idc의 값은 2이며, 4:4:4 크로마 포맷이 사용 중인 경우에는, chroma_format_idc의 값은 3이다. 도 5a 및 5b에서, 루마 샘플 위치(501)와 같은 루마 샘플 위치는 'X' 기호를 사용하여 도시되고, 크로마 샘플 위치(502)와 같은 크로마 샘플 위치는 'O' 기호를 사용하여 도시된다. 표시된 지점에서 프레임 부분(500)을 샘플링함으로써, 4:2:0 크로마 포맷이 적용되는 경우에 각 컬러 채널에 대하여 샘플 그리드가 얻어진다. 각각의 루마 샘플 위치 X에서 루마 채널('Y')이 샘플링되고, 각각의 크로마 샘플 위치 O에서 양쪽의 크로마 채널('U' 및 'V')이 샘플링된다. 도 5a에 도시한 바와 같이, 각각의 크로마 샘플 위치에 대하여, 루마 샘플 위치의 2x2 배열이 존재한다.
프레임 부분(510)에 표시된 루마 샘플 위치에서 루마 샘플을, 크로마 샘플 위치에서 크로마 샘플을 샘플링함으로써, 4:2:2 크로마 포맷이 적용되는 경우에 각각의 컬러 채널에 대하여 샘플 그리드가 얻어진다. 프레임 부분(500)에 대한 컬러 채널에의 데이터 샘플의 할당과 동일한 할당이 프레임 부분(510)에 대해서 이루어진다. 프레임 부분(500)과는 대조적으로, 프레임 부분(510)에는 2배 많은 크로마 샘플 위치가 존재한다. 프레임 부분(510)에서는 크로마 샘플 위치가 루마 샘플 위치를 하나 걸러서 함께 배치되어 있다. 따라서, 도 5b에서, 각각의 크로마 샘플 위치에 대하여, 2x1 루마 샘플 위치의 배열이 존재한다.
변환 유닛의 다양한 허용가능한 크기가 루마 샘플의 단위로 상술되었다. 따라서, 루마 채널에 대하여 적용되는 변환에 의해서 커버되는 영역은 변환 유닛 크기와 동일한 크기를 가질 것이다. 변환 유닛 또한 크로마 채널을 인코딩하므로, 각각의 크로마 채널에 대하여 적용되는 변환은 사용 중인 특정한 크로마 포맷에 따라 조정된 크기를 가질 것이다. 예컨대, 4:2:0 크로마 포맷이 사용 중인 경우, 16x16의 변환 유닛(TU)은 루마 채널에 대해서는 16x16 변환을, 각각의 크로마 채널에 대해서는 8x8 변환을 이용할 것이다.
레지듀얼 쿼드 트리(RQT)는 계층구조의 각각의 '리프 노드'에서 하나 이상의 변환 유닛(TU)을 포함하는 영역을 커버하는 '루트 노드'에서 시작하는 계층구조를 정의한다. 리프가 아닌 노드에서 영역은 '쿼드 트리 스플릿'으로 알려진 스플릿으로 4개의 동일한 사이즈의 '하위 영역'으로 분할된다. 각각의 변환 유닛(TU)은 통상적으로 루마 샘플 그리드 상에 변환 유닛(TU)을 포함하는 영역의 크기로서 기술되는- 비록 이 영역은 크로마 샘플 그리드 상의 크기로도 기술될 수 있지만 - 관련된 사이즈 (또는 '변환 사이즈')를 가진다. 이 사이즈는 코딩 유닛(CU) 사이즈 및 변환 깊이에 따라 달라진다. 변환 깊이가 0인 변환 유닛(TU)은 대응하는 코딩 유닛(CU)의 사이즈와 동일한 사이즈를 가진다. 각각의 변환 깊이의 증가는 주어진 변환 깊이에서 레지듀얼 쿼드 트리에 존재하는 변환 유닛(TU)의 크기(즉, 변의 폭 및 높이)를 1/2이 되게 한다. 프레임이 루마 채널 및 크로마 채널을 포함하기 때문에, 코딩 유닛(CU)은 루마 샘플 그리드 및 크로마 샘플 그리드 양자 모두의 위에 영역을 차지하고, 따라서 각각의 변환 유닛(TU)은 정보 루마 샘플 그리드 상의 루마 샘플과, 크로마 샘플 그리드 상의 크로마 샘플 양자 모두를 기술하는 정보를 포함한다. 각각의 변환 유닛(TU)에 대한 정보의 특성은 비디오 인코더(114) 또는 비디오 디코더(134)의 처리 스테이지에 따라 변한다. 변환 모듈(320)의 입력 및 역 스케일 및 변환 모듈(422)의 출력에서, 레지듀얼 샘플 어레이(360 및 456)는 각각 공간 도메인 내의 각각의 변환 유닛(TU)에 대한 정보를 포함한다. 레지듀얼 샘플 어레이(360 및 456)는, 루마 채널과 크로마 채널 사이의 처리의 차이에 의해 '크로마 레지듀얼 샘플 어레이' 및 '루마 레지듀얼 샘플 어레이'로 더 분할될 수 있다. 스케일 및 양자화 모듈(322)의 출력과 역 스케일 및 변환 모듈(422)의 입력에서, 레지듀얼 데이터 어레이(364 및 450)는 각각 주파수 도메인 내의 각각의 변환 유닛(TU)에 대한 정보를 포함한다. 레지듀얼 데이터 어레이(364 및 450)는, 루마 채널과 크로마 채널 사이의 처리의 차이에 의해 '크로마 레지듀얼 데이터 어레이' 및 '루마 레지듀얼 데이터 어레이'로 더 분할될 수도 있다.
도 6은 코딩 트리 블록(CTB)(602)의 복수의 코딩 유닛(CU), 예측 유닛(PU) 및 변환 유닛(TU)으로의 하위분할을 개략적으로 도시한다. 쿼드 트리 계층구조는 코딩 트리 블록(CTB)(602)과 같은 코딩 트리 블록(CTB)의 하나 이상의 코딩 유닛(CU)으로의 분할을 기술한다. 쿼드 트리 계층구조는 인코딩된 비트스트림(312)에 존재하는 하나 이상의 '스플릿 코딩 유닛 플래그' (또는 'split_cu_flag' 구문 요소)에 의해서 정의된다.
도 6에서, 코딩 트리 블록(CTB)(602)은 4개의 동일한 사이즈의 정방형 영역으로 분할되고, 그 각각은 더 이상 하위분할되지 않는다. 결과적으로, 코딩 트리 블록(CTB)(602)은 코딩 유닛(CU)(604)과 같은 4개의 코딩 유닛(CU)을 포함한다. 각각의 코딩 유닛(CU) 하나 이상의 예측 유닛(PU) 및 하나 이상의 변환 유닛(TU)을 포함한다.
코딩 유닛(CU)의 하나 이상의 예측 유닛(PU)으로의 분해는 '파티셔닝(partitioning)'이라고 불리고, 통상적으로 인코딩된 비트스트림(312) 내에 존재하는 '파티션 모드'(또는 'part_mode' 구문 요소)에 의해서 특정된다. 파티션 모드는 단일의 예측 유닛(PU)이 전체 코딩 유닛(CU)을 차지하거나, 복수의 비중첩 예측 유닛(PU)이 전체 코딩 유닛(CU)을 차지하는 것을 특정할 수 있다. 예컨대, 도 6에 도시된 바와 같이, 코딩 유닛(CU)(604)은 코딩 유닛(CU)(604)의 영역을 예측 유닛(PU)(608)과 같은 4개의 정방형 예측 유닛(PU)으로 분할하는 파티셔닝(606)을 포함한다.
각각의 인터 예측된 예측 유닛(PU)은 움직임 벡터를 가지고, 각각의 인트라 예측된 예측 유닛(PU)은 방향을 가진다. 결론적으로, 상이한 움직임 벡터, 방향 또는 상이한 움직임 벡터와 방향의 조합에 의해, 근접하는 예측 유닛(PU) 사이의 경계에서 시각적 불연속성이 가능하다. 주어진 파티셔닝에 대하여, 하나 이상의 결과적인 예측 유닛(PU)은 인트라 예측과 인터 예측의 조합이 아니라, 모두 인트라 예측되거나, 모두 인터 예측된다.
코딩 유닛(CU)의 하나 이상의 변환 유닛(TU)으로의 분해는 '레지듀얼 쿼드 트리'(RQT)라고 불리는 쿼드 트리 분해이다. 레지듀얼 쿼드 트리(RQT)는 통상적으로 인코딩된 비트스트림(312)에 존재하는 하나 이상의 '스플릿 변환 플래그'(또는 'split_transform_flag' 구문 요소)에 의해서 특정된다. 예컨대, 코딩 유닛(CU)(604)은 코딩 유닛(CU)(604)의 영역을 4개의 동일한 사이즈의 영역으로 분할하는 레지듀얼 쿼드 트리(RQT)(610)를 포함한다. 4개의 동일한 사이즈의 영역 각각은 더 이상 하위분할되지 않고, 변환 유닛(TU)(612)과 같은 4개의 변환 유닛(TU)을 야기한다. 각각의 변환 유닛(TU)은 루마 채널 및 각각의 크로마 채널에 대한 변환을 포함한다. 비디오 인코더(114) 및 비디오 디코더(134)가 4:2:0 크로마 포맷으로 구성되는 경우, 루마 채널 및 각각의 크로마 채널에 대한 변환 경계(또는 '에지')가 변환 유닛(TU) 경계에 정렬된다. 대조적으로, 비디오 인코더(114) 및 비디오 디코더(134)가 4:2:2 크로마 포맷으로 구성되고, 정방형 변환이 각각의 크로마 채널에 대해서 이용되는 경우, 추가적인 변환 경계가 각각의 크로마 채널에 대하여 존재한다. 변환의 경계에서 불연속성을 볼 수 있다. 이러한 불연속성은 프레임 데이터(310)와 비교하여 디코딩된 프레임(412)의 인식되는 품질을 감소시킨다. 스케일 및 양자화 블록(322) 및 역 스케일 모듈(421)에 의해서 적용되는 양자화 파라미터는 변환 유닛(TU) 간에 달라질 수 있다. 따라서, 공간적으로 근접하는 변환이 적용되는 상이한 양자화 파라미터를 가질 수 있다. 통상적으로, 보다 큰 양자화 파라미터 및 근접하는 변환에 적용되는 양자화 파라미터의 차는, 증가된 변환 블록 에지 결합에 의해 불량한 시각적 품질을 초래한다.
개발 중인 HEVC(high efficiency video coding) 표준은 35개의 인트라 예측 모드를 정의한다. 35개의 인트라 예측 모드 중에서, 인트라 예측 모드 중 하나는 'DC' 모드, 하나는 '평면(planar)' 모드, 그리고 33개는 방향성 모드로 알려져 있다.
도 7은 모든 방향성 (또는 '각도의(angular)') 인트라 예측 모드를 개략적으로 도시한다. 33개의 가능한 인트라 예측 방향 각각은 인트라 예측 방향(704)과 같은 화살표를 이용하여 도 7에 도시되어 있다. 또한, 각각의 인트라 예측 방향에는 인트라 예측 방향(704)에 대응하는 도 7의 참조부호 702의 인트라 예측 모드 2와 같은 인트라 예측 모드가 열거된다. 방향성 인트라 예측 모드가 인트라 예측 모드 2 내지 34에 할당된다. 인트라 예측 모드 0 및 1은 DC 및 평면 모드를 위하여 보류된다. 도 7의 화살표는 모두 중앙 지점으로부터 열거하는 인트라 예측 방향을 도시하지만, 인트라 예측의 실제 '방향'은 반대이고, 도 7에 도시된 방향으로부터 180° 회전된다. 인트라 예측의 방향은 예측 유닛(PU)의 참조 샘플(상방 및 좌측에 위치함)을 취하고, 참조 샘플을 사용하여 예측 유닛(PU)의 각각의 샘플을 차지하는 텍스쳐를 생성하는 전술한 인트라 예측법(1100)에 의해 180° 회전된다. 도 7에 도시된 것과 같이 회전되는 방향은 단일의 도면 내에서 33개의 인트라 예측 방향 각각을 나타낼 때에 명료함을 제공하도록 도시되어 있다. 인트라 예측 모드 2 내지 17은 우세한 수평 방향이며, 수평 인트라 예측 모드(712)로 알려져 있다. 인트라 예측 모드 18 내지 34는 우세한 수직 방향이며, 수직 인트라 예측 모드(710)로 알려져 있다. 수직 인트라 예측 모드(710)로부터 수평 인트라 예측 모드(712)를 분리하는 임계값이 존재한다고 할 수 있다. 인트라 예측 모드 18은 각도 45°에 대응하고, 따라서 우세한 수평 또는 수직이 아님에 주의한다. 그러나, 관례상, HEVC(high efficiency video coding) 표준에서는, 인트라 예측 모드 18은 우세한 수직 카테고리에 속하는 것으로 간주된다. 인트라 예측 모드 18이 우세한 수직 카테고리에 속하는 것으로 간주하는 것은 예측된 샘플에 영향을 미치지 않는 임의의 선택인데, 인트라 예측 모드 18에 대한 각도 파라미터 및 역 각도에 대응하는 값이 수직 또는 수평 카테고리화에 관계없이 동일한 예측된 샘플을 생성하기 때문이다. 각각의 각도는 각도 파라미터(또는 'intraPredangle')에 의해서 특정된다.
각도 파라미터는 -32 내지 +32의 정수이다. 각도 파라미터는 수직 인트라 예측 모드에 대한 수평 축 또는 수평 인트라 예측 모드에 대한 수직 축 중 하나를 따른 오프셋으로서 해석될 수 있다. 예컨대, 각도 파라미터(706)는 값 30을 가지며, 모든 수평 인트라 예측 모드(712)를 포함하는 수직 축을 따라서 존재한다. 도 7에 도시된 바와 같이, 인트라 예측 모드 2는 각도 파라미터 32를 가진다. 2개의 축 사이에는 대칭성이 존재하며, 각각의 축 내에서는, 양 및 음의 각도 파라미터 사이에 대칭성이 존재한다. 이러한 2개의 대칭성은 하드웨어 및 소프트웨어 구현의 단순화를 가능하게 한다. 이러한 대칭성의 결과로서, 모든 수평 인트라 예측 모드 및 수직 인트라 예측 모드에 걸쳐 사용되는 각도 파라미터의 전 범위를 합성하는 데에 감소된 각도 파라미터의 세트 [0, 2, 5, 9, 13, 17, 21, 26, 32]가 이용될 수 있다.
비디오 인코더(114) 또는 비디오 디코더(134)에서 인트라 예측 샘플을 생성하는 방법(1100)이 도 11을 참조하여 이하에서 설명될 것이다. 도 8a는 비디오 인코더(114) 내의 인트라 프레임 예측 모듈(336) 또는 비디오 디코더(134) 내의 인트라 프레임 예측 모듈(426)에 의해서 행해지는, 예시적인 인트라 예측 방향에 대한 인트라 예측법(1100)을 개략적으로 도시한다. 인트라 예측법(1100)은 예측 유닛(PU)(802)과 같은 예측 유닛(PU)을 예측된 샘플로 채우는 데에 사용되며, 이하에서 상세하게 설명될 것이다. 예측된 샘플은 참조 샘플을 이용하여 생성된다. 도 8a에서, 참조 샘플은 "상방의" 참조 샘플(804), "좌측의" 참조 샘플(806) 및 "좌측 상방의" 참조 샘플(808)(일괄하여, '참조 샘플')을 포함한다. 좌측 상방의 참조 샘플(808)은 통상적으로 상방의 참조 샘플(804) 및 좌측의 참조 샘플(806) 모두에 포함된다. 상방의 참조 샘플(804), 좌측의 참조 샘플(806) 및 좌측 상방의 참조 샘플(808)은 통상적으로 비디오 인코더(114)에서의 합(370) 또는 비디오 디코더(134)에서의 합(458)으로부터 취득된다. 합(370) 및 합(485)은 통상적으로 프레임의 이전에 디코딩된 샘플을 출력한다. 상방의 참조 샘플(804), 좌측의 참조 샘플(806) 및 좌측 상방의 참조 샘플(808)은 통상적으로 '근접 샘플'로 채워진다. 근접 샘플은 합(370) 또는 합(458)으로부터 취득되며, 도 8a에 도시된 참조 샘플의 위치결정에 따라서 예측 유닛(PU)(802)에 대하여 공간적으로 배치된다. 예측 유닛(PU)(802)의 프레임 내의 위치 및 프레임 내의 이전에 디코딩된 예측 유닛(PU)에 따라, 근접 샘플 모두가 이용가능하지 않을 수도 있다. 이용가능하지 않은 근접 샘플에 대하여, 참조 샘플 내의 대응하는 샘플은 대신에 디폴트 샘플값으로 채워질 수도 있다. 디폴트 샘플값은 이용가능한 다른 근접 샘플로부터 결정될 수도 있고, 각각 일정한 값일 수도 있다.
방향성 인트라 예측 모드는 예측된 샘플이 특정한 방향을 가지고, 참조 샘플(804)과 같은 참조 샘플로부터 결정되는 텍스쳐일 수 있는 특성을 가진다. 방향성 인트라 예측 모드가 선택되는 경우, 참조 샘플 버퍼로부터의 샘플은 인트라 예측의 방향으로 예측 유닛(PU) 내에 복사된다. 예컨대, 인트라 예측 방향(810)은 텍스쳐가 우측 상방의 방향을 가지는 예측 유닛(PU)(802)에 대하여 생성되는 결과를 낳는다. 텍스쳐는 참조 샘플(812)과 같은 참조 샘플들 내의 각각의 참조 샘플을 인트라 예측의 방향으로 예측 유닛(PU)(802)에 복사함으로써 생성되며, 이것은 예측된 샘플(예컨대, 예측된 샘플(814))이 대응하는 참조 샘플과 동일한 값이 할당되는 것을 야기한다. 명확성을 위하여, 도 8a는 몇몇 참조 샘플과 예측된 샘플 사이의 관계만을 나타내지만, 예측 유닛(PU) 내의 모든 예측된 샘플이 생성된다. 33개의 방향성 인트라 예측 모드를 지원하는 미세한 입도에 기인하여, 매끄러운 텍스쳐를 생성하기 위해서 예측 유닛 내의 샘플값의 보간이 필요하다. 매끄러운 텍스쳐는 대응하는 변환 유닛(TU)에 대하여 보다 작은 레지듀얼이 필요한 것을 야기하고, 이에 의해 코딩 효율이 더 커진다. 인트라 예측 프로세스는 비디오 인코더(114) 및 비디오 디코더(134) 양자 모두에 의해서 행해진다. 비디오 인코더(114)는 인트라 예측 모드의 세트로부터 예측 유닛(PU)에 대한 하나의 인트라 예측 모드를 선택하고, 선택된 인트라 예측 모드를 인코딩된 비트스트림(312)으로 인코딩한다. 최고의 코딩 효율을 달성하기 위해서 모든 가능한 인트라 예측 모드가 비디오 인코더(114)에 의해서 검색될 수 있고, 또는 코딩 효율이 저하되는 대신에 감소된 시간 내에 선택을 하기 위해서, 가능한 인트라 예측 모드의 서브세트를 검색할 수도 있다. 비디오 인코더(114)는 엔트로피 인코더(324)를 사용하여 인코딩된 비트스트림(312) 내의 선택된 인트라 예측 모드를 인코딩한다. 비디오 디코더(134)는 엔트로피 디코더(420)를 사용하여 인코딩된 비트스트림(312)으로부터 선택된 인트라 예측 모드를 결정한다.
인트라 예측 모드 26 내지 34에 대하여, 상방의 참조 샘플(예컨대, 804)만이 필요하다. 인트라 예측 모드 2 내지 10에 대하여, 좌측의 참조 샘플(예컨대, 806)만이 필요하다. 인트라 예측 모드 11 내지 25에 대하여, 상방의 참조 샘플(예컨대, 804) 및 좌측의 참조 샘플(예컨대, 806) 모두가 필요하다. 인트라 예측 모드 11 내지 25에 대하여, '역 각도(inverse angle)' 또는 'invAngle'이라고 불리는 추가적인 파라미터가 정의된다. 우세한 수직 인트라 예측 모드에 대하여, 역 각도는 좌측의 참조 샘플의 채워짐(population)을 제어하고, 우세한 수평 인트라 예측 모드에 대하여, 역 각도는 상방의 참조 샘플(예컨대, 804)의 채워짐을 제어한다. 역 각도가 정의되는 경우, 인트라 예측 모드 11 내지 25에 대한 역 각도의 값은 각각 [-4096, -1638, -910, -630, -482, -390, -315, -256, -315, -390, -482, -630, -910, -1638, -4096] 중 하나이다. 역 각도 값의 리스트로부터 인트라 예측 모드 18에서 대칭성을 볼 수 있다. 구현에서는 복잡도를 감소시키기 위하여 대칭성을 이용할 수도 있다. 이러한 복잡도의 감소가 무시할만한 손실(또는 무손실)을 도입하는 경우에는 복잡도를 감소시키는 것이 바람직하다. 또한, 역 각도 값의 범위가 -256에서 -4096까지 변하지만, 8개의 이산 값만이 정의된다. 개별적인 근접 샘플에 액세스하는 공간을 변경시킴으로써, 참조 샘플 버퍼를 근접 샘플로 채우는 것을 제어하는 데에 역 각도가 이용된다. 각각의 근접 샘플에 액세스하기 위한 오프셋을 결정하는 경우에, 8개의 비트의 우측 시프트가 역 각도에 적용된다. 이에 의해, -256의 역 각도값은 참조 샘플이 근접하는 근접 샘플로 채워지는 것을 야기한다. -4096의 역 각도 값은 참조 샘플이 매 16개의 근접 샘플로 채워지는 것을 야기한다.
우세한 수직 인트라 예측 모드에 대하여, 좌측의 참조 샘플은, 마치 좌측의 참조 샘플이 상방의 참조 샘플의 확장인 것처럼, 상방의 참조 샘플의 확장에 인트라 예측의 반대 방향(즉, 도 8에 도시된 방향)으로 투영된 좌측의 근접 샘플로 채워진다. 우세한 수평 인트라 예측 모드에 대하여, 상방의 참조 샘플은, 마치 상방의 참조 샘플이 좌측의 참조 샘플의 확장인 것처럼, 좌측의 참조 샘플의 확장에 인트라 예측의 반대 방향(즉, 도 8a에 도시된 방향)으로 투영된 상방의 근접 샘플로 채워진다.
도 8b는 상방의 참조 샘플을 채우는 데에 역 각도가 사용되는 예시적인 인트라 예측 방향(822)에 대한 인트라 예측법(1100)을 개략적으로 도시한다. 도 8b의 예에서, 인트라 예측 방향(822)은 우세한 수평 인트라 예측 방향이지만, 우측 하방 방향이다(예컨대, 도 7의 인트라 예측 모드 14). 상방의 근접 샘플(816)과 같은 상방의 근접 샘플(820)이 역 각도에 따라서 상방의 참조 샘플(804)(예컨대, 상방의 참조 샘플(818))을 채우는 데에 사용된다. 역 각도값은 인트라 예측 모드에 의존하며, 인트라 예측 모드 14에 대해서는, 역 각도값은 -630일 것이다. 이러한 역 각도에 대하여, 매 2개 또는 3개의 상방의 근접 샘플(820)이 상방의 참조 샘플(804)로 채워질 것이다.
도 9a 및 9b는 4:2:2 크로마 포맷을 사용하는 비디오 데이터 내의 프레임의 루마 샘플 그리드(900) 및 크로마 샘플 그리드(910) 각각의 인트라 예측된 예측 유닛(PU)(901)을 개략적으로 도시한다. 루마 샘플 그리드(900) 상에는, 예측 유닛(PU)(901)이 8x8 샘플 영역을 차지하고, 도 9a의 화살표에 의해서 표현된 바와 같이, 인트라 예측 모드는 18이며, -32의 각도 파라미터를 야기한다. 루마 샘플 그리드(900) 상에서는, 이 각도 파라미터는 45°의 유효 각도를 야기한다. 그러나, 크로마 샘플 그리드(900) 상에서는, 동일한 각도 파라미터가 22.5°까지의 유효 각도의 수평 확장을 야기한다. 수평 확장은 크로마 샘플 그리드(910) 상의 각각의 크로마 샘플의 1x2 사이즈에 기인한다.
루마 샘플 그리드(900) 전체에 걸친 소정의 각도에 대한 유효 각도와 크로마 샘플 그리드(910)의 그것의 차이는 코딩 효율을 감소시킨다. 코딩 효율은, 루마 채널과 크로마 채널 전체에 걸쳐 상관된 특징부를 비디오 데이터가 포함하는 경우가 종종 있기 때문인데, 따라서, 이것은 인트라 예측에 대한 공통적인 시나리오이다.
도 10은 비디오 디코더(134)의 인트라 프레임 예측 모듈(426)의 기능적 모듈을 도시하는 개략적인 블록도이다. 비디오 인코더(114)의 인트라 프레임 예측 모듈(336)은 비디오 디코더(134)의 인트라 프레임 예측 모듈(426)과 동일한 방식으로 동작하며, 따라서, 도 10의 기능적 모듈의 설명은 인트라 프레임 예측 모듈(336)에도 적용가능하다. 도 10의 기능적 모듈은 컴퓨터 시스템(200) 내의 전용 하드웨어에 의해서, 하드 디스크 드라이브(205) 상에 상주하고 프로세서(205)에 의해서 실행이 제어되는 소프트웨어 애플리케이션 프로그램(233)의 하나 이상의 소프트웨어 코드 모듈과 같은 컴퓨터 시스템(200) 내에서 실행가능한 소프트웨어에 의해서, 또는 대안적으로 컴퓨터 시스템(200) 내에서 실행가능한 전용 하드웨어와 소프트웨어의 조합에 의해서 구현될 수 있다.
합(458)은 합 모듈(424)로부터 수신되고, 근접 블록으로부터의 예측과 레지듀얼의 합이다. 근접 샘플 버퍼(1002)는 좌측의 근접 샘플을 좌측의 근접 버퍼(1004)에 보유하고, 상방의 근접 샘플을 상방의 근접 버퍼(1006)에 보유하기에 충분한 저장소를 제공한다. 합(458)은 디블록킹 필터 모듈(430)에 의해서 행해지는 인루프 필터링(in-loop filtering) 이전에 생성된다. 좌측의 근접 버퍼(1004)는 좌측의 근접 샘플(1020)을 출력하고, 상방의 근접 버퍼(1006)는 상방의 근접 샘플(1022)을 출력한다. 참조 샘플 생성기 모듈(1008)은 각도 파라미터(1024) 및 역 각도(1026)에 따라서 집합적으로 참조 샘플(1028)인 좌측의 참조 샘플(예컨대, 806) 및 상방의 참조 샘플(예컨대, 804)을 생성한다. 참조 샘플 생성기 모듈(1008)은 근접 샘플 버퍼(1002)로부터 근접 샘플을 복사함으로써 참조 샘플을 생성할 수 있다. 복사 동작은 도 8a 및 8b의 설명에 따라서 동작할 수 있다. 참조 샘플 블록 생성기(1008)는 우세한 수직 인트라 예측 모드(즉, predModeIntra가 18 이상이다)와 우세한 수평 인트라 예측 모드(즉, predModeIntra가 18 미만이다)를 구분한다. 값 18은 우세한 수평 인트라 예측 모드와 우세한 수직 인트라 예측 모드 사이의 임계값을 정의한다. DC 및 평면 모드는 별도로 처리되는데, 이들이 방향을 가지는 것으로 고려되지 않기 때문이다. 샘플 블록 생성기(1010)는 참조 샘플(1028), 각도 파라미터(1024) 및 예측 모드(454)를 사용하여 인트라 예측된 샘플의 형태의 인트라 예측된 예측 유닛(PU)(464)을 생성한다. 참조 샘플 블록 생성기(1008)와 마찬가지로, 참조 샘플 블록 생성기(1010)는 (예측 모드(454)에 의해서 제공되는) 인트라 예측 모드와 18의 임계값을 비교하여 우세한 수직 인트라 예측 모드(즉, predModeIntra가 18 이상이다)와 우세한 수평 인트라 예측 모드(즉, predModeIntra가 18 미만이다)를 구분한다.
각도 파라미터 및 (정의된 경우에는) 역 각도의 임의의 주어진 값에 대하여, 우세한 수직 인트라 예측 모드에 대한 참조 샘플 블록 생성기(1008)에 의한 좌측의 참조 샘플 및 상방의 참조 샘플의 액세스는 우세한 수평 인트라 예측 모드에 대한 액세스의 전치(transpose)이다. 이러한 대칭성은 전치 동작의 동작을 제어하기 위해서 이들 2개의 경우 사이의 임계값을 이용함으로써 참조 샘플 생성의 복잡도를 감소시키는 데에 이용될 수 있다.
참조 샘플 블록 생성기(1010)는 인트라 예측된 예측 유닛(PU)(464)을 생성하기 위해서 참조 샘플(1028)로부터 샘플을 복사함으로써 동작한다. 예컨대, 18의 인트라 예측 모드는 -32의 각도 파라미터를 야기한다. -32의 각도 파라미터는 참조 샘플(1028)로부터의 각각의 참조 샘플이 예측 유닛(PU) 내에 대각선 우측 하방 패턴으로 복사되도록 한다. 이에 의해, 예측 유닛(PU) 내의 각각의 위치는 텍스쳐를 포함하는 샘플의 블록을 생성하기 위해서 각도 파라미터에 따라서 참조 샘플의 카피(copy)로 채워진다.
각도 파라미터의 임의의 주어진 값에 대하여, 우세한 수직 인트라 예측 모드에 대한 참조 샘플 블록 생성기(1010)의 출력은 우세한 수직 인트라 예측 모드에 대한 참조 샘플 블록 생성기(1010)의 (인트라 예측 모드 18에 의해서 정의되는 축을 따른) 전치이다. 이러한 대칭성은 전치 동작의 동작을 제어하기 위해서 이들 2개의 경우 사이의 임계값을 이용함으로써 복잡도를 감소시키는 데에 이용될 수 있다.
샘플 블록 생성기(1010)의 복잡도는 각도 파라미터에 대한 값에 존재하는 대칭성을 이용함으로써 감소시킬 수 있다. 인트라 예측된 예측 유닛(PU)(464) 내의 각각의 샘플은 참조 샘플(1028) 및 각도 파라미터(1024)에만 의존하기 때문에, 샘플 블록 생성기(1010)의 병행 구현이 가능하다.
샘플 블록 생성기(1010)의 병행 구현은 보다 높은 해상도에 대해서 유리한데, 병행 구현은 (예컨대, 클럭 싸이클당 생성되는 샘플의 수에 의해서 측정되는) '스루풋'이 최대 지원 프레임 레이트에서 실시간 동작을 지원하기에 충분하기 때문이다.
통상적으로, 병행 구현은 로직을 복제하는 단점을 가지는데, 이것은 회로 사이즈가 커지게 한다. 샘플 블록 생성기(1010)의 구현에 병행성을 추가하는 증가 비용을 감소시키기 위하여 병행화되는 동작을 간단화하는 것이 유리하다.
이하에서는 도 11 내지 13을 참조하여 샘플 블록 생성기(1010)의 구현에 병행성을 추가하는 증가 비용을 감소시키는 장치를 설명할 것이다. 제어 로직(1012)은 예측 모드(454)를 사용하여 각도 파라미터(1024) 및 역 각도(1025)를 생성하고, 도 11 내지 13을 참조하여 설명될 것이다.
도 11은 크로마 샘플 어레이를 위한 4:2:2 크로마 포맷을 위하여 구성되는 비디오 인코더(114) 또는 비디오 디코더(134) 내의 인트라 예측 샘플을 생성하는 방법(1100)을 도시하는 개략적인 블록도이다. 인코딩된 비트스트림(312)과 같은 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 데에 방법(1100)이 이용될 수 있다. 방법(1100)은 인트라 예측된 예측 유닛(PU)에 대한 샘플의 어레이를 생성하고, 도 10 및 11을 참조하여 설명될 것이다. 방법(1100)은, 예컨대 하드웨어 또는 소프트웨어로서 구현될 수 있는 비디오 인코더(114) 또는 비디오 디코더(134)의 일부로서 구현될 수 있다. 방법(1100)은, 방법(1100)이 하드 디스크 드라이브(210)와 함께 상주하고, 프로세서(205)에 의한 실행 시에 제어되는 소프트웨어 애플리케이션 프로그램(233)의 하나 이상의 코드 모듈로서 구현되는 예로서 설명될 것이다.
방법(1100)은 프로세서(205)가 인트라 예측 모드를 선택하는 데에 사용되는 결정 단계 1102에서 시작한다. 선택 단계 1102의 동작은 이하에서 설명하는 바와 같이 비디오 인코더(114)와 비디오 디코더(134) 사이에서 상이하다.
단계 1104 내지 1126은 비디오 인코더(114)와 비디오 디코더(134) 사이에서 동일한 동작을 가진다. 도 11에 도시된 바와 같이, 단계 1130은 인트라 예측 모드로부터 각도 파라미터 및 역 각도를 결정하는 데에 사용되는 집합적인 단계 1104 내지 1122를 나타낸다. 구체적으로, 단계 1130의 단계 1106 내지 1122는 4:2:2 크로마 포맷이 사용되는 경우에 크로마 채널 처리에 의한 인트라 예측 각도를 조정하기 위한 것이다. 단계 1130의 단계 1106 내지 1122는 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 임계값(또는 '변경 임계값')과 각도 파라미터(1024)를 조정한다. 이와 같은 조정은 크로마 샘플 그리드 상의 인트라 예측이 루마 샘플 그리드 상의 인트라 예측과 일치하여 동작할 수 있게 한다. ('predModeIntra'에 의해서 열거되는)수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값은 도 7에 도시된 것과 같이 우세한 수평 인트라 예측 모드와 우세한 수직 인트라 예측 모드 사이의 경계를 나타낸다. 변경 임계값은 (4:2:2 이외의 크로마 포맷이 이용되는 경우에 크로마 채널과)루마 샘플 그리드에 대해서는 18의 값을 가진다. 4:2:2 크로마 포맷이 이용되는 경우, 크로마 채널에 대해서 변경 임계값은 15의 값을 가진다. 단계 1130의 단계 1106 내지 1122는, 조정된 각도가 미리 정해진 값을 초과하는 경우에는 변경 임계값을 수정하도록 구성된다. 수정된 변경 임계값은 조정된 인트라 예측 각도를 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성된다.
비디오 인코더(114)에서, 단계 1102에서는 예측 유닛(PU)에 대하여 어느 인트라 예측 모드가 사용될 것인지를 선택하는 데에 프로세서(205)가 이용된다. 단계 1102에서 선택된 인트라 예측 모드는 복수의 수평 인트라 예측 모드 중 하나일 수 있다. 통상적으로 단계 1102에서, 프로세서(205)는 입력 프레임 데이터(310) 상에 병치된 블록에 비하여 가장 낮은 왜곡을 부여하는 인트라 예측 모드를 선택한다. 선택된 인트라 예측 모드는 엔트로피 인코더(324)에 의해서 인코딩된 비트스트림(312) 내에 인코딩되고, 메모리(206) 및/또는 HDD(210)에 저장될 수 있다. 비디오 디코더에서(134) 단계 1102에서 인코딩된 비트스트림(312)으로부터 구문 요소를 디코딩하는 데에 엔트로피 디코더(420)를 이용함으로써 인트라 예측 모드가 결정된다.
결정 단계 1104에서, 크로마 채널에 대한 인트라 예측 모드의 인트라 예측 각도 파라미터 및 역 각도에 의해서 표현되는 인트라 예측 각도를 결정하는 데에 프로세서(205)가 사용된다. 각도 파라미터는 도 8에 따라서 결정된다. 결정된 각도 파라미터 및 역 각도는 메모리(206) 및/또는 HDD(210) 내에 저장될 수 있다.
그 후에, 크로마 4:2:2 테스트 단계 1105에서, 생성될 예측 샘플의 블록이 크로마 채널에 대한 것인지, 그리고 크로마 채널이 4:2:2 크로마 포맷을 이용하고 있는지를 결정하는 데에 프로세서(205)가 이용된다. 그렇다면, 제어는 테스트 단계 1106으로 진행한다. 그렇지 않은 경우, 제어는 참조 샘플 단계 1124를 생성하기 위하여 진행한다.
그 후에, 테스트 단계 1106에서, 단계 1102에서 선택된 인트라 예측 모드의 우세한 방향이 수직인지 또는 수평인지를 결정하는 데에 프로세서(205)가 이용된다. 테스트 단계 1106은 인트라 예측 모드 predModeIntra와 18의 임계값을 비교하고, predModeIntra가 임계값 이상인 경우에는 우세한 방향이 수직이고, 그렇지 않은 경우에는 수평이다.
인트라 예측 모드의 우세한 방향이 수직인 경우, 제어는 각도 1/2배 단계 1108로 진행한다. 인트라 예측 모드의 우세한 방향이 수평인 경우, 제어는 각도 2배 단계 1112로 진행한다. 아래의 단계 1108, 1110, 1112 및 1114에서, 4:2:2 크로마 포맷에 의한 인트라 예측 각도를 조정하는 데에 방법(1100)이 이용된다. 인트라 예측 각도는 선택된 인트라 예측 모드의 우세한 방향에 따라서 조정된다. 우세한 수직 인트라 예측 모드에 대해서는, 단계 1104에서 결정된 각도 파라미터가 크로마 샘플 그리드를 보상하기 위해서 감소된다. 각도 1/2배 단계 1108에서는, 단계 1104에서 결정된 각도 파라미터를 1/2배로 함으로써 (예컨대, 1 비트 우측 시프트를 행함으로써) 인트라 예측 각도를 1/2배로 하는 데에 프로세서(205)가 이용된다. 추가적으로, (역 각도가 정의되는 경우에) 인트라 예측 모드 18 내지 25에 대하여, 단계 1108은 역 각도를 2배로 한다. 단계 1108은 루마 샘플 그리드 상에서 구현되는 각도에 가장 가깝게 일치하는 새로운 각도를 야기한다. 예컨대, 단계 1108은 [0, 2, 5, 9, 13, 17, 21, 26, 32]에서 [0, 1, 2, 4, 6, 8, 10, 13, 16]로 각도 파라미터를 맵핑할 수 있으며, [-256, -315, -390, -482, -630, -910, -1638, -4096]에서 [-512, -630, -780, -964, -1260, -1820, -3276, -8192]로 역 각도를 맵핑할 수 있다. 또는, 각도 파라미터는 항상 하향 양자화되고, 역 각도 파라미터는 상향 양자화될 수 있으며, 그 역도 가능하다.
각도를 1/2배로 하는 단계 1108 내지 참조 샘플을 생성하는 단계 1124 및 인트라 예측 샘플을 생성하는 단계 1126으로부터 기인하는 각도 파라미터를 적용하는 한가지 단점은, 이하에서 기술하는 바와 같이, 이제 각도 파라미터 및 역 각도에 대한 추가적인 가능한 값이 존재한다는 것이다. 추가적인 가능한 값은 단계 1124 및 1126에서 증가된 복잡도를 야기한다. 도 10의 샘플 블록 생성기(1010)를 참조하여 설명한 것과 같이 단계 1126에 대하여 병행 구현을 제공하는 장치는, 따라서 추가적인 가능한 값을 지원하기 위해서 증가된 복잡도를 가질 것이다.
방법(1100)은 각도 양자화 단계 1110에서 계속되는데, 여기서 단계 1108에서 결정된 1/2배로 된 각도 파라미터를 각도 파라미터에 대하여 가장 가까운 기존의 값으로 양자화하는 데에 프로세서(205)가 이용된다. 또한, 단계 1110에서, 역 각도를 역 각도에 대하여 가장 가까운 기존의 값으로 양자화하는 데에 프로세서(205)가 이용된다.
인트라 예측 모드 25에 대하여, 단계 1110에서 각도 파라미터가 -2로부터 -1로 조정되었고, 역 각도는 -4096으로부터 -8192로 2배로 되었다. 그 후에, 단계 1112에서는 각도 파마리터를 -1로부터 0으로 양자화할 수 있다. 그러한 경우, 인트라 예측 모드 25에 대한 역 각도는 더 이상 정의되지 않는데, 인트라 예측 모드 25가 인트라 예측 모드 26(순수하게 수직 인트라 예측)과 동일해지기 때문이다. 인트라 예측 모드 26은 도 8b를 참조하여 설명한 것과 같이 역 각도를 사용하여 참조 샘플을 생성하는 메커니즘을 필요로 하지 않는다.
하나의 장치에서, 각도 1/2배 단계 1108 및 각도 양자화 단계 1110는 감소된 복잡도를 위하여 단일의 테이블 룩업 동작으로 결합될 수도 있다. 예컨대, 결합된 단계 1108 및 1110은 [0, 2, 5, 9, 13, 17, 21, 26, 32]에서 [0, 0, 2, 5, 5, 9, 9, 13, 17]로 각도 파라미터를 맵핑할 수 있으며, [-256, -315, -390, -482, -630, -910, -1638, -4096]에서 [-482, -630, -910, -910, -1638, -1638, -4096, N/A]로 역 각도를 맵핑할 수 있다.
다른 장치는 각도 파라미터의 1/2배 중에 차(difference)의 라운딩(rounding)에 의한 상이한 맵핑을 생성할 수 있다. 각도 파라미터의 1/2배 중에 차의 라운딩에 의한 상이한 맵핑을 생성하는 장치는 양자화로부터 상이한 출력을 생성하지만, 각도 파라미터 및 역 각도에 대한 기존의 값만을 사용하는 특성은 유지한다.
우세한 수평 인트라 예측 모드에 대하여, 크로마 샘플 그리드를 보상하기 위하여 각도 파라미터가 증가된다. 각도 2배 단계 1112에서, 단계 1104에서 결정된 각도 파라미터를 2배로 함으로써(예컨대, 1 비트 좌측 시프트를 행함으로써) 인트라 예측 각도를 2배로 하는 데에 프로세서(205)가 이용된다. 단계 1112는 루마 샘플 그리드 상에서 구현되는 각도에 가장 가깝게 일치하는 새로운 각도를 야기한다. 다시, 각도를 2배로 하는 단계 1112 내지 참조 샘플을 생성하는 단계 1124 및 인트라 예측 샘플을 생성하는 단계 1126에 각도 파라미터를 적용하는 한가지 단점은, 이제 각도 파라미터 및 역 각도에 대한 추가적인 가능한 값이 존재한다는 것이다. 추가적인 가능한 값은 단계 1124 및 1126에서 증가된 복잡도를 야기한다. 다시, 도 10의 샘플 블록 생성기(1010)를 참조하여 설명한 것과 같이 단계 1126에 대하여 병행 구현을 제공하는 장치는, 따라서 추가적인 가능한 값을 지원하기 위해서 증가된 복잡도를 가질 것이다. 그 후에, 각도 양자화 단계 1110에서, 단계 1112에서 결정된 2배로 된 각도 파라미터를 각도 파라미터에 대하여 가장 가까운 기존의 값으로 양자화하는 데에 프로세서(205)가 이용된다. 또한, 단계 1114에서, 역 각도에 대하여 가장 가까운 기존의 값으로 역 각도를 양자화하는 데에 프로세서(205)가 이용된다.
각도 파라미터를 2배로 하는 추가적인 단점은 각도 파라미터에 대하여 허용가능한 범위가 +/-32이어서, 각도 파라미터를 2배로 하면 값이 허용가능한 범위 밖에 놓이게 된다는 것이다. 허용가능한 범위는 좌측 참조 샘플의 규모를 결정한다.
좌측의 참조 샘플(예컨대, 806)의 사이즈를 증가시키면, 인트라 예측을 위한 예측 유닛(PU)으로부터 공간적으로 상당히 떨어진 샘플을 이용하게된다. 이용되는 샘플은 예측 유닛(PU)의 콘텐츠와 상관될 것이 기대되지 않기 때문에, 코딩 효율에 기여하지 않는다. 대신, 각도 파라미터 및 역 각도의 조정은 가능하다.
방법(1100)은 최대 테스트 단계 1116을 초과하는 각도 파라미터에서 계속되며, 여기서 (2배 후의)각도 파라미터가 32보다 더 큰지를 테스트하는 데에 프로세서(205)가 이용된다. 또는 단계 1116에서, 프로세서(205)는 2배 전에 각도 파라미터가 16보다 큰지를 테스트할 수 있으며, 이것은 (2배 후에)각도 파라미터가 32보다 더 큰지를 테스트하는 것과 동일한 결과를 생성한다.
단계 1116에서 최대 각도 파라미터가 초과되는 경우는 우세한 수평 인트라 예측 모드 2 내지 5에 대응하고, 제어는 각도 조정 단계 1118로 진행한다. 각도 조정 단계 1118에서, 각도 파라미터를 32로 설정하고, 역 각도를 -256로 설정하는 데에 프로세서(205)가 이용된다. 단계 1116의 조건이 충족되지 않는 경우에는, 제어는 최소값 미만의 각도 파라미터 테스트 단계 1120으로 진행한다.
각도를 2배로 하는 단계 1112, 각도 양자화 단계 1114 및 단계 1116 및 1118은 복잡도를 줄이기 위해서 단일의 테이블 룩업 동작으로 결합될 수도 있다. 예컨대, 결합된 단계 1112 및 1114는 각도 파라미터를 [0, 2, 5, 9, 13, 17, 21, 26, 32]에서 [0, 5, 9, 17, 26, 32, 32, 32, 32]로 맵핑할 수 있고, 역 각도를 [-256, -315, -390, -482, -630, -910, -1638, -4096]에서 [-256, -256, -256, -256, -315, -482, -910, -1638]로 맵핑할 수도 있다.
다른 장치는 역 각도의 1/2배 중에 차의 라운딩에 의한 상이한 맵핑을 생성할 수 있다. 역 각도의 1/2배 중에 차의 라운딩에 의한 상이한 맵핑을 생성하는 장치는 양자화로부터 상이한 출력을 생성하지만, 각도 파라미터 및 역 각도에 대한 기존의 값만을 사용하는 특성은 유지한다. 예컨대, 일부 장치는 각도 파라미터를 항상 하향 양자화하고, 역 각도 파라미터는 상향 양자화하며, 그 역도 가능하다.
최소값 미만의 각도 파라미터 테스트 단계 1120에서, (2배 이후의)각도 파라미터가 -32보다 작은지를 테스트하는 데에 프로세서(205)가 이용된다. 또는, 단계 1120은 2배 전에 각도 파라미터가 16 미만인지 또한 테스트할 수 있으며, 이것은 (2배 후의)각도 파라미터가 -32보다 작은지의 테스트와 동일한 결과를 생성한다. 낮은 임계값 초과 조건이 충족되는 경우는 우세한 수평 인트라 예측 모드 15 내지 17에 대응한다. 낮은 임계값이 초과되는 경우에는, 방법(1100)은 각도 및 방향을 조정하는 단계 1122로 진행한다. 그렇지 않은 경우에는, 방법(1100)은 단계 1124로 진행한다.
단계 1122에서, 각도 파라미터, 역 각도 및 임계값을 조정하는 데에 프로세서(205)가 이용된다. 단계 1122는 각도 파라미터 및 역 각도를 인트라 예측 모드 18 내지 20의 각도 파라미터 및 역 각도에 대응하도록 설정한다. 단계 1122 또한 임계값을 18 내지 15로 조정한다. 인트라 예측 모드 18 내지 20은 우세한 수직이며, 따라서, 조정된 임계값은 우세한 수평으로부터 우세한 수직으로 변경하는 인트라 예측 모드 15, 16 및 17의 방향이 된다.
전술한 바와 같이, 변경 임계값은 우세한 수평 인트라 예측 모드와 우세한 수직 인트라 예측 모드 사이의 경계를 나타낸다. 변경 임계값은 루마 샘플 그리드에 대해서(그리고, 4:2:2 이외의 크로마 포맷이 이용되는 경우에 크로마 채널에 대하여)는 18의 값을 가진다. 4:2:2 크로마 포맷이 이용되는 경우의 크로마 채널에 대하여, 변경 임계값은 15의 값을 가진다. 전술한 바와 같이, 조정된 인트라 예측 각도 파라미터의 크기가 미리 정해진 값을 초과하는 경우에는 변경 임계값이 변경될 수도 있다(예컨대, 32).
참조 샘플의 생성 단계 1124에서, 참조 샘플 생성기(1008)는, 프로세서(205)의 실행 하에서, 각도 파라미터 및 역 각도(정의된 경우)를 이용하여 참조 샘플을 생성한다. 조정된 임계값이 참조 샘플을 생성하는 데에 이용될 수도 있다.
그 후에, 인트라 예측 샘플 생성 단계 1126에서, 샘플 블록 생성기(1010)는, 프로세서(205)의 실행 하에, 단계 1124에서 결정된 참조 샘플과 각도 파라미터(1024)를 이용하여 인트라 예측 샘플의 어레이의 형태의 예측 유닛(PU)(464)을 생성하는 데에 이용된다. 단계 1126에서는, 단계 1118 및 1122 중 하나에서 조정된 인트라 예측 각도에 따라서, 그리고 전술한 변경 임계값에 따라서 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플이 생성된다.
도 12는 인트라 예측 각도 및 역 각도의 양자화에 의해서 인트라 예측 모드(predModeIntra)를 인트라 예측 각도(intraPredAngle) 및 역 각도(invAngle)로 변환하기 위한 테이블을 도시한다. 도 12의 테이블은 단계 1120 및 1122를 생략한 도 11의 단계 1130으로부터의 결과(즉, 단계 1124에 입력되는 각도 파라미터 값 및 역 각도 값)와 일치한다. 대안적으로, (단계 1120 및 1122를 제외한)단계 1130은 인트라 예측 모드에 대한 각도 파라미터 및 역 각도를 결정하기 위해서 도 12의 테이블을 이용한 테이블 룩업 동작으로 대체될 수도 있다. 도 12에 따른 장치에 대한 예시적인 '작업 드래프트' 텍스트가 부록 A에 포함되어 있다.
도 13은 블록 유형에 의해서 결정되는 수평 및 수직 인트라 예측 모드 사이의 임계값, 또는 인트라 예측 각도 및 역 각도 및 경계의 양자화에 의해 인트라 예측 모드(predModeIntra)를 인트라 예측 각도(intraPredAngle) 및 역 각도(invAngle)로 변환하기 위한 테이블이다. 도 13의 테이블은 도 11의 단계 1130으로부터의 결과(즉, 단계 1124에서 입력되는 각도 파라미터 값 및 역 각도 값)와 일치한다. 단계 1130은 인트라 예측 모드에 대한 각도 파라미터 및 역 각도를 결정하기 위해서 도 13의 테이블을 이용하는 테이블 룩업 동작으로 대체될 수도 있다. 도 13에 따른 장치에 대한 예시적인 '작업 드래프트' 텍스트는 부록 B에 포함되어 있다.
도 14는 인트라 예측 각도 및 역 각도의 대안적인 양자화에 의해 인트라 예측 모드(predModeIntra)를 인트라 예측 각도(intraPredAngle) 및 역 각도(invAngle)로 변환하기 위한 테이블을 도시한다. 도 14의 테이블은 단계 1120 및 1122는 생략하고, 각도를 1/2배로 하는 단계 1108에서의 대안적인 맵핑에 의해 도 11의 단계 1130으로부터의 결과(즉, 단계 1124에 입력되는 각도 파라미터 값 및 역 각도 값)와 일치한다. 대안적인 맵핑은 [0, 2, 5, 9, 13, 17, 21, 26, 32]의 각도 파라미터를 [0, 2, 2, 5, 5, 9, 9, 13, 17]의 각도 파라미터에 맵핑시킨다(양/음의 대칭성이 이용되고, 각도 파라미터에 대한 양의 값이 리스트되지만, 대안적인 맵핑은 음의 각도 파라미터를 포함하도록 명시적으로 확장될 수 있다고 가정함). 방법(1100)의 일 구성에서, (단계 1120 및 1122를 제외한)단계 1130은 인트라 예측 모드에 대한 역 각도 및 각도 파라미터를 결정하기 위해서 도 14의 테이블을 이용하는 테이블 룩업 동작에 의해서 대체될 수도 있다. 도 14에 따른 장치에 대한 예시적인 '작업 드래프트' 텍스트가 부록 C에 포함되어 있다.
도 15는 블록의 유형에 의해서 결정되는 수평 및 수직 인트라 예측 모드 사이의 임계값 또는 인트라 예측 각도 및 역 각도 및 경계의 대안적인 양자화에 의해서 인트라 예측 모드(predModeIntra)를 인트라 예측 각도(intraPredAngle) 및 역 각도(invAngle)로 변환하는 테이블을 도시한다. 도 15에 도시된 테이블은 각도의 1/2배 단계 1108에서의 대안적인 맵핑에 의해 도 11의 단계 1130으로부터의 결과(즉, 단계 1124에 입력되는 각도 파라미터 값 및 역 각도 값)에 따른 것이다. 대안적인 맵핑은 [0, 2, 5, 9, 13, 17, 21, 26, 32]의 각도 파라미터를 [0, 2, 2, 5, 5, 9, 9, 13, 17]의 각도 파라미터에 맵핑한다(양/음의 대칭성이 이용되고, 각도 파라미터에 대한 양의 값이 리스트되지만, 대안적인 맵핑은 음의 각도 파라미터를 포함하도록 명시적으로 확장될 수 있다고 가정함). 방법(1100)의 하나의 장치에서, 단계 1130은 인트라 예측 모드에 대한 각도 파라미터 및 역 각도를 결정하기 위하여 도 13의 테이블을 사용하는 테이블 룩업 동작으로 대체될 수도 있다. 도 15에 따른 장치에 대한 예시적인 '작업 드래프트' 텍스트가 부록 D에 포함되어 있다.
도 14 및 도 15의 테이블 중 하나에 따른 장치는 역 각도가 정의되는 인트라 예측 모드의 범위(즉, 인트라 예측 모드 11 내지 25)가 4:2:2 크로마 포맷을 가지는 크로마 채널의 경우와, 루마 채널 또는 4:2:2가 아닌 크로마 포맷의 경우 간에 동일하다는 장점을 가진다. 도 14 및 도 15의 테이블 중 하나에 따른 장치는 참조 샘플의 생성 단계 1124에서 역 각도가 적용되어야하는지의 여부를 결정하기 위한 조건 검사를 도입할 필요를 회피한다.
도 12 내지 15의 테이블 중 임의의 것에 따른 장치는 임의의 인트라 예측 모드에 대한 각도 파라미터 및 역 각도를 결정하는 데에 단지 단일의 테이블 룩업이 필요하며, 추가적인 중간(또는 '조정된') 파라미터가 필요하지 않다는 장점을 가진다.
하나의 장치에서, 인트라 예측 모드는 각도 파라미터 및 역 각도를 결정하기 전에 조정된 인트라 예측 모드로 리맵핑될 수 있다. 조정된 인트라 예측 모드는 방법(1100)의 단계 1104 내지 1126에서 사용된다. 인트라 예측 모드를 조정된 인트라 예측 모드로 리맵핑하면 리밉핑 동작에 기인하는 중간(즉, '조정된') 인트라 예측 모드를 도입한다. 인트라 예측 모드를 조정된 인트라 예측 모드로 리맵핑하면, 인트라 예측 모드를 조정된 인트라 예측 모드로 리맵핑하기 위한 추가적인 테이블 또한 도입하고, 리맵핑을 행하기 위하여 (예컨대, 단계 1102의 일부로서)추가적인 테이블 룩업이 요구된다. 인트라 예측 모드가 조정된 인트라 예측 모드로 리맵핑되는 장치에서는, 추가적인 각도 파라미터 및 역 각도의 조정이 필요하지 않고, 따라서 단계 1105 내지 1122가 필요하지 않다.
본 명세서에서 설명된 장치는 비디오 인코더(114) 및 비디오 디코더(134)의 구현이, 인트라 예측된 예측 유닛(PU)에 대하여 높은 코딩 효율을 유지하면서, 복잡도가 감소된 상태로 4:2:2 크로마 포맷을 지원할 수 있게 한다.
[산업상 이용가능성]
전술한 장치는 컴퓨터 및 데이터 처리 산업, 특히 비디오 신호와 같은 신호의 인코딩 및 디코딩을 위한 디지털 신호 처리에 적용가능하다.
전술한 설명은 본 발명의 몇몇 실시예일 뿐이며, 본 발명의 범위 및 사상으로부터 벗어나지 않고서 변형 및/또는 변경이 이루어질 수 있으며, 실시예는 예시적인 것으로, 한정적인 것이 아니다.
본 명세서의 문맥에서, "포함하는"이라는 단어는 "주로 포함하지만, 반드시 단독인 것은 아닌" 또는 "가지는" 또는 "포함하는"을 의미하며, "만으로 구성되는" 것을 의미하지는 않는다. "포함한다" 및 "포함하고"과 같이 "포함하는"이라는 단어의 변형은 대응하는 변형된 의미를 가진다.
부록 A
인트라 예측 샘플의 생성의 구현
8.4.4.2.6 INTRA_ANGULAR2.. INTRA_ANGULAR34의 범위에서의 인트라 예측 모드의 사양
이 프로세스에 대한 입력은,
- 인트라 예측 모드 predModeIntra,
- 근접하는 샘플 p[ x ][ y ], 단 x = -1, y = -1..nTbS * 2 - 1 및 x = 0..nTbS * 2 - 1, y = -1,
- 변환 블록 사이즈를 특정하는 변수 nTbS,
- 현재 블록의 컬러 컴포넌트를 특정하는 변수 cIdx이다.
이 프로세스의 출력은 예측된 샘플 predSamples[ x ][ y ], 단 x, y = 0..nTbS - 1이다.
도 8-2는 전체 33개의 인트라 각도를 도시하고, 테이블 8-4는 predModeIntra와 각도 파라미터 intraPredAngle 사이의 맵핑 테이블을 특정한다.
Figure pct00001
도 8-2 - 인트라 예측 각도 정의(참고)
테이블 8.4 - intraPredAngle의 사양
Figure pct00002
테이블 8-5는 predModeIntra와 역 각도 파라미터 invAngle 사이의 맵핑 테이블을 더 특정한다.
테이블 8-5 - invAngle의 사양
Figure pct00003
- ChromaArrayType이 2가 아니거나, cIdx가 0인 경우에 predModeIntra가 18 이상이면, 또는 ChromaArrayType이 2이고, cIdx가 0이 아닌 경우에 predModeIntra가 15 이상이면, 아래의 순서의 단계가 적용된다.
1. 참조 샘플 어레이 ref[ x ]가 아래와 같이 특정된다.
- 이하가 적용된다.
ref[ x ] = p[ -1 + x ][ -1 ], 단 x = 0..nTbS (8-47)
- intraPredAngle이 0보다 작은 경우, 주 참조 샘플 어레이는 아래와 같이 확장된다.
- ( nTbS * intraPredAngle )  >>  5 이 -1보다 작으면,
ref[ x ] = p[ -1 ][ -1 + ( ( x * invAngle + 128 )  >>  8 ) ],
단 x = -1..( nTbS * intraPredAngle )  >>  5 (8-48)
- 그렇지 않은 경우,
ref[ x ] = p[ -1 + x ][ -1 ], 단 x = nTbS + 1..2 * nTbS (8-49)
2. 예측 샘플의 값 predSamples[ x ][ y ], 단 x, y = 0..nTbS - 1은 이하와 같이 유도된다.
a. 인덱스 변수 iIdx 및 배수 인자 iFact는 이하와 같이 유도된다.
iIdx = ( ( y + 1 ) * intraPredAngle )  >>  5 (8-50)
iFact = ( ( y + 1 ) * intraPredAngle ) & 31 (8-51)
b. iFact의 값에 따라 이하가 적용된다.
- iFact가 0이 아니면, 예측 샘플 predSamples[ x ][ y ]는 이하와 같이 유도된다.
predSamples[ x ][ y ] = ( ( 32 - iFact ) * ref[ x + iIdx + 1 ] + iFact * ref[ x + iIdx + 2 ] + 16 )  >>  5 (8-52)
- 그렇지 않은 경우, 예측 샘플 predSamples[ x ][ y ]의 값은 이하와 같이 유도된다.
predSamples[ x ][ y ] = ref[ x + iIdx + 1 ] (8-53)
c. predModeIntra가 26(수직)이면, cIdx는 0이고, nTbS는 32 미만이고, x = 0, y = 0..nTbS - 1인 경우에 이하의 필터링이 적용된다.
predSamples[ x ][ y ] = Clip1Y( p[ x ][ -1 ] + ( ( p[ -1 ][ y ] - p[ -1 ][ -1 ] )  >>  1 ) ) (8-54)
- 그렇지 않은 경우, 이하의 순서의 단계가 적용된다.
1. 참조 샘플 어레이 ref[ x ]는 이하와 같이 특정된다.
- 이하가 적용된다.
ref[ x ] = p[ -1 ][ -1 + x ], 단 x = 0..nTbS (8-55)
- intraPredAngle이 0 미만이면, 주 참조 샘플 어레이는 이하와 같이 확장된다.
- ( nTbS * intraPredAngle )  >>  5 가 -1 미만이면,
ref[ x ] = p[ -1 + ( ( x * invAngle + 128 )  >>  8 ) ][ -1 ],
단 x = -1..( nTbS * intraPredAngle )  >>  5 (8-56)
- 그렇지 않은 경우,
ref[ x ] = p[ -1 ][ -1 + x ], with x = nTbS + 1..2 * nTbS (8-57)
2. 예측 샘플 predSamples[ x ][ y ], 단 x, y = 0..nTbS - 1이 이하와 같이 유도된다.
a. 인덱스 변수 iIdx 및 배수 인자 iFact는 이하와 같이 유도된다.
iIdx = ( ( x + 1 ) * intraPredAngle )  >>  5 (8-58)
iFact = ( ( x + 1 ) * intraPredAngle ) & 31 (8-59)
b. iFact의 값에 따라, 이하가 적용된다.
- iFact가 0이 아니면, 예측 샘플 predSamples[ x ][ y ]의 값은 이하와 같이 유도된다.
predSamples[ x ][ y ] = ( ( 32 - iFact ) * ref[ y + iIdx + 1 ] + iFact * ref[ y + iIdx + 2 ] + 16 )  >>  5 (8-60)
- 그렇지 않은 경우, 예측 샘플 predSamples[ x ][ y ]는 이하와 같이 유도된다.
predSamples[ x ][ y ] = ref[ y + iIdx + 1 ] (8-61)
c. predModeIntra가 10(수평)인 경우, cIdx는 0이고, nTbS는 32 미만이며, x = 0..nTbS - 1, y = 0인 경우에 이하의 필터링이 적용된다.
predSamples[ x ][ y ] = Clip1Y( p[ -1 ][ y ] + ( ( p[ x ][ -1 ] - p[ -1 ][ -1 ] )  >>  1 ) ) (8-62)
부록 A 끝
부록 B
인트라 예측 샘플의 생성의 대안적인 구현
8.4.4.2.6 INTRA_ANGULAR2.. INTRA_ANGULAR34의 범위에서의 인트라 예측 모드의 사양
이 프로세스에 대한 입력은,
- 인트라 예측 모드 predModeIntra,
- 근접하는 샘플 p[ x ][ y ], 단 x = -1, y = -1..nTbS * 2 - 1 및 x = 0..nTbS * 2 - 1, y = -1,
- 변환 블록 사이즈를 특정하는 변수 nTbS,
- 현재 블록의 컬러 컴포넌트를 특정하는 변수 cIdx이다.
이 프로세스의 출력은 예측된 샘플 predSamples[ x ][ y ], 단 x, y = 0..nTbS - 1이다.
도 8-2는 전체 33개의 인트라 각도를 도시하고, 테이블 8-4는 predModeIntra와 각도 파라미터 intraPredAngle 사이의 맵핑 테이블을 특정한다.
Figure pct00004
도 8-2 - 인트라 예측 각도 정의(참고)
테이블 8.4 - intraPredAngle의 사양
Figure pct00005
테이블 8-5는 predModeIntra와 역 각도 파라미터 invAngle 사이의 맵핑 테이블을 더 특정한다.
테이블 8-5 - invAngle의 사양
Figure pct00006
- ChromaArrayType이 2가 아니거나, cIdx가 0인 경우에 predModeIntra가 18 이상이면, 또는 ChromaArrayType이 2이고, cIdx가 0이 아닌 경우에 predModeIntra가 15 이상이면, 아래의 순서의 단계가 적용된다.
3. 참조 샘플 어레이 ref[ x ]가 아래와 같이 특정된다.
- 이하가 적용된다.
ref[ x ] = p[ -1 + x ][ -1 ], 단 x = 0..nTbS (8-47)
- intraPredAngle이 0보다 작은 경우, 주 참조 샘플 어레이는 아래와 같이 확장된다.
- ( nTbS * intraPredAngle )  >>  5 이 -1보다 작으면,
ref[ x ] = p[ -1 ][ -1 + ( ( x * invAngle + 128 )  >>  8 ) ],
단 x = -1..( nTbS * intraPredAngle )  >>  5 (8-48)
- 그렇지 않은 경우,
ref[ x ] = p[ -1 + x ][ -1 ], 단 x = nTbS + 1..2 * nTbS (8-49)
4. 예측 샘플의 값 predSamples[ x ][ y ], 단 x, y = 0..nTbS - 1은 이하와 같이 유도된다.
a. 인덱스 변수 iIdx 및 배수 인자 iFact는 이하와 같이 유도된다.
iIdx = ( ( y + 1 ) * intraPredAngle )  >>  5 (8-50)
iFact = ( ( y + 1 ) * intraPredAngle ) & 31 (8-51)
b. iFact의 값에 따라 이하가 적용된다.
- iFact가 0이 아니면, 예측 샘플 predSamples[ x ][ y ]는 이하와 같이 유도된다.
predSamples[ x ][ y ] = ( ( 32 - iFact ) * ref[ x + iIdx + 1 ] + iFact * ref[ x + iIdx + 2 ] + 16 )  >>  5 (8-52)
- 그렇지 않은 경우, 예측 샘플 predSamples[ x ][ y ]의 값은 이하와 같이 유도된다.
predSamples[ x ][ y ] = ref[ x + iIdx + 1 ] (8-53)
c. predModeIntra가 26(수직)이면, cIdx는 0이고, nTbS는 32 미만이고, x = 0, y = 0..nTbS - 1인 경우에 이하의 필터링이 적용된다.
predSamples[ x ][ y ] = Clip1Y( p[ x ][ -1 ] + ( ( p[ -1 ][ y ] - p[ -1 ][ -1 ] )  >>  1 ) ) (8-54)
- 그렇지 않은 경우, 이하의 순서의 단계가 적용된다.
3. 참조 샘플 어레이 ref[ x ]는 이하와 같이 특정된다.
- 이하가 적용된다.
ref[ x ] = p[ -1 ][ -1 + x ], 단 x = 0..nTbS (8-55)
- intraPredAngle이 0 미만이면, 주 참조 샘플 어레이는 이하와 같이 확장된다.
- ( nTbS * intraPredAngle )  >>  5 가 -1 미만이면,
ref[ x ] = p[ -1 + ( ( x * invAngle + 128 )  >>  8 ) ][ -1 ],
단 x = -1..( nTbS * intraPredAngle )  >>  5 (8-56)
- 그렇지 않은 경우,
ref[ x ] = p[ -1 ][ -1 + x ], with x = nTbS + 1..2 * nTbS (8-57)
4. 예측 샘플 predSamples[ x ][ y ], 단 x, y = 0..nTbS - 1이 이하와 같이 유도된다.
d. 인덱스 변수 iIdx 및 배수 인자 iFact는 이하와 같이 유도된다.
iIdx = ( ( x + 1 ) * intraPredAngle )  >>  5 (8-58)
iFact = ( ( x + 1 ) * intraPredAngle ) & 31 (8-59)
e. iFact의 값에 따라, 이하가 적용된다.
- iFact가 0이 아니면, 예측 샘플 predSamples[ x ][ y ]의 값은 이하와 같이 유도된다.
predSamples[ x ][ y ] = ( ( 32 - iFact ) * ref[ y + iIdx + 1 ] + iFact * ref[ y + iIdx + 2 ] + 16 )  >>  5 (8-60)
- 그렇지 않은 경우, 예측 샘플 predSamples[ x ][ y ]는 이하와 같이 유도된다.
predSamples[ x ][ y ] = ref[ y + iIdx + 1 ] (8-61)
f. predModeIntra가 10(수평)인 경우, cIdx는 0이고, nTbS는 32 미만이며, x = 0..nTbS - 1, y = 0인 경우에 이하의 필터링이 적용된다.
predSamples[ x ][ y ] = Clip1Y( p[ -1 ][ y ] + ( ( p[ x ][ -1 ] - p[ -1 ][ -1 ] )  >>  1 ) ) (8-62)
부록 B 끝
부록 C
인트라 예측 샘플의 생성의 대안적인 구현
8.4.4.2.6 INTRA_ANGULAR2.. INTRA_ANGULAR34의 범위에서의 인트라 예측 모드의 사양
이 프로세스에 대한 입력은,
- 인트라 예측 모드 predModeIntra,
- 근접하는 샘플 p[ x ][ y ], 단 x = -1, y = -1..nTbS * 2 - 1 및 x = 0..nTbS * 2 - 1, y = -1,
- 변환 블록 사이즈를 특정하는 변수 nTbS,
- 현재 블록의 컬러 컴포넌트를 특정하는 변수 cIdx이다.
이 프로세스의 출력은 예측된 샘플 predSamples[ x ][ y ], 단 x, y = 0..nTbS - 1이다.
도 8-2는 전체 33개의 인트라 각도를 도시하고, 테이블 8-4는 predModeIntra와 각도 파라미터 intraPredAngle 사이의 맵핑 테이블을 특정한다.
Figure pct00007
도 8-2 - 인트라 예측 각도 정의(참고)
테이블 8.4 - intraPredAngle의 사양
Figure pct00008
테이블 8-5는 predModeIntra와 역 각도 파라미터 invAngle 사이의 맵핑 테이블을 더 특정한다.
테이블 8-5 - invAngle의 사양
Figure pct00009
- ChromaArrayType이 2가 아니거나, cIdx가 0인 경우에 predModeIntra가 18 이상이면, 또는 ChromaArrayType이 2이고, cIdx가 0이 아닌 경우에 predModeIntra가 15 이상이면, 아래의 순서의 단계가 적용된다.
5. 참조 샘플 어레이 ref[ x ]가 아래와 같이 특정된다.
- 이하가 적용된다.
ref[ x ] = p[ -1 + x ][ -1 ], 단 x = 0..nTbS (8-47)
- intraPredAngle이 0보다 작은 경우, 주 참조 샘플 어레이는 아래와 같이 확장된다.
- ( nTbS * intraPredAngle )  >>  5 이 -1보다 작으면,
ref[ x ] = p[ -1 ][ -1 + ( ( x * invAngle + 128 )  >>  8 ) ],
단 x = -1..( nTbS * intraPredAngle )  >>  5 (8-48)
- 그렇지 않은 경우,
ref[ x ] = p[ -1 + x ][ -1 ], 단 x = nTbS + 1..2 * nTbS (8-49)
6. 예측 샘플의 값 predSamples[ x ][ y ], 단 x, y = 0..nTbS - 1은 이하와 같이 유도된다.
a. 인덱스 변수 iIdx 및 배수 인자 iFact는 이하와 같이 유도된다.
iIdx = ( ( y + 1 ) * intraPredAngle )  >>  5 (8-50)
iFact = ( ( y + 1 ) * intraPredAngle ) & 31 (8-51)
b. iFact의 값에 따라 이하가 적용된다.
- iFact가 0이 아니면, 예측 샘플 predSamples[ x ][ y ]는 이하와 같이 유도된다.
predSamples[ x ][ y ] = ( ( 32 - iFact ) * ref[ x + iIdx + 1 ] + iFact * ref[ x + iIdx + 2 ] + 16 )  >>  5 (8-52)
- 그렇지 않은 경우, 예측 샘플 predSamples[ x ][ y ]의 값은 이하와 같이 유도된다.
predSamples[ x ][ y ] = ref[ x + iIdx + 1 ] (8-53)
c. predModeIntra가 26(수직)이면, cIdx는 0이고, nTbS는 32 미만이고, x = 0, y = 0..nTbS - 1인 경우에 이하의 필터링이 적용된다.
predSamples[ x ][ y ] = Clip1Y( p[ x ][ -1 ] + ( ( p[ -1 ][ y ] - p[ -1 ][ -1 ] )  >>  1 ) ) (8-54)
- 그렇지 않은 경우, 이하의 순서의 단계가 적용된다.
5. 참조 샘플 어레이 ref[ x ]는 이하와 같이 특정된다.
- 이하가 적용된다.
ref[ x ] = p[ -1 ][ -1 + x ], 단 x = 0..nTbS (8-55)
- intraPredAngle이 0 미만이면, 주 참조 샘플 어레이는 이하와 같이 확장된다.
- ( nTbS * intraPredAngle )  >>  5 가 -1 미만이면,
ref[ x ] = p[ -1 + ( ( x * invAngle + 128 )  >>  8 ) ][ -1 ],
단 x = -1..( nTbS * intraPredAngle )  >>  5 (8-56)
- 그렇지 않은 경우,
ref[ x ] = p[ -1 ][ -1 + x ], with x = nTbS + 1..2 * nTbS (8-57)
6. 예측 샘플 predSamples[ x ][ y ], 단 x, y = 0..nTbS - 1이 이하와 같이 유도된다.
g. 인덱스 변수 iIdx 및 배수 인자 iFact는 이하와 같이 유도된다.
iIdx = ( ( x + 1 ) * intraPredAngle )  >>  5 (8-58)
iFact = ( ( x + 1 ) * intraPredAngle ) & 31 (8-59)
h. iFact의 값에 따라, 이하가 적용된다.
- iFact가 0이 아니면, 예측 샘플 predSamples[ x ][ y ]의 값은 이하와 같이 유도된다.
predSamples[ x ][ y ] = ( ( 32 - iFact ) * ref[ y + iIdx + 1 ] + iFact * ref[ y + iIdx + 2 ] + 16 )  >>  5 (8-60)
- 그렇지 않은 경우, 예측 샘플 predSamples[ x ][ y ]는 이하와 같이 유도된다.
predSamples[ x ][ y ] = ref[ y + iIdx + 1 ] (8-61)
i. predModeIntra가 10(수평)인 경우, cIdx는 0이고, nTbS는 32 미만이며, x = 0..nTbS - 1, y = 0인 경우에 이하의 필터링이 적용된다.
predSamples[ x ][ y ] = Clip1Y( p[ -1 ][ y ] + ( ( p[ x ][ -1 ] - p[ -1 ][ -1 ] )  >>  1 ) ) (8-62)
부록 C 끝
부록 D
인트라 예측 샘플의 생성의 대안적인 구현
8.4.4.2.6 INTRA_ANGULAR2.. INTRA_ANGULAR34의 범위에서의 인트라 예측 모드의 사양
이 프로세스에 대한 입력은,
- 인트라 예측 모드 predModeIntra,
- 근접하는 샘플 p[ x ][ y ], 단 x = -1, y = -1..nTbS * 2 - 1 및 x = 0..nTbS * 2 - 1, y = -1,
- 변환 블록 사이즈를 특정하는 변수 nTbS,
- 현재 블록의 컬러 컴포넌트를 특정하는 변수 cIdx이다.
이 프로세스의 출력은 예측된 샘플 predSamples[ x ][ y ], 단 x, y = 0..nTbS - 1이다.
도 8-2는 전체 33개의 인트라 각도를 도시하고, 테이블 8-4는 predModeIntra와 각도 파라미터 intraPredAngle 사이의 맵핑 테이블을 특정한다.
Figure pct00010
도 8-2 - 인트라 예측 각도 정의(참고)
테이블 8.4 - intraPredAngle의 사양
Figure pct00011
테이블 8-5는 predModeIntra와 역 각도 파라미터 invAngle 사이의 맵핑 테이블을 더 특정한다.
테이블 8-5 - invAngle의 사양
Figure pct00012
- ChromaArrayType이 2가 아니거나, cIdx가 0인 경우에 predModeIntra가 18 이상이면, 또는 ChromaArrayType이 2이고, cIdx가 0이 아닌 경우에 predModeIntra가 15 이상이면, 아래의 순서의 단계가 적용된다.
7. 참조 샘플 어레이 ref[ x ]가 아래와 같이 특정된다.
- 이하가 적용된다.
ref[ x ] = p[ -1 + x ][ -1 ], 단 x = 0..nTbS (8-47)
- intraPredAngle이 0보다 작은 경우, 주 참조 샘플 어레이는 아래와 같이 확장된다.
- ( nTbS * intraPredAngle )  >>  5 이 -1보다 작으면,
ref[ x ] = p[ -1 ][ -1 + ( ( x * invAngle + 128 )  >>  8 ) ],
단 x = -1..( nTbS * intraPredAngle )  >>  5 (8-48)
- 그렇지 않은 경우,
ref[ x ] = p[ -1 + x ][ -1 ], 단 x = nTbS + 1..2 * nTbS (8-49)
8. 예측 샘플의 값 predSamples[ x ][ y ], 단 x, y = 0..nTbS - 1은 이하와 같이 유도된다.
a. 인덱스 변수 iIdx 및 배수 인자 iFact는 이하와 같이 유도된다.
iIdx = ( ( y + 1 ) * intraPredAngle )  >>  5 (8-50)
iFact = ( ( y + 1 ) * intraPredAngle ) & 31 (8-51)
b. iFact의 값에 따라 이하가 적용된다.
- iFact가 0이 아니면, 예측 샘플 predSamples[ x ][ y ]는 이하와 같이 유도된다.
predSamples[ x ][ y ] = ( ( 32 - iFact ) * ref[ x + iIdx + 1 ] + iFact * ref[ x + iIdx + 2 ] + 16 )  >>  5 (8-52)
- 그렇지 않은 경우, 예측 샘플 predSamples[ x ][ y ]의 값은 이하와 같이 유도된다.
predSamples[ x ][ y ] = ref[ x + iIdx + 1 ] (8-53)
c. predModeIntra가 26(수직)이면, cIdx는 0이고, nTbS는 32 미만이고, x = 0, y = 0..nTbS - 1인 경우에 이하의 필터링이 적용된다.
predSamples[ x ][ y ] = Clip1Y( p[ x ][ -1 ] + ( ( p[ -1 ][ y ] - p[ -1 ][ -1 ] )  >>  1 ) ) (8-54)
- 그렇지 않은 경우, 이하의 순서의 단계가 적용된다.
7. 참조 샘플 어레이 ref[ x ]는 이하와 같이 특정된다.
- 이하가 적용된다.
ref[ x ] = p[ -1 ][ -1 + x ], 단 x = 0..nTbS (8-55)
- intraPredAngle이 0 미만이면, 주 참조 샘플 어레이는 이하와 같이 확장된다.
- ( nTbS * intraPredAngle )  >>  5 가 -1 미만이면,
ref[ x ] = p[ -1 + ( ( x * invAngle + 128 )  >>  8 ) ][ -1 ],
단 x = -1..( nTbS * intraPredAngle )  >>  5 (8-56)
- 그렇지 않은 경우,
ref[ x ] = p[ -1 ][ -1 + x ], with x = nTbS + 1..2 * nTbS (8-57)
8. 예측 샘플 predSamples[ x ][ y ], 단 x, y = 0..nTbS - 1이 이하와 같이 유도된다.
j. 인덱스 변수 iIdx 및 배수 인자 iFact는 이하와 같이 유도된다.
iIdx = ( ( x + 1 ) * intraPredAngle )  >>  5 (8-58)
iFact = ( ( x + 1 ) * intraPredAngle ) & 31 (8-59)
k. iFact의 값에 따라, 이하가 적용된다.
- iFact가 0이 아니면, 예측 샘플 predSamples[ x ][ y ]의 값은 이하와 같이 유도된다.
predSamples[ x ][ y ] = ( ( 32 - iFact ) * ref[ y + iIdx + 1 ] + iFact * ref[ y + iIdx + 2 ] + 16 )  >>  5 (8-60)
- 그렇지 않은 경우, 예측 샘플 predSamples[ x ][ y ]는 이하와 같이 유도된다.
predSamples[ x ][ y ] = ref[ y + iIdx + 1 ] (8-61)
l. predModeIntra가 10(수평)인 경우, cIdx는 0이고, nTbS는 32 미만이며, x = 0..nTbS - 1, y = 0인 경우에 이하의 필터링이 적용된다.
predSamples[ x ][ y ] = Clip1Y( p[ -1 ][ y ] + ( ( p[ x ][ -1 ] - p[ -1 ][ -1 ] )  >>  1 ) ) (8-62)
부록 D 끝

Claims (22)

  1. 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 방법이며,
    상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 단계와,
    상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 단계와,
    조정된 상기 인트라 예측 각도가 미리 정해진 값을 초과하는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 단계로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성된, 변경 임계값을 수정하는 단계와,
    상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 단계를 포함하는, 인트라 예측 샘플 생성 방법.
  2. 제1항에 있어서,
    상기 복수의 수평 인트라 예측 모드로부터 상기 인트라 예측 모드를 선택하는 단계를 더 포함하는, 인트라 예측 샘플 생성 방법.
  3. 제2항에 있어서,
    상기 복수의 인트라 예측 모드 각각이 상기 인트라 예측 모드를 선택하기 위하여 검색되는, 인트라 예측 샘플 생성 방법.
  4. 제2항에 있어서,
    상기 복수의 인트라 예측 모드의 서브세트가 상기 인트라 예측 모드를 선택하기 위하여 검색되는, 인트라 예측 샘플 생성 방법.
  5. 제1항에 있어서,
    선택된 상기 인트라 예측 모드의 우세한 방향이 수평인지 또는 수직인지를 결정하는 단계를 더 포함하는, 인트라 예측 샘플 생성 방법.
  6. 제5항에 있어서,
    상기 인트라 예측 각도는 상기 선택된 인트라 예측 모드의 상기 우세한 방향에 따라서 조정되는, 인트라 예측 샘플 생성 방법.
  7. 제1항에 있어서,
    상기 인트라 예측 각도를 1/2배로 하는 단계를 더 포함하는, 인트라 예측 샘플 생성 방법.
  8. 제1항에 있어서,
    상기 인트라 예측 각도를 2배로 하는 단계를 더 포함하는, 인트라 예측 샘플 생성 방법.
  9. 제1항에 있어서,
    조정된 상기 인트라 예측 각도를 양자화하는 단계를 더 포함하는, 인트라 예측 샘플 생성 방법.
  10. 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 시스템이며,
    데이터 및 컴퓨터 프로그램을 저장하는 메모리와,
    상기 컴퓨터 프로그램을 실행하기 위해 상기 메모리에 결합되는 프로세서를 포함하고,
    상기 컴퓨터 프로그램은,
    상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 단계와,
    상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 단계와,
    조정된 상기 인트라 예측 각도가 미리 정해진 값을 초과하는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 단계로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성된, 변경 임계값을 수정하는 단계와,
    상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 단계를 위한, 인스트럭션들을 포함하는, 인트라 예측 샘플 생성 시스템.
  11. 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 장치이며,
    상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 수단과,
    상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 수단과,
    조정된 상기 인트라 예측 각도가 미리 정해진 값을 초과하는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 수단으로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성된, 변경 임계값을 수정하는 수단과,
    상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 수단을 포함하는, 인트라 예측 샘플 생성 장치.
  12. 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 컴퓨터 프로그램을 포함하는 컴퓨터 판독가능 매체이며,
    상기 컴퓨터 프로그램은,
    상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 코드와,
    상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 코드와,
    조정된 상기 인트라 예측 각도가 미리 정해진 값을 초과하는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 코드로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성된, 변경 임계값을 수정하는 코드와,
    상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 코드를 포함하는, 컴퓨터 판독가능 매체.
  13. 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 방법이며,
    상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 단계와,
    상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 단계와,
    상기 비디오 비트스트림이 4:2:2 크로마 포맷용으로 구성되는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 단계로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성된, 변경 임계값을 수정하는 단계와,
    상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 단계를 포함하는, 인트라 예측 샘플 생성 방법.
  14. 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 시스템이며,
    데이터 및 컴퓨터 프로그램을 저장하는 메모리와,
    상기 컴퓨터 프로그램을 실행하기 위해 상기 메모리에 결합되는 프로세서를 포함하고,
    상기 컴퓨터 프로그램은,
    상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 단계와,
    상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 단계와,
    상기 비디오 비트스트림이 4:2:2 크로마 포맷용으로 구성되는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 단계로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성된, 변경 임계값을 수정하는 단계와,
    상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 단계를 위한, 인스트럭션들을 포함하는, 인트라 예측 샘플 생성 시스템.
  15. 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 장치이며,
    상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 수단과,
    상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 수단과,
    상기 비디오 비트스트림이 4:2:2 크로마 포맷용으로 구성되는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 수단으로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성된, 변경 임계값을 수정하는 수단과,
    상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 수단을 포함하는, 인트라 예측 샘플 생성 장치.
  16. 4:2:2 크로마 포맷용으로 구성된 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 컴퓨터 프로그램을 포함하는 컴퓨터 판독가능 매체이며,
    상기 컴퓨터 프로그램은,
    상기 크로마 채널에 대하여, 복수의 수평 인트라 예측 모드 중 하나인 인트라 예측 모드로부터 인트라 예측 각도를 결정하는 코드와,
    상기 4:2:2 크로마 포맷에 의한 상기 인트라 예측 각도를 조정하는 코드와,
    상기 비디오 비트스트림이 4:2:2 크로마 포맷용으로 구성되는 경우, 상기 수평 인트라 예측 모드와 수직 인트라 예측 모드 사이의 변경 임계값을 수정하는 코드로서, 수정된 상기 변경 임계값은 조정된 상기 인트라 예측 각도를 상기 복수의 수평 인트라 예측 모드 중 하나로부터 수직 인트라 예측 모드로 변환하도록 구성된, 변경 임계값을 수정하는 코드와,
    상기 변경 임계값과, 조정된 상기 인트라 예측 각도에 따른 수직 인트라 예측 모드를 사용하여 인트라 예측 샘플을 생성하는 코드를 포함하는, 컴퓨터 판독가능 매체.
  17. 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 방법이며,
    상기 비디오 비트스트림의 크로마 포맷을 디코딩하는 단계와,
    각도 파라미터를 결정하는 단계 이전에, 인트라 예측 모드를 조정하는 단계로서, 상기 조정은 디코딩된 상기 크로마 포맷에 의존하는, 인트라 예측 모드를 조정하는 단계와,
    조정된 상기 인트라 예측 모드로부터 상기 각도 파라미터를 결정하는 단계와,
    결정된 상기 각도 파라미터를 사용하여 참조 샘플을 생성하는 단계와,
    결정된 상기 각도 파라미터와 생성된 상기 참조 샘플을 사용하여 인트라 예측 샘플을 생성하는 단계를 포함하는, 인트라 예측 샘플 생성 방법.
  18. 제17항에 있어서,
    상기 조정은 수직 인트라 예측 모드와 수평 인트라 예측 모드 사이에 임계값이 존재하는 상기 인트라 예측 모드를 변경하고, 4:2:2 크로마 포맷용으로 구성되는 비디오 비트스트림에 대한 임계값은 인트라 예측 모드 15 내지 34가 수직 인트라 예측 모드가 되게 하는, 인트라 예측 샘플 생성 방법.
  19. 제17항에 있어서,
    상기 크로마 포맷은 4:2:2 크로마 포맷인, 인트라 예측 샘플 생성 방법.
  20. 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 시스템이며,
    데이터 및 컴퓨터 프로그램을 저장하는 메모리와,
    상기 컴퓨터 프로그램을 실행하기 위해 상기 메모리에 결합되는 프로세서를 포함하고,
    상기 컴퓨터 프로그램은,
    상기 비디오 비트스트림의 크로마 포맷을 디코딩하는 단계와,
    각도 파라미터를 결정하는 단계 이전에, 인트라 예측 모드를 조정하는 단계로서, 상기 조정은 디코딩된 상기 크로마 포맷에 의존하는, 인트라 예측 모드를 조정하는 단계와,
    조정된 상기 인트라 예측 모드로부터 상기 각도 파라미터를 결정하는 단계와,
    결정된 상기 각도 파라미터를 사용하여 참조 샘플을 생성하는 단계와,
    결정된 상기 각도 파라미터와 생성된 상기 참조 샘플을 사용하여 인트라 예측 샘플을 생성하는 단계를 위한, 인스트럭션들을 포함하는, 인트라 예측 샘플 생성 시스템.
  21. 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 장치이며,
    상기 비디오 비트스트림의 크로마 포맷을 디코딩하는 수단과,
    각도 파라미터를 결정하기 전에, 인트라 예측 모드를 조정하는 수단으로서, 상기 조정은 디코딩된 상기 크로마 포맷에 의존하는, 인트라 예측 모드를 조정하는 수단과,
    조정된 상기 인트라 예측 모드로부터 상기 각도 파라미터를 결정하는 수단과,
    결정된 상기 각도 파라미터를 사용하여 참조 샘플을 생성하고, 결정된 상기 각도 파라미터와 생성된 상기 참조 샘플을 사용하여 인트라 예측 샘플을 생성하는 수단을 포함하는, 인트라 예측 샘플 생성 장치.
  22. 비디오 비트스트림의 크로마 채널에 대한 인트라 예측 샘플을 생성하는 컴퓨터 프로그램을 포함하는 컴퓨터 판독가능 매체이며,
    상기 컴퓨터 프로그램은,
    상기 비디오 비트스트림의 크로마 포맷을 디코딩하는 코드와,
    각도 파라미터를 결정하기 전에, 인트라 예측 모드를 조정하는 코드로서, 상기 조정은 디코딩된 상기 크로마 포맷에 의존하는, 인트라 예측 모드를 조정하는 코드와,
    조정된 상기 인트라 예측 모드로부터 상기 각도 파라미터를 결정하는 코드와,
    결정된 상기 각도 파라미터를 사용하여 참조 샘플을 생성하고, 결정된 상기 각도 파라미터와 생성된 상기 참조 샘플을 사용하여 인트라 예측 샘플을 생성하는 코드를 포함하는, 컴퓨터 판독가능 매체.
KR1020157031037A 2013-04-05 2014-04-04 인트라 예측 샘플을 생성하는 방법, 장치 및 시스템 KR20150135519A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AU2013202653 2013-04-05
AU2013202653A AU2013202653A1 (en) 2013-04-05 2013-04-05 Method, apparatus and system for generating intra-predicted samples
PCT/AU2014/000367 WO2014161043A1 (en) 2013-04-05 2014-04-04 Method, apparatus and system for generatiing intra- predicted samples

Publications (1)

Publication Number Publication Date
KR20150135519A true KR20150135519A (ko) 2015-12-02

Family

ID=51657333

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157031037A KR20150135519A (ko) 2013-04-05 2014-04-04 인트라 예측 샘플을 생성하는 방법, 장치 및 시스템

Country Status (7)

Country Link
US (1) US20160050422A1 (ko)
EP (1) EP2982108B1 (ko)
JP (3) JP6351706B2 (ko)
KR (1) KR20150135519A (ko)
CN (1) CN105264889B (ko)
AU (2) AU2013202653A1 (ko)
WO (1) WO2014161043A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021025508A1 (ko) * 2019-08-06 2021-02-11 엘지전자 주식회사 컬러 포멧에 따라 결정된 예측 모드 타입에 기반하여 분할 모드를 결정하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10715833B2 (en) * 2014-05-28 2020-07-14 Apple Inc. Adaptive syntax grouping and compression in video data using a default value and an exception value
US9762919B2 (en) * 2014-08-28 2017-09-12 Apple Inc. Chroma cache architecture in block processing pipelines
US10362305B2 (en) * 2015-03-27 2019-07-23 Sony Corporation Image processing device, image processing method, and recording medium
US11076153B2 (en) * 2015-07-31 2021-07-27 Stc.Unm System and methods for joint and adaptive control of rate, quality, and computational complexity for video coding and video delivery
WO2017155334A1 (ko) * 2016-03-11 2017-09-14 디지털인사이트 주식회사 비디오 코딩 방법 및 장치
CN105681812B (zh) * 2016-03-30 2019-11-19 腾讯科技(深圳)有限公司 Hevc帧内编码处理方法和装置
ES2711189R1 (es) * 2016-04-06 2020-02-04 Kt Corp Metodo y aparato para procesar senales de video
KR20230070062A (ko) * 2016-10-04 2023-05-19 주식회사 비원영상기술연구소 영상 데이터 부호화/복호화 방법 및 장치
JP6565885B2 (ja) * 2016-12-06 2019-08-28 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法及び画像符号化プログラム、並びに画像復号化装置、画像復号化方法及び画像復号化プログラム
JP6680260B2 (ja) 2017-04-28 2020-04-15 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法及び画像符号化プログラム、並びに画像復号化装置、画像復号化方法及び画像復号化プログラム
US10951908B2 (en) 2017-05-24 2021-03-16 Lg Electronics Inc. Method and device for decoding image according to intra prediction in image coding system
GB2567862A (en) * 2017-10-27 2019-05-01 Sony Corp Image data encoding and decoding
CN108337510A (zh) * 2017-12-22 2018-07-27 西安思丹德信息技术有限公司 一种基于h264标准的低延时编解码方法及图像数据传输方法
GB2571313B (en) 2018-02-23 2022-09-21 Canon Kk New sample sets and new down-sampling schemes for linear component sample prediction
JP2021502771A (ja) * 2018-05-03 2021-01-28 エルジー エレクトロニクス インコーポレイティド 画像コーディングシステムにおいてブロックサイズに応じた変換を使用する画像デコード方法およびその装置
US10284844B1 (en) 2018-07-02 2019-05-07 Tencent America LLC Method and apparatus for video coding
US11128872B2 (en) * 2018-07-16 2021-09-21 Qualcomm Incorporated Position dependent intra prediction combination with wide angle intra prediction
CN118175328A (zh) 2018-10-12 2024-06-11 韦勒斯标准与技术协会公司 使用多假设预测的视频信号处理方法和装置
CN109982075B (zh) * 2019-03-21 2022-11-08 南京威翔科技有限公司 一种基于fpga的帧内预测通用角度方法
EP4351135A3 (en) * 2019-03-24 2024-07-03 Huawei Technologies Co., Ltd. Method and apparatus for chroma intra prediction in video coding
CN113785576B (zh) * 2019-04-23 2023-05-16 北京字节跳动网络技术有限公司 编解码视频中的二次变换的使用
EP3987800A4 (en) * 2019-06-24 2023-03-29 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR PERFORMING INTRA PREDICTION CODING IN VIDEO CODING
CN116866574A (zh) * 2019-06-25 2023-10-10 日本放送协会 帧内预测装置、图像解码装置及程序
US11432006B2 (en) * 2020-08-14 2022-08-30 Tencent America LLC Chroma mode video coding
US11140394B1 (en) * 2020-08-27 2021-10-05 Tencent America LLC Adaptive chroma intra mode coding in video compression

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200627967A (en) * 2004-07-15 2006-08-01 Qualcomm Inc Methods and apparatus for spatial error concealment
US8331448B2 (en) * 2006-12-22 2012-12-11 Qualcomm Incorporated Systems and methods for efficient spatial intra predictabilty determination (or assessment)
US8144766B2 (en) * 2008-07-16 2012-03-27 Sony Corporation Simple next search position selection for motion estimation iterative search
US8094714B2 (en) * 2008-07-16 2012-01-10 Sony Corporation Speculative start point selection for motion estimation iterative search
KR101753551B1 (ko) * 2011-06-20 2017-07-03 가부시키가이샤 제이브이씨 켄우드 화상 부호화 장치, 화상 부호화 방법 및 화상 부호화 프로그램을 저장한 기록매체
CN103621087B (zh) * 2011-06-23 2016-12-07 Jvc建伍株式会社 图像解码装置及图像解码方法
JP5614381B2 (ja) * 2011-06-23 2014-10-29 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法、及び画像符号化プログラム、並びに、送信装置、送信方法、及び送信プログラム
JP5995448B2 (ja) * 2012-01-19 2016-09-21 シャープ株式会社 画像復号装置、および画像符号化装置
GB2501535A (en) * 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
US20140198855A1 (en) * 2013-01-14 2014-07-17 Qualcomm Incorporated Square block prediction
WO2014115283A1 (ja) * 2013-01-24 2014-07-31 シャープ株式会社 画像復号装置、および画像符号化装置
HUE056673T2 (hu) * 2013-03-29 2022-02-28 Jvckenwood Corp Képdekódoló készülék, képdekódoló eljárás és képdekódoló program
KR101749855B1 (ko) * 2013-04-05 2017-06-21 미쓰비시덴키 가부시키가이샤 컬러 화상 부호화 장치, 컬러 화상 복호 장치, 컬러 화상 부호화 방법 및 컬러 화상 복호 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021025508A1 (ko) * 2019-08-06 2021-02-11 엘지전자 주식회사 컬러 포멧에 따라 결정된 예측 모드 타입에 기반하여 분할 모드를 결정하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
US11483573B2 (en) 2019-08-06 2022-10-25 Lg Electronics Inc. Image encoding/decoding method and device for determining division mode on basis of prediction mode type determined according to color format, and method for transmitting bitstream

Also Published As

Publication number Publication date
AU2015271953B2 (en) 2017-10-19
US20160050422A1 (en) 2016-02-18
JP2019213206A (ja) 2019-12-12
EP2982108A4 (en) 2017-03-22
EP2982108B1 (en) 2019-02-06
AU2015271953A1 (en) 2016-01-21
JP6563079B2 (ja) 2019-08-21
WO2014161043A1 (en) 2014-10-09
JP6351706B2 (ja) 2018-07-04
AU2013202653A1 (en) 2014-10-23
CN105264889A (zh) 2016-01-20
JP2016518761A (ja) 2016-06-23
EP2982108A1 (en) 2016-02-10
JP2018157587A (ja) 2018-10-04
CN105264889B (zh) 2018-09-11

Similar Documents

Publication Publication Date Title
JP6563079B2 (ja) 符号化方法、復号方法、符号化装置、復号装置、及びプログラム
RU2697615C1 (ru) Способ, устройство и система для кодирования и декодирования карты значимости для остаточных коэффициентов единицы преобразования
US20190289332A1 (en) Method, apparatus and system for de-blocking video data
US10298961B2 (en) Method, apparatus and system for de-blocking a block of video samples
KR101802322B1 (ko) 코딩 유닛의 변환 유닛들을 인코딩 및 디코딩하기 위한 방법, 장치 및 시스템
RU2641223C2 (ru) Способ, устройство и система для кодирования и декодирования единиц преобразования единицы кодирования
US20160227244A1 (en) Method, apparatus and system for encoding and decoding video data
TWI813922B (zh) 從視訊位元流解碼影像和編碼影像為視訊位元流的方法及其解碼設備和編碼設備以及非暫態電腦可讀取媒體
JP2024056945A (ja) 符号化ユニットを復号および符号化する方法、装置およびプログラム
JP2023159400A (ja) ビデオサンプルのブロックを符号化及び復号するための方法、装置、及びシステム
AU2013270596A1 (en) Method, apparatus and system for encoding and decoding video data
KR20220032620A (ko) 비디오 샘플들의 블록을 인코딩 및 디코딩하기 위한 방법, 장치 및 시스템

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application