현재 널리 사용되고 있는 휴대폰과 노트북, 그리고 앞으로 널리 사용하게 될 이동(mobile) TV와 핸드헬드 PC 등이 무선으로 송수신하는 디지털 영상 신호에 대해서는 TV 신호에서와 같은 넓은 대역을 할당하기가 여의치 않다. 따라서, 이와 같은 이동성 휴대 장치를 위한 영상 압축 방식에 사용될 표준은 좀 더 영상 신호의 압축 효율이 높아야만 한다.
더욱이, 상기와 같은 이동성 휴대 장치는 자신이 처리 또는 표현(presentation)할 수 있는 능력이 다양할 수 밖에 없다. 따라서, 압축된 영상이 그만큼 다양하게 사전 준비되어야만 하는 데, 이는 동일한 하나의 영상원(source)에 대해서 초당 전송 프레임 수, 해상도, 픽셀 당 비트 수 등 다양한 변수들로 각각 조합된 여러 품질의 영상 데이터를 구비하고 있어야 함을 의미하므로, 컨텐츠 제공자에게 많은 부담이 될 수 밖에 없다.
이러한 이유로, 컨텐츠 제공자는, 하나의 영상원에 대해 고속 비트 레이트(bit rate)의 압축 영상 데이터를 구비해 두고, 상기와 같은 이동성 장치가 요청하면 압축 영상을 디코딩 한 다음 요청한 장치의 영상 처리 능력(capability)에 맞는 영상 데이터로 다시 인코딩 하여 이를 제공한다. 하지만 이러한 방식에는 트랜스코딩(transcoding)(decoding+scaling+encoding) 과정이 필히 수반되므로 이동성 장치가 요청한 영상을 제공함에 있어서 다소 시간 지연이 발생한다. 또한 트랜스코딩도 목표 인코딩이 다양함에 따라 복잡한 하드웨어의 디바이스와 알고리즘을 필요로 한다.
이와 같은 불리한 점들을 해소하기 위해 제안된 것이 스케일러블 영상 코덱(SVC : Scalable Video Codec)이다. 이 방식은 영상 신호를 인코딩함에 있어, 최고 화질로 인코딩 하되, 그 결과로 생성된 픽처 시퀀스의 부분 시퀀스(시퀀스 전체에서 간헐적으로 선택된 프레임의 시퀀스)를 디코딩 하여도 영상의 화질을 어느 정도 보장할 수 있도록 하는 방식이다.
MCTF(Motion Compensated Temporal Filter(or Filtering))는 상기와 같은 스케일러블 영상 코덱에 사용하기 위해 제안된 인코딩 방식이다. MCTF 방식은 대역폭이 제한된 이동 통신 등과 같은 전송 환경에 적용될 가능성이 높으므로 초당 전송되는 비트 수를 낮추기 위해 높은 압축 효율, 즉 높은 코딩 효율(coding efficiency)을 필요로 한다.
앞서 언급한 바와 같이 스케일러블 방식인 MCTF로 인코딩 된 픽쳐 시퀀스 중 일부만을 수신하여 처리하여도 어느 정도의 화질을 보장하지만, 비트 레이트가 낮아지는 경우에는 화질 저하가 크게 나타난다. 이를 해소하기 위해서 낮은 전송률을 위한 별도의 보조 픽쳐 시퀀스, 예를 들어 소화면 및/또는 초당 프레임 수 등이 낮은 픽쳐 시퀀스를 제공할 수도 있다.
보조 픽쳐 시퀀스를 베이스 레이어(base layer)라고 부르고, 주 픽쳐 시퀀스를 인핸스드(enhanced)(또는 인핸스먼트(enhancement)) 레이어라고 부른다. 베이스 레이어와 인핸스드 레이어는 동일한 영상 콘텐츠를 공간 해상도나 프레임 레이트 등을 달리하여 인코딩 한 것이므로, 양 레이어의 영상 신호에는 잉여 정보(redundancy)가 존재한다. 따라서, 인핸스드 레이어의 코딩 효율을 높이기 위해, 베이스 레이어의 프레임을 이용하여 인핸스드 레이어의 프레임을 예측하는 여러 방법이 제안되고 있다.
예를 들어, 베이스 레이어 픽쳐의 모션 벡터를 이용하여 그와 동시간의 인핸스드 레이어 픽쳐의 모션 벡터를 코딩하는 방법이 있다. 또한, 베이스 레이어의 임의 영상 프레임을 기준으로 하여 그와 동시간의 인핸스드 레이어의 영상 프레임에 대한 예측 영상을 만들 수도 있다.
또한, 주 픽쳐 시퀀스에 대해 생성한 인핸스드 레이어의 예측 영상에 대해 보조 픽쳐 시퀀스에 대해 생성한 베이스 레이어의 예측 영상을 이용하여 추가적인 예측 동작을 수행할 수도 있는데, 이를 레지듀얼 예측(residual prediction) 모드라 한다. 여기서 예측 영상이라 함은 매크로 블록(macro block)에 대해 예측 동작을 수행하여 구한 이미지 차값, 즉 레지듀얼 데이터를 갖는 영상을 말하고, 이후 레지듀얼 데이터를 갖는 매크로 블록을 레지듀얼 블록으로 칭하고, 레지듀얼 데이터를 갖는 프레임을 레지듀얼 프레임이라 칭한다.
레지듀얼 예측 동작을 좀 더 상세히 설명하면, 주 픽쳐 시퀀스의 임의의 프레임 내의 매크로 블록에 대해 예측 동작을 통해 인핸스드 레이어의 레지듀얼 블록을 구하는데, 보조 픽쳐 시퀀스에 대해서도 예측 동작을 수행하여 베이스 레이어의 레지듀얼 블록과 레지듀얼 프레임을 생성한다. 이후, 상기 매크로 블록에 대하여, 이에 대응되는 베이스 레이어의 레지듀얼 블록을 찾아, 이를 업샘플링(up-sampling) 하여 상기 매크로 블록과 동일하게 확대하고, 확대된 베이스 레이어의 레지듀얼 블록의 화소값을 상기 인핸스드 레이어의 레지듀얼 블록의 화소값에서 감하여 상기 매크로 블록에 인코딩 한다.
도 1은 매크로 블록을 기반으로 하는 종래의 레지듀얼 예측 모드를 도식적으로 나타낸 것으로, 여기서 인핸스드 레이어는 프레임 레이트(frame rate)가 30Hz이고 프레임 해상도(resolution)가 CIF인 반면, 베이스 레이어는 프레임 레이트가 15Hz이고 프레임 해상도가 QCIF이다.
인핸스드 레이어에서 레지듀얼 데이터로 인코딩 된 제 1 레지듀얼 블록 R_MB_1과 제 3 레지듀얼 블록 R_MB_3에 대해, 이에 대응되는 베이스 레이어의 제 4 레지듀얼 블록 R_MB_4와 제 5 레지듀얼 블록 R_MB_5를 각각 업샘플링 하여 인핸스드 레이어의 해상도인 CIF로 확대하고, 확대된 베이스 레이어의 레지듀얼 블록을 기준으로 인핸스드 레이어의 레지듀얼 블록에 대한 예측 동작을 수행한다.
하지만, 인핸스드 레이어의 제 2 레지듀얼 블록 R_MB_2에 대해서는, 이에 대 응되는 베이스 레이어의 레지듀얼 블록이 존재하지 않기 때문에, 베이스 레이어의 레지듀얼 블록을 기준으로 하는 예측 영상을 구할 수 없다.
즉, 레지듀얼 예측 모드를 적용하기 위해서는, 인핸스드 레이어의 매크로 블록에 대응되는 베이스 레이어의 레지듀얼 블록이 존재해야만 한다. 또한, 인핸스드 레이어의 매크로 블록을 포함하는 프레임과 동시간의 레지듀얼 프레임이 베이스 레이어 내에 존재하지 않는 경우에도 레지듀얼 예측 모드를 적용할 수 없다.
따라서, 인핸스드 레이어가 베이스 레이어보다 프레임 레이트가 높은 경우, 레지듀얼 데이터 또는 레지듀얼 데이터에 대한 차이값으로 인코딩 하고자 하는 인핸스드 레이어의 매크로 블록을 포함하는 프레임과 동시간의 프레임이 베이스 레이어 내에 존재하지 않는 경우가 발생한다. 이렇듯 베이스 레이어에 존재하지 않는 프레임을 'missing picture'라고 하고, 베이스 레이어에 missing picture가 존재하는 인핸스드 레이어의 매크로 블록에 대해서는 레지듀얼 예측 모드를 적용할 수 없게 되고, 이에 따라 코딩 효율의 향상을 기대하기 힘들게 된다.
이하, 본 발명의 바람직한 실시예에 대해 첨부 도면을 참조하여 상세히 설명한다.
도 2는 본 발명에 따른 영상 신호의 스케일러블 코딩 방법이 적용되는 영상 신호 인코딩 장치의 구성을 도시한 것이다.
도 2의 영상 신호 인코딩 장치는, 입력되는 영상 신호를 특히 MCTF 방식에 의해 매크로 블록 단위로 스케일러블하게 인코딩 하고 적절한 관리 정보를 생성하는 인핸스드 레이어(EL) 인코더(100), 상기 인코딩 된 각 매크로 블록의 데이터를 압축된 비트 열로 변환하는 텍스처(Texture) 코딩부(110), 상기 EL 인코더(100)에 의해 얻어지는 영상 블록의 모션 벡터(motion vectors)를 지정된 방식에 의해 압축된 비트 열로 코딩 하는 모션 코딩부(120), 입력 영상 신호를 지정된 방식, 예를 들어 MPEG 1, 2, 또는 4, 또는 H.261, H.264 등의 방식으로 인코딩 하여 필요에 따라서는 소화면, 예를 들어 원래 크기의 25%인 픽쳐들의 시퀀스를 생성하는 베이스 레이어(BL) 인코더(150), 상기 텍스처 코딩부(110)의 출력 데이터, 상기 BL 인코더(150)의 픽쳐 시퀀스 및 상기 모션 코딩부(120)의 출력 벡터 데이터를 기 지정된 포맷으로 인캡슐(encapsulate) 한 다음 기 지정된 전송 포맷으로 상호 먹싱하여 출력하는 먹서(130)를 포함하여 구성된다.
상기 EL 인코더(100)는, 임의 영상 프레임(또는 픽쳐) 내의 매크로 블록에 대하여 모션 추정(motion estimation)으로 구한 기준 블록을 감하는 예측 동작을 수행하며, 상기 매크로 블록과 기준 블록의 이미지 차를 그 기준 블록에 더하는 갱신(update) 동작을 수행하며, 또한 이미지 차가 구해진 매크로 블록에 대해 베이스 레이어의 데이터를 이용하여 레지듀얼 예측 동작을 추가로 수행할 수도 있다.
상기 EL 인코더(100)는, 입력되는 영상 프레임 시퀀스를 이미지 차값을 갖게 될 프레임과 상기 이미지 차값이 더해질 프레임, 예를 들어 홀수(odd) 프레임과 짝수(even) 프레임으로 분리하여, 예측 동작, 갱신 동작, 및 레지듀얼 예측 동작을 여러 레벨에 걸쳐, 예를 들어 하나의 GOP(Group Of Pictures)에 대해 L 프레임(갱신 동작에 의해 생성되는 프레임)의 수가 1개가 될 때까지 수행하는데, 도 3은 그 중 한 레벨에서의 예측 동작, 갱신 동작, 및 레지듀얼 예측 동작에 관련된 구성을 도시한 것이다.
도 3의 구성은, 상기 BL 인코더(150)에서 인코딩 된 소화면 시퀀스의 베이스 레이어 스트림에 대한 프레임 레이트와 같은 인코딩 정보를 추출하고, 상기 베이스 레이어 스트림을 디코딩 하는 기능을 갖는 베이스 레이어(BL) 디코더(105), 모션 추정(motion estimation)을 통해 레지듀얼(residual) 데이터를 갖게 될 프레임, 예를 들어 홀수 프레임에 대해서, 그 프레임 내의 각 매크로 블록에 대한 기준 블록을 전 또는 후에 인접한 짝수 프레임 내에서(inter-frame mode) 또는 자신의 프레임 내에서(intra mode) 찾고, 그 기준 블록과의 이미지 차(각 대응 화소의 차값) 및/또는 모션 벡터를 산출하는 예측 동작을 수행하는 추정/예측기(101), 상기 매크로 블록에 대한 기준 블록을 포함하는 인접한 프레임, 예를 들어 짝수 프레임에 대해서, 상기 매크로 블록에 대해 산출한 이미지 차를 정규화(normalize)하여 해당 기준 블록에 더하는 갱신 동작을 수행하는 갱신기(102), 및 상기 추정/예측기(101)의 예측 동작에 의해 생성되는 레지듀얼 데이터(이미지 차)를 갖는 레지듀얼 블록 에 대해서 이에 대응되는, 베이스 레이어 또는 인핸스드 레이어 내의 레지듀얼 블록을 이용하여 추가적인 예측 동작, 즉 레지듀얼 예측 동작을 수행하는 레지듀얼 예측기(103)를 포함하고 있다.
상기 추정/예측기(101)가 수행하는 동작을 'P' 동작이라 하며, 'P' 동작에 의해 생성되는 프레임은 'H' 프레임으로, 이 'H' 프레임에 있는 레지듀얼 데이터는 영상 신호의 고주파 성분을 반영한다. 또한, 상기 갱신기(102)가 수행하는 동작을 'U' 동작이라 하며, 'U' 동작에 의해 생성되는 프레임은 'L' 프레임으로, 'L' 프레임은 저역 서브밴드 픽쳐를 갖는다.
도 3의 추정/예측기(101), 갱신기(102), 및 레지듀얼 예측기(103)는 프레임 단위가 아니고 하나의 프레임이 분할된 복수 개의 슬라이스(slice)에 대해 병렬적으로 동시에 수행할 수도 있다. 이하의 실시예에서 사용되는 '프레임'의 용어는 '슬라이스'로 대체하여도 기술의 등가성이 유지되는 경우에는 '슬라이스'의 의미를 당연히 포함하는 것으로 해석되어야 한다.
상기 추정/예측기(101)는, 입력되는 영상 프레임 또는 전 레벨에서 얻어진 'L' 프레임의 홀수 프레임 각각에 대해서, 기 정해진 크기의 매크로 블록(macro-block)으로 분할하고, 각 분할된 매크로 블록과 이미지가 가장 유사한 블록을 동일한 시간적 분해 레벨에 있는 시간적으로(temporally) 인접한 짝수 프레임에서 찾아서 이에 근거한 매크로 블록의 예측 영상을 만들고 모션 벡터를 구하는 과정을 수행한다. 만약 적정한 문턱값 이상의 상관성을 갖는 블록, 즉 기준으로 삼을 만한 블록을 찾지 못하는 경우, 현재의 매크로 블록에 대해 인접 화소값을 이용하여 내 부 모드로 인코딩 한다.
가장 높은 상관 관계를 갖는 블록이 대상 블록과 이미지 차가 가장 적은 블록이다. 이미지 차의 크기는, 예를 들어 pixel-to-pixel의 차이값 총합 또는 그 평균값 등으로 정해지며, 그 크기가 소정 문턱값 이하가 되는 블록들 중에서 크기가 가장 작은 매크로 블록 또는 블록들을 기준(reference) 블록(들)이라 한다.
상기 추정/예측기(101)는, 기준 블록이 찾아진 경우에는 현재 매크로 블록으로부터 상기 기준 블록으로의 모션 벡터 값을 구하여 상기 모션 코딩부(120)로 전송하고, 상기 기준 블록(한 프레임에만 있는 경우)의 각 화소값과 또는 기준 블록들(복수의 프레임에 있는 경우)의 각 평균 화소 값과, 현재 매크로 블록 내의 각 화소의 차이값을 산출하여 해당 매크로 블록에 인코딩 하고, 선택된 기준 블록이 포함된 프레임과 현재 매크로 블록이 포함된 프레임의 상대 위치 및/또는 기준 블록의 모드, 예를 들어, Skip, DirInv, Bid, Fwd, Bwd, intra 등의 모드 중 하나의 값을 해당 매크로 블록의 헤더 영역에 삽입한다.
상기 추정/예측기(101)는, 프레임 내의 모든 매크로 블록에 대해 상기의 과정을 수행하여, 해당 프레임에 대한 예측 영상인 'H' 프레임을 완성한다. 또한, 상기 추정/예측기(101)는, 입력되는 영상 프레임 또는 전 레벨에서 얻어진 'L' 프레임의 모든 홀수 프레임에 대해서, 각 프레임에 대한 예측 영상인 'H' 프레임을 완성한다.
상기 갱신기(102)는, 앞서 설명한 바와 같이, 상기 추정/예측기(101)에 의해 생성된 'H' 프레임 내의 각 매크로 블록 내의 이미지 차를 해당 기준 블록이 있는 'L' 프레임(입력되는 영상 프레임 또는 전 레벨에서 얻어진 'L' 프레임의 짝수 프레임)에 더하는 동작을 수행한다.
한편, 상기 레지듀얼 예측기(103)는, 상기 추정/예측기(101)에서 생성되는 레지듀얼 데이터를 갖는 'H' 프레임(레지듀얼 프레임) 내의 레지듀얼 블록(인핸스드 레이어)에 대해, 이에 대응되는 베이스 레이어의 레지듀얼 블록을 찾아 업샘플링을 통해 확대하고, 확대된 베이스 레이어의 레지듀얼 블록의 화소값을 상기 인핸스드 레이어의 레지듀얼 블록의 화소값에서 감하는 레지듀얼 예측 동작을 추가로 수행할 수 있다.
하지만, 인핸스드 레이어의 레지듀얼 블록을 포함하는 현재 프레임과 동시간의 레지듀얼 프레임이 상기 BL 디코더(105)에서 출력되는 베이스 레이어에 존재하지 않는 경우, 상기 인핸스드 레이어의 레지듀얼 블록에 대응되는 베이스 레이어의 레지듀얼 블록이 존재하지 않게 된다.
이 경우, 본 발명에 따른 레지듀얼 예측기(103)는, 인접하는 베이스 레이어의 레지듀얼 프레임 또는 인핸스드 레이어의 레지듀얼 프레임을 이용하여 레지듀얼 예측 동작을 수행할 수 있다.
예를 들어, 베이스 레이어의 레지듀얼 프레임 중에서 상기 인핸스드 레이어의 레지듀얼 블록을 포함하는 현재 프레임보다 앞선 및 뒤진 프레임을 기초로, 레지듀얼 예측 동작을 수행할 수 있다.
또한, 인핸스드 레이어의 레지듀얼 블록에 대응되는 베이스 레이어의 레지듀얼 블록이 존재하지 않는 경우, 본 발명의 다른 실시예에 따른 레지듀얼 예측 기(103)는, 인핸스드 레이어의 레지듀얼 프레임, 즉 상기 추정/예측기(101)에서 생성되는 'H' 프레임 중에서, 상기 레지듀얼 블록을 포함하는 현재 프레임보다 앞선 및 뒤진 프레임을 기초로, 레지듀얼 예측 동작을 수행할 수도 있다.
상기 인핸스드 레이어의 레지듀얼 블록을 포함하는 현재 프레임과 동시간의 레지듀얼 프레임이 베이스 레이어에 존재하지 않는 경우, 상기 인핸스드 레이어의 레지듀얼 블록에 레지듀얼 예측 모드를 적용하는 본 발명에 따른 실시예들을 도 4와 도 5를 참조로 설명한다.
도 4는 인핸스드 레이어의 매크로 블록을 포함하는 프레임보다 앞선 및 뒤진 베이스 레이어의 레지듀얼 프레임을 이용하여 상기 인핸스드 레이어의 매크로 블록에 레지듀얼 예측 모드를 적용하는 본 발명에 따른 일 실시예를 도시한 것이다.
도 4의 실시예는 인핸스드 레이어의 레지듀얼 블록(R_MB_2)을 포함하는 프레임과 동시간의 레지듀얼 프레임이 베이스 레이어에 존재하지는 않는 경우에 적용될 수 있는데, 베이스 레이어에 상기 동시간의 레지듀얼 프레임이 존재하는지 여부는 상기 BL 디코더(105)에서 추출되는 인코딩 정보 중에서 픽쳐의 디코딩 순서를 알리는 수인 POC(Picture Order Count)에 근거하여 동일 POC를 갖는 프레임이 베이스 레이어에 존재하는지 여부를 확인함으로써, 확인될 수 있다.
상기 레지듀얼 예측기(103)는, 베이스 레이어의 앞선 레지듀얼 프레임(past residual frame)과 뒤진 레지듀얼 프레임(future residual frame) 내에 포함되는, 상기 인핸스드 레이어의 레지듀얼 블록(R_MB_2)에 대응되는, 대응 레지듀얼 블록(프레임 내에서의 상대적 위치가 동일한 블록)(R_MB_4와 R_MB_5)의 화소값을 각각 적당한 가중치로 가중하여 상기 인핸스드 레이어의 레지듀얼 블록과 동시간의 베이스 레이어의 삽입 레지듀얼 블록을 생성하고, 이를 업샘플링 하여 인핸스드 레이어의 매크로 블록의 크기로 확대한다.
여기서, 상기 가중치는 0과 1 사이의 값으로, 두 가중치의 합은 1이 되도록 한다. 상기 가중치는, 예를 들어 상기 앞선 레지듀얼 프레임 또는 뒤진 레지듀얼 프레임과 상기 인핸스드 레이어의 레지듀얼 블록을 포함하는 프레임과의 상관 관계(유사도)에 비례하거나 또는 시간적 거리에 반비례하는 값으로 결정될 수 있다.
상기 레지듀얼 예측기(103)는, 상기 확대된 베이스 레이어의 삽입 레지듀얼 블록의 화소값을 상기 인핸스드 레이어의 레지듀얼 블록(R_MB_2)의 화소값에서 감하여 인핸스드 레이어의 해당 매크로 블록에 대한 새로운 레지듀얼 데이터, 즉 레지듀얼 데이터의 차이값을 생성한다.
그리고, 상기 레지듀얼 예측기(103)는, 현재 매크로 블록에 레지듀얼 예측 모드가 적용되었음, 즉 현재 매크로 블록이 레지듀얼 데이터의 차이값으로 인코딩 되었음을 디코더에 알릴 수 있도록, 레지듀얼 예측 플래그(residual_prediction_flag)를 예를 들어 '1'로 설정하여 상기 현재 매크로 블록의 헤더 영역에 삽입할 수 있다.
또한, 상기 레지듀얼 예측기(103)는, 현재 매크로 블록에 대한 레지듀얼 데이터의 차이값을 계산하는데 베이스 레이어의 앞선 프레임과 뒤진 프레임 내의 대응 레지듀얼 블록을 기초로 생성된 베이스 레이어의 삽입 레지듀얼 블록이 이용되었음을 가리키도록, 레지듀얼 방향 플래그(residual_direction_flag)를 예를 들어 '1'로 설정하여 상기 현재 매크로 블록의 헤더 영역에 삽입하고, 또한 상기 삽입 레지듀얼 블록을 생성하는데 사용된 가중치 중 어느 한 값, 예를 들어 앞선 프레임 내의 대응 레지듀얼 블록을 가중할 때 사용된 가중치를 상기 현재 매크로 블록의 헤더 영역에 삽입할 수 있다.
도 5는 인핸스드 레이어의 매크로 블록을 포함하는 프레임보다 앞선 및 뒤진 인핸스드 레이어의 레지듀얼 프레임('H' 프레임)을 이용하여 상기 인핸스드 레이어의 매크로 블록에 레지듀얼 예측 모드를 적용하는 본 발명에 따른 다른 실시예를 도시한 것이다. 도 5의 실시예도 인핸스드 레이어의 레지듀얼 블록을 포함하는 프레임(현재 'H' 프레임)과 동시간의 레지듀얼 프레임이 베이스 레이어에 존재하지는 않는 경우에 적용될 수 있다.
상기 레지듀얼 예측기(103)는, 현재 'H' 프레임보다 앞선 'H' 프레임과 뒤진 'H' 프레임 내에 포함되고 상기 레지듀얼 블록(R_MB_2)에 대응되는 대응 레지듀얼 블록(R_MB_1과 R_MB_3)의 화소값을 각각 적당한 가중치로 가중하여 상기 현재 'H' 프레임과 동시간의 인핸스드 레이어의 삽입 레지듀얼 블록을 생성한다.
여기서, 상기 가중치는 0과 1 사이의 값으로, 두 가중치의 합은 1이 되도록 한다. 상기 가중치는, 예를 들어 상기 앞선 'H' 프레임 또는 뒤진 'H' 프레임과 상기 현재 'H' 프레임과의 상관 관계에 비례하거나 또는 시간적 거리에 반비례하는 값으로 결정될 수 있다.
상기 레지듀얼 예측기(103)는, 상기 인핸스드 레이어의 삽입 레지듀얼 블록의 화소값을 상기 레지듀얼 블록(R_MB_2)의 화소값에서 감하여 해당 매크로 블록에 대한 새로운 레지듀얼 데이터, 즉 레지듀얼 데이터의 차이값을 생성한다.
그리고, 상기 레지듀얼 예측기(103)는, 현재 매크로 블록에 레지듀얼 예측 모드가 적용되었음, 즉 현재 매크로 블록이 레지듀얼 데이터의 차이값으로 인코딩 되었음을 디코더에 알릴 수 있도록, 레지듀얼 예측 플래그(residual_prediction_flag)를 예를 들어 '1'로 설정하여 상기 현재 매크로 블록의 헤더 영역에 삽입할 수 있다.
또한, 상기 레지듀얼 예측기(103)는, 현재 매크로 블록에 대한 레지듀얼 데이터의 차이값을 계산하는데 인핸스드 레이어의 앞선 프레임과 뒤진 프레임 내의 대응 레지듀얼 블록을 기초로 생성된 인핸스드 레이어의 삽입 레지듀얼 블록이 이용되었음을 가리키도록, 레지듀얼 방향 플래그(residual_direction_flag)를 예를 들어 '0'으로 설정하여 상기 현재 매크로 블록의 헤더 영역에 삽입하고, 또한 상기 인핸스드 레이어의 삽입 레지듀얼 블록을 생성하는데 사용된 가중치 중 어느 한 값, 예를 들어 앞선 프레임 내의 대응 레지듀얼 블록을 가중할 때 사용된 가중치를 상기 현재 매크로 블록의 헤더 영역에 삽입할 수 있다.
여기서, 레지듀얼 예측 플래그가 '1'로 설정되는 것은, 해당 매크로 블록이, 상기 해당 매크로 블록에 대한 인핸스드 레이어의 레지듀얼 블록과, i) 상기 매크로 블록과 동시간의 베이스 레이어의 대응 레지듀얼 블록, ii) 상기 도 4에서와 같이 베이스 레이어의 앞선 프레임과 뒤진 프레임 내의 레지듀얼 블록으로부터 생성되는 베이스 레이어의 삽입 레지듀얼 블록, 또는 iii) 상기 도 5에서와 같이 인핸스드 레이어의 앞선 프레임과 뒤진 프레임 내의 레지듀얼 블록으로부터 생성되는 인핸스드 레이어의 삽입 레지듀얼 블록과의 화소값의 차, 즉 레지듀얼 데이터의 차이값으로 인코딩 되었음을 가리킨다.
반면, 레지듀얼 예측 플래그가 '0'으로 설정되는 것은, 해당 매크로 블록이 상기 해당 매크로 블록과 이에 대한 기준 블록과의 화소값의 차, 즉 레지듀얼 데이터로 인코딩 되었음을 가리킨다. 즉, 이는, 해당 매크로 블록에 대해, 상기 추정/예측기(101)에 의한 예측 동작만 수행되고, 상기 레지듀얼 예측기(103)에 의한 레지듀얼 예측 동작은 수행되지 않았음을 가리킨다.
상기 새로운 레지듀얼 데이터, 즉 레지듀얼 데이터의 차이값으로 인코딩되는 매크로 블록을 포함하여 형성되는 프레임을 레지듀얼 데이터로 인코딩되는 매크로 블록만으로 형성되는 'H' 프레임과 구별하기 위하여 'Hrd' 프레임으로 정의한다.
지금까지 설명한 방법에 의해 인코딩 된 데이터 스트림은 유선 또는 무선으로 디코딩 장치에 전송되거나 기록 매체를 매개로 하여 전달되며, 디코딩 장치는 이후 설명하는 방법에 따라 원래의 영상 신호를 복원하게 된다.
도 6은 도 2의 장치에 의해 인코딩 된 데이터 스트림을 디코딩 하는 장치의 블록도이다. 도 6의 디코딩 장치는, 수신되는 데이터 스트림에서 압축된 모션 벡터 스트림과 압축된 매크로 블록 정보 스트림을 분리하는 디먹서(200), 압축된 매크로 블록 정보 스트림을 원래의 비압축 상태로 복원하는 텍스처 디코딩부(210), 압축된 모션 벡터 스트림을 원래의 비압축 상태로 복원하는 모션 디코딩부(220), 압축 해제된 매크로 블록 정보 스트림과 모션 벡터 스트림을 예를 들어 MCTF 방식 에 따라 원래의 영상 신호로 역변환하는 인핸스드 레이어(EL) 디코더(230), 베이스 레이어 스트림을 정해진 방식, 예를 들어 MPEG4 또는 H.264 등의 방식에 의해 디코딩 하는 베이스 레이어(BL) 디코더(240)를 포함하여 구성된다. 상기 EL 디코더(230)는 상기 베이스 레이어 스트림에서 직접 추출하거나 또는 상기 BL 디코더(240)에 문의하여, POC와 같은 베이스 레이어의 인코딩 정보와 베이스 레이어의 데이터(매크로 블록 또는 프레임 데이터)를 이용한다.
상기 EL 디코더(230)는, 입력되는 스트림으로부터 원래의 프레임 시퀀스로 복원하는데, 도 7은 상기 EL 디코더(230)의 주요 구성을 상세히 도시한 것으로, MCTF 방식에 대한 예이다.
도 7은 시간적 분해 레벨 N의 'Hrd' 또는 'H' 프레임 시퀀스와 'L' 프레임 시퀀스를 시간적 분해 레벨 N-1의 'L' 프레임 시퀀스로 시간적 합성(Temporal Composition)하는 구성이다. 도 7의 구성은, 입력되는 'Hrd' 프레임 내의 레지듀얼 예측 동작에 의해 레지듀얼 데이터의 차이값으로 인코딩 된 매크로 블록과 이에 대응되는 레지듀얼 블록의 화소값을 더함으로써 입력되는 'Hrd' 프레임을 레지듀얼 데이터(이미지 차)를 갖는 'H' 프레임으로 생성하는 레지듀얼 역예측기(235), 상기 레지듀얼 역예측기(235)에서 출력되는 '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 레벨의 'Hrd' 또는 'H' 프레임 시퀀스(702)와 함께 다음 단의 역갱신기와 역예측기에 의해 'L' 프레임 시퀀스로 다시 복원되며, 이 과정이 인코딩 할 때의 레벨만큼 수행되어 원래의 영상 프레임 시퀀스로 복원된다.
수신되는 레벨 N의 'Hrd' 또는 'H' 프레임과 레벨 N+1에서 생성된 레벨 N의 'L' 프레임이 레벨 N-1의 'L' 프레임으로 복원되는 레벨 N에서의 복원(시간적 합성) 과정을 보다 상세히 설명한다.
먼저, 상기 레지듀얼 역예측기(235)는, 임의의 'Hrd' 프레임 내의 매크로 블록이 레지듀얼 데이터의 차이값으로 인코딩 되었음을 가리키는 레지듀얼 예측 플래그(residual_prediction_flag)가 상기 매크로 블록의 헤더에 포함된 경우, 상기 BL 디코더(240)에서 추출되는 베이스 레이어의 인코딩 정보와 베이스 레이어의 데이터를 이용하거나 또는 상기 임의의 'Hrd' 프레임보다 앞선 프레임과 뒤진 프레임을 이 용하여, 상기 매크로 블록에 대한 레지듀얼 데이터를 생성한다.
상기 레지듀얼 역예측기(235)는, 임의의 'Hrd' 프레임 내의 매크로 블록이 레지듀얼 데이터의 차이값으로 인코딩 된 경우, 상기 BL 디코더(240)에서 추출되는 인코딩 정보 중에서 POC를 기초로 동일 POC를 갖는 프레임이 베이스 레이어에 존재하는지 확인하여, 상기 매크로 블록을 포함하는 상기 임의의 'Hrd' 프레임과 동시간의 레지듀얼 프레임이 베이스 레이어에 존재하는지 확인한다.
상기 동시간의 레지듀얼 프레임이 베이스 레이어에 존재하는 경우, 상기 레지듀얼 역예측기(235)는, 상기 동시간의 베이스 레이어의 레지듀얼 프레임 내에 포함되어 있는, 상기 매크로 블록의 대응 레지듀얼 블록(프레임 내에서의 상대적 위치가 상기 매크로 블록과 동일한 블록)을 찾고, 필요에 따라 이를 업샘플링 하여 상기 매크로 블록(인핸스드 레이어)의 크기로 확대한 후, 확대된 대응 레지듀얼 블록의 화소값을 레지듀얼 데이터의 차이값으로 인코딩 된 상기 매크로 블록의 화소값과 합하여 레지듀얼 데이터를 갖는 매크로 블록을 생성한다.
반면, 상기 동시간의 레지듀얼 프레임이 베이스 레이어에 존재하지 않는 경우, 상기 레지듀얼 역예측기(235)는, 상기 매크로 블록에 대한 헤더에 포함된 레지듀얼 방향 플래그(residual_direction_flag)를 기초로, 상기 매크로 블록에 인코딩 된 레지듀얼 데이터의 차이값이 베이스 레이어의 삽입 레지듀얼 블록을 기초로 계산된 것인지 아니면 인핸스드 레이어의 삽입 레지듀얼 블록을 기초로 계산된 것인지 확인한다.
상기 레지듀얼 방향 플래그가 예를 들어 '1'로 설정된 경우, 즉 상기 매크로 블록에 인코딩 된 레지듀얼 데이터의 차이값이 베이스 레이어의 삽입 레지듀얼 블록을 기초로 계산된 경우, 상기 레지듀얼 역예측기(235)는, 상기 BL 디코더(240)로부터 제공되는 베이스 레이어의 데이터 중에서, 상기 임의의 'Hrd' 프레임보다 앞선 레지듀얼 프레임과 뒤진 레지듀얼 프레임 내에 포함되는, 상기 인핸스드 레이어의 매크로 블록에 대응되는, 대응 레지듀얼 블록(프레임 내에서의 상대적 위치가 동일한 블록)을 찾는다. 이후, 상기 레지듀얼 역예측기(235)는, 상기 매크로 블록에 대한 헤더에 포함되는 제 1 가중치와 상기 제 1 가중치로부터 계산되는 제 2 가중치를 기초로 상기 대응 레지듀얼 블록의 화소값을 각각 가중하여, 상기 매크로 블록과 동시간의 베이스 레이어의 삽입 레지듀얼 블록을 생성한 후, 이를 업샘플링 하여 상기 매크로 블록의 크기로 확대한다. 이후, 상기 레지듀얼 역예측기(235)는, 상기 확대된 베이스 레이어의 삽입 레지듀얼 블록의 화소값을 상기 매크로 블록의 화소값에 더하여 상기 매크로 블록에 대한 레지듀얼 데이터를 생성한다.
반면, 상기 레지듀얼 방향 플래그가 '0'으로 설정된 경우, 즉 상기 매크로 블록에 인코딩 된 레지듀얼 데이터의 차이값이 인핸스드 레이어의 삽입 레지듀얼 블록을 기초로 계산된 경우, 상기 레지듀얼 역예측기(235)는, 상기 임의의 'Hrd' 프레임보다 앞선 프레임과 뒤진 프레임 내에 포함되고 상기 매크로 블록과 프레임 내에서의 상대적 위치가 동일한 대응 레지듀얼 블록을 찾고, 상기 매크로 블록에 대한 헤더에 포함되는 제 1 가중치와 상기 제 1 가중치로부터 계산되는 제 2 가중치 를 기초로 레지듀얼 데이터를 갖는 상기 대응 레지듀얼 블록의 화소값을 각각 가중하여, 상기 매크로 블록과 동시간의 인핸스드 레이어의 삽입 레지듀얼 블록을 생성한 후, 상기 인핸스드 레이어의 삽입 레지듀얼 블록의 화소값을 상기 매크로 블록의 화소값에 더하여 상기 매크로 블록에 대한 레지듀얼 데이터를 생성한다.
이와 같은 과정을 통해, 상기 레지듀얼 역예측기(235)는, 레지듀얼 데이터의 차이값으로 인코딩 되어 'Hrd' 프레임에 포함된 매크로 블록에 대해 레지듀얼 역예측 동작을 수행하여, 레지듀얼 데이터, 즉 이미지 차값을 갖는 매크로 블록만으로 형성되는 'H' 프레임을 생성한다.
한편, 상기 역갱신기(231)는, 임의의 'L' 프레임(레벨 N)에 대해, 상기 모션 벡터 디코더(233)로부터 제공되는 모션 벡터를 참조하여, 인코딩 과정에서 상기 임의의 'L' 프레임(레벨 N)으로 갱신되는 원래의 'L' 프레임(레벨 N-1) 내의 블록을 기준 블록으로 하여 이미지 차를 구한 'H' 프레임(레벨 N)을 파악한 다음, 상기 'H' 프레임 내의 매크로 블록의 이미지 차값을 상기 임의의 'L' 프레임 내의 해당 블록의 화소값에서 감하는 동작을 수행하여, 원래의 'L' 프레임을 복원한다.
현재 'L' 프레임(레벨 N) 내의 블록 중 인코딩 과정에서 'H' 프레임 내의 매크로 블록의 이미지 차값으로 갱신된 블록에 대해 상기와 같은 역갱신 동작을 수행하여 레벨 N-1의 'L' 프레임으로 복원한다.
상기 역예측기(232)는, 임의의 'H' 프레임 내의 매크로 블록에 대해, 상기 모션 벡터 디코더(233)로부터 제공되는 모션 벡터를 참조하여, 'L' 프레임(상기 역 갱신기(231)에 의해 역갱신되어 출력되는 'L' 프레임)에 있는 기준 블록을 파악한 다음, 상기 매크로 블록의 화소의 차값에 기준 블록의 화소값을 더함으로써 원래의 이미지를 복원한다.
현재 'H' 프레임 내의 모든 매크로 블록이 상기와 같은 동작을 통해 원래의 이미지로 복원되고, 이들이 모두 조합되어 'L' 프레임으로 복원되면, 이 'L' 프레임은 상기 배열기(234)를 통해 상기 역갱신기(231)에서 복원된 'L' 프레임과 교대로 배열되어 다음 단으로 출력된다.
전술한 방법에 따라, 인코딩 된 데이터 스트림이 완전한 영상 프레임 시퀀스로 복구된다. 특히, MCTF 방식을 예로 들어 설명한 인코딩 과정에서 예측 동작과 갱신 동작을 한 GOP에 대해서 N회 수행한 경우, MCTF 디코딩 과정에서 역갱신 동작과 역예측 동작을 N회 수행하면 원래 영상 신호의 화질을 얻을 수 있고, 그 보다 작은 횟수로 수행하면 화질이 다소 저하되지만 비트 레이트는 보다 낮은 영상 프레임 시퀀스를 얻을 수 있다. 따라서, 디코딩 장치는 자신의 성능에 맞는 정도로 상기 역갱신 동작과 역예측 동작을 수행하도록 설계된다.
전술한 디코딩 장치는 이동 통신 단말기 등에 실장되거나 또는 기록 매체를 재생하는 장치에 실장될 수 있다.
이상, 전술한 본 발명의 바람직한 실시예는 예시의 목적을 위해 개시된 것으로, 당업자라면 이하 첨부된 특허청구범위에 개시된 본 발명의 기술적 사상과 그 기술적 범위 내에서 또 다른 다양한 실시예들을 개량, 변경, 대체 또는 부가 등이 가능할 것이다.