KR100618910B1 - 최적화된 연산복잡도를 갖는 움직임 추정 장치 및 그 방법 - Google Patents

최적화된 연산복잡도를 갖는 움직임 추정 장치 및 그 방법 Download PDF

Info

Publication number
KR100618910B1
KR100618910B1 KR1020040023168A KR20040023168A KR100618910B1 KR 100618910 B1 KR100618910 B1 KR 100618910B1 KR 1020040023168 A KR1020040023168 A KR 1020040023168A KR 20040023168 A KR20040023168 A KR 20040023168A KR 100618910 B1 KR100618910 B1 KR 100618910B1
Authority
KR
South Korea
Prior art keywords
motion estimation
value
block
sad
macroblock
Prior art date
Application number
KR1020040023168A
Other languages
English (en)
Other versions
KR20050097386A (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 KR1020040023168A priority Critical patent/KR100618910B1/ko
Priority to US11/073,500 priority patent/US20050232360A1/en
Publication of KR20050097386A publication Critical patent/KR20050097386A/ko
Application granted granted Critical
Publication of KR100618910B1 publication Critical patent/KR100618910B1/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture signal circuitry for video frequency region
    • H04N5/144Movement detection
    • H04N5/145Movement estimation
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • 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/176Methods 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 block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • 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/523Motion estimation or motion compensation with sub-pixel accuracy
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

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

Abstract

본 발명은 움직임 추정 장치 및 그 방법에 관한 것으로서, 더욱 상세하게는 움직임 벡터의 고속 탐색 방식을 이용하여 기존의 전역 탐색 방식에 비해 연산량을 크게 감소시키고, 또한 연산의 복잡도를 사용자가 설정할 수 있도록 하여 다양한 환경에 쉽게 응용할 수 있도록 하는 MV의 고속 탐색 방식을 이용한 움직임 추정 장치 및 그 방법에 관한 것이다.
본 발명에 의하면, 매크로블록 단위의 ME에 고속 MV 탐색 방법을 적용함으로써, 전역 탐색 방법과 동일한 부호화량이 나오도록 부호화할 때, 최소의 화질 열화(약 0.5dB)로 ME의 연산량이 현저하게 줄어들었다. 또한, 입력받은 연산복잡도 파라미터에 의해 ME 회로의 연산량을 조절할 수 있도록 함으로써 텍스처 부호화와 ME가 병행되는 파이프라인 구조의 효율을 극대화할 수 있다.
움직임 추정, 움직임 예측, 움직임 벡터, 연산복잡도, 매크로블록, 파이프라인

Description

최적화된 연산복잡도를 갖는 움직임 추정 장치 및 그 방법 {Motion Estimation apparatus and method with optmized operation complexity}
도 1은 MPEG-4에서 매크로블록(16x16 크기의 영상처리 단위)의 영상을 부호화하는 종래기술에 따른 부호화기의 블록도이다.
도 2는 종래기술에 따른 부호화기에서의 ME와 텍스쳐 부호화의 매크로블록 파이프라인 구조를 보여주는 도면이다.
도 3은 종래기술에 따른 움직임 추정 장치의 구성도이다.
도 4는 종래기술에 따른 움직임 추정의 단계별 수행 과정을 설명하는 도면이다.
도 5는 본 발명에 의한 움직임 추정 장치의 블록도이다.
도 6은 도 5의 MV 관리 블록의 세부 구성도이다.
도 7은 도 5의 단위 처리기 블록의 상세 구성도이다.
도 8은 본 발명에 따른 움직임 추정 방법의 전반적인 흐름도이다.
도 9는 본 발명에 의한 움직임 추정 수행과정을 상세히 설명하는 흐름도이다.
도 10은 본 발명에 의한 영상 부호화의 파이프라인 구조를 종래기술과 비교하는 도면이다.
* 도면의 주요 부분에 대한 부호의 설명 *
302 : 저장블록 304 : 상태 제어 블록
306, 308 : 프레임 메모리 310 : MV 관리 블록
312, 314 : 단위 처리기 316 : 멀티플렉서 블록
310a : MV 체커 블록 310b : MV 생성기 블록
310c : 어드레스 부호기 블록 310d : MV 저장블록
312a : 샘플러 블록 312b : SAD 누적기 블록
312c : 비교기 블록
본 발명은 움직임 추정 장치 및 그 방법에 관한 것으로서, 더욱 상세하게는 움직임 벡터(Motion Vector : 이하 MV)의 고속 탐색 방식을 이용하여 기존의 전역 탐색(full search) 방식에 비해 연산량을 크게 감소시키고, 또한 연산의 복잡도를 사용자가 설정할 수 있도록 하여 다양한 환경에 쉽게 응용할 수 있도록 하는 MV의 고속 탐색 방식을 이용한 움직임 추정 장치 및 그 방법에 관한 것이다.
움직임 추정(Motion Estimation, 이하 ME)은 동영상 내의 시간적인 중복성을 제거하여 높은 압축효율을 이루기 위한 기술로, MPEG, H.263 등 국제 표준 규격에서 영상 압축을 위해 채택하고 있는 방법이다.
ME는 동영상 압축 과정에서 가장 많은 연산량이 필요하므로 동영상 압축 시스템의 성능에 가장 큰 영향을 미친다. 그러므로, 최적의 알고리즘을 적용하여 빠른 시 간 내에 적은 소비 전력으로 ME를 수행하는 것이 동영상 압축 시스템의 성능을 향상시키는 데 있어서 중요하다.
ME를 실제 회로로 구현함에 있어서, 종래의 기술들은 지나간 프레임의 일정 영역에 걸쳐 화소 단위로 모든 경우에 대해 가장 비슷한 부분을 구하는 전역 탐색 방식을 이용하여 비트량을 최소로 낮추는 데 초점을 맞추어왔다. 반면, 이 방식은 최대의 계산량이 소요되고, 요구되는 회로의 면적도 커서, 영상의 크기와 데이터량이 꾸준히 증가하는 현재의 상황에서 실시간 영상 처리를 위해서는 과다한 비용과 전력의 소모가 불가피하다.
또한, 종래의 ME 장치들은 연산 복잡도가 고정되어, 사용자가 여러 가지 응용에 따라 비트량이 좀 더 늘어나더라도 같은 시간 동안 ME를 더 많이 수행하고 싶은 경우, 즉 더 높은 프레임 레이트를 구현할 수 없다.
도 1은 MPEG-4에서 매크로블록(16x16 크기의 영상처리 단위)의 영상을 부호화하는 종래기술에 따른 부호화기의 블록도이다.
도 1을 참조하면, 부호화기(100)는 ME 블록(101), 움직임 보상(Motion Compensation: 이하 MC라 함) 블록(102), 이산여현변환/양자화(Discrete Cosine Transform/Quantization: 이하 DCT/Q라 함) 블록(103a), AC/DC 예측(AC/DC Prediction: 이하 ADP라 함) 블록(104), 가변장부호화(Variable Length Coding: 이하 VLC라 함) 블록(105), 및 역이산여현변환/역양자화(Inverse DCT/Inverse Q: 이하 IQ/IDCT라 함) 블록(103b)을 포함한다.
ME 블록(101)은 이전 프레임의 휘도 성분과 현재 프레임의 휘도 성분을 비교하여 움직임을 예측하는 작업을 수행한다. 결과는 MV로 나오는데, 이는 매크로블록 또는 블록(8x8 크기의 영상처리 단위) 별로 이전 프레임으로부터 얼마나 이동했는지를 나타낸다. 이런 움직임 추정을 이용하면 시간적인 반복성을 제거하여 부호량을 줄일 수 있다.
MV는 화면에 표시되는 하나의 점이 가지고 있는 프레임 사이의 방향성을 나타내는 정보이다. 이러한 MV는 현재 프레임의 소정의 좌표에 있는 블록(매크로블록)을 기준으로 하여 이전 프레임상의 가장 근사한 블록의 위치를 찾음으로써 결정된다. 시간적으로 인접한 두 장의 프레임간에 어긋난 부분을 탐색영역이라고 하며, 이러한 탐색영역은 이전 프레임상에 위치해 있다. 이 탐색영역에서 현재 프레임의 매크로블록과 가장 근사한 블록의 위치를 찾게 된다.
탐색영역에서 가장 근사한 블록의 위치를 찾아 MV를 결정하는 방법은 이전 프레임의 탐색영역내의 화소와 현재 프레임의 매크로블록을 이루는 화소간의 차이를 구해 그 차이의 절대값을 모두 더한 후(이를 SAD라고 함), 이 SAD(Sum of Absolute difference) 중 가장 작은 값에 대응하는 위치를 찾아 MV를 결정하는 것이다. 즉, 현재 프레임의 매크로블록의 기준점이 (x, y)이고, 이전 프레임의 탐색영역에서 매크로블록과 가장 근사한 블록의 기준점이 (x+u, y+v)일 때 MV는 (u, v)으로 결정된다.
상기 ME 블록(101)을 제외한 MC 블록(102), DCT/Q 블록(103a) 등을 포함하는 블록들은 텍스쳐 부호화를 수행한다. 텍스쳐 부호화는 한 매크로블록에 포함된 4개의 휘도블록과 2개의 색차블록 각각에 대하여 한 번씩 수행된다.
MC(-) 블록(102a)은 ME 블록(101)에서 구한 움직임 벡터를 이용하여 현재 블록 화소값에서 이전 프레임의 화소값을 빼는 작업을 수행하는데, 이 과정에서 이전 프레임과의 화소 차만 남게 되므로 부호화할 정보의 양이 줄어든다.
DCT/Q 블록(103a)에서는 MC(-) 블록(102a)을 거친 공간 영역의 데이터를 주파수 영역의 데이터로 변환시키고, 정보의 양을 줄이기 위해 양자화를 수행한다.
ADP 블록(104)은 인접 블록들의 AC/DC 계수와의 차분치를 구한다. 이는 인트라 매크로블록에서만 수행하는 것으로, 공간적인 중복성을 줄여 부호화량을 줄이는 효과가 있다.
VLC 블록(105)은 데이터들을 가변장부호화하고, 최종적인 비트스트림을 생성한다.
MC(+) 블록(102b)과 IQ/IDCT 블록(103b)은 MC(-) 블록(102a)과 DCT/Q 블록(103a)에서의 과정을 역으로 수행해 다시 블록영상을 복원하며, 복호기에서 보게 될 데이터가 나온다. 이 데이터를 다음 프레임의 ME에서 사용함으로써 복호기와 부호기가 같은 화면을 이용하여 움직임을 예측하고 보상할 수 있게 된다.
도 2는 종래기술에 따른 부호화기에서의 ME와 텍스쳐 부호화의 매크로블록 파이프라인 구조를 보여주는 도면이다.
도 2a를 참조하면, 각 매크로블록의 부호화는 먼저 ME가 수행되고, CPU에서 중간 처리가 수행되고, 다시 나머지 부분인 텍스처 부호화가 수행되며, 마지막으로 CPU에서 처리된다. 보통 ME가 수행시간이 가장 길고, 다른 작업과 별개로 진행할 수 있기 때문에 파이프라인 구조로 처리하는 것이 효율적이다.
한편, 도 2b는 도 2a의 경우보다 더 높은 양자화계수가 적용되는 경우를 보여주는 것이다.
양자화계수가 높으면 일반적으로 텍스쳐 부호화에 걸리는 시간이 줄어든다. 그러나, 종래 기술에 따른 ME 장치의 계산시간은 양자화계수에 거의 영향을 받지 않기 때문에, 도 2b의 매크로블록1에서 매크로블록N-2까지의 파이프라인에서 텍스처 부호화가 완료되고 나서도 ME가 수행(도 2b에서의 d구간)되고 있는 것을 볼 수 있다. 이것은 매크로블록 파이프라인 구조의 효율을 떨어뜨리는 결과를 초래한다.
도 3은 종래기술에 따른 ME 장치의 구성도로, ME 장치(200)는 프레임 메모리(202, 204), 멀티플렉서(MUX) 블록(206), 단위 처리기(processing element : PE) 블록(208), 비교기(comparator : COM) 블록(210) 및 상태 제어(State control) 블록(212)으로 구성된다.
프레임 메모리(202)는 이전 프레임의 데이터를 저장하는 메모리이고, 프레임 메모리(204)는 현재 프레임의 데이터를 저장하는 메모리이다. 상기 프레임 메모리(202, 204)는 외부에 위치한 메인 메모리(도시안됨)로부터 프레임 데이터를 받는다.
멀티플렉서 블록(206)은 프레임 메모리(202, 204)로부터의 데이터를 단위 처리기 블록(208)에 분배하는 기능을 담당하며, 단위 처리기 블록(208)은 다수의 움직임 벡터 후보에 대한 SAD를 구하는 작업을 병렬로 처리하여 연산량이 많은 전역 탐색 을 구현한다.
비교기 블록(210)은 단위 처리기 블록(208)에서 계산된 SAD 중 가장 작은 값과 그에 해당하는 MV를 출력한다.
상태 제어 블록(212)은 전체의 동작 과정을 제어한다.
도 4는 종래기술에 따른 ME의 단계별 수행 과정을 나타낸 도면이다.
단계 S100은 매크로블록 단위의 ME과정으로, 움직임 탐색영역 내의 화소 (x,y)에 대해 SAD 값들을 계산하고 이 값이 가장 작게 되는 지점을 찾는 과정이다. 이 경우,
Figure 112004013906276-pat00001
로 정의되고,
Figure 112004013906276-pat00002
는 현재 프레임의 화소 값,
Figure 112004013906276-pat00003
는 이전 프레임의 화소 값이다.
단계 S102는 블록 단위 ME과정으로, 각 블록 별로 단계 S100에서 구한 움직임 벡터 주위의 -2에서 +2 범위에 대해 수행한다. 이 경우
Figure 112004013906276-pat00004
로 정의된다.
단계 S104에서는 현재 매크로블록이 인트라 매크로블록으로 부호화 될 것인지, 인터 매크로블록으로 부호화 될 것인지를 결정하는 파라미터를 계산한다.
먼저, 현재 매크로블록에 대한 화소 평균값(MB_mean)을 구하고(수학식 1), 상기 화소 평균값을 이용하여 부호화 결정 파라미터(A)를 구한다(수학식 2).
Figure 112004013906276-pat00005
Figure 112004013906276-pat00006
다음에, 단계 S106에서는 단계 S104에서 구한 파라미터(A)와 단계 S100 및 단계 S102에서 구한 SAD를 이용하여 인트라 매크로블록인지 인터 매크로블록인지를 결정한다(수학식 3). 여기서, 수학식 3이 참인 것은 인트라 매크로블록이 될 조건이다.
인트라 매크로블록이 되면, 단계 S114에서 움직임 벡터를 0으로 두고 ME 과정이 끝난다.
인터 매크로블록의 경우는 반화소(half-pixel) ME 단계로 넘어간다.
단계 S108에서의 매크로블록 단위의 반화소 ME는 단계 S100에서 구한 움직임 벡터의 상하, 좌우, 대각선 8개의 반화소 움직임 벡터에 대해 SAD 값을 계산하고 최소가 되는 움직임 벡터를 찾는 과정이다.
단계 S110에서의 블록 단위의 반화소 ME도 단계 S102에서 구한 움직임 벡터 주위에 대해 최소의 SAD를 갖는 움직임 벡터를 찾는 것이다.
단계 S112에서는 수학식 4에 의해 매크로블록 단위의 움직임 벡터를 사용할 것인지 블록 단위의 움직임 벡터를 사용할 것인지 결정한다. 수학식 4에서 SAD16은 매크로블록 단위의 ME 결과 나온 SAD 값이고, SAD8은 블록 단위의 ME 결과 나온 SAD 값이다.
Figure 112004013906276-pat00008
이상 살펴본 바와 같이, 종래의 전역 탐색 방법에 기반한 ME 회로들은 제어가 간편하고 최소의 부호화량으로 압축할 수 있지만, 구현시 회로의 면적과 전력 소모가 크다.
또한, 종래의 ME 회로들은 부호화량을 최소화하도록 연산복잡도가 고정되어, 사용자가 부호화량이 좀 더 늘어나더라도 연산량을 줄여 같은 시간 동안 ME를 더 많이 수행하고자 하는 경우, 예를 들면 더 높은 프레임 레이트를 구현하고 싶을 때 어려움을 준다.
또한, 양자화계수가 높을 때는 일반적으로 텍스쳐의 부호화에 소요되는 시간이 줄어드는데, 도 2의 파이프라인 구조에 따르면 움직임 추정에 소요되는 시간이 줄어들지 않으면 텍스쳐 부호화 시간이 줄어도 전체적인 속도 향상을 기대할 수 없게 된다.
본 발명은 상기한 문제점들을 해결하기 위해 안출된 것으로, 본 발명의 목적 은 움직임 벡터의 고속 탐색 방식을 이용하여 전역 탐색 방식에 비해 연산량을 크게 감소시키고, 또한 연산 복잡도를 사용자가 설정할 수 있도록 하여 다양한 환경에 쉽게 응용할 수 있도록 하는 ME 장치 및 그 방법을 제공하는데 있다.
본 발명의 상세한 설명에 앞서 본원에서 사용되는 용어의 정의를 설명한다.
매크로블록 : 하나의 프레임을 16x16 화소 단위로 나누는 단위. 4개의 휘도 블록과 2개의 색차 블록으로 구성되는데, 이들 블록은 8x8 화소로 이루어진다.
인트라모드 : 이전 프레임과 관계없이 현재 프레임만 이용하여 부호화하는 모드.
인터모드 : 이전 프레임과 현재 프레임의 차이와 움직임 벡터를 부호화화는 모드. 인터모드에는 다음의 두 종류가 있다.
인터1MV모드 : 인터모드에서 매크로블록 단위로 움직임 벡터를 갖도록 하는 모드.
인터4MV모드 : 인터모드에서 휘도 블록마다 다른 움직임 벡터를 갖도록 하는 모드(매크로블록 내에서 총 4개의 움직임 벡터를 가짐).
이하에서 첨부 도면을 참조하여 본 발명을 더욱 상세히 설명하면 다음과 같다.
도 5는 본 발명에 의한 움직임 추정(이하 ME) 장치의 블록도로서, 저장블록(REG)(302), 상태 제어 블록(STATE CONTROL)(304), 프레임 메모리(306, 308), MV 관리(MVMNG : MV MANEGEMENT) 블록(310), 단위 처리기(processing element : PE) 블록(312, 314), 멀티플렉서(MUX) 블록(316)으로 구성된다.
저장블록(REG)(302)은 움직임 추정에 필요한 여러 가지 파라미터들을 저장한다. 상기 저장블록(302))에 저장되는 파라미터는 다음과 같은 MV 예측값, 연산복잡도 파라미터 및 사용자 설정값들이다.
MV 예측값
매크로블록단위 움직임 추정에 이용되는 것으로 (0,0)에 위치한 블록의 MV값이 되는 MV 예측값0(MVPX0, MVPY0), 예측값 2, 3, 4의 중간값이 되는 MV 예측값1(MVPX1, MVPY1), 위에 위치한 블록의 MV값이 되는 MV 예측값2(MVPX2, MVPY2), 위/오른쪽대각선 방향에 위치한 블록의 MV값이 되는 MV 예측값3(MVPX3, MVPY3), 왼쪽에 위치한 블록의 MV값이 되는 MV 예측값4(MVPX4, MVPY4)을 포함한다.
연산복잡도 파라미터
인터4MV 모드 관련된 동작을 수행하는지 여부를 결정하는 값(EN4), 매크로블록 단위의 움직임 추정에서 찾은 MV 주위로 블록단위 움직임 추정을 주변 ±1 화소에 대해서 수행할 것인지, ±2 화소에 대해서 수행할 것인지를 결정하는 값(LW4), 움직임 추정을 정수단위 화소에 대해서만 수행하는지 여부를 결정하는 값(IPO), 반화소 단위의 움직임 추정을 수행하기 전에 인터1MV 모드인지 인터4MV 모드인지를 먼저 정하고 그 결과에 따라 둘 중 하나의 모드에 대해서만 반화소 단위의 움직임 추정을 수 행할 것인지 여부를 결정하는 값(MEP)을 포함한다.
사용자 설정값
THRINTRA 인트라/인터 모드를 결정할 인터 SAD에서 빼는 값 및 THR1MV 인터1MV/인터4MV 모드 결정할 때 인터1MV SAD에서 빼는 값을 포함한다.
상태 제어 블록(304)은 ME 장치의 전반적인 동작을 제어한다.
프레임 메모리(ME_RMEM)(306)은 이전 프레임 데이터 중에서 ME에 필요한 부분을 저장한다.
프레임 메모리(ME_CMEM)(308)은 현재 프레임 데이터 중에서 ME에 필요한 부분을 저장한다.
MV 관리 블록(310)은 움직임 벡터를 관리하고, 최종적으로 출력하는 블록이다.
단위 처리기 블록(PE1)(312)은 프로세싱 요소로서, 프레임 메모리(306, 308)로부터 받는 데이터의 SAD를 구하는 부분이다.
단위 처리기 블록(PE2)(314)은 단위 처리기 블록(PE1)(312)의 기능을 할 수 있고, 또는 인트라 파라미터, 즉 현재 매크로블록 화소들의 평균값을 구한다.
멀티플렉서 블록(316)은 프레임 메모리(306, 308)의 데이터를 ME 동작 단계에 따라 단위 처리기 블록(312, 314)로 적절히 분배해주는 역할을 한다.
도 6은 도 5의 MV 관리 블록의 세부 구성도로, MV 체커 블록(MV_Checker)(310a), MV 생성기 블록(MV_Generator)(310b), 어드레스 부호기 블록(Address_Encoder)(310c), MV 저장블록(MV_Reg)(310d)을 포함한다.
MV 체커 블록(310a)은 현재 SAD를 구할 MV에 대해 이미 계산된 SAD가 있는지 확인해서 이미 구해졌다면 Checked라는 변수를 통해 상기 상태 제어 블록(304)에게 알려준다.
대부분의 고속 움직임 추정 알고리즘은 full search와 달리 몇 개의 예측 지점으로부터 출발하기 때문에 그 예측 지점들 중 몇 개라도 인접하거나 일치하면 같은 지점에 대해서 SAD를 중복해서 구하게 된다.
MV 체커 블록(310a)은 이런 중복을 피하도록 해준다.
MV 생성기 블록(310b)은 MV 예측값들(MVPX0, MVPY0, …, MVPX4, MVPY4)을 기초로 현재 SAD값을 구할 MV를 생성한다. 만약 SAD를 구하라고 나온 MV 값(MVx, MYy)이 탐색 범위를 벗어나면 MVxFail, MVyFail라는 변수를 통해 상태 제어 블록(304)에게 그 사실을 알려준다.
어드레스 부호기 블록(310c)은 상기 생성된 현재 SAD값을 구할 MV 값(MVx, MYy)을 바탕으로 프레임 메모리(306, 308)에서 데이터를 가져올 주소를 생성한다. 여기서, CurAddr라는 변수는 프레임 메모리(306)에서 화소 데이터를 가져올 주소이고, PrevAddr라는 변수는 프레임 메모리(308)에서 화소 데이터를 가져올 주소이다.
도 7은 도 5의 단위 처리기 블록의 상세 구성도로, 샘플러(SAMPLER) 블록(312a), SAD 누적기(ACCUMULATOR) 블록(312b), 및 비교기(COMPARATOR) 블록(312c)를 포함한다.
샘플러 블록(312a)은 SAD 연산에 필요한 화소 데이터를 뽑아내는 부분이다. 현재 프레임의 화소 데이터는 단순히 프레임 메모리(306)의 데이터를 읽어오면 되지만, 이전 프레임의 화소 데이터는 테스트 중인 MV값만큼 쉬프트된 지점의 화소 데이터를 프레임 메모리(306)로부터 가져와야 한다.
SAD 누적기 블록(312b)은 연산을 통해 현재 테스트 중인 블록의 SAD를 구하는데, 샘플러 블록(312a)에서 들어온 현재 프레임의 화소 데이터에서 이전 프레임의 화소 데이터를 뺀 값의 크기를 누적한다.
비교기 블록(312c)은 SAD 누적기 블록(312b)에서 계산한 SAD값을 비교하는 블록이다. 여러 MV에 대한 각각의 SAD 값중 최소값을 찾는 것이 목적이고, 이미 계산된 최소의 SAD값과 새로 계산된 SAD 값을 비교한다. 비교 결과는 상태 제어 블록(304)에 알려져서 ME 동작을 적절히 제어하는 데 사용된다.
도 8은 본 발명에 따른 움직임 추정 방법의 전반적인 흐름도이다.
먼저, 단계 S100에서, 매크로블록 단위 움직임 예측 및 인트라 파라미터를 계산한다. 즉, 현재 매크로블록에 대한 최소 SAD와 그에 해당하는 MV를 탐색하고, 현재 매크로블록 화소 데이터의 평균값을 구하게 된다.
단계 S100를 수행하기 이전에, 상기 현재 SAD를 구할 MV에 대해 이미 계산된 SAD가 있는지 확인하는 단계(S102) 및 상기 MV 예측값들을 기초로 현재 SAD값을 구할 MV를 생성하고, 현재 SAD값을 구할 MV가 탐색 범위를 벗어나는지 아닌지를 확인하는 단계(S104)를 수행한다.
단계 S100에서는 고속 MV 탐색 방식이 적용되었다. 앞서 언급한 다섯 쌍의 MV 예측값 주변에서 SAD 값을 최소로 하는 MV 값을 찾는 방식이다. 즉, (MVPX0, MVPY0)부터 SAD 값을 구하고, 2 화소 이내의 지점에 대한 SAD 값들을 구한다. 이런 식으로 (MVPX1, MVPY1), …, (MVPX4, MVPY4)와 각각의 2 화소 이내의 지점들에 대한 SAD를 구해서 최소가 되는 SAD를 만드는 MV 값이 최종적인 MV 값이 되는 것이다.
이 방식 특징은 주변 블록의 MV를 기준으로 검색함으로써 다른 고속 ME 알고리즘에 비해 빠른 속도를 보이고, MV의 부호화량도 상대적으로 줄어든다는 것이다. 실험 결과에 따르면, 전역 탐색에 비해 속도는 약 160배 정도 빨라지고, 같은 비트량으로 부호화된 영상의 화질 열화도 0.5dB에 불과하다. 이 정도 값은 육안으로 관찰하기 힘든 작은 차이이다. 이렇게 줄어든 계산량은 뒤에 나오는 연산복잡도 파라미터에 의한 연산량 조절의 효율을 극대화한다.
또한, 단계 S100에서 매크로블록 단위의 ME를 수행하는 동안, 단위 처리기 블록(314)에서는 인트라 파라미터를 계산한다. 인트라 파라미터는 수학식 1, 수학식 2에서 현재 프레임의 데이터만 있으면 되므로 단위 처리기 블록(312)에 들어가는 현재 프레임 데이터의 입력을 그대로 이용하면 계산할 수 있다.
다음에, 단계 S200에서, 연산복잡도 파라미터를 입력받아 상기 연산복잡도 파라미터를 기준으로 결정되는 움직임 추정 모드에 따라 현재 프레임 이미지에 대한 움 직임 추정 연산을 수행한다.
다음에, 단계 S300에서, 상기 움직임 추정 연산후 얻어지는 현재 매크로블록에 대한 최소 SAD와 그에 해당하는 MV를 출력한다.
도 9는 본 발명에 의한 ME 수행과정을 상세히 설명하는 흐름도이다.
단계 S100에서의 매크로블록 단위 ME 및 인트라 파라미터가 계산되면, 단계 S200에서 연산복잡도 파라미터를 입력받아 상기 연산복잡도 파라미터를 기준으로 결정되는 움직임 추정 모드에 따라 현재 프레임 이미지에 대한 움직임 추정 연산을 수행하게 되는데, 이에 대해 구체적으로 설명하면 다음과 같다.
단계 S204에서는 EN4가 1이면 단계 S206으로 분기하고, 0이면 단계 S210으로 분기한다. 여기서, EN4는 앞서 설명한 바와 같이 인터4MV 모드 관련된 동작을 수행하는지 여부를 결정하는 값이다.
단계 S206에서는 LW4가 1이면 단계 S208로 분기하고, 0이면 단계 S210으로 분기한다. 여기서, LW4는 매크로블록 단위의 움직임 추정에서 찾은 MV 주위로 블록단위 움직임 추정을 주변 ±1 화소에 대해서 수행할 것인지, ±2 화소에 대해서 수행할 것인지를 결정하는 값이다.
단계 S208에서는 현재 매크로블록의 4개 휘도 블록들에 대한 ME를 수행하는데, 단계 S100에서의 매크로블록 단위 ME 결과로 나온 MV 근처의 -1에서 +1 화소범위의 MV에 대해 SAD를 계산한다.
단계 S210에서는 단계 S208에서와 같은 작업을 수행하는데, 블록단위 ME의 반 경이 -2에서 +2 화소로서 단계 S208 보다 넓은 범위에 대해 ME를 수행한다.
단계 S210은 단계 S208보다 시간은 약 3배 많이 걸리지만 더 적은 SAD를 갖는 MV를 찾을 확률이 더 크다. 또한, 단계 S210 또는 단계 S208는 단위 처리기 블록(312, 314)이 동시에 작동하여 ME 수행시간을 단축시킬수 있다.
단계 S212에서는 수학식 5에 따라 인트라 파라미터와 SAD를 비교하여 매크로블록이 인트라인지 인터인지를 판단한다. 수학식 5는 수학식 3과 달리 SAD에서 빼는 값이 고정되어 있지 않고, 저장블록(302)에서 입력받은 THRINTRA값으로 결정된다. 수학식 5가 참이면 인터모드로 결정되고, 거짓이면 인트라모드로 결정된다.
Figure 112004013906276-pat00009
단계 S214에서, 만약 인트라 매크로블록으로 판정되면 움직임벡터를 0으로 하고 ME 과정이 끝나며, 그렇지않다면 단계 S216으로 진행된다.
단계 S216에서, IPO가 1이면 단계 S218로 분기하고, 0이면 단계 S222로 분기한다. IPO는 움직임 추정을 정수단위 화소에 대해서만 수행하는지 여부를 결정하는 값이다.
단계 S218에서는 수학식 6에 따라 블록마다 움직임 벡터를 다르게 할 것인지 매크로블록에 대해 움직임 벡터를 하나로 할 것인지 결정한다. 수학식 6에서, SAD16은 단계 S100에서 매크로블록 단위의 ME 결과 나온 SAD 값이고, SAD8은 단계 S208 또는 단계 S210에서 블록 단위의 ME 결과 나온 SAD 값이다. 이때, THR1MV 값은 사용자가 저장블록(302)에 직접 설정할 수 있는데, 양자화 계수 등 여러 가지 상황에 따라 적절하게 설정하여 전체 부호화량을 최소화할 수 있다.
Figure 112004013906276-pat00010
(6)
단계 S220에서, 수학식 6이 참이면 인터1MV 모드로 결정되고, 거짓이면 인터4MV 모드로 결정되며, 단계 S218의 모드 결정 결과를 저장하고 ME 과정을 종료한다.
단계 222에서는 MEP가 1이면 단계 S224로 분기하고, 0이면 단계 S230으로 분기한다.
단계 S224에서는 블록마다 움직임 벡터를 다르게 할 것인지 아니면 매크로블록에 대해 움직임 벡터를 하나로 할 것인지 결정하는데, 단계 S218에서와 동일한 과정이다.
단계 S226에서는 단계 S224의 모드 결정 결과가 인터1MV이면 단계 S228로 분기하고, 인터4MV이면 단계 S230으로 분기한다.
단계 S228에서는 매크로블록 단위의 반화소 ME를 수행한다. 매크로블록 단위의 반화소 ME는 (601)에서 찾아진 MV 주위의 반화소 화소 8개, 즉 (-0.5, -0.5), (0, -0.5), (+0.5, -0.5), (-0.5, 0), (+0.5, 0), (-0.5, +0.5), (0, +0.5), (+0.5, +0.5)에 대해 SAD 값을 각각 구한 다음, 단계 S100에서 나온 SAD보다 더 낮은 SAD 값이 있으면 그에 해당하는 MV를 구하는 작업이다. 여기서는 단위 처리기 블록(312, 314)를 모두 이용하여 5번의 SAD를 구할 시간에 매크로블록 단위의 반화소 ME를 완료한다.
단계 S230에서는 블록 단위의 반화소 ME를 수행한다. 단계 S228과 다른 점은 매크로블록 안의 4개의 휘도블록에 대해, 단계 S208 또는 단계 S210에서 나온 MV 주위의 반화소 화소 8개에 대해 SAD를 구한다는 것이다. 즉, SAD 구할 때 읽어오는 블록의 크기가 단계 S208에서의 1/4이 된다. 하지만 4개의 블록에 대해 반복하기 때문에 걸리는 시간은 단계 S208와 단계 S210가 거의 비슷하다. 실제로 단계 S230이 단계 S228보다 약 30%가 더 많이 걸리는데, 단계 S228는 단계 S230에 비해 연속적인 주소에서 화소 데이터를 읽어오는 동작의 비율이 크기 때문이다.
단계 S232는 단계 S228과 동일한 과정이다.
단계 S234에서는 EN4가 1이면 단계 S236으로 분기하고, 그렇지 않으면 인터1MV로 결정하고 ME 동작을 종료한다.
단계 S236은 단계 S230과 동일한 과정이다.
단계 238은 단계 S218 또는 단계 S224과 동일한 과정인데, 반화소 ME를 마친 후라는 점이 다르다.
단계 S240에서는 단계 S238에서의 모드 결정 결과를 저장하고 ME 동작을 종료한다.
도 10은 본 발명에 의한 영상 부호화의 파이프라인 구조를 종래기술과 비교하고 있는데, 양자화계수가 비교적 높은 경우에 적용된다.
도 10a를 참조하면, 종래기술에서는 양자화계수가 높아지면서 텍스쳐 부호화에 걸리는 시간은 줄었지만 움직임 추정에 걸리는 시간(d구간)은 줄지 않아 전체적으로 파이프라인 구조의 효율이 떨어지고 있다.
도 10b를 참조하면, 본 발명에 의한 파이프라인 구조에서는 텍스쳐 부호화의 시간이 줄어들면 움직임 추정 시간도 줄일 수 있어 효율적인 파이프라인 구조가 가능하다. 물론 움직임 추정 시간을 줄이는 것은 부호화량의 미세한 증가로 이어질 수 있지만, 양자화계수가 올라가면 전체적으로 부호화량이 감소하므로 그 영향은 그리 크지 않을 것이고 또한 연산량 감소에 따른 부호화량의 증가가 양자화계수가 커질수록 둔화된다는 것도 실험적으로 밝혀졌다.
도 10과 같은 효과를 위해, 본 발명은 표 1의 IPO, EN4, MEP, LW4와 같은 연산복잡도 파라미터들을 입력받는데, 이들은 본 발명에 의한 ME회로의 소요 cycle에 큰 영향을 미친다. 표 1은 연산복잡도 파라미터와 소요 cycle의 관계의 실시예를 나타낸다. 표 1에 나타난 소요 cycle은 최악의 경우(worst case)로서, 실제로는 이보다 적게 걸릴 수 있다. 표 1에 따르면, 가장 빠른 경우는 가장 느린 경우보다 약 3배가 빠르다. 그러나 전체 부호화량은 최대 약 10% 내외 정도가 증가한다. 게다가, 실험적으로 양자화계수가 높아질수록 연산 속도를 빨리하는 것으로 인한 부호화량 증가의 폭은 줄어든다는 것도 밝혀졌다.
구체적인 수치를 예로 들면, 양자화계수가 8일 때, IPO를 1로 하면 0일 때에 비해 부호화량이 7~10% 정도 증가했지만, 양자화계수가 28일 때는 3~5%가 증가했다. 표 1에서 연산복잡도 파라미터의 변화에 따라 소요 cycle이 큰 차이를 보이는 것은 단계 S100에서의 매크로블록 단위 ME에 고속 MV 탐색 방법을 이용하여 빠른 시간 안에 이루어지기 때문이다. 만약 이 대신 전면 탐색 방법이 사용되었다면, 표 1의 연산복잡도 파라미터를 변화시키더라도 ME의 전체적인 시간은 표 1만큼 차이가 나지 않을 것이다.
Figure 112004013906276-pat00011
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
이상에 설명한 바와 같이 본 발명에 의하면, 다음과 같은 효과들을 제공한다.
1. 매크로블록 단위의 ME에 고속 MV 탐색 방법을 적용함으로써, 전역 탐색 방 법과 동일한 부호화량이 나오도록 부호화할 때, 최소의 화질 열화 (약 0.5dB)로 ME의 연산량이 현저하게 줄어들었다. 이로써 ME를 구현하는 회로의 면적이 대폭 줄어들 수 있었고, 전력소모도 감소하였다.
2. 입력받은 연산복잡도 파라미터에 의해 ME 회로의 연산량을 조절할 수 있도록 함으로써 텍스처 부호화와 ME가 병행되는 파이프라인 구조의 효율을 극대화할 수 있다. 양자화 계수가 높아지면 일반적으로 텍스처 부호화에 걸리는 시간이 줄어들므로 그에 따라 ME에 걸리는 시간을 조절할 수 있다면, 종래기술에서 나타났던 비효율적인 구간인 텍스처 부호화가 먼저 끝나고 ME만 동작하는 시간을 줄일 수 있다.
3. 본 발명의 응용의 실시예로서, 어떤 영상 부호화기가 최악의 경우에도 4CIF 크기(704x576)의 영상을 1초에 10장씩 부호화 할 수 있다고 하자. 명확한 예시를 위해, 이 영상 부호화기를 이용하여 양자화계수를 가장 높은 값인 31로 두고 영상을 부호화한다고 하자. 계산된 최악의 경우에 비하면 부호화량이 현저히 줄어들어 텍스처 부호화에 걸리는 시간과 CPU 처리 시간이 그만큼 줄어들 것이다. 종래 기술에 의하면 그러나 가장 많은 시간을 차지하는 ME에 소요되는 시간은 거의 줄지 않을 것이다.
그러나, 본 발명을 적용하면 ME에 소요되는 시간도 텍스처 부호화에 소요되는 시간 수준으로 줄일 수 있다. 물론 부호화량은 약간 증가하지만 양자화 계수가 높을수록 거의 무시할만한 수준이 된다. 양자화 계수가 31일 때 종래기술이 약 12장의 4CIF 영상을 부호화할 수 있다면 본 발명을 적용한 영상 부호화기는 약 20장까지도 부호화할 수 있을 것이다.

Claims (20)

  1. 현재의 프레임 이미지와 이전 프레임 이미지간의 화소값을 비교하는 과정을 통해서 움직임 벡터(Motion Vector, 이하 MV)를 예측하는 움직임 추정 장치에 있어서,
    움직임 추정에 필요한 MV 예측값과 연산복잡도 파라미터를 저장하는 저장블록;
    이전 프레임의 화소 데이터와 현재 프레임의 화소 데이터 중에서 움직임 추정에 필요한 부분을 저장하는 프레임 메모리 블록;
    상기 프레임 메모리 블록으로부터 화소 데이터를 입력받아 상기 저장블록으로부터의 연산복잡도 파라미터를 기준으로 결정된 움직임 추정 모드에 따라 움직임 추정을 수행하고, 현재의 프레임 이미지와 이전 프레임 이미지간의 화소값을 비교 하여 현재 매크로블록에 대한 최소 SAD와 그에 해당하는 MV를 구하는 단위 처리기 블록;
    상기 저장블록으로부터 MV 예측값들을 입력받아 상기 단위 처리기 블록이 현재 SAD값을 구할 MV를 생성하고, 상기 단위 처리기 블록으로부터 구해진 MV를 관리하고, 최종적으로 출력하는 MV 관리 블록; 및
    상기 블록들의 전반적인 동작을 제어하는 상태 제어 블록을 포함하는 것을 특징으로 하는 움직임 추정기.
  2. 청구항 1에 있어서,
    현재 매크로블록에 대한 화소 데이터의 평균값을 구하는 제2 단위 처리기 블록을 더 포함하는 것을 특징으로 하는 움직임 추정기.
  3. 청구항 1에 있어서,
    상기 MV 예측값은 매크로블록단위 움직임 추정에 이용되는 것으로 (0,0)에 위치한 블록의 MV값이 되는 MV 예측값0(MVPX0, MVPY0), 예측값 2, 3, 4의 중간값이 되는 MV 예측값1(MVPX1, MVPY1), 위에 위치한 블록의 MV값이 되는 MV 예측값2(MVPX2, MVPY2), 위/오른쪽대각선 방향에 위치한 블록의 MV값이 되는 MV 예측값3(MVPX3, MVPY3), 왼쪽에 위치한 블록의 MV값이 되는 MV 예측값4(MVPX4, MVPY4)을 포함하며;
    상기 연산복잡도 파라미터는 4MV 모드 관련된 동작을 수행하는지 여부를 결정하는 값(EN4), 매크로블록 단위의 움직임 추정에서 찾은 MV 주위로 블록단위 움직임 추정을 주변 ±1 화소에 대해서 수행할 것인지, ±2 화소에 대해서 수행할 것인지를 결정하는 값(LW4), 움직임 추정을 정수단위 화소에 대해서만 수행하는지 여부를 결정하는 값(IPO), 반화소 단위의 움직임 추정을 수행하기 전에 1MV 모드인지 4MV 모드인지를 먼저 정하고 그 결과에 따라 둘 중 하나의 모드에 대해서만 반화소 단위의 움직임 추정을 수행할 것인지 여부를 결정하는 값(MEP)을 포함하는 것을 특징으로 하는 움직임 추정 장치.
  4. 청구항 1에 있어서, 상기 단위 처리기 블록은,
    SAD 연산에 필요한 정수화소 또는 반화소 단위의 화소 데이터를 뽑아내는 샘 플러 블록;
    현재의 프레임 이미지와 이전 프레임 이미지 사이의 차를 누적하여 현재 MV에 해당하는 SAD를 구하는 SAD 누적기 블록; 및
    여러 MV에 대한 각각의 SAD 값 중에서 최소값을 찾고, 그 결과를 상태 제어 블록에 알려주는 비교기 블록을 포함하는 것을 특징으로 하는 움직임 추정 장치.
  5. 청구항 1, 청구항 2 또는 청구항 4중 어느 한항에 있어서,
    상기 단위 처리기 블록은 매크로블록 단위의 MV를 찾을 때 상기 5개의 MV 예측값 주변으로 ±2 화소 이내의 MV들에 대해 SAD 값들을 구하고, 그 중 최소의 SAD 값을 갖는 MV를 선택하는 것을 것을 특징으로 하는 움직임 추정 장치.
  6. 청구항 1에 있어서, 상기 MV 관리 블록은,
    상기 현재 SAD를 구할 MV에 대해 이미 계산된 SAD가 있는지 확인해서 이를 상기 상태 제어 블록에게 알려주는 MV 체커 블록;
    상기 MV 예측값들을 기초로 현재 SAD값을 구할 MV를 생성하고, 현재 SAD값을 구할 MV가 탐색 범위를 벗어나는지 아닌지를 상태 제어 블록에게 알려주는 MV 생성기 블록; 및
    상기 생성된 현재 SAD값을 구할 MV에 대해 상기 프레임 메모리에서 데이터를 가져올 주소를 생성하는 어드레스 부호기 블록을 포함하는 것을 특징으로 하는 움직임 추정 장치.
  7. 현재의 프레임 이미지와 이전 프레임 이미지간의 화소값을 비교하는 과정을 통해서 움직임 벡터(Motion Vector, 이하 MV)를 예측하는 움직임 추정 방법에 있어서,
    현재 매크로블록에 대한 최소 SAD와 그에 해당하는 MV를 탐색하고, 현재 매크로블록 화소 데이터의 평균값을 구하는 제1 단계;
    연산복잡도 파라미터를 입력받아 상기 연산복잡도 파라미터를 기준으로 결정되는 움직임 추정 모드에 따라 현재 프레임 이미지에 대한 움직임 추정 연산을 수행하는 제2 단계; 및
    상기 움직임 추정 연산후 얻어지는 현재 매크로블록에 대한 최소 SAD와 그에 해당하는 MV를 출력하는 제3 단계를 포함하는 것을 특징으로 하는 움직임 추정 방법.
  8. 청구항 7에 있어서, 상기 제1 단계는,
    상기 현재 SAD를 구할 MV에 대해 이미 계산된 SAD가 있는지 확인하는 단계; 및
    상기 MV 예측값들을 기초로 현재 SAD값을 구할 MV를 생성하고, 현재 SAD값을 구할 MV가 탐색 범위를 벗어나는지 아닌지를 확인하는 제4 단계를 더 포함하는 것을 특징으로 하는 움직임 추정 방법.
  9. 청구항 7 또는 청구항 8에 있어서,
    상기 매크로블록에 대한 MV를 찾을 때, 상기 MV 예측값 주변으로 ±2 화소 이내의 MV들에 대해 SAD 값들을 구하고, 그 중 최소의 SAD 값을 갖는 MV를 선택하는 것을 특징으로 하는 움직임 추정 방법.
  10. 청구항 7에 있어서,
    상기 연산복잡도 파라미터는 4MV 모드 관련된 동작을 수행하는지 여부를 결정하는 값(EN4), 매크로블록 단위의 움직임 추정에서 찾은 MV 주위로 블록단위 움직임 추정을 주변 ±1 화소에 대해서 수행할 것인지, ±2 화소에 대해서 수행할 것인지를 결정하는 값(LW4), 움직임 추정을 정수단위 화소에 대해서만 수행하는지 여부를 결정하는 값(IPO), 반화소 단위의 움직임 추정을 수행하기 전에 1MV 모드인지 4MV 모드인지를 먼저 정하고 그 결과에 따라 둘 중 하나의 모드에 대해서만 반화소 단위의 움직임 추정을 수행할 것인지 여부를 결정하는 값(MEP)을 포함하는 것을 특징으로 하는 움직임 추정 방법.
  11. 청구항 8에 있어서,
    상기 MV 예측값은 매크로블록단위 움직임 추정에 이용되는 것으로 (0,0)에 위치한 블록의 MV값이 되는 MV 예측값0(MVPX0, MVPY0), 예측값 2, 3, 4의 중간값이 되는 MV 예측값1(MVPX1, MVPY1), 위에 위치한 블록의 MV값이 되는 MV 예측값2(MVPX2, MVPY2), 위/오른쪽대각선 방향에 위치한 블록의 MV값이 되는 MV 예측값3(MVPX3, MVPY3), 및 왼쪽에 위치한 블록의 MV값이 되는 MV 예측값4(MVPX4, MVPY4)을 포함하는 것을 특징으로 하는 움직임 추정 방법.
  12. 청구항 7 또는 청구항 10에 있어서,
    상기 연산복잡도 파라미터중 4MV 모드 관련된 동작을 수행하는지 여부를 결정하는 값(EN4)이 입력된 경우에,
    상기 EN4가 0이면, 움직임 추정 모드를 결정하는 단계로 진행하고,
    상기 EN4가 1이면, 상기 연산복잡도 파라미터중 매크로블록 단위의 움직임 추정에서 찾은 MV 주위로 블록단위 움직임 추정을 주변 ±1 화소에 대해서 수행할 것인지, ±2 화소에 대해서 수행할 것인지를 결정하는 값(LW4)의 입력여부를 확인하는 것을 특징으로 하는 움직임 추정 방법.
  13. 청구항 12에 있어서,
    상기 매크로블록 단위의 움직임 추정에서 찾은 MV 주위로 블록단위 움직임 추정을 주변 ±1 화소에 대해서 수행할 것인지, ±2 화소에 대해서 수행할 것인지를 결정하는 값(LW4)이 입력된 경우에,
    상기 LW4가 1이면, 현재 매크로블록의 4개 휘도 블록들에 대한 ME를 수행하되 매크로블록 단위의 움직임 추정에서 찾은 MV 주위로 블록단위 움직임 추정을 주변 ±1 화소에 대해서 수행하고,
    상기 LW4가 0이면, 현재 매크로블록의 4개 휘도 블록들에 대한 ME를 수행하되 매크로블록 단위의 움직임 추정에서 찾은 MV 주위로 블록단위 움직임 추정을 주변 ±2 화소에 대해서 수행하며,
    상기 블록단위 움직임 추정을 수행한후 움직임 추정 모드를 결정하는 단계로 진행하는 것을 특징으로 하는 움직임 추정 방법.
  14. 청구항 12에 있어서, 상기 움직임 추정 모드를 결정하는 단계에서,
    Figure 112004013906276-pat00012
    이 참이면 인트라 모드로 결정하고, 그렇지않다면 인터 모드로 결정하며,
    A는 부호화 결정 파라미터로
    Figure 112004013906276-pat00013
    에 의해 정의되고,
    MB_mean은 현재 매크로블록에 대한 화소 평균값으로
    Figure 112004013906276-pat00014
    (여기서,
    Figure 112004013906276-pat00015
    는 현재 프레임의 화소 값)에 의해 정의되며,
    THRINTRA가 사용자에 의해 설정될 수 있는 값인 것을 특징으로 하는 움직임 추정 방법.
  15. 청구항 14에 있어서,
    상기 움직임 추정 모드가 인트라 모드로 결정되는 경우에는 움직임 추정 연산을 종료하며,
    상기 움직임 추정 모드가 인터 모드로 결정되는 경우에는 상기 연산복잡도 파라미터중 움직임 추정을 정수단위 화소에 대해서만 수행하는지 여부를 결정하는 값(IPO)이 입력되었는지 확인하는 것을 특징으로 하는 움직임 추정 방법.
  16. 청구항 15에 있어서,
    상기 움직임 추정을 정수단위 화소에 대해서만 수행하는지 여부를 결정하는 값(IPO)이 입력된 경우에,
    상기 IPO가 1이면 움직임 추정을 정수단위 화소에 대해서만 수행하되,
    Figure 112004013906276-pat00016
    (여기서, SAD16은 매크로블록 단위의 움직임 추정 결과로 얻은 SAD값이고, SAD8은 블록 단위의 움직임 추정 결과로 얻은 SAD 값이며, THR1MV은 사용자에 의해 설정되는 임의값)에 의해 1MV 모드인지 4MV 모드인지를 결정한후 해당 모드에서의 움직임 추정을 수행하며,
    상기 IPO가 0이면 상기 연산복잡도 파라미터중 반화소 단위의 움직임 추정을 수행하기 전에 1MV 모드인지 4MV 모드인지를 먼저 정하고 그 결과에 따라 둘 중 하나의 모드에 대해서만 반화소 단위의 움직임 추정을 수행할 것인지 여부를 결정하는 값(MEP)이 입력되었는지 확인하는 것을 특징으로 하는 움직임 추정 방법.
  17. 청구항 16에 있어서,
    상기 반화소 단위의 움직임 추정을 수행하기 전에 1MV 모드인지 4MV 모드인지 를 먼저 정하고 그 결과에 따라 둘 중 하나의 모드에 대해서만 반화소 단위의 움직임 추정을 수행할 것인지 여부를 결정하는 값(MEP)이 입력된 경우에,
    MEP가 1이면,
    Figure 112004013906276-pat00017
    (여기서, SAD16은 매크로블록 단위의 움직임 추정 결과로 얻은 SAD값이고, SAD8은 블록 단위의 움직임 추정 결과로 얻은 SAD 값이며, THR1MV은 사용자에 의해 설정되는 임의값)에 의해 1MV 모드인지 4MV 모드인지를 결정한후 해당 모드에서의 반화소 움직임 추정을 수행하고,
    MEMP가 0이면 매크로블록 단위의 반화소 움직임 추정을 수행하되, 4MV 모드 관련된 동작을 수행하는지 여부를 결정하는 값(EN4)을 확인하며,
    상기 EN4가 1이면 블록 단위의 반화소 움직임 추정을 수행하고,
    상기 EN4가 0이면 1MV 모드 관련된 동작을 수행하되,
    Figure 112004013906276-pat00018
    (여기서, SAD16은 매크로블록 단위의 움직임 추정 결과로 얻은 SAD값이고, SAD8은 블록 단위의 움직임 추정 결과로 얻은 SAD 값이며, THR1MV은 사용자에 의해 설정되는 임의값)에 의해 1MV 모드인지 4MV 모드인지를 결정한후 해당 모드에서의 움직임 추정을 수행하는 것을 특징으로 하는 움직임 추정 방법.
  18. 움직임 추정과 텍스처 부호화를 매크로블록 단위의 파이프라인 구조를 이용하 여 동시에 처리하는, 즉 매크로블록 0번의 ME를 수행하고, 이어서 매크로블록 1번의 ME와 매크로블록 0번의 텍스처 부호화를 동시에 수행하고, 이어서 매크로블록 2번의 ME와 매크로블록 1번의 텍스처 부호화를 동시에 수행하는 식의 영상 부호화기에 있어서,
    복수의 움직임 추정 모드를 정의하는 연산 복잡도 파라미터를 입력받는 단계; 및
    상기 입력받은 연산 복잡도 파라미터를 이용하여 현재 프레임 이미지에 대한 움직임 추정 연산량을 증가 또는 감소시킴으로써 움직임 추정과 텍스처 부호화에 소요되는 시간을 조절하는 단계를 포함하는 것을 특징으로 하는 영상 부호화기의 움직임 추정과 텍스처 부호화 시간 조절방법.
  19. 청구항 18에 있어서,
    상기 연산복잡도 파라미터는 움직임 추정을 정수단위 화소에 대해서만 수행하는지 여부를 결정하는 값(IPO), 4MV 모드 관련된 동작을 수행하는지 여부를 결정하는 값(EN4), 매크로블록 단위의 움직임 추정에서 찾은 MV 주위로 블록단위 움직임 추정을 주변 ±1 화소에 대해서 수행할 것인지, ±2 화소에 대해서 수행할 것인지를 결정하는 값(LW4), 및 반화소 단위의 움직임 추정을 수행하기 전에 1MV 모드인지 4MV 모드인지를 먼저 정하고 그 결과에 따라 둘 중 하나의 모드에 대해서만 반화소 단위의 움직임 추정을 수행할 것인지 여부를 결정하는 값(MEP)을 포함하는 것을 특징으로 영상 부호화기의 움직임 추정과 텍스처 부호화 시간 조절방법.
  20. 청구항 9에 있어서,
    상기 MV 예측값은 매크로블록단위 움직임 추정에 이용되는 것으로 (0,0)에 위치한 블록의 MV값이 되는 MV 예측값0(MVPX0, MVPY0), 예측값 2, 3, 4의 중간값이 되는 MV 예측값1(MVPX1, MVPY1), 위에 위치한 블록의 MV값이 되는 MV 예측값2(MVPX2, MVPY2), 위/오른쪽대각선 방향에 위치한 블록의 MV값이 되는 MV 예측값3(MVPX3, MVPY3), 및 왼쪽에 위치한 블록의 MV값이 되는 MV 예측값4(MVPX4, MVPY4)을 포함하는 것을 특징으로 하는 움직임 추정 방법.
