KR20130049525A - 잔차 블록 복원을 위한 역변환 방법 - Google Patents

잔차 블록 복원을 위한 역변환 방법 Download PDF

Info

Publication number
KR20130049525A
KR20130049525A KR1020110114609A KR20110114609A KR20130049525A KR 20130049525 A KR20130049525 A KR 20130049525A KR 1020110114609 A KR1020110114609 A KR 1020110114609A KR 20110114609 A KR20110114609 A KR 20110114609A KR 20130049525 A KR20130049525 A KR 20130049525A
Authority
KR
South Korea
Prior art keywords
intra prediction
mode
block
prediction mode
modes
Prior art date
Application number
KR1020110114609A
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 오수미
Priority to KR1020110114609A priority Critical patent/KR20130049525A/ko
Priority to HUE12846401A priority patent/HUE037565T2/hu
Priority to CA3057770A priority patent/CA3057770C/en
Priority to EP18166532.4A priority patent/EP3364373A1/en
Priority to TW109119897A priority patent/TWI715506B/zh
Priority to US14/349,465 priority patent/US9014262B2/en
Priority to EP18166480.6A priority patent/EP3364372A1/en
Priority to BR122020014288-0A priority patent/BR122020014288B1/pt
Priority to BR122020014282-0A priority patent/BR122020014282B1/pt
Priority to ES18158853T priority patent/ES2881980T3/es
Priority to KR1020147009904A priority patent/KR20140070598A/ko
Priority to MX2014003912A priority patent/MX2014003912A/es
Priority to MYPI2017001714A priority patent/MY190514A/en
Priority to IN3908CHN2014 priority patent/IN2014CN03908A/en
Priority to RU2014111828/08A priority patent/RU2604340C2/ru
Priority to SI201231289T priority patent/SI2774122T1/en
Priority to MYPI2017001719A priority patent/MY190516A/en
Priority to MX2015015707A priority patent/MX340475B/es
Priority to MYPI2017001718A priority patent/MY190515A/en
Priority to CA2976066A priority patent/CA2976066C/en
Priority to SG11201400674SA priority patent/SG11201400674SA/en
Priority to RU2016142727A priority patent/RU2710995C2/ru
Priority to MYPI2014000912A priority patent/MY170819A/en
Priority to RU2016142725A priority patent/RU2711467C2/ru
Priority to MX2015015705A priority patent/MX340476B/es
Priority to CA3212893A priority patent/CA3212893A1/en
Priority to PE2014000612A priority patent/PE20142032A1/es
Priority to RS20180662A priority patent/RS57282B1/sr
Priority to TW107147143A priority patent/TWI684350B/zh
Priority to CA2849028A priority patent/CA2849028C/en
Priority to TW106131377A priority patent/TWI650001B/zh
Priority to ES12846401.3T priority patent/ES2669502T3/es
Priority to DK12846401.3T priority patent/DK2774122T3/en
Priority to EP18166529.0A priority patent/EP3379492A1/en
Priority to PT128464013T priority patent/PT2774122T/pt
Priority to CA3111640A priority patent/CA3111640C/en
Priority to PL18158853T priority patent/PL3346447T3/pl
Priority to BR122020014298-7A priority patent/BR122020014298B1/pt
Priority to MX2016009077A priority patent/MX356330B/es
Priority to EP18158853.4A priority patent/EP3346447B1/en
Priority to RU2016142729A priority patent/RU2711306C2/ru
Priority to RU2016142728A priority patent/RU2710996C2/ru
Priority to KR1020147009908A priority patent/KR20140074348A/ko
Priority to AU2012331601A priority patent/AU2012331601B2/en
Priority to TW105130614A priority patent/TWI603610B/zh
Priority to KR1020147009907A priority patent/KR20140066760A/ko
Priority to SG10201607196UA priority patent/SG10201607196UA/en
Priority to EP12846401.3A priority patent/EP2774122B1/en
Priority to CA2913567A priority patent/CA2913567C/en
Priority to BR122020014293-6A priority patent/BR122020014293B1/pt
Priority to PL12846401T priority patent/PL2774122T3/pl
Priority to MYPI2017001720A priority patent/MY190529A/en
Priority to NO12846401A priority patent/NO2774122T3/no
Priority to HUE18158853A priority patent/HUE054637T2/hu
Priority to JP2014539232A priority patent/JP5789343B2/ja
Priority to CA2913566A priority patent/CA2913566C/en
Priority to TW101140903A priority patent/TWI558170B/zh
Priority to TW108146231A priority patent/TWI699992B/zh
Priority to MYPI2017001721A priority patent/MY190530A/en
Priority to PCT/CN2012/083994 priority patent/WO2013064099A1/en
Priority to LTEP12846401.3T priority patent/LT2774122T/lt
Priority to MX2015015706A priority patent/MX340474B/es
Priority to CN201711011969.9A priority patent/CN107809640B/zh
Priority to CN201711011928.XA priority patent/CN107682696B/zh
Priority to CN201711011944.9A priority patent/CN107734334B/zh
Priority to CN201711011941.5A priority patent/CN107613293B/zh
Priority to CN201711011967.XA priority patent/CN107770535B/zh
Priority to CN201711007921.0A priority patent/CN107770534B/zh
Priority to CN201210436434.7A priority patent/CN103096067B/zh
Priority to CN201711020359.5A priority patent/CN107682697B/zh
Publication of KR20130049525A publication Critical patent/KR20130049525A/ko
Priority to IL231705A priority patent/IL231705A/en
Priority to MX2015015704A priority patent/MX340477B/es
Priority to MX2018006177A priority patent/MX2018006177A/es
Priority to US14/660,787 priority patent/US9344728B2/en
Priority to US14/660,731 priority patent/US9497462B2/en
Priority to US14/660,766 priority patent/US9497463B2/en
Priority to US14/660,752 priority patent/US9503726B2/en
Priority to JP2015151583A priority patent/JP6118374B2/ja
Priority to JP2015151584A priority patent/JP6101316B2/ja
Priority to JP2015151586A priority patent/JP6116626B2/ja
Priority to JP2015151585A priority patent/JP6116625B2/ja
Priority to ZA2016/00847A priority patent/ZA201600847B/en
Priority to ZA2016/00849A priority patent/ZA201600849B/en
Priority to AU2016203217A priority patent/AU2016203217B2/en
Priority to AU2016203214A priority patent/AU2016203214B2/en
Priority to AU2016203216A priority patent/AU2016203216B2/en
Priority to AU2016203215A priority patent/AU2016203215B2/en
Priority to IL247673A priority patent/IL247673B/en
Priority to IL247676A priority patent/IL247676A/en
Priority to IL247675A priority patent/IL247675B/en
Priority to IL247674A priority patent/IL247674B/en
Priority to US15/332,717 priority patent/US10015489B2/en
Priority to JP2017059314A priority patent/JP6367413B2/ja
Priority to CY20181100538T priority patent/CY1120400T1/el
Priority to US16/002,904 priority patent/US10623732B2/en
Priority to HRP20181016TT priority patent/HRP20181016T1/hr
Priority to US16/828,340 priority patent/US10917640B2/en

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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/124Quantisation
    • 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/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • 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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/18Methods 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 set of transform coefficients
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Abstract

본 발명에 따른 인트라 예측 모드 부호화 방법은 현재 블록의 인트라 예측 모드를 결정하고, 현재 블록의 MPM 후보자들의 유효성을 검사하여 유효한 MPM 후보자 수를 판단하고, 유효한 MPM 후보자 수가 미리 정해진 수보다 작은 경우, 추가 인트라 예측 모드를 MPM 후보자로 추가한다. 추가시 유효한 MPM 후보자의 방향성에 따라 MPM 후보자가 적응적으로 추가될 수 있다. 또한, 잔여 인트라 예측 모드 부호화시에도 유효한 MPM 후보자의 방향성에 따라 잔여 인트라 예측 모드가 재정렬된다.
따라서, 유효한 MPM 후보자의 방향성에 따라 MPM 후보자를 추가하거나 잔여 인트라 예측 모드를 재정렬하여 현재 블록의 인트라 예측 모드의 부호화 정보가 최소가 되게 하는 효과가 있다.

Description

