KR20080085423A - Bma 연산기 및 이를 이용한 인코더 - Google Patents

Bma 연산기 및 이를 이용한 인코더 Download PDF

Info

Publication number
KR20080085423A
KR20080085423A KR1020070026913A KR20070026913A KR20080085423A KR 20080085423 A KR20080085423 A KR 20080085423A KR 1020070026913 A KR1020070026913 A KR 1020070026913A KR 20070026913 A KR20070026913 A KR 20070026913A KR 20080085423 A KR20080085423 A KR 20080085423A
Authority
KR
South Korea
Prior art keywords
bma
storage unit
pixel data
sad
search range
Prior art date
Application number
KR1020070026913A
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 KR1020070026913A priority Critical patent/KR20080085423A/ko
Priority to US11/946,738 priority patent/US20080232474A1/en
Priority to EP07121914A priority patent/EP1981281A2/en
Publication of KR20080085423A publication Critical patent/KR20080085423A/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/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
    • 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

Landscapes

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

Abstract

본 발명에 따른 BMA 연산기 및 인코더는 병렬 방식으로 BMA(block matching algorithm) 연산을 수행하여, SAD(sum of absolute difference)를 도출하므로, ±32 검색 범위 이상에서도 실시간으로 인코딩을 수행할 수 있으며, 넓은 검색 범위를 수용할 수 있게 됨으로 인하여, 동영상을 높은 압축률로 압축할 수 있게 된다.
BMA(block matching algorithm), SAD(sum of absolute difference), 움직임 벡터(motion vector), 게이트, 매크로 블럭, 픽셀 데이터, 압축, 동영상, 움직임 추정(motion estimation)

Description

BMA 연산기 및 이를 이용한 인코더{BMA and encoder}
도 1 내지 7은 한 프레임의 일정 부분의 픽셀 데이터를 매크로 블럭 단위로 배열하여 놓은 개략도.
도 8은 ±16 검색 범위를 나타낸 개략도.
도 9는 현재 매크로 블럭과 참조 블럭의 매칭을 나타낸 상태도.
도 10은 본 발명의 바람직한 일실시예에 따른 BMA 연산기를 나타낸 블럭도.
도 11은 도 10의 구체적인 일예에 따른 BMA 연산기를 나타낸 개략적인 회로도.
도 12는 도 11의 BMA 연산기 동작을 나타낸 개략도.
도 13은 도 12의 동작에 의한 병렬 처리 방식을 나타낸 개략도.
도 14 내지 17은 도 11의 BMA 연산기를 사용하여 검색 범위 ±32에 대한 BMA를 수행하는 모습을 나타낸 개략도.
도 18 및 19는 픽셀 데이터가 저장되어 있는 메모리 참조시 참조가 요구되는 메모리의 번호를 나타낸 개략도.
도 20 내지 23은 도 14 내지 도 17에 도시한 BMA 수행을 개선한 바람직한 일실시예에 따른 개략도.
도 24는 도 20 내지 23의 수행 방식에 따른 BMA 참조 상태를 나타낸 개략도.
도 25는 도 20 내지 24의 구현을 위한 회로의 개략적인 블럭도.
도 26은 도 10 및 11에 사용되는 가산기와 SAD 저장부의 크기를 비트(bit)로 나타낸 개략도.
도 27은 도 10 및 11의 구성으로 이루어진 BMA 연산기로부터 최소 SAD를 도출하는 회로를 나타낸 블럭도.
도 28은 도 27의 최소 SAD를 다른 BMA 연산기의 최소 SAD와 비교하여 실 SAD를 도출하는 회로를 나타낸 블럭도.
10...제1 저장부 20...제2 저장부
30...감산부 40...SAD 저장부
본 발명은 BMA 연산기 및 인코더에 관한 것으로서, 보다 상세하게 설명하면 동영상을 압축하여 인코딩하는 BMA 연산기 및 이를 이용한 인코더에 관한 것이다.
디지털 전자회로에서 어떤 부호계열의 신호를 다른 부호계열의 신호로 바꾸는 변환기인 인코더(encoder)는 다양한 분야에 널리 사용되고 있다.
이러한 인코더는 디지털 영상을 다루는 분야(특히, 동영상)에도 적용이 되고 있는데, 이때 사용되는 인코더의 핵심 요소는 압축률이다.
이와 같이 디지털 영상, 특히 동영상의 경우 압출률이 중요한 이유는 다음과 같다.
비디오나 사진같은 영상들은 대부분의 경우 YUV 컬러 공간상에서 인코딩되는데 여기에서 명도(luminance, Y)는 완전한 해상도(즉, 320×240 화소로써 이것은 대략 일반 VHS 비디오의 화질과 비슷하다)를 가질 수 있으며 채도(chrominance, U, V)는 수평적으로나 수직적으로 절반의 해상도(160×120 화소)를 가질 수 있다. 이것은 만일 각각의 Y, U, V 샘플에 대해서 한 바이트를 할당한다고 할 경우, 화소당 평균적으로 1.5바이트(byte)를 사용하게 되는 것이다. 즉, 화소당 하나의 Y바이트를 사용하며 2×2의 화소 배열당 하나의 U바이트와 하나의 V바이트를 사용하게 된다.
따라서, 동영상의 각 프레임(frame)은 그 크기가 115,200 바이트에 이르게 되며 초당 30프레임(사람의 눈이 끊김을 인지 못하는 정도)을 처리하는 경우에는 1초 동안의 동영상을 저장하기 위해서 3.5MB의 저장 장치가 필요하게 된다. 이는 그 양이 방대하므로 이를 구현하는 하드웨어에 한계가 있을 수밖에 없다.
따라서, 동영상을 압축하게 되었으며, 현재 동영상을 인코딩하는 모든 인코더는 압축 기능을 포함하고 있다.
동영상 압축에서의 핵심은 움직임 추정(motion estimation)에 의한 중복성의 제거에 있다.
이러한 중복성의 제거는 동영상의 압축 효율을 극대화시킬 수 있는 장점이 있는 반면, 복잡한 하드웨어를 요구하고 있으며, 이는 영상 압축에 걸림돌이 되고 있는 실정이다.
이하 그 대책을 살펴보기로 한다.
본 발명은 상기와 같은 문제점을 개선하기 위하여 창출된 것으로서, 기존보다 보다 간소화된 하드웨어로 구성된 인코더를 제공하는 것을 목적으로 한다.
보다 구체적으로, 개선된 BMA(block matching algorithm)를 제공하는 것을 목적으로 한다.
또한, 움직임 추정의 관건 중 하나인 검색 범위를 기존보다 확장하는 것을 다른 목적으로 한다.
상기한 목적을 달성하기 위하여 본 발명은 n×n 픽셀들로 구성된 매크로 블럭 단위로 움직임 벡터(motion vector)를 추정하는 BMA(block matching algorithm, 블럭 매칭 알고리즘) 연산기에 있어서, 현재 매크로 블럭(현재 블럭)의 각 픽셀 데이터 c0 ,0 ~ cn -1,n-1가 모두 저장되는 제1 저장부와; 소정의 펄스 인가시마다 검색 범위(search range)내 각 매크로 블럭(참조 블럭)을 이루는 소정의 픽셀 데이터가 저장되는 제2 저장부와; 상기 제1 저장부에 저장되는 픽셀 데이터의 개수만큼 구비되며, 상기 펄스의 인가시마다 상기 제1 저장부에 저장된 각 픽셀 데이터와 상기 제2 저장부에 저장된 픽셀 데이터와의 감산을 수행하는 감산부; 및 상기 제1 저장부에 저장되는 픽셀 데이터의 개수만큼 구비되는 SAD(sum of absolute difference) 저장부를 구비하고,
상기 SAD 저장부는 제1 저장부의 소정의 픽셀 데이터에 대응되는 하나의 감산부와 하나의 SAD 저장부로 이루어지는 구성을 단으로 칭할 경우, 현재단에서 상기 감산부에 의하여 감산된 결과와 이전단의 SAD 저장부에 저장된 값을 가산하여 저장하는 것을 특징으로 한다.
여기서, 상기 n은 16인 것이 바람직하며, 아울러 상기 검색 범위는 ±16 또는 ±32 중 어느 하나인 것이 바람직하다.
또한, 상기 인코더는 n×n 펄스 인가 이후부터, 상기 SAD 저장부 중 n×n번째 SAD 저장부에 저장된 값을 SAD값으로 사용한다.
한편, 본 발명은 n×n 픽셀들로 구성된 매크로 블럭 단위로 움직임 벡터를 검색범위 ±X에서 추정하는 인코더에 있어서, 상기 검색범위의 기준이 되는 현재 매크로 블럭의 픽셀 p0 ,0을 원점으로 하는 좌표평면을 가정할 경우, 제1 내지 제4 사분면 각각에 BMA 연산기가 할당되는 것을 다른 특징으로 한다.
이때, 상기 제1 내지 제4 사분면에 할당되는 상기 BMA 연산기는 한개씩인 것이 바람직하다.
또한, 본 발명은 n×n 픽셀들로 구성된 매크로 블럭 단위로 움직임 벡터를 검색범위 ±X에서 추정하는 인코더에 있어서, 상기 검색범위의 기준이 되는 현재 매크로 블럭의 픽셀 p0 ,0을 원점으로 하는 좌표평면을 가정할 경우, 제1 내지 제4 사분면 각각에 제 1 항의 BMA 연산기가 할당되는 것을 또다른 특징으로 한다.
이 경우 상기 제1 내지 제4 사분면에 할당되는 상기 BMA 연산기는 한개씩인 것이 바람직하며, 이 때의 상기 n은 16인 것이, 상기 X는 32인 것이 바람직하다.
또한, 본 발명은 n×n 픽셀들로 구성된 매크로 블럭 단위로 검색범위 ±X에서 움직임 벡터를 추정하는 인코더에 있어서, 상기 검색 범위를 소정 개수의 열로 구분하여, 상기 각 열에 BMA 연산기가 할당되는 것을 또다른 특징으로 한다.
이때, 상기 각 열에 할당되는 상기 BMA 연산기는 한개씩 배치되는 것이 바람직하다.
또한, 본 발명은 n×n 픽셀들로 구성된 매크로 블럭 단위로 검색범위 ±X에서 움직임 벡터를 추정하는 인코더에 있어서, 상기 검색 범위를 소정 개수의 열로 구분하여, 상기 각 열에 제 1 항의 BMA 연산기가 할당되는 것을 또다른 특징으로 한다.
이때, 상기 각 열에 상기 BMA 연산기는 한개씩 배치되는 것이 바람직하며, 상기 n은 16인 것이, 상기 X는 32인 것이 바람직하다.
한편, 상기 열은 4개로 구성되는 것이 바람직하다.
또한, 본 발명은 n×n 픽셀들로 구성된 매크로 블럭 단위로 검색범위 ±X에서 움직임 벡터를 추정하는 인코더에 있어서, 상기 검색 범위를 소정 개수의 열로 구분하여, 상기 각 열에 제 1 항의 BMA 연산기를 하나씩 배치하고, 상기 BMA 연산기의 제2 저장부는 상기 각 열당 각각 배치되고 각 열에 배치된 상기 제2 저장부는 같은 열에 배치된 상기 BMA 연산기로 픽셀 데이터를 직접 전송하고, 앞 열의 BMA 연산기와의 사이에 n사이클(cycle) 지연(delay)을 갖는 딜레이부를 두고 상기 딜레이부를 거쳐 앞 열의 BMA 연산기에 픽셀 데이터를 전송하는 것을 또다른 특징으로 한다.
이때, 상기 n은 16인 것이, 상기 X는 32인 것이 바람직하며, 상기 열은 4개로 구성되는 것이 바람직하다.
한편, 위에서 살펴본 경우들에서 상기 감산기는 1의 보수 변환 방식으로 감산을 수행하는 것이 바람직하다.
또한, 상기 가산 또는 BMA 연산기 내 가산에 사용되는 가산기의 비트수는 다음의 식
가산기 필요 비트수 = {log2(Mn -1 + 2D)}올림
Mn -1 : 이전 가산기에서 출력 가능한 최대 크기(10진수)
2D : 픽셀 데이터 크기(bit)
을 만족하는 것이 바람직하며, 이때, 상기 D는 8, 16, 24, 32 중 하나인 것이 바람직하다.
마찬가지로, 상기 SAD 저장부 또는 상기 BMA 연산기 내 SAD 저장부의 비트수는 다음의 식
SAD 저장부 필요 비트수 = {log2(Mn -1 + 2D)}올림
Mn -1 : 이전 가산기에서 출력 가능한 최대 크기(10진수)
2D : 픽셀 데이터 크기(bit)
을 만족하는 것이 바람직하다.
이하 첨부된 도면을 참조하면서 설명하도록 한다.
도 1 내지 7은 한 프레임의 일정 부분의 픽셀 데이터를 매크로 블럭 단위로 배열하여 놓은 것으로, 매크로 블럭은 H.26X 계열 및 MPEG에서 정의하고 있다.
도 1에서는 매크로 블럭으로 16×16을 사용하고 있는 것을 나타내고 있으나, 이는 추후 규정 등의 변화에 따라 변경이 가능할 것이다.
움직임 추정(motion estimation)의 요점은 현재 매크로 블럭(현재 블럭)과 유사한 블럭를 찾아 현재 블럭에 대한 데이터 대신 상기 유사한 블럭과 현재 블럭과의 좌표 차이 데이터를 사용함으로써 압축을 꾀하는 것이다.
여기서 고려할 점은 현재 블럭과 유사한 블럭을 어느 범위에서 찾는가 하는 것으로 이를 검색 범위(search range)라 하며, 그 범위가 클수록 압축율 및 화질이 향상되나 처리 알고리즘이 대단히 복잡해지게 된다.
상기 H.26X 계열 및 MPEG에서는 ±16, ±32 검색 범위가 정의되어 있으나, 처리 알고리즘과 화질, 압축율을 타협하여 ±16 검색 범위를 주로 사용하고 있다.
물론, 그 화질의 차이가 크지 않다고 하더라도 ±32 검색 범위로 참조 블럭을 찾는 것이 ±16 검색 범위를 사용하는 것보다 화질이 우수함은 당연하다. 또한, 각종 운동 경기와 같이 움직임이 심한 동영상에서는 ±16 검색 범위에서는 유사한 블럭을 찾지 못하는 경우도 발생된다. 유사한 블럭을 찾지 못하는 경우에는 결국 현재 블럭의 픽셀 데이터들을 그대로 인코딩하여야 하므로, 압축률이 저하되므로 결국 처리 알고리즘에 대한 대책이 마련된다면 ±32이상의 검색 범위에서 유사 블럭을 찾는 것이 바람직할 것이다.
도 1 내지 7에서는 검색 범위에서 유사 블럭을 찾는 방법을 소개할 것이다.
설명의 편의를 위하여 ±16 검색 범위에서 2사분면에 해당하는 매크로 블럭(도 1에서 사선으로 나타낸 부분)을 대상으로 한다.
상기 매크로 블럭에 대해서 현재 블럭과 비교될 참조 블럭을 설정하여야 하는데, 이는 도 2 내지 7에서 나타낸 바와 같이 이루어진다. 즉, 검색 범위 내의 소정의 픽셀을 좌상단 꼭지점으로 하는 16×16 매크로 블럭을 설정하면, 이것이 참조 블럭이 된다. 상기 기준이 되는 좌상단의 픽셀은 검색 범위내의 모든 픽셀이 그 대상이 되므로, 상기 참조 블럭의 개수는 픽셀의 개수와 동일하다. 따라서, 16×16 검색 범위이지만 실질적으로는 도 8과 같이 현재 블럭에 인접한 모든 매크로 블럭 에 대해서 검색이 이루어지게 된다.
다시 설명하며, 2사분면의 매크로 블럭만을 본 경우 16×16=256개의 참조 블럭이 생성되며, 각각의 참조 블럭을 현재 블럭과 비교하여 유사 블럭을 찾게 된다. 물론, 1, 3, 4사분면에 대해서도 동일한 과정을 거치게 되고, 최종적으로 1, 2, 3, 4사분면의 참조 블럭 중 가장 유사한 참조 블럭이 유사 블럭이 된다.
여기서, 유사한 정도는 BMA(block matching algorithm)에 의하여 SAD(sum of absolute difference)를 얻음으로써 수행이 되며, 이를 도 9를 참조하여 살펴보자.
현재 블럭과 참조 블럭을 매칭시켜, 즉 상기 블럭을 이루는 각 픽셀끼리 서로 매칭시켜 그 차를 구한 다음 절대값(16×16=256개가 될 것임)을 취한 후, 상기 절대값들을 전부 더하면 SAD가 된다. 검색 범위 내 모든 참조 블럭에 대해서 위와 같은 방식으로 SAD를 구한 다음, 가장 적은 SAD를 갖는 참조 블럭을 유사 블럭으로서 채택하게 된다. 물론, SAD값의 상한선을 두어, 가장 적은 SAD를 갖는 블럭이 상기 상한선을 만족하지 못하면 검색 범위 내에 유사 블럭이 없는 것으로 판단하여 좌표 데이터 대신 현재 블럭의 픽셀 데이터들을 인코딩하여야 한다.
도 9의 도시한 BMA의 개념은 쉽게 설명되어 있으나, 이를 실제로 구현할 경우에는 여러 문제를 고려하여야 한다.
1초에 30프레임을 표시하여야 하므로 상기 BMA의 속도가 문제시되며, 속도를 위해 많은 게이트로 구성된 BMA 연산기를 사용하는 경우 전력 소모 증가와 발열 문제, 생산성 저하 등의 문제가 고려되어야 한다.
이에 대해서, 본 발명의 발명자는 위의 문제점을 해소할 수 있는 BMA 연산부 를 구상하였는바 이하 이에 대하여 설명하도록 한다.
도 10은 본 발명의 바람직한 일실시예에 따른 BMA 연산기를 나타낸 블럭도이다.
도 10을 참조하면, 본 실시예에 따른 BMA 연산기는 n×n 픽셀들로 구성된 매크로 블럭 단위로 움직임 벡터를 추정하는 BMA(block matching algorithm, 블럭 매칭 알고리즘) 연산기로서, 현재 매크로 블럭(현재 블럭)의 각 픽셀 데이터 c0 ,0 ~ cn-1,n-1가 모두 저장되는 제1 저장부(10)와; 소정의 펄스 인가시마다 검색 범위(search range)내 각 매크로 블럭(참조 블럭)을 이루는 소정의 픽셀 데이터가 저장되는 제2 저장부(20)와; 상기 제1 저장부(10)에 저장되는 픽셀 데이터의 개수만큼 구비되며, 상기 펄스의 인가시마다 상기 제1 저장부(10)에 저장된 각 픽셀 데이터와 상기 제2 저장부(20)에 저장된 픽셀 데이터와의 감산을 수행하는 감산부(30); 및 상기 제1 저장부(10)에 저장되는 픽셀 데이터의 개수만큼 구비되는 SAD(sum of absolute difference) 저장부(40)를 구비하며, 상기 SAD 저장부(40)는 제1 저장부(10)의 소정의 픽셀 데이터에 대응되는 하나의 감산부와 하나의 SAD 저장부로 이루어지는 구성을 단으로 칭할 경우, 현재단에서 상기 감산부에 의하여 감산된 결과와 이전단의 SAD 저장부에 저장된 값을 가산하여 저장한다.
상기 제1 저장부(10)에는 현재 블럭의 픽셀 데이터가 저장되는데, 전체값이 저장되며, 그값은 현재 블럭의 BMA가 완료될때까지 지속된다. 즉, 현재 블럭의 BMA 연산 동안에는 고정값으로 제1 저장부에 저장된다.
상기 제2 저장부(20)에는 BMA 연산시 상기 현재 블럭의 픽셀 데이터와 비교 대상이 되는 참조 블럭의 각 픽셀 데이터가 저장되는데, 기본적으로 하나의 픽셀 데이터(BMA 연산 과정에서 늘어날 수 있음)가 상기 제1 저장부에 저장된 현재 블럭의 모든 픽셀 데이터와 비교가 된다.
상기 감산부(30)는 상기 제1 저장부(10)에 저장되는 픽셀 데이터의 개수만큼 배치되며, 감산을 통하여 상기 제1 및 제2 저장부에 저장된 픽셀 데이터의 실질적인 비교를 수행하게 된다. 감산부의 bit수는 상기 제1 및 제2 저장부에 저장되는 픽셀 데이터의 크기에 의하여 결정되며, 전체 인코더에 사용되는 게이트의 수를 감소시키기 위하여 최저 필요조건의 bit수로 구성하는 것이 바람직하다.
상기 SAD 저장부(40)는 상기 감산부(30)에서 감산된 결과가 저장되며, 상기 감산부(30)와 마찬가지로 상기 제1 저장부(10)에 저장되는 픽셀 데이터의 개수만큼 배치된다.
본 실시예에서 상기 SAD 저장부(40)는 아울러 이전 SAD 저장부의 출력단에 연결된 소정 비트수의 가산기를 구비하여 이전 SAD 저장부에 저장된 값과 현재 감산 결과를 가산하여 저장하게 된다.
이러한 구성을 통하여 소위 병렬 처리 방식이 달성되며, 이에 대해 도 11을 참조하여 설명하기로 한다.
도 11은 도 10의 예에서 n이 16인 경우를 상정하여 구성한 경우를 나타내고 있다.
Curr Pel로 나타낸 것은 현재 블럭의 픽셀 데이터이며, Ref Pel로 나타낸 것 이 참조 블럭의 픽셀 데이터로 Curr Pel은 상기 제1 저장부에, Ref Pel은 상기 제2 저장부에 저장된다.
Curr Pel[0,0] ~ Curr Pel[15,15]는 현재 블럭에 대한 검색 범위내 참조 블럭과의 BMA 연산이 완료될 때까지 고정되며, 소정의 클럭 인가시마다 Ref Pel만 갱신된다.
상기 제2 저장부에 입력되는 참조 블럭의 픽셀 데이터 Ref Pel은 기본적으로 하나의 픽셀 데이터(참조 블럭에서 어느 한 좌표의 픽셀 데이터)가 되며, 이 경우 상기 전체 Curr Pel에 하나의 참조 블럭의 픽셀 데이터가 대응된다.
그러나, 상기 제2 저장부에 저장되는 참조 블럭의 픽셀 데이터의 좌표는 다음의 식
참조 블럭의 픽셀 데이터 x 좌표 = Curr Pel x 좌표 + 이전 Ref Pel x 좌표
참조 블럭의 픽셀 데이터 y 좌표 = Curr Pel y 좌표 + 이전 Ref Pel y 좌표
에 근거하여 결정되므로, 상기 Ref Pel은 동일 시점에 각각 다른 값이 되는 것이 일반적이며, 이는 이후 도 13에서 설명하는 병렬 처리의 경우 적용된다. 도 11에서 제2 저장부의 입력단에 배치되는 멀티플렉서(MUX) 및 상기 멀티플렉서를 구동하는 소정의 제어부(미도시)로 Ref Pel로 될 좌표값을 결정한다.
도 11에서 도 10과 중복되는 부분은 설명을 생략하며, 도 11의 구성에 따른 BMA 연산의 과정을 설명의 편의를 위하여 상기 식 1의 경우를 논외로 하고, 즉, 한 시점(사이클, cycle)에서 동일한 참조 블럭의 픽셀 데이터가 제2 저장부에 저장되는 경우(모든 Ref Pel은 동일)를 상정하여 설명한다.
1 사이클에 모든 Ref Pel은 Ref Pel[0,0]의 픽셀 데이터가 저장되며, 감산기를 통하여 Curr Pel[0,0] ~ Curr Pel[15,15]와 각각 감산이 이루어지고, 그 결과는 SAD에 저장이 된다. 이 때 Curr Pel[0,0]단의 SAD 외의 SAD에 저장되는 값은 무시한다(null).
2 사이클에 모든 Ref Pel은 Ref Pel[0,1]의 픽셀 데이터가 저장되며, 감산기를 통하여 Curr Pel[0,0] ~ Curr Pel[15,15]와 각각 감산이 이루어지고, 그 결과는 각각 앞단의 Curr Pel1 사이클 SAD와 가산되어 Curr Pel 현재단의 SAD에 저장된다. 이 때 Curr Pel[0,1]단의 SAD 뒤에 배치되는 SAD는 무시한다(null).
이와 같은 과정을 256 사이클 거치게 되면, 참조 블럭(16×16)을 형성하는 256개의 픽셀 데이터와의 BMA가 완료되며, Curr Pel[15,15]단의 SAD에는 현 참조 블럭의 SAD가 저장된다. 여기까지는 하나의 참조 블럭에 대한 BMA를 통하여 SAD를 구하는 모습을 보였으나, 위의 흐름을 따라가면 256개의 참조 블럭에 대한 SAD를 256 사이클부터 이후 512 사이클까지 모두 얻을 수 있는 점이 특징이 된다. 즉 512 사이클만으로 256개의 참조 블럭에 대한 SAD를 모두 구할 수 있는 것이다. 이는 16×16 픽셀로 형성된 매크로 블럭을 기준으로 한 것으로 일반적인 경우로 확장하면 n×n 펄스 인가 이후부터, 상기 SAD 저장부 중 n×n번째 SAD 저장부에 저장된 값을 실질적인 SAD로 사용하는 것을 의미한다.
2 사이클의 경우를 다시 보자.
위에서 Curr Pel[0,1]단의 SAD 뒤에 배치되는 SAD는 무시하였지만, Curr Pel[0,0]단은 그대로 이용한다. 즉, Curr Pel[0,0]과 Ref Pel[0,1]의 감산이 이루어져 그 결과는 Curr Pel[0,0]단의 SAD에 저장되며, 이 모습은 도 13에 나타낸 바와 같이 위의 참조 블럭①과는 다른 참조 블럭②에 대한 BMA의 시작을 나타내는 것이다. 이와 같은 처리에 따라 병렬적인 처리가 가능한 것이며, 이때 도 13의 빗금친 부분에 위치한 픽셀 데이터를 받기 위하여 상기 Ref Pel은 각각 다른 값이 되어야 하며, 이는 앞에서 설명한 바 있다.
이와 같은 방식에 의하여 순차적으로 다음 참조 블럭, 또 그 다음 참조 블럭 하는 식으로 모든 참조 블럭에 대한 SAD가 도출되어 모든 참조 블럭에 대한 BMA가 완료되며, 이는 256 사이클 후부터 최종 SAD 저장부에 저장되는 SAD값을 실질적인 SAD로 사용함으로써 이루어진다. 상기 최종단 SAD 저장부에는 256 사이클 이후부터 한사이클 마다 해당 참조 블럭에 대한 SAD가 출력되며, 이는 512 사이클까지 지속된다.
이상의 설명은 ±16 검색 범위에서 현재 블럭 기준 2사분면에 위치하는 블럭을 기준으로 하여 설명하였다. 따라서 1, 3, 4사분면에 대하여도 같은 과정이 이루어지면 1, 2, 3, 4사분면에서 가장 적은 값을 갖는 SAD에 해당하는 참조 블럭이 유사 블럭이 된다.
현재 하드웨어의 클럭 속도를 감안하면 800×600 픽셀의 한 프레임을 초당 30프레임 구현하기 위하여는 하나의 매크로 블럭을 최소 2536 사이클 내에 코딩(coding)하여야 하는데, 위 실시예에서는 512사이클만에 코딩을 완료(256개의 참조 블럭에 대한 BMA완료)하게 되므로, 그 속도가 빠름을 알 수 있다.
따라서, 검색 범위 ±32까지 인코더의 전체 게이트(gate) 수의 큰 증가 없이 BMA를 수행할 수 있다.
도 14 내지 17은 앞에서 살펴본 BMA 연산기를 사용하여 검색 범위 ±32에 대한 BMA를 수행하는 모습을 나타낸 것으로, 현재 블럭의 p0 ,0(Curr Pel[0,0]과 동일)를 기준으로 14는 2사분면 4개의 매크로 블럭을, 도 15는 1사분면 4개의 매크로 블럭을, 도 16은 3사분면 4개의 매크로 블럭을, 도 17은 4사분면 4개의 매크로 블럭을 나타내고 있다.
해당 매크로 블럭은 16×16 픽셀로 구성된 것으로 상정하였으나, 이는 추후 코덱 규정 등의 변화에 따라 다양하게 변경이 될 수 있음을 환기한다.
또한, 도 14 내지 17에서는 검색 범위를 ±32로 하였으나 이 또한 사용되는 BMA 연산기의 수를 적절하게 증가시킴으로써 그 범위를 더욱 확대할 수 있다.
각 사분면에는 각각 소정의 BMA 연산기가 할당되는 것이 바람직하며, 위 실시예에서 살펴본 BMA 연산기를 사용할 경우 사분면 각각에 BMA 연산기 한개씩을 배치하면 충분하다.
하나의 매크로 블럭에 대한 BMA에 512사이클이 걸리므로 4개의 매크로 블럭에 대해 총 512×4 = 2048사이클이 필요하다. 이는 앞에서 언급한 2536사이클을 만 족한다.
이와 같이 병렬 처리 방식의 BMA 연산기를 사용함으로써, 최소의 게이트 수로 ±32 검색 범위에 대한 BMA 처리가 가능하게 된다.
도 14 내지 17에서 외곽으로 3개의 픽셀 데이터가 더 배치되어 있는 것을 알 수 있는데, 이는 패딩(padding)에 관련된 것이다.
한편, 도 14 내지 17에 나타낸 실시예보다 게이트 수를 더욱 감소시킬 수 있는데, 이는 처리 방식을 변경함으로써 사용되는 메모리의 게이트 수를 감소시킴으로써 달성될 수 있다.
위에서 살펴본 1, 2, 3, 4사분면에 위 실시예에 따른 BMA 연산기를 하나씩 배치한 경우를 보면, 도 18 및 19에서와 같이 각 픽셀 데이터가 저장되어 있는 메모리(제1 및 제2 저장부와 다른 요소로 제2 저장부가 상기 메모리로부터 소정 데이터를 불러옴)의 참조시 도 18과 같이 서로 다른 BMA 연산기에서 동일 메모리의 참조를 요구하거나, 도 19와 같이 같은 BMA 연산기가 서로 다른 메모리의 참조를 요구하는 경우가 발생된다.(BMA0 : 2사분면에 배치되는 BMA, BMA1 : 1사분면에 배치되는 BMA, BMA2 : 3사분면에 배치되는 BMA, BMA3 : 4사분면에 배치되는 BMA)
이에 따라 상기 메모리는 다수의 출력이 가능한 구조가 되어야 하며, 당연하게 이와 같은 구조의 메모리는 단일 출력을 갖는 메모리에 비하여 게이트수의 증가를 요하게 된다.
이하, 단일 출력을 갖는 메모리로 다중 출력 메모리를 대체하는 방식을 제시한다.
도 20 내지 23은 도 14 내지 도 17에 도시한 예를 개선한 다른 실시예로서, n×n 픽셀들로 구성된 매크로 블럭 단위로 검색 범위 ±X에서 움직임 벡터를 추정하는 인코더에 있어서, 상기 검색 범위를 소정 개수의 열로 구분하여, 상기 각 열에 BMA 연산기가 할당되어 BMA 연산을 수행하는 것을 나타내고 있다.
즉, 1, 2, 3, 4사분면 각각을 처리하도록 BMA 연산기가 배치되는 것이 아니라, 매크로 블럭의 열 단위로 처리하도록 BMA 연산기를 배치한 것이다.
도 20 내지 23에서도 위에서와 같이 검색 범위 ±32(X=32)에 16×16(n=16) 매크로 블럭을 대상으로 한 것으로 예시하였으며, 도 11의 BMA 연산기를 사용하여 도 24와 같이 처리가 이루어진다. 이 경우, 4개의 열이 형성되며, 도 14 내지 17에서와 같이 각 열당 한개씩의 BMA 연산기를 배치하여 처리가 가능하다.
도 14 내지 17에서와 같이 하나의 메모리를 다른 BMA 연산기에서 각각 참조하고 있다(4각 테두리 부분). 그러나, 열 단위로 BMA 연산기를 배치하고, 소정의 딜레이를 배치하면 도 14 내지 17에서와 같은 다중 출력 메모리를 단일 출력 메모리로 대체할 수 있게 된다.
도 25에서와 같이 각 열의 픽셀 데이터가 저장되는 메모리가 5개 배치(1개의 메모리가 1열씩 저장)되고, 각 메모리(첫번째 메모리 제외)의 출력단은 해당 열의 BMA 연산기에 직접 연결됨과 동시에, 16 사이클 딜레이를 거쳐 앞 열에 배치된 BMA 연산기에 연결되어 있다.
이와 같이 구성하면, 도 24의 우측에 나타낸 바와 같이 16 사이클 딜레이된 데이터가 앞 열의 BMA 연산기에 입력(물론, 멀티플렉서에 의해 제어되어 선택적으 로 입력됨)되어, 상기 앞 열의 BMA 연산기는 필요로 하는 데이터를 뒷 열의 메모리에서 입력받을 필요가 없게 된다.
이에 따라, 각 열에 배치된 메모리는 다중 출력을 지원하지 않는 메모리로 구성이 가능하게 되며, 이에 따라 메모리를 포함한 엔코더 전체의 게이트수를 줄일 수 있게 된다. 결국 이러한 필요 게이트수의 감소는 생산 원가의 감소와 전력 소모 감소에도 영향을 미치게 된다.
정리하면, n×n 픽셀들로 구성된 매크로 블럭 단위로 검색범위 ±X에서 움직임 벡터를 추정하는 인코더에 있어서, 상기 검색 범위를 소정 개수의 열로 구분하여, 상기 각 열에 제 1 항의 BMA 연산기를 하나씩 배치하고, 상기 BMA 연산기의 제2 저장부는 상기 각 열당 각각 배치되고 각 열에 배치된 상기 제2 저장부는 같은 열에 배치된 상기 BMA 연산기로 픽셀 데이터를 직접 전송하고, 앞 열의 BMA 연산기와의 사이에 n사이클(cycle) 지연(delay)을 갖는 딜레이부를 두고 상기 딜레이부를 거쳐 앞 열의 BMA 연산기에 픽셀 데이터를 전송하는 것이 요점이 된다.
도 24 및 25에서 상기 n은 16, X는 32로 설정하였으며, 이는 현재 H.26X, MPEG에서 현재 지원하는 제안 중 하나이다. X가 32이므로 4개의 열이 형성되었으며, 마지막 열이 그 뒷열까지 필요로 하므로 메모리는 5개 열에 해당하는 분량이 배치된다.
이상에서 살펴본 실시예에 구비된 감산기는 1의 보수(1's complement)를 이용한 감산을 수행하는 것이 바람직하다.
현재 블럭의 픽셀 데이터와 참조 블럭의 픽셀 데이터 간의 감산은 도 11의 BMA 연산기를 이루는 각 감산기에서 이루어지게 되는데, 이때 상기 감산기는 1의 보수 방식의 감산을 수행하도록 구성된다.
일반적으로 디지털 회로에서의 2진 데이터의 감산은 2의 보수를 취해 가산하여 이루어지게 되며, 따라서, 상기 가산을 위한 가산기, 2의 보수(1의 보수에 +1을 하여 구함)를 취할 때 필요한 가산기 해서 두개의 가산기가 사용된다.
1의 보수 방식에 의한 감산은 2의 보수 방식에 의한 감산에 비하여 감산과정에서 +1에 대한 가산이 이루어지지 않기 때문에, 가산에 관련된 게이트수를 줄일 수 있게 된다. 따라서, 1의 보수 방식에 의한 감산을 수행하게 되면, 전체 게이트 수가 감소되어 전력 소모 및 전체 BMA 연산기의 크기 감소에 유리하다.
2의 보수를 사용한 감산을 수행하는 것은 1의 보수에서 0을 +0, -0 두개를 취하는 것에 비해 2의 보수를 사용한 감산은 단 하나의 0을 가지게 되므로 디지털 회로로 구현하기 용이하기 때문이나, BMA 연산기에서의 데이터는 절대값으로 처리되므로, 1의 보수를 사용한 감산을 사용하여 +1에 대한 가산기를 줄이는 것이 바람직하다.
한편, 도 11에 나타낸 실시예에서의 가산 및 그 이하에서 나타낸 실시예에서의 BMA 연산기 내 가산에 사용되는 가산기의 비트수는 다음의 식
가산기 필요 비트수 = {log2(Mn -1 + 2D)}올림
Mn -1 : 이전 가산기에서 출력 가능한 최대 크기(10진수)
2D : 픽셀 데이터 크기(bit)
을 만족하도록 구성하는 것이 바람직하다.
즉, 가산기가 연산 대상으로 하는 각 데이터를 수용할 수 있는 최소 크기로 가산기를 구성한다는 것으로 이를 통하여 BMA 연산기의 전체 게이트수를 감소시킬 수 있게 된다.
이에 대한 예로써, 상기 식 2에서 D=8인 경우를 도 26을 통하여 살펴보자. D=8인 경우는 256색을 표현할 수 있는 픽셀 데이터 크기로, D=16, 24, 32로 설정할 수도 있다.
도 26을 참조하면, 최초 시작시의 가산기는 8bit로 구성한다. 상기 최초 가산기가 연산 대상으로 하는 데이터는 8bit 감산기에서 출력된 결과만을 대상으로 할 것이므로 출력될 수 있는 최대값을 감안하더라도 8bit로 커버가 가능하다. 물론, 최초 시작시에는 별도의 가산기 없이 감산부(감산기)에서 연산된 결과가 바로 SAD 저장부에 입력되도록 할 수 있으므로, 가산기의 생략이 가능하다.
두번째 가산기는 9bit로 구성한다. 전단의 SAD 저장부에 저장된 데이터(최대 256)와 현재단의 감산기에서 출력된 데이터(최대 256)를 가산하게 되므로, 최대 512의 수 표현이 요구되며, 이에 따라 9bit(최대 512)의 가산기 비트수가 필요하다.
세번째 가산기는 10bit로 구성한다. 전단(두번째단)의 SAD 저장부에 저장된 데이터(최대 512)와 현재단의 감산기에서 출력된 데이터(최대 256)를 가산하게 되므로, 최대 768의 수 표현이 요구되며, 이에 따라 10bit(최대 1024)의 가산기 비트수가 필요하다.
네번째 가산기도 세번째와 마찬가지로 10bit로 구성한다. 전단(세번째단)의 SAD 저장부에 저장된 데이터(최대 768)와 현재단의 감산기에 출력된 데이터(최대 256)를 가산하게 되므로, 최대 1024의 수 표현이 요구되며, 이에 따라 10bit(최대 1024)의 가산기 비트수가 필요하다.
이와 같은 방식, 구체적으로 식 2에 따라 가산기의 비트수를 구성하면, BMA 전체의 게이트수를 크게 줄일 수 있다.
한편, 이상의 게이트 필요 비트수는 SAD 저장부에도 그대로 적용하는 것이 바람직하다.
즉, 도 11에서 나타낸 상기 SAD 저장부 또는 그 이하에서 나타낸 상기 BMA 연산기 내 SAD 저장부의 비트수를 다음의 식
SAD 저장부 필요 비트수 = {log2(Mn -1 + 2D)}올림
Mn -1 : 이전 가산기에서 출력 가능한 최대 크기(10진수)
2D : 픽셀 데이터 크기(bit)
에 만족하도록 구성하는 것이 바람직하다.
그 구체적인 구성 및 동작은 도 26을 통하여 나타낸 가산기의 필요 비트수와 동일하게 설명된다.
이상에서 설명된 각 BMA 연산기에서 출력되는 값은 다수의 SAD가 되며, 이 중에서 최소 SAD를 추출해내어야 한다.
이는 도 27에 나타낸 회로에 의하여 이루어지게 된다. 각 참조 블럭의 SAD를 SAD 비교기(SAD Comp.)를 통하여 비교하여 최소 SAD를 추출하게 되며, 해당 참조 블럭의 기준 픽셀의 위치는 curr_mvx, curr_mvy로 입력되어 움직임 벡터 생성기(MV_Gen)를 통하여 움직임 벡터 mvx, mvy로 출력된다.
참고로, 움직임 벡터(motion vector)는 동화상 처리에 있어서 물체 위치의 시간적인 변화를 나타내는 벡터로 움직임 벡터에는 2차원의 화상상의 겉보기 움직임 벡터와 3차원 세계에서의 실제의 움직임 벡터가 있다.
도 27의 Min SAD와 MV_Gen은 입력된 SAD(확정된 것은 아님, 비교 완료 후에 확정됨)와 MV(motion vector, 움직임 벡터, 최종 움직임 벡터는 아니고, 현재 SAD값이 입력되는 참조 블럭의 기준 픽셀 데이터의 좌표임)에 대해서 해당 BMA 연산기에 대한 최소 SAD 추출 완료시까지 저장하고 있으며, SAD 추출 완료 후에 해당 BMA 연산기의 SAD(MinSAD)와 MV(mvx, mvy)를 출력하는 제어역할을 수행하게 된다.
이렇게 출력된 MinSAD와 mvx, mvy는 4개의 BMA 연산기를 사용한 경우 4개가 출력되며, 이들간의 비교도 수행하여야 한다.
예로써, 도 28과 같은 회로에 의하여 수행이 가능한데, 이와 같이 각 BMA 연 산기의 SAD와 움직임 벡터를 수집하여 각 BMA 연산기간의 최소 SAD를 추출하는 요소를 별도로 첨부하는 것은 처리 속도의 향상을 위한 것이다.
즉, 각 BMA 연산기에서는 거의 같은 시점에 SAD와 움직임 벡터가 도 27의 회로를 통하여 출력되므로 처리 속도 증가를 위하여 이를 동시에 처리하기 위함이다.
도 28은 두개의 SAD와 두개의 mvx, mvy를 받아 SAD를 비교하여 작은 값을 갖는 SAD와 해당 mvx 및 mvy 하나씩을 출력하도록 구성되는 BMA2_SAD_MV_GEN가 전단에 두개, 후단에 1개 구성되어 있다.
전단의 두개의 BMA2_SAD_MV_GEN에서 출력되는 값은 두개의 SAD 및 해당 SAD의 mvx, mvy가 될 것이므로 후단에는 하나의 BMA2_SAD_MV_GEN만 배치하여도 충분하다.
각 BMA2_SAD_MV_GEN의 구성은 도 29에 도시한 바와 같이 SAD 비교부(SAD Comp.)와 멀티플렉서 3개로 구성이 가능하다.
입력된 두개의 SAD를 상기 SAD 비교부에서 비교하고, 비교 결과를 멀티플렉서의 제어단에 인가하는 것으로 상기 멀티 플렉서의 입력단에 연결된 두개의 SAD 및 mvx, mvy 중 하나를 선택하여 출력하게 되며, 그 결과는 현재 매크로 블럭에 대한 유사 블럭의 SAD 값과 mvx, mvy가 된다.
상기 SAD 값이 앞에서 언급한 상한선을 만족하는 경우에는 상기 mvx, mvy와 현재 블럭의 기준 픽셀 데이터의 위치 Curr Pel[0,0]의 좌표 차이만 코딩하면 영상 압축이 달성되며, 상기 상한선을 만족하지 않는 경우에는 현재 매크로 블럭의 픽셀 데이터 모두를 코딩하여야 한다.
그러나, 본 실시예에서처럼 ±32 검색 범위로 할 경우 운동 경기와 같이 움직임이 심한 동영상도 충분히 커버가 가능(대부분, 상기 상한선을 만족)하므로, 높은 압축율로 동영상을 압축할 수 있게 된다.
이상에서 설명된 바와 같이, 본 발명에 따른 BMA 연산기 및 인코더는 병렬 방식으로 BMA 연산을 수행하여, SAD를 도출하므로, ±32 검색 범위 이상에서도 실시간으로 인코딩을 수행할 수 있다.
넓은 검색 범위를 수용할 수 있게 됨으로 인하여, 동영상을 높은 압축률로 압축할 수 있게 된다.
또한, 병렬 방식의 BMA 연산기의 열단위 배치, 딜레이를 사용한 데이터(참조 블럭의 픽셀 데이터)의 입력, 1의 보수를 이용한 감산 등을 사용하여 전체 게이트 수를 줄여, 소모 전력 감소, 생산의 용이성을 제공할 수 있다.
정리하면, ±32 검색 범위 이상으로 검색범위를 설정하여 실시간으로 인코딩을 수행할 수 있으므로, 운동 경기와 같이 움직임이 심한 동영상도 충분히 커버가 가능(대부분, 상기 상한선을 만족)하며, 높은 압축율로 동영상을 압축할 수 있게 된다. 또한, ±32 이상의 검색 범위를 취할 경우에도 모든 참조 블럭에 대한 BMA 연산을 수행함으로써, 높은 화질의 제공이 가능하며, 그 과정에서 필요한 게이트수를 감소시켜 전력 효율의 증대와 발열 문제 해소, 생산 원가의 감소를 기대할 수 있다.

Claims (26)

  1. n×n 픽셀들로 구성된 매크로 블럭 단위로 움직임 벡터를 추정하는 BMA(block matching algorithm, 블럭 매칭 알고리즘) 연산기에 있어서,
    현재 매크로 블럭(현재 블럭)의 각 픽셀 데이터 c0 ,0 ~ cn -1,n-1가 모두 저장되는 제1 저장부와;
    소정의 펄스 인가시마다 검색 범위(search range)내 각 매크로 블럭(참조 블럭)을 이루는 소정의 픽셀 데이터가 저장되는 제2 저장부와;
    상기 제1 저장부에 저장되는 픽셀 데이터의 개수만큼 구비되며, 상기 펄스의 인가시마다 상기 제1 저장부에 저장된 각 픽셀 데이터와 상기 제2 저장부에 저장된 픽셀 데이터와의 감산을 수행하는 감산부; 및
    상기 제1 저장부에 저장되는 픽셀 데이터의 개수만큼 구비되는 SAD(sum of absolute difference) 저장부를 구비하고,
    상기 SAD 저장부는 제1 저장부의 소정의 픽셀 데이터에 대응되는 하나의 감산부와 하나의 SAD 저장부로 이루어지는 구성을 단으로 칭할 경우, 현재단에서 상기 감산부에 의하여 감산된 결과와 이전단의 SAD 저장부에 저장된 값을 가산하여 저장하는 것
    을 특징으로 하는 BMA 연산기.
  2. 제 1 항에 있어서,
    상기 n은 16인 것을 특징으로 하는 BMA 연산기.
  3. 제 2 항에 있어서,
    상기 검색 범위는 ±16 또는 ±32 중 어느 하나인 것을 특징으로 하는 BMA 연산기.
  4. 제 1 항에 있어서,
    n×n 펄스 인가 이후부터, 상기 SAD 저장부 중 n×n번째 SAD 저장부에 저장된 값을 SAD값으로 사용하는 것을 특징으로 하는 BMA 연산기.
  5. n×n 픽셀들로 구성된 매크로 블럭 단위로 움직임 벡터를 검색범위 ±X에서 추정하는 인코더에 있어서,
    상기 검색범위의 기준이 되는 현재 매크로 블럭의 픽셀 p0 ,0을 원점으로 하는 좌표평면을 가정할 경우, 제1 내지 제4 사분면 각각에 BMA 연산기가 할당되는 것
    을 특징으로 하는 인코더.
  6. 제 5 항에 있어서,
    상기 제1 내지 제4 사분면에 할당되는 상기 BMA 연산기는 한개씩인 것을 특 징으로 하는 인코더.
  7. n×n 픽셀들로 구성된 매크로 블럭 단위로 움직임 벡터를 검색범위 ±X에서 추정하는 인코더에 있어서,
    상기 검색범위의 기준이 되는 현재 매크로 블럭의 픽셀 p0 ,0을 원점으로 하는 좌표평면을 가정할 경우, 제1 내지 제4 사분면 각각에 제 1 항의 BMA 연산기가 할당되는 것
    을 특징으로 하는 인코더.
  8. 제 7 항에 있어서,
    상기 제1 내지 제4 사분면에 할당되는 상기 BMA 연산기는 한개씩인 것을 특징으로 하는 인코더.
  9. 제 7 항 또는 제 8 항에 있어서,
    상기 n은 16인 것을 특징으로 하는 인코더.
  10. 제 9 항에 있어서,
    상기 X는 32인 것을 특징으로 하는 인코더.
  11. n×n 픽셀들로 구성된 매크로 블럭 단위로 검색범위 ±X에서 움직임 벡터를 추정하는 인코더에 있어서,
    상기 검색 범위를 소정 개수의 열로 구분하여, 상기 각 열에 BMA 연산기가 할당되는 것
    을 특징으로 하는 인코더.
  12. 제 11 항에 있어서,
    상기 각 열에 할당되는 상기 BMA 연산기는 한개씩인 것을 특징으로 하는 인코더.
  13. n×n 픽셀들로 구성된 매크로 블럭 단위로 검색범위 ±X에서 움직임 벡터를 추정하는 인코더에 있어서,
    상기 검색 범위를 소정 개수의 열로 구분하여, 상기 각 열에 제 1 항의 BMA 연산기가 할당되는 것
    을 특징으로 하는 인코더.
  14. 제 13 항에 있어서,
    상기 각 열에 상기 BMA 연산기는 한개씩인 것을 특징으로 하는 인코더.
  15. 제 13 항 또는 제 14 항에 있어서,
    상기 n은 16인 것을 특징으로 하는 인코더.
  16. 제 15 항에 있어서,
    상기 X는 32인 것을 특징으로 하는 인코더.
  17. 제 16 항에 있어서,
    상기 열은 4개로 구성되는 것을 특징으로 하는 인코더.
  18. n×n 픽셀들로 구성된 매크로 블럭 단위로 검색범위 ±X에서 움직임 벡터를 추정하는 인코더에 있어서,
    상기 검색 범위를 소정 개수의 열로 구분하여, 상기 각 열에 제 1 항의 BMA 연산기를 하나씩 배치하고,
    상기 BMA 연산기의 제2 저장부는 상기 각 열당 각각 배치되고 각 열에 배치된 상기 제2 저장부는 같은 열에 배치된 상기 BMA 연산기로 픽셀 데이터를 직접 전송하고, 앞 열의 BMA 연산기와의 사이에 n사이클(cycle) 지연(delay)을 갖는 딜레이부를 두고 상기 딜레이부를 거쳐 앞 열의 BMA 연산기에 픽셀 데이터를 전송하는 것을 특징으로 하는 인코더.
  19. 제 18 항에 있어서,
    상기 n은 16인 것을 특징으로 하는 인코더.
  20. 제 18 항 또는 제 19 항에 있어서,
    상기 X는 32인 것을 특징으로 하는 인코더.
  21. 제 20 항에 있어서,
    상기 열은 4개로 구성되는 것을 특징으로 하는 인코더.
  22. 제 5 항, 제 7 항, 제 11 항, 제 13 항, 제 18 항 중 어느 한 항에 있어서,
    상기 감산기는 1의 보수 변환 방식으로 감산을 수행하는 것을 특징으로 하는 인코더.
  23. 제 5 항, 제 7 항, 제 11 항, 제 13 항, 제 18 항 중 어느 한 항에 있어서,
    상기 BMA 연산기 내 가산에 사용되는 가산기의 비트수는 다음의 식
    가산기 필요 비트수 = {log2(Mn -1 + 2D)}올림
    Mn -1 : 이전 가산기에서 출력 가능한 최대 크기(10진수)
    2D : 픽셀 데이터 크기(bit)
    을 만족하는 것을 특징으로 하는 인코더.
  24. 제 5 항, 제 7 항, 제 11 항, 제 13 항, 제 18 항 중 어느 한 항에 있어서,
    상기 BMA 연산기 내 SAD 저장부의 비트수는 다음의 식
    SAD 저장부 필요 비트수 = {log2(Mn -1 + 2D)}올림
    Mn -1 : 이전 가산기에서 출력 가능한 최대 크기(10진수)
    2D : 픽셀 데이터 크기(bit)
    을 만족하는 것을 특징으로 하는 인코더.
  25. 제 23 항에 있어서,
    상기 D는 8, 16, 24, 32 중 하나인 것을 특징으로 하는 인코더.
  26. 제 24 항에 있어서,
    상기 D는 8, 16, 24, 32 중 하나인 것을 특징으로 하는 인코더.
KR1020070026913A 2007-03-20 2007-03-20 Bma 연산기 및 이를 이용한 인코더 KR20080085423A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020070026913A KR20080085423A (ko) 2007-03-20 2007-03-20 Bma 연산기 및 이를 이용한 인코더
US11/946,738 US20080232474A1 (en) 2007-03-20 2007-11-28 Block matching algorithm operator and encoder using the same
EP07121914A EP1981281A2 (en) 2007-03-20 2007-11-29 Block matching algorithm operator and encoder using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070026913A KR20080085423A (ko) 2007-03-20 2007-03-20 Bma 연산기 및 이를 이용한 인코더

Publications (1)

Publication Number Publication Date
KR20080085423A true KR20080085423A (ko) 2008-09-24

Family

ID=39712064

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070026913A KR20080085423A (ko) 2007-03-20 2007-03-20 Bma 연산기 및 이를 이용한 인코더

Country Status (3)

Country Link
US (1) US20080232474A1 (ko)
EP (1) EP1981281A2 (ko)
KR (1) KR20080085423A (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6765964B1 (en) 2000-12-06 2004-07-20 Realnetworks, Inc. System and method for intracoding video data
US8462852B2 (en) 2009-10-20 2013-06-11 Intel Corporation Methods and apparatus for adaptively choosing a search range for motion estimation
US8917769B2 (en) 2009-07-03 2014-12-23 Intel Corporation Methods and systems to estimate motion based on reconstructed reference frames at a video decoder
US9654792B2 (en) 2009-07-03 2017-05-16 Intel Corporation Methods and systems for motion vector derivation at a video decoder
WO2012083487A1 (en) 2010-12-21 2012-06-28 Intel Corporation System and method for enhanced dmvd processing
KR101393824B1 (ko) 2010-10-06 2014-05-13 인텔 코오퍼레이션 저 복잡성 움직임 벡터 도출을 위한 시스템 및 방법
CN104427347A (zh) * 2013-09-02 2015-03-18 苏州威迪斯特光电科技有限公司 网络摄像机视频监控系统图像质量提高方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5793655A (en) * 1996-10-23 1998-08-11 Zapex Technologies, Inc. Sum of the absolute values generator
US6473529B1 (en) * 1999-11-03 2002-10-29 Neomagic Corp. Sum-of-absolute-difference calculator for motion estimation using inversion and carry compensation with full and half-adders
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
KR100778468B1 (ko) * 2000-12-12 2007-11-21 엘지전자 주식회사 움직임 추정 최적화 방법 및 장치
KR100446235B1 (ko) * 2001-05-07 2004-08-30 엘지전자 주식회사 다중 후보를 이용한 움직임 벡터 병합 탐색 방법
WO2004012460A1 (ja) * 2002-07-29 2004-02-05 Matsushita Electric Industrial Co., Ltd. 動きベクトル検出装置及び動きベクトル検出方法
US20040062308A1 (en) * 2002-09-27 2004-04-01 Kamosa Gregg Mark System and method for accelerating video data processing
FI118654B (fi) * 2002-11-06 2008-01-31 Nokia Corp Menetelmä ja järjestelmä laskuoperaatioiden suorittamiseksi ja laite
US7170934B2 (en) * 2002-12-20 2007-01-30 Lsi Logic Corporation Method and/or apparatus for motion estimation using a hierarchical search followed by a computation split for different block sizes
US20050238102A1 (en) * 2004-04-23 2005-10-27 Samsung Electronics Co., Ltd. Hierarchical motion estimation apparatus and method
US8265135B2 (en) * 2007-01-29 2012-09-11 Intel Corporation Method and apparatus for video processing

Also Published As

Publication number Publication date
US20080232474A1 (en) 2008-09-25
EP1981281A2 (en) 2008-10-15

Similar Documents

Publication Publication Date Title
KR20080085423A (ko) Bma 연산기 및 이를 이용한 인코더
Chen et al. A new block-matching criterion for motion estimation and its implementation
US7702020B2 (en) Multi-standard variable block size motion estimation processor
US7940844B2 (en) Video encoding and decoding techniques
JP3101691B2 (ja) 二次元動画像の連続するピクセルを表わすデータ信号を処理するための方法および回路
JP2006304102A (ja) 画像符号化ユニットと画像符号化方法
CN101710985B (zh) 一种用于图像编码的图像亮度补偿方法
US7274825B1 (en) Image matching using pixel-depth reduction before image comparison
WO2003107679A2 (en) Techniques for video encoding and decoding
EP2425622B1 (en) Efficient internal cache for hardware motion estimation
CN103329532A (zh) 量子化控制装置和方法以及量子化控制程序
JP2007150728A (ja) 動画像符号化装置
US20090147852A1 (en) Spatial Filtering of Differential Motion Vectors
KR100292355B1 (ko) 영상시스템의움직임추정방법및장치
Pyen et al. An efficient hardware architecture for full-search variable block size motion estimation in H. 264/AVC
US10057567B2 (en) Method and apparatus for video encoding
Li et al. Lossless Reference Frame Compression Combined with Read and Write Behaviors of HEVC and VVC Codecs
US8270478B2 (en) Method and apparatus for computing a sliding sum of absolute differences
Wujian et al. A high-throughput systolic array for motion estimation using adaptive bit resolution
Senanayake et al. High performance hardware architectures for Intra Block Copy and Palette Coding for HEVC screen content coding extension
Ismail A Complete Verification of a Full Search Motion Estimation Engine
US8654852B2 (en) Circuit for performing motion estimation and motion compensation
Li et al. FPGA-based MSB-first bit-serial variable block size motion estimation processor
Fatemi et al. A cost-efficient bit-serial architecture for sub-pixel motion estimation of H. 264/AVC
Chatterjee et al. Algorithm and architecture for quarter pixel motion estimation for H. 264/AVC

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