KR1020040023168A 2004-04-03 2004-04-03 최적화된 연산복잡도를 갖는 움직임 추정 장치 및 그 방법 KR100618910B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020040023168A KR100618910B1 (ko) 2004-04-03 2004-04-03 최적화된 연산복잡도를 갖는 움직임 추정 장치 및 그 방법
US11/073,500 US20050232360A1 (en) 2004-04-03 2005-03-04 Motion estimation apparatus and method with optimal computational complexity

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040023168A KR100618910B1 (ko) 2004-04-03 2004-04-03 최적화된 연산복잡도를 갖는 움직임 추정 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20050097386A KR20050097386A (ko) 2005-10-07
KR100618910B1 true KR100618910B1 (ko) 2006-09-01

Family

ID=35096262

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040023168A KR100618910B1 (ko) 2004-04-03 2004-04-03 최적화된 연산복잡도를 갖는 움직임 추정 장치 및 그 방법

Country Status (2)

Country Link
US (1) US20050232360A1 (ko)
KR (1) KR100618910B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8358693B2 (en) 2006-07-14 2013-01-22 Microsoft Corporation Encoding visual data with computation scheduling and allocation
US8311102B2 (en) * 2006-07-26 2012-11-13 Microsoft Corporation Bitstream switching in multiple bit-rate video streaming environments
US8340193B2 (en) * 2006-08-04 2012-12-25 Microsoft Corporation Wyner-Ziv and wavelet video coding
US7388521B2 (en) * 2006-10-02 2008-06-17 Microsoft Corporation Request bits estimation for a Wyner-Ziv codec
US8451897B2 (en) * 2006-12-04 2013-05-28 Atmel Corporation Highly parallel pipelined hardware architecture for integer and sub-pixel motion estimation
US8340192B2 (en) * 2007-05-25 2012-12-25 Microsoft Corporation Wyner-Ziv coding with multiple side information
KR100950042B1 (ko) * 2007-10-17 2010-03-29 한국전자통신연구원 가변 시간 슬롯을 가지는 파이프라인 기법을 이용한 영상 부호화 장치 및 방법
US8295342B2 (en) * 2007-11-14 2012-10-23 International Business Machines Corporation Method and system for efficient video compression with low-complexity encoder
KR100926752B1 (ko) 2007-12-17 2009-11-16 한국전자통신연구원 동영상 부호화를 위한 미세 움직임 추정 방법 및 장치
KR101441886B1 (ko) * 2008-06-25 2014-09-25 에스케이텔레콤 주식회사 영상 코덱의 복잡도 측정 방법 및 장치
KR100958177B1 (ko) * 2009-01-22 2010-05-14 주식회사 코아로직 영상의 부호화 방법 및 장치
WO2013077659A1 (ko) * 2011-11-24 2013-05-30 에스케이텔레콤 주식회사 모션 벡터의 예측 부호화/복호화 방법 및 장치
KR101960761B1 (ko) 2011-11-24 2019-03-22 에스케이텔레콤 주식회사 모션 벡터의 예측 부호화/복호화 방법 및 장치
CN110913231B (zh) * 2019-12-12 2023-05-30 西安邮电大学 一种纹理图整数运动估计并行实现方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990016084A (ko) * 1997-08-13 1999-03-05 전주범 개선된 움직임 추정 장치 및 그 추정 방법
WO2000070879A1 (en) 1999-05-13 2000-11-23 Stmicroelectronics Asia Pacific Pte Ltd. Adaptive motion estimator
KR20030081117A (ko) * 2002-04-10 2003-10-17 마이크로소프트 코포레이션 색도 모션 벡터 라운딩
KR20040022697A (ko) * 2002-09-09 2004-03-16 한국전자통신연구원 영상 데이터 압축을 위한 움직임 추정 장치

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8660182B2 (en) * 2003-06-09 2014-02-25 Nvidia Corporation MPEG motion estimation based on dual start points

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990016084A (ko) * 1997-08-13 1999-03-05 전주범 개선된 움직임 추정 장치 및 그 추정 방법
WO2000070879A1 (en) 1999-05-13 2000-11-23 Stmicroelectronics Asia Pacific Pte Ltd. Adaptive motion estimator
KR20030081117A (ko) * 2002-04-10 2003-10-17 마이크로소프트 코포레이션 색도 모션 벡터 라운딩
KR20040022697A (ko) * 2002-09-09 2004-03-16 한국전자통신연구원 영상 데이터 압축을 위한 움직임 추정 장치

