KR100944928B1 - 버터플라이 프로세서를 이용하여 이산 코사인 변환을인코딩하고 계산하는 장치 및 방법 - Google Patents

버터플라이 프로세서를 이용하여 이산 코사인 변환을인코딩하고 계산하는 장치 및 방법 Download PDF

Info

Publication number
KR100944928B1
KR100944928B1 KR1020037014863A KR20037014863A KR100944928B1 KR 100944928 B1 KR100944928 B1 KR 100944928B1 KR 1020037014863 A KR1020037014863 A KR 1020037014863A KR 20037014863 A KR20037014863 A KR 20037014863A KR 100944928 B1 KR100944928 B1 KR 100944928B1
Authority
KR
South Korea
Prior art keywords
data
processed
transform
elements
register
Prior art date
Application number
KR1020037014863A
Other languages
English (en)
Other versions
KR20040005962A (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 퀄컴 인코포레이티드
Publication of KR20040005962A publication Critical patent/KR20040005962A/ko
Application granted granted Critical
Publication of KR100944928B1 publication Critical patent/KR100944928B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Discrete Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Complex Calculations (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Image Processing (AREA)

Abstract

복수개의 데이터 요소를 포함하는 인코딩된 데이터 블록의 변환을 결정하는 장치. 입력 레지스터는 소정량의 데이터 요소를 수신하도록 구성된다. 하나 이상의 버터플라이 레지스터가 입력 레지스터에 결합되며, 데이터 요소의 선택된 쌍들에 대해 하나 이상의 수학적 연산을 수행하여, 프로세싱된 데이터 요소의 출력을 생성하도록 구성된다. 하나 이상의 중간 레지스터가 버터플라이 프로세서에 결합되며, 프로세싱된 데이터를 일시 저장하도록 구성된다. 피드백 루프가 중간 레지스터와 버터플라이 프로세서에 결합되며, 인에이블이면, 프로세싱된 데이터 요소의 제 1 부분을 적절한 버터플라이 프로세서로 전달하여 추가적인 수학적 연산을 수행하도록 구성되고, 디스에이블이면, 프로세싱된 데이터 요소의 제 2 부분을 하나 이상의 보유 레지스터로 전달하도록 구성된다.
Figure R1020037014863
데이터 요소, 변환, 버터플라이 프로세서

Description

버터플라이 프로세서를 이용하여 이산 코사인 변환을 인코딩하고 계산하는 장치 및 방법 {APPARATUS AND METHOD FOR ENCODING AND COMPUTING A DISCRETE COSINE TRANSFORM USING A BUTTERFLY PROCESSOR}
발명의 배경
I. 발명의 분야
본 출원은, 그 전체를 여기에서 참조하고 있는, 2001년 5월 16일에 출원된 미국 가명세 특허출원 제 60/291,467 호에 대해 우선일의 이익을 주장한다. 본 발명은 디지털 신호 프로세싱에 관한 것이다. 보다 구체적으로, 본 발명은 인코딩된 데이터 블록의 변환을 결정하는 장치 및 방법에 관한 것이다.
II. 관련 기술의 설명
디지털 화상 프로세싱은 디지털 신호 프로세싱의 일반적 규약에서 중요한 위치를 차지한다. 인간의 시각적 지각의 중요성으로 인해, 대단한 관심과 발전이 디지털 화상 프로세싱의 기술 및 과학에서 야기되었다. 필름 또는 영화의 투사에 이용되는 것과 같은 비디오 신호의 송수신 분야에서, 화상 압축 기술에 대한 여러가지 개선이 이루어지고 있다. 현재의 그리고 제안된 많은 비디오 시스템들은 디지털 인코딩 기술을 이용한다. 이러한 분야의 태양으로는, 화상 코딩, 화상 복원 및 화상의 특징 선택을 들 수 있다. 화상 코딩은, 일그러짐을 소정 범위내로 유지하는 동시에, 가능한 적은 수의 비트를 이용하여 필요한 대역폭을 최소화하는 효율적인 방식으로 디지털 통신 채널의 화상을 전송하려는 시도를 의미한다. 화상 복원은 대상의 실제 화상을 복구하려는 노력을 의미한다. 통신 채널을 통해 전송되고 있는 코딩된 화상은 여러가지 팩터에 의해 일그러졌을 수 있다. 성능 저하의 원인은 대상으로부터 화상을 생성하는 과정에서 이미 발생한 것일 수도 있다. 특징 선택은 화상에 대한 소정 속성의 선택을 의미한다. 이러한 속성은 보다 넓은 콘텍스트 (context) 에서의 인식, 분류 및 판정에 필요할 수 있다.
디지털 영화에서와 같은 비디오의 디지털 인코딩은 개선된 화상 압축 기술로부터 이점을 취할 수 있는 영역이다. 디지털 화상 압축은 일반적으로 무손실 방법 (loss-less method) 과 손실 있는 방법 (lossy method) 의 2 개 카테고리로 분류할 수 있다. 무손실 화상은 정보의 손실없이 복원된다. 손실있는 방법은 압축비, 압축 알고리즘의 품질 및 알고리즘의 구현에 따른, 어떠한 정보의 복원불가능한 손실과 관련이 있다. 일반적으로, 손실있는 압축의 접근 방식은 비용-효과적인 디지털 영화 접근 방식을 위해 필요한 압축비를 얻기 위해 고려된다. 디지털 영화의 품질 레벨을 실현하기 위해, 압축 접근 방식은 무손실 레벨의 시각적 성능을 제공해야 한다. 따라서, 압축 과정의 결과로서 정보에 대한 수리적 손실 (mathematical loss) 은 있겠지만, 이러한 손실에 의해 야기되는 화상 일그러짐은 보통의 시청 조건하에 있는 시청자에게 감지될 수 없는 것이어야 한다.
종래의 디지털 화상 압축 기술은 다른 애플리케이션, 즉, TV 시스템을 위해 개발되었다. 이러한 기술은 의도한 애플리케이션에 적절한 디자인 절충안을 갖지만, 영화 상영에 필요한 품질 요구 사항을 충족시키지 못한다.
디지털 영화 압축 기술은 관람자가 이전부터 경험해 온 시각적 품질을 제공해야 한다. 이상적으로, 디지털 영화의 시각적 품질은 고품질 일반 상영용 필름의 시각적 품질을 능가해야 한다. 동시에, 압축 기술은 실용화될 수 있는 높은 코딩 효율을 가져야 한다. 여기에서 정의된 바와 같이, 코딩 효율이란 압축된 화상 품질이 소정 품질 레벨을 충족시키는데 필요한 비트율을 의미한다. 또한, 시스템과 코딩 기술은 상이한 포맷에 적용할 수 있는 내장형 유연성 (bulit-in flexibility) 을 가져야 하며, 비용 효율적, 즉, 작은 사이즈의 효율적 디코더 또는 인코더 프로세스여야 한다.
소정 레벨의 품질을 유지하면서 상당한 레벨의 압축을 제공할 수 있는 한가지 압축 기술은 인코딩된 DCT (Discrete Cosine Transform) 계수 데이터에 대한 적응 사이즈형 블록 및 서브블록을 이용한다. DCT 기술이 디지털 압축 방법으로서 광범위한 호응을 얻고 있긴 하지만, 효율적인 하드웨어 구현에 어려움이 있었다.
발명의 요약
본 발명은 인코딩된 데이터의 적응적 블록 사이즈형 DCT 의 효율적 하드웨어 구현을 제공한다. 장치는 복수 개의 데이터 요소 (data elements) 를 포함하는 인코딩 데이터 블록의 변환을 결정하도록 구성된다. 입력 레지스터는 소정량의 데이터 요소를 수신하도록 구성된다. 입력 레지스터에 하나 이상의 버터플라이 프로세서가 결합되며, 데이터 요소의 선택된 쌍들에 대해 하나 이상의 수학적 연산을 수행하여, 프로세싱된 데이터 요소의 출력을 생성하도록 구성된다. 버터플라이 프로세서에 하나 이상의 중간 레지스터가 결합되며, 프로세싱된 데이터를 일시 저장하도록 구성된다. 중간 레지스터와 버터플라이 프로세서에 피드백 루프가 결합되고, 피드백 루프가 인에이블이라면, 프로세싱된 데이터 요소의 제 1 부분을 적절한 버터플라이 프로세서로 전달하여 추가적인 수학적 연산을 수행하도록 구성되고, 디스에이블이라면, 프로세싱된 데이터 요소의 제 2 부분을 하나 이상의 보유 레지스터 (holding register) 에 전달하도록 구성된다.
따라서, 실시형태의 일 태양은 DCT 및 DQT (discrete quadtree transform) 기술을 효율적으로 구현하는 프로세서를 제공한다.
실시형태의 다른 태양은 IDCT (inverse discrete cosine tranform) 및 IDQT (inverse discrete quadtree tranform) 기술을 효율적으로 구현하는 프로세서를 제공한다.
실시형태의 또 다른 태양은, 동일한 하드웨어 컴포넌트가 동일한 변환 트렐리스내에서 상이한 수학적 연산을 계산하도록 재구성될 수 있는 호환적인 프로세서를 구현한다.
실시형태의 또 다른 태양은 화상 일그러짐을 최소화하면서 고품질의 화상을 보유하는 화상 프로세서를 제공한다.
실시형태의 또 다른 태양은 인코딩된 데이터 부분들을 병렬로 프로세싱한다.
실시형태의 또 다른 태양은 단일 클록 사이클에서 판독, 기입 및 버터플라이 연산을 프로세싱한다.
실시형태의 또 다른 태양은 상이한 블록 사이즈의 데이터를 제어하면서 실시간 프로세싱에 필요한 속도를 유지하는 가변성 (variability) 을 가진 제어 시퀀서 (control sequencer) 를 제공하고 구현한다.
실시형태의 또 다른 태양은 가변 블록 사이즈에서 동작하도록 구성될 수 있는 프로세서를 구현한다.
도면의 간단한 설명
유사한 참조 부호가 전체에 걸쳐 일관되게 사용되는 도면을 참조하여, 본 발명의 태양, 특징, 목적 및 이점들을 보다 상세히 설명한다.
도 1a 및 도 1b 는 데이터 블록의 컬럼 및 로우 프로세싱 (column and row processing) 의 블록도이다.
도 2a 는 인코딩 프로세스에 의한 데이터 흐름을 나타내는 블록도이다.
도 2b 는 디코딩 프로세스에 의한 데이터 흐름을 나타내는 흐름도이다.
도 2c 는 분산 기반형 블록 사이즈 할당 (variance based block size assignment) 과 관련된 프로세싱 단계를 나타내는 블록도이다.
도 3 은, 본 발명을 구체화하는 DCT 및 DQT 와 같은 변환을 계산하는 장치를 나타내는 블록도이다.
도 4 는 도 3 의 장치에 의해 구현되는 DCT 트렐리스 (trellis) 를 나타낸다.
도 5 는 도 3 의 장치에 의해 구현되는 IDCT 트렐리스를 나타낸다.
도 6 은 입출력 멀티플렉서를 갖는 단일 버터플라이 프로세서를 나타낸다.
도 7 은 기입 멀티플렉서의 블록도를 나타낸다.
도 8 은 버터플라이 프로세서의 블록도를 나타낸다.
도 9a 는 도 8 의 버터플라이 프로세서에 의해 수행될 수 있는 무연산 (No Operation) 구성을 나타낸다.
도 9b 는 도 8 의 버터플라이 프로세서에 의해 수행될 수 있는 누적 연산 (Accumulate Operation) 구성을 나타낸다.
도 9c 는 도 8 의 버터플라이 프로세서에 의해 수행될 수 있는 버터플라이 DCT 연산 구성을 나타낸다.
도 9d 는 도 8 의 버터플라이 프로세서에 의해 수행될 수 있는 버터플라이 IDCT 연산 구성을 나타낸다.
도 9e 는 도 8 의 버터플라이 프로세서에 의해 수행될 수 있는 누적 레지스터 연산 구성을 나타낸다.
도 9f 는 도 8 의 버터플라이 프로세서에 의해 수행될 수 있는 DQT/IDQT 연산 구성을 나타낸다.
도 10 은, 본 발명을 구체화하는 DCT 및 DQT 와 같은 변환을 계산하는 프로세스를 나타내는 흐름도를 보여준다.
도 11a 는 예시적 블록 사이즈 할당을 나타낸다.
도 11b 는 도 11a 의 블록 사이즈 할당에 대응하는 쿼드-트리 분할 (quad-tree decomposition) 을 나타낸다.
도 11c 는 도 11a 의 블록 사이즈 할당에 대응하는 PQR 데이터를 나타낸다.
바람직한 실시형태의 상세한 설명
디지털 신호의 디지털 전송을 용이하게 하고 그에 따른 이점을 향수하기 위해서, 일반적으로 몇가지 형태의 신호 압축을 이용해야 한다. 얻어진 화상에 높은 해상도를 실현하기 위해서, 고품질의 화상을 유지하는 것도 중요하다. 또한, 컴팩트한 하드웨어 구현을 위해 계산의 효율성이 필요한데, 이는 많은 애플리케이션에 있어서 중요한 점이다.
따라서, 푸리에 변환, 웨이브릿 (wavelet) 및 DCT 와 같은 공간적 주파수-영역 기술 (spatial frequency-domain techniques) 은 일반적으로 상기 기준들을 충족시킨다. DCT 는 에너지 패킹 기능을 가지며 신호를 디코릴레이팅 (decorellating) 할 경우 통계적 최적 변환에 근접한다. DCT 의 효율적 구현을 위한 다양한 알고리즘의 개발은 응용성의 주류에도 기여한다. 이들 알고리즘의 계산 복잡성 감소 및 자기 호출 구조로 인해 하드웨어 방식이 보다 간략해진다. 일반적으로 DCT 는 직교하며 분리가능하다. DCTs 가 직교라는 사실은 신호의 에너지 또는 정보가 변환, 즉, DCT 영역으로의 매핑하에서도 보존된다는 것을 의미한다. DCTs 가 분리가능하다는 사실은 일련의 1-차원 변환에 의해 다차원 DCT 가 구현될 수 있음을 의미한다. 따라서, 1-차원 DCT 를 위한 고속 알고리즘을 개발하여 다차원 변환으로 직접 확장할 수 있다.
DCT 에서, 픽셀 블록은 주파수 영역의 동일 사이즈 계수 블록으로 변환된다. 기본적으로, 이러한 변환은 직교하는 기본 화상 (basis images) 의 선형 조합으로서 픽셀 블록을 표현한다. 계수의 크기는 픽셀 블록과 기본 화상의 유사 정도를 나타낸다.
일반적으로, 디지털 영역에서 프로세싱될 화상은 N ×N 사이즈의 논-오버랩핑 (non-overlapping) 블록의 어레이로 분할되는 픽셀 데이터로 이루어진다. 각 블록에 대해 2-차원 DCT 가 수행될 수 있다. 2-차원 DCT 는 다음의 관계식으로 정의되며,
Figure 112003042990304-pct00001
x(m,n) 은 N ×M 블록내의 픽셀 위치 (m,n) 이고,
X(k,l) 은 대응하는 DCT 계수이다.
픽셀값이 논-네거티브 (non-negative) 이므로, DCT 컴포넌트 X(0,0) 는 항상 포지티브 (positive) 이고 일반적으로 대부분의 에너지를 갖는다. 실제로, 통상적인 화상의 경우, 변환 에너지의 대부분은 컴포넌트 X(0,0) 주위에 집중된다. 이러한 에너지 압축 특성으로 인해, DCT 기술이 이처럼 흥미로운 압축 방법이 된다.
대부분의 자연스러운 화상들은 비교적 느린 변화 영역의 평면 및, 대상의 경계와 높은 콘트라스트의 텍스처 (high-contrast texture) 와 같은 빠른 변화의 영역으로 이루어진다. 콘트라스트 적응적 코딩 방식은 빠른 변화의 영역에 더 많은 비트를 그리고 덜 빠른 영역에 더 적은 비트를 할당함으로써, 이러한 팩터를 이용한다. 본 발명의 양수인에게 양도되고 여기에서 참조하는, "Adaptive Block Size Image Compression Method And System" 이라는 명칭의 미국특허 제 5,021,891 호에, 이러한 기술이 개시되어 있다. 본 발명의 양수인에게 양도되고 여기에서 참조하는, "Adaptive Block Size Image Compression Method And System" 이라는 명칭의 미국특허 제 5,107,345 호에도, DCT 기술이 개시되어 있다. 또한, 본 발명의 양수인에게 양도되고 여기에서 참조하는, "Adaptive Block Size Image Compression Method And Sytem" 이라는 명칭의 미국특허 제 5,452,104 호에는, DQT (Differential Quadtree Transform) 기술과 조합된 ABSDCT 기술의 이용이 개시되어 있다. 이들 특허에 개시된 시스템들은, 화상 데이터의 각 프레임이 다른 프레임의 내용에 대한 고려없이 인코딩되는 "프레임 내부 (intra-frame)" 인코딩이라는 것을 이용한다. ABSDCT 기술을 이용하면, 화상 품질의 식별가능한 성능 저하없이, 실현가능한 데이터 속도를 상당히 감소시킬 수 있다.
ABSDCT 를 이용하면, 일반적으로 비디오 신호는 프로세싱을 위한 프레임과 픽셀 블록으로 분할된다. DCT 연산자는 타임-샘플링된 신호를 동일한 신호의 주파수 표현으로 변환하는 한가지 방법이다. 주파수 표현으로 변환함으로써, 화상의 주파수 분포 특성을 이용하도록 양자화기 (quantizers) 를 설계할 수 있으 므로, DCT 기술은 아주 높은 레벨의 압축을 허용한다는 것을 알 수 있다. 바람직한 실시형태에서, 하나의 16 ×16 DCT 가 제 1 순서화 (ordering) 에 이용되고, 4 개의 8 ×8 DCT 가 제 2 순서화에 이용되며, 16 개의 4 ×4 DCT 가 제 3 순서화에 이용되고, 64 개의 2 ×2 DCT 가 제 4 순서화에 이용된다.
화상 프로세싱을 위해, 논-오버랩핑 블록의 어레이로 분할된 픽셀 데이터에 DCT 연산이 수행된다. 여기에서는 블록 사이즈를 N ×N 사이즈인 것으로 논의하지만, 다양한 블록 사이즈가 이용될 수 있다. 예를 들어, N ×M 블록 사이즈가 이용될 수도 있는데, 이 경우, N 과 M 은 정수이고, M 은 N 이하이다. 또 하나의 중요한 태양은, 이 블록이 N/i ×N/i, N/i ×N/j, N/i ×M/j 등 (i 및 j 는 정수) 과 같은 하나 이상 레벨의 서브-블록으로 분할될 수 있다는 것이다. 또한, 여기에서 개시된 예시적 블록 사이즈는 대응하는 DCT 계수의 블록과 서브-블록을 갖는 16 ×16 픽셀 블록이다. 또한, 예를 들어, 9 ×9 와 같이, 모두가 짝수 또는 홀수의 정수값과 같은 여러 가지 다른 정수가 사용될 수 있다.
컬러 신호는 RGB 공간에서 YC1C2 공간으로 변환될 수 있는데, Y 는 휘도 또는 밝기 (luminance or brightness) 성분이고, C1 및 C2 는 크로미넌스 (chrominance) 또는 컬러 성분이다. 컬러에 대한 눈의 낮은 공간 감도로 인해, 많은 시스템은 수평 및 수직 방향에서 4 의 팩터만큼 C1 및 C2 성분을 서브-샘플링한다. 그러나, 서브-샘플링은 불필요하다. 4:4:4 포맷으로 공지되어 있는 완전 해상도의 화상 (full resolution image) 은 디지털 영화의 커버링 (covering) 과 같은 몇몇 애플리케이션에 아주 유용하거나 필요한 것일 수 있다. 가능한 2 개의 YC1C2 표현은 YIQ 표현 및 YUV 표현이며, 양자는 널리 공지되어 있다. 또한, YCbCr 로 공지되어 있는 YUV 표현의 변형을 이용할 수도 있다.
도 1a 및 도 1b 는 인코딩된 데이터의 N ×N 블록 (100 및 120) 에 대한 컬럼 및 로우 프로세싱을 나타낸다. N 차원 변환은 N 개의 1-차원 변환의 캐스케이드로서 수행될 수 있다. 예를 들어, 2 ×2 DCT 는 2 개의 1-차원 DCT 프로세스의 캐스케이드로서 수행되는데, 먼저, 각 컬럼에 대해 연산한 다음 각 로우에 대해 연산을 수행한다. 제 1 컬럼 m (104) 을 프로세싱한 다음, 컬럼 m+1 (108) 을 프로세싱하고, 컬럼 m+2 (112) 를 프로세싱하는 식으로 컬럼 n (116) 까지 프로세싱한다. 컬럼을 프로세싱한 후, 도 1b 에 나타낸 바와 같이, 로우 (120) 를 프로세싱한다. 먼저, 로우 m (124) 을 프로세싱한 다음, 로우 m+1 (128) 을 프로세싱하고, 로우 m+2 (132) 를 프로세싱하는 식으로 로우 n (136) 까지 프로세싱한다.
마찬가지로, 다른 일례로는 IDCT 프로세싱을 필요로 하는 8 ×8 데이터 블록을 들 수 있다. 8 ×8 블록은 4 개의 2-차원 IDCT 로 분할될 수 있다. 그 다음, 2-차원 IDCT 각각은 도 1a 및 도 1b 를 참조하여 설명한 2-차원 DCT 와 동일한 방식으로 프로세싱될 수 있다.
도 2a 는 인코딩 프로세스 동안의 인코딩된 데이터 흐름을 나타내는 블록도 (250) 이다. 인코딩 프로세스에서, 인코딩된 데이터는 픽셀 영역에서 주파수 영역으로 변환된다. 도 2b 는 디코딩 프로세스에 의한, 인코딩된 데이터의 흐름을 나타내는 블록도 (254) 이다. 디코딩 프로세스에서, 인코딩된 데이터는 주파수 영역에서 픽셀 영역으로 변환된다. 인코딩 프로세스 (250) 에서 나타낸 바와 같이, 먼저, 인코딩된 데이터의 BSA (block sized assignment ; 258) 가 수행된다. 실시형태의 일 태양에서, Y, Cb, 및 Cr 성분 각각은 서브-샘플링없이 프로세싱된다. 따라서, 16 ×16 픽셀 블록의 입력은, 비디오 압축을 위한 준비로서 블록 사이즈 할당을 수행하는 블록 사이즈 할당 소자 (258) 에 제공된다.
블록 사이즈 할당 소자 (258) 는 블록의 화상에 대한 인식 특성 (perceptual characteristics) 에 기초하여 블록의 블록 분할을 결정한다. 블록 사이즈 할당은 16 ×16 블록내의 액티브티 (activity) 에 따라 각각의 16 ×16 블록을 쿼드-트리 (quad-tree) 양식의 더 작은 블록으로 세분한다. 블록 사이즈 할당 소자 (258) 는, PQR 데이터라 하며, 그 길이가 1 개 내지 21 개 비트일 수 있는 쿼드-트리 데이터를 생성한다. 따라서, 블록 사이즈 할당이 16 ×16 블록을 분할할 것으로 결정하면, PQR 데이터의 R 비트가 설정되고 4 개의 분할된 8 ×8 블록에 대응하는 Q 데이터의 부가적인 4 개 비트가 수반된다. 블록 사이즈 할당이 8 ×8 블록들 중 어떤 것을 세분할 것으로 결정하면, 세분된 8 ×8 블록 각각에 대해 P 데이터의 부가적인 4 개 비트가 부가된다.
데이터는 2 ×2, 4 ×4, 8 ×8 및 16 ×16 과 같은 블록 사이즈로 분할된다. 그 다음, 인코드 데이터 프로세서는 도 3 을 참조하여 설명하는 바와 같이, 인코딩된 데이터 (262) 의 변환 (DCT/DQT) 을 수행한다. DCT/DQT 프로세스 (262) 가 완료되고 나면, 인코딩된 데이터에 대해 양자화 프로세스 (QB ; 266) 가 수행된다. 이로써, 인코딩된 데이터의 픽셀 영역으로부터 주파수 영역으로의 변환이 완료된다.
일 실시형태에서, DCT 계수는 FWMs (frequency weighting masks) 와 양자화 스케일 팩터 (quantization scale factor) 를 이용해 양자화된다. FWM 은 입력 DCT 계수의 블록과 동일한 차원의 주파수 가중치 테이블이다. 주파수 가중치는 상이한 DCT 계수에 상이한 가중치를 적용한다. 가중치는 인간의 시각계 (human visual system) 가 보다 민감한 주파수 컨텐츠 (content) 를 갖는 입력 샘플은 강조하고 시각계가 덜 민감한 주파수 컨텐츠를 갖는 입력 샘플은 덜 강조하도록 설계된다. 또한, 가중치는 시야 거리 (viewing distances) 등과 같은 팩터에 기초해서 설계될 수도 있다.
허프만 코드 (Huffman codes) 는 화상에 대한 측정 통계치 또는 이론적 통계치 중의 하나로부터 설계된다. 가장 자연스러운 화상은 블랭크 또는 상대적으로 느리게 변하는 영역, 및 대상 경계와 높은 콘트라스트의 텍스처와 같이 빠르게 변하는 영역으로 이루어져 있다. 주파수-영역의 허프만 코더는, 빠르게 변하는 영역에 더 많은 비트를 할당하고 블랭크 영역에 더 적은 비트를 할당함으로써 DCT 가 이러한 특징들을 이용하도록 변환한다. 일반적으로, 허프만 코더는 룩업 테이블 (look-up table) 을 이용하여 런-렝스 (run-length) 및 논-제로값 (non-zero values) 을 코딩한다.
가중치는 경험적 데이터에 기초하여 선택된다. 여기에서 참조하고 있는, ISO/IEC JTC1 CD 10918, "Digital compression and encoding of continuous-tone still images - part 1 : Requirements and guidelines", International Standards Organization, 1994 에, 8 ×8 DCT 계수에 대한 가중 마스크를 설계하는 방법이 개시되어 있다. 일반적으로, 2 개의 FWM 이 설계되는데, 하나는 휘도 성분에 대한 것이고 하나는 크로미넌스 성분에 대한 것이다. 데시메이션 (decimation) 에 의해, 블록 사이즈 2 ×2, 4 ×4 에 대한 FWM 테이블을 얻고, 8 ×8 블록에 대한 것을 보간 (interpolation) 함으로써, 16 ×16 을 얻는다. 스케일 팩터는 양자화된 계수의 품질 및 비트율을 제어한다.
따라서, 각각의 DCT 계수는 다음의 관계식에 따라 양자화되는데,
Figure 112003042990304-pct00002
여기서, DCT(i,j) 는 입력 DCT 계수이고, fwm(i,j) 는 주파수 가중 마스크이며, q 는 스케일 팩터이고, DCTq(i,j) 는 양자화된 계수이다. DCT 계수의 부호에 따라, 중괄호 (braces) 내의 첫번째 항은 반올림되거나 버림된다. 또한, DQT 계수도 적절한 가중 마스크를 이용하여 양자화된다. 그러나, 다수의 테이블 또는 마스크가 이용되어 Y, Cb 및 Cr 성분 각각에 적용될 수 있다.
양자화된 계수는 지그재그 스캔 직렬 변환기 (268 ; zigzag scan serializer) 로 제공된다. 직렬 변환기 (serializer ; 268) 는 양자화된 계수 블록을 지그재그 양식으로 스캔하여 양자화된 계수의 직렬 변환된 스트림을 생성한다. 지그재그 이외의 패턴 뿐만 아니라 다수의 상이한 지그재그 스캐닝 패턴이 선택될 수도 있다. 4 ×4 또는 16 ×16 과 같은 다른 사이즈가 이용될 수도 있지만, 바람직한 기술은 지그재그 스캐닝에 8 ×8 블록 사이즈를 이용한다.
지그재그 스캔 직렬 변환기 (268) 는 양자화기 (266) 의 이전 또는 이후에 배치될 수 있다. 최종 결과는 동일하다.
어떤 경우이든, 양자화된 계수의 스트림은 가변 길이 코더 (269) 로 제공된다. 가변 길이 코더 (269) 는 인코딩이 수반되는 제로의 런-렝스 인코딩을 이용할 수 있다. 상기 미국특허 제 5,021,891 호, 제 5,107,345 호, 제 5,452,104 호, 및 여기에서 참조하며 요약하고 있는 계류 중인 미국 특허출원 제 <000163> 호에, 이러한 기술이 상세히 개시되어 있다. 런-렝스 코더는 양자화된 계수를 취하며 불연속적인 계수에서 연속적인 계수의 진행을 인지한다. 연속적인 값을 런-렝스값이라 하며 인코딩된다. 불연속적인 값은 별도로 인코딩된다. 일 실시형태에서, 연속적인 계수는 제로값이며, 불연속적인 계수는 논-제로값이다. 통상적으로, 런 렝스는 0 개 내지 63 개 비트이며, 그 사이즈는 1-10 의 AC 값이다. 파일 코드의 끝은 부가적인 코드를 부가하므로, 총 641 개의 코드가 가능하다.
디코딩 프로세스의 경우, 주파수 영역에서 인코딩된 데이터는 다시 픽셀 영역으로 변환된다. 가변 길이 코더 (269) 는 데이터의 런-렝스 및 사이즈를 생성하며, 이용된 스캔 방식에 따라 계수를 순서화하는 인버스 지그재그 스캔 직렬 변환기 (271) 로 이 데이터를 제공한다. 인버스 지그재그 스캔 직렬 변환기 (271) 는 계수의 복합 계수 블록으로의 적절한 순서화를 지원하는 PQR 데이터를 수신한다. 합성 블록은, 주파수 가중 마스크의 이용으로 인한 프로세싱을 원상태로 되돌리는 인버스 양자화기 (272) 로 제공된다.
그 다음, 인코딩된 데이터에 대해 핑거프린터 (H2O ; 270) 가 수행된다. 핑거프린터는 데이터에 워터마크 (watermark) 또는 다른 식별자 정보를 배치한다. 워터마크는 나중에 리커버링되어 식별자 정보를 나타낼 수 있다. 식별자 정보에는 언제 그리고 어디서 자료가 플레이되었으며, 누가 이러한 자료를 플레이하도록 인증되었는가 등의 정보가 포함될 수 있다. 핑거프린터 (270) 에 수반하여, 디코더 데이터 프로세스 (274 ; IDQT/IDCT) 가 시작되는데, 이는 도 4 를 참조하여 상세히 설명된다. 데이터가 디코딩되고 나면, 데이터는 FBI (Frame Buffer Interface ; 278) 로 송신된다. FBI 는 압축되지 않은 데이터를 한번에 한 프레임씩 판독하고 기입하도록 구성된다. 일 실시형태에서, FBI 는 4 프레임 용량을 갖지만, 저장 용량은 변경될 수 있다.
도 2c 를 참조하면, 블록 사이즈 할당 소자 (258) 의 동작을 상세히 나타내는 흐름도가 제공된다. 알고리즘은 블록을 세분하기 위한 판정의 메트릭으로서 블록의 분산 (variance) 을 이용한다. 단계 202 에서 시작하여, 16 ×16 의 픽셀 블록이 판독된다. 단계 204 에서, 16 ×16 블록의 분산 (v16) 이 계산된다. 분산은 다음과 같이 계산되는데,
Figure 112003042990304-pct00003
여기서, N=16 이고, xij 는 N ×N 블록 내의 ith 로우, jth 컬럼의 픽셀이다. 단계 206 에서, 블록의 평균값 (mean value) 이 2 개의 소정값 사이라면 제 1 분산 임계치 (T16) 는 변경되어 새로운 임계치 (T'16) 를 제공하며, 블록 분산을 새로운 임계치 (T'16) 와 비교한다.
분산 (v16) 이 임계치 (T16) 이하이면, 단계 208 에서, 16 ×16 블록의 시작 어드레스가 기입되며, PQR 데이터의 R 비트를 0 으로 설정하여 16 ×16 블록이 세분되지 않을 것을 나타낸다. 그 다음, 알고리즘은 다음의 16 ×16 픽셀 블록을 판독한다. 분산 (v16) 이 임계치 (T16) 보다 크면, 단계 210 에서, PQR 데이터의 R 비트를 1 로 설정하여 16 ×16 블록이 4 개의 8 ×8 블록으로 세분될 것을 나타낸다.
4 개의 8 ×8 블록 (i=1:4) 은, 단계 212 에 나타낸 바와 같이, 추가적인 세분을 위해 순차적으로 고려된다. 단계 214 에서, 8 ×8 블록 각각에 대해, 분산 (v8i) 을 계산한다. 단계 216 에서, 블록의 평균값이 2 개의 소정값 사이라면 제 1 분산 임계치 (T8) 는 변경되어 새로운 임계치 (T'8) 을 제공하며, 블록의 분산을 이 새로운 임계치와 비교한다.
분산 (v8i) 이 임계치 (T8) 이하이면, 단계 218 에서, 8 ×8 블록의 시작 어드레스가 기입되며, 대응하는 Q 비트 (Qi) 는 0 으로 설정된다. 그 다음, 후속의 8 ×8 블록이 프로세싱된다. 분산 (v8i) 이 임계치 (T8) 보다 크면, 단계 220 에서, 대응하는 Q 비트 (Qi) 는 1 로 설정되어, 8 ×8 블록이 4 개의 4 ×4 블록으로 세분될 것을 나타낸다.
4 개의 4 ×4 블록 (ji=1:4) 은, 단계 222 에 나타낸 바와 같이, 추가적인 세분을 위해 순차적으로 고려된다. 단계 224 에서, 4 ×4 블록 각각에 대해, 분산 (v4ij) 을 계산한다. 단계 226 에서, 블록의 평균값이 2 개의 소정값 사이라면, 제 1 분산 임계치 (T4) 는 변경되어 새로운 임계치 (T'4) 을 제공하며, 블록의 분산을 이 새로운 임계치와 비교한다.
분산 (v4ij) 이 임계치 (T4) 이하이면, 단계 228 에서, 4 ×4 블록의 시작 어드레스가 기입되며, 대응하는 P 비트 (Pij) 는 0 으로 설정된다. 그 다음, 후속의 4 ×4 블록이 프로세싱된다. 분산 (v4ij) 이 임계치 (T4) 보다 크면, 단계 230 에서, 대응하는 P 비트 (Pij) 가 1 로 설정되어, 4 ×4 블록이 4 개의 2 ×2 블록으로 세분될 것을 나타낸다. 또한, 4 개의 2 ×2 블록의 어드레스가 기입된다.
임계치 (T16, T8 및 T4) 는 상수값으로 결정될 수 있다. 이는 하드 판정 (hard decision) 이라 한다. 다른 방법으로, 적응적 또는 소프트 판정 (adaptive of soft decision) 이 구현될 수 있다. 소프트 판정은 2N ×2N (N 은 8, 4 또는 2 일 수 있음) 블록의 평균 픽셀값에 따라 분산에 대한 임계치를 변경시킨다. 따라서, 평균 픽셀값의 함수가 임계치로 이용될 수 있다.
예시를 위하여, 다음의 일례를 고려한다. 16 ×16, 8 ×8 및 4 ×4 블록에 대한 Y 성분의 소정 분산 임계치가 각각 50, 1100 및 880 이라 한다. 다시 말해, T16 = 50, T8 = 1100 그리고 T4 = 880 이다. 평균값의 범위는 80 및 100 이라 한다. 16 ×16 블록에 대해 계산된 분산은 60 이라 한다. 60 과 그 평균값 90 은 T16 보다 크기 때문에, 16 ×16 블록은 4 개의 8 ×8 서브-블록으로 세분된다. 8 ×8 블록에 대해 계산된 분산은 1180, 935, 980 및 1210 이라 한다. 2 개의 8 ×8 블록이 T8 을 초과하는 분산을 가지므로, 이들 2 개의 블록은 더 세분되어 총 8 개의 4 ×4 서브-블록을 생성한다. 마지막으로, 처음 4 개의 대응하는 평균값은 90, 120, 110, 115 이며, 8 개의 4 ×4 블록에 대한 분산이 620, 630, 670, 610, 590, 525, 930 및 690 이라 한다. 제 1 의 4 ×4 블록에 대한 평균값이 (80, 100) 범위에 속하므로, 그 임계치는 880 보다 작은 T'=200 으로 낮춰진다. 따라서, 제 7 의 4 ×4 블록 뿐만 아니라 4 ×4 의 이 블록도 세분되게 된다. 결과적인 블록 사이즈 할당을 도 11a 에 나타낸다. 대응하는 쿼드-트리 분할은 도 11b 에 나타낸다. 이러한 블록 사이즈 할당에 의해 생성된 PQR 데이터는 도 11c 에 나타낸다.
컬러 성분 C1 및 C2 에 대한 블록 사이즈 할당에도 유사한 과정이 이용된다. 컬러 성분은 수평으로, 수직으로, 또는 양쪽으로 데시메이션될 수 있다. 또한, 최대 블록 (본 일례에서는 16 ×16) 이 먼저 평가되는 하향식 접근 방식으로 설명하였지만, 대신에 상향식 접근 방식을 이용할 수도 있다. 상향식 접근 방식은 최소 블록 (본 일례에서는 2 ×2) 을 먼저 평가한다.
선택된 블록의 어드레스와 함께 PQR 데이터를 DCT/DQT 소자 (262) 로 제공한다. DCT/DQT 소자 (262) 는 PQR 데이터를 이용하여 선택된 블록에 대해 적절한 사이즈의 DCT 를 수행한다. 선택된 블록에 대해서만 DCT 프로세싱이 수행된다. 또한, DQT 는 DCTs 의 DC 계수 사이에서 리던던시 (redundancy) 를 감소시키는데 이용된다. DC 계수는 DCT 블록 각각의 상좌측 코너 (top left corner) 에서 발견할 수 있다. 일반적으로, DC 계수는 AC 계수에 비해 크다. 사이즈의 불일치로 인해 효율적인 가변 길이 코더를 설계하기 어렵다. 따라서, DC 계수들 사이의 리던던시를 감소시키는 것이 바람직하다. DQT 소자는 한번에 2 ×2 를 취하여 DC 계수에 대한 2-D DCTs 를 수행한다. 4 ×4 블록내의 2 ×2 블록으로 시작하여, 4 개의 DC 계수에 대해 2-D DCT 가 수행된다. 이러한 2 ×2 DCT 를 4 개 DC 계수의 DQT (differential quad-tree transform) 이라 한다. 다음으로, 8 ×8 블록을 가진 3 개의 인접한 DC 계수와 함께 DQT 의 DC 계수가 후속 레벨의 DQT 를 계산하는데 이용된다. 마지막으로, 16 ×16 블록내의 4 개의 8 ×8 블록에 대한 DC 계수가 DQT 를 계산하는데 이용된다. 따라서, 16 ×16 블록에는, 하나의 진정한 DC 계수가 있고, 나머지는 DCT 및 DQT 에 대응하는 AC 계수이다.
프레임내에서, 각각의 16 ×16 블록이 독자적으로 계산된다. 따라서, 소정 블록에 이용되는 프로세싱 알고리즘은 PQR 에 의해 결정되는 바와 같이 필요에 따라 변경될 수 있다.
도 3 은 인코딩된 데이터의 블록 (300) 에 대한 DCT/DQT 및 IDQT/IDCT 의 계산을 나타내는 블록도이다. 인코드 모드에서는, 도 3 에 나타낸 바와 같이, 인코딩된 데이터는 처음에 픽셀 영역에 있다. 인코딩된 데이터가 중간 단계를 통해 프로세싱됨에 따라, 인코딩된 데이터는 주파수 영역으로 변환된다. 디코드 모드에서는, 인코딩된 데이터가 처음에 주파수 영역에 있다. 인코딩된 데이터가 중간 단계를 통해 프로세싱됨에 따라, 인코딩된 데이터는 픽셀 영역으로 변환된다.
도 3 을 참조하면, 인코딩된 데이터의 하나 이상의 M ×N 블록이 트랜스포즈 RAM (304 ; transpose RAM) 에 저장된다. 트랜스포즈 RAM (304) 은 하나 이상의 M ×N 데이터 블록을 포함할 수 있다. 인코딩된 데이터의 2 개 블록을 갖는 일 실시형태에서, 하나는 현재의 M ×N 데이터 블록 (308) 을 포함하도록 구성되고, 다른 것은 후속의 M ×N 데이터 블록 (312) 을 포함하도록 구성된다. 데이터 블록 (308 및 312) 은 (인코드 모드에서는) 도 2a 에 나타낸 바와 같이 블록 사이즈 할당 소자 (258) 으로부터 트랜스포즈 RAM (304) 으로 전달되고, (디코드 모드에서는) 도 2b 에 나타낸 바와 같이 핑거프린터 (270) 로부터 트랜스포즈 RAM (304) 으로 전달된다. 일 실시형태에서, 트랜스포즈 RAM (304) 은, 트랜스포즈 RAM 인터페이스 (316) 가 현재의 데이터 블록 (308) 을 프로세싱하고 핑거프린터 (270) 로부터 후속의 데이터 블록을 수신하는 듀얼 포트 RAM 일 수 있다. 트랜스포즈 RAM 인터페이스 (316) 는 타이밍을 제어하며, 트랜스포즈 RAM (304) 으로부터 데이터 블록을 판독하고 트랜스포즈 RAM (304) 에 기입할 수 있게 하는 버퍼링 메모리를 가질 수 있다. 일 실시형태에서, 트랜스포즈 RAM (304) 및 트랜스포즈 RAM 인터페이스 (316) 는 제어 시퀀서 (324) 로부터의 하나 이상의 제어 신호에 응답할 수 있다.
인코딩된 데이터는 트랜스포즈 RAM (304) 으로부터 (또는 트랜스포즈 RAM 인터페이스 (316) 를 통해) 데이터 프로세서 (328) 의 하나 이상의 입력 레지스터 (332) 로 들어간다. 일 실시형태로서, 16 개의 입력 레지스터 (332) 가 있다. 일 실시형태로서, 데이터 프로세서 (328) 는, 도 1 에 나타낸 바와 같이, 먼저 컬럼 데이터를 프로세싱한 다음 로우 데이터를 프로세싱한다. 다른 방법으로, 데이터 프로세서 (328) 가 로우를 프로세싱한 다음 컬럼을 프로세싱할 수도 있지만, 이하의 설명은 로우 데이터 이전에 컬럼 데이터가 프로세싱되는 것으로 가정한다. 입력 레지스터 (332) 는 16 ×16 블록의 단일 컬럼의 인코딩 데이터로 이루어진다. 데이터 프로세서 (328) 는 인코딩된 데이터에 대해 컬럼 단위로 (column by column) 수학적 연산을 수행함으로써 변환을 계산하고, 이 데이터를 다시 트랜스포즈 RAM (304) 에 기입한다. 데이터의 컬럼을 프로세싱한 후, 데이터 프로세서 (328) 는 인코딩된 데이터의 각 로우를 프로세싱한다. 인코딩된 데이터의 각 로우를 프로세싱한 후, 데이터 프로세서 (328) 는 출력 레지스터 (352) 를 통해 데이터를 출력한다.
일 실시형태에서, 데이터 블록은 인코딩된 데이터의 16 ×16 블록이지만, 32 ×32, 8 ×8, 4 ×4, 2 ×2 또는 이들의 조합과 같은 임의 사이즈의 데이터 블록이 이용될 수 있다. 따라서, 데이터 프로세서 (328) 가 트랜스포즈 RAM (304) 으로부터의 데이터 블록 (예를 들어, 현재의 M ×N 데이터 블록 (308)) 을 프로세싱하고 있을 때, 트랜스포즈 RAM 인터페이스 (316) 는 (인코드 모드의 경우) BSA (258) 로부터 또는 (디코드 모드의 경우) 핑거프린터 (270) 로부터 후속의 데이터 블록 (312) 을 수신한다. 데이터 프로세서 (328) 가 현재의 데이터 블록 (308) 에 대한 프로세싱을 완료했을 때, 트랜스포즈 RAM 인터페이스 (316) 는 트랜스포즈 RAM (304) 인터페이스로부터 후속의 데이터 블록 (312) 을 판독하고 이를 데이터 프로세서 (328) 로 전달한다. 이와 같이, 트랜스포즈 RAM (304) 인터페이스로부터의 데이터는, 트랜스포즈 RAM 인터페이스 (316) 와 제어 시퀀서 (324) 에 의해 지시되는 바에 따라, 현재의 데이터 블록 (308) 과 후속의 데이터 블록 (312) 사이에서 토글링된다.
데이터 프로세서 (328) 는 입력 레지스터 (332), 모나크 버터플라이 클러스터 (336 ; monarch butterfly cluster) 내의 하나 이상의 버터플라이 프로세서 및 하나 이상의 중간 데이터 레지스터 (340) 를 구비한다. 데이터 프로세서 (328) 는 보유 레지스터 (344), 기입 멀티플렉서 (348) 및 출력 데이터 레지스터 (352) 도 구비할 수 있다. 모나크 버터플라이 클러스터 (336) 는 제 1 입력 멀티플렉서 (356) 를 더 구비할 수 있고, 중간 데이터 레지스터 (340) 는 제 2 입력 멀티플렉서 (360) 를 더 구비할 수 있다. 데이터 프로세서 (328) 의 상기 컴포넌트들은 제어 시퀀서 (324) 에 의해 제어되는 것이 바람직하다.
동작시, 소정의 데이터 컬럼 또는 로우에 대해, 입력 레지스터 (332) 는 트랜스포즈 RAM (304) 인터페이스로부터 트랜스포즈 RAM 인터페이스 (316) 를 통해 인코딩된 데이터를 수신하도록 구성된다. 제어 시퀀서 (324) 는 입력 레지스터의 소정 어드레스를 인에이블하여 입력 멀티플렉서 (356) 를 통해 데이터를 송신한다. 데이터 입력은 입력 멀티플렉서 (356) 를 통한 선택에 의해, 인코딩된 데이터의 적절한 쌍이 수학적 연산을 위해 선택되도록 리시퀀싱 (resequencing) 된다. 제어 시퀀서 (324) 에 의해 제어되어, 입력 멀티플렉서 (356) 는 데이터를 모나크 버터플라이 클러스터 (336) 로 전달한다. 모나크 버터플라이 클러스터 (336) 는 하나 이상의 버터플라이 프로세서를 구비한다. 일 실시형태에서, 모나크 버터플라이 클러스터 (336) 는 4 개의 개별적인 버터플라이 프로세서 (364, 368, 372 및 376) 를 구비하고, 제어 시퀀서 (324) 는 인코딩된 데이터를 입력 멀티플렉서 (356) 를 통해 적절한 버터플라이 프로세서로 라우팅한다.
개별적인 버터플라이 프로세서 각각 (364, 368, 372 또는 376) 은 DCT, IDCT, DQT 및 IDQT 와 같은 1-차원 변환을 수행할 수 있다. 일반적으로 1-차원 변환은 단순한 가산기, 감산기 또는 승산기와 같은 수치적 연산과 관련이 있다. 1 쌍의 데이터 요소에 대해 1-차원 변환의 일부를 수행한 후, 얻어진 출력은 중간 데이터 레지스터 (340) 로 전달된다. 중간 데이터 레지스터 (340) 는 제어 시퀀서 (324) 에 응답할 수 있다. 제어 시퀀서는 스테이트 머신, 마이크로컨트롤러 또는 프로그램가능한 프로세서와 같은 장치일 수 있다. 중간 데이터 레지스터 (340) 가 제어 시퀀서 (324) 에 응답하는 일 실시형태에서, 중간 데이터 레지스터 (340) 에 저장되어 있는 선택된 데이터 요소는 피드백 경로 (380) 를 이용하고 제 1 입력 멀티플렉서 (356) 를 통해 적절한 버터플라이 프로세서로 피드백되어 다시 프로세싱된다 (즉, 1-차원 변환의 또 다른 부분). 이러한 피드백 루프는 인코딩된 데이터에 대한 1-차원 프로세싱이 완료될 때까지 계속된다. 데이터의 프로세싱이 완료될 때, 중간 데이터 레지스터 (340) 로부터의 데이터는 WRBR 보유 레지스터에 (344) 기입된다. 프로세싱 중인 데이터가 컬럼 데이터이면, 데이터는 WRBR 보유 레지스터 (344) 로부터 기입 멀티플렉서 (348) 를 통해 기입되어 트랜스포즈 RAM (304) 에 다시 저장됨으로써, 로우 프로세싱이 시작될 수 있다. 기입 멀티플렉서 (348) 는 프로세싱된 컬럼 데이터를 다시 원래의 순서로 리시퀀싱하도록 제어된다. 보유 레지스터의 데이터가 로우 데이터이면 (그에 따라, 컬럼 프로세싱이 완료되었다면), 데이터는 출력 레지스터 (352) 로 라우팅된다. 그 다음, 제어 시퀀서 (324) 는 데이지 체인 멀티플렉서 (daisy chain multiplexer) 및 출력 데이터 레지스터 (352) 로부터의 데이터 출력을 제어할 수 있다.
도 4 는 도 3 의 데이터 경로 프로세서 (328) 에 의해 인코드 모드에서 구현될 수 있는 DCT 트렐리스를 나타낸다. 마찬가지로, 도 5 는 도 3 의 데이터 경로 프로세서 (328) 에 의해 디코드 모드에서 구현될 수 있는 IDCT 트렐리스를 나타낸다. PQR 데이터에 의해 지시되는 바에 따라 그리고/또는 수행 중인 계산의 형태에 따라, 제어 시퀀서 (324) 는 인코딩된 데이터의 상이한 쌍을 선택하여 조합할 수 있고, 1-차원 변환의 일부를 수행한다. 예를 들어, 도 4 의 트렐리스에서는, 8 개의 연산이 컬럼 (404) 에서 발생한다. 이 연산은 x(0)+x(7), x(1)+x(6), x(3)+x(4), x(2)+x(5), x(0)-x(7), x(1)-x(6), x(3)-x(4) 및 x(2)-x(5) 와 같이 표시된다. (도 3 에 나타낸 바와 같은) 버터플라이 프로세서들 (364, 368, 372 및 376) 각각은 소정 클록 사이클에서 4 개의 연산 중 하나를 핸들링한다. 따라서, 예를 들어, 모두 동일한 클록 사이클에서, 버터플라이 프로세서 (364) 는 x(0)+x(7) 및 x(0)-x(7) 의 연산을 계산하고, 버터플라이 프로세서 (368) 는 x(1)+x(6) 및 x(1)-x(6) 의 연산을 계산하며, 버터플라이 프로세서 (372) 는 x(3)+x(4) 및 x(3)-x(4) 의 연산을 계산하고, 버터플라이 프로세서 (376) 는 x(2)+x(5) 및 x(2)-x(5) 의 연산을 계산한다. 이들 연산 각각의 결과는 파이프라인 레지스터 또는 중간 데이터 레지스터 (340) 에 일시 저장된 다음, 입력 멀티플렉서 (360) 로 라우팅될 수 있다. 도 9c 및 도 9d 를 참조하여, 파이프라인 레지스터의 동작을 상세히 설명한다.
선택적으로, 후속의 클록 사이클에서 동일한 4 개의 버터플라이 프로세서를 이용하여 나머지 4 개의 승산 연산이 계산된다. 따라서, 버터플라이 프로세서 (364) 는 [x(0)-x(7)]*(1/2C1 16) 을 계산하고, 버터플라이 프로세서 (368) 는 [x(1)-x(6)]*(1/2C3 16) 을 계산하며, 버터플라이 프로세서 (372) 는 [x(3)-x(4)]*(1/2C7 16) 의 연산을 계산하고, 버터플라이 프로세서 (376) 는 [x(2)-x(5)]*(1/2C5 16) 의 연산을 계산한다. 이들 계산의 결과는 중간 데이터 레지스터 (340) 에 일시 저장된다. 계산이 완료되었을 때, 인코딩된 데이터는, 인코 딩된 데이터가 처음 입력되었을 때와 동일한 순서에 있지 않다. 따라서, 제어 시퀀서 (324) 및 입력 멀티플렉서 (356) 는, 각각의 피드백 루프 후에, 필요에 따라, 인코딩 데이터 또는 부분적으로 프로세싱된 인코딩 데이터를 리시퀀싱한다.
후속의 클록 사이클에서는, 컬럼 (408) 에 대한 계산이 수행되며, 중간 데이터 레지스터 (340) 에 다시 저장된 결과는 입력 멀티플렉서 (360) 를 통해 피드백 된다. 또한, 현재 부분적으로 프로세싱되어 있는, 피드백된 인코딩 데이터는 인코딩된 데이터의 해당하는 부분 (right portions) 이 적절한 버터플라이 프로세서로 라우팅되도록 리시퀀싱된다. 따라서, 버터플라이 프로세서 (364) 는 b(0)+b(2) 및 b(0)-b(2) 를 프로세싱한다. 마찬가지로, 버터플라이 프로세서 (368) 는 b(1)+b(3) 및 b(1)-b(3) 을 계산하고, 버터플라이 프로세서 (372) 는 b(4)+b(6) 및 b(4)-b(6) 을 계산하며, 버터플라이 프로세서 (376) 는 b(5)+b(7) 및 b(5)-b(7) 을 계산한다. 얻어진 계산치는 중간 데이터 레지스터 (340) 또는 파이프라인 레지스터를 이용해 다시 저장되며, 입력 멀티플렉서 (360) 를 통해 라우팅된다. 후속의 클록 사이클에서는, 컬럼 (404) 에 대해 설명한 바와 동일한 방식으로, 1/2C1 8, 1/2C3 8, 1/2C1 8 및 1/2C3 8 에 의한 승산이 수행된다. 따라서, 버터플라이 프로세서 (364) 는 b(0)-b(2) * 1/2C1 8 을 계산하고, 버터플라이 프로세서 (368) 는 b(1)-b(3) * 1/2C3 8 을 계산하며, 버터플라이 프로세서 (372) 는 b(1)- b(3) * 1/2C3 8 을 계산하고, 버터플라이 프로세서 (376) 는 b(5)-b(7) * 1/2C3 8 을 계산한다.
후속의 클록 사이클에서는, 컬럼 (412) 에 대해 d(0) 내지 d(7) 위치에서의 값을 위한 계산이 수행되고, 그 결과는 중간 데이터 레지스터 (340) 에 다시 저장되며, 입력 멀티플렉서 (360) 로 피드백된다. 따라서, 버터플라이 프로세서 (364) 는 d(0)+d(1) 및 d(0)-d(1) 을 계산하고, 버터플라이 프로세서 (368) 는 d(2)+d(3) 및 d(2)-d(3) 을 계산하며, 버터플라이 프로세서 (372) 는 d(4)+d(5) 및 d(4)-d(5) 를 계산하고, 버터플라이 프로세서 (376) 는 d(6)+d(7) 및 d(6)-d(7) 을 계산하는 것과 같이, 모두가 동일한 클록 사이클에서, 각각의 버터플라이 프로세서가 각 입력의 각 스테이지를 계산한다. 후속의 클록 사이클에서는, 컬럼 (404 및 408) 에 대해 설명한 바와 동일한 방식으로, 1/2C1 4 에 의한 승산이 계산된다.
컬럼 (416) 은 후속의 클록 사이클에서 버터플라이 프로세서에 의해 계산될 수학적 연산의 후속 세트를 나타낸다. 도 4 의 일례에서 컬럼 (416) 으로 나타낸 바와 같이, 이 클록 사이클 동안에는 2 개의 연산, 즉, f(2) 와 f(3) 성분의 가산 및 f(6) 와 f(7) 성분의 가산만이 필요하다. 따라서, 버터플라이 프로세서 (364) 는 f(2)+f(3) 를 계산하고, 버터플라이 프로세서 (368) 는 f(6)+f(7) 을 계산한다.
후속의 클록 사이클에서는, 컬럼 (420) 에 표현된 계산들이 프로세싱된다. 그에 따라, h(4), h(5) 및 h(6) 에 대한 값들이 계산된다. 따라서, 버터플라이 프로세서 (364) 는 h(4)+h(6) 를 계산하고, 버터플라이 프로세서 (368) 는 h(5)+h(8) 을 계산하며, 버터플라이 프로세서 (372) 는 h(5)+h(6) 를 계산한다.
앞서 살펴본 바와 같이, 도 5 는, 도 4 를 참조하여 설명한 트렐리스와 유사한 방식으로 동작하지만 그 순서는 반대인 IDCT 트렐리스를 나타낸다. IDCT 트렐리스는 인코드 프로세스에서 동작하는 DCT 트렐리스와 달리 디코드 프로세스에서 이용된다. 버터플라이 프로세서 (364, 368, 372 및 376) 는 병렬 프로세싱의 효율성을 이용하면서, 도 4 를 참조하여 설명한 것과 유사한 방식으로 동작한다. 인코드 및 디코드 프로세스 모두에서, 실시형태의 중요한 이점은 트렐리스의 각 스테이지에 대해 동일한 하드웨어를 재사용한다는 것이다. 따라서, 컬럼 (504) 에 나타낸 계산에 이용되는 하드웨어는 컬럼 (508, 512, 516 및 520) 의 계산에 이용되는 하드웨어와 동일하다. 마찬가지로, 컬럼 (404) 에 나타낸 계산에 이용되는 하드웨어는 컬럼 (408, 412, 416 및 420) 의 계산에 이용되는 하드웨어와 동일하다.
도 4 의 트렐리스 끝에 표시되는 최종 결과가 계산되고 나면, 데이터는 중간 데이터 레지스터 (340) 에서 보유 레지스터 (344) 로 전달된다. 보유 레지스터 (344) 및 출력 데이터 레지스터 (352) 는 제어 시퀀서 (324) 에 의해 제어된다. 데이터가 컬럼 데이터라면, 데이터는 기입 멀티플렉서 (348) 로 전달되고 트랜스포즈 RAM (304) 에 다시 저장된다. 또한, 인코딩된 데이터는 인코딩된 데이터의 원래 순서를 반영하도록 리시퀀싱된다. 데이터가 로우 데이터라면, 모든 계산 이 완료됨에 따라, 데이터는 보유 레지스터 (344) 로부터 출력 데이터 레지스터 (352) 로 전달된다.
도 6 은 하나 이상의 입력 및 출력 멀티플렉서를 갖는 단일 버터플라이 프로세서 (600) 의 일례를 나타낸다. 일 실시형태에서, 하나 이상의 중간 데이터 레지스터 (340) 로부터의 데이터 출력 (도 3 참조) 은 입력 멀티플렉서 (612) 의 입력 포털 (input portal) 에 결합된다. 일 실시형태에서, 중간 데이터 레지스터 (340) 각각으로부터의 데이터 출력은 버터플라이 프로세서의 제 1 멀티플렉서 (608) 및 제 2 멀티플렉서 (612) 로 입력된다. 입력 AR 레지스터 (322) 로부터의 데이터 출력 (도 3 참조) 도 입력 멀티플렉서 (604) 를 통해 전달된다. 특히, AR 레지스터 (AR(0) 및 AR(8)) 의 출력은 멀티플렉서 (616) 의 입력에 결합되고, AR(1), AR(8), AR(9) 및 AR(15) 의 출력은 멀티플렉서 (620) 의 입력에 결합된다. 멀티플렉서 (624 및 628) 는 (도 3 에 나타낸) 제어 시퀀서 (324) 에 의해 지시되는 바에 따라, AR 또는 BR 레지스터로부터 나오는 신호 중 하나를 선택한다. 따라서, 멀티플렉서 (624) 는 멀티플렉서 (608 또는 616) 로부터의 데이터 중 하나를 선택하고, 멀티플렉서 (628) 는 멀티플렉서 (620 또는 612) 로부터의 데이터 중 하나를 선택한다. 따라서, 멀티플렉서 (624 및 628) 의 출력은 개별적인 버터플라이 프로세서 (632) 의 입력에 결합된다. 버터플라이 프로세서 (632) 는 도 3, 도 4 및 도 5 를 참조하여 설명한 바와 같이, DCT/IDCT/DQT/IDQT 변환의 스테이지를 계산한다. 버터플라이 프로세서 (632) 의 2 개 출력, 출력 636 및 638, 은 각각 중간 데이터 멀티플렉서 (642 및 646) 각각의 입력에 결합된다. 그 다 음, 데이터는 멀티플렉서 (642 및 646) 로부터 중간 레지스터 (650) 의 뱅크로 선택된다. 일 실시형태의 경우, 이러한 중간 멀티플렉서 및 데이터 레지스터가 16 개이다.
도 7 은 기입 멀티플렉서의 블록도를 나타낸다. 도 3 에 나타낸 바와 같이, 중간 데이터 레지스터 (340) 의 짝수 출력은 멀티플렉서 (704) 로 입력되고, 중간 데이터 레지스터 (340) 의 홀수 출력은 멀티플렉서 (708) 로 입력된다. 중간 레지스터 각각의 데이터는 도 3 에 나타낸 제어 시퀀서 (324) 에 의해 제어되는 바에 따라, 멀티플렉서 (704, 708, 712 및 716) 에 의해 리시퀀싱되며, 17-비트 레지스터 (720 및 724) 에 각각 저장된다. 그 다음, 리시퀀싱된 데이터는 트랜스포즈 RAM (304) 에 저장된다.
도 8 은 각 버터플라이 프로세서 (800) 의 동작을 나타낸다. 일 실시형태에서는, 4 개의 버터플라이 프로세서가 구현된다. 그러나, 타이밍 및 사이즈 제약에 따라, 임의 갯수의 버터플라이 프로세서가 구현될 수 있다. 데이터는 입력 (804 및 808) 을 통해 버터플라이로 입력된다. 일 실시형태에서, 입력 (804) 은 종종 DC 값을 나타내며, 절단기 (truncator ; 812) 를 통과한다. 절단기 (812) 는, 내부의 2-차원 DCT 등식을 참조하여 설명하는 바와 같이, 1/N 기능을 수행한다. 입력 (804) 의 DC 값은 하나의 부호 비트에 16 개의 정수 비트가 더해진 17 비트이다. 절단기 (812) 는 DC 값 입력 데이터로부터 n 비트를 끊어버려 절단된 DC 값 (816) 을 생성하는데, 여기서, 프로세싱 중인 데이터가 16 ×16 블록이면 n 은 4 비트이고, 프로세싱 중인 데이터가 8 ×8 블록이면 n 은 3 비트이며, 프로세싱 중인 데이터가 4 ×4 블록이면 n 은 2 비트이고, 프로세싱 중인 데이터가 2 ×2 블록이면 n 은 1 비트이다. 입력이 AC 값이면, 절단기 (812) 는 바이패스되어 제 1 선택기 (814) 로 라우팅된다. 그 다음, 제 1 선택기 (814) 는 입력 A (804) 로부터 절단된 DC 값 (816) 또는 AC 값 중 하나를 선택한다. 이 실시형태에서는, 소수 비트 (fractional bits) 가 이용되지 않지만, 소수 비트가 이용될 수도 있다.
제 1 선택기의 출력 (816) 은 지연기 (820) 및 제 2 선택기 (824) 로 라우팅된다. 선택기의 출력값 (816) 이 지연기 (820) 로 라우팅될 경우, 절단된 DC 값은 제 2 선택기 (824) 로 라우팅되기 전에 하나의 클록 사이클 동안 유지될 수 있다. 일 실시형태에서, 지연기 (820) 는 레지스터이다. 제 2 선택기 (824) 에서의 데이터 선택은 데이터에 대해 수행될 수학적 연산 형태의 함수이다. 제어 시퀀서로부터 라우팅되는 것이 바람직한 제어 워드 (826) 은 제 2 선택기 (824) 를 트리거한다. 도 8 전체에 나타낸 바와 같이, 제어 워드 (826) 는 다수의 컴포넌트에 대한 제어를 제공한다. 또한, 수행될 수학적 연산의 형태에 따라, 데이터는 가산기 (832) 또는 감산기 (836) 로 전달된다. 제 3 선택기 (828) 도 입력 B (808) 과 함께 지연기 (820) 로부터 지연된 출력값을 수신한다. 또한, 제 3 선택기 (828) 에서의 데이터 선택도 데이터에 대해 수행될 수학적 연산 형태의 함수이다.
가산되거나 감산된 데이터는, 버터플라이 프로세서 (800) 로부터의 출력을 위해 제 4 선택기 (840) 또는 제 5 선택기 (844) 중 하나로 전달된다. 또한, 입력 (804) 은 제 4 선택기 (840) 로 전달되고, 입력 (808) 은 제 5 선택기 (844) 로 전달된다. 인코드 모드에서, 데이터는 제 6 선택기 (848) 로도 라우팅될 수 있다. 일 실시형태에서는, 인코드 모드에서, 데이터가 제 6 선택기 (848) 로 라우팅되기 전에 인코드 지연기 (852) 를 통해 라우팅된다.
제 2 입력 (입력 808) 은 제 3 선택기 (828) 및 제 6 선택기 (848) 를 통과한다. 입력 (808) 이 제 6 선택기 (848) 에 의해 선택되면, 데이터는 승산기 (858) 로 라우팅되고, 여기서 입력 (808) 은 스케일러 (860 ; scaler) 만큼 승산된다. 스케일러 (860) 에 의한 승산 프로세스는 데이터를 승산하여 승산된 출력 (864) 을 생성한다. 일 실시형태에서, 스케일러 (860) 는 B.G. Lee 의 알고리즘에 기초하여 선택된다. 일 실시형태에서, 승산된 출력 (864) 은 포매터 (868 ; formatter) 로 라우팅된다. 포매터 (868) 는 데이터를 1 개의 사인 비트, 16 개의 정수 비트 및 7 개 소수 비트의 24-비트 포맷에서 17 비트 포맷으로 조정하고 포화시킨다. 따라서, 포맷팅된 승산 출력 (872) 은 길이가 20 비트가 아닌 17 비트이다. 이러한 방식의 데이터 프로세싱으로 인해, 계산시의 정확성은 유지하면서, 동일한 데이터를 나타내는데 더 작은 비트를 이용하기 때문에, 하드웨어 공간을 절감한다. 포매팅된 승산 출력 (872) 은 추가적인 프로세싱을 위해 지연기 (876) 를 통해 제 3 선택기 (828) 및 제 5 선택기 (844) 로 라우팅된다.
도 9a 내지 도 9f 는 각각의 버터플라이 프로세서에 의해 수행될 수 있는 다양한 수학적 연산을 나타낸다. 도 9a 는 버터플라이 프로세서 (900) 에 의해 수행될 수 있는 NO 연산을 나타낸다. 2 개의 소정 입력, 입력 A (902) 및 입력 B (904) 에 대해, 각 입력은 출력 C (906) 및 출력 D (908) 로 전달될 뿐이다. 따라서, NO 연산에서, C=A 이고 D=B 이다.
도 9b 는 버터플라이 프로세서 (910) 에 의해 수행되는 누적 연산을 나타낸다. 2 개의 소정 입력, 입력 A (912) 및 입력 B (914) 에 대해, 출력 C (916) 는 A+B 의 합을 나타낸다. 입력 A (912) 및 입력 B (914) 는 가산기 (913) 에 의해 조합된다. 출력 D (918) 는 입력 B (914) 의 관통을 나타낸다. 따라서, 누적 연산에서, C=A+B 이고 D=B 이다.
도 9c 는 버터플라이 프로세서 (920) 에 의해 수행되는 버터플라이 DCT 연산을 나타낸다. 2 개의 소정 입력, 입력 A (922) 및 입력 B (924) 에 대해, 출력 C (926) 는, C=A+B 가 되는, 입력 A (922) 와 입력 B (924) 의 합을 나타낸다. 입력 A (922) 및 입력 B (924) 는 가산기 (923) 에 의해 결합된다. 출력 D (928) 는, D=CF ×(A-B) 가 되는, 계수 CF (930) 만큼 승산된 입력 A (922) 와 입력 B (924) 의 감산을 나타낸다. 감산기 (925) 에 의해 입력 (922) 으로부터 입력 (924) 을 감산한 다음, 승산기 (927) 에 의해 승산한다. 선택적으로, 파이프라인 레지스터 (932 및 934) 를 이용하여 중간 산물을 후속 클록 사이클이 될 때까지 일시 저장할 수 있다.
도 9d 는 버터플라이 프로세서 (936) 에 의해 수행되는 버터플라이 IDCT 연산을 나타낸다. 2 개의 소정 입력, 입력 A (938) 및 입력 B (940) 에 대해, 출력 C (943) 는, C=A+(B ×CF) 가 되는, 입력 A (938) 와 계수 CF 만큼이 승산된 입력 B (940) 의 합을 나타낸다. 입력 B (940) 는 승산기 (945) 에 의해 계수 CF (943) 만큼 승산된 다음, 가산기 (947) 에 의해 입력 (938) 에 가산된다. 마찬가지로, 출력 D (944) 는, D=A-(B ×CF) 가 되는, 입력 A (938) 와 계수 CF (943) 만큼 승산된 입력 B (940) 의 차이를 나타낸다. 입력 B (940) 은 계수 CF (943) 만큼 승산기 (945) 에 의해 승산된 다음, 감산기 (949) 에 의해 입력 A (938) 로부터 감산된다. 선택적으로, 파이프라인 레지스터 (946 및 948) 는 후속의 클록 사이클에서 계산될 중간 산물을 저장할 수 있다.
도 9e 는 버터플라이 프로세서 (950) 에 의해 수행되는 누적 레지스터 연산을 나타낸다. 2 개의 소정 입력, 입력 A (952) 및 입력 AREG (954) 에 대해, 출력 C (956) 는, C=A+AREG 가 되는, 입력 A 와 AREG 의 합을 나타낸다. 입력값과 달리, AREG 는 이전의 클록 사이클에서 레지스터 (951) 에 저장된 값일 수도 있다. 입력 A (952) 는 가산기 (953) 에 의해 AREG (954) 에 가산된다.
도 9f 는 버터플라이 프로세서 (958) 에 의해 수행되는 DQT/IDQT 연산을 나타낸다. 2 개의 소정 입력, 입력 A (960) 및 입력 B (962) 에 대해, 출력 C (964) 는, C=A+B 가 되는, 입력 A 와 B 의 합을 나타낸다. 마찬가지로, 출력 D (966) 는, D=A-B 가 되는, 입력 A 와 B 의 차이를 나타낸다. 입력 A (960) 와 입력 B (962) 는 가산기 (963) 에 의해 조합된다. 입력 B (962) 는 감산기 (965) 에 의해 입력 A (960) 로부터 감산된다.
화상 데이터 (1000) 의 변환을 계산하는 프로세스를 도 10 에 나타내는데, 이는 도 3 을 참조하여 설명한 것과 같은 구조로 구현될 수 있다. 이 프로세스는 DCT, IDCT, DQT 및 IDQT 와 같은 주파수 영역 기술에 대해 용이하게 구성된다. 컬럼 또는 로우 데이터는 처음에 트랜스포즈 RAM (1004) 에 상주하며, 버터플라이 프로세서의 보유 레지스터 (1008) 로 전달된다. 데이터 블록의 개별적인 데이터 요소가 선택되어 결합되며 (1012), 개개의 데이터 요소에 대해 수행될 수학적 연산이 선택된다 (1016). 수행될 수 있는 수학적 연산이 도 9a 내지 도 9f 를 참조하여 설명되며, 이에는 NO 연산 (1020), 누적 (1024), DCT 버터플라이 (1028), IDCT 버터플라이 (1032), 누적 레지스터 (1036) 및 IDCT/IDQT 버터플라이 (1040) 가 포함된다. 수학적 연산의 결과는 일시 저장된다 (1044). 추가적인 수학적 연산의 필요 여부에 기초하여, 피드백 판정 (1048) 이 행해진다. 일 실시형태에서, 피드백 판정은 도 3 을 참조하여 설명한 바와 같이 제어 시퀀서에 의해 제어된다. 데이터가 피드백되면 (1052), 데이터는 보유 레지스터 (1008) 로 피드백되며, 프로세스는 반복된다. 데이터가 피드백되지 않으면 (1056), 데이터는 출력 보유 레지스터 (1060) 로 전달된다. 컬럼 또는 로우 데이터에 대한 추가적인 수학적 연산의 필요 여부에 대해, 또 하나의 판정 (1064) 이 행해진다. 그렇다면 (1068), 컬럼 또는 로우 데이터는 홀더 (1072) 로 전달된 다음, 트랜스포즈 RAM (1004) 에 재기입된다. 그렇지 않다면 (1076), 데이터의 블록은 출력 데이터 레지스터 (1080) 로 전달된다.
일례로서, 여기에 개시된 실시형태와 관련하여 설명된 다양한 예시적 논리 블록, 흐름도 및 단계들은 ASIC (application-specific integrated circuit), 프로그램가능한 논리 장치, 개별적인 게이트 또는 트랜지스터 로직, 예를 들어, 레지스터 및 FIFO 와 같은 개별적인 하드웨어 컴포넌트, 한 세트의 펌웨어 명령어를 실행 하는 프로세서, 종래의 프로그램가능한 임의의 소프트웨어 및 프로세서, 또는 이들의 조합을 이용하여 하드웨어 또는 소프트웨어로 구현되거나 수행될 수 있다. 프로세서는 마이크로프로세서인 것이 바람직하지만, 다른 방법으로, 프로세서는 종래의 임의 프로세서, 컨트롤러, 마이크로컨트롤러 또는 스테이트 머신일 수 있다. 소프트웨어는 RAM 메모리, 플래시메모리, ROM 메모리, 레지스터, 하드디스크, 이동가능한 디스크, CD-ROM, DVD-ROM, 또는 공지되어 있는 다른 형태의 임의 저장 매체에 상주할 수 있다.
당업자가 본 발명을 이용할 수 있도록 하기 위해, 바람직한 실시형태에 대한 상기 설명을 제공한다. 당업자는 이들 실시형태에 대한 다양한 변형이 가능함을 알 수 있으며, 여기에서 정의된 일반적인 원리는 창의력을 이용하지 않고도 다른 실시형태에 적용될 수 있다. 따라서, 본 발명은 여기에서 개시한 실시형태들에 한정되지 않으며 여기에서 개시한 원리 및 신규한 특징과 일치하는 최광의로 해석되어야 한다.

Claims (91)

  1. 복수개의 데이터 요소를 포함하는 인코딩된 데이터 블록의 변환을 결정하는 장치에 있어서,
    소정량의 데이터 요소 (data elements) 를 수신하도록 구성되는 입력 레지스터;
    상기 입력 레지스터에 결합되는 하나 이상의 버터플라이 프로세서;
    상기 버터플라이 프로세서에 결합되는 하나 이상의 중간 레지스터; 및
    상기 중간 레지스터와 상기 버터플라이 프로세서를 결합시키는 피드백 루프를 구비하고,
    상기 버터플라이 프로세서는 데이터 요소의 선택된 쌍들에 대해 하나 이상의 수학적 연산을 수행하여, 프로세싱된 데이터 요소의 출력을 생성하도록 구성되며,
    상기 중간 레지스터는 상기 프로세싱된 데이터를 일시 저장하도록 구성되고,
    상기 피드백 루프는, 인에이블이면, 상기 프로세싱된 데이터 요소의 제 1 부분을 상기 버터플라이 프로세서로 전달하여 추가적인 수학적 연산을 수행하도록 구성되고, 디스에이블이면, 상기 프로세싱된 데이터 요소의 제 2 부분을 하나 이상의 보유 레지스터로 전달하도록 구성되며,
    상기 보유 레지스터는 상기 데이터 요소의 제 1 부분 전부가 프로세싱될 때까지 상기 프로세싱된 데이터를 저장하도록 구성되는, 인코딩된 데이터 블록의 변환 결정 장치.
  2. 제 1 항에 있어서,
    상기 피드백 루프와 상기 중간 레지스터를 결합시키는 하나 이상의 입력 멀티플렉서를 더 구비하고,
    상기 입력 멀티플렉서 각각은 데이터 요소를 일시적으로 선택하며 데이터 요소를 상기 버터플라이 프로세서로 전달하도록 구성되는, 인코딩된 데이터 블록의 변환 결정 장치.
  3. 제 1 항에 있어서,
    상기 버터플라이 프로세서와 상기 중간 레지스터를 결합시키는 하나 이상의 출력 멀티플렉서를 더 구비하고,
    상기 출력 멀티플렉서 각각은 데이터 요소를 일시적으로 선택하여 데이터 요소를 상기 중간 레지스터로 전달하도록 구성되는, 인코딩된 데이터 블록의 변환 결정 장치.
  4. 제 1 항에 있어서,
    상기 변환은 DCT (Discrete Cosine Transform), DQT (Differential Quadtree Transform), IDCT (Inverse Discrete Cosine Transform) 및 IDQT (Inverse Differential Quadtree Transform) 으로 이루어진 그룹으로부터 선택되는, 인코딩된 데이터 블록의 변환 결정 장치.
  5. 제 1 항에 있어서,
    상기 인코딩된 데이터 블록은 로우 데이터 및 컬럼 데이터로서 표현될 수 있고,
    상기 입력 레지스터에 결합되는 트랜스포즈 RAM (transpose random access memory) 을 더 구비하며,
    상기 트랜스포즈 RAM 은 상기 컬럼 데이터가 프로세싱되는 동안 상기 로우 데이터를 저장하고 상기 로우 데이터가 프로세싱되는 동안 상기 컬럼 데이터를 저장하도록 구성되는, 인코딩된 데이터 블록의 변환 결정 장치.
  6. 제 5 항에 있어서,
    상기 트랜스포즈 RAM 은 인코딩된 데이터의 2 개 블록을 저장하도록 구성될 수 있는, 인코딩된 데이터 블록의 변환 결정 장치.
  7. 제 5 항에 있어서,
    상기 보유 레지스터에 결합된 기입 멀티플렉서를 더 구비하고,
    상기 기입 멀티플렉서는 데이터 요소를 리시퀀싱하여 1-차원 변환을 완결하도록 구성되는, 인코딩된 데이터 블록의 변환 결정 장치.
  8. 제 1 항에 있어서,
    상기 피드백 루프로 인해 블록 사이즈에 관계없이 동일한 컴포넌트들이 재사용될 수 있는, 인코딩된 데이터 블록의 변환 결정 장치.
  9. 제 1 항에 있어서,
    상기 피드백 루프로 인해 변환 형태에 관계없이 동일한 컴포넌트들이 재사용될 수 있는, 인코딩된 데이터 블록의 변환 결정 장치.
  10. 제 1 항에 있어서,
    상기 피드백 루프로 인해 수학적 연산에 관계없이 동일한 컴포넌트들이 재사용될 수 있는, 인코딩된 데이터 블록의 변환 결정 장치.
  11. 제 1 항에 있어서,
    상기 피드백 루프에 결합되는 제어 시퀀서를 더 구비하고,
    상기 제어 시퀀서는 상기 피드백 루프를 인에이블 또는 디스에이블하도록 구성되는, 인코딩된 데이터 블록의 변환 결정 장치.
  12. 제 11 항에 있어서,
    상기 제어 시퀀서는 상기 버터플라이 프로세서에 고유 계수 승산기 (unique coefficient multiplier) 를 제공하는, 인코딩된 데이터 블록의 변환 결정 장치.
  13. 삭제
  14. 제 11 항에 있어서,
    상기 제어 시퀀서는 소정 이벤트에 기초하여 상기 입력 레지스터들 중의 특정한 몇 개를 인에이블하는, 인코딩된 데이터 블록의 변환 결정 장치.
  15. 제 11 항에 있어서,
    상기 제어 시퀀서는 소정 기준에 기초하여 상기 버터플라이 프로세서들 중의 특정한 몇 개를 인에이블하는, 인코딩된 데이터 블록의 변환 결정 장치.
  16. 제 11 항에 있어서,
    상기 제어 시퀀서는 소정 기준에 기초하여 상기 중간 레지스터들 중의 특정한 몇 개를 인에이블하는, 인코딩된 데이터 블록의 변환 결정 장치.
  17. 제 11 항에 있어서,
    상기 제어 시퀀서는 소정 기준에 기초하여 상기 출력 레지스터들 중의 특정한 몇 개를 인에이블하는, 인코딩된 데이터 블록의 변환 결정 장치.
  18. 제 1 항에 있어서,
    상기 수학적 연산은 가산, 승산, 및 감산으로 이루어진 그룹에 속하는, 인코딩된 데이터 블록의 변환 결정 장치.
  19. 제 1 항에 있어서,
    각각의 버터플라이 프로세서는 1-차원 변환의 일부를 수행하는, 인코딩된 데이터 블록의 변환 결정 장치.
  20. 제 1 항에 있어서,
    상기 인코딩된 데이터 블록의 변환은 1-차원 변환의 시리즈로서 계산되는, 인코딩된 데이터 블록의 변환 결정 장치.
  21. 각각이 복수개의 데이터 요소를 포함하는 로우 데이터와 컬럼 데이터로 표현될 수 있는 인코딩된 데이터 블록의 변환을 결정하는 장치로서,
    상기 인코딩된 데이터 블록을 저장하도록 구성되는 트랜스포즈 RAM (transpose random access memory);
    상기 트랜스포즈 RAM 에 결합되는 하나 이상의 입력 레지스터;
    상기 입력 레지스터에 결합되는 하나 이상의 버터플라이 프로세서;
    상기 버터플라이 프로세서에 결합되는 하나 이상의 중간 레지스터; 및
    상기 중간 레지스터 및 상기 버터플라이 프로세서를 결합시키는 피드백 루프 를 구비하고,
    상기 입력 레지스터는 상기 트랜스포즈 RAM 으로부터 데이터의 컬럼들을 수신하도록 구성되며,
    상기 버터플라이 프로세서는 상기 컬럼 데이터로부터 선택된 데이터 요소의 쌍들에 1-차원 변환의 일부를 수행하여 1 차 컬럼 데이터의 출력을 생성하도록 구성되고;
    상기 중간 레지스터는 상기 1 차 컬럼 데이터를 일시 저장하도록 구성되며,
    상기 피드백 루프는, 인에이블이면 상기 1 차 컬럼 데이터의 선택된 데이터 요소를 상기 버터플라이 프로세서로 전달하여 1-차원 변환의 추가적인 부분을 수행하도록 구성되고, 디스에이블이면, 상기 컬럼 데이터를 상기 트랜스포즈 RAM 으로 전달하도록 구성되고,
    그 다음, 상기 입력 레지스터는 상기 트랜스포즈 RAM 으로부터 데이터의 로우들을 수신하도록 구성되고, 상기 버터플라이 프로세서는 상기 데이터의 로우들로부터 선택된 데이터 요소의 쌍들에 1-차원 변환의 일부를 수행하여 1 차 로우 데이터의 출력을 생성하도록 구성되며, 상기 중간 레지스터는 상기 1 차 로우 데이터를 일시 저장하도록 구성되고, 상기 피드백 루프는 상기 1 차 로우 데이터의 선택된 데이터 요소를 상기 버터플라이 프로세서로 전달하여 1-차원 변환의 추가적인 부분을 수행하도록 구성되며, 이 경우, 디스에이블이면, 상기 로우 데이터를 출력 레지스터로 전달하도록 구성되는, 인코딩된 데이터 블록의 변환 결정 장치.
  22. 제 21 항에 있어서,
    상기 피드백 루프는 상기 컬럼 또는 로우 데이터에 대한 1-차원 변환의 완료시에 디스에이블되는, 인코딩된 데이터 블록의 변환 결정 장치.
  23. 제 21 항에 있어서,
    상기 피드백 루프와 상기 중간 레지스터를 결합시키는 하나 이상의 입력 멀티플렉서를 더 구비하고,
    상기 입력 멀티플렉서 각각은 데이터 요소를 일시적으로 선택하여 데이터 요소를 상기 버터플라이 프로세서로 전달하도록 구성되는, 인코딩된 데이터 블록의 변환 결정 장치.
  24. 제 21 항에 있어서,
    상기 버터플라이 프로세서와 상기 중간 레지스터를 결합시키는 하나 이상의 출력 멀티플렉서를 더 구비하고,
    상기 출력 멀티플렉서 각각은 데이터 요소를 일시적으로 선택하여 데이터 요소를 상기 중간 레지스터로 전달하도록 구성되는, 인코딩된 데이터 블록의 변환 결정 장치.
  25. 제 21 항에 있어서,
    상기 변환은 DCT (Discrete Cosine Transform), DQT (Differential Quadtree Transform), IDCT (Inverse Discrete Cosine Transform) 및 IDQT (Inverse Differential Quadtree Transform) 로 이루어진 그룹으로부터 선택되는, 인코딩된 데이터 블록의 변환 결정 장치.
  26. 제 21 항에 있어서,
    상기 트랜스포즈 RAM 은 인코딩된 데이터의 2 개 블록을 저장하도록 구성될 수 있는, 인코딩된 데이터 블록의 변환 결정 장치.
  27. 제 21 항에 있어서,
    상기 중간 레지스터에 결합된 기입 멀티플렉서를 더 구비하고,
    상기 기입 멀티플렉서는 데이터 요소를 리시퀀싱하여 상기 1-차원 변환을 완결하도록 구성되는, 인코딩된 데이터 블록의 변환 결정 장치.
  28. 제 21 항에 있어서,
    상기 피드백 루프로 인해, 동일한 컴포넌트들이 블록 사이즈, 변환 형태 또는 수학적 연산의 형태에 관계없이 재사용될 수 있는, 인코딩된 데이터 블록의 변환 결정 장치.
  29. 제 21 항에 있어서,
    상기 피드백 루프에 결합되는 제어 시퀀서를 더 구비하고,
    상기 제어 시퀀서는 상기 피드백 루프를 인에이블 또는 디스에이블하도록 구성되는, 인코딩된 데이터 블록의 변환 결정 장치.
  30. 제 29 항에 있어서,
    상기 제어 시퀀서는 상기 버터플라이 프로세서에 고유 계수 승산기를 제공하는, 인코딩된 데이터 블록의 변환 결정 장치.
  31. 삭제
  32. 제 29 항에 있어서,
    상기 제어 시퀀서는 소정 기준에 기초하여, 상기 입력 레지스터들, 버터플라이 프로세서들, 중간 레지스터들 또는 출력 레지스터들 중의 특정한 몇 개를 인에이블하는, 인코딩된 데이터 블록의 변환 결정 장치.
  33. 제 21 항에 있어서,
    상기 1-차원 변환은 가산, 승산 및 감산으로 이루어진 그룹에 속하는, 인코딩된 데이터 블록의 변환 결정 장치.
  34. 제 21 항에 있어서,
    각각의 버터플라이 프로세서는 1-차원 변환의 일부를 수행하는, 인코딩된 데이터 블록의 변환 결정 장치.
  35. 제 21 항에 있어서,
    상기 인코딩된 데이터 블록의 변환은 1-차원 변환의 시리즈로서 계산되는, 인코딩된 데이터 블록의 변환 결정 장치.
  36. 복수개의 데이터 요소를 포함하는 인코딩된 데이터 블록에 대해 N 개의 1-차원 변환의 캐스케이드로서 N 차원 변환을 수행하는 장치로서,
    입력 레지스터에 결합되는 버터플라이 프로세서의 클러스터;
    상기 각각의 버터플라이 프로세서에 결합되는 하나 이상의 중간 레지스터; 및
    상기 중간 레지스터와 상기 버터플라이 프로세서에 결합되는 피드백 루프를 구비하고,
    상기 각각의 버터플라이 프로세서는 데이터 요소의 선택된 쌍들에 대해 1-차원 변환의 일부를 수행하여 복수개의 부분적으로 프로세싱된 데이터 요소를 포함하는 부분적으로 프로세싱된 데이터의 출력을 생성하도록 구성되며,
    상기 중간 레지스터는 상기 부분적으로 프로세싱된 데이터를 일시 저장하도록 구성되고;
    상기 피드백 루프는, 1-차원 변환이 완료될 때까지, 상기 부분적으로 프로세싱된 데이터 요소의 선택된 쌍들을 상기 버터플라이 프로세서로 라우팅하여 1-차원 변환의 추가적인 부분을 수행하도록 인에이블되는, N 개의 1-차원 변환의 캐스케이드로서 N 차원 변환을 수행하는 장치.
  37. 제 36 항에 있어서,
    상기 변환은 DCT (Discrete Cosine Transform), DQT (Differential Quadtree Transform), IDCT (Inverse Discrete Cosine Transform) 및 IDQT (Inverse Differential Quadtree Transform) 로 이루어진 그룹으로부터 선택되는, N 개의 1-차원 변환의 캐스케이드로서 N 차원 변환을 수행하는 장치.
  38. 제 36 항에 있어서,
    상기 인코딩된 데이터 블록은 로우 데이터와 컬럼 데이터로서 표현될 수 있고,
    상기 입력 레지스터에 결합되는 트랜스포즈 RAM 을 더 구비하며,
    상기 트랜스포즈 RAM 은 상기 컬럼 데이터가 프로세싱되는 동안 상기 로우 데이터를 저장하고, 상기 로우 데이터가 프로세싱되는 동안 상기 컬럼 데이터를 저장하도록 구성되는, N 개의 1-차원 변환의 캐스케이드로서 N 차원 변환을 수행하는 장치.
  39. 제 38 항에 있어서,
    상기 트랜스포즈 RAM 은 인코딩된 데이터의 2 개 블록을 저장할 수 있도록 구성되는, N 개의 1-차원 변환의 캐스케이드로서 N 차원 변환을 수행하는 장치.
  40. 제 36 항에 있어서,
    상기 피드백 루프로 인해, 블록 사이즈, 변환의 형태 또는 수학적 연산의 형태에 관계없이 동일한 컴포넌트들이 재사용될 수 있는, N 개의 1-차원 변환의 캐스케이드로서 N 차원 변환을 수행하는 장치.
  41. 제 36 항에 있어서,
    상기 피드백 루프에 결합되는 제어 시퀀서를 더 구비하고,
    상기 제어 시퀀서는 상기 피드백 루프를 인에이블 또는 디스에이블하도록 구성되는, N 개의 1-차원 변환의 캐스케이드로서 N 차원 변환을 수행하는 장치.
  42. 제 41 항에 있어서,
    상기 제어 시퀀서는 상기 버터플라이 프로세서에 고유 계수 승산기를 제공하는, N 개의 1-차원 변환의 캐스케이드로서 N 차원 변환을 수행하는 장치.
  43. 삭제
  44. 제 41 항에 있어서,
    상기 제어 시퀀서는 소정 기준에 기초하여, 상기 입력 레지스터들, 버터플라이 프로세서들, 중간 레지스터들 또는 출력 레지스터들 중의 특정한 몇 개를 인에이블하는, N 개의 1-차원 변환의 캐스케이드로서 N 차원 변환을 수행하는 장치.
  45. 복수개의 데이터 요소를 포함하는 인코딩된 데이터 블록의 IDCT (inverse discrete cosine transform) 를 결정하는 장치로서,
    소정량의 데이터 요소를 수신하도록 구성되는 입력 레지스터;
    상기 입력 레지스터에 결합되는 하나 이상의 버터플라이 프로세서;
    상기 버터플라이 프로세서에 결합되는 하나 이상의 중간 레지스터; 및
    상기 중간 레지스터와 상기 버터플라이 프로세서를 결합시키는 피드백 루프를 구비하고,
    상기 버터플라이 프로세서는 데이터 요소의 선택된 쌍들에 대해 하나 이상의 수학적 연산을 수행하여, 프로세싱된 데이터 요소의 출력을 생성하도록 구성되며,
    상기 중간 레지스터는 상기 프로세싱된 데이터를 일시 저장하도록 구성되고,
    상기 피드백 루프는, 인에이블이면, 상기 프로세싱된 데이터 요소의 제 1 부분을 상기 버터플라이 프로세서로 전달하여 추가적인 수학적 연산을 수행하도록 구성되고, 디스에이블이면, 상기 프로세싱된 데이터 요소의 제 2 부분을 하나 이상의 보유 레지스터로 전달하도록 구성되며,
    상기 보유 레지스터는 상기 데이터 요소의 제 1 부분 전부가 프로세싱될 때까지 상기 프로세싱된 데이터를 저장하도록 구성되는, 인코딩된 데이터 블록의 IDCT 결정 장치.
  46. 각각이 복수개의 데이터 요소를 포함하는 로우 데이터와 컬럼 데이터로 표현될 수 있는 인코딩된 데이터 블록의 변환을 결정하는 장치로서,
    상기 인코딩된 데이터 블록을 저장하도록 구성되는 트랜스포즈 RAM;
    상기 트랜스포즈 RAM 에 결합되는 하나 이상의 입력 레지스터;
    상기 입력 레지스터에 결합되는 하나 이상의 버터플라이 프로세서;
    상기 버터플라이 프로세서에 결합되는 하나 이상의 중간 레지스터; 및
    상기 중간 레지스터와 상기 버터플라이 프로세서를 결합시키는 피드백 루프; 및
    상기 피드백 루프에 결합되는 제어 시퀀서를 구비하고,
    상기 입력 레지스터는 상기 트랜스포즈 RAM 으로부터 컬럼 데이터를 수신하도록 구성되며,
    상기 버터플라이 프로세서는 상기 컬럼 데이터로부터 선택된 데이터 요소의 쌍들에 대해 1차 변환을 수행하여 1 차 컬럼 데이터의 출력을 생성하도록 구성되고;
    상기 중간 레지스터는 상기 1 차 컬럼 데이터를 일시 저장하도록 구성되며,
    상기 피드백 루프는, 인에이블이면, 상기 1 차 컬럼 데이터의 선택된 데이터 요소를 상기 버터플라이 프로세서로 전달하여 추가적인 변환을 수행하도록 구성되고, 디스에이블이면, 상기 컬럼 데이터를 상기 트랜스포즈 RAM 으로 전달하도록 구성되고,
    상기 제어 시퀀서는 상기 피드백 루프를 인에이블 또는 디스에이블하도록 구성되며,
    그 다음, 상기 입력 레지스터는 상기 트랜스포즈 RAM 으로부터 데이터의 로우들을 수신하도록 구성되고, 상기 버터플라이 프로세서는 상기 데이터의 로우들로부터 선택된 데이터 요소의 쌍들에 대해 1 차 변환을 수행하여 1 차 로우 데이터의 출력을 생성하도록 구성되며, 상기 중간 레지스터는 상기 1 차 로우 데이터를 일시 저장하도록 구성되고, 상기 피드백 루프는 상기 1 차 로우 데이터의 선택된 데이터 요소를 상기 버터플라이 프로세서로 전달하여 추가적인 변환을 수행하도록 구성되며, 이 경우, 디스에이블이면, 상기 로우 데이터를 출력 레지스터로 전달하도록 구성되는, 인코딩된 데이터 블록의 변환 결정 장치.
  47. 복수개의 데이터 요소를 포함하는 인코딩된 데이터 블록의 변환을 결정하는 방법으로서,
    (a) 소정량의 데이터 요소를 수신하는 단계;
    (b) 데이터 요소의 선택된 쌍들에 대해 하나 이상의 수학적 연산을 수행하여, 프로세싱된 데이터 요소의 출력을 생성하는 단계;
    (c) 상기 프로세싱된 데이터 요소 중 어느 것이 추가적인 수학적 연산을 필요로 하는지를 결정하는 단계;
    (d) 추가적인 수학적 연산을 필요로 하는, 프로세싱된 데이터 요소의 제 1 부분을 선택하는 단계;
    (e) 추가적인 수학적 연산을 필요로 하지 않는, 프로세싱된 데이터 요소의 제 2 부분을 선택하는 단계;
    (f) 프로세싱된 데이터 요소의 제 1 부분의 선택된 쌍들에 대해 하나 이상의 수학적 연산을 수행하여, 프로세싱된 데이터 요소의 제 2 출력을 생성하는 단계; 및
    (g) 데이터 요소의 제 1 부분 전부가 프로세싱될 때까지 상기 프로세싱된 데이터 요소의 제 2 부분을 저장하는 단계를 포함하는, 인코딩된 데이터 블록의 변환 결정 방법.
  48. 제 47 항에 있어서,
    (h) 상기 인코딩된 데이터 블록의 데이터 요소 모두가 추가적인 수학적 연산을 필요로 하지 않을 때까지, 상기 (c), (d), (e), (f) 및 (g) 단계를 반복하는 단계를 더 포함하는, 인코딩된 데이터 블록의 변환 결정 방법.
  49. 제 47 항에 있어서,
    (i) 상기 인코딩된 데이터 블록의 데이터 요소 모두가 추가적인 수학적 연산을 필요로 하지 않을 경우, 상기 인코딩된 데이터 블록을 출력하는 단계를 더 포함 하는, 인코딩된 데이터 블록의 변환 결정 방법.
  50. 제 47 항에 있어서,
    상기 변환은 DCT (Discrete Cosine Transform), DQT (Differential Quadtree Transform), IDCT (Inverse Discrete Cosine Transform) 및 IDQT (Inverse Differential Quadtree Transform) 로 이루어진 그룹으로부터 선택되는, 인코딩된 데이터 블록의 변환 결정 방법.
  51. 제 47 항에 있어서,
    상기 인코딩된 데이터 블록은 로우 데이터와 컬럼 데이터로서 표현될 수 있고,
    상기 컬럼 데이터가 처리되는 동안, 상기 로우 데이터를 저장하는 단계; 및
    상기 로우 데이터가 처리되는 동안, 상기 컬럼 데이터를 저장하는 단계를 더 포함하는, 인코딩된 데이터 블록의 변환 결정 방법.
  52. 제 47 항에 있어서,
    데이터 요소의 후속 전달이 효율적인 방식으로 수행되도록, 상기 저장하는 단계 전에, 데이터 요소를 리시퀀싱하는 단계를 더 포함하는, 인코딩된 데이터 블록의 변환 결정 방법.
  53. 제 47 항에 있어서,
    소정 기준에 기초하여, 상기 (a), (b), (c), (d), (e), (f), (g) 및 (h) 단계를 제어하는 단계를 더 포함하는, 인코딩된 데이터 블록의 변환 결정 방법.
  54. 제 53 항에 있어서,
    소정 기준에 기초하여, 특정 데이터 요소에 고유 계수 승산기를 제공하는 단계를 더 포함하는, 인코딩된 데이터 블록의 변환 결정 방법.
  55. 삭제
  56. 제 47 항에 있어서,
    상기 수학적 연산은 가산, 승산 및 감산으로 이루어진 그룹에 속하는, 인코딩된 데이터 블록의 변환 결정 방법.
  57. 삭제
  58. 제 47 항에 있어서,
    상기 인코딩된 데이터 블록의 변환은 1-차원 변환의 시리즈로서 계산되는, 인코딩된 데이터 블록의 변환 결정 방법.
  59. (a) 소정량의 데이터 요소를 수신하는 단계;
    (b) 데이터 요소의 선택된 쌍들에 대해 하나 이상의 수학적 연산을 수행하여, 프로세싱된 데이터 요소의 출력을 생성하는 단계;
    (c) 상기 프로세싱된 데이터 요소 중 어느 것이 추가적인 수학적 연산을 필요로 하는지를 결정하는 단계;
    (d) 추가적인 수학적 연산을 필요로 하는, 프로세싱된 데이터 요소의 제 1 부분을 선택하는 단계;
    (e) 추가적인 수학적 연산을 필요로 하지 않는, 프로세싱된 데이터 요소의 제 2 부분을 선택하는 단계;
    (f) 프로세싱된 데이터 요소의 제 1 부분의 선택된 쌍들에 대해 하나 이상의 수학적 연산을 수행하여, 프로세싱된 데이터 요소의 제 2 출력을 생성하는 단계; 및
    (g) 데이터 요소의 제 1 부분 전부가 프로세싱될 때까지 상기 프로세싱된 데이터 요소의 제 2 부분을 저장하는 단계를 포함하는 방법을 수행하도록, 컴퓨터 시스템을 제어하는 지시들을 저장하는 컴퓨터 판독가능 매체.
  60. 복수개의 데이터 요소를 포함하는 인코딩된 데이터 블록의 변환을 결정하는 장치로서,
    (a) 소정량의 데이터 요소를 수신하는 수단;
    (b) 데이터 요소의 선택된 쌍들에 대해 하나 이상의 수학적 연산을 수행하여, 프로세싱된 데이터 요소의 출력을 생성하는 수단;
    (c) 상기 프로세싱된 데이터 요소 중에 추가적인 수학적 연산을 필요로 하는 요소가 있는지를 결정하는 수단;
    (d) 추가적인 수학적 연산을 필요로 하는, 프로세싱된 데이터 요소의 제 1 부분을 선택하는 수단;
    (e) 추가적인 수학적 연산을 필요로 하지 않는, 프로세싱된 데이터 요소의 제 2 부분을 선택하는 수단;
    (f) 프로세싱된 데이터 요소의 제 1 부분의 선택된 쌍들에 대해 하나 이상의 수학적 연산을 수행하여, 프로세싱된 데이터 요소의 제 2 출력을 생성하는 수단; 및
    (g) 데이터 요소의 제 1 부분 전부가 프로세싱될 때까지 상기 프로세싱된 데이터 요소의 제 2 부분을 저장하는 수단을 구비하는, 인코딩된 데이터 블록의 변환 결정 장치.
  61. 삭제
  62. 제 60 항에 있어서,
    (i) 상기 인코딩된 데이터 블록의 데이터 요소 모두가 추가적인 수학적 연산을 필요로 하지 않을 경우, 상기 인코딩된 데이터 블록을 출력하는 수단을 더 구비하는, 인코딩된 데이터 블록의 변환 결정 장치.
  63. 제 60 항에 있어서,
    상기 변환은 DCT (Discrete Cosine Transform), DQT (Differential Quadtree Transform), IDCT (Inverse Discrete Cosine Transform) 및 IDQT (Inverse Differential Quadtree Transform) 로 이루어진 그룹으로부터 선택되는, 인코딩된 데이터 블록의 변환 결정 장치.
  64. 제 60 항에 있어서,
    상기 인코딩된 데이터 블록은 로우 데이터와 컬럼 데이터로서 표현될 수 있고,
    상기 컬럼 데이터가 처리되는 동안, 상기 로우 데이터를 저장하는 수단; 및
    상기 로우 데이터가 처리되는 동안, 상기 컬럼 데이터를 저장하는 수단을 더 구비하는, 인코딩된 데이터 블록의 변환 결정 장치.
  65. 제 60 항에 있어서,
    데이터 요소의 후속 전달이 효율적인 방식으로 수행되도록, 상기 제 2 부분을 저장하기 전에, 데이터 요소를 리시퀀싱하는 수단을 더 구비하는, 인코딩된 데이터 블록의 변환 결정 장치.
  66. 제 60 항에 있어서,
    소정 기준에 기초하여, 상기 (a), (b), (c), (d), (e), (f), (g) 및 (h) 요소를 제어하는 수단을 더 구비하는, 인코딩된 데이터 블록의 변환 결정 장치.
  67. 제 66 항에 있어서,
    소정 기준에 기초하여, 특정 데이터 요소에 고유 계수 승산기를 제공하는 수단을 더 구비하는, 인코딩된 데이터 블록의 변환 결정 장치.
  68. 삭제
  69. 제 60 항에 있어서,
    상기 수학적 연산은 가산, 승산 및 감산으로 이루어진 그룹에 속하는, 인코딩된 데이터 블록의 변환 결정 장치.
  70. 삭제
  71. 픽셀 영역의 복수개 데이터 요소를 포함하는 인코딩된 데이터의 변환을 결정하는 장치로서,
    상기 복수개 데이터 요소를 수신하여 그 요소들을 픽셀 영역의 데이터 요소의 복수개 그룹으로 분류하도록 구성되는 블록 사이즈 할당기;
    상기 데이터 요소를 픽셀 영역에서 주파수 영역으로 변환하도록 구성되는 DCT/DQT 변환기;
    주파수 영역의 요소를 양자화하여 인간의 시각계에 보다 민감한 요소들을 강조하고 인간의 시각계에 덜 민감한 요소들을 덜 강조하도록 구성되는 양자화기;
    주파수 영역 요소의 직렬화된 스트림을 생성하도록 구성되는 직렬화기; 및
    연속적인 주파수 영역 요소 및 불연속적인 주파수 영역 요소를 결정하도록 구성되는 가변 길이 부호화기를 구비하고,
    상기 DCT/DQT 변환기는,
    그룹의 데이터 요소 중 소정량을 수신하도록 구성되는 입력 레지스터;
    상기 입력 레지스터에 결합되는 하나 이상의 버터플라이 프로세서;
    상기 버터플라이 프로세서에 결합되는 하나 이상의 중간 레지스터; 및
    상기 중간 레지스터와 상기 버터플라이 프로세서를 결합시키는 피드백 루프를 더 구비하고,
    상기 버터플라이 프로세서는 데이터 요소의 선택된 쌍들에 대해 하나 이상의 수학적 연산을 수행하여, 프로세싱된 데이터 요소의 출력을 생성하도록 구성되며,
    상기 중간 레지스터는 상기 프로세싱된 데이터를 일시 저장하도록 구성되고,
    상기 피드백 루프는, 인에이블이면, 상기 프로세싱된 데이터 요소의 제 1 부분을 상기 버터플라이 프로세서로 전달하여 추가적인 수학적 연산을 수행하도록 구성되고, 디스에이블이면, 상기 프로세싱된 데이터 요소의 제 2부분을 하나 이상의 보유 레지스터로 전달하도록 구성되며,
    상기 보유 레지스터는 상기 데이터 요소의 제 1 부분 전부가 프로세싱 될 때까지 상기 프로세싱된 데이터를 저장하도록 구성되는, 인코딩된 데이터의 변환 결정 장치.
  72. 제 71 항에 있어서,
    상기 피드백 루프와 상기 중간 레지스터를 결합시키는 하나 이상의 입력 멀티플렉서를 더 구비하고,
    각각의 입력 멀티플렉서는 데이터 요소를 일시적으로 선택하여 상기 버터플라이 프로세서로 전달하도록 구성되는, 인코딩된 데이터의 변환 결정 장치.
  73. 제 71 항에 있어서,
    상기 버터플라이 프로세서와 상기 중간 레지스터를 결합시키는 하나 이상의 출력 멀티플렉서를 더 구비하고,
    각각의 출력 멀티플렉서는 데이터 요소를 일시적으로 선택하여 상기 중간 레지스터로 전달하도록 구성되는, 인코딩된 데이터의 변환 결정 장치.
  74. 제 71 항에 있어서,
    상기 인코딩된 데이터 블록은 로우 데이터와 컬럼 데이터로서 표현될 수 있고,
    상기 입력 레지스터에 결합되는 트랜스포즈 RAM 을 더 구비하며,
    상기 트랜스포즈 RAM 은 상기 컬럼 데이터가 프로세싱되는 동안 상기 로우 데이터를 저장하고, 상기 로우 데이터가 프로세싱되는 동안 상기 컬럼 데이터를 저장하도록 구성되는, 인코딩된 데이터의 변환 결정 장치.
  75. 제 74 항에 있어서,
    상기 트랜스포즈 RAM 은 인코딩된 데이터의 2 개 블록을 저장하도록 구성될 수 있는, 인코딩된 데이터의 변환 결정 장치.
  76. 제 74 항에 있어서,
    상기 보유 레지스터에 결합된 기입 멀티플렉서를 더 구비하고,
    상기 기입 멀티플렉서는 1-차원 변환이 완료되도록 데이터 요소를 리시퀀싱하도록 구성되는, 인코딩된 데이터의 변환 결정 장치.
  77. 제 71 항에 있어서,
    상기 피드백 루프로 인해, 블록 사이즈에 관계없이 동일한 컴포넌트들이 재사용될 수 있는, 인코딩된 데이터의 변환 결정 장치.
  78. 제 71 항에 있어서,
    상기 피드백 루프에 결합되는 제어 시퀀서를 더 구비하고,
    상기 제어 시퀀서는 상기 피드백 루프를 인에이블 또는 디스에이블하도록 구성되는, 인코딩된 데이터의 변환 결정 장치.
  79. 제 78 항에 있어서,
    상기 제어 시퀀서는 상기 버터플라이 프로세서에 고유 계수 승산기를 제공하는, 인코딩된 데이터의 변환 결정 장치.
  80. 제 78 항에 있어서,
    상기 제어 시퀀서는 소정 이벤트에 기초하여 입력 레지스터들 중의 특정한 몇 개를 인에이블하는, 인코딩된 데이터의 변환 결정 장치.
  81. 제 78 항에 있어서,
    상기 제어 시퀀서는 소정 기준에 기초하여, 상기 버터플라이 프로세서들 중의 특정한 몇 개를 인에이블하는, 인코딩된 데이터의 변환 결정 장치.
  82. 제 78 항에 있어서,
    상기 제어 시퀀서는 소정 기준에 기초하여, 상기 중간 레지스터들 중의 특정한 몇 개를 인에이블하는, 인코딩된 데이터의 변환 결정 장치.
  83. 제 78 항에 있어서,
    상기 제어 시퀀서는 소정 기준에 기초하여, 상기 출력 레지스터들 중의 특정한 몇 개를 인에이블하는, 인코딩된 데이터의 변환 결정 장치.
  84. 제 71 항에 있어서,
    상기 수학적 연산은 가산, 승산 및 감산으로 이루어진 그룹에 속하는, 인코딩된 데이터의 변환 결정 장치.
  85. 제 71 항에 있어서,
    각각의 버터플라이 프로세서는 1-차원 변환의 일부를 수행하는, 인코딩된 데이터의 변환 결정 장치.
  86. 복수개의 데이터 요소를 포함하는 인코딩된 데이터를 픽셀 영역에서 주파수 영역으로 변환하는 방법으로서,
    (a) 픽셀 영역의 복수개 데이터 요소를, 각각이 픽셀 영역의 복수개 데이터 요소를 포함하는 복수개 블록으로 분류하는 단계;
    (b) 데이터 요소의 선택된 쌍들에 대해 하나 이상의 수학적 연산을 수행하여, 프로세싱된 데이터 요소의 출력을 생성하는 단계;
    (c) 상기 프로세싱된 데이터 요소 중 어느 것이 추가적인 수학적 연산을 필요로 하는지를 결정하는 단계;
    (d) 추가적인 수학적 연산을 필요로 하는, 프로세싱된 데이터 요소의 제 1 부분을 선택하는 단계;
    (e) 추가적인 수학적 연산을 필요로 하지 않는, 프로세싱된 데이터 요소의 제 2 부분을 선택하는 단계;
    (f) 프로세싱된 데이터 요소의 제 1 부분의 선택된 쌍들에 대해 하나 이상의 수학적 연산을 수행하여, 프로세싱된 데이터 요소의 제 2 출력을 생성하는 단계;
    (g) 데이터 요소의 제 1 부분 모두가 프로세싱될 때까지 상기 프로세싱된 데이터 요소의 제 2 부분을 저장하는 단계;
    (h) 데이터 요소의 모두가 추가적인 수학적 연산을 필요로 하지 않으며 주파수 영역의 요소로 변환될 때까지, 상기 (c), (d), (e), (f) 및 (g) 단계를 반복하는 단계;
    (i) 주파수 영역의 데이터 요소를 양자화하여 인간의 시각계에 보다 민감한 요소들을 강조하고 인간의 시각계에 덜 민감한 요소들을 덜 강조하는 단계;
    (j) 양자화된 주파수 영역의 데이터 요소를 직렬화하여 주파수 영역 요소의 직렬화된 스트림을 생성하는 단계; 및
    (k) 직렬화된 주파수 영역 요소를 부호화하여 연속적인 주파수 영역 요소 및 불연속적인 주파수 영역 요소를 결정하는 단계를 포함하는, 인코딩된 데이터를 픽셀 영역에서 주파수 영역으로 변환하는 방법.
  87. 제 86 항에 있어서,
    상기 인코딩된 데이터의 블록은 로우 데이터와 컬럼 데이터로서 표현될 수 있고,
    상기 컬럼 데이터가 프로세싱되는 동안 상기 로우 데이터를 저장하는 단계; 및
    상기 로우 데이터가 프로세싱되는 동안 상기 컬럼 데이터를 저장하는 단계를 더 포함하는, 인코딩된 데이터를 픽셀 영역에서 주파수 영역으로 변환하는 방법.
  88. 제 86 항에 있어서,
    필요한 제어 신호에 기초하여, (a), (b), (c), (d), (e), (f), (g) 및 (h) 단계를 제어하는 단계를 더 포함하는, 인코딩된 데이터를 픽셀 영역에서 주파수 영역으로 변환하는 방법.
  89. 제 88 항에 있어서,
    소정 기준에 기초하여, 특정한 데이터 요소에 고유 계수 승산기를 제공하는 단계를 더 포함하는, 인코딩된 데이터를 픽셀 영역에서 주파수 영역으로 변환하는 방법.
  90. 삭제
  91. 제 86 항에 있어서,
    상기 인코딩된 데이터의 블록의 변환은 1-차원 변환의 시리즈로서 계산되는, 인코딩된 데이터를 픽셀 영역에서 주파수 영역으로 변환하는 방법.
KR1020037014863A 2001-05-16 2002-05-15 버터플라이 프로세서를 이용하여 이산 코사인 변환을인코딩하고 계산하는 장치 및 방법 KR100944928B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US29146701P 2001-05-16 2001-05-16
US60/291,467 2001-05-16
US09/876,789 2001-06-06
US09/876,789 US6876704B2 (en) 2001-05-16 2001-06-06 Apparatus and method for encoding and computing a discrete cosine transform using a butterfly processor
PCT/US2002/015916 WO2002093359A2 (en) 2001-05-16 2002-05-15 Apparatus and method for encoding and computing a discrete cosine transform using a butterfly processor

Publications (2)

Publication Number Publication Date
KR20040005962A KR20040005962A (ko) 2004-01-16
KR100944928B1 true KR100944928B1 (ko) 2010-03-03

Family

ID=26966793

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037014863A KR100944928B1 (ko) 2001-05-16 2002-05-15 버터플라이 프로세서를 이용하여 이산 코사인 변환을인코딩하고 계산하는 장치 및 방법

Country Status (10)

Country Link
US (1) US6876704B2 (ko)
EP (1) EP1405206A2 (ko)
JP (3) JP2005513588A (ko)
KR (1) KR100944928B1 (ko)
CN (1) CN1518706B (ko)
AU (1) AU2002259268C1 (ko)
BR (1) BR0209639A (ko)
CA (2) CA2791788C (ko)
MX (1) MXPA03010424A (ko)
WO (1) WO2002093359A2 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040005003A1 (en) * 2002-07-02 2004-01-08 Koninklijke Philips Electronics N.V. Quality improvement for FGS BL coding with U/V coarse quantization
JP2004120439A (ja) * 2002-09-26 2004-04-15 Nec Electronics Corp 画像処理装置及び画像処理方法
JP4617644B2 (ja) 2003-07-18 2011-01-26 ソニー株式会社 符号化装置及び方法
US20060247769A1 (en) * 2005-04-28 2006-11-02 Sdgi Holdings, Inc. Polycrystalline diamond compact surfaces on facet arthroplasty devices
CN101223789A (zh) * 2005-07-15 2008-07-16 松下电器产业株式会社 图像编码装置以及图像编码方法
CN100450184C (zh) * 2006-07-12 2009-01-07 浙江大学 运用于图像编码和视频编码的离散余弦变换方法
KR100986285B1 (ko) * 2007-12-31 2010-10-12 (자)자유이엔씨 슬래브 매립형 박스 및 그 설치 방법
KR101619972B1 (ko) 2008-10-02 2016-05-11 한국전자통신연구원 이산 여현 변환/이산 정현 변환을 선택적으로 이용하는 부호화/복호화 장치 및 방법
WO2010085125A2 (ko) * 2009-01-22 2010-07-29 삼성전자 주식회사 영상의 변환 방법 및 장치, 역변환 방법 및 장치
JP5741076B2 (ja) 2010-12-09 2015-07-01 ソニー株式会社 画像処理装置及び画像処理方法
US9852143B2 (en) * 2010-12-17 2017-12-26 Microsoft Technology Licensing, Llc Enabling random access within objects in zip archives
TWI449334B (zh) * 2011-01-26 2014-08-11 Novatek Microelectronics Corp 內插運算電路
US20130067237A1 (en) * 2011-09-12 2013-03-14 Microsoft Corporation Providing random access to archives with block maps
US9442478B2 (en) 2011-11-30 2016-09-13 Infineon Technologies Ag Systems, circuits and a method for generating a configurable feedback
CN103957430B (zh) * 2014-03-28 2017-06-20 华为技术有限公司 离散余弦变换和负离散余弦变换的复用器
US10567800B2 (en) * 2016-11-29 2020-02-18 Qualcomm Incorporated Transform hardware architecture for video coding
CN107844451B (zh) * 2017-10-23 2020-11-20 复旦大学 一种级联板间流水线的“蝶式”传输方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5610849A (en) * 1995-06-23 1997-03-11 United Microelectronics Corporation Real time two-dimensional discrete cosine transform/inverse discrete cosine transform circuit

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5053985A (en) 1989-10-19 1991-10-01 Zoran Corporation Recycling dct/idct integrated circuit apparatus using a single multiplier/accumulator and a single random access memory
US5021891A (en) * 1990-02-27 1991-06-04 Qualcomm, Inc. Adaptive block size image compression method and system
US5818742A (en) * 1991-06-24 1998-10-06 Atmel Corporation Apparatus to transform time to frequency and frequency to time of data signals
EP0566184A3 (en) 1992-04-13 1994-11-17 Philips Electronics Nv Image transformer as well as television system comprising a transmitter and a receiver provided with a transformer.
TW219420B (ko) * 1992-04-13 1994-01-21 Philips Electronics Nv
US5684534A (en) * 1993-05-26 1997-11-04 Intel Corporation Task-splitting dual-processor system for motion estimation processing
US5592399A (en) * 1993-05-26 1997-01-07 Intel Corporation Pipelined video encoder architecture
US6334219B1 (en) * 1994-09-26 2001-12-25 Adc Telecommunications Inc. Channel selection for a hybrid fiber coax network
EP0714212A3 (en) 1994-11-21 1999-03-31 SICAN, GESELLSCHAFT FÜR SILIZIUM-ANWENDUNGEN UND CAD/CAT NIEDERSACHSEN mbH Video decoder using concurrent processing and resource sharing
EP0777387B1 (en) * 1995-12-06 2003-08-13 Harman/Becker Automotive Systems (XSYS Division) GmbH Method and apparatus for encoding digital video signals
KR100212268B1 (ko) * 1995-12-13 1999-08-02 윤종용 리의 알고리즘을 이용한 이산 코사인 역변환 시스템
TW465234B (en) * 1997-02-18 2001-11-21 Discovision Ass Single chip VLSI implementation of a digital receiver employing orthogonal frequency division multiplexing
US6397240B1 (en) * 1999-02-18 2002-05-28 Agere Systems Guardian Corp. Programmable accelerator for a programmable processor system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5610849A (en) * 1995-06-23 1997-03-11 United Microelectronics Corporation Real time two-dimensional discrete cosine transform/inverse discrete cosine transform circuit

Also Published As

Publication number Publication date
US6876704B2 (en) 2005-04-05
CA2791788A1 (en) 2002-11-21
CA2791788C (en) 2016-05-31
JP5623565B2 (ja) 2014-11-12
CN1518706A (zh) 2004-08-04
CA2446874C (en) 2014-01-28
WO2002093359A2 (en) 2002-11-21
MXPA03010424A (es) 2004-04-02
AU2002259268C1 (en) 2008-07-03
EP1405206A2 (en) 2004-04-07
JP2013153450A (ja) 2013-08-08
BR0209639A (pt) 2006-02-07
JP5507077B2 (ja) 2014-05-28
JP2009177802A (ja) 2009-08-06
KR20040005962A (ko) 2004-01-16
AU2002259268B2 (en) 2007-11-29
JP2005513588A (ja) 2005-05-12
WO2002093359A3 (en) 2004-01-29
CN1518706B (zh) 2012-03-14
US20020181027A1 (en) 2002-12-05
CA2446874A1 (en) 2002-11-21

Similar Documents

Publication Publication Date Title
JP5623565B2 (ja) バタフライプロセッサを使用して離散コサイン変換をエンコードしそして計算するための装置及び方法
KR101687865B1 (ko) 인코더, 디코더 및 방법
US7649939B2 (en) Apparatus and method for decoding and computing a discrete cosine transform using a butterfly processor
AU2002259268A1 (en) Apparatus and method for encoding and computing a discrete cosine transform using a butterfly processor
AU2002305838A1 (en) Selective chrominance decimation for digital images
WO2002100116A1 (en) Selective chrominance decimation for digital images
US6996595B2 (en) Apparatus and method for consolidating output data from a plurality of processors
US20020191695A1 (en) Interframe encoding method and apparatus
US8023563B2 (en) Method and system for processing signals via perceptive vectorial quantization, computer program product therefor
US6912070B1 (en) Sub-optimal variable length coding
JP2003209842A (ja) 2次元直交変換と量子化方法及びその装置並びにプログラム
JP3954032B2 (ja) 画像符号化装置、画像符号化方法、画像符号化プログラムおよび画像符号化プログラムを記録したコンピュータ読取可能な記録媒体
JPH04271664A (ja) 画像データ圧縮装置および画像データ復元装置
JPH10116267A (ja) 演算装置及び情報処理装置
JP2006024222A (ja) 画像処理装置及び画像処理方法
AU2002310355A1 (en) Interframe encoding method and apparatus
KR20050061448A (ko) 부호기 내에서 데이터를 통신하는 방법
JPH05207288A (ja) 画像符号化装置及び画像復号化装置
Westwater XYZ Video Compression: An algorithm for real-time compression of motion video based upon the three-dimensional discrete cosine transform
JPH04260290A (ja) 画像データ圧縮方法および画像データ圧縮装置ならびに画像データ復元装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20130130

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140129

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150129

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151230

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170704

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee