KR101791242B1 - 영상 부호화/복호화 장치 및 방법 - Google Patents

영상 부호화/복호화 장치 및 방법 Download PDF

Info

Publication number
KR101791242B1
KR101791242B1 KR1020110035425A KR20110035425A KR101791242B1 KR 101791242 B1 KR101791242 B1 KR 101791242B1 KR 1020110035425 A KR1020110035425 A KR 1020110035425A KR 20110035425 A KR20110035425 A KR 20110035425A KR 101791242 B1 KR101791242 B1 KR 101791242B1
Authority
KR
South Korea
Prior art keywords
block
sub
pixel
blocks
prediction
Prior art date
Application number
KR1020110035425A
Other languages
English (en)
Other versions
KR20110115986A (ko
Inventor
송진한
임정연
문주희
이영렬
김해광
전병우
한종기
박형미
이주옥
Original Assignee
에스케이텔레콤 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이텔레콤 주식회사 filed Critical 에스케이텔레콤 주식회사
Priority to PCT/KR2011/002763 priority Critical patent/WO2011129673A2/ko
Priority to US13/641,677 priority patent/US10250881B2/en
Priority to CN201510633174.6A priority patent/CN105306943B/zh
Priority to CN201180029771.8A priority patent/CN102939756B/zh
Priority to CN201610065599.6A priority patent/CN105704490B/zh
Priority to CN201510133860.7A priority patent/CN104837016B/zh
Priority to CN201510633175.0A priority patent/CN105187827B/zh
Publication of KR20110115986A publication Critical patent/KR20110115986A/ko
Priority to US14/668,501 priority patent/US9451270B2/en
Priority to US15/231,315 priority patent/US9743085B2/en
Application granted granted Critical
Publication of KR101791242B1 publication Critical patent/KR101791242B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/117Filters, e.g. for pre-processing or post-processing
    • 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/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/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • 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
    • 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/182Methods 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 pixel
    • 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/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
    • H04N19/615Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding using motion compensated temporal filtering [MCTF]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Abstract

영상 부호화/복호화 장치 및 방법이 개시된다. 본 발명의 실시예에 따른 영상 부호화/복호화 장치는, 매크로블록을 이용하여 분할된 서브블록을 예측하여 예측 서브블록을 생성하며, 서브블록과 예측 서브블록을 감산하여 잔여 서브블록을 생성하고, 잔여 서브블록을 상기 서브블록의 크기에 따라 선택되는 변환을 이용하여 변환하고 양자화하여 양자화된 변환 계수를 생성하며, 양자화된 변환 계수를 CABAC(Context-Adaptive Binary Arithmetic Coding)를 이용하여 부호화하는 경우, 사용된 매크로블록 및 분할된 서브블록에 따라 다른 컨텍스트 테이블을 사용하여 부호화된 영상 데이터를 생성하는 영상 부호화기; 및 CABAC를 이용하여 매크로블록 및 분할된 서브블록에 따라 다른 컨텍스트 테이블을 사용하여 부호화된 데이터를 복호화하여 분할 타입 정보, 움직임 정보, 변환 타입 정보 및 양자화된 변환 계수를 복원하며, 복원되는 변환 타입 정보에 의해 식별되는 변환을 이용하여 양자화된 변환 계수를 역 양자화 및 역 변환하여 잔여 서브블록을 복원하고, 복원되는 분할 타입 정보에 따라 식별되는 서브블록을 복원되는 움직임 정보를 이용하여 예측하여 예측 서브블록을 생성하며, 예측 서브블록과 잔여 서브블록을 가산하여 서브블록을 복원하고, 복원된 서브블록에 기초하여 매크로블록을 복원하는 영상 복호화기를 포함하는 것을 특징으로 한다.

Description

영상 부호화/복호화 장치 및 방법{Video Coding and Decoding Method and Apparatus}
본 발명은 영상 부호화/복호화 장치 및 방법에 관한 것이다. 더욱 상세하게는, 확장된 매크로블록을 다양한 크기와 형상의 서브블록으로 분할하고 분할된 서브블록의 크기와 형상에 따라 다른 예측 단위와 변환 단위를 이용하여 영상을 부호화함으로써 영상압축 효율을 향상시키기 위한 방법 및 장치에 관한 것이다. 또한, 이와 같은 영상 부호화 장치로부터 비트스트림을 수신하여 대응적으로 영상을 복호화함으로써, 영상의 복원 효율을 향상시키기 위한 장치 및 방법에 관한 것이다.
이 부분에 기술된 내용은 단순히 본 발명의 실시예에 대한 배경 정보를 제공할 뿐 종래기술을 구성하는 것은 아니다.
동영상 데이터를 압축하기 위한 표준화된 기술로는 현재 H.261, H.263, H.264, MPEG-2, MPEG-4 등이 있다. 이러한 기존의 동영상 압축 기술에 따르면, 각 영상을 휘도 성분의 16x16 크기의 화소들과 색차 성분의 8x8 크기의 화소들의 사각 영역으로 이루어진 고정된 크기의 매크로블록(Macroblock)들로 나누어 부호화한다. 각 매크로블록의 모든 휘도 성분(Luma Component)과 색차 성분(Chroma Component)들은 공간적으로나 시간적으로 예측되고, 예측 잔여(Predicted Residual)는 변환(Transform) 및 양자화(Quantization), 엔트로피 부호화(Entropy Coding) 등의 과정을 거치면서 압축된다.
H.264/AVC 압축 표준에 따른 부호화 장치는 각 매크로블록을 16x16 크기, 8x8 크기, 4x4 크기의 더 작은 블록으로 분할하여 인트라 예측 부호화(Intra Prediction Encoding)할 수 있으며, 16x16 화소 블록에 대해서는 4 가지의 예측 모드 중 하나를 사용하고, 8x8 화소 블록과 4x4 화소 블록에 대해서는 9 가지의 예측 모드 중 하나를 사용하여 인트라 예측 부호화한다. 인터 예측 부호화(Inter Prediction Encoding)의 경우, 각 매크로블록은 16x16 크기, 16x8 크기, 8x16 크기, 8x8 크기, 8x4 크기, 4x8 크기, 4x4 화소 블록으로 분할되어 인터 예측 부호화될 수 있다. 변환은 8x8 크기 또는 4x4 화소 블록 단위로 적용되고, 변환 계수(Transform Coefficient)의 양자화로는 스칼라(Scalar) 양자화가 사용된다.
하지만, 16x16 크기의 매크로블록은 대체로 QCIF, CIF급의 작은 영상에 적합한 크기라 할 수 있으며, 4Kx2K 영상과 같은 고해상도 영상 압축을 위한 매크로블록의 크기로 부적합하다. 또한, 통상적인 영상 압축 기술에서는 고정된 크기의 매크로블록을 이용하여 영상을 부호화하기 때문에(비록 H.264/AVC에서는 매크로블록을 더 작은 블록 단위로 분할하여 부호화하지만, 매크로블록의 크기는 고정됨), 고해상도의 영상을 부호화하는 경우에는 효율적인 부호화가 어려운 문제점이 있다.
또한, 영상의 복호화는 영상의 부호화에 대응하여 이루어지기 때문에, 고해상도 영상의 부호화에 대한 압축 효율이 저하된 상태에서는 고효율의 복호화를 기대하기 어렵다는 문제점이 있다.
전술한 문제점을 해결하기 위해 본 발명은, 매크로블록을 다양한 크기로 확장시키고, 확장된 매크로블록을 다양한 크기와 모양의 서브블록으로 분할하며 분할된 서브블록의 크기에 따라 다른 예측 단위와 변환 단위를 이용하여 영상을 부호화 및 복호화함으로써 압축 효율 및 복원 효율을 향상시키는 데 주된 목적이 있다.
전술한 목적을 달성하기 위해 본 발명은, 영상 부호화/복호화 장치에 있어서, 매크로블록을 이용하여 분할된 서브블록을 예측하여 예측 서브블록을 생성하며, 서브블록과 예측 서브블록을 감산하여 잔여 서브블록을 생성하고, 잔여 서브블록을 상기 서브블록의 크기에 따라 선택되는 변환을 이용하여 변환하고 양자화하여 양자화된 변환 계수를 생성하며, 양자화된 변환 계수를 CABAC(Context-Adaptive Binary Arithmetic Coding)를 이용하여 부호화하는 경우, 사용된 매크로블록 및 분할된 서브블록에 따라 다른 컨텍스트 테이블을 사용하여 부호화된 영상 데이터를 생성하는 영상 부호화기; 및 CABAC를 이용하여 매크로블록 및 분할된 서브블록에 따라 다른 컨텍스트 테이블을 사용하여 부호화된 데이터를 복호화하여 분할 타입 정보, 움직임 정보, 변환 타입 정보 및 양자화된 변환 계수를 복원하며, 복원되는 변환 타입 정보에 의해 식별되는 변환을 이용하여 양자화된 변환 계수를 역 양자화 및 역 변환하여 잔여 서브블록을 복원하고, 복원되는 분할 타입 정보에 따라 식별되는 서브블록을 복원되는 움직임 정보를 이용하여 예측하여 예측 서브블록을 생성하며, 예측 서브블록과 잔여 서브블록을 가산하여 서브블록을 복원하고, 복원된 서브블록에 기초하여 매크로블록을 복원하는 영상 복호화기를 포함하는 것을 특징으로 한다.
전술한 목적을 달성하기 위한 본 발명의 실시예에 따른 영상 부호화 장치는, 매크로블록을 이용하여 분할된 서브블록을 예측하여 예측 서브블록을 생성하는 예측기; 서브블록과 예측 서브블록을 감산하여 잔여 서브블록을 생성하는 감산기; 잔여 서브블록을 서브블록의 크기에 따라 선택되는 변환을 이용하여 변환하고 양자화하여 양자화된 변환 계수를 생성하는 변환 및 양자화기; 및 양자화된 변환 계수를 CABAC를 이용하여 부호화하는 경우, 사용된 매크로블록 및 분할된 서브블록에 따라 다른 컨텍스트 테이블을 사용하여 부호화된 영상 데이터를 생성하는 부호화기를 포함하는 것을 특징으로 한다.
여기서, 부호화기는, 부호화할 현재블록의 이진신호의 발생확률을 주변블록의 상황에 따라 계산하고 변경할 수 있다.
또한, 부호화기는, 부호화할 현재블록의 이진신호의 발생확률에 대응하여 복수의 컨텍스트 테이블을 설정하고, 현재블록과 주변블록의 상황에 따라 복수의 컨텍스트 테이블 중 다른 컨텍스트 테이블을 사용하여 부호화된 영상 데이터를 생성할 수 있다.
또한, 부호화기는, 픽처 타입, 신택스(syntax)의 종류, 신택스를 부호화할 때 주변블록에 대응하는 값 중의 적어도 하나에 기초하여 컨텍스트 테이블을 선택하여 부호화된 영상 데이터를 생성할 수 있다.
또한, 부호화기는, 부호화할 현재블록의 상단 블록 및 좌측 블록이 모두 SKIP 모드인지, 아닌지 또는 어느 하나가 SKIP 모드인지에 따라 skipX_flag에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 부호화기는, 부호화할 현재블록의 상단 블록 및 좌측 블록이 모두 인터 모드인지, 인트라 모드인지 또는 어느 하나가 인터 모드인지에 따라 interX_flag에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 부호화기는, 상단 블록 또는 좌측 블록이 16x16 화소블록보다 큰 블록인 경우, 인터 모드는 인트라 모드 및 인터 모드가 혼재하는 경우 및 인터 모드만 존재하는 경우에 따라 interX_flag에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 부호화기는, 부호화할 현재블록의 상단 블록 및 좌측 블록이 모두 direct 모드인지, 아닌지 또는 어느 하나가 direct 모드인지에 따라 directX_flag에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 부호화기는, 부호화할 현재블록의 상단 블록 및 좌측 블록이 모두 확장된 매크로블록 단위로 부호화가 수행되었는지, 아닌지 또는 어느 하나가 확장된 매크로블록 단위로 부호화가 수행되었는지에 따라 extended_mb_flag에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 부호화기는, 부호화할 현재블록의 상단 블록 및 좌측 블록이 모두 참조블록으로 사용되었는지, 아닌지 또는 어느 하나가 참조블록으로 사용되었는지에 따라 B_pdir에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 부호화기는, 부호화할 현재블록의 상단 블록 또는 좌측 블록이 L0 예측, L1 예측 또는 양방향 예측인지의 여부에 따라 B_pdir에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 부호화할 현재블록의 상단 블록 및 하단 블록에 따라 MVD/ref_idx, CBPX_flag, 변환 타입 중의 적어도 하나에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 변환 타입에 대한 컨텍스트 테이블은, 부호화할 현재블록의 사용 가능한 변환 타입의 종류에 따라 다른 것이 바람직하다.
전술한 목적을 달성하기 위한 본 발명의 실시예에 따른 영상 복호화 장치는, CABAC를 이용하여 매크로블록 및 분할된 서브블록에 따라 다른 컨텍스트 테이블을 사용하여 부호화된 데이터를 복호화하여 분할 타입 정보, 움직임 정보, 변환 타입 정보 및 양자화된 변환 계수를 복원하는 복호화기; 복원되는 변환 타입 정보에 의해 식별되는 변환을 이용하여 양자화된 변환 계수를 역 양자화 및 역 변환하여 잔여 서브블록을 복원하는 역 양자화기 및 역 변환기; 복원되는 분할 타입 정보에 따라 식별되는 서브블록을 복원되는 움직임 정보를 이용하여 예측하여 예측 서브블록을 생성하는 예측기; 및 예측 서브블록과 잔여 서브블록을 가산하여 서브블록을 복원하는 가산기를 포함하며, 복원된 서브블록에 기초하여 매크로블록을 복원하는 것을 특징으로 한다.
여기서, 복호화기는, 복원할 현재블록의 상단 블록 및 좌측 블록에 따라 이진신호의 발생확률이 다르게 설정된 컨텍스트 테이블에 기초하여 부호화된 데이터를 복원할 수 있다.
전술한 목적을 달성하기 위한 본 발명의 실시예에 따른 영상 부호화/복호화 방법은, 매크로블록을 이용하여 분할된 서브블록을 예측하여 예측 서브블록을 생성하며, 서브블록과 예측 서브블록을 감산하여 잔여 서브블록을 생성하고, 잔여 서브블록을 서브블록의 크기에 따라 선택되는 변환을 이용하여 변환하고 양자화하여 양자화된 변환 계수를 생성하며, 양자화된 변환 계수를 CABAC를 이용하여 부호화하는 경우, 사용된 매크로블록 및 분할된 서브블록에 따라 다른 컨텍스트 테이블을 사용하여 부호화된 영상 데이터를 생성하는 단계; 및 CABAC를 이용하여 매크로블록 및 분할된 서브블록에 따라 다른 컨텍스트 테이블을 사용하여 부호화된 데이터를 복호화하여 분할 타입 정보, 움직임 정보, 변환 타입 정보 및 양자화된 변환 계수를 복원하며, 복원되는 변환 타입 정보에 의해 식별되는 변환을 이용하여 양자화된 변환 계수를 역 양자화 및 역 변환하여 잔여 서브블록을 복원하고, 복원되는 분할 타입 정보에 따라 식별되는 서브블록을 복원되는 움직임 정보를 이용하여 예측하여 예측 서브블록을 생성하며, 예측 서브블록과 잔여 서브블록을 가산하여 서브블록을 복원하고, 복원된 서브블록에 기초하여 매크로블록을 복원하는 단계를 포함하는 것을 특징으로 한다.
전술한 목적을 달성하기 위한 영상 부호화 방법은, 매크로블록을 이용하여 분할된 서브블록을 예측하여 예측 서브블록을 생성하는 단계; 서브블록과 예측 서브블록을 감산하여 잔여 서브블록을 생성하는 단계; 잔여 서브블록을 서브블록의 크기에 따라 선택되는 변환을 이용하여 변환하고 양자화하여 양자화된 변환 계수를 생성하는 단계; 및 양자화된 변환 계수를 CABAC를 이용하여 부호화하는 경우, 사용된 매크로블록 및 분할된 서브블록에 따라 다른 컨텍스트 테이블을 사용하여 부호화된 영상 데이터를 생성하는 단계를 포함하는 것을 특징으로 한다.
여기서, 영상 데이터 생성단계는, 부호화할 현재블록의 이진신호의 발생확률을 주변블록의 상황에 따라 계산하고 변경할 수 있다.
또한, 영상 데이터 생성단계는, 부호화할 현재블록의 이진신호의 발생확률에 대응하여 복수의 컨텍스트 테이블을 설정하고, 현재블록과 주변블록의 상황에 따라 복수의 컨텍스트 테이블 중 다른 컨텍스트 테이블을 사용하여 부호화된 영상 데이터를 생성할 수 있다.
또한, 영상 데이터 생성단계는, 픽처 타입, 신택스(syntax)의 종류, 신택스를 부호화할 때 주변블록에 대응하는 값 중의 적어도 하나에 기초하여 컨텍스트 테이블을 선택하여 부호화된 영상 데이터를 생성할 수 있다.
또한, 영상 데이터 생성단계는, 부호화할 현재블록의 상단 블록 및 좌측 블록이 모두 SKIP 모드인지, 아닌지 또는 어느 하나가 SKIP 모드인지에 따라 skipX_flag에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 영상 데이터 생성단계는, 부호화할 현재블록의 상단 블록 및 좌측 블록이 모두 인터 모드인지, 인트라 모드인지 또는 어느 하나가 인터 모드인지에 따라 interX_flag에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 영상 데이터 생성단계는, 상단 블록 또는 좌측 블록이 16x16 화소블록보다 큰 블록인 경우, 인터 모드는 인트라 모드 및 인터 모드가 혼재하는 경우, 및 인터 모드만 존재하는 경우에 따라 interX_flag에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 영상 데이터 생성단계는, 부호화할 현재블록의 상단 블록 및 좌측 블록이 모두 direct 모드인지, 아닌지 또는 어느 하나가 direct 모드인지에 따라 directX_flag에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 영상 데이터 생성단계는, 부호화할 현재블록의 상단 블록 및 좌측 블록이 모두 확장된 매크로블록 단위로 부호화가 수행되었는지, 아닌지 또는 어느 하나가 확장된 매크로블록 단위로 부호화가 수행되었는지에 따라 extended_mb_flag에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 영상 데이터 생성단계는, 부호화할 현재블록의 상단 블록 및 좌측 블록이 모두 참조블록으로 사용되었는지, 아닌지 또는 어느 하나가 참조블록으로 사용되었는지에 따라 B_pdir에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 영상 데이터 생성단계는, 부호화할 현재블록의 상단 블록 또는 좌측 블록이 L0 예측, L1 예측 또는 양방향 예측인지의 여부에 따라 B_pdir에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 부호화할 현재블록의 상단 블록 및 하단 블록에 따라 MVD/ref_idx, CBPX_flag, 변환 타입 중의 적어도 하나에 대한 다른 컨텍스트 테이블을 사용할 수 있다.
또한, 변환 타입에 대한 컨텍스트 테이블은, 부호화할 현재블록의 사용 가능한 변환 타입의 종류에 따라 다를 수 있다.
전술한 목적을 달성하기 위한 본 발명의 실시예에 따른 영상 복호화 방법은, CABAC를 이용하여 매크로블록 및 분할된 서브블록에 따라 다른 컨텍스트 테이블을 사용하여 부호화된 데이터를 복호화하여 분할 타입 정보, 움직임 정보, 변환 타입 정보 및 양자화된 변환 계수를 복원하는 단계; 복원되는 변환 타입 정보에 의해 식별되는 변환을 이용하여 양자화된 변환 계수를 역 양자화 및 역 변환하여 잔여 서브블록을 복원하는 단계; 복원되는 분할 타입 정보에 따라 식별되는 서브블록을 복원되는 움직임 정보를 이용하여 예측하여 예측 서브블록을 생성하는 단계; 및 예측 서브블록과 잔여 서브블록을 가산하여 서브블록을 복원하는 단계를 포함하며, 복원된 서브블록에 기초하여 매크로블록을 복원하는 것을 특징으로 한다.
여기서, 복원할 현재블록의 상단 블록 및 좌측 블록에 따라 이진신호의 발생확률이 다르게 설정된 컨텍스트 테이블에 기초하여 부호화된 데이터를 복원하는 것이 바람직하다.
이상에서 설명한 바와 같이 본 발명에 의하면, 확장된 매크로블록을 다양한 크기와 모양의 서브블록으로 분할하고 분할된 서브블록의 크기에 따라 다른 예측 단위와 변환 단위를 이용하여 영상을 부호화 및 복호화함으로써 압축 효율 및 복원효율을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 영상 부호화 장치를 간략하게 나타낸 블록 구성도이다.
도 2는 본 발명의 실시예에 따라 입력되는 이미지를 패딩하였을 경우의 부호화 및 복호화를 설명하기 위해 도시한 도면으로서, 입력 이미지와 현재 부호화할 확장된 매크로블록의 위치를 나타낸 도면이다.
도 3은 도 2의 현재 부호화할 대상인 확장된 매크로블록을 확대한 도면이다.
도 4는 본 발명의 일 실시예에 따라 인트라 예측 부호화와 인터 예측 부호화를 위여 매크로블록을 다양한 크기의 서브블록으로 분할하는 과정의 예를 나타낸 도면이다.
도 5는 본 발명의 다른 실시예에 따라 인트라 예측 부호화와 인터 예측 부호화를 위하여 매크로블록을 다양한 크기의 서브블록으로 분할하는 과정의 예를 나타낸 도면이다.
도 6은 본 발명의 일 실시예에 따른 인트라 픽처의 부호화 방법과 부호화 데이터를 통해 전송할 관련 데이터를 설명하기 위한 예시도이다.
도 7은 본 발명의 일 실시예에 따른 휘도 성분의 인트라 예측 모드에 따른 9 가지의 예측 방향과 예측 모드 번호를 나타낸 예시도이다.
도 8은 본 발명의 일 실시예에 따른 휘도 성분의 인트라 예측 모드에 따른 4 가지의 예측 방향과 예측 모드 번호를 나타낸 예시도이다.
도 9는 본 발명의 일 실시예에 따른 휘도 성분의 인트라 예측 모드에 따른 3 가지의 예측 방향과 예측 모드 번호를 나타낸 예시도이다.
도 10은 본 발명의 일 실시예에 따른 색차 성분의 4 가지의 인트라 예측 모드에 따른 예측 방향과 예측 모드 번호를 나타낸 예시도이다.
도 11은 본 발명의 일 실시예에 따른 64x64 화소의 확장된 매크로블록에 대한 다양한 서브블록 타입을 나타낸 예시도이다.
도 12는 본 발명의 일 실시예에 따른 인터 픽처의 부호화 방법과 부호화 데이터를 통해 전송할 관련 데이터를 설명하기 위한 예시도이다.
도 13은 본 발명의 일 실시예에 따라 예측 움직임 벡터를 결정하는 과정을 설명하기 위한 예시도이다.
도 14는 본 발명의 일 실시예에 따른 8x16 화소 블록과 16x8 화소 블록의 예측 움직임 벡터를 결정하는 과정을 설명하기 위한 예시도이다.
도 15는 본 발명의 일 실시예에 따른 서브블록 크기에 따른 사용 가능한 변환의 종류와 변환 타입이 부호화되는 단위를 나타낸 예시도이다.
도 16은 본 발명의 일 실시예에 따른 디블록킹 필터링을 수행할 블록 경계를 나타낸 예시도이다.
도 17은 본 발명의 일 실시예에 따른 인트라 픽처의 신택스를 나타낸 예시도이다.
도 18은 본 발명의 일 실시예에 따른 분할 타입별 번호를 나타낸 예시도이다.
도 19는 본 발명의 일 실시예에 따라 확장된 매크로블록을 다양한 크기의 서브블록으로 분할하는 경우의 분할 타입 번호 부호화 순서를 설명하기 위해 도시한 도면이다.
도 20은 본 발명의 일 실시예에 따라 매크로블록이 분할 레이어별로 분할되는 과정을 순차적으로 나타낸 예시도이다.
도 21은 매크로블록의 레이어별 분할 타입 번호를 순차적으로 부호화하는 과정을 설명하기 위한 예시도이다.
도 22는 본 발명의 일 실시예에 따른 인트라 예측 모드의 부호화 순서를 나타낸 예시도이다.
도 23은 본 발명의 일 실시예에 따라 매크로블록의 인트라 예측 모드를 부호화하는 과정의 일 예를 설명하기 위한 예시도이다.
도 24는 본 발명의 일 실시예에 따라 인트라 매크로블록에 대한 CBPX_플래그와 CBP를 부호화 과정을 설명하기 위한 예시도이다.
도 25는 본 발명의 일 실시예에 따른 CBP의 구조를 나타낸 예시도이다.
도 26은 본 발명의 일 실시예에 따라 CBPX 플래그와 CBP를 부호화하는 순서의 일 예를 나타낸 예시도이다.
도 27은 본 발명의 일 실시예에 따라 인트라 매크로블록에 대한 CBPX 플래그와 CBP를 부호화하는 순서의 다른 예를 나타낸 예시도이다.
도 28은 본 발명의 일 실시예에 따른 분할 타입별 양자화된 변환 계수의 부호화 순서를 나타낸 예시도이다.
도 29는 본 발명의 일 실시예에 따른 부호화 데이터의 신택스 구조를 나타낸 예시도이다.
도 30은 본 발명의 일 실시예에 따른 P-픽처(또는 P-슬라이스)에서 사용되는 신택스의 예를 설명하기 위해 도시한 도면이다.
도 31은 본 발명의 일 실시예에 따른 B-픽처(또는 B-슬라이스)에서 사용되는 신택스의 예를 설명하기 위해 도시한 도면이다.
도 32는 본 발명의 일 실시예에 따른 SKIPX 플래그의 부호화 과정을 설명하기 위한 예시도이다.
도 33 및 도 34는 본 발명의 일 실시예에 따라 인터 매크로블록에 대한 CBPX_플래그, 변환 타입과 CBP를 부호화 과정을 설명하기 위한 예시도이다.
도 35는 본 발명의 실시예에 따른 skipX_flag를 부호화/복호화하기 위한 ctx_inc의 예를 나타낸 도면이다.
도 36은 본 발명의 실시예에 따른 interX_flag를 부호화/복호화하기 위한 ctx_inc의 예를 나타낸 도면이다.
도 37은 본 발명의 실시예에 따른 directX_flag를 부호화/복호화하기 위한 ctx_inc의 예를 나타낸 도면이다.
도 38 및 도 39는 본 발명의 실시예에 따라 트리 구조를 이용하여 분할 타입 정보를 부호화하는 과정을 설명하기 위해 도시한 도면이다.
도 40은 본 발명의 실시예에 따른 분할 타입의 부호화의 일 예를 나타낸 도면이다.
도 41은 본 발명의 실시예에 따른 분할 타입 부호화의 다른 예를 나타낸 도면이다.
도 42는 본 발명의 실시예에 따른 B_pdir를 부호화/복호화하기 위한 ctx_inc의 예를 나타낸 도면이다.
도 43은 본 발명의 실시예에 따른 사용 가능한 변환의 종류가 2 가지인 경우에 변환 타입의 부호화/복호화를 위한 ctx_inc의 예를 나타낸 도면이다.
도 44는 본 발명의 실시예에 따른 사용 가능한 변환의 종류가 3 가지인 경우에 변환 타입의 부호화/복호화를 위한 ctx_inc의 예를 나타낸 도면이다.
도 45는 본 발명의 실시예에 따른 사용 가능한 변환의 종류가 3 가지인 경우에 변환 타입의 부호화/복호화를 위한 ctx_inc의 다른 예를 나타낸 도면이다.
도 46은 본 발명의 일 실시예에 따른 영상 복호화 장치를 간략하게 나타낸 블록 구성도이다.
도 47은 영상의 경계 또는 슬라이스의 경계 등에서 인트라 예측을 나타낸 예시도이다.
도 48은 Plane 모드의 예시를 나타낸 도면이다.
도 49는 본 발명의 일 실시예에 따른 인트라 픽처의 매크로블록과 서브 블록의 부호화 순서도를 나타낸 예시도이다.
도 50은 본 발명의 실시예에 따른 인트라 픽처의 매크로블록과 서브블록의 부호화 순서도를 나타낸 또 다른 예시도이다.
도 51은 본 발명의 실시예에 따른 변환 서브 블록의 변환 계수 부호화 순서를 나타낸 예시도이다.
도 52는 본 발명의 실시예에 따른 인터 픽처의 인터 매크로블록과 서브블록의 부호화 순서를 나타낸 예시도이다.
도 53은 일괄 모드 플래그의 ctx_inc를 위한 예시도이다.
도 54는 차분 움직임 벡터 x 컴포넌트의 ctx_inc를 위한 예시도이다.
후술할 본 발명의 일 실시예에 따른 영상 부호화 장치(Video Encoding Apparatus)와 영상 복호화 장치(Video Decoding Apparatus)는 개인용 컴퓨터(PC: Personal Computer), 노트북 컴퓨터, 개인 휴대 단말기(PDA: Personal Digital Assistant), 휴대형 멀티미디어 플레이어(PMP: Portable Multimedia Player), 플레이스테이션 포터블(PSP: PlayStation Portable), 무선통신 단말기(Wireless Communication Terminal), 스마트 폰(Smart Phone) 등일 수 있으며, 각종 기기 또는 유무선 통신망과 통신을 수행하기 위한 통신 모뎀 등의 통신 장치, 영상을 부호화하거나 복호화하기 위한 각종 프로그램과 데이터를 저장하기 위한 메모리, 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서 등을 구비하는 다양한 장치를 의미한다.
또한, 영상 부호화 장치에 의해 비트스트림으로 부호화된 영상은 실시간 또는 비실시간으로 인터넷, 근거리 무선 통신망, 무선랜망, 와이브로망, 이동통신망, 유선 전화망 등의 유무선 통신망 등을 통하거나 케이블, 범용 직렬 버스(USB: Universal Serial Bus) 등의 통신 인터페이스를 통해 영상 복호화 장치로 전송되어 영상 복호화 장치에서 복호화되어 영상으로 복원되고 재생될 수 있다.
도 1은 본 발명의 일 실시예에 따른 영상 부호화 장치를 간략하게 나타낸 블록 구성도이다.
본 발명의 일 실시예에 따른 영상부호화 장치(100)는 예측기(110), 감산기(120), 변환기 및 양자화기(130), 부호화기(140), 역양자화기 및 역변환이기(150), 가산기(160), 필터(170) 및 픽처 버퍼(180)를 포함하여 구성될 수 있다.
예측기(110)는 인트라 예측기(112)와 인터 예측기(114)를 포함할 수 있으며, 인터 예측기(114)는 다시 움직임 추정기(116)와 움직임 보상기(118)를 포함할 수 있다.
입력 영상은 프레임 단위 또는 필드 단위로 도 1의 영상 부호화 장치(100)에 입력되거나, NxN(단, N은 16이상의 정수) 화소를 가지는 매크로블록들로 분할되어 영상 부호화 장치(100)에 입력될 수 있다. 즉, 입력 영상이 4Kx2K 영상과 같은 고해상도 영상인 경우, N이 16보다 큰 정수로 이루어진 매크로블록으로 분할하여 부호화를 수행함으로써 영상 압축의 효율 향상을 꾀할 수 있다. 여기서, N이 16보다 큰 정수로 이루어진 매크로블록을 확장된 매크로블록(EMB: Extended Macroback)이라고 명명한다. 예를 들어, 확장된 매크로블록은 64x64, 32x32 등과 같은 크기의 정방형의 화소 블록으로 이루어질 수 있다. 이하에 기재하는 매크로블록은 확장된 매크로블록과, 일반적인 16x16 화소 블록의 매크로블록을 포함하는 개념임에 유의한다.
한편, N이 16보다 큰 정수로 이루어진 확장된 매크로블록을 사용하여 영상 압축을 수행할 때, 입력 영상이 16화소의 배수가 아닌 경우에는 입력 영상에 대해 16화소의 배수가 되도록 패딩한 후 영상 압축을 수행할 수 있다.
도 2는 본 발명의 실시예에 따라 입력되는 영상을 패딩하였을 경우의 영상 부호화 및 복호화를 설명하기 위해 도시한 도면이며, 도 3은 도 2의 현재 부호화할 대상인 확장된 매크로블록을 확대한 도면이다. 16화소의 배수로 패딩이 수행된 입력 영상과 현재 부호화할 대상인 확장된 매크로블록의 위치가 도 2와 같을 경우, 현재의 확장된 매크로블록의 부호화는 16화소의 배수가 되도록 패딩한 입력 이미지 안에 속하는 화소값만을 이용하는 것이 바람직하다. 즉, 도 3에서 현재의 확장된 매크로블록 내의 패딩된 영역은 부호화에 사용하지 않는 것이 바람직하다. 또한, 비트스트림에 부호화하는 데이터도 16화소의 배수가 되도록 패딩한 입력 이미지 안에 속하는 화소값만을 이용하는 것이 바람직하다.
입력 영상이 4:2:0 포맷(Format)의 영상의 경우, 매크로블록은 NxN 화소를 가지는 휘도 블록과 두 개의 화소를 가지는 색차 블록으로 이루어진다. 이와 같은 확장된 매크로블록에 의한 고해상도 영상의 압축 효율 향상은, 이하에서 설명하는 구체적인 실시예에 의해 달성된다.
본 발명의 일 실시예에 따른 확장된 매크로블록은 도 4에 도시한 바와 같이 내부적으로 더 작은 서브블록으로 분할되어 인트라 예측 부호화 또는 인터 예측 부호화가 수행될 수 있다.
즉, 고해상도 영상의 부호화를 위하여 N이 16이상인 매크로블록을 사용하는 경우, 확장된 매크로블록은 보다 작은 화소 블록 단위로 분할하여 부호화를 수행할 수 있으며, 각각의 화소 블록은 더 작은 서브블록으로 분할하여 부호화를 수행할 수 있다. 또한, 확장된 매크로블록 또는 분할된 화소 블록의 일변의 길이가 16화소 보다 큰 경우에는 도 5에 도시한 바와 같이, 32x64, 64x32, 16x32 또는 32x16와 같은 직사각형 형상을 갖는 화소 블록으로의 분할을 생략하고 확장된 매크로블록을 정방형의 화소 블록으로 분할한 후 16x16 화소 블록 단위로 부호화를 수행할 수도 있다. 도 4 및 도 5에는 확장된 매크로블록에 대하여 최소 블록의 크기가 4x4인 각각의 서브블록을 예시적으로 나타내었다. 예를 들어, 확장된 매크로블록이 64x64 화소 블록인 경우, 도 4의 매크로블록 레이어(Layer) 0에는 서브블록인 64x64 화소 블록, 64x32 화소 블록, 32x64 화소 블록, 32x32 화소 블록이 속하고 매크로블록 레이어 1에는 서브블록인 32x32 화소 블록, 32x16 화소 블록, 16x32 화소 블록, 16x16 화소 블록이 속할 수 있다. 또한, 도 5와 같이 16x16 화소 블록보다 큰 서브블록들에 대해 64x32 화소블록, 32x64 화소블록, 32x16 화소블록, 16x32 화소블록과 같은 직사각형 형상의 서브블록의 분할을 생략할 수 있다. 이 경우, 매크로블록 레이어 0에는 서브블록인 64x64 화소 블록 및 32x32 화소 블록이 속하도록 하고 매크로블록 레이어 1에는 서브블록인 32x32 및 16x16 화소 블록이 속하게 된다. 여기서, 매크로블록 레이어 K(단,
Figure 112011028201302-pat00001
)의 서브블록 중 제일 큰 서브블록이 4 개의 블록으로 분할된 경우에만 매크로블록 레이어 K+1의 서브블록들을 사용할 수 있다. 즉, 도 5의 경우와 같이, 매크로블록 레이어 0의 64x64 서브블록이 4개의 서브블록으로 분할된 경우에만 매크로블록 레이어 1의 서브블록들을 사용할 수 있으며, 매크로블록 레이어 1의 32x32 서브블록이 4개의 16x16 서브블록으로 분할된 경우에만 매크로블록 레이어 2의 서브블록들을 사용할 수 있다.
영상 부호화 장치(100)는 매크로블록을 서브블록으로 분할하여 부호화했을 경우의 각 서브블록에 대한 부호화 효율을 계산하고, 가장 부호화 효율이 높은 경우의 서브블록을 최종적인 인트라 예측 블록 또는 인터 예측 블록으로 결정한다. 부호화 효율은 수학식 1과 같은 율-왜곡 최적화(RDO: Rate-Distortion Optimizaion) 기법에 근거하여 측정할 수 있다.
Figure 112011028201302-pat00002
여기서 Distortion은 부호화 대상 블록과 복원 블록 사이의 에러(error) 값을 나타내고, λ는 양자화 파라미터에 의해 결정되는 상수이며, Bit는 부호화 대상 블록을 부호화하는데 필요한 비트수를 나타낸다.
블록의 모드는 가능한 블록들의 모든 타입에 대하여 각 블록의 최적의 예측 모드(인트라 예측모드, 움직임 데이터)를 결정한 후, 블록 타입을 결정하는 과정으로 나뉠 수 있으며, 보통 예측모드 결정시(인트라 예측모드나 움직임 벡터/참조픽처 선택시)에는 연산량을 줄이기 위해서 SAD(Sum of Absolute Difference) 또는 SATD(Sum of Absolute Transformed Difference)를 사용하고 Bit에는 변환 계수의 비트는 고려하지 않는다. 이를 정리하면 수학식 2와 같이 표현할 수 있다.
Figure 112011028201302-pat00003
수학식 2에서 SAD는 원 영상과 예측 영상 사이의 차분치에 절대값을 취하여 모두 더한 값을 말하고, SATD는 잔여블록을 변환을 수행한 후 그 값에 절대값을 취하여 모두 더한 값을 말한다.
블록 타입 결정시에는 수학식 3을 이용하여 엄격하게 Rdcost를 계산하는 것이 바람직하다.
Figure 112011028201302-pat00004
수학식 3의 Distortion은 수학식 4로 나타낼 수 있다.
Figure 112011028201302-pat00005
수학식 2는 수학식 3을 이용하는 것보다 연산량은 적으나 움직임이 없는 영역 또는 복잡하지 않은 영역의 경우에는 Distortion이 거의 비슷하기 때문에 수학식 2를 사용해서는 최적의 모드를 결정하는 것이 힘들다. 반면에, 수학식 3은 수학식 2보다 정확한 부호화 효율을 계산할 수는 있으나 계산량이 많다는 단점이 있다. 그러므로, 본 발명의 실시예에서는 데이터의 중요도(참조픽처로 사용되는지의 여부 등) 또는 부호화하고자 하는 모드에 따라 수학식 2 또는 수학식 3을 선택하여 사용하는 것이 바람직하다. 예를 들어, 인트라 예측모드 결정시 및 블록의 움직임 벡터/참조픽처 결정시에는 수학식 3을 사용할 수 있다. 다만, 예외적으로 B 픽처의 16x16 이상 크기의 화소 블록의 예측 방향(L0 예측, L1 예측, 양방향 예측)과 움직임 벡터/참조 픽처 결정과정은 각 예측 방향에 따라 움직임 벡터와 참조 픽처는 수학식 3을 사용하여 결정하며, 예측 방향은 수학식 2를 사용하여 결정할 수 있다. 블록 타입 결정시에는 수학식 3을 사용할 수 있다. 또한, 서브블록의 크기가 설정된 화소블록의 크기 이상인 경우에는 수학식 3에 따라 부호화 비용을 결정하고, 설정된 화소블록의 크기보다 작은 경우에는 수학식 2에 따라 부호화 비용을 결정할 수 있다.
예를 들어, 부호화 비용의 선택 기준을 16x16 화소블록으로 설정한다고 가정하면, 16x16 화소블록이 가질 수 있는 부호화 모드는 16x16 SKIP 모드, 16x16 Direct 모드, L0 예측모드를 사용하는 16x16 블록(예를 들면, 움직임 정보와 잔차 데이터가 있을 수 있다), L1 예측모드를 사용하는 16x16 블록(예를 들면, 움직임 정보와 잔차 데이터가 있을 수 있다), L0 및 L1 예측모드를 모두 사용하는 16x16 블록(예를 들면, 움직임 정보와 잔차 데이터가 있을 수 있다), 16x16 인트라 블록 등이 있다. 16x16 이상의 화소블록들의 부호화 모드들에 대해서는 정밀한 부호화 비용을 사용하는 것이 바람직하다. 블록 타입이 16x16 이상의 크기를 가지는 경우는 주로 배경과 같은 평탄한 영역이기 때문에 근사화된 식으로는 최적의 모드결정이 어렵기 때문이다. 그러므로 16x16 이상의 블록들을 사용하는 경우에는 매크로블록 내 모드 결정시 블록 사이즈와 모드에 따라 부호화 비용을 선택적으로 사용하도록 한다. 또한, 부호화 비용을 구하는 식에서 고려하는 파라미터를 작은 블록들간의 모드결정에 사용하는 파라미터와 큰 블록들간의 모드결정에 사용하는 파라미터를 다르게 고려하도록 할 수도 있다.
최소 블록의 크기는 최대로 사용할 수 있는 레이어값인 최대 레이어값(MaxLayer)에 따라 결정된다. 예를 들어, NxN 화소의 매크로블록인 경우, 최소 블록의 크기는 N/(2MaxLayer)로 결정된다.
영상 부호화 장치(100)의 각 구성 요소에 대해서는 후술하는 과정에서 관련 도면들과 함께 설명한다.
영상 부호화 장치(100)는 영상을 부호화할 때, 동영상을 구성하는 픽처 단위로 픽처 타입을 구분하여 픽처 타입에 따라 다르게 예측 부호화한다. 예를 들어, 임의의 픽처가 인트라 픽처인 경우에는 인트라 픽처 내의 매크로블록들의 타입은 모두 인트라 매크로블록이 되며, 각 매크로블록을 인트라 예측 부호화한다. 또한, 임의의 픽처가 인터 픽처인 경우에는 인터 픽처 내의 매크로블록들의 매크로블록 타입은 인터 매크로블록 또는 인트라 매크로블록일 수 있으며, 매크로블록 타입에 따라 인트라 예측 부호화거나 인터 예측 부호화된다. 이와 같은 픽처 타입에 대한 정보는 그대로 또는 부호화되어 부호화 데이터의 픽처 헤더 또는 시퀀스 헤더 등에 삽입될 수 있으며, 후술할 영상 복호화 장치는 픽처 헤더 또는 시퀀스 헤더 등에서 픽처 타입에 대한 정보를 추출하거나 복원하여 복호화할 픽처의 픽처 타입을 결정할 수 있다.
이하에서는 본 발명의 일 실시예에 따른 부호화 방법과 그를 통해 생성되는 부호화 데이터를 픽처 타입에 따라 설명한다.
도 6은 본 발명의 일 실시예에 따른 인트라 픽처의 부호화 방법과 부호화 데이터를 통해 전송할 관련 데이터를 설명하기 위한 예시도이다.
예측기(110)의 인트라 예측기(112)는 현재 부호화하고자 하는 블록(이하 '현재 블록'이라 칭함)의 주변 화소를 이용하여 참조 블록을 생성하고 참조 블록과 현재 블록을 비교하여 인트라 예측 모드를 결정한다. 여기서, 주변 화소란 현재 블록 주위에 있는 블록 내에 있는 화소들을 말하며, 현재 블록과 인접한 블록들 내에서 현재 블록과 인접한 인접 화소를 포함하는 개념이다.
확장된 매크로블록을 휘도 성분에 대한 4x4 화소 단위의 서브 블록으로 분할하여 인트라 예측을 수행하는 경우, 휘도 성분의 인트라 예측 모드에 따른 9 가지의 예측 방향과 예측 모드 번호를 예시적으로 나타낸 도 7을 참조하면, 9 가지의 예측 방향(예측 모드 0 내지 예측 모드 8에 따른 예측 방향) 중 가장 적절한 예측 방향을 4x4 화소 단위의 현재 블록마다 1 개씩 선택하고, 선택된 예측 방향을 이용하여 현재 블록을 인트라 예측 부호화한다. 예측 모드 2가 의미하는 평균값은 현재 블록의 왼쪽 블록의 4 개의 인접 화소와 현재 블록의 위쪽 블록의 4 개 인접 화소의 총 8 개의 인접 화소의 평균값을 구해 현재 블록의 4x4 화소 모두를 예측하는 방법이다.
픽처의 좌측 경계에 위치하는 블록과 픽처의 윗쪽 경계에 위치하는 블록의 경우 왼쪽 블록과 윗쪽 블록이 각각 픽처 바깥쪽에 위치하게 된다. 이 경우, 픽처 경계를 벗어난 블록을 참조할 수 없기 때문에 예측 방향의 이용이 제한된다. 예를 들어, 픽처의 제일 위쪽에 위치한 블록에서는 윗쪽 블록의 화소를 참조하는 예측 모드 0, 예측 모드 3, 예측 모드 4, 예측 모드 5, 예측 모드 6, 예측 모드 7의 예측 방향을 이용할 수 없다. 예외적으로 DC 모드의 경우, 픽처의 경계를 벗어나지 않는 화소만을 참조해서 현재 블록의 예측을 수행한다. 만약, 현재 블록과 이웃한 왼쪽 블록과 윗쪽 블록을 이용할 수 없는 경우, DC 값은 128을 사용한다.
선택된 현재 블록의 예측 방향과 현재 블록의 왼쪽 블록과 위쪽 블록 중 더 작은 예측 모드 번호를 가지는 블록의 예측 방향을 비교하여 두 예측 방향이 동일한 경우, 주변 블록으로부터 추정한 현재 블록의 예측 방향과 선택된 현재 블록의 예측 방향이 동일한지 여부를 나타내는 예측 모드 플래그(예를 들어, 1 비트로 표시될 수 있음)를 추정한 예측 방향과 같은 예측 방향임을 나타내도록 부호화한다.
만약, 주변 블록으로부터 추정한 현재 블록의 예측 방향과 선택된 현재 블록의 예측 방향이 다른 경우, 예측 모드 플래그를 선택된 현재 블록의 예측 방향이 추정한 현재 블록의 예측 방향과 다른 예측 방향임을 나타내도록 부호화하고 9 가지의 예측 모드에서 추정한 현재 블록의 예측 방향에 해당하는 예측 모드를 뺀 나머지 8 가지의 예측 모드 중 어떠한 예측 모드가 선택된 현재 블록의 예측 방향인지를 나타내기 위한 예측 모드 정보(예를 들어, 3 비트로 표시될 수 있음)를 부호화한다.
확장된 매크로블록을 휘도 성분에 대한 8x8 화소 단위의 서브 블록으로 분할하여 인트라 예측을 수행하는 경우, 휘도 성분에 대한 8x8 화소 단위의 인트라 예측은 4x4 화소 단위의 인트라 예측과 같이 도 7에 도시한 바와 같은 9 가지 예측 방향을 이용하며, 예측 화소를 계산하는 방법도 블록의 크기(4x4 화소와 8x8 화소)의 차이를 제외하면 4x4 화소 단위의 인트라 예측 부호화의 경우와 동일하다.
확장된 매크로블록을 휘도 성분에 대한 16x16 화소 단위의 서브 블록으로 분할하여 인트라 예측을 수행하는 경우, 도 8에 도시한 바와 같은 4 가지의 예측 방향 중에서 부호화 효율이 가장 좋은 예측 방향을 선택하고, 선택된 예측 방향에 따라 16x16 크기의 현재 블록의 위쪽에 위치한 16x16 화소 블록 내의 16 개의 인접 화소와 현재 블록의 왼쪽에 위치한 16x16 화소 블록 내의 16 개의 인접 화소의 총 32 개의 인접 화소로부터 16x16 화소 블록을 예측 부호화한다.
도 8에서, 예측 모드 3인 평면(Plane) 예측의 경우, 현재 블록의 위쪽 블록 내의 인접 화소와 현재 블록의 왼쪽 블록 내의 인접 화소를 대각선 방향으로 보간(Interpolation)하여 예측한다. 예측 모드 2에 해당하는 평균값 예측의 경우, 평균값은 현재 블록의 윗쪽 블록 내의 16 개의 인접 화소와 왼쪽 블록의 16 개의 인접 화소의 평균값을 현재 블록의 16x16 화소 모두로 예측한다. 단, 현재 블록이 픽처 내에서 제일 위쪽에 위치하는 경우, 현재 블록의 왼쪽 블록 내의 16 개의 인접 화소의 평균값을 예측값으로 이용하며, 현재 블록이 픽처 내에서 가장 왼쪽에 위치하는 경우, 현재 블록의 위쪽 블록 내의 16 개 인접 화소의 평균값을 예측값으로 이용한다. 현재 블록의 왼쪽 블록과 윗쪽 블록을 이용할 수 없는 경우, 예측값으로 128을 사용한다. 16x16 화소 블록의 예측 모드는 예측 부호화되지 않고, 단순히 선택된 예측 모드의 번호가 예측 모드 정보(예를 들어, 2 비트로 표시됨)로서 부호화된다.
확장된 매크로블록을 전술한 4x4 화소 블록, 8x8 화소 블록 또는 16x16 화소 블록을 제외한 서브 블록으로 분할하여 인트라 예측을 수행하는 경우, 휘도 성분의 인트라 예측 모드는 도 9와 같이 3가지의 예측 방향과 예측 모드 번호로 나타낼 수 있다. 4x4 화소 블록, 8x8 화소 블록 또는 16x16 화소 블록을 제외한 나머지 서브 블록으로 분할하여 인트라 예측을 수행하는 경우에 해당 서브 블록의 크기가 mxn이라고 하면, 도 9에 도시한 바와 같은 3 가지의 예측 방향 중에서 선택되는 부호화 효율이 가장 좋은 예측 방향에 따라 현재 블록의 위쪽 블록 내의 m 개의 인접 화소와 왼쪽 블록 내의 n 개의 인접 화소로부터 mxn 화소 블록을 인트라 예측 부호화한다.
예측 모드 2에 해당하는 평균값 예측의 경우, 현재 블록의 위쪽 블록 내의 m 개의 인접 화소와 왼쪽 블록 내의 n 개 인접 화소의 평균값을 이용해서 현재 블록을 예측 부호화한다. 단, 현재 블록이 픽처 내에서 제일 위쪽에 위치하는 경우, 현재 블록의 왼쪽 블록의 n 개의 인접 화소의 평균값을 현재 블록의 예측값으로 이용하며, 현재 블록이 픽처 내의 제일 왼쪽에 위치하는 경우, 위쪽 블록 내의 m 개의 인접 화소의 평균값을 현재 블록의 예측값으로 이용한다. 현재 블록의 왼쪽 블록과 위쪽 블록을 이용할 수 없는 경우, 현재 블록의 예측값으로 128이 사용된다.
선택된 현재 블록의 예측 방향과 현재 블록의 왼쪽 블록과 위쪽 블록 중 더 작은 예측 모드의 번호를 가지는 블록의 예측 방향이 같은 방향인 경우, 현재 블록의 주변 블록으로부터 추정한 현재 블록의 예측 방향과 선택된 현재 블록의 예측 방향이 동일한지 여부를 나타내는 예측 모드 플래그(예를 들어, 1 비트로 표시될 수 있다)를 추정한 현재 블록의 예측 방향과 같은 예측 방향이라는 정보를 부호화한다. mxn 화소 블록이 가질 수 있는 예측 모드의 번호는 0 내지 2이므로, 현재 블록의 왼쪽 블록과 위쪽 블록을 이용하여 예측한 현재 블록의 예측 모드 번호가 3 이상인 경우에는 현재 블록의 예측 방향은 예측 모드 번호 2(DC 모드)를 사용할 수 있다. 예를 들어, 주변 블록으로부터 예측한 현재 블록의 예측 모드 번호가 4인 경우, 현재 블록의 예측 모드 번호를 2로 하여 선택된 현재 블록의 예측 방향과 동일한지를 나타내는 예측 모드 플래그(예를 들어, 1 비트로 표시됨)를 부호화한다.
여기서, 확장된 매크로블록에 대한 인트라 예측은 16x16 이하의 화소 블록 단위 즉, 4x4 화소 블록, 8x8 화소 블록, 16x16 화소 블록 또는 mxn(여기서, m≠n이며, m 및 n은 16보다 작은 수) 화소 블록 단위로 수행되는 것이 바람직하다.
색차 성분의 인트라 예측은
Figure 112011028201302-pat00006
화소 블록 단위로 수행될 수 있다. 예측 방향은 도 10에 나타낸 바와 같이, 평균치 예측, 수평 예측, 수직 예측, 평면 예측 4 가지의 예측 방향이 사용될 수 있다. 바람직하게는, 색차 성분의 인트라 예측은 8x8 화소 블록 단위로 수행된다.
본 발명의 일 실시예에 따른 색차 성분의 4 가지의 인트라 예측 모드에 따른 예측 방향과 예측 모드 번호를 예시적으로 나타낸 도 10을 참조하면, 예측 모드 3에 해당하는 평면 예측과 예측 모드 0에 해당하는 평균값 예측을 위한 예측값 계산 방법도 블록의 크기(16x16 화소와 8x8 화소)의 차이를 제외하고 휘도 성분의 16x16 화소 단위의 인트라 예측 부호화 방법과 동일하다. 색차 신호의 예측 모드는 휘도 신호의 예측 모드와는 독립적으로 선택할 수 있다. 색차 신호는 U, V의 두 종류가 있지만 예측 방법은 같다. 색차 신호의 예측 모드는 U, V 각각 1 개씩이며 각 색차 신호의 예측 모드는 예측 부호화하지 않고 단순히 선택된 예측 모드 번호를 2 비트를 사용하여 나타낸다.
다시 도 6을 참조하면, 인트라 예측기(112)는 도 7 내지 도 10을 통해 전술한 바와 같은 방식으로 4x4 화소 단위에 대한 9 가지 예측 방향으로 현재 블록을 예측하여 예측 부호화고 율-왜곡 최적화와 같은 방식으로 결정되는 인트라 예측 모드, 8x8 화소 단위에 대한 9 가지 예측 방향으로 현재 블록을 예측하여 예측 부호화고 율-왜곡 최적화와 같은 방식으로 결정되는 인트라 예측 모드, 16x16 화소 단위에 대한 4 가지 예측 방향으로 현재 블록을 예측하여 예측 부호화고 율-왜곡 최적화와 같은 방식으로 결정되는 인트라 예측 모드, mxn 화소 단위에 대한 3 가지 예측 방향으로 현재 블록을 예측하여 예측 부호화고 율-왜곡 최적화와 같은 방식으로 결정되는 인트라 예측 모드 중 율-왜곡 최적화를 이용하여 결정되는 하나의 인트라 예측 모드를 현재 블록의 인트라 예측 모드로서 결정한다. 이때 사용되는 율-왜곡 최적화 식은 전술한 수학식 3에 따르는 것이 바람직하다. 이와 같은 방법으로 인트라 예측 모드가 결정되면 그에 따라 서브블록의 크기도 함께 결정된다.
전술한 바와 같이 결정되는 인트라 예측 모드에 따라, 인트라 예측기(112)는 현재 블록을 예측하여 예측 블록(Predicted Block)을 생성하고, 감산기(120)는 현재 블록과 예측 블록을 감산하여 잔여 블록(Residual Block)을 생성한다. 변환기 및 양자화기(130)는 잔여 블록을 변환 및 양자화하여 양자화된 변환 계수를 생성하고, 부호화기(140)는 양자화된 변환 계수를 엔트로피 부호화하여 부호화 데이터를 생성한다.
변환기 및 양자화기(130)는 휘도 성분의 4x4, 4x8, 8x4 화소 단위의 인트라 예측이 선택된 현재 블록의 잔여 블록에 대해서는 4x4 변환을 수행하고, 8x8, 8x16, 16x8 화소 단위의 인트라 예측이 선택된 현재 블록의 잔여 블록에 대해서는 8x8 변환을 수행할 수 있다. 또한, 변환기 및 양자화기(130)는 16x16 화소 단위 이상의 인트라 예측이 선택된 현재 블록의 잔여 블록에 대해서는 16x16 변환을 수행할 수 있다. 이 경우, 인트라 예측의 단위와 서브블록의 크기가 동일하므로, 변환의 종류는 서브블록의 블록 크기에 따라 결정할 수 있다.
여기서, 각 16x16 변환이 수행되는 16x16 화소를 가지는 잔여 블록(이하 '16x16 화소 잔여 블록'이라 칭함)은 다시 16 개의 4x4 화소를 가지는 잔여 블록(이하 '4x4 화소 잔여 블록'이라 칭함)으로 분할되고, 각 4x4 화소 잔여 블록에 대해 4x4 변환이 수행될 수 있다. 이후, 각 4x4 화소 잔여 블록이 4x4 변환되어 생성되는 각 4x4 화소를 가지는 변환 블록(이하 '4x4 화소 변환 블록'이라 칭함)의 16 개 DC 성분들만이 모여 4x4 변환 계수를 가지는 변환 블록(이하 'DC 성분 블록'이라 칭함)이 구성되고, DC 성분 블록은 4x4 변환이 한번 더 수행된다. 이때, DC 성분 블록을 변환하는 데에는 잔여 블록을 변환할 때의 변환과 다른 종류의 변환이 사용될 수 있다. 즉, 4x4 화소 잔여 블록에 대해서는 4x4 이산 코사인 변환(DCT: Discrete Cosine Transform)이 수행되고, DC 성분 블록에 대해서는 4x4 하다마드 변환이 사용될 수 있다. 예를 들어, 16x32 화소 단위의 인트라 예측이 선택된 현재 블록에 대한 16x32 화소 잔여 블록은 두 개의 16x16 화소 잔여 블록으로 분할되고 분할된 각 16x16 화소 잔여 블록에 대해 4x4 화소 단위로 4x4 변환이 수행된다. 이후 16x16 크기의 화소 잔여 블록 내 각 4x4 변환 블록들의 DC 성분들이 모여 DC 성분 블록이 구성되고 DC 성분 블록에 대해서 4x4 변환이 한번 더 수행된다.
만일, 32x32 화소 블록인 확장된 매크로블록의 위치가 도 2에 도시한 바와 같이 16화소의 배수로 패딩된 이미지와 패딩된 영역에 걸치는 경우, 해당 확장된 매크로블록이 인트라 모드이면 도 3에 도시한 바와 같이 실제의 이미지 영역(16x16 화소 블록)에 대해서만 부호화 모드를 결정하고 해당 영역의 분할 타입, 인트라 에측 모드, CBP, 변환 계수의 부호화를 수행한다.
도 11은 본 발명의 일 실시예에 따른 64x64 화소의 확장된 매크로블록에 대한 서브 블록의 블록 타입을 나타낸 예시도이다.
확장된 매크로블록이 64x64 화소 블록이고 인트라 예측 후 최적의 블록 타입이 도 11에 도시한 바와 같이 결정되었다고 가정하면, 블록 0 내지 블록 7에 대해서는 4x4 변환이 수행되고, 블록 8 내지 블록 12에 대해서는 8x8 변환이 수행되며, 블록 13 내지 블록 18에 대해서는 16x16 화소 블록 내에서 4x4 화소 단위로 4x4 변환이 수행되고 각 16x16 화소 블록 내 각 4x4 변환 블록들의 DC 성분들이 모여 구성되는 DC 성분 블록에 대하여 다시 변환이 수행된다.
색차 신호의 경우, 16x16 화소 단위 이상의 인트라 예측의 경우와 마찬가지로 4x4변환이 수행된 후, DC 성분 블록에 대하여 4x4 변환이 한 번 더 수행된다. 단, 색차 성분의 매크로블록의 잔여 블록은 8x8 화소를 가지는 잔여 블록(이하 '8x8 화소 잔여 블록'이라 칭함)으로 분할되고 각 8x8 화소 잔여 블록 내의 4 개의 4x4 화소 잔여 블록에 대해서는 4x4 변환이 수행된다. 8x8 화소 잔여 블록 내 4 개의 4x4 변환 블록의 DC 성분들이 모여 2x2 변환 계수를 가지는 DC 성분 블록이 구성되고 DC 성분 블록에 대해 2x2 변환이 수행된다. 이 때도 마찬가지로, 8x8 화소 잔여 블록에 대한 4x4 변환과 DC 성분 블록에 대한 2x2 변환의 종류는 다를 수 있다.
또는, 확장된 매크로블록에 대하여 최적의 블록 타입이 결정된 후 전술한 변환 타입에 따라 변환을 수행하는 대신에, 16x16 화소 블록의 단위로 인트라 예측에 사용된 서브 블록의 크기에 따라 효율이 좋은 변환 타입을 선택하여 사용할 수도 있다. 즉, 변환 및 양자화기(130)는 16x16 화소 블록의 단위로 하나 이상의 변환 및 양자화를 수행한 후 가장 효율이 좋은 변환의 종류를 선택하고, 선택된 변환의 종류에 따라 변환 및 양자화된 변환 계수를 생성할 수 있다. 이 경우, 부호화기(140)는 각 블록마다 선택된 변환의 종류를 식별하기 위한 변환 타입을 생성하고 부호화하여 변환 타입 데이터를 생성하는 것이 바람직하다. 변환 타입 데이터는 부호화 데이터에 포함된다. 단, 16x16 화소 블록 내에서는 서로 다른 변환을 사용할 수 없다.
이에 대하여 보다 상세하게 설명하면, 16x16 화소 블록이 8x8 화소 블록으로 분할되고 4 개의 8x8 화소 블록들 중 한 개 이상의 8x8 화소 블록이 8x8 화소보다 작은 서브블록으로 분할된 경우에는 16x16 화소 블록에 대해서 4x4 변환만이 사용될 수 있으며, 이 경우 변환 타입은 부호화되지 않는다. 또한, 16x16 화소 블록이 4 개의 8x8 화소 블록으로 분할된 경우에는 16x16 화소 블록에 대해서는 4x4 변환과 8x8 변환이 수행되어 부호화 비용이 작은 변환이 선택되며, 선택된 변환의 종류를 나타내는 변환 타입(예를 들어, 1 비트로 표시될 수 있다)이 부호화될 수 있다. 또한, 16x16 화소 블록이 2 개의 8x16 화소 서브블록으로 분할된 경우에는 16x16 화소 서브블록의 잔여 블록에 대해서는 4x4 변환, 8x8 변환과 8x16 변환이 수행되어 부호화 비용이 가장 작은 변환의 종류가 선택되고, 16x16 화소 서브블록이 2 개의 16x8 화소 서브블록으로 분할된 경우에는 16x16 화소 서브블록의 잔여 블록에 대해서는 4x4 변환, 8x8 변환과 16x8 변환이 수행되어 부호화 비용이 가장 작은 변환의 종류가 선택되며, 선택된 변환의 종류를 나타내는 변환 타입(예를 들어, 1 비트 또는 2 비트로 표시될 수 있다)이 부호화될 수 있다. 16x16 화소 이상의 서브블록에 대해서는 4x4 변환, 8x8 변환과 16x16 변환이 수행되어 부호화 비용이 가장 작은 변환이 선택되며, 선택된 변환의 종류를 나타내는 변환 타입(예를 들어, 1 비트 또는 2 비트로 표시됨)이 부호화될 수 있다.
도 12는 본 발명의 일 실시예에 따른 인터 픽처의 부호화 방법과 부호화 데이터를 통해 전송할 관련 데이터를 설명하기 위한 예시도이다.
P-픽처 또는 P-슬라이스의 경우, 도 4의 모든 블록 타입들이 움직임 추정에 사용될 수 있으며, 확장된 매크로블록 내에는 16x16 화소 블록 단위로 인트라 모드인지 또는 인터 모드인지를 선택할 수 있다. 즉, P-픽처 또는 P-슬라이스의 확장된 매크로블록 내에는 인트라 모드와 인터 모드가 모두 사용될 수 있다.
B-픽처 또는 B-슬라이스의 경우, 최대 두 장까지의 임의의 참조 픽처를 선택할 수 있는데, 그 두 장을 각각 L0 예측, L1 예측이라고 부르며, 이 두 장의 참조 픽처는 서로 다른 역할을 한다. 보통은 L0 예측(List 0 Prediction, 주로 순방향 예측에 사용됨)이 순방향 예측, L1 예측(List 1 Prediction, 주로 역방향 예측에 사용됨)이 역방향 예측으로 사용된다. P-픽처 및 B-픽처에 대한 각각의 보다 상세한 인터 픽처 부호화 방법은 후술한다.
확장된 매크로블록이 32x32 화소 블록인 경우, 32x32 화소 블록 단위로 부호화를 수행할지 또는 16x16 화소 블록 단위로 부호화를 수행할지는 확장된 매크로블록 플래그(extended_mb_flga)를 통해 나타낼 수 있다. 예를 들어, 확장된 매크로블록 플래그가 1인 경우에는 32x32 화소블록 단위로 부호화를 수행함을 의미하며, 확장된 매크로블록 플래그가 0인 경우에는 16x16 화소블록 단위로 부호화를 수행함을 의미할 수 있다. 확장된 매크로블록 플래그가 0인 경우, 확장된 매크로블록은 4개의 16x16 화소블록으로 분할되어 각 16x16 화소블록 단위로 인트라 모드인지 또는 인터 모드인지를 결정할 수 있다. 또한, 각각의 16x16 화소블록 단위는 더 작은 서브블록으로 분할되어 부호화가 수행될 수 있다.
다시 도 1을 참조하면, 예측기(110)의 인터 예측기(114)의 움직임 추정기(116)는 현재 픽처 내 현재 부호화 대상인 현재 블록과 가장 유사한 블록, 즉 참조 블록을 참조 픽처 내에서 찾아 현재 블록에 대한 참조 블록의 상대적인 위치를 나타내는 움직임 벡터(MV: Motion Vector)를 출력한다. 이러한 과정을 움직임 추정(Motion Estimation)이라 하는데, 움직임 추정은 매크로블록 내 서브블록을 픽처 버퍼(180)에 있는 하나 이상의 참조 픽처와 비교하여 움직임 벡터를 생성한다. 8x8 화소 블록은 서로 다른 참조 픽처를 이용할 수 있으나 8x8 화소 블록 내 서브블록들은 같은 참조 픽처를 이용한다.
움직임 벡터는 부호화기(140)에 의해 부호화되어 부호화 데이터에 포함되는데, 부호화기(140)는 현재 블록의 주변 블록의 움직임 벡터들의 중앙값(Mean Value)을 예측 움직임 벡터(PMV: Predicted Motion Vector)로 이용하고 예측 움직임 벡터와 현재 블록의 움직임 벡터의 차이 벡터인 차분 움직임 벡터(DMV: Differential Motion Vector)만을 부호화하여 움직임 정보 데이터를 생성한다. 이때, 부호화기(140)는 차분 움직임 벡터뿐만 아니라 참조 픽처 인덱스(Reference Picture Index)를 추가로 부호화할 수 있다. 즉, 움직임 정보는 차분 움직임 벡터와 참조 픽처 인덱스를 포함할 수 있으며, 부호화기(140)는 움직임 정보를 부호화하여 움직임 정보 데이터를 생성하고 움직임 정보 데이터를 부호화 데이터에 포함시킬 수 있다.
도 13은 본 발명의 일 실시예에 따라 예측 움직임 벡터를 결정하는 과정을 설명하기 위한 예시도이다.
13A는 현재 블록과 주변 블록이 모두 64x64 화소 블록일 때, 현재 블록의 움직임 벡터와 예측 움직임 벡터를 결정하기 위해 이용되는 주변 블록의 움직임 벡터를 나타내었다. 현재 블록과 주변 블록이 모두 동일한 크기의 블록인 경우에는 기존의 방법과 같이 주변 블록의 움직임 벡터들의 중앙값을 예측 움직임 벡터로서 결정할 수 있다.
13B는 현재 블록과 주변 블록의 크기가 다를 때, 현재 블록의 움직임 벡터와 예측 움직임 벡터를 결정하기 위해 이용되는 주변 블록의 움직임 벡터를 나타내었다. 현재 블록과 주변 블록의 크기가 다른 경우에는 어느 주변 블록을 이용하여 예측 움직임 벡터를 결정해야 할지를 선택해야 한다.
본 발명의 일 실시예에서는 13B에 나타낸 바와 같이 현재 블록의 왼쪽에 있는 주변 블록이 여러 개의 블록으로 나뉘어 있을 경우 그 중 가장 위쪽 오른쪽에 위치한 블록 A의 움직임 벡터 mvA를 예측에 이용하고, 현재 블록의 위쪽에 있는 주변 블록이 여러 개로 나뉘어 있는 경우 그 중 가장 아래쪽 왼쪽에 위치한 블록 B의 움직임 벡터 mvB를 예측에 이용하며, 오른쪽 윗쪽에 위치한 주변 블록이 여러 개로 나뉘어 있는 경우 그 중 가장 아래쪽 왼쪽에 위치한 블록 C의 움직임 벡터 mvC를 예측에 이용한다. 단, 예외적인 경우로서, 블록 B와 블록 C가 모두 픽처의 경계 밖에 위치할 경우, 블록 B와 블록 C를 이용해서는 예측 움직임 벡터를 결정할 수 없기 때문에 블록 A의 움직임 벡터만을 이용하여 예측 움직임 벡터를 결정한다. 또한, 블록 A, 블록 B, 블록 C 중에 현재 블록과 참조 픽처의 번호가 같은 블록이 하나만 있는 경우, 해당 블록의 움직임 벡터를 예측 움직임 벡터를 결정하는 데 이용한다.
도 14는 본 발명의 일 실시예에 따른 8x16 화소 블록과 16x8 화소 블록의 예측 움직임 벡터를 결정하는 과정을 설명하기 위한 예시도이다.
또한, 현재 블록이 8x16 화소 블록 또는 16x8 화소 블록인 경우에는 중앙값을 이용하지 않는다. 즉, 현재 블록이 8x16 화소 블록인 경우, 왼쪽의 주변 블록으로서는 블록 A를, 오른쪽의 주변 블록으로서는 블록 C를 예측 움직임 벡터를 결정하는 데 이용한다. 현재 블록이 16x8 화소 블록인 경우, 윗쪽의 주변 블록은 블록 B를, 아랫쪽의 주변 블록은 블록 A를 예측 움직임 벡터를 결정하는 데 이용한다.
또한, 본 발명의 일 실시예에서는, 16x16 이상의 화소 블록인 매크로블록에 대하여 SKIP 모드를 사용한다. 16x16 이상의 화소 블록인 매크로블록이 SKIP 매크로블록인 경우에는 예측 움직임 벡터를 이용해서 움직임 추정 및 보상이 수행된다. 단, 예측 움직임 벡터를 결정하는 데 이용되는 움직임 벡터들 중 한 개 이상이 0인 경우 예측 움직임 벡터를 0으로 결정한다. 예를 들어, 주변 블록 A, B, C의 움직임 벡터가 각각 mvA (0,10)이고, mvB (1, 10)이며, mvC (2, 10)인 경우, 현재 블록의 예측 움직임 벡터는 (0, 10)이 된다.
만일, 32x32 화소 블록인 확장된 매크로블록의 위치가 도 2에 도시한 바와 같이 16화소의 배수로 패딩된 이미지와 패딩된 영역에 걸치는 경우, 해당 확장된 매크로블록이 SKIP 모드이면 도 3에 도시한 바와 같이 실제의 이미지 블록(16x16 화소 블록)의 왼쪽 블록과 위쪽 블록을 이용하여 예측 움직임 벡터를 구하고, 그 예측 움직임 벡터를 사용해서 실제의 이미지 블록에 대한 움직임 예측 및 보상을 수행한다. 현재 부호화 대상인 확장된 매크로블록의 최적의 부호화 모드가 SKIP 모드인 경우, skip32_flag를 복호화하고 다음의 확장된 매크로블록에 대한 부호화를 수행한다.
다시 도 1을 참조하면, 감산기(120)는 움직임 추정기(116)에서 추정한 현재 블록의 움직임 벡터가 가리키는 참조 블록과 현재 블록을 감산하여 잔여 블록을 생성하고, 변환기 및 양자화기(130)는 감산기(120)에 의해 생성된 잔여 블록을 변환 및 양자화하며, 부호화기(140)는 양자화된 변환 계수를 엔트로피 부호화하여 부호화 데이터를 생성한다. 여기서, 변환기 및 양자화기(130)는 현재 블록의 크기에 따라 하나 이상의 변환 및 양자화를 수행한 후 가장 효율이 좋은 변환의 종류를 선택하고, 선택된 변환의 종류에 따라 변환 및 양자화된 변환 계수를 생성한다. 부호화기(140)에서는 각 블록마다 선택된 변환의 종류를 식별하기 위한 변환 타입을 생성하고 부호화하여 변환 타입 데이터를 생성한다. 변환 타입 데이터는 부호화 데이터에 포함된다. 단, 16x16 화소 블록 내에서는 서로 다른 변환을 사용할 수 없다.
인트라 예측 블록에서 설명한 변환 방법과 마찬가지로, 16x16 화소 서브블록이 8x8 화소 블록으로 분할되고 4 개의 8x8 화소 서브블록들 중 한 개 이상의 8x8 화소 서브블록이 8x8 화소보다 작은 서브블록으로 분할된 경우에는 16x16 화소 서브블록의 잔여 블록에 대해서는 4x4 변환만이 사용될 수 있으며, 이 경우 변환 타입은 부호화되지 않는다. 16x16 화소 서브블록이 4 개의 8x8 화소 서브블록으로 분할된 경우에는 16x16 화소 서브블록의 잔여 블록에 대해서는 4x4 변환과 8x8 변환이 수행되어 부호화 비용이 작은 변환이 선택되며, 선택된 변환의 종류를 나타내는 변환 타입(예를 들어, 1 비트로 표시됨)이 부호화된다.
16x16 화소 서브블록이 2 개의 8x16 화소 서브블록으로 분할된 경우에는 16x16 화소 서브블록의 잔여 블록에 대해서는 4x4 변환, 8x8 변환과 8x16 변환이 수행되어 부호화 비용이 가장 작은 변환의 종류가 선택되고, 16x16 화소 서브블록이 2 개의 16x8 화소 서브블록으로 분할된 경우에는 16x16 화소 서브블록의 잔여 블록에 대해서는 4x4 변환, 8x8 변환과 16x8 변환이 수행되어 부호화 비용이 가장 작은 변환의 종류가 선택되며, 선택된 변환의 종류를 나타내는 변환 타입(예를 들어, 1 비트 또는 2 비트로 표시될 수 있다)이 부호화된다. 16x16 화소 이상의 서브블록에 대해서는 4x4 변환, 8x8 변환과 16x16 변환이 수행되어 부호화 비용이 가장 작은 변환이 선택되며, 선택된 변환의 종류를 나타내는 변환 타입(예를 들어, 1 비트 또는 2 비트로 표시됨)이 부호화된다.
16x16 화소 블록이 4 개의 8x8 화소 서브블록으로 분할된 경우와 같이 선택 가능한 변환의 종류가 2가지인 경우, 변환 타입 부호화에 사용되는 부호화 비트는 표 1과 같이 구성될 수 있다.
Figure 112011028201302-pat00007
또한, 16x16 화소 블록이 2개의 8x16 화소 블록으로 분할되거나, 2개의 16x8 화소 블록으로 분할되거나 또는 16x16 이상의 서브 블록과 같이 선택 가능한 변환의 종류가 3가지인 경우, 변환 타입 부호화에 사용되는 부호화 비트는 표 2와 같이 구성될 수 있다.
Figure 112011028201302-pat00008
도 15는 본 발명의 일 실시예에 따른 서브블록 크기에 따른 사용 가능한 변환의 종류와 변환 타입이 부호화되는 단위를 나타낸 예시도이다.
도 15에서는 확장된 매크로블록이 64x64 화소이고, 확장된 매크로블록이 다양한 크기의 서브블록으로 분할된 경우를 예시적으로 나타내었다. 전술한 바와 같이, 매크로블록의 첫 번째 16x16 화소 블록(1510)은 8x8 화소 블록보다 작은 4x4 화소 서브블록으로 분할되었으므로 사용 가능한 변환은 4x4 변환뿐이며, 이 경우 변환 타입은 부호화되지 않는다. 두 번째 16x16 화소 블록(1520)은 4 개의 8x8 화소 서브블록으로 분할되었으므로 4x4 변환 또는 8x8 변환 중 부호화 비용이 작은 하나가 선택되며, 선택된 변환의 종류를 나타내는 변환 타입이 부호화된다. 세 번째 16x16 화소 블록(1530)은 2 개의 8x16 화소 서브블록으로 분할되었으므로 4x4 변환, 8x8 변환 또는 8x16 변환 중 부호화 비용이 작은 하나가 선택되며, 선택된 변환의 종류를 나타내는 변환 타입이 부호화된다. 네 번째 16x16 화소 블록(1540)은 2 개의 16x8 화소 서브블록으로 분할되었으므로 4x4 변환, 8x8 변환 또는 16x8 변환 중 부호화 비용이 작은 하나가 선택되며, 선택된 변환의 종류를 나타내는 변환 타입이 부호화된다. 다섯 번째 16x32 화소 블록(1550), 여섯 번째 16x32 화소 블록(1560), 일곱 번째 32x32 화소 블록(1570) 및 여덟 번째 32x32 화소 블록(1580)은 모두 16x16 화소 블록보다 크므로 4x4 변환, 8x8 변환 또는 16x16 변환 중 부호화 비용이 작은 하나가 선택되며, 선택된 변환의 종류를 나타내는 변환 타입이 부호화된다. 16x16 화소 보다 큰 블록에 대해서는 16x16 화소 블록 단위로 변환 타입을 선택할 수도 있다. 이 경우, 32x32 화소 블록과 같은 16x16 화소 블록보다 큰 화소 블록 내의 부호화된 블록 패턴이 0이 아닌 16x16 화소 블록에 대해서는 복수개의 변환 타입을 부호화한다.
다시 도 1을 참조하면, 변환기 및 양자화기(130)에 의해 변환 및 양자화된 잔여 블록은 역양자화기 및 역변환이기(150)에 의해 역양자화 및 역변환되어 잔여 블록이 복원되고, 가산기(160)는 복원된 잔여 블록과 예측기(110)에 의해 예측된 예측 블록을 가산하여 현재 블록을 복원한다.
필터(170)는 가산기(160)에 의해 복원된 현재 블록들이 누적되어 만들어지는 픽처를 디블록킹 필터 등을 사용하여 필터링을 수행하고, 필터링된 픽처는 픽처 버퍼(180)에 저장되어 다음 픽처의 참조 픽처로서 이용된다.
도 16은 본 발명의 일 실시예에 따른 디블록킹 필터링을 수행할 블록 경계를 나타낸 예시도이다.
16A 내지 16E는 각각 4x4 변환, 8x8 변환, 8x16 변환, 16x8 변환 및 16x16 변환이 사용된 16x16 화소 블록에서 디블록킹 필터링을 수행할 블록 경계를 나타내었다. 16A에 나타낸 4x4 변환이 사용된 16x16 화소 블록은 각 4x4 화소 블록의 왼쪽과 위쪽의 블록 경계에 디블록킹 필터링이 수행되며, 16B에 나타낸 8x8 변환이 사용된 16x16 화소 블록은 각 8x8 블록의 왼쪽과 위쪽의 블록 경계에 디블록킹 필터링이 수행되며, 16C에 나타낸 8x16 변환이 사용된 16x16 화소 블록은 각 8x16 화소 블록의 왼쪽과 위쪽의 블록 경계에 디블로킹 필터링이 수행되며, 16D에 나타낸 16x8 변환이 사용된 16x16 화소 블록은 각 16x8 화소 블록의 왼쪽과 위쪽의 블록 경계에 디블로킹 필터링이 수행되며, 16E에 나타낸 16x16 변환이 사용된 16x16 화소 블록은 16x16 화소 블록의 왼쪽과 위쪽의 블록 경계에 디블로킹 필터링이 수행된다.
도 17은 본 발명의 일 실시예에 따른 인트라 픽처의 신택스(Syntax)를 나타낸 예시도이다.
확장된 매크로블록에 대한 서브 블록의 형태가 도 4에 도시한 바와 같이 직사각형 타입(예를 들어, 32x16 화소 블록, 16x32 화소 블록 등)을 포함하는 경우에 영상 부호화 장치(100)는 영상 복호화 장치에 분할된 서브 블록의 타입 정보를 전송하여야 하므로, 인트라 픽처의 부호화 데이터는 분할 타입(Partition Type), 인트라 예측 모드(Intra Prediction Mode), CBPX_flag/CBP(Coded Block Pattern X-flag/Coded Block Pattern) 및 변환 계수(Transform Coefficient) 등과 같은 필드들로 구성될 수 있다. 영상 부호화 장치(100)의 부호화기(140)는 분할 타입 정보, 인트라 예측 모드, CBPX_플래그/CBP 및 변환 계수 등을 부호화하여 각 필드에 할당하여 부호화 데이터를 생성한다.
다만, 도 17에서 도시한 인트라 픽처에 대한 부호화 데이터의 신택스는 예시적인 것일 뿐, 인트라 픽처에 대한 부호화 데이터의 신택스가 반드시 도 17에 도시한 바와 같이 구성되어야 하는 것은 아니다. 즉, 인트라 픽처에 대한 부호화 데이터의 신택스 중 일부 또는 전부의 순서가 도 17에 도시한 바와는 다르게 변경될 수도 있으며, 일부의 신택스는 생략될 수도 있음을 인식해야 할 것이다.
또는, 확장된 매크로블록에 대한 서브 블록의 형태가 도 5에 도시한 바와 같이 정방형의 화소 블록으로 분할된 후 16x16 화소 블록 단위로 인트라 예측 부호화가 수행되는 경우, CBPX_플래그에 대한 부호화는 생략되고 양자화 파라미터에 대한 증감정보(Δpq)가 부호화될 수 있다. 이때, 양자화 파라미터에 대한 증감정보는 확장된 매크로블록 단위로 부호화될 수 있으며, CBP 정보는 16x16 화소 블록 단위로 부호화되는 것이 바람직하다.
도 17에서 분할 타입 필드에는 매크로블록이 서브블록으로 분할된 모양을 나타내는 매크로블록의 분할 타입 정보가 부호화된 데이터인 분할 타입 데이터가 할당된다. 분할 타입 정보는 도 18에서 예시적으로 나타낸 분할 타입별 번호를 이용하여 생성될 수 있다.
도 18을 참조하면, 매크로블록 레이어 K의
Figure 112011028201302-pat00009
화소 블록이 더 이상 분할되지 않는 경우에는 매크로블록 레이어 K의
Figure 112011028201302-pat00010
화소 블록에 분할 타입 번호 0이 할당된다. 매크로블록 레이어 K의
Figure 112011028201302-pat00011
화소 블록이 두 개의
Figure 112011028201302-pat00012
화소 블록으로 분할된 경우에는 매크로블록 레이어 K의
Figure 112011028201302-pat00013
화소 블록에 분할 타입 번호 1이 할당된다. 매크로블록 레이어 K의
Figure 112011028201302-pat00014
화소 블록이 두 개의
Figure 112011028201302-pat00015
화소 블록으로 분할된 경우에는 매크로블록 레이어 K의
Figure 112011028201302-pat00016
화소 블록에 분할 타입 번호 2가 할당된다. 매크로블록 레이어 K의
Figure 112011028201302-pat00017
화소 블록이 4 개의
Figure 112011028201302-pat00018
로 분할되는 경우에는 매크로블록 레이어 K의
Figure 112011028201302-pat00019
화소 블록에 분할 타입 번호 3이 할당된다. 도 18에서 각 매크로블록 레이어 K의
Figure 112011028201302-pat00020
화소 블록 내의 분할된 서브블록에 표시된 0, 1, 2, 3 등의 숫자는 각 서브블록을 식별하기 위한 파티션 번호(Partition Number)이다.
도 18에는 분할 타입 별 번호를 작은 숫자에서 큰 순자의 순서로 할당하는 것으로 나타냈지만, 도 18의 분할 타입 번호는 일 예를 나타낸 것일 뿐이며, 발생순서로 큰 숫자에서 작은 숫자로 할당하여 사용할 수도 있다. 또한, 각각의 분할 타입의 발생 확률에 따라 분할 타입 번호를 할당할 수도 있으며, 적응적으로 분할 타입 번호를 바꾸어 사용할 수도 있다. 또한, 각각의 분할된 블록은 더 작은 블록으로 분할될 수도 있다. 예를 들어, 32x32 화소 블록이 분할 타입 번호 3에 의해 4개의 16x16 화소 블록으로 분할된 경우, 각각의 16x16 화소 블록은 도 18의 분할 타입 별 번호를 사용하여 더 작은 서브블록으로 분할될 수 있다. 또한, 16x16의 서브 블록이 더 작은 블록으로 분할되는 경우, 상위의 화소 블록의 분할 타입 번호 즉, 32x32 화소 블록의 분할 타입 번호와 다른 분할 타입 번호가 사용될 수도 있다. 확장된 매크로블록을 16x16 화소 블록 단위로 분할하여 부호화를 수행하는 경우에는 16x16 화소 블록보다 큰 서브 블록(예를 들면, 64x32 화소블록, 32x64 화소블록, 16x32 화소블록, 32x16 화소블록 등)에 대한 분할 타입 번호의 부호화는 생략될 수도 있다.
도 19는 본 발명의 일 실시예에 따라 확장된 매크로블록을 다양한 크기의 서브블록으로 분할하는 경우의 분할 타입 번호 부호화 순서를 설명하기 위해 도시한 도면이다.
도 19에서는 확장된 매크로블록이 64x64 화소 블록이고 최대 분할 레이어의 개수가 4인 경우를 나타내었다. 확장된 매크로블록이 도 19와 같이 분할되었을 때, 본 발명의 일 실시예에 따르면 분할 레이어별 분할 타입 번호를 분할 타입 번호 부호화 순서에 따라 순차적으로 부호화하여 매크로블록의 분할 타입 정보를 부호화할 수 있다.
도 19에 도시한 매크로블록이 분할 레이어별로 분할되는 과정을 순차적으로 나타내면 도 20과 같이 나타낼 수 있다. 도 20을 참조하면, 매크로블록 레이어 0(L0)에서, 64x64 화소 서브블록은 4 개의 32x32 화소 서브블록으로 분할되며, 레이어 1(L1)에서, L1-P0(매크로블록 레이어 1의 파티션 번호 0)의 서브블록과 L1-P3(매크로블록 레이어 1의 파티션 번호 3)의 서브블록은 다시 4 개의 16x16 화소 서브블록으로 분할되고 L1-P1(매크로블록 레이어 1의 파티션 번호 1)의 서브블록과 L1-P2(레이어 1의 파티션 번호 2)의 서브블록은 각각 16x32 화소 서브블록과 32x16 화소 서브블록으로 분할된다. L1-P1과 L1-P2의 서브블록은 각각 2 개의 서브블록으로 분할된 후 더 이상 분할되지 않으므로 레이어별 파티션 번호를 나타내지 않았다. 레이어 2(L2)에서, L2-P0(매크로블록 레이어 2의 파티션 번호 0)의 서브블록은 다시 4 개의 8x8 화소 서브블록으로 분할되고 L2-P3(매크로블록 레이어 2의 파티션 번호 3)은 2 개의 16x8 화소 서브블록으로 분할된다. 다시, 매크로블록 레이어 3(L3)에서, L3-P0(매크로블록 레이어 3의 파티션 번호 0)의 서브블록과 L3-P1(매크로블록 레이어 3의 파티션 번호 1)의 서브블록은 각각 4 개의 4x4 화소 서브블록으로 분할된다. 이때, 확장된 매크로블록을 16x16 화소 블록 단위로 부호화를 수행하는 경우, L1-P1 블록과 L1-P2 블록은 각각 16x32 화소 서브블록 및 32x16 화소 서브블록으로 분할하는 대신에 L1-P3 블록과 같이 각각 4개의 16x16 화소 블록 단위로 부호화가 수행될 수 있다.
도 21은 매크로블록의 레이어별 분할 타입 번호를 순차적으로 부호화하는 과정을 설명하기 위한 예시도이다.
도 19에 도시한 매크로블록의 분할 타입 정보를 부호화하면 도 21와 같이 부호화할 수 있다. 도 19에서, '□' 안에 기재된 숫자는 각 서브블록의 분할 타입 번호를 부호화하는 순서를 나타낸다. 확장된 매크로블록에 대한 레이어별 분할 타입 번호를 분할 타입 번호 부호화 순서에 따라 순차적으로 부호화하면, 도 21에 도시한 순서에 따라 레이어별 분할 타입 번호를 순차적으로 부호화할 수 있다.
먼저, 매크로블록 레이어 0의 64x64 화소 서브블록(L0-P0)은 4 개의 32x32 화소 서브블록들로 분할되었으므로, 분할 타입 번호 3을 부호화한다. 64x64 화소 서브블록 내 4 개의 32x32 화소 서브블록 중 첫 번째 32x32 화소 서브블록(L1-P0)도 4 개의 16x16 화소 서브블록으로 분할되었으므로 분할 타입 번호 3을 부호화한다. 레이어 1의 첫 번째 32x32 화소 서브블록(L1-P0) 내 4 개의 16x16 화소 서브블록 중 첫 번째 16x16 화소 서브블록(L2-P0)도 4 개의 8x8 화소 서브블록으로 분할되었으므로 분할 타입 3을 부호화하고 해당 16x16 화소 서브블록(L2-P0) 내 4 개의 8x8 화소 블록(L3-P0, L3-P1, L3-P2, L3-P3)은 더 이상 작은 서브블록으로 분할되지 않으므로 분할 타입 번호 {3, 3, 0, 0}을 각각 부호화한다. 레이어 3의 서브블록들은 더 작은 서브블록으로 분할될 수 없으므로 레이어 3에 속하는 서브블록들의 분할 타입 번호는 부호화하지 않는다.
매크로블록 레이어 3 내 서브블록들의 분할 타입 번호를 모두 부호화했으므로 매크로블록 레이어 2의 두 번째 16x16 화소 서브블록(L2-P1)과 세 번째 16x16 화소 서브블록(L2-P2)의 분할 타입 번호를 부호화하는데, 모두 더 이상 작은 블록으로 분할되지 않았으므로 분할 타입 번호 0을 부호화한다. 네 번째 16x16 화소 서브블록(L2-P3)은 16x8 화소 서브블록으로 분할되었지만 분할 타입 번호가 3이 아니므로 분할 타입 번호 1만을 부호화한다. 레이어 2 내의 4 개 서브블록들의 분할 타입 번호를 모두 부호화했으므로 레이어 1의 두 번째 32x32 화소 서브블록(L1-P1)의 분할 타입 번호를 부호화하는데, 레이어 1의 두 번째 32x32 화소 서브블록(L1-P1)은 16x32 화소 서브블록으로 분할되었고 분할된 각 서브블록은 더 이상 작은 서브블록으로 분할되지 않았으므로 분할 타입 번호 2를 부호화한다. 이와 같은 방식으로 매크로블록 레이어 1의 세 번째 32x32 화소 서브블록(L1-P2)와 매크로블록 레이어 1의 네 번째 32x32 화소 서브블록(L1-P3) 및 그 하위의 4 개의 16x16 화소 서브블록(L2-P0, L2-P1, L2-P2, L2-P3)의 분할 타입 번호를 차례로 부호화하면, {1, 3, 0, 0, 0, 0}을 부호화한다.
전술한 바와 같은 부호화 방식에 따라 도 19에 도시한 매크로블록의 분할 타입 정보를 부호화하면, 도 21에 도시한 바와 같이 분할 타입 번호 {3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 2, 1, 3, 0, 0, 0, 0}가 부호화 된다. 이때 분할 타입 번호는 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화를 이용하여 이진 비트 스트링(Bit String)으로 부호화될 수 있다.
예를 들어, 이진 산술 부호화를 이용하는 경우, 각 분할 타입 번호는 현재 부호화할 분할 타입 번호의 레이어 번호에 따라 다른 이진값(Binary Value)을 이용할 수 있다. 레이어 번호가
Figure 112011028201302-pat00021
이하인 경우에는 표 3을 이용하고 레이어 번호가
Figure 112011028201302-pat00022
보다 큰 경우에는 표 4를 이용하여 부호화할 수 있다. 예를 들어 도 11의 서브블록(L1-P0)의 분할 타입 번호 3은 표 3을 참고하면 이진수 '01'로 표현될 수 있으므로 이진수 '0'과 '1'을 각각 산술 부호화하여 분할 타입 번호 3을 부호화할 수 있다. 그리고 서브블록(L2-P0)에 속하는 서브블록(L3-P2)의 분할 타입 번호 0은 표 4를 참고하면 이진수 '1'로 표현될 수 있으므로 이진수 '1'을 산술 부호화하여 분할 타입 번호 3을 부호화할 수 있다.
Figure 112011028201302-pat00023
Figure 112011028201302-pat00024
다시 도 17을 참조하면, 인트라 픽처에 대한 매크로블록의 분할 타입 정보를 부호화하여 분할 타입 데이터가 분할 타입 필드에 할당되면, 인트라 예측 모드 필드에 인트라 예측 모드에 대한 정보가 부호화된 데이터인 인트라 예측 모드 데이터가 할당된다.
도 22는 본 발명의 일 실시예에 따른 인트라 예측 모드의 부호화 순서를 나타낸 예시도이다.
도 22는 도 19와 같이 확장된 매크로블록이 64x64 화소 블록이고 최대 분할 레이어의 개수가 4인 경우를 나타내었다. 확장된 매크로블록이 도 22와 같이 분할되었을 때, 확장된 매크로블록의 각 서브블록에 대한 인트라 예측 모드는 도 22에 도시한 인트라 예측 모드의 부호화 순서에 따라 순차적으로 부호화하여 인트라 예측 모드 데이터를 생성할 수 있다. 즉, 각 서브블록 내에 표시된 번호는 인트라 예측 모드를 부호화하기 위한 인트라 예측 모드의 부호화 순서를 나타낸 것이다. 만일, 64x64 화소의 확장된 매크로블록에 대하여 16x16 화소 블록 단위로 부호화를 수행하는 경우, 15번째 블록 및 16번째 블록, 또는 17번째 블록 및 18번째 블록에 해당하는 32x32 화소 블록은 16x32 화소 블록 또는 32x16 화소 블록으로 분할하는 대신에, 19번째 블록 내지 22번째 블록과 같이 각각 4개의 16x16 화소 블록 단위로 분할하여 부호화를 수행할 수 있다.
확장된 매크로블록의 휘도 성분의 서브블록이 16x16 화소 블록이 아닌 경우에는 주변 블록으로부터 추정한 현재 블록의 예측 방향과 선택된 현재 블록의 예측 방향이 동일한지 여부를 나타내는 예측 모드 플래그가 부호화되고, 예측 모드 플래그가 현재 부호화 대상인 블록의 예측 방향과 주변 블록으로부터 추정한 현재 블록의 예측 방향이 동일하지 않는 경우에는 현재 블록의 예측 방향과 주변 블록으로부터 추정한 현재 블록의 예측 방향이 동일하지 않음을 나타내는 예측 모드 플래그와 해당 서브블록의 크기에 따른 여러 가지 인트라 예측 방향 중에서 주변 블록으로부터 추정한 현재 블록의 예측 방향을 제외한 나머지 예측 방향 중에서 어떠한 예측 방향인지를 나타내는 예측 모드의 예측 모드 번호를 해당 블록의 인트라 예측 모드로서 부호화되어 인트라 예측 모드 데이터가 생성된다. 이때, 확장된 매크로블록을 4x4 화소 블록, 8x8 화소 블록 또는 16x16 화소 블록을 제외한 서브 블록으로 분할하여 인트라 예측을 수행하는 경우, 현재 블록의 왼쪽 블록과 위쪽 블록을 이용하여 예측한 현재 블록의 예측 모드 번호가 3 이상인 경우에는 현재 블록의 예측 방향은 도 9의 예측 모드 번호 2(DC 모드)를 사용할 수 있다.
만약, 주변 블록으로부터 추정한 현재 블록의 예측 방향과 현재 블록의 예측 방향이 동일한 경우에는 주변 블록으로부터 추정한 현재 블록의 예측 방향과 현재 블록의 예측 방향이 동일함을 나타내는 예측 모드 플래그를 인트라 예측 모드로서 부호화하여 인트라 예측 모드 데이터가 생성된다. 휘도 성분의 서브블록이 16x16 화소 블록이거나 색차 성분의 매크로블록의 예측모드는 해당 블록의 예측 모드의 번호 자체를 인트라 예측 모드로서 부호화하여 인트라 예측 모드 데이터가 생성된다. 이와 같이 도 22에 도시한 바와 같은 순서로 부호화되어 생성되는 매크로블록의 각 서브블록에 대한 인트라 예측 모드 데이터는 도 17에 도시한 인트라 예측 모드 필드에 할당된다.
도 23은 본 발명의 일 실시예에 따라 매크로블록의 인트라 예측 모드를 부호화하는 과정의 일 예를 설명하기 위한 예시도이다.
23A에서는 현재 부호화하고자 하는 현재 매크로블록이 64x64 화소 블록이고 도시한 바와 같이 다양한 크기와 모양의 서브블록으로 분할되었으며, 현재 매크로블록의 왼쪽의 주변 블록은 64x64 화소 단위로 인트라 예측이 되어 왼쪽의 주변 블록의 예측 모드 번호는 0(수직 모드)이고, 현재 매크로블록의 위쪽 주변 블록은 64x64 화소 단위로 인트라 예측이 되어 왼쪽 주변 블록의 예측 모드 번호는 1(수평모드)인 경우를 예시적으로 나타내었다. 현재의 확장된 매크로블록 내의 각 서브블록 내에 표시되는 숫자는 각 서브블록의 예측 모드 번호를 나타낸다.
현재의 확장된 매크로블록의 첫 번째 4x4 화소 서브블록의 예측 모드 번호는 2(DC 모드)이고 왼쪽의 주변 블록과 위쪽의 주변 블록을 이용하여 추정되는 해당 서브블록의 예측 모드 번호는 0이다. 즉, 왼쪽의 주변 블록의 예측 모드 번호 0과 윗쪽의 주변 블록의 예측 모드 번호 1 중 0이 더 작기 때문에, 첫 번째 4x4 화소 서브블록의 예측 모드 번호는 0으로 추정된다. 첫 번째 4x4 화소 서브블록의 예측 모드와 주변 블록으로부터 추정되는 해당 서브블록의 예측 모드가 다르기 때문에, 해당 서브블록의 예측 방향과 주변 블록으로부터 추정되는 해당 서브블록의 예측 방향이 동일하지 않음을 나타내는 예측 모드 플래그와 해당 서브블록의 예측 모드 번호인 예측 모드 번호 2가 해당 서브블록의 인트라 예측 모드로서 부호화된다. 두 번째 4x4 화소 서브블록의 예측 모드 번호는 1이고 주변 블록으로부터 추정되는 해당 서브블록의 예측 모드 번호는 1이어서 해당 서브블록의 예측 방향과 주변 블록으로부터 추정되는 해당 서브블록의 예측 방향이 동일하므로, 예측 방향이 동일함을 나타내는 예측 모드 플래그만이 해당 서브블록의 인트라 예측 모드로서 부호화된다.
다음으로는 도 22에 도시한 인트라 예측 모드의 부호화 순서에 따라 다음 서브블록의 인트라 예측 모드를 부호화하는데, 세 번째 4x4 화소 서브블록의 예측 모드 번호는 0이고 주변 블록으로부터 추정되는 해당 서브블록의 예측 모드 번호는 0이어서 해당 서브블록의 예측 방향과 주변 블록으로부터 추정되는 해당 서브블록의 예측 방향이 동일하므로, 예측 방향이 동일함을 나타내는 예측 모드 플래그만이 해당 서브블록의 인트라 예측 모드로서 부호화된다. 11 번째 16x16 화소 서브블록의 경우, 예측 플래그는 부호화되지 않고 해당 서브블록의 예측 모드 번호 1이 해당 서브블록의 인트라 예측 모드로서 부호화된다. 도 23에는 15번째 블록 및 16번째 블록을 16x32 화소 블록으로 분할하여 인트라 예측 모드로 부호화하고, 17번째 블록 및 18번째 블록을 32x16 화소 블록으로 분할하여 인트라 예측 모드로 부호화하는 경우를 도시하였다. 그러나, 확장된 매크로블록에 대하여 16x16 화소 블록 단위로 인트라 예측 부호화를 수행하는 경우, 16x16 화소 블록보다 큰 서브 블록에 대해서는 15번째 블록 및 16번째 블록, 또는 17번째 블록 및 18번째 블록과 같은 직사각형의 화소 블록 분할은 생략한다.
23B에는 23A와 같이 현재 매크로블록의 인트라 예측 모드를 부호화하는 경우 인트라 예측 모드 필드에 포함되는 인트라 예측 모드 데이터를 예시적으로 나타내었다. 첫 번째 4x4 서브블록에 대해서는 예측 모드 플래그와 예측 모드 번호가 부호화되며, 두 번째, 세 번째, 네 번째 4x4 서브블록에 대해서는 예측 모드 플래그만이 부호화되는 등 도시한 바와 같이 부호화 순서에 따라 차례로 인트라 예측 모드 데이터가 인트라 예측 모드 필드에 할당된다.
확장된 매크로블록을 인트라 예측 부호화할 때, 도 4에 도시한 바와 같이 16x16 화소 블록보다 큰 직사각형의 서브 블록(예를 들면, 16x32, 32x16 등)으로 분할하여 인트라 예측 부호화를 수행하는 경우에는 서브블록의 크기를 고려한 부호화된 블록 패턴 플래그(CBPX_flag: Coded Block Pattern X_flag, 이하 'CBPX 플래그'라 칭함)와 CBP(CBP: Coded Block Pattern, 이하 'CBP'라 칭함)를 부호화하여, CBPX_플래그/CBP 필드에 할당할 수 있다. CBPX_플래그와 CBP 필드에 할당되는 CBP 데이터는 매크로블록의 서브블록 내에 0이 아닌 양자화된 변환 계수를 포함하는지 여부를 나타낸다. 그러나, 도 5에 도시한 바와 같이 확장된 매크로블록을 16x16 화소 블록 단위로 분할하여 인트라 예측 부호화를 수행하는 경우에는 블록 패턴 플래그의 부호화는 생략하고 양자화 파라미터에 대한 증감정보(Δpq)를 부호화할 수 있다. 이때, 양자화 파라미터에 대한 증감정보는 확장된 매크로블록 단위로 부호화될 수 있으며, CBP 데이터는 16x16 화소 블록 단위로 부호화되는 것이 바람직하다.
도 24는 본 발명의 일 실시예에 따라 인트라 매크로블록에 대한 CBPX_플래그와 CBP를 부호화 과정을 설명하기 위한 예시도이다.
도 24에서는 확장된 매크로블록이 64x64 화소 블록인 경우 CBPX_플래그와 CBP를 부호화하는 과정을 예를 들어 나타내었다. 영상 부호화 장치(100)의 부호화기(140)는 확장된 매크로블록의 서브블록의 크기가 64x64, 64x32 및 32x64 중 하나인지 여부를 판단하며(S2410), 서브블록의 크기가 64x64, 64x32 및 32x64 중 하나가 아닌 경우에는 서브블록의 크기가 32x32, 32x16 및 16x32 중 하나인지 여부를 판단한다(S2420). 이때, 확장된 매크로블록을 16x16 화소 단위로 분할하여 인트라 예측을 수행하는 경우, 단계 S2410에서는 서브 블록의 크기가 64x64 화소 블록인지 즉, 확장된 매크로블록 단위로 인트라 예측 부호화를 수행하는지 판단하며, 단계 S2420에서는 서브 블록의 크기가 64x64 화소 블록이 아닌 경우에 서브 블록의 크기가 32x32 화소 블록인지를 판단할 수 있다. 단계 S2420의 판단 결과, 그 서브블록의 크기가 32x32, 32x16 및 16x32 중 하나이거나 32x32 화소 블록인 경우, 서브블록 내 0이 아닌 변환 계수가 있는지 여부를 판단하며(S2430), 0이 아닌 변환 계수가 있는 경우에는 해당 서브블록 내에 0이 아닌 부호화할 계수가 있음을 나타내는 CBP32 플래그(예를 들어, '1'과 같이 1 비트로 표시될 수 있다)를 부호화하고(S2440), 서브블록 내에서 16x16 화소 블록 단위로 CBP를 부호화하며(S2450), 서브블록 내 0이 아닌 변환 계수가 없는 경우에는 서브블록 내에 0이 아닌 변환 계수가 없음을 나타내는 CBP32 플래그(예를 들어, '0'과 같이 1비트로 표시될 수 있다)를 부호화한다(S2460).
여기서, CBP64 플래그는 64x64 화소 블록 내 0이 아닌 부호화할 계수의 존재 유무를 나타내는 플래그이다. 마찬가지로, CBP32 플래그는 32x32 화소 블록 내 0이 아닌 부호화할 계수의 존재 유무를 나타내는 플래그이다. 이와 같은 CBPX 플래그(X는 32, 64 등)는 휘도 성분의 잔여 블록이 0이 아닌 변환계수를 가지지 않는 경우에는 변환 타입을 전송할 필요가 없으므로, 휘도 성분 블록들이 0이 아닌 변환계수를 가지는지를 나타내는 데 사용된다. CBP는 16x16 화소 블록 단위로 부호화되며, 16x16 화소 블록 내 각 8x8 화소 블록 당 0이 아닌 변환 계수가 있는지 여부를 8x8 화소 블록 당 1비트를 이용하여 나타내고, 색차 성분에 대해서는 두 개의 2x2 색차 성분 DC 블록 내 0이 아닌 변환 계수가 있는지 여부를 1 비트를 이용하여 나타내며, 두 개의 8x8 색차 성분 AC 블록 내 0이 아닌 변환 계수가 있는지 여부를 1 비트를 이용하여 나타낸다.
한편, 단계 S2420에서, 서브블록의 크기가 32x32, 32x16 및 16x32 중 하나가 아니거나 32x32 화소 블록이 아닌 경우에는, 단계 S2450으로 진행하여 CBP를 부호화한다. 이때, 서브 블록의 크기가 32x32, 32x16 또는 16x32 화소 블록이 아닌 경우에 서브 블록의 크기가 16x16, 16x8 또는 8x16 화소 블록인지를 판단할 수 있다. 서브 블록이 16x16, 16x8 또는 8x16 화소 블록인 경우, 해당 서브 블록 내에 0이 아닌 부호화할 계수가 있는 경우에는 CBP16 플래그(예를 들어, ‘1’과 같이 1 비트로 표시될 수 있음)를 부호화하며, 그 외의 경우에는 CBP 플래그를 사용하지 않고 16x16 화소 블록 단위로 CBP를 부호화할 수 있다.
또한, 단계 S2410에서, 서브블록의 크기가 64x64, 64x32 및 32x64 중 하나 이거나 64x64 화소 블록인 경우에는 서브블록 내 0이 아닌 변환 계수가 있는지 여부를 판단하여(S2470), 서브블록 내 0이 아닌 변환 계수가 있는 경우에는 0이 아닌 변환 계수가 있음을 나타내는 CBP64 플래그(예를 들어, '1'과 같이 1 비트로 표시될 수 있다)를 부호화하고(S2480), 서브블록 내 0이 아닌 부호화할 계수가 없는 경우에는 0이 아닌 부호화할 계수가 없음을 나타내는 CBP64 플래그(예를 들어, '0'과 같이 1 비트로 표시될 수 있다)를 부호화한다(S2490). 여기서, CBP64 플래그는 64x64 화소 블록 내 0이 아닌 양자화된 변환 계수의 존재 유무를 나타내는 플래그이다.
만일, 64x64 화소의 확장된 매크로블록에 대하여 16x16 화소 블록 단위로 인트라 예측 부호화를 수행하는 경우에는 전술한 바와 같이 CBP64 플래그 및 CBP32 플래그는 생략할 수 있으며, 양자화 파라미터에 대한 증감정보(Δpq)를 부호화할 수 있다. 이때, 양자화 파라미터에 대한 증감정보는 확장된 매크로블록 단위로 부호화하는 것이 바람직하다.
CBP 플래그를 부호화하는 경우에 대하여, CBP 플래그가 0이 아닌 경우에 변환 타입을 부호화한다. 예외적으로, 16x16 화소 블록이 네 개의 8x8 화소 블록으로 분할된 경우에는 CBP를 부호화한 후 CBP가 0이 아닌 경우에 16x16 화소 블록 단위로 적용되는 변환 타입을 부호화한다.
변환 타입을 부호화한 후에는 변환 타입에 따라 CBP를 부호화한다. 16x16 변환이 사용된 경우에는 색차 성분의 CBP 2비트만 부호화하며, 8x16 또는 16x8 변환이 사용된 경우에는 16x16 화소 블록 내의 두 개의 8x16 또는 16x8 화소 블록이 0이 아닌 변환 계수를 가지는지를 나타내는 CBP 2비트를 부호화한다. 다만, 예외적으로 두 개의 분할블록 중 첫 번째 분할블록의 CBP 비트가 0인 경우에는 두 번째 분할 블록의 CBP 비트는 부호화하지 않을 수 있다.
도 25는 본 발명의 일 실시예에 따른 CBP의 구조를 나타낸 예시도이다.
도 25에서는 입력 영상이 4:2:0 포맷(Format)인 경우, CBP의 구조를 예시적으로 나타내었다. 휘도 성분의 첫 번째 8x8 화소 블록(Y0) 내에 0이 아닌 변환 계수가 없는 경우 CBP의 최하위 비트(LSB: Least Significant Bit)는 0이고, 두 번째 8x8 화소 블록(Y1) 내에 0이 아닌 양자화된 변환 계수가 있는 경우 CBP의 두 번째 최하위 비트는 1이다. 이와 같은 방식으로 세 번째 8x8 화소 블록(Y2)과 네 번째 8x8 화소 블록(Y3)에 대한 CBP가 할당되고, 두 개의 2x2 색차 성분 DC 블록(U(DC) 및 V(DC)) 내에 0이 아닌 양자화된 변환 계수가 있으므로 색차 DC(Chroma DC)에 대한 비트는 1이고, 두 개의 8x8 색차 성분 AC 블록(U-AC 및 V-AC) 내에 0이 아닌 양자화된 변환 계수가 없으므로 색차 AC(Chroma AC)에 대한 비트는 0이 된다.
도 26은 본 발명의 일 실시예에 따라 CBPX 플래그와 CBP를 부호화하는 순서의 일 예를 나타낸 예시도이다.
도 26에서는 확장된 매크로블록이 64x64 화소 블록이고 현재 부호화 대상인 서브블록의 크기가 64x64, 64x32, 또는 32x64인 경우, CBP64 플래그, CBP32 플래그와 CBP의 부호화 순서를 예시적으로 나타내었다. 도 26에서, 일점 쇄선의 화살표는 CBPX 플래그가 0인 경우 진행되는 순서를 나타내며, 점선의 화살표는 CBPX 플래그가 1인 경우 진행되는 순서를 나타내며, 실선의 화살표는 아무런 조건이 없이 진행되는 순서를 나타낸다.
확장된 매크로블록인 64x64 화소 블록 내에 양자화된 변환 계수가 모두 0인 경우, CBP64 플래그는 0이 부호화되고 한 개 이상의 양자화된 변환 계수가 0이 아닌 경우 CBP64 플래그는 1이 부호화된다. CBP64 플래그가 0인 경우, 더 이상 부호화할 CBP가 없으므로 다음 매크로블록의 CBPX 플래그와 CBP를 부호화한다. CBP64 플래그가 1인 경우, 64x64 화소 블록 내 각 32x32 화소 서브블록의 CBP32 플래그가 부호화되며, CBP32 플래그가 1인 경우 32x32 화소 서브블록 내 4 개의 16x16 화소 블록의 CBP가 부호화된다.
도 27은 본 발명의 일 실시예에 따라 인트라 매크로블록에 대한 CBPX 플래그와 CBP를 부호화하는 순서의 다른 예를 나타낸 예시도이다.
도 27에서는 부호화 대상이 32x32인 화소 블록이고 현재 부호화 대상인 서브블록의 크기가 32x32, 32x16, 또는 16x32인 경우, CBP32 플래그와 CBP의 부호화 순서를 예시적으로 나타내었다. 도 27에서, 일점 쇄선의 화살표는 CBPX 플래그가 0인 경우 진행되는 순서를 나타내며, 점선의 화살표는 CBPX 플래그가 1인 경우 진행되는 순서를 나타내며, 실선의 화살표는 아무런 조건이 없이 진행되는 순서를 나타낸다.
다시 도 1을 참조하면, 영상 부호화 장치(100)의 부호화기(140)는 CBPX(단, X: 32 이상의 정수) 플래그와 CBP를 부호화한 후에는 0이 아닌 양자화된 변환 계수가 있는 블록들에 대해서만 양자화된 변환 계수를 부호화하여 부호화된 영상 데이터를 생성한다. 부호화 대상 블록의 크기가 변환의 크기보다 큰 경우, 블록 내에서 래스터 스캔(Raster-Scan) 순서로 블록의 양자화된 변환 계수를 부호화한다.
도 28은 본 발명의 일 실시예에 따른 분할 타입별 양자화된 변환 계수의 부호화 순서를 나타낸 예시도이다.
도 28에서는 부호화 대상 블록이 32x32 화소 블록인 경우 양자화된 변환 계수를 부호화하는 순서를 예시적으로 나타내었다. 16x16 화소 크기 이상의 블록에 대해서는 16x16 변환(16x16블록 내 16 개의 4x4 블록을 4x4 변환한 후 16 개의 DC 계수에 대해서 4x4 변환을 수행하므로 16x16 화소 단위로 변환이 수행된다고 할 수 있으며, 설명의 편의를 위해 16x16 변환이라 명명한다)이 수행되기 때문에, 32x32 화소 블록의 경우 4 번의 16x16 변환이 수행된다. 32x16 화소 블록인 경우, 각 32x16 화소 블록마다 두 번의 16x16 변환이 수행된다. 16x32 화소 블록인 경우, 각 16x32 화소 블록마다 두 번의 16x16 변환이 수행된다. 16x16 화소 블록인 경우, 각 16x16 화소 블록마다 16x16 변환이 수행된다.
도 29는 본 발명의 일 실시예에 따른 인터 픽처에 대한 부호화 데이터의 신택스 구조를 나타낸 예시도이다.
도 29에서는 입력 영상이 인터 픽처인 경우에 대해 본 발명의 일 실시예에 따라 부호화하여 생성되는 부호화 데이터의 신택스 구조를 예시적으로 나타내었다. 본 발명의 일 실시예에 따른 인터 픽처에 대한 부호화 데이터는 도시한 바와 같이, SKIP_N 플래그, 매크로 블록 타입 및 분할 타입 중 하나 이상의 필드를 포함하며, 확장된 매크로블록이 인트라 매크로블록인 경우에는 인트라 예측 모드, CBPX 플래그/CBP 및 변환 계수 중 하나 이상의 필드를 추가로 포함하며, 확장된 매크로블록이 인터 매크로블록인 경우에는 SKIPX 플래그, 차분 움직임 벡터/참조 픽처 인덱스, CBPX 플래그, 변환 타입, CBP 및 변환 계수 중 하나 이상의 필드를 추가로 포함하여 구성될 수 있다.
다만, 도 29에서 도시한 인터 픽처에 대한 부호화 데이터의 신택스는 예시적인 것일 뿐, 인터 픽처에 대한 부호화 데이터의 신택스가 반드시 도 29에 도시한 바와 같이 구성되어야 하는 것은 아니다. 즉, 인터 픽처에 대한 부호화 데이터의 신택스 중 일부 또는 전부의 순서가 도 29에 도시한 바와는 다르게 변경될 수도 있으며, 일부의 신택스는 생략될 수도 있음을 인식해야 할 것이다.
다시 도 1을 참조하면, 영상 부호화 장치(100)의 부호화기(140)는 현재 부호화 대상인 매크로블록이 SKIP 매크로블록인지 여부를 나타내는 SKIPN 플래그를 부호화한다. 여기서, N은 매크로블록의 크기를 나타낸다. 예를 들어, 매크로블록이 64x64 화소 블록이면 64x64 화소 매크로블록이 SKIP 매크로블록인지 여부를 나타내는 SKIP64 플래그가 부호화되며, 매크로블록이 32x32 화소 블록이면 32x32 화소 매크로블록이 SKIP 매크로블록인지 여부를 나타내는 SKIP32 플래그가 부호화되며, 16x16 화소 매크로블록이 SKIP 매크로블록인지 여부를 나타내는 SKIP16 플래그가 부호화된다.
만약, 매크로블록이 SKIP 매크로블록인 경우, 현재 매크로블록은 부호화할 데이터가 없으므로 다음 매크로블록이 부호화된다. 매크로블록이 SKIP 매크로블록이 아닌 경우, 매크로블록이 인트라 매크로블록인지 또는 인터 매크로블록인지 여부를 나타내는 매크로블록 타입 플래그를 전송한다. 예를 들어, 현재 부호화하고자 하는 입력 영상이 P 픽처인 경우, 사용 가능한 매크로블록 타입은 I-매크로블록과 P-매크로블록이고, 현재 부호화하고자 하는 입력 영상이 B 픽처의 경우, 사용 가능한 매크로블록 타입은 I-매크로블록과 B-매크로블록이다.
분할 타입 필드와 인트라 픽처에 대한 인트라 예측 모드, CBPX 플래그/CBP, 변환 계수 등의 필드에 대해서는 도 17을 통해 전술하였으므로, 이하에서는 인터 픽처에 대한 SKIPX 플래그, 차분 움직임 벡터/참조 픽처 인덱스, CBPX 플래그, 변환 타입, CBP, 변환 계수 등과 같은 필드에 대해 설명한다.
P-픽처 또는 P-슬라이스의 경우, 도 4의 모든 블록 타입들이 움직임 추정에 사용될 수 있으며, 확장된 매크로블록 내에서 16x16 화소 블록 단위로 인트라 모드인지 또는 인터 모드인지를 선택할 수도 있다. 즉, P-픽처 또는 P-슬라이스의 확장된 매크로블록 내에는 인트라 모드와 인터 모드가 모두 사용될 수 있다.
부호화할 대상이 32x32 화소 블록인 경우, 32x32 화소 블록 단위로 부호화를 수행할지 또는 16x16 화소 블록 단위로 부호화를 수행할지는 확장된 매크로블록 플래그(extended_mb_flag)를 통해 나타낼 수 있다. 예를 들어, 확장된 매크로블록 플래그가 1인 경우에는 32x32 화소블록 단위로 부호화를 수행함을 의미하며, 확장된 매크로블록 플래그가 0인 경우에는 16x16 화소블록 단위로 부호화를 수행함을 의미할 수 있다. 확장된 매크로블록 플래그가 0인 경우, 확장된 매크로블록은 4개의 16x16 화소블록으로 분할되어 각 16x16 화소블록 단위로 인트라 모드인지 또는 인터 모드인지를 결정할 수 있다. 또한, 각각의 16x16 화소블록 단위는 더 작은 서브블록으로 분할되어 부호화가 수행될 수 있다.
도 30은 본 발명의 일 실시예에 따른 P-픽처(또는 P-슬라이스)에서 사용되는 신택스의 예를 설명하기 위해 도시한 도면이다. 설명을 간단하게 하기 위해 확장된 매크로블록은 32x32 화소 블록이라고 가정한다.
엔트로피 부호화에 있어 문맥기반 적응적 이진 산술 부호화(CABAC: Context-Adaptive Binary Arithmetic Coding)를 하는 경우, skipX_flag와 interX_flag는 X값에 따라 다른 컨텍스트 테이블(context table)을 가질 수 있다. 예를 들어, skip32_flag와 skip16_flag는 서로 다른 컨텍스트 테이블을 가질 수 있다. 이에 대한 상세한 설명은 후술한다.
skipX_flag는 부호화하고자 하는 현재 블록이 SKIP 모드인지의 여부를 나타내는 플래그이며, 표 5에 나타낸 바와 같이 1비트로 SKIP 모드 여부를 표시할 수 있다. 예를 들어, skipX_flag의 부호화 비트가 1인 경우에 현재 블록이 SKIP 모드인 것으로 나타낼 수 있다. 여기서, X는 확장된 매크로블록의 범위 내에서 16 이상인 수를 의미한다.
Figure 112011028201302-pat00025
현재 블록이 SKIP 모드가 아닌 경우에 interX_flag를 부호화한다. 여기서, interX_flag는 부호화하고자 하는 현재 블록이 인트라 모드인지 또는 인터 모드인지의 여부를 나타내는 플래그이며, 표 6에 나타낸 바와 같이 1비트 또는 2비트로 확장된 매크로블록 내의 분할된 화소 블록들이 인트라 모드인지 또는 인터 모드인지를 나타낼 수 있다.
Figure 112011028201302-pat00026
예를 들어, interX_flag가 ‘00’인 경우, 확장된 매크로블록 내의 분할된 모든 서브 블록들이 인트라 모드임을 의미한다. 이 경우, 확장된 매크로블록인 32x32 화소 블록은 4개의 16x16 화소 블록으로 분할되며, 각각의 16x16 화소 블록은 전술한 인트라 예측 부호화 방법으로 부호화된다. 따라서, 확장된 매크로블록 내의 모든 서브 블록들이 인트라 모드인 경우, 분할된 서브 블록의 블록 타입, 휘도 성분과 색차 성분의 인트라 예측 모드, CBP, 양자화 파라미터, 변환 계수 등이 부호화될 수 있다.
도 30에 나타낸 바와 같이 확장된 매크로블록인 32x32 화소 블록에 대하여 skip32_flag가 0이고 inter32_flag가 1인 경우, 이것은 확장된 매크로블록 내의 분할된 모든 서브 블록들이 인터 모드임을 의미하며, 이후 1비트 플래그인 ‘extended_mb_flag’를 전송한다. 이때, extended_mb_flag가 1인 경우, 이것은 확장된 매크로블록 단위로 움직임 보상을 수행함을 의미하며, 움직임 벡터가 1개이므로 1개의 MVD/ref_idx를 부호화한다. 여기서, MVD/rex_idx는 확장된 매크로블록에 포함되는 움직임벡터 정보/참조 인덱스를 의미한다. extended_mb_flag가 0인 경우, 이것은 확장된 매크로블록이 16x16 화소 블록으로 분할되어 부호화되었음을 의미하며, 각각의 16x16 화소 블록에 대하여 각각의 16x16 화소 블록이 SKIP 모드인지를 나타내는 skip16_flag를 부호화한다. 이 경우, 각각의 16x16 화소 블록에 대하여 SKIP 모드가 아닌 16x16 화소 블록에 대해서만 블록 타입과 MVD/ref_idx를 부호화한다. skip16_flag는 표 5를 이용하여 부호화할 수 있다. 이때, skip32_flag와 skip16_flag를 문맥기반 적응적 이진 산술 부호화(CABAC)하는 경우, 전술한 바와 같이 각각의 신택스는 서로 다른 컨텍스트 테이블을 가질 수 있다.
확장된 매크로블록에 대하여 skip32_flag가 0이고 inter32_flag가 01인 경우, 이것은 확장된 매크로블록 내에 인터 모드와 인트라 모드가 모두 사용되었음을 의미한다. 이 경우, ‘extended_mb_flag’는 필요하지 않으며, 확장된 매크로블록은 16x16 화소 블록으로 분할되어 부호화되었음을 의미하므로, 각각의 16x16 화소 블록이 인트라 모드인지 또는 인터 모드인지를 나타내는 표 7을 이용하여 부호화할 수 있다.
Figure 112011028201302-pat00027
이때, 확장된 매크로블록 내에 인트라 모드와 인터 모드가 함께 존재하는 경우, 각각의 16x16 화소 블록은 각각의 16x16 화소 블록 내의 서브 블록들이 모두 인터 모드이거나 모두 인트라 모드인 경우가 대부분이며, 16x16 화소 블록 내에 인트라 모드의 서브 블록과 인터 모드의 서브 블록이 동시에 존재하는 경우는 무시할 수 있다. 따라서, 각각의 16x16 화소 블록의 분할 타입을 부호화한 후, inter16_flag가 0인 즉, 인트라 모드인 16x16 화소 블록 내의 서브 블록들은 휘도 성분과 색차 성분을 인트라 예측 모드로 부호화한다. 또한, inter16_flag가 1인 즉, 인터 모드인 16x16 화소 블록들에 대해서는 표 5를 이용하여 skip16_flag를 부호화한다. 여기서, 분할 타입을 부호화 한 후 skip16_flag를 부호화하는 이유는, 확장된 매크로블록 내에 인트라 모드와 인터 모드가 동시에 존재한다는 것은 텍스처(Texture)가 어느 정도 있는 영역임을 의미하기 때문에 인트라 모드 주변에 존재하는 인터 모드는 작은 블록으로 분할되었을 가능성이 높으며, 따라서 분할 타입을 먼저 전송하고 블록의 크기가 16x16인 화소 블록에 대해서만 skip16_flag를 부호화하는 것이 바람직하기 때문이다. 그러나 부호화의 순서는 이에 한정된 것이 아니며, skip16_flag를 먼저 부호화한 후 분할 타입을 부호화할 수도 있다.
이후의 CBPX_flag, 변환 타입, CBP/양자화 파라미터, 변환 계수 등에 대한 부호화는 전술한 바와 동일하므로 그 설명을 생략한다. 다만, 인트라 픽처/슬라이스 또는 인트라 EMB의 경우에는 CBPX_flag를 부호화하지 않을 수 있다.
만일, 확장된 매크로블록이 64x64 화소 블록이라고 하면, 확장된 매크로블록이 32x32 화소 블록인 경우와 마찬가지로, 부호화하고자 하는 현재 블록의 분할 타입 정보가 부호화된 후 16x16 크기 이상인 서브블록들에 대해서만 skipX_flag가 부호화된다. 이 경우, X는 16 또는 32 등 서브블록의 크기를 나타낸다. 예를 들어, 매크로블록이 64x64 화소 블록이고 SKIP 모드가 아니며 확장된 매크로블록의 서브블록의 크기가 64x32, 32x64 및 32x32 중 하나인 경우, 각 서브블록에 대해 skip32_flag가 부호화된다. 64x64 화소인 확장된 매크로블록의 서브블록의 크기가 64x32 또는 32x64인 경우, 두 개의 skip32_flag가 부호화된다. 만약, 서브블록의 크기가 32x32보다 작은 경우에는 skip32_flag는 부호화되지 않는다. 그리고 서브블록의 크기가 32x16, 16x32 및 16x16 중 하나인 경우에는 각 서브블록의 skip16_flag가 부호화된다.
도 31은 본 발명의 일 실시예에 따른 B-픽처(또는 B-슬라이스)에서 사용되는 신택스의 예를 설명하기 위해 도시한 도면이다.
B-픽처에서는 최대 두 장까지의 임의의 참조 픽처를 선택할 수 있는데, 그 두 장을 각각 L0 예측, L1 예측이라고 하며, 각각의 참조 픽처는 서로 다른 역할을 한다. 일반적으로, L0 예측(List0 Prediction)이 순방향 예측에 사용되며, L1 예측이 역방향 예측에 사용된다. 즉, B-픽처는 현재 부호화 대상 픽처 이전의 픽처와 현재 부호화 대상 픽처 이후의 픽처들을 참조 픽처로 사용할 수 있으며, 그 두 장의 참조 픽처를 동시에 사용(양방향 예측)하여 움직임 추정 및 보상을 할 수 있다. 움직임 추정에 사용되는 블록 타입은 도 2의 모든 블록 타입이 사용될 수 있으며, P-픽처 방식과 동일하게 확장된 매크로블록 내에서 16x16 화소블록 단위로 인트라 모드인지 인터 모드인지를 선택할 수 있다. 본 발명에 따른 실시예에서는, 두 장의 픽처를 순서대로 현재 픽처 이전에 나오는 픽처와 이후에 나오는 픽처로 한정하지 않고, 전후에 상관없이 임의의 두 장을 참조 픽처로 사용할 수 있으며, 이와 같은 두 장의 참조 픽처를 사용하여 움직임 추정/보상(양방향 예측)을 수행할 수 있다.
본 발명의 실시예에 따른 B-픽처에서 사용할 수 있는 부호화 모드로는 인트라 모드, SKIP 모드, 다이렉트(Direct) 모드, L0 예측, L1 예측 및 양방향 등이 있다.
인트라 모드는 전술한 인트라 부호화 방법과 동일한 방법을 사용하여 부호화를 수행하며, 확장된 매크로블록 단위로 인트라 모드를 선택하거나 확장된 매크로블록 내 16x16 화소 블록 단위로 인트라 모드를 선택할 수 있다.
SKIP 모드는 부호화할 현재 블록이 SKIP 모드임을 나타내는 플래그만 전송한다. 이때, 16x16 화소 블록, 32x32 화소 블록 등과 같은 16x16 화소 이상의 블록에 대하여 SKIP 모드를 사용할 수 있으며, 예측된 B_pred_dir, 예측 움직임 벡터 MVD, 예측 ref_idx 등을 사용하여 움직임 보상을 수행하고 움직임 보상을 통해 얻은 참조 블록이 복원된 블록이 된다. 여기서, B_pred_dir은 B-픽처의 예측방향으로서, L0 및 L1의 양방향을 의미한다.
다이렉트 모드는 다이렉트 모드임을 나타내는 플래그와 변환계수 부호화와 관련된 데이터(예를 들면, CBPX_flag/CBP, 양자화 파라미터, 변환 타입, 변환 계수 등)들만을 부호화한다. 즉, 다이렉트 모드는 움직임 정보의 부호화를 생략한 부호화 모드로서, 8x8, 16x16, 32x32 등과 같이 8x8 화소 블록 이상의 블록에 대하여 다이렉트 모드를 사용할 수 있으며, NxN 다이렉트 모드인 경우에 움직임 추정 및 보상은
Figure 112011028201302-pat00028
화소블록 단위로 움직임 추정 및 보상을 수행한다. 예를 들어, 8x8 다이렉트 모드의 경우, 4x4 화소 블록 단위로 움직임 추정 및 보상을 수행한다.
L0 예측은 L0의 움직임 정보만을 사용하는 한 방향 예측을 의미하며, L1 예측은 L1의 움직임 정보만을 사용하는 한 방향 예측을 의미한다. 양방향 예측은 L0와 L1의 두 개의 움직임 정보를 사용하여 두 픽처의 평균치를 참조 픽처로 사용하는 예측을 의미한다.
B-픽처의 움직임 추정방법으로는 직접예측 모드의 움직임 추정/보상 방법, SKIP 모드의 움직임 추정/보상 방법, 한 방향 예측(L0 예측 또는 L1 예측)의 움직임 추정/보상 방법, 양방향 예측의 움직임 추정/보상 방법 등이 있다.
먼저, 직접예측 모드의 움직임 추정/보상 방법을 살펴보면, Direct 모드는 시간방향의 움직임 정보 상관도를 사용하는 시간 직접예측 모드의 움직임 추정/보상 방법과, 공간방향(픽처 내 수평 수직 2차원 공간)의 움직임 정보 상관도를 사용하는 공간 직접예측 모드의 움직임 추정/보상 방법의 두 가지 방법이 있다. 시간 직접예측 모드나 공간 직접예측 모드는 매크로블록 단위나 블록 단위로 선택하지 않고 슬라이스 단위로 한 가지를 선택하여 사용한다. 직접예측 모드에서는 L1 예측의 가장 작은 참조번호를 가지는 참조픽처가 중요하며 이를 ‘앵커픽처’라고 부른다. 표시 순서상(display order) 대상 픽처의 역방향으로 가장 가까운 참조픽처가 앵커픽처가 되며, 앵커픽처 내 대상 블록과 같은 공간 위치에 있는 블록을‘앵커블록’이라고 한다.
시간 직접예측 모드는 우선 앵커블록의 움직임 정보를 조사하고 앵커블록의 L0 움직임 벡터를 mvCol(MV of the Co-located block, 동일 블록의 움직임 벡터)로 한다. 만일 앵커블록의 L0 움직임 벡터가 없고 L1 움직임 벡터를 가지고 있다면, L1의 움직임 벡터를 mvCol로 사용한다. 시간 직접예측 모드의 L0 참조픽처는 mvCol이 참조하는 픽처로서 시간 직접예측 모드의 L1 참조픽처가 앵커픽처가 된다. 앵커블록이 화면내 부호화된 움직임 정보를 가지지 않는 경우, 움직임 벡터의 크기는 0이 되고 시간 직접예측 모드의 L0 참조픽처는 참조 픽처번호가 0이 된다. 또한, 움직임 벡터 mvCol로부터 L0의 움직임 벡터 mvL0와 L1의 움직임 벡터 mvL1을 구한다. 참조 픽처, 대상 픽처 및 앵커 픽처 사이의 움직임 속도가 일정하다고 가정하면 mvL0와 mvL1의 크기는 참조 픽처, 대상 픽처, 앵커 픽처의 간격에 비례하게 되고 따라서 비례배분에 의해 구해진다. 즉, 참조 픽처와 대상 픽처의 간격 tb와, 참조 픽처와 앵커 픽처의 간격 td를 이용한 수학식 5를 이용하여 mvL0를 구할 수 있다.
Figure 112011028201302-pat00029
또한, mvL1은 mvCol과 같은 역방향이기 때문에 수학식 6을 이용하여 구할 수 있다.
Figure 112011028201302-pat00030
공간 직접예측 모드의 경우에도 L1 예측에서 가장 작은 참조번호의 참조 픽처인 앵커픽처와, 앵커픽처와 같은 공간위치에 있는 앵커블록이 움직임 벡터를 구하는데 사용된다. 공간 직접예측 모드에서는 대상 픽처 내에 부호화한 움직임 벡터로부터 대상블록의 움직임 벡터를 예측한다. 공간 직접예측 모드에서도 시간 직접예측 모드의 개념을 일부 도입하여 앵커블록의 움직임 정보가, i) 앵커블록의 움직임 벡터 크기가 수평, 수직 모두 ±1 화소 이하, ii) 앵커블록 참조픽처의 참조번호가 0, iii) L0에서 최소 참조번호의 참조픽처가 단기 참조픽처인 조건을 모두 만족하는 경우에 L0 움직임 벡터 mvL0와 L1 움직임 벡터 mvL1을 0으로 만들고, L0 예측에서 가장 작은 참조번호를 가지는 픽처를 L0 예측픽처, L1에서 가장 작은 참조번호를 가지는 픽처를 L1 예측픽처로 한다. 이와 같은 조건을 만족할 경우, 대상 픽처 내의 부호화된 움직임 벡터로부터 대상 블록의 움직임 벡터 mvL0와 mvL1, 그리고 참조픽처인 L0 픽처와 L1 픽처를 구한다.
L0 예측에서는 좌측, 상단, 좌측 상단에 위치하는 L0 예측 움직임 벡터 mvA, mvB, mvC를 가지고 수평과 수직 성분의 중앙값을 계산하고 그것을 mvL0로 한다. 마찬가지로, L1 예측에서는 좌측, 상단, 우측 상단의 L1 예측 움직임 벡터 mvA, mvB, mvC를 가지고 수평과 수직 성분의 중앙값을 계산하여 그것을 mvL1으로 한다. 만일, 주변 블록이 단방향 예측이거나 화면 내 부호화된 L0 예측인 경우 또는 L1 예측의 움직임 벡터가 존재하지 않을 경우에는 0 벡터로 대체한다. 참조번호를 구할 경우, 좌측, 상단, 우측 상단의 움직임 벡터 mvA, mvB, mvC의 참조번호 최소값을 계산하고 그것을 NxN 블록의 참조번호로 한다. 이 참조번호를 구하는 처리도 L0 예측, L1 예측과 독립적으로 수행된다. 또한, 주변블록이 단방향 예측이거나, 화면 내 예측 부호화되는 L0 또는 L1 예측의 움직임 벡터가 존재하지 않는 경우, 그 블록은 참조번호를 구할 때 제외된다. 여기서 주의해야 할 점은 NxN 화소 블록의 직접예측 모드를 수행하는 경우 mvL0, mvL1, L0 참조픽처 및 L1 참조픽처를 구하는 과정은 NxN 화소블록 단위로 수행되지만, 주변블록을 통해 구한 예측 움직임 벡터(mvL0, mvL1)를 사용할지 0 벡터를 사용할지는 블록단위로 결정된다는 것이다.
다음에 SKIP 모드의 움직임 추정/보상 방법을 설명한다.
SKIP 모드는 예측 움직임 벡터를 사용해서 움직임 예측 및 보상을 수행한다는 점은 P-픽처의 SKIP 모드와 동일하지만, B-픽처 내 SKIP 모드에 사용되는 움직임 벡터와 참조 픽처의 Direct 모드의 예측 움직임 벡터, 참조 픽처와 동일하다. 즉, SKIP 모드의 움직임 추정/보상 방법은 전술한 직접예측 모드의 움직임 추정/보상 방법과 동일하다. Direct 모드와 SKIP 모드의 차이점은, SKIP 모드는 움직임 정보와 변환계수도 없는 모드이고, Direct 모드는 움직임 정보만 없는 모드라는 점이다.
한 방향 예측(L0 예측 또는 L1 예측)의 움직임 추정/보상 방법은, 참조픽처가 L0 및 L1 중의 하나라는 점을 제외하고 P-픽처의 움직임 추정 및 보상 방법과 동일하므로 이에 대한 설명은 생략한다.
마지막으로, 양 방향 예측의 움직임 추정/보상 방법에 대하여 설명한다.
움직임 정보를 가지는 B-픽처 내 8x8 이상의 크기를 갖는 화소 블록들에 대해서는 전술한 P-픽처의 움직임 추정/보상 방법을 이용하여 L0 참조픽처와 mvL0를 구하여 L0 예측을 수행하며, L1 참조픽처와 mvL1를 구하여 L1 예측을 수행한다. 또한, L0 예측 수행과정을 통해 얻은 L0 참조픽처 내 mvL0 이 가리키는 참조블록과, L1 예측 수행과정을 통해 얻은 L1 참조픽처 내 mvL1이 가리키는 참조블록의 평균치 블록을 참조블록으로 사용하여 mvL0 및 mvL1에 대한 양방향 예측을 수행할 수 있다. 또한, L0 예측의 움직임 정보에 대한 L1 예측을 수행하여 mvL0/L0 참조픽처에 대한 최적의 mvL1, L1 참조픽처를 선택하고, 선택된 L1 참조픽처 내 mvL1이 가리키는 참조블록과 L0 예측 수행과정을 통해 얻은 L0 참조픽처 내 mvL0이 가리키는 참조블록의 평균치 블록을 참조블록으로 사용하여 양방향 예측을 수행할 수 있다. 또한, L1 예측의 움직임 정보에 대한 L0 예측을 수행하여 mvL1/L1 참조픽처에 대한 최적의 mvL0, L0 참조픽처를 선택하고, 선택된 L0 참조픽처 내 mvL0이 가리키는 참조블록과 L1 예측 수행과정을 통해 얻은 L1 참조픽처 내 mvL1이 가리키는 참조블록의 평균치 블록을 참조블록으로 사용하여 양방향 예측을 수행할 수 있다. 바람직하게는, 움직임 정보를 가지는 B-픽처 내 8x8 이상의 크기를 갖는 화소 블록들에 대하여 이와 같은 양방향 예측 모드의 부호화 효율을 비교하여 부호화 효율이 가장 좋은 하나의 양방향 예측 모드를 선택한다. 16x16 이상의 크기를 갖는 화소 블록에 대해서는 전술한 양방향 예측 모드들의 움직임 정보를 찾은 후, 최적의 부호화 모드를 결정할 때 변환, 양자화, 엔트로피 변환계수 부호화를 수행하여 해당 모드에 소요되는 실제 부호화 비트와 예측오차(Distortion)를 이용하여 양방향 예측 모드를 결정하는 것이 바람직하다.
L0 예측, L1 예측 및 양방향 예측에 대하여, 8x8 이상의 각각의 화소 블록들은 서로 다른 참조영상을 사용할 수 있으나, 8x8 화소블록 내의 서브 블록들은 동일한 참조영상을 사용한다.
도 1을 참조하면, 감산기(120)는 움직임 추정기(116)에서 추정한 현재 블록의 움직임 벡터가 가리키는 참조 블록과 현재 블록을 감산하여 잔여 블록을 생성하고, 생성된 잔여 블록은 변환기 및 양자화기(130)에 의해 변환 및 양자화된 후, 양자화된 변환 계수가 부호화기(140)에 의해 엔트로피 부호화되어 부호화 데이터가 생성된다. 여기서, B-픽처에 대한 변환 방법은 전술한 P-픽처에 대한 변환 방법과 동일하므로, 그에 대한 상세한 설명은 생략한다.
도 31에는 확장된 매크로블록이 32x32 화소 블록인 것으로 가정하여 B-픽처(또는 B-슬라이스)의 비트스트림을 통해 전송할 데이터를 나타내었다. 일반적으로, B-픽처(또는 B-슬라이스)의 전송 신택스는 도 30에서 설명한 P-픽처(또는 B-슬라이스)의 전송 신택스와 유사하며, 여기서는 P-픽처의 신택스에 추가되는 부분만을 설명한다.
directX_flag는 SKIP 모드가 아닌 인터 블록들 중에서 확장된 매크로블록, 16x16 이상의 화소 블록 및 8x8 화소 블록에 대해서만 direct 모드인지의 여부를 나타내는 플래그로서 표 8과 같이 1비트로 이루어질 수 있다.
Figure 112011028201302-pat00031
Direct 모드인 경우에 움직임 정보는 부호화하지 않으며, 변환 계수와 관련된 정보들을 부호화한다. 또한, 확장된 매크로블록이 Direct 모드가 아닌 경우, 움직임 정보(예를 들어, B_pdir, MVD, ref_idx 등)의 데이터를 부호화한다. 여기서, B_pdir는 현재 블록의 예측 방향(L0 예측, L1 예측, 양방향 예측)을 나타내는 정보로서, SKIP 또는 direct 모드가 아닌 인터 블록들에 대해서만 부호화하며 표 9와 같이 3가지 모드가 있다.
Figure 112011028201302-pat00032
양방향 예측인 경우, L0 예측을 위한 움직임 정보(mvL0, ref_idx_L0)와 L1 예측을 위한 움직임 정보(mvL1, ref_idx_L1)가 모두 부호화되고, L0 예측인 경우 L0 예측을 위한 움직임 정보(mvL0, ref_idx_L0)만 부호화된다. 또한, L1 예측인 경우, L1 예측을 위한 움직임 정보(mvL1, ref_idx_L1)만 부호화된다.
도 32는 본 발명의 일 실시예에 따른 SKIPX 플래그의 부호화 과정을 설명하기 위한 예시도이다.
도 32에서는 매크로블록이 64x64 화소 블록인 경우 다양한 크기와 모양의 서브블록으로 분할된 매크로블록의 분할 타입과 각 서브블록의 부호화 순서를 예시적으로 나타내었다. 도 32와 같이 매크로블록이 분할된 경우, 11 번째 16x16 화소 서브블록에 대해 SKIP16 플래그가 부호화되고, 12 번째 16x16 화소 서브블록의 SKIP16 플래그가 부호화되며, 15 번째 16x32 화소 서브블록의 SKIP16 플래그가 부호화되며, 16 번째 16x32 화소 서브블록의 SKIP16 플래그가 부호화되며, 17 번째 32x32 화소 서브블록의 SKIP32 플래그가 부호화되며, 18 번째 32x32 화소 서브블록의 SKIP32 플래그가 순서대로 부호화된다.
SKIP 매크로블록이 아닌 매크로블록의 서브블록들에 대해서는 해당 서브블록의 움직임 벡터와 해당 서브블록의 주변 블록을 이용하여 추정한 예측 움직임 벡터 간의 차이 벡터인 차분 움직임 벡터(DMV: Differential Motion Vector)와 참조 픽처 인덱스를 포함하는 움직임 정보가 부호화된다.
도 33 및 도 34는 본 발명의 일 실시예에 따라 인터 매크로블록에 대한 CBPX_플래그, 변환 타입과 CBP를 부호화 과정을 설명하기 위한 예시도이다.
도 33과 도 34에서는 매크로블록이 64x64 화소 블록인 경우 CBPX_플래그, 변환 타입(Transform Type)과 CBP를 부호화하는 과정을 예를 들어 나타내었다. 영상 부호화 장치(100)의 부호화기(140)는 확장된 매크로블록의 서브블록의 크기가 64x64, 64x32 및 32x64 중 하나인지 여부를 판단하여(S3302), 서브블록의 크기가 64x64, 64x32 및 32x64 중 하나가 아닌 경우에는 서브블록의 크기가 32x32, 32x16 및 16x32 중 하나인지 여부를 판단한다(S3304).
단계 S3304의 판단 결과, 서브블록의 크기가 32x32, 32x16 및 16x32 중 하나인 경우, 해당 서브블록 내 0이 아닌 양자화된 변환 계수가 있는지 여부를 판단하여(S3306), 0이 아닌 양자화된 변환 계수가 있는 경우에는 해당 서브블록 내에 0이 아닌 양자화된 변환 계수가 있음을 나타내는 CBP32 플래그(예를 들어, '1'과 같이 1 비트로 표시될 수 있음)를 부호화한다(S3308).
단계 S3308에서 CBP32 플래그를 부호화한 후, 서브블록 내의 16x16 화소 블록 내에 0이 아닌 양자화된 변환 계수가 있는지 여부를 판단하여(S3310), 0이 아닌 양자화된 변환 계수가 있는 경우에는 16x16 화소 블록 내에 0이 아닌 양자화된 변환 계수가 있음을 나타내는 CBP16 플래그를 부호화한다(S3312).
이와 같이 CBPX 플래그를 부호화한 후에는 0이 아닌 양자화된 변환 계수를 가지는 블록들에 대해서만 변환 타입을 부호화한다(S3316). 이때, 서브블록의 크기가 16x16이상이면 서브블록마다 변환 타입를 부호화하며, 16x16보다 작은 경우에는 16x16마다 하나의 변환플래그를 부호화한다. 변환은 16x16 화소 단위로 선택되기 때문이다. 예를 들어, 64x64 화소 매크로블록이 두 개의 64x32 화소 서브블록으로 분할되고 CBP64 플래그가 0이 아닌 경우, 각 64x32 화소 서브블록 내 두 개의 CBP32 플래그가 0이 아닌 64x32 화소 서브블록에 대해 변환 타입를 부호화한다.
여기서, 서브블록의 크기가 16x16이상이며 서브블록에 속한 CBPX 플래그가 모두 0이 아닌 경우, 표 3을 이용하여 각 서브블록의 변환 타입을 부호화한다.
Figure 112011028201302-pat00033
또한, CBP16 플래그가 0이 아니며 16x16 화소 블록이 두 개의 8x16 화소 블록 또는 16x8 화소 블록으로 분할된 경우 표 4를 이용하여 16x16 화소 블록 단위로 변환 타입을 부호화한다.
Figure 112011028201302-pat00034
CBP16 플래그가 0이 아니며 16x16 화소 블록이 4 개의 8x8 화소 블록으로 분할되고, 4x4 변환이 선택된 경우에는 0을 변환 타입으로서 부호화하고, 8x8 변환이 선택된 경우에는 1을 변환 타입으로서 부호화하며, 그 외의 경우에는 변환 타입을 부호화하지 않는다.
단계 S3316에서 변환 타입을 부호화한 후에는, 변환 타입에 따라 CBP를 부호화한다. 이를 위해, 변환 타입이 16x16 변환인지 여부를 판단하여(S3318), 16x16 변환인 경우에는 색차 성분(Chroma Component)의 CBP 2 비트만을 부호화하며(S3320), 16x16 변환이 아닌 경우에는 변환 타입이 8x16 변환 또는 16x8 변환인지 여부를 판단하여(S3322), 8x16 변환 또는 16x8 변환인 경우에는 휘도 성분(Luma Component)의 CBP 2비트와 색차 성분의 CBP 2비트를 부호화하며(S3324), 8x16 변환 또는 16x8 변환이 아닌 경우에는 변환 타입이 8x8 변환 또는 4x4 변환인지 여부를 판단하여(S3326), 8x8 변환 또는 4x4 변환인 경우에는 휘도 성분의 CBP 4 비트와 색차 성분의 CBP 2 비트를 부호화한다(S3328). 단계 S3320, S3324, S3328에서는, 입력 영상이 4:2:0 포맷인 경우의 휘도 성분의 CBP와 색차 성분의 CBP를 부호화하는 예를 설명한 것이므로, 입력 영상의 포맷이 변경되는 경우에는 그에 따라 휘도 성분의 CBP와 색차 성분의 CBP를 부호화하는 방법이 달라질 수 있다.
한편, 단계 S3306에서의 판단 결과, 서브블록 내 0이 아닌 양자화된 변환 계수가 없는 경우에는, 서브블록 내 0이 아닌 양자화된 변환 계수가 없음을 나타내는 CBP32 플래그를 부호화한다(S3330). 서브블록 내 0이 아닌 양자화된 변환 계수가 없으므로 변환 타입과 CBP는 부호화하지 않는다.
또한, 단계 S3302에서의 판단 결과, 서브블록의 크기가 64x64, 64x32 및 32x64 중 하나인 경우에는 서브블록 내 0이 아닌 양자화된 변환 계수가 있는지 여부를 판단하여(S3330), 0이 아닌 양자화된 변환 계수가 있는 경우에는 해당 서브블록 내에 0이 아닌 양자화된 변환 계수가 있음을 나타내는 CBP64 플래그를 부호화하고(S3334), 단계 S3306으로 진행하며, 0 이 아닌 양자화된 변환 계수가 없는 경우에는 해당 서브블록 내에 0이 아닌 양자화된 변환 계수가 없음을 나타내는 CBP64 플래그를 부호화한다(S3336). 서브블록 내 0이 아닌 양자화된 변환 계수가 없으므로 변환 타입과 CBP는 부호화하지 않는다.
이와 같이, CBPX(단, X는 32 이상의 정수임) 플래그, 변환 타입과 CBP를 부호화한 후, 영상 부호화 장치(100)의 부호화기(140)는 0이 아닌 양자화된 변환계수가 있는 블록들에 대해서만 양자화된 변환 계수를 부호화하여 부호화된 영상 데이터를 생성하고 변환 계수 필드에 할당한다. 양자화된 변환 계수의 부호화 방법은 전술한 인트라 매크로블록에 대한 양자화된 변환 계수의 부호화 방법과 동일하다.
본 발명에 따른 실시예에서는 가변길이 부호화 방법으로 CABAC(Context-based Adaptive Variable Length Code)을 사용할 수 있으며, CABAC 부호화는 이진 산술 부호화부와 문맥 계산부로 이루어져 있다.
이진 산술 부호화부는 이진신호(0과 1의 신호)로 변환하는 이진화부이며, 문맥 계산부는 부호화해야 하는 이진 신호의 발생확률을 복수로 유지해주고(context table) 현재 부호화 대상과 주위의 상황에 따라 이진 신호의 발생확률을 바꾸어가며 이진 산술 부호화부에 전달한다. 이때, 컨텍스트 테이블(context table)은 슬라이스 부호화/복호화를 시작할 때 초기화되고 슬라이스 내에서 업데이트 된다. 각각의 신택스는 ctxIdx(컨텍스트 번호)에 따라 다른 table(발생확률)을 가지며, ctxIdx는 수학식 7에 의해 구해진다.
[수학식 7]
ctxIdx = ctxIdx_offset + ctx_inc
여기서, ctx_offset은 픽처 타입과 신택스의 종류에 의해 결정된다. 이때, interX_flag는 X값에 따라 다른 테이블을 사용하는 것이 바람직하지만, 같은 테이블을 사용할 수도 있다. ctx_inc는 대상 신택스를 부호화할 때 주위 상황에 따라 결정되는 값이며 신택스 별 ctx_inc의 예는 도 35 내지 도 37에 도시한 바와 같다. 예를 들어, skipX_flag의 경우 도 35에 나타낸 바와 같이, ctx_inc = 0은 주변의 상단 블록 및 좌측 블록이 모두 SKIP 모드가 아닌 경우를 나타내며, ctx_inc = 1은 주변의 상단 블록 또는 좌측 블록이 SKIP 모드인 경우를 나타내고, ctx_inc = 2는 주변의 상단 블록 및 좌측 블록이 모두 SKIP 모드인 경우를 나타낼 수 있다. 각각의 ctx_inc에 따라 컨텍스트 테이블을 다르게 사용할 수 있다. 마찬가지로, interX_flag의 경우 도 36에 나타낸 바와 같이, ctx_inc가 0 내지 5인 경우는 32x32 화소 블록인 확장된 매크로블록에 대한 컨텍스트 테이블의 예측 타입의 예를 나타내며, ctx_inc가 7 내지 9인 경우는 16x16 화소블록에 대한 컨텍스트 테이블의 예측 타입의 예를 나타내고, 각각의 ctx_inc에 따라 컨텍스트 테이블을 다르게 사용할 수 있다. 마찬가지로, directX_flag의 부호화/복호화를 위한 ctx_inc는 도 37에 나타낸 바와 같다. 전술한 표 8에서 설명한 바와 같이 directX_flag의 부호화 비트는 1비트로 나타낼 수 있으며, 부호화할 대상 블록의 상단 블록 및 좌측 블록이 모두 direct 모드가 아닌 경우와, 모두 direct 모드인 경우, 그리고 상단 블록 또는 좌측 블록 중 어느 한 블록만 direct 모드인 경우에 따라 컨텍스트 테이블을 다르게 결정할 수 있다. 또한, extended_flag의 부호화/복호화를 위한 ctx_inc의 경우에도 도 37과 유사하게 부호화할 대상 블록의 주변 블록이 확장된 매크로블록 단위로 부호화가 수행되었는지(이 경우, extended_mb_flag를 이진비트 1로 설정할 수 있다) 또는 16x16 화소블록으로 분할되어 부호화가 수행되었는지(이 경우, extended_mb_flag를 이진비트 1로 설정할 수 있다)에 따라 컨텍스트 테이블을 다르게 사용할 수 있다. 이와 같이, interX_flag의 경우 X의 값, 픽처 타입, 참조 픽처로 사용되는지의 여부, 이웃 블록들의 데이터에 따라 다른 컨텍스트 테이블을 사용할 수 있다. 본 발명의 실시예에서는 매크로블록 내의 분할된 서브블록들 중 부호화할 현재 블록의 주변블록의 컨텍스트를 이용하여 컨텍스트 테이블을 선택적으로 사용할 수 있다. 이 경우, 부호화할 현재 블록의 주변블록이 SKIP 모드인지의 여부, 매크로블록 단위의 SKIP 모드인지 또는 매크로블록 내의 서브블록 단위의 SKIP 모드인지의 여부 등을 고려할 수 있으며, 이와 같은 주변블록의 상황에 따라 부호화할 블록에 대한 skipX_flag, interX_flag, extended_mb_flag 등에 대한 컨텍스트 테이블을 선택적으로 사용할 수 있다.
도 38 및 도 39는 본 발명의 일 실시예에 따라 분할 타입 정보를 부호화하는 과정을 설명하기 위한 예시도이다.
도 38에서는 트리 구조를 이용하여 분할 타입 정보를 부호화하기 위해 부호화하고자 하는 확장된 매크로블록 내 각 16x16 화소 블록에 대한 분할 타입 값을 나타낸다.
38A에서 Mx(a,b)는, 부호화하고자 하는 확장된 매크로블록 내의 (a,b)의 위치에 해당하는 16x16 화소 블록의 분할 타입 값을 나타낸다. 즉, Mx(0,0)은 부호화하고자 하는 확장된 매크로블록 내의 (0,0)의 위치 즉, 부호화하고자 하는 확장된 매크로블록 내에서 래스터 스캔 방향으로 첫 번째의 16x16 화소 블록의 분할 타입 값을 나타내며, Mx(0,1)은 부호화하고자 하는 확장된 매크로블록 내의 (0,1)의 위치 즉, 부호화하고자 하는 블록 내에서 래스터 스캔 방향으로 두 번째의 16x16 화소 블록의 분할 타입 값을 나타낸다.
38A에 나타낸 16x16 화소 블록에 대한 분할 타입 값들을 일정한 영역 단위 예를 들면, KxL 개의 분할 타입 값들을 포함하는 영역 단위로 그룹화하고, 그룹화된 영역 내의 분할 타입 값들 중 최소값을 선택하여 그룹화된 영역에 대한 분할 타입 값으로 할당한다. 그룹화된 영역에 대한 분할 타입 값을 Mx-1(c, d)라고 하면, c=a/K이며, d=b/L이 된다. 여기서, Mx-1은 Mx의 상위 노드이며, 상위 노드의 값을 선택하는 방법으로 가장 큰 값을 선택할 수도 있다. 또한, 상위 노드 값을 선택하는 방법을 부호화하여 적응적으로 사용할 수도 있다.
38B는 38A에 나타낸 16x16 화소블록들에 대한 분할 타입 값들을 2x2 개의 분할 타입 값들을 포함하는 영역 단위로 그룹화하고, 각각의 그룹 내의 분할 타입 값들 중 최소값을 그룹화된 영역에 대한 분할 타입 값으로 할당한 결과를 나타내었다. 즉, 38A에서 나타낸 16x16 화소 블록 (0,0), (0,1), (1,0), (1,1)을 포함하는 화소 블록들의 분할 타입 값을 2x2개의 영역 단위로 그룹화하고, 그룹화된 영역 내에 포함된 각 16x16 화소 블록들의 분할 타입 값 MX(0,0), MX(0,1), MX(1,0), MX(1,1) 중 최소값을 선택하여 그룹화된 영역에 대한 분할 타입 값 MX - 1(0,0)으로 할당하였다. 다시, 16x16 화소블록 (0,2), (0,3), (1,2), (1,3)을 포함하는 화소 블록들의 분할 타입 값을 2x2개의 영역 단위로 그룹화하고, 그룹화된 영역 내에 포함된 각 16x16 화소 블록들의 분할 타입 값 MX(0,2), MX(0,3), MX(1,2), MX(1,3) 중 최소값을 선택하여 그룹화된 영역에 대한 분할 타입 값 MX -1(0,1)의 분할 타입 값으로 할당하였다. 이와 같은 방식으로 나머지 16x16 화소 블록들에 대해서도 동일한 과정을 수행한다. 38A에 나타낸 16x16 화소 블록들의 분할 타입 값을 38B에 나타낸 그룹화된 영역의 분할 타입 값으로 할당하는 과정을 MX -2, MX -3 … M1 레이어(Layer)까지 반복적으로 수행하면 36C와 같이 그룹화된 영역의 분할 타입 값을 할당할 수 있으며, 다시 M0 레이어까지 반복하면 38D와 같이 하나의 그룹화된 영역의 분할 타입 값을 가지도록 그룹화할 수 있다.
다만, 도 38에서는 2x2개의 영역 단위로 인접한 16x16 화소 블록들에 대한 분할 타입 값들을 그룹화하는 것으로 설명했지만, 반드시 이에 한정되지 않고 4x2개, 2x4개 등과 같이 다양한 크기의 영역 단위로 인접한 16x16 화소 블록들에 대한 분할 타입 값들을 그룹화하거나, 인접하지 않은 16x16 화소 블록들에 대한 분할 타입 값들을 일정한 영역 단위로 그룹화하여 분할 타입 값을 할당할 수도 있다.
도 38에 도시한 바와 같이 부호화하고자 하는 블록의 16x16 화소 블록들의 분할 타입 값을 그룹화된 영역의 분할 타입 값으로 할당한 것을 트리 구조로 나타내면 도 39와 같이 나타낼 수 있다.
도 39에서는 레이어별로 그룹화된 영역에 대한 분할 타입 값을 트리 구조로 예시적으로 나타내었다. 레이어별 그룹화된 영역에 대한 분할 타입 값을 노드값(Node Value)이라고 가정하면, 도 39에 도시된 트리 구조의 노드값들은 상위 노드(Node)의 노드값과의 차이값을 부호화함으로써 부호화될 수 있다.
노드값들과 상위 노드의 노드값의 차이값을 부호화하는 방법은 차이값만큼의 이진 비트 0을 부호화하고 마지막에 이진 비트 1을 부호화한다. 만약, 현재 부호화할 노드의 노드값과 상위 노드의 노드값의 차이가 0인 경우에는 이진 비트 1을 부호화한다. 0과 1의 이진 비트를 부호화할 때 예를 들어 산술 부호화 방법을 이용할 수 있는데, 이때 각 레이어별로 다른 컨텍스트(Context)를 이용할 수 있다.
이와 같이, 트리 구조를 이용하여 분할 타입 값 즉, 노드값을 부호화할 때, 최상위 노드의 노드값(이하 '최상위 노드값'이라 칭함)은 0과의 차이값을 전술한 바와 같이 0과 1의 이진 비트를 이용하여 부호화될 수 있다. 또는, 도 18에서 설명한 분할 타입 번호를 할당함에 있어서 발생 빈도수가 높은 순서로 큰 분할 타입 번호를 할당한 경우, 최상위 노드값은 가장 큰 분할 타입 번호와의 차이값을 0과 1의 이진 비트를 이용하여 부호화될 수 있다. 또는, 도 18에서 설명한 분할 타입 번호를 할당함에 있어서 발생 빈도수가 높은 순서로 작은 분할 타입 번호를 할당한 경우, 최상위 노드값은 가장 작은 분할 타입 번호와의 차이값을 0과 1의 이진 비트를 이용하여 부호화할 수 있다.
최상위 노드를 제외한 나머지 노드값들은 부호화하고자 하는 노드의 노드값과 해당 노드의 상위 노드의 노드값의 차이값을 이진 비트 0과 1을 이용하여 부호화할 수 있다. 즉, 차이값만큼의 개수의 이진 비트 0을 부호화하고 마지막에 이진 비트 1을 부호화함으로써 각 노드값들이 부호화될 수 있다. 만약, 부호화하고자 하는 노드의 노드값과 상위 노드의 노드값의 차이가 0인 경우에는 이진 비트 1을 부호화한다. 또한, 이와는 반대로, 차이값만큼의 개수의 이진 비트 1을 부호화하고 마지막에 이진 비트 0을 부호화함으로써 각 노드값들이 부호화될 수도 있으며, 이때 차이값이 0인 경우, 이진 비트 0을 부호화할 수 있다.
다만, 각 노드값을 부호화할 때 상위 노드값이 분할 타입 번호가 가질 수 있는 최대값인 경우, 해당 상위 노드의 하위 노드들의 노드값들은 부호화되지 않는다. 예를 들어, M1(0,0) 노드의 노드값이 3인 경우, M1(0,0) 노드의 하위 노드인 M2(0,0), M2(0,1), M2(1,0), M2(1,1) 노드의 노드값은 부호화되지 않는다. 즉, M1(0,0)은 M2(0,0), M2(0,1), M2(1,0), M2(1,1)의 최소값이므로 M2(0,0), M2(0,1), M2(1,0), M2(1,1)은 모두 3이상의 값을 가진다. 하지만, 도 18에서 분할 타입 값의 최대값은 3이므로 M2(0,0), M2(0,1), M2(1,0), M2(1,1)은 3 이외의 다른 값을 가질 수 없기 때문에 부호화할 필요가 없다.
또한, 부호화하고자 하는 노드와 상위 노드의 차이값을 부호화할 때, 부호화하고자 하는 현재 노드의 노드값이 분할 타입 번호가 가질 수 있는 최대값인 경우, 차이값만큼의 개수의 이진 비트 0만을 부호화하고, 마지막에 이진 비트 1을 부호화하지 않는다. 예를 들어, 부호화하고자 하는 현재 노드의 상위 노드의 노드값 M1(0,0)와 부호화하고자 하는 현재 노드의 노드값 M2(0,0), M2(0,1), M2(1,0), M2(1,1)이 각각 1, 2, 3, 3, 2라고 가정하면, 노드값 M2(0,0)와 M2(1,1)은 이진 비트 01을 부호화하고 노드값 M2(0,1)과 M2(1,0)은 이진 비트 001이 아니라 00을 부호화한다.
또한, 같은 상위 노드를 가지는 노드들 중 마지막 노드의 노드값을 부호화하는 경우, 마지막 노드를 제외한 노드들의 노드값이 상위 노드의 노드값보다 모두 큰 경우 마지막 노드의 노드값은 부호화하지 않는다. 예를 들어, 부호화하고자 하는 노드의 상위 노드의 노드값 M1(0,0)과 부호화하고자 하는 노드의 노드값 M2(0,0), M2(0,1), M2(1,0), M2(1,1)이 각각 1, 2, 3, 3, 1이라고 가정하면, 노드값 M2(0,0), M2(0,1), M2(1,0)이 모두 노드값 M1(0,0)보다 크므로, 제일 마지막 노드의 노드값 M2(1,1)는 부호화하지 않는다.
한편, 최상위 노드를 제외한 나머지 노드값들은 전술한 바와 같이 부호화하고자 하는 노드의 노드값과 해당 노드의 상위 노드의 노드값의 차이값을 이진 비트 0과 1을 이용하여 부호화함으로써 부호화될 수도 있지만, 이와는 달리 각 노드의 노드값과 분할 타입의 발생 빈도수가 가장 높은 분할 타입값의 차이값을 부호화함으로써 부호화될 수 있다. 여기서 발생 빈도수가 가장 높은 분할 타입값은 고정값을 사용할 수도 있고 고정값이 아닐 수도 있다. 고정값이 아닌 경우, 부호화하여 복호화기에 전송할 수도 있고 또는 전송하지 않을 수도 있는데 전송하지 않는 경우 현재 블록 이전에 부호화화된 블록들의 통계를 누적하여 현재까지 발생 빈도수가 가장 높은 모드를 사용할 수도 있다. 트리 구조를 이용하여 분할 타입 정보를 부호화하는 또 다른 실시예로 38A에 나타낸 서브블록들의 분할 타입값들을 그룹화하여 38B의 그룹화된 영역의 분할 타입값을 정할 때 발생빈도수가 높은 순서로 큰 분할 타입 번호가 할당된 경우, 그룹화된 영역의 값들 중 최대값을 그룹화된 영역의 분할 타입값으로 사용할 수 있다.
본 발명의 실시예에서는 도 18에 나타낸 바와 같은 분할 타입 값을 사용하며 확장된 매크로블록을 16x16 화소 블록으로 분할하는 경우(즉, extended_mb_flag = 0인 경우), 전술한 방법을 이용하여 분할 타입을 부호화/복호화한다. 이 경우, 가장 하위 노드의 값은 확장된 매크로블록 내의 16x16 화소 블록의 분할 타입 값이며, 하위 노드들의 값들의 최대값을 상위노드의 대표값으로 이용할 수 있다. 예를 들어, 도 40에서와 같이, 32x32 화소 블록의 확장된 매크로블록이 16으로 패딩된 이미지에 속하고 16x16 화소 블록으로 분할된 경우, 최상위 노드의 대표값은 0이므로 최상위 노드의 부호화는 분할 타입의 최대값 3과 대표값 0의 차이값인 3을 나타내는 이진비트‘000’부호화한다. 다른 예로, 도 41에서와 같이 32x32 화소 블록의 확장된 매크로블록이 16으로 패딩된 이미지에 속하고 3개의 16x16 화소 블록은 8x8 이하의 화소 블록으로 분할되어 부호화되며 하나의 16x16 화소 블록은 16x16 화소 블록으로 부호화되는 경우, 최상위 노드의 대표값은 3이므로 최상위 노드의 대표값 3과 분할 타입의 최대값 3의 차이값을 나타내는 이진비트 1을 부호화하며, 하위 노드들의 값과 상위 노드의 값 사이의 차이값이 0인 경우는 ‘이진비트 ‘1’을 부호화하고 차이값이 3인 경우는 이진비트 ‘000’을 부호화한다.
인트라 예측 모드의 부호화는 도 6 내지 도 10에서 설명한 바와 같이, 휘도 성분의 4x4, 8x8 화소 블록의 인트라 예측 모드는 주변블록을 이용해서 예측한 예측 인트라 모드와 같은지를 나타내는 1비트 플래그를 부호화하고, 예측 인트라 모드와 다른 경우 9가지 예측 모드 중 예측한 예측방향을 뺀 나머지 8가지의 예측 모드 중 어떤 모드인지를 3비트를 사용하여 나타낸다. 또한, 16x16 화소 블록은 4가지 예측모드 중 어떤 모드를 사용하는지 2비트를 사용하여 나타낸다. 또한, 4x4 화소 블록, 8x8 화소 블록 및 16x16 화소 블록을 제외한 나머지 mxn 화소 블록의 인트라 예측 모드는 주변 블록을 이용해 예측한 예측 인트라 모드와 같은지를 나타내는 1비트 플래그를 부호화하고, 예측 인트라 모드와 다른 경우 3가지 예측 모드 중 예측한 예측 방향을 뺀 나머지 2가지의 예측 모드 중 어떤 모드인지를 1비트를 사용하여 나타낸다. 또한, 색차 성분의 16x16 화소 블록은 4가지 예측 모드 중 어떤 모드인지를 사용하는지를 2비트를 사용하여 나타낸다. 여기서, 휘도 성분의 4x4, 8x8, 16x16, mxn 화소 블록과 색차 성분은 다른 컨텍스트 테이블을 사용하는 것이 바람직하다.
도 42는 양방향 예측의 부호화/복호화를 위한 ctx_inc의 예를 나타낸 도면이다. 전술한 바와 같이, ctx_inc는 대상 신택스를 부호화할 때 주위 상황에 따라 결정되는 값이며, 양방향 예측을 나타내는 B_pdir의 부호화 비트는 표 9에서 설명한 바와 같다. L0 예측인 주변 블록을 0, L1 예측인 주변 블록을 1, 그리고 양방향 예측인 주변블록을 2라고 할 경우, 대상 신택스는 주위 상황에 따라 도 42에 예시한 바와 같이 결정할 수 있다. 이때, 좌측 또는 상단 블록을 사용할 수 없을 경우, 사용 불가능한 블록의 예측방향으로 L0 예측(0)을 사용할 수 있다. 도 43에 예시한 바와 같은 각각의 ctx_inc에 대해서는 다른 컨텍스트 테이블을 사용하는 것이 바람직하다.
CBPX_flag의 부호화/복호화를 위한 ctx_inc는 도 37의 경우와 유사하게 컨텍스트 테이블을 결정할 수 있다. 예를 들어, 인트라 픽처이거나 확장된 매크로블록이 인트라 모드인 경우에 CBPX_flag를 부호화하지 않으며, 부호화하고자 하는 현재 블록의 상단 블록 또는 좌측 블록이 인트라 모드인 경우를 0 인터 모드인 경우를 1이라고 하면, 대상 신택스는 주위 상황에 따라 컨텍스트 테이블을 결정하여 사용할 수 있다.
도 43은 변환 타입의 부호화/복호화를 위한 ctx_inc의 예를 나타낸 도면이다. 여기서, 도 43은 사용 가능한 변환의 종류가 2가지인 경우의 예를 나타낸다. 표 1에서 설명한 바와 같이, 16x16 화소 블록이 4 개의 8x8 화소 서브블록으로 분할된 경우에는 선택 가능한 변환의 종류가 4x4 변환 및 8x8 변환 2가지이므로, 대상 신택스는 현재 블록의 상단 블록 및 좌측 블록이 모두 4x4 변환인 경우, 모두 8x8 변환인 경우, 또는 어느 하나의 블록은 4x4 변환이고 다른 하나의 블록은 8x8 변환인 경우에 따라 컨텍스트 테이블을 다르게 결정하여 사용할 수 있다.
도 44 및 도 45는 각각 사용 가능한 변환의 종류가 3가지인 경우의 변환 타입의 부호화/복호화를 위한 ctx_inc의 다른 예를 나타낸 도면으로서, 도 44는 첫 번째 비트 부호화에 사용되는 컨텍스트 테이블을 선택하기 위한 ctx_inc의 예를 나타내며, 도 45는 두 번째 비트 부호화에 사용되는 컨텍스트 테이블을 선택하기 위한 ctx_inc의 예를 나타낸다.
전술한 바와 같이, 8x8 화소 블록보다 작은 화소 블록 즉, 4x4 화소 블록, 4x8 화소 블록 또는 8x4 화소 블록으로 분할된 경우에는 4x4 변환을 수행하고, 8x8 화소 블록 4x4 변환 및 8x8 변환 중 부호화 비용이 작은 변환을 수행하며, 8x16 화소 블록은 4x4 변환, 8x8 변환 및 8x16 변환 중 부호화 비용이 작은 변환을 수행하고, 16x8 화소 블록은 4x4 변환, 8x8 변환 및 16x8 변환 중 부호화 비용이 작은 변환을 수행하며, 16x16 화소 블록 이상의 블록은 4x4 변환, 8x8 변환 및 16x16 변환 중 부호화 비용이 작은 변환을 수행하므로, 도 44에 나타낸 바와 같이 첫 번째 비트 부호화에서는 현재 블록의 상단 블록 및 좌측 블록이 모두 4x4 변환된 블록인지, 좌측 블록 및 상단 블록 중 어느 하나의 블록만이 4x4 변환된 블록인지 또는 모두 4x4 변환된 블록이 아닌지에 따라 변환 타입의 부호화/복호화를 위한 ctx_inc를 다르게 사용할 수 있다. 마찬가지로, 두 번째 비트 부호화에서는 현재 블록의 상단 및 좌측 블록 중 적어도 어느 하나의 블록이 8x8 변환된 블록인지의 여부에 따라 도 45에 나타낸 바와 같이 변환 타입의 부호화/복호화를 위한 ctx_inc를 다르게 사용할 수 있다.
도 46은 본 발명의 일 실시예에 따른 영상 복호화 장치를 간략하게 나타낸 블록 구성도이다.
본 발명의 일 실시예에 따른 영상 복호화 장치(4400)는 복호화기(Decoder, 4410), 역양자화기 및 역변환이기(4420), 예측기(4430), 가산기(4440), 필터(4450) 및 픽처 버퍼(4460)을 포함하여 구성될 수 있다.
복호화기(4410)는 영상 부호화 장치(100)에 의해 부호화된 부호화 데이터를 엔트로피 복호화 등과 같은 다양한 부호화 또는 복호화 기법을 이용하여 복호화한다. 복호화기(4410)는 복호화할 픽처의 타입에 따라 복호화하는 데이터가 다르다. 이러한 픽처 타입에 대한 정보는 부호화 데이터의 픽처 헤더 또는 시퀀스 헤더로부터 추출되거나 추출되고 복호화되어 복원될 수 있다. 이때, 현재 복호화할 확장된 매크로블록이 도 2에 도시한 바와 같이 이미지 경계에 걸치는 경우(입력 이미지의 실제 사이즈는 시퀀스 파라미터로 전송된다), 확장된 매크로블록 내 이미지에 속하는 부분을 구하고 해당 영역의 텍스터 데이터와 예측모드를 엔트로피 복화화를 수행하여 얻을 수 있으며, 인트라 예측 또는 움직임 보상, 역변환/역양자화를 수행하여 실제 이미지에 속하는 부분을 복호화한다.
복호화할 픽처가 인트라 픽처인 경우, 복호화기(4610)가 영상 부호화 데이터 내에서 복호화할 데이터의 종류와 순서는 도 17에서 예시적으로 도시한 바와 같다. 즉, 복호화기(4410)는 입력되는 비트스트림으로부터 추출되는 분할 타입 데이터를 복호화하여 분할 타입 정보를 복원하고, 복원되는 분할 타입 정보에 의해 식별되는 분할 타입을 이용하여 매크로블록을 분할하며, 인트라 예측 모드 데이터를 복호화하여 매크로블록내 분할된 각 서브블록의 개수만큼 인트라 예측 모드를 복원하고, 각 서브블록의 크기에 따라 도 24에 나타낸 순서와 동일 또는 유사한 순서로 CBPX 플래그/CBP에 할당된 CBP 데이터를 복호화하여 CBPX 플래그 또는 CBP를 복원한다. 이후, 복호화기(4610)는 CBP가 나타내는 0인 아닌 변환 계수가 있는 서브블록들에 대해서만 변환 계수 데이터를 복호화하여 변환 계수를 복원한다. 이때, 영상 부호화 장치(100)가 확장된 매크로블록에 대하여 16x16 화소 블록 단위로 인트라 예측 부호화를 수행한 경우에는 CBPX 플래그의 복호화는 생략될 수 있으며, 이 경우 확장된 매크로블록 단위로 부호화된 양자화 파라미터에 대한 복호화가 수행될 수 있다.
다만, 도 17에 도시한 영상 부호화 데이터의 신택스의 구조는 예시적인 것일 뿐, 본 발명의 일 실시예에 따른 영상 부호화 데이터의 신택스 구조가 도 17에 도시한 구조로 한정되는 것은 아니다. 또한, 도 24에 도시한 CBPX 플래그 또는 CBP의 부호화 순서는 예시적인 것일 뿐, 본 발명의 일 실시예에 따른 CBPX 플래그 또는 CBP의 복원 순서는 도 24에 도시한 순서로 한정되는 것은 아니다.
여기서, 복호화기(4610)가 인트라 예측 모드를 복원화하는 방법은 서브블록의 크기에 따라 다르다. 즉, 서브블록의 크기가 4x4 또는 8x8과 같이 16x16이 아닌 경우, 복호화기(4610)는 비트스트림으로부터 추출되는 인트라 예측 모드 데이터 중 1 비트를 복호화하여 예측 모드 플래그를 복원하고, 복원되는 예측 모드 플래그가 해당 서브블록의 인트라 예측 모드에 따른 예측 방향이 주변 블록으로부터 추정되는 해당 서브블록의 인트라 예측 모드에 따른 예측 방향과 동일함을 나타내는 경우, 주변 블록으로부터 추정되는 해당 서브블록의 인트라 예측 모드를 현재 블록의 인트라 예측 모드로서 복원하고 다음 서브블록의 인트라 예측 모드를 복호화하며, 동일하지 않음을 나타내는 경우 인트라 예측 모드 데이터의 다음 3 비트를 복호화하여 복원되는 인트라 예측 모드를 현재 블록의 인트라 예측 모드로서 복원한다. 또한, 서브블록의 크기가 16x16인 경우, 복호화기(4610)는 비트스트림으로부터 추출되는 인트라 예측 모드 데이터 중 2 비트를 복호화하여 현재 블록의 인트라 예측 모드를 복원한다. 이와 같이 복원되는 인트라 예측 모드는 예측기(4630)의 인트라 예측기(4632)로 입력된다.
또한, 32x32 화소 블록인 확장된 매크로블록이 인트라 모드인 경우, 확장된 매크로블록 내의 16 화소의 배수로 패딩된 이미지에 속하는 블록을 판단한 후, 해당 블록의 분할 타입을 엔트로피 복호화할 수 있다. 도 3의 경우, 32x32 화소 블록인 확장된 매크로블록 내의 패딩된 이미지에 속하는 블록은 첫 번째의 16x16 화소 블록만이 해당되며, 따라서 첫 번째의 16x16 화소 블록의 분할 타입을 엔트로피 복호화한다. 만약, 해당 16x16 화소 블록이 두 개의 16x8 화소 블록으로 분할된 경우를 가정하면, 두 개의 인트라 예측 모드를 엔트로피 복호화하고 16x16 화소 블록을 위한 CBP 1개와 16x16 변환 계수를 복호화한다. 엔트로피 복호화를 통해 얻은 서브 블록 타입과 인트라 예측 모드, 변환 계수를 이용하여 해당 16x16 화소 블록을 복호화한다.
복호화할 픽처가 인터 픽처인 경우 복호화기(4610)가 영상 부호화 데이터 내에서 복호화할 데이터의 종류와 순서는 도 29에 도시한 바와 같다. 즉, 복호화기(4610)는 비트스트림으로부터 추출되는 SKIPN 플래그 데이터를 복호화하여 현재 복호화하고자 하는 매크로블록이 SKIP 매크로블록인지 여부를 나타내는 SKIPN 플래그를 복원한다. 복호화기(4610)는 복원되는 SKIPN 플래그에 의해 식별되는 매크로블록이 SKIP 매크로블록이 아닌 경우, 비트스트림으로부터 추출되는 매크로블록 타입 플래그 데이터와 분할 타입 데이터를 복호화하여 매크로블록 타입 플래그와 분할 타입 정보를 복원한다.
또한, 확장된 매크로블록이 32x32 화소 블록인 경우, 확장된 매크로블록 내의 16 화소의 배수로 패딩된 이미지에 속하는 블록을 판단한 후, skip32_flag를 복호화하고 현재 복호화할 확장된 매크로블록이 SKIP 모드인 경우에 해당 블록의 좌측 및 상단의 주변 블록을 이용하여 예측 움직임 벡터를 구하고 움직임 보상을 수행할 수 있다. 도 3의 경우, 32x32 화소 블록인 확장된 매크로블록 내의 패딩된 이미지에 속하는 블록은 첫 번째의 16x16 화소 블록만이 해당되며, skip32_flag를 복호화하고 현재 복호화할 확장된 매크로블록이 SKIP 모드인 경우에 첫 번째의 16x16 화소 블록의 좌측 및 상단의 주변 블록을 이용하여 예측 움직임 벡터를 구하며, 움직임 보상을 수행할 수 있다.
복원되는 매크로블록 타입 플래그에 의해 식별되는 매크로블록 타입이 인트라 매크로블록인 경우에는 전술한 바와 동일하며, 매크로블록 타입이 인터 매크로블록인 경우, 복호화기(4610)는 서브블록의 크기가 16x16 이상인 서브블록들에 대해서만 SKIPX 플래그 데이터를 복호화하여 SKIPX 플래그를 복원하고 복원되는 SKIPX 플래그에 의해 식별되는 SKIP 블록이 아닌 서브블록 또는 16x16보다 작은 크기를 가지는 서브블록들(SKIP이 아님을 의미함)에 대해서 MVD/ref_idx 데이터를 복호화하여 움직임 정보인 움직임 벡터와 참조 픽처 인덱스를 복원한다. 또한, 복호화기(4610)는 SKIP이 아닌 블록들에 대해서 도 33과 도 33에 도시한 바와 동일 또는 유사한 순서로 복호화하여 CBPX 플래그, 변환 타입, CBP를 복원하고, 복원되는 CBP에 의해 식별되는 0이 아닌 계수를 가지는 서브블록들에 대해서만 양자화된 변환 계수를 복원한다. 이와 같이 복원되는 움직임 정보는 인터 예측기(4634, 움직임 보상기로 구현될 수 있음)로 입력되고, 복원되는 CBPX 플래그, CBP, 변환 타입, 양자화된 변환 계수 등은 복호화하고자 하는 대상 매크로블록 또는 대상 매크로블록의 서브를록의 잔여 블록을 복원하기 위해 역양자화기 및 역변환이기(4620)로 입력된다.
역양자화기 및 역변환이기(4620)는 복호화기(4610)로부터 전달되는 양자화된 변환 계수를 역양자화 및 역변환하여 잔여 블록을 복원한다. 이때, 역양자화기 및 역변환이기(4620)는 복호화기(4610)로부터 전달되는 CBPX 플래그, CBP, 변환 타입을 이용하여 양자화된 변환 계수를 역양자화 및 역변환할 수 있다.
예측기(4630)는 복호화하고자 하는 대상 매크로블록 또는 그 서브블록을 예측하여 예측 블록을 생성한다. 이를 위해, 인트라 예측기(4632)는 복호화하고자 하는 대상 매크로블록 또는 그 서브블록을 복호화기(4610)에 의해 복원되는 인트라 예측 모드를 이용하여 인트라 예측함으로써 대상 매크로블록 또는 그 서브블록의 예측 블록을 생성하며, 인터 예측기(4634)는 복호화하고자 하는 대상 매크로블록 또는 그 서브블록을 복호화기(4610)에 의해 복원되는 움직임 정보를 이용하여 인터 예측함으로써 대상 매크로블록 또는 그 서브블록의 예측 블록을 생성한다.
가산기(4640)는 예측기(4630)에 의해 생성된 예측 블록과 역양자화기 및 역변환이기(4620)에 의해 복원되는 잔여 블록을 가산하여 복호화하고자 하는 대상 매크로블록을 복원한다.
가산기(4640)에 의해 복원되는 대상 매크로블록은 필터(4650)에서 디블로킹 필터링 등이 수행되어 픽처 단위로 누적된 후 복원 영상으로 출력되며, 픽처 버퍼(4660)에 저장되어 추후 인터 예측기(4634)에서 움직임 보상 예측하는 데 활용될 수 있다.
인트라 예측기(4632), 인터 예측기(4634), 역양자화기 및 역변환이기(4620)의 동작 방법은 도 1을 통해 전술한 영상 부호화 장치(100)의 인트라 예측기(112), 인터 예측기(114), 역양자화기 및 역변환이기(150)의 동작 방법과 동일 또는 유사하므로 상세한 설명은 생략한다.
이와 같은 영상 복호화 장치(4600)는 확장된 매크로블록이 인터 매크로블록인지 또는 인트라 매크로블록인지 여부에 따라 다음과 같이 구성될 수 있다.
예를 들어, 매크로블록이 인트라 매크로블록인 경우, 복호화기(4610)는 부호화 데이터를 복호화하여 분할 타입 정보, 인트라 예측 모드 및 양자화된 변환 계수를 복원하고, 역양자화기 및 역변환이기(4620)는 복원되는 분할 타입 정보에 따라 식별되는 서브블록의 크기에 따라 선택되는 변환을 이용하여 양자화된 변환 계수를 역양자화 및 역변환하여 잔여 서브블록을 복원하며, 예측기(4630)는 복원되는 분할 타입 정보에 따라 식별되는 서브블록을 복원되는 인트라 예측 모드를 이용하여 예측하여 예측 서브블록을 생성하며, 가산기(4640)는 예측 서브블록과 잔여 서브블록을 가산하여 서브블록을 복원한다.
다른 예로, 매크로블록이 인터 매크로블록인 경우, 복호화기(4610)는 부호화 데이터를 복호화하여 분할 타입 정보, 움직임 정보, 변환 타입 정보 및 양자화된 변환 계수를 복원하고, 역양자화기 및 역변환이기(4620)는 복원되는 변환 타입 정보에 의해 식별되는 변환을 이용하여 양자화된 변환 계수를 역양자화 및 역변환하여 잔여 서브블록을 복원하며, 예측기(4630)는 복원되는 분할 타입 정보에 따라 식별되는 서브블록을 복원되는 움직임 정보를 이용하여 예측하여 예측 서브블록을 생성하며, 가산기(4640)는 예측 서브블록과 잔여 서브블록을 가산하여 서브블록을 복원한다.
본 발명의 일 실시예에 따른 영상 복호화 방법에 따르면, 영상 복호화 장치(4600)는 복호화하고자 하는 매크로블록이 인트라 매크로블록인 경우, 부호화 데이터를 복호화하여 분할 타입 정보, 인트라 예측 모드 및 양자화된 변환 계수를 복원하고, 복원되는 분할 타입 정보에 따라 식별되는 서브블록의 크기에 따라 선택되는 변환을 이용하여 양자화된 변환 계수를 역양자화 및 역변환하여 잔여 서브블록을 복원하며, 복원되는 분할 타입 정보에 따라 식별되는 서브블록을 복원되는 인트라 예측 모드를 이용하여 예측하여 예측 서브블록을 생성하며, 예측 서브블록과 잔여 서브블록을 가산하여 서브블록을 복원한다.
이때, 서브블록의 크기에 따라 선택되는 변환은 서브블록의 크기가 4x4, 4x8 및 8x4 중 하나이면 4x4 변환을 이용하고, 서브블록의 크기가 8x8, 8x16 및 16x8 중 하나이면 8x8 변환을 이용하며, 서브블록의 크기가 16x16 이상이면 16x16 변환을 이용할 수 있다.
또한, 본 발명의 일 실시예에 따른 영상 복호화 방법에 따르면, 영상 복호화 장치(3000)는 복호화하고자 하는 매크로블록이 인터 매크로블록인 경우, 부호화 데이터를 복호화하여 분할 타입 정보, 움직임 정보, 변환 타입 정보 및 양자화된 변환 계수를 복원하고, 복원되는 변환 타입 정보에 의해 식별되는 변환을 이용하여 양자화된 변환 계수를 역양자화 및 역변환하여 잔여 서브블록을 복원하며, 복원되는 분할 타입 정보에 따라 식별되는 서브블록으로 분할하고 서브블록을 복원되는 움직임 정보를 이용하여 예측하여 예측 서브블록을 생성하며, 예측 서브블록과 잔여 서브블록을 가산하여 서브블록을 복원한다.
이때, 변환 타입 정보에 의해 식별되는 변환은 4x4 변환, 8x8 변환, 8x16 변환, 16x8 변환 및 16x16 변환 중 하나일 수 있다. 또한, 영상 복호화 장치(4600)는 복원되는 서브블록을 필터링할 수 있는데, 복원되는 서브블록 내의 선택되는 변환에 따른 블록의 왼쪽과 위쪽의 경계에 디블로킹 필터링을 수행할 수 있다.
또한, 영상 복호화 장치(4600)는 부호화 데이터로부터 추출되는 SKIP_N 플래그 데이터를 복호화하여 매크로블록이 SKIP 매크로블록인지 여부를 나타내는 SKIP_N 플래그를 추가로 복원할 수 있다. 영상 복호화 장치(4600)는 복원되는 SKIP_N 플래그에 의해 SKIP 매크로블록이 아닌 것으로 식별되는 매크로블록에 대해서만 복호화 과정을 수행할 수 있다.
또한, 영상 복호화 장치(4600)는 부호화 데이터로부터 추출되는 매크로블록 타입 플래그 데이터를 복호화하여 매크로블록이 인트라 매크로블록인지 또는 인터 매크로블록인지 여부를 나타내는 매크로블록 타입 플래그를 추가로 복원할 수 있다. 영상 복호화 장치(4600)는 복원되는 매크로블록 타입 플래그에 복호화하고자 하는 매크로블록이 인트라 매크로블록인지 또는 인터 매크로블록인지 여부를 파악하고, 그에 따라 인트라 예측 복호화를 수행할지 또는 인터 예측 복호화를 수행할지 여부를 결정할 수 있다.
한편, 매크로블록의 타입에 관계없이, 분할 타입 정보는 분할 레이어별 분할 타입 번호에 의해 식별될 수 있으며, 영상 복호화 장치(4600)는 부호화 데이터로부터 추출되는 CBP 데이터를 복호화하여 서브블록의 크기에 따른 CBPX 플래그와 CBP를 추가로 복원할 수 있다. 여기서, CBPX 플래그는 XxX 화소 블록 내에 0이 아닌 양자화된 변환 계수가 있는지 여부를 나타내는 플래그이고 CBP는 16x16 화소 블록 내에 0이 아닌 양자화된 변환 계수가 있는지 여부를 나타내는 플래그일 수 있다.
제 2 실시예:
이하, 본 발명의 제 2 실시예를 설명한다. 특히, 본 발명의 제 2 실시예는 예측 서브 블록과 변환 서브 블록의 신택스 구조와 신택스에 따른 CABAC 부호화에 대해 서술한다.
또한, 그에 따른 부호화 정보를 CABAC을 이용하여 부호화 할 때, 매크로 블록, 서브 브록, 예측 서브 블록, 변환 서브 블록에 따라 다른 컨텍스트 테이블을 사용하여 부호화 및 복호화한다.
본 발명의 제 2 실시예에서, 입력 영상은 프레임 단위 또는 필드 단위로 도 1의 영상 부호화 장치(100)에 입력되거나, NxN(단, N은 16이상의 정수) 화소를 가지는 매크로블록들로 분할되어 영상 부호화 장치(100)에 입력될 수 있다. 이하에 기재하는 매크로블록은 정방형의 서브 블록으로 분할 될 수 있다. 또한, 각 매크로블록과 서브 블록들은 예측을 위하여 예측 서브 블록으로 분할 될 수 있다. 매크로블록과 서브 블록들은 MxM, (M/2)x(M/2), Mx(M/2), (M/2)xM, 1xM, Mx1, (단, M=N)등의 크기를 갖는 예측 서브 블록으로 가변적으로 분할 될 수 있다. 또한, 변환 타입은 변환 서브 블록에 따라 결정될 수 있는데, 변환 서브 블록은 예측 서브 블록과 유사한 방식으로 매크로블록 또는 매크로블록의 서브 블록을 가변적으로 분할함으로써 얻어질 수 있다.
한편, N의 배수가 아닌 경우에는 입력 영상에 대해 N의 배수가 되도록 패딩한 후 영상 압축을 수행할 수 있다.
영상 부호화 장치(100) 는 매크로블록을 서브 블록으로 분할하여 부호화했을 경우의 각 서브 블록에 대한 부호화 효율을 계산하고, 가장 부호화 효율이 높은 경우의 서브 블록을 최종적인 인트라 블록 또는 인터 블록으로 결정한다. 부호화 효율은 수학식 1 에 근거하여 측정할 수 있다.
블록의 모드는 가능한 블록들의 모든 타입에 대하여 각 예측 서브 블록의 최적의 예측 모드(인트라 예측모드, 움직임 데이터)를 결정한 후, 블록 타입을 결정하는 과정으로 나뉠 수 있으며, 보통 예측모드 결정시(인트라 예측모드나 움직임 벡터/참조픽처 선택시)에는 연산량을 줄이기 위해서 수학식 2를 이용하여 최적의 예측 모드를 결정한다.
서브 블록의 타입 결정시에는 수학식 8을 이용하여 엄격하게 Rdcost를 계산하는 것이 바람직하다.
[수학식 8]
Figure 112011028201302-pat00035
수학식 8의 Distortion 은 수학식 4로 나타낼 수 있다.
예측 서브 블록의 예측 모드 결정시에는 수학식 9를 이용하여 Rdcost를 계산하는 것이 바람직하다.
[수학식 9]
Figure 112011028201302-pat00036
도 1의 영상 부호화 장치(100)를 참조하면서 본 실시예에 따른 부호화 방법이 설명된다. 그러나, 도 1의 영상 부호화 장치(100)의 각 구성요소 중 일부는 제1실시예에서와 다른 동작을 수행한다는 점은 아래 기술 자체에서 명확하게 이해될 수 있을 것이다.
이하에서는 본 발명의 제2 실시예에 따른 부호화 방법, 그 부호화 방법을 통해 생성되는 부호화 데이터를 픽처 타입에 따라 설명한다.
예측기(110) 의 인트라 예측기(112) 는 현재 부호화하고자 하는 블록(이하 '현재 블록'이라 칭함)의 주변 화소를 이용하여 참조 블록을 생성하고 참조 블록과 현재 블록을 비교하여 인트라 예측 모드를 결정한다. 여기서, 주변 화소란 현재 블록과 인접한 화소들을 의미하고, 넓게는 현재 블록 주위에 있는 블록 내에 있는 화소들을 말한다. 또한, 인접한 화소들을 이용하여 산출된 화소도 포함하는 개념이다.도 47은 영상의 경계 또는 슬라이스의 경계 등에서 인트라 예측을 나타낸 예시도이다.
도 47을 참조하면, 현재 블록이 A 인 경우 참조 화소가 왼쪽 블록인 블록 C의 화소 밖에 없으므로 예측 모드에 제약이 존재한다. 따라서, 블록 A의 위쪽에 블록 C의 화소를 복사해서 사용한다. 이와 유사하게, 블록 B의 경우 참조 화소가 위쪽 블록인 블록 C의 화소 뿐이므로, 블록 B의 왼쪽에 블록 C 의 화소를 복사해서 사용한다.
또는 값이 존재하지 않는 화소는 128로 가정하여 사용할 수도 있다.
인트라 예측 모드 중 Plane 모드는 Plane 플래그로 부호화한다. 예를 들어 현재 예측 모드가 Plane 모드인 경우 Plane 플래그를 1로 부호화한다.
도 48은 Plane 모드의 예시를 나타낸 도면이다.
도 48을 참조하면, Plane 모드인 경우 48-1과 48-2 블록을 생성하여 두 블록의 평균값이 예측 화소로서 사용된다. 48-1 블록의 경우, A 화소가 도면에 도시한 바와 같이 그 아래 방향으로 복사되고, 나머지 화소는 복사한 값과 현재 블록의 왼쪽에 인접한 화소들을 이용하여 위치에 따라 생성된다. 예를 들어 도면에서 X 화소를 생성 할 때는, X 화소의 위치가 (2, 4) 이므로, Ax(2/8) + Cx(6/8)의 수학식에 의해 X 화소의 값이 산출된다. 48-2 블록도 48-1 블록과 유사한 방식으로 생성된다.
인트라 예측 모드를 부호화 할 때, 현재 블록의 예측 모드가 주변 인트라 블록의 예측 모드와 동일한지 여부를 나타내는 플래그가 부호화된다. 이를 예측 모드 플래그라고 한다. 예측 모드 플래그가 1이면, 주변 블록의 인트라 예측 모드와 현재 블록의 인트라 예측 모드가 동일함을 나타낸다. 이 때, 예측 모드 지시 인덱스가 부호화 된다. 예측 모드 지시 인덱스는 주변 블록의 인트라 모드 중 어느 블록의 인트라 모드와 동일한지를 나타낸다.
만약, 주변 블록의 예측 모드와 현재 블록의 예측 모드가 다른 경우, 예측 모드 플래그를 0으로 부호화하고, 예측 모드들 중 주변 블록의 예측 모드들은 제외하고, 나머지 예측 모드들 중 현재 블록의 예측 모드를 부호화한다. 또는 주변 블록의 예측 모드들 중 작은 숫자가 할당된 예측 모드만을 제외하고, 나머지 예측 모드들 중 현재 블록의 예측 모드를 부호화한다.
색차 성분의 인트라 예측은
Figure 112011028201302-pat00037
화소 블록 단위로 수행될 수 있다. 예측 방향은 휘도 성분의 예측 모드와 독립적인 평균치 예측, 수평 예측, 수직 예측, 평면 예측, 또는 휘도 성분을 이용하여 휘도 성분의 인트라 예측 모드를 따르는 모드, 휘도 성분의 픽셀 특성을 이용한 예측 모드 등의 예측 모드가 사용될 수 있다.
변환기 및 양자화기(130)는 각 매크로블록 또는 서브 블록 내의 변환 타입을 결정하고 변환 타입에 따라 변환 및 양자화를 수행한다. 변환 타입은 변환 서브 블록의 크기와 변환 종류를 의미한다. 변환 종류는 종래의 DCT 뿐 아니라, 변형된 DCT 또는 DST(Discrete Sine Transform), KLT(Karhunen-Loeve Transform)등을 의미한다. 또한, 변환 종류는 변환 서브 블록마다, 매크로블록마다, 서브 블록마다, 또는 인트라 예측 모드에 따라서 변환 종류를 적응적으로 선택할 수 있다. 또는 변환 서브 블록의 크기에 따라서 변환 종류를 적응적으로 선택할 수도 있다.
이때, 변환 타입은 변환 서브 블록 분할 플래그로 나타낼 수 있다. 예를 들어, TxT의 서브 블록의 변환 서브 블록 분할 플래그가 1인 경우, 변환 서브 블록의 크기는 (T/2)x(T/2) 이고, 변환 종류는 가로 변환은 DST, 세로 변환은 KLT를 사용할 수도 있다.
또한, 매크로블록, 서브 블록 또는 변환 서브 블록마다 CBP 플래그가 부호화 및 복호화 된다.
P-픽처 또는 P-슬라이스의 경우, 매크로블록 또는 서브 블록 단위로 인트라 모드인지 또는 인터 모드인지를 선택할 수 있다. 즉, P-픽처 또는 P-슬라이스의 확장된 매크로블록 내에는 인트라 모드와 인터 모드가 모두 사용될 수 있다.
B-픽처 또는 B-슬라이스의 경우, 최대 두 장까지의 임의의 참조 픽처를 선택할 수 있는데, 그 두 장을 각각 L0 예측, L1 예측이라고 부르며, 이 두 장의 참조 픽처는 서로 다른 역할을 한다. 보통은 L0 예측(List 0 Prediction, 주로 순방향 예측에 사용됨)이 순방향 예측, L1 예측(List 1 Prediction, 주로 역방향 예측에 사용됨)이 역방향 예측으로 사용된다. P-픽처 및 B-픽처에 대한 각각의 보다 상세한 인터 픽처 부호화 방법은 후술한다.
다시 도 1을 참조하면, 예측기(110)의 인터 예측기(114)의 움직임 추정기(116)는 현재 예측 서브 블록과 가장 유사한 블록, 즉 참조 블록을 참조 픽처 내에서 찾아 현재 블록에 대한 참조 블록의 상대적인 위치를 나타내는 움직임 벡터(MV: Motion Vector)를 출력한다. 움직임 추정은 매크로블록 내 예측 서브 블록을 픽처 버퍼(180) 에 있는 하나 이상의 참조 픽처와 비교하여 움직임 벡터를 생성한다.
움직임 벡터는 부호화기(140)에 의해 부호화되어 부호화 데이터에 포함되는데, 부호화기(140)는 현재 블록의 주변 블록의 움직임 벡터들과 동일 위치 블록 (colocated block) (즉, 참조 픽처에서 현재 블록과 같은 위치 블록)의 움직임 벡터들 중 예측 움직임 벡터를 선택하고, 예측 움직임 벡터와 현재 블록의 움직임 벡터의 차이 벡터인 차분 움직임 벡터(DMV: Differential Motion Vector) 만을 부호화하여 움직임 정보 데이터를 생성한다. 이때, 부호화기(140) 는 차분 움직임 벡터뿐만 아니라 예측 움직임 벡터 인덱스와 참조 픽처 인덱스 (Reference Picture Index) 를 추가로 부호화할 수 있다.
또한, 본 발명의 일 실시예에서는, 매크로블록, 서브 블록, 예측 서브 블록에 대하여 일괄 모드를 사용한다. 일괄 모드는 현재 블록의 움직임 정보로서 주변 움직임 블록 또는 동일 위치 블록의 움직임 정보(예측 방향, 움직임 벡터, 참조 픽처)를 사용하는 모드이다. 따라서, 일괄 모드인 경우 일괄 모드 플래그와 예측 움직임 정보 인덱스를 부호화 한다.
또한, 본 발명의 일 실시예에서는, 매크로블록 또는 서브 블록에 대하여 SKIP 모드를 사용한다. SKIP 블록인 경우에는 예측 움직임 벡터를 이용해서 움직임 추정 및 보상이 수행된다. 이 때, 부호화기는 SKIP 플래그와 예측 움직임 벡터 인덱스를 부호화 한다. 또는 예측 움직임 벡터가 아니라, 예측 움직임 정보를 이용하여 SKIP 모드의 움직임 추정 및 보상을 수행할 수 있다. 이 경우 SKIP 플래그와 예측 움직임 정보 인덱스가 부호화 및 복호화된다.
인터 예측 블록의 변환 방법은 인트라 예측 블록에서 설명한 변환 방법과 동일하다.
도 49는 본 발명의 일 실시예에 따른 인트라 픽처의 매크로블록과 서브 블록의 부호화 순서도를 나타낸 예시도이다.
도 50은 본 발명의 실시예에 따른 인트라 픽처의 매크로블록과 서브 블록의 부호화 순서도를 나타낸 또 다른 예시도이다.
인트라 픽처의 매크로블록 및 서브 블록의 경우, 도 49와 도 50을 참조하면, 분할 플래그, Delta QP, 예측 모드 플래그, 예측 모드 지시 인덱스, 예측 모드, 변환 서브 블록 분할 플래그, 휘도 성분 CBP 플래그, 색차 성분 CBP 플래그, 변환 계수들로 이루어져 있다. 하지만, 도 49와 도 50에서 도시한 인트라 픽처에 대한 신택스 순서도는 예시적인 것일 뿐이다. 즉, 인트라 픽처에 대한 신택스 중 일부 또는 전수의 순서가 변경될 수도 있으며, 일부 신택스는 생략될 수도 있다.
본 실시예에서도, 본 발명의 다른 실시예처럼 CABAC을 사용하여 각 신택스를 부호화 및 복호화한다. CABAC에 대한 상세한 설명은 다른 실시예와 동일하므로 생략한다.
도 49와 도 50에서 분할 플래그, 예측 모드 플래그, 예측 모드 지시 인덱스, Plane 모드 플래그, 변환 서브 분할 플래그, CBP 플래그 등의 ctx_inc는 도 35를 참조하여 제 1 실시예에서 서술한 skipX_flag의 ctx_inc를 결정하는 방법과 유사하게 결정할 수 있으므로 상세한 설명은 생략한다.
도 51은 실시예에 따른 변환 서브 블록의 변환 계수 부호화 순서도를 나타낸 예시도 이다.
도 51을 참조하면, 변환 계수 플래그, 마지막 변환 계수 플래그, Abs_value_greater1_flag, Abs_value_greater2_flag, 절대값(변환계수)-3, 변환 계수 부호(+or -)들로 이루어져 있다. 하지만, 도 51에서 도시한 변환 계수에 대한 신택스 순서도는 예시적인 것일 뿐이다. 즉, 변환 계수에 대한 신택스 중 일부 또는 전부의 순서가 변경될 수도 있으며, 일부 신택스는 생략될 수도 있다.
도 52는 본 발명의 실시예에 따른 인터 픽처의 인터 매크로블록과 서브 블록의 부호화 순서도를 나타낸 예시도이다.
도 52을 참조하면, 분할 플래그, SKIP 플래그, 일괄 모드 플래그, 예측 움직임 정보 인덱스, 예측 방향 플래그, Delta QP, 예측 서브 블록 타입, 참조 픽처 인덱스. 차분 움직임 벡터, 예측 움직임 벡터 인덱스, 변환 서브 블록 분할 프래그, CBP 플래그 등으로 이루어져 있다. 하지만, 도 52에서 도시한 인터 픽처의 인터 매크로블록 또는 서브 블록에 대한 신택스 순서도는 예시적인 것일 뿐이다. 즉, 신택스 중 일부 또는 전부의 순서가 변경될 수도 있으며, 일부 신택스는 생략될 수도 있다.
도 52의 예측 서브 블록 타입은 현재 매크로블록 또는 서브 블록 내 예측 서브 블록의 크기와 인터 예측인지 인트라 예측 인지를 나타낸다. 여기서는 인터 예측으로 예시를 나타냈다. 만일, 인트라 예측인 경우, 예측 서브 블록 타입 이후의 신택스는 도 49와 도 50을 참조하여 유사하게 부호화 할 수 있다.
또한, 인터 예측의 변환 계수 부호화도 전술한 도 51을 참조하여 유사하게 부호화 하므로 상세한 설명은 생략한다.
각 신택스는 본 발명의 제 1실시예와 유사하게 수학식 7을 참조하여 CABAC 부호화를 사용할 수 있다. 하지만, 각 신택스 별로 ctx_inc는 주위 상황에 따라 다를 수 있다.
도 53은 일괄 모드 플래그의 ctx_inc를 위한 예시도이다.
예를 들어, 일괄 모드 플래그를 도 37과 도 53을 참조하여 CABAC 부호화 할 수 있다.
또는 차분 움직임 벡터를 도 54를 참조하여 CABAC 부호화할 수 있다.
도 54는 차분 움직임 벡터 x 컴포넌트의 ctx_inc를 위한 예시도이다.
차분 움직임 벡터의 x 컴포넌트의 ctx_inc 는 주변 블록의 임계값 X 플래그를 이용하여 도 54에 도시된 바와 같이 결정된다. 주변 블록의 임계값 X 플래그의 값은 주변 블록의 차분 움직임 벡터의 x 컴포넌트의 값과 미리 설정된 임계값에 따라 정해진다. 예컨대, 임계값이 9라고 가정하면, 임계값 X 플래그의 값은 차분 움직임 벡터 x 컴포넌트의 절대값이 임계값 9보다 작은 경우 1이고, 9보다 큰 경우 0이다. 이 때, 임계값은 사용자에 의해 선택될 수 있다. 차분 움직임 벡터의 y 컴포넌트의 경우 차분 움직임 벡터의 x 컴포넌트와 동일한 방법으로 ctx_inc가 결정된다.
도 54에서 신택스의 ctx_inc는 제 1 실시예에서 서술한 상세한 설명과 유사하게 결정할 수 있으므로 상세한 설명은 생략한다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 또한, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 따라서, 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
이상에서 설명한 바와 같이 본 발명의 실시예는, 확장된 매크로블록을 다양한 크기와 모양의 서브블록으로 분할하고 분할된 서브블록의 크기에 따라 다른 예측 단위와 변환 단위를 이용하여 영상을 부호화 및 복호화함으로써 압축 효율 및 복원효율을 향상시킬 수 있는 효과를 발생하는 매우 유용한 발명이다.
100: 영상 부호화 장치
110: 예측기 120: 감산기
130: 변환기 및 양자화기 140: 부호화기
150: 역양자화기 및 역변환기 160: 가산기
170: 필터 180: 픽처 버퍼
4600: 영상 복호화 장치
4610: 복호화기 4620: 역양자화기 및 역변환기
4630: 예측기 4632: 인트라 예측기
4634: 인터 예측기 4640: 감산기
4650: 필터 4660: 픽처 버퍼