잔차 블록 복원을 위한 역변환 방법 {METHOD FOR INVERSE TRANSFORM FOR RECONSTRUCTING RESIDUAL BLOCK}
본 발명은 잔차 블록을 복원하는데 사용하는 역변환 방법에 관한 것으로, 보다 상세하게는 현재 블록의 예측 모드에 따라 역변환 방식을 달리하여 잔차 블록을 복원하는 방법에 관한 것이다.
MPEG-1, MPEG-2, MPEG-4 H.264/MPEG-4 AVC(Advanced Video coding)와 같은 영상 압축 방식에서는 영상을 부호화하기 위해서 하나의 픽처를 매크로 블록으로 나눈다. 그리고, 인터 예측(inter prediction) 또는 인트라 예측(intra prediction)을 이용해 각각의 매크로 블록을 부호화한다.
이 중에서 인트라 예측은 현재 픽처(picture)의 블록을 부호화하기 위해서 참조 픽처를 참조하는 것이 아니라, 부호화하려는 현재 블록과 공간적으로 인접한 화소값을 이용하여 부호화를 수행한다. 우선, 인접한 화소값을 이용하여 원본 매크로 블록과 비교하여 왜곡이 적은 인트라 예측 모드를 선택한다. 다음으로, 선택된 인트라 예측 모드 및 인접한 화소값을 이용하여 부호화하려는 현재 블록에 대한 예측값을 계산하고, 예측값과 원본 현재 블록의 화소값의 차이를 구한 후 이를 변환부호화, 양자화, 엔트로피 부호화를 통해 부호화한다. 그리고, 예측 모드도 부호화된다.
그러나, 기존의 인트라 예측 모드는 현재 블로그이 좌측 및 상측의 인트라 예측 모드의 방향성과 무관하게 잔여 인트라 예측 모드를 부호화하여, 잔여 신호를 부호화하는데 소요되는 비트수를 감소시키지 못하는 문제점이 있다.
본 발명이 이루고자 하는 목적은 인트라 예측 모드 따라 원본 영상과 유사한 색차 예측 블록을 생성하고, 잔차신호를 복호화하여 잔차 블록을 생성하고, 상기 생성된 잔차 블록과 예측 블록을 이용하여 복원블록을 생성하는 방법을 제공하는데 있다.
본 발명에 따른 인트라 예측 모드 부호화 방법은 현재 블록의 인트라 예측 모드를 결정하고, 현재 블록의 MPM 후보자들의 유효성을 검사하여 유효한 MPM 후보자 수를 판단하고, 유효한 MPM 후보자 수가 미리 정해진 수보다 작은 경우, 추가 인트라 예측 모드를 MPM 후보자로 추가하고, 현재 블록의 인트라 예측 모드가 상기 유효한 MPM 후보자 또는 추가 MPM 후보자와 동일한지를 판단하고, 현재 블록의 인트라 예측 모드가 상기 유효한 MPM 후보자 또는 추가 MPM 후보자와 동일한 경우에는 동일함을 나타내는 정보와 상기 후보자들 중 어느 하나를 나타내는 인덱스를 부호화하고, 현재 블록의 인트라 예측 모드가 상기 유효한 MPM 후보자 또는 추가 MPM 후보자와 동일하지 않은 경우에는 동일하지 않음을 나타내는 정보가 상기 MPM 후보자들을 제외한 잔여 인트라 예측 모드들 중 어느 하나와 동일함을 나타내는 인덱스를 부호화하는 것을 특징으로 한다.
본 발명에 따른 인트라 예측 모드 부호화 방법은 현재 블록의 인트라 예측 모드를 결정하고, 현재 블록의 MPM 후보자들의 유효성을 검사하여 유효한 MPM 후보자 수를 판단하고, 유효한 MPM 후보자 수가 미리 정해진 수보다 작은 경우, 추가 인트라 예측 모드를 MPM 후보자로 추가한다. 추가시 유효한 MPM 후보자의 방향성에 따라 MPM 후보자가 적응적으로 추가될 수 있다. 또한, 잔여 인트라 예측 모드 부호화시에도 유효한 MPM 후보자의 방향성에 따라 잔여 인트라 예측 모드가 재정렬된다.
따라서, 유효한 MPM 후보자의 방향성에 따라 MPM 후보자를 추가하거나 잔여 인트라 예측 모드를 재정렬하여 현재 블록의 인트라 예측 모드의 부호화 정보가 최소가 되게 하는 효과가 있다.
도 1은 본 발명에 따른 동영상 부호화 장치를 나타내는 블록도이다.
도 2는 본 발명에 따른 동영상 복호화 장치를 나타내는 블록도이다.
도 3은 본 발명에 따른 인트라 예측 모드 후보자의 위치는 나타내는 도면이다.
도 4는 본 발명에 따른 휘도 방향성 인트라 예측 모드를 나타내는 도면이다.
이하, 본 발명의 여러가지 실시예들을 예시적인 도면을 통해 상세히 설명한다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
도 1은 본 발명에 따른 동영상 부호화 장치를 나타내는 블록도이다.
도 1을 참조하면, 본 발명에 따른 동영상 부호화 장치(100)는 픽쳐 분할부(110), 변환부(120), 양자화부(130), 스캐닝부(131), 엔트로피 부호화부(140), 인트라 예측부(150), 인터 예측부(160), 역양자화부(135), 역변환부(125), 후처리부(170), 픽쳐 저장부(180), 감산부(190) 및 가산부(195)를 포함한다.
픽쳐 분할부(110)는 입력되는 비디오 신호를 분석하여 픽쳐를 가장 큰 코딩 유닛마다 소정 크기의 코딩 유닛으로 분할하여 예측 모드를 결정하고, 상기 코딩 유닛별로 색차 블록의 크기를 결정한다. 그리고, 픽쳐 분할부(110)는 부호화할 색차 블록을 예측 모드에 따라 인트라 예측부(150) 또는 인터 예측부(160)로 보낸다. 또한, 픽쳐 분할부(110)는 부호화할 색차 블록을 감산부(190)로 보낸다.
변환부(120)는 입력된 색차 블록의 원본 블록과 인트라 예측부(150) 또는 인터 예측부(160)에서 생성된 예측 블록의 잔차신호인 잔차 블록을 변환한다. 상기 잔차 블록은 코딩 유닛으로 구성된다. 코딩 유닛으로 구성된 잔차 블록은 최적의 변환 단위로 분할되어 변환된다. 예측 모드(intra or inter)에 따라 서로 다른 변환 매트릭스가 결정될 수 있다. 또한, 인트라 예측의 잔차 신호는 인트라 예측 모드에 따라 방향성을 가지므로 인트라 예측 모드에 따라 적응적으로 변환 매트릭스가 결정될 수 있다. 변환 단위는 2개(수평, 수직)의 1차원 변환 매트릭스에 의해 변환될 수 있다. 예를 들어, 인터 예측의 경우에는 미리 결정된 1개의 변환 매트릭스가 결정된다. 반면에, 인트라 예측의 경우, 인트라 예측 모드가 수평인 경우에는 잔차 블록이 수직방향으로의 방향성을 가질 확률이 높아지므로, 수직방향으로는 DCT 기반의 정수 매트릭스를 적용하고, 수평방향으로는 DST 기반 또는 KLT 기반의 정수 매트릭스를 적용한다. 인트라 예측 모드가 수직인 경우에는 수직방향으로는 DST 기반 또는 KLT 기반의 정수 매트릭스를, 수평 방향으로는 DCT 기반의 정수 매트릭스를 적용한다. DC 모드의 경우에는 양방향 모두 DCT 기반 정수 매트릭스를 적용한다. 또한, 인트라 예측의 경우, 변환 단위의 크기에 의존하여 변환 매트릭스가 적응적으로 결정될 수도 있다.
양자화부(130)는 상기 변환 매트릭스에 의해 변환된 잔차 블록의 계수들을 양자화하기 위한 양자화 스텝 사이즈를 코딩 유닛별로 결정한다. 양자화 스텝 사이즈는 미리 정해진 크기 이상의 부호화 단위별로 결정된다. 상기 미리 정해진 크기는 8x8 또는 16x16일 수 있다. 그리고, 결정된 양자화 스텝 사이즈 및 예측 모드에 따라 결정되는 양자화 매트릭스를 이용하여 상기 변환 블록의 계수들을 양자화한다. 양자화부(130)는 현재 부호화 단위의 양자화 스텝 사이즈 예측자로서 현재 부호화 단위에 인접한 부호화 단위의 양자화 스텝 사이즈를 이용한다.
양자화부(130)는 현재 부호화 단위의 좌측 부호화 단위, 상측 부호화 단위, 좌상측 부호화 단위 순서로 검색하여 1개 또는 2개의 유효한 양자화 스텝 사이즈를 이용하여 현재 부호화 단위의 양자화 스텝 사이즈 예측자를 생성한다. 예를 들어, 상기 순서로 검색된 유효한 첫번째 양자화 스텝 사이즈를 양자화 스텝 사이즈 예측자로 결정할 수 있다. 또한, 상기 순서로 검색된 유효한 2개의 양자화 스텝 사이즈의 평균값을 양자화 스텝 사이즈 예측자로 결정할 수도 있고, 1개만이 유효한 경우에는 이를 양자화 스텝 사이즈 예측자로 결정할 수 있다. 상기 양자화 스텝 사이즈 예측자가 결정되면, 현재 부호화 단위의 양자화 스텝 사이즈와 상기 양자화 스텝 사이즈 예측자 사이의 차분값을 엔트로피 부호화부(140)로 전송한다.
한편, 현재 코딩 유닛의 좌측 코딩 유닛, 상측 코딩 유닛, 좌상측 코딩 유닛 모두가 존재하지 않을 가능성이 있다. 반면에 최대 코딩 유닛 내의 부호화 순서 상으로 이전에 존재하는 코딩 유닛이 존재할 수 있다. 따라서, 현재 코딩 유닛에 인접한 코딩 유닛들과 상기 최대 코딩 유닛 내에서는 부호화 순서상 바로 이전의 코딩 유닛이 후보자가 될 수 있다. 이 경우, 1) 현재 코딩 유닛의 좌측 코딩 유닛, 2) 현재 코딩 유닛의 상측 코딩 유닛, 3) 현재 코딩 유닛의 좌상측 코딩 유닛, 4) 부호화 순서상 바로 이전의 코딩 유닛 순서로 우선순위를 둘 수 있다. 상기 순서는 바뀔 수 있고, 상기 좌상측 코딩 유닛은 생략될 수도 있다.
상기 양자화된 변환 블록은 역양자화부(135)와 스캐닝부(131)로 제공된다.
스캐닝부(131)는 양자화된 변환 블록의 계수들을 스캐닝하여 1차원의 양자화 계수들로 변환한다. 양자화 후의 변환 블록의 계수 분포가 인트라 예측 모드에 의존적일 수 있으므로, 스캐닝 방식은 인트라 예측 모드에 따라 결정된다. 또한, 계수 스캐닝 방식은 변환 단위의 크기에 따라 달리 결정될 수도 있다. 상기 스캔 패턴은 방향성 인트라 예측 모드에 따라 달라질 수 있다. 양자화 계수들의 스캔순서는 역방향으로 스캔한다.
상기 양자화된 계수들이 복수개의 서브셋으로 분할된 경우에는 각각의 서브셋 내의 양자화 계수들에 동일한 스캔패턴을 적용한다. 상기 복수개의 서브셋은 하나의 메인 서브셋과 적어도 하나 이상의 잔여 서브셋으로 구성된다. 메인 서브셋은 DC 계수를 포함하는 좌상측에 위치하고, 상기 잔여 서브셋은 메인 서브셋 이외의 영역을 커버한다.
서브셋 간의 스캔패턴은 지그재그 스캔을 적용한다. 스캔 패턴은 메인 서브셋으로부터 순방향으로 잔여 서브셋들로 스캔하는 것이 바람직하나, 그 역방향도 가능하다. 또한, 서브셋 내의 양자화된 계수들의 스캔패턴과 동일하게 서브셋 간의 스캔패턴을 설정할 수도 있다. 이 경우, 서브셋 간의 스캔패턴이 인트라 예측 모드에 따라 결정된다. 한편, 부호기는 상기 변환 유닛내의 0이 아닌 마지막 양자화 계수의 위치를 나타낼 수 있는 정보를 복호기로 전송한다. 각 서브셋 내의 0이 아닌 마지막 양자화 계수의 위치를 나타낼 수 있는 정보도 복호기로 전송한다. 상기 정보는 각각의 서브셋 내의 0이 아닌 마지막 양자화 계수의 위치를 나타내는 정보일 수 있다.
역양자화(135)는 상기 양자화된 양자화 계수를 역양자화한다. 역변환부(125)는 역양자화된 변환 계수를 공간 영역의 잔차 블록으로 복원한다. 가산기는 상기 역변환부에 의해 복원된 잔차블록과 인트라 예측부(150) 또는 인터 예측부(160)로부터의 예측 블록을 합쳐서 복원 블록을 생성한다.
후처리부(170)는 복원된 픽쳐에 발생하는 블록킹 효과의 제거하기 위한 디블록킹 필터링 과정, 화소 단위로 원본 영상과의 차이값을 보완하기 위한 적응적 오프셋 적용 과정 및 코딩 유닛으로 원본 영상과의 차이값을 보완하기 위한 적응적 루프 필터링 과정을 수행한다.
디블록킹 필터링 과정은 미리 정해진 크기 이상의 크기를 갖는 색차 블록 및 변환 단위의 경계에 적용하는 것이 바람직하다. 상기 크기는 8x8일 수 있다. 상기 디블록킹 필터링 과정은 필터링할 경계(boundary)를 결정하는 단계, 상기 경계에 적용할 경계 필터링 강도(bounary filtering strength)를 결정하는 단계, 디블록킹 필터의 적용 여부를 결정하는 단계, 상기 디블록킹 필터를 적용할 것으로 결정된 경우, 상기 경계에 적용할 필터를 선택하는 단계를 포함한다.
상기 디블록킹 필터의 적용 여부는 i) 상기 경계 필터링 강도가 0보다 큰지 여부 및 ii) 상기 필터링할 경계에 인접한 2개의 블록(P 블록, Q블록) 경계 부분에서의 화소값들이 변화 정도를 나타내는 값이 양자화 파라미터에 의해 결정되는 제1 기준값보다 작은지 여부에 의해 결정된다.
상기 필터는 적어도 2개 이상인 것이 바람직하다. 블록 경계에 위치한 2개의 화소들간의 차이값의 절대값이 제2 기준값보다 크거나 같은 경우에는 상대적으로 약한 필터링을 수행하는 필터를 선택한다. 상기 제2 기준값은 상기 양자화 파라미터 및 상기 경계 필터링 강도에 의해 결정된다.
적응적 오프셋 적용 과정은 디블록킹 필터가 적용된 영상내의 화소와 원본 화소간의 차이값(distortion)을 감소시키기 위한 것이다. 픽쳐 또는 슬라이스 단위로 상기 적응적 오프셋 적용 과정을 수행할지 여부를 결정할 수 있다. 픽쳐 또는 슬라이스는 복수개의 오프셋 영역들로 분할될 수 있고, 각 오프셋 영역별로 오프셋 타입이 결정될 수 있다. 오프셋 타입은 미리 정해진 개수(예를 들어, 4개)의 에지 오프셋 타입과 2개의 밴드 오프셋 타입을 포함할 수 있다. 오프셋 타입이 에지 오프셋 타입일 경우에는 각 화소가 속하는 에지 타입을 결정하여, 이에 대응하는 오프셋을 적용한다. 상기 에지 타입은 현재 화소와 인접하는 2개의 화소값의 분포를 기준으로 결정한다.
적응적 루프 필터링 과정은 디블록킹 필터링 과정 또는 적응적 오프셋 적용 과정을 거친 복원된 영상과 원본 영상을 비교한 값을 기초로 필터링을 수행할 수 있다. 적응적 루프 필터링은 상기 결정된 ALF는 4x4 크기 또는 8x8 크기의 블록에 포함된 화소 전체에 적용될 수 있다. 적응적 루프 필터의 적용 여부는 코딩 유닛별로 결정될 수 있다. 각 코딩 유닛에 따라 적용될 루프 필터의 크기 및 계수는 달라질 수 있다. 코딩 유닛별 상기 적응적 루프 필터의 적용 여부를 나타내는 정보는 각 슬라이스 헤더에 포함될 수 있다. 색차 신호의 경우에는, 픽쳐 단위로 적응적 루프 필터의 적용 여부를 결정할 수 있다. 루프 필터의 형태도 휘도와 달리 직사각형 형태를 가질 수 있다.
적응적 루프 필터링은 슬라이스별로 적용 여부를 결정할 수 있다. 따라서, 현재 슬라이스에 적응적 루프 필터링이 적용되는지 여부를 나타내는 정보는 슬라이스 헤더 또는 픽쳐 헤더에 포함된다. 현재 슬라이스에 적응적 루프 필터링이 적용됨을 나타내면, 슬라이스 헤더 또는 픽쳐 헤더는 추가적으로 적응적 루프 필터링 과정에 사용되는 휘도 성분의 수평 및/또는 수직 방향의 필터 길이를 나타내는 정보를 포함한다.
슬라이스 헤더 또는 픽쳐 헤더는 필터 세트의 수를 나타내는 정보를 포함할 수 있다. 이때 필터 세트의 수가 2 이상이면, 필터 계수들이 예측 방법을 사용하여 부호화될 수 있다. 따라서, 슬라이스 헤더 또는 픽쳐 헤더는 필터 계수들이 예측 방법으로 부호화되는지 여부를 나타내는 정보를 포함할 수 있으며, 예측 방법이 사용되는 경우에는 예측된 필터 계수를 포함한다.
한편, 휘도 뿐만 아니라, 색차 성분들도 적응적으로 필터링될 수 있다. 따라서, 색차 성분 각각이 필터링되는지 여부를 나타내는 정보를 슬라이스 헤더 또는 픽쳐 헤더가 포함할 수 있다. 이 경우, 비트수를 줄이기 위해 Cr과 Cb에 대한 필터링 여부를 나타내는 정보를 조인트 코딩(즉, 다중화 코딩)할 수 있다. 이때, 색차 성분들의 경우에는 복잡도 감소를 위해 Cr과 Cb를 모두 필터링하지 않는 경우가 가장 빈번할 가능성이 높으므로, Cr과 Cb를 모두 필터링하지 않는 경우에 가장 작은 인덱스를 할당하여 엔트로피 부호화를 수행한다. 그리고, Cr 및 Cb를 모두 필터링하는 경우에 가장 큰 인덱스를 할당하여 엔트로피 부호화를 수행한다.
픽쳐 저장부(180)는 후처리된 영상 데이터를 후처리부(160)로부터 입력 받아 픽쳐(picture) 단위로 영상을 복원하여 저장한다. 픽쳐는 프레임 단위의 영상이거나 필드 단위의 영상일 수 있다. 픽쳐 저장부(180)는 다수의 픽쳐를 저장할 수 있는 버퍼(도시되지 않음)를 구비한다.
인터 예측부(160)는 상기 픽쳐 저장부(180)에 저장된 적어도 하나 이상의 참조 픽쳐를 이용하여 움직임 추정을 수행하고, 참조 픽쳐를 나타내는 참조 픽쳐 인덱스 및 움직임 벡터를 결정한다. 그리고, 결정된 참조 픽쳐 인덱스 및 움직임 벡터에 따라, 픽쳐 저장부(180)에 저장된 다수의 참조 픽쳐들 중 움직임 추정에 이용된 참조 픽쳐로부터, 부호화하고자 하는 색차 블록에 대응하는 예측 블록을 추출하여 출력한다.
인트라 예측부(150)는 현재 색차 블록이 포함되는 픽처 내부의 재구성된 화소값을 이용하여 인트라 예측 부호화를 수행한다. 인트라 예측부(150)는 예측 부호화할 현재 색차 블록을 입력 받아 현재 블록의 크기에 따라 미리 설정된 개수의 인트라 예측 모드 중에 하나를 선택하여 인트라 예측을 수행한다. 인트라 예측부는 인트라 예측 블록을 생성하기 위해 참조 화소를 적응적으로 필터링한다. 참조 화소가 이용 가능하지 않은 경우에는 이용 가능한 참조 화소들을 이용하여 참조 화소들을 생성할 수 있다.
엔트로피 부호화부(140)는 양자화부(130)에 의해 양자화된 양자화 계수, 인트라 예측부(140)로부터 수신된 인트라 예측 정보, 인터 예측부(150)로부터 수신된 움직임 정보 등를 엔트로피 부호화한다.
도2는 본 발명의 실시예에 따른 동영상 복호화 장치를 나타내는 블록도이다.
도 2를 참조하면, 본 발명에 따른 동영상 복호화 장치는, 엔트로피 복호부(210), 역스캐닝부(220), 역양자화부(230), 역변환부(240), 인트라 예측부(250), 인터 예측부(260), 후처리부(270), 픽쳐 저장부(280), 가산부(290), 및 인트라/인터전환 스위치(295)를 구비한다.
엔트로피 복호부(210)는, 수신된 부호화 비트 스트림을 복호하여, 인트라 예측 정보, 인터 예측 정보, 양자화 계수 정보 등으로 분리한다. 엔트로피 복호부(210)는 복호된 인터 예측 정보를 인터 예측부(260)에 공급한다. 엔트로피 복호부(210)는 인트라 예측 정보를 복호하여 인트라 예측부(250)로 공급한다. 또한, 상기 엔트로피 복호화(210)는 상기 역양자화 계수 정보를 역스캔부(220)로 공급한다.
역스캐닝부(220)는 상기 양자화 계수 정보를 2차원 배열의 역양자화 블록으로 변환한다. 상기 변환을 위해 복수개의 역스캐닝 패턴 중에 하나를 선택한다. 계수 역스캐닝 패턴은 인트라 예측 모드에 따라 결정될 수 있다. 현재 변환 유닛의 크기가 미리 정해진 크기보다 큰 경우에는 미리 정해진 크기의 서브셋 단위로 역스캔하여 양자화된 변환 유닛을 구성한다. 그리고, 현재 변환 유닛의 크기가 미리 정해진 크기인 경우와 동일한 경우에는 변환 유닛 단위로 역스캔하여 양자화된 변환 유닛을 구성한다. 상기 양자화된 계수들이 복수개의 서브셋 단위로 역스캔될 경우에는 각각의 서브셋 내의 양자화 계수들에 동일한 역스캔패턴을 적용한다. 상기 복수개의 서브셋은 하나의 메인 서브셋과 적어도 하나 이상의 잔여 서브셋으로 구성된다. 메인 서브셋은 DC 계수를 포함하는 좌상측에 위치하고, 상기 잔여 서브셋은 메인 서브셋 이외의 영역을 커버한다.
서브셋 간의 역스캔패턴은 역지그재그 스캔을 적용한다. 스캔 패턴은 잔여 서브셋들로부터 메인 서브셋으로 역스캔하는 것이 바람직하나, 그 역방향도 가능하다. 또한, 서브셋 내의 양자화된 계수들의 역스캔패턴과 동일하게 서브셋 간의 역스캔패턴을 설정할 수도 있다. 역스캐닝부(220)는 현재 변환 유닛 내의 0이 아닌 마지막 양자화 계수의 위치를 나타내는 정보를 이용하여 역스캐닝을 수행한다.
역양자화부(230)는 현재 코딩 유닛의 양자화 스텝 사이즈 예측자를 결정한다. 상기 예측자의 결정과정은 도 1의 양자화부(130)의 예측자 결정 과정과 동일하므로 생략한다. 역양자화부(230)는 결정된 양자화 스텝 사이즈 예측자와 수신한 잔차 양자화 스텝 사이즈를 더하여 현재 역양자화 블록에 적용된 양자화 스텝 사이즈를 얻는다. 역양자화부(230)는 양자화 스텝 사이즈가 적용된 양자화 매트릭스를 이용하여 역양자화 계수를 복원한다. 복원하고자 하는 현재 블록의 크기에 따라 서로 다른 양자화 매트릭스가 적용되며, 동일 크기의 블록에 대해서도 상기 현재 블록의 예측 모드 및 인트라 예측 모드 중 적어도 하나에 기초하여 양자화 매트릭스가 선택된다.
역변환부(240)는 역양자화 블록을 역변환하여 잔차 블록을 복원한다. 그리고, 상기 복원된 양자화 계수를 역변환하여 잔차 블록을 복원한다. 상기 역양자화 블록에 적용할 역변환 매트릭스는 예측 모드(인트라 또는 인터) 및 인트라 예측 모드에 따라 적응적으로 결정될 수 있다. 도 1의 변환부(120)에 적용된 변환 매트릭스의 역변환 매트릭스가 결정되므로 구체적인 기재는 생략한다.
가산부(290)는 역변환부(240)에 의해 복원된 잔차 블록과 인트라 예측부(250) 또는 인터 예측부(260)에 의해 생성되는 예측 블록을 가산함으로써, 영상 블록을 복원한다.
인트라 예측부(250)는 엔트로피 복호화부(210)로부터 수신된 인트라 예측 정보에 기초하여 현재 블록의 인트라 예측 모드를 복원한다. 그리고, 복원된 인트라 예측 모드에 따라 예측 블록을 생성한다.
인터 예측부(260)는 엔트로피 복호화부(210)로부터 수신된 인터 예측 정보에 기초하여 참조 픽쳐 인덱스와 움직임 벡터를 복원한다. 그리고, 상기 참조 픽쳐 인덱스와 움직임 벡터를 이용하여 현재 블록에 대한 예측 블록을 생성한다. 소수 정밀도의 움직임 보상이 적용될 경우에는 선택된 보간 필터를 적용하여 예측 블록을 생성한다.
후처리부(270)의 동작은 도 1의 후처리부(160)의 동작과 동일하므로 생략한다.
픽쳐 저장부(280)는 후처리부(270)에 의해 후처리된 복호 영상을 픽쳐 단위로 저장한다.
본 발명에 따른 인트라 예측 블록 생성 방법에 대해 설명한다. 본 발명에 따른 인트라 예측 블록 생성 순서는 다음과 같다.
1. 수신된 비트스트림으로부터 인트라 예측 정보를 파싱
인트라 예측 정보는 인트라 예측 모드 그룹 지시자와 예측모드 인덱스를 포함한다.
인트라 예측 모드 그룹 지시자는 현재 블록의 인트라 예측 모드가 MPM 그룹에 속하는지 MPM 이외의 그룹에 속하는지를 나타내는 플래그 정보일 수 있다. 또한, 상기 인트라 예측 모드 그룹 지시자는 현재 블록의 인트라 예측 모드가 3개 이상의 인트라 예측 그룹 중 어느 하나에 속하는지를 나타내는 정보일 수 있다.
예측모드 인덱스는 인트라 예측 모드 그룹 지시자가 나타내는 인트라 예측 모드 그룹 내에서의 특정 인트라 예측 모드를 나타내는 정보이다.
CAVLC가 적용된 경우, 상기 인트라 예측 모드 그룹 지시자는 unsigned integer의 형태로 수신하므로, 별도의 엔트로피 복호화를 할 필요가 없다. 그러나, 예측 모드 인덱스는 MPM 그룹에 속하는 경우에는 truncated Exp-Golomb code 또는 unsigned integer Exp-Golomb code 로 이진화된후 엔트로피 부호화되었으므로, 엔트로피 복호화를 수행하여 상기 Exp-Golomb code를 얻은 후에, 상기 예측모드 인덱스를 복원할 수 있다. 그러나, 예측 모드 인덱스는 MPM 그룹에 속하지 않는 경우에는 unsigned integer Exp-Golomb code 로 이진화된 후 엔트로피 부호화되었으므로, 엔트로피 복호화를 수행하여 상기 Exp-Golomb code 를 얻은 후에, 상기 예측모드 인덱스를 복원할 수 있다.
2. 현재 블록의 인트라 예측 모드 복호화 단계
[MPM 그룹 구성(MPM 리스트 작성)]
MPM 그룹은 현재 블록에 인접한 블록들의 인트라 예측 모드에 따라 적응적으로 결정된다. 상기 MPM 그룹은 2개의 인트라 예측 모드, 3개의 인트라 예측 모드, 또는 4개의 인트라 예측 모드로 구성될 수 있다.
MPM 그룹은 현재 블록에 인접한 블록들의 인트라 예측 모드에 따라 적응적으로 결정된다. 상기 MPM 그룹은 2개의 인트라 예측 모드, 3개의 인트라 예측 모드, 또는 4개의 인트라 예측 모드로 구성될 수 있다.
먼저, MPM 그룹이 2개의 인트라 예측 모드, 즉 2개의 MPM 후보자로 구성되는 경우의 MPM 그룹 구성(MPM 리스트 작성) 에 대해 설명한다. 다음의 순서로 구성한다.
먼저, 현재 블록의 상측 및 좌측 블록의 인트라 예측 모드를 검사한다. 상기 현재 블록의 상측 또는 좌측 블록이 존재하지 않는 경우에는 인트라 예측 모드가 이용가능하지 않은 것으로 판단한다. 그러나, 상기 상측 또는 좌측 블록이 존재하되, 인트라 예측 부호화되지 않은 경우(즉, 인터 예측 부호화된 경우)에는, 상기 블록의 인트라 예측 모드를 DC 또는 Planar 모드로 설정한다. 상기 상측 또는 좌측 블록이 존재하고, 인트라 예측 모드가 존재하는 경우에는, 상기 인트라 예측 모드를 상기 블록의 인트라 예측 모드로 설정한다.
다음으로, 상기 상측 또는 좌측 블록의 인트라 예측 모드가 현재 블록의 허용 가능한 인트라 예측 모드수 보다 크거나 같으면, 상기 인트라 예측 모드를 현재 블록의 허용 가능한 인트라 예측 모드로 맵핑한다. 맵핑에 대한 구체적인 방법은 후술한다.
다음으로, MPM 리스트를 다음과 같은 방법으로 구성한다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드가 모두 존재하고, 서로 다른 경우에는 상기 상측 및 좌측 블록의 인트라 예측 모드 2개를 MPM후보자로 설정한다. 이 경우, 모드번호가 작은 인트라 예측 모드에 인덱스 0을 부여하고, 모드번호가 큰 인트라 예측 모드에 인덱스 1을 부여한다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드들 중 하나만이 존재하거나, 상기 상측 및 좌측 블록의 인트라 예측 모드가 동일한 경우에는 상기 인트라 예측 모드에 인덱스 0을 부여하고, 다음 중 하나의 방법으로 인덱스 1을 갖는 인트라 예측 모드를 추가한다.
① 상기 존재하는 하나가 DC가 아닌 경우에는 DC를 추가하고, DC인 경우에는 planar 또는 Vertical을 추가한다.
② 상기 존재하는 하나가 planar가 아닌 경우에는 planar를 추가하고, planar인 경우에는 DC 또는 Vertical을 추가한다.
③ 현재 블록의 코너 블록의 인트라 예측 모드를 추가할 수 있다. 코너 블록은 우상측 블록(C), 좌하측 블록(D), 또는 좌상측 블록(E) 중 어느 하나 일 수 있다. 상기 코너 블록을 미리 정해진 순서에 따라 유효한 하나를 MPM 후보자로 추가할 수 있다. 미리 정해진 순서는 C, D, E 또는 E, C, D 순서일 수 있다. 상기 코너 블록의 인트라 예측 모드는 상기 상측 또는 좌측의 유효한 인트라 예측 모드와 다른 모드로 선택된다.
좌측 블록이 복수개 존재하는 경우에는 위에서 아래 방향으로 스캔하여 유효한 첫번째 인트라 예측 모드를 좌측 인트라 예측 모드로 설정한다. 마찬가지로 상측 블록이 복수개 존재하는 경우에는 왼쪽에서 오른쪽으로 스캔하여 유효한 첫번째 인트라 예측 모드를 상측 인트라 예측 모드로 설정한다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드들 모두가 존재하지 않는 경우에는 다음의 하나의 방법을 이용한다.
① DC 및 planar 를 추가한다. 이 경우, DC에 인덱스 0을, planar에 인덱스 1을 할당하거나, planar에 인덱스 0을, DC에 인덱스 1을 할당할 수 있다.
② DC 및 Vertical을 추가한다.
③ Planar 및 Vertical을 추가한다.
④ 코너 블록 중 하나가 이용 가능하면, 이용 가능한 하나와 DC 또는 planar를 추가한다. 이용 가능한 하나는 미리 정해진 순서로 결정한다. 이용 가능한 하나가 DC이면 planar를 추가하고, 이용 가능한 하나가 planar이면 DC를 추가한다.
⑤ 코너 블록 중 2개가 이용 가능하면, 이용 가능한 2개를 추가한다.
MPM 그룹이 3개의 인트라 예측 모드, 즉 3개의 MPM 후보자로 구성되는 경우의 MPM 그룹 구성(MPM 리스트 작성) 에 대해 설명한다.
먼저, 현재 블록의 상측 및 좌측 블록의 인트라 예측 모드를 검사한다. 상기 현재 블록의 상측 또는 좌측 블록이 존재하지 않는 경우에는 인트라 예측 모드가 이용 가능하지 않은 것으로 판단한다. 그러나, 상기 상측 및 좌측 블록이 존재하되, 인트라 예측 부호화되지 않은 경우(즉, 인터 예측 부호화된 경우)에는, 상기 블록의 인트라 예측 모드를 DC 또는 Planar 모드로 설정하거나, 이용 가능하지 않는 것으로 설정할 수 있다. 상기 상측 및 좌측 블록이 존재하고, 인트라 예측 모드가 존재하는 경우에는, 상기 인트라 예측 모드를 상기 블록의 인트라 예측 모드로 설정한다.
다음으로, 상기 상측 또는 좌측 블록의 인트라 예측 모드가 현재 블록의 허용 가능한 인트라 예측 모드수 보다 크거나 같으면, 상기 인트라 예측 모드를 현재 블록의 허용 가능한 인트라 예측 모드로 맵핑한다. 맵핑에 대한 구체적인 방법은 후술한다.
다음으로, MPM 리스트를 다음과 같은 방법으로 구성한다. 도 3은 본 바명에 따른 인트라 예측 모드들을 나타낸다. 64x64의 경우에는 0~3의 모드가 허용되고, 4x4의 경우에는 0~17, 8x8~32x32의 경우에는 0~34의 모드가 허용된다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드가 모두 존재하고 서로 다른 경우 에는 상기 두개의 인트라 예측 모드에 인덱스 0, 인덱스 1을 부여한다. 이 경우, 모드 번호가 작은 인트라 예측 모드에 인덱스 0을, 큰 인트라 예측 모드에 인덱스 1을 부여할 수 있다. 그리고, 하나의 인트라 예측 모드를 인덱스 2를 갖는 MPM 후보자로 추가한다. 이 경우의 구체적 방법들은 다음과 같다.
상기 두 개의 인트라 예측 모드 중 하나가 비방향성 모드이고, 다른 하나가 방향성 모드인 경우에는 나머지 비방향성 모드를 추가할 수 있다. 예를 들어, 두 개의 인트라 예측 모드들 중 하나가DC이고, 다른 하나가 Planar가 아닌 경우에는 planar 를 MPM 후보자로 추가할 수 있다. 마찬가지로, 상기 두 개의 인트라 예측 모드 중 하나가 planar이고, 다른 하나가 DC가 아닌 경우에는 DC를 MPM 후보자로 추가할 수 있다. 한편, 상기 두 개의 인트라 예측 모드 중 하나가 비방향성 모드이고, 다른 하나가 방향성 모드인 경우에는 상기 방향성 모드에 인접한 방향성 모드들 중 하나(예를 들어, 인접한 복수개의 방향성 모드들 중 모드 번호가 특정값보다 작은 모드들 중 인접한 하나: 특정값은 9 또는 17)를 추가할 수도 있다. 예를 들어, 특정값이 9인 경우이고 방향성 모드가 11인 경우에는 인접한 19, 20, 4, 5 중에서 4, 5가 허용가능하고, 떨어진 거리도 같으므로 값이 낮은 4를 추가할 수도 있다.
상기 두 개의 인트라 예측 모드가 모두 비방향성 모드인 경우에는 vertical또는 horizontal 모드를 추가할 수 있다. Vertical을 추가하는 것이 더욱 바람직하다.
상기 두 개의 인트라 예측 모드가 모두 방향성 모드인 경우에는 다음의 2가지 방법 중 하나를 사용할 수 있다. (1) 먼저, 상기 방향성 모드들 사이의 방향성 모드를 추가하는 방법이다. 예를 들어, 상기 방향성 모드들이 소정각도 이내 또는 상기 방향성 모드들 사이의 허용 가능한 방향성 모드들의 수가 소정개수 이내이면, 상기 방향성 모드들 사이의 방향성 모드들 중 하나를 추가한다. 상기 소정 개수는 33개의 방향성 모드를 기준으로 할 때, 1~4의 값을 가질 수 있다. 이 경우, 추가되는 방향성 모드는 중간에 위치한 방향성 모드일 수도 있고, 인트라 예측 모드번호가 작은 모드일 수도 있다. (2) 다음으로, 비방향성 모드를 추가하는 방법이다. 이 경우에는 DC 또는 planar를 추가할 수 있다.
다음으로, 현재 블록의 상측 및 좌측 블록의 인트라 예측 모드들 중 하나만이 존재하는 경우에는 상기 인트라 예측 모드에 인덱스 0을 부여한다. 그리고, 2개의 인트라 예측 모드들을 인덱스 1, 2를 갖는 MPM 후보자로 추가한다. 이 경우의 구체적 방법들은 다음과 같다.
먼저, 상기 존재하는 하나의 인트라 예측 모드가 비방향성 모드(DC 또는 planar)이면, 다른 하나의 비방향성 모드와 vertical을 추가할 수 있다. 또는 vertical과 horizontal을 추가할 수 있다.
그러나, 상기 존재하는 하나의 인트라 예측 모드가 방향성 모드이면, 2개의 비방향성 모드를 추가할 수 있다.
상기 방식들은 상측 및 좌측 블록의 인트라 예측 모드가 동일한 경우에도 적용할 수 있다. 그러나, 좌측 및 상측 블록의 인트라 예측모드가 동일하고, 상기 인트라 예측 모드가 방향성 모드인 경우, 인접하는 2개의 방향성 인트라 예측 모드를 추가할 수도 있다. 또는, DC와 가장 인접한 방향성 모드들 중 주어진 모드 번호가 작은 인트라 예측 모드가 추가될 수 있다.
다음으로, 현재 블록의 상측 및 좌측 블록의 인트라 예측 모드들 중 모두가 존재하지 않는 경우에는 3개의 MPM 후보자가 추가될 수 있다. DC, planar, Vertical(또는 planar, DC, vertical) 순서로 추가되거나, DC, Vertical, horizontal 순서로 추가될 수 있다.
다음으로, MPM 그룹이 4개의 인트라 예측 모드, 즉 4개의 MPM 후보자로 구성되는 경우의 MPM 그룹 구성(MPM 리스트 작성) 에 대해 설명한다.
먼저, 현재 블록의 상측 및 좌측 블록의 인트라 예측 모드를 검사한다. 상기 현재 블록의 상측 또는 좌측 블록이 존재하지 않는 경우에는 인트라 예측 모드가 이용 가능하지 않은 것으로 판단한다. 그러나, 상기 상측 및 좌측 블록이 존재하되, 인트라 예측 부호화되지 않은 경우(즉, 인터 예측 부호화된 경우)에는, 상기 블록의 인트라 예측 모드를 DC 또는 Planar 모드로 설정하거나, 이용 가능하지 않는 것으로 설정할 수 있다. 상기 상측 및 좌측 블록이 존재하고, 인트라 예측 모드가 존재하는 경우에는, 상기 인트라 예측 모드를 상기 블록의 인트라 예측 모드로 설정한다.
다음으로, 상기 상측 또는 좌측 블록의 인트라 예측 모드가 현재 블록의 허용 가능한 인트라 예측 모드수 보다 크거나 같으면, 상기 인트라 예측 모드를 현재 블록의 허용 가능한 인트라 예측 모드로 맵핑한다. 맵핑에 대한 구체적인 방법은 후술한다.
다음으로, MPM 리스트를 다음과 같은 방법으로 구성한다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드가 모두 존재하고 서로 다른 경우에는 상기 두개의 인트라 예측 모드에 인덱스 0, 인덱스 1을 부여한다. 여기서, 모드번호가 작은 인트라 예측 모드에 인덱스 0을, 모드번호가 큰 인트라 예측모드에 인덱스 1을 부여할 수 있다. 그리고, 2개의 인트라 예측 모드를 MPM 후보자로 추가한다.
둘 다 방향성 모드인 경우에는 2개의 비방향성 모드(DC, Planar)를 추가한다.
둘 중 하나는 방향성 모드이고, 다른 하나는 비방향성 모드인 경우에는 나머지 하나의 비방향성 모드와 하나의 방향성 모드가 추가될 수 있다. 이 경우, 추가되는 방향성 모드는 상기 방향성 모드에 인접한 인트라 예측 모드 중 하나(특정방향의 하나로서 예를 들어, 좌측/아래쪽 또는 모드번호가 낮은 모드)와, 수평 또는 수직 모드 중 하나가 추가될 수 있다. 또는 상기 방향성 모드에 인접한 2개의 방향성 모드가 추가될 수도 있다. 이 경우, 추가되는 방향성 모드들은 좌, 우(또는 상, 하)측에 인접한 1개씩이 추가될 수 있다.
둘 다 비방향성 모드인 경우에는 Vertical, Horizontal 순으로 추가할 수 있다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드들이 같은 경우에는 상기 인트라 예측 모드에 인덱스 0을 부여한다. 그리고, 3개의 모드를 MPM 후보자로 추가한다.
상기 인트라 예측 모드가 비방향성 모드(DC 또는 planar)이면, 나머지 하나의 비방향성 모드에 인덱스 1을 부여하고 와 2개의 방향성 모드가 추가된다. 추가되는 방향성 모드들은 vertical, horizontal 순 또는 그 역순으로 추가될 수 있다.
상기 인트라 예측 모드가 방향성 모드이면, 1개의 비방향성 모드(planar 또는 DC)가 모드에 인덱스 1을 부여하고, 허용 가능한 방향성 모드들 중 상기 방향성 모드에 가장 인접한 방향성을 갖는 2개의 인트라 예측 모드가 추가될 수 있다. 이 경우, 7에 가장 인접한 방향성 모드들 중 하나는 10가 될 수 있고, 그 역도 마찬가지로 성립한다. 또는 2개의 비방향성 모드에 인덱스 1, 2를 부여하고, 상기 방향성 모드에 인접한 모드들 중 하나(좌측/아래쪽 또는 모드번호가 낮은 모드)에 인덱스 3을 추가할 수 있다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드들 중 하나만이 존재하는 경우에는 다음의 하나의 방법을 이용한다.
상기 인트라 예측 모드가 비방향성 모드이면, 다른 하나의 비방향성 모드와, Vertical, Horizontal순 또는 그 역순으로 추가할 수 있다.
상기 인트라 예측 모드가 방향성 모드이면, (1) 2개의 비방향성 모드가 추가되고, 상기 방향성 모드에 가장 인접한 방향성을 갖는 2개의 인트라 예측 모드 중 주어진 모드 번호가 작은 인트라 예측 모드 또는 특정 방향, 예를 들어, 좌측(아래쪽)의 인트라 예측 모드가 추가될 수 있다. 또는 (2) DC또는 planar가 추가되고, 상기 방향성 모드에 가장 인접한 방향성을 갖는 2개의 인트라 예측 모드가 추가될 수 있다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드들 모두 존재하지 않는 경우에는 2개의 비방향성 모드와 2개의 방향성 모드가 추가될 수 있다. 이 경우, 2개의 비방향성 모드에 인덱스 0, 1을 부여하고, 2개의 방향성 모드에 인덱스 2, 3을 부여할 수 있다. 예를 들어, DC, planar, V, H순서로 인덱스를 부여하거나, Planar, DC, V, H순서로 인덱스를 부여하거나, DC, V, H, planar 순으로 추가될 수 있다.
상기한 방법들은 인트라 예측모드의 수가 18 또는 35인 경우, 또는 상기 블록의 크기가 4x4~32x32인 경우에 적용하는 것을 전제로 한 것이다.
[맵핑 방법]
현재 블록의 유효한 상측 또는 좌측 블록의 인트라 예측 모드의 모드 번호가 현재 블록의 허용된 인트라 예측 모드가 아닌 경우에는 상기 유효한 상측 또는 좌측 인트라 예측 모드를 현재 블록의 허용 가능한 인트라 예측 모드로 맵핑한다. 즉, 현재 블록의 유효한 상측 또는 좌측 블록의 인트라 예측 모드의 모드번호가 현재 블록의 인트라 예측 모드수보다 크거나 같은 경우(planar 모드를 0으로 둘 경우)에는 상기 유효한 상측 또는 좌측 블록의 인트라 예측 모드를 현재 블록의 허용 가능한 인트라 예측 모드로 맵핑한다.
이 경우, 현재 블록의 크기가 64x64인 경우에는 4개의 인트라 예측 모드로 맵핑한다. 상기 4개의 인트라 예측 모드는 planar mode(0), vertical mode(1), horizontal mode(2), DC mode(3)이다. 따라서, 좌측 또는 상측 블록의 인트라 예측 모드가 방향성 예측 모드이고, vertical mode 및 horizontal mode가 아닌 경우에는 상기 좌측 및 상측 블록의 방향성 인트라 예측 모드를 상기 4개의 인트라 예측 모드들 중 하나로 맵핑한다.
(제1 실시예)
도 4에 도시된 바와 같이, vertical mode(1)에 인접한 제1 개수의 인트라 예측 모드들(예를 들어, 12, 22, 23, 13, 24, 6)은 Vertical mode(1)로 맵핑되고, horizontal mode(2)에 인접한 제2개수의 인트라 예측 모드들(예를 들어, 8, 29, 16, 30, 31, 17, 32, 9)은 horizontal mdoe(2)로 맵핑된다. 그리고, 나머지는 DC(3)로 맵핑될 수 있다. 이 경우, Vertical과 horizontal의 우선순위를 달리하기 위해 상기 제1 개수 및 제2 개수는 다를 수 있다. 또한, 상기 Vertical mode를 중심으로 양방향으로 동일하지 않은 수의 인접 방향성 모드들이 상기 vertical mode로 맵핑될 수 있다. horizontal mode를 중심으로 양방향으로 동일한 개수가 horizontal mode로 맵핑될 수 있다. 상기 DC 모드 대신에 planar 모드로 맵핑될 수도 있다.
(제2 실시예)
V, H로 매핑되는 방향성 모드들은 제1 실시예와 동일할 수 있다. 그러나, 나머지 방향성 모드들은 DC 및 Planar 중 어느 하나로만 맵핑 되는 것이 아니라, 일부는 DC로, 나머지 모두는 Planar로 맵핑될 수 있다.
예를 들어, 도 5에 도시된 바와 같이, 25, 14, 26, 7 및 33, 18, 34, 10은 DC로 맵핑되고, 나머지 모드들(4, 19, 11, 20, 4, 21, 27, 15, 28)은 planar로 맵핑될 수 있다. 또한, 상기 DC와 Planar로 맵핑되는 모드들이 바뀌어질 수도 있다. 즉, 25, 14, 26, 7 및 33, 18, 34, 10은 Planar로 맵핑되고, 나머지 모드들(4, 19, 11, 20, 4, 21, 27, 15, 28)은 DC로 맵핑될 수 있다
(제3 실시예)
V, H로 매핑되는 방향성 모드들이 제1, 2 실시예와 다를 수 있다. 예를 들어, 도 6에 도시된 바와 같이, V에 맵핑되는 방향성 모드 또는 모드들의 수를 상기 제1, 2 실시예와 달리할 수 있다. 예를 들어, 5, 21, 12, 22, 23, 13, 24, 6을 V에 맵핑시키거나, 21, 12, 22, 23, 13, 24를 V에 맵핑시키거나, 12, 22, 23, 13를 V에 맵핑 시킬 수 있다. V에 맵핑되는 V의 양방향 방향성 모드들의 수가 동일할 수도 있다.
마찬가지로, 도 6에 도시된 바와 같이, H에 맵핑되는 방향성 모드들의 수를 상기 제1, 2실시예와 달리할 수 있다. 예를 들어, 8, 29, 16, 30, 31, 17, 32, 9를 H에 맵핑시키거나, 29, 16, 30, 31, 17, 32를 H에 맵핑시키거나, 16, 30, 31, 17를 H에 맵핑시킬 수 있다.
상기 V와 H 중에 V에 우선권을 주기 위해, V에 맵핑되는 방향성 모드들의 수를 H에 맵핑되는 방향성 모드들의 수보다 크게 할 수 있다. 마찬가지로, H에 우선권을 주기 위해 반대로도 할 수 있으나, 전자가 바람직하다.
그러나, 나머지 방향성 모드들은 DC 및 Planar 중 어느 하나로만 맵핑 되는 것이 아니라, 일부는 DC로, 나머지 모두는 Planar로 맵핑될 수 있다.
예를 들어, 도 6에 도시된 바와 같이, 25, 14, 26, 7 및 33, 18, 34, 10은 DC로 맵핑되고, 나머지 모드들(4, 19, 11, 20, 4, 21, 27, 15, 28)은 planar로 맵핑될 수 있다. 또한, 상기 DC와 Planar로 맵핑되는 모드들이 바뀌어질 수도 있다. 즉, 25, 14, 26, 7 및 33, 18, 34, 10은 Planar로 맵핑되고, 나머지 모드들(4, 19, 11, 20, 4, 21, 27, 15, 28)은 DC로 맵핑될 수 있다
(제4 실시예)
모드번호 4~17은 V, H, DC중 하나로 맵핑(제1예와 동일), 모드번호 18 이상은 planar mode로 맵핑될 수 있다.
현재 블록의 크기가 4x4인 경우에는 좌측 또는 상측 블록의 인트라 예측 모드가 방향성 예측 모드이고, 현재 블록의 허용 가능한 인트라 예측 모드에 포함되지 않는 경우에는 현재 블록의 허용 가능한 인트라 예측 모드들 중 어느 하나로 맵핑될 수 있다. 이 경우, 0~9번 모드에 우선권을 부여하기 위해 상기 0~9(10개) 중 하나로 맵핑될 수 있다.
(제1 실시예)
도 7에 도시된 바와 같이, vertical mode(1), horizontal mode(2), 모드번호 3, 4, 5, 7, 8, 0에 가장 인접하는 각 방향의 하나의 모드들은 상기 모드들로 맵핑될 수 있다. 구체적으로, 22, 23은 1에, 20, 21은 5에, 27, 19는 4, 24, 25는 6에, 28, 29는 8에 30, 31은 2에, 32, 33은 9에 맵핑될 수 있다. 그리고, 26는 7에 맵핑될 수 있다. 그리고, 나머지의 모드들, 즉, 모드번호 10, 11, 12, 13, 14, 15, 16, 17, 18은 DC 또는 planar중 어느 하나로 맵핑될 수 있다.
또한, 상기 나머지의 모드들은 DC또는 Planar에 맵핑될 수 있다. 예를 들어, 13, 14, 17, 18, 34, 10은 Planar에 11, 12, 15, 16은 DC에 맵핑될 수 있다. 또는 반대로, 13, 14, 17, 18, 34, 10은 DC에 11, 12, 15, 16은 Planar에 맵핑될 수 있다. 후자가 더 바람직하다.
(제 2 실시예)
제1 실시예와 동일하게 맵핑시키되, 모드번호 10을 7에 맵핑시킬 수 있다. 이 경우, DC 또는 Planar에 맵핑되는 모드들은 10을 제외하고는 제1 실시예와 동일할 수 있다.
(제 3 실시예)
복잡도를 줄이기 위해 10~17은 DC 모드에, 18~34은 Planar 모드에 맵핑시킬 수도 있다. 또는 그 역으로도 할 수 있다.
현재 블록의 인트라 예측모드가 MPM 그룹에 속하는지 판단하여 속하는 경우
수신된 상기 인트라 예측 모드 그룹 지시자가 현재 블록의 인트라 예측 모드가 MPM 그룹에 속하는 것을 나타내면, MPM 그룹내의 예측모드 인덱스가 나타내는 인트라 예측 모드를 현재 블록의 인트라 예측 모드로 결정한다. 상기 인트라 예측 모드 그룹 지시자는 현재 블록의 인트라 예측 모드가 MPM 그룹에 속하는지 MPM 이외의 그룹에 속하는지를 나타내는 플래그 정보 일 수 있다.
현재 블록의 인트라 예측모드가 MPM 그룹에 속하는지 판단하여 속하지 않는 경우
수신된 상기 인트라 예측 모드 그룹 지시자가 현재 블록의 인트라 예측 모드가 MPM 그룹에 속하지 않는 것을 나타내면, MPM 그룹을 제외한 현재 블록의 허용된 인트라 예측 모드들(remaining intra prediction mode:잔여 인트라 예측 모드) 중 예측 모드 인덱스가 나타내는 인트라 예측 모드를 현재 블록의 인트라 예측 모드로 결정한다.
- MPM 그룹이 2개의 인트라 예측 모드로 구성되는 경우
먼저, 상기 MPM 그룹에 속하는 2개의 인트라 예측 모드 중, 모드번호가 작은 인트라 예측 모드의 모드번호와 수신되어 복원된 예측 모드 인덱스를 비교한다. 비교결과, 복원된 예측 모드 인덱스가 상기 모드번호가 작은 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 MPM 그룹에 속하는 2개의 인트라 예측 모드 중, 모드번호가 큰 인트라 예측 모드의 모드번호가 수신되어 상기 예측 모드 인덱스를 비교한다. 비교결과, 상기 예측 모드 인덱스가 상기 모드번호가 큰 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 예측 모드 인덱스 값과 대응하는(동일한 값의 모드번호를 갖는) 인트라 예측 모드를 현재 블록의 인트라 예측 모드로 결정한다.
- MPM 그룹이 3개의 인트라 예측 모드로 구성되는 경우
먼저, 상기 MPM 그룹에 속하는 3개의 인트라 예측 모드 중, 모드번호가 가장 작은 인트라 예측 모드의 모드번호와 수신되어 복원된 예측 모드 인덱스를 비교한다. 비교결과, 복원된 예측 모드 인덱스가 상기 모드번호가 가장 작은 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 MPM 그룹에 속하는 3개의 인트라 예측 모드 중, 모드번호가 두번째로 작은 인트라 예측 모드의 모드번호와 상기 예측 모드 인덱스를 비교한다. 비교결과, 상기 예측 모드 인덱스가 상기 모드번호가 두번째로 작은 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 MPM 그룹에 속하는 2개의 인트라 예측 모드 중, 모드번호가 가장 큰 인트라 예측 모드의 모드번호와 상기 예측 모드 인덱스를 비교한다. 비교결과, 상기 예측 모드 인덱스가 상기 모드번호가 가장 큰 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 예측 모드 인덱스 값과 대응하는(동일한 값의 모드번호를 갖는) 인트라 예측 모드를 현재 블록의 인트라 예측 모드로 결정한다.
- MPM 그룹이 4개의 인트라 예측 모드로 구성되는 경우
먼저, 상기 MPM 그룹에 속하는 4개의 인트라 예측 모드 중, 모드번호가 가장 작은 인트라 예측 모드의 모드번호와 수신되어 복원된 예측 모드 인덱스를 비교한다. 비교결과, 복원된 예측 모드 인덱스가 상기 모드번호가 가장 작은 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 MPM 그룹에 속하는 4개의 인트라 예측 모드 중, 모드번호가 두번째로 작은 인트라 예측 모드의 모드번호와 상기 예측 모드 인덱스를 비교한다. 비교결과, 상기 예측 모드 인덱스가 상기 모드번호가 두번째로 작은 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 MPM 그룹에 속하는 4개의 인트라 예측 모드 중, 모드번호가 세번째로 작은 인트라 예측 모드의 모드번호와 상기 예측 모드 인덱스를 비교한다. 비교결과, 상기 예측 모드 인덱스가 상기 모드번호가 세번째로 작은 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 MPM 그룹에 속하는 4개의 인트라 예측 모드 중, 모드번호가 가장 큰 인트라 예측 모드의 모드번호와 상기 예측 모드 인덱스를 비교한다. 비교결과, 상기 예측 모드 인덱스가 상기 모드번호가 가장 큰 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 예측 모드 인덱스 값과 대응하는(동일한 값의 모드번호를 갖는) 인트라 예측 모드를 현재 블록의 인트라 예측 모드로 결정한다
[잔여 인트라 예측 모드 재정렬 방법]
다음의 방법을 이용할 수 있다.
현재 블록의 인트라 예측 모드가 잔여 인트라 예측 모드들 중 하나인 경우, 상기 인트라 예측 모드번호가 MPM 그룹의 구성에 따라 적응적으로 바뀔 수 있다. 즉, MPM에 속하는 인트라 예측 모드들을 제외한 잔여 인트라 예측 모드가 일정한 순서로 재배열되었을 때의 인덱스가 예측 모드 인덱스로 설정된다. 따라서, 수신된 예측 모드 인덱스 및 MPM 그룹에 속하는 인트라 예측 모드들에 따라 적응적으로 잔여 인트라 예측 모드들을 재배열한 후, 상기 예측 모드 인덱스가 나타내는 현재 블록의 인트라 예측 모드를 잔여 인트라 예측 모드들에서 선택한다.
상기 잔여 인트라 예측 모드들을 재배열하는 방법은 다음의 방법들 중 하나를 사용한다.
[방법 1]
현재 블록의 허용된 인트라 예측 모드들 중에서 MPM 그룹에 속하는 인트라 예측 모드를 제외한 잔여 인트라 예측 모드들을 재배열하고, 상기 수신된 예측 모드 인덱스에 대응하는 인덱스가 나타내는 인트라 예측 모드를 현재 블록의 인트라 예측 모드로 선택한다. 이 경우, 상기 잔여 인트라 예측 모드들을 재배열한 후 수신된 예측 모드 인덱스에 대응하는 인덱스가 나타내는 인트라 예측 모드를 선택할 수도 있지만, 상기한 바와 같이, 현재 블록의 인트라 예측 모드 인덱스와 상기 MPM 그룹에 속하는 인트라 예측 모드번호를 낮은 모드부터 순차적으로 비교하여 현재 블록의 인트라 예측 모드를 결정할 수도 있다.
[방법 2]
아래의 방법들은 MPM 그룹을 구성하는 MPM 후보자의 수가 2, 3, 4인 경우에 모두 적용 가능하다.
현재 블록의 좌측 및 상측 후보자가 둘 다 방향성 모드인 경우
둘 다 방향성 모드인 경우에는 후보자들 사이의 각도가 소정 범위 이내(또는 그 사이의 방향성 모드의 수가 소정 개수 이내)인 경우에는 상기 방향성 모드에 인접한 미리 정해진 개수의 인트라 예측 모드들이 다른 방향성 모드들보다 작은 인덱스를 갖도록 재배열한다. 상기 소정 개수는 예측 블록의 크기에 따라 달라질 수 있다.
<2개의 방향성 모드가 동일한 경우>
두개의 방향성 모드가 동일한 경우에는 인접하는 방향성을 갖는 미리 정해진 개수의 인트라 예측 모드들에 작은 인덱스를 부여한다. 상기 미리 정해진 개수는 현재 블록의 크기에 따라 달라질 수 있다. 예를 들어, 현재 블록의 크기가 4x4인 경우에는 인접하는 2개 또는 4개의 인트라 예측 모드가 우선순위를 가질 수 있다. 현재블록의 크기가 8x8~32x32인 경우에는 4개 또는 8개의 인트라 예측 모드가 우선순위를 가질 수 있다.
예를 들어, 현재 블록의 인트라 예측 모드가 5, 예측 블록의 크기가 4x4, 미리 정해진 개수가 2인 경우에는 11, 12가 다른 잔여 방향성 모드들보다 낮은 인덱스를 가질 수 있다. 또한, 현재 블록의 인트라 예측 모드가 5, 예측 블록의 크기가 4x4, 미리 정해진 개수가 4인 경우에는 11, 12, 4, 1이 다른 잔여 방향성 모드들보다 낮은 인덱스를 가질 수 있다.
예를 들어, 현재 블록의 인트라 예측 모드가 5, 예측 블록의 크기가 8x8, 미리 정해진 개수가 4인 경우에는 20, 21, 11, 12가 다른 잔여 방향성 모드들보다 낮은 인덱스를 가질 수 있다. 다른 변형예들도 동일한 방식으로 인덱스를 부여한다.
또는 상기 방향성 모드를 기준으로 모든 방향성 모드들에 대해 동일한 방식을 적용할 수 있다.
비방향성 모드들은 가장 낮은 인덱스에 부여하거나, 상기 미리 정해진 개수 다음의 인덱스로 부여될 수 있다.
<2개의 방향성 모드의 각도가 소정 범위 이내인 경우>
두개의 방향성 모드의 각도가 소정 범위 이내인 경우에는 상기 방향성 모드들에 인접한 미리 정해진 개수의 인트라 예측 모드들이 다른 방향성 모드들보다 작은 인덱스를 가질 수 있다. 또는 각도가 아니라 그 사이에 존재하는 방향성 인트라 예측 모드의 수가 소정 개수 이내인 것으로 기준을 정할수도 있다. 이하, 개수로 설명한다. 상기 개수는 예측 블록의 크기에 따라 달라질 수 있다.
먼저, 두개의 방향성 모드들 사이에 유효한 인트라 예측 모드가 존재하지 않는 경우(서로 인접한 경우)에 대해 설명한다.
4x4에 대해 상기 두개의 방향성 모드들 사이에 유효한 개수가 존재하지 않으면, 각각의 모드에 가장 인접한 1개 또는 2개의 방향성 모드들에 우선순위가 부여될 수 있다. 예를 들어, 상기 2개의 방향성 모드가 5, 11일 때에는 4, 12또는 4, 12, 15, 1에 다른 방향성 모드들보다 작은 인덱스를 부여할 수 있다.
8x8~32x32의 경우에는 가장 인접한 2개 또는 4개의 방향성 모드들에 우선순위가 부여될 수 있다. 예를 들어, 상기 2개의 방향성 모드가 5, 20일때에는 11, 21, 19, 12또는 11, 21, 19, 12, 4, 22, 27, 1에 다른 방향성 모드들보다 작은 인덱스를 부여할 수 있다.
또는 상기 방향성 모드를 기준으로 모든 방향성 모드들에 대해 동일한 방식을 적용할 수 있다.
비방향성 모드들은 가장 낮은 인덱스에 부여하거나, 상기 미리 정해진 개수 다음의 인덱스로 부여될 수 있다.
<2개의 방향성 모드들 사이에 1개의 인트라 예측 모드가 존재하는 경우>
다음으로, 2개의 방향성 모드들 사이에 1개의 인트라 예측 모드가 존재하는 경우에는 그 사이의 방향성 모드가 다른 방향성 모드들보다 낮은 인덱스를 갖는다. 그리고, 각 방향으로 인접한 미리 정해진 개수의 방향성 인트라 예측 모드가 다른 방향성 인트라 예측 모드보다 낮은 인덱스를 갖도록 설정한다. 상기 미리 정해진 개수는 4x4의 경우에는 1개 또는 2개이고, 8x8~32x32의 경우에는 2개 또는 4개로 설정할 수 있다.
또는 상기 방향성 모드를 기준으로 모든 방향성 모드들에 대해 동일한 방식을 적용할 수 있다.
비방향성 모드들은 가장 낮은 인덱스에 부여하거나, 상기 미리 정해진 개수 다음의 인덱스로 부여될 수 있다.
<2개의 방향성 모드들 사이에 2개 의 인트라 예측 모드가 존재하는 경우>
2개의 방향성 모드들 사이에 2개의 인트라 예측 모드가 존재하는 경우에는 그 사이의 방향성 모드들이 다른 방향성 모드들보다 낮은 인덱스를 갖는다. 그리고, 각 방향으로 인접한 미리 정해진 개수의 방향성 인트라 예측 모드가 다른 방향성 인트라 예측 모드보다 낮은 인덱스를 갖도록 설정한다. 상기 미리 정해진 개수는 4x4의 경우에는 1개, 8x8~32x32의 경우에는 2개로 설정할 수 있다.
또는 상기 방향성 모드를 기준으로 모든 방향성 모드들에 대해 동일한 방식을 적용할 수 있다.
비방향성 모드들은 가장 낮은 인덱스에 부여하거나, 상기 미리 정해진 개수 다음의 인덱스로 부여될 수 있다.
상기 2개의 방향성 모드들 사이에 N개의 인트라 예측 모드가 존재하는 경우, 상기 N이 미리 정해진 개수보다 작을 경우에는 상기 N개의 방향성 모드들이 다른 방향성 모드들보다 낮은 인덱스를 가질 수 있다.. 상기 미리 정해진 개수는 4x4의 경우에는 1~3개, 8x8~32x32의 경우에는 2~6개로 설정할 수 있다.
둘 다 방향성 모드인 경우이고, 후보자들 사이의 각도가 소정 범위 이내(또는 그 사이의 방향성 모드의 수가 소정 개수 이내)가 아닌 경우에는 다음의 방법 중 하나를 이용한다.
(1) 상기 도면의 인트라 예측 모드 인덱스에 따라 재정렬한다. 이때, DC 모드와 planar 모드에 가장 작은 인덱스를 부여할 수 있다. 즉, DC에 0, planar에 1 또는 planar에 0, DC에 1을 부여할 수 있다. 또는 planar, DC, V, H순, DC, Planar, V, H순, 도는 V, H, DC, Planar 순으로 배열하고 나머지는 순차적으로 배열할 수 있다.
(2) 각 후보자들에 인접한 소정 개수의 방향성 모드에 작은 인덱스를 부여할 수 있다. 이 경우, 각 후보자마다 소정 개수의 방향성 모드들 선택하고, 각 후보자마다 하나씩 교차적으로 나열하여 인덱스를 부여할 수 있다.
(3) 또는 상기 방향성 모드를 기준으로 모든 방향성 모드들에 대해 동일한 방식을 적용할 수 있다.
(4) 비방향성 모드들은 가장 낮은 인덱스에 부여하거나, 상기 미리 정해진 개수 다음의 인덱스로 부여될 수 있다.
좌측 및 상측 MPM 후보자들 중 하나만 방향성 모드인 경우
둘 중 하나가 방향성 모드이고, 다른 하나가 비방향성 모드인 경우에는, 비방향성 모드에 가장 작은 인덱스(0)를 부여하고, 나머지들은 상기 도면의 인트라 예측 모드 인덱스에 따라 재정렬할 수 있다.
둘 중 하나가 방향성 모드이고, 다른 하나가 비방향성 모드인 경우에는, 비방향성 모드에 가장 작은 인덱스(0)를 부여하고, 상기 하나의 방향성 모드를 중심으로 소정 개수에 적은 인덱스를 부여할 수 있다. 나머지들은 상기 도면의 인트라 예측 모드 인덱스에 따라 재정렬할 수 있다. 또는 상기 방향성 모드를 기준으로 모든 방향성 모드들에 대해 동일한 방식을 적용할 수 있다.
좌측 및 상측 MPM 후보자가 둘 다 비방향성 모드인 경우
둘다 비방향성 모드인 경우에는, 방향성 모드들을 상기 도면의 인트라 예측 모드 인덱스에 따라 재정렬할 수 있다.
3. 현재 블록의 크기와 변환 크기가 다를 경우의 예측 블록 생성 방법
현재 블록의 인트라 예측 정보와 현재 블록의 변환 크기를 나타내는 정보를 이용하여 예측 블록의 크기를 결정한다.
구체적으로, 현재 블록이 복수개의 서브블록으로 나누어져 변환 부호화 되었는지를 나타내는 정보(변환 크기 정보로서, 예를 들면, split_transform_flag 또는 SDIP 여부를 나타내는 정보)에 따라 인트라 예측블록을 생성하는 과정이 달라지게 된다. 즉, 상기 변환 크기 정보가 현재 블록의 크기와 동일함을 나타내면, 현재 블록의 크기로 인트라 예측 블록이 생성된다. 그러나, 상기 변환 크기 정보가 현재 블록의 크기 보다 작은 복수개의 서브블록으로 나누어져 변환 부호화 되었음을 나타내면, 상기 각 서브블록별로 미리 정해진 순서에 따라 인트라 예측 블록을 생성한다. 상기 미리 정해진 순서는 서브블록의 형태에 따라 달라질 수 있다. 예를 들어, 서브블록이 정사각형이면 래스터 스캔 순서 또는 지그재그 스캔 순서일 수 있다. 서브블록이 직사각형이면 위에서 아래 또는 왼쪽에서 오른쪽 순서일 수 있다.
그리고, 상기 순서에 따라 미리 정해진 순서로 각 서브블록의 예측 블록을 생성한 후, 잔차 신호를 복원하여 복원 서브블록을 생성한다. 그리고, 그 다음의 서브블록의 예측블록을 생성하기 위해 상기 복원된 서브블록에 속하는 참조화소들을 이용한다. 이를 통해 보다 정확한 인트라 예측을 수행할 수 있다. 상기 각 서브블록에 속하는 인트라 예측 모드는 서브블록의 형태에 따라 다르게 설정될 수 있다. 예를 들어, 정사각형의 서브블록들은 동일한 인트라 예측 모드가 할당될 수도 있고, 직사각형의 서브블록들은 각 서브블록들 별로 독립적으로 인트라 예측 모드가 할당될 수도 있다. 이 경우 각 직사각형의 서브블록들별로 인트라 예측 모드를 복원하는 과정을 거쳐야 한다. 직사각형의 서브블록들의 경우에도 동일한 인트라 예측 모드가 할당될 수도 있다.
4. 현재 블록의 인트라 예측 모드에 따라 참조 화소 생성여부 판단 및 참조화소 생성
현재 블록 또는 서브블록의 인트라 예측을 위한 참조화소들을 유도한다. 상기 참조화소들은 인접하는 복원된 블록 또는 서브블록들의 복원화소들이다. 상기 참조화소들은 도 8에 도시된 바와 같이, 현재 블록 또는 서브블록의 크기를 NxM으로 가정할 경우, (x=0,..2N-1, y=-1) 위치의 2N개의 상측 참조화소들(영역 A)과, (x=-1, y=0,..2M-1) 위치의 좌측 참조화소들(영역 L) 및 (x=-1, y=-1) 위치의 코너화소를 포함한다.
현재 블록 또는 서브블록에 인접한 상기 참조화소들의 위치에 대응하는 화소들을 포함하는 상측 또는 좌측 블록들이 존재하지 않는 경우에는 상기 위치에 대응하는 참조화소들은 유효하지 않은 것으로 판단한다. 또한, 인트라 예측에 의해 복원된 화소들만을 이용하도록 하는 모드(즉, constrained_intra_prediction 모드)의 경우에는 상기 참조화소들의 위치에 대응하는 화소들을 포함하는 상측 또는 좌측 블록들이 인트라 예측에 의해 복원된 화소가 아니면(즉, 인터 예측에 의해 복원된 화소이면), 상기 위치의 화소들도 유효하지 않는 것으로 판단한다.
한편, 현재 블록의 인트라 예측모드가 특정 모드인 경우에 예측된 블록의 필터링 여부를 결정하는 플래그를 설정할 수 있다. 상기 플래그는 상기 복원된 현재 블록 또는 서브 블록의 인트라 예측 모드 및 상기 인트라 예측모드에 따라 상기 블록 또는 서브블록의 예측블록의 필터링을 위해 사용되는 참조화소들의 유효성 여부에 따라 결정될 수 있다. 예를 들어, 현재 블록 또는 서브블록의 인트라 예측 모드가 DC인 경우에는 (x=0,..N-1, y=-1) 위치의 N개의 상측 참조화소들과 (x=-1, y=0,..M-1) 위치의 좌측 참조화소들 및 (x=-1, y=-1) 위치의 코너화소 중 어느 하나라도 유효하지 않은 것으로 판단되는 경우에는 상기 DC 예측블록 필터링 플래그를 0으로 설정하여, 상기 DC 예측블록 생성시 필터링을 수행하지 않도록 할 수 있다. 그러나 DC 예측블록의 필터링을 위해 사용되는 참조화소들이 모두 유효한 경우에는 상기 프래그를 1로 설정하여 DC 예측블록 생성시 상기 참조화소들을 이용하여 예측 블록의 화소들중 상기 참조화소들에 인접한 화소들을 필터링할 수 있도록 할 수 있다.
마찬가지로, 현재 블록 또는 서브블록의 인트라 예측모드가 planar인 경우에는 planar 예측블록 필터링을 위해 사용되는 참조화소들, 즉, (x=0,..N-1, y=-1) 위치의 N개의 상측 참조화소들과 (x=-1, y=0,..M-1) 위치의 좌측 참조화소들 및 코너 예측화소 중 어느 하나라도 유효하지 않은 것으로 판단되는 경우에는 planar 예측블록 필터링 플래그를 0으로 설정하여, 상기 planar 예측블록 생성시 필터링을 수행하지 않도록 할 수 있다. 그러나 planar 예측블록 필터링을 위해 사용되는 참조화소들이 모두 유효한 경우에는 상기 플래그를 1로 설정하여 planar 예측블록 생성시 상기 참조화소들을 이용하여 예측 블록의 화소들 중 상기 참조화소들에 인접한 화소들을 필터링할 수 있도록 할 수 있다.
마찬가지로, 현재 블록 또는 서브블록의 인트라 예측모드가 vertical인 경우에는 vertical 예측 블록의 필터링을 위해 사용되는 참조화소들, 예를 들면, (x=-1, y=-1,…M-1)의 참조화소들 또는 (x=0, y=-1,…N-1)의 참조화소들 중 어느 하나로도 유효하지 않는 것으로 판단되는 경우에는 vertical 예측블록 필터링 플래그를 0으로 설정하여, vertical 예측블록 생성시 필터링을 수행하지 않도록 할 수도 있다. 또한, 현재 블록 또는 서브블록의 인트라 예측모드가 horizontal인 경우에는 horizontal 예측 블록의 필터링을 위해 사용되는 참조화소들, 예를 들면, (x=-1,…N-1, y=-1) 의 참조화소들 또는 (x=-1, y=0,…N-1)의 참조화소들 중 어느 하나로도 유효하지 않는 것으로 판단되는 경우에는 horizontal 예측블록 필터링 플래그를 0으로 설정하여, vertical 예측블록 생성시 필터링을 수행하지 않도록 할 수도 있다.
방향성 모드들 중 예측블록 필터링이 수행되는 인트라 예측모드들에 대해서도 예측 블록 필터링을 위해 사용되는 참조화소들의 유효성 여부에 따라 플래그값을 설정할 수도 있다.
위에서는 예측블록 필터링을 위해 사용되는 참조화소들 중 어느 하나라도 유효하지 않는 경우에 예측 블록 필터링 플래그를 0으로 설정하였으나, 상기 참조화소들 중 일부 또는 전부가 유효하지 않은 경우에 상기 플래그값을 0으로 설정할 수도 있다. 또한, 상기 플래그값의 설정여부는 인트라 예측 모드에 따라 예측블록이 필터링되는지 여부에 따라 결정될 수 있다. 또한, 상기 값들은 휘도 성분에 대해 적용한다.
색차 성분의 경우에도 현재 블록 또는 서브블록의 인트라 예측모드가 DC인 경우에 동일한 방식으로 예측블록 플래그의 설정여부를 결정할 수 있다. 또한, planar, vertical, horizontal 모드에서도 동일한 방식으로 결정될 수 있다. 색차 성분의 인트라 예측모드가 DM 모드(즉, 휘도 블록의 인트라 예측 모드와 동일)인 경우에는 휘도 성분에서의 방식과 동일한 방식으로 결정될 수 있다. 색차 성분의 인트라 예측 모드가 LM 모드인 경우에도 상기 플래그값을 설정할 수도 있다.
한편, 상기 현재 블록 또는 서브블록의 참조화소들 중 적어도 하나가 유효하지 않은 것으로 판단되는 경우에는 유효하지 않은 위치에 대응하는 참조화소를 생성한다. 여기서, 참조화소 생성 여부를 판단하기 위한 참조화소들은 2N+2M+1개의 참조화소들로 판단할 수도 있으며, 현재 블록의 인트라 예측 모드에 따라 예측 블록을 생성하는데 이용되는 참조화소들 중 적어도 하나가 유효하지 못한 경우에, 유효하지 않은 위치에 대응하는 참조화소들을 생성하는 것이 바람직하다. 한편, 색차 블록의 경우에도 동일한 방식으로 참조화소들의 생성여부를 결정할 수 있다.
상기한 유효성 판단의 결과, 유효하지 않은 위치에 대응하는 참조화소를 생성하는 것으로 판단되면, 다음의 방식들 중 하나로 참조화소를 생성한다.
모든 참조화소들이 유효하지 않은 것으로 판단되는 경우에는, 2 L-1 값으로 대체한다. 여기서 L은 휘도성분을 나타내는 위한 비트수이다.
유효하지 않은 참조화소 위치를 기준으로 한쪽 방향으로만 유효한 참조화소가 존재하는 경우에는 상기 유효한 참조화소 중 가장 가까운 위치에 있는 참조화소값으로 대체할 수 있다. 이 경우, 유효한 참조화소 중 가장 가까운 위치에 있는 적어도 2개 이상의 참조화소값을 이용하여 참조화소를 생성할 수도 있다.
유효하지 않은 참조화소 위치를 기준으로 유효한 참조화소가 양쪽방향 모두에 존재할 경우, 각각의 방향으로 가장 인접한 참조화소 2개의 평균값으로 대체할 수 있다. 또는 상기 생성될 참조화소의 위치에 따라 서로 다른 참조화소 2개에 서로 다른 가중치를 두어 참조화소를 생성할수도 있다. 이를 위해 선형 결합 방식을 이용할 수도 있다.
5. 현재 블록의 참조화소들을 스무딩(필터링)하는 단계
현재 블록 또는 서브블록의 복원된 인트라 예측 모드에 따라, 현재 블록 또는 서브블록의 참조화소를 적응적으로 필터링한다.
도 8를 참조하여, 참조화소 필터링 동작을 설명한다.
구체적으로, 현재 블록 또는 서브블록의 크기 및 인트라 예측 모드에 따라 적응적으로 참조화소들을 필터링한다.
현재 블록 또는 서브블록의 인트라 예측모드가 DC인 경우에는 참조화소들을 필터링하지 않는다. 방향성 모드들 중 수직(모드 1), 수평(모드 2)인 경우에는 참조 화소들에 필터를 적용하지 않는다. 그 이외의 방향성 모드들에 대해서는 적응적으로 참조 화소를 필터링한다. 또한, 현재 예측 유닛의 상측의 참조화소들 중 가장 오른쪽의 참조 화소(즉 (x=2N-1, y=-1)에 위치하는 참조 화소)와 현재 예측 유닛의 좌측의 참조 화소들 중 가장 아래쪽에 위치하는 참조 화소(즉 (x=-1, y=2N-1)에 위치하는 참조 화소) 필터링 하지 않고, 나머지 화소들은 이웃하는 2개의 화소들을 이용하여 필터링한다.
허용되는 가장 작은 크기(4x4)의 현재 블록 또는 서브블록의 경우에는 복잡도 감소를 위해 참조화소 필터링을 인트라 예측 모드에 관계없이 수행하지 않을 수도 있다.
상기 필터링은 참조화소들 사이의 화소값의 변화량을 스무딩(smoothing)하기 위한 것으로, low-pass filter를 적용한다. Low-pass filter는 3-tap 필터인 [1, 2, 1] 또는 5-tap 필터인 [1, 2, 4, 2, 1]일 수 있다.
동일한 인트라 예측모드가 허용되는 현재 블록 또는 서브블록의 크기들(예를 들어, 8x8~32x32)에 대해서는 상기 크기들이 커짐에 따라 더 많은 수의 인트라 예측 모드들에 대하여 참조화소들을 필터링한다. 구체적으로, 현재 블록 또는 서브블록의 크기에 따라, 상기 수평 또는 수직 모드 및 이에 인접한 미리 정해진 개수의 방향성 인트라 예측모드들에 대해서는 참조화소를 필터링하지 않을 수 있다. 상기 미리 정해진 개수는 0~7의 값을 가질 수 있다. 상기 미리 정해진 개수는 현재 블록 또는 서브블록의 크기가 커짐에 따라 감소한다.
6. 현재 블록 또는 서브블록의 예측블록을 생성하는 단계
현재 블록 또는 서브블록의 복원된 인트라 예측 모드에 따라, 참조화소들을 이용하여 현재 블록 또는 서브블록의 예측블록을 생성한다. 상기 참조화소들은 현재 블록 또는 서브블록의 크기 및 인트라 예측모드에 따라 적응적으로 필터링된 화소들일 수 있다.
DC 모드의 경우에는, 상기 참조화소의 유효성 검사결과 생성된 DC 예측블록 필터링 플래그의 값에 따라 예측 블록을 생성하는 방법을 달리할 수 있다. 즉, 상기 플래그값이 0이면 동일한 예측화소값을 갖는 예측 블록을 생성하고, 상기 플래그값이 1이면, 예측화소의 위치에 따라 예측화소의 생성방법이 달라질 수 있다.
구체적으로, 상기 플래그값이 0인 경우에는 (x=0,..N-1, y=-1) 위치의 N개의 상측 참조화소들과 (x=-1, y=0,..M-1) 위치의 좌측 참조화소들 및 (x=-1, y=-1) 위치의 코너화소의 평균값이 예측화소값이 된다. 그러나, 상기 플래그값이 1이면, 상기 참조화소들에 인접하지 않는 위치의 예측 화소값은 상기 평균값으로 설정될 수 있으나, 상기 참조화소들과 인접하는 위치의 예측 화소값은 상기 평균값과 인접하는 참조화소값이 가중평균을 이용하여 생성할 수 있다. 상기 가중평균은 적용 가능한 미리 정해진 크기보다 큰 현재 블록 또는 서브블록에 대해서는 적용하지 않을 수도 있다.
Planar 모드에서도, 상기 참조화소의 유효성 검사결과 생성된 Planar 예측블록 필터링 플래그의 값에 따라 예측 블록을 생성하는 방법을 달리할 수 있다. 즉, 상기 플래그값이 0이면 정해진 방식에 따라 결정된 예측화소값을 갖는 예측 블록을 생성하고, 상기 플래그값이 1이면, 예측화소의 위치에 따라 예측화소의 생성방법이 달라질 수 있다. 상기 플래그값이 1인 경우에는 상기 참조화소들에 인접하는 예측화소들에 대해서는 DC 모드와 동일한 방식의 가중평균으로 예측화소를 생성할 수 있다. 다만, 웨이팅이 달라질 수는 있다.
수직 모드(모드 번호 1)에서도, 상기 참조화소의 유효성 검사결과 생성된 vertical 예측블록 필터링 플래그의 값에 따라 예측 블록을 생성하는 방법을 달리할 수 있다. 즉, 상기 플래그값이 0이면 수직방향으로 참조화소를 복사한 값이 예측화소값이 된다. 그러나, 상기 플래그값이 1이면, 상기 현재 블록 또는 서브블록의 좌측 화소값에 인접한 화소들에 대해서는, 상기 복사한 값(또는 대응하는 수직방향의 참조화소값)에, 상기 현재 블록 또는 서브블록의 좌측 참조 화소값의 변화량의 일부를 반영하여 예측화소를 생성할 수 있다. 상기 변화량은 코너 참조화소와 상기 예측위치에 인접하는 참조화소 사이의 변화량을 나타낸다. 또는 상기 현재 블록 또는 서브블록의 좌측 화소값에 인접한 화소들에 대해서는 인접한 좌측 화소값과 상기 복사한 값과의 가중평균을 이용하여 예측화소를 생성할 수 있다.
수평모드들에 대해서도, 상기 수직모드와 방향만 틀릴 뿐, 동일한 방식으로 예측화소를 생성할 수 있다.
한편, 방향성 모드들의 경우에는 현재 블록 또는 서브블록의 크기 및 인트라 예측 모드에 따라 예측블록을 생성하는 방법이 달라질 수 있다. 방향성 모드들의 경우에도, 상기 참조화소의 유효성 검사결과 생성된 대응 예측블록 필터링 플래그의 값에 따라 예측 블록을 생성하는 방법을 달리할 수 있다. 즉, 상기 플래그값이 0이면 수직방향으로 참조화소를 복사한 값이 예측화소값이 된다. 그러나, 상기 플래그값이 1이면, 필터링에 사용될 참조화소들이 모두 유효한 경우에 적용할 수 있다. 이 경우, 다음의 방법들 중 하나가 적용될 수 있다.
[방법 1]
도 9에서와 같이, 검은 점으로 표시된 모드가 현재 블록 또는 서브블록의 크기에 따라 예측블록 생성시 참조화소와 예측화소값이 필터링되는 모드일 수 있다. 도면에서 보는 바와 같이, 블록의 크기가 커질수록 필터링 되는 모드 수가 커질 수 있다. 즉, 허용 가능한 모드수가 같은 경우에는 블록의 크기가 커질수록 모드 수가 커질 수 있다. 예를 들어, 32x32에서는 모든 인트라 예측 모드에 대해서 필터를 적용하고, 4x4에서는 방향성 모드들 중 수평 및 수직 모드에 대해서만 필터를 적용할 수 있다. 현재 블록 또는 서브블록의 크기에 따라, 수평 및 수직 모드와 그에 인접한 소정 개수의 인트라 예측 모드의 경우에 예측 블록이 필터링된다.
한편, 수직 모드의 우측에 위치하는 방향성 모드들(이하, 우상측 방향성 모드들이라고 함)과 수평 모드의 아래쪽에 위치하는 방향성 모드들(이하, 좌하측 방향성 모드들이라고 함)에 대해서는 상기한 방식과 동일 또는 유사한 방식을 적용하고, 상기 수직 모드의 좌측에 위치하는 방향성 모드들과, 상기 수평 모드의 위쪽에 위치하는 방향성 모드들에 대해서는 필터링을 수행하지 않을 수도 있다. 또는 상기 수직 모드의 좌측에 위치하는 방향성 모드들 중 미리 정해진 수만큼의 인트라 예측 모드에 대해서만 필터를 적용할수도 있다. 수평 모드의 위쪽에 위치하는 방향성 모드들 중 미리 정해진 수만큼의 인트라 예측 모드에 대해서만 필터를 적용할 수도 있다.
상기 내용들을 예시적으로 표로 나타내면 다음과 같다.
[방법 2]
도 10에서와 같이, 검은 점으로 표시된 모드가 현재 블록 또는 서브블록의 크기에 따라 예측블록 생성시 참조화소와 예측화소값이 필터링되는 모드이다. 상기 도면에서 보는 바와 같이, 블록의 크기가 커질수록 필터링 되는 모드 수가 커질 수 있다. 즉, 허용 가능한 모드수가 같은 경우에는 블록의 크기가 커질수록 모드 수가 커질 수 있다. 그러나, 수평 또는 수직 모드에 인접하지 않는 모드들(세모표시)에 대해서는 필터링 방법이 달라질 수 있다.
한편, 현재 블록 또는 서브블록의 크기가 커짐에 따라 참조화소를 이용하여 예측화소를 필터링하는 영역이 적응적으로 결정될 수 있다.
예를 들어, Vertical / Horizontal Mode일 때, 블록의 크기가 소정 크기 이하인 경우에는 참조화소에 인접한 첫번째 화소들만을 필터링할 수 있다. 그러나, 블록의 크기가 소정 크기보다 큰 경우에는 참조화소에 인접한 첫번째 화소들뿐만 아니라, 두번째 화소들도 필터링을 수행할 수 있다.
또한, 예측화소를 생성하는데 사용되는 참조화소들로부터 소정 거리 이상 떨어진 화소들에 대해서는 상기 참조화소에 인접한 첫번째 화소들뿐만 아니라, 두번째 및 그 이상의 화소들도 필터링을 할 수 있다. 즉, 상기 참조 화소들로부터 멀어질수록 필터링하는 영역이 같거나 증가하도록 할 수 있다.
또한, 예측화소를 생성하는데 사용되는 참조화소들로부터 소정 거리 이상 떨어진 화소들에 대해서는 필터계수를 달리할 수 있다. 즉, 참조화소들에 가중치를 더 부여할 있다. 즉, 상기 참조 화소들로부터 멀어질수록 참조화소에 부여하는 가중치를 같거나 증가하도록 할 수 있다.
상기 방식들은 방향성 모드들에 대해 모두 적용할 수 있다.
또한, 인트라 예측 모드에 따라, 필터링에 사용되는 참조화소의 위치를 달리 선택할 수 있다.
다음으로 인트라 예측 블록 생성장치에 대하여 설명한다. 도 11은 본 발명에 따른 복호화기에서의 인트라 예측 블록 생성 장치를 나타낸다.
1. 파싱부
파싱부는 인트라 예측 정보를 파싱한다. 인트라 예측 정보는 인트라 예측 모드 그룹 지시자와 예측모드 인덱스를 포함한다.
인트라 예측 모드 그룹 지시자는 현재 블록의 인트라 예측 모드가 MPM 그룹에 속하는지 MPM 이외의 그룹에 속하는지를 나타내는 플래그 정보일 수 있다. 또한, 상기 인트라 예측 모드 그룹 지시자는 현재 블록의 인트라 예측 모드가 3개 이상의 인트라 예측 그룹 중 어느 하나에 속하는지를 나타내는 정보일 수 있다.
예측모드 인덱스는 인트라 예측 모드 그룹 지시자가 나타내는 인트라 예측 모드 그룹 내에서의 특정 인트라 예측 모드를 나타내는 정보이다.
CAVLC가 적용된 경우, 상기 인트라 예측 모드 그룹 지시자는 unsigned integer의 형태로 수신하므로, 별도의 엔트로피 복호화를 할 필요가 없다. 그러나, 예측 모드 인덱스는 MPM 그룹에 속하는 경우에는 truncated Exp-Golomb code 또는 unsigned integer Exp-Golomb code 로 이진화된후 엔트로피 부호화되었으므로, 엔트로피 복호화를 수행하여 상기 Exp-Golomb code를 얻은 후에, 상기 예측모드 인덱스를 복원할 수 있다. 그러나, 예측 모드 인덱스는 MPM 그룹에 속하지 않는 경우에는 unsigned integer Exp-Golomb code 로 이진화된 후 엔트로피 부호화되었으므로, 엔트로피 복호화를 수행하여 상기 Exp-Golomb code 를 얻은 후에, 상기 예측모드 인덱스를 복원할 수 있다.
2. 예측모드 복호화부
예측모드 복호화부는 MPM 그룹 구성부, MPM 판단부, 재배열부, 선택부를 포함한다.
MPM 그룹 구성부(MPM 리스트 작성)
MPM 그룹은 현재 블록에 인접한 블록들의 인트라 예측 모드에 따라 적응적으로 결정된다. 상기 MPM 그룹은 2개의 인트라 예측 모드, 3개의 인트라 예측 모드, 또는 4개의 인트라 예측 모드로 구성될 수 있다.
먼저, MPM 그룹이 2개의 인트라 예측 모드, 즉 2개의 MPM 후보자로 구성되는 경우의 MPM 그룹 구성(MPM 리스트 작성) 에 대해 설명한다. 다음의 순서로 구성한다.
먼저, 현재 블록의 상측 및 좌측 블록의 인트라 예측 모드를 검사한다. 상기 현재 블록의 상측 또는 좌측 블록이 존재하지 않는 경우에는 인트라 예측 모드가 이용가능하지 않은 것으로 판단한다. 그러나, 상기 상측 또는 좌측 블록이 존재하되, 인트라 예측 부호화되지 않은 경우(즉, 인터 예측 부호화된 경우)에는, 상기 블록의 인트라 예측 모드를 DC 또는 Planar 모드로 설정한다. 상기 상측 또는 좌측 블록이 존재하고, 인트라 예측 모드가 존재하는 경우에는, 상기 인트라 예측 모드를 상기 블록의 인트라 예측 모드로 설정한다.
다음으로, 상기 상측 또는 좌측 블록의 인트라 예측 모드가 현재 블록의 허용 가능한 인트라 예측 모드수 보다 크거나 같으면, 상기 인트라 예측 모드를 현재 블록의 허용 가능한 인트라 예측 모드로 맵핑한다. 맵핑에 대한 구체적인 방법은 후술한다.
다음으로, MPM 리스트를 다음과 같은 방법으로 구성한다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드가 모두 존재하고, 서로 다른 경우에는 상기 상측 및 좌측 블록의 인트라 예측 모드 2개를 MPM후보자로 설정한다. 이 경우, 모드번호가 작은 인트라 예측 모드에 인덱스 0을 부여하고, 모드번호가 큰 인트라 예측 모드에 인덱스 1을 부여한다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드들 중 하나만이 존재하거나, 상기 상측 및 좌측 블록의 인트라 예측 모드가 동일한 경우에는 상기 인트라 예측 모드에 인덱스 0을 부여하고, 다음 중 하나의 방법으로 인덱스 1을 갖는 인트라 예측 모드를 추가한다.
① 상기 존재하는 하나가 DC가 아닌 경우에는 DC를 추가하고, DC인 경우에는 planar 또는 Vertical을 추가한다.
② 상기 존재하는 하나가 planar가 아닌 경우에는 planar를 추가하고, planar인 경우에는 DC 또는 Vertical을 추가한다.
③ 현재 블록의 코너 블록의 인트라 예측 모드를 추가할 수 있다. 코너 블록은 우상측 블록(C), 좌하측 블록(D), 또는 좌상측 블록(E) 중 어느 하나 일 수 있다. 상기 코너 블록을 미리 정해진 순서에 따라 유효한 하나를 MPM 후보자로 추가할 수 있다. 미리 정해진 순서는 C, D, E 또는 E, C, D 순서일 수 있다. 상기 코너 블록의 인트라 예측 모드는 상기 상측 또는 좌측의 유효한 인트라 예측 모드와 다른 모드로 선택된다.
좌측 블록이 복수개 존재하는 경우에는 위에서 아래 방향으로 스캔하여 유효한 첫번째 인트라 예측 모드를 좌측 인트라 예측 모드로 설정한다. 마찬가지로 상측 블록이 복수개 존재하는 경우에는 왼쪽에서 오른쪽으로 스캔하여 유효한 첫번째 인트라 예측 모드를 상측 인트라 예측 모드로 설정한다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드들 모두가 존재하지 않는 경우에는 다음의 하나의 방법을 이용한다.
① DC 및 planar 를 추가한다. 이 경우, DC에 인덱스 0을, planar에 인덱스 1을 할당하거나, planar에 인덱스 0을, DC에 인덱스 1을 할당할 수 있다.
② DC 및 Vertical을 추가한다.
③ Planar 및 Vertical을 추가한다.
④ 코너 블록 중 하나가 이용 가능하면, 이용 가능한 하나와 DC 또는 planar를 추가한다. 이용 가능한 하나는 미리 정해진 순서로 결정한다. 이용 가능한 하나가 DC이면 planar를 추가하고, 이용 가능한 하나가 planar이면 DC를 추가한다.
⑤ 코너 블록 중 2개가 이용 가능하면, 이용 가능한 2개를 추가한다.
먼저, MPM 그룹이 3개의 인트라 예측 모드, 즉 3개의 MPM 후보자로 구성되는 경우의 MPM 그룹 구성(MPM 리스트 작성) 에 대해 설명한다.
먼저, 현재 블록의 상측 및 좌측 블록의 인트라 예측 모드를 검사한다. 상기 현재 블록의 상측 또는 좌측 블록이 존재하지 않는 경우에는 인트라 예측 모드가 이용 가능하지 않은 것으로 판단한다. 그러나, 상기 상측 및 좌측 블록이 존재하되, 인트라 예측 부호화되지 않은 경우(즉, 인터 예측 부호화된 경우)에는, 상기 블록의 인트라 예측 모드를 DC 또는 Planar 모드로 설정하거나, 이용 가능하지 않는 것으로 설정할 수 있다. 상기 상측 및 좌측 블록이 존재하고, 인트라 예측 모드가 존재하는 경우에는, 상기 인트라 예측 모드를 상기 블록의 인트라 예측 모드로 설정한다.
다음으로, 상기 상측 또는 좌측 블록의 인트라 예측 모드가 현재 블록의 허용 가능한 인트라 예측 모드수 보다 크거나 같으면, 상기 인트라 예측 모드를 현재 블록의 허용 가능한 인트라 예측 모드로 맵핑한다. 맵핑에 대한 구체적인 방법은 후술한다.
다음으로, MPM 리스트를 다음과 같은 방법으로 구성한다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드가 모두 존재하고 서로 다른 경우 에는 상기 두개의 인트라 예측 모드에 인덱스 0, 인덱스 1을 부여한다. 이 경우, 모드 번호가 작은 인트라 예측 모드에 인덱스 0을, 큰 인트라 예측 모드에 인덱스 1을 부여할 수 있다. 그리고, 하나의 인트라 예측 모드를 인덱스 2를 갖는 MPM 후보자로 추가한다. 이 경우의 구체적 방법들은 다음과 같다.
상기 두 개의 인트라 예측 모드 중 하나가 비방향성 모드이고, 다른 하나가 방향성 모드인 경우에는 나머지 비방향성 모드를 추가할 수 있다. 예를 들어, 두 개의 인트라 예측 모드들 중 하나가DC이고, 다른 하나가 Planar가 아닌 경우에는 planar 를 MPM 후보자로 추가할 수 있다. 마찬가지로, 상기 두 개의 인트라 예측 모드 중 하나가 planar이고, 다른 하나가 DC가 아닌 경우에는 DC를 MPM 후보자로 추가할 수 있다. 한편, 상기 두 개의 인트라 예측 모드 중 하나가 비방향성 모드이고, 다른 하나가 방향성 모드인 경우에는 상기 방향성 모드에 인접한 방향성 모드들 중 하나(예를 들어, 인접한 복수개의 방향성 모드들 중 모드 번호가 특정값보다 작은 모드들 중 인접한 하나: 특정값은 9 또는 17)를 추가할 수도 있다. 예를 들어, 특정값이 9인 경우이고 방향성 모드가 11인 경우에는 인접한 19, 20, 4, 5 중에서 4, 5가 허용가능하고, 떨어진 거리도 같으므로 값이 낮은 4를 추가할 수도 있다.
상기 두 개의 인트라 예측 모드가 모두 비방향성 모드인 경우에는 vertical또는 horizontal 모드를 추가할 수 있다. Vertical을 추가하는 것이 더욱 바람직하다.
상기 두 개의 인트라 예측 모드가 모두 방향성 모드인 경우에는 다음의 2가지 방법 중 하나를 사용할 수 있다. (1) 먼저, 상기 방향성 모드들 사이의 방향성 모드를 추가하는 방법이다. 예를 들어, 상기 방향성 모드들이 소정각도 이내 또는 상기 방향성 모드들 사이의 허용 가능한 방향성 모드들의 수가 소정개수 이내이면, 상기 방향성 모드들 사이의 방향성 모드들 중 하나를 추가한다. 상기 소정 개수는 33개의 방향성 모드를 기준으로 할 때, 1~4의 값을 가질 수 있다. 이 경우, 추가되는 방향성 모드는 중간에 위치한 방향성 모드일 수도 있고, 인트라 예측 모드번호가 작은 모드일 수도 있다. (2) 다음으로, 비방향성 모드를 추가하는 방법이다. 이 경우에는 DC 또는 planar를 추가할 수 있다.
다음으로, 현재 블록의 상측 및 좌측 블록의 인트라 예측 모드들 중 하나만이 존재하는 경우에는 상기 인트라 예측 모드에 인덱스 0을 부여한다. 그리고, 2개의 인트라 예측 모드들을 인덱스 1, 2를 갖는 MPM 후보자로 추가한다. 이 경우의 구체적 방법들은 다음과 같다.
먼저, 상기 존재하는 하나의 인트라 예측 모드가 비방향성 모드(DC 또는 planar)이면, 다른 하나의 비방향성 모드와 vertical을 추가할 수 있다. 또는 vertical과 horizontal을 추가할 수 있다.
그러나, 상기 존재하는 하나의 인트라 예측 모드가 방향성 모드이면, 2개의 비방향성 모드를 추가할 수 있다.
상기 방식들은 상측 및 좌측 블록의 인트라 예측 모드가 동일한 경우에도 적용할 수 있다. 그러나, 좌측 및 상측 블록의 인트라 예측모드가 동일하고, 상기 인트라 예측 모드가 방향성 모드인 경우, 인접하는 2개의 방향성 인트라 예측 모드를 추가할 수도 있다. 또는, DC와 가장 인접한 방향성 모드들 중 주어진 모드 번호가 작은 인트라 예측 모드가 추가될 수 있다.
다음으로, 현재 블록의 상측 및 좌측 블록의 인트라 예측 모드들 중 모두가 존재하지 않는 경우에는 3개의 MPM 후보자가 추가될 수 있다. DC, planar, Vertical(또는 planar, DC, vertical) 순서로 추가되거나, DC, Vertical, horizontal 순서로 추가될 수 있다.
다음으로, MPM 그룹이 4개의 인트라 예측 모드, 즉 4개의 MPM 후보자로 구성되는 경우의 MPM 그룹 구성(MPM 리스트 작성) 에 대해 설명한다.
먼저, 현재 블록의 상측 및 좌측 블록의 인트라 예측 모드를 검사한다. 상기 현재 블록의 상측 또는 좌측 블록이 존재하지 않는 경우에는 인트라 예측 모드가 이용 가능하지 않은 것으로 판단한다. 그러나, 상기 상측 및 좌측 블록이 존재하되, 인트라 예측 부호화되지 않은 경우(즉, 인터 예측 부호화된 경우)에는, 상기 블록의 인트라 예측 모드를 DC 또는 Planar 모드로 설정하거나, 이용 가능하지 않는 것으로 설정할 수 있다. 상기 상측 및 좌측 블록이 존재하고, 인트라 예측 모드가 존재하는 경우에는, 상기 인트라 예측 모드를 상기 블록의 인트라 예측 모드로 설정한다.
다음으로, 상기 상측 또는 좌측 블록의 인트라 예측 모드가 현재 블록의 허용 가능한 인트라 예측 모드수 보다 크거나 같으면, 상기 인트라 예측 모드를 현재 블록의 허용 가능한 인트라 예측 모드로 맵핑한다. 맵핑에 대한 구체적인 방법은 후술한다.
다음으로, MPM 리스트를 다음과 같은 방법으로 구성한다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드가 모두 존재하고 서로 다른 경우에는 상기 두개의 인트라 예측 모드에 인덱스 0, 인덱스 1을 부여한다. 여기서, 모드번호가 작은 인트라 예측 모드에 인덱스 0을, 모드번호가 큰 인트라 예측모드에 인덱스 1을 부여할 수 있다. 그리고, 2개의 인트라 예측 모드를 MPM 후보자로 추가한다.
둘 다 방향성 모드인 경우에는 2개의 비방향성 모드(DC, Planar)를 추가한다.
둘 중 하나는 방향성 모드이고, 다른 하나는 비방향성 모드인 경우에는 나머지 하나의 비방향성 모드와 하나의 방향성 모드가 추가될 수 있다. 이 경우, 추가되는 방향성 모드는 상기 방향성 모드에 인접한 인트라 예측 모드 중 하나(특정방향의 하나로서 예를 들어, 좌측/아래쪽 또는 모드번호가 낮은 모드)와, 수평 또는 수직 모드 중 하나가 추가될 수 있다. 또는 상기 방향성 모드에 인접한 2개의 방향성 모드가 추가될 수도 있다. 이 경우, 추가되는 방향성 모드들은 좌, 우(또는 상, 하)측에 인접한 1개씩이 추가될 수 있다.
둘 다 비방향성 모드인 경우에는 Vertical, Horizontal 순으로 추가할 수 있다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드들이 같은 경우에는 상기 인트라 예측 모드에 인덱스 0을 부여한다. 그리고, 3개의 모드를 MPM 후보자로 추가한다.
상기 인트라 예측 모드가 비방향성 모드(DC 또는 planar)이면, 나머지 하나의 비방향성 모드에 인덱스 1을 부여하고 와 2개의 방향성 모드가 추가된다. 추가되는 방향성 모드들은 vertical, horizontal 순 또는 그 역순으로 추가될 수 있다.
상기 인트라 예측 모드가 방향성 모드이면, 1개의 비방향성 모드(planar 또는 DC)가 모드에 인덱스 1을 부여하고, 허용 가능한 방향성 모드들 중 상기 방향성 모드에 가장 인접한 방향성을 갖는 2개의 인트라 예측 모드가 추가될 수 있다. 이 경우, 7에 가장 인접한 방향성 모드들 중 하나는 10가 될 수 있고, 그 역도 마찬가지로 성립한다. 또는 2개의 비방향성 모드에 인덱스 1, 2를 부여하고, 상기 방향성 모드에 인접한 모드들 중 하나(좌측/아래쪽 또는 모드번호가 낮은 모드)에 인덱스 3을 추가할 수 있다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드들 중 하나만이 존재하는 경우에는 다음의 하나의 방법을 이용한다.
상기 인트라 예측 모드가 비방향성 모드이면, 다른 하나의 비방향성 모드와, Vertical, Horizontal순 또는 그 역순으로 추가할 수 있다.
상기 인트라 예측 모드가 방향성 모드이면, (1) 2개의 비방향성 모드가 추가되고, 상기 방향성 모드에 가장 인접한 방향성을 갖는 2개의 인트라 예측 모드 중 주어진 모드 번호가 작은 인트라 예측 모드 또는 특정 방향, 예를 들어, 좌측(아래쪽)의 인트라 예측 모드가 추가될 수 있다. 또는 (2) DC또는 planar가 추가되고, 상기 방향성 모드에 가장 인접한 방향성을 갖는 2개의 인트라 예측 모드가 추가될 수 있다.
현재 블록의 상측 및 좌측 블록의 인트라 예측 모드들 모두 존재하지 않는 경우에는 2개의 비방향성 모드와 2개의 방향성 모드가 추가될 수 있다. 이 경우, 2개의 비방향성 모드에 인덱스 0, 1을 부여하고, 2개의 방향성 모드에 인덱스 2, 3을 부여할 수 있다. 예를 들어, DC, planar, V, H순서로 인덱스를 부여하거나, Planar, DC, V, H순서로 인덱스를 부여하거나, DC, V, H, planar 순으로 추가될 수 있다.
상기한 방법들은 인트라 예측모드의 수가 18 또는 35인 경우, 또는 상기 블록의 크기가 4x4~32x32인 경우에 적용하는 것을 전제로 한 것이다.
맵핑부
MPM 그룹 구성부(=MPM 리스트 작성)는 맵핑부를 포함한다. 맵핑부에서 상기한 인트라 예측 모드의 맵핑을 수행한다.
현재 블록의 유효한 상측 또는 좌측 블록의 인트라 예측 모드의 모드 번호가 현재 블록의 허용된 인트라 예측 모드가 아닌 경우에는 상기 유효한 상측 또는 좌측 인트라 예측 모드를 현재 블록의 허용 가능한 인트라 예측 모드로 맵핑한다. 즉, 현재 블록의 유효한 상측 또는 좌측 블록의 인트라 예측 모드의 모드번호가 현재 블록의 인트라 예측 모드수보다 크거나 같은 경우(planar 모드를 0으로 둘 경우)에는 상기 유효한 상측 또는 좌측 블록의 인트라 예측 모드를 현재 블록의 허용 가능한 인트라 예측 모드로 맵핑한다.
이 경우, 현재 블록의 크기가 64x64인 경우에는 4개의 인트라 예측 모드로 맵핑한다. 상기 4개의 인트라 예측 모드는 planar mode(0), vertical mode(1), horizontal mode(2), DC mode(3)이다. 따라서, 좌측 또는 상측 블록의 인트라 예측 모드가 방향성 예측 모드이고, vertical mode 및 horizontal mode가 아닌 경우에는 상기 좌측 및 상측 블록의 방향성 인트라 예측 모드를 상기 4개의 인트라 예측 모드들 중 하나로 맵핑한다.
(제1 실시예)
도 4에 도시된 바와 같이, vertical mode(1)에 인접한 제1 개수의 인트라 예측 모드들(예를 들어, 12, 22, 23, 13, 24, 6)은 Vertical mode(1)로 맵핑되고, horizontal mode(2)에 인접한 제2개수의 인트라 예측 모드들(예를 들어, 8, 29, 16, 30, 31, 17, 32, 9)은 horizontal mdoe(2)로 맵핑된다. 그리고, 나머지는 DC(3)로 맵핑될 수 있다. 이 경우, Vertical과 horizontal의 우선순위를 달리하기 위해 상기 제1 개수 및 제2 개수는 다를 수 있다. 또한, 상기 Vertical mode를 중심으로 양방향으로 동일하지 않은 수의 인접 방향성 모드들이 상기 vertical mode로 맵핑될 수 있다. horizontal mode를 중심으로 양방향으로 동일한 개수가 horizontal mode로 맵핑될 수 있다. 상기 DC 모드 대신에 planar 모드로 맵핑될 수도 있다.
(제2 실시예)
V, H로 매핑되는 방향성 모드들은 제1 실시예와 동일할 수 있다. 그러나, 나머지 방향성 모드들은 DC 및 Planar 중 어느 하나로만 맵핑 되는 것이 아니라, 일부는 DC로, 나머지 모두는 Planar로 맵핑될 수 있다.
예를 들어, 도 5에 도시된 바와 같이, 25, 14, 26, 7 및 33, 18, 34, 10은 DC로 맵핑되고, 나머지 모드들(4, 19, 11, 20, 4, 21, 27, 15, 28)은 planar로 맵핑될 수 있다. 또한, 상기 DC와 Planar로 맵핑되는 모드들이 바뀌어질 수도 있다. 즉, 25, 14, 26, 7 및 33, 18, 34, 10은 Planar로 맵핑되고, 나머지 모드들(4, 19, 11, 20, 4, 21, 27, 15, 28)은 DC로 맵핑될 수 있다
(제3 실시예)
V, H로 매핑되는 방향성 모드들이 제1, 2 실시예와 다를 수 있다. 예를 들어, 도 6에 도시된 바와 같이, V에 맵핑되는 방향성 모드 또는 모드들의 수를 상기 제1, 2 실시예와 달리할 수 있다. 예를 들어, 5, 21, 12, 22, 23, 13, 24, 6을 V에 맵핑시키거나, 21, 12, 22, 23, 13, 24를 V에 맵핑시키거나, 12, 22, 23, 13를 V에 맵핑 시킬 수 있다. V에 맵핑되는 V의 양방향 방향성 모드들의 수가 동일할 수도 있다.
마찬가지로, 도 6에 도시된 바와 같이, H에 맵핑되는 방향성 모드들의 수를 상기 제1, 2실시예와 달리할 수 있다. 예를 들어, 8, 29, 16, 30, 31, 17, 32, 9를 H에 맵핑시키거나, 29, 16, 30, 31, 17, 32를 H에 맵핑시키거나, 16, 30, 31, 17를 H에 맵핑시킬 수 있다.
상기 V와 H 중에 V에 우선권을 주기 위해, V에 맵핑되는 방향성 모드들의 수를 H에 맵핑되는 방향성 모드들의 수보다 크게 할 수 있다. 마찬가지로, H에 우선권을 주기 위해 반대로도 할 수 있으나, 전자가 바람직하다.
그러나, 나머지 방향성 모드들은 DC 및 Planar 중 어느 하나로만 맵핑 되는 것이 아니라, 일부는 DC로, 나머지 모두는 Planar로 맵핑될 수 있다.
예를 들어, 도 6에 도시된 바와 같이, 25, 14, 26, 7 및 33, 18, 34, 10은 DC로 맵핑되고, 나머지 모드들(4, 19, 11, 20, 4, 21, 27, 15, 28)은 planar로 맵핑될 수 있다. 또한, 상기 DC와 Planar로 맵핑되는 모드들이 바뀌어질 수도 있다. 즉, 25, 14, 26, 7 및 33, 18, 34, 10은 Planar로 맵핑되고, 나머지 모드들(4, 19, 11, 20, 4, 21, 27, 15, 28)은 DC로 맵핑될 수 있다
(제4 실시예)
모드번호 4~17은 V, H, DC중 하나로 맵핑(제1예와 동일), 모드번호 18 이상은 planar mode로 맵핑될 수 있다.
현재 블록의 크기가 4x4인 경우에는 좌측 또는 상측 블록의 인트라 예측 모드가 방향성 예측 모드이고, 현재 블록의 허용 가능한 인트라 예측 모드에 포함되지 않는 경우에는 현재 블록의 허용 가능한 인트라 예측 모드들 중 어느 하나로 맵핑될 수 있다. 이 경우, 0~9번 모드에 우선권을 부여하기 위해 상기 0~9(10개) 중 하나로 맵핑될 수 있다.
(제1 실시예)
도 7에 도시된 바와 같이, vertical mode(1), horizontal mode(2), 모드번호 3, 4, 5, 7, 8, 0에 가장 인접하는 각 방향의 하나의 모드들은 상기 모드들로 맵핑될 수 있다. 구체적으로, 22, 23은 1에, 20, 21은 5에, 27, 19는 4, 24, 25는 6에, 28, 29는 8에 30, 31은 2에, 32, 33은 9에 맵핑될 수 있다. 그리고, 26는 7에 맵핑될 수 있다. 그리고, 나머지의 모드들, 즉, 모드번호 10, 11, 12, 13, 14, 15, 16, 17, 18은 DC 또는 planar중 어느 하나로 맵핑될 수 있다.
또한, 상기 나머지의 모드들은 DC또는 Planar에 맵핑될 수 있다. 예를 들어, 13, 14, 17, 18, 34, 10은 Planar에 11, 12, 15, 16은 DC에 맵핑될 수 있다. 또는 반대로, 13, 14, 17, 18, 34, 10은 DC에 11, 12, 15, 16은 Planar에 맵핑될 수 있다. 후자가 더 바람직하다.
(제 2 실시예)
제1 실시예와 동일하게 맵핑시키되, 모드번호 10을 7에 맵핑시킬 수 있다. 이 경우, DC 또는 Planar에 맵핑되는 모드들은 10을 제외하고는 제1 실시예와 동일할 수 있다.
(제 3 실시예)
복잡도를 줄이기 위해 10~17은 DC 모드에, 18~34은 Planar 모드에 맵핑시킬 수도 있다. 또는 그 역으로도 할 수 있다.
예측모드 복원부
수신된 상기 인트라 예측 모드 그룹 지시자가 현재 블록의 인트라 예측 모드가 MPM 그룹에 속하는 것을 나타내는지 여부를 판단한다.
<속하는 경우>
속하는 것을 나타내면, MPM 그룹내의 예측모드 인덱스가 나타내는 인트라 예측 모드를 현재 블록의 인트라 예측 모드로 결정된다. 상기 인트라 예측 모드 그룹 지시자는 현재 블록의 인트라 예측 모드가 MPM 그룹에 속하는지 MPM 이외의 그룹에 속하는지를 나타내는 플래그 정보일 수 있다.
<속하지 않는 경우>
그러나, 속하지 않는 것을 나타내면, MPM 그룹을 제외한 현재 블록의 허용된 인트라 예측 모드들(remaining intra prediction mode:잔여 인트라 예측 모드) 중 예측 모드 인덱스가 나타내는 인트라 예측 모드를 현재 블록의 인트라 예측 모드로 결정된다.
MPM 그룹이 2개의 인트라 예측 모드로 구성되는 경우
먼저, 상기 MPM 그룹에 속하는 2개의 인트라 예측 모드 중, 모드번호가 작은 인트라 예측 모드의 모드번호와 수신되어 복원된 예측 모드 인덱스를 비교한다. 비교결과, 복원된 예측 모드 인덱스가 상기 모드번호가 작은 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 MPM 그룹에 속하는 2개의 인트라 예측 모드 중, 모드번호가 큰 인트라 예측 모드의 모드번호가 수신되어 상기 예측 모드 인덱스를 비교한다. 비교결과, 상기 예측 모드 인덱스가 상기 모드번호가 큰 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 예측 모드 인덱스 값과 대응하는(동일한 값의 모드번호를 갖는) 인트라 예측 모드를 현재 블록의 인트라 예측 모드로 결정한다.
MPM 그룹이 3개의 인트라 예측 모드로 구성되는 경우
먼저, 상기 MPM 그룹에 속하는 3개의 인트라 예측 모드 중, 모드번호가 가장 작은 인트라 예측 모드의 모드번호와 수신되어 복원된 예측 모드 인덱스를 비교한다. 비교결과, 복원된 예측 모드 인덱스가 상기 모드번호가 가장 작은 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 MPM 그룹에 속하는 3개의 인트라 예측 모드 중, 모드번호가 두번째로 작은 인트라 예측 모드의 모드번호와 상기 예측 모드 인덱스를 비교한다. 비교결과, 상기 예측 모드 인덱스가 상기 모드번호가 두번째로 작은 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 MPM 그룹에 속하는 2개의 인트라 예측 모드 중, 모드번호가 가장 큰 인트라 예측 모드의 모드번호와 상기 예측 모드 인덱스를 비교한다. 비교결과, 상기 예측 모드 인덱스가 상기 모드번호가 가장 큰 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 예측 모드 인덱스 값과 대응하는(동일한 값의 모드번호를 갖는) 인트라 예측 모드를 현재 블록의 인트라 예측 모드로 결정한다.
MPM 그룹이 4개의 인트라 예측 모드로 구성되는 경우
먼저, 상기 MPM 그룹에 속하는 4개의 인트라 예측 모드 중, 모드번호가 가장 작은 인트라 예측 모드의 모드번호와 수신되어 복원된 예측 모드 인덱스를 비교한다. 비교결과, 복원된 예측 모드 인덱스가 상기 모드번호가 가장 작은 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 MPM 그룹에 속하는 4개의 인트라 예측 모드 중, 모드번호가 두번째로 작은 인트라 예측 모드의 모드번호와 상기 예측 모드 인덱스를 비교한다. 비교결과, 상기 예측 모드 인덱스가 상기 모드번호가 두번째로 작은 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 MPM 그룹에 속하는 4개의 인트라 예측 모드 중, 모드번호가 세번째로 작은 인트라 예측 모드의 모드번호와 상기 예측 모드 인덱스를 비교한다. 비교결과, 상기 예측 모드 인덱스가 상기 모드번호가 세번째로 작은 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 MPM 그룹에 속하는 4개의 인트라 예측 모드 중, 모드번호가 가장 큰 인트라 예측 모드의 모드번호와 상기 예측 모드 인덱스를 비교한다. 비교결과, 상기 예측 모드 인덱스가 상기 모드번호가 가장 큰 인트라 예측 모드의 모드번호보다 크거나 같으면, 상기 예측 모드 인덱스 값을 1만큼 증가시킨다. 그렇지 않을 경우에는 예측 모드 인덱스 값을 유지한다.
다음으로, 상기 예측 모드 인덱스 값과 대응하는(동일한 값의 모드번호를 갖는) 인트라 예측 모드를 현재 블록의 인트라 예측 모드로 결정한다
재배열부
인트라 예측 모드 복호화부는 재배열부를 포함할 수도 있다.
현재 블록의 인트라 예측 모드가 잔여 인트라 예측 모드들 중 하나인 경우, 상기 인트라 예측 모드번호가 MPM 그룹의 구성에 따라 적응적으로 바뀔 수 있다. 즉, MPM에 속하는 인트라 예측 모드들을 제외한 잔여 인트라 예측 모드가 일정한 순서로 재배열되었을 때의 인덱스가 예측 모드 인덱스로 설정된다. 따라서, 수신된 예측 모드 인덱스 및 MPM 그룹에 속하는 인트라 예측 모드들에 따라 적응적으로 잔여 인트라 예측 모드들을 재배열한 후, 상기 예측 모드 인덱스가 나타내는 현재 블록의 인트라 예측 모드를 잔여 인트라 예측 모드들에서 선택한다.
이 경우, 상기 재배열부는 다음과 같은 방법으로 잔여 인트라 예측 모드를 재배열할 수 있다.
[방법 1]
현재 블록의 허용된 인트라 예측 모드들 중에서 MPM 그룹에 속하는 인트라 예측 모드를 제외한 잔여 인트라 예측 모드들을 재배열하고, 상기 수신된 예측 모드 인덱스에 대응하는 인덱스가 나타내는 인트라 예측 모드를 현재 블록의 인트라 예측 모드로 선택한다. 이 경우, 상기 잔여 인트라 예측 모드들을 재배열한 후 수신된 예측 모드 인덱스에 대응하는 인덱스가 나타내는 인트라 예측 모드를 선택할 수도 있지만, 상기한 바와 같이, 현재 블록의 인트라 예측 모드 인덱스와 상기 MPM 그룹에 속하는 인트라 예측 모드번호를 낮은 모드부터 순차적으로 비교하여 현재 블록의 인트라 예측 모드를 결정할 수도 있다.
[방법 2]
아래의 방법들은 MPM 그룹을 구성하는 MPM 후보자의 수가 2, 3, 4인 경우에 모두 적용 가능하다.
현재 블록의 좌측 및 상측 후보자가 둘 다 방향성 모드인 경우
둘 다 방향성 모드인 경우에는 후보자들 사이의 각도가 소정 범위 이내(또는 그 사이의 방향성 모드의 수가 소정 개수 이내)인 경우에는 상기 방향성 모드에 인접한 미리 정해진 개수의 인트라 예측 모드들이 다른 방향성 모드들보다 작은 인덱스를 갖도록 재배열한다. 상기 소정 개수는 예측 블록의 크기에 따라 달라질 수 있다.
<2개의 방향성 모드가 동일한 경우>
두개의 방향성 모드가 동일한 경우에는 인접하는 방향성을 갖는 미리 정해진 개수의 인트라 예측 모드들에 작은 인덱스를 부여한다. 상기 미리 정해진 개수는 현재 블록의 크기에 따라 달라질 수 있다. 예를 들어, 현재 블록의 크기가 4x4인 경우에는 인접하는 2개 또는 4개의 인트라 예측 모드가 우선순위를 가질 수 있다. 현재블록의 크기가 8x8~32x32인 경우에는 4개 또는 8개의 인트라 예측 모드가 우선순위를 가질 수 있다.
예를 들어, 현재 블록의 인트라 예측 모드가 5, 예측 블록의 크기가 4x4, 미리 정해진 개수가 2인 경우에는 11, 12가 다른 잔여 방향성 모드들보다 낮은 인덱스를 가질 수 있다. 또한, 현재 블록의 인트라 예측 모드가 5, 예측 블록의 크기가 4x4, 미리 정해진 개수가 4인 경우에는 11, 12, 4, 1이 다른 잔여 방향성 모드들보다 낮은 인덱스를 가질 수 있다.
예를 들어, 현재 블록의 인트라 예측 모드가 5, 예측 블록의 크기가 8x8, 미리 정해진 개수가 4인 경우에는 20, 21, 11, 12가 다른 잔여 방향성 모드들보다 낮은 인덱스를 가질 수 있다. 다른 변형예들도 동일한 방식으로 인덱스를 부여한다.
또는 상기 방향성 모드를 기준으로 모든 방향성 모드들에 대해 동일한 방식을 적용할 수 있다.
비방향성 모드들은 가장 낮은 인덱스에 부여하거나, 상기 미리 정해진 개수 다음의 인덱스로 부여될 수 있다.
<2개의 방향성 모드의 각도가 소정 범위 이내인 경우>
두개의 방향성 모드의 각도가 소정 범위 이내인 경우에는 상기 방향성 모드들에 인접한 미리 정해진 개수의 인트라 예측 모드들이 다른 방향성 모드들보다 작은 인덱스를 가질 수 있다. 또는 각도가 아니라 그 사이에 존재하는 방향성 인트라 예측 모드의 수가 소정 개수 이내인 것으로 기준을 정할수도 있다. 이하, 개수로 설명한다. 상기 개수는 예측 블록의 크기에 따라 달라질 수 있다.
먼저, 두개의 방향성 모드들 사이에 유효한 인트라 예측 모드가 존재하지 않는 경우(서로 인접한 경우)에 대해 설명한다.
4x4에 대해 상기 두개의 방향성 모드들 사이에 유효한 개수가 존재하지 않으면, 각각의 모드에 가장 인접한 1개 또는 2개의 방향성 모드들에 우선순위가 부여될 수 있다. 예를 들어, 상기 2개의 방향성 모드가 5, 11일 때에는 4, 12또는 4, 12, 15, 1에 다른 방향성 모드들보다 작은 인덱스를 부여할 수 있다.
8x8~32x32의 경우에는 가장 인접한 2개 또는 4개의 방향성 모드들에 우선순위가 부여될 수 있다. 예를 들어, 상기 2개의 방향성 모드가 5, 20일때에는 11, 21, 19, 12또는 11, 21, 19, 12, 4, 22, 27, 1에 다른 방향성 모드들보다 작은 인덱스를 부여할 수 있다.
또는 상기 방향성 모드를 기준으로 모든 방향성 모드들에 대해 동일한 방식을 적용할 수 있다.
비방향성 모드들은 가장 낮은 인덱스에 부여하거나, 상기 미리 정해진 개수 다음의 인덱스로 부여될 수 있다.
<2개의 방향성 모드들 사이에 1개의 인트라 예측 모드가 존재하는 경우>
다음으로, 2개의 방향성 모드들 사이에 1개의 인트라 예측 모드가 존재하는 경우에는 그 사이의 방향성 모드가 다른 방향성 모드들보다 낮은 인덱스를 갖는다. 그리고, 각 방향으로 인접한 미리 정해진 개수의 방향성 인트라 예측 모드가 다른 방향성 인트라 예측 모드보다 낮은 인덱스를 갖도록 설정한다. 상기 미리 정해진 개수는 4x4의 경우에는 1개 또는 2개이고, 8x8~32x32의 경우에는 2개 또는 4개로 설정할 수 있다.
또는 상기 방향성 모드를 기준으로 모든 방향성 모드들에 대해 동일한 방식을 적용할 수 있다.
비방향성 모드들은 가장 낮은 인덱스에 부여하거나, 상기 미리 정해진 개수 다음의 인덱스로 부여될 수 있다.
<2개의 방향성 모드들 사이에 2개 의 인트라 예측 모드가 존재하는 경우>
2개의 방향성 모드들 사이에 2개의 인트라 예측 모드가 존재하는 경우에는 그 사이의 방향성 모드들이 다른 방향성 모드들보다 낮은 인덱스를 갖는다. 그리고, 각 방향으로 인접한 미리 정해진 개수의 방향성 인트라 예측 모드가 다른 방향성 인트라 예측 모드보다 낮은 인덱스를 갖도록 설정한다. 상기 미리 정해진 개수는 4x4의 경우에는 1개, 8x8~32x32의 경우에는 2개로 설정할 수 있다.
또는 상기 방향성 모드를 기준으로 모든 방향성 모드들에 대해 동일한 방식을 적용할 수 있다.
비방향성 모드들은 가장 낮은 인덱스에 부여하거나, 상기 미리 정해진 개수 다음의 인덱스로 부여될 수 있다.
상기 2개의 방향성 모드들 사이에 N개의 인트라 예측 모드가 존재하는 경우, 상기 N이 미리 정해진 개수보다 작을 경우에는 상기 N개의 방향성 모드들이 다른 방향성 모드들보다 낮은 인덱스를 가질 수 있다.. 상기 미리 정해진 개수는 4x4의 경우에는 1~3개, 8x8~32x32의 경우에는 2~6개로 설정할 수 있다.
둘 다 방향성 모드인 경우이고, 후보자들 사이의 각도가 소정 범위 이내(또는 그 사이의 방향성 모드의 수가 소정 개수 이내)가 아닌 경우에는 다음의 방법 중 하나를 이용한다.
(1) 상기 도면의 인트라 예측 모드 인덱스에 따라 재정렬한다. 이때, DC 모드와 planar 모드에 가장 작은 인덱스를 부여할 수 있다. 즉, DC에 0, planar에 1 또는 planar에 0, DC에 1을 부여할 수 있다. 또는 planar, DC, V, H순, DC, Planar, V, H순, 도는 V, H, DC, Planar 순으로 배열하고 나머지는 순차적으로 배열할 수 있다.
(2) 각 후보자들에 인접한 소정 개수의 방향성 모드에 작은 인덱스를 부여할 수 있다. 이 경우, 각 후보자마다 소정 개수의 방향성 모드들 선택하고, 각 후보자마다 하나씩 교차적으로 나열하여 인덱스를 부여할 수 있다.
(3) 또는 상기 방향성 모드를 기준으로 모든 방향성 모드들에 대해 동일한 방식을 적용할 수 있다.
(4) 비방향성 모드들은 가장 낮은 인덱스에 부여하거나, 상기 미리 정해진 개수 다음의 인덱스로 부여될 수 있다.
좌측 및 상측 MPM 후보자들 중 하나만 방향성 모드인 경우
둘 중 하나가 방향성 모드이고, 다른 하나가 비방향성 모드인 경우에는, 비방향성 모드에 가장 작은 인덱스(0)를 부여하고, 나머지들은 상기 도면의 인트라 예측 모드 인덱스에 따라 재정렬할 수 있다.
둘 중 하나가 방향성 모드이고, 다른 하나가 비방향성 모드인 경우에는, 비방향성 모드에 가장 작은 인덱스(0)를 부여하고, 상기 하나의 방향성 모드를 중심으로 소정 개수에 적은 인덱스를 부여할 수 있다. 나머지들은 상기 도면의 인트라 예측 모드 인덱스에 따라 재정렬할 수 있다. 또는 상기 방향성 모드를 기준으로 모든 방향성 모드들에 대해 동일한 방식을 적용할 수 있다.
좌측 및 상측 MPM 후보자가 둘 다 비방향성 모드인 경우
둘다 비방향성 모드인 경우에는, 방향성 모드들을 상기 도면의 인트라 예측 모드 인덱스에 따라 재정렬할 수 있다.
3. 인트라 예측 단위 결정부
인트라 예측 단위 결정부는 현재 블록의 변환 크기 정보를 기초로 인트라 예측 단위를 결정한다.
구체적으로, 현재 블록이 복수개의 서브블록으로 나누어져 변환 부호화 되었는지를 나타내는 정보(변환 크기 정보로서, 예를 들면, split_transform_flag 또는 SDIP 여부를 나타내는 정보)에 따라 인트라 예측블록을 생성하는 과정이 달라지게 된다. 즉, 상기 변환 크기 정보가 현재 블록의 크기와 동일함을 나타내면, 현재 블록의 크기로 인트라 예측 블록이 생성된다. 그러나, 상기 변환 크기 정보가 현재 블록의 크기 보다 작은 복수개의 서브블록으로 나누어져 변환 부호화 되었음을 나타내면, 상기 각 서브블록별로 미리 정해진 순서에 따라 인트라 예측 블록을 생성한다. 상기 미리 정해진 순서는 서브블록의 형태에 따라 달라질 수 있다. 예를 들어, 서브블록이 정사각형이면 래스터 스캔 순서 또는 지그재그 스캔 순서일 수 있다. 서브블록이 직사각형이면 위에서 아래 또는 왼쪽에서 오른쪽 순서일 수 있다.
그리고, 상기 순서에 따라 미리 정해진 순서로 각 서브블록의 예측 블록을 생성한 후, 잔차 신호를 복원하여 복원 서브블록을 생성한다. 그리고, 그 다음의 서브블록의 예측블록을 생성하기 위해 상기 복원된 서브블록에 속하는 참조화소들을 이용한다. 이를 통해 보다 정확한 인트라 예측을 수행할 수 있다. 상기 각 서브블록에 속하는 인트라 예측 모드는 서브블록의 형태에 따라 다르게 설정될 수 있다. 예를 들어, 정사각형의 서브블록들은 동일한 인트라 예측 모드가 할당될 수도 있고, 직사각형의 서브블록들은 각 서브블록들 별로 독립적으로 인트라 예측 모드가 할당될 수도 있다. 이 경우 각 직사각형의 서브블록들별로 인트라 예측 모드를 복원하는 과정을 거쳐야 한다. 직사각형의 서브블록들의 경우에도 동일한 인트라 예측 모드가 할당될 수도 있다.
4. 참조화소 유효성 판단부 , 필터링 플래그 설정부 , 참조화소 생성부
현재 블록 또는 서브블록의 인트라 예측을 위한 참조화소들을 유도한다. 상기 참조화소들은 인접하는 복원된 블록 또는 서브블록들의 복원화소들이다. 상기 참조화소들은 도 7에 도시된 바와 같이, 현재 블록 또는 서브블록의 크기를 NxM으로 가정할 경우, (x=0,..2N-1, y=-1) 위치의 2N개의 상측 참조화소들(영역 A)과, (x=-1, y=0,..2M-1) 위치의 좌측 참조화소들(영역 L) 및 (x=-1, y=-1) 위치의 코너화소를 포함한다.
참조화소 유효성 판단부는 현재 블록 또는 서브블록의 인트라 예측을 위한 참조화소들의 유효성을 판단한다. 상기 참조화소들은 인접하는 복원된 블록 또는 서브블록들의 복원화소들이다. 상기 참조화소들은 도 8에 도시된 바와 같이, 현재 블록 또는 서브블록의 크기를 NxM으로 가정할 경우, (x=0,..2N-1, y=-1) 위치의 2N개의 상측 참조화소들(영역 A)과, (x=-1, y=0,..2M-1) 위치의 좌측 참조화소들(영역 L) 및 (x=-1, y=-1) 위치의 코너화소를 포함한다.
현재 블록 또는 서브블록에 인접한 상기 참조화소들의 위치에 대응하는 화소들을 포함하는 상측 또는 좌측 블록들이 존재하지 않는 경우에는 상기 위치에 대응하는 참조화소들은 유효하지 않은 것으로 판단한다. 또한, 인트라 예측에 의해 복원된 화소들만을 이용하도록 하는 모드(즉, constrained_intra_prediction 모드)의 경우에는 상기 참조화소들의 위치에 대응하는 화소들을 포함하는 상측 또는 좌측 블록들이 인트라 예측에 의해 복원된 화소가 아니면(즉, 인터 예측에 의해 복원된 화소이면), 상기 위치의 화소들도 유효하지 않는 것으로 판단한다.
필터링 플래그 설정부는, 현재 블록의 인트라 예측모드가 특정 모드인 경우에 예측된 블록의 필터링 여부를 결정하는 플래그를 설정할 수 있다. 상기 플래그는 상기 복원된 현재 블록 또는 서브 블록의 인트라 예측 모드 및 상기 인트라 예측모드에 따라 상기 블록 또는 서브블록의 예측블록의 필터링을 위해 사용되는 참조화소들의 유효성 여부에 따라 결정될 수 있다. 예를 들어, 현재 블록 또는 서브블록의 인트라 예측 모드가 DC인 경우에는 (x=0,..N-1, y=-1) 위치의 N개의 상측 참조화소들과 (x=-1, y=0,..M-1) 위치의 좌측 참조화소들 및 (x=-1, y=-1) 위치의 코너화소 중 어느 하나라도 유효하지 않은 것으로 판단되는 경우에는 상기 DC 예측블록 필터링 플래그를 0으로 설정하여, 상기 DC 예측블록 생성시 필터링을 수행하지 않도록 할 수 있다. 그러나 DC 예측블록의 필터링을 위해 사용되는 참조화소들이 모두 유효한 경우에는 상기 프래그를 1로 설정하여 DC 예측블록 생성시 상기 참조화소들을 이용하여 예측 블록의 화소들중 상기 참조화소들에 인접한 화소들을 필터링할 수 있도록 할 수 있다.
마찬가지로, 현재 블록 또는 서브블록의 인트라 예측모드가 planar인 경우에는 planar 예측블록 필터링을 위해 사용되는 참조화소들, 즉, (x=0,..N-1, y=-1) 위치의 N개의 상측 참조화소들과 (x=-1, y=0,..M-1) 위치의 좌측 참조화소들 및 코너 예측화소 중 어느 하나라도 유효하지 않은 것으로 판단되는 경우에는 planar 예측블록 필터링 플래그를 0으로 설정하여, 상기 planar 예측블록 생성시 필터링을 수행하지 않도록 할 수 있다. 그러나 planar 예측블록 필터링을 위해 사용되는 참조화소들이 모두 유효한 경우에는 상기 프래그를 1로 설정하여 planar 예측블록 생성시 상기 참조화소들을 이용하여 예측 블록의 화소들 중 상기 참조화소들에 인접한 화소들을 필터링할 수 있도록 할 수 있다.
마찬가지로, 현재 블록 또는 서브블록의 인트라 예측모드가 vertical인 경우에는 vertical 예측 블록의 필터링을 위해 사용되는 참조화소들, 예를 들면, (x=-1, y=-1,…M-1)의 참조화소들 또는 (x=0, y=-1,…N-1)의 참조화소들 중 어느 하나로도 유효하지 않는 것으로 판단되는 경우에는 vertical 예측블록 필터링 플래그를 0으로 설정하여, vertical 예측블록 생성시 필터링을 수행하지 않도록 할 수도 있다. 또한, 현재 블록 또는 서브블록의 인트라 예측모드가 horizontal인 경우에는 horizontal 예측 블록의 필터링을 위해 사용되는 참조화소들, 예를 들면, (x=-1,…N-1, y=-1) 의 참조화소들 또는 (x=-1, y=0,…N-1)의 참조화소들 중 어느 하나로도 유효하지 않는 것으로 판단되는 경우에는 horizontal 예측블록 필터링 플래그를 0으로 설정하여, vertical 예측블록 생성시 필터링을 수행하지 않도록 할 수도 있다.
방향성 모드들 중 예측블록 필터링이 수행되는 인트라 예측모드들에 대해서도 예측 블록 필터링을 위해 사용되는 참조화소들의 유효성 여부에 따라 플래그값을 설정할 수도 있다.
위에서는 예측블록 필터링을 위해 사용되는 참조화소들 중 어느 하나라도 유효하지 않는 경우에 예측 블록 필터링 플래그를 0으로 설정하였으나, 상기 참조화소들 중 일부 또는 전부가 유효하지 않은 경우에 상기 플래그값을 0으로 설정할 수도 있다. 또한, 상기 플래그값의 설정여부는 인트라 예측 모드에 따라 예측블록이 필터링되는지 여부에 따라 결정될 수 있다. 또한, 상기 값들은 휘도 성분에 대해 적용한다.
색차 성분의 경우에도 현재 블록 또는 서브블록의 인트라 예측모드가 DC인 경우에 동일한 방식으로 예측블록 플래그의 설정여부를 결정할 수 있다. 또한, planar, vertical, horizontal 모드에서도 동일한 방식으로 결정될 수 있다. 색차 성분의 인트라 예측모드가 DM 모드(즉, 휘도 블록의 인트라 예측 모드와 동일)인 경우에는 휘도 성분에서의 방식과 동일한 방식으로 결정될 수 있다. 색차 성분의 인트라 예측 모드가 LM 모드인 경우에도 상기 플래그값을 설정할 수도 있다.
그러나, 복잡도 감소를 위해서, 상기 예측블록 필터링을 위한 필터링 플래그를 모든 모드에 대해 적용하지 않을 수도 있다.
참조화소 생성부는, 상기 현재 블록 또는 서브블록의 참조화소들 중 적어도 하나가 유효하지 않은 것으로 판단되는 경우에는 유효하지 않은 위치에 대응하는 참조화소를 생성한다. 여기서, 참조화소 생성 여부를 판단하기 위한 참조화소들은 2N+2M+1개의 참조화소들로 판단할 수도 있으며, 현재 블록의 인트라 예측 모드에 따라 예측 블록을 생성하는데 이용되는 참조화소들 중 적어도 하나가 유효하지 못한 경우에, 유효하지 않은 위치에 대응하는 참조화소들을 생성하는 것이 바람직하다. 한편, 색차 블록의 경우에도 동일한 방식으로 참조화소들의 생성여부를 결정할 수 있다.
상기한 유효성 판단의 결과, 유효하지 않은 위치에 대응하는 참조화소를 생성하는 것으로 판단되면, 다음의 방식들 중 하나로 참조화소를 생성한다.
[방법 1]
모든 참조화소들이 유효하지 않은 것으로 판단되는 경우에는, 2L-1 값으로 대체한다. 여기서 L은 휘도성분을 나타내는 위한 비트수이다.
유효하지 않은 참조화소 위치를 기준으로 한쪽 방향으로만 유효한 참조화소가 존재하는 경우에는 상기 유효한 참조화소 중 가장 가까운 위치에 있는 참조화소값으로 대체할 수 있다. 이 경우, 유효한 참조화소 중 가장 가까운 위치에 있는 적어도 2개 이상의 참조화소값을 이용하여 참조화소를 생성할 수도 있다.
유효하지 않은 참조화소 위치를 기준으로 유효한 참조화소가 양쪽방향 모두에 존재할 경우, 각각의 방향으로 가장 인접한 참조화소 2개의 평균값으로 대체할 수 있다. 또는 상기 생성될 참조화소의 위치에 따라 서로 다른 참조화소 2개에 서로 다른 가중치를 두어 참조화소를 생성할수도 있다. 이를 위해 선형 결합 방식을 이용할 수도 있다.
5. 참조화소 필터링부
참조화소 필터링부는 , 현재 블록 또는 서브블록의 복원된 인트라 예측 모드에 따라, 현재 블록 또는 서브블록의 참조화소를 적응적으로 필터링한다 .
구체적으로, 현재 블록 또는 서브블록의 크기 및 인트라 예측 모드에 따라 적응적으로 참조화소들을 필터링한다 .
현재 블록 또는 서브블록의 인트라 예측모드가 DC 인 경우에는 참조화소들을 필터링하지 않는다. 방향성 모드들 중 수직( 모드 1), 수평( 모드 2)인 경우에는 참조 화소들에 필터를 적용하지 않는다. 그 이외의 방향성 모드들에 대해서는 적응적으로 참조 화소를 필터링한다 . 또한, 현재 예측 유닛의 상측의 참조화소들 중 가장 오른쪽의 참조 화소(즉 (x=2N-1, y=-1)에 위치하는 참조 화소)와 현재 예측 유닛의 좌측의 참조 화소들 중 가장 아래쪽에 위치하는 참조 화소(즉 (x=-1, y=2N-1)에 위치하는 참조 화소) 필터링 하지 않고, 나머지 화소들은 이웃하는 2개의 화소들을 이용하여 필터링한다 .
허용되는 가장 작은 크기(4x4)의 현재 블록 또는 서브블록의 경우에는 복잡도 감소를 위해 참조화소 필터링을 인트라 예측 모드에 관계없이 수행하지 않을 수도 있다.
상기 필터링은 참조화소들 사이의 화소값의 변화량을 스무딩(smoothing)하기 위한 것으로, low - pass filter 를 적용한다. Low - pass filter 는 3- tap 필터인 [1, 2, 1] 또는 5- tap 필터인 [1, 2, 4, 2, 1]일 수 있다.
동일한 인트라 예측모드가 허용되는 현재 블록 또는 서브블록의 크기들(예를 들어, 8x8~32x32)에 대해서는 상기 크기들이 커짐에 따라 더 많은 수의 인트라 예측 모드들에 대하여 참조화소들을 필터링한다 . 구체적으로, 현재 블록 또는 서브블록의 크기에 따라, 상기 수평 또는 수직 모드 및 이에 인접한 미리 정해진 개수의 방향성 인트라 예측모드들에 대해서는 참조화소를 필터링하지 않을 수 있다. 상기 미리 정해진 개수는 0~7의 값을 가질 수 있다. 상기 미리 정해진 개수는 현재 블록 또는 서브블록의 크기가 커짐에 따라 감소한다.
6. 예측블록 생성부
예측블록 생성부는 , 현재 블록 또는 서브블록의 복원된 인트라 예측 모드에 따라, 참조화소들을 이용하여 현재 블록 또는 서브블록의 예측블록을 생성한다. 상기 참조화소들은 현재 블록 또는 서브블록의 크기 및 인트라 예측모드에 따라 적응적으로 필터링된 화소들일 수 있다.
DC 모드의 경우에는, 상기 참조화소의 유효성 검사결과 생성된 DC 예측블록 필터링 플래그의 값에 따라 예측 블록을 생성하는 방법을 달리할 수 있다. 즉, 상기 플래그값이 0이면 동일한 예측화소값을 갖는 예측 블록을 생성하고, 상기 플래그값이 1이면, 예측화소의 위치에 따라 예측화소의 생성방법이 달라질 수 있다.
구체적으로, 상기 플래그값이 0인 경우에는 (x=0,..N-1, y=-1) 위치의 N개의 상측 참조화소들과 (x=-1, y=0,..M-1) 위치의 좌측 참조화소들 및 (x=-1, y=-1) 위치의 코너화소의 평균값이 예측화소값이 된다. 그러나, 상기 플래그값이 1이면, 상기 참조화소들에 인접하지 않는 위치의 예측 화소값은 상기 평균값으로 설정될 수 있으나, 상기 참조화소들과 인접하는 위치의 예측 화소값은 상기 평균값과 인접하는 참조화소값이 가중평균을 이용하여 생성할 수 있다. 상기 가중평균은 적용 가능한 미리 정해진 크기보다 큰 현재 블록 또는 서브블록에 대해서는 적용하지 않을 수도 있다.
Planar 모드에서도 , 상기 참조화소의 유효성 검사결과 생성된 Planar 예측블록 필터링 플래그의 값에 따라 예측 블록을 생성하는 방법을 달리할 수 있다. 즉, 상기 플래그값이 0이면 정해진 방식에 따라 결정된 예측화소값을 갖는 예측 블록을 생성하고, 상기 플래그값이 1이면, 예측화소의 위치에 따라 예측화소의 생성방법이 달라질 수 있다. 상기 플래그값이 1인 경우에는 상기 참조화소들에 인접하는 예측화소들에 대해서는 DC 모드와 동일한 방식의 가중평균으로 예측화소를 생성할 수 있다. 다만, 웨이팅이 달라질 수는 있다.
수직 모드(모드 번호 1)에서도 , 상기 참조화소의 유효성 검사결과 생성된 vertical 예측블록 필터링 플래그의 값에 따라 예측 블록을 생성하는 방법을 달리할 수 있다. 즉, 상기 플래그값이 0이면 수직방향으로 참조화소를 복사한 값이 예측화소값이 된다. 그러나, 상기 플래그값이 1이면, 상기 현재 블록 또는 서브블록의 좌측 화소값에 인접한 화소들에 대해서는, 상기 복사한 값(또는 대응하는 수직방향의 참조화소값 )에, 상기 현재 블록 또는 서브블록의 좌측 참조 화소값의 변화량의 일부를 반영하여 예측화소를 생성할 수 있다. 상기 변화량은 코너 참조화소와 상기 예측위치에 인접하는 참조화소 사이의 변화량을 나타낸다. 또는 상기 현재 블록 또는 서브블록의 좌측 화소값에 인접한 화소들에 대해서는 인접한 좌측 화소값과 상기 복사한 값과의 가중평균을 이용하여 예측화소를 생성할 수 있다.
수평모드들에 대해서도, 상기 수직모드와 방향만 틀릴 뿐, 동일한 방식으로 예측화소를 생성할 수 있다.
한편, 방향성 모드들의 경우에는 현재 블록 또는 서브블록의 크기 및 인트라 예측 모드에 따라 예측블록을 생성하는 방법이 달라질 수 있다. 방향성 모드들의 경우에도, 상기 참조화소의 유효성 검사결과 생성된 대응 예측블록 필터링 플래그의 값에 따라 예측 블록을 생성하는 방법을 달리할 수 있다. 즉, 상기 플래그값이 0이면 수직방향으로 참조화소를 복사한 값이 예측화소값이 된다. 그러나, 상기 플래그값이 1이면, 필터링에 사용될 참조화소들이 모두 유효한 경우에 적용할 수 있다. 이 경우, 다음의 방법들 중 하나가 적용될 수 있다.
[방법 1]
도 9에서와 같이, 검은 점으로 표시된 모드가 현재 블록 또는 서브블록의 크기에 따라 예측블록 생성시 참조화소와 예측화소값이 필터링되는 모드일 수 있다. 도 9에서 보는 바와 같이, 블록의 크기가 커질수록 필터링 되는 모드 수가 커질 수 있다. 즉, 허용 가능한 모드수가 같은 경우에는 블록의 크기가 커질수록 모드 수가 커질 수 있다. 예를 들어, 32x32에서는 모든 인트라 예측 모드에 대해서 필터를 적용하고, 4x4에서는 방향성 모드들 중 수평 및 수직 모드에 대해서만 필터를 적용할 수 있다. 현재 블록 또는 서브블록의 크기에 따라, 수평 및 수직 모드와 그에 인접한 소정 개수의 인트라 예측 모드의 경우에 예측 블록이 필터링된다 .
한편, 수직 모드의 우측에 위치하는 방향성 모드들(이하, 우상측 방향성 모드들이라고 함)과 수평 모드의 아래쪽에 위치하는 방향성 모드들 (이하, 좌하측 방향성 모드들이라고 함)에 대해서는 상기한 방식과 동일 또는 유사한 방식을 적용하고, 상기 수직 모드의 좌측에 위치하는 방향성 모드들과 , 상기 수평 모드의 위쪽에 위치하는 방향성 모드들에 대해서는 필터링을 수행하지 않을 수도 있다. 또는 상기 수직 모드의 좌측에 위치하는 방향성 모드들 중 미리 정해진 수만큼의 인트라 예측 모드에 대해서만 필터를 적용할수도 있다. 수평 모드의 위쪽에 위치하는 방향성 모드들 중 미리 정해진 수만큼의 인트라 예측 모드에 대해서만 필터를 적용할 수도 있다.
상기 내용들을 예시적으로 표로 나타내면 다음과 같다.
[방법 2]
상기 도 10에서와 같이, 검은 점으로 표시된 모드가 현재 블록 또는 서브블록의 크기에 따라 예측블록 생성시 참조화소와 예측화소값이 필터링되는 모드이다 . 도 10에서 보는 바와 같이, 블록의 크기가 커질수록 필터링 되는 모드 수가 커질 수 있다. 즉, 허용 가능한 모드수가 같은 경우에는 블록의 크기가 커질수록 모드 수가 커질 수 있다. 그러나, 수평 또는 수직 모드에 인접하지 않는 모드들(세모표시)에 대해서는 필터링 방법이 달라질 수 있다.
한편, 현재 블록 또는 서브블록의 크기가 커짐에 따라 참조화소를 이용하여 예측화소를 필터링하는 영역이 적응적으로 결정될 수 있다.
예를 들어, Vertical / Horizontal Mode 일 때, 블록의 크기가 소정 크기 이하인 경우에는 참조화소에 인접한 첫번째 화소들만을 필터링할 수 있다. 그러나, 블록의 크기가 소정 크기보다 큰 경우에는 참조화소에 인접한 첫번째 화소들뿐만 아니라, 두번째 화소들도 필터링을 수행할 수 있다.
또한, 예측화소를 생성하는데 사용되는 참조화소들로부터 소정 거리 이상 떨어진 화소들에 대해서는 상기 참조화소에 인접한 첫번째 화소들뿐만 아니라, 두번째 및 그 이상의 화소들도 필터링을 할 수 있다. 즉, 상기 참조 화소들로부터 멀어질수록 필터링하는 영역이 같거나 증가하도록 할 수 있다.
또한, 예측화소를 생성하는데 사용되는 참조화소들로부터 소정 거리 이상 떨어진 화소들에 대해서는 필터계수를 달리할 수 있다. 즉, 참조화소들에 가중치를 더 부여할 있다. 즉, 상기 참조 화소들로부터 멀어질수록 참조화소에 부여하는 가중치를 같거나 증가하도록 할 수 있다.
상기 방식들은 방향성 모드들에 대해 모두 적용할 수 있다.
또한, 인트라 예측 모드에 따라, 필터링에 사용되는 참조화소의 위치를 달리 선택할 수 있다.
인트라 예측 잔여 블록 생성한다. 그리고, 생성된 예측 블록과 잔여 블록을 더하여 복원블록을 생성한다. 잔여 블록의 생성은 도 2에서 도시한 과정과 같다.
다만, 적용되는 역스캐닝 방식은 다음과 같이 변경될 수 있다.
[현재 변환 블록이 인트라 예측인 경우]
현재 변환 블록이 휘도 블록이면, 현재 변환 블록을 포함하는 현재 예측 블록(이하, 현재 블록이라 함)의 인트라 예측 모드와, 현재 변환 블록의 크기에 따라 적응적으로 스캔타입을 결정할 수 있다.
스캔 타입은 3가지 종류가 있다. 도 12에 도시된 바와 같이, 지그재그 스캔, 수평스캔, 수직 스캔이 존재할 수 있다. 여기서 변환 계수가 CABAC로 부호화/복호화된 경우에는 지그재그 스캔 대신에 diagonal 스캔을 수행할 수도 있다.
도 13는 현재 변환 블록의 크기와 인트라 예측 모드에 따른 스캔 타입을 나타내는 도면이다. 도 13에 도시된 바와 같이, 현재 변환 블록의 크기에 따라 수직모드(1)와 이에 인접한 미리 정해진 개수의 인트라 예측모드에 대해서는 수평스캔(○ 표시)을, 이에 수평모드(2)와 이에 인접한 미리 정해진 개수의 인트라 예측 모드에 대해서는 수직스캔(△ 표시)을 수행할 수 있다.
예를 들어, 변환 블록의 크기가 4x4인 경우에는 수직모드(1)와 이에 양방향으로 인접한 P개씩(예를 들어, 2개씩의 모드들:12, 13, 5, 6)에 대해서는 수평 스캔을 수행한다. 수직모드(2) 이에 양방향으로 인접한 2개씩의 모드들(16, 17, 8, 9)에 대해서는 수직 스캔을 수행할 수 있다.
변환 블록의 크기가 8x8인 경우에는 수직모드(1)와 이에 양방향으로 인접한 Q개씩의 모드들(예를 들어, 4개씩 : 22, 23, 12, 13, 21, 24, 5, 6)에 대해서는 수평 스캔을 수행한다. 그리고, 수직모드(1)와 이에 양방향으로 인접한 Q개씩의 모드들(예를 들어, 4개씩 : 30, 31, 16, 17, 29, 32, 8, 9) 에 대해서는 수직 스캔을 수행한다.
변환 블록의 크기가 16x16의 경우에는 수직모드(1)와 이에 양방향으로 인접한 R개씩의 모드들(예를 들어, 2개씩 : 22, 23, 12, 13 또는 1개씩:22, 23)에 대해서는 수평 스캔을 수행한다. 그리고, 수직모드(1)와 이에 양방향으로 인접한 R개씩의 모드들(예를 들어, 2개씩 : 30, 31, 16, 17 또는 1개씩:30, 31) 에 대해서는 수직 스캔을 수행한다.
변환 블록의 크기가 32x32인 경우에는 수직모드(1)와 이에 양방향으로 인접한 S개씩의 모드들(예를 들어, 1개씩 : 22, 23 또는 0개씩)에 대해서는 수평 스캔을 수행한다. 그리고, 수직모드(1)와 이에 양방향으로 인접한 S개씩의 모드들(예를 들어, 1개씩 : 30, 31 또는 0개씩) 에 대해서는 수직 스캔을 수행한다.
여기서, Q, R, S의 관계는 Q ≥ R ≥ S 인 것이 바람직하다. Q, R, S는 0 또는 양의 정수이다.
한편, 블록의 크기가 소정 크기보다 큰 경우에는 서브블록 단위로 스캔을 수행할 수 있다. 이 경우, last non-zero 변환 계수의 위치를 이용하여 스캔해야 할 서브블록들을 알 수 있게 된다. 또한, 각 서브블록들의 경우, 변환계수를 갖지 않는 경우에는 이를 나타내는 정보(1bit의 플래그)가 비트스트림으로 전송될 수 있다. 따라서, 상기 정보들을 이용하여 서브블록을 역스캔하여 변환 블록을 생성할 수 있다. 도 15는 상기 방식의 일예를 나타낸다.
[예 1]
블록의 크기가 미리 정해진 크기(예를 들어, 4x4 또는 8x8)보다 큰 경우에는 상기 블록을 복수개의 NxN의 서브블록으로 나누어 스캔할 수 있다. 여기서 N은 4 또는 8인 것이 바람직하다. 이 경우, 상기 인트라 예측 모드 및 변환 블록의 크기에 따라 결정되는 스캔패턴을 상기 서브블록 내의 변환 계수를 스캔할 때 사용할 수 있다. 서브블록들 간의 스캔 순서는 상기 결정되는 스캔패턴 또는 지그재그 스캔순서로 할 수 있다. 또는 래스터 스캔 순서로 할 수도 있다.
[예 2]
블록의 크기가 미리 정해진 크기보다 큰 경우에는 상기 변환 블록을 미리 정해진 개수(예를 들어, 4)의 서브블록으로 나누어 스캔할 수 있다. 이 경우, 상기 인트라 예측 모드 및 변환 블록의 크기에 따라 결정되는 스캔패턴을 상기 서브블록 내의 변환 계수를 스캔할 때 사용할 수 있다. 서브블록들 간의 스캔 순서는 상기 결정되는 스캔패턴 또는 지그재그 스캔순서로 할 수 있다. 또는 래스터 스캔 순서로 할 수도 있다.
한편, SDIP가 적용된 블록의 경우에는 변환 블록의 크기가 2NxhN 또는 hNx2N이된다. 이 경우의 각 변환 블록의 인트라 예측 모드 및 변환 블록의 크기에 따라 상기한 방식과 동일한 방식이 적용될 수도 있다. 이 경우, 변환 블록의 크기는 변환 계수의 수에 의해 결정된다. 즉, 2x8의 경우에는 4x4에 대응하고, 4x16의 경우에는 8x8이 적용될 수 있다. 그러나, 인트라 예측 모드에 동일한 상기 서브블록내의 서로 서브보다 큰 경우에는 인트라 예측 모드와 관계없이 변환 블록의 형태에 따라 스캔 패턴이 결정될 수도 있다. 즉, 2NxhN의 경우에는 수직 스캔을 수행하고, hNx2N의 경우에는 수평스캔을 수행하도록 결정할 수 있다.
한편, 블록 또는 서브블록 내의 변환계수의 스캔은 역방향으로 하는 것이 바람직하다. 이 경우, 서브블록들 간의 스캔은 정방향으로 또는 역방향으로 할 수 있다.
상기한, CABAC의 경우에는 상기한 지그재그 스캔을 상기 지그재그 스캔과 다른diagonal 스캔으로 대체할 수 있다.
현재 블록이 색차 블록인 경우에는 현재 블록의 인트라 예측 모드에 관계없이 지그재그 스캔만을 수행할 수 있다. 또는, 소정 크기보다 작은 색차블록에 대해서는 인트라 예측 모드에 따라 스캔 패턴을 결정할 수 있다. 이 경우, 색차 블록의 인트라 예측 모드가 DM 모드인 경우에는 상기한 휘도 블록의 인트라 예측 모드에 대응하여 스캔 패턴을 결정할 수 있다. 또한, 수평 모드인 경우에는 수직 스캔, 수직 모드인 경우에는 수평 스캔을 수행할 수 있다. 색차 블록의 인트라 예측 모드가 DC 또는 LM 모드인 경우에는 지그재그 스캔을 수행할 수 있다.
[현재 변환 블록이 인터 예측인 경우]
[제1예]
현재 변환 블록이 휘도 블록이면, 현재 변환 블록을 포함하는 현재 예측 블록(이하, 현재 블록이라 함)의 크기와 관계없이 지그재그 스캔을 수행할 수 있다. CABAC의 경우에는 상기한 지그재그 스캔을 상기 지그재그 스캔과 다른 diagonal 스캔으로 대체할 수 있다.
[제2예]
현재 변환블록의 형태에 따라 적응적으로 스캔타입을 결정할 수 있다. 예를 들어, 현재 변환블록이 2NxN 또는 2NxhN인 경우에는 수직스캔을, Nx2N 또는 hNx2N인 경우에는 수평스캔을 수행할 수 있다. 정사각형인 경우에는 지그재그 스캔을 수행할 수도 있다. 이 경우, 변환 블록의 크기가 소정 크기 이상인 경우에는 지그재그 스캔만을 수행할 수도 있다.
또는 블록의 크기가 소정 크기보다 큰 경우에는 서브블록 단위로 스캔을 수행할 수 있다. 이 경우, last non-zero 변환 계수의 위치를 이용하여 스캔해야 할 서브블록들을 알 수 있게 된다. 또한, 각 서브블록들의 경우, 변환계수를 갖지 않는 경우에는 이를 나타내는 정보(1bit의 플래그)가 비트스트림으로 전송될 수 있다. 따라서, 상기 정보들을 이용하여 서브블록을 역스캔하여 변환 블록을 생성할 수 있다.
[예 1]
블록의 크기가 미리 정해진 크기(예를 들어, 4x4 또는 8x8)보다 큰 경우에는 상기 블록을 복수개의 NxN의 서브블록으로 나누어 스캔할 수 있다. 이 경우, 변환 블록의 형태에 따라 결정되는 스캔패턴을 상기 서브블록 내의 변환 계수를 스캔할 때 사용할 수 있다. 서브블록들 간의 스캔 순서는 상기 결정되는 스캔패턴 또는 지그재그 스캔순서로 할 수 있다. 또는 래스터 스캔 순서로 할 수도 있다.
[예 2]
블록의 크기가 미리 정해진 크기보다 큰 경우에는 상기 변환 블록을 미리 정해진 개수(예를 들어, 4)의 서브블록으로 나누어 스캔할 수 있다. 이 경우, 변환 블록의 형태에 따라 결정되는 스캔패턴을 상기 서브블록 내의 변환 계수를 스캔할 때 사용할 수 있다. 서브블록들 간의 스캔 순서는 상기 결정되는 스캔패턴 또는 지그재그 스캔순서로 할 수 있다. 또는 래스터 스캔 순서로 할 수도 있다.
색차 블록의 경우에는 하나의 스캔패턴(예를 들어, 지그재그 스캔)만을 적용할 수 있다. 그러나, 상기한 휘도 블록과 동일하게 변환 블록의 형태에 따라 미리 정해진 스캔 패턴을 적용할 수도 있다.
[ CABAC 의 경우]
상기한 내용들은 변환 계수(또는 변환 계수의 크기)를 스캔하는 방식에 관한 것이다. 그러나, CABAC으로 엔트로피 부호화를 수행할 경우에는 Significant Map, Level, signs을 부호화하여야 한다. 이때, level과 마찬가지로 Significant Map도 스캔이 되어 부호화되어야 하고, 복호기에서는 역스캔되어 2차원의 significant map을 구성하여야 한다. 다음의 방법들이 존재할 수 있다.
[예1]
인트라 예측의 경우로서, Sig. Map 스캔은 블록의 크기가 미리 정해진 크기보다 큰 경우에는 상기 변환 블록을 미리 정해진 개수(예를 들어, 4)의 서브블록으로 나누어 스캔할 수 있다. 예를 들어, 미리 정해진 크기가 8x8이라고 할때, 변환블록의 크기가 16x16의 경우에는 4개의 8x8 서브블록단위로 스캔을 수행할 수 있다. 그리고, 각 서브블록의 스캔 패턴은 상기한 도 ~ 및 상기 도면의 설명에서와 동일하게 스캔 패턴이 결정될 수 있다. 또는 변환 블록의 크기와 관계없이 인트라 예측 모드에 따라서만 스캔 패턴이 결정될 수도 있다.
이 경우, level과 sign도 Sig. Map과 동일한 크기로 동일한 스캔패턴을 사용할 수도 있다. 또는 4x4 서브블록단위로 스캔을 수행하되, 4x4 서브블록 내의 스캔은 상기한 Sig. Map의 스캔 패턴과 동일하게 할 수도 있다.
Sig. Map과 level의 스캐닝 방향은 동일할 수 있다. 상기 스캐닝 방향은 역방향인 것이 바람직하다.
[예2]
Sig. Map과 level coding에 동일한 스캔패턴을 적용한다. 또한, 스캔 방향도 동일하게 할 수 있다. 상기 스캔 패턴은 상기한 "현재 변환 블록이 인트라 예측인 경우" 및 "현재 변환 블록이 인터 예측인 경우" 기술된 내용과 동일한 방식을 수행할 수 있다. 또는 미리 정해진 크기의 변환 블록들에 대해서만 스캔 패턴을 변화시킬 수도 있다.
Sig.Map은 블록의 크기와 관계없이 last significant coefficient로부터 DC로 스캔 패턴에 따라 스캔을 수행할 수 있다. 그러나, level의 경우에도 동일한 방식으로 스캔을 수행하되, 복수개의 서브셋으로 나누어 스캐닝할 수 있다. 상기 복수개의 서브셋은 정사각형의 형태일 수도 있지만, 스캔 패턴에 따라 결정되는 미리 정해진 level 개수(예를 들어, 16개)의 집합일 수도 있다. 도 15는 지그재그 스캔일 경우의 서브셋들을 나타내는 도면이다. 동일한 색이 하나의 서브셋을 구성한다.
이 경우, 상기 서브셋의 위치에 따라 서로 다른 컨텍스트 set들이 결정될 수 있다.
종합하면, 스캔 패턴은 다음의 방법들의 다양한 조합에 의해 결정될 수 있다.
- 현재 블록 또는 서브 블록의 예측 모드에 따라 스캔 패턴이 달라진다. 인트라인 경우에는 3가지 스캔 방식 중 하나를, 인터인 경우에는 1가지 스캔 방식만 사용할 수도 있다.
- 현재 블록 또는 서브 블록의 예측 모드가 인트라인 경우, 현재 블록 또는 서브 블록의 인트라 예측 모드 및 변환블록(현재 블록 또는 서브블록일 수 있음)의 크기에 따라 스캔 패턴이 달라질 수 있다.
- 현재 블록 또는 서브 블록의 예측 모드가 인터인 경우, 변환블록(현재 블록 또는 서브블록일 수 있음)의 모양 및/또는 변환블록의 크기에 따라 스캔 패턴이 달라질 수 있다.
- 현재 블록 또는 서브 블록의 변환 계수의 엔트로피 부호화 방식에 따라 스캔패턴이 달라질 수 있다.
상기한 잔차 블록 복원 과정에 적용되는 역양자화 방식은 구체적으로 다음과 같이 적용될 수 있다. 상기 2차원의 잔여계수 변환 블록을 역양자화한다. 구체적인 방법은 다음과 같다.
[ QU 결정]
현재 변환블록에 적용된 양자화 파라미터를 구하기 위해 QP를 복원하기 위한 최소 단위(QU)를 결정한다.
QP는 수신된 cu_qp_delta_enabled_flag를 이용하여 구할 수 있다. cu_qp_delta_enabled_flag는 QPY를 LCU 단위로 변경할지 또는 그 하위의 CU에서도 추가적으로 변경이 가능하도록 할지를 정의하고 있다. cu_qp_delta_enabled_flag의 값이 1(즉, LCU보다 작은 CU에서의 QPY는 각변경을 허용)하는 경우에는, PPS(picture parameter set)에서 max _ cu _ qp _ delta _ depth 를 통해 QPY 변경을 허용하는 최소 크기의 CU size(이를 LCU를 기준으로 maximum allowed depth 형태로 표현)를 정의하고 있다. QPY 변경을 허용하는 최소 크기의 CU size는 다음 수식에 의해 결정된다.
log2MinCUDQPSize = Log2MaxCUSize - max_cu_qp_delta_depth
여기서, log2MinCUDQPSize가 최소 크기의 CU size를 나타낸다.
따라서, cu_qp_delta_enabled_flag와 max _ cu _ qp _ delta _ depth 를 통해 상기 QP가 변경될 수 있는 최소 크기의 CU size(이하, QU:quantization unit이라 함)를 구한다.
한편, cu_qp_delta_enabled_flag와 max _ cu _ qp _ delta _ depth 를 하나의 변수로 설정할 수도 있다. 예를 들어, cu_qp_delta_enabled_info를 기존의 cu_qp_delta_enabled_flag와 max_cu_delta_depth를 합친 정보로 수신할 수 있다. 즉, cu_qp_delta_enabled_info의 값을 복원하여, 상기 값이 0인 경우에는 QP 고정, 1인 경우에는 LCU 단위의 QP 변경(즉, QU=LCU), 2인 경우에는 QU=(LCU/2)x(LCU/2), 3인 경우에는 QU=(LCU/4)x(LCU/4) 등으로 설정할 수도 있다.
상기한 경우, cu_qp_delta_enabled_info를 SPS에서만 정의하는 것이 아니라 PPS마다 on/off 하도록 정의하여 더 flexible하게 QP를 조정할 수도 있다.
[ dQP 복원]
QU 단위로 dQP를 복원한다.
<슬라이스마다 QP range 가 정해지는 경우>
슬라이스마다 MaxQP와 MinQP 또는 이를 나타내는 정보(예를 들어, QP range)가 정의될 수 있다. 상기 QP range는 slice QP값을 기준으로 대칭적으로 허용되는 값으로 전송하는 것이 효과적임. 예를 들어 전송하는 파라미터는 (MaxQP-sliceQP)값일 수 있음. 이 경우, 상기 파라미터가 2이고, slice QP가 25라면 허용되는 QP range는 23~27로 설정될 수 있다.
QP range가 정해지면, 허용가능한 dQP 값을 알 수 있다. 따라서, 엔트로피 복호화된 dQP 인덱스를 통해 dQP 값을 구할 수 있다.
예를 들어, dQP indexing은 다음과 같을 수 있다. dQP는 현재 QP와 예측 QP와의 차이값을 임. QP range가 전송되면, 가능한 dQP 값은 MinQP-predQP to MaxQP-predQP로 제한되므로, dQP의 인덱스를 기존 방법과 달리 설정할 수 있음. 예를 들어, MaxQP=27, MinQP=23 and predQP=24라면 인덱싱은 다음의 표 1과 같이 될 수 있다.
Index dQP value
0 0
1 1
2 -1
3 2
4 3
허용 가능한 QP range가 전송되면, 허용 가능한 인덱스도 정해지게 되므로, CABAC의 경우, dQP index를 부호화하기 위한 binarization을 truncated unary binarization을 이용하는 것이 효과적이다.
< QP range 를 전송하지 않거나 QP range 가 클 경우>
dQP를 기존의 unary binarization을 이용하는 것이 아니라, 절대값과 부호를 구분할 수 있도록 binarization을 하는 것이 타당할 수 있도 있다. 예를 들어, dQP의 절대값을 unary binarization을 하고, 여기에 부호를 나타내는 bin을 마지막 위치 또는 두번째 위치에 위치시킬 수도 있다.
한편, 부호화기에서 dQP가 0인지 아닌지를 플래그를 통해 알려줄 수도 있다.
< dQP 를 부호화하기 위한 dQP binarization >
HM 3.0에서는 unary binarization을 이용하여 이진화하였다. 그러나, 이 경우, 비트수가 많이 소모되는 문제가 있으므로, dQP의 절대값 또는 dQP-1의 절대값을 unary binarization하고, 여기에 dQP의 부호를 추가하여 bin string을 구성할 수 있다. 이 경우, 추기되는 dQP의 부호는 dQP의 절대값의 unary binarization된 bin string의 맨 마지막에 위치할 수 있다. 또는 dQP의 절대값 또는 dQP-1의 절대값을 truncated unary binarization하고, 여기에 dQP의 부호를 추가하여 bin string을 구성할 수 있다. 이 경우에는 복호기의 복잡도 감소를 위해 dQP의 절대값의 unary binarization된 bin string의 두번째 bin에 위치하도록 할 수도 있다.
따라서, 엔트로피 복호화된 bin string으로부터 상기한 binarization 방식에 대응하는 인덱스를 복원하여 상기 인덱스에 대응하는 dQP를 복원할 수 있다.
[ QP 예측자 결정]
QU 단위로 QP 예측자를 결정한다. QP 예측자는 다음의 방법 중 하나로 결정될 수 있다.
<실시예 1>
왼쪽의 QU가 존재하면, 왼쪽의 QU의 QP(즉, 왼쪽 QU의 가장 오른쪽?)가 QP 예측자가 된다. 그러나, 왼쪽의 QU가 존재하지 않는 경우에는 부호화/복호화 순서상 바로 이전의 QU의 QP가 QP 예측자로 정의된다.
<실시예 2>
현재 CU가 QU보다 작고, QU 내에 선행하는 CU가 존재하는 경우에는 QP 예측자를 구할 필요가 없다. 그러나, 현재 CU가 QU보다 작지 않거나, QU내의 좌상측 CU이면 다음의 과정을 통해 QP 예측자를 유도한다.
- 현재 CU의 cu_qp_delta 및 현재 cu의 좌상측 블록의 예측 모드가 입력된다. Cu_qp_delta는 cu syntax를 통해 수신한다.
- 현재 CU의 예측 모드와 동일한 예측 모드를 갖는 좌측 CU(또는 QU) 및 상측 CU(또는 QU)의 QP들 중 적어도 하나를 이용하여 QP 예측자를 유도한다.
A. 현재 CU가 인트라 예측인 경우, 좌측 CU 및 상측 CU가 모두 인트라 예측이면 좌측 CU 및 상측 CU의 QP들의 평균값이 QP 예측자가 된다.
QP 예측자 = ( QPY , ABOVE + QPY , LEFT + 1 ) / 2
또는 좌측 CU의 QP를 QP 예측자로 결정할 수 있다.
B. 현재 CU가 인트라 예측이고, 좌측 CU 및 상측 CU 중 하나만이 인트라 예측이면 인트라 예측인 CU의 QP를 QP 예측자로 결정한다.
C. 현재 CU가 인트라 예측이고, 좌측 CU 및 상측 CU 중 인트라 예측이 없는 경우(즉, 모두 인터인 경우)에는 좌측 및 상측 CU의 QP의 평균값 또는 좌측 CU의 QP 를 QP 예측자로 결정할 수 있다. 또는 상기 값들에서 소정값(예를 들어, 2 또는 3)을 뺀 값을 QP 예측자로 결정할 수 있다.
D. 현재 CU가 인터 예측인 경우에는 좌측 CU 및 상측 CU가 모두 인터 예측이면 좌측 CU 및 상측 CU의 QP들의 평균값이 QP 예측자가 된다.
QP 예측자 = ( QPY , ABOVE + QPY , LEFT + 1 ) / 2
또는 좌측 CU의 QP를 QP 예측자로 결정할 수 있다.
E. 현재 CU가 인터 예측이고, 좌측 CU 및 상측 CU 중 하나만이 인터 예측이면 인터 예측인 CU의 QP를 QP 예측자로 결정한다.
F. 현재 CU가 인트라 예측이고, 좌측 CU 및 상측 CU 중 인터 예측이 없는 경우(즉, 모두 인터인 경우)에는 좌측 및 상측 CU의 QP의 평균값 또는 좌측 CU의 QP 를 QP 예측자로 결정할 수 있다. 또는 상기 값들에서 소정값(예를 들어, 2 또는 3)을 더한 값 QP 예측자로 결정할 수 있다.
G. 상기 조건을 모두 만족시키지 않을 경우에는 부호화/복호화 순서상 바로 이전의 CU의 QP를 QP 예측자로 정의할 수 있다.
H. 여기에서, 좌측 또는 상측 CU의 잔차신호가 0이 아닌 경우에 상기 방법을 적용하고, 잔차 신호가 0인 경우에는 그 CU를 non available로 하여 처리할 수 있다.
<실시예 3>
현재 CU가 QU보다 작고, QU 내에 선행하는 CU가 존재하는 경우에는 QP 예측자를 구할 필요가 없음. 그러나, 현재 CU가 QU보다 작지 않거나, QU내의 좌상측 CU이면 다음의 과정을 통해 QP 예측자를 유도한다. 도 16을 참조하여 설명한다.
- 현재 CU의 cu_qp_delta 및 현재 cu의 좌상측 블록의 예측 모드가 입력된다. Cu_qp_delta는 cu syntax를 통해 수신한다.
- 예측 모드가 인트라 예측이면, 다음의 과정을 수행한다
A. 현재 블록의 인트라 예측 모드가 수직방향 모드들 중 하나이면 상측 QU의 QP가 현재 CU의 QP 예측자로 정의되고, 수평방향 모드들 중 하나이면 좌측 QU의 QP가 현재 CU의 QP 예측자로 정의되고, 비방향성 모드들(DC 또는 planar)이면 좌측 QU의 QP가 현재 CU의 QP 예측자로 정의할 수 있다.
B. 또는 현재 블록의 인트라 예측 모드가 수직모드 및 이에 가장 인접하는 소정 개수(예를 들어, 각 방향으로 4 or 5개씩)의 방향성 모드들인 경우에는 상측 CU의 QP를 현재 CU의 QP 예측자로 정의할 수도 있다. 그리고, 그 이외의 방향성 모드들 및 비방향성 모드들에 대해서는 좌측 CU의 QP를 이용하여 QP 예측자로 정의.
C. 그러나, 현재 블록의 상측 QU 또는 좌측 QU 중 하나만이 available할 경우에는 available한 CU의 QP를 QP 예측자로 정의하고, 모두 non available할 경우에는 부호화/복호화 순서상 이전에 부호화/복호화된 CU의 QP를 이용하여 QP 예측자를 결정
- 예측 모드가 인터인 경우에는 다음의 과정을 수행한다.
A. 현재 CU의 상측 QU의 현재 CU와 인접하는 상측 CU의 예측모드가 현재 CU의 예측 모드와 동일하고, 현재 CU의 좌측 QU의 현재 CU와 인접하는 좌측 CU의 예측 모드가 현재 CU와 동일한 경우에는 다음과 같다.
QP 예측자 = ( ( ( QPY , ABOVE + QPY , LEFT + 1 ) / 2
B. 현재 CU의 상측 CU의 예측 모드 및 좌측 CU의 예측 모드들 중 하나만이 현재 CU의 예측 모드와 동일한 경우에는 동일한 CU의 QP를 QP 예측자로 정의한다.
C. 현재 CU의 상측 CU 및 좌측 CU 중 하나만이 존재할 경우에는 존재하는 CU의 QP를 QP 예측자로 정의 또는 모드가 다를 경우 오프셋(2 또는 3) 값을 더해준다.
D. 모두 non available할 경우에는 부호화/복호화 순서상 이전에 부호화/복호화된 CU의 QP를 이용하여 QP 예측자를 결정한다.
<실시예 4>
QP가 CU 내에서 변하도록 설정할 경우, 즉 PU 또는 TU 단위로도 적응적으로 설정할 수 있도록 할 경우에는, 상기한 CU들의 QP가 상기 CU들에 대응하는 PU 또는 TU의 QP로 변경된다. 이때 상측 QP는 상측 CU의 좌측에 위치하는 PU 또는 TU의 QP, 좌측 QP는 좌측 CU의 상측에 위치하는 PU 또는 TU의 QP를 의미할 수 있다.
예를 들어, QP가 TU 단위로 변경되도록 설정할 경우, 소정 크기 이하의 TU에 대해서는 동일한 QP가 적용되도록 하는 파라미터를 부호기가 설정하여 복호기로 전송한다. 그리고, 상기 파라미터에 기초하여 소정 크기보다 작은 TU의 QP는 동일하게 설정하는 것은 앞서 CU의 경우와 동일하게 진행한다.
[ QP 복원]
dQP와 QP 예측자를 이용하여 QP를 구한다. 즉, 현재 CU의 QP=dQP+QP 예측자가 된다.
[ 역양자화 수행]
다음으로, QP를 이용하여 현재의 변환 블록의 역양자화를 수행한다.
역양자화를 위해 상기 QP를 이용하여 역양자화 매트릭스를 구하여 역양자화를 수행한다. 양자화 매트릭스는 예측 모드, 변환블록의 크기에 따라 미리 정해진 것일 수 있다.
그러나, SPS 또는 PPS마다 양자화 매트릭스를 변형시켜 부호화효율을 증대시킬 수 있다. 이 경우에는 양자화 매트릭스가 부호화되어 전송될 수 있다. 따라서, 복호기는 전송된 양자화 매트릭스 정보를 복원한 후에, 역양자화를 수행할 수도 있다.
구체적으로, SPS 또는 PPS에서 양자화 매트릭스를 부호화하여 전송할수도 있고, 별도의 NAL unit을 통해 양자화 매트릭스를 전송할 수도 있다.
양자화 매트릭스는 부호화되어 전송되는 경우, 부호화 순서는 다음과 같다.
1) 먼저 현재 양자화 매트릭스를 입력 받는다.
2) 다음으로, 현재 양자화 매트릭스의 예측 매트릭스를 이용하여 잔차 신호를 생성한다.
3) 다음으로, 잔차 신호를 부호화한다.
양자화 매트릭스의 예측 방식은 다음과 같다.
- 이전에 부호화된 참조 양자화 매트릭스 중 하나를 예측값으로 사용할 수 있다. 이 경우, 잔차 신호는 현재 양자화 매트릭스와 이전 양자화 매트릭스의 차이값으로 결정된다. 만약 이전에 부호화된 참조 양자화 매트릭스의 크기가 현재의 양자화 매트릭스 크기와 다를 경우에는 미리 정해진 방식으로 다운 샘플링 또는 업샘플링을 한다. 업샘플링의 경우 선형 보간을 사용할 수 있고, 다운 샘플링의 경우에는 4:1 의 경우는 4개의 평균값을, 16:1의 경우에는 16:1의 평균값을 사용하거나, 미리 정해진 2개 또는 4개의 값의 평균값을 이용할 수도 있다.
- 현재 양자화 매트릭스의 성분을 DPCM을 사용하여 잔차신호를 생성할 수도 있다. 이 경우에는 양자화 매트릭스의 계수들은 지그재그 스캔순서로 DPCM이 적용된다. 그리고, 양자화가 적용될 수 있다
- 한편, 상기 ①의 잔차 신호 또는 ②의 DPCM 신호를 양자화하여 신호를 압축하는 방법을 이용할 수도 있다. 이 경우, 양자화 매트릭스의 계수들 중 저주파 성분보다 고주파 성분쪽의 양자화를 크게 하는 것이 바람직하다. 따라서, 양자화 매트릭스를 지그재그 순서상으로 복수개의 영역으로 나누고, 각 영역마다 서로 다른 양자화 파라미터로 양자화하는 것이 바람직하다. 즉, DC를 포함하는 N번째 계수(지그재그 스캔순서상)까지는 양자화를 하지 않고, N+1~M번째 계수까지는 제1 양자화 파라미터(예를 들어 2), M+1~L번째 계수까지는 제2 양자화 파라미터를 이용하는 식으로 잔차신호 또는 DPCM신호를 양자화하여 전송하는 것이 바람직하다.
복호기에서는 상기 과정의 역과정을 진행하면 된다.
양자화된 또는 양자화되지 않은 잔차신호 또는 DPCM 신호를 CAVLC 또는 CABAC를 이용하여 부호화할 수 있다.
CAVLC를 이용할 경우에는, 상기 잔차신호 또는 DPCM 신호를 지그재그 스캔 순서로 런과 레벨의 조합을 이용하여 부호화할 수 있다. 즉, 기존의 H.264 방식 또는 현재 HEVC 4.0에서 제정되어 있는 방식을 이용하여 부호화할 수 있다.
한편, 색차 QP는 Luma QP로부터 구한다. 다만 luma QP가 소정값 이내인 경우에는 luma QP값을 chroma QP값으로 설정하고, 소정값 이상인 경우에는 별도의 mapping 을 이용할 수도 있다. 이 경우, 픽쳐 또는 슬라이스 헤더에서 chroma QP와 luma QP 사이의 맵핑 관계를 알려주는 정보(chroma_qp_index_offset)를 시그널링 해주는 것이 좋다. 영상의 특성에 따라 복수개의 맵핑 테이블이 존재할 수도 있다. Chroma_qp_index_offset은 PPS로 보내 줘도 된다.
다음으로, 변환과정 및 역변환 과정에 대해 설명한다.
도 17은 변환부호화 과정을 나타내는 도면이다.
[변환 부호화 과정]
1. 현재 예측 블록이 인트라 예측 잔차 블록인지 인터 예측 잔차 블록인지를 판단한다.
2. 현재 예측 블록의 예측 모드가 인터 예측이면, 잔차 블록의 크기에 관계없이 각 잔차 블록의 크기에 대응하는 DCT 기반 변환을 수행한다.
이 경우, 상기 예측 블록의 형태가 정사각형이면, 정사각형 변환을 사용하여 변환한다.
상기 예측 블록의 형태가 2NxN, Nx2N이면, 1) 잔차 블록이 2개 이상의 정사각형 블록으로 나누어져 정사각형 변환이 수행되거나, 2) non-square transform이 수행될 수도 있다. 2)의 경우, 예를 들어, 2NxN transform은 NxN transform과 2Nx2N transform을 사용하여 구현될 수 있다.
상기 예측 블록의 형태가 2Nx0.5N, 2Nx1.5N으로 나누어지는 경우에는, 변환블록의 크기는 2Nx2N, 4개의 2Nx0.5N으로 나누어질 수 있고(이 경우, split flag가 사용됨), 상기 2Nx0.5N은 4개의 Nx0.25N으로 나누어지거나 그대로 변환될 수 있다(이 경우에는 split flag가 사용된).
상기한 경우의 2Nx0.5N transform은 2Nx2N transform과 0.5Nx0.5N transform을 이용하여 구현될 수 있다.
3. 현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 제1 크기보다 작거나 같은 경우에는 현재 변환 블록에 적용된 인트라 예측 모드에 따라 복수개의 변환 기법 중 하나를 선택한다. 정사각형 블록의 경우, 제1 크기는 4x4 또는 8x8일 수 있다. 예측 블록이 정사각형이 아닌 경우에는 4x4 또는 8x8과 동일한 크기를 갖는 직사각형의 크기도 포함할 수 있다.
<예 1>
변환 블록의 크기가 4x4인 경우(또는 제1 크기가 4x4인 경우)에는, 다음의 표 2와 같이 인트라 예측 모드에 따라 서로 다른 변환타입을 적용할 수 있다.
예측모드 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
변환타입 4 2 3 1 4 4 2 2 4 3 3 4 4 2 2 4 4 3
변환 블록의 크기가 8x8인 경우(또는 제1 크기가 8x8인 경우)에는, 다음의 3과 인트라 예측 모드에 따라 서로 다른 변환타입을 적용할 수 있다.
예측모드 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
변환타입 4 2 3 1 4 4 2 2 4 3 3 4 4 2 2 4 4 3
예측모드 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
변환타입 3 4 4 4 4 2 2 2 2 4 4 4 4 3 3 3 3
여기서, 변환 타입 1은 1D horizontal DCT + 1D vertical DCT를 나타내고, 변환타입 2는 1D horizontal DCT + 1D vertical DST를 나타내고, 변환 타입 3은 1D horizontal DST + 1D vertical DCT를 나타내고, 변환 타입 4는 1D horizontal DST + 1D vertical DST를 나타낼 수 있다.
표에서와 같이, 수직 모드(1) 및 상기 수직 모드의 우측의 방향성을 갖는 인트라 예측 모드에는 변환 타입 2, 수평 모드와 수평 모드의 아래쪽에 위치하는 방향성 모드들에 대해서는 변환 타입 3, 나머지 방향성 모드들에 대해서는 변환 타입 4, DC 모드에 대해서는 변환 타입 1을 적용할 수 있다. 그리고, planar 모드에 대해서는 변환 타입 4가 아니라 변환 타입 1을 적용할 수도 있다.
<예 2>
수직 모드(1)와 이에 인접한 미리 정해진 개수의 방향성 모드들에 대해서는 변환 타입 2, 수평 모드와 이에 인접한 미리 정해진 개수의 방향성 모드들에 대해서는 변환타입 3, 그 이외의 방향성 모드들에 대해서는 변환타입 4를 적용할 수도 있다. 그리고, 비방향성 모드 중 DC에는 변환타입 1, planar 모드에는 변환타입 1 또는 4를 적용할 수도 있다.
4. 현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 제1 크기보다 큰 경우에는 다음의 방법들 중 하나를 적용할 수 있다.
<방법 1>
먼저, 변환 블록 전체에 제1 변환 기법을 적용한다. 상기 제1 변환 기법은 KLT 기반 정수 변환 또는 DCT 기반 정수 변환일 수 있다. 그리고, 상기 상기 인트라 예측 모드에 따라 적응적으로 상기 변환된 블록의 변환 계수들 중 제1 서브셋을 다시 제2 변환기법을 통해 변환한다. 상기 제1 서브셋은 DC를 포함하는 소정 계수의 포함한다. 상기 서브셋은 순방향 지그재그 스캔순서로 DC를 포함하는 소정 계수(예를 들어, 16개)를 포함할 수도 있고, DC를 포함하는 4x4 또는 8x8 블록일 수도 있다. 상기 서브셋의 크기는 변환 블록의 크기에 따라 변할 수도 있다.
상기 제2 변환기법은 상기한 “현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 제1 크기보다 작거나 같은 경우”에 적용되는 변환 방법과 동일할 수 있다.
<방법 2>
“현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 제1 크기보다 작거나 같은 경우”에 적용되는 변환 방법과 동일할 수 있다.
<방법 3>
인트라 예측 모드에 관계없이, 변환 블록 전체에 제1 변환 기법만을 적용할 수 있다. 상기 제1 변환 기법은 KLT 기반 정수 변환 또는 DCT 기반 정수 변환일 수 있다.
도 18은 변환복호화 과정을 나타내는 도면이다.
[변환 복호화 과정]
1. 먼저, 역양자된 잔차 블록을 수신한다.
2. 그리고, 수신된 잔차블록이 현재 예측 블록이 인트라 예측 잔차 블록인지 인터 예측 잔차 블록인지를 판단한다.
3. 현재 예측 블록의 예측 모드가 인터 예측이면, 잔차 블록의 크기에 관계없이 각 잔차 블록의 크기에 대응하는 역변환을 수행한다. 상기 역변환은 DCT 기반 역변환 또는 KLT 기반 역반환일 수 있다.
이 경우, 상기 예측 블록의 형태가 정사각형이면, 정사각형 역변환을 사용하여 변환한다.
상기 예측 블록의 형태가 2NxN, Nx2N이면, 1) 잔차 블록이 2개 이상의 정사각형 블록으로 나누어져 정사각형 역변환이 수행되거나, 2) non-square transform이 수행될 수도 있다. 2)의 경우, 예를 들어, 2NxN 역변환은 NxN 역변환과 2Nx2N 역변환을 사용하여 역변환을 할 수도 있다.
상기 예측 블록의 형태가 2Nx0.5N, 2Nx1.5N으로 나누어지는 경우에는, 변환블록의 크기는 2Nx2N, 4개의 2Nx0.5N으로 나누어질 수 있고(이 경우, split transform flag가 사용됨), 상기 2Nx0.5N은 4개의 Nx0.25N으로 나누어지거나 그대로 변환될 수 있다(이 경우에는 split transform flag가 사용된). 따라서, 상기 split transform flag를 이용하여, 상기 크기에 대응하는 역변환을 수행할 수 있다.
상기한 경우의 2Nx0.5N 역 변환은은 2Nx2N 역변환과 0.5Nx0.5N 역변환을 이용하여 구현될 수 있다.
4. 현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 제1 크기보다 작거나 같은 경우에는 현재 변환 블록에 적용된 인트라 예측 모드에 따라 복수개의 역변환 기법 중 하나를 선택한다. 정사각형 블록의 경우, 제1 크기는 4x4 또는 8x8일 수 있다. 예측 블록이 정사각형이 아닌 경우에는 4x4 또는 8x8과 동일한 크기를 갖는 직사각형의 크기도 포함할 수 있다.
<예 1>
변환 블록의 크기가 4x4인 경우(또는 제1 크기가 4x4인 경우)에는, 표 2와 같이 인트라 예측 모드에 따라 서로 다른 역변환 타입을 적용할 수 있다.
변환 블록의 크기가 8x8인 경우(또는 제1 크기가 8x8인 경우)에는, 표 3과 같이 인트라 예측 모드에 따라 서로 다른 역변환 타입을 적용할 수 있다.
여기서, 역변환 타입 1은 1D horizontal 역DCT + 1D vertical 역DCT를 나타내고, 역변환타입 2는 1D horizontal 역DCT + 1D vertical 역DST를 나타내고, 역변환 타입 3은 1D horizontal 역DST + 1D vertical 역DCT를 나타내고, 역변환 타입 4는 1D horizontal 역DST + 1D vertical 역DST를 나타낼 수 있다.
표에서와 같이, 수직 모드(1) 및 상기 수직 모드의 우측의 방향성을 갖는 인트라 예측 모드에는 역변환 타입 2, 수평 모드와 수평 모드의 아래쪽에 위치하는 방향성 모드들에 대해서는 역변환 타입 3, 나머지 방향성 모드들에 대해서는 역변환 타입 4, DC 모드에 대해서는 역변환 타입 1을 적용할 수 있다. 그리고, planar 모드에 대해서는 역변환 타입 4가 아니라 역변환 타입 1을 적용할 수도 있다.
<예 2>
수직 모드(1)와 이에 인접한 미리 정해진 개수의 방향성 모드들에 대해서는 역변환 타입 2, 수평 모드와 이에 인접한 미리 정해진 개수의 방향성 모드들에 대해서는 역변환타입 3, 그 이외의 방향성 모드들에 대해서는 역변환타입 4를 적용할 수도 있다. 그리고, 비방향성 모드 중 DC에는 역변환타입 1, planar 모드에는 역변환타입 1 또는 4를 적용할 수도 있다.
5. 현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 제1 크기보다 큰 경우에는 다음의 2가지 방법 중 하나를 적용할 수 있다.
<방법 1>
상기 인트라 예측 모드에 따라 적응적으로, 상기 수신된 역양자화 블록의 변환 계수들 중 제1 서브셋을 제2 역변환기법을 통해 역변환한다. 상기 제2 역변환기법은 상기한 “현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 제1 크기보다 작거나 같은 경우”에 적용되는 역변환 방법과 동일할 수 있다.
그리고, 상기 제2 역변환된 블록 또는 상기 수신된 역양자화 블록 전체에 제1 역변환 기법을 적용한다. 상기 제1 역변환 기법은 KLT 기반 정수 역변환 또는 DCT 기반 정수 역변환일 수 있다.
상기 제1 서브셋은 DC를 포함하는 소정 계수의 포함한다. 상기 서브셋은 순방향 지그재그 스캔순서로 DC를 포함하는 소정 계수(예를 들어, 16개)를 포함할 수도 있고, DC를 포함하는 4x4 또는 8x8 블록일 수도 있다. 상기 서브셋의 크기는 변환 블록의 크기에 따라 변할 수도 있다.
<방법 2>
“현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 제1 크기보다 작거나 같은 경우”에 적용되는 역변환 방법과 동일할 수 있다.
<방법 3>
인트라 예측 모드에 관계없이, 변환 블록 전체에 제1 역변환 기법만을 적용할 수 있다. 상기 제1 역변환 기법은 KLT 기반 정수 역변환 또는 DCT 기반 정수 역변환일 수 있다.
한편, 상기한 split transform flag가 수신된 비트스트림 내에 존재하지 않으면, 현재 변환 블록의 크기가 허용된 변환 블록의 최대 크기(MaxTrafoSize)보다 크거나, 인트라의 Split Flag가 1이면, split_tranform_flag의 값은 1로 설정하고, 상기 split transform flag를 이용하여 변환 블록을 역변환할 수 있다.
[ 색차 블록의 변환 부호화 과정]
1. 현재 예측 블록이 인트라 예측 잔차 블록인지 인터 예측 잔차 블록인지를 판단한다.
2. 현재 예측 블록의 예측 모드가 인터 예측이면, 잔차 블록의 크기에 관계없이 각 잔차 블록의 크기에 대응하는 DCT 기반 변환을 수행한다.
이 경우, 상기 예측 블록의 형태가 정사각형이면, 정사각형 변환을 사용하여 변환한다.
상기 예측 블록의 형태가 2NxN, Nx2N이면, 1) 잔차 블록이 2개 이상의 정사각형 블록으로 나누어져 정사각형 변환이 수행되거나, 2) non-square transform이 수행될 수도 있다. 2)의 경우, 예를 들어, 2NxN transform은 NxN transform과 2Nx2N transform을 사용하여 구현될 수 있다.
상기 예측 블록의 형태가 2Nx0.5N, 2Nx1.5N으로 나누어지는 경우에는, 변환블록의 크기는 2Nx2N, 4개의 2Nx0.5N으로 나누어질 수 있고(이 경우, split flag가 사용됨), 상기 2Nx0.5N은 4개의 Nx0.25N으로 나누어지거나 그대로 변환될 수 있다(이 경우에는 split flag가 사용된).
상기한 경우의 2Nx0.5N transform은 2Nx2N transform과 0.5Nx0.5N transform을 이용하여 구현될 수 있다.
3. 현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 소정 크기인 경우(또는 제3 크기보다 크고, 제4 크기보다 작은 경우)에는 현재 변환 블록에 적용된 인트라 예측 모드에 따라 복수개의 변환 기법 중 하나를 선택한다. 정사각형 블록의 경우, 상기 소정의 크기는 4x4일 수 있다. 예측 블록이 정사각형이 아닌 경우에는 4x4와 동일한 면적을 갖는 직사각형의 크기도 포함할 수 있다.
<예 1>
변환 블록의 크기가 4x4인 경우(또는 제1 크기가 4x4인 경우)에는, 다음과 같이 인트라 예측 모드에 따라 서로 다른 변환타입을 적용할 수 있다.
현재 색차 블록의 인트라 예측 모드가 DC이면, 변환타입 1을 적용하고, 현재 색차 블록의 인트라 예측 모드가 vertical이면, 변환타입 2를 적용하고, 현재 색차 블록의 인트라 예측 모드가 horizontal이면 제3 변화타입을 적용한다. 현재 색차 블록의 인트라 예측 모드가 LM(linear model mode)이면, 제1 변환타입을 적용할 수 있다. 현재 색차 블록의 인트라 예측 모드가 DM 모드(휘도 블록의 인트라 예측 모드와 동일)이면, 제1 변환타입을 적용하거나, 상기 휘도 블록의 인트라 예측 모드에 따라 휘도 블록(예를 들어, 상기한 4x4 휘도 블록)에 적용되는 변환타입을 적용할 수 있다.
여기서, 변환 타입 1은 1D horizontal DCT + 1D vertical DCT를 나타내고, 변환타입 2는 1D horizontal DCT + 1D vertical DST를 나타내고, 변환 타입 3은 1D horizontal DST + 1D vertical DCT를 나타내고, 변환 타입 4는 1D horizontal DST + 1D vertical DST를 나타낼 수 있다.
4. 현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 제1 크기보다 큰 경우에는 다음의 2가지 방법 중 하나를 적용할 수 있다.
<방법 1>
먼저, 변환 블록 전체에 제1 변환 기법을 적용한다. 상기 제1 변환 기법은 KLT 기반 정수 변환 또는 DCT 기반 정수 변환일 수 있다. 그리고, 상기 상기 인트라 예측 모드에 따라 적응적으로 상기 변환된 블록의 변환 계수들 중 제1 서브셋을 다시 제2 변환기법을 통해 변환한다. 상기 제1 서브셋은 DC를 포함하는 소정 계수의 포함한다. 상기 서브셋은 순방향 지그재그 스캔순서로 DC를 포함하는 소정 계수(예를 들어, 16개)를 포함할 수도 있고, DC를 포함하는 4x4 또는 8x8 블록일 수도 있다. 상기 서브셋의 크기는 변환 블록의 크기에 따라 변할 수도 있다.
상기 제2 변환기법은 상기한 “현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 제1 크기보다 작거나 같은 경우”에 적용되는 변환 방법과 동일할 수 있다.
<방법 2>
“현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 제1 크기보다 작거나 같은 경우”에 적용되는 변환 방법과 동일할 수 있다.
<방법 3>
인트라 예측 모드에 관계없이, 변환 블록 전체에 제1 변환 기법만을 적용할 수 있다. 상기 제1 변환 기법은 KLT 기반 정수 변환 또는 DCT 기반 정수 변환일 수 있다.
[ 색차 블록의 변환 복호화 과정]
1. 먼저, 역양자된 잔차 블록을 수신한다.
2. 그리고, 수신된 잔차블록이 현재 예측 블록이 인트라 예측 잔차 블록인지 인터 예측 잔차 블록인지를 판단한다.
3. 현재 예측 블록의 예측 모드가 인터 예측이면, 잔차 블록의 크기에 관계없이 각 잔차 블록의 크기에 대응하는 역변환을 수행한다. 상기 역변환은 DCT 기반 역변환 또는 KLT 기반 역반환일 수 있다.
이 경우, 상기 예측 블록의 형태가 정사각형이면, 정사각형 역변환을 사용하여 변환한다.
상기 예측 블록의 형태가 2NxN, Nx2N이면, 1) 잔차 블록이 2개 이상의 정사각형 블록으로 나누어져 정사각형 역변환이 수행되거나, 2) non-square transform이 수행될 수도 있다. 2)의 경우, 예를 들어, 2NxN 역변환은 NxN 역변환과 2Nx2N 역변환을 사용하여 역변환을 할 수도 있다.
상기 예측 블록의 형태가 2Nx0.5N, 2Nx1.5N으로 나누어지는 경우에는, 변환블록의 크기는 2Nx2N, 4개의 2Nx0.5N으로 나누어질 수 있고(이 경우, split transform flag가 사용됨), 상기 2Nx0.5N은 4개의 Nx0.25N으로 나누어지거나 그대로 변환될 수 있다(이 경우에는 split transform flag가 사용된). 따라서, 상기 split transform flag를 이용하여, 상기 크기에 대응하는 역변환을 수행할 수 있다.
상기한 경우의 2Nx0.5N 역 변환은은 2Nx2N 역변환과 0.5Nx0.5N 역변환을 이용하여 구현될 수 있다.
4. 현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 소정 크기인 경우에는 현재 변환 블록에 적용된 인트라 예측 모드에 따라 복수개의 역변환 기법 중 하나를 선택한다. 정사각형 블록의 경우, 상기 소정 크기는 4x4일 수 있다. 예측 블록이 정사각형이 아닌 경우에는 4x4 와 동일한 면적을 갖는 직사각형의 크기도 포함할 수 있다.
<예 1>
다음과 같이 인트라 예측 모드에 따라 서로 다른 역변환타입을 적용할 수 있다.
현재 색차 블록의 인트라 예측 모드가 DC이면, 역변환타입 1을 적용하고, 현재 색차 블록의 인트라 예측 모드가 vertical이면, 역변환타입 2를 적용하고, 현재 색차 블록의 인트라 예측 모드가 horizontal이면 제3 역변환타입을 적용한다. 현재 색차 블록의 인트라 예측 모드가 LM(linear model mode)이면, 제1 역변환타입을 적용할 수 있다. 현재 색차 블록의 인트라 예측 모드가 DM 모드(휘도 블록의 인트라 예측 모드와 동일)이면, 제1 역변환타입을 적용하거나, 상기 휘도 블록의 인트라 예측 모드에 따라 휘도 블록(예를 들어, 상기한 4x4 휘도 블록)에 적용되는 역변환타입을 적용할 수 있다.
여기서, 역변환 타입 1은 1D horizontal 역DCT + 1D vertical 역DCT를 나타내고, 역변환타입 2는 1D horizontal 역DCT + 1D vertical 역DST를 나타내고, 역변환 타입 3은 1D horizontal 역DST + 1D vertical 역DCT를 나타내고, 변환 타입 4는 1D horizontal 역DST + 1D vertical 역DST를 나타낼 수 있다.
표에서와 같이, 수직 모드(1) 및 상기 수직 모드의 우측의 방향성을 갖는 인트라 예측 모드에는 역변환 타입 2, 수평 모드와 수평 모드의 아래쪽에 위치하는 방향성 모드들에 대해서는 역변환 타입 3, 나머지 방향성 모드들에 대해서는 역변환 타입 4, DC 모드에 대해서는 역변환 타입 1을 적용할 수 있다. 그리고, planar 모드에 대해서는 역변환 타입 4가 아니라 역변환 타입 1을 적용할 수도 있다.
<예 2>
수직 모드(1)와 이에 인접한 미리 정해진 개수의 방향성 모드들에 대해서는 역변환 타입 2, 수평 모드와 이에 인접한 미리 정해진 개수의 방향성 모드들에 대해서는 역변환타입 3, 그 이외의 방향성 모드들에 대해서는 역변환타입 4를 적용할 수도 있다. 그리고, 비방향성 모드 중 DC에는 역변환타입 1, planar 모드에는 역변환타입 1 또는 4를 적용할 수도 있다.
5. 현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 제1 크기보다 큰 경우에는 다음의 2가지 방법 중 하나를 적용할 수 있다.
<방법 1>
상기 인트라 예측 모드에 따라 적응적으로, 상기 수신된 역양자화 블록의 변환 계수들 중 제1 서브셋을 제2 역변환기법을 통해 역변환한다. 상기 제2 역변환기법은 상기한 “현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 제1 크기보다 작거나 같은 경우”에 적용되는 역변환 방법과 동일할 수 있다.
그리고, 상기 제2 역변환된 블록 또는 상기 수신된 역양자화 블록 전체에 제1 역변환 기법을 적용한다. 상기 제1 역변환 기법은 KLT 기반 정수 역변환 또는 DCT 기반 정수 역변환일 수 있다.
상기 제1 서브셋은 DC를 포함하는 소정 계수의 포함한다. 상기 서브셋은 순방향 지그재그 스캔순서로 DC를 포함하는 소정 계수(예를 들어, 16개)를 포함할 수도 있고, DC를 포함하는 4x4 또는 8x8 블록일 수도 있다. 상기 서브셋의 크기는 변환 블록의 크기에 따라 변할 수도 있다.
<방법 2>
“현재 예측 블록의 예측 모드가 인트라 예측이고, 상기 예측 블록의 변환 블록의 크기가 제1 크기보다 작거나 같은 경우”에 적용되는 역변환 방법과 동일할 수 있다.
<방법 3>
인트라 예측 모드에 관계없이, 변환 블록 전체에 제1 역변환 기법만을 적용할 수 있다. 상기 제1 역변환 기법은 KLT 기반 정수 역변환 또는 DCT 기반 정수 역변환일 수 있다.
한편, 상기한 split transform flag가 수신된 비트스트림 내에 존재하지 않으면, 현재 변환 블록의 크기가 허용된 변환 블록의 최대 크기(MaxTrafoSize)보다 크거나, 인트라의 Split Flag가 1이면, split_tranform_flag의 값은 1로 설정하고, 상기 split transform flag를 이용하여 변환 블록을 역변환할 수 있다.
이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
250:인트라 예측부

