KR100226684B1 - 반화소 움직임 추정장치 - Google Patents

반화소 움직임 추정장치 Download PDF

Info

Publication number
KR100226684B1
KR100226684B1 KR1019960007973A KR19960007973A KR100226684B1 KR 100226684 B1 KR100226684 B1 KR 100226684B1 KR 1019960007973 A KR1019960007973 A KR 1019960007973A KR 19960007973 A KR19960007973 A KR 19960007973A KR 100226684 B1 KR100226684 B1 KR 100226684B1
Authority
KR
South Korea
Prior art keywords
pixel
absolute error
output
motion estimation
pixels
Prior art date
Application number
KR1019960007973A
Other languages
English (en)
Other versions
KR970068661A (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 KR1019960007973A priority Critical patent/KR100226684B1/ko
Priority to GB9705879A priority patent/GB2311435B/en
Priority to US08/821,914 priority patent/US5936672A/en
Priority to JP9069997A priority patent/JPH1013839A/ja
Priority to CNB971037078A priority patent/CN1214646C/zh
Publication of KR970068661A publication Critical patent/KR970068661A/ko
Application granted granted Critical
Publication of KR100226684B1 publication Critical patent/KR100226684B1/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/223Analysis of motion using block-matching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence

Abstract

본 발명은 반화소 움직임 추정장치에 관한 것으로, 소정의 제 1 서치 윈도우상에서 소정 크기의 매크로 블록에 대해 정수 움직임 추정이 수행되어 정수 움직임 벡터와 해당 절대에러값이 구해진 후, 이에 따라 소정의 제 2 서치 윈도우를 형성하여 상기 매크로 블록에 대해 반화소 움직임 추정을 하기 위한 움직임 추정장치에 있어서, 상기 제 2 서치 윈도우의 화소 데이터를 순차적으로 한쌍씩 입력받아 지연된 한쌍의 화소들과 현재입력되는 한쌍의 화소들을 가산 및 시프트하여 반화소를 생성하는 보간기(100); 및 상기 매크로 블록의 화소 데이터 및 한 라인 지연된 화소 데이터를 순차적으로 입력받아, 상기 보간기의 출력과 입력된 화소 데이터를 연산하여 반화소 움직임에 의한 절대에러값들을 구한 후 이 절대에러값들과 상기 정수 움직임 추정에 의한 절대에러값을 각각 비교하여 절대에러값이 최소인 움직임 벡터를 선택하여 출력하는 반화소 움직임 추정수단(200)이 구비되어 회로가 상대적으로 간단하여 반도체칩으로 구현시 좁은 공간을 차지하게 되고, 처리속도도 향상되는 효과가 있다.

Description

반화소 움직임 추정장치(A Half pel motion estimator)
제1도의 (a)는 2차에 걸쳐 움직임을 추정하는 개념을 설명하기 위하여 도시한 도면,
제1도의 (b)는 본 발명을 적용하기에 적합한 전형적인 움직임 추정장치를 도시한 블록도,
제2도의 (a)는 움직임 추정을 위한 16x16 매크로 블록을 도시한 도면,
제2도의 (b)는 반화소 움직임 추정을 위한 서치 윈도우를 도시한 도면,
제3도는 반화소 움직임 추정을 설명하기 위하여 도시한 화소 및 반화소의 예,
제4도는 본 발명에 따른 반화소 움직임 추정장치를 도시한 블록도,
제5도는 제4도에 도시된 프로세싱 엘리면트의 세부 블록도,
제6도는 제4도에 도시된 가산 및 시프터의 세부 블록도이다.
도면의 주요부분에 대한 부호의 설명
1,2 : 프레임 버퍼 3 : 정화소 움직임 추정부
4 : 반화소 움직임 추정부 100 : 보간기(interpolator)
110,211,212 : 래치 200 : 반화소 움직임 추정부
221~228 : 프로세싱 엘리먼트 231~238 : 누산기(accumulator)
240 : 비교 및 선택기
본 발명은 영상신호의 움직임 추정장치(Motion Estimator)에 관한 것으로, 특히 정수 화소(pixel 혹은 pel)를 보간하여 형성한 반화소(Half pel)에 대해서도 움직임 추정하기 위한 반화소 움직임 추정장치(Half pel motion estimator)에 관한 것이다.
일반적으로, 영상신호 처리기술에서 '움직임 추정(motion estimation)'이란 연속되는 영상신호에서 현재 프레임(current frame)의 화소(pixel)들이 이전 프레임(previous frame)에 비해 어느 정도 움직였는지를 백터로 표시한 움직임 벡터(motion vector)를 추정하여, 전체 영상을 전송하는 대신에, 이들 움직임 벡터를 전송함으로써 전송정보를 줄이는 기술(즉, 영상압축)을 말하는 것이다.
이러한 움직임 추정에서 널리 사용되는 블록 정합 알고리즘(BMA:Block Matching Algorithm)은 화면의 움직임이 수평 또는 수직으로 평행 이동한 것으로 가정하여, 움직임이 일어나 프레임(즉, 현재 프레임)의 블록영상이 움직임이 일어나기전 프레임(즉, 이전 프레임)의 어느 위치에 있는 블록영상과 가장 일치하는가를 추정하여 그 위치를 움직임 벡터로서 추정하는 방법이다. 이때, 블록의 크기로는 8x8, 16x16(가로 픽셀 수 x 세로 픽셀 수)을 주로 사용한다.
여기서, 현재 프레임의 레퍼런스 블록(reference block)과 가장 유사한 이전 블록을 찾기 위하여 이전 프레임에서 레퍼런스 블록의 위치를 중심으로 일정 범위 안을 찾게 되는데, 이러한 범위를 서치 윈도우(search window)라 하고, 이러한 서치 윈도우안에서 각 후보블럭(candidate block)과의 차를 디스토션(distortion; 또는 절대에러(AE)라고도 한다)이라 하며, 두 블럭간의 유사정도를 나타낸다.
또한, 서치 윈도우안의 모든 후보블럭과 레퍼런스 블록을 비교하는 것을 폴 서치 블록매칭(full search block matching algorithm)이라 하며, 수식적으로 가장 일치하는 블록을 찾기 위하여 연속된 두 프레임의 영상중에서, 이전 프레임을 f1(x,y), 현재 프레임을 f2(x,y)라 했을 때, f2(x,y)와 f1(x-a,y-b)에서 a,b를 변화시켜 가면서 f1(x-a,y-b)와f2(x,y)의차를 구하여, 그 차가 최소가 되는 (a,b)를 움직임 벡터로 예측한다.
이와 같이 블록간의 최소오차를 구하는 방법을 평균절대오차(MAE:Mean Absolute Error) 방법이라 하며, 평균절대오차는 다음 식1으로 구해진다.
상기 식1에서 Eabs는 평균절대오차값이고, B는 블록크기를 뜻하며, 따라서 상기 Eabs를 최소로 하는 (a,b)를 구하면, 이것이 움직임 벡터가 된다.
한편, MPEG2 등과 같이 영상을 압축 부호화하는 실제장치에서는 움직임 추정을 보다 정밀하게 수행하기 위하여 제 1 도의 (a)에 도시된 바와 같이, 통상 2단계에 걸쳐 움직임 추정이 이루어진다.
즉, 통상적으로 화소단위로 넓은 서치 윈도우(SW1)에서 움직임 추정을 수행하여 1차 움직임 벡터(MV1)를 산출한 후, 이 움직임 벡터(MV1)를 중심으로 인접한 화소들을 연산하여 구한 보간된 반화소에 대해서 좁은 범위의 서치 윈도우(SW2)에서 움직임 추정(이를 '반화소 움직임 추정'이라 한다)하여 최종적으로 정밀한 움직임 벡터(MV2)를 구한다. 이와 같이 반화소 움직임 추정에 의해 구해진 움직임 벡터(MV2)는 1차 움직임 벡터(MV1)보다 정밀하게 움직임 추정을 할 수 있다.
그런데 종래의 반화소 움직임 추정기를 구성하는 보간기(Interpolator)는 반화소를 구하기 위하여 디바이더가 필요하였고, 이 디바이더는 반도체칩으로 구현시, 많은 영역을 차지하므로 부피가 증가되어 실시간처리가 어려웠고, 움직임 추정에서 어레이 프로세서(array processor)를 사용하였기 때문에 칩의 면적이 커지는 문제점이 있다.
이에 본 발명은 상기와 같은 문제점을 해소하기 위하여 반화소를 구하기 위한 보간 연산에 시프터를 이용하고, 움직임 추정도 순차적으로 처리하므로써 회로를 간단히 하여 컴팩트하고 처리속도를 향상시킬 수 있는 반화소 움직임 추정장치를 제공하는데 그 목적이 있다.
상기와 같은 목적을 달성하기 위하여 본 발명의 장치는, 소정의 제1 서치 윈도우상에서 소정 크기의 매크로 블록에 대해 정수 움직임 추정이 수행되어 정수 움직임 벡터와 해당 절대에러값이 구해진 후, 이에 따라 소정의 제2 서치 윈도우를 형성하여 상기 매크로 블록에 대해 반화소 움직임 추정을 하기 위한 움직임 추정장치에 있어서, 상기 제2 서치 윈도우의 화소 데이터를 순차적으로 한쌍씩 입력받아 지연된 한쌍의 화소들과 현재입력되는 한쌍의 화소들을 가산 및 시프트하여 반화소를 생성하는 보간기; 및 상기 매크로블럭의 화소 데이터 및 한 라인 지연된 화소 데이터를 순차적으로 입력받아, 상기 보간기의 출력과 입력된 화소 데이터를 연산하여 반화소 움직임에 의한 절대에러값들을 구한 후 이 절대에러값들과 상기 정수 움직임 추정에 의한 절대에러값을 각각 비교하여 절대에러값이 최소인 움직임 벡터를 선택하여 출력하는 반화소 움직임 추정수단이 구비된 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 자세히 설명하기로 한다.
제 1 도의 (a)는 넓은 범위의 서치 윈도우(SW1)상에서 1차 움직임 추정(MV1)한 후, 좁은 서치 윈도우(SW2)상에서 2차 움직임 추정(MV2)하여 보다 정밀하게 움직임 추정하는 개념을 설명하기 위한 도면으로서, 앞서 설명한 바 있으므로 더 이상 자세한 설명은 생략한다.
제 1 도의 (b)는 본 발명을 적용하기에 적합한 전형적인 움직임 추정장치를 도시한 블록도로서, 현재 프레임 버퍼(1); 이전 프레임 버퍼(2); 정화소 움직임 추정부(3); 반화소 움직임 추정부(4); 및 지연부(5)가 구비되어 있다.
제 1 도에 있어서, 현재 프레임 버퍼(1)에는 움직임 추정할 현재 프레임의 영상 데이터가 저장되어 있고, 이 데이터들을 매크로블럭(MB) 단위로 억세스가능하도록 되어 있으며, 이전 프레임 버퍼(2)에는 움직임 추정의 기준영상이 되는 이전 프레임의 영상 데이터가 저장되어 있고, 이 데이터들의 소정의 서치 윈도우(SW1,SW2)를 형성하고 있다.
정화소 움직임 추정부(3)는 현재 프레임 버퍼(1)로부터 매크로블럭 데이터(MB)를 입력받고, 이전 프레임 버퍼(2)로부터 넓은 범위의 서치 윈도우 데이터(SW1)를 입력받아 이 매크로블럭(MB)과 서치 윈도우상의 후보블럭들을 비교하여 절대에러(혹은 디스토션)가 최소인 움직임 벡터와 절대에러(MV0 AE0)를 구한 후 출력한다.
반화소 움직임 추정부(4)는 상기 정화소 움직임 추정부(3)에서 구해진 움직임 벡터(MV0)의 후보블럭을 중심으로 형성된 좁은 범위의 서치 윈도우 데이터(SW2)를 이전 프레임 버퍼(2)로부터 입력받아 현재 프레임 버퍼(1)로부터 입력된 매크로블럭과 비교하여 반화소 움직임 추정을 한다. 이때 반화소 움직임 추정부(4)에는 나중에 설명할 보간기가 구비되어 좁은 범위의 서치 윈도우(SW2)상에서 반화소를 구하고, 이 반화소들에 대해서 움직임 추정하여 보다 정확한 움직임 벡터(MV1)를 구한다. 그리고 매크로블럭의 데이터는 반화소 움직임 벡터로 바로 입력됨과 아울러 지연부(5)에서 한 라인 지연되어 입력된다. 이러한 반화소 움직임 추정기는 제 4 도에서 자세히 설명된다.
제 2 도의 (a)는 본 발명의 실시예에서 사용되는 16×16 매크로블럭을 도시한 도면으로서, a(1,1), ...., a(1,16), ...., (a16,1), ...., a(16,16)까지 256개의 픽셀로 이루어져 있다.
제 2 도의 (b)는 본 발명의 실시예에서 반화소 움직임 추정을 위한 서치 윈도우(SW2)를 도시한 도면으로서, 1차 움직임 추정(즉, 정화소 움직임 추정)에 의해 구해진 움직임 벡터를 갖는 후보블럭(7)을 중심으로 상,하,좌,우로 1픽셀씩 크게 한 후 보간에 의해 반화소를 형성하고, 이 반화소에 의해 형성된 서치 윈도우상에 총 9개의 후보블럭(반화소에 의한 8개의 후보블럭과 1차 움직임 추정에 의한 하나의 정화소 후보블럭)이 있게 된다.
즉, 1차 움직임 추정에 의해 후보블럭 b(1,1)~b(16,16)이 정해지면 이 후보블럭(7)을 중심으로 1픽셀 큰 서치 윈도우(SW2) b(0,0)~b(17,17)가 형성되고, 1픽셀 큰 서치 윈도우(SW2)내의 픽셀들에 대한 반화소가 보간에 의해 구해지면 이 반화소에 대해서 8개의 후보블럭이 형성된다. 따라서 반화소 움직임 추정은 1차 움직임 추정에 의해 구해진 후보블럭에 대한 절대에러값(AE0)과, 반화소에 의해 새로 구해진 8개 후보블럭의 절대에러값(AE1~AE8)을 각각 비교하여 이중 절대에러값이 최소인 움직임 벡터를 2차 움직임 벡터(최종 움직임 벡터)로서 구하는 것이다.
즉, 2차 움직임 추정을 위한 서치 윈도우(SW2)상에서 임의의 4개의 정화소(b(x,y), b(x+1,y), b(x,y+1), b(x+1,y+1))로부터 보간되어 구해진 반화소(b0 1,b1 0,b1 1)는 제 3 도에 도시된 바와 같이, 5개가 있는데 이들 각각은 다음식2 내지 6과 같이 구해진다. 제 3도에서 검은 원은 정화소를 나타내고, x표는 보간에 의해 구해진 반화소를 나타내며 PF1~PF8은 반화소에 의해 형성된 8개의 후보블럭에 대한 움직임 추정을 나타낸다.
b1 0(x,y) = {b(x,y)+b(x+1,y)}//2 ㆍㆍㆍㆍㆍㆍ 식2
b1 0(x,y+1) = {b(x,y+1)+b(x+1,y+1)}//2 ㆍㆍㆍ식3
b0 1(x,y) = {b(x,y)+b(x,y+1)}//2 ㆍㆍㆍㆍㆍㆍ 식4
b0 1(x+1,y) = {b(x+1,y)+b(x+1,y+1)}//2 ㆍㆍㆍ식5
b1 1(x,y) = {b(x,y)+b(x+1,y)+b(x,y+1)+b(x+1,y+1)//4 --식6
이상에서 설명한 바와 같이 반화소 움직임을 추정하기 위한 본 발명에 따른 반화소 움직임 추정장치는 제 4 도에 도시된 바와 같이, 보간기(100)와 반화소 움직임 추정부(200)로 크게 구분되고, 보간기(100)는 래치(110)와 3개의 가산 및 시프터(120,130,140)로 구성되고, 반화소 움직임 추정부(200)는 2개의 래치(211,212), 8개의 프로세싱 엘리먼트(PE1~PE8:221~228), 8개의 누산기(acc1~acc8:231~238), 및 비교 및 선택기(240)로 이루어져 있다.
여기서, 보간기(100)는 제 2 도의 (b)에 도시된 바와 같은 서치 윈도우(SW2)로부터 2픽셀씩 화소를 순차적으로 입력받는데, 본 발명의 실시예에서 1화소는 8비트의 데이터로 되어 있다. 입력된 2화소는 래치(110)에 의해 래치되어, 새로 입력된 2화소와 1클럭 이전에 입력된 이전의 화소가 보간기의 선로(101~104)상에 있게 된다. 즉, 제 3 도와 같은 4개의 픽셀에서, b(x,y), b(x+1,y)화소가 보간기(100)로 입력되고, 이어서 다음 클럭에 b(x,y+1),b(x+1,y+1) 화소가 입력되고 있다면, 라인(101)에 이전 클럭에 래치된 b(x,y)가 나타나고, 라인(102)에 b(x+1,y)가 나타나며, 라인(103)에는 현재 클럭에 입력되는 b(x,y+1)이 나타나고, 라인(104)에 b(x+1,y+1)이 나타나게 된다.
따라서 제 1 가산 및 시프터(120)에는 b(x,y), b(x+1,y), b(x,y+1), b(x+1,y+1)화소가 입력된 후 연산되어 보간된 반화소 b1 1(x,y)가 출력되고, 제 2 가산 및 시프터(130)에는 b(x+1,y), b(x+1,y+1)화소가 입력된 후 연산되어 보간된 반화소 b0 1(x+1,y)가 출력되고, 제 3 가산 및 시프터(140)에는 b(x,y+1), b(x+1,y+1)화소가 입력된 후 연산되어 보간된 반화소 b1 0(x,y+1)이 출력된다.
이때 제 1 내지 제 3 가산 및 시프터(120,130,140)는 제 6 도에 도시된 바와 같이, 가산기(ADDER:151), 시프터(shifter:152), 및 래치(latch:153)로 구성되는데, 보다 상세하게 설명하면, 제 1 가산 및 시프터(120)의 가산기는 8비트의 화소 4입력과 210(102)을 가산하고, 시프터는 2번 시프트(S//4)하여 가산기의 10비트 출력을 MSB부터 8비트만 출력한다.
또한, 제 2 및 제 3 가산 및 시프터(130,140)의 가산기는 8비트 화소 2입력과 1(1비트)을 가산하고, 시프터는 1번 시프트(S//2)하여 가산기의 9비트출력을 MSB부터 8비트만 출력한다. 여기서, 제 1 가산 및 시프터(120)에서 210를 더하고, 제 2 내지 제 3 가산 및 시프터(130,140)에서 1을 더하는 것을 시프트(즉, 나눗셈) 결과가 정수가 되도록 하기 위한 것이다.
한편, 반화소 움직임 추정부(200)는 제 2 도의 (a)에 도시된 바와 같은 매크로블럭의 픽셀 데이터를 순차적으로 입력받는데, 먼저 라인(105)으로는 a(1,1)~a(16,16)까지 순차적으로 입력받으나 라인(106)으로는 라인(105)보다 매크로 블록의 1라인 지연된 픽셀들을 순차적으로 입력받는다. 즉, 라인(105)이 a(2,1)을 입력 받을 때 라인(106)은 a(1,1)을 입력받기 시작한다. 또한 래치(211,212)에 의해 래치된 입력 픽셀은 1클럭 지연되어 프로세싱 엘리먼트로 입력되게 된다.
제 4 도에 있어서, 프로세싱 엘리먼트(221~228)가 4개(a,b,c,d)로 그룹핑된 것은 동일한 매크로블럭의 픽셀이 동일한 타이밍에 입력되는 것을 나타낸 것으로, a그룹의 프로세싱 엘리먼트(221,222)는 라인(105)으로 입력된 래치된 픽셀과 보간기(100)가 출력한 반화소와의 연산을 처리하고, b 그룹의 프로세싱 엘리먼트(223,224,225)는 라인(105)으로 입력된 픽셀과 보간기(100)가 출력한 반화소와의 연산을 처리하고, c 그룹의 프로세싱 엘리먼트(226,227)는 라인(106)으로 입력된 픽셀과 보간기(100)가 출력한 반화소와의 연산을 처리하고, d 그룹의 프로세싱 엘리먼트(228)는 라인(106)으로 입력되어 래치된 픽셀과 보간기(100)가 출력하는 반화소와의 연산을 처리한다.
여기서 프로세싱 엘리먼트(PE1~PE8:221~228)는 제 5 도에 도시된 바와 같이, 감산기(SUB:251), 래치(latch:252), 및 절대값 계산기(ABS:253)로 구성되는데, 감산기(251)는 매크로 블록의 레퍼런스 화소와 보간기에 의해 구해진 반화소와의 차를 연산하고, 감산결과는 래치되어 절대값 계산부(253)에서 절대값이 계산된다. 이와 같이 프로세싱 엘리먼트(221~228)는 결국 하나의 픽셀에 대한 에러값을 구하는 것이고, 이와 같이 하나의 픽셀에 대한 에러는 해당 누산기(231~238)에서 계속 누적되어 매크로블럭 전체의 화소에 대한 연산이 끝나면 누산기에는 매크로블럭과 해당 후보블럭과의 절대에러값이 저장되어 있게 된다.
그런데 각 프로세싱 엘리먼트(221~228)는 제 3 도에 도시된 바와 같이, 8개의 방향(PE1~PE8)의 반화소 움직임 추정의 에러값을 계산하는 것이므로, 결국 누산기의 결과는 제 2 도의 (b)와 같이 형성된 서치 윈도우상에 8개의 후보블럭과 매크로블럭간의 에러값이다. 따라서 비교 및 선택기(240)는 1차 움직임 추정에서 구한 에러값(AE0)과, 8개의 누산기의 에러값들(AE1~AE8)을 각각 비교하여 이중에서 에러값이 가장 작은 후보블럭의 움직임 벡터를 최종적으로 출력하는 것이다.
예컨대, 8개의 누산기의 출력과 1차 움직임 추정의 에러값을 비교했을 때, 1차 움직임 추정의 에러값이 가장 작으면, 최종적인 움직임 벡터로서 1차 움직임 추정에 의한 움직임 벡터(MV(x,y))가 선택되고, 제1누산기(231)의 출력이 에러값(AE1)이 가장 작다면 제3도의 PE1에 의한 움직임 추정의 에러값이 가장 작으므로, 1차 움직임 추정에 의해 구해진 움직임 벡터 MV(x,y)에 대해서 x축으로 -0.5, y축으로 +0.5 이동한 움직임 벡터 MV(x-0.5,y+0.5)가 최종적인 움직임 벡터로서 선택된다. 이와 같이 비교 및 선택기(240)에서 에러값들을 비교하여 출력하는 움직임 벡터를 정리하면 다음 표1과 같다.
이어서, 상기와 같이 구성되는 바람직한 실시예의 동작을 다음 표 2와 같은 타이밍 표 2를 참조하여 더욱 상세하게 설명한다.
상기 표 2에서와 같이, 클럭에 따라 보간기(100)로 제 2 도의 (b)에 도시된 바와 같은 서치 윈도우 픽셀(b(0,0)~b(17,17))을 한 쌍씩 입력된다. 즉, 클럭0에서 b(0,0),b(1,0)을, 클럭1에서 b(0,1),b(1,1), 클럭2에서 b(0,2),b(1,2),......등과 같이 보간기(100)로 한쌍의 화소 데이터가 순차적으로 입력되면, 보간기(100)는 연산을 수행하여 클럭2부터 3개의 반화소를 순차적으로 출력한다. 예컨대, 클럭2에서는 b1 1(0,0), b0 1(1,0), b1 0(0,1)을 출력하고, 클럭3에서는 b1 1(0,1),b0 1(1,1),b1 0(0,2)...... 등과 같이 출력한다.
한편, 제 2 도의 (a)와 같은 매크로블럭 데이터(a(1,1)~a(16,16))는 클럭에 따라 순차적으로 프로세싱 엘리먼트 그룹별(a,b,c,d)로 동일한 매크로 블록이 입력되어 보간기의 출력(즉,반화소)과 연산된다. 즉, 매크로블럭 첫 번째 화소(a(0,0))는 프로세싱 엘리먼트3~5(223~225:b)로 제일 먼저 입력되어 반화소들(b11(0,0),b01(1,0),b10(0,1))과 연산되는데, 제 3 프로세싱 엘리먼트(223)는 a(0,0)-b11(0,0)를 연산하고, 제 4 프로세싱 엘리먼트(224)는 a(0,0)- b01(1,0)를, 제5 프로세싱 엘리먼트(225)는 a(0,0)-b1 0(0,1)를 각각 연산하여 절대에러를 구하고, 이 절대에러치는 해당 누산기들(acc3~acc5:)에 각각 저장된다.
이어서 클럭3에서 2번째 매크로블럭 화소 (a(1,2))가 입력되면 이에 대해서 제 3 내지 제 5 프로세싱 엘리먼트(223~225)는 연산을 처리하고, 제 1 및 제 2 프로세싱 엘리먼트(221,222:a)는 첫 번째 화소(a(1,1))에 대해 연산을 수행한다. 즉, 제 3 내지 제 5 프로세싱 엘리먼트(223~225)는 a(1,2)-b1 1(0,1), a(1,2)-b0 1(1,1), a(1,2)-b1 0(0,2)를 각각 연산하여 절대에러를 해당 누산기들(223~235)로 각각 출력하고, 제1 프로세싱 엘리먼트(221)는 a(1,1)-b1 1(0,1)을 연산하여 절대에러치를 제1 누산기(231)로 출력하고, 제 2 프로세싱 엘리먼트(222)는 a(1,1)-b0 1(1,1)을 연산하여 절대 에러치를 제 2 누산기(232)로 출력한다.
이와 같이 보간기 및 제 1 내지 제 5 프로세싱 엘리먼트에 의한 연산이 상기 표 2에서와 같이 순차적으로 처리됨과 아울러, 매크로블럭의 한라인에 대한 처리가 끝나면, 제 6 및 제 7 프로세싱 엘리먼트(226,227)로 매크로 블럭의 첫 번째 화소(a(1,1))가 입력되어 보간기(100)의 출력과 연산된다. 즉, 한 라인 지연된 후, 제 6 프로세싱 엘리먼트(226)는 a(1,1)-b1 1(1,0)을 연산한 후 절대에러치를 누산기(226)로 출력하고, 제 7 프로세싱 엘리먼트(227)는 a(1,1)-b1 0(1,1)을 연산한 후 절대에러치를 누산기(237)로 출력한다. 이어서 다음 클럭에 제 6 및 제 7 프로세싱 엘리먼트(226,227)는 다음 화소( a(1,2)에 대한 연산을 a(1,2)-b1 1(1,1), a(1,2)-b1 0(1,2)와 같이 각각 수행하고, 제 8 프로세싱 엘리먼트(228)는 첫 번째 화소(a(1,1))에 대한 연산을 a(1,1)-b1 1(1,1)와 같이 처리하여 절대에러값을 제 8 누산기(238)로 출력한다.
이와 같이 각 프로세싱 엘리먼트가 연산한 절대에러치는 해당 누산기에 각각 저장되어 매크로블럭의 화소전체에 대한 연산이 끝나면, 결국 하나의 매크로블럭과 반화소에 의한 8개의 후보블럭과의 연산결과가 해당 누산기(231~238)에 저장되어 있게 된다. 따라서 매크로블럭의 모든 화소에 대한 연산이 끝나면 비교 및 선택기(240)가 8개 누산기에 저장된 절대에러치(AE1~AE8)와 제1차 움직임 추정(정수움직임 추정)에 의한 절대에러치(AE0)를 각각 비교하여 절대에러치가 최소인 움직임 벡터를 상기 표 1에 따라 구해 출력한다.
이상에서 살펴 본 바와 같이 본 발명에 따른 반화소 움직임 추정기는 보간기의 연산에서 나눗셈 연산을 시프터를 이용하여 구현하고, 반화소 움직임 추정을 위한 연산과정을 어레이 프로세서형이 아닌 순차방식으로 처리함으로써 회로가 상대적으로 간단하여 반도체칩으로 구현시 좁은 공간을 차지하게 되고, 처리속도도 향상되는 효과가 있다.

Claims (7)

  1. 소정의 제 1 서치 윈도우상에서 소정 크기의 매크로 블록에 대해 정수 움직임 추정이 수행되어 정수 움직임 벡터와 해당 절대에러값이 구해진 후, 이에 따라 소정의 제 2 서치 윈도우를 형성하여 상기 매크로블럭에 대해 반화소 움직임 추정을 하기 위한 움직임 추정장치에 있어서, 상기 제 2 서치 윈도우의 화소 데이터를 순차적으로 한쌍씩 입력받아 지연된 한쌍의 화소들과 현재 입력되는 한쌍의 화소들을 가산 및 시프트하여 반화소를 생성하는 보간기(100); 및 상기 매크로블럭의 화소 데이터 및 한 라인 지연된 화소 데이터를 순차적으로 입력받아, 상기 보간기의 출력과 입력된 화소 데이터를 연산하여 반화소 움직임에 의한 절대에러값들을 구한 후 이 절대에러값들과 상기 정수 움직임 추정에 의한 절대에러값을 각각 비교하여 절대에러값이 최소인 움직임 벡터를 선택하여 출력하는 반화소 움직임 추정수단(200)이 구비된 반화소 움직임 추정장치.
  2. 제1항에 있어서, 상기 보간기는 상기 제 2 서치 윈도우로부터 입력된 한쌍의 화소 데이터를 지연시키기 위한 지연수단(110); 상기 지연된 화소쌍과 새로 입력되는 화소쌍 및 2를 가산한 후 두 번 시프트하여 제 1 반화소를 출력하는 제 1 가산 및 시프터(120); 상기 지연된 화소쌍의 하나와 새로 입력된 한 화소 및 1을가산한 후 한 번 시프트하여 제 2 반화소를 출력하는 제 2 가산 및 시프터(130); 및 새로 입력된 한쌍의 화소 및 1을 가산한 후 한 번 시프트하여 제 3 반화소를 출력하는 제 3 가산 및 시프터(140)를 구비한 것을 특징으로 하는 반화수 움직임 추정장치.
  3. 제2항에 있어서, 상기 제 1 가산 및 시프터(120)는 4개의 서치 윈도우 화소 데이터와 2를 가산하는 가산기와; 상기 가산기의 출력을 2번 시프트하는 시프터; 및 상기 시프터의 출력을 일시 저장하는 래치로 구성된 것을 특징으로 하는 반화소 움직임 추정장치.
  4. 제2항에 있어서, 상기 제 2 가산 및 시프터(130)는 2개의 서치 윈도우 화소 데이터와 1을 가산하는 가산기와; 상기 가산기의 출력을 한번 시프트하는 시프터; 및 상기 시프터의 출력을 일시 저장하는 래치로 구성된 것을 특징으로 하는 반화소 움직임 추정장치.
  5. 제1항에 있어서, 상기 움직임 추정수단(200)은 매크로블럭의 화소 데이터를 지연하기 위한 지연수단(211,212); 상기 매크로블럭의 화소 데이터및 한 라인 지연된 화소 데이터를 순차적으로 입력받아, 상기 보간기의 출력과 입력된 화소 데이터를 연산하여 해당 화소에 대한 절대에러치를 출력하는 복수개의 프로세싱 엘리먼트(221~228): 상기 프로세싱 엘리먼트들의 화소에 대한 절대치를 누적 가산하여 해당 매크로블럭의 모든 화소에 대한 연산이 완료되면 해당 반화소 움직임에 의한 절대에러값을 출력하는 복수개의 누산기(231~238); 및 상기 누산기가 출력하는 반화소 움직임 추정에 의한 복수개의 절대에러값과 상기 정수 움직임 추정에 의한 절대 에러값의 크기를 각각 비교하여 에러값의 크기가 최소인 움직임 벡터를 선택하는 비교 및 선택기(240)로 구성된 것을 특징으로 하는 반화소 움직임 추정장치.
  6. 제5항에 있어서, 상기 복수개의 프로세싱 엘리먼트는 라인(105)으로부터 입력되어 지연된 매크로 블럭의 화소와 상기 제 1 반화소를 연산하여 해당 화소의 절대에러치를 출력하는 제 1 프로세싱 엘리먼트(221); 라인(105)으로부터 입력되어 지연된 매크로블럭의 화소와 상기 제 2 반화소를 연산하여 해당 화소의 절대에러치를 출력하는 제 2 프로세싱 엘리먼트(222); 라인(105)으로부터 입력된 매크로블럭의 화소와 상기 제 1 반화소를 연산하여 해당 화소의 절대에러치를 출력하는 제 3 프로세싱 엘리먼트(223); 라인(105)으로부터 입력된 매크로블럭의 화소와 상기 제 2 반화소를 연산하여 해당 화소의 절대에러치를 출력하는 제 4 프로세싱 엘리먼트(224); 라인(105)으로부터 입력된 매크로 블록의 화소와 상기 제 3 반화소를 연산하여 해당 화소의 절대에러치를 출력하는 제 5 프로세싱 엘리먼트(225); 라인(106)으로부터 입력된 매크로 블록의 화소와 상기 제 3 반화소를 연산하여 해당 화소의 절대에러치를 출력하는 제 6 프로세싱 엘리먼트(226);라인(106)으로부터 입력된 매크로 블록의 화소와 상기 제 1 반화소를 연산하여 해당 화소의 절대에러치를 출력하는 제 7 프로세싱 엘리먼트(227); 및 라인(106)으로부터 입력되어 지연된 매크로 블록의 화소와 상기 제 1 반화소를 연산하여 해당 화소의 절대에러치를 출력하는 제 8 프로세싱 엘리먼트(228)로 구성된 것을 특징으로 하는 반화소 움직임 추정장치.
  7. 제5항 또는 제6항에 있어서, 상기 프로세싱 엘리먼트들은 매크로블럭의 화소 데이터와 반화소 데이터를 감산하는 감산기(251); 상기 감산기의 출력을 일시 저장하는 래치(252); 및 상기 래치된 감산기의 출력을 절대값 연산하는 절대값 계산기(253)로 구성된 것을 특징으로 하는 반화소 움직임 추정장치.
KR1019960007973A 1996-03-22 1996-03-22 반화소 움직임 추정장치 KR100226684B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1019960007973A KR100226684B1 (ko) 1996-03-22 1996-03-22 반화소 움직임 추정장치
GB9705879A GB2311435B (en) 1996-03-22 1997-03-21 A half pixel motion estimator
US08/821,914 US5936672A (en) 1996-03-22 1997-03-21 Half pixel motion estimator
JP9069997A JPH1013839A (ja) 1996-03-22 1997-03-24 半画素動き推定装置
CNB971037078A CN1214646C (zh) 1996-03-22 1997-03-24 半象素运动估算器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960007973A KR100226684B1 (ko) 1996-03-22 1996-03-22 반화소 움직임 추정장치

Publications (2)

Publication Number Publication Date
KR970068661A KR970068661A (ko) 1997-10-13
KR100226684B1 true KR100226684B1 (ko) 1999-10-15

Family

ID=19453750

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960007973A KR100226684B1 (ko) 1996-03-22 1996-03-22 반화소 움직임 추정장치

Country Status (5)

Country Link
US (1) US5936672A (ko)
JP (1) JPH1013839A (ko)
KR (1) KR100226684B1 (ko)
CN (1) CN1214646C (ko)
GB (1) GB2311435B (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3631868B2 (ja) * 1996-12-20 2005-03-23 株式会社東芝 動きベクトル検出装置および方法
US6041078A (en) * 1997-03-25 2000-03-21 Level One Communications, Inc. Method for simplifying bit matched motion estimation
US6067322A (en) * 1997-06-04 2000-05-23 Microsoft Corporation Half pixel motion estimation in motion video signal encoding
WO2001078376A1 (en) * 2000-04-11 2001-10-18 Koninklijke Philips Electronics N.V. Determining the degree of resemblance between a data sample and interpolations of other data samples
KR100549919B1 (ko) * 2000-12-15 2006-02-06 주식회사 케이티 소요클럭사이클수 감축을 위한 초대규모 집적회로 장치
US20020172288A1 (en) * 2001-03-08 2002-11-21 Nyeongku Kwon Device and method for performing half-pixel accuracy fast search in video coding
KR100439183B1 (ko) * 2001-08-29 2004-07-05 한국전자통신연구원 확률 샘플링 기반의 움직임 추정 방법
US6950469B2 (en) * 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
KR100926440B1 (ko) * 2002-06-26 2009-11-13 이문기 영상부호화를 위한 블록 매칭 움직임 추정 장치
US7302648B1 (en) 2002-07-10 2007-11-27 Apple Inc. Method and apparatus for resizing buffered windows
JP4724351B2 (ja) * 2002-07-15 2011-07-13 三菱電機株式会社 画像符号化装置、画像符号化方法、画像復号装置、画像復号方法、および通信装置
US7408988B2 (en) * 2002-12-20 2008-08-05 Lsi Corporation Motion estimation engine with parallel interpolation and search hardware
NO320114B1 (no) * 2003-12-05 2005-10-24 Tandberg Telecom As Forbedret utregning av interpolerte pixelverdier
JP2005354276A (ja) * 2004-06-09 2005-12-22 Seiko Epson Corp 画像差分演算方法及びその装置、動き検出装置及び画像データ圧縮装置
US20050286777A1 (en) * 2004-06-27 2005-12-29 Roger Kumar Encoding and decoding images
US20060088104A1 (en) * 2004-10-27 2006-04-27 Stephen Molloy Non-integer pixel sharing for video encoding
CN100471275C (zh) * 2006-09-08 2009-03-18 清华大学 用于h.264/avc编码器的运动估计方法
US8509567B2 (en) * 2007-07-09 2013-08-13 Analog Devices, Inc. Half pixel interpolator for video motion estimation accelerator
EP2764466A2 (en) * 2009-09-23 2014-08-13 Ramot At Tel-aviv University Ltd System, method and computer program product for motion detection
KR101634141B1 (ko) * 2009-11-18 2016-06-28 삼성전자주식회사 방향에 따른 참조블록을 이용한 영상 보간 방법 및 장치
CN109587485A (zh) * 2018-10-26 2019-04-05 西安科锐盛创新科技有限公司 视频压缩编码方法
CN116074533B (zh) * 2023-04-06 2023-08-22 湖南国科微电子股份有限公司 运动矢量预测方法、系统、电子设备及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4937666A (en) * 1989-12-04 1990-06-26 Bell Communications Research, Inc. Circuit implementation of block matching algorithm with fractional precision
JP2611591B2 (ja) * 1991-10-31 1997-05-21 日本ビクター株式会社 動き補償装置
KR950014862B1 (ko) * 1992-02-08 1995-12-16 삼성전자주식회사 움직임추정방법 및 그 장치
JP2636622B2 (ja) * 1992-03-13 1997-07-30 松下電器産業株式会社 ビデオ信号の符号化方法及び復号化方法ならびにビデオ信号の符号化装置及び復号化装置
US5461423A (en) * 1992-05-29 1995-10-24 Sony Corporation Apparatus for generating a motion vector with half-pixel precision for use in compressing a digital motion picture signal
JPH05336514A (ja) * 1992-05-29 1993-12-17 Sony Corp 画像符号化装置
US5398079A (en) * 1993-01-27 1995-03-14 General Instrument Corporation Half-pixel interpolation for a motion compensated digital video system
KR0166724B1 (ko) * 1993-05-08 1999-03-20 김광호 반화소정확도를 갖는 동벡터추정방법 및 그 장치
JP2636674B2 (ja) * 1993-05-25 1997-07-30 日本電気株式会社 動画像の動きベクトル検出装置
KR960010198B1 (ko) * 1993-07-21 1996-07-26 배순훈 동영상 부호화기의 움직임 추정방법 및 장치
KR0178231B1 (ko) * 1995-08-10 1999-05-01 배순훈 계층적인 움직임 추정 기법을 이용하는 움직임 벡터 검출 방법 및 장치
US5510856A (en) * 1994-12-30 1996-04-23 Daewoo Electronics Co., Ltd. Apparatus for determining motion vectors

Also Published As

Publication number Publication date
KR970068661A (ko) 1997-10-13
JPH1013839A (ja) 1998-01-16
GB2311435B (en) 2000-09-13
CN1214646C (zh) 2005-08-10
GB9705879D0 (en) 1997-05-07
CN1163542A (zh) 1997-10-29
US5936672A (en) 1999-08-10
GB2311435A (en) 1997-09-24

Similar Documents

Publication Publication Date Title
KR100226684B1 (ko) 반화소 움직임 추정장치
US8160146B2 (en) Video coding method and apparatus for calculating motion vectors of the vertices of a patch of an image and transmitting information of horizontal and vertical components of the motion vectors
US4937666A (en) Circuit implementation of block matching algorithm with fractional precision
US6687303B1 (en) Motion vector detecting device
KR101578052B1 (ko) 움직임 추정 장치 및 이를 구비하는 동영상 부호화 장치
KR100281148B1 (ko) 대역 압축 장치
US5623313A (en) Fractional pixel motion estimation of video signals
US7782957B2 (en) Motion estimation circuit and operating method thereof
US20060171464A1 (en) Method and apparatus for motion estimation
US5357287A (en) Method of and apparatus for motion estimation of video data
US20050249288A1 (en) Adaptive-weighted motion estimation method and frame rate converting apparatus employing the method
EP1960967A1 (en) Motion estimation using prediction guided decimated search
US5754237A (en) Method for determining motion vectors using a hierarchical motion estimation
WO2007089068A1 (en) Method and apparatus for block-based motion estimation
KR20070033345A (ko) 전역 움직임 벡터를 검색하는 방법
KR100364789B1 (ko) 움직임 추정 방법 및 장치
EP1420595B1 (en) Motion vector selection in a video motion estimator based on a preferred reference point
JP3580612B2 (ja) 動画像符号化装置の動き検出装置
JPH04227184A (ja) 動きベクトル評価装置
KR960015392B1 (ko) 반화소단위 패닝벡터 검출장치
KR100213273B1 (ko) 영상부호기의 반화소 움직임 추정장치
KR0129807B1 (ko) 계층 부호화 시스템에서의 움직임 벡터 추정장치 및 방법
JPH08307834A (ja) 画像情報変換装置および方法
WO2006082378A1 (en) Motion estimator
JPH10322701A (ja) 動きベクトル探索方法および探索装置

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

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20140703

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20150630

Year of fee payment: 17

EXPY Expiration of term