Claims (34)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 영상을 복호화하는 장치에 있어서,
    CABAC를 이용하여 부호화된 데이터를 복호화하여 분할 타입 정보, 변환 서브 블록 분할 정보 및 양자화된 변환 계수를 복원하는 복호화기;
    상기 복원되는 변환 서브 블록 분할 정보와 관련된 변환을 이용하여 상기 양자화된 변환 계수를 역 양자화 및 역 변환하여 잔여 서브블록을 복원하는 역 양자화기 및 역 변환기;
    상기 복원되는 분할 타입 정보와 관련된 서브블록에 상응하는 예측 서브블록을 생성하는 예측기; 및
    상기 예측 서브블록에 상응하는 픽셀값과 상기 잔여 서브블록에 상응하는 픽셀값을 가산하여 상기 서브블록을 복원하는 가산기를 포함하고,
    상기 복호화기는,
    상기 CABAC을 이용하여 SKIP 플래그를 복원하고, 상기 SKIP 플래그에 상응하는 현재 블록의 상단 블록 및 좌측 블록의 상태를 고려하여 상기 SKIP 플래그를 복원하고,
    상기 복호화기는,
    상기 SKIP 플래그에 상응하는 현재 블록의 상단 블록 및 좌측 블록의 상태에 따라 ctx_inc 값을 달리 하여 상기 CABAC에 상응하는 컨텍스트 번호(ctxIdx)가 달라지도록 하고,
    상기 복호화기는
    상기 SKIP 플래그가 SKIP 모드에 상응하는 경우 움직임 정보 인덱스를 복호화하고,
    상기 복호화기는 상기 SKIP 플래그에 상응하는 현재 블록의 상단 블록 및 상기 좌측 블록이 모두 존재하고, 상기 상단 블록의 SKIP 플래그 및 상기 좌측 블록의 SKIP 플래그가 모두 1인 경우 상기 ctx_inc 값을 2로 설정하고, 상기 상단 블록의 SKIP 플래그 및 상기 좌측 블록의 SKIP 플래그 중 어느 하나만 1인 경우 상기 ctx_inc 값을 1로 설정하고, 상기 상단 블록의 SKIP 플래그 및 상기 좌측 블록의 SKIP 플래그가 모두 0인 경우 상기 ctx_inc 값을 0으로 설정하는 것을 특징으로 하는 영상 복호화 장치.
  21. 제 20항에 있어서,
    상기 컨텍스트 번호(ctxIdx)는 ctxIdx_offset 값과 상기 ctx_inc 값을 합하여 생성되는 것을 특징으로 하는 영상 복호화 장치.
  22. 제 21항에 있어서,
    상기 복호화기는,
    상기 SKIP 플래그가 상기 SKIP 모드에 상응하지 않는 경우에만, 주변 블록 또는 동일 위치 블록의 움직임 정보를 사용하는 일괄 모드를 식별하기 위한 일괄 모드 플래그를 복호화하는 것을 특징으로 하는 영상 복호화 장치.
  23. 제 22항에 있어서,
    상기 복호화기는,
    상기 SKIP 모드 플래그가 상기 SKIP 모드에 상응하거나, 상기 일괄 모드 플래그가 상기 일괄 모드에 상응하는 경우에, 상기 움직임 정보 인덱스를 복호화하는 것을 특징으로 하는 영상 복호화 장치.
  24. 영상을 복호화하는 장치에 있어서,
    CABAC를 이용하여 부호화된 데이터를 복호화하여 분할 타입 정보, 변환 서브 블록 분할 정보 및 양자화된 변환 계수를 복원하는 복호화기;
    상기 복원되는 변환 서브 블록 분할 정보와 관련된 변환을 이용하여 상기 양자화된 변환 계수를 역 양자화 및 역 변환하여 잔여 서브블록을 복원하는 역 양자화기 및 역 변환기;
    상기 복원되는 분할 타입 정보와 관련된 서브블록에 상응하는 예측 서브블록을 생성하는 예측기; 및
    상기 예측 서브블록에 상응하는 픽셀값과 상기 잔여 서브블록에 상응하는 픽셀값을 가산하여 상기 서브블록을 복원하는 가산기를 포함하고,
    상기 예측 서브블록은
    가로 방향으로 예측한 결과에 상응하는 가로 예측값 및 세로 방향으로 예측한 결과에 상응하는 세로 예측값을 함께 이용하여 생성되는 것을 특징으로 하는 영상 복호화 장치.
  25. 제 24항에 있어서,
    상기 가로 예측값은
    상기 예측 서브블록의 왼쪽에 인접한 화소들 중 하나와 상기 예측 서브블록의 오른쪽 상단에 상응하는 우-상 외부 화소를 이용하여 계산되는 것을 특징으로 하는 영상 복호화 장치.
  26. 제 25항에 있어서,
    상기 세로 예측값은
    상기 예측 서브블록의 위쪽에 인접한 화소들 중 하나와 상기 예측 서브블록의 왼쪽 하단에 상응하는 좌-하 외부 화소를 이용하여 계산되는 것을 특징으로 하는 영상 복호화 장치.
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
KR1020110035425A 2010-04-16 2011-04-16 영상 부호화/복호화 장치 및 방법 KR101791242B1 (ko)

