KR101796876B1 - 움직임 추정을 이용한 영상 부호화 방법 및 장치 - Google Patents

움직임 추정을 이용한 영상 부호화 방법 및 장치 Download PDF

Info

Publication number
KR101796876B1
KR101796876B1 KR1020160133059A KR20160133059A KR101796876B1 KR 101796876 B1 KR101796876 B1 KR 101796876B1 KR 1020160133059 A KR1020160133059 A KR 1020160133059A KR 20160133059 A KR20160133059 A KR 20160133059A KR 101796876 B1 KR101796876 B1 KR 101796876B1
Authority
KR
South Korea
Prior art keywords
motion vector
block
bit value
value
bit
Prior art date
Application number
KR1020160133059A
Other languages
English (en)
Other versions
KR20170044599A (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 한양대학교 산학협력단
Publication of KR20170044599A publication Critical patent/KR20170044599A/ko
Application granted granted Critical
Publication of KR101796876B1 publication Critical patent/KR101796876B1/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
    • 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
    • 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
    • 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/527Global motion vector estimation

Landscapes

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

Abstract

움직임 추정을 이용한 영상 부호화 방법이 개시된다. 영상 부호화 방법은, 부호화할 현재 블록에 대하여 움직임 추정을 수행할 시작 위치를 결정하는 단계, 결정된 시작 위치를 기초로 참조 픽쳐 내에서 움직임 탐색을 수행하여 적어도 하나의 참조 블록을 선정하는 단계, 상기 적어도 하나의 참조 블록에 대한 움직임 벡터를 도출하는 단계, 상기 현재 블록보다 먼저 부호화된 블록의 부호화 정보를 참조하여, 상기 움직임 벡터에 대한 부호화 비트를 예측하는 단계 및 상기 적어도 하나의 참조 블록에서 예측된 부호화 비트를 포함한 부호화 비용을 최소화하는, 최적의 참조 블록을 선정하는 단계를 포함한다. 따라서, 부호화 효율을 향상시킬 수 있다.

Description

움직임 추정을 이용한 영상 부호화 방법 및 장치{A METHOD FOR VIDEO ENCODING USING MOTION ESTIMATION AND AN APPARATUS THEREOF}
본 발명은 움직임 추정을 이용한 영상 부호화 방법 및 장치에 관한 것으로, 더욱 상세하게는 부호화된 블록의 부호화 정보를 이용하여 움직임 벡터의 비용을 더 정확하게 결정함으로써, 움직임 추정을 이용한 영상 부호화를 수행하는 방법 및 장치에 관한 것이다.
최근 표준화가 완료된 MPEG-H HEVC(High Efficiency Video Coding)에서나 표준화가 진행 중인 IVC(Internet Video Coding, ISO/IEC 14496-33)에서는 압축률을 높이기 위하여 부호화 장치에서 화면 간 예측을 통해 부호화를 진행한다.
화면 간 예측은 이전 시간에 코딩된 픽쳐로부터 예측 블록을 생성하는 기술로서, 현재 픽쳐의 부호화하려는 불록이 이미 코딩된 주변 블록과 상관성이 높지 않은 경우, 이전에 코딩된 픽쳐 중에서 현재 코딩하려는 블록과 높은 상관성을 갖는 블록이 존재하는 점때문에 압축률 향상을 위하여 적용되었다.
화면 간 예측의 과정은 현재 코딩하려는 블록과 가장 유사한 예측 블록을 참조 픽쳐들로부터 찾은 후 이 예측 블록에 대한 정보를 디코더(복호화 장치)로 전송하게 되는데, 참조 픽쳐들로부터 최적의 예측 블록을 찾는 과정을 움직임 추정(Motion estimation)이라 부른다.
여기서, 최적의 예측 블록을 찾기 위하여 참조 픽쳐들에 있는 예측 블록 후보들에 대한 평가를 수행해야 하는데 이때의 평가 방법은 부호화시에 소요될 비트량 및 화면의 왜곡 정도를 고려한 총 비용이 최소화되는지 여부를 판단하는 것이다. 이때의 총 비용이 최소화되는 예측 블록 후보를 최적의 예측 블록으로 찾을 수 있다.
한편, 화면 간 예측에 따른 움직임 정보는 움직임 벡터로 표현될 수 있으며, 더 구체적으로는, 움직임 벡터에 소요되는 비트 비용을 절감하여 압축률을 더 상승시키기 위하여 주변 블록의 움직임 벡터로부터 현재 블록의 움직임 벡터를 예측한 예측 움직임 벡터를 도출하고 현재 블록의 움직임 벡터와 예측 움직임 벡터의 차분값(Motion vector difference)으로 표현할 수 있다. 게다가, 참조 픽쳐 리스트의 어느 참조 픽쳐에 예측 블록이 위치하는지를 지시하기 위하여 참조 픽쳐 인덱스로 표현할 수 있다. 이처럼, 움직임 벡터의 차분값 또는 참조 픽쳐 인덱스로 표현될 수 있는 움직임 벡터의 비트 비용을 정확하게 예측하여야 앞에서 설명한 소요될 비트량을 정확하게 파악할 수 있어 높은 부호화 효율을 가질 수 있다.
그러나, 기존의 HEVC와 IVC를 비롯한 대부분의 부호화 장치에서는 이러한 움직임 벡터의 비용을 계산함에 있어서 단순히 움직임 벡터의 거리 값에 대하여 제곱을 계산한 값만을 움직임 벡터의 비트 비용으로 계산한다. 이러한 이유로 움직임 예측을 수행하여도 짧은 거리의 적은 비트가 제대로 계산되지 않거나, 먼 거리의 많은 비트 비용이 경시되기도 하여 압축률 향상의 걸림돌이 된다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 움직임 추정(Motion Estimation)을 이용한 영상 부호화 방법을 제공하는데 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 다른 목적은, 움직임 추정(Motion Estimation)을 이용한 영상 부호화 장치를 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 일 측면에 따른 영상 부호화 방법은, 부호화할 현재 블록에 대하여 움직임 추정을 수행할 시작 위치를 결정하는 단계, 결정된 시작 위치를 기초로 참조 픽쳐 내에서 움직임 탐색을 수행하여 적어도 하나의 참조 블록을 선정하는 단계, 적어도 하나의 참조 블록에 대한 움직임 벡터를 도출하는 단계, 현재 블록보다 먼저 부호화된 블록의 부호화 정보를 참조하여, 움직임 벡터에 대한 부호화 비트를 예측하는 단계 및 적어도 하나의 참조 블록에서 예측된 부호화 비트를 포함한 부호화 비용을 최소화하는, 최적의 참조 블록을 선정하는 단계를 포함한다.
여기서, 움직임 벡터를 도출하는 단계 이후에, 움직임 벡터를 움직임 벡터 차분값(moving vector difference, MVD) 또는 참조 프레임 인덱스(reference frame index)로 표현하는 단계를 더 포함할 수 있다.
여기서, 먼저 부호화된 블록의 부호화 정보는, 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값를 포함할 수 있다.
여기서, 먼저 부호화된 블록의 부호화 정보는, 먼저 부호화된 블록의 참조 프레임 인덱스가 부호화된 제2 비트값을 포함할 수 있다.
여기서, 먼저 부호화된 블록의 부호화 정보는, 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값 및 참조 프레임 인덱스가 부호화된 제2 비트값을 포함할 수 있다.
여기서, 움직임 벡터에 대한 부호화 비트를 예측하는 단계는, 움직임 벡터 차분값에 따라 미리 결정된 제1 초기비트값을 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하는 단계를 포함하고, 제1 초기비트값은, 제1 비트값에 의해 갱신 또는 대체될 수 있다.
여기서, 움직임 벡터에 대한 부호화 비트를 예측하는 단계는, 움직임 벡터 차분값 및 참조 프레임 인덱스에 따라 각각 미리 결정된 제1 초기비트값 및 제2 초기비트값을 더하여 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하는 단계를 포함하고, 제2 초기비트값은 제2 비트값에 의하여 갱신 또는 대체될 수 있다.
여기서, 움직임 벡터에 대한 부호화 비트를 예측하는 단계는, 움직임 벡터 차분값 및 참조 프레임 인덱스에 따라 각각 미리 결정된 제1 초기비트값 및 제2 초기비트값을 더하여 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하는 단계를 포함하고, 제1 초기비트값 및 제2 초기비트값은 각각 제1 비트값 및 제2 비트값에 의하여 갱신 또는 대체될 수 있다.
여기서, 영상 부호화 방법은, 최적의 참조 블록을 이용하여 현재 블록을 부호화하는 단계를 더 포함할 수 있다.
여기서, 영상 부호화 방법은, 부호화된 현재 블록의 참조 프레임 인덱스에 대한 비트값 또는 움직임 벡터 차분에 대한 비트값을 저장하는 단계를 더 포함할 수 있다.
상기 다른 목적을 달성하기 위한 본 발명의 다른 측면에 따른 영상 부호화 장치는, 적어도 하나의 명령어를 수행하는 프로세서(processor) 및 적어도 하나의 명령어를 저장하는 메모리(memory)를 포함한다.
여기서, 프로세서는, 부호화할 현재 블록에 대하여 움직임 추정을 수행할 시작 위치를 결정하고, 결정된 시작 위치를 기초로 참조 픽쳐 내에서 움직임 탐색을 수행하여 적어도 하나의 참조 블록을 선정하고, 적어도 하나의 참조 블록에 대한 움직임 벡터를 도출하고, 현재 블록보다 먼저 부호화된 블록의 부호화 정보를 참조하여, 움직임 벡터에 대한 부호화 비트를 예측하고, 적어도 하나의 참조 블록에서 예측된 부호화 비트를 포함한 총 비용을 최소화하는, 최적의 참조 블록을 선정하고, 최적의 참조 블록을 이용하여 현재 블록을 부호화할 수 있다.
여기서, 프로세서는, 움직임 벡터를 움직임 벡터 차분값(moving vector difference, MVD) 또는 참조 프레임 인덱스(reference frame index)로 표현할 수 있다.
여기서, 먼저 부호화된 블록의 부호화 정보는, 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값를 포함할 수 있다.
여기서, 먼저 부호화된 블록의 부호화 정보는, 먼저 부호화된 블록의 참조 프레임 인덱스가 부호화된 제2 비트값을 포함할 수 있다.
여기서, 먼저 부호화된 블록의 부호화 정보는, 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값 및 먼저 부호화된 블록의 참조 프레임 인덱스가 부호화된 제2 비트값을 포함할 수 있다.
여기서, 프로세서는, 움직임 벡터 차분값에 따라 미리 결정된 제1 초기비트값을 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하고, 제1 초기비트값은, 제1 비트값에 의해 갱신 또는 대체될 수 있다.
여기서, 프로세서는, 움직임 벡터 차분값 및 참조 프레임 인덱스에 따라 각각 미리 결정된 제1 초기비트값 및 제2 초기비트값을 더하여 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하고, 제2 초기비트값은 제2 비트값에 의하여 갱신 또는 대체될 수 있다.
여기서, 프로세서는, 움직임 벡터 차분값 및 참조 프레임 인덱스에 따라 각각 미리 결정된 제1 초기비트값 및 제2 초기비트값을 더하여 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하고, 제1 초기비트값 및 제2 초기비트값은 각각 제1 비트값 및 제2 비트값에 의하여 갱신 또는 대체될 수 있다.
여기서, 프로세서는, 최적의 참조 블록을 이용하여 현재 블록을 부호화할 수 있다.
여기서, 프로세서는, 부호화된 현재 블록의 참조 프레임 인덱스에 대한 비트값 또는 움직임 벡터 차분에 대한 비트값을 저장할 수 있다.
상기와 같은 본 발명에 따른 움직임 추정을 이용한 영상 부호화 방법 및 장치를 이용할 경우에는 부호화 효율이 향상될 수 있다.
따라서, 기존보다 더 높은 수준의 영상 압축률을 실현할 수 있어 단순히 비트스트림의 비트량이 줄어드는 것뿐 아니라 전력 소모가 절감될 수 있는 장점이 있다.
도 1은 본 발명의 실시예에 따른 영상 부호화 및 복호화 시스템에 대한 개념도이다.
도 2는 본 발명의 일 실시예에 따른 영상 부호화 장치에 대한 블록도이다.
도 3은 본 발명의 일 실시예에 따른, 영상 복호화 장치에 대한 구성도이다.
도 4는 본 발명의 일 실시예에 따른 움직임 추정(Motion Estimation)을 이용한 영상 부호화 방법에 대한 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 움직임 벡터 차분값에 따라 제1 초기비트값이 결정되는 것을 설명하는 예시도이다.
도 6은 본 발명의 일 실시예에 따른 제1 초기비트값이 갱신되는 과정을 설명하는 제1 예시도이다.
도 7은 본 발명의 일 실시예에 따른 제1 초기비트값이 갱신되는 과정을 설명하는 제2 예시도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
통상적으로 동영상은 일련의 픽쳐(Picture)로 구성될 수 있으며, 픽쳐(picture)라는 용어는 영상(image) 또는 프레임(frame)과 동등한 의미를 갖는 다른 용어로 대치되어 사용될 수 있다.
또한, 각 픽쳐(또는 프레임)는 소정의 영역으로 분할될 수 있다. 여기서, 분할된 영역은 블록(Block) 또는 매크로 블록(Macro Block)으로 지칭될 수 있으나, 부호화 트리 유닛(Coding Tree Unit, CTU), 부호화 유닛(Coding Unit, CU), 예측 유닛(Prediction Unit, PU), 변환 유닛(Transform Unit, TU)과 같이 다양한 크기 또는 용어로 지칭될 수 있다. 따라서, 본 명세서 전체에 걸쳐 사용된 블록(Block)의 의미는 상기의 용어를 모두 포함할 수 있는 것으로 이해되어야 한다.
여기서, 부호화 유닛은 화면 내 예측 또는 화면 간 예측을 수행하는 기본 단위를 의미할 수 있고, 예측 유닛은 예측의 기본 단위로서 각각의 예측 유닛이 서로 다른 예측 블록을 생성할 수 있으며 하나의 예측 유닛 내에서는 모두 동일한 예측 모드를 가질 수 있다. 변환 유닛은 원 영상 블록과 예측 유닛에서 생성된 예측 블록과의 차분값으로 생성된 잔차 블록을 변환하는 기본 단위일 수 있다.
또한, 상기 분할된 영역은 다시 수개의 픽셀(Pixel) 또는 화소로 구성될 수 있다. 예를 들면, 부호화 트리 유닛은 픽셀 단위로 64×64, 32×32, 16×16 중 하나의 크기를 가질 수 있다.
부호화 트리 유닛에서 다시 쿼드 트리(Quad-tree) 형태로 분할될 수 있는데, 이때 분할된 블록을 부호화 유닛(Coding Unit)으로 지칭될 수 있으며, 이러한 분할은 재귀적으로 이루어질 수 있고, 모든 부호화 유닛이 동일한 형태로 분할될 필요는 없다. 다만, 부호화 유닛은 최대 크기 및 최소 크기에 제한이 있을 수 있는데, 이를 각각 최대 부호화 유닛(Largest Coding Unit, LCU) 및 최소 부호화 유닛(Smallest Coding Unit, SCU)으로 지칭할 수 있고, 최대 부호화 유닛으로부터 분할된 횟수 또는 정도를 표현하는 지표로 깊이 또는 심도(depth)를 사용할 수 있다. 예를 들어, 최대 부호화 유닛(LCU)의 크기를 가진다면 깊이는 0으로 표현할 수 있고, 쿼드 트리로 분할됨에 따라 깊이가 증가할 수 있으며, 최소 크기까지 분할되었다면 그때의 깊이를 최대 깊이(Max depth)로 표현할 수 있다.
여기서, 각각의 부호화 유닛(CU)에서 다시 예측 유닛(PU)으로 분할될 수 있는데, 이때 예측 유닛은 쿼드-트리 형태로 분할되지 않고 비대칭구조로 분할될 수 있으며, 부호화 유닛에서 한번만 분할될 수 있다. 또한 화면 간 예측 및 화면 내 예측에 따라 미리 설정된 형태를 가질 수 있다. 예를 들어, 화면 내 예측에서는 2N×2N 또는 N×N의 크기를 가질 수 있다.
또한, 각각의 부호화 유닛(CU)에서 다시 변환 유닛(TU)으로 분할될 수 있는데, 이때 변환 유닛은 쿼드 트리 구조를 바탕으로 재귀적으로 분할될 수 있고 부호화 유닛과 마찬가지로 최대 및 최소 크기를 가질 수 있으며 그에 따른 깊이(depth)로 표현될 수 있다.
상기의 부호화 유닛에서 예측 유닛 또는 변환 유닛으로의 분할은 독립적으로 이루어질 수 있으나, 제약이 있을 수 있다. 예를 들어, 부호화 유닛의 부호화 모드가 화면 내 예측인 경우에는 해당 부호화 유닛으로부터 분할된 변환 유닛이 해당 부호화 유닛으로부터 분할된 예측 유닛의 크기보다 크지 않을 수 있다.
각 유닛(Unit)은 하나의 휘도 블록과 두 개의 색차 블록으로 구성될 수 있으며, 이는 컬러 포맷에 따라 달리 구성될 수 있다. 또한, 컬러 포맷에 따라 휘도 블록과 색차 블록의 크기가 결정될 수 있다. 예를 들어, 4:2:0인 경우 색차 블록의 크기는 휘도 블록의 가로, 세로가 1/2인 길이를 가질 수 있다.
상기의 유닛 또는 블록 단위에 대해서는 기존의 HEVC 또는 H.264/AVC 등의 용어를 참조할 수 있다. 본 발명에서는 블록과 상기 용어들이 혼용하여 사용될 수 있으며, 표준 기술에 따라 달리 이해될 수 있고, 그러한 표준 기술에 따른 부호화 및 복호화 과정에 따라 상응하는 용어 또는 단위로 이해되어야 한다.
또한, 현재 블록 또는 현재 화소를 부호화하거나 복호화하는데 참조되는 픽쳐, 블록 또는 화소를 참조 픽쳐(Reference Picture), 참조 블록(Reference Block) 또는 참조 화소(Reference Pixel)라고 지칭할 수 있다. 이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 실시예에 따른 영상 부호화 및 복호화 시스템에 대한 개념도이다.
도 1을 참조하면, 영상 부호화 장치(105) 및 복호화 장치(100)는 개인용 컴퓨터(PC:Personal Computer), 노트북 컴퓨터, 개인 휴대 단말기(PDA: Personal Digital Assistant), 휴대형 멀티미디어 플레이어(PMP: Portable Multimedia Player), 플레이스테이션 포터블(PSP: PlayStation Portable), 무선 통신 단말기(Wireless Communication Terminal), 스마트폰(Smart Phone), TV 등과 같은 사용자 단말기이거나 응용 서버와 서비스 서버 등 서버 단말기일 수 있으며, 각종 기기 또는 유무선 통신망과 통신을 수행하기 위한 통신 모뎀 등의 통신 장치, 영상을 부호화 또는 복호화를 위해 인터 또는 인트라 예측하기 위한 각종 프로그램과 데이터를 저장하기 위한 메모리(memory, 120, 125), 프로그램을 실행하여 연산 및 제어하기 위한 프로세서(processor, 110, 115) 등을 구비하는 다양한 장치를 포함할 수 있다. 또한, 영상 부호화 장치(105)에 의해 비트스트림으로 부호화된 영상은 실시간 또는 비실시간으로 인터넷, 근거리 무선 통신망, 무선랜망, 와이브로망, 이동통신망 등의 유무선 통신망(Network) 등을 통하거나 케이블, 범용 직렬 버스(USB: Universal Serial Bus) 등과 같은 다양한 통신 인터페이스를 통해 영상 복호화 장치(100)로 전송되어 영상 복호화 장치(100)에서 복호화되어 영상으로 복원되고 재생될 수 있다. 또한, 영상 부호화 장치(105)에 의해 비트스트림으로 부호화된 영상은 컴퓨터 판독 가능한 기록 매체를 통하여 영상 부호화 장치(105)에서 영상 복호화 장치(100)로 전달될 수 있다.
도 2는 본 발명의 일 실시예에 따른 영상 부호화 장치에 대한 블록도이다.
본 실시예에 따른 영상 부호화 장치(20)는, 도 2에 나타낸 바와 같이, 예측부(200), 감산부(205), 변환부(210), 양자화부(215), 역양자화부(220), 역변환부(225), 가산부(230), 필터부(235), 복호화 픽쳐 버퍼(240) 및 엔트로피 부호화부(245)를 포함할 수 있다.
예측부(200)는 부호화할 블록에 대하여, 화면 내 예측 또는 화면 간 예측을 통하여 예측 블록을 결정할 수 있다. 여기서, 예측 블록은 픽셀 차이의 관점에서, 부호화할 블록과 가깝게 일치하는 것으로 이해되는 블록이며, SAD(sum of absolute difference), SSD(sum of square difference) 를 포함하는 다양한 방법으로 결정될 수 있다. 또한, 이때 영상 슬라이스의 블록들을 복호화시에 필요한 각종 정보를 지시하는 구문(syntax)들을 생성할 수 있다.
감산부(205)는 부호화할 현재 블록의 픽셀 값으로부터 예측 블록의 픽셀 값들을 감산하여 픽셀 차이 값들을 도출함으로써, 잔여(residue) 영상 블록을 생성할 수 있다.
변환부(210)는 하마다드 변환, 이산 코사인 변환 등과 같은 공간 영역의 신호를 주파수 영역의 신호로 변환하는 다양한 방법을 이용하여, 감산부(205)로부터 받은 잔여 영상 블록을 잔여 변환 계수 값들을 포함하는 영상 블록을 생성할 수 있다. 즉, 잔여 영상 블록을 픽셀 값 신호에서 주파수 영역 신호로 변환할 수 있다.
양자화부(215)는 비트레이트를 감소시키기 위해 변환부(210)에서 변환된 변환 계수들을 양자화할 수 있다. 양자화를 통해 그 계수들의 일부 또는 모두와 연관되는 비트 심도 또는 비트량을 감소시킬 수 있다. 양자화 정도에 따른 양자화 에러는 양자화 파라미터(Quantization Parameter, QP)를 조정하여 변경될 수 있다.
양자화 기법에는 데드존 균일 경계 양자화(DZUTQ: Dead Zone Uniform Threshold Quantization), 양자화 가중치 매트릭스(Quantization weighted matrix) 또는 이를 개량한 기법을 사용할 수 있으며, 이러한 기법에 대한 구체적 설명은 본 발명의 기술분야에서 통상의 기술자가 용이하게 이해할 수 있으므로 생략한다.
엔트로피 부호화부(245)는 양자화부(215)를 통해 양자화된 변환 계수들을 부호화할 수 있다. 예를 들어, 컨텐스트 적응 가변 길이 코딩(CAVLC), 컨텍스트 적응 2진 산술 코딩(CABAC), 구문 기반 컨텍스트 적응 2진 산술 코딩(SBAC), 확률 간격 파티셔닝 엔트로피(PIPE) 코딩 등의 기법을 수행할 수 있다.
또한, 엔트로피 부호화부(245)는 양자화 계수를 부호화한 비트열을 복호화하는데 필요한 다양한 정보들을 부호화할 수 있다.
역양자화부(220) 및 역변환부(225)는 역양자화 및 역변환을 각각 적용하여 픽셀 신호로 잔여 블록을 재구성할 수 있다. 재구성된 잔여 블록은 가산부(230)에서 예측 블록과 가산되어 복원된 영상 블록이 생성될 수 있고, 복호화 픽쳐 버퍼(240)에 저장되어 참조 블록으로서 사용될 수 있다.
필터부(235)는 상기 복원된 영상 블록에 대하여, 필요에 따라 블로킹(blocking) 현상을 제거하기 위하여 디블로킹 필터를 적용할 수도 있고, 상기 비디오 품질을 향상시키기 위해 추가적인 루프 필터가 적용되어 필터링할 수 있다.
도 3은 본 발명의 일 실시예에 따른, 영상 복호화 장치(30)에 대한 구성도이다.
도 3을 참조하면, 영상 복호화 장치(30)는, 부호화 픽쳐 버퍼(300), 엔트로피 복호화부(305), 예측부(310), 역양자화부(315), 역변환부(320), 가감산기(325), 필터(330), 복호화 픽쳐 버퍼(335)를 포함하여 구성될 수 있다.
또한, 예측부(310)는 다시 화면 내 예측 모듈 및 화면 간 예측 모듈을 포함하여 구성될 수 있다.
먼저, 영상 부호화 장치(20)로부터 전달된 영상 비트스트림이 수신되면, 부호화 픽쳐 버퍼(300)에 저장될 수 있다.
엔트로피 복호화부(305)는 비트스트림을 복호화하여 양자화된 계수들, 움직임 벡터들 및 다른 구문(syntax)를 생성할 수 있다. 생성된 데이터는 예측부(310)로 전달될 수 있다.
예측부(310)는 엔트로피 복호화부(305)로부터 전달된 데이터들에 기초하여 현재 영상 슬라이스의 블록에 대한 예측 블록을 생성할 수 있다. 이때, 복호화된 픽쳐 버퍼(335)에 저장된 참조 영상에 기초하여, 디폴트(default) 구성 기법을 이용한 참조 픽쳐 리스트를 구성할 수도 있다.
역양자화부(315)는 비트스트림으로 제공되어 엔트로피 복호화부(305)에 의해 복호화된 양자화된 변환 계수들을 역양자화할 수 있다.
역변환부(320)는 역 DCT, 역 정수 변환 또는 그와 유사한 개념의 역변환 기법들을 변환 계수에 적용하여 픽셀 신호를 갖는 잔여 블록을 생성할 수 있다.
이때, 역양자화부(315), 역변환부(320)는 앞서 설명한 영상 부호화 장치(20)의 변환부(210) 및 양자화부(215)에서 수행한 과정을 역으로 수행하며 다양한 방법으로 구현될 수 있다. 예를 들어, 변환부(210) 및 양자화부(215)와 공유하는 동일한 과정 및 역변환을 사용할 수도 있고, 영상 부호화 장치(20)로부터 변환 및 양자화 과정에 관한 정보(예를 들면, 변환 크기, 변환 모양, 양자화 타입 등)를 이용하여 변환 및 양자화 과정을 역으로 수행할 수 있다.
역양자화 및 역변환 과정을 거친 잔여 비디오 블록은 예측부(310)에 의해 도출된 예측 블록과 가산되어 복원된 영상 블록이 생성될 수 있다. 이러한 가산은 가감산기(325)에 의해 이루어 질 수 있다.
그 후, 필터(330)는 복원된 영상 블록에 대하여, 필요에 따라 블로킹(blocking) 현상을 제거하기 위하여 디블로킹 필터를 적용할 수도 있고, 상기 복호화 과정 전 후에 다른 루프 필터들을 비디오 품질을 향상시키기 위해 사용할 수 있다.
이렇게 복원 및 필터를 거친 영상 블록은 복호화 픽쳐 버퍼(335)에 저장될 수 있다.
도 4는 본 발명의 일 실시예에 따른 움직임 추정(Motion Estimation)을 이용한 영상 부호화 방법에 대한 흐름도이다.
도 4을 참조하면, 영상 부호화 방법은, 부호화할 현재 블록에 대하여 움직임 추정을 수행할 시작 위치를 결정하는 단계(S300); 결정된 시작 위치를 기초로 참조 픽쳐 내에서 움직임 탐색을 수행하여 적어도 하나의 참조 블록을 선정하는 단계(S305); 적어도 하나의 참조 블록에 대한 움직임 벡터를 도출하는 단계(S310); 현재 블록보다 먼저 부호화된 블록의 부호화 정보를 참조하여, 움직임 벡터에 대한 부호화 비트를 예측하는 단계(S315); 적어도 하나의 참조 블록에서 예측된 부호화 비트를 포함한 부호화 비용을 최소화하는, 최적의 참조 블록을 선정하는 단계(S320); 및 최적의 참조 블록을 이용하여 현재 블록을 부호화하는 단계(S325)를 포함할 수 있다.
여기서, 먼저 부호화된 블록이란 엔트로피 부호화가 수행된 블록을 의미할 수 있다.
여기서, 부호화 비용은 움직임 벡터 등과 같이 예측 블록과 현재 블록과의 잔차 블록 이외에 부가적으로 전송해야 되는 움직임 정보 등이 부호화되는 비트량 및 율-왜곡 비용(Rate-Distortion Cost, RD cost) 등을 포함하는 의미일 수 있다. 여기서의 부호화 비용은 부호화 방법이나 장치에서의 복잡도, 압축률 또는 화면의 왜곡 정도를 고려하여 산정할 수 있으며, 그에 대해서는 본 발명이 속하는 기술분야에서 통상의 기술자가 용이하게 결정할 수 있으므로 자세한 설명은 생략한다.
여기서, 시작 위치를 결정하는 단계(S300)는, 주변 블록의 움직임 벡터를 탐색하는 단계 및 움직임 벡터가 존재하면 율-왜곡 비용을 계산하여 최소의 율 왜곡 비용을 가지는 인접 블록의 움직임 벡터를 시작 위치로 결정하는 단계를 포함할 수 있다.
여기서, 주변 블록의 움직임 벡터를 탐색하는 단계 이후에 움직임 벡터가 존재하지 않으면, 제로 움직임 벡터를 시작 위치로 결정하는 단계를 더 포함할 수 있다.
여기서, 제로 움직임 벡터는 참조 픽쳐 내에서 현재 부호화할 블록과 동일한 위치를 지시할 수 있다.
여기서, 움직임 탐색은 정수 화소 단위의 움직임 탐색 및 부호화소 단위의 움직임 탐색 중 적어도 하나를 포함할 수 있으며, 탐색 방법으로는, 마름모형 탐색, 방형 탐색, 순차 탐색 중 적어도 하나가 적용될 수 있다. 여기서, 기본적으로 마름모형 탐색이 적용될 수 있으나 보다 넓은 범위에서 움직임 추정을 위해서는 방형 탐색을 수행할 수 있고, 현재 블록의 위치와 움직임 추정의 시작 위치 간의 거리 차이가 큰 경우에는 순차 탐색을 적용할 수 있다.
여기서, 움직임 벡터를 도출하는 단계(S310) 이후에, 움직임 벡터를 움직임 벡터 차분값(moving vector difference, MVD) 또는 참조 프레임 인덱스(reference frame index)로 표현하는 단계를 더 포함할 수 있다. 다만, 여기서 움직임 벡터를 표현하는 움직임 벡터 차분값 또는 참조 프레임 인덱스를 포함하는 움직임 정보는 움직임 정보의 양을 줄이기 위하여 선택된 모드에 따라 다른 결과값으로 표현될 수도 있다. 여기서 선택된 모드란, Merge 모드, AMVP(Advanced Motion Vector Prediction) 모드, Merge skip 모드를 의미할 수 있고 그에 따른 움직임 정보는 본 발명이 속하는 기술분야에서 통상의 기술자에게 용이하게 이해될 수 있으므로 자세한 설명은 생략한다.
여기서, 참조 프레임 인덱스는 참조 블록이 속한 참조 픽쳐가 참조 리스트의 어디에 위치하는지 구분하는 인덱스를 의미할 수 있다. 또한, 참조 프레임 인덱스는 참조 픽쳐 인덱스(reference picture index)로 표현할 수도 있다.
여기서, 움직임 벡터 차분값은 현재 블록의 주변 블록을 이용하여 예측된 움직임 벡터와 참조 블록에 따라 실제로 부호화될 움직임 벡터의 차이값을 의미할 수 있다. 여기서, 주변 블록은 현재 블록과 공간적으로 상이한 같은 참조 픽쳐 내의 주변 블록이나 시간적으로 상이한 다른 참조 픽쳐 내의 블록을 의미할 수 있다.
여기서, 먼저 부호화된 블록의 부호화 정보는, 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값을 포함할 수 있다.
여기서, 먼저 부호화된 블록의 부호화 정보는, 먼저 부호화된 블록의 참조 프레임 인덱스가 부호화된 제2 비트값을 포함할 수 있다.
여기서, 먼저 부호화된 블록의 부호화 정보는, 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값 및 참조 프레임 인덱스가 부호화된 제2 비트값을 포함할 수 있다.
여기서, 움직임 벡터에 대한 부호화 비트를 예측하는 단계(S315)는, 움직임 벡터 차분값에 따라 미리 결정된 제1 초기비트값을 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하는 단계를 포함하되, 제1 초기비트값은, 제1 비트값에 의해 갱신 또는 대체될 수 있다.
여기서, 제1 초기비트값(mvd_bits)은 다음의 수학식 1과 같이 결정될 수 있다.
Figure 112016099439218-pat00001
수학식 1을 참조하여 설명하면, 움직임 벡터의 차분값(mvd)이 0이면 예측되는 부호화 비트는 1 bit로 결정할 수 있고, 0이 아닌 경우에는 상기의 수학식 1 하단에 따라 결정될 수 있다.
좀 더 구체적으로 상기의 수학식 1을 풀어서 예를 들면 다음과 같을 수 있다.
표 1은 움직임 벡터 차분값에 따라 제1 초기비트값이 결정되는 것을 설명하는 표이다.
mvd mvd에 대한 예측 비트값
0 1
-1, 1 3
{-3, -2, 2, 3} 5
{-7 ~ -4} , {4 ~ 7} 7
{-15 ~ -8} , {8 ~ 15} 9
{-31 ~ -16} , {16 ~ 31} 11
{-63 ~ -32} , {32 ~ 63} 13
표 1을 참조하면, 움직임 벡터에 대한 부호화 비트는, 움직임 벡터의 차분값(mvd)이 0이면 1 bit로, -1 또는 1이면 3 bit로 예측될 수 있고, -3이나 -2 또는 2나 3이면 5 bit로 예측될 수 있다.
여기서, 미리 결정된 초기 움직임 벡터 차분 비트값을 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하는 단계 및 초기 움직임 벡터 차분 비트값의 갱신은 다음의 수도 코드(pseudo code)와 같이 표현될 수도 있다.
표 2는 제1 비트값을 이용하여 움직임 벡터에 대한 부호화 비트의 예측값을 결정하는 것을 설명하기 위한 수도 코드(pseudo code)이다.
if(MVD_bit[i] is updated)
MV_bit_cost = MVD_bit[i];
else
MV_bit_cost = Initialized_MVD_bits;
표 2를 참조하면, 움직임 벡터에 대한 부호화 비트(MV_bit_cost)는 먼저 현재 블록에 대한 참조 블록에 대해 움직임 벡터로 표현하고, 움직임 벡터를 다시 움직임 벡터 차분값으로 표현한 결과가 먼저 부호화된 블록의 움직임 벡터 차분값(i, 움직임 벡터의 거리)과 동일하다면, 갱신된 것으로 판단(updated)하여, 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값(MVD_bit[i])을 예측된 비트값으로 하고, 그렇지 않으면, 제1 초기비트값(Initialized_MVD_bits)을 예측된 비트값으로 할 수 있다.
여기서, 제1 비트값 (MVD_bit[i])과 제1 초기비트값(Initialized_MVD_bits)은 초기값과 갱신된 후의 값을 구분하기 위하여 달리 표현하였으나, 하나의 변수로 구현될 수도 있으며, 예를 들면 하나의 변수만을 참조하며 움직임 벡터에 대한 부호화 비트를 예측하되, 하나의 변수는 먼저 초기 비트값을 설정하여 두고, 특정 블록에 대한 부호화가 끝나면 부호화된 정보를 이용하여 하나의 변수를 갱신하는 방식으로 구현될 수 있으며 상기의 수도 코드에 따라 제한해석되지 않는 것으로 이해하여야 한다.
여기서, 움직임 벡터에 대한 부호화 비트를 예측하는 단계(S315)는, 움직임 벡터 차분값 및 참조 프레임 인덱스에 따라 각각 미리 결정된 제1 초기비트값 및 제2 초기비트값을 더하여 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하는 단계를 포함하고, 제2 초기비트값은 제2 비트값에 의하여 갱신 또는 대체될 수 있다.
여기서 미리 결정된 제1 초기비트값은 앞에서 설명한 표1 및 수학식 1을 참조할 수 있다.
여기서, 미리 결정된 제2 초기비트값은 다음의 수학식 2를 이용하여 결정할 수 있다.
Figure 112016099439218-pat00002
수학식 2를 참조하면, 제2 초기비트값(ref_bits)은 현재 블록에 대한 참조 블록에 대하여, 참조 리스트내에 포함된 참조 픽쳐 인덱스(ref)가 0이면 1로 결정될 수 있으며, 0이 아니면 수학식 2의 하단에 따라 결정될 수 있다.
표 3은 제2 비트값을 이용하여 움직임 벡터에 대한 부호화 비트의 예측값을 결정하는 것을 설명하기 위한 수도 코드(pseudo code)이다.
if(Ref_frm_idx[j] is updated)
MV_bit_cost = Initialized_MVD_bits + Ref_frm_idx[j];
else
MV_bit_cost = Initialized_MVD_bits + Initialized_Ref_frm_idx[j];
표 3을 참조하면, 움직임 벡터에 대한 부호화 비트의 예측값(MV_bit_cost)은, 먼저 부호화된 블록의 참조 프레임 인덱스(j)가 참조 블록의 움직임 벡터에 대해 표현된 참조 프레임 인덱스와 동일하다면, 갱신(updated)이 이루어진 것으로 판단하여, 제1 초기비트값(Initialized_MVD_bits)과 제2 비트값(Ref_frm_idx[j])을 더한 값으로 결정할 수 있다.
또한, 움직임 벡터에 대한 부호화 비트의 예측값(MV_bit_cost)은, 현재 블록에 대한 움직임 벡터의 참조 프레임 인덱스가 먼저 부호화된 블록의 참조 프레임 인덱스와 다르다면, 제1 초기비트값(Initialized_MVD_bits)과 제2 초기 비트값(Initialized_Ref_frm_idx[j])을 더한 값으로 결정할 수 있다.
여기서, 제2 비트값(Ref_frm_idx[j])과 제2 초기비트값(Initialized_Ref_frm_idx[j])은 초기값과 갱신된 후의 값을 구분하기 위하여 달리 표현하였으나, 하나의 변수로 구현될 수도 있으며, 예를 들면 하나의 변수만을 제1 초기비트값(Initialized_MVD_bits)에 더하여 움직임 벡터에 대한 부호화 비트를 예측하되, 하나의 변수는 먼저 초기 비트값을 설정하여 두고, 특정 블록에 대한 부호화가 끝나면 부호화된 정보를 이용하여 하나의 변수를 갱신하는 방식으로 구현될 수 있으며 상기의 수도 코드에 따라 제한해석되지 않는 것으로 이해하여야 한다.
여기서, 움직임 벡터에 대한 부호화 비트를 예측하는 단계(S315)는, 움직임 벡터 차분값 및 참조 프레임 인덱스에 따라 각각 미리 결정된 제1 초기비트값 및 제2 초기비트값을 더하여 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하는 단계를 포함하고, 제1 초기비트값 및 제2 초기비트값은 각각 제1 비트값 및 제2 비트값에 의하여 갱신 또는 대체될 수 있다.
여기서, 제1 초기비트값 및 제2 초기비트값은 앞에서 설명한 바와 같이 각각 표1, 수학식 1 내지 2를 참조하여 이해될 수 있다.
표 4는 제1 비트값 및 제2 비트값을 이용하여 움직임 벡터에 대한 부호화 비트의 예측값을 결정하는 것을 설명하기 위한 수도 코드(pseudo code)이다.
if(MVD_bit[i] is updated)
MV_bit_cost = MVD_bit[i];
else
MV_bit_cost = Initialized_MVD_bits;
if(Ref_frm_idx[j] is updated)
MV_bit_cost = MV_bit_cost + Ref_frm_idx[j];
else
MV_bit_cost = MV_bit_cost + Initialized_Ref_frm_idx[j];
표 4를 참조하면, 움직임 벡터에 대한 부호화 비트(MV_bit_cost) 는 먼저 현재 블록에 대한 참조 블록에 대해 움직임 벡터로 표현하고, 움직임 벡터를 다시 움직임 벡터 차분값으로 표현된 결과가 먼저 부호화된 블록의 움직임 벡터 차분값(i, 움직임 벡터의 거리)과 동일하다면, 갱신된 것으로 판단(MVD_bit[i] is updated)하여, 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값(MVD_bit[i])을 예측된 비트값으로 하고, 그렇지 않으면, 제1 초기비트값(Initialized_MVD_bits)을 예측된 비트값으로 할 수 있다.
다음으로, 앞에서 결정된 움직임 벡터에 대한 부호화 비트(MV_bit_cost)에 추가로 더하는 과정을 포함할 수 있는데, 여기서 추가되는 값은 부호화된 블록의 참조 프레임 인덱스(j)가 참조 블록의 움직임 벡터에 대해 표현된 참조 프레임 인덱스와 동일하다면, 갱신(Ref_frm_idx[j] is updated)이 이루어진 것으로 판단하여, 제2 비트값(Ref_frm_idx[j])을 추가로 더할 수 있다.
또한, 현재 블록에 대한 움직임 벡터의 참조 프레임 인덱스가 먼저 부호화된 블록의 참조 프레임 인덱스와 다르다면, 제2 초기 비트값(Initialized_Ref_frm_idx[j])를 추가로 더할 수 있다.
여기서, 제1 비트값 (MVD_bit[i])과 제1 초기비트값(Initialized_MVD_bits)은 초기값과 갱신된 후의 값을 구분하기 위하여 달리 표현하였으나, 하나의 변수로 구현될 수도 있으며, 제2 비트값(Ref_frm_idx[j])과 제2 초기비트값(Initialized_Ref_frm_idx[j]) 또한 하나의 변수로 구현될 수 있다. 따라서, 상기의 수도 코드에 따라 제한해석되지 않는 것으로 이해하여야 한다.
여기서, 영상 부호화 방법은, 부호화된 현재 블록의 참조 프레임 인덱스에 대한 비트값 또는 움직임 벡터 차분에 대한 비트값을 저장하는 단계를 더 포함할 수 있다.
이렇게 저장된 정보는 다음 블록의 부호화할 때 움직임 벡터에 대한 부호화 비트의 예측값으로 참조할 수 있다. 여기서의 저장한다는 의미는 앞에서 설명한 제1 초기비트값 또는 제2 초기비트값을 갱신한다는 의미일 수도 있다.
표 5는 본 발명의 일 실시예에 따른 영상 부호화 방법을 수행한 실험 환경을 나타내는 표이다.
Figure 112016099439218-pat00003
표 5를 참조하면, 실험 대상 영상(Test Sequences)으로 Class B 내지 E의 해상도에 따른 영상이 선택되었고, 부호화가 진행된 전체 프레임(Total Frames to be Coded)는 Class D 영상에 대해서만 10초 분량으로 나머지는 3초 분량으로 준비하였다. 사용된 소프트웨어는 HM 3.0이고 양자화 파라미터(Quentizer Parameter)로는 32를 설정하였으며 설정으로 Low-delay P 를 적용하였다.
표 6은 본 발명의 일 실시예에 따른 영상 부호화 방법을 CS1 환경에서 수행한 실험 결과를 나타내는 표이다.
Figure 112016099439218-pat00004
표 6을 참조하면, ITM 13.0과 비교하여, 압축률이 CS1 환경에서 1.1%의 루마(Y) BD-rate 이득을 얻을 수 있었다.
표 7은 본 발명의 일 실시예에 따른 영상 부호화 방법을 CS2 환경에서 수행한 실험 결과를 나타내는 표이다.
Figure 112016099439218-pat00005
표 7을 참조하면, ITM 13.0과 비교하여, 압축률이 CS2 환경에서 1.8%의 루마(Y) BD-rate 이득을 얻을 수 있었다.
도 5는 본 발명의 일 실시예에 따른 움직임 벡터 차분값에 따라 제1 초기비트값이 결정되는 것을 설명하는 예시도이다. 도 6은 본 발명의 일 실시예에 따른 제1 초기비트값이 갱신되는 과정을 설명하는 제1 예시도이다. 도 7은 본 발명의 일 실시예에 따른 제1 초기비트값이 갱신되는 과정을 설명하는 제2 예시도이다.
도 5 내지 6을 참조하면 움직임 벡터에 대한 비트 비용을 먼저 부호화된 블록의 움직임 벡터 차분값에 대한 정보를 이용하여 예측할 수 있다.
먼저, 도 5를 참조하면, 제1 초기비트값(40)은 해당 블록의 움직임 벡터의 차분값에 따라 설정될 수 있고, 이에 대해서는 표 1 및 수학식 1을 참조할 수 있다.
도 6를 참조하면, 제1 블록(50)에 대한 움직임 벡터 차분값의 x, y 값으로서 mvd_x = 3, mvd_y = 2가 도출되고, 이에 대한 엔트로피 부호화를 진행한 결과, mvd_x 에 대해서는 1 bit로, mvd_y 에 대해서도 1 bit로 부호화된 경우를 예로 설명할 수 있다.
이에 따라, 기존의 제1 초기비트값(40)을 mvd_x의 비트값(52)과 mvd_y 의 비트값(51)로 해당하는 움직임 벡터 차분값에 따라 갱신할 수 있다.
도 7을 참조하면, 제1 블록의 부호화 이후의 제2 블록(60)에 대한 움직임 벡터 차분값의 x, y 값으로서 mvd_x = 0, mvd_y = 2가 도출되고, 제2 블록에 대한 엔트로피 부호화를 진행한 결과, mvd_x에 대해서는 2 bit로, mvd_y에 대해서도 2 bit로 부호화된 경우를 예로 설명할 수 있다.
이에 따라, 기존의 제1 초기비트값(40)을 다시 mvd_x의 비트값(61)과 mvd_y 의 비트값(62)인 2 bit로 갱신할 수 있다.
여기서, 도 5 내지 도 7에 따라 움직임 벡터에 대한 비트 비용을 먼저 부호화된 블록의 움직임 벡터 차분값에 대한 부호화 정보를 이용하여 예측하는 과정은 먼저 부호화된 블록의 참조 프레임 인덱스에 대한 부호화 정보를 이용하여 예측하는 과정에도 그대로 적용될 수 있으며, 먼저 부호화된 블록의 움직임 벡터 차분값 및 참조 프레임 인덱스에 대한 부호화 정보 모두를 이용하여 예측하는 과정에도 그대로 적용될 수 있다.
또한, 도 5 내지 도 7에서는 제1 초기비트값이 갱신되는 것으로 설명하였으나, 앞에서 설명한 제1 초기비트값이나 제2 초기비트값은 그대로 유지하고 먼저 부호화된 블록의 움직임 벡터 차분값이나 참조 프레임 인덱스의 부호화 비트 정보를 별도로 저장하여 제1 초기비트값을 대체하여 참조할 수도 있다.
본 발명의 일 실시예에 따른 움직임 추정(Motion Estimation)을 이용한 영상 부호화 장치는, 적어도 하나의 명령어를 수행하는 프로세서(processor) 및 적어도 하나의 명령어를 저장하는 메모리(memory)를 포함할 수 있다.
여기서, 프로세서는, 부호화할 현재 블록에 대하여 움직임 추정을 수행할 시작 위치를 결정하고, 결정된 시작 위치를 기초로 참조 픽쳐 내에서 움직임 탐색을 수행하여 적어도 하나의 참조 블록을 선정하고, 적어도 하나의 참조 블록에 대한 움직임 벡터를 도출하고, 현재 블록보다 먼저 부호화된 블록의 부호화 정보를 참조하여, 움직임 벡터에 대한 부호화 비트를 예측하고, 적어도 하나의 참조 블록에서 예측된 부호화 비트를 포함한 부호화 비용을 최소화하는, 최적의 참조 블록을 선정하고, 최적의 참조 블록을 이용하여 현재 블록을 부호화할 수 있다.
여기서, 프로세서는, 움직임 벡터를 움직임 벡터 차분값(moving vector difference, MVD) 또는 참조 프레임 인덱스(reference frame index)로 표현할 수 있다.
여기서, 먼저 부호화된 블록의 부호화 정보는, 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값를 포함할 수 있다.
여기서, 먼저 부호화된 블록의 부호화 정보는, 먼저 부호화된 블록의 참조 프레임 인덱스가 부호화된 제2 비트값을 포함할 수 있다.
여기서, 먼저 부호화된 블록의 부호화 정보는, 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값 및 참조 프레임 인덱스가 부호화된 제2 비트값을 포함할 수 있다.
여기서, 프로세서는, 움직임 벡터 차분값에 따라 미리 결정된 제1 초기비트값을 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하되, 제1 초기비트값은, 제1 비트값에 의해 갱신 또는 대체될 수 있다.
여기서, 프로세서는, 움직임 벡터 차분값 및 참조 프레임 인덱스에 따라 각각 미리 결정된 제1 초기비트값 및 제2 초기비트값을 더하여 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하고, 제2 초기비트값은 제2 비트값에 의하여 갱신 또는 대체될 수 있다.
여기서, 프로세서는, 움직임 벡터 차분값 및 참조 프레임 인덱스에 따라 각각 미리 결정된 제1 초기비트값 및 제2 초기비트값을 더하여 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하고, 제1 초기비트값 및 제2 초기비트값은 각각 제1 비트값 및 제2 비트값에 의하여 갱신 또는 대체될 수 있다.
여기서, 프로세서는, 부호화된 현재 블록의 참조 프레임 인덱스에 대한 비트값 또는 움직임 벡터 차분에 대한 비트값을 저장할 수 있다.
본 발명의 일 실시예에 따른 영상 복호화 방법은, 비트스트림을 수신하는 단계, 수신된 비트스트림에서 복호화할 현재 블록의 움직임 정보를 추출하는 단계; 추출된 움직임 정보를 복호화하는 단계, 복호화된 움직임 정보를 이용하여 현재 블록에 대한 화면 간 예측을 수행하는 단계 및 화면 간 예측에 따른 예측 블록을 이용하여 현재 블록을 복호화하는 단계를 포함할 수 있다.
여기서, 움직임 정보는 현재 블록의 예측 블록(또는 참조 블록)에 대한 움직임 벡터를 포함할 수 있고, 움직임 벡터는 참조 프레임 인덱스 및 움직임 벡터의 차분값 중 적어도 하나로 표현될 수 있다.
여기서, 움직임 벡터의 비트 비용은 현재 블록보다 먼저 부호화된 블록의 부호화 정보를 이용하여 예측되었을 수 있다. 구체적으로, 여기서, 참조 프레임 인덱스는 현재 블록보다 먼저 부호화된 블록의 부호화 정보를 이용하여 부호화될 수 있다. 여기서, 움직임 벡터의 차분값은 현재 블록보다 먼저 부호화된 블록의 부호화 정보를 이용하여 부호화될 수 있다.
여기서, 먼저 부호화된 블록의 부호화 정보는, 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값를 포함할 수 있다.
여기서, 먼저 부호화된 블록의 부호화 정보는, 먼저 부호화된 블록의 참조 프레임 인덱스가 부호화된 제2 비트값을 포함할 수 있다.
여기서, 먼저 부호화된 블록의 부호화 정보는, 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값 및 참조 프레임 인덱스가 부호화된 제2 비트값을 포함할 수 있다.
여기서, 현재 블록의 예측 블록(또는 참조 블록)에 대한 움직임 벡터의 비트 비용은 움직임 벡터 차분값에 따라 미리 결정된 제1 초기비트값을 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하되, 제1 초기비트값은, 제1 비트값에 의해 갱신 또는 대체될 수 있다.
여기서, 현재 블록의 예측 블록(또는 참조 블록)에 대한 움직임 벡터의 비트 비용은 움직임 벡터 차분값 및 참조 프레임 인덱스에 따라 각각 미리 결정된 제1 초기비트값 및 제2 초기비트값을 더하여 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하되, 제2 초기비트값은 제2 비트값에 의하여 갱신 또는 대체될 수 있다.
여기서 미리 결정된 제1 초기비트값은 앞에서 설명한 표1 및 수학식 1을 참조할 수 있다.
여기서, 미리 결정된 제2 초기비트값은 앞에서의 수학식 2를 이용하여 결정할 수 있다.
여기서, 현재 블록의 예측 블록(또는 참조 블록)에 대한 움직임 벡터의 비트 비용은 움직임 벡터 차분값 및 참조 프레임 인덱스에 따라 각각 미리 결정된 제1 초기비트값 및 제2 초기비트값을 더하여 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하되, 제1 초기비트값 및 제2 초기비트값은 각각 제1 비트값 및 제2 비트값에 의하여 갱신 또는 대체될 수 있다.
여기서, 영상 복호화 방법은 도 3에 따른 영상 복호화 장치에 의해 수행될 수 있다. 또한, 도 4 내지 도 7에서 설명한 영상 부호화 방법과 상응하는 방법으로 수행될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (20)

  1. 부호화할 현재 블록에 대하여 움직임 추정을 수행할 시작 위치를 결정하는 단계;
    결정된 시작 위치를 기초로 참조 픽쳐 내에서 움직임 탐색을 수행하여 적어도 하나의 참조 블록을 선정하는 단계;
    상기 적어도 하나의 참조 블록에 대한 움직임 벡터를 도출하는 단계;
    상기 움직임 벡터를 움직임 벡터 차분값(moving vector difference, MVD) 또는 참조 프레임 인덱스(reference frame index)로 표현하는 단계;
    상기 현재 블록보다 먼저 부호화된 블록의 부호화 정보를 참조하여, 상기 움직임 벡터에 대한 부호화 비트를 예측하는 단계; 및
    상기 적어도 하나의 참조 블록에서 예측된 부호화 비트를 포함한 부호화 비용을 최소화하는, 최적의 참조 블록을 선정하는 단계를 포함하고,
    상기 움직임 벡터에 대한 부호화 비트를 예측하는 단계는,
    상기 움직임 벡터 차분값에 대하여 미리 결정된 제1 초기비트값을 상기 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하는 단계를 포함하는 영상 부호화 방법.
  2. 삭제
  3. 청구항 1에 있어서,
    상기 먼저 부호화된 블록의 부호화 정보는,
    상기 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값를 포함하는, 영상 부호화 방법.
  4. 청구항 1에 있어서,
    상기 먼저 부호화된 블록의 부호화 정보는,
    상기 먼저 부호화된 블록의 참조 프레임 인덱스가 부호화된 제2 비트값을 포함하는, 영상 부호화 방법.
  5. 청구항 1에 있어서,
    상기 먼저 부호화된 블록의 부호화 정보는,
    상기 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값 및 참조 프레임 인덱스가 부호화된 제2 비트값을 포함하는, 영상 부호화 방법.
  6. 청구항 3에 있어서,
    상기 제1 초기비트값은, 상기 제1 비트값에 의해 갱신 또는 대체되는, 영상 부호화 방법.
  7. 청구항 4에 있어서,
    상기 움직임 벡터에 대한 부호화 비트를 예측하는 단계는,
    상기 움직임 벡터 차분값 및 상기 참조 프레임 인덱스에 대하여 각각 미리 결정된 제1 초기비트값 및 제2 초기비트값을 더하여 상기 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하는 단계를 포함하고,
    상기 제2 초기비트값은 상기 제2 비트값에 의하여 갱신 또는 대체되는, 영상 부호화 방법.
  8. 청구항 5에 있어서,
    상기 움직임 벡터에 대한 부호화 비트를 예측하는 단계는,
    상기 움직임 벡터 차분값 및 상기 참조 프레임 인덱스에 대하여 각각 미리 결정된 제1 초기비트값 및 제2 초기비트값을 더하여 상기 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하는 단계를 포함하고,
    상기 제1 초기비트값 및 상기 제2 초기비트값은 각각 상기 제1 비트값 및 제2 비트값에 의하여 갱신 또는 대체되는, 영상 부호화 방법.
  9. 청구항 1에 있어서,
    상기 최적의 참조 블록을 이용하여 상기 현재 블록을 부호화하는 단계를 더 포함하는, 영상 부호화 방법.
  10. 청구항 9에 있어서,
    부호화된 현재 블록의 참조 프레임 인덱스에 대한 비트값 또는 움직임 벡터 차분에 대한 비트값을 저장하는 단계를 더 포함하는, 영상 부호화 방법.
  11. 적어도 하나의 명령어를 수행하는 프로세서(processor); 및
    상기 적어도 하나의 명령어를 저장하는 메모리(memory)를 포함하는 영상 부호화 장치에서,
    상기 프로세서는,
    부호화할 현재 블록에 대하여 움직임 추정을 수행할 시작 위치를 결정하고, 결정된 시작 위치를 기초로 참조 픽쳐 내에서 움직임 탐색을 수행하여 적어도 하나의 참조 블록을 선정하고, 상기 적어도 하나의 참조 블록에 대한 움직임 벡터를 도출하고, 상기 움직임 벡터를 움직임 벡터 차분값(moving vector difference, MVD) 또는 참조 프레임 인덱스(reference frame index)로 표현하고, 상기 현재 블록보다 먼저 부호화된 블록의 부호화 정보를 참조하여, 상기 움직임 벡터에 대한 부호화 비트를 예측하고, 상기 적어도 하나의 참조 블록에서 예측된 부호화 비트를 포함한 총 비용을 최소화하는, 최적의 참조 블록을 선정하고, 상기 최적의 참조 블록을 이용하여 상기 현재 블록을 부호화하되,
    상기 움직임 벡터 차분값에 따라 미리 결정된 제1 초기비트값을 상기 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하는, 영상 부호화 장치.
  12. 삭제
  13. 청구항 11에 있어서,
    상기 먼저 부호화된 블록의 부호화 정보는,
    상기 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값를 포함하는, 영상 부호화 장치.
  14. 청구항 11에 있어서,
    상기 먼저 부호화된 블록의 부호화 정보는,
    상기 먼저 부호화된 블록의 참조 프레임 인덱스가 부호화된 제2 비트값을 포함하는, 영상 부호화 장치.
  15. 청구항 11에 있어서,
    상기 먼저 부호화된 블록의 부호화 정보는,
    상기 먼저 부호화된 블록의 움직임 벡터 차분값이 부호화된 제1 비트값 및 상기 먼저 부호화된 블록의 참조 프레임 인덱스가 부호화된 제2 비트값을 포함하는, 영상 부호화 장치.
  16. 청구항 13에 있어서,
    상기 제1 초기비트값은, 상기 제1 비트값에 의해 갱신 또는 대체되는, 영상 부호화 장치.
  17. 청구항 14에 있어서,
    상기 프로세서는,
    상기 움직임 벡터 차분값 및 상기 참조 프레임 인덱스에 대하여 각각 미리 결정된 제1 초기비트값 및 제2 초기비트값을 더하여 상기 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하고,
    상기 제2 초기비트값은 상기 제2 비트값에 의하여 갱신 또는 대체되는, 영상 부호화 장치.
  18. 청구항 15에 있어서,
    상기 프로세서는,
    상기 움직임 벡터 차분값 및 상기 참조 프레임 인덱스에 대하여 각각 미리 결정된 제1 초기비트값 및 제2 초기비트값을 더하여 상기 움직임 벡터에 대한 부호화 비트의 예측값으로 결정하고,
    상기 제1 초기비트값 및 상기 제2 초기비트값은 각각 상기 제1 비트값 및 제2 비트값에 의하여 갱신 또는 대체되는, 영상 부호화 장치.
  19. 청구항 11에 있어서,
    상기 프로세서는,
    상기 최적의 참조 블록을 이용하여 상기 현재 블록을 부호화하는, 영상 부호화 장치.
  20. 청구항 19에 있어서,
    상기 프로세서는,
    부호화된 현재 블록의 참조 프레임 인덱스에 대한 비트값 또는 움직임 벡터 차분에 대한 비트값을 저장하는, 영상 부호화 장치.
KR1020160133059A 2015-10-15 2016-10-13 움직임 추정을 이용한 영상 부호화 방법 및 장치 KR101796876B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20150144071 2015-10-15
KR1020150144071 2015-10-15

Publications (2)

Publication Number Publication Date
KR20170044599A KR20170044599A (ko) 2017-04-25
KR101796876B1 true KR101796876B1 (ko) 2017-11-10

Family

ID=58703345

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160133059A KR101796876B1 (ko) 2015-10-15 2016-10-13 움직임 추정을 이용한 영상 부호화 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101796876B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019225933A1 (ko) * 2018-05-21 2019-11-28 엘지전자 주식회사 영상 코딩 시스템에서 lut를 기반으로 도출된 mvd 를 사용하는 영상 디코딩 방법 및 그 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013111596A1 (ja) * 2012-01-26 2013-08-01 パナソニック株式会社 画像符号化方法、画像符号化装置、画像復号方法、画像復号装置、および画像符号化復号装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013111596A1 (ja) * 2012-01-26 2013-08-01 パナソニック株式会社 画像符号化方法、画像符号化装置、画像復号方法、画像復号装置、および画像符号化復号装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019225933A1 (ko) * 2018-05-21 2019-11-28 엘지전자 주식회사 영상 코딩 시스템에서 lut를 기반으로 도출된 mvd 를 사용하는 영상 디코딩 방법 및 그 장치

Also Published As

Publication number Publication date
KR20170044599A (ko) 2017-04-25

Similar Documents

Publication Publication Date Title
JP6505763B2 (ja) マージモードにおける映像復号化方法
KR101997604B1 (ko) 영상 부호화/복호화 방법 및 장치
KR101316060B1 (ko) 인터 예측 부호화된 동영상 복호화 방법
KR101830352B1 (ko) 스킵모드를 이용한 동영상 부호화 및 복호화 방법 및 장치
KR102086145B1 (ko) 인트라 예측 방법 및 그 장치
JP6005792B2 (ja) マージモードにおける映像符号化装置
KR101918318B1 (ko) 모션 예측 비디오 블록들의 계층구조
US9247254B2 (en) Non-square transforms in intra-prediction video coding
KR101943049B1 (ko) 영상 부호화/복호화 방법 및 장치
KR101484057B1 (ko) 영상 복호화 장치
TW201408076A (zh) 在視訊寫碼中用於量化轉換係數之正負號隱藏技術
KR20090087767A (ko) 영상의 인트라 예측 부호화 방법
KR20130067280A (ko) 인터 예측 부호화된 동영상 복호화 방법
KR101449683B1 (ko) 움직임 벡터 해상도 제한을 이용한 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
KR101943058B1 (ko) 영상 부호화/복호화 방법 및 장치
KR101377529B1 (ko) 적응적 움직임 벡터 부호화/복호화를 이용한 영상 부호화/복호화 방법 및 장치
KR101781300B1 (ko) 시간 상관도에 기반한 고속 영상 부호화 방법
KR101796876B1 (ko) 움직임 추정을 이용한 영상 부호화 방법 및 장치
KR101390194B1 (ko) 움직임 추정을 이용한 영상의 부호화, 복호화 방법 및 장치
KR20080068277A (ko) 움직임 추정을 이용한 영상의 부호화, 복호화 방법 및 장치
KR20170126817A (ko) 고속 영상 부호화 방법 및 장치
KR20180090975A (ko) 영상 부호화/복호화 방법 및 장치
KR20180080131A (ko) 화면 간 예측을 이용한 영상 복호화 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant