KR20050033099A - 고속 움직임 추정 장치 - Google Patents

고속 움직임 추정 장치 Download PDF

Info

Publication number
KR20050033099A
KR20050033099A KR1020030069020A KR20030069020A KR20050033099A KR 20050033099 A KR20050033099 A KR 20050033099A KR 1020030069020 A KR1020030069020 A KR 1020030069020A KR 20030069020 A KR20030069020 A KR 20030069020A KR 20050033099 A KR20050033099 A KR 20050033099A
Authority
KR
South Korea
Prior art keywords
basic
level
search
storage unit
block
Prior art date
Application number
KR1020030069020A
Other languages
English (en)
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 KR1020030069020A priority Critical patent/KR20050033099A/ko
Priority to US10/956,375 priority patent/US20050089099A1/en
Priority to CNA2004101033545A priority patent/CN1642281A/zh
Publication of KR20050033099A publication Critical patent/KR20050033099A/ko

Links

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/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/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
    • 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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search

Landscapes

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

Abstract

본 발명은 다양한 크기의 블록들에 대한 움직임 추정 장치에 관한 것으로, 본 발명에 따른 고속 움직임 추정 장치는 소정의 매크로블록으로부터 분리된 기본적인 단위의 하위 레벨 기본 블록 각각에 대한 SAD들을 병합하여, 여러 가지 단위의 블록에 대한 SAD를 산출하는 SAD 병합부; 및 SAD 병합부에서 산출된 여러 가지 단위의 블록에 대한 SAD 중, 최선의 움직임 추정을 수행하는 모드의 블록을 결정하는 최선 움직임 추정 블록 결정부를 포함하며, 입력 영상이 SD 급인 경우에도 실시간으로 다양한 크기의 블록들에 대한 고속의 움직임 추정 장치를 구현할 수 있다.

Description

