KR100451584B1 - 웨이블릿 변환과 움직임 추정을 이용한 동영상 부호화 및복호화 장치 - Google Patents

웨이블릿 변환과 움직임 추정을 이용한 동영상 부호화 및복호화 장치 Download PDF

Info

Publication number
KR100451584B1
KR100451584B1 KR10-2001-0081620A KR20010081620A KR100451584B1 KR 100451584 B1 KR100451584 B1 KR 100451584B1 KR 20010081620 A KR20010081620 A KR 20010081620A KR 100451584 B1 KR100451584 B1 KR 100451584B1
Authority
KR
South Korea
Prior art keywords
module
input
data
motion
wavelet
Prior art date
Application number
KR10-2001-0081620A
Other languages
English (en)
Other versions
KR20030051957A (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 KR10-2001-0081620A priority Critical patent/KR100451584B1/ko
Priority to US10/323,761 priority patent/US6985528B2/en
Priority to CNB021578354A priority patent/CN1201594C/zh
Publication of KR20030051957A publication Critical patent/KR20030051957A/ko
Application granted granted Critical
Publication of KR100451584B1 publication Critical patent/KR100451584B1/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/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets

Abstract

본 발명은 웨이블릿 변환과 움직임 추정을 이용한 동영상 부호화 및 복호화 장치에 관한 것이다. 본 발명의 동영상 부호화 장치는 본 발명의 동영상 부호화 장치의 특징은 영상 데이터를 입력받는 입력 모듈, 상기 입력 모듈로부터 입력되는 영상데이터를 웨이블릿 변환 처리하는 웨이블릿 모듈, 움직임 추정/보상 모듈, 상기 각 모듈로부터 입력되는 데이터를 저장하거나 각 모듈로부터의 요청에 따라 저장된 데이터를 전송하는 저장 모듈, 상기 웨이블릿 모듈로부터 입력되는 데이터와 상기 저장모듈로부터 입력되는 움직임 벡터에 해당하는 데이터를 결합하여 하나의 비트스트림의 형태로 출력하는 출력 모듈, 및 상기 각 모듈의 동작을 제어하는 제어 모듈을 구비한다.
본 발명에 의하여, 동영상을 실시간으로 부호화 및 복호화함에 있어서, 적은 양의 메모리를 사용하면서 실시간으로 전체 영상에 대한 웨이블릿 변환과 블록에 대한 움직임 추정이 가능하게 된다.

Description

웨이블릿 변환과 움직임 추정을 이용한 동영상 부호화 및 복호화 장치{DEVICE FOR ENCODING AND DECODING A MOVING PICTURE USING OF A WAVELET TRANSFORMATION AND A MOTION ESTIMATION}
본 발명은 웨이블릿 변환과 움직임 추정을 이용한 동영상 부호화 및 복호화 장치 및 그 방법에 관한 것으로서, 전체 영상에 대하여 웨이블릿 변환 처리를 하면서 블록 단위로 움직임 추정을 하는 것을 하나의 시스템으로 구현하여 동영상의 압축률을 높이도록 한 동영상 부호화 및 복호화 장치 및 그 방법에 관한 것이다.
정지 영상을 고효율로 부호화할 수 있는 웨이블릿 변환 방법을 동영상에 적용하는 경우 많은 양의 메모리를 필요로 하고, 또한 동영상에 대해 움직임 추정하는 경우에는 많은 시간이 소요된다. 따라서, 동영상을 실시간 처리시 전술한 부호화 및 복호화방법을 사용하는 것은 많은 시간과 메모리가 소요되므로, PDP와 같은 대화면에서는 적용하기가 힘든 문제점이 있다.
또한, 웨이블릿 변환 방법은 전체 영상을 처리하는 데 비해 움직임 추정은 블록 단위로 데이터 처리를 하므로, 이들을 동시에 실시간으로 처리하는데 어려움이 있다.
본 발명은 움직임 추정을 포함한 웨이블릿 변환을 기반으로 하여 압축률이 높은 동영상의 부호화 방법 및 장치를 제공하는 것을 그 목적으로 한다.
도 1a 및 도 1b는 본 발명에 따른 동영상 부호화 장치 및 복호화 장치를 각각 전체적으로 도시한 블록도들.
도 2는 본 발명에 따른 동영상 부호화 장치의 입력 모듈을 도시한 블록도.
도 3은 입력 모듈의 FIFO 기록제어부에서 사용되는 카운터를 도시한 블록도.
도 4는 입력 모듈로 입력되는 입력데이터의 구성을 도시한 데이터 구성도.
도 5는 입력 모듈로 입력되는 입력데이터와 실제데이터를 비교 도시한 도면.
도 6a 내지 도 6c는 입력 모듈로 입력되는 입력 데이터의 수평 및 수직 블랭킹 타임을 도시한 데이터 구성도.
도 7은 입력 모듈내의 입력버퍼와 출력버퍼의 FIFO를 도시한 블록도.
도 8a 및 8b는 움직임 추정을 위한 전역 탐색 알고리즘을 설명하기 위하여 도시한 이전 프레임 및 현재 프레임의 구성도.
도 9는 본 발명에 따른 동영상 부호화 장치의 움직임 추정 모듈을 도시한 블록도.
도 10a 및 도 10b는 전역 탐색 알고리즘을 이용한 움직임 추정을 위한 탐색시 데이터의 중복을 도시한 화면 구성도.
도 11은 본 발명에 따른 움직임 추정 모듈의 움직임 추정부를 도시한 블록도.
도 12 및 도 13a 내지 도 13c는 본 발명에 따라 움직임 추정 과정을 순차적으로 도시한 도면.
도 14는 움직임 추정 모듈내의 처리기를 도시한 블록도.
도 15는 움직임 추정 모듈에서의 제어신호를 나타내는 상태 천이도.
도 16은 움직임 추정 모듈내의 입력 버퍼에 대하여 도시한 메모리 맵.
도 17은 본 발명에 따른 동영상 부호화 장치의 움직임 보상 모듈을 도시한 블록도.
도 18은 움직임 보상 모듈내의 처리기를 도시한 블록도.
도 19는 움직임 보상 모듈내의 입력 버퍼에 대하여 도시한 메모리 맵.
도 20은 움직임 보상 모듈내의 출력 버퍼를 도시한 블록도.
도 21은 본 발명에 따른 저장모듈에 대하여 도시한 메모리 맵.
도 22는 본 발명에 따라 저장모듈이 입력모듈로부터 입력되는 데이터를 저장하는 과정을 설명하기 위하여 도시한 하나의 프레임에 해당하는 메모리 맵.
도 23은 본 발명에 따라 저장모듈이 움직임 보상 모듈로부터 입력되는 차신호에 해당하는 데이터를 저장하는 과정을 설명하기 위하여 도시한 하나의 프레임에 해당하는 메모리 맵.
도 24a 및 도 24b는 저장모듈에서 랜덤 액서스의 읽기 및 쓰기에 대한 타이밍도.
도 25는 저장모듈에 대하여 도시한 억세스 타이밍도.
도 26은 본 발명에 따른 동영상 부호화 장치내의 출력 모듈을 도시한 블록도.
<도면의 주요 부분에 대한 설명>
110 : 입력 모듈
120, 122 : 웨이블릿 모듈
130 : 출력 모듈
140 : 저장 모듈
150 : 움직임 추정/보상 모듈
160 : 제어모듈
200 : 입력 모듈내의 입력 버퍼
250 : 입력 모듈내의 출력 버퍼
전술한 목적을 달성하기 위한 본 발명의 동영상 부호화 장치의 특징은 영상 데이터를 입력받는 입력 모듈, 상기 입력 모듈로부터 입력되는 영상데이터를 웨이블릿 변환 처리하는 웨이블릿 모듈, 움직임 벡터를 구하는 움직임 추정 모듈, 움직임 보상하는 움직임 보상 모듈, 상기 각 모듈로 부터 입력되는 데이터를 저장하거나 각 모듈로부터의 요청에 따라 저장된 데이터를 전송하는 저장 모듈, 상기 웨이블릿 모듈로부터 입력되는 데이터와 상기 저장모듈로부터 입력되는 움직임 벡터에 해당하는 데이터를 결합하여 하나의 비트스트림의 형태로 출력하는 출력 모듈, 및 상기 각 모듈의 동작을 제어하는 제어 모듈을 구비한다.
이때, 입력 모듈은 입력버퍼와 출력버퍼로 이루어지며, 상기 입력 버퍼는 입력모듈로 입력되는 원영상 데이터를 상기 저장모듈로 전달시키며, 상기 출력 버퍼는 상기 저장모듈로부터 입력되는 원영상과 복원 영상간의 차 신호에 해당하는 데이터를 판독하여 상기 웨이블릿 모듈로 전달하는 것이 바람직하다.
한편, 상기 움직임 추정 모듈은 상기 저장 모듈로부터 입력되는 데이터를 저장하는 하나 이상의 입력버퍼, 상기 입력버퍼에 저장된 데이터들의 출력 순서를 제어하는 입력버퍼 제어부, 상기 입력버퍼 제어부의 제어에 따라 상기 입력버퍼의 출력데이터를 지연시키는 지연부, 상기 지연부로부터 출력되는 데이터들을 전송하는 멀티플렉서 및 상기 멀티플렉서를 통하여 출력되는 데이터를 처리하여 움직임 벡터를 구하는 움직임 추정부를 구비하는 것이 좋다.
또한, 상기 움직임 보상 모듈은 움직임 벡터에 의해 만들어지는 저장 모듈의 주소에 저장되어 있는 매크로 블록의 데이터를 입력받는 입력 버퍼, 상기 입력 버퍼로부터 이전 프레임에 대한 데이터 및 현재 프레임에 대한 데이터를 번갈아 입력받고, 입력된 데이터들간의 차이값을 구하는 처리기, 및 상기 처리기의 결과를 상기 저장모듈에 저장하기 위하여 출력하는 출력 버퍼를 구비하는 것이 바람직하다.
본 발명에 의하여, 동영상을 실시간으로 부호화 및 복호화함에 있어서, 적은 양의 메모리를 사용하면서 실시간으로 전체 영상에 대한 웨이블릿 변환과 블록에 대한 움직임 추정이 가능하게 된다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 웨이블릿 변환과 움직임 추정을 이용한 동영상 부호화 장치의 구성 및 동작을 구체적으로 설명한다.
도 1a는 본 발명에 따른 웨이블릿 변환과 움직임 추정을 이용한 동영상 부호화 장치를 전체적으로 도시한 블록도이다.
도 1a를 참조하여 보면, 본 발명에 따른 동영상 부호화 장치(100)는 영상의 입력을 받아들이는 입력 모듈(Input Module;110), 움직임 추정과 움직임 보상을 위한 움직임 추정/보상 모듈(Motion Estimation and Compensation Module;150), 웨이블릿 변환을 수행하는 제1 및 제2 웨이블릿 모듈(Wavelet Modules; 120, 122), 전체의 스케쥴을 조정하기 위한 제어 모듈(Control module;160), 각 모듈에서 만들어진 데이터를 저장하고 필요한 시기에 전달하기 위한 저장 모듈(140) 및 만들어진 비트 스트림을 출력시키기 위한 출력 모듈(Output Module;130)을 포함한다.
본 발명에 따른 동영상 부호화 장치(100)의 저장 모듈(140)은 각 모듈들이 발생시키는 데이터를 저장할 뿐만 아니라 다른 모듈들이 다음 프레임의 부호화에 사용할 수 있도록 저장된 데이터들을 해당 모듈로 제공함으로써, 본 발명에 따른 장치가 프레임 기반의 영상 부호화 및 블록 기반의 움직임 추정을 동시에 할 수 있게 한다.
또한, 상기 저장 모듈(140)은 많은 데이터를 처리해야 하므로 상기 저장 모듈의 데이터 폭은 32비트로 하여 저장 모듈의 시간 분할(time scheduling)을 용이하게 하는 반면에, 입력되는 영상 및 웨이블릿 모듈로 입력되는 데이터 폭은 8비트이다. 그 결과, 이들을 서로 인터페이스시키기 위하여는 데이터 폭을 변환시켜야 한다. 따라서, 본 발명에 따른 동영상 부호화 장치(100)의 입력 모듈(110)은 8비트의 데이터 폭을 갖는 입력 영상을 32비트의 데이터 폭으로 변환시켜 상기 저장 모듈에 저장시키며, 또한 상기 저장 모듈로부터 가져온 32비트의 데이터 폭을 갖는 데이터를 8비트 폭으로 변환시켜 2개의 웨이블릿 모듈로 나누어서 전달하게 된다.
한편, 상기 저장 모듈(140)은 데이터를 원할하게 주고 받기 위하여 시간 분할을 하게 되는데, 이와 같은 저장 모듈의 시간 분할은 상기 제어 모듈에서 관리하게 된다. 상기 제어 모듈은 원영상인 I 모드 및 움직임과 차영상으로 나타나는 P 모드로 구분하고 상기 저장 모듈의 주소(address)와 각 모듈의 제어 신호를 발생시키게 된다. 상기 I 모드는 "Intra Picture"로서, 연속적인 영상의 압축시 각 프레임마다 개별적으로 수행되는 모드이며, 상기 P 모드는 "Predictive Picture"로서, 이전 영상과 현재 영상 간의 예측을 통한 차이 정보를 이용하여 영상을 압축하는 모드이다. 그런데, 본 발명에 따른 동영상 부호화 장치에 있어서, 움직임 추정/보상 모듈은 16 ×16의 매크로 블록 단위로 움직임을 추정하는 반면에, 웨이블릿 모듈은 하나의 프레임의 영상을 모두 받아서 처리하게 되므로, 이들간의 시간을 잘 제어해 주어야 한다.
본 발명에 따른 동영상 부호화 장치는 기본적으로 I 모드 이후에 P 모드를 수행하므로, 웨이블릿 모듈이 하나의 I 모드 프레임을 처리하는 동안, 움직임 추정/보상 모듈은 P 모드 프레임의 영상을 움직임 추정 및 보상을 통하여 만든 후에 상기 저장 모듈에 저장하게 된다. 다음, I 모드 프레임의 연산이 끝난 후 웨이블릿 모듈에 입력 모듈을 통하여 데이터를 전송한다. 이때, 저장 모듈을 제어하는 단위 시간은 매크로 블록 단위로 하며, 하나의 매크로 블록 단위 시간은 108MHz의 기본 주파수를 기준으로 2668클럭이다. 한 장의 프레임은 이러한 매크로 블록 단위시간이 675개 필요하다. 이는 입력 영상이 720 ×480에 해당하기 때문이다.
한편, 본 발명에 따른 동영상 부호화 장치의 출력 모듈은 상기 웨이블릿 모듈로부터 전달되는 2개의 입력과 저장 모듈로부터 전달되는 움직임 벡터값을 섞어서 하나의 비트 스트림으로 변환하게 된다.
한편, 도 1b는 본 발명에 따른 동영상 복호화 장치를 도시한 블록도이다.
도 1b를 참조하여 보면, 본 발명에 따른 동영상 복호화 장치는 입력 모듈, 웨이블릿 모듈, 저장모듈, 움직임 보상 모듈 및 FIFO들로 이루어진다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 동영상 부호화 장치의 각 구성 요소에 대한 구성 및 동작을 구체적으로 설명한다.
도 2는 본 발명에 따른 동영상 부호화 장치의 입력 모듈(110)을 도시한 블록도이다.
도 2를 참조하여 보면, 입력 모듈(110)은 원영상 및 움직임 추정후의 차영상 입력을 하기 위한 것으로서, 크게 입력 버퍼(200)과 출력 버퍼(250)로 이루어진다. 입력 모듈의 입력 버퍼(200)와 출력 버퍼(250)는 선입선출 메모리(First In First Out:이하 "FIFO"라 한다.)들과 FIFO의 입출력을 제어하기 위한 하나 이상의 제어부들로 이루어진다. 입력 모듈로 입력되는 원영상에 해당하는 입력 신호는 CCIR601 포맷으로 Y, Cb, Cr 각각 8비트의 크기를 가지며, 이와 같은 입력 신호는 32비트 단위로 웨이블릿 모듈로 보내어진다. 이때, 상기 저장 모듈과의 통신은 108MHz로 동기화되어 있는 반면에 입력 버퍼의 입력시에는 6.75MHz로 동작하고 출력 버퍼의 출력시에는 27MHz로 동작하기 때문에, 본 입력 모듈에서 사용되는 FIFO는 비동기독립 입출력 클럭을 사용하는 FIFO로 구성되어야 한다.
이하, 상기 입력 모듈의 입력 버퍼 및 출력 버퍼의 구성 및 동작에 대해 순차적으로 설명한다.
먼저, 입력 버퍼(200)는 858 ×525로 이루어지는 입력 데이터에서 실제 데이터에 해당하는 720 ×480의 데이터를 버퍼에 저장한 후 상기 저장 모듈(140)로 전송해 주는 역할을 한다. 이때, 입력되는 데이터는 CCIR601 포맷으로 Y, Cb, Cr 각각 8비트로 이루어져 있다. 입력버퍼는 입력데이터로부터 휘도(Y) 데이터와 색도(C) 데이터를 분류하는 동시에, 8 비트의 입력데이터를 32비트로 만든 후 FIFO에 저장하였다가 저장 모듈(140)로 전송하게 된다.
입력 버퍼(200)는, 도 2에 도시된 바와 같이, FIFO 기록제어부(210), FIFO 판독제어부(220), 휘도 FIFO(230), 색도 FIFO(232), 멀티플렉서(242), 디멀티플렉서(240) 및 8-to-32 비트변환기(244)를 포함한다.
입력 모듈(140)은 FIFO 기록제어부(210)로 입력되는 IP_start 신호가 '1'인 동안에만 동작하며, 입력모듈로 입력되는 입력데이터는 도 4에 도시된 바와 같이 구성되며, 도 5의 참조부호 400과 같이 CCIR601 포맷을 따라 858 ×525로 이루어진다. 도 6a 내지 도 6c는 입력데이터의 수평 및 수직 블랭킹 타임을 도시한 것이다. 도 5에 도시된 바와 같이, 입력된 입력데이터(도 5의 400)로부터 실제 데이터(도 5의 410)인 720 ×480으로 이루어진 데이터만을 추출해 낸다. 이렇게 추출해 낸 데이터는 4:2:2 형태의 Y 데이터와 Cb, Cr 데이터가 혼합된 형태이므로 Y 데이터와 C 데이터를 분류하는 과정이 필요하다. 이와 동시에 8비트의 입력 데이터를 32비트로만들게 된다. 이렇게 형성된 휘도 및 색도 데이터들을 각각 별도의 휘도 FIFO(230) 및 색도 FIFO(232)에 기록한다.
한편, 입력 버퍼(200)로 입력되는 IP_write_en 신호가 '1'이면, 휘도 FIFO(230) 및 색도 FIFO(232)에 각각 기록된 휘도 및 색도 데이터들을 차례로 출력한다.
실제로 부호화 장치가 동작을 시작한 때부터 데이터 입력은 계속 발생하므로, 입력 버퍼내의 FIFO들에 저장된 데이터들은 적당량 빼주어야 하는 문제가 발생하게 된다. 하지만, 본 발명에 따른 부호화 장치는 저장 모듈(140)의 입출력을 32비트 데이터 폭으로 108MHz 클럭에 동기시켰으므로 입력 버퍼내의 FIFO가 넘치는 현상은 발생하지 않게 된다. 오히려 FIFO가 비게 되는 현상이 발생하게 되어서, 이를 입력 버퍼(200)의 FIFO 판독제어부(220)에서 제어하게 된다.
입력 버퍼의 FIFO 기록제어부(210)는 디멀티플렉서(240)와 8-to-32 비트변환기(244)의 동작 유무를 제어하고 입력 버퍼(200)내의 FIFO들의 기록 여부를 제어한다. 이때, 카운터를 이용하여 입력데이터 중 블랭킹 신호를 제외하고 카운터를 이용하여 실제 데이터만을 골라낸다. 도 3은 입력되는 데이터 중 실제 데이터를 선별해 내는 카운터를 도시한 회로도이다. 도 3을 참조하여 보면, 신호 생성기(310)는 클럭에 동기되는 카운터를 사용하여 매 클럭마다 하나의 D 플립플롭(320)만을 인에이블(enable)시킴으로써, 카운터가 하나의 사이클을 돌면 32비트의 출력이 완성된다.
입력 버퍼내의 FIFO 판독제어부(220)는 멀티플렉서(242)의 동작유무를 제어하고, FIFO로부터의 데이터 출력 여부를 제어한다. 입력 버퍼(200)내의 FIFO들(230, 232)은 "full"이 발생하지 않으며 "empty"만을 제어한다. FIFO(230, 232)의 입력은 6.75 MHz 클럭에 동기되어 있고, 출력은 108MHz 클럭에 동기되어 있으므로 일정시간이 지나게 되면 FIFO가 비어지게 되므로 "empty" 신호를 관찰하여 한번 "empty"가 되면 다음 주기의 IP_write_en 신호가 '1'이 될 때까지 FIFO로부터 출력을 중지시키게 된다.
다음, 도 2의 출력버퍼(250)는 32비트 단위로 전송되어 온 저장 모듈(140)의 차신호를 8비트 단위로 변환한 후 웨이블릿 모듈(120, 122)로 보내는 것으로서, 분할기 제어부(260), 32-to-8 비트변환기(290), FIFO 판독제어부(270), 휘도 홀수 FIFO(Y_odd_FIFO;280), 색도 홀수 FIFO(C_odd_FIFO;282), 휘도 짝수 FIFO(Y_even_FIFO;284), 색도 짝수 FIFO(C_even_FIFO;286) 및 멀티플렉서(292, 294)를 구비한다.
출력버퍼(250)는 IP_start 신호가 '1'인 동안에 동작하게 되며, IP_read_en 신호가 '1'이면 상기 저장모듈(140)으로부터 출력되는 32비트 단위의 차신호 데이터를 8비트 단위로 자르면서, 홀수 라인의 데이터인지 짝수 라인의 데이터인지를 구분하는 동시에 휘도(Y) 데이터와 색도(C) 데이터로 분류한다. 이렇게 분류된 각각의 Yeven, Ceven, Yodd, Codd데이터를 4개의 FIFO(280, 282, 284, 286)에 각각 저장한다. 이와 같이 FIFO에 저장된 데이터는 IP_read_en 신호가 '1'이면, 홀수 라인 및 짝수 라인의 데이터들을 각각 두 개의 웨이블릿 모듈(120, 122)로 계속 전송한다.웨이블릿 모듈과 인터페이스를 하기 위한 FIFO의 입력은 108MHz 클럭에 동기되고 출력은 27MHz 클럭에 동기된다. 출력버퍼에 사용되는 FIFO는 8비트의 데이터 폭과 128 깊이의 듀얼포트램을 제외한 다른 구성은 입력버퍼의 그것과 동일하다.
이때, 출력 버퍼(250)는 부호화 장치가 동작을 시작한 후에 계속 끊임없이 데이터를 출력하게 되므로, FIFO내에 적당량의 데이터가 저장되어 있지 않을 경우 문제가 발생하게 된다. 하지만, 본 발명에 따른 동영상 부호화 장치에서는 상기 저장모듈(140)의 입출력을 32비트 데이터 폭으로 108MHz 클럭에 동기시켰으므로 FIFO가 비는 현상은 발생하지 않게 된다. 오히려, FIFO가 넘치는 현상이 발생하게 되는데, 이를 위하여 출력 버퍼의 분할기 제어부(260)의 full신호를 관찰하여 한번 full이 되면 다음 주기의 IP_read_en 신호가 '1'이 될 때까지 FIFO로의 입력을 중지시킨다. 출력버퍼내의 FIFO 판독제어부(270)는 4개의 FIFO(280, 282, 284, 286)의 출력을 제어하고 웨이블릿 모듈로 입력될 휘도 및 색도 데이터를 선별하는 멀티플렉서(292, 294)를 제어하며, 또한 웨이블릿 모듈에서 요구하는 CCIR601 포맷에 맞는 수평 동기 신호와 수직 동기 신호 및 필드 신호를 생성한다.
도 7는 도 2의 입력 모듈내의 입력버퍼 및 출력버퍼에 구비된 FIFO의 내부 블록도를 도시한 것이다. 이하, 도 5를 참조하여 입력모듈내의 FIFO의 구성 및 동작을 구체적으로 설명한다.
상기 FIFO는 저장모듈(140)과의 인터페이스를 하기 위하여 6.75MHz 클럭에 동기되어 입력되고 108MHz 클럭에 동기되어 출력되는 것으로서, 도 5에 도시된 바와 같이, 듀얼포트램(500), 기록제어부(510), 판독제어부(510) 및 플래그 제어부(530)로 구성된다.
상기 듀얼포트램(500)은 하나의 메모리에 대해 읽기와 쓰기를 동시에 수행할 수 있으며, 32 비트 데이터 폭을 가지고 256 깊이를 갖는 것으로 설계되는 것이 바람직하다.
상기 FIFO내의 기록제어부(510)는 듀얼포트램(500)에 데이터를 기록하기 위한 주소를 생성하는 모듈로서, 주소생성코드는 그레이(gray) 코드를 사용한다.
상기 FIFO내의 판독제어부(520)는 듀얼포트램(500)으로부터 데이터를 읽어오기 위한 주소를 생성하는 모듈로서, 주소생성코드는 역시 그레이 코드를 사용한다.
플래그제어부(530)는 듀얼포트램(500)이 full상태이거나 empty상태가 되는 것을 감시하여 알려주는 모듈이다.
이하, 본 발명에 따른 동영상 부호화 장치내의 움직임 추정/보상 모듈(150)은 움직임 추정 모듈 및 움직임 보상 모듈로 이루어지는데, 움직임 추정 모듈은 휘도 성분만을 이용하여 현재의 프레임상의 하나의 매크로 블록이 탐색영역내의 이전 프레임과 가장 유사한 블록을 찾는 알고리즘을 수행한다. 본 발명에서는 가장 유사한 블록을 찾는 알고리즘으로서 전역 탐색 알고리즘을 사용한다. 도 8a 및 도 8b를 참조하여, 본 발명에 따른 전역 탐색 알고리즘을 설명한다.
도 8a 및 도 8b는 전역 탐색 알고리즘을 설명하기 위하여 도시한 이전 프레임과 현재 프레임을 각각 나타낸다. 이하, 도 8a 및 도 8b를 참조하여 보면, 현재 프레임은 n ×n 의 크기를 갖는 기준블록들로 분할한다. 이들 각각의 기준블록에대하여 수직 및 수평 방향으로 소정의 크기(q)내의 (2q+1)2개의 후보 블록 중에서 적절한 정합 척도에 기반하여 최적의 정합된 후보 블록들을 선택하여, 이 블록의 상대적 위치를 움직임 벡터로 결정한다.
전술한 전역 탐색 알고리즘은 시스톨릭 어레이(systolic array)를 이용하여 하드웨어 설계를 한다. 이 방법은 블록 정합 알고리즘에서 반복적으로 연산되는 부분을 시프트 레지스터를 적절히 사용하여 반복되는 연산량을 줄여 주며, 초기의 지연시간을 제외하고 각 클록마다 하나의 연산 결과를 출력시킨다. 따라서, 반복적인 연산으로 인해 낭비되는 시간을 줄임으로써 효율을 높인다. 이와 같이 시스톨릭 어레이를 이용한 블록 정합 알고리즘(block matching algorithm)을 사용하기 위해서, 기준 블록과 이전 블록의 순서로 입력할 수 있는 시스톨릭 어레이의 앞단이 필요하게 된다. 본 발명에 따른 동영상 부호화 장치에서는 상기 저장모듈(140)로부터 전송되어 오는 데이터들이 32비트의 폭을 가지므로, 이를 움직임 추정 모듈에서 사용하는 8비트로 전환한다. 이를 위해서, 본 발명에 따른 동영상 부호화 장치는 도 9에 도시된 바와 같은 움직임 추정 모듈을 구비한다.
도 9를 참조하여 보면, 본 발명에 따른 움직임 추정 모듈은 4개의 스태틱 메모리인 SRAM을 사용하는 입력버퍼(910), 지연부(920), 멀티플렉서(930) 및 움직임 추정부(940) 및 입력버퍼 제어부(900)을 구비한다.
먼저, 입력 버퍼(910)는 4개의 스태틱 메모리인 SRAM을 사용하며, 항상 입력과 출력이 따로 이루어지므로 FIFO를 사용할 필요가 없다. 그 결과, 움직임 추정모듈내의 메모리의 용량도 줄어들게 된다. 한편, 상기 입력 버퍼(910)는 입력버퍼 제어부(900)에 의해 제어된다.
상기 입력 버퍼(910)로 상기 저장모듈(140)로부터 현재 프레임의 기준 블록과 이전 프레임의 탐색영역에 해당하는 데이터가 입력된다. 입력되는 데이터는 모두 입력 버퍼에 저장한 후, 입력버퍼 제어부(900)가 정하는 순서대로 움직임 추정을 위한 처리 블록인 지연부(920) 및 멀티플렉서(930)로 출력한다. 이렇게 출력된 데이터는 움직임 추정부(940)에서 처리되어 최적의 움직임 벡터를 구하게 된다. 이때, 상기 움직임 추정부(940)는 시스톨릭 어레이를 사용하여 블록 정합 알고리즘을 실행함으로써, 최적의 움직임 벡터를 찾게 된다. 이렇게 얻은 움직임 벡터는 저장모듈(140)로 전송된다.
도 10a 및 도 10b는 전역 탐색 알고리즘을 이용하여 움직임 추정을 위한 탐색시 데이터의 중복을 나타내는 화면을 도시한 것이며, 도 11은 움직임 추정 모듈의 움직임 추정부를 도시한 블록도이다.
전술한 블록 정합 알고리즘을 수행하기 위한 순차 입력 병력 처리 구조는 2차원 시스톨릭 구조를 기반으로 전역 탐색 알고리즘의 규칙적인 데이터 흐름의 중복성을 이용하기 위하여 시프트 레지스터 어레이를 사용한다. 데이터 중복성이라 함은 한 번 시스템에 입력된 데이터가 다시 입력되는 것을 의미하며, 도 10a 및 도 10b는 전역 탐색 블록 정합 알고리즘에 존재하는 데이터의 중복성을 보여 준다.
도 10a는 2차원 시스톨릭 구조가 이용하는 후보 블록의 데이터간의 중복성을 중첩된 영역으로 나타낸 것이며, 도 10b의 중첩 영역은 본 발명에 이용된 행간의데이터 중복성을 의미한다.
도 11은 본 발명의 움직임 추정 모듈(150)내의 움직임 추정부(940)를 개략적으로 나타내는 블록도이다. 도 11에 도시된 바와 같이, 단순한 시스톨릭 구조와는 달리 2차원적 시스톨릭 구조의 시프트 레지스트 어레이의 집합을 사용한다. 이와 같은 움직임 추정부는 연산소자군의 우측에 연결된 시프트 레지스터 어레이 집합으로 데이터의 중복성을 이용함으로써 병렬처리 특성을 유지함과 동시에 단 하나의 입력만을 이용하는 순차 입력 병렬 처리 구조이다. 상기의 블록 움직임 추정에 소요되는 시간은 다음의 수학식 1로 나타난다.
C = (2q+1)×(2q+n)+(n+2q-1)×(n-1)
여기서, C는 블록 움직임 추정에 소요되는 시간을, q는 움직임 추정 탐색 영역을, n은 블록의 크기를 나타낸다.
본 발명에 따른 동영상 부호화 장치의 일실시예에서는 기준 블록의 크기를 16×16으로 설정하고 탐색 영역을 (기준 블록 ±8)로 설정하여 입력 데이터의 클럭에 따라 1031 클럭만에 움직임 벡터를 추정하게 된다.
순차 입력 병렬 처리 구조는 기준 블록과 탐색 영역 블록이 입력이 되면 기준 블록의 가로열의 길이의 갯수와 동일한 크기의 처리기들(Processing element;도 11의 참조부호 1120)을 통해 연산을 한다. 이때, 처리기의 열의 폭은 기준 블록의 열의 길이와 동일하며, 전체 처리기들의 구조는 기준 블록과 동일한 크기를 가진다. 하나 이상의 시프트 레지스터로 이루어지는 상기 시프트 레지스터 어레이로 기준 블록의 화소값이 입력되고, 입력된 기준블록의 화소값은 n ×n으로 이루어지는 처리기로 동일한 모양으로 다시 입력된다. 다음, 탐색 영역의 데이터들은 처리기와 시프트 레지스터를 거쳐서 기준 블록과의 차이값을 구하는 연산과 밑의 처리기에서 전달되어지는 값을 더하는 연산을 한 후 옆의 처리기로 전달된다. 이때, 하나의 시프트 레지스터 어레이(Shift Register Array;이하 "SRA"라 하며, 도 11의 참조부호 1130)는 (2p-1)의 폭을 가지는데, 이는 탐색 영역의 폭과 동일한 크기이다.
이하, 도 12 및 도 13a 내지 도 13c를 참조하여, 본 발명에 따라 각 클럭 시간대의 탐색 영역 데이터 이동 과정을 3 ×3의 크기를 갖는 블록을 예를 들어 설명한다.
도 12는 본 발명에 따라 3 ×3의 크기를 갖는 블록이 각 클럭 시간대의 탐색 영역의 데이터 이동 과정을 나타낸 것이다. 또한, 도 13a 내지 도 13c는 특정 시간에서 시스템 내의 데이터 위치를 표현한 다이어그램들로서, 시스템의 동작을 쉽게 보여줄 수 있다. 도 13a의 데이터는 1 클럭후 3 화소를 동시에 처리하며, 이 결과가 도 13b에서 처리되는 3 화소의 계산 결과와 누적되고, 다시 도 13c의 3화소 계산과 누적되어 결국 3 ×3의 크기를 갖는 블록을 처리하게 된다.
도 14는 본 발명에 따른 동영상 부호화장치의 움직임 추정 모듈(150)에 사용되는 처리기(PE;1120)를 도시한 블록도이다. 처리기는 기준 블록의 데이터와 탐색영역의 데이터 간의 절대 오차값을 계산하고 또한 누산하는 것으로서, 도 14에 도시된 바와 같이, 참조 입력 시프트 레지스터(1400;Reference input Shift Register:이하, "RSR"이라 한다), 절대 오차 계산기(1410;Absolute DifferenceComputer:이하, "ADC"라 한다), 제1 지연부(1440), 제2 지연부(1450), 제3 지연부(1420) 및 결합기(1430)를 포함한다.
본 발명에 따른 처리기의 RSR(1400)은 처음 초기시간동안 입력되는 기준블록(reference block)을 다음의 처리기로 전달시키며, 연산이 시작되면 입력된 기준블럭에 대한 데이터를 후술되는 ADC(1410)로 전달하여 탐색 영역에서의 입력과 연산하게 된다.
ADC(1410)는 RSR(1400)로부터 입력되는 기준블록에 대한 데이터와 탐색 영역의 데이터간의 절대오차를 계산하며, 그 결과값은 제3 지연부(1420)를 거쳐 결합기(1430)로 입력된다. 결합기(1430)는 기준블록과 탐색영역의 데이터간의 누산 기능을 한다. 한편, 제1 지연부(1440) 및 제2 지연부(1450)는 이전 처리기로부터 전달되는 데이터들을 하나의 클럭 동안 가지고 있다가 다음의 처리기로 전달시켜 주며, 제3 지연부(1420)는 ADC(1410)와 결합기(1430) 사이에서 동기를 맞추기 위하여 사용된다.
도 15는 본 발명에 따른 동영상 부호화 장치의 움직임 추정 모듈에서의 제어 신호를 나타내는 상태 천이도이다.
도 15에 도시된 바와 같이, 본 발명에 따른 움직임 추정 모듈에서 제어신호를 만들기 위한 상태(state)는 5개의 부분으로 나뉘며, 그 외에 제어신호를 만들지 않는 유휴(IDLE) 상태와 제어신호를 초기화시키는 초기화 상태가 있다. 각 상태에서의 제어 신호가 만들어지는 원칙은 순차 입력 병력 처리 구조의 각 블록의 리셋 타이밍과 관련된다.
본 발명에 따른 동영상 부호화 장치의 움직임 추정 모듈은 움직임추정을 하기 위하여, 저장모듈(140)로부터 데이터를 읽어와서 입력 버퍼(도 9의 참조 부호 910)에 저장한다. 상기 입력버퍼는 (a) 상기 저장모듈로부터 입력되는 32비트 데이터 폭을 8비트 데이터 폭으로 변환시켜 움직임 추정 모듈에서 사용할 수 있도록 하며, (b) 상기 저장모듈(140)로부터 108MHz로 전송된 데이터를 54MHz로 낮추는 역할을 하며, (c) 움직임 추정 모듈의 입력 순서에 맞추어서 데이터를 출력한다.
전술한 움직임 추정 모듈내의 입력버퍼(910)는 하나의 매크로 블록을 움직임 추정하는데 필요한 데이터를 수용할 수 있는 정도의 용량을 구비하여야 한다. 이를 보다 구체적으로 살펴보면, 먼저 기준블록은 하나의 매크로 블록의 크기만큼 필요하고, 탐색 영역은 4개의 매크로 블록이 필요하므로, 전체 5개의 매크로 블록의 크기만큼의 메모리가 필요하게 된다. 따라서, 하나의 매크로 블록은 16 ×16 = 256 바이트의 메모리가 필요하므로, 적어도 5개의 매크로 블록의 크기의 메모리가 필요한 전체 입력버퍼는 256 ×5 = 1280 바이트(byte), 즉 10240 비트(bit)가 필요하게 된다. 그런데, 자이링스의 블록램의 최소크기가 2048 비트이며, 32비트의 데이터 입력을 8비트로 변환시켜 주어야 하므로, 이에 맞추기 위해서는 8개의 블록램을 사용해야 한다. 따라서, 본 발명에 따른 움직임 추정 모듈내의 입력버퍼(910)는 8비트의 데이터 폭을 가지고 512개의 주소를 갖는 램을 4개 사용하게 된다. 도 16은 움직임 추정 모듈내의 입력버퍼로 사용되는 4개의 SRAM의 메모리 맵을 도시한 것이다.
상기 저장모듈(140)로부터 입력되는 데이터를 움직임추정/보상 모듈의 입력순서에 맞추기 위해서는 일정한 데이터 처리 순서가 필요하게 된다. 데이터의 처리는 먼저 기준블록과 탐색영역의 블록이 256바이트로 이루어지는 매크로 블록의 큭기만큼 54MHz의 주파수에 따라 64클럭동안 동시에 움직임추정/보상 모듈로 입력되고, 기준블록의 입력과 기준블록의 크기의 탐색영역 데이터의 입력이 끝난 후에 나머지 탐색영역의 데이터가 256 클럭동안 입력된다. 이때, 기준블록과 탐색영역의 데이터가 동시에 입력이 되면, 멀티플렉서(MUX:930)와 지연부(Delay;920)를 이용하여 4개의 SRAM(910)으로부터 출력되는 데이터들을 분배해 주어야 한다. 또한, 4개의 SRAM에 데이터가 들어가 있는 순서는 위에서부터 아래로 들어가 있으므로, 동시에 데이터가 나오더라도 순차적으로 움직임 추정 모듈로 입력시켜야 한다. 전술한 바와 같은 움직임 추정 모듈로의 입력을 위하여, 멀티플렉서와 지연부는 도 9에 도시된 바와 같이 배치되게 된다. 도 9에 도시된 움직임 추정 모듈의 지연부는, 기준블록과 탐색영역의 블록이 같은 SRAM에서부터 번갈아 출력되므로, 이를 분리시키기 위하여 사용되었다. 이렇게 분리된 데이터들은 멀티플렉서를 통해 순차적으로 움직임 추정 모듈의 입력으로 사용하게 된다. 움직임 추정 모듈은 54MHz로 입력되어야 하므로, 멀티플렉서의 SEL 단자는 13.5MHz주기로 순환한다.
움직임 추정 모듈에서 만들어진 움직임 벡터에 의해 만들어진 저장모듈의 주소에 따라, 총 8개의 매크로 블록에 해당하는 데이타가 움직임 보상 모듈로 입력된다. 전체 영상에 대한 실제 데이터는 총 720 ×480의 크기를 가지므로, 원하는 시간내에 모든 데이터에 대해 움직임 추정을 하기는 어렵기 때문에, 720 ×240의 홀수(odd) 영상에 대해서만 움직임 추정을 실행한다. 하지만, 데이터를 압축하기 위해서는 전체 영상에 대한 움직임 복원과 차 값을 구하는 과정이 필요하며, 이러한 움직임 복원과 차 값을 구하는 과정은 휘도 신호뿐만 아니라 색도 신호에 대해서도 필요하다. 따라서, 움직임 보상과 차 신호를 구하기 위해서는 2개의 매크로 블록에 해당하는 이전 영상의 휘도 신호와 현재 영상의 휘도 신호가 각각 필요하고, 색도 신호에 대해서도 마찬가지다. 그 결과, 총 8개의 매크로 블록 크기의 데이터가 필요하고, 이를 입력하기 위해서는 108MHz를 기준으로 하여 64 ×8 = 512 클럭이 필요하다.
도 17은 본 발명에 따른 동영상 부호화 장치의 움직임 보상 모듈을 도시한 블록도이다.
도 17을 참조하여 보면, 본 발명에 따른 움직임 보상 모듈은 입력 버퍼(1700), 차를 연산하는 처리기(1710) 및 상기 처리기의 결과를 저장모듈(140)에 저장하기 위한 출력 버퍼(1770)를 구비한다.
상기 움직임 보상 모듈의 입력버퍼(1700)는 일반적으로 스태틱램인 SRAM을 사용하는데, 8개의 매크로 블록을 저장해야 하고 32비트로 입력되는 데이터를 8비트로 나누어야 하므로, 8비트의 폭으로 512의 크기를 갖는 SRAM이 4개가 필요하다.
한편, 움직임 보상 모듈로 입력된 데이터가 입력버퍼(1700) 및 처리기 (1710)를 통해 처리된 후 출력버퍼(1770)를 통해 저장모듈(140)로 출력하게 되는데, 이때 저장모듈로 출력하기 위해서는 데이터의 순서를 재구성해야 한다. 이러한 데이터 순서의 재구성을 위하여, 움직임 보상 모듈의 출력 버퍼(1770)는 멀티플렉서, 메모리 및 지연부로 이루어지는데, 후술한다. 이와 같은 구성요소들에 의해 그순서가 재구성된 데이터들은 입력모듈에서 웨이블릿 모듈로 바로 입력할 수 있게 된다.
도 18은 전술한 움직임 보상 모듈내에 구비된 처리기(1710)를 도시한 블록도이다.
도 18을 참조하여 보면, 움직임 보상 모듈내의 처리기(1710)는, 지연부(1800), 래치(1810), 감산기(1820), 결합기(1830) 및 D-flip flop(1840)이 순차적으로 연결되어 이루어진다. 이러한 움직임 보상 모듈내의 처리기는 움직임 보상 모듈의 입력버퍼(1700)로부터 이전 프레임에 대한 데이터와 현재 프레임에 대한 데이터가 번갈아 입력될 때, 입력되는 데이터들을 지연부(1800)와 래치(1810)들을 이용하여 나누고, 감산기(1820)를 이용하여 차를 구하여 원하는 결과를 만든다. 이때, 결과 데이터는 8비트의 양수로 맞춤으로써, 저장모듈(140)이나 웨이블릿 모듈의 입력이 모두 8비트로 사용하는 것을 보다 쉽게 한다. 결과 데이터를 8비트로 맞추기 위하여, 현재 프레임의 값에서 이전 프레임의 값을 뺀 값을 2로 나눈 다음, 다시 127를 더한다. 이렇게 함으로써 -255 ∼ +255 범위의 값을 가지는 결과값이 0 ∼ 254의 범위내로 변화게 된다. 그리고, 디코더의 설계시에 이를 고려하여 복원을 하면 ±1의 오차를 가지게 된다. 하지만, 이 정도의 오차는 영상에서 거의 차이를 느낄 수 없는 정도이며, 메모리 사용시 8비트의 결과값을 가지는 것이 매우 유리하다.
도 19는 본 발명에 따른 동영상 부호화 장치의 움직임 보상 모듈에 구비된 입력버퍼의 메모리 맵을 도시한 것이다.
도 19를 참조하여 보면, 본 발명에 따른 움직임 보상 모듈의 입력 버퍼내에 데이터의 입력 순서대로 저장되어 있는 데이터의 메모리 맵을 알 수 있다. 이러한 움직임 보상 모듈내의 입력버퍼는 512바이트의 SRAM을 4개 구비하여 2048바이트의 크기를 가짐으로써, 8개의 매크로 블록을 저장할 수 있도록 한다. 한편, 저장모듈로부터 데이터가 입력될 때, "Y1_cur →Y1_prev →C1_cur →C1_prev →Y2_cur → Y2_prev →C2_cur →C2_prev"의 순서로 입력됨으로써, 처리기가 보다 원활히 수행될 수 있도록 한다.
또한, 움직임 추정 모듈내의 입력버퍼와 마찬가지로, 움직임 보상 모듈에서도 4개의 SRAM을 입력버퍼로 사용하여, 저장모듈로부터 입력되는 32비트의 데이터를 8비트로 나누게 된다. 한편, 저장모듈(140)로부터 움직임 보상 모듈로 입력시키는 데 필요한 시간은 108MHz를 기준으로 하여 512 클럭이 필요하며, 이를 처리하기 위하여 출력할 때에는 54MHz를 기준으로 하여 512 클럭이 필요하게 된다. 그리고, 데이터는 현재 프레임의 데이터와 이전 프레임의 데이터를 번갈아가면서 처리기로 출력하게 되는데, "Y1 →C1 →Y2 →C2"의 순서로 출력하게 된다.
도 20은 본 발명에 따른 동영상 부호화 장치의 움직임 보상 모듈내의 출력버퍼(1770)를 도시한 블록도이다.
도 20을 참조하여 보면, 본 발명에 따른 움직임 보상 모듈내의 출력버퍼(1770)는 4개의 멀티플렉서(2000, 2002, 2004, 2006), 8비트의 제1 및 제2 메모리(2010, 2012), 2개의 지연부(2020) 및 32비트의 제3 메모리(2030)를 구비한다. 상기 출력버퍼(1770)는 4개의 처리기에서 동시에 출력되는 결과 데이터의 순서를 바꾸어 32비트로 저장하여 저장모듈(140)에 저장할 수 있도록 하며, 또한 제어신호가 입력되면 저장모듈로 출력하게 된다. 이때, 데이터의 순서를 바꾸어 주는 이유는 입력 모듈에서 웨이블릿 모듈로 데이터를 전송할 때 데이터를 효율적으로 사용하기 위해서이다. 따라서, 움직임 보상을 한 데이터를 저장모듈에 저장할 때부터 데이터 순서를 바꾸게 되는데, 처리기에서 계산되어져 나오는 출력이 Y1, C1, Y2, C2의 순서로 32비트의 SRAM에 입력되도록 맞추게 된다.
전술한 움직임 보상 모듈의 출력버퍼(1770)의 동작을 살펴보면, 처리기로부터 출력되는 신호는 27MHz에 동기되어 출력버퍼로 입력되어, 제1 및 제2 멀티플렉서(2000, 2002)를 통해 54MHz로 동기된다. 본 발명에 따른 출력버퍼는 4개의 멀티플렉서를 사용함으로써, Y1과 C1 신호가 제1 메모리(2010)로, Y2 및 C2 신호가 제2 메모리(2012)로 입력되도록 한다. 이때, 제1 및 제2 메모리는 8비트의 SRAM을 사용하게 된다. 이러한 과정을 거친 데이터는 8비트의 제1 및 제2 메모리에 각각 나누어져 저장되는데, 제1 메모리(2010)는 Y1 및 C1의 데이터만 저장되고, 제2 메모리(2012)는 Y2 및 C2의 데이터만 저장된다. 이와 같이, 제1 및 제2 메모리(2010, 2012)는 4개의 처리기에서 출력되는 결과 데이터가 원하는 순서에 맞출 수 없기 때문에, 일단 메모리에 저장할 때 주소를 조정하여 순서를 변환시킴으로써, 32비트의 제3 메모리(2030)의 입력에 사용될 수 있도록 한다. 32비트의 제3 메모리(2030)에 저장되는 데이터는 지연부(2020)를 거치면서 27MHz에 동기되도록 느려지며, 출력버퍼에 저장된 데이터들이 저장모듈로 출력될 때에는 108MHz에 동기되어 출력된다.
도 21은 본 발명에 따른 동영상 부호화장치의 저장모듈(140)의 메모리 맵을 도시한 것이다. 이하, 도 21을 참조하여 본 발명에 따른 저장모듈(140)을 구체적으로 설명한다.
본 발명에 따른 저장모듈(140)은 시스템 전체에서 만들어지는 데이터를 원하는 시간에 사용하기 위하여 저장하고 분배해주는 메모리로서, 부호화 장치의 각 모듈들은 저장모듈과 통신하도록 설계되었으며, 본 발명에 따른 동영상 부호화장치의 제어모듈(도 1의 160)에 의해 저장모듈의 데이터 입출력을 제어하게 된다. 본 발명에 따른 동영상 부호화 장치에서는, 도 21에 도시된 바와 같이, 저장모듈(140)로서 2개의 뱅크를 갖는 SGRAM(Synchronous Graphic RAM)을 사용하는 것이 바람직하다.
전술한 저장모듈(140)은 입력모듈(110)로부터 입력된 하나의 프레임에 대한 영상데이터, 움직임 추정/보상 모듈로 전달하는 과거의 두 개의 프레임에 대한 영상데이터, 움직임 보상의 결과로 생성되는 차신호에 해당하는 데이터 및 움직임 추정의 결과로 생성되는 움직임 벡터에 해당하는 데이터를 모두 저장할 수 있는 메모리를 확보하게 된다. 도 21을 참조하여 보면, 입력모듈(110)로부터 입력된 영상데이터를 저장하는 영역은 "Original Y" 및 "Original C"로 기재된 부분이며, 움직임 보상의 결과로 생성되는 차신호에 해당하는 데이터를 저장하는 영역은 "Difference Y block" 및 "Difference C block"으로 기재된 부분이다. 이와 같은 메모리 맵의 구성은 각 모듈에서 발생되는 데이터들을 두 개의 뱅크에 번갈아가며 저장하는 방식을 취함으로써, 저장모듈의 버스트모드를 최대한 활용할 수 있도록 한다.
도 22는 입력모듈로부터 입력되는 데이터를 저장모듈에 저장하는 과정을 설명하기 위하여 도시한 하나의 프레임에 해당하는 메모리 맵이다. 이하, 도 22를 참조하여, 본 발명에 따른 저장모듈에 입력모듈로부터 입력되는 데이터를 저장하는 과정을 구체적으로 설명한다.
본 발명에 따른 저장모듈의 데이터의 버스가 32비트이므로, 720개의 화소를 저장하기 위해서는 180열이 필요하다. 저장모듈에 있어서, 256열을 갖는 하나의 뱅크 당 180열을 저장시키면, 하나의 뱅크의 하나의 행에 화면의 하나의 행을 저장시키게 된다. 입력모듈에서 처리되어 들어오는 원 영상(4:2:2)의 데이터는 프레임 영상의 종류에 관계없이 영상의 행 순서대로 저장모듈에 저장된다. 그런데, 하나의 영상은 총 480개의 행으로 이루어지고, 저장모듈의 두 개의 뱅크로 이루어진 하나의 행에는 영상의 두개의 행을 저장할 수 있으므로, 모든 데이터를 저장하기 위해서는 240행이 필요하다. 따라서, 저장모듈에서 하나의 프레임에 대한 원래의 영상에 해당하는 데이터를 저장하기 위한 메모리 영역은 180 ×240이 된다. 이러한 방식은 휘도 데이터 및 색도 데이터에 대해서도 마찬가지로 적용된다.
한편, 데이터를 저장시에는 화면의행의 순서대로 저장모듈의 행에 저장하고, 읽을 때에는 부호화의 방식에 따라 프레임 영상에서의 매크로 블록을 찾아 전달해 준다. 그런데, 움직임 추정을 하기 위하여 매크로 블록 단위로 찾아서 읽을 경우에는 프레임 단위가 아닌 필드 단위로 읽게 된다. 따라서, 도 22에 도시된 바와 같이, 먼저 뱅크 A에 첫번째 홀수 라인 데이터(odd 1)를 저장하고 이어지는 첫번째 짝수 라인 데이터(even 1)를 뱅크 B에 저장하지 않고 뱅크 A에 저장한다. 다음, 두번째 홀수 라인 데이터(odd 2) 및 두번째 짝수 라인 데이터(even 2)를 뱅크 B에 저장한다. 이와 같이 저장함으로써, 뱅크 동작(Bank Operation)의 이득을 볼 수 없지만, 데이터를 읽을 경우에는 필드 단위로 뱅크 A와 뱅크 B를 번갈아 가면서 읽어 갈 수 있어서 뱅크 동작의 이득을 볼 수 있게 된다. 이러한 저장 방식은 데이터를 저장모듈에 저장할 때에는 약간의 불이익이 발생하게 되지만, 움직임 추정을 위하여 저장모듈로부터 필드 단위로 데이터를 읽어오는 과정에서는 뱅크 동작의 이득을 볼 수 있게 된다.
도 23은 움직임 보상 모듈로부터 입력되는 차신호에 해당하는 데이터를 저장모듈에 저장하는 과정을 설명하기 위하여 도시한 하나의 프레임에 해당하는 메모리 맵이다. 이하, 도 23을 참조하여, 본 발명에 따른 저장모듈에 차신호에 해당하는 데이터를 저장하는 과정을 구체적으로 설명한다.
본 발명에 따른 움직임 보상 모듈로부터 발생하는 차 신호는 16 ×16 의 크기로 이루어지는 블록인 경우 720 ×480 ÷256개 존재하게 된다. 그런데, 데이터 버스가 32비트이므로, 하나의 매크로 블록에 해당하는 256개의 화소를 저장하기 위해서는 64열이 필요하다. 256열을 갖는 하나의 뱅크당 64열을 저장하도록 하면, 하나의 뱅크에 하나의 매크로 블록에 해당하는 데이터를 저장하게 된다.
실제로 차 신호가 웨이블릿 모듈로 전달될 때에는 매크로 블록의 형태가 아니라 라인 데이터 형태이어야 한다. 따라서, 차 신호를 저장할 때에는 움직임 추정을 하는 동안의 비는 시간이 충분한 반면에, 차 신호가 웨이블릿 모듈로 전달될 때에는 계속 전달되므로 시간 여유가 없게 된다. 그 결과, 차 신호를 웨이블릿 모듈로 전달하기 위하여 차 신호를 읽는 경우에는 버스트 모드 동작과 뱅크 동작이 이루어질 수 있도록 구성하는 것이 보다 합리적일 수 있다. 따라서, 도 23에 도시된 바와 같이, 먼저 첫번째 블록의 데이터(①)를 뱅크 A에 저장하고, 두번째 블록의 데이터(②)도 뱅크 A에 저장한다. 다음, 세번째 블록의 데이터(③)를 뱅크 B에 저장하고, 네번째 블록의 데이터(④)도 뱅크 B에 저장시킨다. 이때, 메모리 맵에서 검게 표현된 부분이 하나의 라인 데이터를 읽어 낼 때 차례대로 읽히는 데이터들을 나타내고 있다. 이와 같이 차 신호를 저장하는 방식을 채택함으로써, 라인 형태로 데이터를 읽을 때는 뱅크 동작이 가능하게 된다.
도 24a 및 도 24b는 본 발명에 따른 저장 모듈에서 랜덤 액서스의 읽기 및 쓰기에 대한 타이밍도를 각각 도시한 것이다.
먼저, 도 24a 및 도 24b를 참조하여 보면, 저장 모듈에 데이터를 쓸 때에는 열, 행 주소를 설정해주는 시간(tRCD)이 소요되며, 데이터를 읽을 때에는 열, 행 주소를 설정하는 시간 외에 판독 지연시간(read latency 또는 CAS latency)이 더 필요하다. tRCD는 본 발명에 사용되는 저장모듈에서 최소값이 2 cycle이고 판독 지연 시간은 시스템 클럭에 의해 제한되는데, 본 발명에서는 2cycle로 설정하여 사용한다. 한편, 한 번의 랜덤 액세스(random access)시에 요구되는 cycle의 수(1ra)는 수학식 2에 의해 다음과 같이 구할 수 있다.
1ra = 4 cycle = tRCD
= 2 cycle = tRCD(기록 버스트 모드시)
저장모듈을 억세스하는 데이터의 개수가 일정할 때에는 저장모듈의 버스트 길이를 바꾸어주어 저장모듈을 외부에서 비활성화시키지 않아도 내부적으로 처리할 수 있게 됨으로써, 데이터를 연속적으로 억세스할 수 있게 되어 억세스 시간을 절약할 수 있게 된다. 이때, 데이터를 연속적으로 억세스할 수 있는 것은 듀얼 뱅크 동작시에만 적용된다. 버스트 길이를 바꾸면서 억세스하는 경우 모드를 설정하는 시간이 부가적으로 필요하게 되기는 하지만, 데이터의 길이가 일정하고 여러 번 읽을 때에는 모드를 바꾸어 주는 것이 훨씬 유리하다.
본 발명에 따른 동영상 부호화 장치에 있어서, 입력 모듈, 움직임 추정 모듈, 움직임 보상 모듈 및 출력모듈이 하나의 저장모듈을 공동으로 사용하므로, 저장모듈의 타이밍을 적절하게 공유하여야 한다. 도 25는 전술한 저장모듈에 대한 억세스 타이밍을 설명하기 위하여 도시한 타이밍도이다. 도 25에 도시된 바와 같이, 하나의 전체 사이클은 하나의 매크로 블록에 대한 움직임 추정과 움직임 보상을 위하여 필요한 타이밍을 기준으로 하여 구성된다. 입력모듈과 출력모듈은 하나의 매크로 블록을 처리하기 위한 타이밍을 기준으로 그 만큼의 데이터를 저장모듈로부터 판독하거나 저장모듈에 기록할 수 있는 시간을 할당받게 된다.
도 26은 본 발명에 따른 동영상 부호화 장치에 구비된 출력 모듈(도 1의 130)의 내부를 개략적으로 도시한 블록도이다. 이하, 도 26을 참조하여 본 발명에 따른 출력 모듈을 구체적으로 설명한다.
도 26에 도시된 바와 같이, 본 발명에 따른 출력 모듈(130)은 FIFO 기록제어부(2600), FIFO 판독제어부(2610), 결합기(2620), 스트림FIFO(2630)을 구비하여,웨이블릿 모듈로부터 전달되는 두 개의 입력 신호와 저장 모듈로부터 전달되는 움직임 벡터값을 섞어서 한 비트의 길이로 변환해 주는 동작을 한다.
본 발명에 따른 출력 모듈(130)의 FIFO 기록제어부(2600)는 FIFO의 입력을 게이팅시켜 주고 FIFO가 넘치는 것을 감시하며, FIFO 판독제어부(2610)는 FIFO의 출력을 게이팅시켜 주며 FIFO가 비는지를 감시한다.
또한, 상기 결합기(2620)는 웨이블릿 모듈로부터 전달되는 홀수 데이터와 짝수 데이터 및 움직임 벡터를 나타내는 데이터를 모두 합쳐서 한 비트의 길이의 데이터로 만들어서 출력하게 된다. 이때, 웨이블릿 모듈로부터 전달되는 데이터와 움직임 벡터 데이터를 합쳐서 한 비트의 데이터로 만들어 주는 과정은 움직임 벡터 데이터가 전달되는 주기에 따라 반복되도록 설계하는 것이 바람직하다. 그런데, 웨이블릿 모듈의 출력단에 있는 FIFO는 하나의 프레임에 대한 데이터가 저장될 수 있는 크기를 가지므로, 수시로 FIFO를 제어하여 데이터를 출력할 수 있게 된다. 따라서, 웨이블릿 모듈로부터의 데이터는 매 주기마다 76 클럭씩 출력모듈로 전달되는 것이다. 한편, 전술된 바와 같이 상기 결합기(2620)로부터 출력된 데이터는 스트림 FIFO(2630)에 저장하였다가 출력 클럭에 동기되어 출력된다.
본 발명에 의하여, 프레임 기반의 웨이블릿 압축과 블록 기반의 움직임 추정 정보를 부호화하는 데 있어서, 하나의 메모리를 통해 프레임 정보와 블록 정보를 공유하고 이를 필드별로 분해 처리함으로써, 웨이블릿 변환에 필요한 메모리와 움직임 추정에 소요되는 시간을 줄일 수 있다. 또한, 두개의 필드에 해당하는 영상에동일하게 적용되는 움직임 정보를 메모리를 이용하여 저장하고 공유함으로서 하드웨어 구현을 보다 간단하게 할 수 있다.
게다가, 본 발명에 의한 동영상 부호화 장치는 대화면의 영상과 같이 크기가 크고 전체를 한번에 움직임 추정하기에 복잡한 응용분야에 보다 효율적으로 적용되며, 프레임 기반의 영상과 블록 기반의 영상 정보를 효율적으로 결합하여 부호화할 수 있게 된다.

Claims (25)

  1. 삭제
  2. 영상 데이터를 입력받는 입력 모듈;
    상기 입력 모듈로부터 입력되는 영상데이터를 웨이블릿 변환 처리하는 웨이블릿 모듈;
    움직임 벡터를 구하는 움직임 추정 모듈;
    움직임 보상하는 움직임 보상 모듈;
    상기 입력 모듈, 웨이블릿 모듈, 움직임 추정 모듈 및 움직임 보상 모듈로 부터 입력되는 데이터를 저장하거나 각 모듈로부터의 요청에 따라 저장된 데이터를 전송하는 저장 모듈;
    상기 웨이블릿 모듈로부터 입력되는 데이터 및 상기 저장모듈로부터 입력되는 움직임 벡터에 해당하는 데이터를 결합하여 하나의 비트스트림의 형태로 출력하는 출력 모듈; 및
    상기 입력 모듈, 상기 저장모듈 및 상기 출력 모듈의 동작을 제어하는 제어 모듈을 구비하고,
    상기 입력 모듈은 입력버퍼와 출력버퍼로 이루어지며, 상기 입력 버퍼는 입력모듈로 입력되는 원영상 데이터를 상기 저장모듈로 전달시키며, 상기 출력 버퍼는 상기 저장모듈로부터 입력되는 원영상과 복원 영상간의 차 신호에 해당하는 데이터를 판독하여 상기 웨이블릿 모듈로 전달하는 것을 특징으로 하는 동영상 부호화 장치.
  3. 제2항에 있어서, 상기 입력 모듈의 입력 버퍼는
    상기 입력모듈로 입력되는 원영상 데이터로부터 휘도 데이터 및 색도 데이터를 각각 분리하는 디멀티플렉서,
    상기 디멀티플렉서로부터 출력되는 8비트의 휘도 및 색도 데이터를 32비트로 변환시키는 8-to-32 비트변환기,
    상기 비트변환기로부터 출력되는 32비트의 휘도 및 색도 데이터를 각각 분리하여 저장하는 휘도 FIFO 및 색도 FIFO,
    상기 휘도 및 색도 FIFO들의 기록을 제어하고, 상기 디멀티플렉서와 상기 비트변환기의 동작을 제어하는 기록 제어부, 및
    상기 휘도 및 색도 FIFO로부터의 데이터 출력 여부를 제어하는 판독 제어부
    를 구비하는 것을 특징으로 하는 동영상 부호화 장치.
  4. 제2항에 있어서, 상기 입력 모듈의 출력 버퍼는
    상기 저장모듈로부터 입력되는 32비트 단위의 데이터를 8비트 단위로 변환시키는 32-to-8 비트변환기,
    상기 32-to-8 비트 변환기로부터 출력되는 휘도 및 색도 데이터들을 각각 분리하여 저장하는 휘도 FIFO 및 색도 FIFO,
    상기 휘도 FIFO 및 색도 FIFO로의 데이터 입력을 제어하는 분할기 제어부,
    상기 웨이블릿 모듈로 입력될 휘도 및 색도 데이터를 선별하는 멀티플렉서, 및
    상기 FIFO들의 출력 및 상기 멀티플렉서의 동작을 제어하는 FIFO 판독 제어부
    를 구비하는 것을 특징으로 하는 동영상 부호화 장치.
  5. 제4항에 있어서, 상기 출력 버퍼의 상기 휘도 FIFO는 홀수 라인의 휘도 데이터를 저장하는 휘도 홀수 FIFO 및 짝수 라인의 휘도 데이터를 저장하는 휘도 짝수 FIFO를 구비하고, 상기 출력 버퍼의 상기 색도 FIFO는 홀수 라인의 색도 데이터를 저장하는 색도 홀수 FIFO 및 짝수 라인의 색도 데이터를 저장하는 색도 짝수 FIFO를 구비하는 것을 특징으로 하는 동영상 부호화 장치.
  6. 제4항에 있어서, 상기 출력 버퍼의 휘도 및 색도 FIFO는,
    읽기 및 쓰기 동작을 동시에 수행할 수 있는 듀얼 포트 램,
    상기 듀얼 포트 램에 데이터를 기록하기 위한 주소를 생성하는 기록 제어부,
    상기 듀얼 포트 램으로부터 데이터를 읽어오기 위한 주소를 생성하는 판독 제어부,
    상기 듀얼 포트 램이 풀(full) 상태인지 앰프티(empty) 상태인지 여부를 나타내는 플래그 제어부
    를 구비하는 것을 특징으로 하는 동영상 부호화 장치.
  7. 영상 데이터를 입력받는 입력 모듈;
    상기 입력 모듈로부터 입력되는 영상데이터를 웨이블릿 변환 처리하는 웨이블릿 모듈;
    움직임 벡터를 구하는 움직임 추정 모듈;
    움직임 보상하는 움직임 보상 모듈;
    상기 입력 모듈, 웨이블릿 모듈, 움직임 추정 모듈 및 움직임 보상 모듈로 부터 입력되는 데이터를 저장하거나 각 모듈로부터의 요청에 따라 저장된 데이터를 전송하는 저장 모듈;
    상기 웨이블릿 모듈로부터 입력되는 데이터 및 상기 저장모듈로부터 입력되는 움직임 벡터에 해당하는 데이터를 결합하여 하나의 비트스트림의 형태로 출력하는 출력 모듈; 및
    상기 입력 모듈, 상기 저장모듈 및 상기 출력 모듈의 동작을 제어하는 제어 모듈을 구비하고,
    상기 움직임 추정 모듈은
    상기 저장 모듈로부터 입력되는 데이터를 저장하는 하나 이상의 입력버퍼,
    상기 입력버퍼에 저장된 데이터들의 출력 순서를 제어하는 입력버퍼 제어부
    상기 입력버퍼 제어부의 제어에 따라 상기 입력버퍼의 출력데이터를 지연시키는 지연부,
    상기 지연부로부터 출력되는 데이터들을 전송하는 멀티플렉서 및
    상기 멀티플렉서를 통하여 출력되는 데이터를 처리하여 움직임 벡터를 구하는 움직임 추정부,
    를 구비하는 것을 특징으로 하는 동영상 부호화 장치.
  8. 제7항에 있어서, 상기 움직임 추정 모듈의 상기 입력 버퍼로 입력되는 데이터는 현재 프레임의 기준 블록과 이전 프레임의 탐색 영역에 해당하는 데이터인 것을 특징으로 하는 동영상 부호화 장치.
  9. 제7항에 있어서, 상기 움직임 추정 모듈의 움직임 추정부는
    기준 블록의 데이터와 탐색 영역의 데이터 간의 절대 오차값을 계산하고 또한 누산하는 처리기,
    2차원 시스톨릭 구조를 갖는 시프트 레지스터 어레이를 구비하며,
    상기 시프트 레지스터 어레이로 기준 블록의 화소값이 입력되고, 입력된 기준 블록의 화소값은 상기 처리기로 다시 입력되는 것을 특징으로 하는 동영상 부호화 장치.
  10. 제9항에 있어서, 상기 움직임 추정부의 시프트 레지스터 어레이의 폭은 탐색 영역의 폭과 동일한 크기를 갖는 것을 특징으로 하는 동영상 부호화 장치.
  11. 제9항에 있어서, 상기 움직임 추정부의 처리기는 기준 블록의 가로열의 길이의 갯수와 동일한 크기를 갖는 것을 특징으로 하는 동영상 부호화 장치.
  12. 제9항에 있어서, 상기 움직임 추정부의 처리기는
    처음 초기 시간동안 입력되는 기준 블록을 다음의 처리기로 전달시키는 참조입력 시프트 레지스터,
    상기 참조입력 시프트 레지스터로부터 입력되는 기준블록에 대한 데이터와 탐색 영역의 데이터간의 절대 오차를 계산하는 절대오차계산기,
    이전 처리기로부터 전달되는 데이터들을 하나의 클럭동안 가지고 있다가 다음의 처리기로 전달하는 제1 및 제2 지연부,
    기준 블록에 대한 데이터와 탐색 영역에 대한 데이터를 누산시키는 결합기
    를 구비하는 것을 특징으로 하는 동영상 부호화 장치.
  13. 제12항에 있어서, 상기 움직임 추정부의 처리기는 상기 ADC와 상기 결합기 사이의 동기를 맞추는 제3 지연부를 더 구비하는 것을 특징으로 하는 동영상 부호화 장치.
  14. 제7항에 있어서, 상기 움직임 추정 모듈의 입력 버퍼는 하나의 매크로 블록을 움직임 추정하는데 필요한 데이터를 수용할 수 있는 정도의 용량을 구비하는 것을 특징으로 하는 동영상 부호화 장치.
  15. 영상 데이터를 입력받는 입력 모듈;
    상기 입력 모듈로부터 입력되는 영상데이터를 웨이블릿 변환 처리하는 웨이블릿 모듈;
    움직임 벡터를 구하는 움직임 추정 모듈;
    움직임 보상하는 움직임 보상 모듈;
    상기 입력 모듈, 웨이블릿 모듈, 움직임 추정 모듈 및 움직임 보상 모듈로 부터 입력되는 데이터를 저장하거나 각 모듈로부터의 요청에 따라 저장된 데이터를 전송하는 저장 모듈;
    상기 웨이블릿 모듈로부터 입력되는 데이터 및 상기 저장모듈로부터 입력되는 움직임 벡터에 해당하는 데이터를 결합하여 하나의 비트스트림의 형태로 출력하는 출력 모듈; 및
    상기 입력 모듈, 상기 저장모듈 및 상기 출력 모듈의 동작을 제어하는 제어 모듈을 구비하고,
    상기 움직임 보상 모듈은
    움직임 벡터에 의해 만들어지는 저장 모듈의 주소에 저장되어 있는 매크로 블록의 데이터를 입력받는 입력 버퍼,
    상기 입력 버퍼로부터 이전 프레임에 대한 데이터 및 현재 프레임에 대한 데이터를 번갈아 입력받고, 입력된 데이터들간의 차이값을 구하는 처리기 및
    상기 처리기의 결과를 상기 저장모듈에 저장하기 위하여 출력하는 출력 버퍼
    를 구비하는 것을 특징으로 하는 동영상 부호화 장치.
  16. 제15항에 있어서, 상기 움직임 보상 모듈의 입력 버퍼는 512바이트의 SRAM 4개를 사용하며, 상기 저장모듈로부터 입력되는 32비트의 데이터를 8비트로 나누는 것을 특징으로 하는 동영상 부호화 장치.
  17. 제15항에 있어서, 상기 움직임 보상 모듈의 출력 버퍼는 4개의 처리기에서 동시에 출력되는 8비트 단위의 결과데이터를 순서를 바꾸어 32비트 단위로 저장하는 것을 특징으로 하는 동영상 부호화 장치.
  18. 영상 데이터를 입력받는 입력 모듈;
    상기 입력 모듈로부터 입력되는 영상데이터를 웨이블릿 변환 처리하는 웨이블릿 모듈;
    움직임 벡터를 구하는 움직임 추정 모듈;
    움직임 보상하는 움직임 보상 모듈;
    상기 입력 모듈, 웨이블릿 모듈, 움직임 추정 모듈 및 움직임 보상 모듈로 부터 입력되는 데이터를 저장하거나 각 모듈로부터의 요청에 따라 저장된 데이터를 전송하는 저장 모듈;
    상기 웨이블릿 모듈로부터 입력되는 데이터 및 상기 저장모듈로부터 입력되는 움직임 벡터에 해당하는 데이터를 결합하여 하나의 비트스트림의 형태로 출력하는 출력 모듈; 및
    상기 입력 모듈, 상기 저장모듈 및 상기 출력 모듈의 동작을 제어하는 제어 모듈을 구비하고,
    상기 저장 모듈은 2개의 뱅크를 갖는 동기식 그래픽 RAM(synchronous Graphic RAM)인 것을 특징으로 하는 동영상 부호화 장치.
  19. 영상 데이터를 입력받는 입력 모듈;
    상기 입력 모듈로부터 입력되는 영상데이터를 웨이블릿 변환 처리하는 웨이블릿 모듈;
    움직임 벡터를 구하는 움직임 추정 모듈;
    움직임 보상하는 움직임 보상 모듈;
    상기 입력 모듈, 웨이블릿 모듈, 움직임 추정 모듈 및 움직임 보상 모듈로 부터 입력되는 데이터를 저장하거나 각 모듈로부터의 요청에 따라 저장된 데이터를 전송하는 저장 모듈;
    상기 웨이블릿 모듈로부터 입력되는 데이터 및 상기 저장모듈로부터 입력되는 움직임 벡터에 해당하는 데이터를 결합하여 하나의 비트스트림의 형태로 출력하는 출력 모듈; 및
    상기 입력 모듈, 상기 저장모듈 및 상기 출력 모듈의 동작을 제어하는 제어 모듈을 구비하고,
    상기 저장 모듈은 상기 입력모듈로부터 입력된 하나의 프레임에 대한 영상 데이터, 상기 움직임 추정 및 보상 모듈들로 전달하는 과거의 두 개의 프레임에 대한 영상 데이터, 움직임 추정 모듈에서의 움직임 추정의 결과로 생성된 움직임 벡터에 해당하는 데이터 및 움직임 보상 모듈에서의 움직임 보상의 결과로 생성된 차신호에 해당하는 데이터를 모두 저장할 수 있는 메모리를 구비하는 것을 특징으로 하는 동영상 부호화 장치.
  20. 영상 데이터를 입력받는 입력 모듈;
    상기 입력 모듈로부터 입력되는 영상데이터를 웨이블릿 변환 처리하는 웨이블릿 모듈;
    움직임 벡터를 구하는 움직임 추정 모듈;
    움직임 보상하는 움직임 보상 모듈;
    상기 입력 모듈, 웨이블릿 모듈, 움직임 추정 모듈 및 움직임 보상 모듈로 부터 입력되는 데이터를 저장하거나 각 모듈로부터의 요청에 따라 저장된 데이터를 전송하는 저장 모듈;
    상기 웨이블릿 모듈로부터 입력되는 데이터 및 상기 저장모듈로부터 입력되는 움직임 벡터에 해당하는 데이터를 결합하여 하나의 비트스트림의 형태로 출력하는 출력 모듈; 및
    상기 입력 모듈, 상기 저장모듈 및 상기 출력 모듈의 동작을 제어하는 제어 모듈을 구비하고,
    상기 저장모듈은 제1 및 제2 뱅크를 갖는 메모리로 이루어지며,상기 메모리에 입력모듈로부터 입력되는 영상 데이터를 저장함에 있어서, 상기 영상데이터의 첫번째 홀수 라인 및 첫번째 짝수 라인의 데이터는 제1 뱅크에 저장하고, 상기 영상데이터의 두번째 홀수 라인 및 두번째 짝수 라인의 데이터는 제2 뱅크에 저장하므로써, 각 뱅크는 필드단위로 영상데이터가 저장되는 것을 특징으로 하는 동영상 부호화 장치.
  21. 영상 데이터를 입력받는 입력 모듈;
    상기 입력 모듈로부터 입력되는 영상데이터를 웨이블릿 변환 처리하는 웨이블릿 모듈;
    움직임 벡터를 구하는 움직임 추정 모듈;
    움직임 보상하는 움직임 보상 모듈;
    상기 입력 모듈, 웨이블릿 모듈, 움직임 추정 모듈 및 움직임 보상 모듈로 부터 입력되는 데이터를 저장하거나 각 모듈로부터의 요청에 따라 저장된 데이터를 전송하는 저장 모듈;
    상기 웨이블릿 모듈로부터 입력되는 데이터 및 상기 저장모듈로부터 입력되는 움직임 벡터에 해당하는 데이터를 결합하여 하나의 비트스트림의 형태로 출력하는 출력 모듈; 및
    상기 입력 모듈, 상기 저장모듈 및 상기 출력 모듈의 동작을 제어하는 제어 모듈을 구비하고,
    상기 저장모듈은 제1 및 제2 뱅크를 갖는 메모리로 이루어지며, 상기 메모리에 움직임보상모듈로부터 입력되는 차신호에 해당하는 데이터를 저장함에 있어서, 첫번째 블록 및 두번째 블록에 대한 차신호 데이터는 제1 뱅크에 저장하고, 세번째 블록 및 네번째 블록에 대한 차신호 데이터는 제2 뱅크에 저장하는 것을 특징으로 하는 동영상 부호화 장치.
  22. 영상 데이터를 입력받는 입력 모듈;
    상기 입력 모듈로부터 입력되는 영상데이터를 웨이블릿 변환 처리하는 웨이블릿 모듈;
    움직임 벡터를 구하는 움직임 추정 모듈;
    움직임 보상하는 움직임 보상 모듈;
    상기 입력 모듈, 웨이블릿 모듈, 움직임 추정 모듈 및 움직임 보상 모듈로 부터 입력되는 데이터를 저장하거나 각 모듈로부터의 요청에 따라 저장된 데이터를 전송하는 저장 모듈;
    상기 웨이블릿 모듈로부터 입력되는 데이터 및 상기 저장모듈로부터 입력되는 움직임 벡터에 해당하는 데이터를 결합하여 하나의 비트스트림의 형태로 출력하는 출력 모듈; 및
    상기 입력 모듈, 상기 저장모듈 및 상기 출력 모듈의 동작을 제어하는 제어 모듈을 구비하고,
    상기 출력 모듈은
    상기 스트림 FIFO의 입력을 게이팅시켜 주고 상기 스트림 FIFO가 full되었는지를 감시하는 FIFO 기록제어부,
    상기 스트림 FIFO의 출력을 게이팅시켜 주고 상기 스트림 FIFO가 empty되었는지를 감시하는 FIFO 판독제어부,
    상기 웨이블릿 모듈로부터 전달되는 데이터 및 움직임 벡터 데이터를 결합하여 출력하는 결합기, 및
    상기 결합기로부터 입력되는 데이터를 저장하는 스트림 FIFO
    를 구비하여, 상기 웨이블릿 모듈로부터 전달되는 입력 데이터와 상기 저장 모듈로부터 전달되는 움직임 벡터 데이터를 결합하는 것을 특징으로 하는 동영상 부호화 장치.
  23. 제22항에 있어서, 상기 출력 모듈의 스트림 FIFO는 하나의 프레임에 대한 데이터가 저장될 수 있는 크기를 가지는 것을 특징으로 하는 동영상 부호화 장치.
  24. 영상 데이터를 입력받는 입력 모듈;
    상기 입력 모듈로부터 입력되는 영상데이터를 웨이블릿 변환 처리하는 웨이블릿 모듈;
    움직임 벡터를 구하는 움직임 추정 모듈;
    움직임 보상하는 움직임 보상 모듈;
    상기 입력 모듈, 웨이블릿 모듈, 움직임 추정 모듈 및 움직임 보상 모듈로 부터 입력되는 데이터를 저장하거나 각 모듈로부터의 요청에 따라 저장된 데이터를 전송하는 저장 모듈;
    상기 웨이블릿 모듈로부터 입력되는 데이터 및 상기 저장모듈로부터 입력되는 움직임 벡터에 해당하는 데이터를 결합하여 하나의 비트스트림의 형태로 출력하는 출력 모듈; 및
    상기 입력 모듈, 상기 저장모듈 및 상기 출력 모듈의 동작을 제어하는 제어 모듈을 구비하고,
    상기 제어 모듈은 I 모드 및 P 모드로 구분되어 제어되며, 각 모드에 따라 상기 저장 모듈의 주소 및 각 모듈에 대한 제어 신호를 발생시키는 것을 특징으로 하는 동영상 부호화 장치.
  25. 삭제
KR10-2001-0081620A 2001-12-20 2001-12-20 웨이블릿 변환과 움직임 추정을 이용한 동영상 부호화 및복호화 장치 KR100451584B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR10-2001-0081620A KR100451584B1 (ko) 2001-12-20 2001-12-20 웨이블릿 변환과 움직임 추정을 이용한 동영상 부호화 및복호화 장치
US10/323,761 US6985528B2 (en) 2001-12-20 2002-12-20 Apparatus and method for encoding and decoding moving picture using wavelet transformation and motion estimation
CNB021578354A CN1201594C (zh) 2001-12-20 2002-12-20 利用小波变换和运动预测的运动图像编码/解码设备和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0081620A KR100451584B1 (ko) 2001-12-20 2001-12-20 웨이블릿 변환과 움직임 추정을 이용한 동영상 부호화 및복호화 장치

Publications (2)

Publication Number Publication Date
KR20030051957A KR20030051957A (ko) 2003-06-26
KR100451584B1 true KR100451584B1 (ko) 2004-10-08

Family

ID=19717289

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0081620A KR100451584B1 (ko) 2001-12-20 2001-12-20 웨이블릿 변환과 움직임 추정을 이용한 동영상 부호화 및복호화 장치

Country Status (3)

Country Link
US (1) US6985528B2 (ko)
KR (1) KR100451584B1 (ko)
CN (1) CN1201594C (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100746377B1 (ko) * 2005-10-21 2007-08-03 벨록스소프트(주) 고속의 웨이블릿 변환방법 및 이를 이용한 인코더와 디코더
KR100761246B1 (ko) * 2006-10-04 2007-09-27 삼성전자주식회사 휴대용 단말기에서 손떨림 보정 방법 및 장치
EP1927949A1 (en) * 2006-12-01 2008-06-04 Thomson Licensing Array of processing elements with local registers
KR100928272B1 (ko) * 2007-12-17 2009-11-24 한국전자통신연구원 동영상 부호화를 위한 움직임 추정 방법 및 장치
US8175161B1 (en) * 2008-09-12 2012-05-08 Arecont Vision, Llc. System and method for motion estimation
WO2013089684A2 (en) 2011-12-13 2013-06-20 Empire Technology Development, Llc Graphics render matching for displays
KR101917224B1 (ko) * 2012-09-18 2018-11-13 엘지이노텍 주식회사 영상데이터 전송장치
JP6438777B2 (ja) * 2015-01-30 2018-12-19 ルネサスエレクトロニクス株式会社 画像処理装置および半導体装置
US9785423B2 (en) * 2015-04-23 2017-10-10 Google Inc. Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure
US20220212100A1 (en) * 2021-01-04 2022-07-07 Microsoft Technology Licensing, Llc Systems and methods for streaming interactive applications
KR102638562B1 (ko) * 2021-12-08 2024-02-20 한국항공대학교산학협력단 연속 웨이블릿 변환 장치 및 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414780A (en) * 1993-01-27 1995-05-09 Immix Method and apparatus for image data transformation
KR960028543A (ko) * 1994-12-28 1996-07-22 배순훈 웨이브렛 변환을 이용한 동영상 부호화장치
KR970057959A (ko) * 1995-12-23 1997-07-31 김광호 동영상 압축/복원시스템에서의 효과적인 움직임 추정/보상방법 및 시스템
KR19980086694A (ko) * 1997-05-01 1998-12-05 이또가 미찌야 가역 임베디드 웨이블릿 시스템
KR20000059799A (ko) * 1999-03-09 2000-10-05 구자홍 웨이브릿 부호화를 이용한 움직임 보상 부호화 장치 및 방법
KR100317355B1 (ko) * 1994-12-21 2002-02-19 구자홍 동화상비디오부호화장치
KR20030010983A (ko) * 2001-07-28 2003-02-06 (주)하이칩스 운동객체기반에서의 움직임 예측 웨이브렛 동영상 압축 및복원장치

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0837662A (ja) * 1994-07-22 1996-02-06 Hitachi Ltd 画像符号化復号化装置
US5748240A (en) * 1996-03-15 1998-05-05 International Business Machines Corporation Optimal array addressing control structure comprising an I-frame only video encoder and a frame difference unit which includes an address counter for addressing memory addresses
US6560371B1 (en) * 1997-12-31 2003-05-06 Sarnoff Corporation Apparatus and method for employing M-ary pyramids with N-scale tiling
US6208692B1 (en) * 1997-12-31 2001-03-27 Sarnoff Corporation Apparatus and method for performing scalable hierarchical motion estimation
US6496607B1 (en) * 1998-06-26 2002-12-17 Sarnoff Corporation Method and apparatus for region-based allocation of processing resources and control of input image formation

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414780A (en) * 1993-01-27 1995-05-09 Immix Method and apparatus for image data transformation
KR100317355B1 (ko) * 1994-12-21 2002-02-19 구자홍 동화상비디오부호화장치
KR960028543A (ko) * 1994-12-28 1996-07-22 배순훈 웨이브렛 변환을 이용한 동영상 부호화장치
KR970057959A (ko) * 1995-12-23 1997-07-31 김광호 동영상 압축/복원시스템에서의 효과적인 움직임 추정/보상방법 및 시스템
KR100223647B1 (ko) * 1995-12-23 1999-10-15 윤종용 동영상 압축/복원시스템에서의 효과적인 움직임추정/보상방법및시스템
KR19980086694A (ko) * 1997-05-01 1998-12-05 이또가 미찌야 가역 임베디드 웨이블릿 시스템
KR20000059799A (ko) * 1999-03-09 2000-10-05 구자홍 웨이브릿 부호화를 이용한 움직임 보상 부호화 장치 및 방법
KR20030010983A (ko) * 2001-07-28 2003-02-06 (주)하이칩스 운동객체기반에서의 움직임 예측 웨이브렛 동영상 압축 및복원장치

Also Published As

Publication number Publication date
CN1201594C (zh) 2005-05-11
CN1431830A (zh) 2003-07-23
US6985528B2 (en) 2006-01-10
US20030118108A1 (en) 2003-06-26
KR20030051957A (ko) 2003-06-26

Similar Documents

Publication Publication Date Title
US5623311A (en) MPEG video decoder having a high bandwidth memory
US5638128A (en) Pixel interpolation filters for video decompression processor
US5315388A (en) Multiple serial access memory for use in feedback systems such as motion compensated television
US5880786A (en) Apparatus for picture decoding having frame memories commonly connected to one data bus and one address bus
EP0710033A2 (en) MPEG video decoder having a high bandwidth memory
US5675424A (en) Image decoder for image compression/expansion system
EP0592351B1 (en) Image decoder
KR100451584B1 (ko) 웨이블릿 변환과 움직임 추정을 이용한 동영상 부호화 및복호화 장치
US5430490A (en) Scanning format converting circuit using motion vectors
US5754243A (en) Letter-box transformation device
KR0157071B1 (ko) 동화상 디코딩 시스템
US6850569B2 (en) Effective motion estimation for hierarchical search
JPH06225292A (ja) イメージデコーデングシステムのためのモジュールメモリ
KR100601618B1 (ko) 계층적 움직임 추정기를 위한 최적의 데이터 공급장치 및 그방법
US6188727B1 (en) Simplicity HDTV video decoder and its decoding method
JPH11196425A (ja) 動きベクトル検出装置
US6668087B1 (en) Filter arithmetic device
KR0123090B1 (ko) 움직임 보상을 위한 어드레스 생성기
KR100248085B1 (ko) 영상 관련 데이터를 저장하기 위한 메모리 맵 구조를 가지는 에스디램
KR0129802B1 (ko) 영상압축장치에 있어서 반화소(half pel) 단위의 움직임보상회로
JP3702508B2 (ja) ディジタル画像信号用のメモリ装置
KR100255794B1 (ko) 움직임 보상 장치의 선입선출 버퍼
KR100291480B1 (ko) 4:2:2포멧영상의4:2:0포멧변환장치
KR19990065349A (ko) 움직임 보상 장치
KR0124602B1 (ko) 에이치디티브이(hdtv)의 프레임단위 변환장치

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
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: 20120827

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20130823

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140822

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150824

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20160824

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20170824

Year of fee payment: 14