Priority Applications (9)

Application Number Priority Date Filing Date Title
US13/641,677 US10250881B2 (en) 2010-04-16 2011-04-18 Video encoding/decoding apparatus and method using batch mode together with skip mode
CN201510633174.6A CN105306943B (zh) 2010-04-16 2011-04-18 视频编码方法
CN201180029771.8A CN102939756B (zh) 2010-04-16 2011-04-18 视频编码/解码设备和方法
CN201610065599.6A CN105704490B (zh) 2010-04-16 2011-04-18 视频编码设备
PCT/KR2011/002763 WO2011129673A2 (ko) 2010-04-16 2011-04-18 영상 부호화/복호화 장치 및 방법
CN201510133860.7A CN104837016B (zh) 2010-04-16 2011-04-18 视频解码设备
CN201510633175.0A CN105187827B (zh) 2010-04-16 2011-04-18 视频解码方法
US14/668,501 US9451270B2 (en) 2010-04-16 2015-03-25 Video encoding/decoding apparatus and method using batch mode together with skip mode
US15/231,315 US9743085B2 (en) 2010-04-16 2016-08-08 Video encoding/decoding apparatus and method using batch mode together with skip mode

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20100035450 2010-04-16
KR1020100035450 2010-04-16

Publications (2)

Publication Number Publication Date
KR20110115986A KR20110115986A (ko) 2011-10-24
KR101791242B1 true KR101791242B1 (ko) 2017-10-30

