상기한 목적을 달성하기 위해 본 발명의 일 실시예에 따른 영상 신호를 디코딩 하는 방법은, 스케일러블하게 인코딩되어 수신되는 제 1 레이어의 비트스트림을 디코딩하는 단계; 및 소정의 방식으로 인코딩되어 수신되는 제 2 레이어의 비트스트림을 디코딩하는 단계를 포함하고, 상기 제 1 레이어의 영상 블록의 분할 정보 및 모션 정보는 제 2 레이어로부터 유도된 것을 특징으로 한다.
상기 실시예는, 상기 제 1 레이어의 비트스트림을 디코딩하는 단계는, 상기 영상 블록에 대응되는 상기 제 2 레이어의 대응 블록의 모드 정보 및 모션 정보에 기초하여 상기 영상 블록을 디코딩하는 것을 특징으로 한다.
또한, 상기 모션 정보는 레퍼런스 인덱스 및 모션 벡터를 포함하는 것을 특징으로 하고, 상기 영상 블록의 모션 벡터는 상기 대응 블록의 모션 벡터를 업샘플링하여 획득되는 것을 특징으로 한다.
상기 대응 블록의 분할 정보가 4*4 블록인 경우, 상기 영상 블록의 분할 정보는 16*16 블록이고, 상기 대응 블록의 분할 정보가 인터 모드로 인코딩된 16*16 블록인 경우, 상기 영상 블록은 상기 대응 블록을 기준 블록으로 인트라 베이스 모드로 인코딩된 것을 특징으로 한다.
본 발명의 다른 실시예에 따른 인코딩 된 영상 비트 스트림을 디코딩 하는 방법은, 소정의 방식으로 인코딩 되어 있는 제 2 레이어의 비트 스트림을 디코딩 하는 단계; 및 상기 제 2 레이어의 비트 스트림으로부터 디코딩 되는 정보를 이용하여, 스케일러블 하게 인코딩 되어 있는 제 1 레이어의 비트 스트림을 디코딩 하 는 단계를 포함하여 이루어지고, 여기서, 상기 제 2 레이어의 비트 스트림은 프레임의 화면 크기가 상기 제 1 레이어의 비트 스트림의 1/4배인 것을 특징으로 한다.
제 1 레이어의 비트 스트림과 제 2 레이어의 비트 스트림 내의 프레임의 화면 크기는, 각각의 비트 스트림에 포함된 정보를 기초로 확인되는 것을 특징으로 한다.
이하, 본 발명의 바람직한 실시예에 대해 첨부 도면을 참조하여 상세히 설명한다.
도 3은 본 발명에 따른 영상 신호의 스케일러블 코딩 방법이 적용되는 영상 신호 인코딩 장치의 구성을 도시한 것이다.
도 3의 영상 신호 인코딩 장치는, 입력되는 영상 신호를 예를 들어 MCTF 방식에 의해 매크로 블록 단위로 스케일러블하게 인코딩 하고 적절한 관리 정보를 생성하는 인핸스드 레이어(EL) 인코더(100), 상기 인코딩 된 각 매크로 블록의 데이터를 압축된 비트 열로 변환하는 텍스처(Texture) 코딩부(110), 상기 EL 인코더(100)에 의해 얻어지는 영상 블록의 모션 벡터(motion vectors)를 지정된 방식에 의해 압축된 비트 열로 코딩 하는 모션 코딩부(120), 입력 영상 신호를 지정된 방식, 예를 들어 MPEG 1, 2, 또는 4, 또는 H.261, H.264 등의 방식으로 인코딩 하여 필요에 따라 소화면, 예를 들어 원래 해상도의 1/2 또는 1/4인 픽쳐들의 시퀀스를 생성하는 베이스 레이어(BL) 인코더(150), 상기 텍스처 코딩부(110)의 출력 데이터, 상기 BL 인코더(150)의 픽쳐 시퀀스 및 상기 모션 코딩부(120)의 출력 벡터 데 이터를 기 지정된 포맷으로 인캡슐(encapsulate) 한 다음 기 지정된 전송 포맷으로 상호 먹싱하여 출력하는 먹서(130)를 포함하여 구성된다.
상기 EL 인코더(100)는, 임의 영상 프레임(또는 픽쳐) 내의 매크로 블록에 대하여 모션 추정(motion estimation)으로 구한 기준 블록을 감하는 예측 동작을 수행하며, 상기 매크로 블록과 기준 블록의 이미지 차를 그 기준 블록에 더하는 갱신(update) 동작을 수행한다.
상기 EL 인코더(100)는, 입력되는 영상 프레임 시퀀스를 이미지 차값을 갖게 될 프레임과 상기 이미지 차값이 더해질 프레임, 예를 들어 홀수(odd) 프레임과 짝수(even) 프레임으로 분리하여, 상기 예측 동작과 갱신 동작을 여러 레벨에 걸쳐, 예를 들어 하나의 GOP(Group Of Pictures)에 대해 L 프레임(갱신 동작에 의해 생성되는 프레임)의 수가 1개가 될 때가지 수행하는데, 도 4는 그 중 한 레벨에서의 예측 동작과 갱신 동작에 관련된 구성을 도시한 것이다.
도 4의 구성은, 상기 BL 인코더(150)에서 인코딩 된 소화면 시퀀스의 베이스 레이어 스트림에서 각 매크로 블록의 분할 정보, 모드 정보, 및 모션 정보와 같은 인코딩 정보를 추출하고, 인코딩 된 베이스 레이어 스트림을 디코딩 하는 기능을 갖는 베이스 레이어(BL) 디코더(105), 모션 추정(motion estimation)을 통해 레지듀얼(residual) 데이터를 갖게 될 프레임, 예를 들어 홀수 프레임에 대해서, 그 프레임 내의 각 매크로 블록에 대한 기준 블록을 전 또는 후에 인접한 짝수 프레임 내에서(inter-frame mode), 자신의 프레임 내에서(intra mode), 또는 베이스 레이어의 동시간의 프레임 내에서(inter-layer prediction mode) 찾고, 그 기준 블록과 의 이미지 차(각 대응 화소의 차값) 및/또는 모션 벡터를 산출하는 예측 동작을 수행하는 추정/예측기(101), 및 상기 매크로 블록에 대한 기준 블록을 포함하는 인접한 프레임, 예를 들어 짝수 프레임에 대해서, 상기 매크로 블록에 대해 산출한 이미지 차를 정규화(normalize)하여 해당 기준 블록에 더하는 갱신 동작을 수행하는 갱신기(102)를 포함하고 있다.
상기 추정/예측기(101)가 수행하는 동작을 'P' 동작이라 하며, 'P' 동작에 의해 생성되는 프레임은 'H' 프레임으로, 이 'H' 프레임에 있는 레지듀얼 데이터는 영상 신호의 고주파 성분을 반영한다. 또한, 상기 갱신기(102)가 수행하는 동작을 'U' 동작이라 하며, 'U' 동작에 의해 생성되는 프레임은 'L' 프레임으로, 'L' 프레임은 저역 서브밴드 픽쳐를 갖는다.
도 4의 추정/예측기(101)와 갱신기(102)는 프레임 단위가 아니고 하나의 프레임이 분할된 복수 개의 슬라이스(slice)에 대해 병렬적으로 동시에 수행할 수도 있다. 이하의 실시예에서 사용되는 '프레임'의 용어는 '슬라이스'로 대체하여도 기술의 등가성이 유지되는 경우에는 '슬라이스'의 의미를 당연히 포함하는 것으로 해석되어야 한다.
상기 추정/예측기(101)는, 입력되는 영상 프레임 또는 전 레벨에서 얻어진 'L' 프레임의 홀수 프레임 각각에 대해서, 기 정해진 크기의 매크로 블록(macro-block)으로 분할하고, 각 분할된 매크로 블록과 이미지가 가장 유사한 블록을 동일한 시간적 분해 레벨에 있는 시간적으로(temporally) 인접한 짝수 프레임 또는 현재 프레임 내에서 찾아서 이에 근거한 매크로 블록의 예측 영상을 만들고 모션 벡 터를 구하는 과정을 수행한다. 또는, 상기 추정/예측기(101)는, 동시간의 베이스 레이어의 프레임을 이용하여, 입력되는 영상 프레임 또는 전 레벨에서 얻어진 'L' 프레임의 홀수 프레임을 인코딩 할 수도 있는데, 이에 대해서는 아래에서 설명한다.
가장 높은 상관 관계를 갖는 블록이 대상 블록과 이미지 차가 가장 적은 블록이다. 이미지 차의 크기는, 예를 들어 pixel-to-pixel의 차이값 총합 또는 그 평균값 등으로 정해지며, 그 크기가 소정 문턱값 이하가 되는 블록들 중에서 크기가 가장 작은 매크로 블록 또는 블록들을 기준(reference) 블록(들)이라 한다.
상기 추정/예측기(101)는, 기준 블록이 인접한 프레임 또는 현재 프레임 내에서 찾아진 경우에는 현재 매크로 블록으로부터 상기 기준 블록으로의 모션 벡터 값을 구하여 상기 모션 코딩부(120)로 전송하고, 상기 기준 블록(한 프레임에만 있는 경우)의 각 화소값 또는 기준 블록들(복수의 프레임에 있는 경우)의 각 평균 화소 값과, 현재 매크로 블록 내의 각 화소값의 차이를 산출하여 해당 매크로 블록에 인코딩 하고, 선택된 기준 블록이 포함된 프레임과 현재 매크로 블록이 포함된 프레임의 상대 위치 및/또는 기준 블록의 모드, 예를 들어, Skip, DirInv, Bid, Fwd, Bwd, intra 등의 모드 중 하나의 값을 해당 매크로 블록의 헤더 영역에 삽입한다.
상기 추정/예측기(101)는, 프레임 내의 모든 매크로 블록에 대해 상기의 과정을 수행하여, 해당 프레임에 대한 'H' 프레임을 완성한다. 또한, 상기 추정/예측기(101)는, 입력되는 영상 프레임 또는 전 레벨에서 얻어진 'L' 프레임의 모든 홀수 프레임에 대해서, 각 프레임에 대한 'H' 프레임을 완성한다.
상기 갱신기(102)는, 앞서 설명한 바와 같이, 상기 추정/예측기(101)에 의해 생성된 'H' 프레임 내의 각 매크로 블록 내의 이미지 차를 해당 기준 블록이 있는 'L' 프레임(입력되는 영상 프레임 또는 전 레벨에서 얻어진 'L' 프레임의 짝수 프레임)에 더하는 동작을 수행한다.
4배의 해상도 차이를 갖는 베이스 레이어와 인핸스드 레이어 사이에 레이어 간 예측 방법을 적용하는 본 발명에 따른 실시예, 예를 들어 QCIF 해상도의 베이스 레이어를 이용하여 4CIF 해상도의 인핸스드 레이어에 대한 예측 영상을 생성하는 방법을 상세히 설명한다.
먼저, QCIF 해상도의 베이스 레이어의 프레임 내의 매크로 블록의 분할 정보 및/또는 모션 정보를 이용하여 4CIF 해상도의 인핸스드 레이어의 매크로 블록을 분할하고 예측 영상을 생성하는 방법에 대해 도 5를 참조로 설명한다.
상기 추정/예측기(101)는, 인핸스드 레이어의 현재 매크로 블록에 대응되는 베이스 레이어의 대응 블록(여기서 대응 블록은 인핸스드 레이어의 현재 매크로 블록과 동시간의 프레임 내에 위치하는 베이스 레이어의 블록 중에서 베이스 레이어와 인핸스드 레이어의 화면의 크기의 비율에 따라 확대했을 때 현재 매크로 블록을 커버하는 영역을 갖는 블록을 의미한다)에 대한 분할 정보와 인핸스드 레이어와 베이스 레이어의 해상도의 비율(4배)을 근거로 현재 매크로 블록을 분할하고, 베이스 레이어의 분할된 블록에 관한 모션 정보, 예를 들어 기준 블록을 포함하는 프레임을 가리키는 reference index와 모션 벡터를 기초로, 상기 베이스 레이어의 대응 블록의 분할 정보에 따라 분할된 인핸스드 레이어의 블록들을 인코딩 한다. 여기서, 인핸스드 레이어와 베이스 레이어의 해상도(화면의 크기)의 비가 4이므로, 인핸스드 레이어의 16개의 16x16 매크로 블록이 베이스 레이어의 16x16의 대응 블록의 분할 정보와 모션 정보를 기초로 인코딩 될 수 있다.
베이스 레이어의 4x4 블록은 인핸스드 레이어의 16x16의 매크로 블록 하나에 대응된다. 하지만, 베이스 레이어의 4x8 또는 8x4 블록은, 4배에 해당하는 16x32 또는 32x16이 매크로 블록의 최대 크기인 16x16보다 커지게 되어 하나의 매크로 블록에 대응될 수 없게 되므로, 인접하는 매크로 블록을 포함하여 인핸스드 레이어의 16x16의 매크로 블록 2개에 대응된다. 비슷하게, 베이스 레이어의 8x8 블록은 인핸스드 레이어의 16x16의 매크로 블록 4개에, 베이스 레이어의 8x16 또는 16x8 블록은 인핸스드 레이어의 16x16의 매크로 블록 8개에, 베이스 레이어의 16x16 블록은 인핸스드 레이어의 16x16의 매크로 블록 16개에 대응된다.
이때, 상기 추정/예측기(101)는, 동일한 베이스 레이어의 블록에 대응되는 인핸스드 레이어의 다수의 매크로 블록을, 대응되는 베이스 레이어의 블록에 대한 모션 정보, 즉 reference index와 모션 벡터를 공통으로 사용하여 인코딩 한다.
예를 들어, 인핸스드 레이어의 다수의 매크로 블록에 공통으로 대응되는 베이스 레이어의 블록이 direct mode로 인코딩 된 경우, 인핸스드 레이어의 상기 다수의 매크로 블록은 16x16 블록으로 인코딩 된다. 또한, 인핸스드 레이어의 다수의 매크로 블록이 공통으로 대응되는 베이스 레이어의 블록이 내부 모드로 인코딩 된 경우, 인핸스드 레이어의 상기 다수의 매크로 블록은 상기 공통으로 대응되는 베이스 레이어의 블록을 기준 블록으로 하여 인트라 베이스 모드(intra_BASE mode)로 인코딩 된다.
그리고, 상기 추정/예측기(101)는, 인핸스드 레이어의 매크로 블록이 베이스 레이어의 블록에 대한 분할 정보와 모션 정보에 따라 분할되고 인코딩 되었음을 가리키는 베이스 레이어 모드 플래그(base_layer_mode_flag)를, 예를 들어 '1'로 설정하여 상기 매크로 블록의 헤더 영역에 기록한다.
다음, QCIF 해상도의 베이스 레이어의 모션 벡터를 이용하여 그와 동시간의 4CIF 해상도의 인핸스드 레이어의 모션 벡터를 인코딩 하는 방법에 대해 설명한다.
상기 추정/예측기(101)는, 인핸스드 레이어의 프레임 내의 임의의 매크로 블록에 대한 모션 추정 동작을 통해 기준 블록으로의 모션 벡터(mv2)를 구하고, 베이스 레이어의 프레임 내에서 상기 매크로 블록과 대응되는 영역을 커버하는 매크로 블록의 모션 벡터(mvBL2)를 상기 인핸스드 레이어와 베이스 레이어의 해상도 비인 4배 크기 조절한 모션 벡터(mvScaledBL2)를 구한다. 이후, 상기 두 벡터(mv2와 mvScaledBL2) 각각, 및 상기 두 벡터(mv2와 mvScaledBL2) 사이의 차에 대해, 상기 두 벡터(mv2와 mvScaledBL2) 각각에 의해 생성된 예측 영상과 실제 영상과의 차이인 레지듀얼 에러 및 인코딩 될 때 사용될 총 비트 수 등을 고려하여 산출된 비용에 따라, 다음의 3가지 방법으로 세분된다.
즉, i) 상기 mv2의 비용이 다른 나머지 방법들에 비해 적은 경우, 상기 인핸스드 레이어에서 구한 모션 벡터를 그대로 이용할 수 있도록 인코딩 한다.
ii) 상기 mvScaledBL2의 비용이 다른 나머지 방법들에 비해 적은 경우, 상기 추정/예측기(101)는, 상기 인핸스드 레이어의 매크로 블록에 대한 모션 벡터가 베이스 레이어의 대응 블록의 스케일링 된 모션 벡터와 같음을 알리는 정보를 해당 매크로 블록의 헤더에 기록한다. 즉, 별도의 모션 벡터 정보를 제공하지 않고, 단지 레이어 1의 대응 블록의 스케일링 된 모션 벡터와 같은 나타내는 플래그(base_layer_mode_flag )를, 예를 들어 '1'로 설정한다.
iii) 상기 mv2와 mvScaledBL2의 두 벡터 사이의 차에 대한 비용이 다른 나머지 방법들에 비해 적은 경우, 다시 말해 인핸스드 레이어 해상도가 베이스 레이어의 해상도의 4배이므로 상기 mv2와 mvScaledBL2의 두 벡터의 차가 x, y(수평, 수직) 각 방향으로 3 픽셀 이하인 경우, 두 벡터의 차의 x, y 각 성분에 대해 각각 [-3, 3], 즉 3, -2, -1, 0, +1, +2, +3 중 어느 한 값을 갖게 되는 벡터 미세 정보를 기록하고, 해당 매크로 블록의 헤더에 미세 플래그(refinement_flag)를, 예를 들어 '1'로 설정한다. 여기서, x, y 각 성분은, [-3, 3], 즉 7개의 값 중 어느 한 값을 갖게 되므로, 각각 3bits로 표현될 수 있고, 상기 미세 플래그도 1bit로 표현될 수 있다. 따라서, 1Byte보다 작은 7bits만으로 모션 벡터를 표현할 수 있게 된다.
다음, 텍스쳐 예측 모드를 설명한다. 상기 추정/예측기(101)는, 상기 BL 디코더(105)에서 추출되는 베이스 레이어 내의 각 매크로 블록의 모드 정보를 기초로, 현재 예측 영상을 만들고자 하는 인핸스드 레이어 내의 매크로 블록과 동시간이고 프레임 내에서의 상대적 위치가 동일한 베이스 레이어의 대응 영역(가로 방향과 세로 방향의 픽셀 수가 상기 매크로 블록의 1/4인 영역)이 내부 모드로 코딩 되 어 있는지 확인한다. 그리고, 상기 추정/예측기(101)는, 상기 대응 영역이 내부 모드로 코딩 되어 있으면, 상기 대응 영역을 내부 모드의 기준이 되는 다른 영역의 화소값을 근거로 원래의 블록 이미지로 복원하고, 상기 복원된 대응 영역을 인핸스드 레이어와 베이스 레이어의 해상도 비에 해당하는 4배 업샘플링 하여 상기 매크로 블록의 크기로 확대한 후, 상기 확대된 대응 영역과 상기 매크로 블록의 각 화소의 차이값을 상기 인핸스드 레이어 내의 매크로 블록에 대한 예측 영상으로 인코딩 한다. 이후, 상기 추정/예측기(101)는, 상기 매크로 블록이 베이스 레이어 내에 내부 모드로 인코딩 된 대응 영역을 기준으로 인코딩 되었음을 가리키는 인트라 베이스 플래그(intra_base_flag)를, 예를 들어 '1'로 설정하여 상기 매크로 블록의 헤더 영역에 기록한다.
다음, 상기 레지듀얼 예측 모드를 설명한다. 상기 추정/예측기(101)는, 먼저 주 픽쳐 시퀀스의 임의의 프레임 내의 매크로 블록에 대해 예측 동작을 통해 인핸스드 레이어의 레지듀얼 블록(레지듀얼 데이터를 갖도록 인코딩 된 블록)을 구하고, 상기 BL 인코더(150)에 의해 인코딩 된 베이스 레이어의 비트 스트림에서 상기 매크로 블록과 동시간 및 프레임 내에서의 상대적 위치가 동일한 대응 레지듀얼 영역을 찾아, 이를 인핸스드 레이어와 베이스 레이어의 해상도 비에 해당하는 4배 업샘플링 하여 상기 매크로 블록의 크기로 확대한 후, 상기 확대된 베이스 레이어의 대응 레지듀얼 영역의 화소값을 상기 인핸스드 레이어의 레지듀얼 블록의 화소값에서 감하여 상기 매크로 블록에 인코딩 한다. 이후, 상기 추정/예측기(101)는, 상기 매크로 블록이 레지듀얼 데이터의 차이값으로 인코딩 되었음을 가리키는 레지듀 얼 예측 플래그(residual_prediction_flag)를, 예를 들어 '1'로 설정하여 상기 매크로 블록의 헤더 영역에 기록한다.
지금까지 설명한 방법에 의해 인코딩 된 데이터 스트림은 유선 또는 무선으로 디코딩 장치에 전송되거나 기록 매체를 매개로 하여 전달되며, 디코딩 장치는 이후 설명하는 방법에 따라 원래의 영상 신호를 복원하게 된다.
도 6은 도 3의 장치에 의해 인코딩 된 데이터 스트림을 디코딩 하는 장치의 블록도이다. 도 6의 디코딩 장치는, 수신되는 데이터 스트림에서 압축된 모션 벡터 스트림과 압축된 매크로 블록 정보 스트림을 분리하는 디먹서(200), 압축된 매크로 블록 정보 스트림을 원래의 비압축 상태로 복원하는 텍스처 디코딩부(210), 압축된 모션 벡터 스트림을 원래의 비압축 상태로 복원하는 모션 디코딩부(220), 압축 해제된 매크로 블록 정보 스트림과 모션 벡터 스트림을 예를 들어 MCTF 방식에 따라 원래의 영상 신호로 역변환하는 인핸스드 레이어(EL) 디코더(230), 베이스 레이어 스트림을 정해진 방식, 예를 들어 MPEG4 또는 H.264 방식에 의해 디코딩 하는 베이스 레이어 디코더(240)를 포함하여 구성된다. 상기 EL 디코더(230)에 제공하여, 상기 EL 디코더(230)는 상기 베이스 레이어 스트림에서 직접 추출하거나 또는 상기 BL 디코더(240)에 문의하여, 각 매크로 블록의 분할 정보, 모드 정보, 및 모션 정보와 같은 베이스 레이어의 인코딩 정보와 베이스 레이어의 복원된 데이터를 이용한다.
상기 EL 디코더(230)는, 입력되는 스트림으로부터 원래의 프레임 시퀀스로 복원하는데, 도 7은 상기 EL 디코더(230)의 주요 구성을 상세히 도시한 것으로, MCTF 방식에 대한 예이다.
도 7은 시간적 분해 레벨 N의 'H' 프레임 시퀀스와 'L' 프레임 시퀀스를 시간적 분해 레벨 N-1의 'L' 프레임 시퀀스로 시간적 합성(Temporal Composition)하는 구성이다. 도 7의 구성은, 입력되는 'H' 프레임의 각 화소의 차값을 입력되는 'L' 프레임에서 선택적으로 감하는 역갱신기(231), 'H' 프레임의 이미지 차가 감해진 'L' 프레임과 그 'H' 프레임을 사용하여 원래의 이미지를 갖는 'L' 프레임을 복원하는 역예측기(232), 입력되는 모션 벡터 스트림을 디코딩 하여 'H' 프레임 내의 각 블록의 모션 벡터 정보를 각 단(stage)의 역갱신기(231)와 역예측기(232)에 제공하는 모션 벡터 디코더(233) 및 상기 역예측기(232)에 의해 완성된 'L' 프레임을 상기 역갱신기(231)의 출력 'L' 프레임 사이에 삽입하여 정상적인 순서의 'L' 프레임 시퀀스로 만드는 배열기(234)를 포함한다.
상기 배열기(234)에 의해 출력되는 'L' 프레임은 레벨 N-1의 'L' 프레임 시퀀스(701)가 되고, 이는 입력되는 N-1 레벨의 'H' 프레임 시퀀스(702)와 함께 다음 단의 역갱신기와 역예측기에 의해 'L' 프레임 시퀀스로 다시 복원되며, 이 과정이 인코딩 할 때 수행된 레벨만큼 수행되어 원래의 영상 프레임 시퀀스로 복원된다.
수신되는 레벨 N의 'H' 프레임과 레벨 N+1에서 생성된 레벨 N의 'L' 프레임이 레벨 N-1의 'L' 프레임으로 복원되는 레벨 N에서의 복원(시간적 합성) 과정을 설명한다.
상기 역갱신기(231)는, 임의의 'L' 프레임(레벨 N)에 대해, 상기 모션 벡터 디코더(233)로부터 제공되는 모션 벡터를 참조하여, 인코딩 과정에서 상기 임의의 'L' 프레임(레벨 N)으로 갱신되는 원래의 'L' 프레임(레벨 N-1) 내의 블록을 기준 블록으로 하여 이미지 차를 구한 모든 'H' 프레임(레벨 N)을 파악한 다음, 상기 'H' 프레임 내의 매크로 블록의 이미지 차값을 상기 임의의 'L' 프레임 내의 해당 블록의 화소값에서 감하는 동작을 수행한다.
현재 'L' 프레임(레벨 N) 내의 블록 중 인코딩 과정에서 'H' 프레임 내의 매크로 블록의 이미지 차값으로 갱신된 블록에 대해 상기와 같은 역갱신 동작을 수행하여 레벨 N-1의 'L' 프레임으로 복원한다.
상기 역예측기(232)는, 임의의 'H' 프레임 내의 매크로 블록에 대해, 상기 모션 벡터 디코더(233)로부터 제공되는 모션 벡터를 참조하여, 'L' 프레임(상기 역갱신기(231)에 의해 역갱신되어 출력되는 'L' 프레임)에 있는 기준 블록을 파악한 다음, 상기 매크로 블록의 화소의 차값에 기준 블록의 화소값을 더함으로써 원래의 이미지를 복원한다.
또한, 상기 역예측기(232)는, 임의의 'H' 프레임 내의 매크로 블록이 레이어 간 예측 방법에 의해 베이스 레이어를 이용하여 인코딩 되어 있는 경우, 텍스쳐 예측 방법, 레지듀얼 예측 방법, 또는 모션 예측 방법에 상응하는 디코딩 방법으로 상기 매크로 블록에 대한 원래의 이미지를 복원하는데, 이에 대해서는 아래에서 설명한다.
현재 'H' 프레임 내의 모든 매크로 블록이 상기와 같은 동작을 통해 원래의 이미지로 복원되고, 이들이 모두 조합되어 'L' 프레임으로 복원되면, 이 'L' 프레임은 상기 배열기(234)를 통해 상기 역갱신기(231)에서 복원된 'L' 프레임과 교대로 배열되어 다음 단으로 출력된다.
임의의 'H' 프레임 내의 매크로 블록이 베이스 레이어를 이용하여 레이어 간 예측 방법에 의해 인코딩 되어 있는 경우, 이를 디코딩 하는 방법에 대해서 설명한다.
상기 역예측기(232)는, 상기 베이스 레이어 스트림에서 추출되거나 상기 BL 디코더(240)로부터 제공되는 'base_layer_id_plus1'를 기초로, 인핸스드 레이어의 해상도와 베이스 레이어의 해상도의 비를 확인하는데, 'current_layer_id'와 'base_layer_id_plus1 1'의 차가 2이면 인핸스드 레이어와 베이스 레이어의 해상도 차이가 4배가 된다. 아래에는 인핸스드 레이어와 베이스 레이어의 해상도 차이가 4배인 경우에 대해서 설명한다.
상기 역예측기(232)는, 임의의 'H' 프레임 내의 매크로 블록의 헤더에 'base_layer_mode_flag'가, 예를 들어 '1'로 설정되어 있는 경우, 상기 매크로 블록과 동시간이고 프레임 내에서의 위치가 동일한 베이스 레이어의 대응 블록의 모션 정보를 기초로, 상기 매크로 블록에 대한 원래의 이미지를 복원한다.
상기 대응 블록이 inter-frame mode로 인코딩 되어 있는 경우, 상기 대응 블록에 대한 모션 정보에는 기준 블록을 포함하는 프레임을 가리키는 reference index와 모션 벡터가 포함되므로, 상기 역예측기(232)는, 상기 reference index와 상기 모션 벡터를 x, y 각 방향으로 4배 확대한 값을 기초로 인핸스드 레이어의 'L' 프레임에 있는 기준 블록을 파악하고, 상기 매크로 블록의 화소의 차값에 기준 블록의 화소값을 더함으로써 원래의 이미지를 복원한다. 상기 대응 블록이 direct mode로 인코딩 되어 있는 경우, 인핸스드 레이어의 이전 'H' 프레임 내의 동일 위치에 있는 매크로 블록의 모션 벡터 또는 주변에 있는 다른 매크로 블록에 대한 모션 벡터를 이용하여 구한 모션 벡터를 기초로 기준 블록을 찾아 원래의 이미지를 복원한다. 또는 상기 대응 블록이 direct mode로 인코딩 되어 있는 경우, 베이스 레이어의 이전 'H' 프레임 내의 동일 위치에 있는 매크로 블록의 모션 벡터 또는 상기 대응 블록의 주변에 있는 다른 블록에 대한 모션 벡터를 이용하여 구한 모션 벡터를 x, y 각 방향으로 4배 확대하여 이용할 수도 있다.
또한, 상기 대응 블록이 내부 모드로 인코딩 되어 있는 경우, 상기 역예측기(232)는, 상기 매크로 블록과 프레임 내에서의 상대적 위치가 동일한, 상기 대응 블록 내의 대응 영역(가로 방향과 세로 방향의 픽셀 수가 상기 매크로 블록의 1/4인 영역)을 내부 모드의 기준이 되는 다른 영역의 화소값을 근거로 원래의 이미지로 복원하고, 상기 복원된 대응 영역을 4배 업샘플링 하여 상기 매크로 블록의 크기로 확대한 후, 상기 확대된 대응 영역과 상기 매크로 블록의 각 화소의 차이값을 더함으로써, 상기 매크로 블록의 원래의 이미지를 복원한다.
한편, 상기 역예측기(232)는, 임의의 'H' 프레임 내의 매크로 블록의 헤더에 'refinement_flag'가, 예를 들어 '1'로 설정되어 있는 경우, 상기 매크로 블록과 동시간이고 프레임 내에서의 위치가 동일한 베이스 레이어의 대응 블록의 모션 벡 터를 x, y 각 방향으로 4배 확대하고, 여기에 [-3, 3] 범위의 벡터 미세 정보를 x, y 각 성분에 대해 더하여, 상기 매크로 블록에 대한 모션 벡터를 구한 후, 이를 기초로 인핸스드 레이어의 'L' 프레임에 있는 기준 블록을 파악하고, 상기 매크로 블록의 화소의 차값에 기준 블록의 화소값을 더함으로써 원래의 이미지를 복원한다.
또한, 상기 역예측기(232)는, 임의의 'H' 프레임 내의 매크로 블록의 헤더에 motion_prediction_flag가, 예를 들어 '1'로 설정되어 있는 경우, 상기 매크로 블록과 동시간이고 프레임 내에서의 위치가 동일한 베이스 레이어의 대응 블록의 모션 벡터를 x, y 각 방향으로 4배 확대하고, 여기에 상기 매크로 블록에 대해 인코딩 된 모션 벡터의 차이값을 더하여, 상기 매크로 블록에 대한 모션 벡터를 구한 후, 이를 기초로 인핸스드 레이어의 'L' 프레임에 있는 기준 블록을 파악하고, 상기 매크로 블록의 화소의 차값에 기준 블록의 화소값을 더함으로써 원래의 이미지를 복원한다.
상기 역예측기(232)는, 임의의 'H' 프레임 내의 매크로 블록의 헤더에 intra_BASE_flag가, 예를 들어 '1'로 설정되어 있는 경우, 상기 매크로 블록과 프레임 내에서의 상대적 위치가 동일한, 내부 모드로 인코딩 되어 있는 베이스 레이어의 대응 영역(가로 방향과 세로 방향의 픽셀 수가 상기 매크로 블록의 1/4인 영역)을 내부 모드의 기준이 되는 다른 영역의 화소값을 근거로 원래의 이미지로 복원하고, 상기 복원된 대응 영역을 4배 업샘플링 하여 상기 매크로 블록의 크기로 확대한 후, 상기 확대된 대응 영역과 상기 매크로 블록의 각 화소의 차이값을 더함으로써, 상기 매크로 블록의 원래의 이미지를 복원한다.
상기 역예측기(232)는, 임의의 'H' 프레임 내의 매크로 블록의 헤더에 residual_prediction_flag가, 예를 들어 '1'로 설정되어 있는 경우, 상기 매크로 블록이 레지듀얼 데이터의 차이값으로 인코딩 되어 있다고 판단하고, 상기 매크로 블록과 프레임 내에서의 상대적 위치가 동일한 베이스 레이어의 대응 레지듀얼 영역(가로 방향과 세로 방향의 픽셀 수가 상기 매크로 블록의 1/4인 영역으로 레지듀얼 데이터를 갖도록 인코딩 된 영역)을 4배 업샘플링 하여 상기 매크로 블록의 크기로 확대한 후, 상기 확대된 대응 레지듀얼 영역의 화소값과 레지듀얼 데이터의 차이값으로 인코딩 된 상기 매크로 블록의 화소값을 더함으로써, 상기 매크로 블록에 대한 레지듀얼 블록(이미지 차값, 즉 레지듀얼 데이터를 갖는 블록)을 구한다. 이후, 역예측기(232)는, 상기 모션 벡터 디코더(233)로부터 제공되는 모션 벡터를 참조하여, 'L' 프레임에 있는 기준 블록을 파악한 다음, 이미지 차값을 갖는 상기 매크로 블록의 화소값에 기준 블록의 화소값을 더함으로써 원래의 이미지를 복원한다.
전술한 방법에 따라, 인코딩 된 데이터 스트림이 완전한 영상 프레임 시퀀스로 복구된다. 특히, MCTF 방식을 예로 들어 설명한 인코딩 과정에서 예측 동작과 갱신 동작을 한 GOP에 대해서 N회 수행한 경우, 상기 MCTF 디코딩 과정에서 역갱신 동작과 역예측 동작을 N회 수행하면 원래 영상 신호의 화질을 얻을 수 있고, 그 보다 작은 횟수로 수행하면 화질이 다소 저하되지만 비트 레이트는 보다 낮은 영상 프레임 시퀀스를 얻을 수 있다. 따라서, 디코딩 장치는 자신의 성능에 맞는 정도로 상기 역갱신 동작과 역예측 동작을 수행하도록 설계된다.
전술한 디코딩 장치는 이동 통신 단말기 등에 실장되거나 또는 기록 매체를 재생하는 장치에 실장될 수 있다.
이상, 전술한 본 발명의 바람직한 실시예는 예시의 목적을 위해 개시된 것으로, 당업자라면 이하 첨부된 특허청구범위에 개시된 본 발명의 기술적 사상과 그 기술적 범위 내에서 또 다른 다양한 실시예들을 개량, 변경, 대체 또는 부가 등이 가능할 것이다.