KR101219411B1 - 데이터 변환장치 및 그 제어 방법 - Google Patents
데이터 변환장치 및 그 제어 방법 Download PDFInfo
- Publication number
- KR101219411B1 KR101219411B1 KR20090124531A KR20090124531A KR101219411B1 KR 101219411 B1 KR101219411 B1 KR 101219411B1 KR 20090124531 A KR20090124531 A KR 20090124531A KR 20090124531 A KR20090124531 A KR 20090124531A KR 101219411 B1 KR101219411 B1 KR 101219411B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- integer
- input
- conversion
- input data
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/145—Square transforms, e.g. Hadamard, Walsh, Haar, Hough, Slant transforms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Complex Calculations (AREA)
Abstract
본 발명은, 적은 연산량으로 거의 지연으로부터 자유로운 고속 무손실 변환을 실현한다. 이 무손실 변환을 이용해서, 무손실 부호화 및 손실 부호화를 고속으로 행할 수 있다. 제1의 연산부는, 입력 단자들에 입력한 데이터 D0, D1, D2, D3에 {1/2, -1/2, -1/2, -1/2}의 각 가중 계수 {a0, a1, a2, a3}을 곱하고, 그 곱한 결과를 합산한다. 상기 제1의 연산부에 있어서의 라운드 처리부는, 그 합계를 정수로 라운드하고, 정수값 E를 출력한다. 제2의 연산부는 정수값 E에, 각 입력 데이터에 대하여 설정된 {-1, 1, 1, 1}의 가중 계수 {b0, b1, b2, b3}를 곱하고, 그 곱한 결과를 각 입력 데이터에 가산한다. 본 발명은 제1 및 제2의 가중 계수 간의 관계에 대하여, a0*b0 + a1*b1 + a2*b2 + a3*b3 = -2 또는 0의 조건을 설정한다.
데이터 변환, 무손실 부호화, 손실 부호화, 화상 데이터
Description
본 발명은, 각 블록의 화상 데이터를 변환해서 무손실(lossless) 부호화와 손실(lossy) 부호화를 통일 스킴(unified scheme)으로 처리하는데 반드시 필요한 무손실 직교 변환에 있어서, 특히 상기 무손실 직교 변환을 구성하는 각종 무손실 회전 변환을 실현하기 위해서, n차 정수 데이터로부터 n차 정수 데이터로의 무손실 변환이 가능한 데이터 변환 기술에 관한 것이다.
화상, 특히 다치(multi-valued) 화상은, 많은 정보를 포함하고 있고, 축적할 때에는 거대한 메모리 용량을 필요로 하고, 전송할 때에는 긴 시간을 필요로 한다. 이 때문에, 화상의 축적 및 전송 시에는, 화상의 용장성을 제거하거나 또는 화질의 열화가 시각적으로 인식하기 어려운 정도로 화상의 내용을 변경함으로써 데이터량을 줄이는 고능률 부호화를 사용한다.
예를 들면, 정지 화상의 국제 표준 부호화 방식으로서 ISO와 ITU-T에 의해 권고된 JPEG는, 각 블록 (8×8 화소)의 화상 데이터를 이산 코사인 변환(DCT)을 실 행해서 DCT 계수로 변환한다. JPEG는 각 계수를 양자화하고, 양자화된 계수를 엔트로피 인코드(entropy-encode)하여, 화상 데이터를 압축하고 있다. 이 DCT를 이용한 다른 압축 기술로서는 JPEG 이외에 H.261 및 MPEG-1/2/4 등이 있다.
JPEG 표준에 있어서는, 압축/신장된 화상이 원래의 화상과 완전히 일치하도록 무손실 부호화도 규격화되었다. 당시에는, 무손실 변환 기술의 연구가 진척되고 있지 않아, DCT를 사용해서 무손실 변환을 실현할 수 없었다. 그 때문에, DCT를 사용한 블록 변환 부호화가 아니라, 각 화소의 예측 부호화로 무손실 부호화를 실행했다.
그 후에, 정지 화상의 무손실 부호화 전용의 국제 표준(JPEG-LS)이 성립되었다. 그렇지만, 이 표준에 있어서는, 무손실 변환 기술을 사용하지 않았다. 더 후에, 무손실 화상 부호화를 위한 무손실 웨이브렛(wavelet) 변환을 사용한 JPEG 2000이 국제 표준화되었다. 이 무손실 웨이브렛 변환은, 정수 데이터군으로부터 정수 데이터군으로의 무손실 변환이다. 무손실 변환을 사용한 부호화는, 변환 계수를 양자화하지 않으면 문자 그대로 무손실 부호화를 달성할 수 있다. 또한, 양자화 처리를 개재시킴으로써, 손실 부호화를 행할 수 있다. 즉, 이 부호화는 동일한 변환 스킴으로 무손실 부호화와 손실 부호화를 심리스로(seamlessly) 행할 수 있다. 이점 때문에, 무손실 변환을 사용한 부호화는, 현재 국제 표준화되어 있는 JPEG-XR에서도 이용되고 있다.
무손실 변환을 실현하는 어떤 하나의 종래기술은, 래더(ladder) 연산(리프팅 연산)을 사용하고 있다. 이 방법의 대표적인 예가 Shinji Fukuma, Koichi Ohyama, Masahiro Iwahashi, and Noriyoshi Kambayashi, "Lossless 8-Point Fast Discrete Cosine Transform Using Lossless Hadamard Transform", IEICE technica1 report, IE99-65, pp. 37-44, October 1999에 기재되어 있다. 이 문헌에서, 무손실 변환은, 변환 행렬을 삼각 행렬로 분해하고, 그것들을 래더 연산으로 치환하는 복잡한 절차로 실현되고 있다. 따라서, 그 구성이 복잡하게 되어, 다량의 연산 처리를 필요로 한다.
또한, 아다마르(Hadamard) 변환에 한정한 무손실 변환 방법이, 일본국 공개특허공보 특개2003-258645호에 기재되어 있다. 이 문헌에 기재된 방법은, 선형 아다마르 변환에 의해 취득된 소수 데이터의 변환 계수에 대하여, 홀수개의 데이터의 소수점 이하의 부분을 반올림하고, 또 다른 홀수개의 데이터의 소수점 이하의 부분을 잘라버린다. 이 문헌에서는, 라운드 처리 방법에 특징이 있고, 선형 아다마르 변환의 연산을 줄이거나 라운드 처리에 필요한 처리량을 감소시키기 위한 연구 등은 이루어지고 있지 않다.
상기 설명한 바와 같이, 종래의 무손실 변환 기술은, 가역성을 실현하기 위해서, 래더 연산으로 용장 처리를 행할 필요가 있다. 이것은 무손실 변환을 사용해서 무손실 부호화와 손실 부호화를 고속으로 행하는 것을 방해한다.
본원 발명은, 종래의 단점을 감안하여 이루어진 것이다. 본 발명은 보다 고속으로 무손실 변환을 행하는 기술을 제공한다. 또한, 본 발명은 무손실 아다마르 변환을 소규모 회로를 이용해서 행하는 기술을 제공한다.
이 과제를 해결하기 위해서, 제1의 국면에 있어서의 본 발명은, 복수의 입력 데이터를 입력하는 입력 단자들과, 복수의 변환 결과를 출력하는 출력 단자들을 구비하는 데이터 변환장치를 제공하고, 상기 데이터 변환장치는,
상기 입력 단자들에 입력한 데이터에, 각 입력 데이터에 대하여 설정된 제1의 가중 계수를 곱하고, 가중된 데이터를 합산하는 제1의 연산부와,
상기 제1의 연산부로부터 취득한 연산 결과에, 상기 각 입력 데이터에 대하여 설정된 제2의 가중 계수를 곱하고, 곱한 결과를 상기 각 입력 데이터에 가산하는 제2의 연산부와,
정수가 아닌 유리수의 가중 계수를 곱하는 상기 제1의 연산부 및 상기 제2의 연산부 중의 적어도 하나에 설치되고, 정수가 아닌 유리수의 연산 결과를 정수로 라운드하는 라운드 처리부를 구비하고,
상기 각 입력 데이터에 대한 상기 제1의 가중 계수와 상기 제2의 가중 계수의 곱의 합계가 0 및 -2 중 어느 한 쪽을 취한다.
제2의 국면에 있어서의 본 발명은, 복수의 입력 데이터로부터 복수의 변환 데이터를 생성하고, 그 변환된 데이터를 출력하는 데이터 변환장치의 제어 방법을 제공하고, 이 제어 방법은,
제1의 연산부가, 상기 입력 데이터에 각 입력 데이터에 대하여 설정된 제1의 가중 계수를 곱하고, 가중된 데이터를 합산하는 제1의 연산 단계와,
제2의 연산부가, 상기 제1의 연산 단계에서 얻은 연산 결과에, 상기 각 입력 데이터에 대하여 설정된 제2의 가중 계수를 곱하고, 곱한 결과를 상기 각 입력 데 이터에 가산하는 제2의 연산 단계와,
정수가 아닌 유리수의 가중 계수를 곱하는 상기 제1 연산 단계와 상기 제2 연산 단계 중의 적어도 하나에 있어서, 라운드 처리부가 정수가 아닌 유리수의 연산 결과를 정수로 라운드하는 라운드 처리 단계를 포함하고,
상기 각 입력 데이터에 대한 상기 제1의 가중 계수와 상기 제2의 가중 계수의 곱의 합계가 0 및 -2 중 어느 한 쪽을 취한다.
본 발명에 의하면, 적은 연산량으로 거의 지연으로부터 자유로운 고속 무손실 변환을 실현할 수 있다. 이 무손실 변환은, 무손실 부호화 및 손실 부호화를 고속으로 행할 수 있다. 특히, 양쪽 소프트웨어 및 하드웨어 처리는, 동일한 기술로 고속 무손실 아다마르 변환을 실현할 수 있는 연산을 실행할 수 있다. 이것에 의해, 소프트웨어와 하드웨어의 개발을 함께 달성할 수 있다.
특히, 도 7에 나타낸 무손실 아다마르 변환의 구성을, 하드웨어 회로로 실현했을 경우에는, 그 회로의 사이즈를 종래의 다른 회로보다 작게 할 수 있어, 회로의 동작에 있어서 적은 전기를 필요로 한다. 이것은, 데이터 압축을 필요로 하는 산업제품에 있어서 매우 유용하다는 것을 의미한다.
본 발명의 그 외의 특징들은 첨부도면을 참조하면서 이하의 예시적인 실시예의 설명으로부터 밝혀질 것이다.
이하의 실시예에서는, 도 1에 나타낸 구성을 근거로 한 무손실 변환에 관하여 설명한다. 우선, 도 1의 구성으로 실현되는 변환에 대해서 자세히 설명한다.
도 1의 장치는, 제1의 연산부(111)와 제2의 연산부(112)로 구성된다. 제1의 연산부(111)는, 입력 단자 101, 102, 103, 104로부터 입력되는 4개의 데이터 D0, D1, D2, D3에 가중 계수 a0, a1, a2, a3을 곱한다. 제1의 연산부(111)는 가중된 데이터를 합산(합계를 산출)하고, 합계 E를 생성하여 출력한다.
E = a0*D0 + a1*D1 + a2*D2 + a3*D3
제2의 연산부(112)는 상기 합계 E에 각 입력 데이터에 대하여 설정된 제2의 가중 계수 b0, b1, b2, b3을 곱한다. 제2의 연산부(112)는, 입력 데이터 D0, D1, D2, D3에 곱한 결과를 가산하고, 즉, D0 + b0*E, D1 + b1*E, D2 + b2*E, D3 + b3*E를 산출한다. 제2의 연산부(112)는, 출력 단자 121~124로부터 그 합계를 출력한다.
이 변환의 변환 행렬은 다음 식(1)과 같이 나타낼 수 있다.
이 행렬(1)의 행렬식 T는 다음과 같다.
T = 1 + a0b0 + a1b1 + a2b2 + a3b3 ...(2)
또한, 행렬(1)의 역변환 행렬은 다음 식(3)과 같다.
무손실 변환 부호화에서는, 변환시에 용장성의 부가나 정보의 축퇴(縮退)를 방지하기 위해서, 행렬식 T의 값은 -1 또는 +1일 필요가 있다. 행렬식 T의 값을 -1로 설정하기 위해서는, a0*b0 + a1*b1 + a2*b2 + a3*b3 = -2을 유지해야 한다. 행렬식 T의 값을 +1로 설정하기 위해서는, a0*b0 + a1*b1 + a2*b2 + a3*b3 = 0을 유지해야 한다. 이들 설정 조건이 제1의 연산부(111) 및 제2의 연산부(112)의 가중 계수에 부과된다.
행렬식 T = -1과 +1일 때의 역변환 행렬은 다음 식(4a) 및 (4b)와 같다.
<행렬식 T = -1일 때의 역행렬>
<행렬식 T = 1일 때의 역행렬>
상기의 역변환 행렬(4a) 및 (4b)을 보면, 변환 행렬과 역변환 행렬과의 사이 에 흥미있는 관계가 있다는 것을 알 수 있다. 즉, 행렬식 T = -1일 때, 변환 행렬(1)과 역변환 행렬(4a)이 완전히 서로 일치한다. 또한, 행렬식 T = +1일 때는, 변환행렬(1)에 있어서의 가중 계수 a0,a1, a2, a3, 또는 가중 계수 b0, b1, b2, b3의 부호를 반전하면 역변환 행렬(4b)이 취득된다.
본 발명은, 변환 행렬(순(順)변환행렬)과 역변환 행렬 간의 유사성을 이용해서 정수 데이터로부터 정수 데이터로의 변환에 있어서의 가역성을 실현한다.
행렬식 T = -1인 변환과 역변환을 연속적으로 처리하여, 입력 데이터를 변환·역변환해서, 원래의 입력 데이터를 복원하는, 도 2에 나타낸 데이터 변환 처리에 주목한다. 도 2에 있어서, 순변환측과 역변환측은 같은 구성을 갖는다. 편의상, 순(順)변환측의 제1 및 제2의 연산부의 참조번호에는 “f”을 부착하고, 역변환측의 제1 및 제2의 연산부의 참조 번호에는 “r”을 부착한다. 또한, 참조번호 141 내지 144은 역변환측의 출력 단자를 나타낸다.
이 데이터 변환 처리의 순변환의 결과는, 일반적으로 소수 데이터이고, 기본적으로 정수가 아니다. 후술하는 바와 같이, 순변환측의 제1의 연산부(111f)의 연산 결과와, 역변환측의 제1의 연산부(111r)의 연산 결과는, 부호가 서로 반대인 같은 절대값을 갖는다. 이 관계에 근거해서, 데이터 변환장치의 가역성을 설명할 수 있다.
순변환측에서는, 제2의 연산부(112f)가 제1의 연산부(111f)의 연산 결과를 상기 제2의 가중 계수에 곱하고, 그 곱한 결과를 각 입력 데이터에 가산한다. 역변환측에서는, 제2의 연산부(112r)가 제1의 연산부(111f)와 반대의 부호를 갖는 제1 의 연산부(111r)의 연산 결과를, 같은 제2의 가중 계수에 곱하고, 그 곱한 결과를 역변환 입력 데이터에 가산한다. 따라서, 순변환측에 가산된 데이터와 역변환측에 가산된 데이터가 서로 상쇄하여, 입력 데이터만이 남게 된다.
일반적으로, 순변환의 결과는 소수 데이터가 된다. 소수 데이터가 정수 데이터로 되었을 경우에도, 상기한 바와 같이 "변환에 있어서의 가산 데이터와 역변환에 있어서의 가산 데이터를 서로 상쇄"시킬 수 있으면, 가역성을 얻을 수 있다. 그것을 위해서는, 순변환측의 제1의 연산부(111f)의 연산 결과와, 역변환측의 제1의 연산부(111r)의 연산 결과가 반대의 부호를 갖는 관계에 관해서, 좀더 자세히 해석할 필요가 있다.
도 2에 나타낸 데이터 변환 처리에 있어서, 순변환측의 제1의 연산부(111f)의 출력으로부터 역변환측의 제1의 연산부(111r)의 출력으로의 전송 계수는 전술의 "a0*b0 + a1*b1 + a2*b2 + a3*b3 = -2"의 관계로부터 -2이다.
이것은, 순변환측의 제1의 연산부(111f)의 연산 결과 E가, 이 전송 계수에 의거해 -2E의 전송 신호로서 역변환측의 제1의 연산부(111r)의 연산 결과에 포함되어 있다는 것을 의미한다. 역변환측의 제1의 연산부(111r)의 연산 결과에는, -2E의 전송 신호 이외에, 순변환측의 입력 데이터에 대한 역변환측의 제1의 연산부(111r)의 연산 결과가 포함되어 있다. 이 연산 결과에 대응하는 신호는, 순변환측의 제1의 연산부(111f)의 연산 결과와 비슷한 E이다.
따라서, 역변환측의 제1의 연산부(111r)의 연산 결과는 최종적으로 -2E + E = -E가 된다. 이것으로부터, 역변환측의 제1의 연산부(111r)의 연산 결과는 순변환 측의 제1의 연산부(111f)의 연산 결과 E와는 부호가 반대이다.
정수 변환에 있어서의 가역성을 유지하기 위해서는, 소수 데이터를 정수로 변환한 후에도 상기 전송 계수 “-2”을 유지할 필요가 있다. 이 목적을 위해 라운드 처리에 관한 처리 방법으로서, 다음의 3개의 방법을 생각할 수 있다. 실시예의 설명 전에, 이들 3개의 방법 간의 차를 명확하게 하기 위해서 이들 3개의 방법에 대해서 설명한다.
첫 번째의 연산방법으로서는, 소수 데이터가 발생하는 가중 계수를 모두 제1의 연산부에 수집한다. 상기 제1의 연산부의 최종단에 있는 라운드 처리부는, 제1의 연산부의 연산 결로서 기능하는, 정수값으로 소수 데이터를 라운드한다. 제2의 연산부는 상기 정수값에, 한정된 제2의 무게(weight)를 곱하고, 그 곱한 결과를 입력 데이터에 가산한다. 라운드 처리부를 갖는 제1의 연산부의 구성이, 후술하는 제1의 실시예를 나타내는 도 3에 나타나 있다.
이러한 연산 방법에 따라 변환 처리와 역변환 처리를 행하면, 변환측의 제1의 연산부로부터의 출력 후에 역변환측의 제1의 연산부의 라운드 처리부에의 입력까지, 라운드 처리를 행할 필요가 없다. 따라서, "a0*b0 + a1*b1 + a2*b2 + a3*b3 = -2"의 조건을 충족시키면, 변환측의 제1의 연산부의 출력을 신호원으로 하는 전송값은 정확하게 -2E가 되고, 역변환측의 제1의 연산부의 라운드 처리부에 도달한다.
이 전송값 "-2E"가, 명백하게 정수값이며, 소수 데이터를 포함하고 있지 않기 때문에, 라운드 처리되지 않는다. 전송 계수는 정확하게 “-2”가 되어, 가역성 이 유지된다.
두 번째의 방법은, 제2의 가중 계수가 정수가 아닌 유리수 값(비정수 값)인 경우의 라운드 처리 방법이다. 라운드 처리부를 갖는 제2의 연산부의 구성은, 후술하는 제2의 실시예를 나타내는 도 4에 도시되어 있다. 제2의 가중 계수를 곱해서 생성된 소수점 이하의 값을 잘라버린다. 그 잘라버린 값을 다른 신호에 중첩해서 그 결과의 신호를 전송한다. 반대로, 소수점 이하의 값을 반올림했을 경우에는, 반올림한 성분을 다른 신호로부터 감산해서 그 결과의 신호를 전송한다.
이 잘라버리거나 반올림한 성분을 다른 신호에 중첩해서 그 결과의 신호를 전송할 때에, 그 신호에 대한 제1의 가중 계수를 고려하여, 최종적으로 원하는 전송값을 얻도록, 중첩하는 값을 조정할 필요가 있다. 후술하는 제3의 실시예에 있어서는, 이 방법의 예에 대해서 설명한다. 이와 같이, 두 번째의 방법에 의하면 전송 계수 “-2”이 정확하게 취득된다.
두 번째의 방법뿐만 아니라 세 번째의 방법도 제2의 가중 계수가 정수가 아닌 유리수 값일 경우의 라운드 처리 방법이다. 두 번째의 방법은 쌍을 이룬 데이터에 서로 다른 라운드 처리를 부여한다. 반대로, 세 번째의 처리방법은 처리를 3이상의 데이터로 확장한다. 이 처리에 있어서는, 제1의 연산부의 연산 결과의 소수점 이하의 값이 1/n만큼 증가할 때마다, n개의 신호 중의 1개를 1만큼 증분시켜서 1/n의 증분시마다 신호를 전송한다.
제2의 가중 계수 b0, b1, b2가 1/3이라고 가정한다. 가중 계수에 신호들을 곱한 후에, 간단히 1개의 신호의 소수점 이하의 부분을 잘라버려서 정수화하고, 1/3의 가산 후에는 또 다른 신호의 소수점 이하의 부분을 잘라버려서 정수화하며, 2/3의 가산 후에는 나머지의 신호의 소수점 이하의 부분을 잘라버려서 정수화한다. 따라서, 3개의 신호를 1/3의 단위로 전송할 수 있다.
또한, 2개의 제2의 가중 계수 b0와 b1가 1/2이라고 가정한다. 가중 계수에 신호들을 곱한 후에, 1개의 신호의 소수점 이하의 부분을 잘라버려서 정수화하고, 다른 신호의 소수점 이하의 부분을 반올림하여 정수화한다. 따라서, 1/2단위로 신호들을 전송할 수 있다. 1/n의 단위를 사용하는 신호 n을 전송함으로써, 전송 계수 “-2”을 유지한다.
전송 계수 “-2”을 취득하기 위한 라운드 처리의 상세한 조정은, 가중 계수의 값과 근사 계산의 도입에 의존해서 변화한다. 이 때문에, 모든 상황을 본 명세서에 기술하는 것은 불가능하다. 그러나, 일반적인 사상은, 이들 3가지의 방법으로 대별될 수 있다.
이하, 본 발명에 따른 실시예를 설명한다.
<제1의 실시예>
본 발명의 제1의 실시예에 있어서의 데이터 변환장치(데이터 변환회로)의 구성을 도 3 및 도 4에 나타낸다. 정수를 얻기 위한 라운드 처리를 무시했을 경우, 어떤 변환의 변환행렬이든 다음 식(5)로 나타낼 수 있다.
이 변환의 물리적인 의미는, 각 입력 데이터로부터의 4개의 입력 데이터의 DC 성분을 감산하는 것이다.
압축 부호화의 관점에서는, 이 변환은 매우 중요하지 않지만, 본 발명의 가역성을 설명하는 데에 적합한 가장 간단한 변환이기 때문에, 본 발명에 예시되어 있다.
1개의 변환행렬에 대해서는, 제1의 가중 계수와 제2의 가중 계수의 조합이 많이 있고, 그들에 따라 몇 종류의 형태가 존재한다. 이하, 대표적인 2개의 구성에 대해서 설명한다. 제1의 가중 계수 a0, a1, a2, a3을 모두 “-1/2”로 설정해서 제2의 가중 계수 b0, b1, b2, b3을 모두 정수값 “1”로 설정했을 때의 구성을 도 3에 나타낸다. 또한, 제1의 가중 계수 a0, a1, a2, a3을 모두 정수값 “-1”로 설정해서 제2의 가중 계수 b0, b1, b2, b3을 모두 “1/2”로 설정했을 때의 구성을 도 4에 나타낸다.
도 3의 가역성은, 상술한 3가지의 방법 중 첫 번째의 방법으로 설명할 수 있고, 도 4의 가역성은, 세 번째의 방법으로 설명할 수 있다.
도 3 및 도 4의 각각에 있어서, 4개의 입력 데이터를 위에서부터 순차적으 로, 제1, 제2, 제3, 제4 입력 데이터라고 부르고, 연산 중에 있는 데이터를, 제1, 제2, 제3, 제4 데이터라고 부르기로 한다. 이것은 나머지 실시예의 설명에 있어서도 적용한다.
정수를 얻기 위한 라운드 처리를 제외하고, 이들 2개의 변환은 완전히 동일하지만, 이 처리의 대상이 되는 신호가 서로 다르기 때문에, 변환 결과가 미묘하게 다르다.
도 3의 구성에서는, F = a0*D0 + a1*D1 + a2*D2 + a3*D3 =(-D0 - D1 - D2 - D3)/2을 계산하기 때문에, 계산 결과 F에 소수점 이하의 1비트의 데이터가 발생하는 경우가 있다. 이 때문에, 라운드 처리부(113)는 소수 데이터를, 제1의 연산부(111)로부터의 출력 E로서의 역할을 하는 정수 round(F)로 라운드한다. 이 라운드 처리 방법은, 역변환기의 라운드 처리 방법과 같으면, 잘라버림 또는 반올림 어느 것이든 괜찮다.
상기 라운드 처리 결과, 즉, 제1의 연산부(111)에 의한 연산 결과 E에, 제2의 가중 계수 b0, b1, b2, b3을 곱하고, 그 합계를 대응하는 입력에 각각 가산해서, 변환 결과로서 Di'=Di + E(i=0, 1, 2, 3)을 출력한다.
역변환에 있어서는 변환 처리와 같은 처리를 행한다. 역변환의 제1의 연산 결과는, 다음과 같다.
round(a0*D0' + a1*D1' + a2*D2' + a3*D3')
= round((-D0 - D1 - D2 - D3 - 4E)/2)
= round((-D0 - D1 - D2 - D3)/2 - 2E)
= round((-D0 - D1 - D2 - D3)/2) - 2E
= round(F) - 2E
= E - 2E
= -E
이 구성에서는, 변환기의 제1의 연산부(111)의 출력으로부터 역변환기의 제의 2연산부의 출력으로의 전송 계수는, 1×4×(-1/2) = -2이다. 그 결과, 역변환기의 제1의 연산부는, 상술한 바와 같이, -E를 출력한다.
역변환기는 -E에 제2의 가중 계수 “1”을 곱해서 얻은 값 -E를, 상기 역변환기의 각 입력 데이터 D0',D1',D2',D3'에 가산함으로써, 원래의 데이터 D0, D1, D2, D3을 복원한다.
제1의 가중 계수 a0, a1, a2, a3이 "-1"이고, 제2의 가중 계수 b0 ,b1, b2, b3이 "1/2"일 때 도 4의 변환 내용에 대해서 간단히 설명한다.
도 4의 구성에서는, 제2의 연산부(112)는 입력 데이터에 제2의 가중 계수 "1/2"을 곱하여, 제2의 가중 계수를 곱한 데이터마다 라운드 처리를 행할 필요가 있다. 이 라운드 처리부가 4개 존재하는 것이 도 4의 큰 특징이다.
가역성을 유지할 수 있는지 여부는 4개의 라운드 처리에 의존한다. 가역성을 유지하기 위해서는, 전송 계수가 “-2”인 도 3의 구성과 같은 처리를 행하거나, 또는 전송 계수가 정확하게 “-2”로 조정되어야 하다.
도 3의 구성과 같은 처리는, 4개의 라운드 처리에 있어서 같은 처리를 행할 것이다. 즉, 4개의 모든 라운드 처리에 있어서 일률적으로 반올림하거나 또는 잘라 버리는 처리를 행한다. 이것은, 도 3에 있어서의 제1의 연산부(111)의 라운드 처리가, 동등한 변형에 의해 제2의 연산부(112)로 이동했을 경우의 구성 조건이기도 하다.
가역성을 유지하는 다른 방법은, 전송 계수를 정확하게 “-2”로 조정하는 것이다. 이것은, 4개의 라운드 처리 중 2개에서 반올림을 실행하고, 나머지의 2개에서 잘라버림을 실행함으로써 실현될 수 있다.
가중 계수 “1/2”을 곱함으로써, 1비트의 소수 데이터가 발생할 가능성이 있다. 이 소수 데이터를 라운드 처리로 인해 정확하게 전송할 수 없게 되면, 전송 계수가 “-2”로부터 변경된다. 즉, 이 1비트의 소수점 이하의 값을, 복수의 신호를 통해서 전송할 수 있으면, 전체의 전송 계수를 “-2로 설정할 수 있다.
그 때문에, 쌍을 이룬 신호 중 하나가 잘라버림 처리되고, 다른 하나가 반올림 처리된다. 이렇게, 2개의 신호들의 각각에 의해 "0.5"을 전송하는 대신에, 2개의 신호들의 어느 하나가 일괄로 "1"을 전송한다. 이에 따라 외견상, 1비트의 소수점 이하의 값도 정확히 전송할 수 있다.
이하, 이들 내용을 요약한다. 도 4의 구성에 있어서 무손실 변환을 실현하기 위해서는, 4개의 라운드 처리 중에서 짝수개의 라운드 처리에서 반올림을 행하고, 나머지의 짝수개의 라운드 처리에서 잘라버림을 행한다. 즉, 모두 16개의 조합 중 절반, 즉 4개의 라운드 처리의 8개의 조합으로 무손실 변환을 행할 수 있다.
이와 같이 비교적 단순한 변환이라도, 무손실 변환이 가능한 라운드 처리의 베리에이션(variation)이 많이 존재한다. 복잡한 변환은, 무손실 변환이 가능한 복 합한 라운드 처리를 필요로 한다. 이 경우에도, 기본 개념은, 전송 계수 “-2”을 설정하는 것과, 그것과 같은 처리를 변형하는 것이며, 이것에 의해, 가역성이 유지된다.
도 2 및 도 3과 이상의 설명으로부터 분명한 것처럼, 본 발명에 있어서의 무손실 변환 데이터로부터 원래의 데이터를 복원하기 위한 역변환은, 기본적으로 변환 처리와 같다.
특히, 제1의 연산부가 라운드 처리를 행하는 경우에는, 라운드 처리를 포함하여, 변환 처리와 역변환 처리는 완전히 동일하다. 제2의 연산부가 라운드 처리를 행하는 경우에도, 라운드 처리를 제1의 연산부에 있어서의 라운드 처리로 교체하는 것이 가능하면, 제2의 연산부에 있어서의 라운드 처리도 포함하여, 변환과 같은 처리로 역변환을 행할 수 있다.
또 다른 경우에, 제2의 연산부가 라운드 처리를 행하면, 종래의 리프팅 연산의 역변환과 같은 개념에 근거해서 라운드 처리를 실행한다. 좀더 구체적으로, 변환시의 리프팅 연산에서 가산한 값과 같은 값을, 역변환시에도 생성하여 감산함으로써, 원래의 데이터를 복원한다.
우선, 역변환에 있어서의 제1의 연산부로부터의 출력 -E에 -1을 곱해서, 변환시의 제1의 연산부로부터의 출력 E와 같게 한다. 그리고 나서, 그 결과의 값에 제2의 가중 계수를 곱한다. 변환시의 제2의 연산부에 의한 라운드 처리와 같은 처리를, 역변환시의 제2의 연산부에 의한 라운드 처리에 적용하여, 변환시와 같은 값을 생성하고, 그 생성된 값을 감산한다.
도 5a 및 5b는, 도 3 및 도 4의 구성 예에 있어서의 변환 데이터의 예를 나타낸다. 이들 예에 있어서는 가역성에 주목한다.
<제1의 실시예의 응용 예>
상기 제1의 실시예의 응용 예의 장치의 구성을 도 6에 나타낸다.
본 응용 예는, 상기 제1의 실시예의 구성을 그대로 이용하고, 이 구성의 입출력단에서 약간의 처리를 부가함으로써, 화상 데이터 압축 부호화에서 가장 기본적인 변환인 무손실 아다마르 변환을 실현한다.
도 6에서는, 도 3의 구성에, 제1의 입력 데이터의 부호를 반전하기 위한 제1의 부호 반전기를 부가한다. 또한, 제1의 입력 데이터의 변환 데이터를 출력할 때에 한번 더 부호를 반전하기 위해서 제2의 부호 반전기를 부가한다. 이러한 구성으로 변환을 실행함으로써, 4차의 무손실 아다마르 변환을 행할 수 있다.
제1 및 제2의 부호 반전기의 동작을 행렬로 나타낸다. 각 행렬에서, 단위행렬의 제1행 및 제1열의 요소의 부호를 -1로 반전한다. 제1의 부호 반전기는 입력 데이터에 작용하고, 제2의 부호 반전기는 변환된 출력 데이터에 작용한다. 이 때문에, 부호 반전용의 행렬을 변환행렬(5)의 좌우측에 곱한 결과는, 다음 식(6)에 나타나 있는 바와 같이 4차 아다마르 변환 행렬이 된다.
도 6에 나타내는 구성이 이 행렬을 제공한다.
물론, 도 4에 나타낸 변환장치의 전후단에 제1 및 제2의 부호 반전기를 부가한 구성으로도, 무손실 아다마르 변환을 실현할 수 있다.
<제2의 실시예>
본 발명의 제2의 실시예에 있어서의 데이터 변환장치의 구성을 도 7에 나타낸다. 상기 구성의 변환 행렬은 상기 응용 예에 있어서의 행렬(6)의 우측에 있는 행렬과 같다. 본 제2의 실시예에서는, 상기 응용 예에 있어서 입출력단에 배치한 2개의 부호 반전기를 제1의 연산부(301)와 제2의 연산부(302)가 각각 흡수해서 통합한다.
따라서, 제1의 가중 계수 a0, a1, a2, a3은 각각 1/2, -1/2, -1/2, 및 -1/2이다. 제2의 가중 계수 b0, b1, b2, b3은 각각 -1, 1, 1, 및 1이다. 이때, a0*b0 + a1*b1 + a2*b2 + a3*b3 = -2이다.
도 7의 구성에 있어서, 제1의 입력 데이터에 대한 제1의 가중 계수와 제2의 가중 계수의 부호를 각각 반전하고, 가중 계수를 곱하지 않는 데이터 패스(115)에 부호 반전기가 존재한다. 그러나, 상기 데이터 패스 상에 부호 반전기가 존재하지 않은 것처럼 입력측에 있는 부호 반전기와 출력측에 있는 부호 반전기가 상쇄하여, 도 7에 나타낸 구성이 된다.
본 제2의 실시예에 따른 제1의 연산부(301)에 있어서의 라운드 처리부(113)에 의한 처리를 "잘라버림"이라고 했을 경우, 상기 제1의 연산부(301)의 연산 결과 E는 아래와 같다.
E = round((D0 - D1 - D2 - D3)/2)
= (D0 - D1 - D2 - D3) >> 1
(여기에서 x>>1은 x을 1비트 우측으로 시프트하는 것을 나타낸다)
이 연산 결과 E를 사용하면, 변환 출력은 아래와 같이 계산된다.
D0'= D0 - E
D1'= D1 + E
D2'= D2 + E
D3'= D3 + E
무손실 아다마르 변환은 다양한 계산 방법에 의해 행해질 수 있다. 상기 계산 방법은 소프트웨어와 하드웨어 양쪽의 제어 하에 고속으로 연산을 실행할 수 있어, 본 발명의 특징을 가장 잘 이용하고 있다.
지금까지는, 무손실 아다마르 변환을 소프트웨어 또는 하드웨어에 의해서만 고속으로 연산할 수 있었다. 그렇지만, 본 발명에 근거하는 상기의 계산 방법은 양쪽 소프트웨어 및 하드웨어 처리로 고속 연산을 행할 수 있다. 그 때문에 소프트웨어 및 하드웨어 처리는 같은 계산 방법을 사용할 수 있다.
정수를 얻기 위한 라운드 처리를 행하지 않으면, 실수(real-number) 연산에 의한 4차 아다마르 변환이 행해진다. 상기 실수 아다마르 변환이라도 고속으로 연산할 수 있다.
상술한 제1실시예에 있어서의 도 4의 구성을 기초로, 상기의 부호 반전을 행했을 경우, 제1의 가중 계수 a0, a1, a2, a3은 각각 1, -1, -1, 및 -1이며, 제2의 가중 계수 b0, b1, b2, b3은 각각 -1/2, 1/2, 1/2, 1/2이다. 그리고, 도 4와 마찬 가지로, 제2의 연산부가 라운드 처리를 행한다. 이 경우의 구성은 도 8에 나타낸다.
도 7의 구성에 있어서의 제1의 연산부에 의한 라운드 처리를 "잘라버림"이라고 했을 경우, 상기 라운드 처리와 같은 도 8의 제2의 연산부에 의한 라운드 처리는, 제1의 데이터에 대해서만 "반올림"이고, 제2~4의 데이터에 대해서는 "잘라 버림"이다.
이것은, 행렬(6)에 있어서, 제1의 연산부의 라운드 처리 결과에서 제1의 데이터 계열의 부호만 반전하고 있기 때문이다.
또한, 제1의 연산부에 의한 라운드 처리를 "반올림"이라고 했을 경우, 상기 라운드 처리와 같은, 도 8의 제2의 연산부에 의한 라운드 처리는, 제1의 데이터에 대해서만 "반올림"이고, 제2~4의 데이터에 대해서는 "잘라버림"이다. 이들 라운드 처리에 의해 변환된 데이터를 역변환하는 경우의 라운드 처리는, 변환시의 라운드 처리와 같으면 된다.
한편, 도 7의 라운드 처리와 같지 않은 무손실 변환이 가능한 라운드 처리는, 상기 제1의 실시예와 같이, 많은 종류가 있다.
제1의 데이터와 쌍을 이룬 데이터는 제1의 데이터와 같은 라운드 처리를 행하고, 나머지의 2개의 데이터는 서로 반대의 라운드 처리를 행함으로써, 전송 계수 “-2”를 설정할 수 있다. 이 조건 하에서는, 라운드 처리가 6종류가 있다. 이들 라운드 처리에 대한 역변환은, 제1의 실시예와 같이, 아래처럼 행해진다.
역변환에 있어서의 제1의 연산부로부터의 출력 -E에 -1을 곱해서 변환시의 제1의 연산부로부터의 출력 E와 부호를 일치시킴으로써, 같은 값을 취득한다. 그 결과의 값에 제2의 가중 계수를 곱한 후에, 변환시의 제2의 연산부에 의한 라운드 처리와 같은 처리를 적용해서 변환시와 같은 값을 재현한다. 변환시에는, 이 값을 입력 데이터에 가산해서 변환된 데이터를 얻는다. 이 때문에, 역변환시에, 이 값을 감산하면, 원래의 입력 데이터를 복원할 수 있다.
<제3의 실시예>
본 발명의 제3의 실시예에 있어서의 데이터 변환장치의 구성을 도 9 및 도 10에 나타낸다.
도 9 및 도 10에 나타낸 구성은, 가중된 입력 데이터에 대하여 4차 무손실 아다마르 변환을 행할 수 있다.
본 제3의 실시예의 설명 전에, 가중된 데이터에 대해서 간단히 설명한다.
가중된 데이터는, 다양한 상황에서 발생한다. 예를 들면, 본 발명과 관련되는 화상 부호화에 있어서의 무손실 변환에서는, 적은 수의 리프팅 연산에 의한 무손실 회전 변환의 결과로서, 가중된 변환 데이터가 생성된다.
가장 간단한 예로서, 45°회전을 2단계의 리프팅 연산으로 실현하는 구성을 도 12에 나타낸다. 가중되지 않은 회전 데이터를 생성하는 정규 회전 변환을 실현하기 위해서는, 3단계의 리프팅 연산이 필요하다는 것이 알려져 있다. 이 회전 변환이 2단계의 리프팅 연산에 의해 행해지면, 데이터가 가중된 데이터로 변환된다.
도 12의 변환에 의해 생성된 무게(weight)는 (COS45°, 1/COS45°), 즉, ( ,)이다. 가산기 411은 단자 402로부터 입력되는 데이터 Yi에, 단자 401로부터 입력되는 데이터 Xi를 가산하고, 단자 422로부터 데이터 Yo가 출력된다. 데이터 Yo는 넓은 레인지를 갖고,( )가 가중된 데이터이다. 상기 데이터 Yo에 1/2을 곱하고, 감산기(412)는 하측의 데이터로부터 그 곱한 결과를 감산하고, 단자 421로부터 데이터 Xo가 출력된다. 데이터 Xo는, 좁은 레인지를 갖고, ( )이 가중된 데이터이다.
가령 입력 데이터 (10, 0)를 반시계방향으로 45°회전시켰을 경우, 그 회전 결과는 본래 ( , )로 변환되어야 한다. 그러나, 도 12의 구성은 최초의 리프팅 연산으로 입력 데이터를 (10, 0+10)로 변환하고, 그 후에 두 번째의 리프팅 연산으로 (10-10/2, 10)=(5, 10)로 변환함으로써, 가중된 데이터가 된다.
각 가중 변환 시에, "2"나 "1/2"이 데이터에 가중되는 것이 용이하게 발생할 것이다.
이 점에서, 본 제3의 실시예에서는 1, 2, 1/2, 및 1이 가중된 입력 데이터에 대하여 4차 무손실 아다마르 변환을 행하는 것이 가능한 구성의 2가지의 예를 기술하고 있다.
도 9에 나타낸 구성에서는, 제1의 가중 계수 a0, a1, a2, a3이 각각 -1/4, 1/8, 1/2, 1/4이다. 제2의 가중 계수 b0, b1, b2, b3은 각각 2, -4, -1, -2이다.
도 10에 나타낸 구성에 있어서는, 제1의 가중 계수 a0, a1, a2, a3이 각각 -1/2, 1/4, 1, 1/2이다. 제2의 가중 계수 b0, b1, b2, b3은 각각 1, -2, -1/2, -1이다.
양쪽 구성은, "a0*b0 + a1*b1 + a2*b2 + a3*b3 = -2"의 조건을 충족시키고 있다.
도 9의 구성에서는, 제2의 가중 계수가 모두 정수이다. 제1의 연산부(301)가 라운드 처리부(303)를 포함하고, 정수값을 출력하기 때문에, 제2의 연산부(302)는 라운드 처리를 실행할 필요가 없다(라운드 처리부를 포함할 필요가 없다). 이 구성은, 지금까지 설명한 실시예에서 반복해서 기술되었고, 상기와 같은 원리에 근거해서 무손실 변환을 실현할 수 있다.
그러나, 도 9의 구성에서는, 한번 정수로 라운드된 데이터는 제2의 연산부(302)에 의해 2배 혹은 4배로 된 후에 사용된다. 이 때문에, 라운드 처리시에 데이터에 중첩한 왜곡도 2배 혹은 4배로 되기 때문에, 라운드 처리에 의한 왜곡이 증가하게 된다.
도 10에 나타낸 구성은 상기 라운드 처리에 의한 왜곡을 억제할 것이다. 제1의 연산부(311)에 의해 정수로 라운드된 데이터를, 최대 2배로 해서, 제2의 연산부(312)에서 사용한다.
제2의 연산부(312)에 있어서의 제2의 가중 계수 중에서 절대값이 1보다 작은 무게(-1/2)가 1개만 존재한다. 이 계수를 곱한 데이터를 정수로 라운드하기 위한 라운드 처리부가 필요하다. 따라서, 도 10에 나타낸 구성에서는, 제1 및 제2의 연산부(311, 312)가 라운드 처리부 313 및 314를 각각 갖는다.
제2의 연산부(312)에 존재하는 라운드 처리부의 수가 1개이기 때문에, 지금까지 설명한 실시예에 적용한 방법은, 전송 계수 "-2"를 설정할 수 없어, 무손실 변환을 실현할 수 없다. 따라서, 본 제3 실시예는 상기 3개의 라운드 처리방법 중에서 두 번째의 방법을 채용한다.
도 10에 나타낸 구성에서 전송 계수 "-2"를 설정하기 위해서, 상기 제2의 연산부의 라운드 처리부가 잘라버린 소수점 이하의 값을, 또 다른 데이터에 중첩한다. 혹은, 상기 라운드 처리부가 반올림한 소수점 이하의 값을, 또 다른 데이터로부터 감산할 필요가 있다. 설명의 편의상, 상기 라운드 처리에서는, 소수점 이하의 값(1/2 또는 0)을 잘라버리는 것으로 한다.
또 다른 데이터에 중첩하는 값은 정수로 제한된다. 상기 정수에 1/2의 의미를 주기 위해서는, 잘라버린 데이터와 중첩된 데이터와의 사이에서, 복원시의 제1의 가중 계수의 비가 2:1일 필요가 있다.
도 10의 구성에서는, 제2의 연산부(312)의 라운드 처리로 잘라버린 제3의 데이터에 대하여, 제4의 데이터가 상기 관계를 충족하고 있다. 따라서, 도 10에는 나타내지 않았지만, 잘라버린 소수점 이하의 값을 2배로 해서 정수로 하고, 그 정수를 제4의 데이터에 가산한다.
이상의 처리에 의해, 상기 전송 계수 "-2"가 취득될 수 있어, 무손실 변환이 가능하게 된다. 본 제3의 실시예에 있어서의 데이터 변환의 예를 도 11a 및 11b에 나타낸다.
<제4의 실시예>
본 발명의 제4의 실시예에 따른 데이터 변환장치의 구성을 도 13에 나타낸다. 지금까지의 실시예에서는 4개의 입력 데이터에 대한 4차 변환만을 설명했지만, 본 발명은 4차 변환 이외에도 적용할 수 있다. 본 제4의 실시예에서는 3차의 직교 변환의 예를 나타낸다.
도 13에 나타낸 구성에서는, 제1의 연산부(511)에 있어서의 제1의 가중 계수 a0, a1, a2은 모두 2/3이며, 제2의 연산부(512)에 있어서의 제2의 가중 계수 b0, b1, b2은 모두 -1이다. 이들 가중 계수는 a0*b0 + a1*b1 + a2*b2 = -2을 충족시키고, 즉, 전송 계수는 “-2”이다. 이들 가중 계수에 의해 실현되는 변환은, 다음 식(7)으로 나타낼 수 있다.
이 변환행렬에서는, 각 행이 서로 직교하고 있고, 행마다의 요소의 자승 합이 1이다. 이 때문에, 이 변환행렬은 직교변환이다.
제2의 가중 계수 b0, b1, b2이 모두 정수이기 때문에, 라운드 처리는 제1의 연산부(511)에서만 행해질 수 있다. 3에 의한 제산이 가능한 경우에는, 전송 계수를 “-2”로 설정하는 것이 용이하다. PC상의 소프트웨어 처리 등은 이러한 제산을 실행하는 것이 가능하다.
고속 처리가 요구되는 하드웨어 처리에서는, 제산기는 3에 의한 제산을 거의 행하지 않고, 대신에 곱셈에 의한 근사 계산을 행하는 경우가 많다. 이 경우, 2/3 에 근사한 값을 곱한다. 예를 들면, 2/3을 12비트의 소수점 이하의 값으로 근사하면 1365/2048이 되고, 이 값을 곱한다.
일반적으로는, 근사 계산을 행하면, 3으로 제산 가능한 값에 대해서도, 계산 오차가 생겨서 소수 데이터가 발생한다. 상기 근사 계산에 의한 계산 오차는 변환측의 제2의 가중 계수에 곱해진 후에 변환된 출력 데이터에 중첩되고, 역변환에 있어서의 제1의 연산부(511)의 출력에 전파된다.
역변환에 있어서의 제1의 연산부의 라운드 처리는, 원래의 입력 데이터 성분만을 제1의 가중 계수에 곱해서 그 곱한 결과를 합산한 결과에 대해서만, 효과가 있어야 한다. 그렇지만, 상기 근사 계산에 의한 계산 오차가 더해지기 때문에, 라운드 처리의 영향을 파악하는 것이 곤란하다.
이 상황에서는, 전송 계수가 비선형 특성을 갖고, 상수가 아니므로, 그이상 "-2"로 설정될 수 없다. 따라서, 전송 계수 자체를 “-2 ”로 조정하는 대신에, 변환측의 제1의 연산부(511)로부터의 출력 E에 대하여, 역변환측의 제1의 연산부가 -E를 출력하도록 연산 정밀도를 유지함으로써, 무손실 변환을 달성한다.
그 때문에, 상기 2/3의 근사 정밀도를 좀더 정확하게 할 필요가 있다. 변환시의 3개의 입력 데이터가 0~255의 범위 내에 있고, 2/3을 1365/2048로 근사하면, 역변환시의 제1의 연산부로부터의 출력이 -E가 되고, 무손실 변환이 실현 가능하게 된다. 상기 입력 데이터가 그 범위 내에 있으면서 해당 연산부로부터의 출력이 항상 -E가 되는 것을 검증하는 것이 용이하다. 입력 데이터가 클수록, 곱셈 오차가 커지게 된다. 이 때문에, 3개의 입력 데이터가 모두 255 이하의 최대값 부근의 값 을 취하고, 그들의 총 합계가 3n, 3n+1, 및 3n+2이면, 이 출력이 -E가 되는 것을 확인하면 된다. 근사 정밀도가 1비트라도 부족하면, 입력 데이터가 255부근의 값을 취하고, 상기 연산부로부터의 출력이 -E로부터 변경되어, 가역성이 없어져 버린다. 여기에서 전송 계수를 “-2”로 설정하는 경우의 가역성과, 상기 연산부로부터의 출력을 -E로 설정할 경우의 가역성은, 전자의 가역성이 입력 데이터의 크기에 완전히 의존하지 않지만, 후자의 가역성은 입력 데이터의 크기가 소정의 범위 내에서 있는 경우에만 보증된다고 하는 점에서 서로 다르다.
게다가, 3에 의한 제산이 가능한 값의 경우에는, 제1의 실시예 전에 설명한 세 번째의 방법에 따른 3개의 데이터 패스를 사용해서 1/3단위로 신호를 전송한다. 3에 의한 제산 후의 라운드 처리를 조금씩 변경하는 방법을 사용하는 것도 가능하다.
<제5의 실시예>
본 발명의 제5의 실시예에 있어서의 구성으로서, 4개의 리프팅 연산을 조합시킨 구성을 도 14에 나타낸다. 도 14에서는, 전송 계수 = 0의 제5의 실시예의 구성을 전단에 설치하고, 후단에 4개의 리프팅 연산을 행한다. 이 구성에 의해, 무손실 아다마르 변환이 실현된다.
도 14에 있어서, 본 제5의 실시예에 따른 제1의 연산부(601)의 제1의 가중 계수 a0, a1, a2, a3은 각각 -1/2, 1/2, 1/2, 1/2이다. 제2의 연산부(602)에 있어서의 제2의 가중 계수 b0, b1, b2, b3은 각각 -1, +1, -1, -1이다. 이들 가중 계수는 a0*b0 + a1*b1 + a2*b2 + a3*b3 = 0, 즉, 전송 계수 = 0을 충족한다. 이들 가중 계수에 의해 실현되는 변환은, 다음 식(8)으로 나타낼 수 있다.
도 14에 나타낸 변환 처리에 대응하는 역변환 처리의 구성을 도 15에 나타낸다. 지금까지 설명한 실시예는 전송 계수 = -2인 경우만을 설명했고, 역변환처리에 있어서의 제1 및 제2의 가중 계수는 변환 처리의 제1 및 제2의 가중 계수와 같다. 그러나, 전송 계수 = 0의 경우에는, 변환 처리와 역변환처리 간에 가중 계수가 서로 다르다. 역변환처리에 있어서의 제2의 가중 계수는, 변환 처리에 있어서의 제2의 가중 계수에 대하여 부호가 반대이다. 나머지 처리, 예를 들면 역변환처리시의 제1의 연산부는 변환 처리시의 제1의 연산부와 같다.
전송 계수 = 0인 제5의 실시예에서는, 역변환처리에 있어서의 제1의 연산부(601)로부터의 출력은, 순변환 처리에 있어서의 제1의 연산부(601)로부터의 출력과 같다. 따라서, 변환과 역변환에 있어서의 제2의 가중 계수들 간의 관계로부터, 변환시에 제2의 가중 계수를 곱해서 생성한 값에 대하여 부호가 반대인 값을, 역변환시에 생성할 수 있다. 그 생성한 값을 가산해서 변환시에 가산한 값을 상쇄함으로써, 원래의 데이터를 복원할 수 있다.
도 14에 있어서의 4개의 리프팅 연산의 의미에 관하여 설명한다. 변환행렬(8)에 있어서, 상기 변환행렬의 제3행과 제4행 양쪽을, 제2행에 가산하고 제1행으로부터 감산함으로써, 행렬(6)에 나타낸 우측의 아다마르 변환행렬이 취득된다. 이 제3행과 제4행을, 제2행에 가산하고, 제1행으로부터 그들을 감산하는 처리가, 도 14의 리프팅 연산이다.
전송 계수 = 0의 구성만으로, 유효한 변환을 실현하는 것은 어렵다. 그렇지만, 이 구성도 기존의 리프팅 연산과 비교하면, 4차 무손실 아다마르 변환과 같은, 유효한 변환을 실현할 수 있다.
이상 설명한 무손실 변환 처리(장치)를, 예를 들면 JPEG 부호화에서 사용하는 DCT 변환의 일부에 적용한다. 무손실 DCT 변환을 고속으로 연산할 수 있고, 무손실 압축과 손실 압축을 심리스(seamless)로 실현하는 것이 가능한 DCT 베이스의 JPEG 부호화를 고속으로 행하는 것이 가능하다.
특히, 도 7에 나타낸 무손실 아다마르 변환의 구성을, 하드웨어 회로에 구현했을 경우에는, 도 7에 나타낸 회로의 사이즈는 도 6, 도 8 및 도 14에 나타낸 다른 회로의 사이즈보다 작을 수 있어, 회로의 동작에 있어서 적은 전기를 필요로 한다. 따라서, 데이터 압축을 필요로 하는 산업 제품에 있어서 유용하다는 것을 이해할 것이다.
그 외의 실시예
본 발명의 국면들은, 상술한 실시예(들)의 기능들을 행하도록 메모리 디바이스 상에 기록된 프로그램을 판독 및 실행하는 시스템 또는 장치의 컴퓨터(또는 CPU 혹은 MPU와 같은 디바이스)에 의해서도 실현될 수 있고, 또 예를 들면 상술한 실시예의 기능을 행하도록 메모리 디바이스 상에 기록된 프로그램을 판독 및 실행함으로써 시스템 또는 장치의 컴퓨터에 의해 행해지는 방법의 스텝들에 의해 실현될 수 있다. 이 목적을 위해서, 이 프로그램을, 예를 들면 메모리 디바이스(예를 들면, 컴퓨터 판독가능한 매체)로서 기능을 하는 다양한 형태의 기록매체로부터 또는 네트워크를 통해서 컴퓨터에 제공한다.
예시적인 실시 예를 참조하면서 본 발명을 설명했지만, 본 발명은 이 개시된 예시적인 실시 예에 한정되는 것이 아니라는 것이 이해될 것이다. 이하의 특허청구범위의 범주는 모든 변형 및 균등구조 및 기능을 포함하도록 가장 넓게 해석되어야 할 것이다.
도 1은, 본 발명의 무손실 변환의 기본 데이터 변환장치의 도면이다.
도 2는, 행렬식이 -1일 때의 가역성을 설명하기 위한 도면이다.
도 3은, 제1의 실시예에 따른 데이터 변환장치의 도면이다.
도 4는, 제1의 실시예에 따른 또 다른 데이터 변환장치의 도면이다.
도 5a 및 5b는, 제1의 실시예에 있어서의 구체적인 변환 데이터의 예를 나타내는 테이블이다.
도 6은, 제1의 실시예의 응용 예에 따른 데이터 변환장치의 도면이다.
도 7은, 제2의 실시예에 따른 데이터 변환장치의 도면이다.
도 8은, 제2의 실시예에 따른 또 다른 데이터 변환장치의 도면이다.
도 9는, 제3의 실시예에 따른 데이터 변환장치의 도면이다.
도 10은, 제3의 실시예에 따른 또 다른 데이터 변환장치의 도면이다.
도 11a 및 11b는, 제3의 실시예에 따른 구체적인 변환 데이터의 예를 나타내는 테이블이다.
도 12는, 2단계의 리프팅 연산을 나타내는 회로도다.
도 13은, 제4의 실시예에 따른 데이터 변환장치의 도면이다.
도 14는, 제5의 실시예에 따른 데이터 변환장치의 도면이다.
도 15는, 도 14의 역변환처리를 행하는 데이터 변환장치의 도면이다.
Claims (5)
- 복수의 입력 데이터를 입력하는 입력 단자들과, 복수의 변환 결과를 출력하는 출력 단자들을 구비하는 데이터 변환장치로서,상기 입력 단자들에 입력한 데이터에, 각 입력 데이터에 대하여 설정된 제1의 가중 계수를 곱하고, 가중된 데이터를 합산하는 제1의 연산부와,상기 제1의 연산부로부터 취득한 연산 결과에, 상기 각 입력 데이터에 대하여 설정된 제2의 가중 계수를 곱하고, 곱한 결과를 상기 각 입력 데이터에 가산하는 제2의 연산부와,정수가 아닌 유리수의 가중 계수를 곱하는 상기 제1의 연산부 및 상기 제2의 연산부 중의 적어도 하나에 설치되고, 정수가 아닌 유리수의 연산 결과를 정수로 라운드하는 라운드 처리부를 구비하고,상기 각 입력 데이터에 대한 상기 제1의 가중 계수와 상기 제2의 가중 계수의 곱의 합계가 0 및 -2 중 어느 한 쪽을 취하는 데이터 변환장치.
- 제 1 항에 있어서,상기 입력 단자들에 입력하는 데이터와 상기 출력 단자들로부터 출력하는 변환된 데이터는 모두 정수 데이터인 데이터 변환장치.
- 제 1 항에 있어서,상기 입력 단자들은 4개의 데이터를 입력하고,상기 제1의 가중 계수는 4개의 계수 {1/2, -1/2, -1/2, -1/2}로 구성되며,상기 라운드 처리부는 상기 제1의 연산부에 설치되고,상기 라운드 처리부는 4개의 입력 데이터에 상기 4개의 계수를 각각 곱하고, 그 곱한 데이터를 합산해서 얻은 정수가 아닌 유리수의 연산 결과를 정수로 라운드하고, 상기 정수를 상기 제1의 연산부의 출력으로서 출력하며,상기 제2의 가중 계수는 4개의 계수 {-1, 1, 1, 1}로 구성되고,상기 제2의 연산부는 상기 제1의 연산부로부터의 정수에 상기 제2의 가중 계수를 각각 곱하고, 그 곱한 결과를 4개의 입력 데이터 중에서 각각 대응하는 데이터에 가산하고, 가산에 의해 취득된 4개의 데이터를 무손실 아다마르 변환된 결과의 정수로서 출력하는 데이터 변환장치.
- 복수의 입력 데이터로부터 복수의 변환된 데이터를 생성하고, 상기 변환된 데이터를 출력하는 데이터 변환장치의 제어 방법으로서,제1의 연산부가, 상기 입력 데이터에 각 입력 데이터에 대하여 설정된 제1의 가중 계수를 곱하고, 가중된 데이터를 합산하는 제1의 연산 단계와,제2의 연산부가, 상기 제1의 연산 단계에서 얻은 연산 결과에, 상기 각 입력 데이터에 대하여 설정된 제2의 가중 계수를 곱하고, 곱한 결과를 상기 각 입력 데이터에 가산하는 제2의 연산 단계와,정수가 아닌 유리수의 가중 계수를 곱하는 상기 제1 연산 단계와 상기 제2 연산 단계 중의 적어도 하나에 있어서, 라운드 처리부가 정수가 아닌 유리수의 연산 결과를 정수로 라운드하는 라운드 처리 단계를 포함하고,상기 각 입력 데이터에 대한 상기 제1의 가중 계수와 상기 제2의 가중 계수의 곱의 합계가 0 및 -2 중 어느 한 쪽을 취하는 데이터 변환장치의 제어 방법.
- 제 4 항에 있어서,상기 입력 데이터와 상기 변환된 데이터는 모두 정수 데이터인 데이터 변환장치의 제어 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JPJP-P-2008-331190 | 2008-12-25 | ||
JP2008331190A JP4594420B2 (ja) | 2008-12-25 | 2008-12-25 | データ変換装置及びその制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100075734A KR20100075734A (ko) | 2010-07-05 |
KR101219411B1 true KR101219411B1 (ko) | 2013-01-11 |
Family
ID=41820359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20090124531A KR101219411B1 (ko) | 2008-12-25 | 2009-12-15 | 데이터 변환장치 및 그 제어 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7916962B2 (ko) |
EP (1) | EP2202644B1 (ko) |
JP (1) | JP4594420B2 (ko) |
KR (1) | KR101219411B1 (ko) |
CN (1) | CN101765013B (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4933405B2 (ja) * | 2007-11-13 | 2012-05-16 | キヤノン株式会社 | データ変換装置及びその制御方法 |
JP6801461B2 (ja) | 2017-01-11 | 2020-12-16 | 富士通株式会社 | 情報処理装置、情報処理方法、及びプログラム |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030120691A1 (en) | 2001-12-25 | 2003-06-26 | Canon Kabushiki Kaisha | Hadamard transformation method and apparatus |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1292153B1 (en) * | 2001-08-29 | 2015-08-19 | Canon Kabushiki Kaisha | Image processing method and apparatus, computer program, and storage medium |
US7082450B2 (en) * | 2001-08-30 | 2006-07-25 | Nokia Corporation | Implementation of a transform and of a subsequent quantization |
US7194140B2 (en) * | 2001-11-05 | 2007-03-20 | Canon Kabushiki Kaisha | Image processing apparatus and method which compresses image data of each region using a selected encoding method |
JP3754957B2 (ja) * | 2001-12-25 | 2006-03-15 | キヤノン株式会社 | アダマール変換処理方法及びその装置 |
JP3902968B2 (ja) * | 2002-03-26 | 2007-04-11 | キヤノン株式会社 | 画像処理装置及びその制御方法及びコンピュータプログラム及び記憶媒体 |
JP3902990B2 (ja) * | 2002-07-02 | 2007-04-11 | キヤノン株式会社 | アダマール変換処理方法及びその装置 |
JP4366250B2 (ja) * | 2003-06-23 | 2009-11-18 | キヤノン株式会社 | データ変換処理装置及びプログラム |
CN1642280B (zh) * | 2004-01-01 | 2010-04-28 | 浙江大学 | 图像和视频信号的变换装置及其方法 |
JP4378245B2 (ja) * | 2004-08-23 | 2009-12-02 | キヤノン株式会社 | データ変換装置及び方法 |
JP4236266B2 (ja) * | 2004-08-27 | 2009-03-11 | キヤノン株式会社 | データ変換装置およびその方法 |
CN101106714A (zh) * | 2007-07-29 | 2008-01-16 | 浙江大学 | 应用于视频和图像处理的变换方法 |
-
2008
- 2008-12-25 JP JP2008331190A patent/JP4594420B2/ja not_active Expired - Fee Related
-
2009
- 2009-12-14 US US12/636,885 patent/US7916962B2/en not_active Expired - Fee Related
- 2009-12-15 KR KR20090124531A patent/KR101219411B1/ko not_active IP Right Cessation
- 2009-12-22 EP EP09180473.2A patent/EP2202644B1/en not_active Not-in-force
- 2009-12-22 CN CN200910254382XA patent/CN101765013B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030120691A1 (en) | 2001-12-25 | 2003-06-26 | Canon Kabushiki Kaisha | Hadamard transformation method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
JP2010154328A (ja) | 2010-07-08 |
US20100166329A1 (en) | 2010-07-01 |
CN101765013A (zh) | 2010-06-30 |
KR20100075734A (ko) | 2010-07-05 |
EP2202644A2 (en) | 2010-06-30 |
EP2202644B1 (en) | 2018-08-29 |
JP4594420B2 (ja) | 2010-12-08 |
EP2202644A3 (en) | 2017-07-12 |
CN101765013B (zh) | 2012-08-29 |
US7916962B2 (en) | 2011-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7912318B2 (en) | Data transform apparatus and control method thereof | |
KR100912415B1 (ko) | 변환 및 연속되는 양자화의 구현 | |
JP3902990B2 (ja) | アダマール変換処理方法及びその装置 | |
US7188132B2 (en) | Hadamard transformation method and apparatus | |
JP3796432B2 (ja) | フィルタ処理装置およびフィルタ処理方法 | |
KR101219411B1 (ko) | 데이터 변환장치 및 그 제어 방법 | |
US6766341B1 (en) | Faster transforms using scaled terms | |
US7558815B2 (en) | Processing of performance sensitive transforms | |
US8107767B2 (en) | Data transform apparatus and control method thereof | |
US7421139B2 (en) | Reducing errors in performance sensitive transformations | |
US10432937B2 (en) | Adaptive precision and quantification of a wavelet transformed matrix | |
US7489826B2 (en) | Compensating for errors in performance sensitive transformations | |
JP2003283840A (ja) | フィルタ処理装置およびフィルタ処理方法 | |
JP3754957B2 (ja) | アダマール変換処理方法及びその装置 | |
JP3543151B2 (ja) | データ圧縮方法及びデータ圧縮装置 | |
JP5451171B2 (ja) | データ変換処理装置およびデータ変換処理方法 | |
Mosa | COLOR IMAGE COMPRESSION BASED ON ABSOLUTE MOMENT BLOCK TRUNCATION CODING USING DELTA ENCODING AND HUFFMAN CODING | |
JP2011257806A (ja) | データ変換方法、変換装置および画像符号化装置 | |
WO2009057439A1 (en) | Data transform apparatus and control method thereof | |
KR20030049852A (ko) | 역 이산 코사인 변환(idct) 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20151224 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20161227 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |