KR100714698B1 - 향상된 움직임 추정 방법, 상기 방법을 이용한 비디오인코딩 방법 및 장치 - Google Patents

향상된 움직임 추정 방법, 상기 방법을 이용한 비디오인코딩 방법 및 장치 Download PDF

Info

Publication number
KR100714698B1
KR100714698B1 KR20050079532A KR20050079532A KR100714698B1 KR 100714698 B1 KR100714698 B1 KR 100714698B1 KR 20050079532 A KR20050079532 A KR 20050079532A KR 20050079532 A KR20050079532 A KR 20050079532A KR 100714698 B1 KR100714698 B1 KR 100714698B1
Authority
KR
South Korea
Prior art keywords
motion
search
picture
type
motion vector
Prior art date
Application number
KR20050079532A
Other languages
English (en)
Other versions
KR20070027119A (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 KR20050079532A priority Critical patent/KR100714698B1/ko
Priority to EP16183931.1A priority patent/EP3217668B1/en
Priority to EP20060118687 priority patent/EP1773070A3/en
Priority to JP2006226055A priority patent/JP4732982B2/ja
Priority to CN200610126556A priority patent/CN100592794C/zh
Priority to US11/511,484 priority patent/US8571105B2/en
Publication of KR20070027119A publication Critical patent/KR20070027119A/ko
Application granted granted Critical
Publication of KR100714698B1 publication Critical patent/KR100714698B1/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/57Motion estimation characterised by a search window with variable size or shape
    • 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

향상된 움직임 추정 방법, 상기 방법을 이용한 비디오 인코딩 방법 및 장치{Enhanced motion estimation method, video encoding method and apparatus using the same}
도 1은 종래의 움직임 추정 방법을 나타내는 도면.
도 2는 본 발명의 일 실시예에 따른 비디오 인코더의 구성을 나타낸 블록도.
도 3은 md_class의 종류와 그 값을 나타낸 도면.
도 4는 md_class을 분류하는 예를 도시하는 도면.
도 5는 움직임 벡터들을 md_class 값으로 변환하는 예를 도시하는 도면.
도 6은 gm_type의 종류와 그 값을 나타낸 도면.
도 7은 픽쳐를 4등분하여 구성된 4개의 사분면을 나타낸 도면.
도 8은 12개의 gm_type에 따라 사분면별 대표 방향을 도시한 도면.
도 9는 gm_type을 결정하는 구체적인 알고리즘의 예를 도시한 도면.
도 10은 gm_type 중 8개의 유형에 대하여 탐색 영역을 우선 영역과 이외의 영역으로 분할하는 방식을 보여주는 도면.
도 11은 본 발명의 일 실시예에 따른, gm_type 중 사분면 별로 대표 방향이 다른 4가지 유형을 나타내는 도면.
도 12는 본 발명의 다른 실시예에 따른 픽쳐를 구분하는 방법을 나타내는 도 면.
도 13은 gm_type 중 사분면 별로 대표 방향이 다른 4가지 유형에 대하여 각 섹션 별로 대표 벡터를 표시한 도면.
도 14는 도 13의 gm_type에 따라 각 섹션 별로 탐색 영역이 다르게 표시되는 것을 보여주는 도면.
도 15는 픽쳐의 일부분의 대표 방향에 의하여 나머지 부분의 탐색 영역을 설정하는 예를 나타낸 도면.
도 16은 본 발명의 일 실시예에 따른 움직임 추정 방법을 도시하는 흐름도.
<도면의 주요부분에 대한 부호 설명>
100 : 비디오 인코더 110 : 움직임 추정부
111 : 탐색 영역 설정부 112 : 움직임 벡터 탐색부
113 : 움직임 분류부 114 : 글로벌 움직임 판단부
115 : 버퍼 120 : 움직임 보상부
125 : 차분기 130 : 변환부
140 : 양자화부 150 : 엔트로피 부호화부
160 : 역 양자화부 170 : 역 변환부
175 : 가산기
본 발명은 비디오 압축에 관한 것으로, 보다 상세하게는 비디오 압축 속도를 향상시키는 방법 및 그러한 비디오 인코더에 관한 것이다.
인터넷을 포함한 정보통신 기술이 발달함에 따라 문자, 음성뿐만 아니라 화상통신이 증가하고 있다. 기존의 문자 위주의 통신 방식으로는 소비자의 다양한 욕구를 충족시키기에는 부족하며, 이에 따라 문자, 영상, 음악 등 다양한 형태의 정보를 수용할 수 있는 멀티미디어 서비스가 증가하고 있다. 멀티미디어 데이터는 그 양이 방대하여 대용량의 저장매체를 필요로 하며 전송시에 넓은 대역폭을 필요로 한다. 따라서 문자, 영상, 오디오를 포함한 멀티미디어 데이터를 전송하기 위해서는 압축코딩기법을 사용하는 것이 필수적이다.
데이터를 압축하는 기본적인 원리는 데이터의 중복(redundancy) 요소를 제거하는 과정이다. 이미지에서 동일한 색이나 객체가 반복되는 것과 같은 공간적 중복이나, 동영상 프레임에서 인접 프레임이 거의 변화가 없는 경우나 오디오에서 같은 음이 계속 반복되는 것과 같은 시간적 중복, 또는 인간의 시각 및 지각 능력이 높은 주파수에 둔감한 것을 고려하여 지각적 중복을 제거함으로써 데이터를 압축할 수 있다. 일반적인 비디오 코딩 방법에 있어서, 시간적 중복은 움직임 추정 및 움직임 보상 기법에 의하여 제거하고, 공간적 중복은 공간적 변환(spatial transform)에 의해 제거한다.
그런데, 현재의 움직임 추정에 관한 대부분의 알고리즘은 로컬 움직임을 기반으로 하고 있다. 하지만 카메라가 움직임이거나, 화면을 가득 채우는 물체(object)가 움직임으로 인한 글로벌 움직임(global motion)이 발생하는 경우도 적 지는 않다. 상기 글로벌 움직임이란 화면 전체가 평행 이동하거나, 회전하거나, 확대/축소되는 경우와 같이, 하나의 화면을 구성하는 각 픽셀들이 어떤 규칙에 따라서 움직이는 것을 의미한다.
도 1은 종래의 움직임 추정 방법을 나타내는 도면이다. 종래의 방법에 따르면, 현재 픽쳐에 속하는 움직임 블록(움직임 추정의 단위 블록; 13)을 참조 픽쳐(10) 상에서 움직이면서 에러(error) 내지 SAD(Sum of Absolute Difference; 픽셀 간의 차이의 합)가 최소가 되는 때의 움직임 벡터를 구한다. 이 때, 일반적으로 상기 블록(13)이 움직이는 범위는 참조 픽쳐(10) 전체가 아니라 상기 블록(13)이 위치하는 지점(11)을 중심으로 소정의 픽셀 크기를 갖는 탐색 영역(14)내로 한정된다. 왜냐하면, 원래 지점(11)과 가까운 위치에서 움직임 벡터가 구해질 가능성이 클 뿐 아니라, 픽쳐 전체를 탐색하는 것은 연산량의 면에서 비효율적이기 때문이다.
도 1과 같이 움직임 블록(13)이 탐색 영역(14)내에서 움직이는 동안 에러를 계산하여 그 에러가 최소가 되는 움직임 벡터를 찾게 된다. 이 때 기준이 되는 좌표는 x값은 오른쪽으로 증가하고, y값은 아래쪽으로 증가하는 좌표를 사용한다. 이는 인코딩시 일반적으로 사용하는 좌표이며, 본 발명에서는 이 좌표를 사용한다. 만약, 움직임 블록(13)이 지점(11)에서 지점(12)로 이동할 때 에러가 최소가 되었다면 움직임 벡터는 (-3, -2)로 표시될 수 있다.
이와 같이 소정의 탐색 영역 내에서 모든 픽셀 위치로 이동하면서 이 중 에러가 최소가 되는 경우를 찾는 종래의 움직임 추정 기법, 즉 완전 탐색(full search) 알고리즘은 그 계산량이 상당히 높다. 실제로 비디오 인코더에서 수행되는 대부분의 연산 과정은 움직임 추정 및 움직임 보상 과정에서 소요되며, 특히 최근의 H.264와 같이 계층적 가변 사이즈 블록 매칭법(Hierarchical Variable Size Block Matching; HVSBM)을 사용하거나, 1/4 픽셀 단위까지 움직임 벡터를 수행(Quarter-Pel method) 하는 경우에는 그 연산량이 더욱 급증하게 된다.
따라서, 주어진 탐색 영역 중 가능성이 높은 영역부터 먼저 움직임 벡터를 탐색함으로써 비디오 인코더에서의 연산량을 절감할 수 있는 방법을 강구할 필요가 있다.
본 발명은 상기한 필요성을 고려하여 안출된 것으로, 글로벌 움직임 정보를 이용하여 움직임 추정시 완전 탐색이 가지는 정확도는 유지하되, 탐색 범위를 줄임으로써 계산량을 절감하는 것을 목적으로 한다.
또한, 본 발명은 상기 글로벌 움직임을 판단하기 위한 기준을 제시하는 것을 또 다른 목적으로 한다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 움직임 추정 방법은, (a) 이전 픽쳐가 갖는 움직임 벡터들로부터 상기 픽쳐의 글로벌 움직임 유 형을 판단하는 단계; (b) 상기 글로벌 움직임 유형을 기반으로 현재 픽쳐에 포함되는 소정의 움직임 블록에 대한 탐색 영역을 설정하는 단계; 및 (c) 상기 설정된 탐색 영역 내에서 움직임 벡터를 탐색하는 단계를 포함한다.
또한, 상기 기술적 과제를 달성하기 위한 본 발명의 다른 실시예에 따른 비디오 인코딩 방법은, 참조 픽쳐를 참조하여 현재 픽쳐의 움직임 벡터를 구하는 단계와, 상기 모션 추정 결과 얻어지는 모션 벡터를 이용하여 참조 픽쳐를 모션 보상하여 예측 픽쳐를 생성하는 단계와, 상기 현재 픽쳐와 상기 예측 픽쳐와의 차분을 부호화하는 단계를 포함하며, 상기 움직임 벡터를 구하는 단계는 (a) 이전 픽쳐가 갖는 움직임 벡터들로부터 상기 픽쳐의 글로벌 움직임 유형을 판단하는 단계와, (b) 상기 글로벌 움직임 유형을 기반으로 현재 픽쳐에 포함되는 소정의 움직임 블록에 대한 탐색 영역을 설정하는 단계와, (c) 상기 설정된 탐색 영역 내에서 움직임 벡터를 탐색하는 단계를 포함한다.
그리고, 상기 기술적 과제를 달성하기 위한 본 발명의 또 다른 실시예에 따른 비디오 인코더는, 참조 픽쳐를 참조하여 현재 픽쳐의 움직임 벡터를 구하는 모션 추정부와, 상기 모션 추정 결과 얻어지는 모션 벡터를 이용하여 참조 픽쳐를 모션 보상하여 예측 픽쳐를 생성하는 모션 보상부와, 상기 현재 픽쳐와 상기 예측 픽쳐와의 차분을 부호화하는 수단을 포함하고, 상기 모션 추정부는 이전 픽쳐가 갖는 움직임 벡터들로부터 상기 픽쳐의 글로벌 움직임 유형을 판단하는 글로벌 움직임 판단부와, 상기 글로벌 움직임 유형을 기반으로 현재 픽쳐에 포함되는 소정의 움직임 블록에 대한 탐색 영역을 설정하는 탐색 영역 설정부와, 상기 설정된 탐색 영역 내에서 움직임 벡터를 탐색하는 움직임 벡터 탐색부를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하 첨부된 도면들을 참조하여 본 발명의 실시예를 상세히 설명한다.
본 발명에서는, 완전 탐색 방법에 글로벌 움직임 정보를 적용하여 탐색 영역 중 우선적으로 탐색할 영역을 결정하고, 그 부분부터 탐색하여 오차의 기준치 이하를 만족하면 더 이상 탐색하지 않는 방법을 제안하고자 한다.
도 2는 본 발명의 일 실시예에 따른 비디오 인코더(100)의 구성을 나타낸 블록도이다. 비디오 인코더(100)는 움직임 추정부(110), 움직임 보상부(120), 차분기(125), 변환부(130), 양자화부(140), 엔트로피 부호화부(150), 역 양자화부(160), 역 변환부(170), 및 가산기(175)를 포함하여 구성될 수 있다.
움직임 추정부(110)는 본 발명의 특징이 적용된 구성요소로서, 계산된 움직임 벡터가 소정 개수의 방향 클래스(md_class) 중 어디에 속하는지를 결정하는 움 직임 분류부(113)와, 상기 md_class에 따라서 글로벌 움직임 유형(gm_type)을 판단하는 글로벌 움직임 판단부(114)와, 복원된 픽쳐(F') 및 gm_type(플래그)을 저장하는 버퍼(115)와, 탐색 영역에 상기 gm_type에 따라 탐색 영역을 설정하는 탐색 영역 설정부(111)와, 상기 설정된 탐색 영역 내에서 움직임 벡터를 탐색하는 움직임 벡터 탐색부(112)를 포함하여 구성될 수 있다.
먼저, 움직임 분류부(113)는 움직임 벡터 탐색부(112)에서 구해진 움직임 벡터(MV)를 소정 개수의 방향 클래스(이하 "md_class"이라 함) 중 어디에 속하는지를 결정한다. 본 발명의 실시예에 있어서, 상기 방향 클래스는 도 3에서 나타내는 바와 같이 총 9개로 분류된다. 물론, 당업자에 따라서 얼마든지 다른 개수 및 방식으로 분류가 가능할 것이다.
도 3에서, "NO_MOVE" 클래스는 움직임 벡터가 0인 경우를 나타내고, "RIGHT" 클래스는 움직임 벡터가 우측으로 향하는 경우를 나타내며, "LEFT" 클래스는 움직임 벡터가 좌측으로 향하는 경우를 나타낸다. 또한, "UP" 클래스는 움직임 벡터가 상방향으로 향하는 경우를, "DOWN" 클래스는 움직임 벡터가 하방향으로 향하는 경우를 나타낸다. 그리고, "RIGHT_UP" 클래스, "RIGHT_DOWN" 클래스, "LEFT_UP" 클래스, 및 "LEFT_DOWN" 클래스는 각각 움직임 벡터가 우상향, 우하향, 좌상향, 및 좌하향으로 향하는 경우를 나타낸다. 상기 클래스에는 각각을 구분하기 위한 값(value)이 0에서 8까지 할당되어 있다.
그런데, 실제로 상기 방향들과 정확히 일치하지 않는 움직임 벡터(예를 들어, 우상향 30도를 향하는 움직임 벡터)도 있을 수 있으므로, 일반적인 분류 방법 을 제시할 필요가 있다.
도 4는 md_class을 분류하는 예를 도시하는 도면이다. 도 4에서는 가로축을 x축으로 세로축을 y축이라고 할 때, 전체 영역은 y=kx, y=(1/m)x, y=-kx, y=-(1/m)x의 4개의 직선에 의하여 8개의 영역으로 나뉘어진다. 상기 k와 m은 양의 실수로서 어떤 값으로도 잡을 수 있으며, 두 값이 같은 수도, 다를 수도 있다. 본 발명에서는 k와 m은 2로 잡는다.
상기 나뉘어진 8개의 영역 각각은 하나의 md_class를 나타낸다. 예를 들어서, 상방향으로 향하는 움직임 벡터를 나타내는 "UP 클래스"(md_class=1)는 y=kx와 y=-kx에 의하여 나뉘어지는 영역 중 위쪽 영역에 해당된다.
실제로 x축 성분이 X_c이고 y축 성분이 Y_c인 움직임 벡터가 있을 때 이 움직임 벡터가 갖는 md_class은 다음의 표 1과 같이 정리될 수 있다.
md_class X_c의 부호 Y_c의 부호 r = |Y_c/X_c|
0 0 0 ·
1 (+) · r<1/2
2 (-) · r<1/2
3 · (-) r>2
4 · (+) r>2
5 (+) (-) 1/2<r<2
6 (+) (+) 1/2<r<2
7 (-) (-) 1/2<r<2
8 (-) (+) 1/2<r<2
결론적으로, 움직임 분류부(113)은 도 5의 예에서 보는 바와 같이, 현재 픽쳐 내의 복수의 움직임 벡터들(51)을 복수의 md_class 값으로 변환하여 글로벌 움직임 판단부(114)에 제공한다.
글로벌 움직임 판단부(114)는 움직임 분류부(113)로부터 제공된 md_class에 따라서 현재 픽쳐의 글로벌 움직임 유형(gm_type)을 판단한다. 본 발명의 일 실시예에 있어서, gm_type은 도 6과 같이 8방향의 병진 운동 유형과, 2개의 회전 운동 유형과, 확대 운동 유형 및 축소 운동 유형을 포함하여 총 13개의 유형으로 나뉘어진다.
각각을 살펴 보면, 먼저 NO_GLOBAL_MOTION은 글로벌 움직임이 없는 것을 나타낸다. PAN_RIGHT 유형, PAN_LEFT 유형, PAN_UP 유형, PAN_DOWN 유형은 영상 전체가 각각 우측, 좌측, 상측, 하측으로 움직이는 것을 나타낸다. 그리고, TILT_RIGHT_UP 유형, TILT_RIGHT_DOWN 유형, TILT_LEFT_UP 유형, TILT_LEFT_DOWN 유형은 영상 전체가 각각 우상향, 우하향, 좌상향, 좌하향으로 움직이는 것을 나타낸다. 또한, ZOOM_IN 유형, ZOOM_OUT 유형은 영상 전체가 각각 확대, 축소되는 것을 나타내며, ROTATE_CW 유형, ROTATE_CCW 유형은 영상 전체가 각각 시계 방향 회전으로, 반시계 방향으로 회전하는 것을 나타낸다. 각각의 gm_type에는 식별을 위한 값(value)이 0에서 14까지 할당된다. 유형 1~8은 영상전체가 한 방향으로 움직이는 글로벌 타입이며, 유형 11~14는 각 사분면이 다른 움직임을 보이는 글로벌 모션 타입이다. gm_type에는 또 다른 유형이 추가될 수도 있고, 여기서 제안한 유형이 수정/삭제될 수도 있다.
글로벌 움직임 판단부(114)는 현재 픽쳐의 gm_type을 결정하기 위하여, 먼저 현재 픽쳐를 도 7과 같이 4등분하여, 제1 내지 제4 사분면을 형성한다. 그리고, 글로벌 움직임 판단부(114)는 각각의 사분면 별로 대표 방향을 결정한다. 상기 대표 방향이란 해당 사분면에 속하는 md_class 값 중에서 가장 빈도가 높은 md_class 값이 나타내는 방향을 의미한다.
만약, 어떤 사분면이 도 5의 51과 같은 움직임 방향을 보였다면 이를 52와 같이 각 블럭의 md_class값을 구할 수 있다. 이 때, 각 블록을 움직임 블록의 가장 기본인 4x4 블록으로 환원하여 가장 빈도가 높은 md_class를 구할 수 있다. 도 5의 52에서는 가장 빈도가 높은 md_class 값은 1이므로, 해당 사분면은 우측의 대표 방향을 갖는 것으로 결정된다. 이는 실시예이며 사분면이 아니라 편의나 목적 등에 따라 다른 방법으로 프레임을 분할하여 분석하는 것도 가능하다. 또한 4x4블록이 아니라 다른 형태의 블록을 기준으로 하는 것도 가능하다.
이와 같은 과정을 각 사분면에 대하여 수행하면 하나의 픽쳐는 총 4개의 대표 방향을 갖게 되고, 글로벌 움직임 판단부(114)는 이 4개의 대표 방향을 근거로 하여 현재 픽쳐가 속하는 gm_type을 결정한다.
상기 gm_type에 따른 총 13개의 유형 중 NO_GLOBAL_MOTION을 제외한 12개의 유형은 다음의 도 8에 도시된다. 도 8에서 표시된 화살표 방향은 상기 대표 방향을 나타낸다. 이 중에서 PAN_RIGHT 유형부터 TILT_LEFT_DOWN까지 8개의 유형은 4개의 사분면이 모두 같은 방향으로 움직이지만, 그 이외의 4개의 유형은 각 사분면 별로 방향이 다름을 알 수 있다.
이러한, 대표 방향에 근거하여 글로벌 움직임 판단부(114)에서 gm_type을 결정하는 구체적인 알고리즘은 도 9과 같이 표현될 수 있다. 도 9에서 quarter1 내지 4는 각각 제1 사분면 내지 제4 사분면의 대표 방향을 나타내는 파라미터이다. 모든 사분면에서 같은 방향으로 움직일 경우, 이 방향을 글로벌 움직임 방향으로 판단할 수 있다. (움직임 블록에서 움직임 방향을 결정하는 파라미터 셋과 글로벌 움직임 타입의 파라미터 셋에서 0~8까지는 서로 같은 방향을 같은 값으로 정의한다.) 이 때, 보다 유연한 알고리즘에서는 네 개의 사분면 중 3개 이상이 같은 방향일 경우, 이 방향을 글로벌 움직임으로 판단하는 등, 필요에 따라 기준을 조정할 수 있다. 상기 알고리즘에서 도 8의 12개의 gm_type에 해당되지 않는 경우에는 규칙적인 움직임은 없는 것으로 판단하여 gm_type은 NO_GLOBAL_MOTION으로 설정된다.
글로벌 움직임 판단부(114)가 현재 픽쳐에 대하여 결정한 글로벌 움직임 유형, 즉 gm_type은 버퍼(115)에 저장되었다가 그 다음 픽쳐에 대한 움직임 벡터 탐색시에 이용된다.
이 후, 다음 픽쳐(F)가 움직임 벡터 탐색부(112)로 입력되면, 움직임 벡터 탐색부(112)는 탐색 영역 설정부(111)에 조회하여 탐색 영역을 제공받는다.
탐색 영역 설정부(111)는 버퍼(115)에 저장된 gm_type를 기반으로 하여, 현재 움직임 블록의 탐색 영역을 결정하게 된다. 이 때, gm_type이 8이하이면 전체 영상이 같은 방향으로 움직이므로 모든 움직임 블록에 같은 움직임 방향을 적용하여 우선 탐색 영역을 지정하게 된다. gm_type이 10보다 큰 경우, 움직임 블록의 위치에 따라 움직임 방향도 달라지므로 이 때는, 현재 움직임 블록의 프레임 내 위치를 고려하여 현재 움직임 블록의 위치가 해당되는 영역을 찾고 이 영역에서의 움직임 방향을 찾아, 이 움직임 방향에 따라 우선 탐색 영역을 지정한다. 상기 움직임 블록에 대한 탐색 영역을 설정했으면 이를 움직임 벡터 탐색부(112)에 제공한다.
그런데, 일반적으로 비디오 시퀀스 상에서 실제로 물체가 움직이는 방향과 움직임 벡터의 방향은 참조 픽쳐가 현재 픽쳐 이전에 존재하는가 이후에 존재하는가에 따라서 일치할 수도 있고 반대가 될 수도 있다. 만약, 비디오 시퀀스상 현재 픽쳐 이후에 존재하는 픽쳐를 참조 픽쳐로 한다면 움직임 벡터와 실제 물체의 움직임은 동일할 수 있지만, 이전에 존재하는 픽쳐를 참조 픽쳐로 한다면 움직임 벡터와 실제 물체의 움직임은 반대로 될 수 있다. 하지만, 본 발명에서 표시하는 모든 벡터의 방향은 실제 움직임과 무관하게 움직임 벡터를 기준으로 한다. 따라서, 실제로 물체의 움직임 방향과 본 발명에서 정의하는 gm_type에 따른 방향은 반대가 될 수도 있다. 하나의 픽쳐 내에서 모션 탐색을 동일한 참조 픽쳐를 기준으로 한다면 문제가 되지 않는다. 그러나, 만약 하나의 픽쳐 내의 어떤 매크로블록은 이전 픽쳐를 참조 픽쳐로 하고, 다른 매크로블록은 이후 픽쳐를 참조 픽쳐로 한다면, 둘 중 하나의 매크로블록은 본 발명의 gm_type에서 정의된 대표 방향과 반대 방향인 대표 방향을 갖는 것으로 생각하면 될 것이다.
탐색 영역 설정부(111)는 우선, 직사각형(정사각형을 포함함) 형태의 탐색 영역을 선택한다. 상기 탐색 영역이란 종래 기술과 같이 사각형 형태로 선택되며, 가로 및 세로가 픽셀 크기로 표현된다. 상기 탐색 영역으로는 디폴트로 저장된 값이 사용될 수도 있고 사용자로부터 입력된 값이 사용될 수도 있다.
탐색 영역 설정부(111)는 버퍼(115)에 저장된 이전 픽쳐의 gm_type을 참조하여, 상기 탐색 영역을 우선권이 높은 우선 영역과, 우선권이 낮은 이외의 영역으로 분할한다. 왜냐하면 현재 픽쳐의 gm_type은 직전 픽쳐의 gm_type과 동일할 가능성이 높기 때문이다.
도 10은 이전 픽쳐의 gm_type 중 8개의 유형에 대하여 탐색 영역을 우선 영역과 이외의 영역으로 분할하는 방식을 보여준다. 상기 8개의 유형에서는 픽쳐 내의 모든 영상이 같은 방향으로 움직이는 것(즉, 병진 운동을 하는 것)으로 볼 수 있으므로, 상기 탐색 영역이 픽쳐 중 어떤 위치에 있는가에 무관하게 동일한 분할 방식을 갖는다. 도 10에서, 정사각형은 탐색 영역을, 음영으로 나타낸 부분은 우선 영역을 각각 나타낸다.
보다 자세히 보면, gm_type이 PAN_RIGHT인 경우 글로벌 움직임은 오른쪽 방향을 향하므로, 에러가 최소가 되는 점은 움직임 탐색 원점(검은 점으로 표시됨)의 우측 영역에서 발견될 가능성이 높다. 따라서, 탐색 원점의 우측 부분이 우선권을 갖는 영역, 즉 우선 영역으로 지정한다. 또한, gm_type이 TILT_RIGHT_UP인 경우 글로벌 움직임은 우상 방향을 향하므로 탐색 영역 중 우상 방향의 1/2 영역을 우선 역으로 지정한다. 나머지 gm_type도 마찬가지 방식으로 우선 영역이 지정된다.
도 10에서와 같이, 우선 영역은 탐색 영역의 약 1/2을 표시하며 이 때, 이 우선 영역은 적어도 탐색 원점을 포함하는 것이 바람직하다. 경우에 따라 도 10에서의 점선과 같이 다소 1/2을 상회하도록 지정할 수 있다. 이것은 일반적인 경우에 있어서, 움직임 벡터가 탐색 원점 주변에서 구해질 가능성이 크기 때문이다.
한편, 도 11과 같이, gm_type 중에서 ZOOM_IN, ZOOM_OUT, ROTATE_CW, 또는 ROTATE_CCW 유형을 갖는 픽쳐는 각 사분면 별로 대표 방향이 서로 다르므로, 탐색 영역 또는 움직임 블록이 속하는 사분면을 파악할 필요가 있다.
현재 픽쳐(20)의 gm_type이 ROTATE_CW인 경우를 예를 들면, 탐색 영역(검은색 사각형으로 표시됨)이나 움직임 블록이 제1 사분면에 속하는 경우 우선 영역은 탐색 영역의 우하측 부분으로 지정되고, 제2 사분면에 속하는 경우 우선 영역은 탐색 영역의 좌하측 부분으로 지정되며, 제3 사분면에 속하는 경우 우선 영역은 탐색 영역의 좌상측 부분으로 지정되고, 제4 사분면에 속하는 경우 우선 영역은 탐색 영역의 우상측 부분으로 지정된다.
이외에 gm_type이 ZOOM_IN, ZOOM_OUT, 또는 ROTATE_CCW인 경우에서도 마찬가지로 도 11에 도시된 바와 같이 각 사분면 별로 서로 다른 형태로 우선 영역이 지정된다.
또 다른 실시예에 있어서, 현재 픽쳐의 영역을 도 11과 같이 사분면 별로 구분하는 것이 아니라 보다 세부적으로 구분하는 경우도 생각할 수 있다. 도 12를 참조하면, 현재 픽쳐(30)는 총 12개의 섹션(section)으로 세분화될 수 있다. 즉, 현재 픽쳐(30)는 4개의 코너 섹션(31, 32, 33, 34)과, 4개의 경계 섹션(51, 52, 53, 54), 및 4개의 중심 섹션(41, 42, 43, 44)로 나뉘어질 수 있다. 다만, 이와 같이 현재 픽쳐를 세분화하는 것은 이미 결정된 gm_type에 따라서 우선 영역을 결정하는 데 이용되며, 현재 픽쳐가 어떤 gm_type을 갖는가를 결정하는 과정에서는 도 8과 같이 4개의 사분면으로 나누어 판단하는 정도로도 충분하다.
gm_type이 결정되면 해당 gm_type에 따라서 상기 12개의 경계 섹션 각각에 대한 대표 방향을 알 수 있고, 상기 대표 방향에 따라서 탐색 영역 중 우선 영역이 결정될 수 있다.
gm_type 중에서 픽쳐 중의 영역에 상관없이 일정한 대표 방향을 갖는 8개의 유형의 경우에는 상기와 같은 세분화된 구분은 필요가 없다. 하지만, gm_type 중에서 ZOOM_IN, ZOOM_OUT, ROTATE_CW, 또는 ROTATE_CCW 유형을 갖는 픽쳐는 섹션 별로 대표 방향이 서로 다르므로, 탐색 영역 또는 움직임 블록이 속하는 사분면을 각각 파악할 필요가 있는 것이다.
도 13은 상기 네 가지 유형에 대하여 각 섹션 별로 대표 벡터를 표시한 도면이다. 도 13에서 보면, 4개의 코너 섹션과 4개의 중심 섹션은 각각 대응되는 섹션 별로 동일한 대표 벡터를 가지는 것을 알 수 있다.
도 14는 도 13의 각 섹션 별로 탐색 영역이 다르게 표시될 수 있음을 나타낸다. 여기서, 4개의 중심 섹션은 대응되는 4개의 코너 섹션과 동일한 우선 영역을 갖는다.
현재 픽쳐(40)의 gm_type이 ZOOM_OUT인 경우를 예를 들면, 탐색 영역(검은색 사각형으로 표시됨)이나 움직임 블록이 제1 코너 섹션(현재 픽쳐의 좌상 위치의 코너 섹션)에 속하는 경우 우선 영역은 탐색 영역의 우하측 부분으로 지정되고, 제2 코너 섹션(현재 픽쳐의 우상 위치의 코너 섹션)에 속하는 경우 우선 영역은 탐색 영역의 좌하측 부분으로 지정되며, 제3 코너 섹션(현재 픽쳐의 좌하 위치의 코너 섹션)에 속하는 경우 우선 영역은 탐색 영역의 우상측 부분으로 지정되고, 제4 섹션(현재 픽쳐의 좌하 위치의 코너 섹션)에 속하는 경우 우선 영역은 탐색 영역의 좌상측 부분으로 지정된다.
또한, 탐색 영역이나 움직임 블록이 제1 코너 섹션 및 제2 코너 섹션 사이의 경계 섹션의 속하는 경우 우선 영역은 하측 부분으로 지정되고, 제2 코너 섹션 및 제4 코너 섹션 사이의 경계 섹션의 속하는 경우 우선 영역은 좌측 부분으로 지정되고, 제3 코너 섹션 및 제4 코너 섹션 사이의 경계 섹션의 속하는 경우 우선 영역은 상측 부분으로 지정되고, 제1 코너 섹션 및 제3 코너 섹션 사이의 경계 섹션의 속하는 경우 우선 영역은 우측 부분으로 지정된다.
나머지, 탐색 영역이나 움직임 블록이 중심 섹션에 속하는 경우 우선 영역은 대응되는 코너 섹션에서와 동일하다.
그런데, 만약 이전 픽쳐의 gm_type이 NO_GLOBAL_MOTION으로 되어 있거나 현재 픽쳐가 최초의 픽쳐인 경우에는 탐색 영역의 우선 영역을 예측할 근거가 없으므로, 탐색 영역 설정부(111)는 종래의 방법과 마찬가지로 움직임 벡터 탐색부(112)가 탐색 영역 전체에 대하여 움직임 벡터를 탐색하도록 한다.
다만, 이와 같이 이전 픽쳐로부터 예측된 글로벌 움직임이 없는 경우에도 현재 픽쳐 중 일부에 대해서는 본 발명을 적용할 수가 있다. 도 12를 참조하면, 현재 픽쳐(20) 중 상반면(26)에 대하여 움직임 벡터 탐색이 완료된 후, 하반면(27)에 속하는 움직임 블록(28)에 대한 탐색 영역은 상기 탐색이 완료된 상반면(26)의 대표 방향에 따라서 정해질 수 있다.
상반면(26)은 2개의 사분면(제1 사분면과 제2 사분면)으로 이루어져 있으므로 2개의 대표 방향을 가질 수 있다. 따라서, 4개의 대표 방향에 의하여 결정되는 글로벌 움직임 유형(gm_type)은 정할 수 없지만, 2개의 대표 방향이 일치되는 경우에는 하반면(27)에서도 상기 대표 방향과 같은 방향으로 병진 운동이 일어나는 것으로 추측할 수 있다.
따라서, 탐색 영역 설정부(111)는 상기 2개의 사분면에서의 대표 방향이 일치하는 경우에는 하반면(26)에 속하는 움직임 블록(28)에 대한 탐색 영역 및 우선 영역을 상기 도 10과 마찬가지 방법으로 결정할 수 있다.
도 12은 하나의 실시예에 불과하고, 소정의 사분면이 갖는 대표 방향을 이용하여 나머지 사분면에 속하는 움직임 블록의 탐색 영역을 설정하는 다른 방법도 얼마든지 가능하다. 예를 들어, 제1 사분면의 대표 방향에 따라 나머지 사분면에 속하는 움직임 블록의 탐색 영역을 설정할 수도 있고, 제1 및 제3 사분면의 대표 방향에 따라 나머지 제2 및 제4 사분면에 속하는 움직임 블록의 탐색 영역을 설정할 수도 있을 것이다.
탐색 영역 설정부(111)는 이상의 알고리즘에 따라서 결정된 탐색 영역 및 우선 영역에 관한 정보를 움직임 벡터 탐색부(112)에 제공한다. 상기 정보는 예컨대, 움직임 벡터를 탐색하는 단위, 즉 움직임 블록 별로 제공될 수 있다.
다시 도 1로 돌아가면, 움직임 벡터 탐색부(112)는 탐색 영역 설정부(111)로부터 제공된 탐색 영역 내에서 움직임 벡터를 탐색한다. 만약, 상기 제공된 탐색 영역에 별도의 우선 영역이 지정되어 있지 않다면, 움직임 벡터 탐색부(112)는 종래의 기술과 같이, 사각형 형태의 탐색 영역 내에서 움직임 벡터를 탐색한다. 움직임 벡터를 탐색하는 방법은 상술한 바와 같이, 움직임 블록을 참조 픽쳐의 탐색 영역 내에서 움직이면서 상기 움직임 블록과, 이와 대응되는 참조 픽쳐의 이미지 간의 SAD가 최소가 되도록 하는 벡터를 구하는 것이다. 상기 SAD는 MAD(Mean of Absolute Difference), 기타 두 이미지 간의 차이를 표현하는 어떤 값으로 대체되어도 좋다.
한편, 탐색 영역 설정부(111)로부터 제공된 탐색 영역에 별도의 우선 영역이 지정되어 있다면, 움직임 벡터 탐색부(112)는 먼저, 우선 영역 내에서 움직임 벡터를 탐색한다. 그 결과 우선 영역 내에서 어떤 SAD가 소정의 임계치보다 작은 경우가 발견되면 그 때의 벡터를 움직임 벡터(MV)로 선정한다. 만약, 우선 영역 내에서 상기 임계치보다 작은 SAD가 발견되지 않는다면, 그 다음에는 탐색 영역 중 우선 영역 이외의 영역에 대하여 움직임 벡터를 탐색하여 상기 임계치보다 작은 SAD가 발견되는지를 찾는다. 만약, 우선 영역 이외의 영역에서도 상기 임계치보다 작은 SAD가 발견되지 않는다면, 전체 탐색 영역 중 SAD가 최소가 되는 지점에서의 벡터를 움직임 벡터(MV)로 선정한다.
움직임 벡터 탐색부(112)는 이와 같이 구한 움직임 벡터를 움직임 보상부(120) 및 움직임 분류부(113)에 제공한다.
움직임 분류부(113)는 전술한 바와 같이, 상기 제공된 움직임 벡터가 소정 개수의 방향 클래스(md_class) 중 어디에 속하는지를 결정하고, 글로벌 움직임 판단부(114)는 상기 md_class에 따라서 글로벌 움직임 유형(gm_type)을 판단하여 그 결과를 버퍼(115)에 저장한다. 버퍼(115)에 저장된 gm_type은 이후 인코딩될 픽쳐의 움직임 추정을 위하여 사용된다.
한편, 움직임 보상부(120)는 움직임 추정부(110)으로부터 제공된 움직임 벡터(MV)를 이용하여 참조 픽쳐(Fr')를 움직임 보상(motion compensation)하여, 예측 픽쳐(P)를 구한다. 만약, 참조 픽쳐(Fr')가 복수인 경우에는 복수의 참조 픽쳐를 움직임 보상한 후 각각의 가중합을 예측 픽쳐(P)로 사용하기도 한다.
상기 Fr'에서 r은 참조 픽쳐(reference picture)임을 표시하고, 프라임(')은 복원된 픽쳐(인코딩 후 디코딩된 픽쳐)임을 표시한다. 본 명세서에서 프라임은 이와 같은 의미로 사용된다. 이와 같이, 참조 픽쳐로서 복원된 픽쳐를 이용하는 방식을 폐루프 코딩(closed loop coding)이라고 하고 원래 픽쳐(original picture)를 이용하는 방식을 개루프 코딩(open loop coding)이라고 한다. 본 발명에서는 폐루프 코딩을 예로 들어 설명할 것이지만, 본 발명이 개루프 코딩에도 적용 가능함은 물론이다.
차분기(125)는 현재 픽쳐(F)에서 상기 예측 픽쳐(P)를 차분하여 계산되는 잔차 신호(R)를 변환부(130)에 제공한다.
변환부(130)는 상기 잔차 신호(R)에 대하여 공간적 변환을 수행함으로써 변환 계수(RT)를 생성한다. 이러한 공간적 변환 방법으로는, DCT(Discrete Cosine Transform), 웨이블릿 변환(wavelet transform) 등이 사용될 수 있다. DCT를 사용하는 경우 상기 변환 계수는 DCT 계수가 될 것이고, 웨이블릿 변환을 사용하는 경우 상기 변환 계수는 웨이블릿 계수가 될 것이다.
양자화부(140)는 상기 변환 계수를 양자화(quantization) 한다. 상기 양자화(quantization)는 임의의 실수 값으로 표현되는 상기 변환 계수를 불연속적인 값(discrete value)으로 나타내는 과정을 의미한다. 예를 들어, 양자화부(140)는 임의의 실수 값으로 표현되는 상기 변환 계수를 소정의 양자화 스텝(quantization step)으로 나누고, 그 결과를 정수 값으로 반올림하는 방법으로 양자화를 수행할 수 있다. 상기 양자화 스텝은 출력되는 비트스트림으로부터 피드백을 받아 가변적으로 결정될 수 있는데, 그 크기에 따라서 비디오 압축률이 달라지게 된다.
양자화부(140)에 의하여 양자화된 결과, 즉 양자화 계수(RQ)는 엔트로피 부호화부(150) 및 역 양자화부(160)에 제공된다.
역 양자화부(160)는 상기 양자화 계수를 역 양자화한다. 이러한 역 양자화 과정은 양자화 과정에서 사용된 것과 동일한 양자화 스텝을 이용하여 양자화 과정에서 생성된 인덱스로부터 그에 매칭되는 값을 복원하는 과정이다.
역 변환부(170)는 상기 역 양자화된 결과를 입력받아 역 변환을 수행한다. 이러한 역 변환은 변환부(130)의 변환 과정의 역 과정으로 수행되며, 구체적으로는 역 DCT 변환, 역 웨이블릿 변환 등이 사용될 수 있다.
가산기(175)는 상기 역 변환된 결과와 상기 움직임 보상부(120)에서 출력되었던 예측 픽쳐(P)를 가산함으로써 복원된 현재 픽쳐(F')를 생성할 수 있다.
버퍼(115)는 가산기(175)로부터 제공되는 결과를 저장한다. 따라서 버퍼(115)에는 복원된 현재 픽쳐(F') 뿐만이 아니라, 미리 복원된 참조 픽쳐(Fr')도 저장될 수 있는 것이다.
한편, 엔트로피 부호화부(150)는 움직임 추정부(105)에서 추정된 움직임 벡터(MV)와, 양자화부(140)로부터 제공되는 압축된 텍스쳐(RQ)를 무손실 부호화하여 비트스트림을 생성한다. 이러한 무손실 부호화 방법으로는, 허프만 부호화(Huffman coding), 산술 부호화(arithmetic coding), 가변 길이 부호화(variable length coding), 기타 다양한 방법이 이용될 수 있다.
도 2의 비디오 인코더(100)를 구성하는 요소들은 본 명세서에서 설명된 기능들을 수행하도록 설계된 범용 프로세서, DSP(digital signal processor), ASIC(application specific integrated circuit), FPGA(field programmable gate array) 또는 다른 프로그램가능 논리 장치, 이산 게이트 또는 트랜지스터 논리 장치, 이산 하드웨어 성분들, 또는 그것들의 임의의 결합으로 구현되거나 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 선택적으로는, 그 프로세서는 임의의 종래 프로세서, 제어기, 마이크로 제어기, 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 장치들의 결합, 예컨대, DSP와 마이크로프로세서의 결합, 복수의 마이크로프로세서들, DSP 코어와 관련한 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로 구현될 수 있다.
도 16은 본 발명의 일 실시예에 따른 움직임 추정 방법을 도시하는 흐름도이다.
상기 움직임 추정 방법은 이전 픽쳐가 갖는 움직임 벡터들로부터 상기 픽쳐의 글로벌 움직임 유형을 판단하는 단계(S10)와, 상기 글로벌 움직임 유형을 기반으로 현재 픽쳐에 포함되는 소정의 움직임 블록에 대한 탐색 영역을 설정하는 단계(S20)와, 상기 설정된 탐색 영역 내에서 움직임 벡터를 탐색하는 단계(S30)로 이루어질 수 있다.
세부 단계를 살펴 보면, 움직임 분류부(113)는 상기 이전 픽쳐가 갖는 움직임 벡터들이 속하는 방향 클래스들(md_class)을 결정한다(S11). 상기 방향 클래스는 360도를 8등분하는 8개의 방향을 포함하는데, 상기 8등분은 네 개의 직선 y=kx, y=-kx, y=(1/m)x, 및 y=-(1/m)x에 의하여 이루어질 수 있다. 상기 k와 m은 양의 실수로서, 두 값이 같거나 다를 수 있으며 바람직한 값은 둘 다 2정도이다.
그러면, 글로벌 움직임 판단부(114)는 상기 방향 클래스들 중 소정의 영역에 속하는 방향 클래스들을 대표하는 대표 방향을 결정한다(S12). 상기 소정의 영역은 상기 이전 픽쳐를 4등분한 영역 중 적어도 하나를 의미한다.
상기 대표 방향은 상기 소정의 영역에 속하는 방향 클래스 중에서 빈도가 가장 높은 방향 클래스의 방향, 또는 상기 소정의 영역에 속하는 방향 클래스 중에서 움직임 블록의 면적을 가중한 빈도가 가장 큰 값을 갖는 방향 클래스의 방향을 의미한다.
그리고, 글로벌 움직임 판단부(114)는 상기 대표 방향을 참조하여 상기 글로벌 움직임 유형(gm_type)을 판단한다(S13). 상기 글로벌 움직임 유형은 8방향의 병진 운동 유형과, 2개의 회전 운동 유형과, 확대 운동 유형 및 축소 운동 유형을 포함할 수 있다.
S21 단계에서, 상기 이전 픽쳐에 글로벌 모션이 존재하는 경우(gm_type이 NO_GLOBAL_MOTION이 아닌 경우)에, 탐색 영역 설정부(111)는 먼저, 사용자의 입력 또는 디폴트 값에 의하여 탐색 영역을 설정한다(S22).
그리고, 상기 글로벌 움직임 유형을 기반으로 상기 탐색 영역 중 우선적으로 움직임 벡터를 탐색할 우선 영역을 설정한다(S23).
S21 단계에서, 상기 이전 픽쳐에 글로벌 모션이 존재하지 않는 경우에, 탐색 영역 설정부(111)는 현재 픽쳐 중 일부분(예: 제1 및 2 사분면)에 대하여 full search를 통하여 구해진 모션 벡터로부터 상기 영역의 대표 방향을 결정한다(S24). 그리고, 그에 따라서 현재 픽쳐 중 상기 일부분을 제외한 다른 부분에 대해서는 상기 대표 방향을 참조하여 우선 영역을 결정한다(S25).
상기 우선 영역은 탐색 영역 중 상기 글로벌 움직임 유형을 고려할 때 에러(SAD 또는 MAD)가 최소가 되는 가능성이 큰 1/2 영역을 포함하며, 탐색 원점을 더 포함할 수 있다.
S31 단계에서, 현재 움직임 블록에 대하여 우선 영역이 존재하면(S31의 예), 움직임 벡터 탐색부(112)는 탐색 영역 중 우선 영역에 대하여 움직임 벡터를 탐색한다(S32). 그리고, 움직임 벡터 탐색부(112)는 상기 탐색 결과 움직임 벡터를 발견하지 못하면 상기 탐색 영역 중 우선 영역 이외의 영역에 대하여 움직임 벡터를 탐색한다. 상기 움직임 벡터의 발견 여부는, 상기 움직임 블록 및 상기 움직임 블록에 대응되는 참조 픽쳐 상 이미지 사이에서 계산되는 에러가 소정의 임계치 보다 작은 경우가 존재하는가에 따라서 결정될 수 있다.
S31 단계에서, 현재 움직임 블록에 대하여 우선 영역이 존재하지 않으면(S31의 아니오), 움직임 벡터 탐색부(112)는 전체 탐색 영역에 대하여 움직임 벡터를 탐색한다(S34).
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
상술한 바와 같이 본 발명에서는 기존의 완전 탐색(Full Search) 대비 약 50% 정도의 영역에 대해서 우선적으로 움직임 벡터를 탐색함으로써 비디오 인코더에서의 인코딩 속도를 상당히 높일 수 있다.

Claims (28)

  1. (a) 이전 픽쳐가 갖는 움직임 벡터들이 속하는 방향 클래스들을 결정하는 단계;
    (b) 상기 방향 클래스 중에서 빈도가 가장 높은 방향 클래스의 움직임 방향을, 상기 방향 클래스들을 대표하는 대표 방향으로 결정하는 단계;
    (c) 상기 대표 방향을 참조하여 상기 픽쳐의 글로벌 움직임 유형을 판단하는 단계;
    (d) 상기 글로벌 움직임 유형을 기반으로 현재 픽쳐에 포함되는 소정의 움직임 블록에 대한 탐색 영역을 설정하는 단계; 및
    (e) 상기 설정된 탐색 영역 내에서 움직임 벡터를 탐색하는 단계를 포함하는 움직임 추정 방법.
  2. 삭제
  3. 제1항에 있어서, 상기 방향 클래스는
    360도를 8등분하는 8개의 방향을 포함하는 움직임 추정 방법.
  4. 제1항에 있어서, 상기 소정의 영역은
    상기 이전 픽쳐를 4등분한 영역 중 적어도 하나인 움직임 추정 방법.
  5. 삭제
  6. 제1항에 있어서, 상기 대표 방향은
    상기 소정의 영역에 속하는 방향 클래스 중에서 움직임 블록의 면적을 가중한 빈도가 가장 큰 값을 갖는 방향 클래스의 방향인 움직임 추정 방법.
  7. 제3항에 있어서, 상기 8등분은
    네 개의 직선 y=kx, y=-kx, y=(1/m)x, 및 y=-(1/m)x에 의하여 이루어지는데, 상기 k 및 m은 양의 실수인 움직임 추정 방법.
  8. 제7항에 있어서, 상기 k 및 m은 2인 움직임 추정 방법.
  9. 제1항에 있어서, 상기 글로벌 움직임 유형은
    8방향의 병진 운동 유형과, 2개의 회전 운동 유형과, 확대 운동 유형 및 축소 운동 유형을 포함하는 움직임 추정 방법.
  10. 제1항에 있어서, 상기 움직임 블록은
    16×16, 16×8, 8×16, 8×8, 8×4, 4×8, 및 4×4 중 하나의 크기를 갖는 움직임 추정 방법.
  11. 제1항에 있어서, 상기 (d) 단계는
    (d1) 탐색 영역을 설정하는 단계; 및
    (d2) 상기 글로벌 움직임 유형을 기반으로 상기 탐색 영역 중 우선적으로 움직임 벡터를 탐색할 우선 영역을 설정하는 단계를 포함하는 움직임 추정 방법.
  12. 제11항에 있어서, 상기 우선 영역은
    상기 탐색 영역 중 상기 글로벌 움직임 유형을 고려할 때 에러가 최소가 되는 가능성이 큰 1/2 영역을 포함하는 움직임 추정 방법.
  13. 제12항에 있어서, 상기 우선 영역은
    탐색 원점을 포함하는 움직임 추정 방법.
  14. 제12항에 있어서, 상기 에러는
    상기 움직임 블록 및 상기 움직임 블록에 대응되는 참조 픽쳐 상 이미지 사이에서 계산되는 SAD(Sum of Absolute Difference) 또는 MAD(Mean of Absolute Difference)인 움직임 추정 방법.
  15. 제11항에 있어서,
    상기 글로벌 움직임 유형이 없는 것으로 판단되는 경우에, 상기 (d) 단계는
    (d3) 현재 픽쳐 중 일부 부분에 대하여 기 탐색된 움직임 벡터들의 대표 방향을 결정하는 단계; 및
    (d4) 상기 대표 방향에 따라서 상기 탐색 영역 중 우선 영역을 설정하는 단계를 더 포함하는 움직임 추정 방법.
  16. 제15항에 있어서, 상기 일부 부분은
    현재 픽쳐의 제1 사분면 및 제2 사분면인 움직임 추정 방법.
  17. 제1항에 있어서, 상기 (e) 단계는
    (e1) 탐색 영역 중 우선 영역에 대하여 움직임 벡터를 탐색하는 단계; 및
    (e2) 상기 탐색 결과 움직임 벡터를 발견하지 못하면 상기 탐색 영역 중 우선 영역 이외의 영역에 대하여 움직임 벡터를 탐색하는 단계를 포함하는 움직임 추정 방법.
  18. 제17항에 있어서, 상기 움직임 벡터의 발견 여부는
    상기 움직임 블록 및 상기 움직임 블록에 대응되는 참조 픽쳐 상 이미지 사 이에서 계산되는 에러가 소정의 임계치 보다 작은 경우가 존재하는가에 따라서 결정되는 움직임 추정 방법.
  19. 참조 픽쳐를 참조하여 현재 픽쳐의 움직임 벡터를 구하는 단계와, 상기 모션 추정 결과 얻어지는 모션 벡터를 이용하여 참조 픽쳐를 모션 보상하여 예측 픽쳐를 생성하는 단계와, 상기 현재 픽쳐와 상기 예측 픽쳐와의 차분을 부호화하는 단계를 포함하는 비디오 인코딩 방법에 있어서,
    상기 움직임 벡터를 구하는 단계는
    (a) 이전 픽쳐가 갖는 움직임 벡터들이 속하는 방향 클래스들을 결정하는 단계;
    (b) 상기 방향 클래스 중에서 빈도가 가장 높은 방향 클래스의 움직임 방향을, 상기 방향 클래스들을 대표하는 대표 방향으로 결정하는 단계;
    (c) 상기 대표 방향을 참조하여 상기 픽쳐의 글로벌 움직임 유형을 판단하는 단계;
    (d) 상기 글로벌 움직임 유형을 기반으로 현재 픽쳐에 포함되는 소정의 움직임 블록에 대한 탐색 영역을 설정하는 단계; 및
    (e) 상기 설정된 탐색 영역 내에서 움직임 벡터를 탐색하는 단계를 포함하는 비디오 인코딩 방법.
  20. 제19항에 있어서, 상기 부호화하는 단계는
    상기 차분을 공간적 변환하여 변환 계수를 생성하는 단계;
    상기 변환 계수를 소정의 양자화 스텝에 따라 양자화하여 양자화 계수를 생성하는 단계; 및
    상기 양자화 계수를 무손실 부호화하는 단계를 포함하는 비디오 인코딩 방 법.
  21. 삭제
  22. 제19항에 있어서, 상기 글로벌 움직임 유형은
    8방향의 병진 운동 유형과, 2개의 회전 운동 유형과, 확대 운동 유형 및 축소 운동 유형을 포함하는 비디오 인코딩 방법.
  23. 제19항에 있어서, 상기 움직임 블록은
    16×16, 16×8, 8×16, 8×8, 8×4, 4×8, 및 4×4 중 하나의 크기를 갖는 비디오 인코딩 방법.
  24. 제19항에 있어서, 상기 (b) 단계는
    (b1) 탐색 영역을 설정하는 단계; 및
    (b2) 상기 글로벌 움직임 유형을 기반으로 상기 탐색 영역 중 우선적으로 움직임 벡터를 탐색할 우선 영역을 설정하는 단계를 포함하는 비디오 인코딩 방법.
  25. 제19항에 있어서, 상기 (d) 단계는
    (d1) 탐색 영역 중 우선 영역에 대하여 움직임 벡터를 탐색하는 단계; 및
    (d2) 상기 탐색 결과 움직임 벡터를 발견하지 못하면 상기 탐색 영역 중 우선 영역 이외의 영역에 대하여 움직임 벡터를 탐색하는 단계를 포함하는 비디오 인코딩 방법.
  26. 참조 픽쳐를 참조하여 현재 픽쳐의 움직임 벡터를 구하는 모션 추정부와, 상기 모션 추정 결과 얻어지는 모션 벡터를 이용하여 참조 픽쳐를 모션 보상하여 예측 픽쳐를 생성하는 모션 보상부와, 상기 현재 픽쳐와 상기 예측 픽쳐와의 차분을 부호화하는 수단을 포함하는 비디오 인코딩 방법에 있어서,
    상기 모션 추정부는
    이전 픽쳐가 갖는 움직임 벡터들이 속하는 방향 클래스들을 결정하고, 상기 방향 클래스 중에서 빈도가 가장 높은 방향 클래스의 움직임 방향을, 상기 방향 클래스들을 대표하는 대표 방향으로 결정하고, 상기 대표 방향을 참조하여 상기 픽쳐의 글로벌 움직임 유형을 판단하는 글로벌 움직임 판단부;
    상기 글로벌 움직임 유형을 기반으로 현재 픽쳐에 포함되는 소정의 움직임 블록에 대한 탐색 영역을 설정하는 탐색 영역 설정부; 및
    상기 설정된 탐색 영역 내에서 움직임 벡터를 탐색하는 움직임 벡터 탐색부를 포함하는 비디오 인코더.
  27. 제26항에 있어서, 상기 부호화하는 수단은
    상기 차분을 공간적 변환하여 변환 계수를 생성하는 변환부;
    상기 변환 계수를 소정의 양자화 스텝에 따라 양자화하여 양자화 계수를 생성하는 양자화부; 및
    상기 양자화 계수를 무손실 부호화하는 엔트로피 부호화부를 포함하는 비디오 인코더.
  28. 제1항에 기재된 방법을 컴퓨터로 판독 가능한 프로그램으로 기록한 기록 매체.
KR20050079532A 2005-08-29 2005-08-29 향상된 움직임 추정 방법, 상기 방법을 이용한 비디오인코딩 방법 및 장치 KR100714698B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR20050079532A KR100714698B1 (ko) 2005-08-29 2005-08-29 향상된 움직임 추정 방법, 상기 방법을 이용한 비디오인코딩 방법 및 장치
EP16183931.1A EP3217668B1 (en) 2005-08-29 2006-08-09 Motion estimation method, video encoding method and apparatus using the same
EP20060118687 EP1773070A3 (en) 2005-08-29 2006-08-09 Motion estimation method, video encoding method and apparatus using the same
JP2006226055A JP4732982B2 (ja) 2005-08-29 2006-08-23 向上した動き推定方法、該方法を利用したビデオエンコーディング方法及び装置
CN200610126556A CN100592794C (zh) 2005-08-29 2006-08-28 提高的运动估计、视频编码方法及使用所述方法的设备
US11/511,484 US8571105B2 (en) 2005-08-29 2006-08-29 Enhanced motion estimation method, video encoding method and apparatus using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20050079532A KR100714698B1 (ko) 2005-08-29 2005-08-29 향상된 움직임 추정 방법, 상기 방법을 이용한 비디오인코딩 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20070027119A KR20070027119A (ko) 2007-03-09
KR100714698B1 true KR100714698B1 (ko) 2007-05-07

Family

ID=37734955

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20050079532A KR100714698B1 (ko) 2005-08-29 2005-08-29 향상된 움직임 추정 방법, 상기 방법을 이용한 비디오인코딩 방법 및 장치

Country Status (5)

Country Link
US (1) US8571105B2 (ko)
EP (2) EP3217668B1 (ko)
JP (1) JP4732982B2 (ko)
KR (1) KR100714698B1 (ko)
CN (1) CN100592794C (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100912429B1 (ko) * 2006-11-09 2009-08-14 삼성전자주식회사 고속 움직임 추정을 위한 영상 검색 방법
US8050324B2 (en) * 2006-11-29 2011-11-01 General Instrument Corporation Method and apparatus for selecting a reference frame for motion estimation in video encoding
US8600189B2 (en) * 2007-11-12 2013-12-03 Qualcomm Incorporated Block-based image stabilization
KR101442608B1 (ko) * 2008-02-05 2014-09-25 삼성전자주식회사 영상을 효율적으로 부호화/복호화하는 방법 및 장치
KR101457894B1 (ko) 2009-10-28 2014-11-05 삼성전자주식회사 영상 부호화 방법 및 장치, 복호화 방법 및 장치
KR101219126B1 (ko) * 2011-04-29 2013-01-09 조선대학교산학협력단 영상 특성을 반영하여 산출한 영상 움직임 정보에 기반한 제어 방법 및 시스템
US10715817B2 (en) * 2012-12-19 2020-07-14 Nvidia Corporation Apparatus and method for enhancing motion estimation based on user input
US9135683B2 (en) * 2013-09-05 2015-09-15 Arecont Vision, Llc. System and method for temporal video image enhancement
KR101382367B1 (ko) * 2013-11-13 2014-04-09 주식회사 아나패스 움직임 추정 방법 및 이를 이용한 영상 처리 장치
KR102290964B1 (ko) * 2014-02-19 2021-08-18 삼성전자주식회사 적응적 서치 레인지를 이용한 비디오 인코딩 장치 및 그 방법
CN103974068B (zh) * 2014-05-07 2017-07-07 电子科技大学 一种基于内容的视频尺寸缩小的方法
CN105578186A (zh) * 2015-12-30 2016-05-11 深圳市云宙多媒体技术有限公司 一种镜头推动场景的码流检测方法及系统
US10097765B2 (en) 2016-04-20 2018-10-09 Samsung Electronics Co., Ltd. Methodology and apparatus for generating high fidelity zoom for mobile video
WO2018124821A1 (ko) * 2017-01-02 2018-07-05 주식회사 케이티 비디오 신호 처리 방법 및 장치
JP6990998B2 (ja) * 2017-06-06 2022-02-03 日本放送協会 カメラワーク判定装置及びプログラム
WO2019084801A1 (zh) * 2017-10-31 2019-05-09 深圳市大疆创新科技有限公司 运动估计方法和装置
CN114762331A (zh) * 2020-11-20 2022-07-15 深圳市大疆创新科技有限公司 视频编解码方法、装置、可移动平台和存储介质
CN113076894B (zh) * 2021-04-09 2022-05-17 中山大学 一种连续帧目标检测去重方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0818974A (ja) * 1994-06-24 1996-01-19 Toshiba Corp 動画像符号化装置および動画像の動き検出装置
KR20010030652A (ko) * 1998-07-22 2001-04-16 다니구찌 이찌로오, 기타오카 다카시 화상 부호화 시스템
JP2001169288A (ja) 1999-12-07 2001-06-22 Nec Corp 動きベクトル探索装置および方法
JP2003125411A (ja) 2001-10-15 2003-04-25 Nippon Telegr & Teleph Corp <Ntt> 画像符号化装置、画像復号装置並びにその方法及び画像符号化プログラム、画像復号プログラム
KR20040035777A (ko) * 2001-09-12 2004-04-29 코닌클리케 필립스 일렉트로닉스 엔.브이. 움직임 추정 및/또는 보상

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237405A (en) * 1990-05-21 1993-08-17 Matsushita Electric Industrial Co., Ltd. Image motion vector detecting device and swing correcting device
JPH04180487A (ja) * 1990-11-15 1992-06-26 Olympus Optical Co Ltd 動ベクトル検出方法及びその装置
US5351083A (en) * 1991-10-17 1994-09-27 Sony Corporation Picture encoding and/or decoding system
US5473379A (en) * 1993-11-04 1995-12-05 At&T Corp. Method and apparatus for improving motion compensation in digital video coding
JP3149840B2 (ja) * 1998-01-20 2001-03-26 日本電気株式会社 動きベクトル検出装置及び方法
AU5973899A (en) * 1998-09-07 2000-03-27 Thomson Multimedia Method of motion estimation for transmission cost reduction of motion vectors
US6418166B1 (en) * 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
JP3538055B2 (ja) * 1999-02-15 2004-06-14 日本電気株式会社 動きベクトル検出装置
EP1181828B1 (en) * 1999-05-13 2010-03-17 STMicroelectronics Asia Pacific Pte Ltd. Adaptive motion estimator
EP1075147A1 (en) * 1999-08-02 2001-02-07 Koninklijke Philips Electronics N.V. Motion estimation
KR100727910B1 (ko) * 2000-10-11 2007-06-13 삼성전자주식회사 하이브리드형 고속 움직임 추정 방법 및 그 장치
JP2003061112A (ja) * 2001-08-20 2003-02-28 Univ Waseda カメラワーク検出装置およびカメラワーク検出方法
CN101039424B (zh) * 2002-07-15 2010-05-26 株式会社日立制作所 动态图像编码方法
JP2004221757A (ja) * 2003-01-10 2004-08-05 Renesas Technology Corp 動き検出装置及び探索領域形状可変動き検出器
KR100703760B1 (ko) * 2005-03-18 2007-04-06 삼성전자주식회사 시간적 레벨간 모션 벡터 예측을 이용한 비디오인코딩/디코딩 방법 및 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0818974A (ja) * 1994-06-24 1996-01-19 Toshiba Corp 動画像符号化装置および動画像の動き検出装置
KR20010030652A (ko) * 1998-07-22 2001-04-16 다니구찌 이찌로오, 기타오카 다카시 화상 부호화 시스템
JP2001169288A (ja) 1999-12-07 2001-06-22 Nec Corp 動きベクトル探索装置および方法
KR20040035777A (ko) * 2001-09-12 2004-04-29 코닌클리케 필립스 일렉트로닉스 엔.브이. 움직임 추정 및/또는 보상
JP2003125411A (ja) 2001-10-15 2003-04-25 Nippon Telegr & Teleph Corp <Ntt> 画像符号化装置、画像復号装置並びにその方法及び画像符号化プログラム、画像復号プログラム

Also Published As

Publication number Publication date
EP3217668A1 (en) 2017-09-13
CN1925617A (zh) 2007-03-07
EP1773070A3 (en) 2011-01-12
US20070047653A1 (en) 2007-03-01
CN100592794C (zh) 2010-02-24
US8571105B2 (en) 2013-10-29
KR20070027119A (ko) 2007-03-09
EP3217668B1 (en) 2021-01-27
JP4732982B2 (ja) 2011-07-27
EP1773070A2 (en) 2007-04-11
JP2007068165A (ja) 2007-03-15

Similar Documents

Publication Publication Date Title
KR100714698B1 (ko) 향상된 움직임 추정 방법, 상기 방법을 이용한 비디오인코딩 방법 및 장치
KR100803611B1 (ko) 영상의 부호화, 복호화 방법 및 장치
US20230140112A1 (en) Method and apparatus for video signal processing using sub-block based motion compensation
US8625916B2 (en) Method and apparatus for image encoding and image decoding
KR100772873B1 (ko) 스무딩 예측을 이용한 다계층 기반의 비디오 인코딩 방법,디코딩 방법, 비디오 인코더 및 비디오 디코더
JP3836559B2 (ja) ディジタルビデオ符号化器における動き推定方法
JP5061179B2 (ja) 照明変化補償動き予測符号化および復号化方法とその装置
US20030156646A1 (en) Multi-resolution motion estimation and compensation
JP2008541653A (ja) スムージング予測を用いた多階層基盤のビデオエンコーディング方法、デコーディング方法、ビデオエンコーダ及びビデオデコーダ
KR100878536B1 (ko) 영상 보간 방법 및 장치
US20120008686A1 (en) Motion compensation using vector quantized interpolation filters
JP3703299B2 (ja) ピクチャ中央の画質を最適化するためのビデオ符号化方法、システムおよびコンピュータ・プログラム製品
KR100597397B1 (ko) 고속 움직임추정 알고리즘을 갖는 동영상 코딩방법 및 장치
TW202101996A (zh) 用於視訊寫碼之以梯度為基礎之預測精細化
US20120008687A1 (en) Video coding using vector quantized deblocking filters
JP2023513609A (ja) デコーダが実行するビデオデコーディングの方法、装置、及びプログラム、並びにエンコーダが実行するビデオコーディングの方法
KR20150034699A (ko) 인트라 모드를 이용한 쿼터 픽셀 해상도를 갖는 영상 보간 방법 및 장치
JP6435029B2 (ja) 映像符号化装置及び映像符号化プログラム
US20090279610A1 (en) Method and apparatus for encoding/decoding with interlace scanning based motion vector transformation
JP2023520197A (ja) ビデオコーティングのための方法、及び装置
JPWO2013001720A1 (ja) 画像符号化装置、画像復号装置、画像符号化方法及び画像復号方法
KR102111437B1 (ko) 인트라 모드를 이용한 쿼터 픽셀 해상도를 갖는 영상 보간 방법 및 장치
KR101934840B1 (ko) 인트라 모드를 이용한 쿼터 픽셀 해상도를 갖는 영상 보간 방법 및 장치
WO2021111595A1 (ja) フィルタ生成方法、フィルタ生成装置及びプログラム
CN117044203A (zh) 用于一维变换跳过的eob的信令

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
FPAY Annual fee payment

Payment date: 20130318

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140325

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150313

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160318

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170321

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180320

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190320

Year of fee payment: 13