Claims (1)

  1. 인트라 예측 모드 부호화 방법에 있어서,
    현재 블록의 인트라 예측 모드를 결정하는 단계;
    현재 블록의 MPM 후보자들의 유효성을 검사하여 유효한 MPM 후보자 수를 판단하는 단계;
    유효한 MPM 후보자 수가 미리 정해진 수보다 작은 경우, 추가 인트라 예측 모드를 MPM 후보자로 추가하는 단계;
    현재 블록의 인트라 예측 모드가 상기 유효한 MPM 후보자 또는 추가 MPM 후보자와 동일한지를 판단하는 단계;
    현재 블록의 인트라 예측 모드가 상기 유효한 MPM 후보자 또는 추가 MPM 후보자와 동일한 경우에는 동일함을 나타내는 정보와 상기 후보자들 중 어느 하나를 나타내는 인덱스를 부호화하는 단계;
    현재 블록의 인트라 예측 모드가 상기 유효한 MPM 후보자 또는 추가 MPM 후보자와 동일하지 않은 경우에는 동일하지 않음을 나타내는 정보가 상기 MPM 후보자들을 제외한 잔여 인트라 예측 모드들 중 어느 하나와 동일함을 나타내는 인덱스를 부호화하는 단계;를 포함하는 것을 특징으로 하는 인트라 예측 모드 부호화 방법.