Also Published As

Publication number Publication date
KR20050097386A (ko) 2005-10-07
US20050232360A1 (en) 2005-10-20

Similar Documents

Publication Publication Date Title
US20050232360A1 (en) Motion estimation apparatus and method with optimal computational complexity
KR100468726B1 (ko) 실시간 가변 비트율 제어를 수행하는 부호화 장치 및 방법
KR100957316B1 (ko) 멀티미디어 코딩을 위한 모드 선택 기술
JP4529919B2 (ja) 適応量子化装置及び適応量子化プログラム
US6937656B2 (en) Method and apparatus for image coding
KR100739281B1 (ko) 움직임 추정 방법 및 장치
JP4224473B2 (ja) 適応的モード決定による動き予測方法
US20070047652A1 (en) Motion vector estimation apparatus and motion vector estimation method
US20060008008A1 (en) Method of multi-resolution based motion estimation and recording medium storing program to implement the method
US20070286284A1 (en) Image coding apparatus and image coding method
US20120076207A1 (en) Multiple-candidate motion estimation with advanced spatial filtering of differential motion vectors
KR100994768B1 (ko) 동영상 부호화를 위한 움직임 추정 방법 및 이를 구현하기위한 프로그램이 기록된 기록 매체
WO2012121234A1 (ja) 映像符号化装置、映像符号化方法および映像符号化プログラム
JP2007228519A (ja) 画像符号化装置及び画像符号化方法
US20120163462A1 (en) Motion estimation apparatus and method using prediction algorithm between macroblocks
KR100771640B1 (ko) 고속 모드 결정 기능을 구비한 h.264 인코더
KR100978596B1 (ko) 고속 다중 참조프레임 선택 절차에 의한 움직임 추정 방법
KR100771641B1 (ko) H.264 고속 모드 결정 방법
KR0180171B1 (ko) 블록 움직임 추정 방법
KR20060109440A (ko) 전력 최적화 콜로케이팅된 움직임 추정 방법
Semsarzadeh et al. A fine-grain distortion and complexity aware parameter tuning model for the H. 264/AVC encoder
KR100924641B1 (ko) 움직임 추정을 위한 고속 블록 정합 방법
KR100617177B1 (ko) 움직임 추정 방법
KR20070092481A (ko) H.264 동영상 부호화기의 적응적 고속 움직임 추정 방법
Yusuf et al. Probability based fast inter mode decision algorithm for H. 264/AVC

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: 20120806

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130722

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140730

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150803

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160729

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170725

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190725

Year of fee payment: 14