KR101698509B1 - 분할 레이어를 이용한 영상 부호화/복호화 방법 및 장치 - Google Patents
분할 레이어를 이용한 영상 부호화/복호화 방법 및 장치 Download PDFInfo
- Publication number
- KR101698509B1 KR101698509B1 KR1020160121625A KR20160121625A KR101698509B1 KR 101698509 B1 KR101698509 B1 KR 101698509B1 KR 1020160121625 A KR1020160121625 A KR 1020160121625A KR 20160121625 A KR20160121625 A KR 20160121625A KR 101698509 B1 KR101698509 B1 KR 101698509B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- size
- layer
- sub
- division
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/12—Selection 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
- H04N19/122—Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/179—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scene or a shot
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
- H04N19/463—Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/59—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/96—Tree coding, e.g. quad-tree coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/24—Systems for the transmission of television signals using pulse code modulation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 발명은 영상 부호화 방법에 관한 것으로, 부호화 대상 블록의 크기를 결정하고 상기 부호화 대상 블록의 크기를 지시하기 위한 블록 크기 정보를 부호화하는 단계; 트리 구조를 이용하여 상기 부호화 대상 블록의 분할 정보를 부호화하는 단계; 및 상기 트리구조에서 더 이상 분할되지 않는 서브블록을 부호화하는 단계를 포함하는 것을 특징으로 한다.
Description
본 발명은 분할 레이어를 이용한 영상 부호화/복호화 방법 및 장치에 관한 것이다. 더욱 상세하게는, 가변 크기의 블록을 이용하여고해상도의 영상을 부호화할 때 블록을 서브블록으로 분할하여 서브블록 단위로 부호화 및 복호화하고, 블록의 분할 정보를 효율적으로 부호화하고 복호화함으로써 압축 효율을 향상시키는 방법 및 장치에 관한 것이다.
동영상 데이터를 압축기술로는 H.261, H.263, MPEG-2, MPEG-4 등이 있다. 이러한 비디오 압축 표준은 각 영상을 휘도 성분의 16x16 크기의 화소들과 각 색차 성분의 8x8 크기의 화소들의 사각 영역으로 이루어진 고정된 크기를 가지는 매크로블록(Macroblock)들로 나누어 부호화한다. 각 매크로블록의 모든 휘도와 색차 성분들은 공간적으로나 시간적으로 예측되고, 예측 잔여분은 변환 및 양자화, 엔트로피 코딩이 수행되어 전송된다.
가장 최근에 제정된 H.264/AVC 표준에 따른 부호화 장치는 각각의 매크로블록을 인트라 예측 부호화할 때, 매크로블록은 16x16, 8x8, 4x4 등의 크기를 가지는 더 작은 블록으로 분할될 수 있으며, 16x16 크기의 블록에 대해서는 4 가지의 예측 모드, 8x8 크기와 4x4 크기의 블록에 대해서는 9 가지의 예측 모드중 하나를 이용하여 인트라 예측한다. 인터 예측의 경우, 매크로블록은 16x16, 16x8, 8x16, 8x8, 8x4, 4x8, 4x4 크기를 가지는 더 작은 블록으로 분할되어 움직임 보상을 통한 인터 예측에 이용될 수 있다. 변환은 8x8 크기 또는 4x4 크기의 블록 단위로 수행되고, 변환 계수의 양자화는 스칼라(Scalar) 양자화가 사용될 수 있다.
하지만, 이와 같이 통상적인 영상 압축 기술에서는 고정된 크기를 갖는 매크로블록 단위로 영상을 부호화하기 때문에(비록 H.264/AVC에서는 매크로블록을 더 작은 블록 단위로 분할하여 부호화하지만, 매크로블록의 크기는 고정됨), 고해상도의 영상을 부호화하는 경우에는 효율적인 부호화가 어려운 문제점이 있다.
또한, 매크로블록의 크기가 고정되어 있으므로 예측 또는 변환의 단위가 되는 매크로블록의 서브블록들의 크기 역시 제한적이라는 문제가 있다.
전술한 문제점을 해결하기 위해 본 발명의 실시예는, 고해상도의 영상을 부호화할 때 가변 크기의 블록 및 다양한 크기의 서브 블록들을 이용하여 영상을 부호화하고, 블록의 분할 정보를 효율적으로 부호화하고 복호화함으로써 압축 효율을 향상시키는 데 주된 목적이 있다.
본 발명의 일 측면에 따르면, 영상 부호화 방법에 있어서, 부호화 대상 블록의 크기를 결정하고 상기 부호화 대상 블록의 크기를 지시하기 위한 블록 크기 정보를 부호화하는 단계; 트리 구조를 이용하여 상기 부호화 대상 블록의 분할 정보를 부호화하는 단계; 및 상기 트리구조에서 더 이상 분할되지 않는 서브블록을 부호화하는 단계를 포함하는 것을 특징으로 하는 영상 부호화 방법을 제공한다.
상기 부호화 대상 블록의 크기는 16 x 16 보다 큰 크기를 포함할 수 있고, 상기 블록 크기에 대한 정보는 상기 비트스트림에 시퀀스 단위로 부호화될 수 있다.
상기 서브블록을 부호화하는 단계는, 상기 서브블록의 예측 타입이 인터 예측 모드인지 인트라 예측 모드인지를 결정하고 예측 타입 정보를 부호화하는 단계; 및 상기 결정된 예측 타입에 따라 상기 서브블록을 예측함으로써 상기 서브블록을 예측 부호화하는 단계를 포함할 수 있다.
또한, 상기 서브블록을 부호화하는 단계는, 상기 서브블록이 적어도 하나의 0이 아닌 변환 계수를 포함하는지 여부를 지시하는 변환 정보를 부호화하는 단계; 및 상기 서브블록이 적어도 하나의 0이 아닌 변환 계수를 가지는 경우, 상기 서브블록에 대응하는 변환계수를 부호화하는 단계를 포함할 수 있다.
한편, 상기 분할 정보를 부호화하는 단계는, 상기 부호화 대상 블록을 최상위 레이어로 갖는 트리 구조에서 상위 레이어의 블록이 하위 레이어의 복수의 블록으로 분할되는지와 관련된 분할 정보를 부호화할 수 있다.
상기 블록 크기 정보는 최소 서브블록 크기를 지시하기 위한 정보를 포함하고, 상기 트리 구조에서 상기 최소 서브블록 크기와 동일한 크기를 가지는 블록에 대응하는 분할 정보는 상기 비트스트림에 부호화하지 않을 수 있다. 여기서, 상기 최소 서브블록 크기를 지시하기 위한 정보는 log2(minBlockSize/X)의 값을 가지되, minBlockSize은 최소 서브블록 크기를 나타내고 X는 4 또는 8일 수 있다.
상기 분할 정보는 해당 블록을 하위 레이어의 블록으로 분할하기 위한 복수의 분할 타입 중 어느 하나의 분할 타입을 지시하는 분할 타입 정보이고, 상기 복수의 분할 타입은 분할되지 않음을 나타내는 제1타입, 동일 크기의 두 개의 블록으로 가로로 분할하는 제2타입, 동일 크기의 두 개의 블록으로 세로로 분할하는 제3타입, 및 동일 크기의 네 개의 블록으로 가로 및 세로로 분할하는 제4타입을 포함할 수 있다.
또는, 상기 분할 정보는 해당 블록이 하위 레이어의 네 개의 블록으로 분할되는지 여부를 지시하는 분할 플래그이고, 상기 분할 플래그가 상기 해당 블록이 하위 레이어의 네 개의 블록으로 분할됨을 지시할 때, 상기 해당 블록을 동일 크기의 네 개의 블록으로 분할할 수도 있다.
본 발명의 다른 측면에 따르면, 영상 부호화 장치에 있어서, 부호화 대상 블록의 크기를 결정하고 상기 부호화 대상 블록의 크기를 지시하기 위한 블록 크기 정보를 부호화하는 블록 크기 설정기; 및 트리 구조를 이용하여 상기 부호화 대상 블록의 분할 정보를 부호화하고, 상기 트리구조에서 더 이상 분할되지 않는 서브블록을 부호화하는 영상 부호화기를 포함하는 것을 특징으로 하는 영상 부호화 장치를 제공한다.
이상에서 설명한 바와 같이 본 발명의 실시예에 의하면, 고해상도의 영상을 부호화할 때 가변 크기의 블록 및 다양한 크기의 서브 블록들을 이용하여 영상을 부호화하고, 블록의 분할 정보를 부호화하고 복호화함으로써 효율적인 영상 부호화 및 복호화를 달성할 수 있다.
도 1 내지 도 3은 본 발명의 일 실시예에 따른 MxN 화소 단위의 매크로블록을 설명하기 위한 예시도,
도 4 및 도 5는 본 발명의 일 실시예에 따른 여러 가지 서브블록 모드를 나타낸 예시도,
도 6은 본 발명의 일 실시예에 따른 영상 부호화 장치를 간략하게 나타낸 블록 구성도,
도 7은 본 발명의 일 실시예에 따른 영상 복호화 장치를 간략하게 나타낸 블록 구성도,
도 8은 본 발명의 다른 실시예에 따른 영상 부호화 장치를 간략하게 나타낸 블록 구성도,
도 9는 본 발명의 다른 실시예에 따라 매크로블록을 레이어별로 분할한 서브블록을 나타낸 예시도,
도 10은 본 발명의 다른 실시예에 따른 분할 타입을 나타낸 예시도,
도 11은 본 발명의 다른 실시예에 따라 다양한 블록 크기의 서브블록으로 분할된 매크로블록을 나타낸 예시도,
도 12는 매크로블록이 분할 레이어별로 분할되는 과정을 순차적으로 나타낸 예시도,
도 13은 매크로블록의 레이어별 분할 타입 지시 정보를 서브블록의 순서에 따라 순차적으로 부호화하는 과정을 설명하기 위한 예시도,
도 14는 본 발명의 다른 실시예에 따라 트리 구조를 이용하여 블록의 분할 정보를 부호화하는 방법을 설명하기 위한 예시도,
도 15 및 도 16은 본 발명의 다른 실시예에 따라 트리 구조를 이용하여 블록의 분할 정보를 부호화하는 방법의 일 예를 설명하기 위한 예시도,
도 17 및 도 18은 본 발명의 다른 실시예에 따라 트리 구조를 이용하여 블록의 분할 정보를 부호화하는 방법의 다른 예를 설명하기 위한 예시도,
도 19는 본 발명의 다른 실시예에 따른 분할 레이어값에 따라 분할되는 서브블록을 나타낸 예시도,
도 20은 본 발명의 다른 실시예에 따라 블록의 분할 정보를 분할 레이어값과 분할 플래그를 이용하여 부호화하는 과정을 나타낸 예시도,
도 21은 본 발명의 다른 실시예에 따라 다양한 블록 크기의 서브블록으로 분할된 매크로블록의 다른 예를 나타낸 예시도,
도 22는 매크로블록의 레이어별 분할 타입 지시 정보를 서브블록의 순서에 따라 순차적으로 부호화하는 과정을 설명하기 다른 예시도,
도 23은 본 발명의 다른 실시예에 따른 영상 부호화 방법을 설명하기 위한 순서도,
도 24는 본 발명의 다른 실시예에 따른 영상 복호화 장치를 간략하게 나타낸 블록 구성도,
도 25는 본 발명의 다른 실시예에 따른 영상 부호화 방법을 설명하기 위한 순서도,
도 26은 본 발명의 또 다른 실시예에 따른 영상 부호화 장치를 간략하게 나타낸 블록 구성도,
도 27은 본 발명의 또 다른 실시예에 따른 분할 레이어와 최소 서브블록 크기와의 관계를 나타낸 예시도,
도 28은 본 발명의 또 다른 실시예에 따라 최대 분할 레이어값을 결정하는 방법의 일 예를 설명하기 위한 순서도,
도 29는 본 발명의 또 다른 실시예에 따라 최대 분할 레이어값을 결정하는 방법의 다른 예를 설명하기 위한 순서도,
도 30은 본 발명의 또 다른 실시예에 따라 선택된 분할 레이어들만을 이용하여 현재 블록의 분할 정보를 부호화하는 과정을 설명하기 위한 예시도,
도 31은 본 발명의 또 다른 실시예에 따른 영상 부호화 방법을 설명하기 위한 순서도,
도 32는 본 발명의 또 다른 실시예에 따른 영상 복호화 장치를 간략하게 나타낸 블록 구성도,
도 33은 본 발명의 또 다른 실시예에 따른 영상 복호화 방법을 설명하기 위한 순서도,
도 34는 본 발명의 다른 실시예에 따른 분할 타입을 나타낸 예시도,
도 35는 본 발명의 또 다른 실시예에 따른 영상 부호화 장치(3500)를 간략하게 나타낸 블록 구성도,
도 36은 본 발명의 다른 실시예에 따른 영상 부호화 방법의 구현 예를 설명하기 위한 순서도,
도 37은 본 발명의 다른 실시예에 따른 영상 복호화 장치의 구현예를 나타낸 블록 구성도이다.
도 4 및 도 5는 본 발명의 일 실시예에 따른 여러 가지 서브블록 모드를 나타낸 예시도,
도 6은 본 발명의 일 실시예에 따른 영상 부호화 장치를 간략하게 나타낸 블록 구성도,
도 7은 본 발명의 일 실시예에 따른 영상 복호화 장치를 간략하게 나타낸 블록 구성도,
도 8은 본 발명의 다른 실시예에 따른 영상 부호화 장치를 간략하게 나타낸 블록 구성도,
도 9는 본 발명의 다른 실시예에 따라 매크로블록을 레이어별로 분할한 서브블록을 나타낸 예시도,
도 10은 본 발명의 다른 실시예에 따른 분할 타입을 나타낸 예시도,
도 11은 본 발명의 다른 실시예에 따라 다양한 블록 크기의 서브블록으로 분할된 매크로블록을 나타낸 예시도,
도 12는 매크로블록이 분할 레이어별로 분할되는 과정을 순차적으로 나타낸 예시도,
도 13은 매크로블록의 레이어별 분할 타입 지시 정보를 서브블록의 순서에 따라 순차적으로 부호화하는 과정을 설명하기 위한 예시도,
도 14는 본 발명의 다른 실시예에 따라 트리 구조를 이용하여 블록의 분할 정보를 부호화하는 방법을 설명하기 위한 예시도,
도 15 및 도 16은 본 발명의 다른 실시예에 따라 트리 구조를 이용하여 블록의 분할 정보를 부호화하는 방법의 일 예를 설명하기 위한 예시도,
도 17 및 도 18은 본 발명의 다른 실시예에 따라 트리 구조를 이용하여 블록의 분할 정보를 부호화하는 방법의 다른 예를 설명하기 위한 예시도,
도 19는 본 발명의 다른 실시예에 따른 분할 레이어값에 따라 분할되는 서브블록을 나타낸 예시도,
도 20은 본 발명의 다른 실시예에 따라 블록의 분할 정보를 분할 레이어값과 분할 플래그를 이용하여 부호화하는 과정을 나타낸 예시도,
도 21은 본 발명의 다른 실시예에 따라 다양한 블록 크기의 서브블록으로 분할된 매크로블록의 다른 예를 나타낸 예시도,
도 22는 매크로블록의 레이어별 분할 타입 지시 정보를 서브블록의 순서에 따라 순차적으로 부호화하는 과정을 설명하기 다른 예시도,
도 23은 본 발명의 다른 실시예에 따른 영상 부호화 방법을 설명하기 위한 순서도,
도 24는 본 발명의 다른 실시예에 따른 영상 복호화 장치를 간략하게 나타낸 블록 구성도,
도 25는 본 발명의 다른 실시예에 따른 영상 부호화 방법을 설명하기 위한 순서도,
도 26은 본 발명의 또 다른 실시예에 따른 영상 부호화 장치를 간략하게 나타낸 블록 구성도,
도 27은 본 발명의 또 다른 실시예에 따른 분할 레이어와 최소 서브블록 크기와의 관계를 나타낸 예시도,
도 28은 본 발명의 또 다른 실시예에 따라 최대 분할 레이어값을 결정하는 방법의 일 예를 설명하기 위한 순서도,
도 29는 본 발명의 또 다른 실시예에 따라 최대 분할 레이어값을 결정하는 방법의 다른 예를 설명하기 위한 순서도,
도 30은 본 발명의 또 다른 실시예에 따라 선택된 분할 레이어들만을 이용하여 현재 블록의 분할 정보를 부호화하는 과정을 설명하기 위한 예시도,
도 31은 본 발명의 또 다른 실시예에 따른 영상 부호화 방법을 설명하기 위한 순서도,
도 32는 본 발명의 또 다른 실시예에 따른 영상 복호화 장치를 간략하게 나타낸 블록 구성도,
도 33은 본 발명의 또 다른 실시예에 따른 영상 복호화 방법을 설명하기 위한 순서도,
도 34는 본 발명의 다른 실시예에 따른 분할 타입을 나타낸 예시도,
도 35는 본 발명의 또 다른 실시예에 따른 영상 부호화 장치(3500)를 간략하게 나타낸 블록 구성도,
도 36은 본 발명의 다른 실시예에 따른 영상 부호화 방법의 구현 예를 설명하기 위한 순서도,
도 37은 본 발명의 다른 실시예에 따른 영상 복호화 장치의 구현예를 나타낸 블록 구성도이다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
이하에서 후술할 영상 부호화 장치(Video Encoding Apparatus), 영상 복호화 장치(Video Decoding Apparatus)는 개인용 컴퓨터(PC: Personal Computer), 노트북 컴퓨터, 개인 휴대 단말기(PDA: Personal Digital Assistant), 휴대형 멀티미디어 플레이어(PMP: Portable Multimedia Player), 플레이스테이션 포터블(PSP: PlayStation Portable), 이동통신 단말기(Mobile Communication Terminal) 등일 수 있으며, 각종 기기 또는 유무선 통신망과 통신을 수행하기 위한 통신 모뎀 등의 통신 장치, 영상을 부호화하거나 복호화하기 위한 각종 프로그램과 데이터를 저장하기 위한 메모리, 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서 등을 구비하는 다양한 장치를 의미한다.
또한, 영상 부호화 장치에 의해 비트스트림으로 부호화된 영상은 실시간 또는 비실시간으로 인터넷, 근거리 무선 통신망, 무선랜망, 와이브로망, 이동통신망 등의 유무선 통신망 등을 통하거나 케이블, 범용 직렬 버스(USB: Universal Serial Bus) 등의 통신 인터페이스를 통해 영상 복호화 장치로 전송되어 영상 복호화 장치에서 복호화되어 영상으로 복원되고 재생될 수 있다.
통상적으로 동영상은 일련의 픽처(Picture)로 구성되어 있으며, 각 픽처들은 블록(Block)과 같은 소정의 영역으로 분할된다. 영상의 영역이 블록으로 분할되는 경우에는 분할된 블록은 부호화 방법에 따라 크게 인트라 블록(Intra Block), 인터 블록(Inter Block)으로 분류된다. 인트라 블록은 인트라 예측 부호화(Intra Prediction Coding) 방식을 사용하여 부호화되는 블록을 뜻하는데, 인트라 예측 부호화란 현재 부호화를 수행하는 현재 픽처 내에서 이전에 부호화되고 복호화되어 복원된 블록들의 화소를 이용하여 현재 블록의 화소를 예측함으로써 예측 블록을 생성하고 현재 블록의 화소와의 차분값을 부호화하는 방식이다. 인터 블록은 인터 예측 부호화(Inter Prediction Coding)를 사용하여 부호화되는 블록을 뜻하는데, 인터 예측 부호화란 하나 이상의 과거 픽처 또는 미래 픽처를 참조하여 현재 픽처 내의 현재 블록을 예측함으로써 예측 블록을 생성하고 현재 블록과의 차분값을 부호화하는 방식이다. 여기서, 현재 픽처를 부호화하거나 복호화하는데 참조되는 픽처를 참조 픽처(Reference Picture)라고 한다.
A) 임의의 크기의 매크로블록 또는 블록을 이용한 부호화 및 복호화
이하에서는 영상을 블록 단위로 부호화하고 복호화하는 장치에 대해 예를 들어 설명한다. 여기서, 블록은 MxN(단, M과 N은 16 이상의 정수일 수 있다) 크기의 매크로블록이나 OxP(단, O와 P는 M 또는 N보다 작거나 같은 정수임) 크기의 서브블록 또는 하위 블록일 수 있는데, 블록 단위로 부호화하고 복호화하는 것은 예시적인 것이며, 영상을 블록과 같이 정형화된 영역 또는 비정형화된 영역으로 부호화하고 복호화할 수도 있을 것이다. 단, 다음에 설명하는 영상 부호화/복호화 장치는 임의의 크기의 블록을 사용할 수 있지만, 블록의 크기는 영상 부호화 장치와 영상 복호화 장치가 약속한 크기이다.
A-1) 임의의 크기의 매크로블록
도 1 내지 도 3은 본 발명의 일 실시예에 따른 MxN 화소 단위의 매크로블록을 설명하기 위한 예시도이다.
도 1에서는 임의의 크기를 가지는 입력 영상의 일 부분에서 표현된 MxN 화소 단위의 매크로블록(이하 'MxN 크기의 매크로블록'이라 칭함)을 예시적으로 나타내었고, 도 2에서는 396 개의 16x16 크기의 매크로블록으로 구성되는 CIF 영상을 예시적으로 나타내었으며, 도 3에서는 54 개의 64x32 크기의 매크로블록으로 구성되는 CIF 영상을 예시적으로 나타내었다.
기존의 영상 압축 기술에서는 도 2에 도시한 바와 같이, 영상을 16x16으로 고정된 크기를 가지는 매크로블록으로 분할하여 부호화하고 복호화하지만, 본 발명의 일 실시예에서는 도 3에 도시한 바와 같이, 64x32 크기(단, 64x32 크기의 매크로블록뿐만 아니라 64x64 크기, 32x64 크기와 같은 MxN 크기(단, 16x16 크기 이상)도 가능함)를 가지는 매크로블록을 이용하여 영상을 부호화하고 복호화할 수 있다.
A-2) 서브블록 모드 예
도 4 및 도 5는 본 발명의 일 실시예에 따른 여러 가지 서브블록 모드를 나타낸 예시도이다.
도 4에서는 32x32 크기의 매크로블록에 대해 사용할 수 있는 서브블록 모드를 나타내었고, 도 5에서는 32x16 크기의 매크로블록에 대해 사용할 수 있는 서브블록 모드를 나타내었다.
본 발명의 일 실시예에 따르면, MxN 크기의 매크로블록은 도 4 및 도 5에 도시한 바와 같은 더 작은 블록 즉, 서브블록으로 분할될 수 있으며, 영상의 매크로블록은 이와 같은 서브블록 단위로 인트라 예측 부호화되거나 인터 예측 부호화될 수 있다.
A-3) 영상 부호화 장치 설명
도 6은 본 발명의 일 실시예에 따른 영상 부호화 장치를 간략하게 나타낸 블록 구성도이다.
본 발명의 일 실시예에 따른 영상 부호화 장치는 16x16 크기 이상의 매크로블록을 이용하여 영상을 부호화하는 장치로서, 예측기(Predictor, 610), 부호화기(Encoder, 620), 복원기(Reproducer, 630), 필터(Filter, 640) 및 프레임 메모리(Frame Memory, 650)를 포함하여 구성될 수 있다. 여기서, 복원기(630), 필터(640) 및 프레임 메모리(650)는 구현 방식에 따라 선택적으로 생략되거나 다른 구성 요소에 포함되어 구성될 수 있다.
예측기(610)는 움직임 추정기(612), 움직임 보상기(614) 및 인트라 예측기(616)를 포함하여 구성될 수 있으며, 입력 영상의 매크로블록을 예측한다. 여기서, 매크로블록은 16x16 크기 이상의 매크로블록(즉, MxN 크기의 매크로블록, 단 M, N ≥ 16인 정수)을 말한다.
움직임 추정기(612)는 예측하고자 하는 매크로블록을 프레임 메모리(650)에 저장된 참조 픽처와 비교하여 해당 매크로블록의 움직임을 추정함으로써 움직임 벡터를 생성한다.
움직임 보상기(614)는 움직임 추정기(612)에 의해 생성된 움직임 벡터를 참조하여 프레임 메모리(650)에 저장된 참조 픽처에서 예측하고자 하는 매크로블록의 크기만큼의 블록을 가져온다. 움직임 보상기(614)가 가져온 매크로블록이 예측하고자 하는 매크로블록의 예측값을 가지는 예측 매크로블록이 된다.
인트라 예측기(616)는 예측하고자 하는 매크로블록을 인트라 예측한다. 이를 위해, 인트라 예측기(616)는 이미 부호화되고 복호화되어 복원된 주변 화소 정보를 이용하여 참조 블록을 생성하고 참조 블록과 부호화 대상 매크로블록을 비교하여 인트라 예측 모드를 결정하고, 결정된 인트라 예측 모드에 따라 매크로블록을 인트라 예측한다. 인트라 예측기(616)에 의해 예측된 매크로블록이 대상 매크로블록의 예측값을 가지는 예측 매크로블록이 된다.
부호화기(620)는 대상 매크로블록과 예측 매크로블록의 화소값의 차이인 잔여 신호를 부호화하는데, 잔여 신호를 변환 및 양자화하고 엔트로피 부호화하여 부호화할 수 있다. 또한, 부호화기(620)는 부호화하고자 하는 대상 매크로블록을 인터 예측하는 경우, 움직임 추정기(612)에서 생성한 움직임 벡터 등과 같은 움직임 정보와 매크로블록의 크기와 같은 매크로블록 모드 정보를 부호화할 수 있다. 부호화기(620)는 부호화하고자 하는 대상 매크로블록을 인트라 예측하는 경우, 인트라 예측 모드와 같은 예측 모드 정보와 매크로블록의 크기와 같은 매크로블록 모드 정보를 부호화할 수 있다.
복원기(630)는 변화 및 양자화된 잔여 신호를 역 양자화 및 역 변환하여 예측기(610)로부터 출력되는 예측 매크로블록과 가산하여 대상 매크로블록을 복원한다.
필터(640)는 디블로킹 필터(Deblocking Filter)와 같은 필터를 이용하여 복원된 대상 매크로블록을 필터링한다. 필터링된 복원 매크로블록은 프레임 메모리(650)에 저장되어, 예측기(610)에서 다음 매크로블록 또는 다음 픽처의 매크로블록을 예측하는 데 활용된다.
A-4) 영상 복호화 장치 설명
도 7은 본 발명의 일 실시예에 따른 영상 복호화 장치를 간략하게 나타낸 블록 구성도이다.
본 발명의 일 실시예에 따른 영상 복호화 장치(700)는 복호화기(710), 예측기(720), 복원기(730), 필터(740) 및 프레임 메모리(750)를 포함하여 구성될 수 있다.
복호화기(710)는 입력되는 비트스트림으로부터 매크로블록 복호화에 필요한 3가지 타입의 정보를 추출한다.
첫번째로 현재 복호화하고자 하는 매크로블록이 인터 매크로블록인지 또는 인트라 매크로블록인지 여부와 매크로블록의 서브블록모드를 나타내는 매크로블록 타입 정보와 서브블록 모드 정보를 엔트로피 복호화하여 추출한다.
두번째로 예측에 필요한 정보를 엔트로피 복호화하여 추출한다. 이때 복호화할 예측 데이터의 종류와 예측 데이터 복호화 방법은 각 블록이 인트라 블록인지 인터 블록인지에 따라 달라지게 되는데 복원할 블록이 인터 매크로블록인 경우에는 비트스트림으로부터 각 서브블록들의 움직임 보상에 필요한 참조픽쳐 정보와 움직임 벡터 등과 같은 움직임에 대한 정보를 추출하여 복호화하고, 인트라 블록인 경우에는 비트스트림으로부터 휘도 성분과 색차성분의 인트라 예측 모드에 대한 정보를 추출하여 복호화한다.
마지막으로 잔여신호 복호화에 필요한 정보들을 복호화하는데, 먼저 각 서브블록에 0이 아닌 변환계수가 있는지를 나타내는 정보(예컨대 CBP)를 복호화하고 0이 아닌 변환계수가 있는 블록들에 대해서는 변환의 종류를 나타내는 변환정보와 양자화된 변환계수를 복호화한다.
예측기(720)는 현재 복호화하고자 하는 현재 블록을 예측하는데, 움직임 보상기(722)와 인트라 예측기(724)를 포함하여 구성될 수 있다. 움직임 보상기(722)는 현재 블록이 인터 블록인 경우, 복호화기(710)에 의해 복호화되어 복원된 움직임 벡터를 이용하여 프레임 메모리(750)에 저장된 참조 픽처에서 현재 매크로블록의 크기만큼의 화소를 가져와서 예측 매크로블록을 생성한다. 인트라 예측기(724)는 현재 블록이 인트라 블록인 경우, 복호화기(710)에 의해 복호화되어 복원된 인트라 예측 모드에 따라 현재 매크로블록을 예측하여 예측 매크로블록을 생성한다. 복원기(730)는 복호화기(710)에 의해 복호화된 양자화된 변환계수를 역양자화하고 복호화기(710)에서 추출하고 복원한 변환종류를 이용하여 역양자화된 변환계수를 역 변환하여 잔여 신호를 생성한 후, 생성된 잔여신호를 예측기(720)에 의해 생성된 예측 매크로블록을 더하여 복원 매크로블록을 생성한다. 생성된 복원 매크로블록은 필터(740)에서 필터링되어 프레임 메모리(750)에 저장되고, 다음 매크로블록이나 다음 픽처를 복원하는 데 이용된다.
이상에서 전술한 바와 같이, 본 발명의 일 실시예에 따른 영상 부호화 장치(600)와 영상 복호화 장치(700)는 임의의 크기의 블록을 이용하여 영상을 부호화하고 복호화할 수 있다.
B) 블록 분할 및, 분할정보 부호화 및 복호화
이하에서는 본 발명의 다른 실시예로서, 분할 레이어를 이용하여 임의의 크기의 매크로블록의 예측 또는 변환을 위해 복수개의 서브블록으로 분할하고, 분할된 서브블록의 모양과 크기를 나타내는 분할 정보를 효율적으로 부호화하고 복호화하는 장치와 방법에 대해 설명한다. 단, 다음에 설명하는 영상 부호화/복호화 장치는 임의의 크기의 매크로블록을 사용할 수 있지만, 영상 부호화 장치와 영상 복호화 장치는 약속된 크기의 매크로블록과 약속된 크기의 최소 서브블록을 사용하여 부호화/복호화한다.
상기 분할 정보는 예측 또는 변환을 위해 분할된 서브블록들의 크기와 모양을 나타내는 정보일 수 있으며 영상 부호화 장치는 비트스트림에 분할정보와 부호화된 영상 데이터를 포함하여 부호화하여 영상 복호화 장치에 전송한다.
또한 영상 부호화 장치는 예측을 위한 분할 정보와 변환을 위한 분할 정보를 각각 부호화하도록 할 수도 있다.
복호화할 때는 영상 복호화 장치는 비트스트림으로부터 분할 정보를 추출하고 복호화하여 예측 또는 변환을 위해 매크로블록을 복수개의 서브블록으로 분할하고, 각 서브블록 단위로 예측 또는 역변환을 수행함으로써 영상을 복원한다.
B-1) 영상 부호화 장치
B-1-1) 부호화 장치
도 8은 본 발명의 다른 실시예에 따른 영상 부호화 장치를 간략하게 나타낸 블록 구성도이다.
본 발명의 다른 실시예에 따른 영상 부호화 장치(800)는 영상 부호화기(Video Encoder, 810) 및 분할 정보 부호화기(Split Information Encoder, 820)를 포함하여 구성될 수 있다.
도 8의 영상 부호화 장치(800)는 분할 정보 부호화기(820)에서 분할 정보를 부호화한 후, 영상 부호화기(810)에서는 각 서브블록들의 예측 데이터 및/또는 변환타입, CBP, 변환계수와 같은 잔여 신호 복호화에 필요한 데이터를 포함하는 영상 데이터를 부호화한다. 여기서 예측 데이터는 각 서브블록이 인트라 블록인지 인터 블록인지를 나타내는 데이터와 인트라 블록에 대해서는 인트라 예측 모드, 인터 블록에 대해서는 움직임 정보를 나타낸다. 영상 부호화기(810)는 도 6을 통해 전술한 본 발명의 일 실시예에 따른 영상 부호화 장치(600)로 구현될 수 있다. 즉, 영상 부호화기(810)는 임의의 크기의 매크로블록을 예측 또는 변환을 위해 다양한 크기의 서브블록으로 분할하고 각 서브블록을 예측 부호화한 후, 최소 부호화 비용을 가지는 매크로블록의 분할 타입과 각 서브블록의 예측 모드를 결정한다. 결정된 매크로블록의 분할 타입을 나타내는 분할 정보는 분할 정보 부호화기(820)를 통해 비트스트림으로 부호화하고 매크로블록 내 분할된 복수 개의 서브블록들의 예측 부호화된 영상 데이터를 생성한다.
분할 정보 부호화기(820)는 영상 부호화기(810)으로부터 입력받은 분할 정보를 부호화하여 분할 정보 데이터를 생성한다. 여기서, 분할 정보는 예측 또는 변환을 위해 복수개의 서브블록으로 분할된 매크로블록 내 서브블록들의 크기 또는 블록 형태에 대한 정보 일 수 있다.
통상적인 영상 압축 기술에 따르면, 매크로블록의 크기가 16x16으로 고정되어 있으므로 매크로블록의 서브블록도 그에 따라 8x8, 4x4 크기 등 소수의 형태를 가지는 서브블록만이 이용될 수 있으나, 본 발명의 실시예에 따르면, 매크로블록의 크기가 16x16 이상으로 다양하게 결정될 수 있으므로 그에 따라 서브블록의 크기와 형태도 다양하게 결정될 수 있으며, 그에 따라 매크로블록이 다양한 형태의 서브블록으로 분할될 수 있다. 따라서, 본 발명의 다른 실시예에서는 매크로블록이 어떠한 크기의 서브블록으로 어떠한 형태로 분할되었는지에 대한 정보를 영상 복호화 장치로 전송하여 영상 복호화 장치에서 매크로블록을 영상 부호화 장치에서 분할한 방식과 동일하게 분할하여 예측 복호화할 수 있도록 해야 한다. 분할 정보 부호화기(820)가 블록 정보를 부호화하는 것에 대해서는 후술하는 과정에서 도 9 내지 도 22를 통해 상세히 설명한다.
B-1-2) 서브블록 모드
본 발명의 다른 실시예에 따르면, 매크로블록을 레이어 별로 다양한 크기의 서브블록으로 분할하고, 분할된 서브 블록 별로 예측 부호화 및 예측 복호화할 수도 있다.
도 9는 본 발명의 다른 실시예에 따라 매크로블록을 레이어별로 분할한 서브블록을 나타낸 예시도이다.
도 9에서는 매크로블록의 크기는 NxN이되 N은 16 이상의 정수이며, 서브블록의 최소 서브블록 크기는 4x4인 것으로 가정하여 분할될 수 있는 서브블록들을 나타내었다. 다만, 이러한 가정은 본 발명의 실시예를 설명하기 위한 것일 뿐, 매크로블록의 가로와 세로의 크기는 동일하지 않을 수 있으며 서브블록의 최소 서브블록 크기는 4x4 이외의 다른 크기일 수 있다.
도 9에 도시한 바와 같이, 본 발명의 다른 실시예에 따르면 매크로블록은 레이어별로 다양한 크기의 서블블록들로 분할될 수 있다. 매크로블록은 레이어 0 내지 레이어 log2(N/4)까지 각 레이어별로 4 개의 형태를 가지는 서브블록들로 분할될 수 있다. 이때, 레이어 K(단, 0≤K≤log2(N/4))에서 해당 레이어의 서브블록이 4개의 서브블록으로 분할된 경우에만 K+1 레이어의 서브블록들을 사용할 수 있다.
예를 들어, MxN 블록 크기의 매크로블록이 64x64 블록 크기의 매크로블록일 때, 매크로블록은 레이어 0 내지 레이어 3까지 4 개의 레이어로 분할될 수 있으며, 각 레이어는 4 개의 서로 다른 블록 크기를 가지는 서브블록을 포함할 수 있다. 따라서, 64x64 블록 크기의 서브블록, 64x32 블록 크기의 서브블록, 32x64 블록 크기의 서브블록, 32x32 블록 크기의 서브블록은 레이어 0에 속하고, 32x32 블록 크기의 서브블록, 32x16 블록 크기의 서브블록, 16x32 블록 크기의 서브블록, 16x16 블록 크기의 서브블록은 레이어 1에 속하며, 16x16 블록 크기의 서브블록, 16x8 블록 크기의 서브블록, 8x16 블록 크기의 서브블록, 8x8 블록 크기의 서브블록은 레이어 2에 속하며, 8x8 블록 크기의 서브블록, 8x4 블록 크기의 서브블록, 4x8 블록 크기의 서브블록, 4x4 블록 크기의 서브블록은 레이어 3에 속한다. 여기서, 64x64 블록 크기의 매크로블록이 레이어 0에서 32x32 블록 크기의 서브블록으로 분할된 경우에만 레이어 1에 속한 서브블록들을 사용할 수 있으며, 레이어 1의 32x32 블록 크기의 서브블록이 다시 16x16 블록 크기의 서브블록으로 분할된 경우에만 레이어 2에 속한 서브블록들을 사용할 수 있으며, 레이어 2의 16x16 블록 크기의 서브블록이 다시 8x8 블록 크기의 서브블록으로 분할된 경우에만 레이어 3에 속한 서브블록들을 사용할 수 있다.
여기서, 레이어 번호 K인 NxN블록이 4개의 서브블록으로 분할된 경우, 분할된 서브블록은 레이어 K에 속할 수도 있고 레이어 K+1에 속할 수도 있다. 즉, 매크로블록이 64x64 크기인 경우, 32x32크기의 서브블록은 레이어 0에 포함되는 서브블록 타입으로 판단될 수도 있고 레이어 1에 속하는 서브블록 타입으로 판단될 수도 있다.
이 경우, 분할된 서브블록에 레이어 번호를 할당하는 방법은 각 레이어의 사용 가능 여부에 따라 달라지게 된다. 만약 레이어 K+1이 사용 가능한 경우 서브블록에 레이어 번호 K+1을 할당하고 레이어 K+1이 사용 가능하지 않은 경우에는 서브블록의 레이어 번호에 레이어 번호 K를 할당한다.
예를 들면 매크로블록의 크기는 64x64이고 최대 분할 레이어가 4인 경우, 매크로블록이 64x64이 4개의 32x32서브블록으로 분할된 경우, 32x32 서브블록은 레이어 1에 속하게 된다. 매크로블록 내 하나의 32x32 서브블록이 4개의 16x16 서브블록으로 분할되면 각 16x16 서브블록은 레이어 2에 속하고 동일한 방법으로 16x16 서브블록이 4개의 8x8 서브블록으로 분할되면 8x8 서브블록은 레이어3에 속하게 된다. 만약 8x8 서브블록이 4개의 4x4 서브블록으로 분할된 경우 4x4 서브블록은 레이어 4는 사용 가능하지 않으므로 레이어 3에 속하게 된다.
또한, 레이어 K의 NxN블록이 4개의 서브블록으로 분할되었을 경우, 분할된 서브블록의 레이어 번호로 K를 할당할 수도 있다. 이 경우, 서브블록이 더 작은 서브블록으로 분할된 경우 레이어 번호 K+1을 할당하도록 한다.
예를 들면 매크로블록의 크기는 64x64이고 최대 분할 레이어가 4인 경우, 매크로블록이 64x64이 4개의 32x32서브블록으로 분할된 경우, 32x32 서브블록은 레이어 0에 속하게 된다. 매크로블록 내 하나의 32x32 서브블록이 4개의 16x16 서브블록으로 분할되면 각 16x16 서브블록은 레이어 1에 속하고 동일한 방법으로 16x16 서브블록이 4개의 8x8 서브블록으로 분할되면 8x8 서브블록은 레이어 2에 속하게 된다. 그리고 8x8 서브블록이 4개의 4x4 서브블록으로 분할된 경우 4x4 서브블록은 레이어 3에 속하게 된다.
B-1-3) 분할타입
또한, 도 10과 도 34에 도시한 것과 같은 다양한 분할 타입을 이용하여 매크로블록을 분할할 수도 있다.
도 10과 도 34는 본 발명의 다른 실시예에 따른 분할 타입을 나타낸 예시도이다.
B-1-3-1) 분할타입 예 1
도 10은 본 발명의 다른 실시예에 따른 분할 타입을 나타낸 예시도이다.
도 10에서는 레이어별로 분할되는 서브블록의 블록 크기를 식별하기 위한 분할 타입 지시 정보(Partition Type Number)를 예시적으로 나타내었다.
도 10에 도시한 바와 같이, 매크로블록의 레이어 K의 서브블록 가 분할되지 않은 경우에는 분할 타입 지시 정보가 0으로 부여되고, 서브블록 가 두 개의 서브블록으로 분할된 경우 분할 타입 지시 정보가 1로 부여되며, 서브블록 가 두 개의 서브블록으로 분할된 경우 분할 타입 지시 정보가 2로 부여되며, 서브블록 가 네 개의 서브블록으로 분할된 경우 분할 타입 번호가 3으로 부여될 수 있다. 파티션 번호(Partition Number)는 분할 타입에 따라 분할된 각 서브블록을 식별하기 위해 부여되는 번호를 나타낸다. 예를 들어, 레이어 K의 서브블록 가 분할되지 않은 경우, 분할되지 않은 서블블록 의 파티션 번호는 0이 부여된다. 또한, 레이어 K의 서브블록 가 네 개의 서브블록으로 분할된 경우 각 서브블록들은 좌상단의 서브블록들로부터 래스터 스캔 방향으로 파티션 번호 0, 1, 2, 3으로 부여될 수 있다.
B-1-3-2) 분할타입 예 2
도 34는 본 발명의 다른 실시예에 따른 분할 타입을 나타낸 예시도이다.
도 34에서는 레이어별로 분할되는 서브블록의 블록 크기를 식별하기 위한 분할 타입 지시 정보(Partition Type Number)를 예시적으로 나타내었다.
도 34에 도시한 바와 같이, 매크로블록의 레이어 K의 서브블록 가 분할되지 않은 경우에는 분할 타입 지시 정보 분할 타입 지시 정보가 0으로 부여되고, 서브블록 가 네 개의 서브블록으로 분할된 경우 분할 타입 번호가 1로 부여될 수 있다. 파티션 번호(Partition Number)는 분할 타입에 따라 분할된 각 서브블록을 식별하기 위해 부여되는 번호를 나타낸다. 예를 들어, 레이어 K의 서브블록 가 분할되지 않은 경우, 분할되지 않은 서블블록 의 파티션 번호는 0이 부여된다. 또한, 레이어 K의 서브블록 가 네 개의 서브블록으로 분할된 경우 각 서브블록들은 좌상단의 서브블록들로부터 래스터 스캔 방향으로 파티션 번호 0, 1, 2, 3으로 부여될 수 있다.
또한 레이어 별로 다양한 분할 타입들을 결합하여 사용할 수도 있다. 예를 들어 레이어 0과 레이어 1에서는 도 34에 도시된 분할타입을 사용하고 레이어 1의 하위 레이어들은 도 10에 도시된 분할타입을 사용할 수도 있다.
B-1-4) 분할정보 부호화 방법
이하에서는, 매크로블록 내 예측 또는 변환을 위해 사용된 서브블록들의 크기와 모양을 나타내는 정보인 분할 정보를 부호화하는 본 발명의 실시예에 따른 다양한 방법들을 설명한다.
B-1-4-1) 분할정보 부호화 방법 1
먼저 분할 정보를 부호화하는 첫번째 방법을 설명한다.
첫번째 방법에 따르면, 매크로블록이 다양한 크기의 서브블록으로 분할되는 형태를 나타내는 블록의 분할 정보는 매크로블록의 분할 레이어별 분할 타입 지시 정보를 이용하여 나타낼 수 있다. 따라서, 매크로블록을 구성하는 복수 개의 서브블록은 분할 레이어별 분할 타입 지시 정보에 의해 식별될 수 있다. 분할 정보 부호화기(810)는 매크로블록의 레이어별 분할 타입 지시 정보를 이용하여 블록의 분할 정보를 부호화할 수 있는데, 후술하는 바와 같이 다양한 방식으로 블록의 분할 정보를 부호화할 수 있다.
일 예로, 분할 정보 부호화기(810)는 매크로블록의 분할 레이어별 분할 타입 지시 정보를 분할 타입 지시 정보 부호화 순서에 따라 순차적으로 부호화함으로써 현재 블록의 분할 정보를 부호화할 수 있다
이하에서는 도 11 내지 도 13을 통해 매크로블록의 분할 레이어별 분할 타입 지시 정보를 분할 타입 지시 정보 부호화 순서에 따라 순차적으로 부호화함으로써 현재 블록의 분할 정보를 부호화하는 방법에 대해 설명한다.
도 11은 본 발명의 다른 실시예에 따라 다양한 블록 크기의 서브블록으로 분할된 매크로블록을 나타낸 예시도이다.
도 11에서는 매크로블록의 블록 크기가 64x64이고, 최대 분할 레이어가 4이며 도 10에 도시된 서브블록 타입을 이용하여 다양한 블록 크기의 서브블록으로 분할된 매크로블록을 나타내었다.
매크로블록이 도시한 바와 같이 분할되었을 때, 본 발명의 다른 실시예에 따르면 분할 레이어별 분할 타입 지시 정보를 분할 타입 지시 정보 부호화 순서에 따라 순차적으로 부호화하여 매크로블록의 분할 정보를 부호화할 수 있다.
도 11에 도시한 매크로블록이 분할 레이어별로 분할되는 과정을 순차적으로 나타내면 도 12와 같이 나타낼 수 있다. 도 12를 참조하면, 레이어 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 개의 16x2 블록 크기의 서브블록으로 분할된다. 다시, 레이어 3(L3)에서, L3-P0(레이어 3의 파티션 번호 0)의 서브블록과 L3-P1(레이어 3의 파티션 번호 1)의 서브블록은 각각 4 개의 4x4 블록 크기의 서브블록으로 분할된다.
분할 타입 지시 정보를 부호화하는 순서는 다음과 같다.
먼저 매크로블록의 분할 타입을 나타내는 분할 타입 지시 정보를 부호화한 후, 매크로블록이 4개의 서브블록으로 분할되었을 경우, 분할된 각 서브블록의 분할 타입 지시 정보를 계속해서 부호화한다. 예를 들어 NxN블록이 4개의 서브블록으로 분할되었을 경우 NxN블록내 첫번째 (N/2)x(N/2) 서브블록의 분할 타입 지시 정보를 부호화하고 첫번째 (N/2)x(N/2) 서브블록 다시 4개의 서브블록으로 분할된 경우 분할된 (N/4)x(N/4)블록의 분할 타입 지시정보를 부호화한다. 분할된 (N/4)x(N/4)블록이 최소 서브블록의 크기이거나 4개의 더 작은 서브블록으로 분할되지 않은 경우 래스터 스캔 순서로 다음 (N/4)x(N/4) 블록의 분할 타입 지시 정보를 부호화한다. 만약 (N/4)x(N/4)블록이 최소 서브블록의 최소 서브블록의 크기가 아니고 다시 4개의 (N/8)x(N/8) 크기의 서브블록으로 분할된 경우 해당 블록 내 첫번째 (N/8)x(N/8) 서브블록부터 분할 타입 지시 정보를 부호화한다. 매크로블록내 모든 서브블록들의 분할 타입 지시 정보를 부호화할 때까지 분할 타입 지시 정보를 부호화를 수행한다.
도 13은 매크로블록의 레이어별 분할 타입 지시 정보를 순차적으로 부호화하는 과정을 설명하기 위한 예시도이다.
도 11에 도시한 매크로블록의 각 서브블록의 분할 타입에 대한 정보를 부호화하면 도 13과 같이 부호화할 수 있다. 도 11에서, '□' 안에 기재된 숫자는 각 서브블록의 분할 타입 지시 정보를 부호화하는 순서를 나타낸다. 매크로블록의 레이어별 분할 타입 지시 정보를 분할 타입 지시 정보 부호화 순서에 따라 순차적으로 부호화하면, 도 11에 도시한 순서에 따라 레이어별 분할 타입 지시 정보를 순차적으로 부호화한다.
먼저, 레이어 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}을 부호화한다.
이와 같은 부호화 방식에 따라 도 11에 도시한 매크로블록의 분할 타입에 대한 정보를 부호화하면, 도 13에 도시한 바와 같이 분할 타입 지시 정보 {3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 2, 1, 3, 0, 0, 0, 0}가 부호화된다.
또한, 분할 타입 지시 정보 부호화는 다음과 같은 순서도 가능하다.
레이어 0의 분할 타입 지시 정보 {3}을 부호화하고 레이어 1의 4 개의 서브블록(L1-P0, L1-P1, L1-P2, L1-P3)의 분할 타입 지시 정보 {3, 2, 1, 3}을 부호화하고 레이어 2의 8 개의 서브블록(L1-P0에 속하는 4 개의 서브블록과 L1-P3에 속하는 4 개의 서브블록)의 분할 타입 지시 정보 {3, 0, 0, 1, 0, 0, 0, 0}을 부호화하고 레이어 3의 4 개의 서브블록(L1-P0 내 L2-P0에 속하는 4 개의 서브블록)의 분할 타입 지시 정보 {3, 3, 0, 0}을 부호화할 수 있다. 이 경우, 분할 타입 지시 정보 {3, 3, 2, 1, 3, 3, 0, 0, 1, 0, 0, 0, 0, 3, 3, 0, 0}가 부호화된다.
이때 분할 타입 지시 정보를 부호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화를 이용하여 이진 비트 스트링(Bit String)으로 부호화될 수 있다.
예를 들어, 이진 산술 부호화를 이용하는 경우, 각 분할 타입 지시 정보는 현재 부호화할 분할 타입 지시 정보의 레이어 번호에 따라 다른 이진값(Binary Value)을 이용할 수 있다. 레이어 번호가 이하인 경우에는 표 1을 이용하고 레이어 번호가 보다 큰 경우에는 표 2를 이용하여 부호화할 수 있다. 예를 들어 도 11의 서브블록(L1-P0)의 분할 타입 지시 정보 3은 표 1을 참고하면 이진수 '01'로 표현될 수 있으므로 이진수 '0'과 '1'을 각각 산술 부호화하여 분할 타입 지시 정보 3을 부호화할 수 있다. 그리고 서브블록(L2-P0)에 속하는 서브블록(L3-P2)의 분할 타입 지시 정보 0은 표 2를 참고하면 이진수 '1'로 표현될 수 있으므로 이진수 '1'을 산술 부호화하여 분할 타입 지시 정보 3을 부호화할 수 있다.
분할 타입 지시 정보 | 이진 스트링 | |
0 | 0 | 0 |
1 | 1 | 1 |
2 | 1 | 0 |
3 | 0 | 1 |
분할 타입 지시 정보 | 이진 스트링 | ||
0 | 1 | ||
1 | 0 | 0 | |
2 | 0 | 1 | 1 |
3 | 0 | 1 | 0 |
또한, 실제 분할 타입 지시 정보 값을 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 부호화할 수 있다.
또한 도 34에 도시된 본 발명의 다른 실시예에 따른 분할 타입을 사용하여 매크로블록을 분할하는 경우, 분할 타입 지시 정보는 현재 블록을 4개의 서브블록으로 분할하는지 하지 않는지의 여부를 나타내는 1 비트 길이의 플래그일 수도 있다.
B-1-4-2) 분할정보 부호화 방법 2
매크로블록의 레이어별 분할 타입을 이용하여 블록의 분할 정보를 부호화하는 다른 예로, 분할 정보 부호화기(810)는 트리 구조를 이용하여 블록의 분할 정보를 부호화할 수 있다. 즉, 분할 정보 부호화기(810)는 레이어 번호를 트리 구조를 이용하여 먼저 부호화하고 분할 타입 지시 정보를 부호화함으로써 블록의 분할 정보를 부호화할 수 있다.
이하에서는 도 14 내지 도 18을 통해 트리 구조를 이용하여 블록의 분할 정보를 부호화하는 두번째 방법에 대해 설명한다.
도 14는 본 발명의 다른 실시예에 따라 트리 구조를 이용하여 블록의 분할 정보를 부호화하는 방법을 설명하기 위한 예시도이다.
14A는 매크로블록의 각 서브블록의 레이어 번호를 레벨별로 나타낸 것이고, 14B는 레벨별 각 서브블록의 레이어 번호를 트리 구조의 형식으로 나타낸 것이다.
14A에서 매크로블록은 크기는 NxN 블록 크기이고 도 10에 도시된 분할 타입을 이용하여 매크로블록을 서브블록으로 분할하며, 매크로블록은 Nx(N/2) 블록 크기의 서브블록으로 분할된 경우를 예를 들어 나타내었다. NxN 블록 크기의 매크로블록은 레이어 0에서, 두 개의 Nx(N/2) 블록 크기의 서브블록으로 분할되었으므로 L0-P0 서브블록의 분할 타입 지시 정보는 1이다. 여기서, 각 Nx(N/2) 블록 크기의 서브블록은 모두 레이어 0에 속하므로, 트리의 레벨 1의 두 서브블록의 레이어 번호의 최소값은 0이다. 따라서, 트리의 레벨 0의 레이어 번호는 0이 된다. 한편, 도 14 내지 도 18에서 '01', '1', '001'과 같이 '' 내에 표시되는 숫자는 이진 비트를 나타낸다.
14A에 나타낸 레벨별 각 서브블록의 레이어 번호를 트리의 형식으로 나타내면 14B와 같이 나타낼 수 있다.
상위 노드의 레이어 번호와 부호화하고자 하는 현재 노드의 레이어 번호간의 차이값만큼 '0(1bit)'를 부호화한 후 마지막으로 '1'을 부호화한다. 예를 들어 상위 노드의 레이어 번호와 현재 노드의 레이어 번호 간의 차이값이 3인 경우 이진수 '001'을 부호화하고 차이값이 0인 경우 이진수 '1'을 부호화한다. 레벨 0의 상위 노드는 없으므로 상위 노드의 레이어 번호를 0으로 가정한다. 따라서, 14B에서 레벨 0의 레이어 번호 0과 가정된 상위 노드의 레이어 번호 0과의 차이값은 0이므로 레벨 0의 레이어 번호 0의 이진 비트는 '1'이 된다.
레벨 1의 레이어 번호와 레벨 0의 레이어 번호가 동일하므로 더 이상 레이어 번호를 부호화하지 않아도 되며, 레벨 1의 분할 타입 지시 정보 1을 부호화한다.
분할 타입 지시 정보는 전술한 바와 같이 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화를 이용하여 이진 비트 스트링(Bit String)으로 부호화될 수 있다.
또한, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 부호화할 수 있다.
또한 레이어 번호에 따라 다른 이진값(Binary Value)을 이용할 수 있다.
또한 도 34에 도시된 본 발명의 다른 실시예에 따른 분할 타입을 사용하여 매크로블록을 분할하는 경우, 분할 타입 지시 정보는 현재 블록을 4개의 서브블록으로 분할하는지 하지 않는지의 여부를 나타내는 1 비트 길이의 플래그일 수도 있다.
위의 예에서 분할 타입 지시 정보 1은 전술한 바와 같이 분할 타입 지시 정보값을 이진 비트로 표현될 수 있는데 예를 들면 분할 타입 지시 정보값 0, 1, 2, 3은 종류가 4가지 이므로 2 비트를 할당하여 '00', '01', '10', '11'로 나타낼 수 있고 이 경우 분할 타입 지시 정보 1은 '01'로 표현될 수 있다.
따라서, 최종적으로 14A에 나타낸 매크로블록의 분할 정보를 트리 구조를 이용하여 부호화하는 경우 부호화할 데이터는 '101'이 된다.
도 15 및 도 16은 본 발명의 다른 실시예에 따라 트리 구조를 이용하여 블록의 분할 정보를 부호화하는 방법의 일 예를 설명하기 위한 예시도이다.
도 15에서는 NxN 블록 크기의 매크로블록이 두 개의 (N/2)x(N/4) 블록 크기의 서브블록, 한 개의 (N/2)x(N/2) 블록 크기의 서브블록, 두 개의 (N/4)x(N/2) 블록 크기의 서브블록, 네 개의 (N/4)x(N/4) 블록 크기의 서브블록으로 분할된 경우, 블록의 분할 정보를 트리 구조를 이용하여 부호화하기 위해 레벨별 각 서브블록의 레이어 번호를 결정하는 과정을 예시적으로 나타내었다.
먼저, NxN 블록 크기의 매크로블록으로 레벨 2를 구성하고, 레벨 2의 매크로블록 내 첫 번째 (N/2)x(N/2) 블록 크기의 서브블록에 속하는 두 개의 서브블록의 레이어 번호의 최소값, 두 번째 (N/2)x(N/2) 블록 크기의 서브블록에 속하는 하나의 서브블록의 레이어 번호의 최소값, 세번째 (N/2)x(N/2)블록 크기의 서브블록에 속하는 두 개의 서브블록의 레이어 번호의 최소값, 네 번째 (N/2)x(N/2) 블록 크기의 서브블록에 속하는 4 개의 서브블록의 레이어 번호의 최소값을 모아 레벨 1을 구성한다. 다시 레벨 1 매크로블록 내의 네 개의 서브블록들의 레이어 번호의 최소값을 모아 레벨 0을 구성한다.
도 16에서는 도 15에서 구성된 레벨별 레이어 번호에 따라 트리를 구성하여 레이어 번호와 분할 타입을 부호화하는 과정을 나타내었다.
레벨 0의 부호화할 레이어 번호는 1이고, 레벨 0의 상위 노드는 없으므로 상위 노드의 레이어 번호를 '0'이라고 가정하면, 상위 노드의 레이어 번호와 레벨 0의 레이어 번호의 차이값은 1이므로 레벨 0의 레이어 번호의 이진 비트는 '01'이 된다. 레벨 1의 부호화할 레이어 번호는 각각 1, 1, 1, 1이고 상위 노드(레벨 0)의 레이어 번호는 1이므로 레이어 번호의 차이값은 0이므로 각 레이어 번호의 이진 비트는 '1', '1', '1', '1'이 된다. 레벨 2의 부호화할 레이어 번호는 모두 레이어 1에 속하므로, 더 이상의 레이어 번호는 부호화하지 않아도 된다. 따라서, 분할 타입 지시 정보 1, 0, 2, 3을 부호화한다. 분할 타입 지시 정보는 전술한 바와 같이 레이어 번호에 따라 다른 표를 이용하여 이진 산술 부호화되거나 호프만 부호화되므로, 분할 타입 지시 정보 1, 0, 2, 3의 이진 비트는 각각 예를 들어 '00', '11', '10', '01'과 같이 될 수 있다. 따라서, 최종적으로 부호화할 레이어 번호와 분할 타입 지시 정보는 '01'→'1'→'1'→'1'→'1'→'00'→'11'→'10'→'01'이 되어 '01111100111001'이 부호화되어 부호화된 분할 정보 데이터가 된다.
도 17 및 도 18은 본 발명의 다른 실시예에 따라 트리 구조를 이용하여 블록의 분할 정보를 부호화하는 방법의 다른 예를 설명하기 위한 예시도이다.
도 17에서는 NxN 블록 크기의 매크로블록이 두 개의 (N/2)x(N/4) 블록 크기의 서브블록, 한 개의 (N/2)x(N/2) 블록 크기의 서브블록, 두 개의 (N/4)x(N/2) 블록 크기의 서브블록, 두 개의 (N/32)x(N/16) 블록 크기의 서브블록, 네 개의 (N/32)x(N/32) 블록 크기의 서브블록, 6 개의 (N/16)x(N/16) 블록 크기의 서브블록, 2 개의 (N/4)x(N/4) 블록 크기의 서브블록으로 분할된 경우를 예시적으로 나타내었다. 매크로블록의 네 번째 (N/2)x(N/2) 블록 크기의 서브블록이 4 개의 (N/4)x(N/4) 블록 크기의 서브블록으로 분할되고, 다시 4 개의 (N/4)x(N/4) 블록 크기의 서브블록 중 첫 번째와 두 번째의 (N/4)x(N/4) 블록 크기의 서브블록이 각각 4 개의 (N/16)x(N/16) 블록 크기의 서브블록으로 분할되며, 다시 그 중 첫 번째 (N/4)x(N/4) 블록 크기의 서브블록이 분할된 (N/16)x(N/16) 블록 크기의 서브블록 중 첫 번째와 두 번째 (N/16)x(N/16) 블록 크기의 서브블록이 더 작은 블록으로 분할되었으므로 레이어 번호 2와 3이 도시된 바와 같이 부여되었다.
도 17에 도시된 매크로블록을 도 15를 통해 전술한 방법과 동일한 방법으로 레벨 별 레이어 번호에 따른 트리를 구성하면 도 18과 같이 도시할 수 있다.
도 18에서는 도 17에서 구성된 레벨 별 레이어 번호에 따라 트리를 구성하여 레이어 번호와 분할 타입을 부호화하는 과정을 나타내었다.
도 16을 통해 전술한 방법과 동일한 방법으로 레이어 번호와 분할 타입 지시 정보를 부호화하면 최종적으로 부호화할 데이터는 '01111010111100111010011111011111'이 된다.
B-1-4-3) 분할정보 부호화 방법 3
이하에서는 도 19와 도 20을 통해 블록의 분할 정보를 부호화하는 세번째 방법에 대해 설명한다.
세번째 방법에 따르면, 분할 정보 부호화기(810)는 분할 레이어값과 분할 플래그를 이용하여 블록의 분할 정보를 부호화할 수 있다. 즉, 분할 정보 부호화기(810)는 분할 정보를 부호화할 블록의 블록 타입이 인트라 블록 타입인 경우에는 NxN, (N/2)x(N/2), (N/4)x(N/4) 등 정사각형 형태의 서브블록들만을 이용하여 매크로블록을 분할하고, 각 서브블록의 분할 레이어값과 분할 플래그를 부호화함으로써 블록의 분할 정보를 부호화할 수 있다. 이하에서는 도 19 및 도 20을 통해 분할 레이어값과 분할 플래그를 이용하여 블록의 분할 정보를 부호화하는 방법에 대해 설명한다.
도 19는 본 발명의 다른 실시예에 따른 분할 레이어값에 따라 분할되는 서브블록을 나타낸 예시도이다.
NxN 블록 크기의 매크로블록(단, N은 16 이상의 정수)을 분할 레이어값 0, 1, 2에 따라 분할하면 도 19에 나타낸 바와 같이 서브블록들의 크기와 개수가 결정될 수 있다. NxN 블록 크기의 매크로블록을 분할 레이어값 0으로 분할하면 한 개의 NxN 블록 크기의 서브블록만으로 분할되고, 분할 레이어값 1로 분할하면 네 개의 (N/2)x(N/2) 블록 크기의 서브블록으로 분할되며, 분할 레이어값 2로 분할하면 8 개의 (N/4)x(N/4) 블록 크기의 서브블록으로 분할될 수 있다.
따라서, 임의의 블록의 분할 레이어값을 x라고 가정할 때, 해당 블록의 서브블록의 블록 크기는 가 될 수 있다. 예를 들어, 분할 레이어값이 3인 경우, 64x64 블록 크기의 매크로블록은 8x8 블록 크기의 서브블록들로 분할된다. 또한, 8x8 블록 크기의 서브블록의 분할 레이어값이 1인 경우, 8x8 블록 크기의 서브블록은 4x4 블록 크기의 서브블록들로 분할된다.
예를들어 NxN블록이 서브블록으로 분할되었고 NxN블록 내 모든 서브블록이 더 작은 서브블록으로 분할되지 않았을 경우 분할 플래그는 NxN블록내 모든 서브블록은 더 작은 서브블록으로 분할되지 않았음을 나타내는 값(예컨대 0)을 가진다.
만약 NxN블록이 서브블록으로 분할되었고 NxN블록내 하나 이상의 서브블록이 더 작은 서브블록으로 분할되었을 경우, 분할 플래그를 NxN블록내 모든 서브블록은 더 작은 서브블록으로 분할되었음을 나타내는 값(예컨대 1)을 가진다.
분할 플래그가 더 작은 서브블록으로 분할되었음을 나타내는 값인 경우 NxN블록 내 모든 서브블록에 대해서 분할 레이어값과 분할 플래그를 부호화하여 각 블록의 서브블록 타입을 영상 복호화 장치에 전송한다.
단, 분할 레이어값에 의해 분할된 서브브록의 크기가 최소 블록의 크기인 경우 (즉, 더 작은 서브블록으로 분할할 수 없는 경우), 분할 플래그는 부호화하지 않는다.
상기 전술한 분할 레이어 값과 분할 플래그는 비트스트림에 포함되어 부호화되어 영상 복호화 장치로 전송하는데 분할 레이어값을 부호화하는 방법은 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 전송할 매크로블록 크기를 부호화할 수 있다.
또는 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 방법을 이용하여 부호화할 수도 있다.
또는 영상 부호화 장치와 영상 복호화 장치가 약속한 Table의 인덱스 값을 전술한 다양한 이진 부호화 방법을 이용하여 부호화할 수도 있다.
분할 플래그는 블록이 분할되지 않음 또는 분할됨을 나타내는 1비트를 이용하여 비트스트림에 포함될 수 있다.
도 20은 본 발명의 다른 실시예에 따라 블록의 분할 정보를 분할 레이어값과 분할 플래그를 이용하여 부호화하는 과정을 나타낸 예시도이다.
도 20에서는 매크로블록의 블록 크기가 64x64이고 최대 분할 레이어값이 4인 경우, 분할 레이어값과 분할 플래그를 이용하여 블록의 분할 정보를 부호화하는 예를 나타내었다.
매크로블록이 도시한 바와 같이 분할된 경우, 각 서브블록을 식별하기 위한 레이어별 파티션 번호마다 각 서브블록의 분할 레이어값과 분할 플래그를 도시한 표와 같이 생성하고, L0-P0로부터 L1-P3까지 순차적으로 분할 레이어값과 분할 플래그를 부호화한다. 64x64 블록 크기를 가지는 L0-P0 서브블록은 4 개의 32x32 블록 크기의 서브블록으로 분할되므로, 분할 레이어값은 1이 된다. 각 32x32블록은 더 작은 서브블록으로 분할되었음을 나타내는 값으로 분할 플래그를 설정하고 분할 레이어 값과 분할 플래그를 부호화한다.
32x32 블록 크기의 L1-P0 서브블록은 하위의 서브블록으로 분할되지 않으므로 분할 레이어값은 0이고 분할 플래그는 부호화하지 않아도 된다. 32x32 블록 크기의 L1-P1 서브블록은 16 개의 8x8 블록 크기의 서브 블록들로 분할되므로, 분할 레이어값은 2가 되고, 8x8 블록 크기의 서브블록들이 더 이상 분할되지 않으므로 분할 플래그는 분할하지 않음을 나타내는 0으로 부호화한다. 이때, L1-P1 서브블록의 하위 블록인 L2-P0 내지 L2-P15에 대한 분할 타입은 별도로 부호화하지 않아도 분할 레이어값과 분할 플래그만을 부호화하여 각 서브블록들의 크기와 형태를 영상 복호화 장치에서 식별할 수 있다. 32x32 블록 크기의 L1-P2 서브블록은 4 개의 16x16 블록 크기의 서브블록으로 분할되므로 분할 레이어값은 1이 되고, 더 작은 하위 블록으로 분할되는 서브블록이 있으므로 분할 플래그를 분할함을 나타내는 1로 부호화한다. L1-P2 서브블록의 분할 플래그를 1로 나타내어 더 작은 서브블록으로 분할됨을 나타내었으므로 분할된 각 서브블록 L2-P0 내지 L2-P3에 대한 분할 타입을 부호화해야 한다. 따라서, L2-P0, L2-P1, L2-P2 서브블록의 분할 레이어값 0과 분할 레이어값이 0이므로 분할 플래그는 필요하지 않다. L2-P3 서브블록은 4x4 블록 크기의 서브블록으로 분할되고 분할된 서브블록들은 더 작은 하위 블록으로 분할되지 않므로, 분할 레이어값 2와 분할되지 않음을 나타내는 분할 플래그 0을 부호화해야 하지만, 최대 분할 레이어값이 4이고 L1-P1에서의 분할 레이값이 2이고 L2-P3에서의 분할 레이어값이 2이어서 총 합계의 분할 레이어값이 최대 분할 레이어값과 동일하므로 더 이상 분할될 수 없음을 알 수 있으므로, 분할 플래그를 부호화하지 않아도 된다. 마지막으로 32x32 블록 크기의 L1-P3 서브블록은 4x4 블록 크기를 가지는 64 개의 서브블록들로 분할되므로, 분할 레이어값은 3이고 L2-P3에서와 마찬가지로 최대 분할 레이어값에 도달하여 더 이상 분할될 수 없음을 알 수 있으므로 분할 플래그를 부호화하지 않아도 된다.
이와 같은 방식으로 매크로블록의 각 서브블록을 식별하기 위한 레이어별 파티션 번호에 대해 분할 레이어값과 분할 플래그를 부호화함으로써, 블록의 분할 정보를 부호화할 수 있다.
한편, 도 11 내지 도 13을 통해, 매크로블록의 레이어별 분할 타입 지시 정보를 서브블록의 순서에 따라 순차적으로 부호화함으로써 블록의 분할 정보를 부호화하여 부호화된 분할 정보 데이터를 생성하는 방법에 대해 설명했지만, 서브블록이 반드시 도 11 내지 도 13에 도시한 바와 같이 분할되어야 하는 것은 아니며, 도 21과 같이 매크로블록이 분할된 경우에도 매크로블록의 레이어별 분할 타입 지시 정보를 서브블록의 순서에 따라 순차적으로 부호화함으로써 블록의 분할 정보를 부호화할 수 있다.
B-1-4-4) 분할정보 부호화 방법 4
이하에서는 도 21과 도 22를 통해 블록의 분할 정보를 부호화하는 네번째 방법에 대해 설명한다.
도 21은 본 발명의 다른 실시예에 따라 다양한 블록 크기의 서브블록으로 분할된 매크로블록의 다른 예를 나타낸 예시도이다.
한편, 도 9에서는 레이어 K(단, 0≤K≤log2(N/4))에서 해당 레이어의 서브블록이 4 개의 서브블록으로 분할된 경우에만 레이어 K+1의 서브블록들을 이용할 수 있는 것으로 설명했지만, 도 21에서는 레이어 K에서 해당 레이어의 서브블록이 적어도 하나 이상의 서브블록으로 분할된 경우(즉, 분할 타입 지시 정보가 1, 2 또는 3인 경우), 레이어 K+1의 서브블록들을 이용할 수 있다.
도 21에서는 64x64 블록 크기의 매크로블록이 도시한 바와 같이 2 개의 64x16 블록 크기의 서브블록과 2 개의 32x32 블록 크기의 매크로블록으로 분할된 경우의 예를 나타내었다. '□' 안에 기재된 숫자는 각 서브블록의 분할 타입 지시 정보를 부호화하는 순서를 나타낸다. 매크로블록의 레이어별 분할 타입 지시 정보를 서브블록의 순서에 따라 순차적으로 부호화하면, 도 11에 도시한 순서에 따라 레이어별 분할 타입 지시 정보를 순차적으로 부호화한다.
도 22는 매크로블록의 레이어별 분할 타입 지시 정보를 서브블록의 순서에 따라 순차적으로 부호화하는 과정을 설명하기 위한 다른 예시도이다.
도 21에 도시한 매크로블록의 각 서브블록의 분할 타입에 대한 정보를 부호화하면 도 22와 같이 부호화할 수 있다. 매크로블록의 레이어별 분할 타입 지시 정보를 서브블록의 순서에 따라 순차적으로 부호화하면, 도 11에 도시한 순서에 따라 레이어별 분할 타입 지시 정보를 순차적으로 부호화한다.
이때 분할 타입 지시 정보는 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화를 이용하여 이진 비트 스트링(Bit String)으로 부호화될 수 있다.
또는, 실제 분할 타입 지시 정보 값을 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 부호화할 수 있다.
또한 도 34에 도시된 본 발명의 다른 실시예에 따른 분할 타입을 사용하여 매크로블록을 분할하는 경우, 분할 타입 지시 정보는 현재 블록을 4개의 서브블록으로 분할하는지 하지 않는지의 여부를 나타내는 1 비트 길이의 플래그일 수도 있다.
B-1-5) 부호화 순서도 설명
도 23은 본 발명의 다른 실시예에 따른 영상 부호화 방법을 설명하기 위한 순서도이다.
본 발명의 다른 실시예에 따른 영상 부호화 방법에 따르면, 영상 부호화 장치(800)는 복수 개의 서브블록으로 분할되는 현재 블록을 예측 부호화하여 부호화된 영상 데이터를 생성하고(S2310), 현재 블록의 분할 정보를 부호화하여 부호화된 분할 정보 데이터를 생성하며(S2320), 부호화된 영상 데이터 및 부호화된 분할 정보 데이터를 포함하는 비트스트림을 생성한다(S2330).
여기서, 현재 블록은 16x16 블록 크기를 초과하는 매크로블록일 수 있으며, 분할 정보는 현재 블록 내에 포함되는 복수 개의 서브블록의 블록 크기와 배치일 수 있다.
복수 개의 서브블록은 분할 레이어별 분할 타입 지시 정보에 의해 식별될 수 있는데, 이 경우 단계 S2320에서, 영상 부호화 장치(800)는 분할 레이어별 분할 타입 지시 정보를 분할 타입 지시 정보 부호화 순서에 따라 순차적으로 부호화함으로써 현재 블록의 분할 정보를 부호화하거나, 트리 구조를 이용하여 레이어 번호와 분할 타입 지시 정보를 부호화함으로써 현재 블록의 분할 정보를 부호화할 수 있다.
또한, 영상 부호화 장치(800)는 분할 레이어값과 분할 플래그를 이용하여 현재 블록의 분할 정보를 부호화할 수 있는데, 현재 블록의 블록 타입이 인트라 블록 타입인 경우에만 분할 레이어값과 분할 플래그를 이용하여 현재 블록의 분할 정보를 부호화할 수 있다. 영상 부호화 장치(800)가 현재 블록의 분할 정보를 부호화하는 방법에 대해서는 도 8 내지 도 22를 통해 전술하였으므로 상세한 설명은 생략한다.
B-2) 실시예 2의 영상 복호화 장치
B-2-1) 복호화 장치 블록도 및 설명
도 24는 본 발명의 다른 실시예에 따른 영상 복호화 장치를 간략하게 나타낸 블록 구성도이다.
본 발명의 다른 실시예에 따른 영상 복호화 장치(2400)는 분할 정보 복호화기(2410) 및 영상 복호화기(2420)를 포함하여 구성될 수 있다.
분할 정보 복호화기(Partition Information Decoder, 2410)는 비트스트림으로부터 부호화된 분할 정보 데이터를 추출하고 복호화하여 현재 블록의 분할 정보를 복원한다. 여기서, 현재 블록의 분할 정보는 분할 레이어별 분할 타입 지시 정보이거나, 트리 구조를 이용한 레이어 번호와 분할 타입 지시 정보이거나, 분할 레이어값과 분할 플래그일 수 있다. 현재 블록의 분할 정보가 분할 타입 지시 정보 부호화 순서에 따른 분할 레이어별 분할 타입 지시 정보인 경우, 분할 정보 복호화기(2410)는 부호화된 분할 정보 데이터를 복호화하여 도 13에 도시한 표와 같은 분할 레이어별 분할 타입 지시 정보를 얻을 수 있으며, 도 13에 도시한 표와 같은 분할 타입 지시 정보 부호화 순서로 분할 레이어별로 분할 타입 지시 정보에 따라 현재 블록을 복수 개의 서브블록으로 분할하여 도 11과 같은 복수 개의 서브블록으로 분할된 현재 블록을 얻을 수 있다.
현재 블록의 분할 정보가 트리 구조를 이용한 레이어 번호와 분할 타입 지시 정보인 경우, 분할 정보 복호화기(2410)는 부호화된 분할 정보 데이터를 복호화하여 도 16에 도시한 바와 같이 트리 구조로 표현된 레이어 번호와 분할 타입 지시 정보를 얻을 수 있으며, 도 16에 도시한 트리 구조로 표현된 레이어 번호와 분할 타입 지시 정보를 이용하여 도 15 및 도 16을 통해 전술한 방법을 역으로 수행하여 도 15에 도시한 바와 같은 복수 개의 서브블록으로 분할된 현재 블록을 얻을 수 있다.
현재 블록의 분할 정보가 분할 레이어값과 분할 플래그인 경우, 분할 정보 복호화기(2410)는 부호화된 분할 정보 데이터를 복호화하여 도 20에 도시한 표와 같은 분할 레이어값과 분할 플래그를 얻을 수 있으며, 도 20을 통해 전술한 방법을 역으로 수행하여 도 20에 도시한 바와 같은 복수 개의 서브블록으로 분할된 현재 블록을 얻을 수 있다.
영상 복호화기(2420)는 도 7을 통해 전술한 본 발명의 일 실시예에 따른 영상 복호화 장치와 동일 또는 유사하게 구성될 수 있다. 다만, 본 발명의 다른 실시예에 따른 영상 복호화기(2420)는 분할 정보 복호화기(2410)에 의해 복원되는 현재 블록의 분할 정보에 따라 분할된 서브블록들의 부호화된 영상 데이터를 추출하여 복호화한 후 각 서브블록들을 예측 복호화하여 복원한다. 이때 영상 복호화기(2420)가 비트스트림으로부터 추출하는 영상 데이터는 각 서브블록들의 예측 데이터 및/또는 변환타입, CBP, 변환계수와 같은 잔여 신호 복호화에 필요한 데이터일 수 있으며 여기서 예측 데이터는 각 서브블록이 인트라 블록인지 인터 블록인지를 나타내는 데이터와 인트라 블록에 대해서는 인트라 예측 모드, 인터 블록에 대해서는 움직임 정보를 나타낸다.
B-2-2) 분할정보 복호화 방법
이하에서는, 매크로블록 내 예측 또는 변환을 위해 사용된 서브블록들의 크기와 모양을 나타내는 정보인 분할 정보를 복호화하는 본 발명의 실시예에 따른 다양한 방법들을 설명한다.
B-2-2-1) 분할정보 복호화 방법 1
먼저 분할 정보를 부호화하는 첫번째 방법에 따른 복호화 방법을 설명한다.
영상 부호화 장치와 약속된 레이어별 사용 가능한 서브블록 타입을 이용하여 분할 타입 지시 정보를 영상 부호화 장치와 약속된 순서로 복호화를 수행한다. 예를 들어 레이어별 사용 가능한 서브블록 타입은 도 10과 도 34에 도시된 서브블록 타입일 수 있으며 분할 타입 지시 정보를 복호화하는 순서는 도 11 또는 도 13에 도시된 순서에 따라 순차적으로 복호화할 수 있다.
이하에서는 첫번째 분할 정보 부호화방법에 설명을 위해 사용한 예시와 동일한 조건에서의 복호화 방법을 설명하도록 한다. 도 10에 도시한 서브블록 타입을 이용하여 도 11에 도시된 순서를 이용하여 분할 정보를 복호화한다.
분할 정보 복호화기(Partition Information Decoder, 2410)는 비트스트림으로부터 첫번째 분할 타입 지시 정보를 추출하고 복호화하여 매크로블록 레이어 0의 분할 타입 지시 정보를 복원한다. 복원한 분할 타입 지시 정보값이 0인 경우 매크로블록은 서브블록으로 분할되지 않았음을 의미하므로 현재 매크로블록의 분할 타입 지시 정보 복호화를 끝낸다. 이후 매크로블록 NxN 크기로 예측 또는 역변환이 수행된다.
복원한 레이어 0의 분할 타입 지시 정보가 1인 경우 매크로블록을 두 개의 서브블록으로 분할하고 현재 매크로블록의 분할 타입 지시 정보 복호화를 마친다. 이후 매크로블록은 단위로 예측 또는 역변환이 수행된다.
복원한 레이어 0의 분할 타입 지시 정보값이 2인 경우 매크로블록을 두 개의 서브블록으로 분할하고 현재 매크로블록의 분할 타입 지시 정보 복호화를 마친다. 이후 매크로블록은 단위로 예측 또는 역변환이 수행된다.
복원한 레이어 0의 분할 타입 지시 정보값이 3인 경우 매크로블록을 네 개의 서브블록으로 첫번째 서브블록 (레이어 1의 파티션 번호 0인 서브블록)의 분할 타입 지시 정보를 복호화한다. 여기서 서브블록들의 레이어 번호는 상위 레이어 번호에서 1이 증가한 값으로 1이 된다.
비트스트림으로부터 추출하여 복호화한 레이어 1의 파티션 번호 0인 서브블록의 분할 타입 지시 정보가 3이 아닌 경우 매크로블록내 두번째 서브블록(레이어 1의 파티션 번호 1인 블록)의 분할 타입 지시 정보를 복호화한다.
비트스트림으로부터 추출하여 복호화한 레이어 1의 파티션 번호 0인 서브블록의 분할 타입 지시 정보가 3인 경우, 현재 서브블록은 4개의 서브블록으로 나뉘어지며 이때의 레이어 번호는 2가 된다. 이후 레어어 2의 파티션 번호 0에 해당하는 서브블록의 분할 타입 지시 정보를 비트스트림으로부터 추출하여 복호화한다.
만약 파티션 번호가 Y인 현재 서브블록의 레이어 번호 K가 레이어 번호가 가질 수 있는 최대값인 경우, 복호화 한 현재 서브블록(즉, 레이어 K-파티션 번호 Y)의 분할 타입 지시 정보가 3이면 현재 서브블록을 4개의 서브블록으로 분할한 후 래스터 스캔 순서로 다음 서브블록(레이어 K-파티션 번호 Y+1 인 서브블록)의 분할 타입 지시 정보를 복호화한다.
만약 현재 서브블록의 파티션 번호가 현재 레이어에 속하는 파티션 번호의 최대값인 경우, 상위 레이어의 아직 복호화하지 않은 서브블록들의 분할 타입 지시 정보를 복호화한다.
이하에서는 매크로블록의 크기가 64x64, 최대 분할 레이어가 4인 경우, 도 11의 실시예에 따른 복호화 방법을 설명한다. 도 11의 실시예에서 영상 부호화 장치에서 분할 타입 지시 정보로 부호화한 값은 {3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 2, 1, 3, 0, 0, 0, 0}이다.
먼저 레이어 0의 분할 타입 지시 정보를 복호화한다.
복호화한 분할 타입 지시 정보가 3이므로 64x64 매크로블록을 4개의 32x32블록(L1-P0, L1-P1, L1-P2, L1-P3)으로 분할한다.
각 32x32 서브블록은 더 작은 서브블록으로 분할될 수 있으므로 64x64 매크로블록 내 첫번째 32x32 서브블록 (L1-P0)의 분할 타입 지시 정보를 복호화한다.
두번째로 복호화한 분할 타입 지시 정보가 3이므로 L1-P0 서브블록을 4개의 16x16서브블록(L2-P0, L2-P1, L2-P2, L2-P3)으로 분할하고 L2-P0의 분할 타입 지시 정보를 비트스트림으로부터 추출하여 복호화한다.
세번째로 복호화한 분할 지시 정보가 3이므로 16x16크기의 L2-P0 서브블록을 4개의 8x8 서브블록 (L3-P0, L3-P1, L3-P2, L3-P3)으로 분할하고 L3-P0의 분할 타입 지시 정보를 비트스트림으로부터 추출하여 복호화한다.
네번째로 복호화한 분할 지시 정보가 3이므로 8x8크기의 L3-P0 서브블록을 4개의 4x4 서브블록으로 분할한다. 여기서 4x4 서브블록의 최대 분할 레이어가 4이므로 더 이상 작은 서브블록으로 분할될 수 없으므로 L3-P1의 분할 타입 지시 정보를 비트스트림으로부터 추출하여 복호화한다.
다섯번째로 복호화한 분할 지시 정보가 3이므로 8x8크기의 L3-P1 서브블록을 4개의 4x4 서브블록으로 분할하고 L3-P2의 분할 타입 지시 정보를 비트스트림으로부터 추출하여 복호화한다.
여섯번째로 복호화한 분할 지시 정보가 0이므로 8x8크기의 L3-P2 서브블록은 분할하지 않으며 다음 서브블록인 L3-P3의 분할 타입 지시 정보를 비트스트림으로부터 추출하여 복호화한다.
일곱번째로 복호화한 분할 지시 정보가 0이므로 8x8크기의 L3-P3 서브블록도 분할하지 않는다. 여기서 현재 서브블록의 파티션 번호가 현재 레이어어 속하는 파티션 번호의 최대값이므로 상위 레이어 L2-P1의 분할 타입 지시 정보를 비트스트림으로부터 추출하여 복호화한다.
여덟번째로 복호화한 분할 지시 정보가 0이므로 L2-P1의 블록크기는 16x16이된다.
동일한 방식으로 L2-P2와 L2-P3의 분할 타입 지시 정보를 비트스트림으로부터 추출하여 복호화하여 각각의 서브블록 타입을 결정한다.
여덟번째로 복호화한 분할 지시 정보도 0이므로 L2-P2의 블록크기는 16x16이고 열번째로 복호화한 분할 지시 정보는 1이므로 L2-P3는 두개의 16x8 서브블록으로 분할한다.
레이어 2에 속하는 서브블록들의 분할 지시 정보를 모두 복호화했으므로 상위 레이어인 레이어 1의 두번째 32x32 크기의 서브블록 L1-P1의 분할 타입 지시 정보를 복호화한다.
열한번째로 복호화한 분할 지시 정보는 2이므로 L1-P1에 해당하는 32x32블록을 두개의 16x32 서브블록으로 분할하고 L1-P2의 분할 타입 지시 정보를 복호화한다.
열두번째로 복호화한 분할 지시 정보는 1이므로 L1-P2에 해당하는 32x32블록을 두개의 32x16 서브블록으로 분할하고 L1-P3의 분할 타입 지시 정보를 복호화한다.
열세번째로 복호화한 분할 지시 정보는 3이므로 L1-P3에 해당하는 32x32블록을 네개의 16x16서브블록(L2-P0, L2-P1, L2-P2, L2-P3)으로 분할하고 동일한 방법으로 각 서브블록들의 분할 타입 지시 정보를 복호화한다.
열네번째로 복호화한 분할 지시 정보는 0이므로 L2-P0의 서브블록 타입은 16x16이며 더 이상 분할되지 않았으므로 다음 서브블록인 L2-P1이 분할 타입 지시 정보를 복호화한다.
열다섯번째로 복호화한 분할 지시 정보는 0이므로 L2-P1의 서브블록 타입은 16x16이며 더 이상 분할되지 않았으므로 다음 서브블록인 L2-P2이 분할 타입 지시 정보를 복호화한다.
열여섯번째로 복호화한 분할 지시 정보는 0이므로 L2-P2의 서브블록 타입은 16x16이며 더 이상 분할되지 않았으므로 다음 서브블록인 L2-P3이 분할 타입 지시 정보를 복호화한다.
열일곱번째로 복호화한 분할 지시 정보는 0이므로 L2-P3의 서브블록 타입은 16x16이며 매크로블록 내 모드 서브블록들의 타입이 결정되었으므로 현재 매크로블록 복호화를 위한 분할 지시 정보 복호화를 마친다.
이하에서는 분할 타입 지시 정보 부호화 순서가 상위 레이어의 분할 타입 지시 정보를 모두 부호화하고 하위 레이어의 분할 지시 정보를 부호화할 때 분할 타입 지시 정보를 복호화하는 방법을 도 11의 실시예를 사용하여 설명하면 다음과 같다.
도 11의 실시예에서 영상 부호화 장치에서 분할 타입 지시 정보로 부호화한 값은 {3, 3, 2, 1, 3, 3, 0, 0, 1, 0, 0, 0, 0, 3, 3, 0, 0}이다.
먼저 레이어 0의 분할 타입 지시 정보를 복호화한다.
레이어 0의 분할 타입 지시 정보가 3이므로 64x64 매크로블록을 4개의 32x32블록(L1-P0, L1-P1, L1-P2, L1-P3)으로 분할한다.
레이어 1에 속하는 서브블록은 4개이므로 4개의 분할 타입 지시 정보를 복호화한다. 비트스트림으로부터 복원한 서브블록(L1-P0, L1-P1, L1-P2, L1-P3)의 분할 타입 지시 정보 {3, 2, 1, 3}이므로 L1-P0와 L1-P3은 4개의 16x16으로 분할하고, L1-P1은 두개의 16x32블록, L1-P2은 두개의 32x16 블록으로 분할한다.
L1-P0와 L1-P3에 속하는 레이어2의 8개의 8x8 서브블록들의 분할 타입 지시 정보를 비트스트림으로부터 추출하고 복호화한다.
복원한 L1-P0에 속하는 4개의 서브블록 (L2-P0, L2-P1, L2-P2, L2-P3)의 분할 타입 지시 정보가 {3, 0, 0, 1}이고 L1-P3에 속하는 4개의 서브블록 (L2-P0, L2-P1, L2-P2, L2-P3)의 분할 타입 지시 정보가 {0, 0, 0, 0}이므로 L1-P0에 속하는 L2-P0은 4개의 4x4 서브블록으로 분할하고, L2-P3은 두개의 8x4 서브블록으로 분할한다.
L1-P0에 속하는 L2-P1, L2-P2과 L1-P3에 속하는 4개의 서브블록들은 분할 타입 지시 정보가 모두 0이므로 분할하지 않는다.
L1-P0에 속하는 서브블록 L2-P0은 4개의 서브블록으로 분할되었지만 더 이상 작은 서브블록으로 분할될 수 없으므로 현재 매크로블록 복호화를 위한 분할 타입 지시 정보 복호화를 마친다.
이때 분할 타입 지시 정보를 엔트로피 복호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화/복호화 방법들 중 영상 부호화 장치와 약속된 방법을 이용해서 엔트로피 복호화한다.
또한, 실제 분할 타입 지시 정보 값을 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 복호화할 수 있다.
또한, 영상 부호화 장치에서 분할 타입 지시 정보 부호화 방법으로 이진 산술 부호화를 이용하고, 레이어 번호가 이하인 경우에는 표 1을 이용하고 레이어 번호가 보다 큰 경우에는 표 2를 이용하여 부호화한 경우 영상 복호화 장치는 분할 타입 지시 정보의 레이어 번호에 따라 표 1과 표 2를 이용하여 엔트로피 복호화를 수행한다.
예를들어 64x64 매크로블록에 대해서 레이어 1에 속하는 분할 타입 지시 정보를 엔트로피 복호화할 때 2비트를 엔트로피 복호화한 후 표 1을 이용하여 분할 타입 지시 정보를 얻는다.
64x64매크로블록에 대해서 레이어 3에 속하는 분할 타입 지시 정보를 엔트로피 복호화 할 때는 표2를 사용한다. 먼저 1비트를 엔트로피 복호화 한 후 복호화 한 이진 비트가 1인 경우 분할 타입 지시 정보를 0으로 설정하고 현재 서브블록의 분할 타입 지시 정보 엔트로피 복호화를 마친다. 만약 복호화 한 이진비트가 1이 아닌 경우, 비트스트림으로부터 1비트를 더 엔트로피 복호화하고 두번째로 복호화 한 비트가 0인 경우 현재 서브블록의 분할 타입 지시 정보를 1로 설정하고 현재 서브블록의 분할 타입 지시 정보를 위한 엔트로피 복호화를 마친다. 두번째로 복호화 한 비트가 1인 경우에는 비트스트림으로부터 1비트를 더 엔트로피 복호화하여 현재 서브블록의 분할 타입 지시 정보가 2인지 3인지를 표 2를 이용하여 판단한다.
또한 도 34에 도시된 본 발명의 다른 실시예에 따른 분할 타입을 사용하도록 영상 부호화 장치와 약속된 경우, 분할 타입 지시 정보 복호화를 위해 1비트를 엔트로피 복호화하여 현재 서브블록이 4개의 서브블록으로 분할되었는지의 여부를 판단할 수도 있다.
B-2-2-2) 분할정보 복호화 방법 2
이하에서는 분할 정보를 부호화하는 두번째 방법에 따른 복호화 방법을 설명한다.
두번째 방법에 따르면, 레이어 번호를 트리 구조를 이용하여 먼저 복호화하고 분할 타입 지시 정보를 복호화함으로써 블록의 분할 정보를 복호화할 수 있다.
레이어 번호를 복호화하는 방법은 비트스트림으로부터 이진 비트 0과 1을 복호화하여 현재 레벨의 레이어 번호와 상위 레벨의 레이어 번호의 차이값을 복원한다. 이때 차이값을 복원하기 위해 비트스트림으로부터 한 비트를 읽어들여 복호화하고 복호화한 이진 비트가 0인 경우 비트스트림으부터 한 비트를 더 읽어들여 복호화한다. 이와 같은 방식으로 이진 비트1이 복원될 때까지 이진 비트 0을 계속 복원하고 복원한 이진비트가 1인 경우 더 이상 비트를 읽어 들여 복호화하지 않으며 차이값은 복원된 0의 개수가 된다.
레벨 0의 레이어 번호를 복원을 시작하며 레이어 번호 복원을 위해서 비트스트림으로부터 전술한 방법을 이용하여 레벨 0의 레이어번호와 0과의 차이값을 복원한다. 복원한 레벨 0의 레이어 번호가 레벨의 숫자 0보다 크면 현재 노드에 자식 노드를 생성하여 트리를 구성한다. 새로 생성된 자식노드들의 개수는 영상 부호화 장치와 약속한 서브블록 분할 방식에 따라 달라지며, 도 9에 도시한 서브블록 분할 방식을 따르면 현재 서브블록이 4개의 서브블록으로 분할된 경우에만 하위 레이어에 속한 서브블록들을 사용할 수 있으므로 4개의 자식 노드들을 생성한다. 새로 생성된 노드들은 상위 노드의 레벨값보다 1이 증가된 레벨값을 가진다.
즉, 복원한 레벨 0의 레이어 번호가 레벨값 0보다 크면 레벨 1에 속하는 자식 노드 4개를 생성하여 트리를 구성한다.
이후 새로 생성된 각 노드들의 레이어 번호를 복원하기 위한 4개의 차이값을 비트스트림으로부터 추출하여 복원하고 각 차이값을 상위 노드의 레이어 번호와 더해서 각 노드들의 레이어 번호를 복원한다.
동일한 방식으로 각 노드의 복원한 레이어 번호와 노드의 레벨값이 같으면 해당 노드에 대해서 하위레벨에 속하는 자식노드를 구성하지 않으며, 반대로 노드의 복원한 레이어 번호가 노드의 레벨값보다 크면 해당 노드에 대해서는 4개의 자식 노드 4개를 생성하고 새로 구성된 노드들의 레이버 번호 복호화를 수행한다.
단, 복원한 레이이어 번호가 레이어 번호가 가질 수 있는 최대값인 경우 (즉, 레이어 번호는 0부터 시작할 때 레이어 번호가 가질 수 있는 최대값은 '최대분할 레이어값 -1'이다. 현재 노드에 대해서 자식 노드 4개를 생성하지만 각 노드들의 레이어 번호 복호화는 수행하지 않는다.
가장 하위의 노드들의 레이어 번호가 각 노드들의 레벨번호와 동일하거나 레이어 번호가 가질수 있는 최대값을 가질 때까지 트리를 구성하고 각 노드들의 레이어 번호 복원을 계속 수행한다.
이 후, 가장 하위 노드들에 대해서 분할 타입 지시 정보 복호화를 수행한다. 각 노드들의 분할 타입 지시 정보를 복호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화/복호화 방법들 중 영상 부호화 장치와 약속된 방법을 이용해서 엔트로피 복호화한다.
또한, 실제 분할 타입 지시 정보 값을 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 복호화할 수 있다.
또한, 영상 부호화 장치에서 분할 타입 지시 정보 부호화 방법으로 이진 산술 부호화를 이용하고, 레이어 번호가 이하인 경우에는 표 1을 이용하고 레이어 번호가 보다 큰 경우에는 표 2를 이용하여 부호화한 경우 영상 복호화 장치는 분할 타입 지시 정보의 레이어 번호에 따라 표 1과 표 2를 이용하여 엔트로피 복호화를 수행한다. 예를 들어 레이어 1에 속하는 분할 타입 지시 정보를 엔트로피 복호화할 때 2비트를 엔트로피 복호화한 후 표 1을 이용하여 분할 타입 지시 정보를 얻고 레이어 3에 속하는 분할 타입 지시 정보를 엔트로피 복호화할 때는 표2를 사용한다. 예를 들어, 먼저 1비트를 엔트로피 복호화한 후 복호화한 이진 비트가 1인 경우 분할 타입 지시 정보를 0으로 설정하고 현재 서브블록의 분할 타입 지시 정보 엔트로피 복호화를 마친다. 만약 복호화한 이진비트가 1이 아닌 경우, 비트스트림으로부터 1비트를 더 엔트로피 복호화하고 두번째로 복호화한 비트가 0인 경우 현재 서브블록의 분할 타입 지시 정보를 1로 설정하고 현재 서브블록의 분할 타입 지시 정보를 위한 엔트로피 복호화를 마친다. 두번째로 복호화한 비트가 1인 경우에는 비트스트림으로부터 1비트를 더 엔트로피 복호화하여 현재 서브블록의 분할 타입 지시 정보가 2인지 3인지를 표 2를 이용하여 판단한다.
또한 도 34에 도시된 본 발명의 다른 실시예에 따른 분할 타입을 사용하도록 영상 부호화 장치와 약속된 경우, 분할 타입 지시 정보 복호화를 위해 1비트를 엔트로피 복호화하여 현재 서브블록이 4개의 서브블록으로 분할되었는지의 여부를 판단할 수도 있다.
이하에서는 도 14의 실시예에 따른 복호화 방법을 설명한다. 도 14의 실시예에서 영상 부호화 장치에서 분할 정보로 부호화한 이진 비트값은 '101'이다.
먼저, 레벨 0의 레이어 번호를 복원하기 위해 1 비트를 비트스트림으로부터 추출하여 복원한다. 비트스트림으로부터 추출한 비트가 '1'이므로 레벨 0의 레이어 번호를 복원하기 위한 차이값은 0이 되며, 레벨 0인 경우 상위 노드가 존재하지 않으므로 영상 부호화 장치와 약속한 값 0과 복원한 차이값을 더해서 레벨 0의 레이어값을 복원한다. 이 경우 차이값이 0이므로 레벨 0의 복원한 레이어 값은 0이 된다.
복원한 레이어 값과 레벨값이 둘다 0이므로 레이어 번호 복호화 과정을 마치고 분할 타입 지시 정보를 복호화한다.
도 14의 실시예에서는 분할 타입 지시 정보를 부호화할 때 분할 타입 지시 정보값을 그대로 이진 비트로 표현하는 방법을 사용했으므로 영상 복호화 장치도 동일한 방법으로 비트스트림으로부터 2비트를 추출하여 값을 복원한다. 이진 비트 '01'을 정수로 표현하면 1이므로 복원한 분할 타입 지시 정보는 1이 된다.
복원한 레이어 값과 분할 타입 지시 정보를 이용하여 매크로블록의 서브 블록 모양을 판단하면 매크로블록내 모든 서브블록은 레이어 0에 속하므로 서브블록은 레이어 0에 속하는 서브블록 타입인 64x64, 64x32, 32x64, 32x32 중 한 가지이며 이중 분할 타입 지시 정보가 0이므로 매크로블록은 두개의 64x32 서브블록으로 분할되었음을 알 수 있다.
이하에서는 도 15 및 도 16의 실시예에 따른 복호화 방법을 설명한다. 도 16의 실시예에서 영상 부호화 장치에서 분할 정보로 부호화한 이진 비트값은 '01111100111001'이다.
먼저, 레벨 0의 레이어 번호를 복원하기 위해 1 비트를 비트스트림으로부터 추출하여 복원한다. 비트스트림으로부터 추출한 비트가 '0'이므로 비트스트림으로부터 한 비트를 더 추출하여 복원한다. 두번째로 복원한 비트는 1이므로 레벨 0의 레이어 번호를 위한 차이값 복원을 끝낸다. 차이값 복원을 위해 추출한 비트스트림은 '01'이므로 차이값은 0의 개수인 1이 되고 복원한 차이값을 0과 더한 값 1을 레벨 0의 레이어 번호로 할당한다.
복원한 레벨 0의 레이어 번호1은 레벨 값인 0보다 크므로 현재 노드에 레벨 1에 속하는 자식 노드 4개를 생성한다.
레벨 1의 첫번째 노드의 레이어 번호 복원을 위해 비트스트림으로부터 한 비트를 추출한다. 세번째로 추출한 비트는 '1'이므로 차이값은 0이 된다. 복원한 차이값과 레벨 1의 첫번째 노드의 상위 노드인 레벨 0의 레이어 번호를 더하여 첫번째 노드의 레이어 번호 1을 복원한다. 복원한 레벨 1의 레이어 번호 1과 레벨값 1이 동일하므로 레벨 1의 두번째 노드를 위한 차이값 복호화를 시작한다.
레벨 1의 두번째 노드의 레이어 번호 복원을 위해 비트스트림으로부터 한 비트를 추출한다. 네번째로 추출한 비트는 '1'이므로 차이값은 0이 된다. 복원한 차이값과 레벨 1의 두번째 노드의 상위 노드인 레벨 0의 레이어 번호를 더하여 두번째 노드의 레이어 번호 1을 복원한다. 복원한 레벨 1의 레이어 번호 1과 레벨값 1이 동일하므로 레벨 1의 세번째 노드를 위한 차이값 복호화를 시작한다.
레벨 1의 세번째 노드의 레이어 번호 복원을 위해 비트스트림으로부터 한 비트를 추출한다. 다섯번째로 추출한 비트는 '1'이므로 차이값은 0이 된다. 복원한 차이값과 레벨 1의 세번째 노드의 상위 노드인 레벨 0의 레이어 번호를 더하여 세번째 노드의 레이어 번호 1을 복원한다. 복원한 레벨 1의 레이어 번호 1과 레벨값 1이 동일하므로 레벨 1의 네번째 노드를 위한 차이값 복호화를 시작한다.
레벨 1의 네번째 노드의 레이어 번호 복원을 위해 비트스트림으로부터 한 비트를 추출한다. 여섯번째로 추출한 비트는 '1'이므로 차이값은 0이 된다. 복원한 차이값과 레벨 1의 네번째 노드의 상위 노드인 레벨 0의 레이어 번호를 더하여 네번째 노드의 레이어 번호 1을 복원한다.
레벨 1에 속하는 모든 노드들의 레이어 번호를 복원했고 레벨 2에 속하는 노드들이 존재하지 않으므로 레이어 번호 복호화를 마치고 최하위 레벨의 각 노드들에 대해서 분할 타입 지시 정보 복호화를 수행한다.
도 15 및 도 16의 실시예에서는 분할 타입 지시 정보를 부호화할 때 분할 타입 지시 정보 0, 1, 2, 3에 이진비트 '11', '00', '10', '01'를 할당하여 부호화하였으므로 영상 복호화 장치도 동일한 방법으로 비트스트림으로부터 각 노드들에 대해서 2비트를 추출하여 분할 지시 정보를 복원한다.
본 실시예에서 최하위 레벨에 속하는 노드는 레벨 1에 속하는 노드 4개가 있으므로 각 노드들에 대해서 비트스트림으로부터 2비트를 추출하여 분할 타입 지식 정보를 복원한다.
비트스트림으로부터 추출한 일곱번째와 여덟번째 비트가 '00'이므로 첫번째 노드에 대한 분할 타입 지시 정보는 1이고, 비트스트림으로부터 추출한 아홉번째와 열번째 비트가 '11'이므로 두번째 노드에 대한 분할 타입 지시 정보는 0, 비트스트림으로부터 추출한 열한번째와 열두번째 비트가 '10'이므로 세번째 노드에 대한 분할 타입 지시 정보는 2, 비트스트림으로부터 추출한 열세번째와 열네번째 비트가 '01'이므로 네번째 노드에 대한 분할 타입 지시 정보는 3이 된다.
복원한 레이어 값과 분할 타입 지시 정보를 이용하여 매크로블록의 서브 블록 모양을 판단하면 매크로블록 내 모든 서브블록은 레이어 1에 속하므로 64x64 매크로블록은 4개의 32x32 서브블록으로 분할되고 각 32x32 서브블록들은 각각 레이어 1에 속하는 서브블록 타입인 32x32, 32x16, 16x32, 16x16 중 한 가지 서브블록 타입을 가진다.
첫번째 서브블록의 복원한 분할 타입 지시 정보가 1이므로 첫번째 32x32 서브블록은 두개의 32x16 서브블록으로 분할되었고 두번째 서브블록의 복원한 분할 타입 지시 정보가 0이므로 두번째 32x32 서브블록은 한 개의 32x32 서브블록 타입으로 결정되었음을 알 수 있다. 이와 동일한 방법으로 세번째 서브블록의 복원한 분할 타입 지시 정보가 2이므로 세번째 32x32 서브블록은 두 개의 16x32 서브블록으로 분할되었고 네번째 서브블록의 복원한 분할 타입 지시 정보가 3이므로 네번째 32x32 서브블록은 네 개의 16x16 서브블록으로 분할되어 도 15와 같음을 알 수 있다.
이하에서는 도 17 및 도 18의 실시예에 따른 복호화 방법을 설명한다. 도 18의 실시예에서 영상 부호화 장치에서 분할 정보로 부호화한 이진 비트값은 '01111010111100111010011111011111'이다.
먼저, 레벨 0의 레이어 번호를 복원하기 위해 1 비트를 비트스트림으로부터 추출하여 복원한다. 비트스트림으로부터 추출한 비트가 '0'이므로 비트스트림으로부터 한 비트를 더 추출하여 복원한다. 두번째로 복원한 비트는 1이므로 레벨 0의 레이어 번호를 위한 차이값 복원을 끝낸다. 차이값 복원을 위해 추출한 비트스트림은 '01'이므로 차이값은 0의 개수인 1이 되고 복원한 차이값을 0과 더한 값 1을 레벨 0의 레이어 번호로 할당한다.
복원한 레벨 0의 레이어 번호1은 레벨 값인 0보다 크므로 현재 노드에 레벨 1에 속하는 자식 노드 4개를 생성한다.
레벨 1의 첫번째 노드의 레이어 번호 복원을 위해 비트스트림으로부터 한 비트를 추출한다. 세번째로 추출한 비트는 '1'이므로 차이값은 0이 된다. 복원한 차이값과 레벨 1의 첫번째 노드의 상위 노드인 레벨 0의 레이어 번호를 더하여 첫번째 노드의 레이어 번호 1을 복원한다. 복원한 레벨 1의 레이어 번호 1과 레벨값 1이 동일하므로 레벨 1의 두번째 노드를 위한 차이값 복호화를 시작한다.
레벨 1의 두번째 노드의 레이어 번호 복원을 위해 비트스트림으로부터 한 비트를 추출한다. 네번째로 추출한 비트는 '1'이므로 차이값은 0이 된다. 복원한 차이값과 레벨 1의 두번째 노드의 상위 노드인 레벨 0의 레이어 번호를 더하여 두번째 노드의 레이어 번호 1을 복원한다. 복원한 레벨 1의 레이어 번호 1과 레벨값 1이 동일하므로 레벨 1의 세번째 노드를 위한 차이값 복호화를 시작한다.
레벨 1의 세번째 노드의 레이어 번호 복원을 위해 비트스트림으로부터 한 비트를 추출한다. 다섯번째로 추출한 비트는 '1'이므로 차이값은 0이 된다. 복원한 차이값과 레벨 1의 세번째 노드의 상위 노드인 레벨 0의 레이어 번호를 더하여 세번째 노드의 레이어 번호 1을 복원한다. 복원한 레벨 1의 레이어 번호 1과 레벨값 1이 동일하므로 레벨 1의 네번째 노드를 위한 차이값 복호화를 시작한다.
레벨 1의 네번째 노드의 레이어 번호 복원을 위해 비트스트림으로부터 한 비트를 추출한다. 여섯번째로 추출한 비트는 '0'이므로 비트스트림으로부터 한 비트를 더 추출하여 복원한다. 일곱번째로 복원한 비트는 1이므로 레벨 1의 네번째 노드의 레이어 번호를 위한 차이값 복원을 끝낸다. 차이값 복원을 위해 추출한 비트스트림은 '01'이므로 차이값은 0의 개수인 1이 되고 복원한 차이값을 상위 노드의 레이어 번호 1과 더해서 레이어 번호 2을 복원하고 복원한 레이어 번호 2가 현재 노드가 속한 레벨 값 1 보다 큰 값을 가지므로 레벨 1의 네번째 노드에 대해서 자식 노드 4개를 생성한다. 생성된 자식 노드들은 레벨 2에 속한다.
레벨 1에 속하는 모든 노드들의 레이어 번호를 복원했으므로 레벨 2에 속하는 노드들의 레이어 번호 복호화를 동일한 방법으로 진행한다.
레벨 2에 속하는 노드들은 레벨 1의 네번째 노드의 자식 노드이며 레벨 2의 첫번째 노드 복원을 위해 추출한 비트는 8번째와 9번째 비트인 '01'이 된다. 레벨 2의 첫번째 노드와 상위노드의 레이어 번호 2의 차이값이 1이므로 현재 노드의 레이어 번호는 3이된다. 이 경우 복원한 레이어 값 3은 레벨값 2보다 크므로 자식 노드 4개를 생성하지만 복원한 레이어 값 3은 전술한 바와 같이 분할 레이어 번호가 가질수 있는 최대값을 가지므로 새로 생성된 레벨 3의 4개의 노드들에 대해서는 레이어 번호를 복호화하지 않는다.
레벨 2의 두번째부터 네번째 노드 복원을 위해 추출한 비트는 10번째부터 12번째 비트인 '111'이 된다. 상기 3개의 노드들의 차이값은 모두 0이므로 레벨 2의 두번째, 세번째 네번째 노드들의 레이어 번호는 2가 된다.
레벨 2에 속하는 모든 노드들의 레이어 번호를 복원했고 레벨 3에 속하는 노드들에 대해서는 레이어 번호를 복원하지 않으므로 레이어 번호 복호화를 마치고 최하위 레벨의 각 노드들에 대해서 분할 타입 지시 정보 복호화를 수행한다.
도 17 및 도 18의 실시예에서는 분할 타입 지시 정보를 부호화할 때 분할 타입 지시 정보 0, 1, 2, 3에 이진비트 '11', '00', '10', '01'를 할당하여 부호화하였으므로 영상 복호화 장치도 동일한 방법으로 비트스트림으로부터 각 노드들에 대해서 2비트를 추출하여 분할 지시 정보를 복원한다.
본 실시예에서 최하위 레벨에 속하는 노드는 레벨 1에 속하는 노드 3개와 레벨 3에 속하는 노드 4개, 레벨 2에 속하는 노드 3개가 있으므로 각 노드들에 대해서 비트스트림으로부터 2비트를 추출하여 분할 타입 지식 정보를 복원한다.
도 16을 통해 전술한 방법과 동일한 방법으로 분할 타입 지시 정보 를 복호화하면 레벨 1에 속하는 3개의 노드들의 분할타입 복호화를 위해 추출된 비트들은 순서대로 '00', '11', '10'이므로 레벨 1의 첫번째 노드의 분할 타입 지시 정보는 1, 레벨 1의 두번째 노드의 분할 타입 지시 정보는 0, 레벨 1의 두번째 노드의 분할 타입 지시 정보는 2가 된다.
레벨 3에 속하는 4개의 노드들의 분할타입 복호화를 위해 추출된 비트들은 순서대로 '10', '01', '11', '11'이므로 레벨 3의 첫번째 노드의 분할 타입 지시 정보는 2, 레벨 3의 두번째 노드의 분할 타입 지시 정보는 3, 레벨 3의 세번째와 네번째 노드의 분할 타입 지시 정보는 각각 0이 된다.
레벨 2에 속하는 두번째부터 네번째 노드들의 분할타입 복호화를 위해 추출된 비트들은 순서대로 '01', '11', '11'이므로 레벨 2의 두번째 노드의 분할 타입 지시 정보는 3, 레벨 2의 세번째와 네번째 노드의 분할 타입 지시 정보는 각각 0이 된다.
복원한 레이어 값과 분할 타입 지시 정보를 이용하여 매크로블록의 서브 블록 모양을 판단하면, 매크로블록 내 서브블록들은 레이어 번호는 1 이상의 값을 가지므로 64x64 매크로블록을 4개의 32x32 서브블록으로 분할한다. 레벨 1의 첫번째부터 세번째 노드의 레이어 번호는 1이므로 매크로블록내 첫번째부터 세번째 32x32 서브블록은 각각 레이어 1에 속하는 서브블록 타입인 32x32, 32x16, 16x32, 16x16 중 한 가지 서브블록 타입을 가진다. 첫번째 32x32 서브블록의 복원한 분할 타입 지시 정보가 1이므로 첫번째 32x32 서브블록은 두개의 32x16 서브블록으로 분할되었고 두번째 서브블록의 복원한 분할 타입 지시 정보가 0이므로 두번째 32x32 서브블록은 한 개의 32x32 서브블록 타입으로 결정되었음을 알 수 있다. 이와 동일한 방법으로 세번째 서브블록의 복원한 분할 타입 지시 정보가 2이므로 세번째 32x32 서브블록은 두 개의 16x32 서브블록으로 분할한다.
네번째 32x32 서브블록에 해당하는 레벨 1의 네번째 노드의 복원한 레이어 번호는 2이므로 네번째 32x32 서브블록은 4개의 16x16 서브블록으로 분할하고 각 16x16에 해당하는 레벨 2의 4개의 노드의 레이어 번호가 2보다 큰 값을 가지는 16x16블록에 대해서는 하위 레이어로 분할을 한번 더 수행한다. 여기서는 레벨 2의 첫번째 노드의 복원한 레이어 번호는 3이므로 첫번째 16x16 블록은 다시 4개의 8x8 서브블록으로 분할한다.
이후 각 서브블록들의 분할 타입 지시 정보에 따가 각 서브블록들의 서브블록 타입을 결정하며 도 17과 같음을 알 수 있다.
B-2-2-3) 분할정보 복호화 방법 3
이하에서는 분할 정보를 부호화하는 세번째 방법에 따른 복호화 방법을 설명한다.
세번째 방법에 따르면, 분할 레이어 값과 분할 플래그를 복호화함으로써 블록의 분할 정보를 복호화할 수 있다.
먼저 비트스트림으로부터 분할 레이어값을 추출하고 복원한 후 분할 레이어 값에 따라 매크로블록을 분할한다. 예를 들어 매크로블록의 크기는 NxN이고 복원한 분할 레이어 값이 x인 경우, 매크로블록을 서브블록으로 분할한다.
이후 분할 플래그를 비트스트림으로부터 추출하고 복원하여 복원한 분할 플래그가 매크로블록 내 모든 서브블록이 더 작은 서브블록으로 분할되지 않았음을 뜻하는 값(예컨대 0)을 가지면 매크로블록의 분할 정보 복호화를 마친다.
만약 복원한 분할 플래그가 매크로블록 내 하나 이상의 서브블록이 더 작은 서브블록으로 분할되었음을 뜻하는 값, 예컨대 1이면 래스터 스캔 순서로 각 서브블록의 분할 레이어값과 분할 플래그를 동일한 방법으로 비트스트림으로부터 추출하고 복원한다.
이하에서는 도 20의 실시예에 따른 복호화 방법을 설명한다. 도 20의 실시예에서 영상 부호화 장치에서 분할 정보로 부호화한 분할 레이어값과 분할 플래그는 {1, 1, 0, 2, 0, 1, 1, 0, 0, 0, 2, 3}이다.
먼저 분할 레이어 값을 비트스트림으로부터 추출하여 분할 레이어 값 1과 분할 플래그 1을 복호화한다. 분할 레이어 값이 1이므로 64x64 매크로블록은 4개의 32x32 서브블록으로 분할한다.
복호화한 분할 플래그가 1이므로 각 32x32블록에 대해서 분할 레이어 값과 분할 플래그 복호화를 계속 진행한다.
첫번째 32x32 블록의 분할 레이어값이 0이므로 첫 번째 32x32 블록은 더 작은 서브블록으로 분할되지 않았음을 알수 있고 이때 분할 플래그는 비트스트림으로부터 복호화하지 않는다.
두번째 32x32 블록의 분할 레이어값을 비트스트림으로부터 추출하고 복호화한다. 복원한 분할 레이어 값이 2이므로 32x32 블록은 16개의 8x8블록으로 분할하고 이어서 분할 플래그를 비트스트림으로부터 추출하여 복호화한다. 복원한 분할 플래그가 0이므로 두번째 32x32블록내 16개의 서브블록들은 더 작은 서브블록으로 분할되지 않았음을 알 수 있고 이어서 세번째 32x32 블록의 분할 레이어 값을 비트스트림으로부터 추출하고 복호화한다.
복원한 분할 레이어 값이 1이므로 32x32블록은 4개의 16x16 크기의 서브블록으로 분할하고 분할 플래그를 비트스트림으로부터 복호화한다. 복호화한 분할 플래그가 1이므로 하나 이상의 16x16 블록은 더 작은 서브블록으로 분할되었음을 알 수 있고 각 16x16 블록에 대해서 분할 레이어 값과 분할 플래그를 복호화한다.
동일한 방법으로 각 16x16 서브블록에 대해서 분할 레이어값을 비트스트림으로부터 추출하고 복원한 후 분할 레이어값이 0이 아닌 경우 분할 플래그를 비트스트림으로부터 추출하고 복원한다.
상기 예에서 첫번째부터 세번째 16x16의 분할 레이어 값은 모두 0이고 네번째 16x16 블록의 분할 레이어값은 2임을 알수 있다.
네번째 16x16블록의 분할 레이어 값은 2이므로 16x16블록을 16r개의 4x4 서브블록으로 분할한다. 단 이때 복원한 레이어 값은 0이 아니지만 각 4x4 서브블록은 더 작은 서브블록으로 분할 될수 없으므로 분할 플래그를 복호화하지 않는다.
이후 네번째 32x32 블록의 분할 레이어 값을 비트스트림으로부터 추출하고 복호화하는데 복원한 분할 레이어 값이 3이므로 32x32블록을 64개의 4x4 서브블록으로 분할하고 분할된 서브블록의 크기가 최소 블록의 크기이므로 분할 정보 복호화를 마친다.
상기 전술한 분할 레이어 값과 분할 플래그는 비트스트림으로부터 추출하고 복호화하며 분할 레이어값을 복호화하는 방법은 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법들 중 영상 부호화 장치와 약속된 방법을 이용하여 복호화한다.
또는 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 방법을 이용하여 복호화할 수도 있다.
또는 영상 부호화 장치와 영상 복호화 장치가 약속한 Table의 인덱스 값을 전술한 다양한 이진 부호화/복호화 방법을 이용하여 복호화할 수도 있다.
분할 플래그는 비트스트림으부터 1비트씩 추출하여 복호화하여 현재 서브블록이 더 작은 서브블록으로 분할되었는지의 여부를 판단하는데 사용된다.
B-2-2-4) 분할정보 복호화 방법 4
이하에서는 분할 정보를 부호화하는 네번째 방법에 따른 복호화 방법을 설명한다.
네번째 분할 정보 복호화 방법은 첫번째 분할정보 복호화 방법과 유사하다. 단, 모든 서브블록의 분할 타입 지시 정보가 더 작은 서브블록으로 분할되지 않았음을 뜻하는 값(예컨대 0)을 가지거나 현재 블록으로부터 분할 타입 지시 정보에 의해 분할된 서브블록의 크기가 최소 서브블록의 크기를 가질때까지 비트스트림으로부터 분할 타입 지시 정보를 추출하고 복호화를 계속 수행한다.
이하에서는 도 21 및 도 22의 실시예에 따른 복호화 방법을 설명한다. 도 22의 실시예에서 영상 부호화 장치에서 분할 정보로 부호화한 분할 타입 지시 정보는 {1, 1, 0, 0, 2, 0, 0}이다.
첫번째 복호화한 분할 타입 지시 정보는 1이므로 64x64 매크로블록을 두개의 64x32블록(L1-P0, L1-P1)으로 분할하고 첫번째 64x32 서브블록의 분할 타입 지시 정보를 비트스트림으로부터 추출하고 복원한다.
두번째로 복원한 분할 타입 지시 정보는 1이므로 L1-P0에 해당하는 64x32블록은 두개의 64x16 블록(L2-P0, L2-P1)으로 분할하고 첫번째 64x16 서브블록(L2-P0)의 분할 타입 지시 정보를 비트스트림으로부터 추출하고 복원한다.
세번째로 복원한 분할 타입 지시 정보는 0이므로 L2-P0에 해당하는 64x16블록은 더 작은 서브블록으로 분할하지 않으며 L2-P0의 다음 블록인 L2-P1의 분할 타입 지시 정보를 비트스트림으로부터 추출하고 복원한다.
네번째로 복원한 분할 타입 지시 정보는 0이므로 L2-P1에 해당하는 64x16블록은 더 작은 서브블록으로 분할하지 않는다. L2에 속하는 서브블록의 분할 정보를 모두 복원하였으므로 L1-P1의 분할 타입 지시 정보를 비트스트림으로부터 추출하고 복원한다.
다섯번째로 복원한 분할 타입 지시 정보는 2이므로 L1-P1에 해당하는 64x32블록은 두개의 32x32 블록(L2-P0, L2-P1)으로 분할하고 첫번째 32x32 서브블록(L2-P0)의 분할 타입 지시 정보를 비트스트림으로부터 추출하고 복원한다.
여섯번째로 복원한 분할 타입 지시 정보는 0이므로 L2-P0에 해당하는 32x32블록은 더 작은 서브블록으로 분할하지 않으며 L2-P0의 다음 블록인 L2-P1의 분할 타입 지시 정보를 비트스트림으로부터 추출하고 복원한다.
일곱번째로 복원한 분할 타입 지시 정보는 0이므로 L2-P1에 해당하는 32x32블록은 더 작은 서브블록으로 분할하지 않는다. 매크로블록내 모든 서브블록들의 블록 타입이 결정되었으므로 분할 정보 복호화를 종료한다.
이때 분할 타입 지시 정보를 엔트로피 복호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화/복호화 방법들 중 영상 부호화 장치와 약속된 방법을 이용해서 엔트로피 복호화한다.
또한, 실제 분할 타입 지시 정보 값을 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 복호화할 수 있다.
또한, 영상 부호화 장치에서 분할 타입 지시 정보 부호화 방법으로 이진 산술 부호화를 이용하고, 레이어 번호가 이하인 경우에는 표 1을 이용하고 레이어 번호가 보다 큰 경우에는 표 2를 이용하여 부호화한 경우 영상 복호화 장치는 분할 타입 지시 정보의 레이어 번호에 따라 표 1과 표 2를 이용하여 엔트로피 복호화를 수행한다.
예를 들어 64x64 매크로블록에 대해서 레이어 1에 속하는 분할 타입 지시 정보를 엔트로피 복호화 할 때 2 비트를 엔트로피 복호화 한 후 표 1을 이용하여 분할 타입 지시 정보를 얻는다.
64x64매크로블록에 대해서 레이어 3에 속하는 분할 타입 지시 정보를 엔트로피 복호화 할 때는 표2를 사용한다. 먼저 1비트를 엔트로피 복호화 한 후 복호화 한 이진 비트가 1인 경우 분할 타입 지시 정보를 0으로 설정하고 현재 서브블록의 분할 타입 지시 정보 엔트로피 복호화를 마친다. 만약 복호화 한 이진비트가 1이 아닌 경우, 비트스트림으로부터 1비트를 더 엔트로피 복호화하고 두번째로 복호화한 비트가 0인 경우 현재 서브블록의 분할 타입 지시 정보를 1로 설정하고 현재 서브블록의 분할 타입 지시 정보를 위한 엔트로피 복호화를 마친다. 두번째로 복호화한 비트가 1인 경우에는 비트스트림으로부터 1비트를 더 엔트로피 복호화하여 현재 서브블록의 분할 타입 지시 정보가 2인지 3인지를 표 2를 이용하여 판단한다.
또한 도 34에 도시된 본 발명의 다른 실시예에 따른 분할 타입을 사용하도록 영상 부호화 장치와 약속된 경우, 분할 타입 지시 정보 복호화를 위해 1비트를 엔트로피 복호화하여 현재 서브블록이 4개의 서브블록으로 분할되었는지의 여부를 판단할 수도 있다.
B-2-3) 복호화 순서도
도 25는 본 발명의 다른 실시예에 따른 영상 복호화 방법을 설명하기 위한 순서도이다.
본 발명의 다른 실시예에 따른 영상 복호화 방법에 따르면, 영상 복호화 장치(2400)는 비트스트림으로부터 전술한 실시예들에 의한 복호화 방법을 사용하여 분할 정보 데이터를 복호화하여 현재 블록의 분할 정보를 복원하고(S2510), 비트스트림으로부터 추출되는 부호화된 영상 데이터를 복원되는 현재 블록의 분할 정보에 따라 예측 복호화하여 복수 개의 서브블록으로 분할되는 현재 블록을 복원한다(S2520).
이상에서 전술한 바와 같이 본 발명의 다른 실시예에 따르면, 16x16 블록 크기 이상의 매크로블록이 다양한 블록 크기의 서브블록으로 분할되는 경우에도, 레이어별 분할 타입 또는 분할 레이어값을 이용하여 매크로블록의 분할 정보를 작은 비트수로 부호화함으로써, 압축 효율을 향상시킬 수 있다.
C) 최대 분할 레이어 정보 부호화 및 복호화
이하에서는 본 발명의 다른 실시예로서, 분할 정보를 효율적으로 부호화할 수 있도록 임의의 크기의 매크로블록을 최대로 분할할 수 있는 레이어의 개수를 나타내는 최대 분할 레이어를 결정하고, 결정된 최대 분할 레이어를 이용하여 매크로블록을 예측 또는 변환을 위해 복수개의 서브블록으로 분할한 후, 최대 분할 레이어를 이용하여 분할 정보를 효율적으로 부호화하고 복호화하는 장치와 방법에 대해 설명한다. 여기서, 매크로블록 내 사용 가능한 최소 서브블록의 크기는 최대 분할 레이어에 의해 결정될 수 있으며, 매크로블록 부호화시 해당 크기 이상의 서브블록들만을 이용하여 영상을 부호화한다.
상기 최대 분할 레이어는 예측 또는 변환을 위해 사용할 수 최소 서브블록들의 크기를 나타내는 정보일 수 있으며, 시퀀스 헤더 또는 각 픽쳐의 헤더 또는 슬라이스 헤더 또는 매크로블록 헤더에서 부호화할 수도 있다. 또한 예측을 위한 최대 분할 레이어와 변환을 위한 최대 분할 레이어 정보를 각각 부호화하도록 할 수도 있다.
또한, 분할 정보는 예측 또는 변환을 위해 분할된 서브블록들의 크기와 모양을 나타내는 정보일 수 있으며 비트스트림에 분할정보와 부호화된 영상 데이터를 포함하여 부호화하여 영상 복호화 장치에 전송한다. 또한 예측을 위한 분할 정보와 변환을 위한 분할 정보를 각각 부호화하도록 할 수도 있다.
복호화 할때는 비트스트림으로부터 최대 분할 레이어 데이터를 추출하고 복호화한 후, 복원한 최대 분할 레이어를 이용하여 예측 또는 변환을 위한 서브블록들의 분할 정보를 추출하고 복호화하여 각 서브블록들의 크기와 모양을 복원한다. 이후 각 서브블록들의 부호화된 데이터를 비트스트림으로부터 추출하고 복원하여 예측 또는 역변환을 수행함으로써 영상을 복원한다.
C-1) 영상 부호화 장치
C-1-1) 부호화 장치
도 26은 본 발명의 또 다른 실시예에 따른 영상 부호화 장치를 간략하게 나타낸 블록 구성도이다.
본 발명의 또 다른 실시예에 따른 영상 부호화 장치(2600)는 영상 부호화기(2610), 최대 분할 레이어 결정기(Maximum Partition Layer Determiner, 2620) 및 최대 분할 레이어 부호화기(Maximum Partition Layer Encoder, 2630)를 포함하여 구성될 수 있다.
영상 부호화기(2610)는 도 8을 통해 전술한 본 발명의 일 실시예에 따른 영상 부호화 장치(800)로 구현될 수 있다. 즉, 영상 부호화기(2610)는 기 결정된 매크로블록의 분할 타입에 따른 서브블록을 이용하여 예측 부호화하여 부호화된 분할 정보와 영상 데이터를 생성한다. 이때, 영상 부호화기(2610)는 매크로블록의 분할 타입을 결정할 때, 최대 분할 레이어 결정기(2620)에 의해 결정되는 최대 분할 레이어값에 따른 최소 서브블록 크기를 이용하여 분할 타입을 결정할 수 있다. 또한 분할 정보를 부호화할 때, 최대 분할 레이어를 이용하여 분할 정보를 부호화한다.
최대 분할 레이어 결정기(2620)는 최대 분할 레이어값의 후보에 따른 최소 서브블록 크기를 이용하여 현재 블록의 분할 타입을 결정하고 그에 따라 부호화할 때의 부호화 비용을 이용하여 현재 블록의 최대 분할 레이어값을 결정한다. 이때, 최대 분할 레이어값의 후보에 따른 최소 서브블록 크기를 이용하여 현재 블록의 분할 타입을 결정하고 그에 따라 부호화할 때의 부호화 비용은 최대 분할 레이어 결정기(2620)가 스스로 계산할 수도 있지만, 최대 분할 레이어 결정기(2620)가 최대 분할 레이어값의 후보를 지정해 주면 영상 부호화기(2610)가 해당 분할 레이어값의 후보에 따른 최소 서브블록 크기를 이용하여 현재 블록의 분할 타입을 결정하고 그에 따라 부호화할 때의 부호화 비용을 계산하여 최대 분할 레이어 결정기(2620)로 전달하며 최대 분할 레이어 결정기(2620)가 전달된 부호화 비용을 이용하여 현재 블록의 최대 분할 레이어값을 결정할 수 있다. 현재 블록의 최대 분할 레이어값이 결정되면 영상 부호화기(2610)는 해당 최대 분할 레이어값으로 이미 부호화된 영상 데이터를 비트스트림에 포함시키면 된다. 최대 분할 레이어 결정기(2620)가 최대 분할 레이어값을 결정하고 그에 따라 최소 서브블록 크기를 결정하는 방법에 대해서는 후술하는 과정에서 상세히 설명한다.
최대 분할 레이어 부호화기(2630)는 최대 분할 레이어값을 부호화하여 부호화된 최대 분할 레이어 데이터를 생성하고 비트스트림에 포함시킨다.
C-1-2) 분할 레이어와 최소 서브블록 크기의 관계
매크로블록의 크기, 최소 서브블록의 크기, 최대로 사용할 수 있는 레이어값 인 최대 분할 레이어(MaxLayer))를 이용하여 설정될 수 있다.
즉, 매크로블록의 크기는 최대 분할 레이어값(MaxLayer)과 최소 블록의 크기를 이용하여 구할수 있고 반대로 최소 서브블록의 크기는 매크로블록의 크기와 최대 분할 레이어를 이용하여 구할 수도 있다.
최소블록의 크기가 NxN인 경우 최대블록의 크기는 (Nx2MaxLayer)x(Nx2MaxLayer)이고, NxN 화소의 매크로블록인 경우, 최소 블록의 크기는 (N/(2MaxLayer)) x (N/(2MaxLayer))이 된다.
도 27은 본 발명의 또 다른 실시예에 따른 분할 레이어와 최소 서브블록 크기와의 관계를 나타낸 예시도이다.
도 27을 참조하면, 매크로블록의 블록 크기가 MxN이고 분할 레이어값이 x인 경우, 사용 가능한 최소 서브블록 크기는 가 된다. 예를 들어, 64x64 블록 크기의 매크로블록의 분할 레이어값이 4인 경우 사용 가능한 최소 서브블록 크기는 4x4가 된다. 여기서, 분할 레이어값은 매크로블록의 가로 및 세로 즉, MxN 블록 크기의 매크로블록의 M과 N 각각에 대해서 다르게 적용될 수 있다.
따라서, 최대 분할 레이어 결정기(2620)는 매크로블록에 대한 최대 분할 레이어값을 결정함으로써 최소 서브블록 크기를 결정할 수 있다. 이를 위해, 최대 분할 레이어 결정기(2620)는 후보 분할 레이어값에 대한 부호화 비용을 계산하고 후보 분할 레이어값에 대한 부호화 비용을 이용하여 최대 분할 레이어값을 결정할 수 있다. 이하에서는 매크로블록의 크기가 MxM(단, M은 16 이상의 정수임)이라고 가정하여, 매크로브록에 대한 최대 분할 레이어값을 결정하는 방법에 대해 설명한다.
C-1-3) 최대 분할 레이어 결정 방법
도 28은 본 발명의 또 다른 실시예에 따라 최대 분할 레이어값을 결정하는 방법의 일 예를 설명하기 위한 순서도이다.
최대 분할 레이어 결정기(2620)는 최대 분할 레이어값의 후보 x의 초기값을 log2(M/16)로 설정하고(S2810), 최대 분할 레이어값의 후보가 x일 때의 최소 서브블록 크기 (M/2x)×(M/2x)를 이용하여 매크로블록의 분할 타입을 결정하고 그에 따라 영상의 하나의 프레임(임의 프레임)을 부호화할 때의 부호화 비용(이하 'xcost'라 칭함)을 계산하며(S2820), 최대 분할 레이어값의 후보가 x+1일 때의 최소 서브블록 크기 (M/2x+1)×(M/2x+1)를 이용하여 매크로블록의 분할 타입을 결정하고 그에 따라 전술한 임의 프레임을 부호화할 때의 부호화 비용(이하 'x+1cost'라 칭함)을 계산하며(S2830), xcost와 x+1cost를 비교하여 xcost가 x+1cost보다 작은지 여부를 판단한다(S2840).
최소 서브블록 크기 결정기(2620)는, 단계 S2840의 판단 결과 xcost가 x+1cost보다 작은 경우, x를 최대 분할 레이어값으로 결정한다(S2850). 또한, 최대 분할 레이어 결정기(2620)는, 단계 S2840의 판단 결과 xcost가 x+1cost보다 크거나 같은 경우, x+1이 log2(M/4)인지 여부를 판단하여(S2860), x+1이 log2(M/4)가 아니면 x를 x+1로 설정하고(S2870) 단계 S2820으로 진행하며, x+1이 log2(M/4)이면 x+1을 최대 분할 레이어값으로 결정한다(S2880).
도 29는 본 발명의 또 다른 실시예에 따라 최대 분할 레이어값을 결정하는 방법의 다른 예를 설명하기 위한 순서도이다.
최대 분할 레이어 결정기(2620)는 최대 분할 레이어값의 후보 x의 초기값을 log2(M/4)로 설정하고(S2910), 최대 분할 레이어값의 후보가 x일 때의 최소 서브블록 크기 (M/2x)×(M/2x)를 이용하여 매크로블록의 분할 타입을 결정하고 그에 따라 영상의 하나의 프레임(임의 프레임)을 부호화할 때의 부호화 비용(이하 'xcost'라 칭함)을 계산하며(S2920), 최대 분할 레이어값의 후보가 x-1일 때의 최소 서브블록 크기 (M/2x-1)×(M/2x-1)를 이용하여 매크로블록의 분할 타입을 결정하고 그에 따라 전술한 임의 프레임을 부호화할 때의 부호화 비용(이하 'x-1cost'라 칭함)을 계산하며(S2930), xcost와 x-1cost를 비교하여 xcost가 x-1cost보다 작은지 여부를 판단한다(S2940).
최대 분할 레이어 결정기(2620)는, 단계 S2940의 판단 결과, xcost가 x-1cost보다 크거나 같은 경우 x를 x-1로 설정하고(S2950) 단계 S2920으로 진행하며, xcost가 x-1cost보다 작은 경우 x를 최대 분할 레이어값으로 결정한다(S2960).
최대 분할 레이어 결정기(2620)는 도 28 및 도 29를 통해 전술한 방법뿐만 아니라, 다른 방법으로도 최대 분할 레이어값을 결정할 수 있다. 즉, 최대 분할 레이어값을 결정하는 또 다른 예로서, 최대 분할 레이어 결정기(2620)는 매크로블록에 대해 사용 가능한 최대 분할 레이어값의 후보들 각각에 대해 부호화 비용을 계산하고 계산된 부호화 비용을 서로 비교하여 최소의 부호화 비용을 가지는 최대 분할 레이어값의 후보를 최대 분할 레이어값으로 결정할 수 있다.
C-1-4) 분할 정보 부호화 방법
이하에서는 본 발명의 또 다른 실시예에 따라 최대 분할 레이어값을 이용하여 분할 정보를 부호화하는 방법을 설명한다.
전술한 바와 같이, 총 레이어 개수를 의미하는 최대 분할 레이어값이 결정되면 매크로블록 내에서 사용 가능한 분할 레이어들이 결정되는데, 사용 가능한 분할 레이어들 중에서 사용하지 않는 레이어들이 있을 수 있다. 이 경우 사용하지 않는 레이어들에 대한 분할 타입 지시 정보를 부호화는 것이 불필요할 수 있다.
따라서, 본 발명의 또 다른 실시예에서는 최대 분할 레이어값에 의해 결정되는 사용 가능한 분할 레이어들 중에서 사용하기로 선택된 분할 레이어들에 대한 정보를 비트스트림에 포함시킬 수 있으며 각 레이어들의 사용 가능 여부를 비트스트림으로 전송시 선택된 분할 레이어들만을 이용하여 현재 블록의 분할 정보를 부호화하도록 할 수도 있다. 블록의 분할 정보를 부호화하는 방법은 전술한 다양한 분할 정보 부호화 방법을 이용할 수 있다.
매크로블록의 크기가 64x64이고 최대 분할 레이어 값이 2이면 레이어 0과 레이어 1은 사용 가능한 레이어이고 레이어 2와 레이어 3은 사용 가능하지 않다. 그러므로 매크로블록은 레이어 0에 속하는 서브블록 타입인 64x64, 64x32, 32x64, 32x32 크기의 서브블록과 레이어 1에 속하는 서브블록 타입인 32x32, 32x16, 16x32, 16x16 크기의 서브블록들로 분할될 수 있다. 하지만 레이어 2와 레이어 3에 속하는 서브블록 타입들인 16x8, 8x16, 8x8, 8x4, 4x8, 4x4 크기의 서브블록들로는 분할될 수 없다. 즉 각 16x16블록들은 더 작은 서브블록들로 분할될 수 없다.
이 경우, 최대 분할 레이어값만을 비트스트림으로 전송하고 최대 분할 레이어 값을 이용하여 분할 정보 부호화에 필요한 비트수를 절약할 수 있다. 영상 복호화 장치는 비트스트림으로부터 최대 분할 레이어값을 추출하여 복원하고 복원한 최대 분할 레이어의 상위 레이어들은 모두 사용 가능한 레이어로 설정하고 복원한 최대 분할 레이어의 하위 레이어들은 사용 가능하지 않은 레이어로 설정한 후 상기 설정된 정보를 이용하여 분할 정보를 복호화한다.
또는 특정 레이어에 속하는 서브블록들의 타입들이 사용되지 않은 경우, 예를 들면 64x64 크기의 매크로블록이 4개의 32x32 서브블록으로 분할되고 각 32x32서브블록들이 모두 16x16이하 크기를 갖는 서브블록으로 분할되었을 경우, 레이어 1에 속하는 서브블록들의 서브블록들은 사용되지 않았음을 알 수 있고 레이어 1을 사용가능하지 않는 레이어로 선택할 수 있다.
이 경우, 각 레이어들의 사용가능 여부 정보를 비트스트림으로 부호화하여 분할 정보 부호화에 필요한 비트수를 절약할 수 있다. 영상 복호화 장치는 비트스트림으로부터 각 레이어 들의 사용 가능 여부 정보를 비트스트림으로부터 추출하고 복원한 후 복원된 각 레이어들의 사용가능 여부 정보를 이용하여 분할 정보를 복호화한다.
전술한 바와 같이, 본 발명의 또 다른 실시예에서는 최대 분할 레이어값을 비트스트림으로 부호화하고 최대 분할 레이어값에 의해 결정되는 사용 가능한 분할 레이어들만을 이용하여 분할 정보를 부호화하도록 할 수 있다.
또는, 최대 분할 레이어값에 의해 결정되는 사용 가능한 분할 레이어들 중에서 각 레이어들의 사용 가능 여부를 비트스트림에 포함하여 부호화하고 사용가능한 분할 레이어들만을 이용하여 분할 정보를 부호화하도록 할 수도 있다.
최대 분할 레이어 값 및/또는 각 분할 레이어들의 사용 가능 여부 플래그 정보는 시퀀스 헤더 또는 각 픽쳐의 헤더 또는 슬라이스 헤더에 포함되어 부호화 할 수 있다.
이때 최대 분할 레이어 값을 부호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화를 이용하여 이진 비트 스트링(Bit String)으로 부호화될 수 있다. 또는 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 부호화할 수 있다.
각 레이어의 사용 가능 여부를 나타내는 정보를 부호화하는 방법은 각 레이어마다 사용가능 여부를 나타내는 1비트 길이의 플래그를 각각 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 방법을 이용하여 부호화할 수 있다.
또는 각 레이어의 사용 여부를 조합한 Table의 인덱스를 부호화할 수도 있다. 이때 Table의 인덱스를 부호화하는 방법은 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 부호화할 수 있다.
또는 사용하는 레이어에 대한 레이어 플래그를 1로 설정하고 사용하지 않는 레이어에 대한 레이어 플래그를 0으로 설정하며 최하위 비트(LSB: Least Significant Bit)가 최상위 레이어의 사용 여부를 나타내도록 하는 정수값을 생성한 후, 생성된 정수값을 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 부호화할 수 있다.
또한, 사용하는 레이어에 대한 레이어 플래그를 0으로 설정하고 사용하지 않는 레이어에 대한 레이어 플래그를 1로 설정하며 최하위 비트(LSB: Least Significant Bit)가 최상위 레이어의 사용 여부를 나타내도록 하여, 정수값을 생성할 수도 있다.
도 30은 본 발명의 또 다른 실시예에 따라 선택된 분할 레이어들만을 이용하여 현재 블록의 분할 정보를 부호화하는 과정을 설명하기 위한 예시도이다. 도 30에서는 최대 분할 레이어 및/또는 각 레이어의 사용 가능 여부를 부호화하고 상기 정보를 이용하여 분할 정보를 부호화하는 다양한 방법들 중 최대 분할 레이어 값과 각 레이어의 사용 가능 여부를 나타내는 데이터(Layer Flag)를 부호화한 후, 상기 정보를 이용하여 분할 타입 지시 정보를 부호화하여 블록의 분할 정보를 부호화하는 예를 나타내었다.
도 30에서 매크로블록의 크기가 64x64이고 최대 분할 레이어가 4이고, 레이어 0과 레이어 3는 사용 가능하고 레이어 1과 레이어 2는 사용 가능하지 않다고 가정할 때, 매크로블록은 레이어 1에 속하는 서브블록 타입인 64x64, 64x32, 32x64, 32x32로 분할될 수 있으며 32x32로 분할되었을 경우 각 32x32블록은 레이어 3에 속하는 8x8, 8x4, 4x8, 4x4로 분할될 수 있다. 즉 32x32블록이 분할이 도 10에 따르는 분할 타입 지시 정보 3인 경우 32x32블록은 16개의 8x8로 분할된다.
먼저 최대 분할 레이어 값 4를 전술한 최대 분할 레이어값을 부호화는 방법을 이용하여 부호화한 후 사용하는 레이어에 대한 레이어 플래그를 1로 설정하고 사용하지 않는 레이어에 대한 레이어 플래그를 0으로 설정하며 각 레이어의 사용가능 여부를 나타내는 1비트 플래그를 부호화한다. 도 30의 예에서는 사용 가능한 레이어 플래그를 상위 레이어부터 하위 레이어순서로 '1001'을 부호화한다.
이후 매크로블록의 분할 정보를 전술한 다양한 분할 정보 부호화 방법을 이용하여 부호화하는데 도 30의 예에서는 도 10에 따르는 서브블록 타입들을 사용하여 분할 정보 부호화 방법들 중 첫번째 방법인 분할 타입 지시 정보를 부호화하는 방법을 이용하는 방법을 나타낸다.
여기서, 레이어 번호 K인 NxN블록이 4개의 서브블록으로 분할된 경우, 분할된 서브블록에 레이어 번호를 할당하는 방법은 각 레이어의 사용가능 여부에 따라 달라지게 된다. 만약 레이어 K+1이 사용 가능한 경우 서브블록에 레이어 번호 K+1을 할당하고 레이어 K+1이 사용 가능하지 않은 경우에는 서브블록의 레이어 번호에 레이어 번호 K를 할당한다.
예를 들면 매크로블록이 64x64 크기인 경우, 32x32크기의 서브블록은 레이어 0에 포함되는 서브블록 타입으로 판단될 수도 있고 레이어 1에 속하는 서브블록 타입으로 판단될 수도 있다. 이때 레이어 1이 사용가능한 레이어인 경우 32x32 서브블록은 레이어 번호 1을 할당하고 레이어 1이 사용 가능하지 않은 경우 레이어 번호 0을 할당한다.
먼저 매크로블록이 4개의 서브블록으로 분할되었으므로 분할 타입 지시 정보 3을 부호화하고 4개의 32x32 서브블록들의 분할 타입 지시 정보를 부호화한다.
첫번째 32x32블록(L0-P0)은 분할되지 않았으므로 분할 타입 지시 정보 0을 부호화하고 두번째 32x32 블록(L0-P1)의 분할 타입 지시 정보를 부호화한다.
두번째 32x32블록(L0-P0)은 16개의 8x8 서브블록(L2-P0부터 L2-P15)으로 분할되었으므로 분할 타입 지시 정보 3을 부호화한다. 여기서 8x8 서브블록은 레이어 2에 속하는 8x8블록일수도 있고 레이어 3에 속하는 서브블록일 수도 있지만 레이어 2는 사용 가능하지 않으므로 레이어 번호 3을 할당한다.
이후, L0-P0내 16개의 8x8 서브블록들의 분할 타입 지시 정보들을 모두 부호화하고 세번째 32x32블록(L0-P2)의 분할 타입 지시 정보를 부호화한다.
세번째 32x32블록(L0-P2)은 16개의 8x8 서브블록(L2-P0부터 L2-P15)으로 분할되었으므로 분할 타입 지시 정보 3을 부호화하고 L0-P2내 16개의 8x8 서브블록들의 분할 타입 지시 정보들을 모두 부호화하고 네번째 32x32블록(L0-P2)의 분할 타입 지시 정보 0을 부호화한다.
따라서, 본 발명의 또 다른 실시예에 따른 영상 부호화 장치(2600)는 이와 같은 레이어 플래그와 레이어별 파티션 번호에 대한 분할 타입 지시 정보를 부호화함으로써 해당 매크로블록의 분할 정보를 부호화할 수 있다.
C-1-5) 부호화 순서도
도 31은 본 발명의 또 다른 실시예에 따른 영상 부호화 방법을 설명하기 위한 순서도이다.
본 발명의 또 다른 실시예에 따른 영상 부호화 방법에 따르면, 영상 부호화 장치(2600)는 최대 분할 레이어값 및/또는 각 분할 레이어들의 사용 가능 여부를 결정하고 부호화하여 부호화된 최대 분할 레이어 및/ 또는 각 분할 레이어들의 사용 가능 여부 데이터를 생성하고(S3110), 최대 분할 레이어값에 따라 결정되는 최소 서브블록 크기와 각 레이어들의 사용 가능 여부에 따라 결정되는 서브블록들을 이용하여 현재 블록을 예측 부호화하며(S3120), 부호화된 최대 분할 레이어 및/또는 각 레이어들의 사용 가능 여부 데이터와 부호화된 영상 데이터를 포함하는 비트스트림을 생성한다(S3130). 이와 같이 생성되는 비트스트림은 영상 복호화 장치로 전송되어 복호화된다.
단계 S3110에서, 영상 부호화 장치(2600)는 최대 분할 레이어값의 후보에 대한 부호화 비용을 이용하여 최대 분할 레이어값을 결정할 수 있다. 또한, 영상 부호화 장치(2600)는 최대 분할 레이어값의 후보의 값을 증가시키거나 최대 분할 레이어값의 후보의 값을 감소시키면서 최대 분할 레이어값을 결정할 수 있다. 또한, 영상 부호화 장치(2600)는 최대 분할 레이어값의 후보 각각의 부호화 비용을 서로 비교하여 최소 부호화 비용을 가지는 최대 분할 레이어값의 후보를 최대 분할 레이어값으로 결정할 수 있다.
C-2) 복호기
C-2-1) 영상 복호화 장치 구성도 및 설명
도 32는 본 발명의 또 다른 실시예에 따른 영상 복호화 장치를 간략하게 나타낸 블록 구성도이다.
본 발명의 또 다른 실시예에 따른 영상 복호화 장치(3200)는 최대 분할 레이어 복호화기(3210) 및 영상 복호화기(3220)를 포함하여 구성될 수 있다.
최대 분할 레이어 복호화기(3210)는 비트스트림으로부터 추출되는 부호화된 최대 분할 레이어 데이터를 복호화하여 최대 분할 레이어값을 복원한다.
영상 복호화기(2420)는 도 7을 통해 전술한 본 발명의 일 실시예에 따른 영상 복호화 장치와 동일 또는 유사하게 구성될 수 있다. 다만, 본 발명의 다른 실시예에 따른 영상 복호화기(3220)는 비트스트림으로부터 추출되는 부호화된 영상 데이터를 최대 분할 레이어 복호화기(3210)에 의해 복원되는 최대 분할 레이어값에 따른 최소 서브블록 크기를 이용하여 예측 복호화하여 현재 블록을 복원한다.
C-2-2) 분할정보 복호화 방법
이하에서는 본 발명의 또 다른 실시예에 따라 최대 분할 레이어값을 이용하여 분할 정보를 복호화하는 방법을 설명한다.
영상 복호화 장치는 총 레이어 개수를 의미하는 최대 분할 레이어 및/또는 각 레이어들의 사용가능 여부를 나타내는 데이터를 비트스트림의 시퀀스 헤더 또는 각 픽쳐의 헤더 또는 슬라이스 헤더 중 영상 부호화 장치와 약속된 위치에서 추출한 후 상기 정보들을 이용하여 전술된 다양한 분할 정보 복호화 방법을 이용하여 각 블록들의 분할 정보를 복호화한다.
최대 분할 레이어 및/또는 사용 가능한 레이어들의 정보를 복호화하는 방법은, 먼저 최대 분할 레이어 데이터를 비트스트림으로부터 추출하고 복호화하고 복호화한 최대 분할 레이어 값을 이용하여 각 레이어들의 사용가능 여부와 각 레이어들의 사용 가능 여부에 따른 사용 가능한 서브블록들의 타입과 최소 서브블록의 크기를 추출한다. 예를들어 매크로블록의 크기가 64x64이고 비트스트림으로부터 추출하고 복원한 최대 분할 레이어의 값이 3인 경우, 레이어 0, 레이어 1, 레이어 2를 사용 가능한 레이어로 설정하고 레이어 3을 사용 가능하지 않은 레이어로 설정한다. 상기 매크로블록은 레이어 0에 속하는 서브블록 타입인 64x64, 64x32, 32x64, 32x32 크기의 서브블록들과 레이어 1에 속하는 서브블록 타입인 32x32, 32x16, 16x32, 16x16 크기의 서브블록들과 레이어 2에 에 속하는 서브블록 타입들인 16x16, 16x8, 8x16, 8x8 크기의 서브블록들로 분할될 수 있다. 그러나 레이어 3에 속하는 서브블록 타입들인 8x4, 4x8, 4x4 크기의 서브블록들로는 분할될 수 없다. 즉 각 8x8블록들은 더 작은 서브블록들로 분할될 수 없다. 이 경우 사용 가능한 최소 서브블록의 크기는 8x8로 결정된다.
또는, 최대 분할 레이어 데이터를 비트스트림으로부터 추출하고 복호화한 후, 복원한 최대 분할 레이어 값에 의해 결정되는 레이어의 개수만큼 각 레이어들의 사용가능 여부를 나타내는 데이터를 비트스트림으로부터 추출하고 복호화한다. 복원한 최대 분할 레이어 값과 각 레이어들의 사용가능 여부에 따른 사용 가능한 서브블록들의 타입과 최소 서브블록의 크기를 추출한다.
예를들어 매크로블록의 크기가 64x64이고 비트스트림으로부터 추출하고 복원한 최대 분할 레이어의 값이 3인 경우, 3개의 레이어에 대한 사용가능 여부를 나타내는 데이터를 비트스트림으로부터 추출하여 복호화한다. 복원한 각 레이어의 사용 가능 여부가 레이어 0과 레이어 2는 사용가능하고, 레이어 1은 사용가능 하지 않는 경우 매크로블록은 레이어 0에 속하는 서브블록 타입인 64x64, 64x32, 32x64, 32x32 크기의 서브블록들과 레이어 2에 에 속하는 서브블록 타입들인 16x16, 16x8, 8x16, 8x8 크기의 서브블록들로 분할될 수 있다. 그러나 레이어 1과 레이어 3에 속하는 서브블록 타입들인 32x16, 16x32, 8x4, 4x8, 4x4 크기의 서브블록들로는 분할될 수 없다.
또는, 영상 복호화 장치는 영상 부호화 장치와 약속된 매크로블록의 크기와 최소 서브블록의 크기를 이용하여 최대 분할 레이어 값을 결정하고, 최대 분할 레이어 값에 의해 결정되는 레이어의 개수만큼 각 레이어들의 사용가능 여부를 나타내는 데이터를 비트스트림으로부터 추출하고 복호화하여 복원한 각 레이어들의 사용가능 여부에 따른 사용 가능한 서브블록들의 타입을 결정할 수도 있다. 예를들어 영상 부호화 장치와 약속된 매크로블록의 크기가 32x32이고 최소 서브블록의 크기가 8x8인 경우, 최대 분할 레이어는 2임을 알 수 있으므로 2개의 레이어에 대한 사용가능 여부를 나타내는 데이터를 비트스트림으로부터 추출하여 복호화한다. 복원한 각 레이어의 사용 가능 여부가 레이어 0은 사용 가능하지 않고 레이어 1은 사용 가능한 경우, 매크로블록은 레이어 1에 속하는 서브블록 타입인 16x16, 16x8, 8x16, 8x8 블록 타입만을 가질수 있다. 그러므로 매크로블록의 분할 정보 복호화 시, 매크로블록을 4개의 16x16 서브블록으로 분할하고 각 16x16의 분할 정보만을 비트스트림으로부터 추출하고 복호화한다.
이때 최대 분할 레이어 값을 복호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 방법들 중 영상 부호화 장치와 약속된 방법을 이용하여 복호화할 수 있다.
또는 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 방법을 이용하여 복호화할 수 있다.
각 레이어의 사용 가능 여부를 나타내는 정보를 복호화하는 방법은 각 레이어마다 사용가능 여부를 나타내는 데이터를 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 방법들 중 영상 부호화 장치와 약속된 방법을 이용하여 복호화할 수 있다.
또는 각 레이어의 사용 여부를 조합한 Table의 인덱스를 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 방법을 이용하여 복호화하고 영상 부호화 장치와 약속된 Table을 이용하여 각 레이어의 사용 여부를 추출할 수도 있다.
또는 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 방법을 이용하여 정수값을 복호화하고 복호화한 정수값을 최대 분할 레이어 값을 비트수로 가지는 이진비트로 나타내어 복호화할 수도 있다.
이하에서는 도 30의 실시예에 따른 복호화 방법을 설명한다.
도 30의 전술한 실시예에서 영상 부호화 장치에 분할 정보로 부호화한 데이터는 최대 분할 정보 4, 각 레이어들의 사용 여부를 나타내는 레이어 플래그(Layer Flag) '1001' 분할 타입 지시 정보 {3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}이다.
영상 복호화 장치는 비트스트림으로부터 최대 분할 레이어 데이터를 비트스트림으로부터 추출하고 복호화하여 최대 분할 레이어 값 4를 복원한다. 최대 분할 레이어가 4이므로 4개의 레이어들에 대해서 사용 가능 여부를 나타내는 플래그 (Layer Flag)를 복원한다. 비트스트림으로부터 1비트를 추출하고 복호화하여 레이어 0의 Layer_Flag를 복원한다. 레이어 0의 사용 가능 여부를 나타내는 플래그를 복원한 후, 동일한 방법으로 레이어 1, 레이어 2, 레이어 3의 Layer_Flag를 비트스트림으로부터 추출하고 복호화한다. 복원한 레이어 0의 Layer Flag는 1이고 레이어 1의 Layer Flag는 0이고 레이어 2의 Layer Flag는 0이고 레이어 3의 Layer Flag는 1이므로 레이어 0과 레이어 3은 사용 가능한 레이어로 설정하고 레이어 1과 레이어 2는 사용 가능하지 않은 레이어로 설정하고 상기 정보들을 매크로블록의 분할 정보를 복호화할 때 이용한다.
첫번째 복원한 분할 타입 지시 정보가 3이므로 매크로블록을 4개의 32x32 서브블록으로 분할하고 각 32x32 서브블록의 분할 타입 지시 정보를 비트스트림으로부터 추출하고 복호화한다.
여기서, 레이어 번호 K인 NxN블록이 4개의 서브블록으로 분할된 경우, 분할된 서브블록에 레이어 번호를 할당하는 방법은 각 레이어의 사용가능 여부에 따라 달라지게 된다. 만약 레이어 K+1이 사용 가능한 경우 서브블록에 레이어 번호 K+1을 할당하고 레이어 K+1이 사용 가능하지 않은 경우에는 서브블록의 레이어 번호에 레이어 번호 K를 할당한다.
도 30의 실시예에서 매크로블록으로부터 분할된 32x32 서브블록은 레이어 0에도 속할 수 있고 레이어 1에도 속하는 서브블록 타입이지만, 레이어 1은 사용 가능하지 않으므로 32x32 서브블록의 레이어 번호는 0이 된다.
두번째로 복원한 분할 타입 지시 정보가 0이므로 매크로블록내 첫번째 32x32 서브블록(L0-P0)의 서브블록 타입은 32x32이 된다. 첫번째 32x32 서브블록의 분할 타입 지시 정보가 3이 아니므로 매크로블록 내 두번째 32x32 서브블록(L0-P1)의 분할 타입 지시 정보를 복호화한다.
세번째로 복원한 분할 타입 지시 정보가 3이고 레이어 1과 레이어 2는 사용 가능하지 않으므로 L0-P1블록은 16개의 8x8 서브블록(L3-P0부터 L3-P15)으로 분할하고, 8x8 서브블록은 더 작은 서브블록으로 분할될 수 있으므로 각 8x8 서브블록의 분할 타입 지시 정보를 비트스트림으로부터 추출하고 복호화한다.
네번째부터 열아홉번째까지 복원한 분할 타입 지시 정보가 모두 0이므로 L0-P1에서 분할된 L3-P0부터 L3-P15의 서브블록 타입은 모두 8x8임을 알 수 있다.
스무번째로 복원한 분할 타입 지시 정보가 3이고 레이어 1과 레이어 2는 사용 가능하지 않으므로 L0-P2블록은 16개의 8x8 서브블록(L3-P0부터 L3-P15)으로 분할하고, 8x8 서브블록은 더 작은 서브블록으로 분할될 수 있으므로 각 8x8 서브블록의 분할 타입 지시 정보를 비트스트림으로부터 추출하고 복호화한다.
다음으로 복원한 분할 타입 지시 정보는 2이므로 L0-P2에 속하는 L3-P0는 두개의 4x8 서브블록으로 분할하고 이후 복원한 15개의 분할 타입 지시 정보는 모두 0이므로 L3-P1부터 L3-P15의 서브블록 타입은 모두 8x8로 설정한다.
마지막으로 복원한 분할 타입 지시 정보는 0이므로 L0-P3의 서브블록 타입은 32x32이 되고 매크로블록 내 모든 서브블록들의 분할 타입이 결정되었으므로 분할 정보 복호화 과정을 마친다.
C-2-1) 복호화 순서도
도 33은 본 발명의 또 다른 실시예에 따른 영상 복호화 방법을 설명하기 위한 순서도이다.
본 발명의 또 다른 실시예에 따른 영상 복호화 방법에 따르면, 영상 복호화 장치(3200)는 비트스트림으로부터 추출되는 부호화된 최대 분할 레이어 데이터를 복호화하여 최대 분할 레이어값을 복원하고(S3310), 비트스트림으로부터 추출되는 부호화된 영상 데이터를 복원되는 최대 분할 레이어값에 따른 최소 서브블록 크기를 이용하여 예측 복호화하여 현재 블록을 복원한다(S3320).
이상에서 전술한 바와 같이 본 발명의 또 다른 실시예에 따르면, 16x16 블록 크기 이상의 매크로블록이 다양한 블록 크기의 서브블록으로 분할되는 경우에도, 최대 분할 레이어값을 이용하여 최소 서브블록 크기를 설정할 수 있으며, 그에 따라 사용하지 않는 레이어에 대한 분할 정보를 부호화하지 않아도 되므로 매크로블록의 분할 정보를 작은 비트수로 부호화함으로써, 압축 효율을 향상시킬 수 있다.
또한, 본 발명의 또 다른 실시예에 따른 영상 부호화 장치는 현재 블록의 사용 가능한 분할 레이어를 결정하고, 사용 가능한 분할 레이어 중에서 현재 블록의 부호화 비용을 최소화하는 분할 레이어를 선택하며, 선택되는 분할 레이어만을 이용하여 현재 블록을 예측 부호화하여 부호화된 영상 데이터를 생성하며, 선택된 분할 레이어에 대한 정보를 부호화하여 생성되는 부호화된 분할 레이어 데이터, 선택된 분할 레이어를 이용하여 현재 블록을 분할한 분할 정보를 부호화하여 생성되는 부호화된 분할 정보 데이터 및 부호화된 영상 데이터를 포함하는 비트스트림을 생성할 수 있다. 여기서, 현재 블록의 부호화 비용을 최소화하는 분할 레이어는 하나 이상 복수 개로 선택될 수 있다. 따라서, 영상 부호화 장치는 현재 블록에 대해 사용 가능한 분할 레이어를 결정하고 사용 가능한 분할 레이어 중에서 현재 블록의 부호화 비용을 최소화하는 하나 이상 복수 개의 분할 레이어를 선택하며, 선택된 하나 이상 복수 개의 분할 레이어만을 이용하여 현재 블록을 분할하고 예측 부호화함으로써 부호화된 영상 데이터를 생성할 수 있다. 이를 통해 영상 부호화 장치는 매크로블록의 분할 정보를 더욱 작은 비트수로 부호화하여 압축 효율을 높일 수 있다.
또한, 본 발명의 또 다른 실시예에 따른 영상 복호화 장치는 비트스트림으로부터 추출되는 부호화된 분할 레이어 데이터와 부호화된 분할 정보 데이터를 복호화하여 분할 레이어에 대한 정보와 분할 정보를 복원하고, 비트스트림으로부터 추출되는 부호화된 영상 데이터를 복원되는 분할 레이어에 대한 정보와 분할 정보를 이용하여 부호화된 영상 데이터를 예측 복호화하여 현재 블록을 복원할 수 있다.
D) 매크로블록 크기 부호화 및 복호화
전술한 실시예들에서 매크로블록은 영상 부호화 장치와 영상 복호화 장치 간에 약속된 임의의 크기를 가진다고 가정하였다. 그리고 그 가정 하에 매크로블록의 분할 방법, 분할 정보 부호화 및 복호화에 대한 다양한 실시예들을 설명하였다.
이하에서는, 가변적인 크기를 갖는 매크로블록의 크기를 결정하는 방법, 결정된 매크로블록의 크기를 복호화장치로 시그널링하기 위한 부호화 및 복호화에 대해 설명한다.
일반적으로 고해상도 영상에서는 일반적으로 큰 블록 단위로 부호화하는 것이 효율적이기는 하지만 영상의 특성에 따라 가장 큰 크기의 블록으로 부호화한다고 해서 부호화 효율이 항상 향상되는 것은 아니다. 예를 들어, 단조로운 영상의 경우 128x128과 같은 큰 크기의 매크로블록 단위로 부호화하는 것이 효율적일 수 있지만, 복잡한 영상을 128x128 크기의 매크로블록 단위로 부호화한 경우, 대부분의 매크로블록은 더 작은 서브블록으로 분할이 되고 대부분의 서브블록이 16x16이하의 크기의 블록으로 예측 또는 변환이 수행이 될 수 있다. 이 경우 각 매크로블록이 16x16이하 크기의 서브블록으로 분할되었다는 분할정보를 부호화해야 하므로 매크로블록의 크기를 16x16으로 선택하여 부호화하는 것이 효율적이라 할 수 있다.
따라서 본 발명의 다른 실시예에서는 상기 전술된 분할 정보 부호화 방법의 효율을 더욱 높이기 위해 예측 또는 변환을 위해 사용될 수 있는 블록의 최대 크기를 결정하고, 선택된 크기의 블록 단위로 영상을 부호화하며, 복호화 할 때는 비트스트림에 포함된 정보에 의해 식별되는 최대 블록 크기로 복호화하여 영상을 복원한다.
이하에서는 설명의 편의를 위해, 예측을 위해 사용될 수 있는 최대 블록의 크기(예컨대 매크로블록)와 변환을 위해 사용될 수 있는 최대 블록의 크기를 각각 설정하는 것에 대한 내용은 기술하지 않지만, 예측을 위한 최대블록의 크기와 변환을 위한 최대블록의 크기를 각각 설정하는 것도 적용 가능하다.
또한 각각의 정보는 시퀀스 헤더 또는 픽처 헤더 또는 슬라이스 헤더, 또는 매크로블록 헤더에서 부호화할 수 있다.
이하에서 설명하는 실시예에 따라 매크로블록의 크기가 결정된 후, 전술한 본 발명의 실시예에 따른 매크로블록의 분할 방법에 따라 매크로블록이 서브블록들로 분할될 수 있다. 그리고 서브블록 단위로 예측 또는 변환이 수행될 수 있다. 이 때 본 발명의 실시예에 따른 영상 부호화장치는 매크로블록의 크기를 나타내는 정보 및/또는 매크로블록의 분할에 관한 분할정보를 부호화하여 본 발명의 실시예에 따른 영상 복호화 장치로 전송할 수 있다. 본 발명의 실시예에 따른 영상 복호화장치는 매크로블록의 크기를 나타내는 정보 및/또는 매크로블록의 분할정보를 복호화하여 현재 복호할 매크로블록의 크기 및/또는 매크로블록의 서브블록들에 관한 정보를 알 수 있다. 전술한 바와 같이 분할정보는 다양하게 구현될 수 있다. 본 발명의 실시예에 따른 매크로블록의 분할정보는 매크로블록이 서브블록들로 분할되었는지 여부 및/또는 매크로블록이 어떤 서브블록들로 분할되었는지를 본 발명의 실시예에 따른 영상 복호화장치로 시그널링한다.
D-1) 영상 부호화 장치
D-1-1) 부호화 장치 설명
도 35는 본 발명의 또 다른 실시예에 따른 영상 부호화 장치(3500)를 간략하게 나타낸 블록 구성도이다.
본 발명의 다른 실시예에 따른 영상 부호화 장치의 구현 예에 따르면, 영상 부호화 장치는 후보 매크로블록 크기 설정기(Candidate Macroblock Size Configuration Unit, 3510), 영상 부호화기(Video Encoder, 3520) 및 매크로블록 크기 결정기(Macroblock Size Determiner, 3530)를 포함하여 구성될 수 있다.
후보 매크로블록 크기 설정기(3510)는 본 발명의 또 다른 실시예에 따른 영상 부호화 장치(3500)가 사용할 수 있는 매크로블록 크기의 후보를 설정한다. 매크로블록 크기의 후보는 사용자 등에 의해 입력되거나 기타 다른 장치로부터 입력되는 정해진 후보군(예를 들어, 64x64 크기, 32x32 크기, 16x16 크기)이거나, 영상의 특성에 따라 결정될 수 있다.
매크로블록 크기의 후보가 영상의 특성에 따라 결정되는 경우를 예를 들면, 영상의 해상도가 4K x 2K의 영상이고 가로와 세로 비율이 16:9인 경우, 매크로블록 크기의 후보는 128x128 크기, 128x64 크기, 64x128 크기, 64x64 크기, 64x32 크기, 32x64 크기, 32x32 크기, 32x16 크기, 16x32 크기, 16x16 크기일 수 있다.
영상 부호화기(3520)는 도 6 또는 도8 또는 도 26을 통해 전술한 본 발명의 일 실시예에 따른 영상 부호화 장치로 구현될 수 있다. 즉, 영상 부호화기(3520)는 후보 매크로블록 크기 설정기(3510)에 의해 설정된 매크로블록 크기의 후보별로 영상을 부호화하여, 매크로블록 크기별 영상 데이터를 생성한다. 이때, 각 매크로블록은 내부적으로 더 작은 블록인 서브블록(여기서, 서브블록으로 결정되는 최소 서브블록 크기는 4x4 화소 단위의 블록일 수 있음)으로 분할되어 인트라 부호화 또는 인터 부호화를 수행한다. 매크로블록내 서브블록들의 크기와 모양을 나타내는 분할 정보는 전술한 실시예들에 의해 분할 정보 부호화 방법을 사용하여 비트스트림에 포함시킬 수 있다.
영상 부호화기(3520)의 또 다른 동작 방법으로 16x16 크기와 32x32 크기를 매크로블록의 크기로 하여 부호화해 본 후, 32x32 크기의 매크로블록을 사용했을 때 부호화 비용이 더 큰 경우 16x16 크기를 매크로블록의 크기로 결정할 수 있다. 만약, 32x32 크기의 매크로블록을 사용했을 때의 부호화 비용이 더 작은 경우에는 같은 방식으로 64x64 크기의 매크로블록을 사용하여 부호화했을 때의 비용과 비교하여 매크로블록의 크기를 결정한다.
또한, 영상 부호화기(3520)의 또 다른 동작 방법으로 16x16 크기, 32x16 크기, 16x32 크기, 32x32 크기를 매크로블록 크기로 하여 부호화해 본 후, 가장 부호화 효율이 좋은 매크로블록의 크기를 선택하고 선택된 매크로블록의 가로, 세로, 가로와 세로를 각각 2 배 했을 때의 화소 블록을 매크로블록으로 사용하여 부호화한다. 만약, 매크로블록의 크기를 키웠을때의 부호화 효율이 좋아지지 않으면 부호화를 멈추고 매크로블록의 크기를 결정한다.
매크로블록 크기 결정기(3530)는 영상 부호화기(3520)가 매크로블록 크기별로 영상을 부호화했을 때의 부호화 비용(즉, 매크로블록 크기별 영상 데이터의 부호화 비용)을 계산하고 각 매크로블록 크기별로 부호화 비용을 서로 비교하여 매크로블록 크기의 후보들 중 최적의 매크로블록 크기를 결정한다. 여기서, 최적의 매크로블록 크기는 각 매크로블록 크기의 후보들 중 해당 매크로블록 크기로 부호화했을 때의 부호화 비용이 최소인 매크로블록 크기가 될 수 있지만, 부호화 비용을 이용하는 경우라면 그를 이용하여 다양하게 결정될 수 있다.
또한, 매크로블록 크기 결정기(3530)는 매크로블록 크기가 결정되면, 해당 매크로블록 크기로 부호화된 영상 데이터를 비트스트림으로 생성하는데, 이때 결정된 매크로블록 크기에 대한 정보를 부호화하여 비트스트림에 포함시킬 수 있다. 이러한 매크로블록 크기에 대한 정보는 전체 영상에 대한 비트스트림에 한 번만 포함될 수도 있지만, 전체 영상의 픽처마다 비트스트림에 포함될 수도 있다. 또한 본 발명의 다른 실시예에 의하면, 부호화/복호화의 단위인 매크로블록 사이즈는 픽쳐, 슬라이스 또는 매크로블록 계층마다 다르게 선택될 수 있다.
D-1-2) 매크로블록 크기 부호화 방법
이하에서는 매크로블록의 크기를 부호화하는 본 발명의 실시예에 따른 다양한 방법들을 설명한다.
전술한 바와 같이 매크로블록의 크기는 최소 서브블록의 크기와 최대 분할 레이어(MaxLayer)를 이용하여 계산할 수 있으므로, 매크로블록의 크기는 결정된 매크로블록의 크기 값을 부호화할 수도 있고 최소 서브블록의 크기와 최대 분할 레이어를 부호화할 수도 있다.
즉, 매크로블록의 크기 또는 최소 서브블록의 크기를 나타내는 블록의 크기 정보를 부호화하고 최소 서브블록의 크기를 부호화하는 방법의 경우 최대 분할 레이어(MaxLayer) 정보를 함께 부호화하여 영상 복호화 장치에 전송한다.
최대 분할 레이어 정보를 부호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화를 이용하여 이진 비트 스트링(Bit String)으로 부호화될 수 있다. 또는 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 부호화할 수 있다.
D-1-2-1) 매크로블록 크기 부호화 방법1
먼저 매크로블록의 크기를 부호화하는 첫번째 방법을 설명한다.
시퀀스 헤더 또는 각 픽처의 헤더 또는 슬라이스 헤더에 매크로블록의 크기에 대한 정보를 보낼지에 대한 플래그(Set_MBsize_flag)를 포함시킬 수 있다. 상기 플래그의 값에 따라 매크로블록 크기를 전송할 수도 있고 전송하지 않을 수도 있다. 전송하지 않는 경우에는 소정 크기의 매크로블록, 예컨대 16x16 블록을 매크로블록으로 사용한다.
만약 매크로블록의 크기를 지정하는 경우에는 매크로블록의 크기에 대한 정보를 전송한다. 이때 매크로블록의 가로 크기와 세로 크기를 따로 설정하여 임의의 크기의 매크로블록을 사용할 수도 있다. 또는 정사각형 매크로블록을 사용하는 경우 한 변의 길이를 나타내는 정보만을 부호화한 후 복호화 장치로 전송할 수 있다.
부호화할 매크로블록 크기값은 실제 매크로블록의 크기를 지정할 수도 있고 소정의 크기로부터 몇 배를 키울지 또는 축소 시킬지에 대한 값을 보낼수도 있다. 또한, 매크로블록 크기값을 그대로 부호화하는 대신, 매크로블록 크기값에 로그 함수를 적용함으로써 보다 적은 비트를 이용하여 매크로블록 크기값을 나타낼 수 있다. 예컨대, log2(선택된 MBsize/X) (X는 2의 배수인 임의의 양의 정수) 의 값을 부호화한다. 이 때 사용 가능한 최소 매크로블록의 크기를 X의 값으로 선택할 수 있다. 예를 들어 사용 가능한 최소 매크로블록의 크기가 8x8이라면 X의 값을 8로 선택함이 바람직하다. 이 경우, 현재 매크로블록이 8x8 블록인 경우 0을 부호화하고, 16x16 블록인 경우 1을 부호화한다. 만약, 사용 가능한 최소 매크로블록의 크기가 16x16이라면 X의 값을 8 대신에 16으로 선택함이 바람직하다. 이 경우, 현재 매크로블록이 16x16 블록인 경우 0을 부호화하고, 32x32 블록인 경우 1을 부호화한다. 따라서 8, 16 또는 32 라는 큰 수를 부호화할 때보다 적은 비트를 이용하여 현재 매크로블록의 크기를 나타낼 수 있다.
또한, 가로와 세로에 대한 비율을 따로 부호화 할 수도 있다.
또는 영상 부호화 장치와 영상 복호화 장치가 약속한 Table의 인덱스 값일 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 전송할 매크로블록 크기를 부호화할 수 있다.
이하에서는 설명의 편의를 위해, 가로와 세로의 크기를 각각 설정하는 것에 대한 내용은 기술하지 않지만, 가로와 세로의 크기를 각각 설정하는 것도 적용 가능하다. 또한, 시퀀스 헤더와 픽처 헤더 상에서 데이터를 부호화하는 것으로 예를 들었지만, 슬라이스 헤더 또는 매크로블록 해더에서 부호화할 수도 있다.
아래는 전술한 매크로블록의 크기 부호화에 관한 첫번째 방법에 따른 신택스의 일 예를 나타낸다.
Set_MBsize_Flag
if(Set_MBsize_Flag == 1)
{
MBsize
}
또는
Set_MBsize_Flag
if(Set_MBsize_Flag == 1)
{
MBsize_width
MBsize_height
}
또한 매크로블록의 크기를 나타내는 MB_size와 같은 블록의 크기 정보는 최소 서브블록의 크기와 최대 분할 레이어를 통해 부호화 할 수 있다.
여기서 부호화할 최소 서브블록 크기값은 실제 최소서브블록의 크기를 지정할 수도 있고 소정의 크기로부터 몇 배를 키울지 또는 축소 시킬지에 대한 값을 보낼 수도 있다. 또한, 최소 서브블록 크기값을 그대로 부호화하는 대신, 최소 서브블록 크기값에 로그 함수를 적용함으로써 보다 적은 비트를 이용하여 매크로블록 크기값을 나타낼 수 있다. 예컨대, log2(minBlockSize/X) (X는 2의 배수인 임의의 양의 정수) 의 값을 부호화한다. 이 때 사용 가능한 최소 서브블록의 크기를 X의 값으로 선택할 수 있다. 예를 들어 사용 가능한 최소 서브블록의 크기가 4x4이라면 X의 값을 4로 선택함이 바람직하다. 이 경우, 현재 매크로블록의 크기에 따른 부호화할 최소 서브블록이 4x4 블록인 경우 0을 부호화하고, 8x8 블록인 경우 1을 부호화한다. 만약, 사용 가능한 최소 매크로블록의 크기가 8x8이라면 X의 값을 4 대신에 8로 선택함이 바람직하다. 이 경우, 현재 매크로블록의 크기에 따른 최소 서브블록의 크기가 8x8 블록인 경우 0을 부호화하고, 16x16 블록인 경우 1을 부호화한다.
또한, 가로와 세로에 대한 비율을 따로 부호화 할 수도 있다.
또는 영상 부호화 장치와 영상 복호화 장치가 약속한 블록의 크기를 정의한 Table의 인덱스 값일 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 부호화할 수 있다.
최대 분할 레이어 정보를 부호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화를 이용하여 이진 비트 스트링(Bit String)으로 부호화될 수 있다. 또는 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 부호화할 수 있다.
매크로블록의 크기를 최소 서브블록의 크기와 최대 분할 레이어를 이용하여 부호화하는 경우 전술한 첫번째 신택스의 일 예는 다음과 같이 나타낼수 있다.
Set_MBsize_Flag
if(Set_MBsize_Flag == 1)
{
minBlockSize
MaxLayer
}
또는
Set_MBsize_Flag
if(Set_MBsize_Flag == 1)
{
minBlockSize_width
minBlockSize _height
MaxLayer
}
또는 매크로블록의 크기에 대한 정보를 보낼지에 대한 플래그 (Set_MBsize_flag)를 부호화 하지 않고 시퀀스, 픽쳐, 슬라이스 또는 매크로블록 해더마다 매크로블록의 크기를 영상 복호화 장치로 전송할 수도 있다.
D-1-2-2) 매크로블록 크기 부호화 방법 2
이하에서는 매크로블록의 크기를 부호화하는 두번째 방법을 설명한다.
두번째 방법에 따르면, MxN 크기를 기준 매크로블록의 크기로 설정하고 각 픽처 또는 슬라이스, 매크로블록 헤더마다 기준 매크로블록의 크기를 사용할지를 나타내는 플래그를 부호화하고 기준 매크로블록 크기를 사용하지 않을 경우, 선택된 매크로블록의 크기를 부호화한다. 또는 시퀀스 헤더에서 기준 매크로블록의 크기를 설정할지를 나타내는 플래그를 부호화한 후 기준 매크로블록의 크기를 설정하지 않는 경우 소정 사이즈, 예컨대 16x16 크기를 기준 매크로블록의 크기로 사용하고 기준 매크로블록의 크기를 설정하는 경우에는 기준 매크로블록의 크기를 부호화하여 시퀀스 헤더 등에 포함시킬 수도 있다.
여기서 기준 매크로블록의 크기를 나타내는 정보인 defalt_MBsize 또는 현재 매크로블록의 크기를 나타내는 정보인 MB_size 값을 부호화하는 방법은 실제 매크로블록의 크기를 지정할 수도 있고 소정의 크기로부터 몇 배를 키울지 또는 축소 시킬지에 대한 값을 보낼수도 있다. 또는 전술한 첫번째 방법에서 설명한 바와 같이, 매크로블록 크기값을 그대로 부호화하는 대신, 매크로블록 크기값에 로그 함수를 적용함으로써 보다 적은 비트를 이용하여 매크로블록 크기값을 나타낼 수 있다.
또한, 가로와 세로에 대한 비율을 따로 부호화 할 수도 있다.
또는 영상 부호화 장치와 영상 복호화 장치가 약속한 블록의 크기를 정의한 Table의 인덱스 값일 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 전송할 매크로블록 크기를 부호화할 수 있다.
아래는 전술한 매크로블록의 크기 부호화에 관한 두번째 방법에 따른 신택스의 일 예를 나타낸다.
시퀀스, 픽쳐, 또는 슬라이스 해더
Set_defaultMBsize_Flag
if(Set_MBsize_Flag == 1)
{
defalt_MBsize
}
픽쳐, 슬라이스 또는 매크로블록 해더
use_defalt_MBsize_flag
if(use_defalt_MBsize_flag == 0)
{
MB_size
}
또한 기준 매크로블록의 크기를 나타내는 default_MBsize와 매크로블록의 크기를 나타내는 MB_size와 같은 블록의 크기 정보는 최소 서브블록의 크기와 최대 분할 레이어를 통해 부호화 할 수 있다.
여기서 기준 매크로블록의 크기를 나타내기 위한 기준 최소 서브블록의 크기 정보 default_minBlockSize 또는 현재 매크로블록의 크기를 나타내는 정보를 나타내기 위한 최소 서브블록의 크기 minBlockSize 값을 부호화하는 방법은 실제 부호화할 최소 서브블록의 크기를 지정할 수도 있고 소정의 크기로부터 몇 배를 키울지 또는 축소 시킬지에 대한 값을 보낼수도 있다. 또는 전술한 첫번째 방법에서 설명한 바와 같이, 최소 서브블록 크기값을 그대로 부호화하는 대신, 최소 서브블록 크기값에 로그 함수를 적용함으로써 보다 적은 비트를 이용하여 최소 서브블록 크기값을 나타낼 수 있다.
또한, 가로와 세로에 대한 비율을 따로 부호화 할 수도 있다.
또는 영상 부호화 장치와 영상 복호화 장치가 약속한 블록의 크기를 정의한 Table의 인덱스 값일 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 전송할 최소 서브블록 크기를 부호화할 수 있다.
최대 분할 레이어 정보를 부호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화를 이용하여 이진 비트 스트링(Bit String)으로 부호화될 수 있다. 또는 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 부호화할 수 있다.
매크로블록의 크기를 최소 서브블록의 크기와 최대 분할 레이어를 이용하여 부호화하는 경우 전술한 두번째 신택스의 일 예는 다음과 같이 나타낼 수 있다.
시퀀스, 픽쳐, 또는 슬라이스 해더
Set_defaultMBsize_Flag
if(Set_MBsize_Flag == 1)
{
default_minBlockSize
default_MaxLayer
}
픽쳐, 슬라이스 또는 매크로블록 해더
use_defalt_MBsize_flag
if(use_defalt_MBsize_flag == 0)
{
minBlockSize
MaxLayer
}
D-1-2-3) 매크로블록 크기 부호화 방법 3
이하에서는 매크로블록의 크기를 부호화하는 세번째 방법을 설명한다.
세번째 방법에 따르면, MxN 크기를 기준 매크로블록의 크기로 설정하고 각 픽처 또는 슬라이스, 매크로블록 헤더마다 기준 매크로블록의 크기를 사용할지 여부를 나타내는 플래그를 부호화하여 영상 복호화 장치로 전송한다. 상기 플래그가 기준 매크로블록 크기를 사용할 것을 나타내는 경우, 기준 매크로블록의 크기와 동일한 크기의 블록이 현재 매크로블록으로 선택된다. 그러나 상기 플래그가 기준 매크로블록 크기를 사용하지 않음을 나타내는 경우, 기준 매크로블록의 크기로부터 소정 비율만큼 확장 또는 축소한 블록이 현재 매크로블록으로서 부호화 또는 복호화 과정에서 선택된다. 예컨대, 기준 매크로블록의 가로 및 세로 길이가 두 배로 확장된 또는 1/2로 축소된 가로 및 세로 길이를 갖는 블록이 현재 매크로블록으로 선택될 수 있다.
만약, 다양한 확장 또는 축소 비율을 가지는 경우에는 상기 플래그의 길이를 2비트 이상이 되도록 하여 다양한 비율을 나타내게 할 수 있다. 또는 기준 매크로블록의 크기를 사용할지 여부를 나타내는 플래그 외에 추가로 확장 비율 또는 축소비율을 나타내는 정보를 부호화할 수 있다.
상기 플래그가 기준 매크로블록 크기를 사용하지 않음을 나타내고 또한 기준 매크로블록의 크기로부터 확장된 블록이 현재 매크로블록으로 선택되는 경우, 상기 기준 매크로블록의 크기는 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최소 매크로블록의 크기에 해당한다. 반대로, 상기 플래그가 기준 매크로블록 크기를 사용하지 않음을 나타내고 또한 기준 매크로블록의 크기로부터 축소된 블록이 현재 매크로블록으로 선택되는 경우, 상기 기준 매크로블록의 크기는 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최대 매크로블록의 크기에 해당한다.
영상 복호화 장치는 기준 매크로블록의 크기를 사용할지 여부를 나타내는 상기 플래그 및/또는 기준 매크로블록의 크기로부터 소정 비율만큼 확장 또는 축소할 것을 지시하는 추가 정보를 이용하여 현재 매크로블록의 크기를 선택할 수 있다.
본 발명의 일 실시예에 따르면 기준 매크로블록의 크기를 설정할지를 나타내는 플래그를 비트스트림의 시퀀스 헤더에 포함시킬 수 있다. 기준 매크로블록의 크기를 설정하지 않는 경우 소정 사이즈, 예컨대 16x16 크기를 기준 매크로블록의 크기로 사용하도록 미리 약속될 수 있다.
만약, 기준 매크로블록의 크기를 설정하여 영상 복호화 장치로 시그널링하는 경우에는 기준 매크로블록의 크기를 나타내는 정보를 부호화하여 시퀀스 헤더 등에 포함시킬 수 있다. 본 발명의 일 실시예에 따르면, 영상 부호화 장치는 기준 매크로블록의 크기를 나타내는 정보로서 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최대 매크로블록의 크기를 나타내는 정보를 영상 복호화 장치로 시그널링 할 수 있다. 본 발명의 다른 실시예에 따르면, 영상 부호화 장치는 기준 매크로블록의 크기를 나타내는 정보로서 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최소 매크로블록의 크기를 나타내는 정보를 영상 복호화 장치로 시그널링 할 수 있다. 본 발명의 또 다른 실시예에 따르면, 영상 부호화 장치는 기준 매크로블록의 크기를 나타내는 정보로서 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최대 매크로블록의 크기와 최소 매크로블록의 크기 양자를 영상 복호화 장치로 시그널링 할 수 있다.
기준 매크로블록의 크기를 나타내는 정보인 defalt_MBsize를 부호화하는 방법은 실제 매크로블록의 크기를 지정할 수도 있고 소정의 크기로부터 몇 배를 키울지 또는 축소시킬지에 대한 값을 보낼 수도 있다. 또는 전술한 첫번째 방법에서 설명한 바와 같이, 매크로블록 크기값을 그대로 부호화하는 대신, 매크로블록 크기값에 로그 함수를 적용함으로써 보다 적은 비트를 이용하여 매크로블록 크기값을 나타낼 수 있다.
보다 구체적으로 설명하면, 예컨대, defalt_MBsize가 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최대 매크로블록의 크기를 나타낸다면, log2(X/defalt_MBsize) (X는 2의 배수인 임의의 양의 정수) 의 값을 부호화한다. 이 때 가능한 최대 매크로블록의 크기를 X의 값으로 선택할 수 있다. 또는 defalt_MBsize가 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최소 매크로블록의 크기를 나타낸다면, log2(defalt_MBsize/X) (X는 2의 배수인 임의의 양의 정수) 의 값을 부호화한다. 이때 가능한 최소 매크로블록의 크기를 X의 값으로 선택할 수 있다.
또한, 가로와 세로에 대한 비율을 따로 부호화 할 수도 있다.
또는 영상 부호화 장치와 영상 복호화 장치가 약속한 Table의 인덱스 값일 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 전송할 매크로블록 크기를 부호화할 수 있다.
또한 기준 매크로블록의 크기를 나타내는 default_MBsize와 매크로블록의 크기를 나타내는 MB_size와 같은 블록의 크기 정보는 최소 서브블록의 크기와 최대 분할 레이어를 통해 부호화 할 수 있다.
기준 매크로블록의 크기에 따른 기준 최소 서브블록의 크기를 나타내는 정보인 default_minBlockSize를 부호화하는 방법은 실제 부호화할 최소 서브블록의 크기를 지정할 수도 있고 소정의 크기로부터 몇 배를 키울지 또는 축소 시킬지에 대한 값을 보낼수도 있다. 또는 전술한 첫번째 방법에서 설명한 바와 같이, 최소 서브블록 크기값을 그대로 부호화하는 대신, 최소 서브블록 크기값에 로그 함수를 적용함으로써 보다 적은 비트를 이용하여 나타낼 수 있다.
보다 구체적으로 설명하면, 예컨대, defalt_minBlockSize가 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최대 매크로블록의 크기에 따른 최대 서브블록의 크기를 나타낸다면, log2(X/defalt_MBsize) (X는 2의 배수인 임의의 양의 정수) 의 값을 부호화한다. 이 때 가능한 최대 서브블록의 크기를 X의 값으로 선택할 수 있다. 또는 defalt_minBlockSize가 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최소 매크로블록의 크기에 따른 최소 서브블록의 크기를 나타낸다면, log2(defalt_minBlockSize/X) (X는 2의 배수인 임의의 양의 정수) 의 값을 부호화한다. 이 때 가능한 최소 서브블록의 크기를 X의 값으로 선택할 수 있다.
또한, 가로와 세로에 대한 비율을 따로 부호화 할 수도 있다.
또는 영상 부호화 장치와 영상 복호화 장치가 약속한 Table의 인덱스 값일 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 부호화할 수 있다.
최대 분할 레이어 정보를 부호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화를 이용하여 이진 비트 스트링(Bit String)으로 부호화될 수 있다. 또는 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 부호화할 수 있다.
D-1-2-4) 매크로블록 크기 부호화 방법 4
이하에서는 매크로블록의 크기를 부호화하는 네번째 방법을 설명한다.
네번째 방법에 따르면, 첫 번째 픽처에서 기준 매크로블록 크기를 사용할지에 대한 플래그와 기준 매크로블록 크기를 사용하지 않는 경우 선택된 매크로블록의 크기를 부호화한 후, 두번째 픽처부터는 이전 픽처의 매크로블록의 크기를 사용할지에 대한 플래그와 이전 픽처의 매크로블록의 크기를 사용하지 않을 경우 현재 픽처의 매크로블록의 크기를 부호화할 수도 있다.
기준 매크로블록의 크기를 나타내는 정보인 defalt_MBsize 또는 현재 매크로블록의 크기를 나타내는 정보인 MB_size를 부호화하는 방법은 실제 매크로블록의 크기를 지정할 수도 있고 소정의 크기로부터 몇 배를 키울지 또는 축소 시킬지에 대한 값을 보낼수도 있다. 또는 전술한 첫번째 방법에서 설명한 바와 같이, 매크로블록 크기값을 그대로 부호화하는 대신, 매크로블록 크기값에 로그 함수를 적용함으로써 보다 적은 비트를 이용하여 매크로블록 크기값을 나타낼 수 있다.
또한, 가로와 세로에 대한 비율을 따로 부호화 할 수도 있다. 또는 영상 부호화 장치와 영상 복호화 장치가 약속한 Table의 인덱스 값일 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 전송할 매크로블록 크기를 부호화할 수 있다.
아래는 전술한 매크로블록의 크기 부호화에 관한 네번째 방법에 따른 신택스의 일 예를 나타낸다.
첫번째 픽처
use_defalt_MBsize_flag
if(use_defalt_MBsize_flag == 0)
{
MB_size
}
두번째 픽처부터
use_prevPic_MBsize_flag
if(use_prevPic_MBsize_flag == 0)
{
MB_size
}
또한 매크로블록의 크기를 나타내는 MBsize 와 같은 블록의 크기 정보는 최소 서브블록의 크기와 최대 분할 레이어를 통해 부호화 할 수 있다.
실제 부호화할 최소 서브블록의 크기를 지정할 수도 있고 소정의 크기로부터 몇 배를 키울지 또는 축소 시킬지에 대한 값을 보낼수도 있다. 또는 전술한 첫번째 방법에서 설명한 바와 같이, 최소 서브블록 크기값을 그대로 부호화하는 대신, 최소 서브블록 크기값에 로그 함수를 적용할 수도 있다.
또한, 가로와 세로에 대한 비율을 따로 부호화 할 수도 있다. 또는 영상 부호화 장치와 영상 복호화 장치가 약속한 Table의 인덱스 값일 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 부호화할 수 있다.
최대 분할 레이어 정보를 부호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화를 이용하여 이진 비트 스트링(Bit String)으로 부호화될 수 있다. 또는 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 부호화(Binary Coding) 방법을 이용하여 부호화할 수 있다.
기준 매크로블록의 크기 또는 매크로블록의 크기를 최소 서브블록의 크기와 최대 분할 레이어를 이용하여 부호화하는 경우 전술한 네번째 신택스의 일 예는 다음과 같이 나타낼수 있다.
첫번째 픽처
use_defalt_MBsize_flag
if(use_defalt_MBsize_flag == 0)
{
minBlockSize
MaxLayer
}
두번째 픽처부터
use_prevPic_MBsize_flag
if(use_prevPic_MBsize_flag == 0)
{
minBlockSize
MaxLayer
}
D-1-2-5) 매크로블록 크기 부호화 방법 5
이하에서는 매크로블록의 크기를 부호화하는 다섯번째 방법을 설명한다.
다섯번째 방법에 따르면, 인트라 픽처와 인터 픽처의 매크로블록 크기를 다르게 사용한다. 즉, 시퀀스 헤더에서 인트라 픽처를 위한 매크로블록의 크기와 인터 픽처를 위한 매크로블록의 크기를 부호화한다. 또는 첫번째 인트라 픽처와 인터 픽처의 헤더에만 픽처 종류에 따른 각각의 매크로블록의 크기를 부호화하도록 할 수도 있다. 인트라 픽처의 매크로블록의 크기와 인터 픽처의 매크로블록의 크기에 대한 정보를 부호화하는 방법은 앞서 설명한 방법들과 결합되어 사용할 수도 있다
시퀀스헤더
Set_intraMBsize_Flag
Set_interMBsize_Flag
if(Set_intraMBsize_Flag == 1)
{
intraMBsize
}
if(Set_interMBsize_Flag == 1)
{
interMBsize
}
또한 인트라 매크로블록의 크기 또는 인터 매크로블록의 크기 정보는 최소 서브블록의 크기와 최대 분할 레이어를 통해 부호화 할 수도 있다.
인트라 매크로블록의 크기 또는 인터 매크로블록의 크기를 최소 서브블록의 크기와 최대 분할 레이어를 이용하여 부호화하는 경우 전술한 다섯번째 신택스의 일 예는 다음과 같이 나타낼수 있다.
시퀀스헤더
Set_intraMBsize_Flag
Set_interMBsize_Flag
if(Set_intraMBsize_Flag == 1)
{
Intra_minBlockSize
Intra_MaxLayer
}
if(Set_interMBsize_Flag == 1)
{
Inter_minBlockSize
Inter_MaxLayer
}
D-1-3) 부호화 방법 순서도 설명
도 36은 본 발명의 다른 실시예에 따른 영상 부호화 방법의 구현 예를 설명하기 위한 순서도이다.
영상 부호화 장치는 매크로블록 크기의 후보를 설정하고(S3610), 매크로블록 크기의 후보별로 입력 영상을 부호화하여(S3620), 매크로블록 크기의 후보별 영상 데이터의 부호화 비용에 따라 매크로블록 크기를 결정하며(S3630), 결정된 매크로블록 크기로 부호화된 영상 데이터 및 결정된 매크로블록 크기에 대한 정보를 포함하는 비트스트림을 생성한다(S3640). 영상 부호화 장치가 매크로블록 크기의 후보를 설정하고, 매크로블록 크기의 후보별로 영상을 부호화하며, 매크로블록 크기의 후보별로 부호화된 영상 데이터의 부호화 비용에 따라 매크로블록 크기를 결정하는 것에 대해서는 도 35를 통해 전술하였으므로, 상세한 설명은 생략한다.
D-2) 영상 복호화 장치
D-2-1) 복호화 장치 설명
도 37은 본 발명의 다른 실시예에 따른 영상 복호화 장치의 구현예를 나타낸 블록 구성도이다.
본 발명의 다른 실시예에 따른 영상 복호화 장치의 구현 예에 따르면, 영상 복호화 장치(3700)는 매크로블록 크기 설정기(3710)와 영상 복호화기(3720)를 포함하여 구성될 수 있다.
매크로블록 크기 설정기(3710)는 매크로블록단위 복호화를 수행하기 전에 비트스트림으로부터 매크로블록 크기에 대한 정보를 추출하고 추출한 정보를 이용하여 매크로블록 크기를 설정한다.
매크로블록 크기에 대한 정보는 전체 영상에 대한 비트스트림에 한번만 포함하기로 영상 부호화 장치와 약속된 경우 전제 영상에 대한 비트스트림에 한번만 복호화하여 전체 영상 복호화에 추출한 매크로블록 크기를 이용하여 영상을 복원할 수도 있고 픽쳐마다 매크로블록 크기를 부호화/복호화하기로 약속된 경우 비트스트림으로부터 각 픽쳐마다 매크로블록 크기를 추출하여 각 픽쳐마다 다른 매크로블록 크기를 사용하여 영상을 복원할 수도 있다. 또한 본 발명에 따른 다른 실시예에 의하면 매크로블록 크기는 픽쳐, 슬라이스 또는 매크로블록 계층마다 추출하도록 하여 선택된 매크로블록의 크기를 이용하여 영상을 복원할 수도 있다.
영상 복호화기(3720)는 도 7, 도 24, 도 32를 통해 전술한 본 발명의 일 실시예에 따른 영상 복호화 장치로 구현될 수 있으며 복원된 매크로블록의 크기에 따른 분할 정보를 전술한 실시예에 따른 방법들을 통해 복호화하여 매크로블록 내 예측 또는 변환을 위해 분할된 서브블록들의 크기와 모양을 복원한다. 각 서브블록들의 부호화된 영상 데이터를 비트스트림으로부터 추출하고 복호화하여 각 블록들을 복원한다.
D-2-2) 매크로블록 크기 정보 복호화 방법
이하에서는 매크로블록 크기를 복호화하는 본 발명의 실시예에 따른 다양한 방법들을 설명한다.
D-2-2-1) 매크로블록 크기 정보 복호화 방법 1
먼저 매크로블록의 크기를 부호화하는 첫번째 방법에 따른 복호화 방법을 설명한다.
매크로블록의 크기에 대한 정보를 보낼지에 대한 플래그(Set_MBsize_flag)가 포함된 경우, 시퀀스 헤더 또는 각 픽쳐의 헤더 또는 슬라이스 헤더 등의 약속된 위치에서 매크로블록의 크기에 대한 정보를 보낼지에 대한 플래그(Set_MBsize_flag)를 엔트로피 복호화한다. 복호화한 플래그가 매크로블록의 크기가 전송되지 않았음을 나타내는 값인 경우, 영상 부호화 장치와 약속된 소정 크기의 매크로블록, 예컨대 16x16블록을 매크로블록으로 사용한다.
만약 복호화한 매크로블록 크기 지정 플래그(Set_MBsize_flag)가 매크로블록의 크기가 지정되었음을 의미하는 경우, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary-Code), 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 엔트로피 복호화 방법들 중 영상 부호화 장치와 약속된 방법으로 매크로블록의 크기를 엔트로피 복호화하여 추출한다.
만약 매크로블록의 가로 크기와 세로크기가 따로 설정되어 전송된 경우 가로크기와 세로크기를 각각 엔트로피 복호화하여 구할 수도 있고, 또는 정사각형 매크로블록을 사용하는 경우 한 변의 길이를 나타내는 정보만을 엔트로피 복호화할 수도 있다.
복호화 한 값을 실제 매크로블록의 크기로 지정할 수도 있고 복호화 한 값을 영상 부호화 장치와 약속한 소정의 크기로부터 몇배를 키우거나 축소시킨 값을 매크로블록의 크기로 지정할 수도 있다. 또한 영상 부호화 장치에서 매크로블록의 크기값에 로그함수를 적용한 값을 부호화한 경우 엔트로피 복호화한 값을 지수함수를 적용하여 매크로블록의 크기를 설정할 수도 있다 예컨대, 영상 부호화 장치에서 log2(영상 부호화 장치에서 선택된 MBsize/X) (X는 2의 배수인 임의의 양의 정수)의 값인 y를 부호화한 경우 영상 복호화 장치에서는 y값을 엔트로피 복호화하고 X의 값에 2y 를 곱하여 영상 부호화 장치에 선택된 매크로블록의 크기를 구할 수 있다. 여기서 X의 값은 영상 부호화 장치와 영상 복호화 장치가 약속한 값이거나 비트스트림으로부터 매크로블록 크기를 복호화하기 전 추출한 값일 수도 있다. 만약 X의 값으로 사용 가능한 최소 매크로블록의 크기를 선택하여 사용하고 사용 가능한 최소 매크로블록의 크기가 8x8인 경우, 복호화 한 y의 값이 0이면 매크로블록의 크기를 8x8로 설정하고 복호화 한 y의 값이 1이면 매크로블록의 크기를 16x16으로 설정한다. 만약 사용 가능한 최소 매크로블록의 크기가 16x16이라면 X의 값을 8대신 16을 사용하고 복호화한 y의 값이 0인 경우 매크로블록의 크기는 16x16으로 설정한다.
또한 영상 부호화 장치에서 가로와 세로에 대한 비율을 따로 복호화 한 경우 가로에 대한 비율과 세로에 대한 비율을 각각 엔트로피 복호화하여 매크로블록의 크기를 얻을 수도 있다.
또한 영상 부호화 장치와 영상 복호화 장치가 약속한 표의 인덱스값을 부호화한 경우, 복호화한 값을 표의 인덱스값으로 사용하여 매크로블록의 크기를 구할 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 복호화(Binary Coding) 방법을 이용하여 전송할 매크로블록 크기를 복호화 할 수 있다. 이하에서는 설명의 편의를 위해, 가로와 세로의 크기를 각각 복호화하여 추출하는 것에 대한 내용은 기술하지 않지만, 가로와 세로의 크기를 각각 추출하는 것도 적용 가능하다. 또한 시퀀스 헤더와 픽쳐 헤더 상에서 데이터를 복호화하는 것으로 예를 들었지만 영상 부호화 장치에서 슬라이스 헤더 또는 매크로블록 헤더에서 매크로블록의 크기를 부호화한 경우 슬라이스 헤더 또는 매크로블록 헤더에서 매크로블록의 크기를 복호화 할 수도 있다.
또한 영상 부호화 장치와 매크로블록의 크기 정보로 최소 서브블록의 크기와 최대 분할 레이어를 이용하기로 약속된 경우 최소 서브블록의 크기와 최대 분할 레이어 정보를 비트스트림으로부터 추출하여 복호화한 후 매크로블록의 크기를 복원할 수도 있다.
만약 복호화한 매크로블록 크기 지정 플래그(Set_MBsize_flag)가 매크로블록의 크기가 지정되었음을 의미하는 경우, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary-Code), 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 엔트로피 복호화 방법들 중 영상 부호화 장치와 약속된 방법으로 최소 서브블록의 크기를 엔트로피 복호화하여 추출한다.
만약 최소 서브블록의 가로 크기와 세로크기가 따로 설정되어 전송된 경우 가로크기와 세로크기를 각각 엔트로피 복호화하여 구할 수도 있고, 또는 정사각형 매크로블록을 사용하는 경우 한 변의 길이를 나타내는 정보만을 엔트로피 복호화할 수도 있다.
복호화 한 값을 실제 최소 서브블록의 크기로 지정할 수도 있고 복호화 한 값을 영상 부호화 장치와 약속한 소정의 크기로부터 몇배를 키우거나 축소시킨 값을 최소 서브블록의 크기로 지정할 수도 있다. 또한 영상 부호화 장치에서 최소 서브블록의 크기값에 로그함수를 적용한 값을 부호화한 경우 엔트로피 복호화한 값을 지수함수를 적용하여 최소 서브블록의 크기를 설정할 수도 있다 예컨대, 영상 부호화 장치에서 log2(영상 부호화 장치에서 선택된 매크로블록의 크기에 따른 minBlockSize/X) (X는 2의 배수인 임의의 양의 정수)의 값인 y를 부호화한 경우 영상 복호화 장치에서는 y값을 엔트로피 복호화하고 X의 값에 2y 를 곱하여 영상 부호화 장치에 선택된 매크로블록의 크기에 따른 최소 서브블록의 크기를 구할 수 있다. 여기서 X의 값은 영상 부호화 장치와 영상 복호화 장치가 약속한 값이거나 비트스트림으로부터 최소 서브블록 크기를 복호화하기 전 추출한 값일 수도 있다. 만약 X의 값으로 사용 가능한 최소 서브블록의 크기를 선택하여 사용하고 사용 가능한 최소 서브블록의 크기가 4x4인 경우, 복호화 한 y의 값이 0이면 최소 서브블록의 크기를 4x4로 설정하고 복호화 한 y의 값이 1이면 최소 서브블록의 크기를 8x8으로 설정한다. 만약 사용 가능한 최소 서브블록의 크기가 8x8이라면 X의 값을 4대신 8을 사용하고 복호화한 y의 값이 0인 경우 최소 서브블록의 크기는 8x8으로 설정한다.
또한 영상 부호화 장치에서 가로와 세로에 대한 비율을 따로 복호화 한 경우 가로에 대한 비율과 세로에 대한 비율을 각각 엔트로피 복호화하여 최소 서브블록의 크기를 얻을 수도 있다.
또한 영상 부호화 장치와 영상 복호화 장치가 약속한 표의 인덱스값을 부호화한 경우, 복호화한 값을 표의 인덱스값으로 사용하여 최소 서브블록의 크기를 구할 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 복호화(Binary Coding) 방법을 이용하여 최소 서브블록 크기를 복호화 할 수 있다.
최대 분할 레이어 정보를 복호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화를 이용할 수도 있고 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 방법을 이용하여 복호화할 수 있다.
복원한 최소 서브블록의 크기가 NxN이고 최대 분할 레이어가 x인 경우 매크로블록의 크기는 (Nx2x)x(Nx2x)가 된다.
D-2-2-2) 매크로블록 크기 정보 복호화 방법 2
이하에서는 매크로블록의 크기를 부호화하는 두번째 방법에 따른 복호화 방법을 설명한다.
두번째 방법에 따르면, 영상 부호화 장치와 약속된 NxN 크기를 기준 매크로블록 크기로 설정하고 각 픽쳐 또는 슬라이스, 매크로블록 헤더로부터 기준 매크로블록 크기를 사용할지를 나타내는 플래그를 엔트로피 복호화한다. 복호화한 플래그 값이 기준 매크로블록 크기를 사용하지 않음을 뜻하는 경우, 매크로블록 크기 정보를 엔트로피 복호화하여 매크로블록의 관련 정보를 추출하고 매크로블록의 크기를 설정한다. 복호화한 플래그 값이 기준 매크로블록 크기 사용함을 뜻하는 경우, 매크로블록 크기 정보는 비트스트림에 포함되지 않았음을 뜻하므로 사전에 설정된 기준 매크로블록의 크기를 매크로블록의 크기로 설정하여 일련의 복호화 과정을 진행한다.
기준 매크로블록의 크기는 영상 부호화 장치에서 시퀀스 헤더 등에 포함되어 영상 복호화 장치로 전송된 경우, 비트스트림 내 시퀀스 헤더 등의 약속된 위치에서 기준 매크로블록의 크기를 추출할 수도 있다. 여기서 기준 매크로블록의 크기 또는 현재 매크로블록의 크기는 엔트로피 복호화 한 값을 할당할 수도 있고 엔트로피 복호화 한 값으로 소정의 크기를 스케일링 (축소 또는 확대)하여 매크로블록의 크기를 얻을 수도 있다. 또는 전술한 첫번째 복호화 방법에서 설명한 바와 같이, 영상 부호화 장치에서 매크로블록의 크기값에 로그함수를 적용한 값을 부호화한 경우 지수함수를 이용하여 매크로블록의 크기값을 얻을 수도 있다.
또한 영상 부호화 장치에서 가로와 세로에 대한 비율을 따로 복호화 한 경우 가로에 대한 비율과 세로에 대한 비율을 각각 엔트로피 복호화하여 매크로블록의 크기를 얻을 수도 있다.
또한 영상 부호화 장치와 영상 복호화 장치가 약속한 표의 인덱스값을 부호화한 경우, 복호화한 값을 표의 인덱스값으로 사용하여 매크로블록의 크기를 구할 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 복호화(Binary Coding) 방법을 이용하여 전송할 매크로블록 크기를 복호화 할 수 있다.
또한 기준 매크로블록의 크기 또는 매크로블록의 크기 정보가 최소 서브블록의 크기와 최대 분할 레이어 정보인 경우 기준 매크로블록의 크기에 따른 기준 최소 서브블록의 크기 또는 매크로블록의 크기에 따른 최소 서브블록의 크기 정보와 각각에 대한 최대 분할 레이어 정보를 비트스트림으로부터 엔트로피 복호화한 후 매크로블록의 크기를 복호화한다.
여기서 기준 최소 서브블록의 크기와 최소 서브블록의 크기는 비트스트림 내 시퀀스 헤더 등의 약속된 위치에서 최소 서브블록의 크기를 추출할 수도 있다. 여기서 기준 최소 서브블록의 크기 또는 현재 최소 서브블록의 크기는 엔트로피 복호화 한 값을 할당할 수도 있고 엔트로피 복호화 한 값으로 소정의 크기를 스케일링 (축소 또는 확대)하여 최소 서브블록의 크기를 얻을 수도 있다. 또는 전술한 첫번째 복호화 방법에서 설명한 바와 같이, 영상 부호화 장치에서 최소 서브블록의 크기값에 로그함수를 적용한 값을 부호화한 경우 지수함수를 이용하여 최소 서브블록의 크기값을 얻을 수도 있다.
또한 영상 부호화 장치에서 가로와 세로에 대한 비율을 따로 복호화 한 경우 가로에 대한 비율과 세로에 대한 비율을 각각 엔트로피 복호화하여 최소 서브블록의 크기를 얻을 수도 있다.
또한 영상 부호화 장치와 영상 복호화 장치가 약속한 표의 인덱스값을 부호화한 경우, 복호화한 값을 표의 인덱스값으로 사용하여 최소 서브블록의 크기를 구할 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 복호화(Binary Coding) 방법을 이용하여 최소 서브블록 크기를 복호화 할 수 있다.
최대 분할 레이어 정보를 복호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화를 이용할 수도 있고 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 방법을 이용하여 복호화할 수 있다.
복원한 최소 서브블록의 크기가 NxN이고 최대 분할 레이어가 x인 경우 매크로블록의 크기는 (Nx2x)x(Nx2x)가 된다.
D-2-2-3) 매크로블록 크기 정보 복호화 방법 3
이하에서는 매크로블록의 크기를 부호화하는 세번째 방법에 따른 복호화 방법을 설명한다.
세번째 방법에 따르면, 영상 복호화 장치는 기준 매크로블록의 크기를 사용할지 여부를 나타내는 플래그 및/또는 기준 매크로블록의 크기로부터의 소정 비율 만큼 확장 또는 축소할것을 나타내는 추가 정보를 비트스트림으로부터 추출한 후 상기 정보들을 이용하여 현재 매크로블록의 크기를 추출할 수 있다.
먼저, NxN 크기를 기준 매크로블록의 크기로 설정하고 각 픽쳐 또는 슬라이스, 매크로블록 헤더마다 기준 매크로블록의 크기를 사용할지 여부를 나타내는 플래그를 복호화한다. 상기 플래그가 기준 매크로블록 크기를 사용하여 부호화되었음을 나타내는 경우, 현재 매크로블록의 크기는 기준 매크로블록의 크기와 동일한 값으로 설정하고 설정된 매크로블록의 크기를 이용하여 매크로블록 단위로 복호화를 진행한다. 그러나 상기 플래그가 기준 매크로블록 크기를 사용하지 않았음을 나타내는 경우, 기준 매크로블록의 크기로부터 영상 부호화 장치와 약속한 소정 비율만큼 확장 또는 축소한 값을 현재 매크로블록의 크기로 설정하여 매크로블록 단위 복호화를 진행한다. 예컨대, 기준 매크로블록의 가로 및 세로 길이가 두배로 확장된 크기 또는 1/2로 축소된 크기를 현재 매크로블록의 크기로 설정할 수도 있다.
만약, 영상 부호화 장치에서 다양한 확장 또는 축소 비율을 사용하고 선택된 비율을 상기 플래그를 비트스트림에 포함하여 부호화한 경우, 영상 복호화 장치는 비트스트림으로부터 상기 플래그 엔트로피 복호화 시 영상 부호화 장치와 약속된 비트수만큼 복호화하여 다양한 비율을 얻을 수 있다.
또는 기준 매크로블록을 사용할지 여부를 나타내는 플래그 외에 추가로 확장 비율 또는 축소 비율을 나타내는 정보가 비트스트림으로 포함되어 부호화된 경우 기준 매크로블록을 사용할지 여부를 나타내는 플래그를 복호화한 후 플래그 값에 따라 확장 비율 또는 축소 비율을 복호화할수도 있고 하지 않을 수도 있다. 복호화하지 않는 경우 기준 매크로블록의 크기를 현재 매크로블록의 크기로 설정하여 이후 복호화 과정들을 진행한다.
복호화한 상기 플래그가 기준 매크로블록 크기가 현재 매크로블록의 크기와 다름을 나타내고 또한 복호화한 비율이 확장 비율인 경우, 상기 기준 매크로블록의 크기를 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최소 매크로블록의 크기로 설정한 후, 엔트로피 복호화한 비율만큼 기준 매크로블록의 크기를 확장한 크기를 현재 매크로블록의 크기로 설정한다. 반대로 엔트로피 복호화한 비율이 축소비율인 경우, 상기 기준 매크로블록의 크기를 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최대 매크로블록의 크기로 설정한 후, 엔트로피 복호화한 비율만큼 기준 매크로블록의 크기를 축소한 크기를 현재 매크로블록의 크기로 설정한다.
본 발명의 일 실시예에 따르면 기준 매크로블록의 크기를 설정할지를 나타내는 플래그가 비트스트림의 시퀀스 헤더에 포함되어 전송된 경우, 영상 복호화 장치는 시퀀스헤더로부터 상기 플래그를 엔트로피 복호화 한 후 상기 플래그가 기준 매크로블록의 크기가 설정되었음을 나타내는 경우 비트스트림으로부터 시퀀스 헤더등의 약속된 위치에서 기준 매크로블록의 크기 정보를 비트스트림으로부터 추출하여 추출한 정보를 이용하여 기준 매크로블록의 크기를 설정한다. 기준 매크로블로의 크기가 설정되지 않았음을 의미하는 경우에는 영상 부호화 장치와 영상 복호화 장치 사전에 약속한 소정의 사이즈, 예컨대 16x16크기를 기준 매크로블록의 크기로 사용할 수도 있다.
본 발명의 일 실시예에 따르면, 영상 복호화 장치는 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최대 매크로블록의 크기를 나타내는 정보를 비트스트림으로부터 추출하여 기준 매크로블록의 크기를 설정하는데 이용할 수 있다. 본 발명의 다른 실시예에 따르면, 영상 복호화 장치는 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최소 매크로블록의 크기를 나타내는 정보를 비트스트림으로부터 추출하여 기준 매크로블록의 크기를 설정하는데 이용할 수도 있다. 본 발명의 또 다른 실시예에 따르면, 영상 복호화 장치는 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최대 매크로블록의 크기와 최소 매크로블록의 크기를 나타내는 정보를 비트스트림으로부터 추출하여 기준 매크로블록의 크기를 설정하는데 이용할 수도 있다.
기준 매크로블록의 크기를 나타내는 정보인 default_MBsize를 복호화하는 방법은 엔트로피 복호화한 값 자체를 기준 매크로블록 크기값으로 설정할 수도 있고 엔트로피 복호화한 값을 확대 비율 또는 축소 비율로 사용하여 소정의 크기로부터 확대 또는 축소하여 기준 매크로블록의 크기를 얻을 수도 있다. 또는 전술한 첫번째 복호화 방법에서 설명한 바와 같이, 영상 부호화 장치에서 매크로블록의 크기값에 로그함수를 적용한 값을 부호화한 경우 지수함수를 이용하여 매크로블록의 크기값을 얻을 수도 있다.
보다 구체적으로 설명하면, 예컨대, default_MBsize가 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최대 매크로블록의 크기를 나타내고 영상 부호화 장치에서 log2(X/ default_MBsize) (X는 2의 배수인 임의의 양의 정수)의 값인 y를 부호화한 경우, 영상 복호화 장치에서는 y값을 엔트로피 복호화하여 X의 값에 2y 를 곱하여 default_MBsize를 구할 수 있다. 이때 X의 값은 가능한 최대 매크로블록의 크기와 같이 영상 부호화 장치와 영상 복호화 장치가 약속한 값이거나 비트스트림으로부터 default_MBsize를 복호하기 전에 추출한 값일 수도 있다.
또는 default_MBsize가 현재 비트스트림으로부터 이용가능한 최소 매크로블록의 크기를 나타내고, 영상 부호화 장치에서 log2(default_MBsize/X) (X는 2의 배수인 임의의 양의 정수)의 값인 y값을 부호화한 경우, 영상 복호화 장치에서는 y값을 엔트로피 복호화하여 비트스트림으로부터 추출하고 X의 값과 2y를 곱한 값을 default_MBsize로 설정한다. 이때 X의 값은 가능한 최소 매크로블록의 크기와 같이 영상 부호화 장치와 영상 복호화 장치가 약속한 값이거나 비트스트림으로부터 default_MBsize를 복호화하기 전에 추출한 값일 수도 있다.
또한 영상 부호화 장치에서 가로와 세로에 대한 비율을 따로 복호화 한 경우 가로에 대한 비율과 세로에 대한 비율을 각각 엔트로피 복호화하여 기준 매크로블록 크기를 얻을 수도 있다.
또한 영상 부호화 장치와 영상 복호화 장치가 약속한 표의 인덱스값을 부호화한 경우, 복호화한 값을 표의 인덱스값으로 사용하여 기준 매크로블록의 크기를 구할 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 복호화(Binary Coding) 방법을 이용하여 기준 매크로블록 크기를 복호화 할 수 있다.
또한 기준 매크로블록의 크기 또는 매크로블록의 크기 정보가 최소 서브블록의 크기와 최대 분할 레이어 정보인 경우 기준 매크로블록의 크기에 따른 기준 최소 서브블록의 크기 또는 매크로블록의 크기에 따른 최소 서브블록의 크기 정보와 각각에 대한 최대 분할 레이어 정보를 비트스트림으로부터 엔트로피 복호화한 후 매크로블록의 크기를 복호화한다.
기준 최소 서브블록의 크기를 나타내는 정보인 defalt_ minBlockSize 를 복호화하는 방법은 엔트로피 복호화한 값 자체를 기준 최소 서브블록 크기값으로 설정할 수도 있고 엔트로피 복호화한 값을 확대 비율 또는 축소 비율로 사용하여 소정의 크기로부터 확대 또는 축소하여 기준 최소 서브블록의 크기를 얻을 수도 있다. 또는 전술한 첫번째 복호화 방법에서 설명한 바와 같이, 영상 부호화 장치에서 최소 서브블록의 크기값에 로그함수를 적용한 값을 부호화한 경우 지수함수를 이용하여 최소 서브블록의 크기값을 얻을 수도 있다.
보다 구체적으로 설명하면, 예컨대, defalt_ minBlockSize 가 현재 비트스트림의 부호화 또는 복호화시에 이용가능한 최대 최소 서브블록의 크기를 나타내고 영상 부호화 장치에서 log2(X/ defalt_ minBlockSize) (X는 2의 배수인 임의의 양의 정수)의 값인 y를 부호화한 경우, 영상 복호화 장치에서는 y값을 엔트로피 복호화하여 X의 값에 2y를 곱하여 defalt_ minBlockSize 를 구할 수 있다. 이때 X의 값은 가능한 최대 최소 서브블록의 크기와 같이 영상 부호화 장치와 영상 복호화 장치가 약속한 값이거나 비트스트림으로부터 defalt_ minBlockSize를 복호하기 전에 추출한 값일 수도 있다.
또는 defalt_ minBlockSize가 현재 비트스트림으로부터 이용 가능한 최소 최소 서브블록의 크기를 나타내고, 영상 부호화 장치에서 log2(defalt_ minBlockSize/X) (X는 2의 배수인 임의의 양의 정수)의 값인 y값을 부호화한 경우, 영상 복호화 장치에서는 y값을 엔트로피 복호화하여 비트스트림으로부터 추출하고 X의 값과 2y를 곱한 값을 defalt_ minBlockSize로 설정한다. 이때 X의 값은 가능한 최소 최소 서브블록의 크기와 같이 영상 부호화 장치와 영상 복호화 장치가 약속한 값이거나 비트스트림으로부터 defalt_ minBlockSize를 복호화하기 전에 추출한 값일 수도 있다.
또한 영상 부호화 장치에서 가로와 세로에 대한 비율을 따로 복호화 한 경우 가로에 대한 비율과 세로에 대한 비율을 각각 엔트로피 복호화하여 기준 최소 서브블록 크기를 얻을 수도 있다.
또한 영상 부호화 장치와 영상 복호화 장치가 약속한 표의 인덱스값을 부호화한 경우, 복호화한 값을 표의 인덱스값으로 사용하여 기준 최소 서브블록의 크기를 구할 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 복호화(Binary Coding) 방법을 이용하여 기준 최소 서브블록 크기를 복호화 할 수 있다.
최대 분할 레이어 정보를 복호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화를 이용할 수도 있고 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 방법을 이용하여 복호화할 수 있다.
복원한 최소 서브블록의 크기가 NxN이고 최대 분할 레이어가 x인 경우 매크로블록의 크기는 (Nx2x)x(Nx2x)가 된다.
D-2-2-4) 매크로블록 크기 정보 복호화 방법 4
이하에서는 매크로블록의 크기를 부호화하는 네번째 방법에 따른 복호화 방법을 설명한다.
네번째 방법에 따르면, 첫 번째 픽쳐에서 기준 매크로블록의 크기를 사용할지에 대한 플래그와 기준 매크로블록 크기를 사용하지 않는 경우 매크로블록의 크기 정보를 엔트로피 복호화한 후, 복호화된 매크로블록의 크기 정보를 이용하여 첫번째 픽쳐 복호화에 필요한 매크로블록 크기를 구한다.
기준 매크로블록의 크기를 사용할지에 대한 플래그가 기준 매크로블록 크기를 사용함을 의미하는 경우 매크로블록의 크기를 기준 매크로블록의 크기와 동일하게 설정한 후 첫번째 픽쳐를 복호화한다.
두번째 픽쳐부터는 이전 픽쳐의 매크로블록의 크기를 현재 매크로블록의 크기로 사용할지에 대한 플래그를 복호화한 후, 이전 픽쳐의 매크로블록의 크기를 사용하지 않을 경우 현재 픽쳐 복호화를 위한 매크로블록의 크기 정보를 복호화한다. 이전 픽쳐의 매크로블록의 크기를 현재 픽쳐 복호화에 사용하는 경우 매크로블록의 크기를 이전 픽쳐의 매크로블록의 크기와 동일한 값으로 설정하여 두번째 픽쳐를 복호화한다.
기준 매크로블록의 크기를 나타내는 정보인 default_MBsize 또는 현재 픽쳐의 매크로블록의 크기를 나타내는 정보인 MB_size를 복호화하는 방법은 엔트로피 복호화한 값을 매크로블록의 크기로 사용할 수도 있고 엔트로피 복호화한 값을 확대 비율 또는 축소 비율로 사용하여 소정의 크기로부터 확대 또는 축소하여 매크로블록의 크기를 얻을 수도 있다. 또는 전술한 첫번째 복호화 방법에서 설명한 바와 같이, 영상 부호화 장치에서 매크로블록의 크기값에 로그함수를 적용한 값을 부호화한 경우 지수함수를 이용하여 매크로블록의 크기값을 얻을 수도 있다.
또한 영상 부호화 장치에서 가로와 세로에 대한 비율을 따로 복호화 한 경우 가로에 대한 비율과 세로에 대한 비율을 각각 엔트로피 복호화하여 기준 매크로블록 크기를 얻을 수도 있다.
또한 영상 부호화 장치와 영상 복호화 장치가 약속한 표의 인덱스값을 부호화한 경우, 복호화한 값을 표의 인덱스값으로 사용하여 기준 매크로블록의 크기를 구할 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 복호화(Binary Coding) 방법을 이용하여 기준 매크로블록 크기를 복호화 할 수 있다.
또한 매크로블록의 크기 정보가 최소 서브블록의 크기와 최대 분할 레이어 정보인 경우 최소 서브블록의 크기 정보와 각각에 대한 최대 분할 레이어 정보를 비트스트림으로부터 엔트로피 복호화한 후 매크로블록의 크기를 복호화한다.
기준 최소 서브블록의 크기를 나타내는 정보인 defalt_ minBlockSize 또는 현재 픽쳐의 최소 서브블록의 크기를 나타내는 정보인 minBlockSize를 복호화하는 방법은 엔트로피 복호화한 값을 최소 서브블록의 크기로 사용할 수도 있고 엔트로피 복호화한 값을 확대 비율 또는 축소 비율로 사용하여 소정의 크기로부터 확대 또는 축소하여 최소 서브블록의 크기를 얻을 수도 있다. 또는 전술한 첫번째 복호화 방법에서 설명한 바와 같이, 영상 부호화 장치에서 최소 서브블록의 크기값에 로그함수를 적용한 값을 부호화한 경우 지수함수를 이용하여 최소 서브블록의 크기값을 얻을 수도 있다.
또한 영상 부호화 장치에서 가로와 세로에 대한 비율을 따로 복호화 한 경우 가로에 대한 비율과 세로에 대한 비율을 각각 엔트로피 복호화하여 기준 최소 서브블록 크기를 얻을 수도 있다.
또한 영상 부호화 장치와 영상 복호화 장치가 약속한 표의 인덱스값을 부호화한 경우, 복호화한 값을 표의 인덱스값으로 사용하여 기준 최소 서브블록의 크기를 구할 수도 있다.
이때, 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 이진 복호화(Binary Coding) 방법을 이용하여 기준 최소 서브블록 크기를 복호화 할 수 있다.
최대 분할 레이어 정보를 복호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화를 이용할 수도 있고 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 방법을 이용하여 복호화할 수 있다.
복원한 최소 서브블록의 크기가 NxN이고 최대 분할 레이어가 x인 경우 매크로블록의 크기는 (Nx2x)x(Nx2x)가 된다.
D-2-2-5) 매크로블록 크기 정보 복호화 방법 5
이하에서는 매크로블록의 크기를 부호화하는 다섯번째 방법에 따른 복호화 방법을 설명한다.
다섯번째 방법에 따르면, 인트라 픽쳐와 인터 픽쳐의 매크로블록의 크기를 비트스트림내 영상 부호화 장치와 영상 복호화 장치가 약속한 위치에서 각각 추출하여 픽쳐 종류에 따른 매크로블록의 크기를 설정하도록 한다.
시퀀스헤더 또는 픽쳐 헤더에서 인트라 픽쳐를 위한 매크로블록의 크기와 인터 픽쳐를 위한 매크로블록의 크기를 복호화할지를 나타내는 각각의 플래그를 복원한 후, 플래그 값에 따라 인트라 또는 인터 픽쳐를 위한 매크로블록의 크기를 비트스트림을 통해 복호화 하거나, 약속된 매크로블록의 크기를 사용하여 영상을 복원한다.
인트라 픽처의 매크로블록의 크기와 인터 픽처의 매크로블록의 크기에 대한 정보를 복호화하는 방법은 앞서 설명한 부호화 방법에 따라 앞서 설명한 복호화 방법들과 결합되어 사용할 수도 있다
또한 인트라 매크로블록의 크기 또는 인터 매크로블록의 크기 정보가 최소 서브블록의 크기와 최대 분할 레이어 정보인 경우 인트라와 인터 매크로블록의 크기에 따른 최소 서브블록의 크기 정보와 각각에 대한 최대 분할 레이어 정보를 비트스트림으로부터 엔트로피 복호화한 후 매크로블록의 크기를 복호화한다.
인트라 픽처의 최소 서브블록의 크기와 인터 픽처의 최소 서브블록의 크기에 대한 정보를 복호화하는 방법은 앞서 설명한 부호화 방법에 따라 앞서 설명한 복호화 방법들과 결합되어 사용할 수도 있다
최대 분할 레이어 정보를 복호화하는 방법은 이진 산술 부호화(Binary Arithmetic Coding) 또는 허프만 부호화(Huffman Coding) 등과 같은 무손실 압축 부호화를 이용할 수도 있고 단항 코드(Unary Code), 트런케이티드 단항 코드(Truncated Unary Code) 및 익스포넨셜 골룸 코드(Exp-Golomb Code) 등과 같은 다양한 방법을 이용하여 복호화할 수 있다.
복원한 최소 서브블록의 크기가 NxN이고 최대 분할 레이어가 x인 경우 매크로블록의 크기는 (Nx2x)x(Nx2x)가 된다.
D-2-3) 복호화 동작을 나타내는 순서도
한편, 본 발명의 일 실시예에 따른 영상을 복호화하는 방법은, 비트스트림으로부터 매크로블록 크기에 대한 정보를 추출하고 추출한 정보를 이용하여 매크로블록 크기를 설정하는 매크로블록 크기 설정단계(S3810) 및 비트스트림으로부터 부호화된 영상 데이터를 추출하고, 상기 블록 크기에 대한 정보로 식별되는 블록 크기에 따라 상기 부호화된 영상 데이터를 복호화하여 복원 영상을 생성하는 영상 복호화단계(S3820)를 포함할 수 있다.
이상 설명한 매크로블록의 크기 결정, 매크로블록의 크기에 관한 정보 부호화 및 복호화에 관한 각 실시예들을 전술한 본 발명의 실시예에 따른 매크로블록의 분할, 매크로블록의 분할정보 부호화 및 복호화에 관한 각 실시예와 결합시켜 다양한 방식으로 구현될 수 있음을 당업자라면 이해할 수 있을 것이다.
본 발명의 주요 특징을 정리하면 아래와 같다.
- 가변 크기를 갖는 블록(예컨대, 부호화/복호화의 단위인 매크로블록)의 채용
- 가변 크기를 갖는 블록의 크기 결정 및 크기정보 부호화
- 결정된 크기를 갖는 블록을 서브블록들로 분할 및 분할정보 부호화
한편, 전술한 실시예들에서 본 발명의 실시예에 따른 매크로블록의 분할은 예측 또는 변환을 위한 분할을 일 예로 설명하였다. 그러나 예측 또는 변환은 본 발명에서의 '분할'이 적용될 수 있는 일 예일 뿐이며 이외 다양한 목적을 위해 매크로블록을 분할할 수 있음은 물론이다. 또한, 분할의 대상은 매크로블록뿐만 아니라 어떤 영상 영역일 수 있다. 예컨대, 예측의 단위에 해당하는 소정 크기의 블록을 효과적인 변환을 위해 서브블록으로 분할하는 경우에도 본 발명의 실시예에 따른 분할이 적용될 수 있다.
다시 말해, 본 발명은 영상 블록을 어떤 목적을 위해 서브블록들로 분할할 필요가 있는 경우, 다양한 분할 방식과 그 분할에 관한 정보를 효율적으로 부호화 및 복호화하는 방법 및 장치를 제공한다.
한편, 본 발명의 일 실시예에 따른 영상 부호화/복호화 장치는 본 발명의 어느 한 실시예에 따른 영상 복호화장치의 출력단에 본 발명의 어느 한 실시예에 따른 영상 복호화 장치의 입력단을 연결함으로써 구현될 수 있다.
본 발명의 일 실시예에 따른 영상 부호화/복호화 장치는 복수 개의 서브블록으로 분할되는 현재 블록을 예측 부호화하여 부호화된 영상 데이터를 생성하고 상기 현재 블록의 분할 정보를 부호화하여 부호화된 분할 정보 데이터를 생성하는 영상 부호화기 및 비트스트림으로부터 추출되는 부호화된 분할 정보 데이터를 복호화하여 현재 블록의 분할 정보를 복원하고 상기 비트스트림으로부터 추출되는 부호화된 영상 데이터를 복원되는 현재 블록의 분할 정보에 따라 예측 복호화하여 복수 개의 서브블록으로 분할되는 현재 블록을 복원하는 영상 복호화기를 포함할 수 있다.
본 발명의 일 실시예에 따른 영상 부호화/복호화 방법은 복수 개의 서브블록으로 분할되는 현재 블록을 예측 부호화하여 부호화된 영상 데이터를 생성하고 상기 현재 블록의 분할 정보를 부호화하여 부호화된 분할 정보 데이터를 생성하는 영상 부호화단계 및 비트스트림으로부터 추출되는 부호화된 분할 정보 데이터를 복호화하여 현재 블록의 분할 정보를 복원하고 상기 비트스트림으로부터 추출되는 부호화된 영상 데이터를 복원되는 현재 블록의 분할 정보에 따라 예측 복호화하여 복수 개의 서브블록으로 분할되는 현재 블록을 복원하는 영상 복호화단계를 포함할 수 있다.
이상에서, 본 발명의 실시예를 구성하는 모든 구성 요소들이 하나로 결합하거나 결합하여 동작하는 것으로 설명되었다고 해서, 본 발명이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성 요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다. 또한, 그 모든 구성 요소들이 각각 하나의 독립적인 하드웨어로 구현될 수 있지만, 각 구성 요소들의 그 일부 또는 전부가 선택적으로 조합되어 하나 또는 복수 개의 하드웨어에서 조합된 일부 또는 전부의 기능을 수행하는 프로그램 모듈을 갖는 컴퓨터 프로그램으로서 구현될 수도 있다. 그 컴퓨터 프로그램을 구성하는 코드들 및 코드 세그먼트들은 본 발명의 기술 분야의 당업자에 의해 용이하게 추론될 수 있을 것이다. 이러한 컴퓨터 프로그램은 컴퓨터가 읽을 수 있는 저장매체(Computer Readable Media)에 저장되어 컴퓨터에 의하여 읽혀지고 실행됨으로써, 본 발명의 실시예를 구현할 수 있다. 컴퓨터 프로그램의 저장매체로서는 자기 기록매체, 광 기록매체, 캐리어 웨이브 매체 등이 포함될 수 있다.
또한, 이상에서 기재된 "포함하다", "구성하다" 또는 "가지다" 등의 용어는, 특별히 반대되는 기재가 없는 한, 해당 구성 요소가 내재할 수 있음을 의미하는 것이므로, 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것으로 해석되어야 한다. 기술적이거나 과학적인 용어를 포함한 모든 용어들은, 다르게 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미가 있다. 사전에 정의된 용어와 같이 일반적으로 사용되는 용어들은 관련 기술의 문맥상의 의미와 일치하는 것으로 해석되어야 하며, 본 발명에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
Claims (21)
- 영상 부호화 방법에 있어서,
최소 서브블록의 크기 및 부호화 대상 블록의 크기를 결정하고 상기 최소 서브블록의 크기를 지시하기 위한 정보 및 상기 부호화 대상 블록의 크기를 지시하기 위한 정보를 부호화하는 단계; 및
상기 부호화 대상 블록을 최상위 레이어로 갖는 트리 구조에서 상위 레이어의 블록이 하위 레이어의 복수의 블록으로 분할되는지와 관련된 분할 정보를 부호화하고 상기 트리구조에서 더 이상 분할되지 않는 블록 단위로 잔차 신호를 변환하고 부호화하는 단계를 포함하되,
상기 더 이상 분할되지 않는 블록 단위로 잔차 신호를 변환하고 부호화하는 것은,
상기 더 이상 분할되지 않는 블록이 적어도 하나의 0이 아닌 변환 계수를 포함하는지 여부를 지시하는 변환 정보를 부호화하는 단계; 및
상기 더 이상 분할되지 않는 블록이 적어도 하나의 0이 아닌 변환 계수를 가지는 경우, 상기 더 이상 분할되지 않는 블록 내의 변환 계수를 부호화하는 단계를 포함하고,
상기 트리 구조에서 상기 최소 서브블록 크기와 동일한 크기를 가지는 블록에 대응하는 분할 정보는 부호화되지 않고, 상기 최소 서브블록 크기와 동일한 크기를 가지는 블록은 상기 트리 구조 상에서 더 이상 분할되지 않는 것을 특징으로 하는 영상 부호화 방법. - 제1항에 있어서,
상기 부호화 대상 블록의 크기는 16 x 16 보다 큰 크기를 포함하는 것을 특징으로 하는 영상 부호화 방법. - 제1항에 있어서,
상기 부호화 대상 블록의 크기를 지시하기 위한 정보는 익스포넨셜 골룸 코드를 사용하여 부호화되는 것을 특징으로 하는 영상 부호화 방법. - 제1항에 있어서,
상기 부호화 대상 블록의 크기를 지시하기 위한 정보는 비트스트림에 시퀀스 단위로 부호화되는 것을 특징으로 하는 영상 부호화 방법. - 제1항에 있어서,
상기 더 이상 분할되지 않는 블록 단위로 잔차 신호를 변환하고 부호화하는 것은,
상기 더 이상 분할되지 않는 블록의 예측 타입이 인터 예측 모드인지 인트라 예측 모드인지를 결정하고 예측 타입 정보를 부호화하는 단계; 및
상기 결정된 예측 타입에 따라 상기 더 이상 분할되지 않는 블록을 예측함으로써 상기 더 이상 분할되지 않는 블록의 잔차 신호를 생성하는 단계
를 포함하는 것을 특징으로 하는 영상 부호화 방법. - 삭제
- 삭제
- 삭제
- 제1항에 있어서,
상기 최소 서브블록의 크기를 지시하기 위한 정보는 log2(minBlockSize/X)의 값을 가지되, minBlockSize은 최소 서브블록의 크기를 나타내고 X는 4 또는 8인 것을 특징으로 하는 영상 부호화 방법. - 제1항에 있어서,
상기 분할 정보는 해당 블록을 하위 레이어의 블록으로 분할하기 위한 복수의 분할 타입 중 어느 하나의 분할 타입을 지시하는 분할 타입 정보이고,
상기 복수의 분할 타입은 분할되지 않음을 나타내는 제1타입, 동일 크기의 두 개의 블록으로 가로로 분할하는 제2타입, 동일 크기의 두 개의 블록으로 세로로 분할하는 제3타입, 및 동일 크기의 네 개의 블록으로 가로 및 세로로 분할하는 제4타입을 포함하는 것을 특징으로 하는 영상 부호화 방법. - 제10항에 있어서,
상기 분할 타입 정보가 제4타입을 지시하는 경우에만, 상기 해당 블록으로부터 분할된 하위 레이어의 네 개의 블록 각각의 분할 타입 정보를 복호화하는 것을 특징으로 하는 영상 부호화 방법. - 제1항에 있어서,
상기 분할 정보는 해당 블록이 하위 레이어의 네 개의 블록으로 분할되는지 여부를 지시하는 분할 플래그이고,
상기 분할 플래그가 상기 해당 블록이 하위 레이어의 네 개의 블록으로 분할됨을 지시할 때, 상기 해당 블록을 동일 크기의 네 개의 블록으로 분할하는 것을 특징으로 하는 영상 부호화 방법. - 영상 부호화 장치에 있어서,
최소 서브블록의 크기 및 부호화 대상 블록의 크기를 결정하고 상기 최소 서브블록의 크기를 지시하기 위한 정보 및 상기 부호화 대상 블록의 크기를 지시하기 위한 정보를 부호화하는 블록 크기 설정기; 및
상기 부호화 대상 블록을 최상위 레이어로 갖는 트리 구조에서 상위 레이어의 블록이 하위 레이어의 복수의 블록으로 분할되는지와 관련된 분할 정보를 부호화하고, 상기 트리구조에서 더 이상 분할되지 않는 블록 단위로 잔차 신호를 변환하고 부호화하는 영상 부호화기를 포함하되,
상기 영상 부호화기는,
상기 더 이상 분할되지 않는 블록이 적어도 하나의 0이 아닌 변환 계수를 포함하는지 여부를 지시하는 변환 정보를 부호화하고 상기 더 이상 분할되지 않는 블록이 적어도 하나의 0이 아닌 변환 계수를 가지는 경우 상기 더 이상 분할되지 않는 블록 내의 변환 계수를 부호화하고,
상기 트리 구조에서 상기 최소 서브블록 크기와 동일한 크기를 가지는 블록에 대응하는 분할 정보는 부호화하지 않고, 상기 최소 서브블록 크기와 동일한 크기를 가지는 블록은 상기 트리 구조 상에서 더 이상 분할하지 않는 것을 특징으로 하는 영상 부호화 장치. - 제13항에 있어서,
상기 영상 부호화기는,
상기 더 이상 분할되지 않는 블록의 예측 타입이 인터 예측 타입인지 인트라 예측 타입인지를 결정하고 예측 타입 정보를 부호화하고,
상기 결정된 예측 타입에 따라 상기 더 이상 분할되지 않는 블록을 예측하는 것을 특징으로 하는 영상 부호화 장치. - 삭제
- 삭제
- 삭제
- 제13항에 있어서,
상기 최소 서브블록의 크기를 지시하기 위한 정보는 log2(minBlockSize/X)의 값을 가지되, minBlockSize은 최소 서브블록의 크기를 나타내고 X는 4 또는 8인 것을 특징으로 하는 영상 부호화 장치. - 제13항에 있어서,
상기 분할 정보는 해당 블록을 하위 레이어의 블록으로 분할하기 위한 복수의 분할 타입 중 어느 하나의 분할 타입을 지시하는 분할 타입 정보이고,
상기 복수의 분할 타입은 분할되지 않음을 나타내는 제1타입, 동일 크기의 두 개의 블록으로 가로로 분할하는 제2타입, 동일 크기의 두 개의 블록으로 세로로 분할하는 제3타입, 및 동일 크기의 네 개의 블록으로 가로 및 세로로 분할하는 제4타입을 포함하는 것을 특징으로 하는 영상 부호화 장치. - 제19항에 있어서,
상기 영상 부호화기는, 상기 분할 타입 정보가 제4타입을 지시하는 경우에만, 상기 해당 블록으로부터 분할된 하위 레이어의 네 개의 블록 각각의 분할 타입 정보를 부호화하는 것을 특징으로 하는 영상 부호화 장치. - 제13항에 있어서,
상기 분할 정보는 해당 블록이 하위 레이어의 네 개의 블록으로 분할되는지 여부를 지시하는 분할 플래그이고,
상기 영상 부호화기는, 상기 분할 플래그가 상기 해당 블록이 하위 레이어의 네 개의 블록으로 분할됨을 지시할 때, 상기 해당 블록을 동일 크기의 네 개의 블록으로 분할하는 것을 특징으로 하는 영상 부호화 장치.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20090093987 | 2009-10-01 | ||
KR1020090093987 | 2009-10-01 | ||
KR1020090093982 | 2009-10-01 | ||
KR20090093982 | 2009-10-01 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100096032A Division KR101698499B1 (ko) | 2009-10-01 | 2010-10-01 | 분할 레이어를 이용한 영상 부호화/복호화 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160114559A KR20160114559A (ko) | 2016-10-05 |
KR101698509B1 true KR101698509B1 (ko) | 2017-01-23 |
Family
ID=44044435
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100096032A KR101698499B1 (ko) | 2009-10-01 | 2010-10-01 | 분할 레이어를 이용한 영상 부호화/복호화 방법 및 장치 |
KR1020160121625A KR101698509B1 (ko) | 2009-10-01 | 2016-09-22 | 분할 레이어를 이용한 영상 부호화/복호화 방법 및 장치 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100096032A KR101698499B1 (ko) | 2009-10-01 | 2010-10-01 | 분할 레이어를 이용한 영상 부호화/복호화 방법 및 장치 |
Country Status (8)
Country | Link |
---|---|
US (3) | US9264716B2 (ko) |
EP (3) | EP2993904B1 (ko) |
KR (2) | KR101698499B1 (ko) |
CN (4) | CN104683808B (ko) |
ES (3) | ES2625010T3 (ko) |
HU (3) | HUE034567T2 (ko) |
PL (3) | PL2993904T3 (ko) |
WO (1) | WO2011040795A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019009666A1 (ko) * | 2017-07-06 | 2019-01-10 | 삼성전자 주식회사 | 영상 부호화 방법 및 장치, 영상 복호화 방법 및 장치 |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9549190B2 (en) * | 2009-10-01 | 2017-01-17 | Sk Telecom Co., Ltd. | Method and apparatus for encoding/decoding image using variable-size macroblocks |
CN102771125B (zh) * | 2009-12-10 | 2015-12-09 | Sk电信有限公司 | 使用树形结构的编码/解码方法和装置 |
KR101487687B1 (ko) | 2010-01-14 | 2015-01-29 | 삼성전자주식회사 | 큰 크기의 변환 단위를 이용한 영상 부호화, 복호화 방법 및 장치 |
LT3697089T (lt) | 2010-04-13 | 2022-01-10 | Ge Video Compression, Llc | Paveldėjimas ėminių masyvo multimedžio poskaidinyje |
BR122020007918B1 (pt) | 2010-04-13 | 2022-11-29 | Ge Video Compression, Llc | Fusão de região de amostra |
CN106231338B (zh) | 2010-04-13 | 2019-08-27 | Ge视频压缩有限责任公司 | 解码器、解码方法、编码器以及编码方法 |
CN105959703B (zh) | 2010-04-13 | 2019-06-04 | Ge视频压缩有限责任公司 | 解码器、编码器、生成数据流的方法及解码数据流的方法 |
AU2015202094B2 (en) * | 2010-04-13 | 2016-11-17 | Samsung Electronics Co., Ltd. | Video-encoding method and video-encoding apparatus based on encoding units determined in accordance with a tree structure, and video-decoding method and video-decoding apparatus based on encoding units determined in accordance with a tree structure |
EP2547108A4 (en) | 2010-04-13 | 2014-07-02 | Samsung Electronics Co Ltd | VIDEO CODING METHOD AND VIDEO CODING DEVICE WITH PRECODING UNITS BASED ON CODING UNITS FOLLOWING A TREE STRUCTURE AND VIDEO CODING METHOD AND VIDEO ENCODING DEVICE WITH PRECODING UNITS BASED ON CODING UNITS DEFINED ACCORDING TO A TREE STRUCTURE |
KR101824241B1 (ko) * | 2011-01-11 | 2018-03-14 | 에스케이 텔레콤주식회사 | 인트라 부가정보 부호화/복호화 장치 및 방법 |
PT3282707T (pt) | 2011-06-27 | 2018-11-21 | Samsung Electronics Co Ltd | Método para descodificar informação de movimento |
US9392301B2 (en) * | 2011-07-01 | 2016-07-12 | Qualcomm Incorporated | Context adaptive entropy coding for non-square blocks in video coding |
US9456212B2 (en) * | 2011-09-30 | 2016-09-27 | Broadcom Corporation | Video coding sub-block sizing based on infrastructure capabilities and current conditions |
KR101268588B1 (ko) * | 2012-02-28 | 2013-05-28 | 전자부품연구원 | 무손실 영상 압축 장치 및 방법 |
EP2838259A4 (en) * | 2012-04-13 | 2015-12-16 | Mitsubishi Electric Corp | APPARATUS FOR CODING MOVEMENT PICTURES, DEVICE FOR DECODING MOVEMENT PICTURES, METHOD FOR CREATING MOVEMENT IMAGES AND METHOD FOR DECODING MOVEMENT PICTURES |
WO2013162257A1 (ko) * | 2012-04-23 | 2013-10-31 | 삼성전자 주식회사 | 다시점 비디오 부호화 방법 및 장치, 다시점 비디오 복호화 방법 및 장치 |
WO2013162272A1 (ko) * | 2012-04-24 | 2013-10-31 | 엘지전자 주식회사 | 비디오 신호 처리 방법 및 장치 |
DK2866439T3 (da) | 2012-06-26 | 2020-12-14 | Lg Electronics Inc | Videodekodningsfremgangsmåde og videokodningsfremgangsmåde |
FR2993084A1 (fr) * | 2012-07-09 | 2014-01-10 | France Telecom | Procede de codage video par prediction du partitionnement d'un bloc courant, procede de decodage, dispositifs de codage et de decodage et programmes d'ordinateur correspondants |
WO2014050038A1 (ja) * | 2012-09-26 | 2014-04-03 | パナソニック株式会社 | 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置、および、画像符号化復号装置 |
KR101420718B1 (ko) * | 2012-12-21 | 2014-07-23 | 성균관대학교산학협력단 | 스케일러블 비디오 부호화 및 복호화 방법, 그리고 이를 이용한 장치 |
KR102116985B1 (ko) | 2013-08-16 | 2020-05-29 | 삼성전자 주식회사 | 비디오 인코딩을 위한 인트라 리프레쉬 방법 |
CN105519115A (zh) | 2013-09-10 | 2016-04-20 | 株式会社Kt | 用于对可扩展视频信号进行编码/解码的方法及装置 |
EP3058739B1 (en) | 2013-10-14 | 2019-08-07 | Microsoft Technology Licensing, LLC | Features of intra block copy prediction mode for video and image coding and decoding |
CN105659602B (zh) | 2013-10-14 | 2019-10-08 | 微软技术许可有限责任公司 | 用于视频和图像编码的帧内块复制预测模式的编码器侧选项 |
BR112016015080A2 (pt) | 2014-01-03 | 2017-08-08 | Microsoft Technology Licensing Llc | Predição de vetor de bloco em codificação / decodificação de vídeo e imagem |
CN104811731A (zh) * | 2014-01-03 | 2015-07-29 | 上海天荷电子信息有限公司 | 多层次子块匹配图像压缩方法 |
US11284103B2 (en) | 2014-01-17 | 2022-03-22 | Microsoft Technology Licensing, Llc | Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning |
KR102413529B1 (ko) | 2014-06-19 | 2022-06-24 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | 통합된 인트라 블록 카피 및 인터 예측 모드 |
MX2017004211A (es) | 2014-09-30 | 2017-11-15 | Microsoft Technology Licensing Llc | Reglas para modos de prediccion intra-imagen cuando se habilita el procesamiento paralelo de onda frontal. |
WO2016090568A1 (en) * | 2014-12-10 | 2016-06-16 | Mediatek Singapore Pte. Ltd. | Binary tree block partitioning structure |
CN112954368B (zh) * | 2015-03-13 | 2024-05-24 | Lg电子株式会社 | 处理视频信号的方法及其设备 |
US10567464B2 (en) | 2015-04-15 | 2020-02-18 | Google Llc | Video compression with adaptive view-dependent lighting removal |
US10412373B2 (en) | 2015-04-15 | 2019-09-10 | Google Llc | Image capture for virtual reality displays |
US10469873B2 (en) * | 2015-04-15 | 2019-11-05 | Google Llc | Encoding and decoding virtual reality video |
US10546424B2 (en) | 2015-04-15 | 2020-01-28 | Google Llc | Layered content delivery for virtual and augmented reality experiences |
US10540818B2 (en) | 2015-04-15 | 2020-01-21 | Google Llc | Stereo image generation and interactive playback |
US10444931B2 (en) | 2017-05-09 | 2019-10-15 | Google Llc | Vantage generation and interactive playback |
US10419737B2 (en) | 2015-04-15 | 2019-09-17 | Google Llc | Data structures and delivery methods for expediting virtual reality playback |
US10440407B2 (en) | 2017-05-09 | 2019-10-08 | Google Llc | Adaptive control for immersive experience delivery |
CN105721866B (zh) * | 2016-02-01 | 2019-02-12 | 北京奇艺世纪科技有限公司 | 一种编码单元划分方法及装置 |
WO2017155334A1 (ko) * | 2016-03-11 | 2017-09-14 | 디지털인사이트 주식회사 | 비디오 코딩 방법 및 장치 |
US10880548B2 (en) | 2016-06-01 | 2020-12-29 | Samsung Electronics Co., Ltd. | Methods and apparatuses for encoding and decoding video according to coding order |
CN117425005A (zh) | 2016-08-31 | 2024-01-19 | 株式会社Kt | 用于处理视频信号的方法和设备 |
CN117014635A (zh) | 2016-10-04 | 2023-11-07 | 有限公司B1影像技术研究所 | 图像编码/解码方法和计算机可读记录介质 |
WO2018066980A1 (ko) * | 2016-10-04 | 2018-04-12 | 김기백 | 영상 데이터 부호화/복호화 방법 및 장치 |
CN116744023A (zh) * | 2016-11-25 | 2023-09-12 | 株式会社Kt | 用于对视频进行编码和解码的方法 |
EP3383044A1 (en) | 2017-03-27 | 2018-10-03 | Thomson Licensing | Reducing redundancy between tree types |
US10474227B2 (en) | 2017-05-09 | 2019-11-12 | Google Llc | Generation of virtual reality with 6 degrees of freedom from limited viewer data |
KR20230065366A (ko) | 2017-07-17 | 2023-05-11 | 한양대학교 산학협력단 | 영상 부호화/복호화 방법 및 장치 |
US11057629B2 (en) | 2017-07-19 | 2021-07-06 | Samsung Electronics Co., Ltd. | Encoding method and apparatus therefor, decoding method and apparatus therefor |
CN108282265B (zh) * | 2018-01-19 | 2020-11-03 | 广东工业大学 | 纠错编码方法、装置、设备及计算机可读存储介质 |
CN114697651B (zh) | 2018-03-05 | 2023-11-14 | 松下电器(美国)知识产权公司 | 编码装置、解码装置和存储介质 |
TWI750486B (zh) | 2018-06-29 | 2021-12-21 | 大陸商北京字節跳動網絡技術有限公司 | 運動資訊共用的限制 |
CN112840649A (zh) * | 2018-09-21 | 2021-05-25 | Lg电子株式会社 | 图像编码系统中通过使用块分割对图像解码的方法及其装置 |
US11483567B2 (en) | 2018-09-22 | 2022-10-25 | Lg Electronics Inc. | Method and apparatus for processing video signals on basis of inter prediction |
US10931954B2 (en) * | 2018-11-20 | 2021-02-23 | Sony Corporation | Image coding modes selection for an embedded codec circuitry |
EP3900333A4 (en) * | 2019-02-15 | 2022-05-25 | Huawei Technologies Co., Ltd. | ENCODERS, DECODERS AND RELATIVE METHODS FOR LIMITING THE SIZE OF SUBDIVISIONS FROM A TOOL WITH INTRADIVISION CODING MODE |
CN114501009B (zh) * | 2019-03-21 | 2023-12-19 | 三星电子株式会社 | 视频解码设备和视频编码设备 |
US11533214B2 (en) * | 2019-06-14 | 2022-12-20 | Qatar Foundation For Education, Science And Community Development | Spectral efficient uplink multiple access techniques using index modulation |
JP7450078B1 (ja) | 2023-02-15 | 2024-03-14 | Nttイノベーティブデバイス株式会社 | 映像符号化装置、および、映像符号化方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060120450A1 (en) | 2004-12-03 | 2006-06-08 | Samsung Electronics Co., Ltd. | Method and apparatus for multi-layered video encoding and decoding |
US20090003716A1 (en) | 2007-06-28 | 2009-01-01 | Mitsubishi Electric Corporation | Image encoding device, image decoding device, image encoding method and image decoding method |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5506624A (en) * | 1994-07-28 | 1996-04-09 | Silicon Graphics, Inc. | Rotating sample of video images |
JPH08205140A (ja) | 1995-01-31 | 1996-08-09 | Canon Inc | 画像圧縮装置 |
US6911987B1 (en) * | 1995-07-05 | 2005-06-28 | Microsoft Corporation | Method and system for transmitting data for a shared application |
KR100186267B1 (ko) | 1995-09-07 | 1999-05-01 | 김주용 | 적응적인 블록분할에 의한 움직임 추정 및 보상방법 |
EP0905651A3 (en) * | 1997-09-29 | 2000-02-23 | Canon Kabushiki Kaisha | Image processing apparatus and method |
WO2003075579A2 (en) * | 2002-03-05 | 2003-09-12 | Koninklijke Philips Electronics N.V. | Method and system for layered video encoding |
US7362909B2 (en) * | 2003-04-10 | 2008-04-22 | Sharp Kabushiki Kaisha | Coding device and method and decoding device and method |
HUP0301368A3 (en) * | 2003-05-20 | 2005-09-28 | Amt Advanced Multimedia Techno | Method and equipment for compressing motion picture data |
TWI232675B (en) * | 2003-12-02 | 2005-05-11 | Univ Nat Chiao Tung | Video compression device and method |
CN100401780C (zh) | 2004-05-07 | 2008-07-09 | 美国博通公司 | 在视频解码器中动态选择变换尺寸的方法和系统 |
US8116374B2 (en) | 2004-05-07 | 2012-02-14 | Broadcom Corporation | Method and system for generating a transform size syntax element for video decoding |
DE102004038110B3 (de) * | 2004-08-05 | 2005-12-29 | Siemens Ag | Verfahren zum Codieren und Decodieren, sowie Codier- und Decodiervorrichtung zur Videocodierung |
JP2008521265A (ja) * | 2004-11-04 | 2008-06-19 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 符号化されたビデオデータを処理する方法及び装置 |
CN101268698A (zh) * | 2005-05-19 | 2008-09-17 | Lg电子株式会社 | 用于视频数据编码/解码的方法 |
KR100705971B1 (ko) * | 2005-07-20 | 2007-04-12 | 주식회사 휴맥스 | 비트스트림 인코딩/디코딩 방법 및 장치 |
US7642396B2 (en) | 2005-08-31 | 2010-01-05 | Kimberly-Clark Worldwide, Inc. | Method and device for detecting the presence of multiple insults in an absorbent article |
EP1950973A4 (en) * | 2005-09-26 | 2011-04-13 | Mitsubishi Electric Corp | DYNAMIC IMAGE ENCODING AND DECODING DEVICE |
EP1809041A1 (en) * | 2006-01-11 | 2007-07-18 | Mitsubishi Electric Information Technology Centre Europe B.V. | Error concealement for scalable video coding |
WO2008027192A2 (en) * | 2006-08-25 | 2008-03-06 | Thomson Licensing | Methods and apparatus for reduced resolution partitioning |
JP4825644B2 (ja) * | 2006-11-14 | 2011-11-30 | ルネサスエレクトロニクス株式会社 | 画像復号装置、画像符号化装置、およびシステムlsi |
CA2674438C (en) * | 2007-01-08 | 2013-07-09 | Nokia Corporation | Improved inter-layer prediction for extended spatial scalability in video coding |
JP5162924B2 (ja) | 2007-02-28 | 2013-03-13 | Jfeスチール株式会社 | 缶用鋼板およびその製造方法 |
US7983496B2 (en) * | 2007-06-26 | 2011-07-19 | Mitsubishi Electric Research Laboratories, Inc. | Inverse tone mapping for bit-depth scalable image coding adapted to variable block sizes |
US7639915B2 (en) | 2007-06-28 | 2009-12-29 | Draka Comteq B.V. | Optical fiber cable having a deformable coupling element |
KR101408698B1 (ko) * | 2007-07-31 | 2014-06-18 | 삼성전자주식회사 | 가중치 예측을 이용한 영상 부호화, 복호화 방법 및 장치 |
JP5056348B2 (ja) * | 2007-10-29 | 2012-10-24 | ソニー株式会社 | 情報処理装置および方法、並びにプログラム |
JP2009272702A (ja) * | 2008-04-30 | 2009-11-19 | Canon Inc | 動きベクトル探索装置及びその制御方法 |
KR101517768B1 (ko) * | 2008-07-02 | 2015-05-06 | 삼성전자주식회사 | 영상의 부호화 방법 및 장치, 그 복호화 방법 및 장치 |
US8503527B2 (en) * | 2008-10-03 | 2013-08-06 | Qualcomm Incorporated | Video coding with large macroblocks |
US20100086031A1 (en) * | 2008-10-03 | 2010-04-08 | Qualcomm Incorporated | Video coding with large macroblocks |
US8945735B2 (en) | 2009-02-23 | 2015-02-03 | Samsung Sdi Co., Ltd. | Built-in charge circuit for secondary battery and secondary battery with the built-in charge circuit |
KR101474756B1 (ko) * | 2009-08-13 | 2014-12-19 | 삼성전자주식회사 | 큰 크기의 변환 단위를 이용한 영상 부호화, 복호화 방법 및 장치 |
KR101487686B1 (ko) * | 2009-08-14 | 2015-01-30 | 삼성전자주식회사 | 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치 |
CN102771125B (zh) * | 2009-12-10 | 2015-12-09 | Sk电信有限公司 | 使用树形结构的编码/解码方法和装置 |
US20110310976A1 (en) * | 2010-06-17 | 2011-12-22 | Qualcomm Incorporated | Joint Coding of Partition Information in Video Coding |
US9380314B2 (en) * | 2010-12-20 | 2016-06-28 | Texas Instruments Incorporated | Pixel retrieval for frame reconstruction |
-
2010
- 2010-10-01 WO PCT/KR2010/006735 patent/WO2011040795A2/ko active Application Filing
- 2010-10-01 EP EP15183122.9A patent/EP2993904B1/en active Active
- 2010-10-01 CN CN201510089787.8A patent/CN104683808B/zh active Active
- 2010-10-01 ES ES15183128.6T patent/ES2625010T3/es active Active
- 2010-10-01 CN CN201510089243.1A patent/CN104602013B/zh active Active
- 2010-10-01 CN CN201080054732.9A patent/CN102918840B/zh active Active
- 2010-10-01 KR KR1020100096032A patent/KR101698499B1/ko active IP Right Grant
- 2010-10-01 PL PL15183122T patent/PL2993904T3/pl unknown
- 2010-10-01 US US13/499,375 patent/US9264716B2/en active Active
- 2010-10-01 CN CN201510089906.XA patent/CN104683809B/zh active Active
- 2010-10-01 PL PL10820868T patent/PL2485490T3/pl unknown
- 2010-10-01 HU HUE15183128A patent/HUE034567T2/en unknown
- 2010-10-01 ES ES10820868.7T patent/ES2554237T3/es active Active
- 2010-10-01 ES ES15183122.9T patent/ES2628515T3/es active Active
- 2010-10-01 EP EP10820868.7A patent/EP2485490B1/en active Active
- 2010-10-01 PL PL15183128T patent/PL2991353T3/pl unknown
- 2010-10-01 HU HUE10820868A patent/HUE026080T2/en unknown
- 2010-10-01 HU HUE15183122A patent/HUE033566T2/hu unknown
- 2010-10-01 EP EP15183128.6A patent/EP2991353B1/en active Active
-
2015
- 2015-03-19 US US14/663,428 patent/US9813710B2/en active Active
- 2015-07-31 US US14/814,520 patent/US10136129B2/en active Active
-
2016
- 2016-09-22 KR KR1020160121625A patent/KR101698509B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060120450A1 (en) | 2004-12-03 | 2006-06-08 | Samsung Electronics Co., Ltd. | Method and apparatus for multi-layered video encoding and decoding |
US20090003716A1 (en) | 2007-06-28 | 2009-01-01 | Mitsubishi Electric Corporation | Image encoding device, image decoding device, image encoding method and image decoding method |
Non-Patent Citations (1)
Title |
---|
Jaeil Kim et al: "Enlarging MB size for high fidelity video coding beyond HD", VCEG 36th Meeting, 8-10 October, 2008.* |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019009666A1 (ko) * | 2017-07-06 | 2019-01-10 | 삼성전자 주식회사 | 영상 부호화 방법 및 장치, 영상 복호화 방법 및 장치 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101698509B1 (ko) | 분할 레이어를 이용한 영상 부호화/복호화 방법 및 장치 | |
KR101479129B1 (ko) | 가변 크기의 매크로블록을 이용한 영상 부호화/복호화 방법 및 장치 | |
KR101874840B1 (ko) | 영상 부호화/복호화 장치 및 방법 | |
KR101868290B1 (ko) | 영상 부호화/복호화 장치 및 방법 | |
KR101543319B1 (ko) | 가변 크기의 매크로블록을 이용한 영상 부호화/복호화 방법 및 장치 | |
US9215462B2 (en) | Image encoding/decoding method and device | |
JP6164660B2 (ja) | ビデオ符号化での分割ブロック符号化方法、ビデオ復号化での分割ブロック復号化方法及びこれを実現する記録媒体 | |
KR101673028B1 (ko) | 영상 부호화/복호화 장치 및 방법 | |
KR101791242B1 (ko) | 영상 부호화/복호화 장치 및 방법 | |
KR101379185B1 (ko) | 예측 모드 선택 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치 | |
KR20110000438A (ko) | 다차원 정수 변환을 이용한 영상 부호화/복호화 장치 및 방법 | |
KR20100035104A (ko) | 임펄스 신호를 고려한 영상 부호화/복호화 장치 및 방법 | |
KR20110043407A (ko) | 영상 부호화/복호화 장치 및 방법 | |
KR20130054981A (ko) | 가변 크기의 매크로블록을 이용한 영상 부호화/복호화 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20191216 Year of fee payment: 4 |