KR100465156B1 - 분산산술처리방식의 dct/idct 연산기에 있어서연산오차 및 연산시간 감소방법 - Google Patents

분산산술처리방식의 dct/idct 연산기에 있어서연산오차 및 연산시간 감소방법 Download PDF

Info

Publication number
KR100465156B1
KR100465156B1 KR10-2001-0053104A KR20010053104A KR100465156B1 KR 100465156 B1 KR100465156 B1 KR 100465156B1 KR 20010053104 A KR20010053104 A KR 20010053104A KR 100465156 B1 KR100465156 B1 KR 100465156B1
Authority
KR
South Korea
Prior art keywords
dct
bit
idct
integer
input
Prior art date
Application number
KR10-2001-0053104A
Other languages
English (en)
Other versions
KR20030019785A (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-0053104A priority Critical patent/KR100465156B1/ko
Publication of KR20030019785A publication Critical patent/KR20030019785A/ko
Application granted granted Critical
Publication of KR100465156B1 publication Critical patent/KR100465156B1/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/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/436Methods 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 using parallelised computational arrangements
    • 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/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Complex Calculations (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

본 발명은 분산산술처리방식의 DCT/IDCT 연산기에 관한 것으로서, 더 상세하게는 RAC 유니트의 고정된 ROM 내부 연산 비트 변화를 통해 연산오차를 감소시키고 연산시간을 단축할 수 있는 DCT/IDCT 연산기에 있어서 연산오차 및 연산시간 감소방법에 관한 것이다.
본 발명은, 부호기 메모리를 통해 출력된 데이터의 비트 부호 확장을 통해 첫번째 일차원 DCT 연산의 입력비트는 정수만 취하고, 상기 첫번째 일차원 DCT 연산 결과의 소수자리 반올림(rounding)과 정수비트 클리핑(clipping)에 의해 두번째 일차원 DCT 연산의 입력비트는 정수와 소수를 취하는 것을 특징으로 한다.
상술한 구성의 본 발명에 의하면, 저전력 이동 영상 단말기에 적용이 가능하고 연산시간을 단축할 수 있으므로 처리 가능한 프레임율(frame rate)을 높일 수 있으며, 한정된 ROM의 정확도를 가지고 가능한 최대 연산 정확도를 보장할 수 있어 연산오차를 줄일 수 있다.

Description

분산산술처리방식의 DCT/IDCT 연산기에 있어서 연산오차 및 연산시간 감소방법 {Distributed Arithmetic Type Discret Cosine Transform / Inverse Discret Cosine Transform Operator}
본 발명은 분산산술처리방식의 DCT/IDCT 연산기에 관한 것으로서, 더 상세하게는 RAC 유니트의 고정된 ROM 내부 연산 비트 변화를 통해 오차를 감소시키고 연산시간을 단축할 수 있는 DCT/IDCT 연산기에 있어서 연산오차 및 연산시간 감소방법에 관한 것이다.
이산여현변환(Discrete cosine transform(DCT))과 역이산여현변환(Inverse Discrete Cosine Transform(IDCT))이란 휘도와 색차로 표현되는 영상신호를 공간상의 주파수 영역으로 변환하고 이를 역변환시키는 방법으로 MPEG, H.263등의 국제표준규격에서 영상 압축, 복원을 위해 채택하고 있는 방법이다.
DCT 연산은 블록(block)이라고 불리우는 64개의 픽셀(pixel)을 하나의 단위로 해서 이루어진다.
즉 하나의 화면을 여러 개의 블록으로 쪼개고 각각의 블록에 대해 DCT 연산을 반복 수행하여 DCT계수를 얻게 된다.
디코더(Decoder, 복호기)의 IDCT에서는 인코더(Encorder, 부호기)로부터 받은 DCT계수를 원래의 픽셀값으로 복원한다.
도 1a 및 도 1b는 일반적인 영상 압축장치와 복원장치의 구조도이다.
도 1b에서 가변장 부호화된 DCT계수인 코디드 데이터(Coded Data) 를 대상으로 가변장 복호화((1ba),Variable Length Decoding)를 수행하고 역스캔((1bb),Inverse Scan)을 통해 복호화된 일차원 DCT계수를 다시 이차원으로 바꿔준다.
역 DC&AC예측((1bc),Inverse DC&AC Prediction)과 역 양자화(1bd,Inverse Quantization)에 의해 발생한 DCT계수는 역이산여현변환(1be), 즉 IDCT를 거친 다음 움직임 보상(1bf,Motion Compensation)이 이루어진다.
여기에서 입력픽셀 블록값 f(x,y)와 DCT된 결과 F(u,v)에 대하여 8*8 2차원(2D,two dimensional) DCT와 IDCT는 수학식 1과 수학식 2로 정의된다.
상기 수학식 1을 직접 구현하기 위해서는 84즉, 4096번의 곱셈이 필요하므로 실제 구현에 있어서는 도 2와 같이 행-열 분해법(Row-Column Decomposition)을 이용한 2번의 일차원 DCT/IDCT(2a,2b)를 사용한다.
이를 실제 하드웨어로는 도 3과 같이 한 개의 일차원 DCT/IDCT(3a)를 두번 반복 연산 함으로써 구현할 수있다.
이러한 8포인트 일차원 DCT/IDCT 연산식은 수학식 3과 같다.
상기 수학식 3의 연산에서 곱셈의 수를 줄이기 위한 많은 연구가 진행되어 왔으며, 최근 가장 일반적으로 사용되는 DCT/IDCT 연산 알고리즘은 첸(Chen)에 의한 수식으로 하나의 8*8 행렬(matrix)의 곱을 두개의 4*4 행렬의 곱으로 바꾼 것이다.
이는 수학식 4(일차원 DCT 행렬연산식) 수학식 5(일차원 IDCT 행렬연산식)로 정의된다.
상기 수학식 4와 수학식 5에서 알 수 있듯이 DCT/IDCT의 연산 행렬이 서로 다르기 때문에 이를 하드웨어를 구현하기 위해서는 큰 면적이 필요하다.
여기서이므로 DCT/IDCT의 연산 행렬을 통일하고 짝수계수 4*4 행렬을 두개의 2*2 행렬의 곱으로 바꾸면 수학식 6과 수학식 7이 된다.
상기 수학식 6과 수학식 7을 회로로 구현하는 데는 멀티플렉서(Multiplexer)를 이용해 곱셈을 직접 수행하는 방법과, ROM과 누산기(Accumulator), 시프터(Shifter)로 곱셈 연산을 수행하는 분산산술처리(Distributed Arithmethic)방식을 이용해 정방향 및 역방향 이산여현변환을 수행하는 방법이 있다.
그런데 멀티플렉서를 이용할 경우에는 게이트 카운트(gate count)가 커지고 고속화 연산이 요구될 때 하드웨어의 규모가 커지는 문제점이 있어, 후자의 방법이 많이 사용된다.
첫번째 일차원(1D) DCT/IDCT를 수행하기 위해서, 도 5의 첫번째 행에 해당하는 8개의 계수가 도 1a 나 도 1b의 DCT(1aa)/IDCT(1be)에 입력(Load)되어 도 6a나 도 6b의 로직부를 통해 계산된 후 도 3의 치환 메모리부(3b)에 저장(Store)된다.
이의 타이밍을 나타낸 것이 도 5의 첫번째 행에 표시된 Load, RAC, Store이다.
상기한 과정이 8번 반복되어 첫번째 일차원(1D) DCT/IDCT가 끝나게 되면 두번째 1D DCT/IDCT가 시작된다.
두번째 2D DCT/IDCT는,도 5의 첫번째 열에 해당하는 8개의 계수가 도 3의 치환 메모리부(3b)에 입력되어 도 6a나 도 6b의 버터플라이 로직((6ab,6ac),(6bb,6bc))을 통해 계산된 후 도 1a나 도 1b의 양자화기(1ac)나 움직임 보상(1bf)에 저장된다.
이의 타이밍을 나타낸 것이 도 5의 첫번째 열에 표시된 Load, RAC, Store이다.
상기한 과정이 8번 반복되면 두번째 1D DCT/IDCT가 끝나게 된다.
Load, RAC, Store의 각 스테이지(Stage)가 16사이클(cycle)이 소요된다고 할 때에 64픽셀의 한 블록을 처리하기 위해 두개의 1D IDCT 즉, 2차원(2D) IDCT를 하는 데는 도 5에서 알 수 있듯이 320사이클(cycle)이 필요하다.
QCIF(픽셀규격 : 176*144)영상 한 프레임(frame)의 경우 이런 블록이 594개가 존재하고 1초에 이런 영상이 15프레임 처리된다고 할 때, IDCT 블록이 1초분량의 영상을 처리하는데 2,851,200사이클이 필요하다.
즉 DCT/IDCT의 성능이 영상 압축/복원장치의 성능결정에 중요한 요인이 된다.
한편, 도 3에서와 같이 종래의 분산산술처리방식에서는 도 2의 첫번째 1D DCT/IDCT와 두번째 1D DCT/IDCT를 하나의 하드웨어로 사용한다.
따라서 입력되는 데이터의 형태를 통일시켜 주기 위해, 도 4a에서 처럼 DCT의 경우, 첫번째 1D DCT(4ac)의 입력으로 부호기 메모리((4aa),Encoder Memory)에있는 정수 9비트의 데이터를 3비트 부호 확장(3bit sign extension)과 하위 4비트에 zero추가(4bit zero padding)함으로써 정수 12비트, 소수 4비트로 정렬한 값을 취했다.
도 4b에서 처럼 IDCT의 경우, 첫번째 1D IDCT(4bc)의 입력으로 역 양자화기(4b)에 의해 역 양자화된 12비트 정수에, 하위 4비트에 zero를 추가함으로써 DCT경우처럼 정수12비트, 소수 4비트로 정렬한 값을 취했다.
또 도 4a, 도 4b처럼, DCT/IDCT모두 두 번째 1D DCT(4ad)/IDCT(4bd)의 입력으로 첫번째 1D 결과를 첫번째 1D의 입력과 같은 소수 넷째자리로 반올림(rounding)하고 정수 12비트로 클리핑(clipping)하여 사용했었다.
이와 같이, 첫번째 1D DCT/IDCT입력 데이터를 총 16비트로 만들어 처리함으로써 실제 유효한 값인 DCT의 경우 9비트, IDCT의 경우 12비트로 처리할 때 보다 연산시간이 길어지는 단점이 있다.
이의 파이프 라인을 나타낸 것이 도 5이고, 도 5에서 알 수 있듯이 첫번째 1D 와 두번째 1D를 수행하는 시간이 160사이클로 서로 같음을 알 수 있다.
위와 같은 문제로 연산시간을 단축하기 위해서 종래에는 2bit at a time이나 4bit at a time구조를 사용했으나 같은 RAC(ROM Accumulator in Cascade) 유니트를 반복 사용함으로써 하드웨어 면적이 커지는 단점이 있었다.
한편, 수학식 6, 수학식 7을 분산산술처리방식으로 구현할 때 각 ROM의 배치를 나타낸 것이 수학식 8(1D DCT 행렬 ROM)과 수학식 9(1D IDCT 행렬 ROM)이다.
짝수ROM인 ROM0,2,4,6은 두개 코사인 값의 합의 조합이므로 4개의 값을 가질 수 있다.
행렬안의 코사인계수는 모두 1보다 작고, 수학식 6, 수학식 7에서 알 수 있듯이 행렬 앞의 1/2 계수 때문에 짝수 ROM에 저장된 값들은 모두 1을 넘지 못한다.
홀수ROM인 ROM1,3,5,7은 네 개 코사인 값의 합의 조합이므로 16 개의 값을 가질 수 있다.
역시 행렬안의 코사인계수는 모두 1보다 작고, 수학식 6, 수학식 7에서 알 수 있듯이, 행렬 앞의 1/2 계수 때문에 홀수 ROM에 저장된 값들은 모두 2를 넘지못한다.
그래서 ROM값을 2의 보수 방법으로 표현하기 위해서 16비트 고정 길이를 사용하여 홀수ROM, 짝수ROM 모두, 정수 2비트, 소수 14비트를 사용했었다.
이를 나타낸 것이 도 6a에서 도 6b이고, RAC 유니트(6aa,6ba)의 입력은 모두 정수 12비트, 소수 4비트이고 ROM의 정확도 또한 정수 2비트, 소수 14비트로 동일하다.
RAC의 결과 또한 정수 14비트, 소수 6비트로 동일하다.
먼저 8개의 데이터(6ad,6bd)가 Yk 버스로부터 들어오면, 도 6a의 DCT의 경우 버터플라이 로직((6ab,6ac),butterfly logic)을 거친 후 RAC 유니트(6aa)로 들어간다.
RAC 유니트(6aa)를 통과하면서 ROM reading, shifting, adding이 수행되고 그 결과가 Uk 버스로 최종 출력된다.
도 6b의 IDCT의 경우, 그대로 ROM의 어드레스(address)로 변환된 후 RAC 유니트(6ba) 내부로 들어간다.
다음 버터플라이 로직(6bb,6bc)을 거치면서 합과 차가 구해져 Uk 버스로 최종 출력된다.
상술한 RAC 유니트는 ROM(7a)과 누산기(7b)와 1비트 우측으로 시프트시키는(one bit right shift) 시프터(7c)로 구성되며 도 7에 표시된다.
도 8은 정수 2비트, 소수 14비트를 사용하는 RAC내부의 정확도이다.
RAC의 결과인 정수 14비트, 소수 6비트를 가지고 DCT/IDCT인가와 첫번째 1D여부에 따라 적절한 반올림(rounding)과 클리핑(clipping)을 통해 최종 DCT/IDCT결과를 출력하게 된다.
그러나 고정된 길이의 내부 비트 폭을 가지는 연산회로에서 연산의 정확도를 높이기 위해서는 ROM에 가능한 가장 정확한 값을 저장하는 것이 필요하다.
종래에는 이를 위해 정확도 보상기 같은 추가적인 하드웨어 부담이 있었다.
상술한 바와 같이 종래 DCT/IDCT 연산기는 연산시간이 길어지고 같은 RAC 유니트를 반복 사용함으로써 하드웨어 면적이 커지는 단점이 있으며, 연산의 정확도가 떨어져 정확도를 높이기 위해 추가적으로 하드웨어를 구성해야 하는 부담이 있었다.
본 발명은 상술한 문제점을 해결하기 위하여 안출된 것으로서, 한정된 ROM의 정확도를 가지고 최대 연산 정확도를 높이며 이를 통해 연산오차를 줄일 수 있는 분산산술처리방식의 DCT/IDCT 연산기에 있어서 연산오차 및 연산시간 감소방법을 제공하는데 그 목적이 있는 것이다.
본 발명은 또한 전력소모절감을 위해 DCT/IDCT의 계산량을 화질의 열화없이 줄일 수 있어 연산시간을 단축할 수 있는 분산산술처리방식의 DCT/IDCT 연산기에 있어서 연산오차 및 연산시간 감소방법을 제공하는데 그 목적이 있는 것이다.
상술한 목적을 달성하기 위하여 본 발명은, 부호기 메모리를 통해 출력된 데이터의 비트 부호 확장을 통해 첫번째 일차원 DCT 연산의 입력비트는 정수만 취하고 상기 첫번째 일차원 DCT 연산 결과의 소수자리 반올림(rounding)과 정수비트 클리핑(clipping)에 의해 두번째 일차원 DCT 연산의 입력비트는 정수와 소수를 취하는 것을 특징으로 하는 분산산술처리방식의 DCT/IDCT 연산기에 있어서 연산오차 및 연산시간 감소방법을 제공하고자 한다.
본 발명은 또한, 분산산술처리방식을 이용해 정방향 및 역방향 이산여현변환을 수행하는 DCT/IDCT 연산기 내부의 RAC 유니트를 구성하는 ROM에 저장하는 값을 연산 비트 변환에 의해 정수, 소수 정확도를 가변적으로 할당하여, 소수자리는 반올림(rounding)하고 정수비트는 클리핑(clipping)함을 특징으로 하는 분산산술처리방식의 DCT/IDCT 연산기에 있어서 연산오차 및 연산시간 감소방법을 제공하고자 한다.
도 1a 및 도 1b는 영상 압축장치와 복원장치 구조의 블록도이다.
도 2는 행-열 분해법을 이용한 DCT/IDCT 연산기 구조의 개념도이다.
도 3은 하나의 일차원 연산기로 구성된 이차원 DCT/IDCT 연산기의 하드웨어 블록도이다.
도 4a 및 도 4b는 종래 DCT와 IDCT의 비트 정확도이다.
도 5는 종래 파이프 라인을 보여주는 도면이다.
도 6a 및 도 6b는 종래 8포인트 1차원 DCT와 IDCT 분산산술연산 회로의 구조도이다.
도 7은 종래 RAC 유니트의 상세 구조도이다.
도 8은 종래 RAC 유니트의 비트 정확도이다.
도 9a 및 도 9b는 본 발명에 의한 DCT와 IDCT의 비트 정확도이다.
도 10은 본 발명에 의한 파이프 라인을 보여주는 도면이다.
도 11a 및 도 11b는 본 발명에 의한 8포인트 1차원 DCT와 IDCT 분산산술연산 회로의 구조도이다.
도 12는 본 발명에 의한 RAC 유니트의 상세 구조도이다.
도 13a 내지 도 13e는 본 발명에 따른 RAC 유니트의 여러가지 경우에 있어서 비트 정확도이다.
도 14a 및 도 14b는 본 발명에 따른 ROM의 저장값이다.
<도면의 주요부분에 대한 부호의 설명>
1aa : DCT 1ac : 양자화기(Quantizer)
1ba : 가변장 복호화 1bb : 역 스캔
1bc : 역 DC&AC예측 1bd : 역 양자화
1be : 역이산여현변환(IDCT) 1bf : 움직임 보상
2a : 첫번째 1차원 DCT/IDCT 2b : 두번째 1차원 DCT/IDCT
3a : 1차원 DCT/IDCT 3b : 치환 메모리부
9aa : 부호기 메모리 9ac : 첫번째 1D DCT
9ad : 두번째 2D DCT 9bb : 역 양자화기
9bc : 첫번째 1D IDCT 9bd : 두번째 2D IDCT
11aa,11ba : RAC 유니트 11ab,11ac,11bb,11bc : 버터플라이 로직
11ad,11bd : 데이터 11ae,11be : 시프트 로직
12a : ROM 12b : 누산기
12c : 시프터
이하 본 발명을 첨부된 도면 도 9a 내지 도 14b를 참고로 하여 설명하면 다음과 같다.
첫째로, 본 발명의 DCT/IDCT 연산기에서는 DCT 연산시간 단축을 위해서, 부호기 메모리를 통해 출력된 데이터의 비트 부호 확장을 통해 첫번째 일차원 DCT 연산의 입력비트는 정수만 취하고 상기 첫번째 일차원 DCT 연산 결과의 소수자리 반올림(rounding)과 정수비트 클리핑(clipping)에 의해 두번째 일차원 DCT 연산의 입력비트는 정수와 소수를 취한다.
도 9a에서 첫번째 일차원 DCT를 수행할 때 입력되는 정수 12비트, 소수 0비트인 것을 알 수 있다.
즉, 첫번째 일차원(1D) DCT(9ac)의 입력으로 부호기 메모리((9aa),Encoder Memory)에 있는 정수 9비트의 데이터를 3비트 부호 확장(3bit sign extension)함으로써 정수 12비트, 소수 0비트로 정렬한 값을 취한다.
두번째 1D DCT(9ad)의 입력으로 첫번째 1D DCT 연산 결과를 소수 넷째자리로 반올림(rounding)하고 정수 12비트로 클리핑(clipping)한다.
물론 DCT의 경우 입력이 정수 9비트로 충분하나 제어의 편리함과 하드웨어의 감소를 위해 정수 12비트로 정한다.
둘째로, IDCT 연산시간 단축을 위해서, 역 양자화된 첫번째 일차원 IDCT 연산의 입력비트는 정수만 취하고, 상기 첫번째 일차원 IDCT 연산 결과의 소수자리 반올림(rounding)과 정수비트 클리핑(clipping)에 의해 두번째 일차원 IDCT 연산의 입력비트는 정수와 소수를 취한다.
도 9b에서 첫번째 일차원 IDCT를 수행할 때 입력되는 정수 12비트, 소수 0비트인 것을 알 수 있다.
즉, 첫번째 1D IDCT(9bc)의 입력으로 역 양자화기(9bb)에 의해 역 양자화된 12비트 정수를 첫번째 1D DCT를 수행할 때 처럼 그대로 정렬한 값을 취했다.
두번째 1D IDCT(9bd)의 입력으로 첫번째 일차원 IDCT 연산 결과를 소수 넷째자리로 반올림(rounding)하고 정수 12비트로 클리핑(clipping)한다.
도 9a 및 도 9b에서 필요한 하드웨어는 스테이트(state) 변천, RAC와 반올림 및 클리핑을 첫번째 1D와 두번째 1D에 구분해 제어해 주는 로직에 지나지 않는다.
이를 적용한 본 발명에 따른 파이프 라인이 도 10이다.
세째로 도 9a의 DCT 연산기와 도 9b의 IDCT 연산기가 동시에 모두 구비된 경우, DCT/IDCT 연산시간 단축을 위해 첫번째 1D DCT 연산의 입력비트와 첫번째 1D IDCT 연산의 입력비트중에서 비트가 큰 쪽의 입력을 DCT/IDCT의 공통 첫번째 1D입력으로 한다.
이때 비트가 작은 쪽의 입력을 부호확장을 통해 비트가 큰 쪽의 입력과 동일한 비트로 재배열하여 첫번째 1D DCT/IDCT의 입력비트로 정수만 취한다.
첫번째 1D DCT/IDCT 입력으로 정수 12비트를 사용하여 첫번째 1D 연산시간이 기존의 160사이클에서 120사이클로 단축되었음을 알 수 있다.
즉, 첫번째 1D 연산시 25%의 연산량 및 연산시간 단축효과로 인해 저전력이 달성되며 전체 시스템 처리시간 단축 및 단위시간당 처리가능 영상수 증가가 가능해진다.
기존의 ROM 정확도를 사용한다고 할 때 RAC 유니트의 내부 정확도를 나타낸 것이 도 13a이다.
종래의 도면 도 8과 비교해보면, 도 8에서 16번의 누산과정이 필요한 것과 달리, 본 발명에서는 누산기(Accumulator)에서 12번의 연산만 수행되면 1D 연산이 끝남을 알 수 있다.
예를 들어 도 9a나 도 9b처럼, DCT 연산기와 IDCT 연산기가 별개로 구성되는 경우, 첫번째 1D 입력으로부터 첫번째 1D 결과까지의 잠재시간(latency)이 종래에 32사이클에서 24사이클로 감소했으며, 첫번째 1D 입력으로부터 두 번째 1D 결과까지의 잠재시간이 192사이클에서 152사이클로 감소하게 된다.
이를 수식으로 표시하면, 첫번째 1D 연산의 입력비트가 N이고(본 발명에서는 정수 12비트), 두번째 1D 연산의 입력비트가 M일(본 발명에서는 정수 12비트, 소수 14비트로 총 16비트)경우, 첫번째 1D 입력으로부터 첫번째 ID 결과까지의 잠재시간이 2N(본 발명에서는 2x12=24사이클)이고, 첫번째 1D 입력으로부터 두번째 ID 결과까지의 잠재시간이 10N+2M(본 발명에서는 (10x12)+(2x16)=152사이클)이다.
DCT 연산기와 IDCT 연산기가 함께 구비되어, 첫번째 1D DCT 연산의 입력비트가 H이고 첫번째 1D IDCT연산의 입력비트가 N이며 두번째 1D DCT/IDCT 연산의 입력비트가 M인 경우, N>H이면 첫번째 ID 결과까지의 잠재시간이 2N이고, 첫번째 1D 입력으로부터 두번째 1D 결과까지의 잠재시간이 10N+2M이다.
N<M이면 상기 연산을 통해 종래의 잠재시간(첫번째 ID 결과까지의 잠재시간이 2M이고, 첫번째 1D 입력으로부터 두번째 1D 결과까지의 잠재시간이 12M)에 비해 처리시간 단축 및 연산량 감소로 인한 전력소모 감소를 획득할 수 있다.
다음 본 발명에서 제안하는 것은 DCT/IDCT 연산기 ROM의 내부 정확도를 높이는 것으로, 분산산술처리방식을 이용해 정방향 및 역방향 이산여현변환을 수행하는 DCT/IDCT 연산기 내부의 RAC 유니트를 구성하는 ROM에 저장하는 값을 연산 비트 변환에 의해 정수, 소수 정확도를 가변적으로 할당하여, 소수자리는 반올림(rounding)하고 정수비트는 클리핑(clipping)한다.
ROM에 실제로 저장된 값들을 십진수로 살펴보면 도 14a, 도 14b의 우측에 표시된 숫자와 같다.
도 14a 및 도 14b에서 ROM0,3,4,5,7의 값들은 -1보다 크고 1보다 작으므로 2의 보수 정수 1비트와 소수 15비트로 표현이 가능하다.
즉 기존의 정수 2비트를 쓰는 것은 정수부분에 필요 이상의 비트가 할당된 것이라고 볼 수 있다.
ROM 3,5,7의 경우 코사인 성질을 이용해 단순히 계산하면 정수 2비트가 필요하지만 실제 ROM에 저장된 값을 보면 정수 한 비트로 충분한 것이다.
ROM2,6의 값들은 -0.5보다 크고 1보다 작으므로 2의 보수 정수 0비트와 소수 16비트로 표현이 가능하다.
코사인 성질을 이용해 단순히 계산하면 정수 1비트면 충분하지만 실제값을 가지고 보면 정수를 한 비트 더 줄일 수 있는 셈이다.
그러나 ROM1의 값들은 1보다 큰 값이 있으므로 기존과 똑같이 정수 2비트가 필요하다.
즉 2의 보수 표현으로 정수 2비트, 소수 14비트로 저장한다.
이와 같은 ROM값들을 2의 보수 형태로 도 14a, 도 14b의 좌쪽에 나열하였다.
위와 같이 각 ROM에 저장하는 값들을 필요한 만큼의 비트만 정확히 정수와 소수에 할당함으로써 제한된 연산 비트폭을 가지고 가능한 최대 연산 정확도를 보장할 수 있으며 연산오차를 줄일 수 있다.
이를 나타낸 것이 도 11a, 도 11b이다.
RAC 유니트(11aa,11ba) 내부의 ROM 정확도가 다르므로 RAC결과가 종래에는 정수14비트, 소수6비트로 동일했던 것과는 달리, ROM0,3,4,5,7과 같이 정수 1비트와 소수 15비트로 저장된 경우는 RAC결과가 정수 13비트, 소수 7비트로 표현되고,ROM2,6과 같이 정수 0비트와 소수 16비트로 저장된 경우는 RAC결과가 정수 12비트, 소수 8비트로 표현되며, ROM1과 같이 종래처럼 정수 2비트, 소수 14비트로 저장된 경우는 종래와 같이 RAC결과가 정수 14비트, 소수 6비트로 표현된다.
먼저 8개의 데이터(11ad,11bd)가 Yk 버스로부터 들어오면, 도 11a의 DCT의 경우 버터플라이 로직((11ab,11ac),butterfly logic)을 거친 후 RAC 유니트(11aa)로 들어간다.
RAC 유니트(6aa)를 통과하면서 ROM reading, shifting, adding이 수행되고 그 결과가 Uk 버스로 최종 출력된다.
도 11b의 IDCT의 경우, 그대로 ROM의 어드레스(address)로 변환된 후 RAC 유니트(11ba) 내부로 들어간다.
다음 버터플라이 로직(11bb,11bc)을 거치면서 합과 차가 구해져 Uk 버스로 최종 출력된다.
이와 같은 세가지 ROM 정확도에 따른 RAC 유니트의 상세구조는 도 12와 같다.
상술한 RAC 유니트는 ROM(12a)과 누산기(12b)와 1비트 우측으로 시프트시키는 시프터(12c)로 구성되며, ROM(12a)의 연산 비트는 변화((2,14),(1,15),(0,16))된다.
각각의 ROM(12a) 정확도에 따른 첫번째 1D DCT/IDCT RAC 유니트의 비트 정확도는 도 13a(연산비트(2,14)), 도 13b(연산비트(1,15)), 도 13c(연산비트(0,16))에 표시되고, 두번째 1D DCT/IDCT RAC 유니트의 정확도는 도 13d(연산비트(1,15)), 도13e(연산비트(0,16)에 표시된다.
상기 ROM(12a) 정확도가 정수 2비트, 소수 14비트로 종래와 같을 때 두번째 1D DCT/IDCT RAC 유니트의 비트 정확도는 종래 도면 도 8과 같다.
도 13의 도면을 통해 첫번째 1D연산은 12번의 누산 과정이 두 번째 1D연산은 16번의 누산 과정이 필요함을 다시 한번 확인할 수 있다.
이 동작을 위해 필요한 하드웨어는 도 11a와 도 11b에서 알 수 있듯이, 반올림과 클리핑 이전에 각 RAC의 결과를 정수14비트, 소수6비트로 시프트해주는 시프트 로직(11ae,11be) 뿐이다.
하지만 그 효과를 C언어(language)로 검증한 결과 k번째 블록(block)의 (i,j)위치에서 부동소수점(floating point)계산 결과와 RAC 유니트를 사용했을 경우의 차이를 ek라고 하면 10,000블록에 대한 전체제곱평균에러(omse, overall mean square error)를 수학식 10으로 정의한다.
이때 종래의 ROM 정확도를 16비트(정수 2비트,소수 14비트)로 하고 RAC 누산기를 20비트 뎃셈기를 사용하면, omse가 DCT의 경우에는 0.0184, IDCT의 경우 0.0145이다.
본 발명에 따라 ROM 정확도는 같이하고 정수와 소수에 할당하는 비트를 가변하여 RAC 누산기를 같은 20비트 덧셈기를 사용하면, omse가 DCT의 경우 0.0169,IDCT의 경우 0.0109로 감소하였다.
이는 RAC 누산기를 19비트로 줄인다 해도 국제 규격인 0.02를 만족시킬 수 있으며 RAC로직이 8개 쓰이는 것을 감안하면 하드웨어 감소 효과를 기대할 수 있음을 알 수 있다.
이상에서 살펴본 바와 같이 본 발명에 의하면, 전력소모절감을 위해 DCT/IDCT의 계산량을 화질의 열화없이 줄일 수 있는 회로에 의해 H.263이나 MPEG4와 같은 규격을 이용하는 저전력 이동 영상 단말기에 적용이 가능하며 연산시간을 단축할 수 있으므로 처리 가능한 프레임율(frame rate)을 높일 수 있다.
또한, 한정된 ROM의 정확도를 가지고 가능한 최대 연산 정확도를 보장할 수 있으며 이를 통해 연산오차를 줄일 수 있다.

Claims (8)

  1. 분산산술처리방식의 DCT 연산기에서 DCT 연산을 수행하는 방법에 있어서,
    첫번째 일차원 DCT 연산의 입력비트는 두번째 일차원 DCT 연산의 입력비트인 (정수 x, 소수 y) 부분중에서 (정수 x) 부분만을 취하는 것을 특징으로 하는 분산산술처리방식의 DCT 연산기에 있어서 연산시간 감소방법.
  2. 삭제
  3. 삭제
  4. 분산산술처리방식의 DCT 연산기와 IDCT 연산기를 함께 구비한 연산회로에서 DCT/IDCT 연산을 수행하는 방법에 있어서,
    첫번째 일차원 DCT 연산의 입력비트와 첫번째 일차원 IDCT 연산의 입력비트중에서 비트가 큰 쪽의 입력을 DCT/IDCT의 공통 첫번째 일차원 입력으로 하는 것을 특징으로 하는 분산산술처리방식의 DCT/IDCT 연산기에 있어서 연산시간 감소방법.
  5. 청구항 4에 있어서, 비트가 작은 쪽의 입력은 부호확장을 통해 상기 비트가 큰 쪽의 입력과 동일한 비트로 재배열되는 것을 특징으로 하는 분산산술처리방식의 DCT/IDCT 연산기에 있어서 연산시간 감소방법.
  6. 삭제
  7. RAC 유니트와, 반올림 및 클리핑로직과, 시프트로직을 포함하는 8포인트 일차원 DCT/IDCT 분산산술연산회로를 이용하여, DCT/IDCT 연산을 수행하는 방법에 있어서,
    상기 RAC 유니트를 구성하는 ROM에 저장하는 값들을 연산비트 변환에 의해 내부 정확도를 다르게 하여 ROM에 저장하고, 상기 ROM 내부 정확도에 따라서 RAC 결과의 출력비트를 다르게 하여 출력하며, 상기 반올림 및 클리핑로직에 의해 상기 RAC 결과의 반올림과 클리핑을 수행함으로써 DCT/IDCT 결과값을 출력하는 것을 특징으로 하는 분산산술처리방식의 DCT/IDCT 연산기에 있어서 연산오차 감소방법.
  8. 청구항 7에 있어서,
    상기 RAC 결과의 반올림과 클리핑을 수행하기 이전에, 상기 시프트로직에 의해 상기 RAC 결과를 한가지의 정수 비트와 소수 비트로 정렬하는 시프팅 과정을 더 포함하는 분산산술처리방식의 DCT/IDCT 연산기에 있어서 연산오차 감소방법.
KR10-2001-0053104A 2001-08-31 2001-08-31 분산산술처리방식의 dct/idct 연산기에 있어서연산오차 및 연산시간 감소방법 KR100465156B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0053104A KR100465156B1 (ko) 2001-08-31 2001-08-31 분산산술처리방식의 dct/idct 연산기에 있어서연산오차 및 연산시간 감소방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0053104A KR100465156B1 (ko) 2001-08-31 2001-08-31 분산산술처리방식의 dct/idct 연산기에 있어서연산오차 및 연산시간 감소방법

Publications (2)

Publication Number Publication Date
KR20030019785A KR20030019785A (ko) 2003-03-07
KR100465156B1 true KR100465156B1 (ko) 2005-01-13

Family

ID=27721752

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0053104A KR100465156B1 (ko) 2001-08-31 2001-08-31 분산산술처리방식의 dct/idct 연산기에 있어서연산오차 및 연산시간 감소방법

Country Status (1)

Country Link
KR (1) KR100465156B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100981838B1 (ko) 2008-07-25 2010-09-13 인하대학교 산학협력단 비트보정변환 메시지 교환방법을 이용한 분산처리 기반인체인식 시스템 및 방법

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR940015787A (ko) * 1992-12-30 1994-07-21 양승택 이산여현 변환회로
KR950030689A (ko) * 1994-04-30 1995-11-24 배순훈 2차원 역이산 코사인 변환기
US5528533A (en) * 1993-03-12 1996-06-18 Sharp Kabushiki Kaisha DCT/inverse DCT arithmetic unit using both of a first and second different algorithm to thereby provide an improved combination of speed and accuracy
JPH09212485A (ja) * 1996-02-02 1997-08-15 Nec Corp 2次元idct回路
KR19980041724A (ko) * 1996-11-12 1998-08-17 윤종용 역이산 여현변환방법
KR20000013653A (ko) * 1998-08-12 2000-03-06 이종하 정/역 최적화 정수형 여현변환장치 및 그 방법
KR20000034993A (ko) * 1998-11-04 2000-06-26 포만 제프리 엘 현상 표시 변환 데이터의 디지털 처리 방법 및 시스템
KR20030019787A (ko) * 2001-08-31 2003-03-07 (주)씨앤에스 테크놀로지 행렬 변화를 통한 분산산술처리 방식의 이산여현변환 방법
KR20030019786A (ko) * 2001-08-31 2003-03-07 (주)씨앤에스 테크놀로지 분산산술처리 방식의 이산여현변환 회로

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR940015787A (ko) * 1992-12-30 1994-07-21 양승택 이산여현 변환회로
US5528533A (en) * 1993-03-12 1996-06-18 Sharp Kabushiki Kaisha DCT/inverse DCT arithmetic unit using both of a first and second different algorithm to thereby provide an improved combination of speed and accuracy
KR950030689A (ko) * 1994-04-30 1995-11-24 배순훈 2차원 역이산 코사인 변환기
JPH09212485A (ja) * 1996-02-02 1997-08-15 Nec Corp 2次元idct回路
KR19980041724A (ko) * 1996-11-12 1998-08-17 윤종용 역이산 여현변환방법
KR20000013653A (ko) * 1998-08-12 2000-03-06 이종하 정/역 최적화 정수형 여현변환장치 및 그 방법
KR20000034993A (ko) * 1998-11-04 2000-06-26 포만 제프리 엘 현상 표시 변환 데이터의 디지털 처리 방법 및 시스템
KR20030019787A (ko) * 2001-08-31 2003-03-07 (주)씨앤에스 테크놀로지 행렬 변화를 통한 분산산술처리 방식의 이산여현변환 방법
KR20030019786A (ko) * 2001-08-31 2003-03-07 (주)씨앤에스 테크놀로지 분산산술처리 방식의 이산여현변환 회로

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100981838B1 (ko) 2008-07-25 2010-09-13 인하대학교 산학협력단 비트보정변환 메시지 교환방법을 이용한 분산처리 기반인체인식 시스템 및 방법

Also Published As

Publication number Publication date
KR20030019785A (ko) 2003-03-07

Similar Documents

Publication Publication Date Title
EP1359763B1 (en) Approximate bicubic filter
EP1359768B1 (en) Chrominance motion vector rounding
EP1353513B1 (en) Rounding control for multi-stage interpolation
ES2254811T3 (es) Interpolacion subpixel en la estimacion y compesacion del movimiento.
KR100965704B1 (ko) 이미지 및 비디오 코딩을 위한 2d 변환
RU2413983C2 (ru) Обратимое преобразование для сжатия двумерных данных с потерями и без потерь
JP4792257B2 (ja) 適応算術復号化方法及び適応算術復号化装置
KR101153105B1 (ko) 고속 비디오 코덱 변환의 구현
RU2429531C2 (ru) Преобразования с общими множителями
US20080075173A1 (en) Systems and Methods for Context Adaptive Video Data Preparation
JP3796432B2 (ja) フィルタ処理装置およびフィルタ処理方法
JP6357345B2 (ja) ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置および方法
KR100465156B1 (ko) 분산산술처리방식의 dct/idct 연산기에 있어서연산오차 및 연산시간 감소방법
JP2000165861A (ja) 動画像復号装置
KR0178746B1 (ko) 매크로블럭의 반픽셀처리장치
JP2017525185A (ja) ウェーブレット変換行列に適応可能な高精度化及び量子化方法
US7555510B2 (en) Scalable system for inverse discrete cosine transform and method thereof
KR100433709B1 (ko) 행렬 변화를 통한 분산산술처리 방식의 이산여현변환 방법
Tseng et al. A high-throughput JPEG XR encoder
KR100303744B1 (ko) 화상 압축·신장 방법 및 화상 압축·신장 장치
US20050063460A1 (en) Video predictive decoding method and apparatus
JPH10116267A (ja) 演算装置及び情報処理装置
Linzer Super efficient decoding of color JPEG images on RISC machines
KR19980073563A (ko) 이산여현 변환 및 역변환 프로세서
KR20020097427A (ko) 저전력 idct를 이용한 영상 압축 및 복원 시스템

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee