상기의 목적을 달성하기 위하여 본 발명에 따른 레퍼런스 픽쳐에 대한 방향성 정보 부여 방법은, 레퍼런스 픽쳐 인덱스에 의해 지시되는 레퍼런스 픽쳐가, 코딩하려는 블록으로부터 어느 방향(포워드 방향 또는 백워드 방향)의 픽쳐인지에 대한 정보를 제공할 수 있도록, 해당 레퍼런스 픽쳐의 디스플레이 순서가 몇 번째인지를 알려줄 수 있는 고유 정보를 상기 레퍼런스 픽쳐 표시 정보에 포함시키는 점에 그 특징이 있다.
여기서 본 발명에 의하면, 상기 레퍼런스 픽쳐의 디스플레이 순서에 대한 정보를 제공하는 고유 정보는 POC(Picture Order Count) 값에 의해 표기되는 점에 그 특징이 있다.
또한, 상기의 목적을 달성하기 위하여 본 발명에 따른 레퍼런스 픽쳐의 방향성 판단 방법은, 레퍼런스 픽쳐 인덱스에 의해 지시되는 레퍼런스 픽쳐의 디스플레이 순서 정보를 획득하고, 현재 코딩하고자 하는 블록의 디스플레이 순서 정보와 비교를 통하여, 현재 코딩하고자 하는 블록에 대한 상기 레퍼런스 픽쳐(모션벡터)의 방향성(포워드 방향 또는 백워드 방향)을 판단하는 점에 그 특징이 있다.
여기서 본 발명에 의하면, 상기 레퍼런스 픽쳐의 디스플레이 순서 정보는, 상기 레퍼런스 픽쳐를 표시하는 정보 중에서 POC(Picture Order Count) 값으로부터 획득하는 점에 그 특징이 있다.
또한, 상기의 다른 목적을 달성하기 위하여 본 발명에 따른 예측 모션벡터 연산 방법은, 주변 블록의 모션벡터를 이용하여 미디언 연산을 수행하고, 코딩하고자 하는 블록의 예측 모션벡터(PMV:Prediction Motion Vector)를 구함에 있어, 주변 블록이 모션벡터를 갖는 경우에, 각 모션벡터가 참조하고 있는 레퍼런스 픽쳐의 방향성(포워드 방향 또는 백워드 방향) 정보를 획득하고, 그 획득된 모션벡터의 방향성 정보를 참조하여 상기 주변 블록의 모션벡터를 선택하며, 그 선택된 모션벡터를 포함하여 미디언 연산을 수행함으로서 코딩하고자 하는 블록의 예측 모션벡터를 구하는 점에 그 특징이 있다.
여기서 본 발명에 의하면, 상기 모션벡터의 방향성 정보를 획득함에 있어, 레퍼런스 픽쳐 인덱스에 의해 지시되는 레퍼런스 픽쳐의 디스플레이 순서 정보와, 현재 코딩하고자 하는 블록의 디스플레이 순서 정보 비교를 통하여 상기 모션벡터의 방향성 정보를 판단하는 점에 그 특징이 있다.
또한 본 발명에 의하면, 획득된 모션벡터의 방향성 정보를 참조하여 상기 주변 블록의 모션벡터를 선택하고 예측 모션벡터를 구함에 있어, 상기 주변 블록이 갖고 있는 두 개의 모션벡터가 동일한 방향이 아닌 경우에는, 예측 모션벡터와 동일한 방향의 모션벡터를 선택한 후 미디언 연산에 포함하여 예측 모션벡터를 구하는 점에 그 특징이 있다.
또한 본 발명에 의하면, 획득된 모션벡터의 방향성 정보를 참조하여 상기 주 변 블록의 모션벡터를 선택하고 예측 모션벡터를 구함에 있어, 상기 주변 블록이 갖고 있는 두 개의 모션벡터가 동일한 방향이고, 상기 주변 블록의 두 개의 모션벡터가 예측 모션벡터의 방향과 동일하지 않은 경우에는, 해당 주변 블록의 모션벡터를 0으로 설정하고, 레퍼런스 픽쳐는 코딩하고자 하는 블록이 참조하는 레퍼런스 픽쳐와 다르다고 설정하고 미디언 연산에 포함하여 예측 모션벡터를 구하는 점에 그 특징이 있다.
또한 본 발명에 의하면, 획득된 모션벡터의 방향성 정보를 참조하여 상기 주변 블록의 모션벡터를 선택하고 예측 모션벡터를 구함에 있어, 상기 주변 블록이 갖고 있는 두 개의 모션벡터(MV1, MV2)가 동일한 방향이고, 상기 주변 블록의 두 개의 모션벡터(MV1, MV2)가 예측 모션벡터의 방향과 동일한 방향이며, 상기 MV1, MV2가 모두 동일한 레퍼런스 픽쳐를 참조하는 경우에는, 두 모션벡터 MV1, MV2 중에서 하나의 모션벡터를 선택하여 미디언 연산에 포함하여 예측 모션벡터를 구하는 점에 그 특징이 있다.
또한 본 발명에 의하면, 미디언 연산을 수행하기 위하여 상기 두 모션벡터 MV1, MV2 중에서 하나의 모션벡터를 선택함에 있어, 먼저 디코딩되는 모션벡터를 선택하거나 또는 예측 모션벡터와 동일한 모드(MV1 모드 또는 MV2 모드)의 모션벡터를 선택하여 미디언 연산에 포함하여 예측 모션벡터를 구하는 점에 그 특징이 있다. 여기서, 상기 동일한 모드를 갖는 모션벡터란 상기 예측 모션벡터를 나타내는 표기와 동일한 표기를 갖는 모션벡터를 의미한다.
또한 본 발명에 의하면, 획득된 모션벡터의 방향성 정보를 참조하여 상기 주 변 블록의 모션벡터를 선택하고 예측 모션벡터를 구함에 있어, 상기 주변 블록이 갖고 있는 두 개의 모션벡터가 동일한 방향이고, 상기 주변 블록의 두 개의 모션벡터가 예측 모션벡터의 방향과 동일한 방향이며, 코딩하고자 하는 블록의 레퍼런스 픽쳐를 상기 MV1, MV2 중에서 하나의 모션벡터만이 참조하는 경우에는, 상기 코딩하고자 하는 블록의 레퍼런스 픽쳐를 참조하는 모션벡터를 선택하여 미디언 연산에 포함하여 예측 모션벡터를 구하는 점에 그 특징이 있다.
또한 본 발명에 의하면, 획득된 모션벡터의 방향성 정보를 참조하여 상기 주변 블록의 모션벡터를 선택하고 예측 모션벡터를 구함에 있어, 상기 주변 블록이 갖고 있는 두 개의 모션벡터가 동일한 방향이고, 상기 주변 블록의 두 개의 모션벡터가 예측 모션벡터의 방향과 동일한 방향이며, 코딩하고자 하는 블록의 레퍼런스 픽쳐를 상기 MV1, MV2 모두 참조하지 않고, 상기 MV1, MV2가 서로 다른 레퍼런스 픽쳐를 참조하는 경우에는, 두 모션벡터 MV1, MV2 중에서 코딩하고자 하는 블록이 참조하는 레퍼런스 픽쳐와 제일 근접한 거리에 있는 레퍼런스 픽쳐를 참조하는 모션벡터를 선택하거나 또는 현재 코딩하려는 픽쳐로부터 제일 근접한 거리에 있는 레퍼런스 픽쳐를 참조하는 모션벡터를 선택하여 미디언 연산에 포함하여 예측 모션벡터를 구하는 점에 그 특징이 있다.
또한 본 발명에 의하면, 획득된 모션벡터의 방향성 정보를 참조하여 상기 주변 블록의 모션벡터를 선택하고 예측 모션벡터를 구함에 있어, 상기 주변 블록이 한 개의 모션벡터를 갖고, 그 모션벡터의 방향이 예측 모션벡터의 방향과 동일하지 않은 경우에는, 해당 주변 블록의 모션벡터를 0으로 설정하고, 레퍼런스 픽쳐는 코 딩하고자 하는 블록이 참조하는 레퍼런스 픽쳐와 다르다고 설정하고 미디언 연산에 포함하여 예측 모션벡터를 구하는 점에 그 특징이 있다.
또한 본 발명에 의하면, 획득된 모션벡터의 방향성 정보를 참조하여 상기 주변 블록의 모션벡터를 선택하고 예측 모션벡터를 구함에 있어, 상기 주변 블록이 한 개의 모션벡터를 갖고, 그 모션벡터의 방향이 예측 모션벡터의 방향과 동일한 경우에는, 그 모션벡터를 미디언 연산에 포함하여 예측 모션벡터를 구하는 점에 그 특징이 있다.
이와 같은 본 발명에 의하면, 코딩하려는 블록의 주변에 모션벡터를 갖는 블록(B 픽쳐의 쌍예측 모드 또는 다이렉트 모드)이 있는 경우에, 미디언 연산에 이용할 모션벡터를 정의함으로써, 주변 블록의 모션벡터 정보를 이용하여 코딩하려는 블록의 예측 모션벡터(PMV:Prediction Motion Vector)를 예측하고 코딩 효율을 향상시킬 수 있는 장점이 있다.
미디언 연산을 이용하여 코딩하고자 하는 블록의 주변 블록이 쌍예측 모드(또는 다이렉트 모드)를 갖고 있을 경우, 이 모드의 모션벡터 'MVFW', 'MVBW'(또는 'MVf', 'MVb')는 포워드/포워드 또는 백워드/백워드와 같은 동일 방향일 수도 있고, 아니면 포워드/백워드와 같이 다른 방향일 수도 있다. 이와 같은 모션벡터의 방향 정보는 모션벡터 신택스('MVFW', 'MVBW')나 레퍼런스 픽쳐 인덱스 ('ref_idx_fwd', 'ref_idx_bwd')를 보고는 판단할 수 없게 되므로, 레퍼런스 픽쳐가 갖고 있는 고유한 다른 정보를 참조함으로써 방향 정보를 알아내어야 한다.
본 발명에서는 각 레퍼런스 픽쳐에 대한 디스플레이 순서 비교를 통하여 모 션벡터의 방향성에 대한 정보를 획득하고, 이를 통하여 예측 모션벡터 'PMV'를 구하는 방법에 대하여 제시하고자 한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 실시 예를 상세히 설명한다.
1. 디스플레이 순서(display order) 비교를 통한 모션벡터 방향성 파악
먼저, 코딩하려는 블록의 예측 모션벡터 'PMV'를 구하기 위해서는, 주변 블록의 모션벡터에 대한 방향 정보를 알아야만 한다. 그리고, 각 블록의 모션벡터에 대한 방향 정보를 통하여, 미디언 연산에 해당 주변 블록의 모션벡터를 포함시켜야 하는 지의 여부를 결정할 수 있게 된다.
일반적으로 주변 블록이 포워드 모드나 백워드 모드에 의해 한 개의 모션벡터를 갖고 있는 경우, 이 모션벡터의 방향성은 레퍼런스 픽쳐 인덱스를 보고 판단할 수 있다. 그러나, 주변 블록이 두 개의 모션벡터를 갖는 쌍예측 모드나 다이렉트 모드일 경우에는, 단지 두 개의 레퍼런스 픽쳐 인덱스가 가리키는 레퍼런스 픽쳐가 실제 어느 방향의 픽쳐들인지 구분할 수 없게 된다.
그 이유는, 다중 레퍼런스 픽쳐 및 B 픽쳐를 레퍼런스로 사용하는 것을 허용하는 동영상 코딩 시스템의 디코더는, 비록 디폴트 포워드/백워드 인덱싱 순서 (default forward/backward indexing order)와 렐러티브 포워드/백워드 인덱싱 순서(relative forward/backward indexing order) 사이의 관계를 인코더에서 전송된 리맵핑(re-mapping) 정보를 통해 알 수 있을지라도, 현재 디코딩하려는 B 픽쳐의 포워드 방향의 레퍼런스 픽쳐 수 및 백워드 방향의 레퍼런스 픽쳐 수를 정확히 알 수 없기 때문에, 단지 레퍼런스 픽쳐 인덱스만을 가지고는 방향 정보를 추정할 수 가 없는 것이다.
본 발명에서는 레퍼런스 픽쳐 인덱스가 가리키는 레퍼런스 픽쳐가 어느 방향의 픽쳐인지 구분하기 위해 자신의 디스플레이 순서(display order)가 몇 번째인지 알려주는 고유정보를 레퍼런스 픽쳐에 포함할 것을 제안한다. 이런 디스플레이 순서는 POC(Picture Order Count) 값에 의해 표기되어진다. 따라서, 레퍼런스 픽쳐 인덱스가 가리키는 레퍼런스 픽쳐의 디스플레이 순서를 현재 코딩하려는 B 픽쳐의 디스플레이 순서와 비교함으로써 각 모션벡터가 어느 방향에 존재하는지 쉽게 알 수 있게 되는 것이다.
2. 주변 블록이 쌍예측 또는 다이렉트 모드를 갖을 때, 예측 모션벡터 'PMV'를 구하기 위한 미디언 연산
코딩하고자 하는 블록의 주변 블록이 쌍예측 모드 또는 다이렉트 모드이면 두 개의 모션벡터를 갖게 되고, 이중 코딩하려는 블록에 대해 연산하려는 예측 모션벡터 'PMV'와 동일한 방향을 갖는 모션벡터가 미디언 연산에 사용되어야 할 것이다. 본 발명에서 제시하고자 하는 효율적인 예측 모션벡터 'PMV' 연산 방법에 대하여 아래에서 자세히 설명하도록 한다. 설명을 위해 도 1에서처럼 코딩하려는 블록을 E, 주변 블록을 A, B, C, D라 하고 주변 블록의 두 모션벡터를 각각 MV1, MV2이라 설정한다.
2.1 주변 블록이 갖는 두 개의 모션벡터가 서로 다른 방향인 경우
코딩하고자 하는 블록(예컨대 E)에 대하여, 구하고자 하는 예측 모션벡터 'PMV'와 (각 주변 블록 A, B, C 또는 A, B, D의 모션벡터 중에서)동일한 방향의 모 션벡터를 선택한 후 미디언 연산을 통하여 예측 모션벡터 'PMV'를 구한다.
즉, 블록 E의 포워드 예측 모션벡터에 대하여 'PMV'를 구하는 경우에는, 포워드 방향에 대한 모션벡터를 선택하며, 백워드 예측 모션벡터에 대하여 'PMV'를 구하는 경우에는 백워드 방향에 대한 모션벡터를 선택하여, 미디언 연산을 통하여 각 방향에 대한 예측 모션벡터 'PMV'를 구하도록 한다.
2.2 주변 블록이 갖는 두 개의 모션벡터가 동일 방향이고, 그 방향이 예측 모션벡터 'PMV' 방향과 동일한 경우
우선, 코딩하려는 블록 E가 참조하는 레퍼런스 픽쳐를 주변 블록의 두 모션벡터가 참조하고 있는지 검사한다.
만일 'MV1'과 'MV2' 모두 동일한 레퍼런스 픽쳐를 참조하고 있으면, 두 모션벡터 중 하나의 모션벡터(예를 들어, 가장 먼저 디코딩되는 모션벡터 또는 예측 모션벡터와 동일한 모드(MV1 모드 또는 MV2 모드)의 모션벡터)를 선택하여 미디언 연산에 포함하여 예측 모션벡터 'PMV'를 구한다. 여기서, 상기 동일한 모드를 갖는 모션벡터란 상기 예측 모션벡터를 나타내는 표기와 동일한 표기를 갖는 모션벡터를 의미한다. 또한, 상기 'MV1'과 'MV2'가 참조하는 레퍼런스 픽쳐는, 코딩하고자 하는 블록 E가 참조하는 레퍼런스 픽쳐와 동일할 수도 있으며, 상기 코딩하고자 하는 블록 E가 참조하는 레퍼런스 픽쳐와는 별도의 다른 레퍼런스 픽쳐일 수도 있다.
만일 블록 E의 레퍼런스 픽쳐를 'MV1'과 'MV2' 중 한 개 모션벡터만이 참조하고 있으면, 블록 E와 동일 레퍼런스 픽쳐를 참조하는 그 모션벡터를 미디언 연산에 포함하여 예측 모션벡터 'PMV'를 구한다.
만일 어느 모션벡터도 블록 E의 레퍼런스 픽쳐를 참조하지 않고 상기 MV1, MV2이 서로 다른 레퍼런스 픽쳐를 참조하는 경우에는, 두 모션벡터 중 블록 E가 참조하는 레퍼런스 픽쳐와 제일 근접한 거리에 있는 레퍼런스 픽쳐를 참조하는 모션벡터를 선택하거나 또는 현재 코딩하려는 픽쳐로부터 제일 근접한 거리에 있는 레퍼런스 픽쳐를 참조하는 모션벡터를 선택하여 미디언 연산에 포함하여 예측 모션벡터 'PMV'를 구한다.
2.3 주변 블록이 갖는 두 개의 모션벡터가 동일 방향이고, 그 방향이 예측 모션벡터 'PMV' 방향과 다른 경우
'MV1'과 'MV2'를 갖는 주변 블록의 모션벡터를 '0'으로 셋팅한 후, 레퍼런스 픽쳐는 블록 E가 참조하는 레퍼런스 픽쳐와 다르다고 설정하고 미디언 연산에 포함하여, 코딩하고자 하는 블록의 예측 모션벡터 'PMV'를 구한다.
이와 같이, 주변 블록이 두 개의 모션벡터를 갖고 있을 때, 디스플레이 순서에 따른 모션벡터의 방향성 파악 및 예측 모션벡터 'PMV' 방향과의 동일성 여부 검사로 'MV'에 좀더 근접한 'PMV'를 구할 수 있다. 이것은 디코더에 전송되는 모션벡터 차 'MVD(=MV-PMV)' 크기를 줄이게 되고 결국 전송되는 비트량이 감소되는 결과를 가져온다. 따라서 전체적인 코딩 효율이 높아질 수 있게 된다.
한편, 주변 블록이 한 개의 모션벡터를 갖는 경우에, 디스플레이 순서에 따른 모션벡터의 방향성 정보를 획득하여, 그 모션벡터의 방향이 예측 모션벡터의 방향과 동일하지 않은 경우에는, 해당 주변 블록의 모션벡터를 0으로 설정하고, 레퍼런스 픽쳐는 코딩하고자 하는 블록이 참조하는 레퍼런스 픽쳐와 다르다고 설정하고 미디언 연산에 포함하여 예측 모션벡터를 구한다.
또한, 주변 블록이 한 개의 모션벡터를 갖는 경우에, 디스플레이 순서에 따른 모션벡터의 방향성 정보를 획득하여, 그 모션벡터의 방향이 예측 모션벡터의 방향과 동일한 경우에는, 그 모션벡터를 미디언 연산에 포함하여 예측 모션벡터를 구하도록 한다.