KR1020110114609A 2011-11-04 2011-11-04 잔차 블록 복원을 위한 역변환 방법 KR20130049525A (ko)

Priority Applications (97)

Application Number Priority Date Filing Date Title
KR1020110114609A KR20130049525A (ko) 2011-11-04 2011-11-04 잔차 블록 복원을 위한 역변환 방법
HUE12846401A HUE037565T2 (hu) 2011-11-04 2012-11-02 Eljárás rekonstruált blokk elõállítására
CA3057770A CA3057770C (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
EP18166532.4A EP3364373A1 (en) 2011-11-04 2012-11-02 Method of generating reconstucted block
TW109119897A TWI715506B (zh) 2011-11-04 2012-11-02 圖框內預測中的圖像編碼方法、圖框內預測中的圖像解碼方法及儲存編碼影片資訊的電腦可讀取媒體
US14/349,465 US9014262B2 (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
EP18166480.6A EP3364372A1 (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
BR122020014288-0A BR122020014288B1 (pt) 2011-11-04 2012-11-02 Método para gerar um bloco reconstruído
BR122020014282-0A BR122020014282B1 (pt) 2011-11-04 2012-11-02 Método para gerar um bloco reconstruído
ES18158853T ES2881980T3 (es) 2011-11-04 2012-11-02 Procedimiento de derivar un modo de intra predicción
KR1020147009904A KR20140070598A (ko) 2011-11-04 2012-11-02 복원 블록 생성 방법
MX2014003912A MX2014003912A (es) 2011-11-04 2012-11-02 Metodo para generar bloque reconstruido.
MYPI2017001714A MY190514A (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
IN3908CHN2014 IN2014CN03908A (ko) 2011-11-04 2012-11-02
RU2014111828/08A RU2604340C2 (ru) 2011-11-04 2012-11-02 Способ формирования восстановленного блока
SI201231289T SI2774122T1 (en) 2011-11-04 2012-11-02 Procedure for generating a reconstructed block
MYPI2017001719A MY190516A (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
MX2015015707A MX340475B (es) 2011-11-04 2012-11-02 Metodo para generar bloque reconstruido.
MYPI2017001718A MY190515A (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
CA2976066A CA2976066C (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
SG11201400674SA SG11201400674SA (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
RU2016142727A RU2710995C2 (ru) 2011-11-04 2012-11-02 Способ формирования восстановленного блока
MYPI2014000912A MY170819A (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
RU2016142725A RU2711467C2 (ru) 2011-11-04 2012-11-02 Способ формирования восстановленного блока
MX2015015705A MX340476B (es) 2011-11-04 2012-11-02 Metodo para generar bloque reconstruido.
CA3212893A CA3212893A1 (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
PE2014000612A PE20142032A1 (es) 2011-11-04 2012-11-02 Metodo de generacion de bloque reconstruido
RS20180662A RS57282B1 (sr) 2011-11-04 2012-11-02 Postupak generisanja rekonstruisanog bloka
TW107147143A TWI684350B (zh) 2011-11-04 2012-11-02 影像解碼方法
CA2849028A CA2849028C (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
TW106131377A TWI650001B (zh) 2011-11-04 2012-11-02 一種產生重構塊的方法
ES12846401.3T ES2669502T3 (es) 2011-11-04 2012-11-02 Procedimiento de generación de un bloque reconstruido
DK12846401.3T DK2774122T3 (en) 2011-11-04 2012-11-02 Method of Generating a Reconstructed Block.
EP18166529.0A EP3379492A1 (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
PT128464013T PT2774122T (pt) 2011-11-04 2012-11-02 Método de gerar bloco reconstruído
CA3111640A CA3111640C (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
PL18158853T PL3346447T3 (pl) 2011-11-04 2012-11-02 Sposób uzyskiwania trybu predykcji wewnątrzobrazowej
BR122020014298-7A BR122020014298B1 (pt) 2011-11-04 2012-11-02 Método para gerar um bloco reconstruído
MX2016009077A MX356330B (es) 2011-11-04 2012-11-02 Metodo para generar bloque reconstruido.
EP18158853.4A EP3346447B1 (en) 2011-11-04 2012-11-02 Method of deriving an intra prediction mode
RU2016142729A RU2711306C2 (ru) 2011-11-04 2012-11-02 Способ формирования восстановленного блока
RU2016142728A RU2710996C2 (ru) 2011-11-04 2012-11-02 Способ формирования восстановленного блока
KR1020147009908A KR20140074348A (ko) 2011-11-04 2012-11-02 영상 복호화 장치
AU2012331601A AU2012331601B2 (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
TW105130614A TWI603610B (zh) 2011-11-04 2012-11-02 一種影像解碼方法
KR1020147009907A KR20140066760A (ko) 2011-11-04 2012-11-02 영상 복호화 장치
SG10201607196UA SG10201607196UA (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
EP12846401.3A EP2774122B1 (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
CA2913567A CA2913567C (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
BR122020014293-6A BR122020014293B1 (pt) 2011-11-04 2012-11-02 Método para gerar um bloco reconstruído
PL12846401T PL2774122T3 (pl) 2011-11-04 2012-11-02 Sposób generowania bloku zrekonstruowanego
MYPI2017001720A MY190529A (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
NO12846401A NO2774122T3 (ko) 2011-11-04 2012-11-02
HUE18158853A HUE054637T2 (hu) 2011-11-04 2012-11-02 Eljárás intra predikciós mód levezetésére
JP2014539232A JP5789343B2 (ja) 2011-11-04 2012-11-02 復元ブロック生成方法
CA2913566A CA2913566C (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
TW101140903A TWI558170B (zh) 2011-11-04 2012-11-02 產生重構塊的方法
TW108146231A TWI699992B (zh) 2011-11-04 2012-11-02 導出當前預測單元的圖框內預測模式的方法
MYPI2017001721A MY190530A (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
PCT/CN2012/083994 WO2013064099A1 (en) 2011-11-04 2012-11-02 Method of generating reconstructed block
LTEP12846401.3T LT2774122T (lt) 2011-11-04 2012-11-02 Rekonstruoto bloko generavimo būdas
MX2015015706A MX340474B (es) 2011-11-04 2012-11-02 Metodo para generar bloque reconstruido.
CN201711011969.9A CN107809640B (zh) 2011-11-04 2012-11-05 产生重构块的方法
CN201711011928.XA CN107682696B (zh) 2011-11-04 2012-11-05 产生重构块的方法
CN201711011944.9A CN107734334B (zh) 2011-11-04 2012-11-05 产生重构块的方法
CN201711011941.5A CN107613293B (zh) 2011-11-04 2012-11-05 产生重构块的方法
CN201711011967.XA CN107770535B (zh) 2011-11-04 2012-11-05 产生重构块的方法
CN201711007921.0A CN107770534B (zh) 2011-11-04 2012-11-05 产生重构块的方法
CN201210436434.7A CN103096067B (zh) 2011-11-04 2012-11-05 产生重构块的方法
CN201711020359.5A CN107682697B (zh) 2011-11-04 2012-11-05 产生重构块的方法
IL231705A IL231705A (en) 2011-11-04 2014-03-25 A method for creating a restored block
MX2015015704A MX340477B (es) 2011-11-04 2014-03-31 Metodo para generar bloque reconstruido.
MX2018006177A MX2018006177A (es) 2011-11-04 2014-03-31 Metodo para generar bloque reconstruido.
US14/660,787 US9344728B2 (en) 2011-11-04 2015-03-17 Method of generating reconstructed block
US14/660,731 US9497462B2 (en) 2011-11-04 2015-03-17 Method of generating reconstructed block
US14/660,766 US9497463B2 (en) 2011-11-04 2015-03-17 Method of generating reconstructed block
US14/660,752 US9503726B2 (en) 2011-11-04 2015-03-17 Method of generating reconstructed block
JP2015151583A JP6118374B2 (ja) 2011-11-04 2015-07-31 復元ブロック生成方法
JP2015151584A JP6101316B2 (ja) 2011-11-04 2015-07-31 復元ブロック生成方法
JP2015151586A JP6116626B2 (ja) 2011-11-04 2015-07-31 復元ブロック生成方法
JP2015151585A JP6116625B2 (ja) 2011-11-04 2015-07-31 復元ブロック生成方法
ZA2016/00847A ZA201600847B (en) 2011-11-04 2016-02-08 Image decoding method
ZA2016/00849A ZA201600849B (en) 2011-11-04 2016-02-08 Method of generating reconstructed block
AU2016203217A AU2016203217B2 (en) 2011-11-04 2016-05-17 Method of generating reconstructed block
AU2016203214A AU2016203214B2 (en) 2011-11-04 2016-05-17 Method of generating reconstructed block
AU2016203216A AU2016203216B2 (en) 2011-11-04 2016-05-17 Method of generating reconstructed block
AU2016203215A AU2016203215B2 (en) 2011-11-04 2016-05-17 Method of generating reconstructed block
IL247673A IL247673B (en) 2011-11-04 2016-09-07 A method for creating a regenerated block
IL247676A IL247676A (en) 2011-11-04 2016-09-07 Device for creating a restored block
IL247675A IL247675B (en) 2011-11-04 2016-09-07 A method for creating a regenerated block
IL247674A IL247674B (en) 2011-11-04 2016-09-07 A method for creating a regenerated block
US15/332,717 US10015489B2 (en) 2011-11-04 2016-10-24 Method of generating reconstructed block
JP2017059314A JP6367413B2 (ja) 2011-11-04 2017-03-24 復元ブロック生成方法
CY20181100538T CY1120400T1 (el) 2011-11-04 2018-05-22 Μεθοδος παραγωγης ανακατασκευασμενου μπλοκ
US16/002,904 US10623732B2 (en) 2011-11-04 2018-06-07 Method of generating reconstructed block
HRP20181016TT HRP20181016T1 (hr) 2011-11-04 2018-07-02 Postupak generiranja rekonstruiranog bloka
US16/828,340 US10917640B2 (en) 2011-11-04 2020-03-24 Method of generating reconstructed block

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110114609A KR20130049525A (ko) 2011-11-04 2011-11-04 잔차 블록 복원을 위한 역변환 방법

Publications (1)

Publication Number Publication Date
KR20130049525A true KR20130049525A (ko) 2013-05-14

Family

ID=48191360

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020110114609A KR20130049525A (ko) 2011-11-04 2011-11-04 잔차 블록 복원을 위한 역변환 방법
KR1020147009908A KR20140074348A (ko) 2011-11-04 2012-11-02 영상 복호화 장치
KR1020147009907A KR20140066760A (ko) 2011-11-04 2012-11-02 영상 복호화 장치
KR1020147009904A KR20140070598A (ko) 2011-11-04 2012-11-02 복원 블록 생성 방법

Family Applications After (3)

Application Number Title Priority Date Filing Date
KR1020147009908A KR20140074348A (ko) 2011-11-04 2012-11-02 영상 복호화 장치
KR1020147009907A KR20140066760A (ko) 2011-11-04 2012-11-02 영상 복호화 장치
KR1020147009904A KR20140070598A (ko) 2011-11-04 2012-11-02 복원 블록 생성 방법

Country Status (29)

Country Link
US (8) US9014262B2 (ko)
EP (5) EP3379492A1 (ko)
JP (6) JP5789343B2 (ko)
KR (4) KR20130049525A (ko)
CN (8) CN103096067B (ko)
AU (5) AU2012331601B2 (ko)
BR (4) BR122020014293B1 (ko)
CA (7) CA2849028C (ko)
CY (1) CY1120400T1 (ko)
DK (1) DK2774122T3 (ko)
ES (2) ES2881980T3 (ko)
HR (1) HRP20181016T1 (ko)
HU (2) HUE037565T2 (ko)
IL (5) IL231705A (ko)
IN (1) IN2014CN03908A (ko)
LT (1) LT2774122T (ko)
MX (7) MX340475B (ko)
MY (6) MY190529A (ko)
NO (1) NO2774122T3 (ko)
PE (1) PE20142032A1 (ko)
PL (2) PL3346447T3 (ko)
PT (1) PT2774122T (ko)
RS (1) RS57282B1 (ko)
RU (5) RU2604340C2 (ko)
SG (2) SG10201607196UA (ko)
SI (1) SI2774122T1 (ko)
TW (6) TWI650001B (ko)
WO (1) WO2013064099A1 (ko)
ZA (2) ZA201600847B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11917140B2 (en) 2018-03-08 2024-02-27 Samsung Electronics Co., Ltd. Selection of an extended intra prediction mode

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2763414B1 (en) 2011-09-29 2020-09-23 Sharp Kabushiki Kaisha Image decoding device and image decoding method for performing bi-prediction to uni-prediction conversion
US10110891B2 (en) 2011-09-29 2018-10-23 Sharp Kabushiki Kaisha Image decoding device, image decoding method, and image encoding device
KR102407474B1 (ko) 2011-10-18 2022-06-10 엘지전자 주식회사 인트라 예측 방법 및 그 장치
PT2773118T (pt) 2011-10-24 2020-09-25 Innotive Ltd Método e aparelho para descodificação de imagens
US9025662B2 (en) * 2011-10-24 2015-05-05 Infobridge Pte. Ltd. Image decoding apparatus
KR20130049522A (ko) 2011-11-04 2013-05-14 오수미 인트라 예측 블록 생성 방법
KR20130050407A (ko) 2011-11-07 2013-05-16 오수미 인터 모드에서의 움직임 정보 생성 방법
US10277915B2 (en) * 2011-11-07 2019-04-30 Qualcomm Incorporated Signaling quantization matrices for video coding
CN108174205A (zh) 2011-12-05 2018-06-15 Lg 电子株式会社 帧内预测的方法和设备
ES2961654T3 (es) 2012-06-29 2024-03-13 Electronics & Telecommunications Res Inst Método y dispositivo para codificar/decodificar imágenes
US9380307B2 (en) * 2012-11-19 2016-06-28 Qualcomm Incorporated Method and system for intra base layer (BL) transform in video coding
US11470339B2 (en) * 2013-08-27 2022-10-11 Qualcomm Incorporated Residual prediction for intra block copying
CN104219531B (zh) * 2014-09-29 2018-02-06 北方工业大学 基于线状帧内块拷贝的hevc屏幕内容编码
WO2016136106A1 (ja) * 2015-02-27 2016-09-01 Kddi株式会社 符号化装置及び復号装置
US9769499B2 (en) * 2015-08-11 2017-09-19 Google Inc. Super-transform video coding
CN108353193B (zh) * 2015-08-19 2022-07-15 Lg 电子株式会社 基于多个基于图的模型处理视频数据的方法和设备
US10547854B2 (en) * 2016-05-13 2020-01-28 Qualcomm Incorporated Neighbor based signaling of intra prediction modes
KR102447450B1 (ko) * 2016-09-05 2022-09-26 엘지전자 주식회사 영상 부호화/복호화 방법 및 이를 위한 장치
WO2018061550A1 (ja) * 2016-09-28 2018-04-05 シャープ株式会社 画像復号装置及び画像符号化装置
US10506228B2 (en) 2016-10-04 2019-12-10 Qualcomm Incorporated Variable number of intra modes for video coding
US10728578B2 (en) 2017-03-06 2020-07-28 Sony Corporation Bias minimization for successive image reconstruction based on embedded codec circuitry
EP3609183B1 (en) 2017-04-13 2023-05-03 LG Electronics Inc. Image encoding/decoding method and device therefor
US10701393B2 (en) * 2017-05-10 2020-06-30 Mediatek Inc. Method and apparatus of reordering motion vector prediction candidate set for video coding
IL273437B1 (en) 2017-10-18 2024-02-01 Samsung Electronics Co Ltd Method and device for video decoding, and method and device for video encoding
GB2567861A (en) 2017-10-27 2019-05-01 Sony Corp Image data encoding and decoding
US10785479B2 (en) 2018-03-30 2020-09-22 Hulu, LLC Intra prediction mode signaling for video coding
US10893285B2 (en) * 2018-06-29 2021-01-12 FG Innovation Company Limited Device and method for coding video data based on one or more reference lines
US11516506B2 (en) * 2018-10-05 2022-11-29 Lg Electronics Inc. Method and apparatus for processing image service
KR20200041801A (ko) * 2018-10-12 2020-04-22 인텔렉추얼디스커버리 주식회사 영상 부호화/복호화 방법 및 장치
US11159789B2 (en) 2018-10-24 2021-10-26 City University Of Hong Kong Generative adversarial network based intra prediction for video coding
CN111263156B (zh) * 2019-02-20 2022-03-25 北京达佳互联信息技术有限公司 视频解码方法、视频编码方法及装置
CN117241014A (zh) * 2019-06-05 2023-12-15 华为技术有限公司 Mpm列表构建方法、色度块的帧内预测模式获取方法及装置
KR20220005591A (ko) 2019-06-24 2022-01-13 엘지전자 주식회사 크로마 블록의 최대 변환 크기 설정을 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
EP3965416B1 (en) 2020-09-08 2022-08-03 Axis AB Method and device for intra-coding an image frame

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7236524B2 (en) * 2002-05-28 2007-06-26 Sharp Laboratories Of America, Inc. Methods and systems for image intra-prediction mode communication
JP5017086B2 (ja) * 2002-07-15 2012-09-05 日立コンシューマエレクトロニクス株式会社 動画像復号化方法
JP2006005438A (ja) * 2004-06-15 2006-01-05 Sony Corp 画像処理装置およびその方法
KR100621581B1 (ko) * 2004-07-15 2006-09-13 삼성전자주식회사 기초 계층을 포함하는 비트스트림을 프리디코딩,디코딩하는 방법, 및 장치
CN100348051C (zh) * 2005-03-31 2007-11-07 华中科技大学 一种增强型帧内预测模式编码方法
KR100678911B1 (ko) * 2005-07-21 2007-02-05 삼성전자주식회사 방향적 인트라 예측의 적용을 확장하여 비디오 신호를인코딩하고 디코딩하는 방법 및 장치
KR101311402B1 (ko) 2006-03-23 2013-09-25 삼성전자주식회사 영상의 부호화 방법 및 장치, 복호화 방법 및 장치
CN101087427B (zh) * 2006-06-06 2011-04-06 北京大学深圳研究生院 一种h.264标准的帧内预测模式选择方法
KR100927733B1 (ko) * 2006-09-20 2009-11-18 한국전자통신연구원 잔여계수의 상관성에 따라 변환기를 선택적으로 이용한부호화/복호화 장치 및 그 방법
CN101536530B (zh) * 2006-11-07 2011-06-08 三星电子株式会社 基于运动估计进行视频编码和解码的方法和设备
TW200830881A (en) * 2007-01-10 2008-07-16 Beyond Innovation Tech Co Ltd Method for processing images
JP2008193627A (ja) * 2007-01-12 2008-08-21 Mitsubishi Electric Corp 画像符号化装置、画像復号装置、および画像符号化方法、画像復号方法
JP5026092B2 (ja) * 2007-01-12 2012-09-12 三菱電機株式会社 動画像復号装置および動画像復号方法
US8233537B2 (en) 2007-03-19 2012-07-31 Texas Instruments Incorporated Efficient implementation of H.264 4 by 4 intra prediction on a VLIW processor
WO2008120434A1 (ja) * 2007-03-28 2008-10-09 Panasonic Corporation 復号化回路、復号化方法、符号化回路及び符号化方法
US20090147849A1 (en) * 2007-12-07 2009-06-11 The Hong Kong University Of Science And Technology Intra frame encoding using programmable graphics hardware
KR100940444B1 (ko) * 2007-12-18 2010-02-10 한국전자통신연구원 공간적 에지 검출을 이용한 인트라 예측 모드 구성 방법
US20090161757A1 (en) * 2007-12-21 2009-06-25 General Instrument Corporation Method and Apparatus for Selecting a Coding Mode for a Block
US8542730B2 (en) * 2008-02-22 2013-09-24 Qualcomm, Incorporated Fast macroblock delta QP decision
KR101591825B1 (ko) * 2008-03-27 2016-02-18 엘지전자 주식회사 비디오 신호의 인코딩 또는 디코딩 방법 및 장치
US8897359B2 (en) * 2008-06-03 2014-11-25 Microsoft Corporation Adaptive quantization for enhancement layer video coding
US8634456B2 (en) * 2008-10-03 2014-01-21 Qualcomm Incorporated Video coding with large macroblocks
US8514942B2 (en) * 2008-12-31 2013-08-20 Entropic Communications, Inc. Low-resolution video coding content extraction
US9113168B2 (en) * 2009-05-12 2015-08-18 Lg Electronics Inc. Method and apparatus of processing a video signal
PT2449782T (pt) * 2009-07-01 2018-02-06 Thomson Licensing Métodos e aparelhos para sinalizar a intra predição para grandes blocos para codificadores e descodificadores de vídeo
CN101621692B (zh) * 2009-07-27 2011-04-20 宁波大学 一种基于预测模式的h.264/avc视频信息隐藏方法
KR101452860B1 (ko) * 2009-08-17 2014-10-23 삼성전자주식회사 영상의 부호화 방법 및 장치, 영상 복호화 방법 및 장치
KR101507344B1 (ko) * 2009-08-21 2015-03-31 에스케이 텔레콤주식회사 가변 길이 부호를 이용한 인트라 예측모드 부호화 방법과 장치, 및 이를 위한기록 매체
KR20110065089A (ko) * 2009-12-09 2011-06-15 삼성전자주식회사 영상의 부호화 방법 및 장치, 그 복호화 방법 및 장치
KR101487687B1 (ko) * 2010-01-14 2015-01-29 삼성전자주식회사 큰 크기의 변환 단위를 이용한 영상 부호화, 복호화 방법 및 장치
US8902978B2 (en) * 2010-05-30 2014-12-02 Lg Electronics Inc. Enhanced intra prediction mode signaling
CN101854551B (zh) * 2010-06-08 2012-08-15 浙江大学 帧内预测模式编解码方法及装置
US9215470B2 (en) * 2010-07-09 2015-12-15 Qualcomm Incorporated Signaling selected directional transform for video coding
US9378185B2 (en) * 2010-09-30 2016-06-28 Texas Instruments Incorporated Transform and quantization architecture for video coding and decoding
US9338449B2 (en) * 2011-03-08 2016-05-10 Qualcomm Incorporated Harmonized scan order for coding transform coefficients in video coding
WO2012122495A1 (en) 2011-03-10 2012-09-13 Huawei Technologies Co., Ltd. Using multiple prediction sets to encode extended unified directional intra mode numbers for robustness
US9654785B2 (en) * 2011-06-09 2017-05-16 Qualcomm Incorporated Enhanced intra-prediction mode signaling for video coding using neighboring mode
GB2494468B (en) 2011-09-12 2014-01-15 Canon Kk Method and device for encoding or decoding information representing prediction modes
CN106851300B (zh) 2011-09-13 2020-05-26 寰发股份有限公司 基于最可能模式的帧内预测模式的方法及装置
CN107197309B (zh) 2011-10-07 2020-02-18 英迪股份有限公司 对视频信号进行解码的方法
CN104935942B (zh) * 2011-10-24 2016-08-24 英孚布瑞智有限私人贸易公司 对帧内预测模式进行解码的方法
US9025662B2 (en) * 2011-10-24 2015-05-05 Infobridge Pte. Ltd. Image decoding apparatus
PT2773118T (pt) * 2011-10-24 2020-09-25 Innotive Ltd Método e aparelho para descodificação de imagens
KR20130049524A (ko) * 2011-11-04 2013-05-14 오수미 인트라 예측 블록 생성 방법
KR20130049523A (ko) * 2011-11-04 2013-05-14 오수미 인트라 예측 블록 생성 장치
KR20130049522A (ko) * 2011-11-04 2013-05-14 오수미 인트라 예측 블록 생성 방법
KR20130049526A (ko) * 2011-11-04 2013-05-14 오수미 복원 블록 생성 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11917140B2 (en) 2018-03-08 2024-02-27 Samsung Electronics Co., Ltd. Selection of an extended intra prediction mode

Also Published As

Publication number Publication date
CA2913567A1 (en) 2013-05-10
AU2016203217B2 (en) 2017-12-14
TW201644274A (zh) 2016-12-16
CA2913567C (en) 2017-09-26
US10623732B2 (en) 2020-04-14
ES2881980T3 (es) 2021-11-30
EP3346447A1 (en) 2018-07-11
PL2774122T3 (pl) 2018-09-28
CA3111640C (en) 2023-10-31
RS57282B1 (sr) 2018-08-31
RU2016142728A3 (ko) 2019-10-31
JP2015195614A (ja) 2015-11-05
JP5789343B2 (ja) 2015-10-07
CN107613293B (zh) 2020-10-20
CN107682697B (zh) 2020-06-09
AU2012331601B2 (en) 2016-02-18
RU2014111828A (ru) 2015-12-10
JP2014534751A (ja) 2014-12-18
JP2017130969A (ja) 2017-07-27
RU2016142727A (ru) 2018-12-18
RU2016142725A (ru) 2018-12-17
MX2014003912A (es) 2014-07-28
CN107770534B (zh) 2020-08-04
PL3346447T3 (pl) 2021-11-29
CN107682696B (zh) 2020-06-23
CA2976066C (en) 2019-12-03
US20150189274A1 (en) 2015-07-02
CN107682697A (zh) 2018-02-09
TWI558170B (zh) 2016-11-11
EP2774122B1 (en) 2018-04-11
MX340475B (es) 2016-07-08
TW201921926A (zh) 2019-06-01
RU2016142728A (ru) 2018-12-17
CN107734334B (zh) 2020-07-24
JP2015195615A (ja) 2015-11-05
CN107613293A (zh) 2018-01-19
JP6118374B2 (ja) 2017-04-19
MX340477B (es) 2016-07-08
AU2016203217A1 (en) 2016-06-09
PE20142032A1 (es) 2014-12-17
RU2016142725A3 (ko) 2019-12-02
JP6101316B2 (ja) 2017-03-22
AU2016203214B2 (en) 2018-01-18
AU2012331601A1 (en) 2014-04-10
JP6116626B2 (ja) 2017-04-19
CN107734334A (zh) 2018-02-23
AU2016203216B2 (en) 2017-12-14
CA2976066A1 (en) 2013-05-10
CN107682696A (zh) 2018-02-09
EP3379492A1 (en) 2018-09-26
US20150189273A1 (en) 2015-07-02
JP6116625B2 (ja) 2017-04-19
US9497463B2 (en) 2016-11-15
PT2774122T (pt) 2018-07-03
US10015489B2 (en) 2018-07-03
EP3346447B1 (en) 2021-04-28
IL247675B (en) 2018-04-30
US10917640B2 (en) 2021-02-09
WO2013064099A1 (en) 2013-05-10
AU2016203215A1 (en) 2016-06-09
BR122020014293B1 (pt) 2021-07-20
HRP20181016T1 (hr) 2018-11-02
IL247674A0 (en) 2016-11-30
CA2913566C (en) 2018-04-10
RU2711306C2 (ru) 2020-01-16
MX356330B (es) 2018-05-24
IL231705A (en) 2016-09-29
US9497462B2 (en) 2016-11-15
US20150195530A1 (en) 2015-07-09
TW202013959A (zh) 2020-04-01
JP2015195617A (ja) 2015-11-05
TW201342936A (zh) 2013-10-16
TW201743608A (zh) 2017-12-16
US20180288412A1 (en) 2018-10-04
DK2774122T3 (en) 2018-07-16
CA3057770A1 (en) 2013-05-10
TWI699992B (zh) 2020-07-21
MY170819A (en) 2019-08-30
US20170041603A1 (en) 2017-02-09
JP2015195616A (ja) 2015-11-05
US20140247868A1 (en) 2014-09-04
EP3364372A1 (en) 2018-08-22
MX2018006177A (es) 2023-03-06
BR122020014288B1 (pt) 2021-07-13
CA2849028A1 (en) 2013-05-10
TWI650001B (zh) 2019-02-01
ES2669502T3 (es) 2018-05-28
SG11201400674SA (en) 2014-04-28
EP3364373A1 (en) 2018-08-22
MX340476B (es) 2016-07-08
KR20140074348A (ko) 2014-06-17
MX340474B (es) 2016-07-08
IL247674B (en) 2019-09-26
CY1120400T1 (el) 2019-07-10
IN2014CN03908A (ko) 2015-10-16
RU2016142729A (ru) 2018-12-17
RU2016142727A3 (ko) 2019-10-31
CA2913566A1 (en) 2013-05-10
TW202037158A (zh) 2020-10-01
CN103096067A (zh) 2013-05-08
TWI684350B (zh) 2020-02-01
MY190515A (en) 2022-04-26
CN107770535B (zh) 2020-07-14
CA3057770C (en) 2021-04-27
AU2016203216A1 (en) 2016-06-09
MY190529A (en) 2022-04-27
BR122020014298B1 (pt) 2021-07-20
LT2774122T (lt) 2018-06-11
SI2774122T1 (en) 2018-06-29
MY190516A (en) 2022-04-26
TWI603610B (zh) 2017-10-21
TWI715506B (zh) 2021-01-01
AU2016203215B2 (en) 2017-12-14
KR20140066760A (ko) 2014-06-02
IL247676A (en) 2017-10-31
CN107809640B (zh) 2020-06-09
CA3111640A1 (en) 2013-05-10
RU2604340C2 (ru) 2016-12-10
ZA201600849B (en) 2017-05-31
CN107809640A (zh) 2018-03-16
NO2774122T3 (ko) 2018-09-08
CN107770535A (zh) 2018-03-06
HUE054637T2 (hu) 2021-09-28
EP2774122A4 (en) 2015-07-29
RU2016142729A3 (ko) 2019-11-29
IL231705A0 (en) 2014-05-28
US9014262B2 (en) 2015-04-21
US9344728B2 (en) 2016-05-17
HUE037565T2 (hu) 2018-09-28
IL247673B (en) 2018-04-30
CN107770534A (zh) 2018-03-06
CN103096067B (zh) 2017-11-28
MY190530A (en) 2022-04-27
US20200228799A1 (en) 2020-07-16
AU2016203214A1 (en) 2016-06-09
CA2849028C (en) 2016-01-26
EP2774122A1 (en) 2014-09-10
KR20140070598A (ko) 2014-06-10
MY190514A (en) 2022-04-26
RU2711467C2 (ru) 2020-01-17
JP6367413B2 (ja) 2018-08-01
US20150189275A1 (en) 2015-07-02
US9503726B2 (en) 2016-11-22
SG10201607196UA (en) 2016-10-28
CA3212893A1 (en) 2013-05-10
RU2710995C2 (ru) 2020-01-14
ZA201600847B (en) 2017-05-31
BR122020014282B1 (pt) 2021-07-20
RU2710996C2 (ru) 2020-01-14

Similar Documents

Publication Publication Date Title
KR20130049525A (ko) 잔차 블록 복원을 위한 역변환 방법
KR20130049524A (ko) 인트라 예측 블록 생성 방법
KR20130049526A (ko) 복원 블록 생성 방법
KR101927969B1 (ko) 비디오의 엔트로피 부호화 방법 및 장치, 및 기록매체
KR20130049523A (ko) 인트라 예측 블록 생성 장치
KR101452195B1 (ko) 인트라 예측 모드를 유도하는 방법 및 장치
KR20130058524A (ko) 색차 인트라 예측 블록 생성 방법
KR20200007671A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20180077132A (ko) 영상의 부호화 방법 및 장치, 및 컴퓨터로 판독 가능한 기록 매체

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITB Written withdrawal of application