Family

ID=45030487

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110035425A KR101791242B1 (ko) 2010-04-16 2011-04-16 영상 부호화/복호화 장치 및 방법

Country Status (3)

Country Link
US (3) US10250881B2 (ko)
KR (1) KR101791242B1 (ko)
CN (4) CN105187827B (ko)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101619972B1 (ko) * 2008-10-02 2016-05-11 한국전자통신연구원 이산 여현 변환/이산 정현 변환을 선택적으로 이용하는 부호화/복호화 장치 및 방법
KR101418101B1 (ko) 2009-09-23 2014-07-16 에스케이 텔레콤주식회사 저주파수 성분을 고려한 영상 부호화/복호화 방법 및 장치
WO2012115420A2 (ko) 2011-02-23 2012-08-30 엘지전자 주식회사 필터링을 이용한 화면 내 예측 방법 및 이러한 방법을 사용하는 장치
KR20120140181A (ko) * 2011-06-20 2012-12-28 한국전자통신연구원 화면내 예측 블록 경계 필터링을 이용한 부호화/복호화 방법 및 그 장치
US9807401B2 (en) * 2011-11-01 2017-10-31 Qualcomm Incorporated Transform unit partitioning for chroma components in video coding
KR20130049522A (ko) * 2011-11-04 2013-05-14 오수미 인트라 예측 블록 생성 방법
JP2013168866A (ja) * 2012-02-16 2013-08-29 Canon Inc 画像処理装置、その制御方法およびプログラム
JP2013168867A (ja) * 2012-02-16 2013-08-29 Canon Inc 画像処理装置、その制御方法およびプログラム
EP4216547A1 (en) 2012-06-29 2023-07-26 Electronics And Telecommunications Research Institute Method for encoding/decoding images
US20140079135A1 (en) * 2012-09-14 2014-03-20 Qualcomm Incoporated Performing quantization to facilitate deblocking filtering
CN113259681A (zh) * 2013-04-08 2021-08-13 Ge视频压缩有限责任公司 分量间预测
JP6614472B2 (ja) 2013-09-30 2019-12-04 サン パテント トラスト 画像符号化方法、画像復号方法、画像符号化装置及び画像復号装置
KR101506723B1 (ko) * 2013-10-02 2015-03-30 인하대학교 산학협력단 Hevc 압축을 위한 계층적 상관관계를 갖는 예측 방향의 초기 결정 방법
WO2015055832A1 (en) * 2013-10-18 2015-04-23 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Multi-component picture or video coding concept
EP3036689B8 (en) * 2013-10-25 2020-11-11 MediaTek Inc. Method and apparatus for processing picture having picture height not evenly divisible by slice height and/or slice width not evenly divisible by pixel group width
JP2015095733A (ja) * 2013-11-11 2015-05-18 キヤノン株式会社 画像伝送装置、画像伝送方法、及びプログラム
KR20170058335A (ko) * 2014-09-19 2017-05-26 엘지전자 주식회사 분리 가능한 변환에 기초하여 적응적으로 비디오 신호를 인코딩 및 디코딩하는 방법 및 장치
US11463689B2 (en) 2015-06-18 2022-10-04 Qualcomm Incorporated Intra prediction and intra mode coding
US10142627B2 (en) 2015-06-18 2018-11-27 Qualcomm Incorporated Intra prediction and intra mode coding
US10841593B2 (en) 2015-06-18 2020-11-17 Qualcomm Incorporated Intra prediction and intra mode coding
WO2017088810A1 (en) * 2015-11-27 2017-06-01 Mediatek Inc. Method and apparatus of entropy coding and context modelling for video and image coding
CN113810699A (zh) * 2016-04-29 2021-12-17 世宗大学校产学协力团 用于对图像信号进行编码和解码的方法和装置
WO2017222334A1 (ko) * 2016-06-24 2017-12-28 한국전자통신연구원 변환 기반의 영상 부호화/복호화 방법 및 장치
CN116016910A (zh) * 2016-08-01 2023-04-25 韩国电子通信研究院 图像编码/解码方法
KR20180021942A (ko) * 2016-08-22 2018-03-06 광운대학교 산학협력단 보안 카메라용 영상 코덱에서 블록 분할 정보 전송 방법 및 장치
CN113873243B (zh) * 2016-08-31 2024-02-20 株式会社Kt 用于对视频进行解码的方法和用于对视频进行编码的方法
KR20180039323A (ko) 2016-10-10 2018-04-18 디지털인사이트 주식회사 다양한 블록 분할 구조를 결합하여 사용하는 비디오 코딩 방법 및 장치
CN110024402B (zh) * 2016-11-29 2023-08-22 韩国电子通信研究院 图像编码/解码方法和装置以及存储有比特流的记录介质
US10694202B2 (en) * 2016-12-01 2020-06-23 Qualcomm Incorporated Indication of bilateral filter usage in video coding
WO2018131986A1 (ko) * 2017-01-16 2018-07-19 세종대학교 산학협력단 영상의 부호화/복호화 방법 및 장치
EP3383043A1 (en) * 2017-03-27 2018-10-03 Thomson Licensing Methods and apparatus for picture encoding and decoding
CN110786011B (zh) * 2017-06-26 2021-09-24 松下电器(美国)知识产权公司 编码装置、解码装置、编码方法和解码方法
US10523968B2 (en) * 2017-09-18 2019-12-31 Google Llc Coding of last significant coefficient flags
US10721469B2 (en) * 2017-11-28 2020-07-21 Qualcomm Incorporated Line buffer reduction for adaptive loop filtering in video coding
CN115278240A (zh) * 2017-12-15 2022-11-01 Lg电子株式会社 图像编解码方法和发送方法及非暂态计算机可读存储介质
US10694205B2 (en) * 2017-12-18 2020-06-23 Google Llc Entropy coding of motion vectors using categories of transform blocks
WO2019137730A1 (en) * 2018-01-11 2019-07-18 Telefonaktiebolaget Lm Ericsson (Publ) Multiple boundary filtering
CN117834918A (zh) * 2018-01-17 2024-04-05 英迪股份有限公司 对视频进行解码或编码的方法和用于发送比特流的方法
CN108322742B (zh) * 2018-02-11 2019-08-16 北京大学深圳研究生院 一种基于帧内预测的点云属性压缩方法
CN108335335B (zh) * 2018-02-11 2019-06-21 北京大学深圳研究生院 一种基于增强图变换的点云属性压缩方法
US10999604B2 (en) 2018-04-13 2021-05-04 Mediatek Inc. Adaptive implicit transform setting
US11297348B2 (en) * 2018-04-13 2022-04-05 Mediatek Inc. Implicit transform settings for coding a block of pixels
WO2019212987A1 (en) * 2018-04-30 2019-11-07 Interdigital Vc Holdings, Inc. Flexible implementations of multiple transforms
CN108769690A (zh) * 2018-05-28 2018-11-06 思百达物联网科技(北京)有限公司 基于视频压缩的连续图片管理方法、装置、设备和介质
US11277644B2 (en) 2018-07-02 2022-03-15 Qualcomm Incorporated Combining mode dependent intra smoothing (MDIS) with intra interpolation filter switching
US11303885B2 (en) 2018-10-25 2022-04-12 Qualcomm Incorporated Wide-angle intra prediction smoothing and interpolation
US11115652B2 (en) * 2018-12-07 2021-09-07 Tencent America LLC Method and apparatus for further improved context design for prediction mode and coded block flag (CBF)
US20220086460A1 (en) * 2019-01-02 2022-03-17 Sharp Kabushiki Kaisha Systems and methods for performing intra prediction coding
EP4024870A4 (en) * 2019-09-21 2022-11-02 LG Electronics Inc. TRANSFORMATION-BASED IMAGE CODING METHOD AND APPARATUS THEREOF
EP3968635A1 (en) * 2020-09-11 2022-03-16 Axis AB A method for providing prunable video
CN112969067B (zh) * 2021-05-18 2021-08-03 浙江华创视讯科技有限公司 一种视频编码方法、装置、设备和可读存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6304607B1 (en) * 1997-03-18 2001-10-16 Texas Instruments Incorporated Error resilient video coding using reversible variable length codes (RVLCS)
CN101448162B (zh) * 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
CN1589023A (zh) 2004-08-06 2005-03-02 联合信源数字音视频技术(北京)有限公司 一种基于上下文的多码表变长编解码方法及编解码装置
KR100763181B1 (ko) * 2005-04-19 2007-10-05 삼성전자주식회사 기초계층과 향상계층의 데이터를 바탕으로 예측 정보를코딩하여 코딩율을 향상시키는 방법 및 장치
US8509551B2 (en) 2005-07-22 2013-08-13 Mitsubishi Electric Corporation Image encoder and image decoder, image encoding method and image decoding method, image encoding program and image decoding program, and computer readable recording medium recording with image encoding program and computer readable recording medium recorded with image decoding program
CN102176754B (zh) 2005-07-22 2013-02-06 三菱电机株式会社 图像编码装置和方法、以及图像解码装置和方法
KR100750165B1 (ko) * 2006-02-22 2007-08-17 삼성전자주식회사 압축률 향상을 위해 개선된 컨텍스트 모델 선택을 사용하는cabac 부호화 방법 및 장치, 그리고 cabac복호화 방법 및 장치
US8238442B2 (en) * 2006-08-25 2012-08-07 Sony Computer Entertainment Inc. Methods and apparatus for concealing corrupted blocks of video data
KR101365569B1 (ko) * 2007-01-18 2014-02-21 삼성전자주식회사 인트라 예측 부호화, 복호화 방법 및 장치
KR20090129926A (ko) * 2008-06-13 2009-12-17 삼성전자주식회사 영상 부호화 방법 및 그 장치, 영상 복호화 방법 및 그 장치
KR101359496B1 (ko) * 2008-08-06 2014-02-11 에스케이 텔레콤주식회사 부호화 모드 결정 방법 및 장치와 그를 이용한 영상 부호화장치
CN101621692B (zh) * 2009-07-27 2011-04-20 宁波大学 一种基于预测模式的h.264/avc视频信息隐藏方法
US20110194613A1 (en) * 2010-02-11 2011-08-11 Qualcomm Incorporated Video coding with large macroblocks
US20110249754A1 (en) * 2010-04-12 2011-10-13 Qualcomm Incorporated Variable length coding of coded block pattern (cbp) in video compression
TWI713356B (zh) * 2010-04-13 2020-12-11 美商Ge影像壓縮有限公司 樣本區域合併技術
WO2011127963A1 (en) * 2010-04-13 2011-10-20 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Sample region merging
CN101841700B (zh) * 2010-05-18 2011-11-16 宁波大学 一种面向h.264压缩比特流的视频水印方法