고속 움직임 추정 장치 {Apparatus for fast motion estimation}
본 발명은 다양한 크기의 블록들에 대한 움직임 추정 장치에 관한 것이다.
최근 새롭게 제정된 ITU-T H.264 (ISO/IEC MPEG4 AVC)에서는 다양한 블록 크기를 가지는 움직임 추정 방식을 채택함으로서 다양한 블록 크기를 가지는 움직임 추정 방식의 필요성은 더욱 커지고 있다. 동영상 코덱에서 가장 복잡하고 계산량이 많이 드는 부분은 움직임 추정 부분이며, 특히 다양한 블록 크기에 대해서 움직임 추정을 수행하려면 더욱 더 많은 계산량을 필요로 한다. 따라서, 고속 움직임 추정 알고리즘과 그 알고리즘에 적합한 효율적인 하드웨어 구조가 필요하다. 보다 상세하게는, 본 발명은 고속의 움직임 추정 알고리즘을 하드웨어로 구현하기 위한 효율적인 구조에 관한 것이다.
종래와 같이 전역 탐색(full search)에 의해, 다양한 크기의 블록들에 대한 움직임 추정을 하는 경우, 필요한 계산량이 상당히 크기 때문에, 실시간(real time)으로 인코딩/디코딩(encoding/decoding)하는 하드웨어를 설계할 경우, 하드웨어 코스트(칩 사이즈, 소모 전력 등)가 상당히 증가되는 문제점이 있었다.
이것으로 인해 부분 탐색을 이용한 고속 움직임 추정 알고리즘이 개발되었으며, 이 알고리즘을 구현하기 위한 하드웨어는 아직까지 최적의 구조가 개발되지 않았다는 문제점이 있었다. 입력 영상이 CIF(Common Image Format)급일 때에는 352x288 해상도의 프레임이 30Hz로 입력되어, 종래의 하드웨어 구조로도 실시간으로 처리할 수 있었으나, 입력 영상이 SD(Standard Definition)급일 때는 720x480 해상도의 프레임이 30Hz로 입력되기 때문에, 종래의 하드웨어 구조로는 실시간으로 처리할 수 없다는 문제점이 있었다.
본 발명이 이루고자 하는 기술적 과제는 최소한의 연산 소자 및 기억 소자들을 반복적으로 이용함으로서, 입력 영상이 SD 급인 경우에도 실시간으로 다양한 크기의 블록들에 대한 고속의 움직임 추정 장치를 구현할 수 있게 하는 하드웨어 구조를 제공하는데 있다.
상기 기술적 과제를 해결하기 위한 본 발명에 따른 고속 움직임 추정 장치는 소정의 매크로블록으로부터 분리된 기본적인 단위의 하위 레벨 기본 블록 각각에 대한 SAD들을 병합하여, 여러 가지 단위의 블록에 대한 SAD를 산출하는 SAD 병합부; 및 상기 SAD 병합부에서 산출된 여러 가지 단위의 블록에 대한 SAD 중, 최선의 움직임 추정을 수행하는 모드의 블록을 결정하는 최선 움직임 추정 블록 결정부를 포함한다.
이하에서는 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다.
도 1은 본 발명에 사용되는 고속 움직임 추정 알고리즘을 도시한 도면이다.
도 1을 참조하면, 고속 움직임 추정 알고리즘은 상위 레벨(upper level), 중간 레벨(middle level), 및 하위 레벨(lower level)로 구성된다.
하위 레벨의 영상은 원 영상이고, 중간 레벨의 영상은 원 영상에 대해 가로, 세로 각각 1/2씩 서브샘플링(subsampling)하여 원 영상의 가로 및 세로가 각각 1/2씩 줄어든 영상이고, 하위 레벨의 영상은 원 영상에 대해 가로, 세로 각각 1/4씩 서브샘플링(subsampling)하여 원 영상의 가로 및 세로가 각각 1/4씩 줄어든 영상이다. 이와 같은 여러 레벨의 영상들에 대해, 먼저 상위 레벨에서 전역 탐색(full search)을 수행하고, 중간 레벨 및 상위 레벨에서는 이전 레벨에서 얻어진 움직임 벡터(motion vector)를 탐색점으로 각각 순차적으로 부분 탐색을 수행하여 좀 더 세밀하게 조정한 후 최종 움직임 벡터를 얻게 된다.
구체적으로 설명하면 다음과 같다. 상위 레벨에서는 가로 및 세로가 각각 원 영상의 1/4인 크기인 영상을 이용하여 탐색을 수행한다. 가로 및 세로가 각각 1/4씩 줄어든 4x4 블록 단위로 탐색 영역(search area)의 크기도 가로 및 세로가 각각 1/4씩 줄고, 가로/세로 ±p/4씩 늘어난 화소 영역에 대해서 전역 탐색을 수행한다. 여기에서, p는 탐색 범위를 나타낸다. 상위 레벨의 탐색 후, 절대 차들의 합(Sum of Absolute Differences, 이하 SAD라 한다)이 최소가 되는 두 점을 중간 레벨의 탐색을 위한 상위 레벨 후보 움직임 벡터(candidate motion vector)로 선정한다.
중간 레벨에서는 가로, 세로 각각 원 영상의 1/2 크기인 영상을 이용하여 탐색한다. 중간 레벨에서는 총 3개의 상위 레벨 후보 움직임 벡터에 대해서 각각의 상위 레벨 후보 움직임 벡터를 초기 탐색점으로 하여 8x8 블록 단위로 가로/세로 ±2 화소 크기의 부분 탐색을 수행한다. 3개의 초기 탐색점 중, 2개는 상위 레벨에서 선정된 것이고, 나머지 하나는 움직임 벡터들의 공간적 상관 관계를 이용하여 선정된 것이다. 이들 3개의 초기 탐색점에 대해서 탐색을 수행하여 최소 SAD를 가지는 점을 각각 하나씩 얻게 되면, 그 중에서 SAD가 최소인 한 점을 하위 레벨에서의 초기 탐색점으로 선정하나다.
하위 레벨에서는 원 영상을 그대로 이용하여 탐색한다. 하위 레벨에서는 중간 레벨에서 선정된 초기 탐색점에 대해서 16x16 블록 단위로 가로/세로 ±2 화소 크기의 부분 탐색을 수행한다.
마지막으로, 4x4 블록 단위로 SAD를 구하고, 이것을 이용하여 4x8, 8x4, 8x8, 16x8, 8x16, 16x16 등의 다양한 크기를 갖는 블록에 대한 SAD를 구한다.
도 2는 본 발명이 바람직한 일 실시예에 따른 고속 움직임 추정 장치의 구성도이다.
도 2를 참조하면, 고속 움직임 추정 장치는 매크로블록 저장부(1), 탐색 영역 저장부(2), 현재 탐색 영역 저장부(3), 기본 블록 저장부(4), 기본 탐색 유닛(5), SAD 비교부(6), 주소 생성부(7), SAD 병합부(8), 및 최선 움직임 추정 블록 결정부(9)로 구성된다.
매크로블록 저장부(1)는 현재 프레임으로부터 매크로블록을 추출하고, 추출된 매크로블록을 저장한다. 여기에서, 매크로블록은 MPEG에서의 인코딩 및 디코딩의 단위가 되는 블록을 말한다.
탐색 영역 저장부(2)는 이전 프레임으로부터 매크로블록에 대한 탐색 영역을 추출하고, 추출된 탐색 영역을 저장한다. 이때, 탐색 영역을 넓게 잡으면 좀 더 정확한 움직임 추정을 할 수 있지만, 계산량은 많아지게 된다.
현재 탐색 영역 저장부(3)는 탐색 영역 저장부(2)에 저장된 탐색 영역으로부터 매크로블록의 해상도보다 낮은 해상도를 갖는 상위 레벨 탐색 영역을 추출하고, 추출된 상위 레벨 탐색 영역을 저장한다. 움직임 추정에 대한 계산량을 줄이기 위해, 탐색 영역의 해상도를 낮춰, 가로, 세로 크기가 줄어든 상위 레벨 탐색 영역을 만든다.
기본 블록 저장부(4)는 매크로블록 저장부(1)에 저장된 매크로블록으로부터 상위 레벨 탐색 영역의 해상도와 동일한 해상도를 갖는 상위 레벨 기본 블록을 추출하고, 추출된 상위 레벨 기본 블록을 동시 탐색 단위 개수만큼 저장한다. 움직임 추정을 위해 서로 비교되는 양 화면의 해상도는 같아야 한다. 따라서, 매크로블록의 해상도를 낮춰, 상위 레벨 탐색 영역의 해상도와 동일한 해상도를 갖는 상위 레벨 기본 블록을 만든다.
기본 탐색 유닛(5)은 기본 블록 저장부(4)에 저장된 상위 레벨 기본 블록 각각과 현재 탐색 영역 저장부(3)에 저장된 상위 레벨 탐색 영역 중, 기본 블록 저장부(4)에 저장된 상위 레벨 기본 블록들 각각에 대응되는 영역에 대한 SAD를 산출한다. SAD 산출 식에 상위 레벨 기본 블록 각각의 점들의 휘도 및 좌표 값과 이 점들에 일 대 일로 대응되는 상위 레벨 탐색 영역의 점들의 휘도 및 좌표 값을 대입하여, SAD를 구한다. 일반적으로, 움직임 추정은 휘도 차이만을 가지고 계산한다.
기본 탐색 유닛(5)에서 상위 레벨 기본 블록 모두에 대한 SAD가 산출될 때마다, 현재 탐색 영역 저장부(3)는 소정의 부분 영역에 대한 SAD 산출이 완료될 때까지 상위 레벨 탐색 영역의 저장 위치를 한 비트씩 이동(shift)시킨다. 현재 탐색 영역 저장부(3)에는 기본적으로 탐색하고자 하는 탐색 영역에 부분 탐색에 해당하는 영역, 즉 부분 영역을 부가한 영역이 저장된다. 왜냐하면, 기본 탐색 유닛(5)에서는 기본적으로 탐색하고자 하는 탐색 영역의 모든 점들에 대해서 이 점 각각을 중심으로 한 부분 영역을 탐색하여야 하고, 가장 자리에 있는 점 각각을 중심으로 한 부분 영역을 탐색하기 위해서는, 현재 탐색 영역 저장부(3)는 부분 영역만큼 늘어난 상위 레벨 탐색 영역을 저장하고 있어야 한다. 기본 탐색 유닛(5)은 부분 영역 모두를 탐색하기 위하여 부분 영역에 대한 SAD 산출이 완료될 때까지 상위 레벨 탐색 영역의 저장 위치를 한 비트씩 이동시킨다. 이때, 한 비트씩 계속 이동시켜, 부분 영역 모두를 커버하는 회수만큼 이동되어야 한다.
현재 탐색 영역 저장부(3)에서 저장 위치가 한 비트씩 이동될 때마다, 기본 탐색 유닛(5)은 상위 레벨 기본 블록 각각과 한 비트씩 이동된 상위 레벨 탐색 영역 중, 상위 레벨 기본 블록 각각에 대응되는 영역에 대한 SAD를 산출한다. 즉, 기본 블록 저장부(4)에 저장된 상위 레벨 기본 블록 각각의 저장 위치는 고정되어 있고, 현재 탐색 영역 저장부(3)에 저장된 상위 레벨 탐색 영역의 저장 위치는 이동되므로, 기본 탐색 유닛(5)은 입력된 상위 레벨 기본 블록 및 상위 레벨 탐색 영역을 가지고, 기계적으로 SAD를 산출하기만 하면, 부분 탐색의 효과가 발생하게 된다.
부분 영역에 대한 SAD 산출이 완료된 경우, 현재 탐색 영역 저장부(3)는 탐색 영역에 대한 SAD 산출이 완료될 때까지, 즉 전역 탐색이 완료될 때까지 탐색 영역으로부터 상위 레벨 탐색 영역과는 다른 상위 레벨 탐색 영역을 추출하고, 추출된 다른 일부 탐색 영역을 저장한다. 탐색 영역 저장부(2)에 저장된 탐색 영역이 넓을수록, 보다 많은 개수의 상위 레벨 탐색 영역을 추출하고, 이들 각각에 대해서 상기된 과정을 되풀이하여야 한다. 즉, 기본 탐색 유닛(5)은 기본 블록 저장부(4)에 저장된 상위 레벨 기본 블록 각각과 현재 탐색 영역 저장부(3)에 저장된 다른 상위 레벨 탐색 영역 중, 기본 블록 저장부(4)에 저장된 상위 레벨 기본 블록 각각에 대응되는 영역에 대한 SAD를 산출한다.
SAD 비교부(6)는 기본 탐색 유닛(5)에서 산출된 상위 레벨 기본 블록에 대한 SAD들을 비교한다. 즉, 상기한 바와 같이 기본 탐색 유닛(5)을 반복적으로 이용하여 전역 탐색을 완료한 경우, SAD 비교부(7)는 전역 탐색의 결과물인 SAD를 비교한다.
주소 생성부(7)는 SAD 비교부(7)에서 비교된 결과에 의한 최소의 SAD를 갖는 A개의 점과 인접 움직임 벡터들의 공간적 상관 관계에 의한 B개의 점이 나타내는 C(=A+B)개의 상위 레벨 후보 움직임 벡터(candidate motion vector)에 대한 탐색 영역에 대응되는 주소를 생성한다. 이 주소는 중간 레벨에서 수행될 탐색 영역을 탐색 영역 저장부(2)로부터 추출하기 위한 주소이다. 상위 레벨에서 탐색된 후보 움직임 벡터들과 중간 레벨에서 탐색된 후보 움직임 벡터(이하에서 기술된다)는 최종 움직임 벡터를 탐색하기 위한 기준을 제공한다. 즉, 계산량을 낮추기 위해 저해상도에서 상위 레벨 후보 움직임 벡터들을 전역 탐색(전역에서 탐색한다는 것의 줄인 말이다)하고, 정확성을 높이기 위해 이들 상위 레벨 후보 움직임 벡터들을 중심으로 상기된 저해상도보다는 좀 더 높은 해상도에서 중간 레벨 후보 움직임 벡터를 부분 탐색(부분 영역에서 탐색한다는 것의 줄인 말이다)하고, 마지막으로 중간 레벨 후보 움직임 벡터를 중심으로 원래의 해상도에서 최종 움직임 벡터를 부분 탐색하는 것이다. 여기에서, A는 1 이상이며, B는 0 이상이다. 다시 말하면, SAD 비교부(7)에서 비교된 결과에 의한 최소의 SAD를 갖는 하나의 점은 반드시 상위 레벨 후보 움직임 벡터가 되고, 최소의 SAD 다음으로 작은 SAD들과 인접 움직임 벡터들의 공간적 상관 관계에 의한 점들은 보다 정확한 움직임 추정을 위한 부수적인 상위 레벨 후보 움직임 벡터들이다. 계산량 및 정확성을 교량하여, 일반적으로 최소의 SAD를 갖는 2개의 점과 움직임 벡터들의 공간적 상관 관계에 의한 1개의 점을 중심으로 부분 탐색을 진행한다.
현재 탐색 영역 저장부(3)는 탐색 영역 저장부(2)에 저장된 탐색 영역으로부터 주소 생성부(7)에서 생성된 주소 중, C개의 상위 레벨 후보 움직임 벡터 중 어느 하나의 상위 레벨 후보 움직임 벡터에 대한 탐색 영역에 대응되는 주소에 저장되어 있고, 매크로블록의 해상도보다 낮고, 상위 레벨 탐색 영역의 해상도보다 높은 해상도를 갖는 중간 레벨 탐색 영역을 추출하고, 추출된 중간 레벨 탐색 영역을 저장한다. 중간 레벨은 상위 레벨과 하위 레벨의 중간이 되는 해상도에서 최종 움직임 벡터를 탐색하기 전에 최종 움직임 벡터를 탐색하기 위한 기준이 되는 중간 레벨 후보 움직임 벡터를 탐색하는 과정이다.
기본 블록 저장부(4)는 매크로블록 저장부(1)에 저장된 매크로블록으로부터 중간 레벨 탐색 영역의 해상도와 동일한 해상도를 갖는 중간 레벨 블록을 추출하고, 추출된 중간 레벨 블록으로부터 동시 탐색 단위 개수만큼의 중간 레벨 기본 블록들을 분리하고, 분리된 중간 레벨 기본 블록들을 저장한다. 상위 레벨에서와 마찬가지로, 움직임 추정을 위해 서로 비교되는 양 화면의 해상도는 같아야 하므로, 중간 레벨 탐색 영역의 해상도와 동일한 해상도를 갖는 중간 레벨 블록을 추출한다.
기본 탐색 유닛(5)은 기본 블록 저장부(4)에 저장된 중간 레벨 기본 블록 각각과 현재 탐색 영역 저장부(3)에 저장된 중간 레벨 탐색 영역 중, 중간 레벨 기본 블록 각각에 대응되는 영역에 대한 SAD를 산출한다. 상위 레벨에서와 마찬가지로, SAD 산출 식에 중간 레벨 기본 블록 각각의 점들의 휘도 및 좌표 값과 이 점들에 일 대 일로 대응되는 중간 레벨 탐색 영역의 점들의 휘도 및 좌표 값을 대입하여, SAD를 구한다.
기본 탐색 유닛(5)에서 중간 레벨 기본 블록 모두에 대한 SAD가 산출될 때마다, 현재 탐색 영역 저장부(3)는 부분 영역에 대한 SAD 산출이 완료될 때까지 현재 탐색 영역 저장부(3)에 저장된 중간 레벨 탐색 영역의 저장 위치를 한 비트씩 이동시킨다. 상위 레벨에서와 마찬가지로, 부분 영역 모두를 커버하는 회수만큼 이동되어야 한다.
현재 탐색 영역 저장부(3)에서 저장 위치가 한 비트씩 이동될 때마다, 기본 탐색 유닛(5)은 중간 레벨 기본 블록 각각과 한 비트씩 이동된 중간 레벨 탐색 영역 중, 중간 레벨 기본 블록 각각에 대응되는 영역에 대한 SAD를 산출한다.
SAD 병합부(8)는 기본 탐색 유닛(5)에서 산출된 중간 레벨 기본 블록 각각에 대한 SAD를 병합하여, 중간 레벨 블록에 대한 SAD를 산출한다. 상위 레벨 기본 블록은 그 자체가 저해상도의 매크로블록이기 때문에 이와 같은 SAD 병합 과정이 필요 없었으나, 중간 레벨 기본 블록은 저해상도의 매크로블록, 즉 중간 레벨 블록을 분리한 것들 중, 어느 하나이기 때문에 매크로블록에 대한 움직임 벡터를 구하기 위해서는 중간 레벨 기본 블록 각각에 대한 SAD를 병합하여, 중간 레벨 블록에 대한 SAD를 산출하여야 한다.
부분 영역 탐색이 완료될 때마다, 현재 탐색 영역 저장부(3)는 C개의 상위 레벨 후보 움직임 벡터 중, 상기 후보 움직임 벡터와는 다른 움직임 벡터에 대한 탐색이 완료될 때까지 다른 움직임 벡터에 탐색 영역에 대응되는 주소에 저장되어 있는 다른 중간 레벨 탐색 영역을 추출하고, 추출된 다른 중간 레벨 탐색 영역을 저장한다. 즉, 하나의 상위 레벨 후보 움직임 벡터에 대한 부분 탐색이 완료된 경우, 순차적으로 다른 상위 레벨 후보 움직임 벡터들에 대해서도 부분 탐색을 하는 것이다. 즉, 현재 탐색 영역 저장부에 다른 중간 레벨 탐색 영역이 저장될 때마다, 기본 탐색 유닛(5)은 기본 블록 저장부(4)에 저장된 중간 레벨 기본 블록 각각과 현재 탐색 영역 저장부(3)에 저장된 다른 중간 레벨 탐색 영역 중, 중간 레벨 기본 블록 각각에 대응되는 영역에 대한 SAD를 산출하고, 이후의 과정은 상기한 바와 같이 되풀이된다.
SAD 비교부(6)는 SAD 병합부(8)에서 산출된 중간 레벨 블록에 대한 SAD들을 비교한다. 즉, 상기한 바와 같이 기본 탐색 유닛(5)을 반복적으로 이용하여 부분 탐색을 완료한 경우, SAD 비교부(6)는 부분 탐색의 결과물인 SAD들을 비교한다.
주소 생성부(7)는 SAD 비교부(6)에서 비교된 결과로부터 최소의 SAD를 갖는 점이 나타내는 중간 레벨 후보 움직임 벡터에 대한 탐색 영역에 대응되는 주소를 생성한다. 이 주소는 하위 레벨에서 수행될 탐색 영역을 탐색 영역 저장부(2)로부터 추출하기 위한 주소이다.
현재 탐색 영역 저장부(3)는 탐색 영역 저장부(2)에 저장된 탐색 영역으로부터 주소 생성부(7)에서 생성된 주소 중, 중간 레벨 후보 움직임 벡터에 대한 탐색 영역에 대응되는 주소에 저장되어 있고, 매크로블록의 해상도와 동일한 해상도를 갖는 하위 레벨 탐색 영역을 추출하고, 추출된 하위 레벨 탐색 영역을 저장한다. 하위 레벨은 중간 레벨 후보 움직임 벡터를 중심으로 원래의 해상도에서 최종 움직임 벡터를 탐색하는 과정이다.
기본 블록 저장부(4)는 매크로블록 저장부(1)에 저장된 매크로블록으로부터 어느 하나의 하위 레벨 블록을 분리하고, 분리된 하위 레벨 블록으로부터 동시 탐색 단위 개수만큼의 하위 레벨 기본 블록들을 분리하고, 분리된 하위 레벨 기본 블록들을 저장한다. 하위 레벨 블록의 해상도는 매크로블록의 해상도와 동일하다.
기본 탐색 유닛(5)은 기본 블록 저장부(4)에 저장된 하위 레벨 기본 블록 각각과 현재 탐색 영역 저장부(3)에 저장된 하위 레벨 탐색 영역 중, 하위 레벨 기본 블록 각각에 대응되는 영역에 대한 SAD를 산출한다. 상위 레벨 및 중간 레벨에서와 마찬가지로, SAD 산출 식에 하위 레벨 기본 블록 각각의 점들의 휘도 및 좌표 값과 이 점들에 일 대 일로 대응되는 하위 레벨 탐색 영역의 점들의 휘도 및 좌표 값을 대입하여, SAD를 구한다.
기본 탐색 유닛(5)에서 하위 레벨 기본 블록 각각에 대한 SAD가 산출될 때마다, 현재 탐색 영역 저장부(3)는 부분 영역에 대한 SAD 산출이 완료될 때까지 현재 탐색 영역 저장부에 저장된 하위 레벨 탐색 영역의 저장 위치를 한 비트씩 이동시킨다.
현재 탐색 영역 저장부(3)에서 저장 위치가 한 비트씩 이동될 때마다, 기본 탐색 유닛(5)은 하위 레벨 기본 블록 각각과 한 비트씩 이동된 하위 레벨 탐색 영역 중, 하위 레벨 기본 블록 각각에 대응되는 영역에 대한 SAD를 산출한다. 상위 레벨 및 중간 레벨에서와 마찬가지로, 부분 영역 모두를 커버하는 회수만큼 이동되어야 한다.
부분 영역에 대한 SAD 산출이 완료될 때마다, 기본 블록 저장부(4)는 매크로블록에 대한 탐색이 완료될 때까지 매크로블록 저장부(1)에 저장된 매크로블록으로부터 하위 레벨 블록과는 다른 하위 레벨 블록을 분리하고, 분리된 다른 하위 레벨 블록으로부터 기본 탐색 개수만큼의 다른 하위 레벨 기분 블록들을 분리하고, 분리된 다른 하위 레벨 기본 블록들을 저장한다. 매크로블록으로부터 분리된 모든 하위 레벨 블록들에 대해서 상기된 과정을 되풀이하여야 한다. 즉, 기본 탐색 유닛(5)은 기본 블록 저장부(4)에 저장된 다른 하위 레벨 기본 블록 각각과 현재 탐색 영역 저장부에 저장된 하위 레벨 탐색 영역 중, 다른 하위 레벨 기본 블록 각각에 대응되는 영역에 대한 SAD를 산출한다.
SAD 병합부(8)는 매크로블록으로부터 분리된 하위 레벨 기본 블록들에 대한 SAD을 병합하여, 여러 가지 단위의 블록에 대한 SAD를 산출한다. 따라서, H.264에서 요구하는 다양한 크기의 블록들에 대한 SAD를 산출할 수 있게 된다. 다시 말하면, 본 발명에서는 기존의 고속 움직임 추정 알고리즘을 하드웨어로 효율적으로 구현하고, H.264에서 요구하는 다양한 크기의 블록들에 대한 SAD를 산출하기 위하여, H.264에서 요구하는 최소 크기의 블록을 기본 블록으로 설정하고, 이 기본 블록을 위한 기본 블록 저장부(4) 및 기본 탐색 유닛(5)을 반복적으로 이용하여 기본 블록들에 대한 SAD를 산출하고, 이 SAD를 병합(merging)하여 다양한 크기의 블록들에 대한 SAD를 산출한다.
최선 움직임 추정 블록 결정부(9)는 SAD 병합부(8)에서 산출된 여러 가지 단위의 블록에 대한 SAD 중, 최선의 움직임 추정을 수행하는 모드의 블록을 결정한다. SAD의 개수 및 움직임 벡터 각각의 데이터량을 교량하여 가장 효율적인 모드의 블록을 결정한다.
이하에서는, 매크로블록의 크기는 16x16이고, 기본 블록의 크기는 4x4인 일반적인 경우를 예로 들어 설명하기로 한다. 여기에서, 4x4 기본 블록은 H.264에서 제시한 최소 블록의 크기이다. 이때, 효율성을 고려하여 동시 탐색 단위를 4로 설정하기로 한다.
매크로블록 저장부(1)는 현재 프레임으로부터 16x16 매크로블록을 추출하고, 추출된 16x16 매크로블록을 저장한다.
탐색 영역 저장부(2)는 이전 프레임으로부터 16x16 매크로블록에 대한 탐색 영역을 추출하고, 추출된 탐색 영역을 저장한다. [-p, +p] 범위의 탐색을 수행하는 경우, (16+2p)x(16+2p) 크기의 탐색 영역을 추출한다. p 값은 MPEG 시스템의 능력에 따라서, 16, 32, 64 등 다양하게 결정된다. p 값이 클수록 넓은 영역에서 탐색할 수 있게 되어, 움직임이 큰 경우에 대해서도 안전한 움직임 추정을 할 수 있게 된다.
현재 탐색 영역 저장부(3)는 탐색 영역 저장부(3)에 저장된 탐색 영역으로부터 탐색 영역을 서브샘플링하여 가로, 세로 1/4씩 줄인 상위 레벨 탐색 영역을 추출하고, 추출된 상위 레벨 탐색 영역을 저장한다. 중간 레벨 및 하위 레벨을 고려하여 상위 레벨 탐색 영역의 크기는 12x12로 설정한다. 이 크기는 4x4 블록에 대한 [-4, +4] 범위의 탐색에 필요한 데이터의 크기와 동일하다.
동시 탐색 단위가 4로 설정되었다면, 기본 블록 저장부(4)는 네 개로 나뉘어진다. 즉, 제 1 기본 블록 저장부(41), 제 2 기본 블록 저장부(42), 제 3 기본 블록 저장부(43), 제 4 기본 블록 저장부(44)로 나뉘어진다. 또한, 기본 블록 저장부(4)로부터 데이터를 입력받는 기본 탐색 유닛(5)도 네 개로 나뉘어진다. 즉, 제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 제 4 기본 탐색 유닛(54)으로 나뉘어진다.
제 1 기본 블록 저장부(41)는 매크로블록 저장부(1)에 저장된 16x16 매크로블록으로부터 16x16 매크로블록을 서브샘플링하여 가로, 세로 1/4씩 줄인 4x4 상위 레벨 기본 블록을 추출하고, 추출된 4x4 상위 레벨 기본 블록을 저장한다.
제 2 기본 블록 저장부(42)는 매크로블록 저장부(1)에 저장된 16x16 매크로블록으로부터 16x16 매크로블록을 서브샘플링하여 가로, 세로 1/4씩 줄인 4x4 상위 레벨 기본 블록을 추출하고, 추출된 4x4 상위 레벨 기본 블록을 저장한다.
제 3 기본 블록 저장부(43)는 매크로블록 저장부(1)에 저장된 16x16 매크로블록으로부터 16x16 매크로블록을 서브샘플링하여 가로, 세로 1/4씩 줄인 4x4 상위 레벨 기본 블록을 추출하고, 추출된 4x4 상위 레벨 기본 블록을 저장한다.
제 4 기본 블록 저장부(44)는 매크로블록 저장부(1)에 저장된 16x16 매크로블록으로부터 16x16 매크로블록을 서브샘플링하여 가로, 세로 1/4씩 줄인 4x4 상위 레벨 기본 블록을 추출하고, 추출된 4x4 상위 레벨 기본 블록을 저장한다.
제 1 기본 탐색 유닛(51)은 제 1 기본 블록 저장부(41)에 저장된 4x4 상위 레벨 기본 블록과 현재 탐색 영역 저장부(3)에 저장된 12x12 상위 레벨 탐색 영역 중, 제 1 기본 블록 저장부(41)에 저장된 4x4 상위 레벨 기본 블록에 대응되는 4x4 영역에 대한 SAD를 산출한다.
제 2 기본 탐색 유닛(52)은 제 2 기본 블록 저장부(42)에 저장된 4x4 상위 레벨 기본 블록과 현재 탐색 영역 저장부(3)에 저장된 12x12 상위 레벨 탐색 영역 중, 제 2 기본 블록 저장부(42)에 저장된 4x4 상위 레벨 기본 블록에 대응되는 4x4 영역에 대한 SAD를 산출한다.
제 3 기본 탐색 유닛(53)은 제 3 기본 블록 저장부(43)에 저장된 4x4 상위 레벨 기본 블록과 현재 탐색 영역 저장부(3)에 저장된 12x12 상위 레벨 탐색 영역 중, 제 3 기본 블록 저장부(43)에 저장된 4x4 상위 레벨 기본 블록에 대응되는 4x4 영역에 대한 SAD를 산출한다.
제 4 기본 탐색 유닛(54)은 제 4 기본 블록 저장부(44)에 저장된 4x4 상위 레벨 기본 블록과 현재 탐색 영역 저장부(3)에 저장된 12x12 상위 레벨 탐색 영역 중, 제 4 기본 블록 저장부(44)에 저장된 4x4 상위 레벨 기본 블록에 대응되는 4x4 영역에 대한 SAD를 산출한다.
도 3은 본 발명에 따라 기본 블록과 탐색 영역이 서로 대응되는 모습을 도시한 도면이다.
도 3을 참조하면, 전체 12x12 영역은 탐색 영역에 대한 것이고, 네 개의 4x4 네모 박스 각각은 기본 블록에 대한 것이다. 전체 12x12 영역은 12x12 레지스터 어레이(register array)로 구현될 수 있고, 네 개의 4x4 네로 박스 각각은 4x4 레지스터 어레이로 구현될 수 있다. 기본 블록에 대한 것 좌상단의 네모 박스(31)는 제 1 기본 블록 저장부(41)에 저장된 기본 블록의 화소들로 구성되어 있고, 좌하단의 네모 박스(32)는 제 2 기본 블록 저장부(42)에 저장된 기본 블록의 화소들로 구성되어 있고, 우상단의 네모 박스(33)는 제 3 기본 블록 저장부(43)에 저장된 기본 블록의 화소들로 구성되어 있고, 우하단의 네모 박스(34)는 제 4 기본 블록 저장부(44)에 저장된 기본 블록의 화소들로 구성되어 있다. 좌상단의 네모 박스(31)를 살펴보면, 기본 블록의 화소 1과 탐색 영역의 화소 1을 서로 짝지어 SAD를 산출하고, 기본 블록의 화소 2와 탐색 영역의 화소 2를 서로 짝지어 SAD를 산출하고, ... , 기본 블록의 화소 40과 탐색 영역의 화소 40을 서로 짝지어 SAD를 산출한다. 좌하단의 네모 박스(32), 우상단의 네모 박스(33), 우하단의 네모 박스(34)의 경우에도 마찬가지로 같은 위치에 있는 것끼리 짝지어 SAD를 산출한다. 다시 말하면, 12x12 레지스터 어레이에 네 개의 4x4 레지스터 어레이를 그대로 겹친 형태로 SAD를 산출한다. 즉, 12x12 레지스터 어레이는 1부터 144까지 번호가 부여된 144개의 레지스터가 있으며, (1, 2, 3, 4, 13, 14, 15, 16, 25, 26, 27, 28, 37, 38, 39, 40)는 제 1 기본 탐색 유닛(51)과 연결되고, (5, 6, 7, 8, 17, 18, 19, 20, 29, 30, 31, 32, 41, 42, 43, 44)는 제 2 기본 탐색 유닛(52)과 연결되고, (49, 50, 51, 52, 61, 62, 63, 64, 73, 74, 75, 76, 85, 86, 87, 88)는 제 3 기본 탐색 유닛(53)과 연결되고, (53, 54, 55, 56, 65, 66, 67, 68, 77, 78, 79, 80, 89, 90, 91, 92)는 제 4 기본 탐색 유닛(54)과 연결된다. 그리고, 144개의 레지스터들은 열 단위로 좌우로 이동 가능하도록, 행 단위로 상하로 이동 가능하도록 연결되어 있다.
도 4는 도 2에 도시된 기본 탐색 유닛의 구조를 도시한 도면이다.
도 4를 참조하면, 제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 제 4 기본 탐색 유닛(54) 각각은 4x4 기본 블록에 대한 SAD를 산출하기 위하여, 16개의 절대차 산출기 및 15개의 합산기로 구성되어 있다.
C11은 기본 블록의 (1, 1) 좌표에 있는 화소의 휘도 값이고, C12 등 다른 것들도 마찬가지이다. P11은 탐색 영역의 (1, 1) 좌표에 있는 화소의 휘도 값이고, P12 등 다른 것들도 마찬가지이다. 서로 대응되는 C11과 P11끼리 짝이 되어 절대차를 구하고, C12와 P12 등 다른 것들도 마찬가지이다. 동시 탐색 단위만큼의 개수, 즉 4개의 제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 제 4 기본 탐색 유닛(54) 각각에 동시에 4x4 기본 블록의 화소 16개의 휘도 값과 탐색 영역의 화소 16개의 휘도 값이 입력되면, 한번에 4개의 4x4 기본 블록의 SAD44가 출력된다. 이와 같은 방식으로 한번에 4개의 4x4 기본 블록의 SAD44를 산출함으로서, 고속의 움직임 추정 장치를 구현할 수 있다.
제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54)에서 상위 레벨 기본 블록 모두에 대한 SAD가 산출될 때마다, 현재 탐색 영역 저장부(3)는 부분 탐색이 완료될 때까지 상위 레벨 탐색 영역의 저장 위치를 한 비트씩 이동시킨다. 제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54) 모두가 한번에 탐색할 수 있는 양은 8x8이고, 탐색 영역이 저장되는 공간은 12x12 레지스터 어레이로 구성되어 있기 때문에 부분 탐색의 범위는 [-2, +2]가 된다.
도 5는 본 발명에서 사용되는 부분 탐색의 탐색 순서를 도시한 도면이다.
도 5를 참조하면, [-2, +2] 범위의 부분 탐색은 상하좌우로 각각 2씩 늘어나기 때문에 5x5=25 점들에 대해서 탐색을 하게 된다. 도 5에는 [-2, +2] 범위의 부분 탐색의 순서가 도시되어 있다. 뱀 모양(snake-like)의 순서로 이동되어, 최종적으로 [-2, +2] 범위에 속하는 모든 점들을 가장 효율적으로 탐색할 수 있게 된다. 도시된 순서 외에도 하에서 상으로, 좌에서 우로, 우에서 좌로의 순서도 가능하다.
현재 탐색 영역 저장부(3)에서 저장 위치가 한 비트씩 이동될 때마다, 제 1 기본 탐색 유닛(51)은 4x4 상위 레벨 기본 블록과 한 비트씩 이동된 12x12 상위 레벨 탐색 영역 중, 제 1 기본 블록 저장부(41)에 저장된 4x4 상위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출한다.
현재 탐색 영역 저장부(3)에서 저장 위치가 한 비트씩 이동될 때마다, 제 2 기본 탐색 유닛(52)은 4x4 상위 레벨 기본 블록과 한 비트씩 이동된 12x12 상위 레벨 탐색 영역 중, 제 2 기본 블록 저장부(42)에 저장된 4x4 상위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출한다.
현재 탐색 영역 저장부(3)에서 저장 위치가 한 비트씩 이동될 때마다, 제 3 기본 탐색 유닛(53)은 4x4 상위 레벨 기본 블록과 한 비트씩 이동된 12x12 상위 레벨 탐색 영역 중, 제 3 기본 블록 저장부(43)에 저장된 4x4 상위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출한다.
현재 탐색 영역 저장부(3)에서 저장 위치가 한 비트씩 이동될 때마다, 제 4 기본 탐색 유닛(54)은 4x4 상위 레벨 기본 블록과 한 비트씩 이동된 12x12 상위 레벨 탐색 영역 중, 제 4 기본 블록 저장부(44)에 저장된 4x4 상위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출한다.
도 6은 도 5에서 (-2, -2) 위치에서의 SAD 산출을 위한 어레이를 도시한 도면이다.
도 7은 도 5에서 (-1, -2) 위치에서의 SAD 산출을 위한 어레이를 도시한 도면이다.
도 8은 도 5에서 (0, -2) 위치에서의 SAD 산출을 위한 어레이를 도시한 도면이다.
도 9는 도 5에서 (1, -2) 위치에서의 SAD 산출을 위한 어레이를 도시한 도면이다.
도 10은 도 5에서 (2, -2) 위치에서의 SAD 산출을 위한 어레이를 도시한 도면이다.
도 11은 도 5에서 (2, -1) 위치에서의 SAD 산출을 위한 어레이를 도시한 도면이다.
도 12는 도 5에서 (2, 1) 위치에서의 SAD 산출을 위한 어레이를 도시한 도면이다.
도 6, 도 7, 도 8, 도 9, 도 10, 도 11, 및 도 12를 참조하면, 도 6, 도 7, 도 8, 도 9, 도 10, 도 11, 및 도 12는 도 5에 도시된 25개의 점들 중 6개의 점들에서의 SAD 산출을 위한 어레이를 도시하고 있으며, 나머지 19의 점들에서의 SAD 산출을 위한 어레이도 마찬가지로 도시될 것이다.
즉, 도 6, 도 7, 도 8, 도 9, 도 10, 도 11, 및 도 12는 [-2, +2] 범위의 부분 탐색을 수행하기 위해, 적절한 데이터를 4개의 제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54)에 제공하기 위한 12x12 레지스터 어레이에서의 데이터의 흐름을 단계적으로 도시하고 있다. 도 6과 같이, 12x12 레지스터 어레이에 탐색 영역 데이터가 다 채워졌을 때, 4개의 제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54)은 4개의 4x4 기본 블록 각각에 대한 (-2, -2) 위치의 SAD를 산출한다. 이어서, 한 클록 뒤 도 7과 같이, 열 단위로 좌측으로 이동시켜 (-1, -2)의 위치에 해당하는 탐색 영역 데이터를 제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54)에 위치시킨다. 이와 같이, 매 클록마다 좌측으로 이동시켜 (0, -2), (1, -2), (2, -2) 위치의 SAD를 순차적으로 산출한다. 이어서, 도 11과 같이 행 단위로 위쪽으로 이동시켜 (2, -1) 위치의 SAD를 산출한다. 이어서, 도 12와 같이 열 단위로 우측으로 이동시키면서 (1, -1), (0, -1), (-1, -1), (-2, -1)의 위치의 SAD를 산출한다. 이런 방식으로 25 클록이 지나면, 4개의 4x4 기본 블록에 대한 가로, 세로 [-2, +2] 범위의 부분 탐색을 완료할 수 있다.
[-2, +2] 범위의 부분 탐색이 완료될 때마다, 현재 탐색 영역 저장부(3)는 전역 탐색이 완료될 때까지 탐색 영역으로부터 12x12 상위 레벨 탐색 영역과는 다른 12x12 상위 레벨 탐색 영역을 추출하고, 추출된 다른 12x12 상위 레벨 탐색 영역을 저장한다. 즉, 탐색 영역 모두에 대한 탐색이 완료될 때까지 탐색 영역을 여러 개의 12x12 상위 레벨 탐색 영역들로 나누고, 12x12 상위 레벨 탐색 영역들 각각에 대해서 상기된 과정을 되풀이하여 4x4 기본 블록들의 SAD를 산출한다.
SAD 비교부(6)는 제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54)에서 산출된 4x4 상위 레벨 기본 블록들에 대한 SAD을 비교한다.
주소 생성부(7)는 SAD 비교부(6)에서 비교된 결과에 의한 최소의 SAD를 갖는 2개의 점과 인접 움직임 벡터들의 공간적 상관 관계에 의한 1개의 점이 나타내는 3개의 상위 레벨 후보 움직임 벡터에 대한 탐색 영역에 대응되는 주소를 생성한다.
현재 탐색 영역 저장부(3)는 탐색 영역 저장부(2)에 저장된 탐색 영역으로부터 주소 생성부(7)에서 생성된 주소 중, 3개의 상위 레벨 후보 움직임 벡터 중 어느 하나 상위 레벨 후보 움직임 벡터에 대한 탐색 영역에 대응되는 주소에 저장되어 있고, 16x16 매크로블록의 해상도보다 낮고, 12x12 상위 레벨 탐색 영역의 해상도보다 높은 해상도를 갖는 중간 레벨 탐색 영역을 추출하고, 추출된 중간 레벨 탐색 영역을 저장한다. 현재 탐색 영역 저장부(3)는 탐색 영역 저장부(3)에 저장된 탐색 영역으로부터 탐색 영역을 서브샘플링하여 가로, 세로 1/2씩 줄인 12x12 상위 레벨 탐색 영역을 추출하고, 추출된 12x12 상위 레벨 탐색 영역을 저장한다.
제 1 기본 블록 저장부(41)는 매크로블록 저장부(1)에 저장된 매크로블록으로부터 매크로블록을 서브샘플링하여 가로, 세로 1/2씩 줄인 8x8 중간 레벨 블록을 추출하고, 추출된 8x8 중간 레벨 블록으로부터 4x4 제 1 중간 레벨 기본 블록을 분리하고, 분리된 4x4 제 1 중간 레벨 기본 블록을 저장한다.
제 2 기본 블록 저장부(42)는 매크로블록 저장부(1)에 저장된 매크로블록으로부터 매크로블록을 서브샘플링하여 가로, 세로 1/2씩 줄인 8x8 중간 레벨 블록을 추출하고, 추출된 8x8 중간 레벨 블록으로부터 4x4 제 2 중간 레벨 기본 블록을 분리하고, 분리된 4x4 제 2 중간 레벨 기본 블록을 저장한다.
제 3 기본 블록 저장부(43)는 매크로블록 저장부(1)에 저장된 매크로블록으로부터 매크로블록을 서브샘플링하여 가로, 세로 1/2씩 줄인 8x8 중간 레벨 블록을 추출하고, 추출된 8x8 중간 레벨 블록으로부터 4x4 제 3 중간 레벨 기본 블록을 분리하고, 분리된 4x4 제 3 중간 레벨 기본 블록을 저장한다.
제 4 기본 블록 저장부(44)는 매크로블록 저장부(1)에 저장된 매크로블록으로부터 매크로블록을 서브샘플링하여 가로, 세로 1/2씩 줄인 8x8 중간 레벨 블록을 추출하고, 추출된 8x8 중간 레벨 블록으로부터 4x4 제 4 중간 레벨 기본 블록을 분리하고, 분리된 4x4 제 4 중간 레벨 기본 블록을 저장한다.
제 1 기본 탐색 유닛(51)은 제 1 기본 블록 저장부(51)에 저장된 4x4 제 1 중간 레벨 기본 블록과 현재 탐색 영역 저장부(3)에 저장된 12x12 중간 레벨 탐색 영역 중, 4x4 제 1 중간 레벨 기본 블록에 대응되는 4x4 영역에 대한 SAD를 산출한다.
제 2 기본 탐색 유닛(52)은 제 2 기본 블록 저장부(52)에 저장된 4x4 제 2 중간 레벨 기본 블록과 현재 탐색 영역 저장부(3)에 저장된 12x12 중간 레벨 탐색 영역 중, 4x4 제 1 중간 레벨 기본 블록에 대응되는 4x4 영역에 대한 SAD를 산출한다.
제 3 기본 탐색 유닛(53)은 제 3 기본 블록 저장부(53)에 저장된 4x4 제 3 중간 레벨 기본 블록과 현재 탐색 영역 저장부(3)에 저장된 12x12 중간 레벨 탐색 영역 중, 4x4 제 3 중간 레벨 기본 블록에 대응되는 4x4 영역에 대한 SAD를 산출한다.
제 4 기본 탐색 유닛(54)은 제 4 기본 블록 저장부(54)에 저장된 4x4 제 4 중간 레벨 기본 블록과 현재 탐색 영역 저장부(3)에 저장된 12x12 중간 레벨 탐색 영역 중, 4x4 제 4 중간 레벨 기본 블록에 대응되는 4x4 영역에 대한 SAD를 산출한다.
제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54)에서 제 1 중간 레벨 기본 블록, 제 2 중간 레벨 블록, 제 3 중간 레벨 블록, 및 제 4 중간 레벨 기본 블록에 대한 SAD가 산출될 때마다, 현재 탐색 영역 저장부(3)는 부분 탐색이 완료될 때까지 현재 탐색 영역 저장부(3)에 저장된 중간 레벨 탐색 영역의 저장 위치를 도 5와 같이 한 비트씩 이동시킨다.
현재 탐색 영역 저장부(3)에서 저장 위치가 한 비트씩 이동될 때마다, 제 1 기본 탐색 유닛(51)은 4x4 제 1 중간 레벨 기본 블록과 한 비트씩 이동된 12x12 중간 레벨 탐색 영역 중, 4x4 제 1 중간 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출한다. 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54)도 마찬가지의 방식으로 SAD를 산출한다.
[-2, +2] 범위의 부분 영역에 대한 SAD 산출이 완료되면, SAD 병합부(8)는 제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54)에서 산출된 4x4 중간 레벨 기본 블록 각각에 대한 SAD를 병합하여, 8x8 중간 레벨 블록에 대한 SAD를 산출한다.
[-2, +2] 범위의 부분 영역에 대한 SAD 산출이 완료될 때마다, 현재 탐색 영역 저장부(3)는 3개의 상위 레벨 후보 움직임 벡터 중 상기 상위 레벨 후보 움직임 벡터와는 다른 움직임 벡터 2개에 대한 탐색이 완료될 때까지 다른 상위 레벨 후보 움직임 벡터에 대한 탐색 영역에 대응되는 주소에 저장되어 있는 다른 12x12 중간 레벨 탐색 영역을 추출하고, 추출된 다른 12x12 중간 레벨 탐색 영역을 저장한다. 따라서, 중간 레벨에서는 제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54)을 총 3회 이용한다.
이와 같이, 3개의 상위 레벨 후보 움직임 벡터에 대한 부분 탐색이 완료된 경우, SAD 비교부(6)는 제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54)에서 산출된 8x8 중간 레벨 블록들에 대한 SAD를 비교한다.
주소 생성부(7)는 SAD 비교부(6)에서 비교된 결과로부터 최소의 SAD를 갖는 하나의 점이 나타내는 하나의 중간 레벨 후보 움직임 벡터에 대한 탐색 영역에 대응되는 주소를 생성한다.
현재 탐색 영역 저장부(3)는 탐색 영역 저장부(2)에 저장된 탐색 영역으로부터 주소 생성부(7)에서 생성된 주소 중, 중간 레벨 후보 움직임 벡터에 대한 탐색 영역에 대응되는 주소에 저장되어 있고, 매크로블록의 해상도와 동일한 해상도를 갖는 12x12 하위 레벨 탐색 영역을 추출하고, 추출된 12x12 하위 레벨 탐색 영역을 저장한다.
제 1 기본 블록 저장부(41)는 매크로블록 저장부(1)에 저장된 매크로블록으로부터 8x8 제 1 하위 레벨 블록을 분리하고, 분리된 8x8 제 1 하위 레벨 블록으로부터 4x4 제 1 하위 레벨 기분 블록을 분리하고, 분리된 4x4 제 1 하위 레벨 기본 블록을 저장한다. 16x16 매크로블록은 4개의 8x8 제 1 하위 레벨 블록, 8x8 제 2 하위 레벨 블록, 8x8 제 3 하위 레벨 블록, 8x8 제 4 하위 레벨 블록들로 분리되고, 각각의 8x8 하위 레벨 블록은 다시 4개의 16x16 하위 레벨 기본 블록으로 분리된다. 즉, 16x16 매크로블록으로부터 총 16개의 4x4 하위 레벨 기본 블록들이 분리되어 나온다.
제 2 기본 블록 저장부(42)는 매크로블록 저장부(1)에 저장된 매크로블록으로부터 8x8 제 1 하위 레벨 블록을 분리하고, 분리된 8x8 제 1 하위 레벨 블록으로부터 4x4 제 2 하위 레벨 기분 블록을 분리하고, 분리된 4x4 제 2 하위 레벨 기본 블록을 저장한다.
제 3 기본 블록 저장부(43)는 매크로블록 저장부(1)에 저장된 매크로블록으로부터 8x8 제 1 하위 레벨 블록을 분리하고, 분리된 8x8 제 1 하위 레벨 블록으로부터 4x4 제 3 하위 레벨 기분 블록을 분리하고, 분리된 4x4 제 3 하위 레벨 기본 블록을 저장한다.
제 4 기본 블록 저장부(44)는 매크로블록 저장부(1)에 저장된 매크로블록으로부터 8x8 제 1 하위 레벨 블록을 분리하고, 분리된 8x8 제 1 하위 레벨 블록으로부터 4x4 제 4 하위 레벨 기분 블록을 분리하고, 분리된 4x4 제 4 하위 레벨 기본 블록을 저장한다.
제 1 기본 탐색 유닛(51)은 제 1 기본 블록 저장부(51)에 저장된 4x4 제 1 하위 레벨 기본 블록과 현재 탐색 영역 저장부(3)에 저장된 12x12 하위 레벨 탐색 영역 중, 4x4 제 1 하위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출한다.
제 2 기본 탐색 유닛(52)은 제 2 기본 블록 저장부(52)에 저장된 4x4 제 2 하위 레벨 기본 블록과 현재 탐색 영역 저장부(3)에 저장된 12x12 하위 레벨 탐색 영역 중, 4x4 제 2 하위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출한다.
제 3 기본 탐색 유닛(53)은 제 3 기본 블록 저장부(53)에 저장된 4x4 제 3 하위 레벨 기본 블록과 현재 탐색 영역 저장부(3)에 저장된 12x12 하위 레벨 탐색 영역 중, 4x4 제 3 하위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출한다.
제 4 기본 탐색 유닛(54)은 제 1 기본 블록 저장부(54)에 저장된 4x4 제 4 하위 레벨 기본 블록과 현재 탐색 영역 저장부(3)에 저장된 12x12 하위 레벨 탐색 영역 중, 4x4 제 4 하위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출한다.
제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54)에서 4x4 제 1 하위 레벨 기본 블록, 4x4 제 2 하위 레벨 블록, 4x4 제 3 하위 레벨 블록, 및 4x4 제 4 하위 레벨 기본 블록에 대한 SAD가 산출될 때마다, 현재 탐색 영역 저장부(3)는 [-2, +2] 부분 영역에 대한 SAD 산출이 완료될 때까지 현재 탐색 영역 저장부(3)에 저장된 12x12 하위 레벨 탐색 영역의 저장 위치를 도 5와 같이 한 비트씩 이동시킨다.
현재 탐색 영역 저장부(3)에서 저장 위치가 한 비트씩 이동될 때마다, 제 1 기본 탐색 유닛(51)은 4x4 제 1 하위 레벨 기본 블록과 한 비트씩 이동된 12x12 하위 레벨 탐색 영역 중, 제 1 하위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출한다. 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54)의 경우에도 마찬가지의 방식으로 SAD를 산출한다.
[-2, +2] 부분 영역에 대한 SAD 산출이 완료될 때마다, 제 1 기본 블록 저장부(41)는 매크로블록에 대한 탐색이 완료될 때까지 매크로블록 저장부에 저장된 매크로블록으로부터 8x8 제 1 하위 레벨 블록과는 다른 하위 레벨 블록, 즉 8x8 제 2 하위 레벨 블록, 8x8 제 3 하위 레벨 블록, 8x8 제 4 하위 레벨 블록들 중 어느 하나를 분리하고, 분리된 다른 8x8 하위 레벨 블록으로부터 4x4 제 5 하위 레벨 기분 블록을 분리하고, 분리된 4x4 제 5 하위 레벨 기본 블록을 저장한다. 제 1 기본 블록 저장부(41), 제 2 기본 블록 저장부(42), 제 3 기본 블록 저장부(43), 제 4 기본 블록 저장부(44)의 경우에도 마찬가지의 방식으로 4x4 제 6 하위 레벨 기본 블록, 제 7 하위 레벨 기본 블록, 제 8 하위 레벨 기본 블록을 저장한다.
SAD 병합부(8)는 제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54)에서 산출된 16개의 4x4 하위 레벨 기본 블록들에 대한 SAD을 병합하여, 여러 가지 단위의 블록에 대한 SAD를 산출한다. 즉, 제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54)에서 구한 4x4 기본 블록 단위의 SAD들을 이용하여 8x4, 4x8, 8x8, 16x8, 8x16, 16x16 등의 다양한 크기의 블록들에 대한 SAD을 구할 수 있다.
도 13은 도 2에 도시된 SAD 병합부의 구조를 도시한 도면이다.
도 13을 참조하면, SAD 병합부(8)는 2개의 SAD를 동시에 입력받기 위한 5개의 먹스(MUX), SAD를 합산하는 4개의 합산기, 및 합산된 SAD를 저장하는 4개의 레지스터로 구성된다.
제 1 기본 탐색 유닛(51), 제 2 기본 탐색 유닛(52), 제 3 기본 탐색 유닛(53), 및 제 4 기본 탐색 유닛(54)에서 동시에 산출된 4개의 SAD 각각은 좌측의 4개의 먹스로 동시에 입력되어, 8x4 SAD1, 4x8 SAD1, 4x8 SAD2, 8x4 SAD2, 8x8 SAD1이 출력된다. 여기에서, 8x8 SAD1은 4개의 레지스터 중 어느 하나에 저장되고, 다음 단계에서 다시 이용되어, 최종적으로 H.264에서 요구하는 다양한 크기의 블록들에 대한 SAD를 모두 고속으로 구할 수 있다. 또한, 최소한의 연산 소자 및 기억 소자들을 반복적으로 이용함으로서, 소형, 저전력을 추구하는 모바일용 칩 등에서 유용하게 사용될 수 있다.
최선 움직임 추정 블록 결정부(9)는 SAD 병합부(8)에서 산출된 여러 가지 단위의 블록 중, 최선의 움직임 추정을 수행하는 모드의 블록을 결정한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
본 발명에 따르면, 한번에 동시 탐색 단위만큼 SAD들을 산출함으로서 입력 영상이 SD 급인 경우에도 실시간으로 다양한 크기의 블록들에 대한 고속의 움직임 추정 장치를 구현할 수 있다는 효과가 있다. 또한, 본 발명에 따르면, 최소한의 연산 소자 및 기억 소자들을 반복적으로 이용함으로서 소형, 저전력을 추구하는 모바일용 칩 등에서 유용하게 사용될 수 있다는 효과가 있다.
도 1은 본 발명에 사용되는 고속 움직임 추정 알고리즘을 도시한 도면이다.
도 2는 본 발명이 바람직한 일 실시예에 따른 고속 움직임 추정 장치의 구성도이다.
도 3은 본 발명에 따라 기본 블록과 탐색 영역이 서로 대응되는 모습을 도시한 도면이다.
도 4는 도 2에 도시된 기본 탐색 유닛의 구조를 도시한 도면이다.
도 5는 본 발명에서 사용되는 부분 탐색의 탐색 순서를 도시한 도면이다.
도 6은 도 5에서 (-2, -2) 위치에서의 SAD 산출을 위한 어레이를 도시한 도면이다.
도 7은 도 5에서 (-1, -2) 위치에서의 SAD 산출을 위한 어레이를 도시한 도면이다.
도 8은 도 5에서 (0, -2) 위치에서의 SAD 산출을 위한 어레이를 도시한 도면이다.
도 9는 도 5에서 (1, -2) 위치에서의 SAD 산출을 위한 어레이를 도시한 도면이다.
도 10은 도 5에서 (2, -2) 위치에서의 SAD 산출을 위한 어레이를 도시한 도면이다.
도 11은 도 5에서 (2, -1) 위치에서의 SAD 산출을 위한 어레이를 도시한 도면이다.
도 12는 도 5에서 (2, 1) 위치에서의 SAD 산출을 위한 어레이를 도시한 도면이다.
도 13은 도 2에 도시된 SAD 병합부의 구조를 도시한 도면이다.

