KR100587562B1 - 비디오 프레임에 대한 움직임 추정 방법 및 비디오 인코더 - Google Patents

비디오 프레임에 대한 움직임 추정 방법 및 비디오 인코더 Download PDF

Info

Publication number
KR100587562B1
KR100587562B1 KR1020040032242A KR20040032242A KR100587562B1 KR 100587562 B1 KR100587562 B1 KR 100587562B1 KR 1020040032242 A KR1020040032242 A KR 1020040032242A KR 20040032242 A KR20040032242 A KR 20040032242A KR 100587562 B1 KR100587562 B1 KR 100587562B1
Authority
KR
South Korea
Prior art keywords
frame
motion
motion vectors
initial value
block
Prior art date
Application number
KR1020040032242A
Other languages
English (en)
Other versions
KR20050100321A (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 JP2005072017A priority Critical patent/JP2005304005A/ja
Priority to EP05251898A priority patent/EP1587328A2/en
Priority to US11/103,467 priority patent/US20050232499A1/en
Publication of KR20050100321A publication Critical patent/KR20050100321A/ko
Application granted granted Critical
Publication of KR100587562B1 publication Critical patent/KR100587562B1/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/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/223Analysis of motion using block-matching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • 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/53Multi-resolution motion estimation; Hierarchical motion estimation
    • 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

Abstract

본 발명은 비디오 프레임에 대한 움직임 추정방법과 비디오 인코더에 관한 것이다.
비디오 프레임에 대한 움직임 추정 방법은 움직임 추정 대상 비디오 프레임을 다운 샘플링하여 저 해상도의 프레임을 제공하는 단계와, 저해상도 프레임에서 블록 단위의 움직임 벡터들을 추정하는 단계, 및 상기 블록들을 업 샘플링하여 고해상도 프레임에서 블록 단위의 움직임 벡터들을 추정하기 위한 초기값을 생성하는 단계를 포함한다.
비디오, 움직임, 계층적, 초기값

Description

비디오 프레임에 대한 움직임 추정 방법 및 비디오 인코더{Method for motion estimation of video frame, and video encoder using the same}
도 1은 계층적 움직임 벡터 탐색 과정을 보여주는 흐름도이다.
도 2는 종전의 가변 블록 움직임 벡터 탐색 과정을 보여주는 도면이다.
도 3은 본 발명의 일 실시예에 따른 가변 블록 움직임 벡터 탐색 과정을 보여주는 도면이다.
도 4는 본 발명의 일 실시예에 따른 업 샘플링과 다운 샘플링 과정을 보여주는 도면이다.
도 5는 비디오 인코더의 구성을 보여주는 블록도이다.
도 6은 본 발명의 일 실시예에 따른 움직임 추정 모듈의 구성을 보여주는 블록도이다.
본 발명은 비디오 프레임에 대한 움직임 추정방법과 비디오 인코더에 관한 것이다.
일반적으로 동영상은 공간적 상관성(spatial correlation)과 시간적 상관성(temporal correlation)을 동시에 갖는다. 이렇듯 공간적 및 시간적 상관성을 갖는 동영상으로부터 공간적 및 시간적 중복성(redundancy)을 제거하는 과정이 비디오 코딩이다.
비디오 코딩에서 공간적 중복성은 공간적 변환(spatial transform) 과정을 통해 제거하고, 시간적 중복성은 움직임 추정(motion estimation) 및 움직임 보상(motion compensation) 과정을 통해 제거한다.
현재 알려진 공간적 변환의 대표적인 알고리즘으로 이산코사인변환(discrete cosine transform; 이하, "DCT"라 함)과 웨이브렛 변환(wavelet transform)이 있다. DCT는 이미지 프레임을 화상을 주파수별로 분해 한다. 주파수가 0인 성분이나 저주파 성분이 고주파 성분에 비해 중요한 정보가 된다. DCT는 현재 MPEG-2 비디오 코딩 알고리즘으로 채택되어 있다. 웨이브렛 변환은 이미지 프레임을 서로 다른 주파수 대역과 해상도를 갖는 여러 개의 부대역(subband)로 분해한다. 즉, 원래의 이미지를 1/4 크기로 축소한 저주파 서브밴드(L 서브밴드)와 고주파 서브밴드들(H 서브밴드들)로 분해한다. 분해된 저주파 서브밴드는 다시 1/4 크기로 축소한 저주파 서브밴드(LL 서브밴드)와 고주파 서브밴드들(LH 서브밴드들)로 분해 한다. 저주파 서브밴드(L 서브밴드 또는 LL 서브밴드)는 크기는 작지만 전체 이미지 프레임의 대부분 에너지를 포함한다.
동영상에서 시간적 중복성이 공간적 중복성보다 큰 특성을 갖는다. 시간적 중복성은 프레임간 코딩(inter-frame coding)을 통해 제거할 수 있다. 프레임간 코딩 방법은 연속 프레임간의 움직임을 추정하는 움직임 추정 과정과 추정된 움직 임 정보를 이용한 움직임 보상 과정, 및 움직임 보상된 프레임과 현재 프레임간의 차분 프레임(residual frame)을 구하는 과정으로 구성된다. 비디오 코딩에서 움직임 추정 방법으로는 블록 정합 알고리즘(block matching algorithm; 이하, "BMA"라 함)이 사용된다. BMA는 간단한 알고리즘으로 하드웨어로 용이하게 구현할 수 있으나, 움직임에 대하여 적절한 탐색 영역과 블록의 크기를 결정하기 어렵고 일정한 크기의 블록으로 나누어 움직임을 추정하기 때문에 구획화 현상(blocking effect)이 발생하는 단점이 있다. 또한 BMA로 완전 탐색(full search)를 할 경우에 엄청난 연산능력(computing power)을 필요로 한다. 실제로 비디오 코딩에서 움직임 추정과정은 전체 계산능력의 70~80% 정도를 차지할 정도로 많은 연산능력을 필요로 한다. 이러한 단점들을 제거하기 위하여 어려가지 방법들이 연구되고 있는데 계층적 움직임 벡터 탐색(hireachical motion vector search) 방법이 그 중 하나이다.
계층적 움직임 벡터 탐색은 여러 해상도의 피라미드 구조를 갖는 현재 프레임과 참조 프레임을 구성한 후 가장 낮은 해상도의 움직임 벡터를 재조정(refine)하여 점차로 높은 해상도의 움직임 벡터를 반복적으로 추정하는 알고리즘으로, 현재의 블록(macroblock)을 세부적으로 나누어서 분석(split)하면서 최상 해상도(full resolution)의 움직임 벡터를 생성하는 알고리즘이다. 계층적 움직임 벡터 탐색 BMA에 비해 탐색 시간이 적게 소모되며, 저해상도에서 전역 움직임(global motion)을 추정하고 고해상도에서 국부 움직임(local motion)을 추정하여 부드러운 움직임 벡터장을 만들어 내는 특성을 갖는다.
종전의 계층적 움직임 벡터 탐색 방법은 가장 낮은 해상도의 기저대역(base band) 또는 최상 계층(top layer)에서 추정한 움직임 벡터를 하위 계층의 움직임 벡터 탐색에서 초기값으로 사용하는데, 상위 계층(또는 낮은 해상도)에서 추정된 움직임 벡터에 2를 곱하거나 같은 계층에서 추정된 움직임 벡터를 그대로 사용한다. 계층적 움직임 벡터 탐색 방법에서 초기값은 움직임 벡터 탐색의 연산량과 밀접한 관계가 있다. 이에 따라 다른 해상도 또는 같은 해상도에서 추정된 움직임 벡터를 이용하여 좀더 효율적으로 움직임 추정을 하는 방법이 필요하다.
본 발명은 상술한 필요성을 만족시키기 위한 것으로서, 본 발명은 낮은 해상도 또는 동일한 해상도에서 추정된 움직임 벡터를 이용한 효율적인 움직임 추정 방법을 제공하는 것을 그 목적으로 한다.
본 발명의 다른 목낮은 효율적인 움직임 추정 방법을 이용한 비디오 인코더를 제공하는 것을 그 목적으로 한다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해되어질 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 비디오 프레임에 대한 움직임 추정 방법은 움직임 추정 대상 비디오 프레임을 다운 샘플링하여 저 해상도의 프레임을 제공하는 단계와, 저해상도 프레임에서 블록 단위의 움직임 벡터들을 추정하는 단계, 및 상기 블록들을 업 샘플링하여 고해상도 프레임에서 블록 단위의 움직임 벡터들을 추정하기 위한 초기값을 생성하는 단계를 포함한다.
상기 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 비디오 인코더는 움직임 추정 대상 비디오 프레임을 다운 샘플링하여 저 해상도의 프레임을 제공하고, 저해상도 프레임에서 블록 단위의 움직임 벡터들을 추정하고, 상기 블록들을 업 샘플링하여 고해상도 프레임에서 블록 단위의 움직임 벡터들을 추정하기 위한 초기값을 생성하며, 생성된 초기값들을 이용하여 고 해상도의 움직임 추정을 수행하는 움직임 추정 모듈, 및 상기 움직임 추정 모듈에 의해 추정된 움직임 벡터들을 이용하여 재구성된 참조 프레임을 비교하여 상기 비디오 프레임에 대한 잔여 프레임을 생성하는 비교 모듈을 포함한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명한다.
도 1은 계층적 움직임 벡터 탐색과정을 보여주는 흐름도이다.
먼저 현재 프레임 및 참조 프레임에 대하여 피라미드 구조를 갖는 저해상도 프레임을 생성한다(S110). 가장 낮은 계층에는 가장 높은 해상도의 원래 프레임을 두고 원래 프레임을 저역통과필터링(또는 다운 샘플링)하여 프레임의 해상도가 낮은 상위 계층을 생성하여 저해상도 프레임을 생성한다. 이와 같이 해상도 계층은 원래 프레임과 저해상도 프레임으로 2 계층일 수 있으나, 3 이상의 계층이 될 수도 있다.
저해상도 프레임이 생성되면 먼저 가장 낮은 해상도(최상 계층)의 움직임 벡터 탐색을 한다. 좀더 자세히 살펴보면 최상 계층(top layer)에서 일정한 크기, 예를 들면 8X8 사이즈의 블록 단위로 움직임 벡터를 추정한다(S120). 그리고 나서 블록을 4개의 4X4 사이즈의 자블록들(child block)으로 분리하고(split) 각 자블록들의 움직임을 탐색한다(S122).
최상 계층에 대한 움직임 벡터 탐색이 끝나면 하위 계층(next layer)에 대해 움직임 벡터 탐색을 한다. 먼저 이전 계층에서 추정된 움직임 벡터들을 기준으로 초기값들을 설정한다(S130). 종전의 초기값 설정은 이전 계층에서 추정된 움직임 벡터들을 2배 해주는 방식으로 초기값을 설정하고, 본 발명의 실시예에 따른 초기값 설정은 후술한다. 초기값 설정이 끝나면 설정된 초기값을 기준으로 모든 노드들의 움직임 벡터들을 재조정한다(S132). 재조정이란 낮은 해상도에서 추정된 움직임 벡터값을 높은 해상도에서 다시 탐색하는 것을 의미한다. 노드란 이전 계층에서 분리된 자블록(child block)에 해당하는 현재 계층의 블록을 의미한다. 예를 들면 최상 계층에서 4X4 블록에 해당하는 현재 계층에서의 8X8 블록을 의미한다.
모든 노드들에 대한 움직임 벡터 재조정이 끝나면 8X8 사이즈의 각 노드들을 다시 자블록으로 분리하고 움직임 벡터 탐색을 한다(S136). 자블록들에 대한 움직임 벡터 탐색을 위해 먼저 초기값 설정(S134)을 하는데, 움직임 벡터 재조정에 의해 얻은 노드들의 움직임 벡터들을 초기값으로 사용한다.
현재 계층에 대한 움직임 벡터 재조정과 자블록들에 대한 움직임 벡터 탐색이 끝난 후에 현재 계층보다 높은 해상도의 하위 계층이 있다면 높은 해상도의 하위 계층에 대한 움직임 벡터 탐색을 한다. 즉, 현재 계층의 자블록에 해당하는 하위 계층의 노드들에 대한 초기값을 설정하고 노드들의 움직임 벡터를 재조정하는 과정을 수행한다. 그리고 나서 노드들을 다시 자블록으로 분리하고 재조정된 움직 임 벡터를 초기값으로 하여 자블록에 대한 움직임 벡터 탐색을 한다.
모든 계층에 대한 움직임 벡터 탐색이 끝나면 선별(pruning)과정을 수행한다(S140). 선별과정은 분리된 블록들을 병합(merge)하는 과정을 수행하여 움직임 벡터에 할당된 비트의 양을 줄인다.
도 2는 종전의 가변 블록 움직임 벡터 탐색 과정을 보여주는 도면이다. 편의상 두 개의 계층을 기준으로 움직임 추정을 수행하는 경우로 설명한다.
제2 계층은 원 해상도(original resolution)의 계층으로서 최고 해상도를 갖는 계층이고, 최상 계층(top layer)은 최저 해상도의 계층으로서 제2 계층을 다운샘플링한 계층이다.
먼저 최상 계층의 프레임의 블록(210)에 대한 움직임을 추정한다. 움직임 추정은 현재 프레임(current frame)의 블록과 대응되는 참조 프레임(reference frame)의 블록간의 움직임을 구하는 과정이다. 즉, 현재 프레임의 블록에 대응되는 참조 프레임의 블록의 위치를 바꾸어 가면서 두 블록의 차이를 코딩할 때 최소의 코스트가 되는 위치를 찾는다. 이러한 과정을 거쳐 블록(210)의 움직임 벡터를 추정하면 4개의 블록들(212)로 분리하고, 분리된 각 블록들(212)에 대한 움직임을 탐색한다.
최상 계층의 움직임 벡터 탐색이 끝나면 제2 계층에 대한 움직임 벡터 탐색을 한다. 먼저 블록(220)은 블록(210)의 움직임 벡터를 2배한 값을 초기값으로 하여 움직임을 재조정(refine)한다. 또한 블록들(222)은 블록들(212)의 움직임 벡터를 2배한 값을 초기값으로 하여 움직임을 재조정한다. 움직임 재조정이 끝나면 각 블록들(222)을 4개의 블록들(224)로 분리한 후에 분리된 블록들(224)의 움직임을 탐색한다. 이 때 분리된 블록들(224)의 움직임 벡터 탐색에 사용되는 초기값으로 분리되기 전의 각 블록들(222)의 재조정된 움직임 벡터를 사용한다.
블록(220)과 블록(220)을 분리하여 얻은 블록들(222, 224)에 대한 움직임 벡터를 모두 구하면 선별과정을 거쳐 인터 코딩에 사용될 가변 블록들(230)을 결정한다.
요약하면 계층적 움직임 벡터 탐색은 여러 해상도의 현재 프레임과 참조 프레임을 구성한 후 가장 적은 해상도의 움직임 벡터를 이용하여 점점 높은 해상도의 움직임 벡터를 반복적으로 추정하고, 현재 블록을 세부적으로 분리하면서 최고 해상도의 움직임 벡터를 생성한다. 이러한 계층적 움직임 벡터 탐색의 핵심적 과정은 재조정(refine)과 분리(split) 과정이라고 할 수 있다. 도 2와 같이 종래의 방식에서는 재조정 또는 분리 과정에서 사용하는 초기값을 설정할 때 단순히 상위 계층의 움직임 벡터에 2를 곱하거나 동일 계층의 벡터를 사용함으로써 효율적인 움직임 벡터 탐색을 하지 못할 수 있고, 따라서 움직임 벡터 코딩을 위한 비트의 손실이 생길 수 있다.
도 3은 본 발명의 일 실시예에 따른 가변 블록 움직임 벡터 탐색 과정을 보여주는 도면이다. 편의상 두 개의 계층을 기준으로 움직임 추정을 수행하는 경우로 설명한다.
제2 계층은 원 해상도의 계층으로서 최고 해상도의 계층이고, 최상 계층은 최저 해상도의 계층으로서 제2 계층을 다운샘플링한 계층이다.
먼저 최상 계층의 프레임의 블록(310)에 대한 움직임을 추정한다. 움직임 추정은 현재 프레임의 블록과 대응되는 참조 프레임의 블록간의 움직임을 구하는 과정이다. 즉, 현재 프레임의 블록에 대응되는 참조 프레임의 블록의 위치를 바꾸어 가면서 두 블록의 차이를 코딩할 때 최소의 코스트가 되는 위치를 찾는다. 이러한 과정을 거쳐 블록(310)의 움직임 벡터를 추정하면 4개의 블록들(312)로 분리하고, 분리된 각 블록들(312)에 대한 움직임을 탐색한다.
최상 계층의 움직임 벡터 탐색이 끝나면 제2 계층에 대한 움직임 벡터 탐색을 한다. 제2 계층의 움직임 벡터 탐색에 사용되는 초기값은 업샘플링 및 다운 샘플링 과정을 통해 얻는다. 블록들(324)의 초기값은 블록들(312)을 업 샘플링(업 샘플링2)하여 얻을 수 있다. 블록들(322)의 초기값은 블록들(324)를 다운 샘플링(다운 샘플링2)하여 얻을 수도 있으나 블록(310)을 업 샘플링(업 샘플링1)하여 얻을 수도 있다. 블록(320)의 초기값은 블록들(322)을 다운 샘플링(다운 샘플링1)하여 얻을 수 있다. 블록들(322)의 초기값은 업 샘플링2에서 다운 샘플링2를 거쳐 선택될 수도 있으나 업샘플링1을 통해서도 선택될 수 있다. 두 방식의 선택 기준은 이미지 텍스쳐의 복잡도에 따라 결정될 수 있다. 업 샘플링 및 다운 샘플링에 대한 보다 자세한 설명은 후술한다.
초기값이 설정된 블록들(320, 322, 324)에 대한 움직임 벡터를 재조정 또는 추정한 후에 선별과정을 거쳐 원 해상도의 프레임에 대한 가변블록들(330)의 움직임 벡터를 결정한다. 선별(pruning)과정은 움직임 벡터(또는 블록)의 병합으로 요약할 수 있는데, 작은 블록으로 코딩하는 경우보다 큰 블록으로 코딩하는 경우가 유리할 경우에는 큰 블록을 기준으로 코딩하도록 한다.
도 4는 본 발명의 일 실시예에 따른 업 샘플링과 다운 샘플링 과정을 보여주는 도면이다. 업 샘플링과 다운 샘플링은 널리 알려진 필터를 사용하여 수행될 수 있다. 예를 들면, Median 필터, Bi-Cubic 필터, Bi-linear 필터, Quadratic 필터 등이 사용될 수 있다.
낮은 해상도의 상위 계층 프레임(410)을 업 샘플링하면 높은 해상도의 하위 계층 프레임(420)이 된다. 업 샘플링을 통해 상위 계층의 블록마다 하위 계층의 4개의 블록에 대한 움직임 벡터 탐색을 위한 초기값을 설정할 수 있다. 초기값이 설정되면 움직임 탐색을 통해 하위 계층의 움직임 벡터를 결정한다. median 필터를 사용하는 경우를 예로 설명한다. 프레임(410)의 블록(4)를 업 샘플링하여 프레임(420)의 블록들(a, b, c, d)을 생성할 때, 각 블록들(a, b, c, d)의 움직임 벡터(초기값)는 수학식 1에 의해 결정할 수 있다.
MVa=2* median(MV1,MV3,MV4)
MVb=2* median(MV1,MV4,MV5)
MVc=2* median(MV3,MV4,MV8)
MVd=2* median(MV4,MV5,MV8)
MVa, MVb, MVc, MVd는 각각 자블록 a, b, c, d의 움직임 벡터이고, MV1, MV3, MV4, MV5, MV8은 은 각각 블록 1, 3, 4, 5, 8의 움직임 벡터이다. median은 median 함수로서 입력 벡터값들 중에서 중간값을 출력하는 함수이다. median 함수 에 곱해주는 2는 업 샘플링에 의해 해상도가 높아졌기 때문에 움직임 벡터를 스케일링한 값이다. 업 샘플링된 자블록들의 움직임 벡터를 구하는 수학식 1은 예시적인 것으로서 주변 벡터들을 이용하여 median 필터가 아닌 다른 필터를 사용하는 경우나 입력 벡터값들의 개수를 달리하는 경우도 본 발명의 기술적 범위에 포함되는 것으로 해석해야 한다.
가장 낮은 해상도의 최상 계층(top layer) 프레임(410)의 블록(4)로부터 하위 계층의 프레임(430)의 블록(e)의 움직임을 재조정할 때는 업 샘플링 과정을 거쳐 생성된 하위 계층의 4개의 블록들(a, b, c, d)을 다운 샘플링하여 얻은 움직임 벡터값을 초기값으로 설정한다. 다운 샘플링할 때도 median 필터링을 사용할 수 있다. 그렇지만 4개의 움직임 벡터를 입력받아 하나의 값을 출력해야 하기 때문에 median 필터링을 사용할 때는 중간 값의 두 움직임 벡터값 중에서 평균에 가까운 벡터를 선택한다. 이외에 다운 샘플링 방식으로 움직임 벡터들의 평균을 취할 수도 있다. 한편, 블록의 형태가 정사각형이 아닌 직사각형이 지원되는 경우에는 4개의 블록이 아닌 2개의 블록 또는 6개 혹은 8개의 블록을 다움 샘플링하여 하나의 움직임 벡터를 구할 수도 있다.
도 5는 비디오 인코더의 구성을 보여주는 블록도이다.
도 5에 도시된 비디오 인코더는 폐쇄루프(closed loop)형 비디오 인코더이다. 폐쇄루프형 비디오 인코더는 인터 프레임 코딩과정에서 입력된 원래 비디오 프레임이 아닌 이미 코딩된 프레임을 디코딩하여 재구성한 프레임을 참조한다. 이에 반해 개방루프(open loop)형 비디오 인코더는 인터 프레임 코딩과정에서 입력된 원래 비디오 프레임을 참조한다. 폐쇄루프형 비디오 인코더의 성능이 개방루프형 비디오 인코더 성능보다 우수한 특성을 보이지만, 일부 비디오 코딩 알고리즘, 예를 들면 움직임 보상 시간적 필터링(motion compensation temporal filtering)과 같은 알고리즘은 개방루프형만을 이용할 수 있다. 본 실시예는 폐쇄루프형 비디오 인코더를 기준으로 설명하지만 이는 예시적인 것이다.
먼저 비디오 인코더에 비디오 신호가 입력되면 인트라 프레임으로 코딩할지 또는 인터 프레임으로 코딩할지 여부를 결정한다. 인트라 프레임은 다른 프레임을 참조하지 않고 코딩되는 프레임을 의미하고 인터 프레임은 다른 프레임을 참조하여 코딩되는 프레임을 의미한다.
인트라 프레임은 움직임 추정 모듈(510)을 거치지 않고 바로 변환 모듈(540)과 양자화 모듈(550) 및 엔트로피 인코더(560)를 거쳐 코딩된다. 한편, 양자화된 인트라 프레임은 역 양자화 모듈(570)과 역 변환 모듈(580)을 거쳐 재구성(reconstruct)된다.
인터 프레임은 움직임 추정 모듈(510)을 거쳐 움직임이 추정된다. 움직임 추정 모듈(510)은 참조 프레임 저장 모듈(590)에 저장된 참조 프레임과 인터 프레임을 입력받아 가변 사이즈의 블록 단위로 움직임을 추정한다. 본 발명음 움직임 추정에 관한 것으로서 움직임 추정 모듈의 보다 상세한 설명은 도 6을 참조하여 설명한다. 움직임 보상 모듈(520)은 참조 프레임의 움직임을 보상하여 인터 프레임과 비교될 참조 프레임을 재구성한다. 인터 프레임은 비교 모듈(522)에서 재구성된 참조 프레임과 비교되어 잔여 프레임(residual frame)이 된다. 변환 모듈(540)은 잔여 프레임을 변환 알고리즘으로 변환시켜 공간적 중복을 제거한다. 변환 알고리즘으로는 DCT가 사용될 수도 있으나 웨이브렛 변환이 사용될 수도 있다. 양자화 모듈(550)은 변환된 프레임을 양자화하여 정보량을 감소시킨다. 한편, 양자화된 프레임은 스캐닝을 거쳐 재배열(reodering)되어 1차원 비트열이 되고 엔트로피 인코더(560)를 거쳐 압축되어 최종 비트스트림이 생성된다.
양자화된 인트라 프레임 또는 인터 프레임은 재구성되어 다른 프레임의 참조 프레임으로 사용된다. 양자화된 인트라 프레임은 역 양자화 모듈(570)과 역 변환 모듈(580)을 거쳐 재구성된다. 양자화된 인터 프레임은 역 양자화 모듈(570)과 역 변환 모듈(580)을 거쳐 잔여 프레임이 되고, 잔여 프레임은 움직임이 보상된 참조 프레임과 가산 모듈(524)에서 더해져서 재구성된다. 움직임이 보상된 참조 프레임은 참조 프레임 저장 모듈(590)에 저장된 참조 프레임을 움직임 보상 모듈(520)에서 움직임 보상하여 얻는데, 움직임 벡터는 인터 프레임 코딩과정에서 얻은 움직임 벡터를 이용한다. 재구성된 프레임들을 참조 프레임 저장 모듈(590)에 저장하여 다른 인터 프레임을 코딩할 때 참조한다.
도 6은 본 발명의 일 실시예에 따른 움직임 추정 모듈의 구성을 보여주는 블록도이다.
움직임 추정 모듈(510)은 현재 프레임과 참조 프레임의 저해상도 프레임을 생성하는 저해상도 프레임 생성 모듈(610)과 현재 프레임과 참조 프레임간의 움직임 벡터를 탐색하는 움직임 벡터 탐색 모듈과 움직임 탐색에 사용될 초기값 설정 모듈(630) 및 선별과정을 통해 움직임이 추정되는 단위블록을 결정하는 선별 모듈(640)을 포함한다.
저해상도 프레임 생성 모듈(610)은 현재 프레임과 참조 프레임을 각각 다운 샘플링하여 저해상도의 프레임을 얻는다. 해상도의 단계는 2단계가 될 수 있고, 3 단계 이상이 될 수도 있다. 저해상도 프레임이 생성되면 움직임 벡터 탐색 모듈(620)은 가장 최상 계층(최저 해상도)의 프레임과 참조 프레임을 비교하여 움직임 벡터를 추정한다. 추정된 움직임 벡터는 초기값 설정 모듈(630)을 거쳐 앞서 설명한 방식으로 초기값 설정에 사용된다. 설정된 초기값으로 움직임 벡터 탐색 모듈(620)은 하위 계층에 대한 움직임 탐색을 수행한다. 이러한 방식으로 최고 해상도(원래 해상도)의 움직임 벡터 탐색이 끝나면, 선별 모듈(640)은 최소의 비트로 움직임 벡터를 코딩할 수 있도록 블록들을 병합한다. 이러한 방식으로 가변 블록마다 얻은 움직임 벡터는 움직임 보상 모듈(520)로 보내져 움직임 추정에 사용되도록 한다. 또한, 움직임 벡터는 엔트로피 인코더(560)로 전달되어 최종 생성되는 비트스트림에 포함될 수 있도록 한다.
도 5와 도 6의 실시예에서 모듈은 소프트웨어 또는 FPGA 또는 ASIC과 같은 하드웨어로 구현될 수 있다. 그렇지만 기능성 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 기능성 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 따라서, 일 예로서 기능성 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 모듈들은 통신 시스템 내의 하나 또는 그 이상의 컴퓨터들을 실행시키도록 구현될 수도 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
본 발명에 따르면 인터 프레임 코딩에 사용될 움직임 벡터의 초기값을 적절히 설정하여 움직임 추정에 필요한 연산량을 줄일 수 있다.

Claims (10)

  1. (a)움직임 추정 대상 비디오 프레임을 다운 샘플링하여 저 해상도의 프레임을 제공하는 단계;
    (b) 저해상도 프레임에서 블록 단위의 움직임 벡터들을 추정하는 단계; 및
    (c) 상기 추정된 움직임 벡터들을 업 샘플링하여 고해상도 프레임에서 블록 단위의 움직임 벡터들을 추정하기 위한 초기값을 생성하는 단계를 포함하는 비디오 프레임에 대한 움직임 추정 방법.
  2. 제1항에 있어서,
    상기 (c) 단계에서 업 샘플링은 메디안(median) 필터링에 의해 수행되는 움직임 추정 방법.
  3. 제2항에 있어서,
    상기 (c) 단계에서 하나의 초기값을 생성할 때 메디안 필터에 상기 저해상도 프레임에서의 블록 단위의 움직임 벡터들 중 인접한 3개의 움직임 벡터들이 입력되는 움직임 추정방법.
  4. 제1항에 있어서,
    상기 초기값들을 이용하여 고해상도 블록들의 움직임 벡터들을 탐색하고, 움직임 벡터들이 탐색된 블록들을 소정의 갯수 단위로 다운 샘플링하여 동일한 해상 도의 더 큰 사이즈 블록 단위의 움직임 벡터 탐색을 위한 초기값을 생성하는 단계를 더 포함하는 움직임 추정방법.
  5. 제4항에 있어서,
    상기 고해상도의 움직임 벡터들 중에서 인터 프레임 코딩에 사용될 움직임 벡터들을 선별하는 단계를 더 포함하는 움직임 추정 방법.
  6. 제1항 내지 제5항 중 어느 한 항의 방법을 실행하기 위한 컴퓨터로 읽을 수 있는 프로그램을 기록한 기록 매체.
  7. 움직임 추정 대상 비디오 프레임을 다운 샘플링하여 저 해상도의 프레임을 제공하고, 저해상도 프레임에서 블록 단위의 움직임 벡터들을 추정하고, 상기 추정된 움직임 벡터들을 업 샘플링하여 고해상도 프레임에서 블록 단위의 움직임 벡터들을 추정하기 위한 초기값을 생성하며, 생성된 초기값들을 이용하여 고 해상도의 움직임 추정을 수행하는 움직임 추정 모듈; 및
    상기 움직임 추정 모듈에 의해 추정된 움직임 벡터들을 이용하여 재구성된 참조 프레임을 비교하여 상기 비디오 프레임에 대한 잔여 프레임을 생성하는 비교 모듈을 포함하는 비디오 인코더.
  8. 제7항에 있어서,
    상기 움직임 추정 모듈은 비디오 프레임 각각에 대하여 저해상도 프레임을 생성하는 저해상도 프레임 생성 모듈과, 상기 저해상도 프레임 생성에 의해 생성된 각 해상도의 비디오 프레임에 대하여 블록 단위로 움직임 벡터를 탐색하는 움직임 벡터 탐색 모듈과, 상기 탐색된 움직임 벡터들을 필터링하여 다른 블록들에 대한 움직임 벡터 탐색에 사용될 초기값을 설정하는 초기값 설정 모듈을 포함하는 비디오 인코더.
  9. 제8항에 있어서,
    상기 움직임 추정 모듈은 상기 비디오 프레임을 인터 프레임 코딩할 때 사용할 움직임 벡터들을 선별하는 선별 모듈을 더 포함하는 비디오 인코더.
  10. 제8항에 있어서,
    상기 초기값 설정 모듈은 초기값 설정을 위해 메디안(median) 필터링을 사용하는 비디오 인코더.
KR1020040032242A 2004-04-13 2004-05-07 비디오 프레임에 대한 움직임 추정 방법 및 비디오 인코더 KR100587562B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005072017A JP2005304005A (ja) 2004-04-13 2005-03-14 ビデオフレームに対する動き推定方法及びビデオエンコーダ
EP05251898A EP1587328A2 (en) 2004-04-13 2005-03-29 Method for motion estimation of video frame and video encoder using the method
US11/103,467 US20050232499A1 (en) 2004-04-13 2005-04-12 Method for motion estimation of video frame and video encoder using the method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US56151404P 2004-04-13 2004-04-13
US60/561,514 2004-04-13

Publications (2)

Publication Number Publication Date
KR20050100321A KR20050100321A (ko) 2005-10-18
KR100587562B1 true KR100587562B1 (ko) 2006-06-08

Family

ID=37279197

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040032242A KR100587562B1 (ko) 2004-04-13 2004-05-07 비디오 프레임에 대한 움직임 추정 방법 및 비디오 인코더

Country Status (2)

Country Link
US (1) US20050232499A1 (ko)
KR (1) KR100587562B1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1774780A1 (en) * 2004-07-20 2007-04-18 QUALCOMM Incorporated Method and apparatus for motion vector processing
KR100801974B1 (ko) * 2005-12-08 2008-02-12 한국전자통신연구원 저비용 움직임 추정 장치 및 움직임 추정 방법
US9323055B2 (en) 2006-05-26 2016-04-26 Exelis, Inc. System and method to display maintenance and operational instructions of an apparatus using augmented reality
US7920071B2 (en) 2006-05-26 2011-04-05 Itt Manufacturing Enterprises, Inc. Augmented reality-based system and method providing status and control of unmanned vehicles
US8331451B2 (en) * 2007-07-18 2012-12-11 Samsung Electronics Co., Ltd. Method and apparatus for enhancing resolution of video image
US20090086820A1 (en) * 2007-09-28 2009-04-02 Edward Hong Shared memory with contemporaneous access for use in video encoding and methods for use therewith
US8208551B2 (en) * 2007-10-31 2012-06-26 Broadcom Corporation Method and system for hierarchically layered adaptive median motion vector smoothing
US8175160B1 (en) * 2008-06-09 2012-05-08 Nvidia Corporation System, method, and computer program product for refining motion vectors
KR101548269B1 (ko) 2008-12-02 2015-08-31 삼성전자주식회사 블록 분할 및 결합을 통한 움직임 추정 장치 및 방법
US20100316129A1 (en) * 2009-03-27 2010-12-16 Vixs Systems, Inc. Scaled motion search section with downscaling filter and method for use therewith
US20100246682A1 (en) * 2009-03-27 2010-09-30 Vixs Systems, Inc. Scaled motion search section with downscaling and method for use therewith
US9319716B2 (en) 2011-01-27 2016-04-19 Qualcomm Incorporated Performing motion vector prediction for video coding
US9667964B2 (en) 2011-09-29 2017-05-30 Dolby Laboratories Licensing Corporation Reduced complexity motion compensated temporal processing
WO2014053095A1 (en) * 2012-10-03 2014-04-10 Mediatek Inc. Method and apparatus for inter-component motion prediction in three-dimensional video coding
EP3686843A1 (en) * 2016-06-08 2020-07-29 Esaote S.p.A. Method and system for estimating motion between images, particularly in ultrasound spatial compounding
CN110636312B (zh) * 2019-09-27 2023-10-24 腾讯科技(深圳)有限公司 视频编解码方法和装置及存储介质
US11330296B2 (en) 2020-09-14 2022-05-10 Apple Inc. Systems and methods for encoding image data

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9326429D0 (en) * 1993-12-24 1994-02-23 Bt & D Technologies Ltd An optical device and method of making the same

Also Published As

Publication number Publication date
US20050232499A1 (en) 2005-10-20
KR20050100321A (ko) 2005-10-18

Similar Documents

Publication Publication Date Title
KR100587562B1 (ko) 비디오 프레임에 대한 움직임 추정 방법 및 비디오 인코더
JP3997171B2 (ja) 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、動画像復号装置、動画像復号方法、及び動画像復号プログラム
JP5014989B2 (ja) 基礎階層を利用するフレーム圧縮方法、ビデオコーディング方法、フレーム復元方法、ビデオデコーディング方法、ビデオエンコーダ、ビデオデコーダ、および記録媒体
KR100664929B1 (ko) 다 계층 기반의 비디오 코더에서 모션 벡터를 효율적으로압축하는 방법 및 장치
JP4844741B2 (ja) 動画像符号化装置及び動画像復号装置と、その方法及びプログラム
US20060088102A1 (en) Method and apparatus for effectively encoding multi-layered motion vectors
JP2006503518A (ja) 高度にスケーラブルな3次元オーバコンプリート・ウェーブレット・ビデオ符号化
JP4294630B2 (ja) 多階層基盤のビデオコーダでモーションベクトルを効率よく圧縮する方法及び装置
JP2005304035A (ja) モーションスケーラビリティーを支援するコーディング方法及び装置
JP2003504987A (ja) ビデオシーケンスを圧縮する符号化方法
JP2002507339A (ja) 非線形ピラミッドを用いた階層的な運動推定実行方法及び装置
US7242717B2 (en) Wavelet domain motion compensation system
US8855198B2 (en) Moving picture encoding method, moving picture decoding method, moving picture encoding device, moving picture decoding device, and computer program
EP1587328A2 (en) Method for motion estimation of video frame and video encoder using the method
Aydin et al. Motion compensation using critically sampled dwt subbands for low-bitrate video coding
KR20010032113A (ko) 비디오 정보를 압축하기 위한 장치 및 방법
KR20060131796A (ko) 동화상의 부호화 방법 및 장치, 그리고 동화상의 복호 방법및 장치
Mandal et al. Adaptive multiresolution motion estimation techniques for wavelet-based video coding
Van Der Auwera et al. Video coding based on motion estimation in the wavelet detail images
KR100440567B1 (ko) 움직임 탐색을 위한 이진 평면 구성방법 및 이를 이용한움직임 추정 장치
Wang Fully scalable video coding using redundant-wavelet multihypothesis and motion-compensated temporal filtering
JP2000295622A (ja) 動画像符号化方法、動画像符号化装置、動画像復号方法、動画像復号装置及びそれらのプログラムを記憶した記憶媒体
Chou et al. Video coding algorithm based on image warping and nonrectangular DCT coding
Andreopoulos et al. Single-rate calculation of overcomplete discrete wavelet transforms for scalable coding applications
Haque Novel block matching algorithm for motion vector estimation

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
LAPS Lapse due to unpaid annual fee