Also Published As

Publication number Publication date
US10250881B2 (en) 2019-04-02
CN105306943A (zh) 2016-02-03
CN104837016B (zh) 2018-10-09
CN105306943B (zh) 2018-07-31
CN102939756A (zh) 2013-02-20
US9743085B2 (en) 2017-08-22
US9451270B2 (en) 2016-09-20
CN105187827A (zh) 2015-12-23
KR20110115986A (ko) 2011-10-24
US20130034153A1 (en) 2013-02-07
CN104837016A (zh) 2015-08-12
CN102939756B (zh) 2016-03-02
CN105187827B (zh) 2019-01-11
US20150256836A1 (en) 2015-09-10
US20160353104A1 (en) 2016-12-01

Similar Documents

Publication Publication Date Title
KR101868290B1 (ko) 영상 부호화/복호화 장치 및 방법
KR101791242B1 (ko) 영상 부호화/복호화 장치 및 방법
KR101874840B1 (ko) 영상 부호화/복호화 장치 및 방법
KR101984764B1 (ko) 영상 부호화/복호화 장치 및 방법
KR101474987B1 (ko) 잔차 신호 부호화 장치
KR101543314B1 (ko) 가변 크기의 매크로블록을 이용한 영상 부호화/복호화 방법 및 장치
KR101479129B1 (ko) 가변 크기의 매크로블록을 이용한 영상 부호화/복호화 방법 및 장치
KR20130131424A (ko) 영상 부호화 장치 및 방법
KR20110043407A (ko) 영상 부호화/복호화 장치 및 방법
KR20190083318A (ko) 인트라 예측에서의 잔차 신호를 부호화하는 장치
KR20180111378A (ko) 병렬 처리를 위한 움직임 정보를 처리하는 영상 처리 방법, 그를 이용한 영상 복호화, 부호화 방법 및 그 장치
JP2014007643A (ja) 動画像符号化装置、動画像復号装置、動画像符号化方法及び動画像復号方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant