KR20000032857A - 움직임 추정장치 - Google Patents
움직임 추정장치 Download PDFInfo
- Publication number
- KR20000032857A KR20000032857A KR1019980049474A KR19980049474A KR20000032857A KR 20000032857 A KR20000032857 A KR 20000032857A KR 1019980049474 A KR1019980049474 A KR 1019980049474A KR 19980049474 A KR19980049474 A KR 19980049474A KR 20000032857 A KR20000032857 A KR 20000032857A
- Authority
- KR
- South Korea
- Prior art keywords
- search
- data
- size
- block
- search area
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/43—Hardware specially adapted for motion estimation or compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Analysis (AREA)
Abstract
본 발명은 움직임 추정 장치에 관한 것으로, 원 영상을 하위레벨 영상, 중간레벨 영상 및 상위레벨 영상으로하여 현재 프레임의 각 매크로 블록의 움직임을 이전 프레임의 소정 탐색영역과 비교하여 추정할 때, 상위 레벨로부터 하위 레벨까지 계층적으로 탐색하는 움직임 추정 장치에 있어서, 현재 프레임 데이터와 이전 프레임 데이터를 저장하는 메모리; 메모리로부터 현재 프레임의 소정 크기의 블록 데이터와 이전 프레임의 탐색영역 데이터를 읽어서 데이터들의 정합기준값을 출력하는 기본 탐색 유닛; 하위 레벨에서 탐색할 경우, 탐색영역을 블록 크기로 분할하고, 각 분할된 탐색영역의 데이터와 블록 데이터를 입력으로하는 기본 탐색 유닛의 출력값을 저장하되, 이전에 저장된 값과 합한 값을 저장하고 출력하는 상기 부분 정합기준값 저장수단; 탐색이 하위 레벨에서 이루어지면 부분 정합기준값 저장수단으로부터 출력되는 순차적으로 비교하여 최소값을 갖는 탐색영역내 해당 탐색점의 인덱스를 출력하는 비교부; 및 탐색이 하위 레벨에서 이루어지면 인덱스로부터 움직임 벡터를 구하는 어드레스 발생부를 포함한다.
본 발명은 최소 크기의 탐색 블록과 탐색 영역을 처리하는 최소의 크기를 가지는 시스톨릭 어레이로 이루어진 하나의 기본 탐색 단위를 반복적으로 이용하여 매크로 블록의 MAD를 계산하므로 처리속도가 빠르고, 칩 사이즈를 작게할 수 있다.
Description
본 발명은 움직임 추정 장치에 관한 것이다.
더욱 더 치열해지는 현 사회에서 좀 더 정확한 정보의 전달과 공유를 위하여 점점 중요시되는 수단이 영상통신이다. 특히 실시간 동영상은 좀 더 정확하고 사실적인 정보의 전달매체로 사용된다. 실시간 디지털 텔레비젼, 동영상 스토리지 디바이스, 동영상 원격회의, 영상 전화기 등은 영상을 정보전달 매개체로서 현장감을 살릴 수 있게 한 것들이다. 이들 동영상 칩을 구현하는데 있어서 가장 많은 계산량을 필요로하는 것이 동영상 부호화를 위한 움직임 추정(Motion Estimation)부분이다. 움직임 추정은 종종 칩의 전 처리 파워의 50%까지도 차지한다.
지금까지 제안된 여러가지 움직임 추정 알고리즘중 전역 탐색기법(Full Search Block Matching Algorithm)의 경우 실시간 구현시 매우 큰 계산량으로 인해 칩 크기가 현저히 커지는 단점이 있다. 이런 단점을 보완하기위하여 여러 가지 탐색 알고리즘이 제안되어 왔다. 하지만 이런 고속 탐색 알고리즘들은 계산량에는 큰 이득을 주었으나 전역 탐색기법에 비해 성능이 많이 떨어진다.
고속 탐색 알고리즘들중 계층적 탐색 알고리즘은 계산량이 현저히 줄어듦에도 불구하고 성능은 전역 탐색에 비해 크게 떨어지지 않는다. 계층적 탐색 알고리즘의 경우, 각 단계마다 처리하는 블록의 크기와 탐색 영역의 크기가 서로 다르다. 일반적으로, 움직임 추정 알고리즘을 구현할 때, 시스톨릭 어레이(Systolic Array)를 사용하게되는데, 시스톨릭 어레이의 크기는 처리하는 블록과 탐색영역의 크기에 따라 결정된다.
예를 들어, 3단 계층적 탐색 알고리즘을 생각해보자. 우선 매크로 블록의 크기가 16x16인 경우, 상위 계층에서는 가로, 세로가 각각 1/4씩 줄어든 영상을 이용하여 4x4블록 단위로 ±p0영역에 대해 탐색을 수행한다. 이전 프레임의 탐색 영역의 후보 블록들 중 현재 프레임에서 현재 처리중인 블록과 가장 유사한 블록을 찾는다. 중간 계층에서는 상위계층에서 찾아진 위치를 초기점으로하여 다시 매크로 블록을 가로, 세로 각각 1/2씩 줄인 영상을 이용하여 8x8블록 단위로 ±p1영역에 대해서 탐색을 다시 수행한다. 마찬가지 방법으로 중간계층에서는 이렇게 상위계층에서 찾아진 위치를 초기점으로하여 마지막으로 하위레벨에서 매크로블록 단위로 ±p2영역에 대해 탐색을 수행하여 최종 움직임 벡터를 구하게된다. 따라서, 계층적 탐색 알고리즘은 상술한 바와 같이 각 단계마다 서로 다른 탐색 블록이 사용되며, 이들 블록을 위해 3가지 서로 다른 크기의 시스톨릭 어레이들이 필요하다.
그러나, 계층적 탐색은 순차적으로 수행되므로, 어느 한 시점에서 살펴보면 하나의 시스톨릭 어레이만 동작하고 나머지들은 아무런 작업도 수행하지 않는다. 따라서 이 구조는 필요이상의 시스톨릭 어레이를 사용하여 칩 면적을 증가시키는 문제점이 있다.
본 발명이 이루고자하는 기술적 과제는 움직임 추정시 최소 크기의 탐색 블록과 탐색 영역을 처리하는 최소의 크기를 가지는 시스톨릭 어레이로 이루어진 하나의 기본 탐색 단위를 반복적으로 이용하여 움직임 벡터를 찾는 움직임 추정 장치를 제공하는데 있다.
도 1은 본 발명에 사용되는 계층적 탐색 알고리즘의 계층도를 도시한 것이다.
도 2는 현재 탐색중인 매크로 블록의 인접 매크로 블록들을 도시한 것이다.
도 3은 기본 탐색 유닛의 상세도이다.
도 4는 기본 탐색 유닛을 상위레벨에 적용하는 경우를 도시한 것이다.
도 5는 기본 탐색 유닛을 중간레벨에 적용하는 경우를 도시한 것이다.
도 6은 기본 탐색 유닛을 하위레벨에 적용하는 경우를 도시한 것이다.
도 7은 중간레벨과 하위레벨의 탐색시 발생하는 부분 MAD를 저장하는 수단을 도시한 것이다.
도 8은 본 발명에 따른 움직임 추정 장치에 대한 블록도이다.
상기 기술적 과제를 이루기위한, 본 발명은 원 영상을 하위레벨 영상, 원 영상에 대해 각각 가로, 세로로 1/2 크기인 영상을 중간레벨 영상 및 원 영상에 대해 각각 가로, 세로로 1/4 크기인 영상을 상위레벨 영상으로하여 현재 프레임의 각 매크로 블록의 움직임을 이전 프레임의 소정 탐색영역과 비교하여 추정할 때, 상기 상위 레벨로부터 상기 하위 레벨까지 계층적으로 탐색하는 움직임 추정 장치에 있어서, 현재 프레임 데이터와 이전 프레임 데이터를 저장하는 메모리; 상기 메모리로부터 현재 프레임의 소정 크기의 블록 데이터와 상기 이전 프레임의 탐색영역 데이터를 읽어서 상기 데이터들의 정합기준값을 출력하는 기본 탐색 유닛; 상기 하위 레벨에서 탐색할 경우, 상기 탐색영역을 상기 블록 크기로 분할하고, 상기 각 분할된 탐색영역의 데이터와 상기 블록 데이터를 입력으로하는 상기 기본 탐색 유닛의 출력값을 저장하되, 이전에 저장된 값과 합한 값을 저장하고 출력하는 상기 부분 정합기준값 저장수단; 탐색이 상기 하위 레벨에서 이루어지면 상기 부분 정합기준값 저장수단으로부터 출력되는 순차적으로 비교하여 최소값을 갖는 탐색영역내 해당 탐색점의 인덱스를 출력하는 비교부; 및 탐색이 하위 레벨에서 이루어지면 상기 인덱스로부터 움직임 벡터를 구하는 어드레스 발생부를 포함함을 특징으로한다.
이하에서 첨부된 도면을 참조하여 본 발명을 실시예를 보다 상세히 설명하기로 한다. 도 1은 본 발명에 사용되는 계층적 탐색 알고리즘(Hierarchical Search Block Matching Algorithm by using 3 candidates and Spatial correlation, 이하 HSBMA3S라 함)의 계층도를 도시한 것이다. 도 1에 따른 알고리즘은 상위(100), 중간(102) 및 하위 레벨(104)로 구성된다.
하위레벨(104)의 영상은 원 영상이고, 중간레벨(102)의 영상은 원 영상에 대해 가로, 세로로 각각 1/2 크기의 영상이다. 상위레벨(100)의 영상은 중간레벨(102)의 영상을 서브샘플링하여 원 영상에 대해 가로, 세로가 각각 1/4인 영상이다. 이러한 영상에 대해 먼저, 상위레벨(100)에서 전역 탐색을 수행하고, 중간레벨(102)과 하위레벨(104)에서는 이전 레벨에서 얻은 움직임 벡터를 초기점으로 각각 순차적으로 부분 탐색을 수행하여 좀 더 세밀하게 조정한 후 최종 움직임 벡터를 얻게된다.
상위레벨(100)에서는 가로, 세로 각각 원 영상의 1/4크기인 영상을 이용하여 탐색을 수행한다. 가로, 세로 각각 1/4씩 줄어든 4x4크기의 블록단위로 탐색영역의 크기도 가로, 세로 각각 1/4씩 줄인 수평/수직 ±4화소 영역에 대해서 전역 탐색을 수행한다. 정합 기준(Matching Criterion)은 평균 절대값 차(Mean Absolute Difference, 이하 MAD라 함)이다. 상위레벨(100)의 탐색 후, MAD가 최소인 두 점을 중간 레벨(102)의 탐색을 위한 움직임 벡터 후보로 선택한다.
중간레벨(102)에서는 가로, 세로 각각 원 영상의 1/2 크기인 영상을 이용하여 탐색한다. 중간레벨(102)에서는 총 3개의 움직임 벡터 후보에 대해서, 각각의 움직임 벡터 후보를 초기 탐색점으로하여 8x8크기의 블록 단위로 수평/수직 ±2 화소 크기의 부분 탐색을 수행한다. 3개의 초기 탐색점중 2개는 상위레벨(100)에서 MAD를 정합기준으로하여 선택된 것이고, 나머지 하나는 움직임 벡터들의 공간적 상관관계(Spatial Correlation)를 이용하여 선택된 것이다. 3개의 후보에 대해서 탐색을 수행하여 최소 MAD를 가지는 점을 각각 하나씩 얻게되면, 그 중에 MAD가 최소인 한 점을 하위레벨(104)에서의 초기 탐색점으로 선택한다.
도 2는 현재 처리중인 매크로 블록의 인접 매크로 블록들을 도시한 것이다. 인접 매크로 블록들은 각각 NMV0, NMV1, NMV2이다. 이들 매크로 블록들은 시간적으로 우선 처리되어있어서 이미 최종 움직임 벡터들(NMV0x, NMV0y), (NMV1x, NMV1y), (NMV2x, NMV2y)을 알고있는 블록들이다. 이들의 움직임 벡터들의 x, y성분을 각각 따로 중간값(median)을 취해 하나의 후보로 결정한다.
이렇게 얻어진 움직임 벡터 후보를 1/2로 크기를 줄여서 중간 레벨에서의 초기 탐색점으로 사용한다.
하위레벨(104)에서는 원 영상을 그대로 이용하여 중간 레벨(102)에서 얻어진 점을 중심으로 16x16 크기의 블록단위로 수평/수직 ±2 화소의 부분탐색을 수행하여 최종 움직임 벡터를 하나 결정하게 된다.
상술한 HSBMA3S를 하드웨어로 구현하는 본 발명은 시스톨릭 어레이를 기반으로한다. 시스톨릭 어레이는 MAD를 계산하기 위한 간단한 연산(뺄셈, 절대값, 덧셈)을 수행하는 처리 단위(Processing Element, 이하 PE라 함)들의 배열이다. 일반적으로 PE의 개수는 움직임 추정 알고리즘에서 처리하는 매크로 블록의 크기 또는 탐색 영역의 크기와 비례한다. 예를 들어, 전역 탐색의 경우 16x16 매크로블록 단위로 처리할 경우 256개의 PE가 사용되며 움직임 추정 칩의 대부분을 PE가 차지하게 되어 칩 사이즈가 커지게 된다. HSBMA3S 알고리즘은 3개의 레벨로 이루어져 있고 각각의 레벨마다 처리하는 블록의 크기와 탐색 영역의 크기가 서로 다르다. 따라서 각 레벨에 적합한 서로 다른 시스톨릭 어레이가 필요하게 된다. 모든 레벨에서 공통적으로 사용할 수 있는 하나의 시스톨릭 어레이로 기본 탐색 유닛(Basic Searching Unit, 이하 BSU라 함)을 두어 이를 반복적으로 사용함으로써 움직임 추정을 수행한다. 그리고 BSU 또한 5개의 PE로 이루어진 구조이므로 칩 전체에서 PE가 차지하는 비율은 미미하다.
HSBMA3S는 상위 레벨, 중간 레벨, 하위 레벨에서 처리하는 블록의 크기와 탐색 영역의 크기가 서로 다르다. 상위 레벨에서는 4x4 크기의 블록에 대해서 수평/수직 ±4 화소 탐색을 수행하고, 중간 레벨에서는 8x8 크기의 블록에 대해서 ±2 화소 탐색, 하위 레벨에서는 16x16 크기의 블록에 대해서 ±2 화소 탐색을 수행한다. 각 레벨에서 처리하는 블록의 크기 중 가장 작은 크기와 탐색 영역의 크기 중 가장 작은 것을 택하여 4x4 크기의 블록에 대해서 ±2 화소 탐색을 수행할 수 있는 BSU를 둔다. BSU를 각 레벨에서 반복적으로 사용함으로써 탐색을 수행하게 된다.
도 3은 기본 탐색 유닛의 상세도이다. BSU는 4x4 크기의 블록에 대하여 2 화소의 탐색을 수행하는 시스톨릭 어레이다. 도 3에 따르면, 기본 탐색 유닛은 5개의 PE(PE0, PE1, PE2, PE3, PE4), 복수의 플립플롭(DFF) 및 멀티플렉서(MUX)로 구성된다.
BSU가 4x4 크기의 블록에 대하여 ±2 화소의 탐색을 수행하기 위해서는 다음의 표 1 및 표 2와 같이 현재 프레임의 4x4 크기의 기준 블록 데이터와 이전 프레임의 8x8 크기의 탐색 영역 데이터들이 필요하다.
R(0,0) | R(0,1) | R(0,2) | R(0,3) |
R(1,0) | R(1,1) | R(1,2) | R(1,3) |
R(2,0) | R(2,1) | R(2,2) | R(2,3) |
R(3,0) | R(3,1) | R(3,2) | R(3,3) |
S(0,0) | S(0,1) | S(0,2) | S(0,3) | S(0,4) | S(0,5) | S(0,6) | S(0,7) |
S(1,0) | S(1,1) | S(1,2) | S(1,3) | S(1,4) | S(1,5) | S(1,6) | S(1,7) |
S(2,0) | S(2,1) | S(2,2) | S(2,3) | S(2,4) | S(2,5) | S(2,6) | S(2,7) |
S(3,0) | S(3,1) | S(3,2) | S(3,3) | S(3,4) | S(3,5) | S(3,6) | S(3,7) |
S(4,0) | S(4,1) | S(4,2) | S(4,3) | S(4,4) | S(4,5) | S(4,6) | S(4,7) |
S(5,0) | S(5,1) | S(5,2) | S(5,3) | S(5,4) | S(5,5) | S(5,6) | S(5,7) |
S(6,0) | S(6,1) | S(6,2) | S(6,3) | S(6,4) | S(6,5) | S(6,6) | S(6,7) |
S(7,0) | S(7,1) | S(7,2) | S(7,3) | S(7,4) | S(7,5) | S(7,6) | S(7,7) |
기준 블록 데이터는 C 포트를 통해, 탐색 영역 데이터는 P와 P'의 두 개의 포트로 나뉘어 BSU로 입력된다. 탐색 영역 데이터를 두 포트를 통해서 나누어서 동시에 입력하는 이유는 데이터의 공급을 원활히 하여 PE의 효율성을 극대화하기 위함이다. 탐색 영역 데이터 64개중 왼쪽 네 개의 열 데이터 32개는 P 포트를 통해서 오른쪽 네 개의 열 데이터 32개는 P' 포트를 통해 동시에 입력된다.
BSU에 입력된 기준 블록 데이터는 각 플립플롭(DFF)을 거쳐서 5개의 PE에 순차적으로 공급되고, 탐색 영역 데이터는 5개의 PE에 브로드캐스팅된다. PE0는 P를, PE4는 P'을, 나머지 PE들(PE1, PE2, PE3)은 각 MUX를 통해 P와 P'중 적절한 데이터를 선택하여 공급 받게 된다. PE는 4x4 크기의 블록 데이터에 대한 MAD를 계산하기위한 연산을 담당한다.
BSU는 ±2 화소, 즉 수평/수직 5개씩 25개의 탐색점에 대한 탐색을 행별로 순차적으로 수행한다. 5개의 PE는 하나의 행의 5개의 탐색점에 각각 할당되어 그 탐색점에서의 MAD를 계산한다. 한번에 하나의 행씩 5개의 행에 위치하는 탐색점들에 대한 탐색을 수행하면 하나의 기본 탐색 단위인 4x4 크기의 블록에 대한 ±2 화소의 탐색을 마치게 된다. 각각의 PE에 입력되는 기준 블록 데이터와 탐색 영역 데이터는 표 3과 같다. 표에서는 9번째 클럭 사이클(CC)까지만 나타낸 것이다.
클럭 사이클 | PE0 | PE1 | PE2 | PE3 | PE4 | |||||
RD | SD | RD | SD | RD | SD | RD | SD | RD | SD | |
0 | R(0,0) | S(0,0) | ||||||||
1 | R(0,1) | S(0,1) | R(0,0) | S(0,1) | ||||||
2 | R(0,2) | S(0,2) | R(0,1) | S(0,2) | R(0,0) | S(0,2) | ||||
3 | R(0,3) | S(0,3) | R(0,2) | S(0,3) | R(0,1) | S(0,3) | R(0,0) | S(0,3) | ||
4 | R(1,0) | S(1,0) | R(0,3) | S(0,4) | R(0,2) | S(0,4) | R(0,1) | S(0,4) | R(0,0) | S(0,4) |
5 | R(1,1) | S(1,1) | R(1,0) | S(1,1) | R(0,3) | S(0,5) | R(0,2) | S(0,5) | R(0,1) | S(0,5) |
6 | R(1,2) | S(1,2) | R(1,1) | S(1,2) | R(1,0) | S(1,2) | R(0,3) | S(0,6) | R(0,2) | S(0,6) |
7 | R(1,3) | S(1,3) | R(1,2) | S(1,3) | R(1,1) | S(1,3) | R(1,0) | S(1,3) | R(0,3) | S(0,7) |
8 | R(2,0) | S(2,0) | R(1,3) | S(1,4) | R(1,2) | S(1,4) | R(1,1) | S(2,4) | R(1,0) | S(1,4) |
9 | R(2,1) | S(2,1) | R(2,0) | S(2,1) | R(1,3) | S(1,5) | R(1,2) | S(3,5) | R(1,1) | S(1,5) |
여기서, RD는 기준 블록 데이터이고, SD는 탐색 영역 데이터이다.
기준 블록 데이터와 탐색 영역 데이터는 각각 행별로 차례대로 입력되며 P'을 통해 입력되는 탐색 영역 데이터는 C와 P를 통해 입력되는 데이터들보다 네 클럭 늦게 입력된다. 기준 블록 데이터는 C 포트를 통해 16 클럭마다 반복되어 재입력되며, 탐색 영역 데이터들은 16개의 데이터가 입력되고 나면 한 행씩 밑의 데이터가 16개 입력되는 방식으로 진행된다.
하나의 PE에서 4x4 블록에 대한 MAD를 계산하는데 16CC이 걸리고, 5개의 PE에서 동시에 5개의 탐색점들에 대한 탐색이 수행하므로, 2 화소, 25개의 탐색점들에 대한 탐색을 수행하는 데는 총 16x5=80CC이 소요된다.
도 4는 기본 탐색 유닛을 상위레벨에 적용하는 경우를 도시한 것이다. 도 4(a), 4(b), 4(c) 및 4(d)에 도시된 바에 따르면, 상위 레벨은 4x4 크기의 블록에 대하여 화소 탐색을 수행한다. 처리하는 블록의 크기는 BSU가 처리하는 블록의 크기와 동일하나 탐색 영역의 크기는 서로 다르다. BSU를 이용하여 탐색을 수행하기 위해서 도 4와 같이 탐색점들을 네 영역으로 나누어 처리한다. BSU는 한번에 ±2화소, 즉 수평/수직 5개씩 25개 탐색점들에 대한 탐색을 수행하므로 탐색점들을 25개씩 나누어 순차적으로 처리한다.
도 5는 기본 탐색 유닛을 중간레벨에 적용하는 경우를 도시한 것이다. 도시된 바에 따르면, 중간 레벨은 8x8 크기의 블록에 대하여 ±2 화소 부분탐색을 수행한다. 탐색 영역의 크기는 BSU가 처리하는 것과 동일하고 처리하는 블록의 크기는 서로 다르다. BSU를 이용하여 탐색을 수행하기 위해서 도시된 바와 같이 처리하는 블록을 네 개의 4x4 크기의 블록으로 나누어 순차적으로 처리한다. 이때 BSU에서 계산된 MAD는 8x8 블록에 대한 완전한 MAD가 아니라 4x4 블록에 대한 부분 MAD이다. 부분 MAD들을 저장하여 완전한 MAD를 구하는 추가 하드웨어가 필요하다.
도 6은 기본 탐색 유닛을 하위레벨에 적용하는 경우를 도시한 것이다. 도시된 바에 따르면, 하위 레벨에서는 16x16 크기의 블록에 대하여 ±2 화소 부분 탐색을 수행한다. 중간 레벨과 마찬가지로 처리하는 탐색 영역의 크기는 BSU가 처리하는 크기와 동일하고 처리하는 블록의 크기는 서로 다르다. 중간 레벨에서와 같은 방법으로 처리하는 블록을 16 개의 4x4 크기의 블록으로 나누어 순차적으로 처리한다. 여기서도 완전한 MAD를 구하기 위한 하드웨어를 사용한다.
도 7은 중간레벨과 하위레벨의 탐색시 발생하는 부분 MAD를 저장하는 수단을 도시한 것이다. 중간 레벨과 하위 레벨에서는 처리하는 블록을 4x4 크기의 블록으로 나누어 처리하기 때문에 이러한 모듈이 사용된다. 도시된 바에 따르면, 부분 MAD 저장수단은 25개의 쉬프트 레지스터(700)와 덧셈기(702)로 이루어져 있다. BSU는 한번에 ±2 화소의 탐색, 즉 25개 점에 대한 탐색을 수행하므로 각각의 탐색점들에서 얻어진 부분 MAD를 저장할 공간으로 25개의 쉬프트 레지스터(700)가 사용된다. 탐색영역이 ±p2라면, 쉬프트 레지스터(700)의 개수는 (2p2+1)2개가 필요하다. 16x16 블록에 대한 완전한 MAD는 16 비트이므로 각각의 레지스터의 크기는 16비트가 된다. 중간 레벨과 하위 레벨 처리 시 BSU에서 계산된 4x4 블록에 대한 부분 MAD들은 차례대로 이전에 저장된 값들과 덧셈기(702)에서 더해져서 쉬프트 레지스터(700)에 저장된다. 중간 레벨에서는 네 개의 부분 MAD들을 더해서 8x8 블록에 대한 완전한 MAD를 구할 수 있으며 하위 레벨에서는 열 여섯 개의 부분 MAD들을 더해서 16x16 블록에 대한 완전한 MAD를 구할 수 있다.
도 8은 본 발명에 따른 움직임 추정 장치에 대한 블록도이다. 도 8에 따른 움직임 추정 장치는 기본 탐색 유닛(800), 제1MUX(802), 비교기(804), 제2MUX(806), 어드레스 발생부(808), 인접 움직임 벡터 저장부(810), 부분 MAD 저장부(812) 및 메모리(814)를 포함한다.
기본 탐색 유닛(700)은 상술한 바와 같이 기준 프레임의 데이터와 탐색영역의 데이터의 정합기준값인 MAD를 출력한다. 제1MUX(701)는 상위레벨 탐색인 경우 기본 탐색 유닛의 MAD를 출력하고, 중·하위레벨이면 부분 MAD 저장부(812)의 MAD를 출력한다. 비교부(804)는 입력되는 MAD를 순차적으로 비교하여 가장 작은 MAD를 갖는 탐색점의 인덱스를 출력한다. 제2MUX(806)는 상위 또는 중간레벨이면 비교부(804)에서 출력되는 인덱스를 출력하며, 하위레벨이면 인접 움직임 벡터 저장부(810)에서 출력되는 인덱스를 출력한다. 인접 움직임 벡터 저장부(810)는 중간레벨의 초기 탐색점으로 사용되는 움직임 벡터 후보 3개중 하나를 인접 움직임 벡터들로부터 구할 때, 현재 처리중인 매크로 블록에 인접한 블록의 움직임 벡터들을 저장하고, 저장된 값들로부터 중간값을 구하여 출력한다. 어드레스 발생부(808)는 제2MUX(806)의 출력 인덱스에 따라 다음 레벨의 초기 탐색점을 계산하고, 탐색영역 데이터를 기본 탐색 유닛(700)으로 가져올 수 있도록 적절한 주소를 발생한다. 또한 하위레벨의 탐색인 경우 출력 인덱스로부터 움직임 벡터를 구한다. 메모리(814)는 발생된 주소에 해당하는 데이터들을 기본 탐색 유닛(700)에 출력한다.
본 발명은 최소 크기의 탐색 블록과 탐색 영역을 처리하는 최소의 크기를 가지는 시스톨릭 어레이로 이루어진 하나의 기본 탐색 단위를 반복적으로 이용하여 매크로 블록의 MAD를 계산하므로 처리속도가 빠르고, 칩 사이즈를 작게할 수 있다.
Claims (3)
- 원 영상을 하위레벨 영상, 원 영상에 대해 각각 가로, 세로로 1/2 크기인 영상을 중간레벨 영상 및 원 영상에 대해 각각 가로, 세로로 1/4 크기인 영상을 상위레벨 영상으로하여 현재 프레임의 각 매크로 블록의 움직임을 이전 프레임의 소정 탐색영역과 비교하여 추정할 때, 상기 상위 레벨로부터 상기 하위 레벨까지 계층적으로 탐색하는 움직임 추정 장치에 있어서,현재 프레임 데이터와 이전 프레임 데이터를 저장하는 메모리;상기 메모리로부터 현재 프레임의 소정 크기의 블록 데이터와 상기 이전 프레임의 탐색영역 데이터를 읽어서 상기 데이터들의 정합기준값을 출력하는 기본 탐색 유닛;상기 하위 레벨에서 탐색할 경우, 상기 탐색영역을 상기 블록 크기로 분할하고, 상기 각 분할된 탐색영역의 데이터와 상기 블록 데이터를 입력으로하는 상기 기본 탐색 유닛의 출력값을 저장하되, 이전에 저장된 값과 합한 값을 저장하고 출력하는 상기 부분 정합기준값 저장수단;탐색이 상기 하위 레벨에서 이루어지면 상기 부분 정합기준값 저장수단으로부터 출력되는 순차적으로 비교하여 최소값을 갖는 탐색영역내 해당 탐색점의 인덱스를 출력하는 비교부; 및탐색이 하위 레벨에서 이루어지면 상기 인덱스로부터 움직임 벡터를 구하는 어드레스 발생부를 포함함을 특징으로하는 움직임 추정 장치.
- 제1항에 있어서, 상기 기본 탐색 유닛은상기 레벨들중 최소 탐색영역을 탐색하도록 개수가 선택되는 처리단위(PE);상기 블록 데이터를 상기 처리단위들에게 순차적으로 공급하고, 상기 탐색 영역 데이터를 상기 처리단위들에 공급하는 복수의 플립플롭; 및상기 처리단위들에게 상기 블록 데이터 및 상기 탐색영역 데이터를 선택적으로 공급하는 복수의 멀티플렉서를 구비함을 특징으로하는 움직임 추정 장치.
- 제1항에 있어서, 상기 부분 정합기준값 저장수단은상기 기본 탐색 유닛에서 출력된 부분 MAD들과 이전에 저장된 값들을 더하는 덧셈기; 및상기 탐색영역의 탐색점들만큼의 크기를 갖고 상기 덧셈기의 출력을 순차적으로 저장하는 쉬프트 레지스터 어레이를 구비함을 특징으로하는 움직임 추정 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-1998-0049474A KR100359091B1 (ko) | 1998-11-18 | 1998-11-18 | 움직임추정장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-1998-0049474A KR100359091B1 (ko) | 1998-11-18 | 1998-11-18 | 움직임추정장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20000032857A true KR20000032857A (ko) | 2000-06-15 |
KR100359091B1 KR100359091B1 (ko) | 2003-01-24 |
Family
ID=19558794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-1998-0049474A KR100359091B1 (ko) | 1998-11-18 | 1998-11-18 | 움직임추정장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100359091B1 (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040008359A (ko) * | 2002-07-18 | 2004-01-31 | 삼성전자주식회사 | 계층적 움직임 벡터 탐색을 이용한 움직임 추정 방법 및장치 및 그를 적용한 동영상 부호화 시스템 |
US6928116B2 (en) | 2003-05-20 | 2005-08-09 | Pantech Co., Ltd. | Motion estimation method using multilevel successive elimination algorithm |
KR100534207B1 (ko) * | 2002-12-09 | 2005-12-08 | 삼성전자주식회사 | 비디오 부호화기의 움직임 추정기 및 그 방법 |
KR100970726B1 (ko) * | 2003-10-04 | 2010-07-16 | 삼성전자주식회사 | 계층적 움직임 추정 방법 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5594504A (en) * | 1994-07-06 | 1997-01-14 | Lucent Technologies Inc. | Predictive video coding using a motion vector updating routine |
KR0143179B1 (ko) * | 1994-07-12 | 1998-07-01 | 김창현 | 분유와 물의 자동 공급 및 혼합장치 |
KR0180171B1 (ko) * | 1995-06-28 | 1999-05-01 | 배순훈 | 블록 움직임 추정 방법 |
KR100207390B1 (ko) * | 1995-09-15 | 1999-07-15 | 전주범 | 계층적인 움직임 추정기법을 이용하는 음직임 벡터 검출방법 |
KR100207650B1 (ko) * | 1995-11-27 | 1999-07-15 | 윤종용 | 영상 압축 시스템의 움직임 추정 장치 |
KR100197793B1 (ko) * | 1995-12-23 | 1999-06-15 | 정선종 | 선형 단축 배열 구조를 이용한 블록정합 움직임 추정장치 |
-
1998
- 1998-11-18 KR KR10-1998-0049474A patent/KR100359091B1/ko not_active IP Right Cessation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040008359A (ko) * | 2002-07-18 | 2004-01-31 | 삼성전자주식회사 | 계층적 움직임 벡터 탐색을 이용한 움직임 추정 방법 및장치 및 그를 적용한 동영상 부호화 시스템 |
KR100534207B1 (ko) * | 2002-12-09 | 2005-12-08 | 삼성전자주식회사 | 비디오 부호화기의 움직임 추정기 및 그 방법 |
US6928116B2 (en) | 2003-05-20 | 2005-08-09 | Pantech Co., Ltd. | Motion estimation method using multilevel successive elimination algorithm |
KR100970726B1 (ko) * | 2003-10-04 | 2010-07-16 | 삼성전자주식회사 | 계층적 움직임 추정 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR100359091B1 (ko) | 2003-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lai et al. | A data-interlacing architecture with two-dimensional data-reuse for full-search block-matching algorithm | |
US5838828A (en) | Method and apparatus for motion estimation in a video signal | |
US6690730B2 (en) | Motion estimator | |
KR101578052B1 (ko) | 움직임 추정 장치 및 이를 구비하는 동영상 부호화 장치 | |
US7782957B2 (en) | Motion estimation circuit and operating method thereof | |
WO1993025972A1 (en) | Method and apparatus for comparing data sets | |
JPH04294469A (ja) | 相関装置 | |
US5793443A (en) | Motion vector detection circuit | |
US6160850A (en) | Motion estimator employing a three-step hierachical search block-matching algorithm | |
Baglietto et al. | Parallel implementation of the full search block matching algorithm for motion estimation | |
KR100359091B1 (ko) | 움직임추정장치 | |
Akin et al. | High performance hardware architectures for one bit transform based motion estimation | |
Yeo et al. | A modular high-throughput architecture for logarithmic search block-matching motion estimation | |
Chen | A cost-effective three-step hierarchical search block-matching chip for motion estimation | |
Berns et al. | A flexible motion estimation chip for variable size block matching | |
Liu et al. | A frame-level FSBM motion estimation architecture with large search range | |
US20050089099A1 (en) | Fast motion estimating apparatus | |
De Vos et al. | VLSI architectures for the full-search blockmatching algorithm | |
US6931066B2 (en) | Motion vector selection based on a preferred point | |
Pirsch et al. | VLSI architectures for block matching algorithms | |
KR0178302B1 (ko) | 양방향 병렬 파이프라인 구조에 근거한 탐색 이동 예측처리기 | |
JP3453145B2 (ja) | 画素ブロックの比較のためのプロセッサ(ブロックマッチングプロセッサ) | |
Muralidhar et al. | Efficient architecture for variable block size motion estimation in H. 264/AVC | |
KR100246033B1 (ko) | 고속 실시간 처리 움직임 추정을 위한 연산방법 및 이를 위한 연산장치 | |
Lu et al. | Systolic array based architecture for variable block-size motion estimation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20100929 Year of fee payment: 9 |
|
LAPS | Lapse due to unpaid annual fee |