KR101544390B1 - 움직임벡터 부호화/복호화 방법 및 그 장치 - Google Patents

움직임벡터 부호화/복호화 방법 및 그 장치 Download PDF

Info

Publication number
KR101544390B1
KR101544390B1 KR1020130074076A KR20130074076A KR101544390B1 KR 101544390 B1 KR101544390 B1 KR 101544390B1 KR 1020130074076 A KR1020130074076 A KR 1020130074076A KR 20130074076 A KR20130074076 A KR 20130074076A KR 101544390 B1 KR101544390 B1 KR 101544390B1
Authority
KR
South Korea
Prior art keywords
motion vector
current
predicted
predictive
candidate
Prior art date
Application number
KR1020130074076A
Other languages
English (en)
Other versions
KR20130088096A (ko
Inventor
김하윤
전병우
이영렬
문주희
김해광
양정엽
원광현
Original Assignee
에스케이텔레콤 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이텔레콤 주식회사 filed Critical 에스케이텔레콤 주식회사
Priority to KR1020130074076A priority Critical patent/KR101544390B1/ko
Publication of KR20130088096A publication Critical patent/KR20130088096A/ko
Application granted granted Critical
Publication of KR101544390B1 publication Critical patent/KR101544390B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 움직임벡터 부호화/복호화 방법 및 그 장치에 관한 것으로서, 현재 움직임벡터에 대한 후보 움직임벡터 집합을 선정하고; 후보 움직임벡터 집합에서 예측 움직임벡터를 선택하고; 예측 움직임벡터가 복호화 장치에서 예측가능한지를 판단하고; 예측가능으로 판단된 경우, 예측 움직임벡터 및 예측가능을 지시하는 움직임벡터 예측모드를 이용하여 현재 움직임벡터를 부호화하고; 및 예측 불가능으로 판단된 경우, 디폴트 예측 움직임벡터 및 예측 불가능을 지시하는 움직임벡터 예측모드를 이용하여 현재 움직임벡터를 부호화하는 것을 특징으로 한다.
본 발명에 의하면, 현재 움직임벡터에 대한 예측 움직임벡터를 직접 복호화 장치로 알리지 않고, 예측 움직임벡터를 찾을 수 있도록 정보를 주거나 찾기 위한 소정의 함수를 공유함으로써, 움직임벡터 예측모드에 따라 예측 움직임벡터를 선택하여 현재 움직임벡터를 부호화 및/또는 복호화하고, 움직임벡터 예측모드를 복호화 장치에 전송함으로써 부호화 비트량 감소, 움직임 예측 성능 및 움직임 보상 성능을 향상시키는 효과가 있다.

Description

움직임벡터 부호화/복호화 방법 및 그 장치{Method and Apparatus for Encoding and Decoding Motion Vector}
본 발명은 동영상 부호화 및 복호화에 관한 것으로서, 더욱 상세하게는 동영상 부호화 및 복호화 분야에서의 움직임벡터 부호화/복호화 방법 및 그 장치에 관한 것이다.
근래에 멀티미디어 기술은 비약적으로 발전하고 있으며, 이에 따라 오디오, 이미지, 동영상 등을 포함한 고품질의 멀티미디어 데이터들에 대한 수요도 증가하고 있다. 따라서 제한된 네트워크 환경에서 이러한 멀티미디어 데이터들을 전송하거나 저장하고 다시 읽어내는 (Retrieve) 수요를 충족시키기 위해 고효율의 동영상 압축에 관한 국제 표준이 제정되고 있다. 특히 동영상의 경우, 동영상 압축에 관한 국제표준으로 ISO/IEC JTC1/SC29 MPEG 그룹 및 ITU-T VCEG 그룹이 제정한 H.264/AVC MPEG-4 Part.10 표준은 높은 압축 효율을 달성하기 위해 가변블록 크기에서의 움직임예측 및 보상(Variable block size motion estimation and compensation), 화면 내 예측부호화(Intra prediction) 등의 다양한 예측부호화 방법들을 사용하고 있다. 예측부호화는 데이터간에 존재하는 상관도(Correlation)을 줄일 수 있는 효과적인 방법으로 다양한 데이터들의 압축에 널리 사용된다. 특히 움직임벡터는 주변 블록의 움직임벡터와 밀접한 상관관계를 가지고 있기 때문에, 주변블록의 움직임벡터로부터 현재블록의 움직임벡터에 대한 예측값(PMV: Predicted Motion Vector, "예측 움직임벡터"라고도 함)을 계산한 후 현재 블록의 움직임벡터의 값 그 자체를 부호화하지 않고 그 예측값에 대한 차분벡터(DMV: Differential Motion Vector, "잔차신호", "차분값"이라고도 함)만을 부호화함으로써 부호화해야 할 비트량을 상당히 줄여 부호화 효율을 높힐 수 있다.
일반적으로 이러한 예측 움직임벡터를 이용한 움직임벡터 부호화에서는 효율적인 압축을 위하여 예측 움직임벡터가 정확할수록 부호화 효율이 증대된다. 따라서 단지 공간적 인접블록의 움직임벡터뿐만 아니라, 시간적, 공간적 또는 시공간적으로 인접한 블록의 움직임벡터 또는 그들을 조합하여 계산된 또 다른 움직임벡터들로 이루어진 유한한 개수의 예측 움직임벡터 대상들을 생성하고 그 중에서 움직임벡터 예측부호화에 가장 적당한 것을 선택하여 사용하면 예측부호화 효율을 더욱 높일 수 있다. 이 경우, 예측 부호화된 움직임벡터 데이터로부터 원래의 움직임벡터를 올바르게 복원하기 위해서는 유한한 개수의 예측 움직임벡터 대상들 중에 어떤 예측 움직임벡터가 사용되었는지 알아야 한다. 이를 위한 가장 간단한 움직임벡터 예측부호화 방법은 움직임벡터 예측부호화를 위하여 어떤 예측값을 사용하였는지에 대한 정보를 함께 부호화하는 것이다. 또는 이러한 예측 움직임벡터 선택을 가리키기 위한 추가적인 데이터 부호화에 소요되는 비트량 발생을 제거하기 위해, 현재의 H.264/AVC 표준은 주변블록(좌측, 상단, 우측상단)이 가지는 움직임벡터들의 수평 성분과 수직 성분 각각의 중간값(Median)을 움직임벡터의 예측 부호화를 위한 예측 움직임벡터(PMV: Predicted Motion Vector)로 사용한다. 이 방법은 중간값이라는 부호화와 복호화에 있어 공히 알고 있는 소정의 디폴트 방법을 정하고, 부호화나 복호화에 있어 이 디폴트 방법을 사용하여 예측값(예측 움직임벡터)을 산출함으로써 어떤 예측값을 사용하였는지에 대한 정보를 함께 부호화할 필요를 없애는 것이다. 중간값의 소정의 디폴트 방법을 사전에 정의하여 사용하는 기존 방법은, 어떤 움직임벡터가 예측 움직임벡터로 사용되었는지에 대한 추가적인 정보의 전송 없이 향상된 부호화 효율을 유지할 수 있다는 장점이 있지만 사용한 중간값인 예측 움직임벡터가 차분벡터를 부호화하는데 소요되는 비트량을 항상 최소로 발생시키는 최적의 예측 움직임벡터가 아니라는 문제점이 있다.
전술한 문제점을 해결하기 위한 본 발명의 목적은, 복수의 움직임벡터 예측모드를 이용하여 현재 움직임벡터에 대한 예측 움직임벡터의 선택이 가능하도록 하여 더욱 정확하게 예측 움직임벡터를 선택하고, 이를 통해 차분벡터의 부호화 비트량을 감소시키고 움직임 예측 및/또는 움직임 보상의 성능을 향상시키는 데 있다.
또한, 본 발명의 다른 목적은, 부호화 장치는 더욱 정확한 예측 움직임벡터를 선택하여 부호화 효율을 향상시키면서도 부호화에 이용된 예측 움직임벡터를 직접 복호화 장치로 알리는 대신에, 예측 움직임벡터를 찾기 위한 정보를 복호화 장치로 주거나 찾기 위한 함수를 복호화 장치와 공유함으로써, 예측 움직임벡터를 알리기 위해 발생하는 추가적인 정보에 대한 부호화 비트량 증가를 줄여줌으로써, 부호화 효율 및 복호화 효율을 더욱더 향상시키는 데 있다.
전술한 목적을 달성하기 위한 본 발명의 한 측면에 따르면, 움직임벡터 부호화 방법에 있어서, (a) 현재블록의 현재 움직임벡터에 대하여 후보 움직임벡터 집합을 선정하는 단계; (b) 상기 선정된 후보 움직임벡터 집합에서 예측 움직임벡터를 선택하는 단계; (c) 상기 선택된 예측 움직임벡터가 복호화 장치에서 예측가능한지를 판단하는 단계; (d) 상기 단계 (c)에서 예측가능으로 판단된 경우, 상기 선택된 예측 움직임벡터 및 예측가능을 지시하는 움직임벡터 예측모드를 이용하여 상기 현재 움직임벡터를 부호화하는 단계; 및 (e) 상기 단계 (c)에서 예측 불가능으로 판단된 경우, 기설정된 디폴트 예측 움직임벡터 및 예측 불가능을 지시하는 움직임벡터 예측모드를 이용하여 상기 현재 움직임벡터를 부호화하는 단계를 포함하는 것을 특징으로 하는 움직임벡터 부호화 방법을 제공한다.
전술한 목적을 달성하기 위한 본 발명의 다른 한 측면에 따르면, 움직임벡터 복호화 방법에 있어서, (a) 부호화된 움직임벡터 예측모드와 부호화된 차분벡터를 복호화하는 단계; (b) 상기 복호화된 움직임벡터 예측모드가 예측가능을 지시하는지 예측 불가능을 지시하는지를 판단하는 단계; (c) 상기 복호화된 움직임벡터 예측모드가 예측가능을 지시하면, 현재블록의 현재 움직임벡터를 복원하기 위한 예측 움직임벡터로 선택가능한 후보 움직임벡터 집합을 선정하고, 상기 선정된 후보 움직임벡터 집합에서 하나의 후보 움직임벡터를 상기 현재 움직임벡터에 대한 예측 움직임벡터로 결정하는 단계; (d) 상기 복호화된 움직임벡터 예측모드가 예측 불가능을 지시하면, 기설정된 디폴트 예측 움직임벡터를 상기 현재 움직임벡터에 대한 예측 움직임벡터로 결정하는 단계; 및 (e) 상기 단계 (c) 또는 상기 단계 (d)에서 결정된 예측 움직임벡터와 상기 복호화된 차분벡터를 더하여 상기 현재블록의 현재 움직임벡터를 복원하는 단계를 포함하는 것을 특징으로 하는 움직임벡터에 대한 복호화 방법을 제공한다.
전술한 목적을 달성하기 위한 본 발명의 또 다른 한 측면에 따르면, 움직임벡터 부호화 장치에 있어서, 현재블록의 현재 움직임벡터에 대하여 후보 움직임벡터 집합을 선정하고, 상기 선정된 후보 움직임벡터 집합에서 예측 움직임벡터를 선택하는 예측 움직임벡터 선택부; 상기 선택된 예측 움직임벡터가 복호화 장치에서 예측가능한지를 판단하여, 상기 판단 결과에 따라 예측가능 또는 예측 불가능을 지시하는 움직임벡터 예측모드를 결정하는 움직임벡터 예측모드 결정부; 상기 결정된 움직임벡터 예측모드가 예측가능으로 지시된 경우, 상기 선택된 예측 움직임벡터를 상기 현재 움직임벡터에 대한 예측 움직임벡터로 결정하고, 상기 현재 움직임벡터와 상기 선택된 예측 움직임벡터의 차분벡터 및 상기 결정된 움직임벡터 예측모드를 이용하여 상기 현재 움직임벡터를 부호화하는 제 1 부호화부; 및 상기 결정된 움직임벡터 예측모드가 예측 불가능으로 지시된 경우, 기설정된 디폴트 예측 움직임벡터를 상기 현재 움직임벡터에 대한 예측 움직임벡터로 결정하고, 상기 현재 움직임벡터와 상기 기설정된 디폴트 예측 움직임벡터의 차분벡터 및 상기 결정된 움직임벡터 예측모드를 이용하여 상기 현재 움직임벡터를 부호화하는 제 2 부호화부를 포함하는 것을 특징으로 하는 움직임벡터 부호화 장치를 제공한다.
전술한 목적을 달성하기 위한 본 발명의 또 다른 한 측면에 따르면, 움직임벡터 복호화 장치에 있어서, 부호화 장치에 의해 부호화된 움직임벡터 예측모드와 부호화된 차분벡터를 복호화하는 움직임벡터 예측모드 및 차분벡터 복호화부; 상기 복호화된 움직임벡터 예측모드가 예측가능을 지시하는지 예측 불가능을 지시하는지를 판단하는 움직임벡터 예측모드 판단부; 상기 복호화된 움직임벡터 예측모드가 예측가능을 지시하면, 현재블록의 현재 움직임벡터를 복원하기 위한 예측 움직임벡터로 선택가능한 후보 움직임벡터 집합을 선정하고, 상기 선정된 후보 움직임벡터 집합에서 예측 움직임벡터를 선택하며, 상기 선택된 예측 움직임 벡터를 상기 현재 움직임벡터에 대한 예측 움직임벡터로 결정하는 제 1 예측 움직임벡터 결정부; 상기 복호화된 움직임벡터 예측모드가 예측 불가능을 지시하면, 기설정된 디폴트 예측 움직임벡터를 상기 현재 움직임벡터에 대한 예측 움직임벡터로 결정하는 제 2 예측 움직임벡터 결정부; 및 상기 제 1 예측 움직임벡터 결정부 또는 상기 제 2 예측 움직임벡터 결정부에서 결정된 예측 움직임벡터에 상기 복호화된 차분벡터를 더하여 상기 현재블록의 현재 움직임벡터를 복원하는 현재 움직임벡터 복원부를 포함하는 것을 특징으로 하는 움직임벡터 복호화 장치를 제공한다.
전술한 목적을 달성하기 위한 본 발명의 또 다른 한 측면에 따르면, 움직임벡터 부호화 방법에 있어서, (a) 복수의 움직임벡터 예측모드 중 선택된 움직임벡터 예측모드에 따라 현재 움직임벡터의 예측 움직임벡터를 선택하는 단계; (b) 상기 현재 움직임벡터와 상기 예측 움직임벡터 간의 차분벡터를 부호화하는 단계; (c) 상기 선택된 움직임벡터 예측모드를 나타내는 움직임벡터 예측모드 정보를 부호화하는 단계; 및 (d) 상기 부호화된 차분벡터 및 움직임벡터 예측모드 정보를 포함하는 비트스트림을 생성하는 단계를 포함하는 것을 특징으로 하는 움직임벡터 부호화 방법을 제공한다.
전술한 목적을 달성하기 위한 본 발명의 또 다른 한 측면에 따르면, 움직임벡터 복호화 방법에 있어서, (a) 현재 움직임벡터와 예측 움직임벡터 간의 차분벡터 및 상기 현재 움직임 벡터의 움직임벡터 예측모드 정보를 복호화하는 단계; (b) 상기 움직임벡터 예측모드 정보에 근거하여 상기 현재 움직임 벡터의 예측 움직임벡터를 선택하는 단계; 및 (c) 상기 선택된 예측 움직임벡터를 이용하여 상기 현재 움직임벡터를 복원하는 단계를 포함하는 것을 특징으로 하는 움직임벡터 복호화 방법을 제공한다.
이상에서 설명한 바와 같이 본 발명에 의하면, 복수의 움직임벡터 예측모드를 이용하여 현재 움직임벡터에 대한 예측 움직임벡터의 선택이 가능하도록 하여 더욱 정확하게 예측 움직임벡터를 선택하고, 이를 통해 차분벡터의 부호화 비트량을 감소시키고 움직임 예측 및/또는 움직임 보상의 성능을 향상시키는 효과가 있다.
또한, 본 발명에 의하면, 부호화 장치는 더욱 정확한 예측 움직임벡터를 선택하여 부호화 효율을 향상시키면서도 부호화에 이용된 예측 움직임벡터를 직접 복호화 장치로 알리는 대신에, 예측 움직임벡터를 찾기 위한 정보를 복호화 장치로 주거나 찾기 위한 함수를 복호화 장치와 공유함으로써, 예측 움직임벡터를 알리기 위해 발생하는 추가적인 정보에 대한 부호화 비트량 증가를 줄여줌으로써, 부호화 효율 및 복호화 효율을 더욱더 향상시키는 효과가 있다.
도 1은 본 발명의 일실시예에 따른 움직임벡터에 대한 부호화를 위한 블록을 예시적으로 나타낸 도면,
도 2는 본 발명의 일실시예에 따른 움직임벡터 부호화 장치에 대한 블록구성도,
도 3은 본 발명의 일실시예에 따른 움직임벡터 복호화 장치에 대한 블록구성도,
도 4는 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에 대한 개략적인 전체 흐름도,
도 5는 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에 대한 상세한 전체 흐름도,
도 6는 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 후보 움직임벡터 집합 선정 단계에 대한 흐름도,
도 7은 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 예측 움직임벡터 선택 단계에 대한 흐름도,
도 8은 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 예측 움직임벡터 예측가능 여부 판단 단계에 대한 흐름도,
도 9은 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 제 1 부호화 단계에 대한 흐름도,
도 10은 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 제 2 부호화 단계에 대한 흐름도,
도 11은 발명의 일실시예에 따른 움직임벡터 복호화 방법에 대한 개략적인 전체 흐름도,
도 12은 본 발명의 일실시예에 따른 움직임벡터 복호화 방법에 대한 상세한 전체 흐름도,
도 13은 본 발명의 일실시예에 따른 움직임벡터 복호화 방법에서의 제 1 예측 움직임벡터 선택 단계에 대한 흐름도이다.
이하, 본 발명의 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 당업자에게 자명하거나 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
도 1은 본 발명의 일실시예에 따른 움직임벡터에 대한 부호화를 위한 블록을 예시적으로 나타낸 도면이다.
도 1에서, 블록 D는 부호화할 움직임벡터에 해당하는 "현재블록"이고, 블록 A, 블록 B 및 블록 C는 블록 D에 대한 "주변블록"로 가정한다.
도 1을 참조하면, MVA, MVB, MVC 및 MVD는, 블록 A, 블록 B, 블록 C, 블록 D 가 갖는 움직임벡터(Motion Vector: MV)이고, 각각은 수평성분(MVA x, MVB x, MVC x 및 MVD x)과 수직성분(MVA y, MVB y, MVC y 및 MVD y)을 가지는 것으로 정의한다. 여기서, 현재블록인 블록 D의 움직임벡터 MVD를 '현재 움직임벡터"라 한다.
도 1을 참조하면, 현재 움직임벡터인 MVD는 (2,0)이고, 주변블록의 움직임벡터인 MVA, MVB 및 MVC는 각각 (2,0), (2,1) 및 (2,2)인 것을 가정한다.
전술한 현재블록(블록 D)의 현재 움직임벡터에 대한 예측 움직임벡터(PMVD: Predicted Motion Vector)를 하기 수학식 1과 같이 계산하며, 예측 움직임벡터(PMVD)는 수평성분(PMVD x)과 수직성분(PMVD y)을 가지는 것으로 정의한다.
Figure 112013057500319-pat00001
상기 수학식 1을 참조하면, 현재 움직임벡터에 대한 예측 움직임벡터(PMVD: Predicted Motion Vector)는 주변블록(블록 A, 블록 B, 블록 C)의 움직임벡터(MVA, MVB 및 MVC)를 특정함수(F())의 변수로 해서 계산됨을 확인할 수 있다.
H.264/AVC 표준에서, 현재 움직임벡터에 대한 예측 움직임벡터(PMVD: Predicted Motion Vector)는, 중간값(Median)을 계산하는 함수를 특정함수(F())로 하여 계산된다. 즉, 현재 움직임벡터에 대한 예측 움직임벡터(PMVD)는 주변블록(블록 A, 블록 B, 블록 C)의 움직임벡터(MVA, MVB 및 MVC)에 대한 중간값(Median)으로 구해지는 것이다. 이러한 방식으로 계산된 현재 움직임벡터(MVD)에 대한 예측 움직임벡터(PMVD)는 하기 수학식 2와 같이 표현된다.
Figure 112013057500319-pat00002
수학식 1(또는 수학식 2)를 이용하여 현재 움직임벡터(MVD)의 예측 움직임벡터(PMVD)가 구해지면, 수학식 3을 사용하여 압축해야 할 현재 움직임벡터(MVD)에서 이에 대한 예측 움직임벡터(PMVD)를 차분한 움직임벡터인 차분벡터(DMVD: Differential Motion Vector, '움직임벡터 잔차신호'라고도 함)를 구할 수 있으며, 이 차분벡터(DMVD)는 엔트로피 부호화 등의 미리 정의된 소정의 방법에 의해 부호화되어 전송된다.
Figure 112013057500319-pat00003
도 1에 예시된 것처럼, 현재 움직임벡터(MVD)의 값이 (2,0)인 경우, 중간값(median)을 통해 예측 움직임벡터(PMVD)를 계산하는 종래 방식에 따른 수학식 2를 이용하면, 예측 움직임벡터(PMVD)는 (2,1)이 된다.
이와 같이, 중간값을 예측 움직임벡터로 하는 것은, 부호화 장치와 복호화 장치가 공히 알고 있게 됨으로써, 어떤 움직임벡터가 현재 움직임벡터의 예측 움직임벡터로 사용되었는지에 대한 '추가적인 정보'가 부호화될 필요가 없고 전송될 필요가 없게 되어 부호화 효율을 향상시킬 수 있다.
하지만, 전술한 바와 같이, 중간값을 이용하여 계산된 예측 움직임벡터(PMVD)는, 실제의 현재 움직임벡터(MVD)와 차이가 있을 수 있다. 도 1의 예시에서 보면, 중간값을 이용하여 계산된 예측 움직임벡터(PMVD)인 (2,1)은 현재 움직임벡터(MVD)인 (2,0)와 차이가 있음을 알 수 있으며, 수학식 3을 이용하여 차분벡터(DMVD)를 구해보면 부호화할 차분벡터(DMVD)는 (0,-1)이 된다.
하지만, 만약 블록 A의 움직임벡터인 MVA인 (2,0)을 예측 움직임벡터(PMVD)로 사용하면 실제의 현재 움직임벡터(MVD)인 (2,0)과 차이가 발생하지 않고, 수학식 3을 이용하여 차분벡터(DMVD)를 구해보면 부호화할 차분벡터(DMVD)는 (0,0)이 된다.
즉, 중간값을 이용하여 계산된 예측 움직임벡터(PMVD)인 (2,1)를 사용하는 것보다, 블록 A의 움직임벡터인 MVA인 (2,0)을 예측 움직임벡터(PMVD)로 사용하는 것이 차분벡터(DMVD)가 (0,0)이 되어 이를 부호화하는 데 소용되는 비트량을 감소시킬 수 있다.
그러나 중간값을 이용하는 방식에서는 현재 움직임벡터(MVD)의 예측 움직임벡터(PMVD)를 계산하기 위해서 항상 중간값(median)을 사용해야 하므로, 블록 A의 움직임벡터인 MVA를 예측 움직임벡터(PMVD)로 사용하는 것이 불가능하다.
만약 블록 A의 움직임벡터(MVA)를 예측 움직임벡터(PMVD)로 사용한다고 하더라도, MVA, MVB 및 MVC 중에서 어떤 움직임벡터가 예측 움직임벡터(PMVD)로 사용되었는지에 대한 '추가적인 정보'를 함께 전송해야 하므로, 추가적인 정보를 부호화함으로써 압축 효율의 향상 여부를 보장할 수 없는 또 다른 문제점이 있다.
따라서, 본 발명의 일 실시예에 따른 움직임벡터 부호화 방식은, 복수의 움직임벡터 예측모드를 이용하여 예측 움직임벡터의 선택이 가능하도록 하여 보다 정확하게 예측 움직임벡터를 선택할 수 있도록 하고, 이를 통해, 중간값을 예측 움직임벡터로 선택하여 발생하는 종래 방식에서의 문제점을 해결하고자 한다.
또한, 본 발명의 일 실시예에 따른 움직임벡터 부호화 방식은, 더욱 정확한 예측 움직임벡터를 선택하여 부호화 효율을 향상시키면서도, 선택된 예측 움직임벡터를 복호화 장치에 알리기 위한 효율적인 방법을 제안함으로써, 예측 움직임벡터를 알림으로써 발생하는 추가적인 정보에 대한 부호화 비트량 증가의 문제점도 해결하고자 한다.
도 1에서 나타낸, 블록들(블록 A, 블록 B, 블록 C 및 블록 D) 및 그에 대한 움직임벡터인 MVA, MVB, MVC 및 MVD는 아래 설명에서 전반적으로 이용된다.
단, 도 1에서, 움직임벡터(MVA, MVB, MVC 및 MVD)를 수직성분과 수평성분을 가지는 이차원적인 벡터로 도시하였으나, 이는 설명의 편의를 위한 것이지 이에 한정되지 않는다. 즉, 본 발명의 움직임벡터 부호화 및 복호화는 n차원 움직임벡터로 확대하여 적용할 수 있다. 또한 도 1에서는 현재블록(블록 D)의 주변블록을 공간적인 인접성에 따라 3개의 블록 A, 블록 B 및 블록 C로만 나타내었으나, 이도 설명의 편의를 위한 것이지 이에 한정되지 않고, 시간적 또는 공간적으로 주변에 있는 하나 이상의 주변블록이 있을 수 있다.
본 발명의 일 실시예에 따른 움직임벡터 부호화 방식에 따라 전술한 목적의 달성 방법은 이하에서 더욱 상세하게 설명한다.
본 발명의 일 실시예에 따른 움직임벡터 예측모드는 디폴트(Default) 예측모드와 넌-디폴트(Non-Default) 예측모드를 포함한다. 이하에서는 디폴트 예측모드는 미리 정해진 기준 또는 방법에 따라 선택된 예측 움직임벡터(최적 예측 움직임벡터)의 예측이 가능하지 않음을 나타내는 예측모드를 일 예로서 설명한다. 반대로, 넌-디폴트 예측모드는 미리 정해진 기준 또는 방법에 따라 선택된 예측 움직임벡터(최적 예측 움직임벡터)의 예측이 가능함을 지시하는 예측모드를 일 예로서 설명한다. 여기서, "최적 예측 움직임벡터"라 함은 미리 정해진 기준 또는 방법에 따라 얻어진 현재 움직임벡터의 예측 움직임벡터를 의미하는 것일 뿐 이와 같이 구해진 예측 움직임벡터가 항상 최적 예측값이라는 것을 의미하는 것은 아니다.
도 2는 본 발명의 일실시예에 따른 움직임벡터 부호화 장치에 대한 블록구성도이다.
도 2를 참조하면, 본 발명의 일실시예에 따른 움직임벡터 부호화 장치(200)는, 예측 움직임벡터 선택부(210), 움직임벡터 예측모드 결정부(220), 제 1 부호화부(230) 및 제 2 부호화부(240) 등을 포함한다. 단, 이하에서는 움직임벡터 부호화 장치(200)를 이하에서 부호화 장치라고도 간단히 기술한다.
예측 움직임벡터 선택부(210)는, 현재블록의 현재 움직임벡터에 대하여 예측 움직임벡터로 사용할 수 있는 후보 움직임벡터의 집합인 후보 움직임벡터 집합을 선정하고, 선정된 후보 움직임벡터 집합에서 예측 움직임벡터를 선택한다. 후보 움직임벡터 집합에서 예측 움직임벡터를 선택하는 방식은, 예를 들어, 후보 움직임벡터 집합에서 현재 움직임벡터와의 차이를 최소화하는 후보 움직임벡터를 예측 움직임벡터로 선택할 수 있다. 이와 같이, 예측 움직임벡터 선택부(210)에 의해 후보 움직임벡터 집합에서 선택된 예측 움직임벡터를 이하에서는 설명의 편의를 위해 최적 예측 움직임벡터라고 한다. 다만, 이는 설명의 편의를 위해 구체적인 예로서 최적 예측 움직임벡터를 정의한 것일 뿐 본 발명에서 최적 예측 움직임벡터는 이미 전술한 바와 같이 미리 정해진 기준 또는 방법에 따라 얻어지는 현재 움직임벡터의 예측 움직임벡터를 의미한다.
움직임벡터 예측모드 결정부(220)는, 예측 움직임벡터 선택부(210)에서 선택된 최적 예측 움직임벡터가 복호화 장치에서 예측가능한지를 판단하여, 판단 결과에 따라 예측가능 또는 예측 불가능을 지시하는 "움직임벡터 예측모드"를 결정한다.
제 1 부호화부(230)는, 움직임벡터 예측모드 결정부(220)에서 결정된 움직임벡터 예측모드에 예측가능이 지시된 경우, 예측 움직임벡터 선택부(210)에서 선택된 "최적 예측 움직임벡터"를 현재 움직임벡터에 대한 예측 움직임벡터로 결정하고, 현재 움직임벡터와 최적 예측 움직임벡터의 차분벡터를 계산하고, 계산된 차분벡터 및 "예측가능을 지시하는 움직임벡터 예측모드"를 이용하여 현재 움직임벡터를 부호화한다.
제 2 부호화부(240)는, 움직임벡터 예측모드 결정부(220)에서 결정된 움직임벡터 예측모드에 예측 불가능이 지시된 경우, 복호화 장치와 공히 알고 있는 기설정된 "디폴트 예측 움직임벡터"를 현재 움직임벡터에 대한 예측 움직임벡터로 결정하고, 현재 움직임벡터와 기설정된 디폴트 예측 움직임벡터의 차분벡터를 계산하고, 계산된 차분벡터 및 "예측 불가능을 지시하는 움직임벡터 예측모드"를 이용하여 현재 움직임벡터를 부호화한다. 여기서, "디폴트 예측 움직임벡터"는 제 1 부호화부(230)에서 이용되는 "최적 예측 움직임벡터"와 대비되는 것으로서 부호화 장치와 복호화 장치 간에 기설정된 예측 움직임벡터이며, 일 예로서 주변블록의 움직임벡터에 대한 중간값(median)일 수 있다.
움직임벡터 예측모드 결정부(220)에 의해 결정된 움직임벡터 예측모드 및 제 1 부호화부(230) 또는 제 2 부호화부(240)에 의해 부호화된 차분벡터는 전송 비트스트림에 삽입된다. 전송 비트스트림은 유선, 무선 또는 저장매체 등의 전송 채널을 통해 디코더로 전송된 후 후술할 본 발명에 따른 움직임벡터 복호화 장치에 의해 복호화된다.
도 2를 참조하여 전술한 본 발명의 일실시예에 따른 움직임벡터 부호화 장치(200)에 의한 움직임벡터 부호화 방법은 도 4 내지 도 10를 참조하여 더욱 상세하게 설명한다.
도 3은 본 발명의 일실시예에 따른 움직임벡터 복호화 장치(300)에 대한 블록구성도이다.
도 3을 참조하면, 본 발명의 일실시예에 따른 움직임벡터 복호화 장치(300)는 움직임벡터 예측모드/차분벡터 복호화부(310), 움직임벡터 예측모드 판단부(320), 제 1 예측 움직임벡터 결정부(330), 제 2 예측 움직임벡터 결정부(340) 및 현재 움직임벡터 복원부(350) 등을 포함한다. 단, 이하에서는 움직임벡터 복호화 장치(300)를 간단히 복호화 장치라고도 한다.
움직임벡터 예측모드/차분벡터 복호화부(310)는, 부호화 장치(200)에 의해 부호화된 움직임벡터 예측모드와 부호화된 차분벡터를 복호화한다.
움직임벡터 예측모드 판단부(320)는, 복호화된 움직임벡터 예측모드가 예측가능을 지시하는지 예측 불가능을 지시하는지를 판단한다.
제 1 예측 움직임벡터 결정부(330)는, 복호화된 움직임벡터 예측모드가 예측가능을 지시하면, 현재블록의 현재 움직임벡터를 복원하기 위한 예측 움직임벡터로 선택가능한 후보 움직임벡터 집합을 선정하고, 선정된 후보 움직임벡터 집합에서 "최적 예측 움직임벡터"를 선택하며, 선택된 최적 예측 움직임 벡터를 현재 움직임벡터에 대한 예측 움직임벡터로 결정한다.
제 2 예측 움직임벡터 결정부(340)는, 복호화된 움직임벡터 예측모드가 예측 불가능을 지시하면, 부호화 장치(200)와 공히 알고 있는 기설정된 "디폴트 예측 움직임벡터"를 현재 움직임벡터에 대한 예측 움직임벡터로 결정한다.
현재 움직임벡터 복원부(350)는, 제 1 예측 움직임벡터 결정부(330) 또는 제 2 예측 움직임벡터 결정부(340)에서 결정된 예측 움직임벡터(최적 예측 움직임벡터 또는 디폴트 예측 움직임벡터)와 복호화된 차분벡터를 더하여 현재블록의 현재 움직임벡터를 복원한다.
도 3을 참조하여 전술한 본 발명의 일실시예에 따른 움직임벡터 복호화 장치(300)에 의한 움직임벡터 복호화 방법은 도 11 내지 도 13을 참조하여 더욱 상세하게 설명한다.
도 4는 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에 대한 개략적인 전체 흐름도이다.
도 4를 참조하면, 본 발명의 일실시예에 따른 움직임벡터 부호화 방법은, 복수의 움직임벡터 예측모드 중 선택된 움직임벡터 예측모드에 따라 현재 움직임벡터의 예측 움직임벡터를 선택하는 단계(S400); 현재 움직임벡터와 예측 움직임벡터 간의 차분벡터를 부호화하는 단계(S402); 선택된 움직임벡터 예측모드를 나타내는 움직임벡터 예측모드 정보를 부호화하는 단계(S404); 및 부호화된 차분벡터 및 움직임벡터 예측모드 정보를 포함하는 비트스트림을 생성하는 단계(S406) 등을 포함한다.
전술한 S400 단계는, 선택된 움직임벡터 예측모드가 디폴트 예측모드인 경우에는, 기설정된 디폴트 예측 움직임벡터를 현재 움직임벡터의 예측 움직임벡터로 선택한다.
전술한 S400 단계는, 선택된 움직임벡터 예측모드가 넌-디폴트 예측 모드인 경우에는, 소정의 방법을 이용하여 복수의 후보 움직임벡터 중에서 하나의 후보 움직임벡터를 현재 움직임벡터의 예측 움직임벡터(최적 예측 움직임벡터)로 선택한다.
단, 도 4에서는 S400 단계, S402 단계, S404 단계 및 S406 단계의 순서로 수행되는 것으로 도시되었으나, 이는 본 발명의 본질적인 특성을 설명하기 위한 일 실시예로서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 순서를 변경하여 구현할 수도 있을 것이다. 예를 들어, 도 4에서는 S402 단계 이후 S404 단계가 수행되는 것으로 도시되었으나, S404 단계 이후 S402 단계가 수행되어도 된다. 즉, 둘 중 어느 하나가 먼저 수행되어도 관계가 없다.
도 4를 참조하여 전술한 본 발명의 일실시예에 따른 움직임벡터 부호화 방법을 도 5 내지 도 10을 참조하여 더욱 상세하게 설명한다.
도 5는 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에 대한 전체 흐름도이다.
도 5를 참조하면, 본 발명의 일실시예에 따른 움직임벡터 부호화 방법은, 후보 움직임벡터 집합 선정 단계(S500), 예측 움직임벡터 선택 단계(S502), 예측 움직임벡터 예측가능 여부 판단 단계(S504), 제 1 부호화 단계(S506) 및 제 2 부호화 단계(S508) 등을 포함한다.
후보 움직임벡터 집합 선정 단계(S500)는 현재블록의 현재 움직임벡터에 대하여 후보 움직임벡터 집합을 선정한다.
예측 움직임벡터 선택 단계(S502)는 선정된 후보 움직임벡터 집합에서 최적 예측 움직임벡터를 선택한다.
예측 움직임벡터 예측가능 여부 판단 단계(S504)는 선택된 최적 예측 움직임벡터가 복호화 장치에서 예측가능한지를 판단한다.
제 1 부호화 단계(S506)는 S504 단계에서 예측가능으로 판단된 경우, 선택된 최적 예측 움직임벡터 및 예측가능을 지시하는 움직임벡터 예측모드를 이용하여 상기 현재 움직임벡터를 부호화한다.
제 2 부호화 단계(S508)는 S504 단계에서 예측 불가능으로 판단된 경우, 기설정된 디폴트 예측 움직임벡터 및 예측 불가능을 지시하는 움직임벡터 예측모드를 이용하여 상기 현재 움직임벡터를 부호화한다.
최종적으로 결정된 움직임벡터 예측모드 및 제 1 부호화 단계(S506) 또는 제 2 부호화 단계(S508)에서 부호화된 차분벡터는 전송 비트스트림에 삽입된다. 전송 비트스트림은 유선, 무선 또는 저장매체 등의 전송 채널을 통해 디코더로 전송된다.
전술한 각 단계(S500, S502, S504, S506, S508)는 도 6, 도 7, 도 8, 도 9 및 도 10를 참조하여 각각 상세하게 설명한다.
도 6는 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 후보 움직임벡터 집합 선정 단계(S500)에 대한 흐름도이다.
도 6을 참조하면, 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 후보 움직임벡터 집합 선정 단계(S500)는, 현재블록에 대한 하나 이상의 주변블록을 검색하는 단계(S600), 검색된 하나 이상의 주변블록의 움직임벡터를 각각 산출하는 단계(S602) 및 각각 산출된 후보 움직임벡터를 취합하여 상기 후보 움직임벡터 집합으로 선정하는 단계(S604) 등을 포함한다.
도 1에 나타낸 예시를 참조하면, 전술한 후보 움직임벡터 집합 선정 단계(S500)에서 선정된 후보 움직임벡터 집합은, 현재블록인 블록 D의 좌측, 상단, 우측 상단에 있는 주변블록인 블록 A, 블록 B 및 블록 C가 가지는 움직임벡터들로 이루어진 {MVA, MVB, MVC}가 된다.
그러나, 더욱 일반적으로는 후보 움직임벡터 집합은 구현 방법이나 필요에 따라 보다 다양한 움직임벡터들을 후보 움직임벡터들의 집합(후보 움직임벡터 집합)으로 선정할 수 있다. 예를 들어, 시간축 상으로 이전에 존재하는 픽춰의 동일 위치 블록의 움직임벡터나 공간축 상으로 좌측 상단에 위치한 블록의 움직임벡터도 후보 움직임벡터로 사용할 수 있다. 또한 이들 움직임벡터들을 이용하여 선정된 또 다른 움직임벡터(예를 들어, 몇 개 움직임벡터의 평균값이나 중간값 등)도 포함될 수 있다.
따라서, S600 단계는, 시간축 상에서 이전에 존재하는 픽춰(Picture) 및 이후에 존재하는 픽춰 중 하나 이상의 픽춰에서 현재블록과 동일한 위치에 있는 하나 이상의 제 1 블록; 및 공간축 상으로 현재블록에 인접한 위치에 있는 하나 이상의 제 2 블록 중 하나 이상을 하나 이상의 주변블록으로 검색할 수 있다.
또한 단계 S602는, 하나 이상의 제 1 블록에서의 각각의 움직임벡터; 하나 이상의 제 2 블록에서의 각각의 움직임벡터; 및 제 1 블록에서의 각각의 움직임벡터와 제 2 블록에서의 각각의 움직임벡터 중 하나 이상에 대한 평균값 또는 중간값; 중 하나를 검색된 하나 이상의 주변블록의 움직임벡터로 산출할 수도 있다.
전술한 후보 움직임벡터 집합은 그 정의를 부호화 장치(200)와 복호화 장치(300)가 사전에 알고 있다는 전제 하에 다양한 방법으로 정의될 수 있다. 또한 후보 움직임벡터 집합을 구성하는 원소인 후보 움직임벡터 중 일부 또는 전부가 동일한 값을 갖는 경우, 서로 다른 값을 갖는 후보 움직임벡터들만의 집합으로 구성할 수도 있다.
도 7은 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 예측 움직임벡터 선택 단계(S502)에 대한 흐름도이다.
도 7을 참조하면, 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 예측 움직임벡터 선택 단계(S502)는, 부호화 장치(200) 및 복호화 장치(300) 간에 기정의된 선택함수를 이용하여 선정된 후보 움직임벡터 집합에 포함된 하나 이상의 후보 움직임벡터 각각에 대한 선택함수값을 계산하는 단계(S700); 및 계산된 선택함수값들에 근거하여 하나의 후보 움직임벡터를 최적 예측 움직임벡터로 선택하는 단계(S702) 등을 포함한다.
일 예로서, 전술한 "선택함수값"은, 선정된 후보 움직임벡터 집합에 포함된 하나 이상의 후보 움직임벡터 각각에 대한 현재 움직임벡터와의 차분벡터를 부호화하는데 소요되는 비트량; 선정된 후보 움직임벡터 집합에 포함된 하나 이상의 후보 움직임벡터 각각에 대한 현재 움직임벡터와의 차분벡터의 크기; 및 움직임벡터 예측모드를 부호화하는데 소요되는 비트량; 중 하나 이상 또는 하나 이상을 조합한 것을 포함할 수도 있다.
만약 차분벡터의 비트량을 선택함수값으로 이용하는 경우, 전술한 S702 단계에서는, 일 실시예로서, 선정된 후보 움직임벡터 집합에 포함된 하나 이상의 후보 움직임벡터 각각에 대한 차분벡터를 부호화하는데 소요되는 비트량을 계산하고, 계산된 비트량 중 최소값이 되는 후보 움직임벡터를 최적 예측 움직임벡터로 선택할 수 있다.
또한, 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 예측 움직임벡터 선택 단계(S502)는, 전술한 비트량을 선택함수값에 근거하여 최적 예측 움직임벡터를 선택하는 방식 이외에도, 선정된 후보 움직임벡터 집합에 포함된 하나 이상의 후보 움직임벡터 중의 하나의 움직임벡터를 선택했을 경우 발생하는 부호화에 소요되는 비트량과 이때 발생할 복원화질을 같이 고려하는 율-왜곡 최적화(Rate-Distortion Optimization) 방식을 이용하여서도 최적 예측 움직임벡터를 선택할 수도 있다.
전술한 예측 움직임벡터 선택 단계(S502)에서는, 하기 수학식 4에서의 라그랑제 코스트(Lagrangian Cost) 함수를 최적 예측 움직임벡터를 선택하기 위한 선택함수로 이용할 수 있다.
Figure 112013057500319-pat00004
여기서, J는 라그랑제 코스트, D는 원 영상과 복원 영상 간의 오차, λ는 라그랑제 승수이다. RH은 움직임벡터 예측모드를 부호화하는데 소요되는 비트량이고, RM은 현재 움직임벡터의 차분벡터를 부호화하는데 소요되는 비트량이다. 수학식 4에서의 J, D, RH, RM은 모두 현재블록이 위치하는 픽춰 번호를 표시하는 n과 블록 번호를 표시하는 k에 따라 정의된다. 따라서 본 발명은 픽춰 또는 블록 단위에서 선택적으로 적용될 수 있는 것이다.
또한 최적 예측 움직임벡터 선택하는 과정에서 원 영상과 복원 영상 간의 오차인 D가 변하지 않는 경우 또는 계산상의 편의를 위해, 라그랑제 코스트 J를 산출하는 수학식 4에서 D와 λ를 제거하여 식을 간략화할 수도 있다.
움직임벡터 부호화 방법에 의해 발생하는 라그랑제 코스트를 산정하는 과정에서 수학식 4의 RH는 움직임벡터 예측모드 부호화에 소요되는 비트량이고, RM은 부호화된 현재 움직임벡터에 대한 차분벡터에 소요되는 비트량으로서, 그 계산 방법은 움직임벡터 예측모드에 따라 달라진다. 즉, 움직임벡터 예측모드가 복호화 장치(300)가 (최적) 예측 움직임벡터를 예측 불가능함을 지시하는 경우, RM은 중간값(Median) 계산과 같이 사전에 정의된 디폴트 방법에 의해 생성된 예측 움직임벡터(이를 "디폴트 예측 움직임벡터", 또는 "디폴트 예측값"이라 함)과의 현재 움직임벡터의 차분벡터를 부호화하는데 소요되는 비트량이다. 또한, 움직임벡터 예측모드가, 복호화 장치(300)가 최적 예측 움직임벡터를 예측가능함을 지시하는 경우, RM은 선택된 최적 예측 움직임벡터와 현재 움직임벡터의 차분벡터(차분값)을 부호화하는데 소요되는 비트량이 되는 것이다.
또한, 전술한 예측 움직임벡터 선택 단계(S502)에서는, 상기 수학식 4에서의 라그랑제 코스트(Lagrangian Cost) 함수를 이용하여 최적 예측 움직임벡터를 선택하는 것 이외에도, 좀 더 일반화된 선택함수 식이 포함된 하기 수학식 5를 이용하여 최적 예측 움직임벡터를 선택할 수도 있다. 단, 수학식 5는 부호화할 현재블록의 현재 움직임벡터를 도 1에서의 블록 D의 움직임벡터인 MVD로 가정하여 표현되었다.
Figure 112013057500319-pat00005
상기 수학식 5에서, PMVenc는 선택된 최적 예측 움직임벡터이고, PMVC는 현재 움직임벡터 MVD의 예측 움직임벡터로 선택 가능한 후보 움직임벡터들의 집합인 후보 움직임벡터 집합(CS)에 속하는 하나의 원소(움직임벡터)를 의미한다. "h()"는 현재 움직임벡터 MVD를 그 예측 움직임벡터와 차분하여 부호화하는데 최적인 예측 움직임벡터를 선택하기 위한 선택함수이다.
전술한 선택함수 h()의 일례로 현재 움직임벡터를 차분하여 부호화하는데 소요되는 비트량을 사용하거나, 현재 움직임벡터를 차분하여 부호화하는데 소요되는 비트량과 움직임벡터 예측모드를 부호화하는데 소요되는 비트량의 합을 사용할 수 있다. 또한 계산을 간단히 하기 위해 실제 소요되는 비트량 대신 현재 움직임벡터와 예측 움직임벡터와의 차이인 차분벡터(잔차신호)의 크기를 사용할 수도 있다. 더욱 일반적으로는 선택함수 h()의 정의를 부호화 장치(200)와 복호화 장치(300)가 사전에 미리 알고 있다는 전제하에 다양한 방법으로 정의하여 사용할 수 있다. 이러한 선택함수 h()가 주어지면, 예측 움직임벡터의 후보인 후보 움직임벡터를 포함하는 후보 움직임벡터 집합(CS)으로부터 선택함수 h()를 최적화하는 하나의 후보 움직임벡터(PMVC)를 최적 예측 움직임벡터(PMVenc)로 선택할 수 있다.
도 8은 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 예측 움직임벡터 예측가능 여부 판단 단계(S504)에 대한 흐름도이다.
도 8을 참조하면, 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 예측 움직임벡터 예측가능 여부 판단 단계(S504)는, 부호화 장치(200) 및 복호화 장치(300) 간에 기정의된 판단함수를 이용하여 선정된 후보 움직임벡터 집합에 포함된 하나 이상의 후보 움직임벡터 각각에 대한 판단함수값을 계산하는 단계(S800); 계산된 판단함수값에 근거하여 하나 이상의 후보 움직임벡터 중 하나의 후보 움직임벡터를 현재 움직임벡터에 대한 추정 예측 움직임벡터로 선택하는 단계(S802); 선택된 추정 예측 움직임벡터 및 선택된 최적 예측 움직임벡터를 비교하는 단계(S804); 및 비교 결과에 따라 선택된 최적 예측 움직임벡터가 복호화 장치(300)에서 예측가능한지를 판단하는 단계(S806) 등을 포함한다.
전술한 예측 움직임벡터 예측가능 여부 판단 단계(S504)를 수학식 5에서의 표현을 이용하여 다시 설명하면 다음과 같다.
예측 움직임벡터 예측가능 여부 판단 단계(S504)는, 앞선 예측 움직임벡터 선택 단계(S502)에서 선택된 최적 예측 움직임벡터(PMVenc)를 사용하여 계산된 차분벡터(잔차신호)와, 예측 움직임벡터의 후보가 될 수 있는 유한한 개수의 후보 움직임벡터와, 움직임보상에 사용할 참조픽춰데이터와, 이미 복원된 주변블록의 정보와, 화소값에 대한 움직임보상 잔차신호를 이용하여, 앞선 단계(S502)에서 선택된 최적 예측 움직임벡터가 복호화 장치(300) 또는 복호화 방법에서 예측 가능한지 여부를 판단한다.
이를 위해 먼저 부호화 장치(300)는 부호화 장치(200)가 계산하여 전송할 현재 움직임벡터(MVD)에 대한 차분벡터인 DMVD(=MVD-PMVenc)와 이미 복원된 주변 블록의 정보와 움직임보상에 사용할 참조픽춰데이터를 이용하여, 하기 수학식 6과 같은 소정의 결정 방법을 이용하여 추정 예측 움직임벡터인 PMVdec를 찾는다.
Figure 112013057500319-pat00006
수학식 6에서, 판단함수인 g()는, 부호화 장치(200)가 계산하여 전송할 차분벡터 및 이미 복원된 주변블록의 정보를 이용하여, 복호화 장치(300)가 최적 예측 움직임벡터(PMVenc)를 예측할 수 있는지를 부호화 장치(200)에서 판단하기 위한 함수이다. 또한, 이 판단함수 g()는 복호화 장치(300)에서 예측 움직임벡터를 예측할 때도 사용된다.
판단함수 g()는 그 정의를 부호화 장치(200)와 복호화 장치(300)가 사전에 알고있다는 전제하에 다양한 방법으로 정의될 수 있으며, 이러한 판단함수 g()에 대한 구체적인 실시예를 후술한다.
수학식 6에 의해, 부호화 장치(200)는, 복호화 장치(300)가 찾아낼 (추정) 예측 움직임벡터인 PMVdec를 미리 계산한 후, 복호화 장치(300)가 제공된 차분벡터인 DMVD(=MVD-PMVenc) 및 이미 복원된 주변블록의 정보를 이용하여, 최적 예측 움직임벡터(PMVenc)를 예측하여 올바른 복원된 영상데이터를 얻어낼 수 있는지 여부를 검사한다. 즉, 부호화 장치(200)는 나중에 복호화 장치(300)가 수행할 최적 예측 움직임벡터를 찾아내는 과정을 미리 수행하여 그 결과를 부호화 시에 이용하겠다는 것이다
전술한 S504단계에서의 S804 단계 및 S806 단계에 대한 몇가지 실시예를 아래에서 설명한다.
먼저, 복호화 장치(300)에 의해 최적 예측 움직임벡터(PMVenc)가 예측 가능한지를 판단하기 위한 방법의 일 실시예는 다음과 같다.
S504단계에서의 수학식 6을 통해 계산된 추정 예측 움직임벡터(PMVdec)가 S502단계에서 선택된 최적 예측 움직임벡터(PMVenc)가 같을 경우, 복호화 장치(300)는 부호화 장치(200)가 제공한 차분벡터(DMVD)에 자신이 추정한 예측 움직임벡터인 추정 예측 움직임벡터(PMVdec)를 더하여 정확한 현재 움직임벡터 MVD를 복원하여 올바른 복원된 영상데이터를 얻어낼 수 있다. 따라서, 부호화 장치(200)는 자신이 직접 선택된 최적 예측 움직임벡터(PMVenc)와 복호화 장치(300)가 찾아낼 것으로 추정하는 추정 예측 움직임벡터(PMVdec)가 같은 경우에는, 복호화 장치(300)에서의 최적 예측 움직임벡터(PMVenc)에 대한 예측이 가능하다고 판정하고, 그 이외의 경우는 경우에는 예측이 불가능하다고 판정한다. 또는 실시예에 따라, 부호화 장치(200)는 자신이 직접 선택된 최적 예측 움직임벡터(PMVenc)와 복호화 장치(300)가 찾아낼 것으로 추정하는 추정 예측 움직임벡터(PMVdec)간의 차이가 소정의 경계값보다 작은 경우에는, 복호화 장치(300)에서의 최적 예측 움직임벡터(PMVenc)에 대한 예측이 가능하다고 판정하고, 그 이외의 경우는 경우에는 예측이 불가능하다고 판정할 수도 있다.
복호화 장치(300)에 의해 최적 예측 움직임벡터(PMVenc)가 예측 가능한지를 판단하기 위한 방법의 다른 일 실시예는 다음과 같다.
영상의 압축율이 높을 경우, 영상의 화소값의 변화가 크지 않을 경우, 또는 영상의 움직임벡터의 변화가 그리 크지 않을 경우 등에는 비록 최적 예측 움직임벡터(PMVenc)와 추정 예측 움직임벡터(PMVdec)가 같지 않더라도, 추정 예측 움직임벡터(PMVdec)를 사용하여 복원한 움직임벡터(즉, MV'D = DMVD + PMVdec )를 사용하여 움직임 보상된 영상데이터와, 최적 예측 움직임벡터(PMVenc)를 사용하여 복원한 움직임벡터(즉, MVD = DMVD + PMVenc )를 사용하여 움직임 보상된 영상데이터가 같은 경우가 발생할 수 있는데, 이러한 경우, 최적 예측 움직임벡터(PMVenc)와 추정 예측 움직임벡터(PMVdec)가 같지 않더라도, 복호화 장치(300)가 추정 예측 움직임벡터(PMVdec)를 이용하여 최적 예측 움직임벡터(PMVenc)를 예측가능하다고 판정하고, 그 이외의 경우에는 예측할 수 없다고 판정한다.
복호화 장치(300)에 의해 최적 예측 움직임벡터(PMVenc)가 예측 가능한지를 판단하기 위한 방법의 또 다른 일 실시예는 다음과 같다.
더욱 더 압축율을 높이기 위하여 추정 예측 움직임벡터(PMVdec)를 사용하여 얻어진 복원된 영상데이터와 최적 예측 움직임벡터(PMVenc)를 사용하여 얻어질 복원된 영상데이터가 소정의 경계값 이하로 차이가 날 경우에도(예를 들어, 두 복원된 영상데이터 사이의 SAD(Sum of Absolute Difference)가 소정의 경계값 이하로 차이가 날 경우), 복호화 장치(300)가 추정 예측 움직임벡터(PMVdec)를 이용하여 최적 예측 움직임벡터(PMVenc)를 예측가능하다고 판정하고, 그 이외의 경우에는 복호화 장치(300)가 추정 예측 움직임벡터(PMVdec)를 이용하여 최적 예측 움직임벡터(PMVenc)를 예측할 수 없다고 판정한다.
이상에서 전술한 예측가능 여부 판단의 몇 가지의 실시예를 다시 설명하면, 전술한 S804 단계 및 S806 단계에서는, 선택된 추정 예측 움직임벡터와 선택된 최적 예측 움직임벡터가 동일하거나 소정의 경계값 이하로 차이가 날 경우, 선택된 최적 예측 움직임벡터가 복호화 장치(300)에서 예측가능하다고 판단할 수 있다.
또한, 전술한 S804 단계 및 S806 단계에서는, 선택된 추정 예측 움직임벡터를 이용하여 복원한 영상데이터가 선택된 최적 예측 움직임벡터를 이용하여 복원한 영상데이터와 동일하거나 소정의 경계값 이하로 차이가 날 경우, 선택된 최적 예측 움직임벡터가 복호화 장치(300)에서 예측가능하다고 판단할 수도 있다.
도 8를 참조하면, 부호화 장치(200)와 복호화장치(300) 간에 미리 정의된 판단함수(수학식 6에서의 g())를 이용하여 부호화 장치(200)는 판단함수값을 계산하고(S800), 계산된 판단함수값을 토대로 수학식 6에서처럼 최소값의 판단함수값을 갖는 후보 움직임벡터를 추정 예측 움직임벡터(PMVdec)로 선택(S802)한다. 이후, 추정 예측 움직임벡터(PMVdec)와 최적 예측 움직임벡터(PMVenc)를 비교(S804)하여 최종적으로 예측가능 여부를 판단(S806)하게 된다.
부호화 장치(200)와 복호화장치(300) 간에 미리 정의된 판단함수는 다양한 형태로 실현될 수 있다.
상기 수학식 6의 판단함수 g()로써는, 템플릿매칭(TM: Template Matching)을 이용한 함수, 경계화소정합(BM: Boundary Matching)을 사용한 함수를 사용할 수 있다.
먼저, 템플릿매칭(TM: Template Matching)을 이용한 판단함수를 아래에서 설명한다.
탬플릿매칭화소인덱스집합(TMS: Template Matching Set)는 주어진 지정된 블록의 위치를 기준으로, 선택된 화소들의 상대적 위치를 나타내는 인덱스 집합으로 정의할 수 있으며, 예를 들어, 지정된 블록의 좌측, 좌측상단 및 상단에 인접한 주변의 M개 화소의 위치이다. 필요에 따라 다른 방법도 가능함은 물론이다. 일반적으로 TMS가 지시하는 화소의 수가 많으면 더욱 정확한 매칭이 가능하나 계산량이 많아진다.
템플릿 매칭 방법은, 예측 움직임벡터로 선택 가능한 모든 후보 예측움직임벡터 집합(CS)의 선정 이후, 선정된 후보 예측 움직임벡터 집합 내의 각각의 후보 움직임벡터가 지정하는 참조 블록에 대해 TMS가 가리키는 화소들과 현재 블록에 대해 TMS가 지시하는 화소들의 차이를 하기 수학식 7(수학식 6의 일 실시예)을 이용하여 계산하여 각각의 후보 움직임벡터에 따른 정합 오류를 계산한 후 이중 가장 최소의 정합오류를 가지는 것을 앞에서 언급한 추정 예측 움직임벡터(PMVdec)로 선정한다.
Figure 112013057500319-pat00007
수학식 7에서, f(PMVC+DMV, i)에서 (PMVC+DMV)는 인덱스 i(TMS에 포함됨)가 가리키는 참조픽춰 내의 참조블록 주변의 인덱스 i 가 나타내는 화소 위치를 나타내고, f(PMVC+DMV, i)는 이 위치에서의 화소값을 의미한다. 또한 C(i)는 인덱스 i가 지시하는 현재블록 주변의 화소값을 의미한다.
판단함수의 일 실시예인 g(PMVC|DMV)는 부호화 장치(200)가 제공하는 차분벡터(DMVD)에 후보 움직임벡터 집합(CS) 중의 한 원소인 후보 움직임벡터(PMVC)를 예측 움직임벡터로 사용하여 해당블록의 움직임벡터를 PMVC+DMV로 계산한 후, 이 움직임벡터를 이용하여 해당 블록을 움직임 보상하여 얻어진 복원된 블록이 얼마나 올바른지를 산정한 값을 제공한다. 이를 산정하기 위하여 수학식 7에서는 차이의 제곱합(Sum of Squared Error)을 사용하였다. 그러나 응용에 따라 SAD(sum of Absolute difference)등 다른 방법도 가능하다. 추정 예측 움직임벡터(PMVdec)는 판단함수의 일 실시예인 g(PMVC|DMV)를 최소로 하는 후보 움직임벡터(PMVC)를 의미한다.
즉, 도 8에서 S800 단계는, 선정된 후보 움직임벡터 집합에 포함된 하나 이상의 후보 움직임벡터 각각이 지정하는 참조 블록에 대해 탬플릿 매칭 화소 인덱스 집합(TMS: Template Matching Set)이 지시하는 화소들과 현재블록에 대해 탬플릿 매칭 화소 인덱스가 지시하는 화소들의 화소값 차이를 계산하고, 계산된 화소값 차이에 근거하여, 하나 이상의 후보 움직임벡터 각각에 대한 정합오류를 상기 판단함수값으로 계산함으로써, 기정의된 판단함수를 수행하여 판단함수값을 계산할 수 있다.
다음으로, 경계화소정합(BM: Boundary Matching)을 이용한 판단함수를 아래에서 설명한다.
전술한 일 실시예의 TMS와 유사하게, 경계매칭화소인덱스집합 BMS(Boundary Matching Index Set)는 현재블록 내의 최좌측 및 최상단에 위치한 화소값의 위치를 가리키는 인덱스의 집합으로 정의할 수 있다. 응용에 따라 현재 블록 내의 블록 경계에 위치한 전부 또는 일부의 화소들의 위치로 정의하는 것도 가능함은 물론이다
예측 움직임벡터로 선택 가능한 모든 후보 움직임벡터 집합(CS)을 선정한 이후, 후보 움직임벡터 집합(CS) 중의 어느 후보 움직임벡터(PMVC)가 가장 최적인지를 알기 위해, 움직임보상으로 부호화된 것을 복원한 현재블록이 그 주변블록들과 불록 경계에서 얼마나 부드럽게 연결되는 지를 산정하기 위해 경계화소매칭을 수행하여 이 경계화소매칭 정합오류를 최소화하는 후보 움직임벡터(PMVC)를 후보 움직임벡터 집합(CS) 중에서 하나 정하여 이를 추정 예측 움직임벡터(PMVdec)로 선택한다. 이를 복호화 장치(300)가 선정한 예측 움직임벡터라 한다.
이 과정을 좀 더 자세히 설명하면 다음과 같다. 후보 움직임벡터 집합(CS) 중의 한 원소인 후보 움직임벡터(PMVC)와 부호화 장치(200)가 결정한 차분벡터(DMV)를 사용하여 PMVC+DMV로 계산된 후보 움직임벡터가 지정하는 참조 블록의 값과 부호화 장치(200)가 계산한 차분벡터(잔차신호)를 더하여 현재블록의 화소값을 복원 한 후, 각각의 후보 움직임벡터에 따라 움직임보상 복원된 현재블록 중에서 현재블록 주변의 기복원된 화소들과의 경계정합도가 가장 높은 복원블록을 생성하는 예측 움직임벡터를 결정한다. 이를 위해 수학식 8과 같이 차이값의 제곱합으로 각각의 후보 움직임벡터가 가지는 정합 오류를 계산한다. 물론 SAD(Sum of Absolute Difference)등 다른 방법으로 정합오류를 계산할 수 있음은 자명하다.
Figure 112013057500319-pat00008
수학식 8에서, C(i)는 후보 움직임벡터 집합(CS) 중의 한 원소인 후보 움직임벡터(PMVC)와 부호화 장치(200)가 결정한 DMV를 사용하여 PMVC+DMV로 계산된 후보 움직임벡터가 지정하는 참조 블록의 값과 부호화 장치(200)가 계산한 움직임보상 화소 잔차신호를 더하여 복원된 현재블록의 복원화소 중 경계매칭화소인덱스집합 BMS(Boundary Matching Set)내의 인덱스 i가 지정하는 화소값을 의미한다. 또한 f(i)는 현재블록에 인접하는 주변블록 내의 경계화소중 BMS의 인덱스 i가 지정하는 화소와 바로 인접하는 화소값을 의미한다. 수학식 8을 사용하여 후보 움직임벡터 집합(CS) 내의 각각의 후보 움직임벡터(PMVC)에 대해 경계화소 정합 오류가 수학식 8에 의해 계산되고 그 중 최소의 정합 오류를 발생하는 후보 움직임벡터를 추정 예측 움직임벡터(PMVdec)로 선택한다. 이를 복호화 장치(300)가 선정한 예측 움직임벡터라 한다.
즉, 도 8에서 S800 단계는, 선정된 후보 움직임벡터 집합에 포함된 하나 이상의 후보 움직임벡터 각각에 대하여 부호화 장치에서 결정한 차분벡터와 해당 후보 움직임벡터를 사용하여 계산된 후보 움직임벡터가 지정하는 참조블록의 값과 부호화 장치가 계산한 움직임보상 잔차신호를 더하여 복원된 현재블록의 복원화소 중 경계 매칭 화소 인덱스 집합(BMS:Boundary Matching Set) 내의 인덱스가 지정하는 화소값; 및 현재블록에 인접하는 주변블록 내의 경계화소 중 경계 매칭 화소 인덱스 집합의 인덱스가 지정하는 화소와 인접한 화소값의 차이에 근거하여, 하나 이상의 후보 움직임벡터 각각에 대한 정합오류를 판단함수값으로 계산함으로써, 기정의된 판단함수를 수행하여 판단함수값을 계산할 수도 있다.
도 8을 참조하여, S504 단계를 정리하면, S800 및 S802단계에서, 부호화 장치(200)는 템플릿매칭 또는 경계화소매칭 등의 정해진 결정방법에 따라 결정된 최소 정합오류를 갖는 추정 예측 움직임벡터(PMVdec)를 선택한다.
S804 단계에서는, 선택된 추정 예측 움직임벡터(PMVdec)와 S502 단계에서 선택한 최적 예측 움직임벡터(PMVenc)가 동일한지 여부를 비교한다.
S806 단계에서는, 전술한 판단 방식에 따라, 추정 예측 움직임벡터(PMVdec)와 최적 예측 움직임벡터(PMVenc)가 동일하다면 복호화 장치(300)가 현재블록의 현재 움직임벡터의 최적 예측 움직임벡터를 예측할 수 있는 것으로 판단하고, 그렇지 않은 경우에는 예측할 수 없다고 판단한다. 또한 전술한 것처럼, 추정 예측 움직임벡터(PMVdec)와 최적 예측 움직임벡터(PMVenc)가 동일하지 않더라도 각각을 이용하여 복원된 복원 영상이 동일하거나, 그 차이가 소정의 경계치보다 작은 경우는 이 두개의 추정 예측 움직임벡터(PMVdec)와 최적 예측 움직임벡터(PMVenc)가 같다고 간주하여 복호화 장치(300)가 현재블록의 현재 움직임벡터의 최적 예측 움직임벡터를 예측할 수 있는 것으로 판단할 수도 있다.
도 9은 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 제 1 부호화 단계(S506)에 대한 흐름도이다.
도 9을 참조하면, 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 제 1 부호화 단계(S506)는, 예측가능을 지시하는 움직임벡터 예측모드를 결정하는 단계(S900); 선택된 최적 예측 움직임벡터를 현재 움직임벡터에 대한 예측 움직임벡터로 결정하는 단계(S902); 현재 움직임벡터와 선택된 최적 예측 움직임벡터의 차분벡터를 계산하는 단계(S904); 및 계산된 차분벡터 및 예측가능을 지시하는 움직임벡터 예측모드를 부호화함으로써 현재 움직임벡터를 부호화하는 단계(S906) 등을 포함한다.
도 10는 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 제 2 부호화 단계(S508)에 대한 흐름도이다.
도 10를 참조하면, 본 발명의 일실시예에 따른 움직임벡터 부호화 방법에서의 제 2 부호화 단계(S508)는, 예측 불가능을 지시하는 움직임벡터 예측모드를 결정하는 단계(S1000); 기설정된 디폴트 예측 움직임벡터를 현재 움직임벡터에 대한 예측 움직임벡터로 결정하는 단계(S1002); 현재 움직임벡터와 기설정된 디폴트 예측 움직임벡터의 차분벡터를 계산하는 단계(S1004); 및 계산된 차분벡터 및 예측 불가능을 지시하는 움직임벡터 예측모드를 부호화함으로써 현재 움직임벡터를 부호화하는 단계(S1006) 등을 포함한다.
S1002 단계에서의 기설정된 디폴트 예측 움직임벡터는, 현재블록에 인접하는 하나 이상의 주변블록의 움직임벡터의 중간값(Median)이고, 부호화 장치(200) 및 복호화 장치(300) 간에 기설정된다.
도 11은 본 발명의 일실시예에 따른 움직임벡터 복호화 방법에 대한 전체 흐름도이다.
도 11을 참조하면, 본 발명의 일실시예에 따른 움직임벡터 복호화 방법은, 현재 움직임벡터와 예측 움직임벡터 간의 차분벡터 및 현재 움직임 벡터의 움직임벡터 예측모드 정보를 복호화하는 단계(S1100); 움직임벡터 예측모드 정보에 근거하여 현재 움직임 벡터의 예측 움직임벡터를 선택하는 단계(S1102); 및 선택된 예측 움직임벡터를 이용하여 현재 움직임벡터를 복원하는 단계(S1104) 등을 포함한다.
전술한 S1102 단계는, 움직임벡터 예측모드 정보에 의해 지시되는 움직임벡터 예측모드가 디폴트 예측모드인 경우에는, 기설정된 디폴트 예측 움직임벡터를 선택한다.
전술한 S1102 단계는, 움직임벡터 예측모드 정보에 의해 지시되는 움직임벡터 예측모드가 넌-디폴트 예측 모드인 경우에는, 소정의 방법을 이용하여 복수의 후보 움직임벡터 중에서 하나의 후보 움직임벡터를 현재 움직임벡터의 예측 움직임벡터로 선택한다.
위에서 언급한 소정의 방법은, 탬플릿 매칭 및 경계화소매칭 중 하나에 기초한 방법일 수 있다.
도 11을 참조하여 전술한 본 발명의 일실시예에 따른 움직임벡터 복호화 방법을 도 12 내지 도 13을 참조하여 더욱 상세하게 설명한다.
도 12는 본 발명의 일실시예에 따른 움직임벡터 복호화 방법에 대한 전체 흐름도이다.
도 12을 참조하면, 본 발명의 일실시예에 따른 복호화 장치(300)에 의해 제공되는 움직임벡터 복호화 방법은, 부호화 장치(200)에 의해 부호화된 움직임벡터 예측모드와 부호화된 차분벡터를 복호화하는 단계(S1200); 복호화된 움직임벡터 예측모드가 예측가능을 지시하는지 예측 불가능을 지시하는지를 판단하는 단계(S1202); 복호화된 움직임벡터 예측모드가 예측가능을 지시하면, 현재블록의 현재 움직임벡터를 복원하기 위한 예측 움직임벡터로 선택가능한 후보 움직임벡터 집합을 선정하고, 선정된 후보 움직임벡터 집합에서 최적 예측 움직임벡터를 선택하며, 선택된 최적 예측 움직임 벡터를 현재 움직임벡터에 대한 예측 움직임벡터로 결정하는 단계(S1204); 복호화된 움직임벡터 예측모드가 예측 불가능을 지시하면, 기설정된 디폴트 예측 움직임벡터를 상기 현재 움직임벡터에 대한 예측 움직임벡터로 결정하는 단계(S1206); 및 S1204 단계 또는 S1206 단계에서 결정된 예측 움직임벡터와 복호화된 차분벡터를 더하여 상기 현재블록의 현재 움직임벡터를 복원하는 단계(S1208) 등을 포함한다.
S1200 단계에서의 부호화된 차분벡터는, 현재 움직임벡터와 기설정된 디폴트 예측 움직임벡터의 차분벡터이거나, 현재 움직임벡터와 최적 예측 움직임벡터의 차분벡터일 수 있다.
도 13은 본 발명의 일실시예에 따른 움직임벡터 복호화 방법에서의 제 1 예측 움직임벡터 결정 단계(S1204)에 대한 흐름도이다.
도 13을 참조하면, 본 발명의 일실시예에 따른 움직임벡터 복호화 방법에서의 제 1 예측 움직임벡터 선택 단계(S1204)는, 현재블록의 현재 움직임벡터를 복원하기 위한 예측 움직임벡터로 선택가능한 후보 움직임벡터 집합을 선정하는 단계(S1300); 부호화 장치와 복호화 장치에서 공통적으로 정의된 판단함수를 이용하여, 선정된 후보 움직임벡터 집합에 포함된 하나 이상의 후보 움직임벡터 각각에 대하여 판단함수값을 계산하는 단계(S1302); 및 계산된 판단함수값 중에서 최소값을 갖는 후보 움직임벡터를 최적 예측 움직임벡터로 선택하고, 선택된 최적 예측 움직임 벡터를 현재 움직임벡터에 대한 예측 움직임벡터로 선택하는 단계(S1304) 등을 포함한다.
S1304 단계에서, 복호화 장치(300)가 현재 움직임벡터에 대한 예측 움직임벡터로서 결정한 최적 예측 움직임벡터는, 부호화 장치(200)에서 복호화 장치(300)가 찾을 것으로 추정한 추정 예측 움직임벡터(PMVdec)와 동일하거나 소정 경계값의 차이를 보일 수 있다.
S1302 단계는, 선정된 후보 움직임벡터 집합에 포함된 하나 이상의 후보 움직임벡터 각각이 지정하는 참조 블록에 대해 탬플릿 매칭 화소 인덱스 집합(TMS: Template Matching Set)이 지시하는 화소들과 현재블록에 대해 상기 탬플릿 매칭 화소 인덱스가 지시하는 화소들의 화소값 차이를 계산하고, 계산된 화소값 차이에 근거하여, 하나 이상의 후보 움직임벡터 각각에 대한 정합오류를 판단함수값으로 계산함으로써, 판단함수를 수행하여 판단함수값을 계산한다.
또한 S1302 단계는, 선정된 후보 움직임벡터 집합에 포함된 하나 이상의 후보 움직임벡터 각각에 대하여 부호화 장치에서 결정한 차분벡터와 해당 후보 움직임벡터를 사용하여 계산된 후보 움직임벡터가 지정하는 참조블록의 값과 상기 부호화 장치가 계산한 움직임보상 잔차신호를 더하여 복원된 현재블록의 복원화소 중 경계 매칭 화소 인덱스 집합(BMS:Boundary Matching Set) 내의 인덱스가 지정하는 화소값; 및 현재블록에 인접하는 주변블록 내의 경계화소 중 경계 매칭 화소 인덱스 집합의 인덱스가 지정하는 화소와 인접한 화소값의 차이에 근거하여, 하나 이상의 후보 움직임벡터 각각에 대한 정합오류를 판단함수값으로 계산함으로써, 판단함수를 수행하여 판단함수값을 계산한다.
도 4 내지 도 12에 도시된 흐름도에서의 각 단계 순서는 본 발명의 본질적인 특성을 설명하기 위한 일 실시예로서의 순서에 불구하며, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 각 단계의 순서는 변경하여 구현할 수도 있을 것이다.
전술한 본 발명의 일 실시예에 따르면, 움직임벡터 예측모드는 디폴트 예측 모드와 넌-디폴트(non-default) 예측 모드를 포함한다. 디폴트 예측 모드의 일 예로서 최적 예측 움직임벡터의 예측 불가능을 나타내는 움직임벡터 예측모드가 설명되었고 넌-디폴트 예측 모드의 일 예로서 최적 예측 움직임벡터의 예측 가능을 나타내는 움직임벡터 예측모드가 설명되었다.
여기서 최적 예측 움직임벡터라 함은 전술한 실시예에서 설명한 바와 같은 미리 정해진 기준 또는 방법에 따라 유한한 개수의 예측 움직임벡터 후보들 중에서 선택된 예측 움직임벡터를 의미하는 것이다.
본 발명의 다른 측면에 따르면 넌-디폴트 예측 모드는 디폴트 예측 움직임벡터가 아닌 다른 예측 움직임벡터를 미리 정해진 소정 방법에 따라 선택한 후 현재 움직임벡터의 부호화 및/또는 복호화에 이용하는 모드로 이해될 수 있다. 이 경우, 전술한 바와 같은 복수의 예측 움직임 벡터 후보들 중에서 소정 방법에 의해 예측 움직임벡터가 선택될 수 있다.전술한 본 발명의 일 실시예에 따른 움직임벡터 부호화 및 복호화 방법에 따르면, 움직임벡터 예측 모드를 선택할 수 있도록 함으로써 현재 움직임벡터의 값에 보다 가까운 움직임벡터를 예측 움직임벡터로 선택하여 차분벡터의 부호화 비트량을 최소화함으로써, 부호화 효율을 향상시키는 효과가 있다.
또한, 본 발명의 일 실시예에 따른 움직임벡터 부호화 및 복호화 방법에 따르면, 더욱 정확한 예측 움직임벡터를 선택하여 부호화 효율을 향상시키면서도, 부호화 장치는 선택된 예측 움직임벡터를 직접 복호화 장치로 알리지 않고, 찾을 수 있도록 정보, 예컨대 움직임벡터 예측모드정보를 주거나 찾기 위한 함수를 공유함으로써, 예측 움직임벡터를 알리기 위해 발생하는 추가적인 정보에 대한 부호화 비트량 증가를 줄여줌으로써, 부호화 효율 및 복호화 효율을 더욱더 향상시키는 효과가 있다.
또한, 본 발명의 움직임벡터 부호화 및 복호화 기술을 영상 서비스 또는 멀티미디어 스트리밍 서비스에 적용하면, 본 발명에 따른 부호화 기술은 적은 비트량으로 부호화를 가능하게 함으로써, 사용자에게 만족도 높은 서비스를 제공해줄 수 있다. 특히, 유선 환경에 비해 상대적으로 작은 대역폭, 큰 데이터 손실 및 지연 등을 가질 수 있는 무선 이동 환경에서는 더욱더 큰 효과를 기대할 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
이상 설명한 바와 같이, 본 발명은 움직임벡터 부호화 및 복호화 기술에 적용되어, 현재 움직임벡터와 차이를 최소화하는 움직임벡터를 예측 움직임벡터로 선택하고, 선택된 예측 움직임벡터를 직접 복호화 장치로 알리지 않고, 찾을 수 있도록 정보를 주거나 찾기 위한 소정의 함수를 공유함으로써, 부호화 비트량 줄여주어 부호화 효율 및 복호화 효율을 향상시키는 효과가 있는 매우 유용한 발명이다.
200: 움직임벡터 부호화 장치
210: 예측 움직임벡터 선택부
220: 움직임벡터 예측모드 결정부
230: 제 1 부호화부
240: 제 2 부호화부
300: 움직임벡터 복호화 장치
310: 움직임벡터 예측모드/차분벡터 복호화부
320: 움직임벡터 예측모드 판단부
330: 제 1 예측 움직임벡터 결정부
340: 제 2 예측 움직임벡터 결정부
350: 현재 움직임벡터 복원부

Claims (9)

  1. 움직임벡터 복호화 장치에 있어서,
    비트스트림으로부터, 현재블록의 현재 움직임벡터를 결정하기 위한 복수의 모드 중 하나의 모드를 선택하기 위해 사용되는 모드 정보를 복호화하는 복호화부;
    상기 복호화된 모드 정보가 복수의 후보 움직임벡터 중에서 현재 움직임벡터의 예측 움직임벡터를 선택하는 제 1 모드를 지시하는지 여부를 판단하는 움직임벡터 예측모드 판단부;
    상기 복호화된 모드 정보가 상기 제 1 모드를 지시하면, 상기 현재 움직임벡터를 복원하기 위한 예측 움직임벡터로 선택가능한 후보 움직임벡터 집합을 선정하고, 상기 선정된 후보 움직임벡터 집합에서 예측 움직임벡터를 선택하며, 상기 선택된 예측 움직임벡터를 상기 현재 움직임벡터에 대한 예측 움직임벡터로 결정하는 예측 움직임벡터 결정부; 및
    상기 예측 움직임벡터 결정부에서 결정된 예측 움직임벡터와 상기 비트스트림을 복호화하여 획득한 차분벡터를 더하여 상기 현재 움직임벡터를 복원하는 현재 움직임벡터 복원부를 포함하되,
    상기 예측 움직임벡터 결정부는,
    상기 후보 움직임벡터 집합의 원소 중 두 개의 원소가 서로 동일한 값을 갖는지 여부에 근거하여, 상기 두 개의 원소 중에서 하나를 제외하는 것을 특징으로 하는 움직임벡터 복호화 장치.
  2. 제1항에 있어서, 상기 예측 움직임벡터 결정부는,
    상기 현재 블록의 복수의 주변 블록들의 움직임벡터들에 근거하여 상기 후보 움직임벡터 집합을 선정하는 것을 특징으로 하는 움직임벡터 복호화 장치.
  3. 제2항에 있어서,
    상기 복수의 주변 블록들은 상기 현재 블록이 포함된 제1픽처에 위치하는 제1블록들 또는 상기 현재 블록이 포함된 상기 제1픽처와는 다른 제2픽처에 위치하는 제2블록들 또는 상기 제1블록들과 상기 제2블록들을 포함하는 블록들 중에서 선택되는 것을 특징으로 하는 움직임벡터 복호화 장치.
  4. 제3항에 있어서,
    상기 제1픽처 내에서 상기 제1블록들의 위치는 상기 현재 블록의 좌측, 상단, 좌측상단 및 우측상단을 포함하는 것을 특징으로 하는 움직임벡터 복호화 장치.
  5. 제3항에 있어서,
    상기 제2픽처 내에서 상기 제2블록들의 위치는 상기 제1픽처 내에서 상기 현재 블록의 위치에 근거하여 결정되는 것을 특징으로 하는 움직임벡터 복호화 장치.
  6. 제1항에 있어서,
    상기 예측 움직임벡터 결정부는 상기 비트스트림에 포함된 정보에 근거하여 상기 후보 움직임벡터 집합에서 상기 예측 움직임벡터를 선택하는 것을 특징으로 하는 움직임벡터 복호화 장치.
  7. 제1항에 있어서,
    상기 복호화된 모드 정보가 상기 현재 움직임벡터를 복원하기 위해 기설정된 움직임벡터를 이용하는 제2모드를 지시하면, 상기 현재 움직임벡터 복원부는 상기 기설정된 움직임벡터를 이용하여 상기 현재 움직임벡터를 복원하는 것을 특징으로 하는 움직임벡터 복호화 장치.
  8. 삭제
  9. 삭제
KR1020130074076A 2013-06-26 2013-06-26 움직임벡터 부호화/복호화 방법 및 그 장치 KR101544390B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130074076A KR101544390B1 (ko) 2013-06-26 2013-06-26 움직임벡터 부호화/복호화 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130074076A KR101544390B1 (ko) 2013-06-26 2013-06-26 움직임벡터 부호화/복호화 방법 및 그 장치

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020080060838A Division KR101364195B1 (ko) 2008-06-26 2008-06-26 움직임벡터 부호화/복호화 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20130088096A KR20130088096A (ko) 2013-08-07
KR101544390B1 true KR101544390B1 (ko) 2015-08-17

Family

ID=49214555

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130074076A KR101544390B1 (ko) 2013-06-26 2013-06-26 움직임벡터 부호화/복호화 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR101544390B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102345475B1 (ko) * 2016-01-05 2022-01-03 한국전자통신연구원 잔차 신호에 대한 예측 방법 및 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050053136A1 (en) 2003-09-09 2005-03-10 Keman Yu Low complexity real-time video coding
US20060285596A1 (en) 2004-03-01 2006-12-21 Sony Corporation Motion-vector detecting device, motion-vector detecting method, and computer program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050053136A1 (en) 2003-09-09 2005-03-10 Keman Yu Low complexity real-time video coding
US20060285596A1 (en) 2004-03-01 2006-12-21 Sony Corporation Motion-vector detecting device, motion-vector detecting method, and computer program

Also Published As

Publication number Publication date
KR20130088096A (ko) 2013-08-07

Similar Documents

Publication Publication Date Title
KR101364195B1 (ko) 움직임벡터 부호화/복호화 방법 및 그 장치
CN110581994B (zh) 部分成本计算
KR101590511B1 (ko) 움직임 벡터 부호화/복호화 장치 및 방법과 그를 이용한 영상 부호화/복호화 장치 및 방법
CN108235032B (zh) 动图像解码装置以及动图像解码方法
US9369731B2 (en) Method and apparatus for estimating motion vector using plurality of motion vector predictors, encoder, decoder, and decoding method
TWI653878B (zh) 動態影像解碼裝置、動態影像解碼方法及記錄有動態影像解碼程式的記錄媒體
US8204127B2 (en) Method and apparatus for encoding and decoding image by using multiple reference-based motion prediction
JP2009509454A (ja) 視差ベクトルの予測方法、その方法を利用して多視点動画を符号化及び復号化する方法及び装置
TW201642662A (zh) 動態影像解碼裝置、動態影像解碼方法及動態影像解碼程式
KR20120025111A (ko) 참조 화소들의 특성을 이용하여 예측모드 정보의 전송을 생략할 수 있는 화면 내 예측 부호화/복호화 장치 및 그 방법
JP5725106B2 (ja) 動画像復号装置、動画像復号方法及び動画像復号プログラム、並びに、受信装置、受信方法、及び受信プログラム
JP5880758B2 (ja) 動画像復号装置、動画像復号方法、及び動画像復号プログラム、並びに、受信装置、受信方法、及び受信プログラム
KR101567964B1 (ko) 움직임벡터 부호화/복호화 방법 및 그 장치
KR101544390B1 (ko) 움직임벡터 부호화/복호화 방법 및 그 장치
KR101567963B1 (ko) 움직임벡터 부호화/복호화 방법 및 그 장치
EP2605518B1 (en) Encoding device, decoding device, encoding method, and decoding method
KR101567990B1 (ko) 움직임벡터 부호화/복호화 방법 및 그 장치
JP5846133B2 (ja) 動画像復号装置、動画像復号方法、及び動画像復号プログラム、並びに、受信装置、受信方法、及び受信プログラム
KR101582495B1 (ko) 움직임 벡터 부호화/복호화 장치 및 방법과 그를 이용한 영상 부호화/복호화 장치 및 방법
KR101582493B1 (ko) 움직임 벡터 부호화/복호화 장치 및 방법과 그를 이용한 영상 부호화/복호화 장치 및 방법
KR101422058B1 (ko) 움직임 벡터 부호화/복호화 장치 및 방법과 그를 이용한 영상 부호화/복호화 장치 및 방법
KR101575635B1 (ko) 복수 개의 참조 픽처의 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 장치 및 방법
KR101575605B1 (ko) 복수 개의 참조 픽처의 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 장치 및 방법
KR101575616B1 (ko) 복수 개의 참조 픽처의 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 장치 및 방법
KR101575645B1 (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