상기의 목적을 달성하기 위하여 본 발명에 따른 B 픽쳐의 다이렉트 모드 모션벡터 연산 방법은, list 1 레퍼런스 픽쳐에 있는 동일 위치의 블록이 list 0, list 1 모션벡터를 가지고 있으면 다이렉트 모드의 모션벡터를 유도하기 위해 사용될 모션벡터는 두 가지 방법에 의해 list 0 또는 list 1 모션벡터를 선택하는 점에 그 특징이 있다.
여기서 본 발명에 의하면, list 0, list 1 모션벡터 중 동일 위치의 블록이 존재하는 list 1 레퍼런스 픽쳐에서 시간적 거리가 가까운 모션벡터를 다이렉트 모드의 모션벡터를 유도하는 모션벡터로서 선택하고 만일 두 모션벡터가 동일 레퍼런스를 가리키면 list 0 모션벡터를 다이렉트 모드의 모션벡터를 유도하는 모션벡터로서 선택하는 방법이 있고, 다른 방법은 시간적 거리와 관계없이 무조건 list 0 모션벡터를 다이렉트 모드의 모션벡터를 유도하는 모션벡터로서 선택하는 점에 그 특징이 있다.
또한 본 발명에 의하면, 다이렉트 모드의 모션벡터는 동일위치의 블록이 갖는 list 0 모션벡터로부터 유도된다는 종래 기법을 list 1 레퍼런스 픽쳐의 동일 위치에 있는 블록이 오직 list 1 모션벡터만을 갖고 있는 경우에 적용할 경우, 동일 위치의 블록의 list 0 모션벡터는 0 이므로 다이렉트 모드의 모션벡터는 모두 0이 되는 문제를 발견하고 이것을 해결하기 위해, 본 발명은 동일위치의 블록이 갖는 모드 종류와 관계없이 그 블록이 갖고 있는 모션벡터를 이용하여 다이렉트 모드의 모션벡터를 유도하는 점에 그 특징이 있다.
여기서 본 발명은, list 1 레퍼런스 픽쳐에 있는 동일 위치의 블록이 오직 list 1 모션벡터만을 갖고 있는 경우에 다이렉트 모션벡터를 구할 수 있는 방법을 제시한다. 첫번째 방법은 다이렉트 모드 모션벡터 계산에 사용될 모션벡터 값을 0 으로 하고, 다이렉트 모드의 list 0 레퍼런스 픽쳐(list 0 reference picture for direct mode)는 시간적으로 B 픽쳐 바로 이전 위치에 존재하는 디코딩된 픽쳐라고 정의하는 것을 특징으로 한다. 두번째 방법은 다이렉트 모드 모션벡터 계산에 사용될 모션벡터 값은 동일위치의 블록이 갖고 있는 list 1 모션벡터를 그대로 이용하고, 대신 다이렉트 모드의 list 0 레퍼런스 픽쳐는 시간적으로 B 픽쳐 바로 이전 위치에 존재하는 디코딩된 픽쳐라고 정의하는 점에 그 특징이 있다. 세번째 방법은 다이렉트 모드 모션벡터 계산에 사용될 모션벡터 값은 동일위치의 블록이 갖고 있는 list 1 모션벡터를 그대로 이용하고, list 1 모션벡터가 가리키고 있는 레퍼런스 픽쳐를 다이렉트 모드의 list 0 레퍼런스 픽쳐로 결정하는 것을 특징으로 한다.
또한 본 발명에 의하면, 종래 기법대로 다이렉트 모드의 list 1 레퍼런스 픽 쳐를 list 1 예측에 사용되는 인덱스가 0 인 픽쳐로서 정의할 경우, B 픽쳐와 인덱스 0인 픽쳐 사이에 다른 픽쳐가 디코딩될 때 인덱스 0인 픽쳐의 모션정보 및 레퍼런스 픽쳐 정보가 유지되어야 하므로 추가적인 메모리 사용이 필수적이지만 본 발명에서는 다이렉트 모드의 list 1 레퍼런스 픽쳐를 가장 최근에 디코딩된 픽쳐로서 정의함으로써 추가적인 메모리 사용이 절약될 수 있는 특징이 있다.
또한 본 발명에 의하면, 동영상 코딩 시스템에서 B(bi-predictive) 픽쳐의 다이렉트 모드 모션벡터를 추출함에 있어, B 픽쳐의 다이렉트 모드의 list 1 레퍼런스 픽쳐가 상기 B 픽쳐 보다 시간적으로 앞에 위치하는 경우에, 상기 다이렉트 모드의 list 1 레퍼런스 픽쳐에 있는 동일 위치의 블록(co-located macroblock)이 가지고 있는 모션벡터를 스케일링하여, list 0 모션벡터(MVF)와 list 1 모션벡터 (MVB)를 유도하여 B 픽쳐의 다이렉트 모드 모션벡터를 연산하는 점에 그 특징이 있다.
여기서 본 발명에 의하면, 상기 B 픽쳐의 매크로블록과 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 모두 프레임(frame) 모드이며, 상기 B 픽쳐의 다이렉트 모드의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐보다 시간적으로 앞에 존재할 경우, 상기 B 픽쳐의 다이렉트 모드의 모션벡터 MVF, MVB는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF = TDB x MV / TDD
MVB = (TDB - TDD) x MV / TDD
또는
Z = TDB x 256 / TDD MVF = (Z x MV + 128) >> 8
W = Z - 256 MVB = (W x MV + 128) >> 8
여기서, TDB는 현재 B 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이며, TDD 는 list 1 레퍼런스 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이고, MV는 상기 다이렉트 모드의 list 1 레퍼런스 픽쳐에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록과 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 모두 프레임 모드이며, 상기 B 픽쳐의 다이렉트 모드의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐보다 시간적으로 뒤에 존재할 경우, 상기 B 픽쳐의 다이렉트 모드의 모션벡터 MVF, MVB는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF = - TDB x MV / TDD
MVB = - (TDB + TDD) x MV / TDD
또는
Z = - TDB x 256 / TDD MVF = (Z x MV + 128) >> 8
W = Z - 256 MVB = (W x MV + 128) >> 8
여기서, TDB는 현재 B 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이며, TDD 는 list 1 레퍼런스 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이고, MV는 상기 다이렉트 모드의 list 1 레퍼런스 픽쳐에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록과 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 모두 피일드(field) 모드이며, 상기 B 픽쳐의 다이렉트 모드의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐보다 시간적으로 앞에 존재할 경우, 상기 B 프레임의 각 피일드 i에 대한 다이렉트 모드의 모션벡터 MVF,i, MVB ,i는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF ,i = TDB ,i x MVi / TDD ,i
MVB ,i = (TDB ,i - TDD ,i) x MVi / TDD ,i
또는
Z = TDB ,i x 256 / TDD ,i MVF ,i = (Z x MVi + 128) >> 8
W = Z - 256 MVB ,i = (W x MVi + 128) >> 8
여기서, TDB ,i는 현재 B 피일드와 list 0 레퍼런스 피일드 사이의 시간적 거리이며, TDD ,i 는 list 1 레퍼런스 피일드와 list 0 레퍼런스 피일드 사이의 시간적 거리이고, MVi는 상기 다이렉트 모드의 list 1 레퍼런스 피일드에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록과 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 모두 피일드(field) 모드이며, 상기 B 픽쳐의 다이렉트 모드의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐보다 시간적으로 뒤에 존재할 경우, 상기 B 프레임의 각 피일드 i에 대한 다이렉트 모드의 모션벡터 MVF,i, MVB ,i는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF ,i = - TDB ,i x MVi / TDD ,i
MVB ,i = - (TDB ,i + TDD ,i) x MVi / TDD ,i
또는
Z = -TDB ,i x 256 / TDD ,i MVF ,i = (Z x MVi + 128) >> 8
W = Z - 256 MVB ,i = (W x MVi + 128) >>8
여기서, TDB ,i는 현재 B 피일드와 list 0 레퍼런스 피일드 사이의 시간적 거리이며, TDD ,i 는 list 1 레퍼런스 피일드와 list 0 레퍼런스 피일드 사이의 시간적 거리이고, MVi는 상기 다이렉트 모드의 list 1 레퍼런스 피일드에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록이 피일드 모드이고 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 프레임 모드이며, 상기 B 픽쳐의 다이렉트 모드의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐보다 시간적으로 앞에 존재할 경우, 상기 B 프레임의 각 피일드 i에 대한 다이렉트 모드의 모션벡터 MVF,i, MVB ,i는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF ,i = TDB ,i x MV / TDD
MVB ,i = (TDB ,i - TDD) x MV / TDD
또는
Z = TDB ,i x 256 / TDD MVF ,i = (Z x MV + 128) >> 8
W = Z - 256 MVB ,i = (W x MV + 128) >> 8
여기서, TDB ,i는 현재 B 피일드와 list 0 레퍼런스 피일드 사이의 시간적 거리이며, TDD 는 list 1 레퍼런스 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이고, MV는 상기 다이렉트 모드의 list 1 레퍼런스 프레임에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록이 피일드 모드이고 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 프레임 모드이며, 상기 B 픽쳐의 다이렉트 모드의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐보다 시간적으로 뒤에 존재할 경우, 상기 B 프레임의 각 피일드 i에 대한 다이렉트 모드의 모션벡터 MVF,i, MVB ,i는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF ,i = - TDB ,i x MV / TDD
MVB ,i = - (TDB ,i + TDD) x MV / TDD
또는
Z = - TDB ,i x 256 / TDD MVF ,i = (Z x MV + 128) >> 8
W = Z - 256 MVB ,i = (W x MV + 128) >> 8
여기서, TDB ,i는 현재 B 피일드와 list 0 레퍼런스 피일드 사이의 시간적 거리이며, TDD 는 list 1 레퍼런스 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이고, MV는 상기 다이렉트 모드의 list 1 레퍼런스 프레임에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록이 프레임 모드이고 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 피일드 모드이며, 상기 B 픽쳐의 다이렉트 모드의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐보다 시간적으로 앞에 존재할 경우, 상기 B 프레임의 다이렉트 모드의 모션벡터 MVF, MVB는 다음식으로부터 산출되는 점에 그 특징이 있다. 여기서 list 1 레퍼런스 프레임의 피일드 1에 있는 동일 위치의 블록이 갖는 모션정보가 다이렉트 모드의 모션벡터를 구하는데 사용된다.
MVF = TDB x MV1 / TDD ,1
MVB = (TDB - TDD ,1) x MV1/ TDD ,1
또는
Z = TDB x 256 / TDD ,1 MVF = (Z x MV1 + 128) >> 8
W = Z - 256 MVB = (W x MV1 + 128) >> 8
여기서, TDB는 현재 B 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이며, TDD , 1는 list 1 레퍼런스 프레임의 피일드 1과 list 0 레퍼런스 피일드 사이의 시간적 거리이고, MV1는 상기 list 1 레퍼런스 프레임의 피일드 1에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록이 프레임 모드이고 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 피일드 모드이며, 상기 B 픽쳐의 다이렉트 모드의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐보다 시간적으로 뒤에 존재할 경우, 상기 B 프레임의 다이렉트 모드의 모션벡터 MVF, MVB는 다음식으로부터 산출되는 점에 그 특징이 있다. 여기서 list 1 레퍼런스 프레임의 피일드 1에 있는 동일 위치의 블록이 갖는 모션정보가 다이렉트 모드의 모션벡터를 구하는데 사용된다.
MVF = - TDB x MV1 / TDD ,1
MVB = - (TDB + TDD ,1) x MV1/ TDD ,1
또는
Z = - TDB x 256 / TDD ,1 MVF = (Z x MV1 + 128) >> 8
W = Z - 256 MVB = (W x MV1 + 128) >> 8
*여기서, TDB는 현재 B 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이며, TDD , 1는 list 1 레퍼런스 프레임의 피일드 1과 list 0 레퍼런스 피일드 사이의 시간적 거리이고, MV1는 상기 list 1 레퍼런스 프레임의 피일드 1에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 다이렉트 모드의 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 두 개의 모션벡터를 가질 경우에는 하나의 모션벡터(list 0 또는 list 1 모션벡터)를 선택하고, 이 선택된 모션벡터로부터 B 픽쳐의 다이렉트 모드의 모션벡터를 유도하는 점에 그 특징이 있다.
또한, 상기의 목적을 달성하기 위하여 본 발명에 따른 B 픽쳐의 다이렉트 모드 모션벡터 연산 방법의 다른 실시 예는,
동영상 코딩 시스템에서 B(bi-predictive) 픽쳐의 다이렉트 모드 모션벡터를 추출함에 있어, B 픽쳐의 다이렉트 모드의 list 0 레퍼런스 픽쳐와 list 1 레퍼런스 픽쳐가 모두 상기 B 픽쳐보다 시간적으로 뒤에 존재할 경우에, 상기 다이렉트 모드의 list 1 레퍼런스 픽쳐에 있는 동일 위치의 블록(co-located block)이 가지 고 있는 모션벡터를 스케일링하여, list 0 모션벡터(MVF)와 list 1 모션벡터(MVB)를 유도하여 B 픽쳐의 다이렉트 모드 모션벡터를 연산하는 점에 그 특징이 있다.
여기서 본 발명에 의하면, 상기 B 픽쳐의 매크로블록과 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 모두 프레임 모드이며, 상기 B 픽쳐의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐에 비해 시간적으로 뒤에 존재하는 경우, 상기 B 픽쳐의 다이렉트 모드의 모션벡터 MVF, MVB는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF = TDB x MV / TDD
MVB = (TDB - TDD) x MV / TDD
또는
Z = TDB x 256 / TDD MVF = (Z x MV + 128) >> 8
W = Z - 256 MVB = (W x MV + 128) >> 8
여기서, TDB는 현재 B 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이며, TDD 는 list 1 레퍼런스 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이고, MV는 상기 다이렉트 모드의 list 1 레퍼런스 픽쳐에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록과 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 모두 프레임 모드이며, 상기 B 픽쳐의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐에 비해 시간적으로 앞에 존재하는 경우, 상기 B 픽쳐의 다이렉트 모드의 모션벡터 MVF, MVB는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF = - TDB x MV / TDD
MVB = - (TDB + TDD) x MV / TDD
또는
Z = - TDB x 256 / TDD MVF = (Z x MV + 128) >> 8
W = Z - 256 MVB = (W x MV + 128) >> 8
여기서, TDB는 현재 B 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이며, TDD 는 list 1 레퍼런스 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이고, MV는 상기 다이렉트 모드의 list 1 레퍼런스 픽쳐에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록과 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 모두 피일드(field) 모드이며, 상기 B 픽쳐의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐에 비해 시간적으로 뒤에 존재하는 경우, 상기 B 프레임의 각 피일드 i에 대한 다이렉트 모드의 모션벡터 MVF ,i, MVB ,i는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF ,i = TDB ,i x MVi / TDD ,i
MVB ,i = (TDB ,i - TDD ,i) x MVi / TDD ,i
또는
Z = TDB ,i x 256 / TDD ,i MVF ,i = (Z x MVi + 128) >> 8
W = Z - 256 MVB ,i = (W x MVi + 128) >> 8
여기서, TDB ,i는 현재 B 피일드와 list 0 레퍼런스 피일드 사이의 시간적 거리이며, TDD ,i 는 list 1 레퍼런스 피일드와 list 0 레퍼런스 피일드 사이의 시간적 거리이고, MVi는 상기 다이렉트 모드의 list 1 레퍼런스 피일드에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록과 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 모두 피일드(field) 모드이며, 상기 B 픽쳐의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐에 비해 시간적으로 앞에 존재하는 경우, 상기 B 프레임의 각 피일드 i에 대한 다이렉트 모드의 모션벡터 MVF ,i, MVB ,i는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF ,i = - TDB ,i x MVi / TDD ,i
MVB ,i = - (TDB ,i + TDD ,i) x MVi / TDD ,i
또는
Z = -TDB ,i x 256 / TDD ,i MVF ,i = (Z x MVi + 128) >> 8
W = Z - 256 MVB ,i = (W x MVi + 128) >>8
여기서, TDB ,i는 현재 B 피일드와 list 0 레퍼런스 피일드 사이의 시간적 거리이며, TDD ,i 는 list 1 레퍼런스 피일드와 list 0 레퍼런스 피일드 사이의 시간적 거리이고, MVi는 상기 다이렉트 모드의 list 1 레퍼런스 피일드에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록이 피일드 모드이고 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 프레임 모드이며, 상기 B 픽쳐의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐에 비해 시간적으로 뒤에 존재하는 경우, 상기 B 프레임의 각 피일드 i에 대한 다이렉트 모드의 모션벡터 MVF ,i, MVB,i는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF ,i = TDB ,i x MV / TDD
MVB ,i = (TDB ,i - TDD) x MV / TDD
또는
Z = TDB ,i x 256 / TDD MVF ,i = (Z x MV + 128) >> 8
W = Z - 256 MVB ,i = (W x MV + 128) >> 8
여기서, TDB ,i는 현재 B 피일드와 list 0 레퍼런스 피일드 사이의 시간적 거리이며, TDD 는 list 1 레퍼런스 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이고, MV는 상기 다이렉트 모드의 list 1 레퍼런스 프레임에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록이 피일드 모드이고 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 프레임 모드이며, 상기 B 픽쳐의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐에 비해 시간적으로 앞에 존재하는 경우, 상기 B 프레임의 각 피일드 i에 대한 다이렉트 모드의 모션벡터 MVF ,i, MVB,i는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF ,i = - TDB ,i x MV / TDD
MVB ,i = - (TDB ,i + TDD) x MV / TDD
또는
Z = - TDB ,i x 256 / TDD MVF ,i = (Z x MV + 128) >> 8
W = Z - 256 MVB ,i = (W x MV + 128) >> 8
여기서, TDB ,i는 현재 B 피일드와 list 0 레퍼런스 피일드 사이의 시간적 거리이며, TDD 는 list 1 레퍼런스 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이고, MV는 상기 다이렉트 모드의 list 1 레퍼런스 프레임에 있는 동일 위치의 매크로블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록이 프레임 모드이고 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 피일드 모드이며, 상기 B 픽쳐의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐에 비해 시간적으로 뒤에 존재하는 경우, 상기 B 프레임의 다이렉트 모드의 모션벡터 MVF, MVB는 다음식으로부터 산출되는 점에 그 특징이 있다. 여기서 list 1 레퍼런스 프레임의 피일드 0에 있는 동일 위치의 블록이 갖는 모션정보가 다이렉트 모드의 모션벡터를 구하는데 사용된다.
MVF = TDB x MV0 / TDD ,1
MVB = (TDB - TDD ,0) x MV0/ TDD ,0
또는
Z = TDB x 256 / TDD ,0 MVF = (Z x MV0 + 128) >> 8
W = Z - 256 MVB = (W x MV0 + 128) >> 8
여기서, TDB는 현재 B 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이며, TDD , 1는 list 1 레퍼런스 프레임의 피일드 0과 list 0 레퍼런스 피일드 사이의 시간적 거리이고, MV0는 상기 다이렉트 모드를 위한 list 1 레퍼런스 프레임의 피일드 0에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록이 프레임 모드이고 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 피일드 모드이며, 상기 B 픽쳐의 list 0 레퍼런스 픽쳐가 list 1 레퍼런스 픽쳐에 비해 시간적으로 앞에 존재하는 경우, 상기 B 프레임의 다이렉트 모드의 모션벡터 MVF, MVB는 다음식으로부터 산출되는 점에 그 특징이 있다. 여기서 list 1 레퍼런스 프레임의 피일드 0에 있는 동일 위치의 블록이 갖는 모션정보가 다이렉트 모드의 모션벡터를 구하는데 사용된다.
MVF = - TDB x MV0 / TDD ,0
MVB = - (TDB + TDD ,0) x MV0/ TDD ,0
또는
Z = - TDB x 256 / TDD ,0 MVF = (Z x MV0 + 128) >> 8
W = Z - 256 MVB = (W x MV0 + 128) >> 8
여기서, TDB는 현재 B 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리이며, TDD , 1는 list 1 레퍼런스 프레임의 피일드 0과 list 0 레퍼런스 피일드 사이의 시간적 거리이고, MV0는 상기 다이렉트 모드 list 1 레퍼런스 프레임의 피일드 0에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 다이렉트 모드의 list 1 레퍼런스 픽쳐의 동일 위치에 있는 블록이 두 개의 모션벡터를 가질 경우에는 하나의 모션벡 터(MV1 또는 MV2)를 선택하고, 이 선택된 모션벡터로부터 B 픽쳐의 다이렉트 모드의 모션벡터를 유도하는 점에 그 특징이 있다.
또한, 상기의 목적을 달성하기 위하여 본 발명에 따른 B 픽쳐의 다이렉트 모드 모션벡터 연산 방법의 또 다른 실시 예는,
동영상 코딩 시스템에서 B(bi-predictive) 픽쳐의 다이렉트 모드 모션벡터를 추출함에 있어, 다이렉트 모드 모션벡터를 구하는데 사용하는 수식을 단순화하기 위해 픽쳐 사이의 시간적 거리를 부호가 있는 값으로 표현함으로써 B 픽쳐의 다이렉트 모드의 list 0 레퍼런스 픽쳐와 list 1 레퍼런스 픽쳐의 위치에 관계없이 상기 다이렉트 모드의 list 1 레퍼런스 픽쳐에 있는 동일 위치의 블록(co-located block)이 가지고 있는 모션벡터를 스케일링하여, list 0 모션벡터 (MVF)와 list 1 모션벡터(MVB)를 유도하여 B 픽쳐의 다이렉트 모드 모션벡터를 연산하는 점에 그 특징이 있다.
여기서 본 발명에 의하면, 상기 B 픽쳐의 매크로블록과 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 모두 프레임 모드일 경우, 상기 B 픽쳐의 다이렉트 모드의 모션벡터 MVF, MVB는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF = TDB x MV / TDD
MVB = (TDB - TDD) x MV / TDD
또는
Z = TDB x 256 / TDD MVF = (Z x MV + 128) >> 8
W = Z - 256 MVB = (W x MV + 128) >> 8
여기서, TDB는 현재 B 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리로써 B 프레임으로부터 계산된 시간적 거리는 양(+)의 부호로 표시되고 list 0 레퍼런스 프레임으로부터 계산된 시간적 거리는 음(-)의 부호로 표시되며, TDD는 list 1 레퍼런스 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리로써 list 1 레퍼런스 프레임으로부터 계산된 시간적 거리는 양(+)의 부호로 표시되고 list 0 레퍼런스 프레임으로부터 계산된 시간적 거리는 음(-)의 부호로 표시되며, MV는 상기 다이렉트 모드의 list 1 레퍼런스 픽쳐에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
*또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록과 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 모두 피일드(field) 모드일 경우, 상기 B 프레임의 각 피일드 i에 대한 다이렉트 모드의 모션벡터 MVF ,i, MVB ,i는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF ,i = TDB ,i x MVi / TDD ,i
MVB ,i = (TDB ,i - TDD ,i) x MVi / TDD ,i
또는
Z = TDB ,i x 256 / TDD ,i MVF ,i = (Z x MVi + 128) >> 8
W = Z - 256 MVB ,i = (W x MVi + 128) >> 8
여기서, TDB ,i는 현재 B 피일드와 list 0 레퍼런스 피일드 사이의 시간적 거리로써 B 피일드로부터 계산된 시간적 거리는 양(+)의 부호로 표시되고 list 0 레퍼런스 피일드로부터 계산된 시간적 거리는 음(-)의 부호로 표시되며, TDD ,i는 list 1 레퍼런스 피일드와 list 0 레퍼런스 피일드 사이의 시간적 거리로써 list 1 레퍼런스 피일드로부터 계산된 시간적 거리는 양(+)의 부호로 표시되고 list 0 레퍼런스 피일드로부터 계산된 시간적 거리는 음(-)의 부호로 표시되며, MVi는 상기 다이렉트 모드의 list 1 레퍼런스 피일드에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록이 피일드 모드이고 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 프레임 모드일 경우, 상기 B 프레임의 각 피일드 i에 대한 다이렉트 모드의 모션벡터 MVF ,i, MVB ,i는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF ,i = TDB ,i x MV / TDD
MVB ,i = (TDB ,i - TDD) x MV / TDD
또는
Z = TDB ,i x 256 / TDD MVF ,i = (Z x MV + 128) >> 8
W = Z - 256 MVB ,i = (W x MV + 128) >> 8
여기서, TDB ,i는 현재 B 피일드와 list 0 레퍼런스 피일드 사이의 시간적 거리로써 B 피일드로부터 계산된 시간적 거리는 양(+)의 부호로 표시되고 list 0 레퍼런스 피일드로부터 계산된 시간적 거리는 음(-)의 부호로 표시되며, TDD는 list 1 레퍼런스 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리로써 list 1 레퍼런스 프레임으로부터 계산된 시간적 거리는 양(+)의 부호로 표시되고 list 0 레퍼런스 프레임으로부터 계산된 시간적 거리는 음(-)의 부호로 표시되며, MV는 상기 다이렉트 모드의 list 1 레퍼런스 프레임에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록이 프레임 모드이고 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 피일드 모드이며, list 1 레퍼런스 픽쳐가 상기 B 픽쳐보다 시간적으로 뒤에 존재하는 경우, 상기 B 프레임의 다이렉트 모드의 모션벡터 MVF, MVB는 list 1 레퍼런스 프레임의 피일드 0 에 있는 동일 위치의 매크로블록의 모션정보가 다이렉트 모드의 모션벡터를 구하는데 사용되는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF = TDB x MV0 / TDD ,0
MVB = (TDB - TDD ,0) x MV0/ TDD ,0
또는
Z = TDB x 256 / TDD ,0 MVF = (Z x MV0 + 128) >> 8
W = Z - 256 MVB = (W x MV0 + 128) >> 8
여기서, TDB는 현재 B 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리로써 B 프레임으로부터 계산된 시간적 거리는 양(+)의 부호로 표시되고 list 0 레퍼런스 프레임으로부터 계산된 시간적 거리는 음(-)의 부호로 표시되며, TDD , 0는 list 1 레퍼런스 프레임의 피일드 0과 list 0 레퍼런스 피일드 사이의 시간적 거리로써 list 1 레퍼런스 프레임의 피일드 0으로부터 계산된 시간적 거리는 양(+)의 부호로 표시되고 list 0 레퍼런스 피일드로부터 계산된 시간적 거리는 음(-)의 부호로 표시되며, MV0는 상기 다이렉트 모드의 list 1 레퍼런스 프레임의 피일드 0에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한 본 발명에 의하면, 상기 B 픽쳐의 매크로블록이 프레임 모드이고 list 1 레퍼런스 픽쳐의 동일 위치에 있는 매크로블록이 피일드 모드이며, list 1 레퍼런스 픽쳐가 상기 B 픽쳐보다 시간적으로 앞에 존재하는 경우, 상기 B 프레임의 다이렉트 모드의 모션벡터 MVF, MVB는 list 1 레퍼런스 프레임의 피일드 1 에 있는 동일 위치의 블록의 모션정보가 다이렉트 모드의 모션벡터를 구하는데 사용되는 다음식으로부터 산출되는 점에 그 특징이 있다.
MVF =TDB x MV1 / TDD ,1
MVB = (TDB -TDD ,1) x MV1 / TDD ,1
또는
Z = TDB x 256 / TDD ,1 MVF = (Z x MV1 + 128) >> 8
W = Z - 256 MVB = (W x MV1 + 128) >> 8
여기서, TDB는 현재 B 프레임과 list 0 레퍼런스 프레임 사이의 시간적 거리로써 B 프레임으로부터 계산된 시간적 거리는 양(+)의 부호로 표시되고 list 0 레퍼런스 프레임으로부터 계산된 시간적 거리는 음(-)의 부호로 표시되며, TDD , 1는 list 1 레퍼런스 프레임의 피일드 1과 list 0 레퍼런스 피일드 사이의 시간적 거리로써 list 1 레퍼런스 프레임의 피일드 1로부터 계산된 시간적 거리는 양(+)의 부호로 표시되고 list 0 레퍼런스 피일드로부터 계산된 시간적 거리는 음(-)의 부호로 표시되며, MV1는 상기 다이렉트 모드의 list 1 레퍼런스 프레임의 피일드 1에 있는 동일 위치의 블록이 가지고 있는 모션벡터이다.
또한, 상기의 목적을 달성하기 위하여 본 발명에 따른 B 픽쳐의 다이렉트 모드 모션벡터 연산 방법의 또 다른 실시 예는,
동영상 코딩 시스템에서 B(bi-predictive) 픽쳐의 다이렉트 모드 모션벡터를 추출함에 있어, B 픽쳐의 다이렉트 모드의 list 1 레퍼런스 픽쳐에 있는 동일 위치의 매크로블록(co-located macroblock)이 인트라 모드인 경우에는, 공간적 중복성 (spatial redundancy)을 이용하여, 상기 B 픽쳐의 코딩하려는 매크로블록의 주변 블록으로부터 list 0, list 1 레퍼런스 픽쳐와 각 list에 대한 모션벡터를 예측, 산출하고 B 픽쳐의 다이렉트 모드 모션벡터를 연산하는 점에 그 특징이 있다.
여기서 본 발명에 의하면, 상기 list 1 레퍼런스 픽쳐를 선택함에 있어, 상기 코딩하려는 매크로블록의 주변 매크로블록 A, B, C가 참조하는 레퍼런스 픽쳐가 서로 다를 경우에는, 가장 작은 인덱스를 갖는 레퍼런스 픽쳐를 list 1 레퍼런스 픽쳐로 선택하는 점에 그 특징이 있다.
또한 본 발명에 의하면, 상기 list 1 레퍼런스 픽쳐를 선택함에 있어, 상기 코딩하려는 매크로블록의 주변 매크로블록 중 두 개 이상의 매크로블록이 참조하는 레퍼런스 픽쳐가 동일한 인덱스를 가지고 있으면, 그 인덱스를 갖는 레퍼런스 픽쳐를 list 1 레퍼런스 픽쳐로 선택하는 점에 그 특징이 있다.
또한 본 발명에 의하면, 상기 각 list에 대한 모션벡터를 예측함에 있어, 주변 매크로블록 A, B, C 중 인트라 모드를 갖는 매크로블록이 있으면, 그 매크로블록의 list 0와 list 1의 모션벡터를 각각 0으로 설정하고, 상기 각 list 레퍼런스 픽쳐의 시간적 위치와 동일한 방향을 갖는 모션벡터를 주변 매크로블록으로부터 선택하고 미디언 연산을 통해 각 list의 모션벡터를 구하거나, 만일 주변 매크로블록이 동일한 방향의 모션벡터를 두 개 가지고 있으면 그 매크로블록에서 한 개만을 선택하여 미디언 연산에 포함하여 각 list의 모션벡터를 구하는 것에 그 특징이 있다.
또한 본 발명에 의하면, 상기 각 list에 대한 유효한 레퍼런스 픽쳐 인덱스를 모두 유도해낼 수 없다면, list 0, list 1의 레퍼런스 픽쳐 인덱스는 각각 0이 되고 각 list에 대한 모션벡터는 0으로 설정하는 것에 그 특징이 있다.
이와 같은 본 발명에 의하면, 차세대 동영상 압축 기술에 정의된 B(Bi-predictive) 픽쳐에서 다이렉트 모드 모션벡터 추출 기법을 제시하여, 다이렉트 모드가 매크로블록의 예측 모드로서 선택될 가능성을 높임으로서 B 픽쳐 코딩 효율(coding efficiency)을 향상시킬 수 있는 장점이 있다.