Claims (23)

  1. 소정의 매크로블록으로부터 분리된 기본적인 단위의 하위 레벨 기본 블록 각각에 대한 SAD들을 병합하여, 여러 가지 단위의 블록에 대한 SAD를 산출하는 SAD 병합부; 및
    상기 SAD 병합부에서 산출된 여러 가지 단위의 블록에 대한 SAD 중, 최선의 움직임 추정을 수행하는 모드의 블록을 결정하는 최선 움직임 추정 블록 결정부를 포함하는 것을 특징으로 하는 고속 움직임 추정 장치.
  2. 제 1 항에 있어서,
    소정의 탐색 영역으로부터 상기 중간 레벨 후보 움직임 벡터에 대한 탐색 영역에 대응되는 주소에 저장되어 있고, 상기 매크로블록의 해상도와 동일한 해상도를 갖는 하위 레벨 탐색 영역을 추출하고, 상기 추출된 하위 레벨 탐색 영역을 저장하는 현재 탐색 영역 저장부;
    상기 매크로블록으로부터 소정의 하위 레벨 블록을 분리하고, 상기 분리된 하위 레벨 블록으로부터 소정의 동시 탐색 단위 개수만큼의 하위 레벨 기본 블록들을 분리하고, 상기 분리된 하위 레벨 기본 블록들을 저장하는 기본 블록 저장부; 및
    상기 기본 블록 저장부에 저장된 하위 레벨 기본 블록 각각과 상기 현재 탐색 영역 저장부에 저장된 하위 레벨 탐색 영역 중, 상기 하위 레벨 기본 블록 각각에 대응되는 영역에 대한 SAD를 산출하는 기본 탐색 유닛을 포함하는 것을 특징으로 하는 고속 움직임 추정 장치.
  3. 제 2 항에 있어서,
    상기 기본 탐색 유닛에서 하위 레벨 기본 블록 각각에 대한 SAD가 산출될 때마다, 상기 현재 탐색 영역 저장부는 상기 부분 영역에 대한 SAD 산출이 완료될 때까지 상기 현재 탐색 영역 저장부에 저장된 하위 레벨 탐색 영역의 저장 위치를 한 비트씩 이동시키고,
    상기 현재 탐색 영역 저장부에서 저장 위치가 한 비트씩 이동될 때마다, 상기 기본 탐색 유닛은 상기 하위 레벨 기본 블록 각각과 상기 한 비트씩 이동된 하위 레벨 탐색 영역 중, 상기 하위 레벨 기본 블록 각각에 대응되는 영역에 대한 SAD를 산출하는 것을 특징으로 하는 고속 움직임 추정 장치.
  4. 제 3 항에 있어서,
    상기 부분 영역에 대한 SAD 산출이 완료될 때마다, 상기 기본 블록 저장부는 상기 매크로블록에 대한 SAD 산출이 완료될 때까지 상기 매크로블록 저장부에 저장된 매크로블록으로부터 하위 레벨 블록과는 다른 하위 레벨 블록을 분리하고, 상기 분리된 다른 하위 레벨 블록으로부터 상기 기본 탐색 개수만큼의 다른 하위 레벨 기분 블록들을 분리하고, 상기 분리된 다른 하위 레벨 기본 블록들을 저장하고,
    상기 기본 탐색 유닛은 상기 기본 블록 저장부에 저장된 다른 하위 레벨 기본 블록 각각과 상기 현재 탐색 영역 저장부에 저장된 하위 레벨 탐색 영역 중, 상기 다른 하위 레벨 기본 블록 각각에 대응되는 영역에 대한 SAD를 산출하는 것을 특징으로 하는 고속 움직임 추정 장치.
  5. 제 4 항에 있어서,
    상기 현재 탐색 영역 저장부는 상기 탐색 영역으로부터 C 개의 상위 레벨 후보 움직임 벡터 중 소정의 상위 레벨 후보 움직임 벡터에 대한 탐색 영역에 대응되는 주소에 저장되어 있고, 상기 매크로블록의 해상도보다 낮고, 상기 상위 레벨 탐색 영역의 해상도보다 높은 해상도를 갖는 중간 레벨 탐색 영역을 추출하고, 상기 추출된 중간 레벨 탐색 영역을 저장하고,
    상기 기본 블록 저장부는 상기 매크로블록으로부터 상기 중간 레벨 탐색 영역의 해상도와 동일한 해상도를 갖는 중간 레벨 블록을 추출하고, 상기 추출된 중간 레벨 블록으로부터 상기 동시 탐색 단위 개수만큼의 중간 레벨 기본 블록들을 분리하고, 상기 분리된 중간 레벨 기본 블록들을 저장하고,
    상기 기본 탐색 유닛은 상기 기본 블록 저장부에 저장된 중간 레벨 기본 블록 각각과 상기 현재 탐색 영역 저장부에 저장된 중간 레벨 탐색 영역 중, 상기 중간 레벨 기본 블록 각각에 대응되는 영역에 대한 SAD를 산출하는 것을 특징으로 하는 고속 움직임 추정 장치.
  6. 제 5 항에 있어서,
    상기 기본 탐색 유닛에서 중간 레벨 기본 블록 모두에 대한 SAD가 산출될 때마다, 상기 현재 탐색 영역 저장부는 상기 부분 영역에 대한 SAD 산출이 완료될 때까지 상기 현재 탐색 영역 저장부에 저장된 중간 레벨 탐색 영역의 저장 위치를 한 비트씩 이동시키고,
    상기 현재 탐색 영역 저장부에서 저장 위치가 한 비트씩 이동될 때마다, 상기 기본 탐색 유닛은 상기 중간 레벨 기본 블록 각각과 상기 한 비트씩 이동된 중간 레벨 탐색 영역 중, 상기 중간 레벨 기본 블록 각각에 대응되는 영역에 대한 SAD를 산출하는 것을 특징으로 하는 고속 움직임 추정 장치.
  7. 제 6 항에 있어서,
    상기 기본 탐색 유닛에서 산출된 중간 레벨 기본 블록 각각에 대한 SAD를 병합하여, 상기 중간 레벨 블록에 대한 SAD를 산출하는 SAD 병합부를 포함하는 것을 특징으로 하는 고속 움직임 추정 장치.
  8. 제 7 항에 있어서,
    상기 부분 영역에 대한 SAD 산출이 완료될 때마다, 상기 현재 탐색 영역 저장부는 상기 C 개의 상위 레벨 후보 움직임 벡터 중 상기 상위 레벨 후보 움직임 벡터와는 다른 상위 레벨 후보 움직임 벡터에 대한 SAD 산출이 완료될 때까지 상기 다른 상위 레벨 후보 움직임 벡터에 대한 탐색 영역에 대응되는 주소에 저장되어 있는 다른 중간 레벨 탐색 영역을 추출하고, 상기 추출된 다른 중간 레벨 탐색 영역을 저장하고,
    상기 현재 탐색 영역 저장부에 다른 중간 레벨 탐색 영역이 저장될 때마다, 상기 기본 탐색 유닛은 상기 기본 블록 저장부에 저장된 중간 레벨 기본 블록 각각과 상기 현재 탐색 영역 저장부에 저장된 다른 중간 레벨 탐색 영역 중, 상기 중간 레벨 기본 블록 각각에 대응되는 영역에 대한 SAD을 산출하는 것을 특징으로 하는 고속 움직임 추정 장치.
  9. 제 8 항에 있어서,
    상기 SAD 비교부는 상기 SAD 병합부에서 산출된 중간 레벨 블록에 대한 SAD들을 비교하고,
    상기 주소 생성부는 상기 SAD 비교부에서 비교된 결과로부터 최소의 SAD를 갖는 점이 나타내는 중간 레벨 후보 움직임 벡터에 대한 탐색 영역에 대응되는 주소를 생성하는 것을 특징으로 하는 고속 움직임 추정 장치.
  10. 제 9 항에 있어서,
    상기 탐색 영역 저장부에 저장된 탐색 영역으로부터 상기 매크로블록의 해상도보다 낮은 해상도를 갖는 상위 레벨 탐색 영역을 추출하고, 상기 추출된 상위 레벨 탐색 영역을 저장하는 현재 탐색 영역 저장부;
    상기 매크로블록으로부터 상기 상위 레벨 탐색 영역의 해상도와 동일한 해상도를 갖는 상위 레벨 기본 블록을 추출하고, 상기 추출된 상위 레벨 기본 블록을 동시 탐색 단위 개수만큼 저장하는 기본 블록 저장부; 및
    상기 기본 블록 저장부에 저장된 상위 레벨 기본 블록 각각과 상기 현재 탐색 영역 저장부에 저장된 상위 레벨 탐색 영역 중, 상기 기본 블록 저장부에 저장된 상위 레벨 기본 블록들 각각에 대응되는 영역에 대한 SAD를 산출하는 기본 탐색 유닛을 포함하는 것을 특징으로 하는 고속 움직임 추정 장치.
  11. 제 10 항에 있어서,
    상기 기본 탐색 유닛에서 상기 상위 레벨 기본 블록 모두에 대한 SAD가 산출될 때마다, 상기 현재 탐색 영역 저장부는 소정의 부분 영역에 대한 SAD 산출이 완료될 때까지 상기 상위 레벨 탐색 영역의 저장 위치를 한 비트씩 이동시키고,
    상기 현재 탐색 영역 저장부에서 저장 위치가 한 비트씩 이동될 때마다, 상기 기본 탐색 유닛은 상기 상위 레벨 기본 블록 각각과 상기 한 비트씩 이동된 상위 레벨 탐색 영역 중, 상기 상위 레벨 기본 블록 각각에 대응되는 영역에 대한 SAD를 산출하는 것을 특징으로 하는 고속 움직임 추정 장치.
  12. 제 11 항에 있어서,
    상기 부분 영역에 대한 SAD 산출이 완료될 때마다, 상기 현재 탐색 영역 저장부는 상기 탐색 영역에 대한 SAD 산출이 완료될 때까지 상기 탐색 영역으로부터 상기 상위 레벨 탐색 영역과는 다른 상위 레벨 탐색 영역을 추출하고, 상기 추출된 다른 상위 레벨 탐색 영역을 저장하고,
    상기 기본 탐색 유닛은 상기 기본 블록 저장부에 저장된 상위 레벨 기본 블록 각각과 상기 현재 탐색 영역 저장부에 저장된 상위 레벨 탐색 영역 중, 상기 기본 블록 저장부에 저장된 상위 레벨 기본 블록들 각각에 대응되는 영역에 대한 SAD를 산출하는 것을 특징으로 하는 고속 움직임 추정 장치.
  13. 제 12 항에 있어서,
    상기 기본 탐색 유닛에서 산출된 상위 레벨 기본 블록에 대한 SAD을 비교하는 SAD 비교부; 및
    상기 SAD 비교부에서 비교된 결과에 의한 최소의 SAD를 갖는 A개의 점과 인접 움직임 벡터들의 공간적 상관 관계에 의한 B개의 점이 나타내는 C(=A+B)개의 상위 레벨 후보 움직임 벡터에 대한 탐색 영역에 대응되는 주소를 생성하는 주소 생성부를 포함하는 것을 특징으로 하는 고속 움직임 추정 장치.
  14. 제 13 항에 있어서,
    현재 프레임으로부터 상기 매크로블록을 추출하고, 상기 추출된 매크로블록을 저장하는 매크로블록 저장부; 및
    이전 프레임으로부터 상기 매크로블록에 대한 탐색 영역을 추출하고, 상기 추출된 탐색 영역을 저장하는 탐색 영역 저장부를 포함하는 것을 특징으로 하는 고속 움직임 추정 장치.
  15. 제 14 항에 있어서, 상기 기본 블록 단위는 4인 것을 특징으로 하는 고속 움직임 추정 장치.
  16. 제 15 항에 있어서, 상기 기본 블록 저장부는
    상기 매크로블록 저장부에 저장된 매크로블록으로부터 상기 상위 레벨 기본 블록을 추출하고, 상기 추출된 상위 레벨 기본 블록을 저장하는 제 1 기본 블록 저장부;
    상기 매크로블록 저장부에 저장된 매크로블록으로부터 상기 상위 레벨 기본 블록을 추출하고, 상기 추출된 상위 레벨 기본 블록을 저장하는 제 2 기본 블록 저장부;
    상기 매크로블록 저장부에 저장된 매크로블록으로부터 상기 상위 레벨 기본 블록을 추출하고, 상기 추출된 상위 레벨 기본 블록을 저장하는 제 3 기본 블록 저장부; 및
    상기 매크로블록 저장부에 저장된 매크로블록으로부터 상기 상위 레벨 기본 블록을 추출하고, 상기 추출된 상위 레벨 기본 블록을 저장하는 제 4 기본 블록 저장부를 포함하는 것을 특징으로 하는 고속 움직임 추정 장치.
  17. 제 16 항에 있어서, 상기 기본 탐색 유닛은
    상기 제 1 기본 블록 저장부에 저장된 상위 레벨 기본 블록과 상기 현재 탐색 영역 저장부에 저장된 상위 레벨 탐색 영역 중, 상기 제 1 기본 블록 저장부에 저장된 상위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출하는 제 1 기본 탐색 유닛;
    상기 제 2 기본 블록 저장부에 저장된 상위 레벨 기본 블록과 상기 현재 탐색 영역 저장부에 저장된 상위 레벨 탐색 영역 중, 상기 제 2 기본 블록 저장부에 저장된 상위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출하는 제 2 기본 탐색 유닛;
    상기 제 3 기본 블록 저장부에 저장된 상위 레벨 기본 블록과 상기 현재 탐색 영역 저장부에 저장된 상위 레벨 탐색 영역 중, 상기 제 3 기본 블록 저장부에 저장된 상위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출하는 제 3 기본 탐색 유닛; 및
    상기 제 4 기본 블록 저장부에 저장된 상위 레벨 기본 블록과 상기 현재 탐색 영역 저장부에 저장된 상위 레벨 탐색 영역 중, 상기 제 4 기본 블록 저장부에 저장된 상위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출하는 제 4 기본 탐색 유닛을 포함하는 것을 특징으로 하는 고속 움직임 추정 장치.
  18. 제 17 항에 있어서,
    상기 제 1 기본 블록 저장부는 상기 매크로블록 저장부에 저장된 매크로블록으로부터 상기 중간 레벨 블록을 추출하고, 상기 추출된 중간 레벨 블록으로부터 제 1 중간 레벨 기본 블록을 분리하고, 상기 분리된 제 1 중간 레벨 기본 블록을 저장하고,
    상기 제 2 기본 블록 저장부는 상기 매크로블록 저장부에 저장된 매크로블록으로부터 상기 중간 레벨 블록을 추출하고, 상기 추출된 중간 레벨 블록으로부터 상기 제 2 중간 레벨 기본 블록을 분리하고, 상기 분리된 제 2 중간 레벨 기본 블록을 저장하고,
    상기 제 3 기본 블록 저장부는 상기 매크로블록 저장부에 저장된 매크로블록으로부터 상기 중간 레벨 블록을 추출하고, 상기 추출된 중간 레벨 블록으로부터 상기 제 3 중간 레벨 기본 블록을 분리하고, 상기 분리된 제 3 중간 레벨 기본 블록을 저장하고,
    상기 제 4 기본 블록 저장부는 상기 매크로블록 저장부에 저장된 매크로블록으로부터 상기 중간 레벨 블록을 추출하고, 상기 추출된 중간 레벨 블록으로부터 상기 제 4 중간 레벨 기본 블록을 분리하고, 상기 분리된 제 4 중간 레벨 기본 블록을 저장하는 것을 특징으로 하는 고속 움직임 추정 장치.
  19. 제 18 항에 있어서,
    상기 제 1 기본 탐색 유닛은 상기 제 1 기본 블록 저장부에 저장된 제 1 중간 레벨 기본 블록과 상기 현재 탐색 영역 저장부에 저장된 중간 레벨 탐색 영역 중, 상기 제 1 중간 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출하고,
    상기 제 2 기본 탐색 유닛은 상기 제 2 기본 블록 저장부에 저장된 제 2 중간 레벨 기본 블록과 상기 현재 탐색 영역 저장부에 저장된 중간 레벨 탐색 영역 중, 상기 제 2 중간 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출하고,
    상기 제 3 기본 탐색 유닛은 상기 제 3 기본 블록 저장부에 저장된 제 3 중간 레벨 기본 블록과 상기 현재 탐색 영역 저장부에 저장된 중간 레벨 탐색 영역 중, 상기 제 3 중간 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출하고,
    상기 제 4 기본 탐색 유닛은 상기 제 4 기본 블록 저장부에 저장된 제 4 중간 레벨 기본 블록과 상기 현재 탐색 영역 저장부에 저장된 중간 레벨 탐색 영역 중, 상기 제 4 중간 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출하는 것을 특징으로 하는 고속 움직임 추정 장치.
  20. 제 19 항에 있어서,
    상기 제 1 기본 블록 저장부는 상기 매크로블록 저장부에 저장된 매크로블록으로부터 상기 하위 레벨 블록을 분리하고, 상기 분리된 하위 레벨 블록으로부터 제 1 하위 레벨 기본 블록을 분리하고, 상기 분리된 제 1 하위 레벨 기본 블록을 저장하고,
    상기 제 2 기본 블록 저장부는 상기 매크로블록 저장부에 저장된 매크로블록으로부터 상기 하위 레벨 블록을 분리하고, 상기 분리된 제 1 하위 레벨 블록으로부터 제 2 하위 레벨 기분 블록을 분리하고, 상기 분리된 제 2 하위 레벨 기본 블록을 저장하고,
    상기 제 3 기본 블록 저장부는 상기 매크로블록 저장부에 저장된 매크로블록으로부터 상기 하위 레벨 블록을 분리하고, 상기 분리된 하위 레벨 블록으로부터 제 3 하위 레벨 기분 블록을 분리하고, 상기 분리된 제 2 하위 레벨 기본 블록을 저장하고,
    상기 제 4 기본 블록 저장부는 상기 매크로블록 저장부에 저장된 매크로블록으로부터 상기 하위 레벨 블록을 분리하고, 상기 분리된 하위 레벨 블록으로부터 제 4 하위 레벨 기분 블록을 분리하고, 상기 분리된 제 4 하위 레벨 기본 블록을 저장하는 것을 특징으로 하는 고속 움직임 추정 장치.
  21. 제 20 항에 있어서,
    상기 제 1 기본 탐색 유닛은 상기 제 1 기본 블록 저장부에 저장된 제 1 하위 레벨 기본 블록과 상기 현재 탐색 영역 저장부에 저장된 하위 레벨 탐색 영역 중, 상기 제 1 하위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출하고,
    상기 제 2 기본 탐색 유닛은 상기 제 2 기본 블록 저장부에 저장된 제 2 하위 레벨 기본 블록과 상기 현재 탐색 영역 저장부에 저장된 하위 레벨 탐색 영역 중, 상기 제 2 하위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출하고,
    상기 제 3 기본 탐색 유닛은 상기 제 3 기본 블록 저장부에 저장된 제 3 하위 레벨 기본 블록과 상기 현재 탐색 영역 저장부에 저장된 하위 레벨 탐색 영역 중, 상기 제 3 하위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출하고,
    상기 제 4 기본 탐색 유닛은 상기 제 4 기본 블록 저장부에 저장된 제 4 하위 레벨 기본 블록과 상기 현재 탐색 영역 저장부에 저장된 하위 레벨 탐색 영역 중, 상기 제 4 하위 레벨 기본 블록에 대응되는 영역에 대한 SAD를 산출하는 것을 특징으로 하는 고속 움직임 추정 장치.
  22. 제 21 항에 있어서, 상기 매크로블록의 크기는 16x16이고, 상기 상위 레벨 기본 블록, 상기 중간 레벨 기본 블록, 및 상기 하위 레벨 기본 블록의 크기는 4x4이고, 상기 상위 레벨 탐색 영역, 상기 중간 레벨 탐색 영역, 및 상기 하위 레벨 탐색 영역의 크기는 12x12이고, 상기 부분 영역의 크기는 [-2, +2]인 것을 특징으로 하는 고속 움직임 추정 장치.
  23. 제 22 항에 있어서,
    상기 SAD 병합부는 상기 16x16 매크로블록으로부터 분리된 16개의 4x4 하위 레벨 기본 볼록 각각에 대한 SAD들을 병합하여, 8x4 블록, 4x8 블록, 8x8 블록, 16x8 블록, 8x16 블록, 및 16x16 블록에 대한 SAD를 산출하는 것을 특징으로 하는 고속 움직임 추정 장치.
KR1020030069020A 2003-10-04 2003-10-04 고속 움직임 추정 장치 KR20050033099A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020030069020A KR20050033099A (ko) 2003-10-04 2003-10-04 고속 움직임 추정 장치
US10/956,375 US20050089099A1 (en) 2003-10-04 2004-10-04 Fast motion estimating apparatus
CNA2004101033545A CN1642281A (zh) 2003-10-04 2004-10-08 快速运动估计装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030069020A KR20050033099A (ko) 2003-10-04 2003-10-04 고속 움직임 추정 장치

Publications (1)

Publication Number Publication Date
KR20050033099A true KR20050033099A (ko) 2005-04-12

Family

ID=34510851

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030069020A KR20050033099A (ko) 2003-10-04 2003-10-04 고속 움직임 추정 장치

Country Status (3)

Country Link
US (1) US20050089099A1 (ko)
KR (1) KR20050033099A (ko)
CN (1) CN1642281A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100723840B1 (ko) * 2004-12-08 2007-05-31 한국전자통신연구원 영상 움직임 추정 장치
KR100859073B1 (ko) * 2007-02-14 2008-09-17 주식회사 대우일렉트로닉스 움직임 추정 방법

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7830961B2 (en) * 2005-06-21 2010-11-09 Seiko Epson Corporation Motion estimation and inter-mode prediction
US20070092149A1 (en) * 2005-10-24 2007-04-26 Sung Chih-Ta S Method and apparatus of high quality video compression
KR100949917B1 (ko) * 2008-05-28 2010-03-30 한국산업기술대학교산학협력단 적응적 인트라 예측을 통한 고속 부호화 방법 및 시스템
FR3016764B1 (fr) * 2014-01-17 2016-02-26 Sagemcom Broadband Sas Procede et dispositif de transcodage de donnees video de h.264 vers h.265
JP6075898B1 (ja) * 2015-08-31 2017-02-08 日本電信電話株式会社 映像符号化装置、映像符号化方法及びプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3846642B2 (ja) * 1994-01-31 2006-11-15 ソニー株式会社 動き量検出方法及び動き量検出装置
US7079579B2 (en) * 2000-07-13 2006-07-18 Samsung Electronics Co., Ltd. Block matching processor and method for block matching motion estimation in video compression
TW548990B (en) * 2001-12-31 2003-08-21 Univ Nat Chiao Tung Fast motion estimation method using N-queen pixel decimation
KR20040008359A (ko) * 2002-07-18 2004-01-31 삼성전자주식회사 계층적 움직임 벡터 탐색을 이용한 움직임 추정 방법 및장치 및 그를 적용한 동영상 부호화 시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100723840B1 (ko) * 2004-12-08 2007-05-31 한국전자통신연구원 영상 움직임 추정 장치
KR100859073B1 (ko) * 2007-02-14 2008-09-17 주식회사 대우일렉트로닉스 움직임 추정 방법

Also Published As

Publication number Publication date
CN1642281A (zh) 2005-07-20
US20050089099A1 (en) 2005-04-28

Similar Documents

Publication Publication Date Title
US8073057B2 (en) Motion vector estimating device, and motion vector estimating method
US6167090A (en) Motion vector detecting apparatus
JP2920208B2 (ja) 動画像の動きベクトルの符号化方法
US8130835B2 (en) Method and apparatus for generating motion vector in hierarchical motion estimation
US20050238102A1 (en) Hierarchical motion estimation apparatus and method
US20080260033A1 (en) Hybrid hierarchical motion estimation for video streams
US7471725B2 (en) Segmented motion estimation with no search for small block sizes
US10104396B2 (en) Encoder circuit and encoding method
JP2003524933A (ja) 動き評価
US20050013367A1 (en) Low complexity block size decision for variable block size motion estimation
KR20050033099A (ko) 고속 움직임 추정 장치
US20080112631A1 (en) Method of obtaining a motion vector in block-based motion estimation
US7777751B2 (en) Tiled memory array for full search motion estimation
KR101091054B1 (ko) 동화상 부호화에 있어서의 움직임 탐색 장치
KR100994771B1 (ko) 블록정합에 의한 움직임 벡터 탐색방법 및 탐색장치
JP2007158855A (ja) 動きベクトル検出装置および動きベクトル検出方法
US8228997B1 (en) Systems and methods for an efficient scan pattern search in a video encoder motion estimation engine
Mukherjee et al. Efficient VLSI design of adaptive rood pattern search algorithm for motion estimation of high definition videos
Asano et al. An FPGA implementation of full-search variable block size motion estimation
KR100359091B1 (ko) 움직임추정장치
US8265155B2 (en) Method of block partition for H.264 inter prediction
KR100699835B1 (ko) 계층형 움직임 예측기 및 움직임벡터 예측방법
US20040120402A1 (en) Motion estimation apparatus for image data compression
US20130177086A1 (en) Fine motion estimation device for high resolution
JP2007151169A (ja) 動ベクトル検出装置および記録媒体

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid