KR20000050342A - 비손실 데이터 압축 및 신장방법 - Google Patents

비손실 데이터 압축 및 신장방법 Download PDF

Info

Publication number
KR20000050342A
KR20000050342A KR1019990000156A KR19990000156A KR20000050342A KR 20000050342 A KR20000050342 A KR 20000050342A KR 1019990000156 A KR1019990000156 A KR 1019990000156A KR 19990000156 A KR19990000156 A KR 19990000156A KR 20000050342 A KR20000050342 A KR 20000050342A
Authority
KR
South Korea
Prior art keywords
values
bit
information
value
bits
Prior art date
Application number
KR1019990000156A
Other languages
English (en)
Inventor
박인철
Original Assignee
박인철
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 박인철 filed Critical 박인철
Priority to KR1019990000156A priority Critical patent/KR20000050342A/ko
Publication of KR20000050342A publication Critical patent/KR20000050342A/ko

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/55Compression Theory, e.g. compression of random number, repeated compression
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 반복순환에 의한 비손실 데이터 압축 및 신장방법에 관한 것으로서, 본 발명에 의한 비트스트림을 비손실 압축하는 방법은 (a) N비트의 정보를 받아들여 K비트 단위로 나누는 단계; (b) (a)단계에서 나뉘어진 K비트의 정보들이 갖는 2K가지의 값들을 2 이상의 그룹들로 분류하되, 각 그룹에 포함되는 값들의 가지수에 편차를 두는 단계; (c) 기준가지수보다 적은 가지수를 갖는 그룹들을 선택하고, 각 선택된 그룹들에 대해 그 그룹에 속하는 값들 중 가장 빈도수가 많은 값들 순으로 기준 가지수와 선택된 그룹에 속하는 값들의 가지수의 차이 만큼의 값들을 선택하여 비트를 절감하는 단계; (d) 기준가지수보다 많은 가지수를 갖는 그룹들을 선택하고, 각 선택된 그룹들에 대해 그 그룹에 속하는 값들의 분포가능한 값들 중에서 실제 분포하지 않은 값을 삭제함으로써 비트 손실이 발생하지 않도록 하는 단계; 및 (e) 비트 절감이 이루어진 경우에는 압축된 비트스트림에 추가적인 정보를 결합하여 M비트의 정보를 형성하고 M비트의 정보를 N비트의 정보로 간주하여 (a)단계 이하의 단계들을 반복 수행하고, 비트 절감이 이루어지지 않은 경우에는 새로운 M비트의 정보를 받아들이고, 새로운 M비트의 정보를 N비트의 정보로 간주하여 (a)단계 이하의 단계들을 반복 수행하는 단계를 포함함을 특징으로 한다.
본 발명에 의하면, 높은 압축률에 의해 데이터를 비손실 압축할 수 있으며, 비손실 압축된 데이터를 용이하게 신장할 수 있다.

Description

비손실 데이터 압축 및 신장방법{Lossless data compressig and reproducing method}
본 발명은 데이터 압축 및 신장방법에 관한 것으로서, 특히 반복순환에 의한 비손실 데이터 압축 및 신장방법에 관한 것이다.
컴퓨터 및 네트워크에 의해 처리되는 데이터의 정보의 양이 급속도로 늘어남에 따라, 다량의 정보를 저장하기 위한 기록매체 및 고속의 정보전송이 요구되고 있다. 그러나, 기록매체의 기록용량을 증대시키기 위한 하드웨어 기술의 진보속도 및 네트워크를 통한 정보 전송속도는 정보량의 신장속도에 비해 완만하게 증가하여, 많은 양의 정보를 제한된 용량의 기록매체에 어떻게 효율적으로 저장하고 네트워크를 통해 어떻게 빠른 시간 내에 전송할 수 있는가에 대한 연구가 활발히 진행되고 있다.
제한된 용량의 기록매체에 많은 양의 데이터를 저장하기 위해서는 데이터를 압축하여 저장하고 압축되어 저장된 데이터를 신장하여 사용하는 방법이 있다. 또한, 제한된 시간 내에 더욱 많은 데이터를 네트워크로 전송하기 위해서는 송신단에서 데이터를 압축하여 전송하고 수신단에서 압축되어 전송된 데이터를 신장하여 사용하는 방법이 있다. 이와 같은 데이터 압축방식에는 압축된 데이터의 모든 정보를 그대로 복원할 수 있는 비손실 압축방식과 압축 및 복원과정에서 일부의 데이터가 손실되는 손실 데이터 압축방식이 있다.
현재, 비손실 데이터 압축방식은 3:1 정도의 압축률을 달성할 수 있으며, 손실 데이터 압축방식은 100:1 이상의 압축률을 달성할 수 있다. 손실 데이터 압축방식은 비손실 데이터 압축방식에 비하여 데이터 압축률이 훨씬 좋으나, 일부 데이터가 손실되어 복원시에 모든 정보의 복원이 불가능한 단점이 있으므로 주로 리던던시가 많은 화상 또는 음성 정보의 압축분야에서 많이 사용되고 있다. 따라서, 궁극적으로는 데이터의 손실이 없으면서도 데이터의 압축률이 높은 데이터 압축방식의 개발이 요구되고 있다.
본 발명은 상기의 문제점을 해결하기 위하여 창작된 것으로서, 데이터를 압축하고 새 정보를 입력받는 것을 반복순환함으로써 압축률이 높은 비손실 데이터 압축방법을 제공함을 제1의 목적으로 한다.
그리고, 상기의 방법으로 비손실 압축된 정보를 반복순환에 의해 신장하는 비손실 압축데이터 신장방법을 제공함을 제2의 목적으로 한다.
도 1은 본 발명에 의한 비손실 데이터 압축방법의 일실시예를 도시한 흐름도이다.
도 2는 본 발명에 의한 비손실 데이터 압축방법의 다른 실시예를 도시한 흐름도이다.
도 3은 본 발명에 의한 비손실 데이터 압축방법의 또 다른 실시예를 도시한 흐름도이다.
도 4는 기준 가지수보다 적은 가지수를 갖는 그룹에 대해 비트를 절감하는 방법을 설명하기 위한 도면이다.
도 5는 도 4를 예를 들어 설명하기 위한 도면이다.
도 6은 본 발명에 의한 비손실 압축데이터의 신장방법의 일실시예를 도시한 흐름도이다.
상기의 제1목적을 달성하기 위하여, 본 발명의 일실시예에 의한 비트스트림을 비손실 압축하는 방법은 (a) 상기 비트스트림으로부터 N비트의 정보를 취하는 단계(여기에서 N은 1보다 큰 정수); (b) 상기 N비트의 정보를 N비트 미만의 X비트의 정보로 압축하는 단계(여기에서 X는 N>X>0인 정수); (c) 상기 비트스트림으로부터 새로운 Y비트의 정보를 취하는 단계(여기에서 Y는 0보다 큰 정수); (d) 압축된 X비트의 정보와 새로운 Y비트의 정보로 새로운 M(M=X+Y)비트의 정보를 구축하는 단계; 및 (e) 상기 (c)단계에서 더 이상의 취할 새로운 정보가 없을 때까지 상기 (b)단계 내지 (d)단계를 반복하는 것을 특징으로 한다.
상기의 제1목적을 달성하기 위하여, 본 발명의 다른 실시예에 의한 비트스트림을 비손실 압축하는 방법은 (a) N비트의 정보를 받아들여 K비트 단위로 나누는 단계(여기에서, N과 K는 N>K>1인 정수들); (b) 상기 (a)단계에서 나뉘어진 K비트의 정보들이 갖는 2K가지의 값들을 2 이상의 그룹들로 분류하되, 각 그룹에 포함되는 값들의 가지수에 편차를 두는 단계; (c) 상기 2 이상의 그룹들 중 편차를 둔 2 이상의 그룹들을 포함하여 2 이상의 그룹들을 선택하고, 선택된 그룹들에 포함되는 값들을 각각 1개 이상씩 포함되도록 결합하여 새로운 결합값들을 생성함으로써 비트 절감을 이루는 단계; 및 (d) (d.1) 상기 (c)단계를 통해 비트 절감이 이루어진 경우에는 압축 대상 비트스트림으로부터 추가로 정보를 받아들여 비트 절감이 이루어진 비트스트림과 결합하여 M비트의 정보를 형성하고, 상기 M비트의 정보를 상기 N비트의 정보로 간주하여 상기 (a)단계 이하의 단계들을 반복 수행하는 소단계(여기에서 M은 M>K>1인 정수); 및 (d.2) 비트 절감이 이루어지지 않은 경우에는 상기 N비트의 정보를 그대로 보관하고 압축 대상 비트스트림으로부터 새로운 M비트의 정보를 받아들이고, 상기 새로운 M비트의 정보를 상기 N비트의 정보로 간주하여 상기 (a)단계 이하의 단계들을 반복 수행하는 소단계를 구비한 비트 절감단계를 포함함을 특징으로 한다.
상기의 제1목적을 달성하기 위하여, 본 발명의 또 다른 실시예에 의한 비트스트림을 비손실 압축하는 방법은 (a) N비트의 정보를 받아들여 K비트 단위로 나누는 단계(여기에서, N과 K는 N>K>1인 정수들); (b) 상기 (a)단계에서 나뉘어진 K비트의 정보들이 갖는 2K가지의 값들을 2 이상의 그룹들로 분류하되, 각 그룹에 포함되는 값들의 가지수에 편차를 두는 단계; (c) 상기 2 이상의 그룹들 중 2의 누승(2x, x는 자연수)으로 표현되는 기준가지수보다 적은 가지수를 갖는 그룹들을 선택하고, 각 선택된 그룹들에 대해 그 그룹에 속하는 값들 중 가장 빈도수가 많은 값들 순으로 상기 기준 가지수와 상기 선택된 그룹에 속하는 값들의 가지수의 차이 만큼 선택하고, 선택된 값들에 대해서는 (x-1)비트를 할당함으로써 비트를 절감하는 단계; (d) 상기 2 이상의 그룹들 중 상기 기준가지수보다 많은 가지수를 갖는 그룹들을 선택하고, 각 선택된 그룹들에 대해 그 그룹에 속하는 값들의 분포가능한 값들 중에서 실제 분포하지 않은 값을 삭제함으로써 상기 그룹에 속하는 값들을 상기 2의 누승 가지의 값들에 의해 구분 표시하여 비트 손실이 발생하지 않도록 하는 단계; 및 (e) (e.1) 상기 (c)단계 및 (d) 단계를 통해 비트 절감이 이루어진 경우에는 압축 대상 비트스트림으로부터 추가로 정보를 받아들여 비트 절감이 이루어진 비트스트림과 결합하여 M비트의 정보를 형성하고, 상기 M비트의 정보를 상기 N비트의 정보로 간주하여 상기 (a)단계 이하의 단계들을 반복 수행하는 소단계(여기에서 M은 M>K>1인 정수); 및 (e.2) 비트 절감이 이루어지지 않은 경우에는 상기 N비트의 정보를 그대로 보관하고 압축 대상 비트스트림으로부터 새로운 M비트의 정보를 받아들이고, 상기 새로운 M비트의 정보를 상기 N비트의 정보로 간주하여 상기 (a)단계 이하의 단계들을 반복 수행하는 소단계를 구비한 비트 절감단계를 포함함을 특징으로 한다.
상기의 제1목적을 달성하기 위하여, 본 발명의 또 다른 실시예에 의한 비트스트림을 비손실 압축하는 방법은 (a) N비트의 정보를 받아들여 K비트 단위로 나누는 단계(여기에서, N과 K는 N>K>1인 정수들); (b) 상기 (a)단계에서 나뉘어진 K비트의 정보들이 갖는 2K가지의 값들을 2 이상의 그룹들로 분류하되, 각 그룹에 포함되는 값들의 가지수에 편차를 두는 단계; (c) 상기 2 이상의 그룹들 중 2의 누승(2x, x는 자연수)으로 표현되는 기준가지수보다 적은 가지수를 갖는 그룹들을 선택하고, 각 선택된 그룹들에 대해 그 그룹에 속하는 값들 중 가장 빈도수가 많은 값들 순으로 상기 기준 가지수와 상기 선택된 그룹에 속하는 값들의 가지수의 차이 만큼 선택하고, 선택된 값들에 대해서는 (x-1)비트를 할당함으로써 비트를 절감하는 단계; (d) (d.1) 상기 2 이상의 그룹들 중, 상기 기준가지수보다 많은 가지수를 갖는 그룹들을 선택하여 각 선택된 그룹들에 대해 그 그룹에 포함되는 값들을 R개씩(R은 1이상의 자연수) 선택하고, 상기 기준가지수보다 많지 않은 가지수를 갖는 그룹들 중에서 y비트(y≥1)로 표시되는 그룹들을 1그룹 이상 선택하여 각 선택된 그룹들 중에서 S개씩(S는 1이상의 자연수) 선택한 후, 선택된 R개의 값들과 선택된 S개의 값들을 결합한 결합값들을 순차적으로 생성하는 소단계; 및 (d.2) 상기 선택된 그룹별로 상기 결합값들의 분포가능한 값들 중 실제 분포하지 않은 값들을 삭제함으로써 상기 결합값들을 2(xR+yS)가지의 값들에 의해 구분 표시하여 비트 손실이 발생하지 않도록 하는 소단계를 구비하는 비트손실 절감단계; 및 (e) (e.1) 상기 (c)단계 및 (d) 단계를 통해 비트 절감이 이루어진 경우에는 압축 대상 비트스트림으로부터 추가로 정보를 받아들여 비트 절감이 이루어진 비트스트림과 결합하여 M비트의 정보를 형성하고, 상기 M비트의 정보를 상기 N비트의 정보로 간주하여 상기 (a)단계 이하의 단계들을 반복 수행하는 소단계(여기에서 M은 M>K>1인 정수); 및 (e.2) 비트 절감이 이루어지지 않은 경우에는 상기 N비트의 정보를 그대로 보관하고 압축 대상 비트스트림으로부터 새로운 M비트의 정보를 받아들이고, 상기 새로운 M비트의 정보를 상기 N비트의 정보로 간주하여 상기 (a)단계 이하의 단계들을 반복 수행하는 소단계를 구비한 비트 절감단계를 포함함을 특징으로 한다.
상기의 제1목적을 달성하기 위하여, 본 발명의 또 다른 실시예에 의한 비트 스트림을 구성하는 각 원소들이 0 내지 소정의 값 사이에 분포되어 있는 경우, 상기 원소들을 비손실 압축하여 표시하는 방법은 (a) 상기 원소들이 그 값 크기의 오름차순으로 정렬하였을 때, 각 원소들간의 수치적 크기인 사이값들을 산출하는 단계; (b) 상기 사이값들 중 최소값인 최소사이값이 2 이상인 경우, 최소값을 갖는 원소를 기준으로 하고, 각 원소들간의 사이값에서 (최소사이값-1) 만큼을 삭제한 값으로 변환하여 상기 비트 스트림에서 상기 원소들이 갖는 순서대로 표시하는 단계; (c) 상기 변환된 원소들 중 그 최대값이 소정의 2의 누승값(2x, x는 자연수) 미만인 경우, 상기 원소들을 각각 x비트로 구별하여 표시하는 단계를 포함함을 특징으로 한다.
상기의 제1목적을 달성하기 위하여, 본 발명의 또 다른 실시예에 의한 비트 스트림을 구성하는 각 원소들이 0 내지 소정의 값 사이에 분포되어 있는 경우, 상기 원소들을 비손실 압축하여 표시하는 방법은 (a) (a.1) 상기 비트 스트림을 구성하는 각 원소들을 2개 이상의 그룹으로 분류하는 소단계; 및 (a.2) 상기 분류된 각 그룹별로 그 그룹에 속하는 원소들을 그 값 크기의 오름차순으로 정렬하였을 때, 각 원소들간의 수치적 크기인 사이값들을 산출하는 소단계를 구비하는 사이값 산출단계; (b) 상기 사이값들 중 최소값인 최소사이값이 2 이상인 경우, 최소값을 갖는 원소를 기준으로 하고, 각 원소들간의 사이값에서 (최소사이값-1) 만큼을 삭제한 값으로 변환하여 상기 비트 스트림에서 상기 원소들이 갖는 순서대로 표시하는 단계; (c) 상기 변환된 원소들 중 그 최대값이 소정의 2의 누승값(2x, x는 자연수) 미만인 경우, 상기 원소들을 각각 x비트로 구별하여 표시하는 단계를 포함함을 특징으로 한다.
상기의 제2목적을 달성하기 위하여, 본 발명의 일실시예에 의한 비손실 압축된 비트스트림을 원래의 비트스트림으로 신장하는 방법은 (a) 상기 압축된 비트스트림으로부터 M비트의 정보를 취하는 단계; (b) 상기 M비트의 정보에서 이미 복원된 Y비트를 추출하는 단계; (c) 상기 M비트의 정보에서 남은 (M-Y)비트를 N비트(N>M-Y)로 신장하는 단계; 및 (d) 신장 후, 시작 비트가 소정의 값이면 남은 (M-Y) 비트를 최종 추출하여 신장과정을 종료하고, 시작 비트가 상기 소정의 값과 다른 값이면 N을 M으로 간주하여 상기 (a)단계 이하를 계속하는 단계를 포함함을 특징으로 한다.
이하에서 첨부된 도면을 참조하여 본 발명을 상세히 설명한다.
도 1에 의하면, 본 발명에 의한 비트스트림을 비손실 압축하는 방법은 다음과 같다.
먼저, 압축 대상 비트스트림으로부터 N비트의 정보를 취한다(100 단계). 다음, 시작 비트 플래그를 '1'로 설정하고(110 단계), N비트의 정보를 소정의 압축 방식에 의해 N비트 미만의 정보로 압축한다(120 단계). 이때, 압축된 정보의 크기를 X비트(N>X)라 하자. 그 다음, 추가로 압축할 정보가 더 있는지 여부를 확인하고(130 단계), 더 압축할 정보가 없으면 압축 과정을 종료한다.
압축할 정보가 더 있다면, 압축 대상 비트스트림으로부터 새로운 Y비트의 정보를 취하고(140 단계), 압축된 X비트의 정보와 새로운 Y비트의 정보로 새로운 M(M=X+Y)비트의 정보를 구축한다(150 단계). 이후, 시작 비트 플래그를 '0'으로 설정하여 상기 120 단계를 계속한다(160 단계). 이때, Y는 (N-X)와 동일한 값이 될 수도 있지만, 압축 과정과 신장 과정 사이에 소정의 규칙을 정함에 의해 (N-X)와 다른 값이 될 수도 있다.
도 2에 의하면, 본 발명에 의한 비손실 데이터 압축방법의 다른 실시예가 수행되는 과정은 다음과 같다.
압축이 필요한 비트스트림에서 N비트를 취하여 1비트 이상 단축시키는 과정을 1개의 압축 사이클로 정의한다. 먼저, 압축 대상 비트스트림으로부터 N비트의 정보를 취하고, 시작 비트 플래그를 '1'로 설정한다(200 단계).
N비트의 압축 대상 비트스트림을 K(N>K>1)비트로 나누면, 나누어진 K비트의 값들은 각각 0 ~ (2K-1)의 2K가지의 값들 중 하나의 값을 갖게 된다(210 단계). 2K가지의 값들을 그 빈도수에 따라 2 이상의 그룹으로 분류하되, 어떤 그룹에는 소정의 기준보다 많은 가지수의 값들을 할당하고, 다른 그룹에는 소정의 기준보다 적은 가지수의 값들을 할당한다(220 단계).
이후에, 각 그룹별로 하나 이상의 값을 추출하고, 이 값들을 결합하여 새로운 값으로 변환함으로써 압축한다(230 단계). 압축 사이클의 후단에서는 추가로 압축될 정보가 있는지 여부를 확인하고(240 단계), 더 이상의 압축 대상 정보가 없다면 압축과정을 종료한다.
한편, 추가로 압축할 정보가 있다면, 상기 압축 사이클을 통해 비트절감이 이루어졌는지 여부를 확인한다(250 단계). 압축 사이클은 정보필드로 사용되는 비트수에 비해 압축에 의해 절감되는 비트의 수가 하나 이상 많아야 성공적이 된다. 만약 압축 사이클이 진행되어도 압축 대상 비트스트림을 1비트 이상 단축할 수 없다면, 압축하기 전 N비트의 비트스트림은 그대로 보관하고 다시 시작 비트 플래그를 '1'로 설정하여 200 단계 이후의 최초의 압축 사이클을 계속한다(270 단계). 압축 사이클이 성공적인 경우에는 추가 정보를 입력하여 이미 압축된 정보와 결합하고, 시작 비트 플래그를 '0'으로 설정하여 210 단계 이후의 압축 사이클을 계속한다(260 단계).
도 3에 의하면, 본 발명에 의한 비손실 데이터 압축방법이 구체화된 다른 실시예가 수행되는 과정은 다음과 같다.
먼저, 압축 대상 비트스트림으로부터 N비트의 정보를 취하고, 시작 비트 플래그를 '1'로 설정한다(300 단계).
N비트의 압축 대상 비트스트림의 전부 또는 일부를 J(N>J>1)비트로 나누면, 나누어진 J비트의 값들은 각각 0 ~ (2J-1)의 2J가지의 값들 중 하나의 값을 갖게 된다(310 단계). 2J가지의 값들을 그 빈도수에 따라 2 이상의 그룹으로 분류하되, 어떤 그룹에는 소정의 기준보다 많은 가지수의 값들을 할당하고, 다른 그룹에는 소정의 기준보다 적은 가지수의 값들을 할당한다(320 단계).
그리고, 각 그룹들 중 기준보다 많은 가지수의 값들을 가지는 하나 또는 그 이상의 그룹들의 원소들을 구분할 수 있는 선두비트필드를 생성한다(330 단계). 또, 기준 가지수와 같은 가지수의 값들을 가지는 그룹들이 있다면, 그 그룹들의 원소들을 구분할 수 있는 선두비트필드를 생성한다(340 단계). 이후, 상기 330, 340 단계에 해당되지 않는 하나 또는 그 이상의 그룹들은 기준 가지수보다 적은 가지수의 값들을 가지는 그룹들이므로, 이 그룹들의 원소들에 대한 선두비트 필드를 생성하고 비트절감을 실시한다(350 단계). 한편, 330 단계에서 기준보다 많은 가지수를 가지는 하나 또는 그 이상의 그룹들로 판단된 경우에는 소정의 압축방법을 사용하여 비트손실을 줄인다(360 단계).
압축 사이클의 후단에서는 추가로 압축될 정보가 있는지 여부를 확인하고(370 단계), 더 이상의 압축될 정보가 없다면 압축과정을 종료한다. 한편, 추가로 압축할 정보가 있다면, 상기 압축 사이클을 통해 전체적으로 비트절감이 이루어졌는지 여부를 확인한다(380 단계). 압축 사이클은 정보필드로 사용되는 비트수에 비해 압축에 의해 절감되는 비트의 수가 하나 이상 많아야 성공적이 된다. 만약 압축 사이클이 진행되어도 압축 대상 비트스트림을 1비트 이상 단축할 수 없다면, 압축하기 전 N비트의 비트스트림은 그대로 보관하고 다시 시작 비트 플래그를 '1'로 설정하여 300 단계 이후의 최초의 압축 사이클을 계속한다(390 단계). 압축 사이클이 성공적인 경우에는 추가 정보를 입력하여 이미 압축된 정보와 결합하고, 시작 비트 플래그를 '0'으로 설정하여 310 단계 이후의 압축 사이클을 계속한다(395 단계).
이하에서는 2K가지의 값들을 2개의 그룹으로 나누어 압축하는 방법을 설명한다.
0 ~ (2K-1)의 값들 중 가장 많은 빈도를 갖는 (2K-1+1)가지의 값들은 그룹1로 분류하고, 나머지 (2K-1-1)가지의 값들은 그룹2로 분류한다.
그룹 분류
그룹 종류 그룹 2 그룹 1
가지수 (2K-1-1)가지 (2K-1+1)가지
구성요소의 내용 많은 빈도수를 갖는 값 적은 빈도수를 갖는 값
선두 비트 '0' '1'
두 개의 그룹으로 나눈 상태에서, 두 그룹에 속하는 값들을 서로 결합하여 변환하는 방법에 의해 비트를 절감하기 위해서는 다음의 조건이 필요하다.
< 조 건 > : 그룹1로 선택된 값들의 빈도수의 총합이 그룹2로 선택된 값들의 빈도수의 총합과 같거나 적어야 한다.
상기 <조건>이 만족되는 경우에는 다음과 같이 처리된다.
압축대상 비트스트림을 스캔하면서, 그룹1의 (2K-1+1)가지의 값들은 선두비트 '1'로 구분하고, 그룹2의 (2K-1-1)가지의 값들은 선두비트 '0'으로 구분하여, N비트의 압축 대상 비트스트림의 순서에 대응하는 "선두비트필드"를 생성한다. 여기서, 2K가지의 값들 중 어떤 값이 그룹1에 속하고, 어떤 값이 그룹2에 속하는지를 구분하기 위해 2K비트의 "그룹구분플래그"를 마련하여 정보플래그 내에 둔다.
그런데, 그룹1의 (2K-1+1)가지의 값들과 그룹2의 (2K-1-1)가지의 값들은 각각의 그룹에서 연속된 숫자값으로 존재하지는 않는다. 따라서, 그룹1에서 속하는 값들을 각각 그 값의 크기가 작은 값부터 순서대로 0에서 2K-1의 값으로 변환한다. 마찬가지로, 그룹2에 속하는 값들을 그 값의 크기가 작은 값부터 순서대로 0에서 (2K-1-2)로 변환한다. 그룹1의 변환값 및 그룹2의 변환값들은 각각 (2K-1+1)개의 연속된 값들 및 (2K-1-1)개의 연속된 값들로 표시된다.
이제, "선두비트필드"를 차례로 스캔하여, 그룹1과 그룹2의 선두비트에 해당하는 변환값들을 소정의 개수씩 결합한 결합값들을 생성한다. 즉, 그룹1에서 속하는 변환값들 중 압축단계와 신장단계에서 서로 약속한 소정의 개수의 변환값들과 그룹2에서 속하는 변환값들 중 압축단계와 신장단계에서 서로 약속한 소정의 개수의 변환값들을 결합한 결합값을 생성한다.
여기에서는 그룹1 및 그룹 2에 속하는 변환값들 중 각각 1개씩을 결합하는 방법을 설명한다. "선두비트필드"에서 그룹1의 첫 번째 선두비트를 만나게 되면 그 위치에 대응하는 변환값을 찾고, 그룹2의 첫 번째 선두비트의 위치에 대응하는 변환값을 찾아, 찾은 두 변환값에 대응하는 결합값을 생성한다. 2개의 변환값과 결합값의 매핑은 소정의 수식을 사용하여 이루어지며, 그 수식은 압축 과정 및 신장 과정에서 동일하게 사용할 수 있다. 이때, 그룹1에 속하는 변환값과 그룹2에 속하는 변환값이 상호 결합하는 순서는 일정하게 유지되어야 한다.
상기한 바와 같이 그룹1의 변환값과 그룹2의 변환값들을 결합하는 이유를 설명하기로 한다.
그룹1의 변환값들은 0에서 2K-1의 값들로 (2K-1+1)가지이고, 그룹2의 변환값들은 0에서 (2K-1-2)의 값들로 (2K-1-1)가지이다. 따라서, 이들 변환값들을 결합할 때의 경우의 수는 다음과 같다.
(2K-1+1)×(2K-1-1) = 22K-2-1
즉, (22K-2-1)가지의 값들이 형성될 수 있다.
그런데, 이 결합값들은 각각 압축하기 전의 비트스트림에서 K비트의 값들 2개를 합한 2K비트의 값에 대응된다. 압축하기 전의 2K비트로 구성된 값은 각 K비트의 값마다 1비트씩의 선두비트가 필요하고 그 값을 구별하기 위해서는 (2K-2)비트가 사용되므로, 구분하여 표시할 수 있는 값들은 22K-2가지이다. 그런데, 수학식 1에 의하면 일반적인 경우보다 1가지 적은 (22K-2-1)가지의 값들로 결합된 모든 값들을 표시할 수 있다.
이와 같이 결합값들의 가지수를 일반적인 경우보다 1가지 줄이는 결합에 의해 비트를 절감하는 방법들 중 하나는 다음과 같다.
도 4에 의하면, A 영역은 [0 ~ (22K-3-1)]까지의 값에 대응되고, B 영역은 [22k-3~ (22K-2-1)]까지의 값에 대응된다. (22K-2-1)가지의 값들 중 (22K-2-2)가지의 값들을 구별하여 표시하기 위해서는, A 영역에서의 [0 ~ (22K-3-2)]의 값들 및 B영역의 [22k-3~ (22K-2-2)]의 값들이 각각 (2K-2)비트로 표시되어야 하므로 비트 절감이 이루어지지는 않는다. 그러나, (22K-2-1)가지의 값들 중 나머지 1가지 값은 A 영역의 (22K-3-1) 및 B 영역의 (22K-2-1)을 포함하는 영역에 대응하므로 (2K-3)비트로 표시될 수 있고, 이 값에 대하여는 1비트의 절감이 이루어진다.
따라서, 가장 빈도수가 많은 결합값을 "최다빈도플래그"에 설정하고, 그 값을 (2K-3)비트의 (22K-3-1)와 교체하여 표시하는 것이 바람직하다.
만약, 두 그룹의 총빈도수가 같으면 각 그룹의 변환값들은 쌍을 이루어 여분없이 압축 과정이 완료될 수 있으나, 그룹 1의 총빈도수가 그룹 2의 총빈도수보다 적은 경우에는 그룹들 간에 쌍을 이루고 남은 그룹 2의 변환값들끼리 결합한다. 이 경우 그룹 2의 변환값들의 표시범위는 [0 ~ (2K-1-2)]이므로, 상기한 방법과 유사하게 추가적으로 비트를 절감할 수 있다.
이와 같은 방법으로 주어진 압축 대상 비트스트림을 압축시킬 수 있는데 상기 <조건>이 만족되지 않는 경우에는 다음과 같은 몇가지 방법들을 동시에 고려하여 압축방법을 찾아가도록 한다.
첫째 방법은 <차이값 표시법>을 사용하여 원래의 압축대상 비트스트림을 변환하여 재구성하는 방법이다.
이 방법은 일련의 전개된 값들을 대상으로, 각각의 값들을 그 값에 이웃하는 값과의 차이값으로 변환하여 표시하는 방법이다. 이 차이값은 큰 쪽 방향과 작은 쪽 방향 중 하나의 방향을 결정하여 표시한다. 또한, 변환이 이루어지기 전의 이웃값을 기준으로 차이값을 결정하는 방법, 변환이 이루어진 후의 이웃값을 기준으로 차이값을 결정하는 방법 또는 이들 두 방법을 혼용하는 방법이 사용될 수 있다. 이와 같은 <차이값 표시법>에 의해 압축대상 비트스트림을 변환한 후에 변환 후의 압축대상 비트스트림을 그룹 1과 그룹 2로 분류하고 상기 <조건>이 만족하는지 여부를 검사한다. 상기 <조건>이 만족하면 그룹 1과 그룹 2에 속하는 값들을 서로 결합하여 압축을 시도하고, 그렇지 않으면 다시 2차의 <차이값 표시법>을 시도한다. <차이값 표시법>에 의한 변환은 소정의 차수 이내에서 시도하되, 성공적인 경우에는 그 때의 차수 및 그 방법을 정보 플래그에 설정하여 원래의 데이터를 복원할 때 사용될 수 있도록 한다.
두 번째 방법은 <초과값 삭제법>이다. 이 방법은 <차이값 표시법>이 소정의 차수 이내에 성공하지 못한 경우에 사용되거나, 압축대상 비트스트림에서 K비트 단위로 분류한 이후에 독립적으로 사용될 수도 있다.
먼저, <차원 변경법>을 정의한다. <차원 변경법>은 상기의 설명에서는 N비트의 압축대상 비트스트림을 K비트 단위로 나누어 2K가지의 값들을 취급하였으나, 압축 과정 중에서 압축대상 비트스트림의 전부 또는 일부에 대하여 K비트 단위가 아니라 J비트(N>J≠K) 단위로 나누어 2J가지의 값들을 대상으로 취급하는 것을 의미한다. <초과값 삭제법>을 적용하기 전에 경우에 따라서는 <차원 변경법>을 적용할 수도 있다.
<초과값 삭제법>은 압축대상 비트스트림을 구성하는 K비트 단위의 값들이 2 이상의 그룹으로 분류할 때(본 발명의 일실시예에서는 표 1에 나타난 바와 같이 2 그룹으로 분류된다) 특정 그룹에 속하는 값들의 가지수가 다른 그룹에 속하는 값들의 가지수와 차이가 나도록 분류하는 경우에, 기준 가지수 이상의 가지수를 갖는 그룹(이하에서 "초과가지수 그룹"이라 한다)들을 대상으로 한다. <초과값 삭제법>은 이들 그룹들에 대하여 기준 가지수를 초과하는 가지수를 소정의 방법으로 삭제함으로써 기준 가지수를 표시하기 위한 비트만으로 이들 그룹에 속하는 값들을 모두 표시하는 방법이다.
<초과값 삭제법>을 적용하기 전에 <차원 변경법>을 적용하는 경우에는 차원 변경된 상태에서 특정 그룹에 속하는 값들의 가지수가 다른 그룹에 속하는 값들의 가지수와 차이가 나도록 2 이상의 그룹으로 분류하고, 기준 가지수 이상의 가지수를 가진 그룹들을 대상으로 <초과값 삭제법>을 사용한다.
예를들어, N비트의 비트스트림을 K비트로 나누어 압축하다가, 다시 그 전부 또는 일부의 비트스트림을 J비트(J≠K)로 차원 변경하여 2 그룹으로 나누는 경우, 각 그룹은 다음과 같이 분류된다.
[표 1.1]
그룹 분류
그룹 종류 그룹 2.1 그룹 1.1
가지수 (2J-1-1)가지 (2J-1+1)가지
선두비트 '0' '1'
그룹 1.1은 기준으로 정한 2J-1가지보다 1가지 더 많은 (2J-1+1)가지의 값들을 포함하고 있으므로, 비트 손실이 없는 기준인 (J-1)비트에 의해 모든 값들을 구분하여 표시할 수 없어 비트 손실이 발생하게 된다.
그룹 1.1에서 [0 ~ 2J-1] 범위에서의 값을 갖는 (2J-1+1)가지의 값들을 Q개씩 묶어서 표시한다고 할 때, (2J-1+1)Q가지의 값들로 모두 표시할 수 있다(Q≥1). 한편, 기준인 2J-1가지의 값들로 구성된 경우에 이들을 Q개씩 묶은 값은 2(J-1)·Q가지의 값들로 표시되므로 추가 비트없이 (J-1)·Q비트로 모두 표시할 수 있다. 즉, 그룹 1.1에 속하는 값들을 Q개씩 묶은 값을 구분하여 0부터 정수값으로 표시하면 그 그룹최대값은 [(2J-1+1)Q-1]이 되고, 기준인 2J-1가지의 값들로 구성된 경우에 그 값들을 Q개씩 묶은 값을 0부터 정수값으로 표시하면 그 기준최대값이 [2(J-1)·Q-1]이 된다. 여기서, 초과값이란 기준가지수를 갖는 그룹에 속하는 값들을 Q개 결합한 값들을 구분하여 표시하기 위해 필요한 그룹최대값과 기준가지수보다 많은 가지수를 갖는 그룹에 속하는 값들을 Q개 결합한 값들을 표시하기 위해 필요한 기준최대값의 차이값을 의미한다.
따라서, 본 예에서의 초과값은 다음의 수식에 의해 표현된다.
초과값 = [(2J-1+1)Q-1] - [2(J-1)·Q-1]
결국, 어떠한 방법으로든 수학식 2의 초과값 만큼을 그룹최대값에서 삭제할 수 있다면, 그룹 1.1에 속하는 값들을 Q개씩 묶었을 때 그 묶은 값들을 각각 기준 비트인 (J-1)·Q비트만으로 표시할 수 있어 비트의 손실을 줄일 수 있다. 한편, 그룹 2.1은 기준 가지수보다 1가지 적은 가지수의 값들로 구성되므로 도 4에 의해 제시된 방법과 유사하게 비트 절감이 가능하다. 따라서, 전체적으로는 N비트의 압축대상 비트스트림을 N비트 미만으로 압축할 수 있다. 이와 같이 그룹최대값에서 초과값을 삭제하는 방법을 <초과값 삭제법>이라 한다.
이제, <초과값 삭제법> 중 하나의 방법으로 <사이값 삭제법>을 설명한다.
A비트 단위의 값들이 P개 있다고 할 때(2A>P), A비트로 표시 가능한 값들은 [0 ~ (2A-1)]이고, P개의 값들은 이들 중에 분포될 것이다. 이때, P개의 값들이 작은 값에서부터 오름차순으로 정렬되어 있다고 간주할 때(실제적으로 P개의 값들은 그들의 순서를 그대로 유지하고 있으며 오름차순으로 정렬되는 것은 아니다), 각 값들은 2 이상의 간격, 즉 사이값을 가진다고 가정한다. 2A가 P보다 충분히 큰 값인 경우, 이 가정이 이루어질 가능성은 매우 높다. P개의 값들 사이에서 가장 작은 간격을 "최소사이값"으로 결정한다. 그 다음, P개의 값들 중 가장 작은 값을 기준으로 하고, 2번째 작은 값은 그 값에서 (최소사이값-1) 만큼을 뺀 값으로 대치하고, 3번째 작은 값은 그 값에서 (최소사이값-1)×2 만큼을 뺀 값으로 대치하고, 계속하여 P번째 값은 (최소사이값-1)×(P-1) 만큼을 뺀 값으로 대치한다. 이와 같이 대치하더라도 각 값이 지니는 순서에는 변함이 없게 된다. 결국, 전체 (2A-1)에 대하여 (최소사이값-1)×(P-1) 만큼 삭제할 수 있게 된다.
최소사이값은 정보플래그에 별도로 보관하여야 하며, <사이값 삭제법>에 의해 삭제된 총값이 수학식 2의 초과값보다 작은 경우에는, 복구 과정과 사전에 약속된 방법에 의해 2차, 3차의 <사이값 삭제법>을 실시하여 수학식 2의 초과값보다 더 크게 삭제될 수 있을 때까지 반복실시할 수 있다.
복구 과정에서는 가장 큰 값에 (최소사이값-1)×(P-1) 만큼 더하고, 그 다음으로 큰 값에 (최소사이값-1)×(P-2) 만큼 더하며, 이와 같은 방식으로 계속 진행함으로써 순서의 바뀜없이 원래의 값을 복구할 수 있다.
이상의 <사이값 삭제법>을 그룹 1.1에 적용하는 경우를 살펴본다. 그룹 1.1에 해당하는 (2J-1+1)가지의 값들이 갖는 총빈도수가 T개이라 하면(T>Q), 이들 값들을 Q개씩 묶은 경우에는 T/Q개의 값들이 0에서 [(2J-1+1)Q-1] 사이에 분포된다. 따라서, T/Q개의 값들이 오름차순으로 정렬된 상태에서 2 이상의 사이값을 갖는다면, <사이값 삭제법>을 적용하여 (최소사이값-1)×((T/Q)-1) 만큼을 그룹최대값에서 삭제할 수 있다.
이와 같이 그룹최대값에서 <사이값 삭제법>을 적용하여도 삭제된 값이 기준최대값인 (2(J-1)·Q-1) 이하로 줄지 않은 경우에는 2차, 3차의 <사이값 삭제법>을 반복하여 적용할 수 있다. 이때, 2차 또는 3차의 <사이값 삭제법>을 적용하는 경우에는, 이전의 <사이값 삭제법>에 의해 그룹최대값을 삭제한 상태의 값들을 대상으로 하여, 그 값들을 새로이 변환하여 재조정하여야만 추가적인 삭제가 용이하다. 이때의 변환방법으로는 상기의 <차이값 표시법> 또는 소정의 값을 가산 또는 감산하는 등의 방법들이 독립적으로 또는 혼용하여 사용될 수 있다.
한편, 이상에서 설명한 <사이값 삭제법>에서는 오름차순으로 정렬되어 분포된 각 값들이 2 이상의 사이값을 가지는 것을 가정하여, 최소사이값이 1인 경우에는 이상에서 설명한 방법을 적용할 수 없다. 그런데, 최소사이값이 1인 경우에, 각 값에서 (최소사이값-1), 즉 0을 빼는 것이 아니라 1을 빼고, 실제 사이값이 1이어서 삭제후 두 값이 같아지는 경우에는 그 값에 대한 비트스트림에서의 위치만을 정보플래그에 표시할 수 있다면 원래의 값을 복구할 수 있다. 따라서, 사용되는 정보플래그의 크기가 압축된 비트의 크기보다 작은 경우에는 사이값이 1인 경우에도 <사이값 삭제법>을 사용할 수 있다. 더욱이, 같은 값이 존재하여 최소사이값이 0인 경우에도 그 상태를 표시한 정보플래그의 크기에 비하여 압축된 비트의 크기가 크다면 본 <사이값 삭제법>이 사용될 수 있다.
이제, <초과값 삭제법> 중 다른 방법으로 <영역 삭제법>이 있다.
<영역 삭제법>은 0 내지 그룹최대값 사이에 T/Q개의 값들이 분포되는 경우, 이 값들이 분포되지 않은 영역들을 1개 이상 선택하고, 선택된 영역들의 크기가 초과값보다 큰 경우에는 이 영역들을 0 내지 그룹최대값 사이에서 삭제하는 방법이다. 이때, 영역을 지정하기 위한 정보플래그의 크기가 압축된 비트의 크기보다 작은 경우에는 이 방법이 적용될 수 있다.
이상에서 설명한 방법들을 모두 적용한 경우에도 비트절감이 이루어지지 않은 경우에는 N비트의 비트스트림은 그대로 보관하고, 압축대상 비트스트림으로부터 새로이 N비트의 비트스트림을 받아들여 상기의 과정을 반복수행한다.
이하에서는 구체적인 숫자를 예로들어 설명하기로 한다. 압축대상 비트스트림의 크기를 N=1,572,864비트로 정하고, 이들 전부를 구분단위 K=6비트로 나누면, 262,144개의 6비트 값들이 생긴다. 이들 6비트의 값들은 각각 0 ~ 63 중 하나의 값이며, 평균 4,096개의 빈도수를 가진다. 그러나, 이들 6비트의 값들의 압축대상 비트스트림에서의 실제적인 빈도수는 각각 다를 수 있다. 여기서, 64가지의 값들 중 그 빈도수가 가장 적은 33가지의 값들을 선택하여 그룹1로 분류하고, 그 나머지 31가지의 값들을 그룹 2로 분류한다.
그룹 분류
그룹 종류 그룹 2 그룹 1
가지수 31가지 33가지
구성요소의 내용 많은 빈도수를 갖는 값 적은 빈도수를 갖는 값
선두 비트 '0' '1'
이때, "그룹분류플래그"로서 64비트를 할당하여, 64가지의 숫자들이 각각 그룹1 및 그룹2 중 어느 그룹에 속하는지를 나타낸다. 또한, 압축대상 비트스트림을 6비트 단위로 스캔하면서, 각각의 6비트 값의 선두비트를 순서대로 표시하면, 총 262,144비트의 선두비트열이 생성된다.
이후, 그룹1에 속하는 값들의 총빈도수가 그룹2에 속하는 값들의 총빈도수와 같거나 적은 경우에는 비트 절감과정을 실행한다.
여기에서는 그룹1에 속하는 값들의 총빈도수가 122,144이고, 그룹2에 속하는 값들의 총빈도수가 140,000이라 가정한다. 따라서, 선두비트가 '1'인 122,144개의 값들과 선두비트가 '0'인 122,144개의 값들 중 각각 1개씩의 값들을 순서대로 결합하여 새로운 값으로 변환한다. 여기에서, 그룹1에 속하는 값들은 33가지이고, 그룹2에 속하는 값들은 31가지이므로, 이들 값들이 결합하는 경우의 수는 33×31=1,023가지이다. 그러므로, 122,144개의 쌍들은 1,023가지의 값들로 표시할 수 있다.
이때, 1,023가지의 값들 중 가장 많은 빈도를 갖는 값이 '700'이고, 그 빈도수가 150개라고 가정하면, 도 4는 도 5와 같이 다시 작성될 수 있다. 여기에서, 가장 많은 빈도수를 갖는 '700'의 위치를 '511'의 위치와 교환하고, '700'은 정보플래그 내에 기재한다.
1,023가지의 값들은 도 5에 도시된 구조에 따라, [0 ~ 510] 및 [512 ~ 1022]는 각 영역 내에서의 위치를 표시하는 9비트에 영역을 구분하기 위한 1비트를 포함하여 10비트로 표시되지만, '511'와 교환된 '700'에 대해서는 그 위치를 표시하기 위한 9비트만으로 표시되므로 1비트가 절감된다. '700'의 빈도수는 150이므로, 결국 150비트가 절감된다.
한편, 그룹 1과 그룹 2에 속하는 값들이 한 개씩 결합하고 남은 그룹 2에 속하는 값들의 개수는 17,856개인데, 그룹 2에 속하는 모든 값은 31가지의 값들로 표시되므로 이상의 과정과 유사하게 31가지의 값들 중 가장 많은 빈도수의 값을 선택하여 1비트 절감된 비트열을 할당한다면 그 빈도수만큼 절감할 수 있다.
이때, 그룹 2에서 가장 많은 빈도수를 갖는 값의 빈도수가 600개라면, 이전에 절감된 150비트와 더불어 750비트를 절감할 수 있게 된다. 이와 같이 절감된 750비트 중 정보플래그들에 할당된 비트수를 제외한 나머지 비트가 1,572,864비트에서의 유효 절감비트가 된다.
만일, 두 그룹에 속하는 값들의 총빈도수가 같은 경우에는 그룹 1과 그룹 2에 속하는 값들이 정확히 한 개씩 결합하여 쌍을 이루므로, 결합에 의한 비트 절감만이 이루어지고 그룹 2의 여분의 값들에 의한 추가적인 비트 절감은 이루어지지 않는다.
한편, 그룹 1의 총빈도수가 그룹 2의 총빈도수보다 많은 경우, 즉 <조건>이 만족되지 않는 경우에는 다음의 방법들 중 적합한 것을 선택하여 압축한다.
첫째, <차이값 표시법>을 사용하여 262,144개의 값들 전부를 변환하는 과정을 설명한다. 여기서, 설명의 편의를 위해 6비트 단위의 값들 중 최초 5가지의 값들만을 고려하도록 하여, 그 최초 5가지의 값들은 '38', '49', '14', '6', '60',…이라 가정한다.
먼저, 첫째값을 기준으로 하여 둘째값을 변환하는데, 둘째값이 더 크므로 49-38=11로 계산하여 둘째값을 '11'로 대치한다. 그 다음, 셋째값은 둘째값의 변환 전의 값인 '49'를 기준으로 하여 셋째값이 더 작아 차이값이 음의 값이 되므로 그 차이값의 2의 보수(2's complement)값을 구하여 대치한다. 즉, 14-49+63+1=29에 의해 계산된 '29'가 대치되는 셋째값이 된다. 마찬가지로, 넷째값은 6-14+63+1=56이므로, '56'으로 대치되고, 다섯째값은 60-6=54이므로, '54'로 대치된다. 이와같은 방법으로 총 262,143개의 값을 모두 변환하고, <조건>에 맞는지 여부를 검사한다. 그래도, <조건>에 맞지 않으면 2차, 3차의 <차이값 표시법>을 반복하면서 <조건>에 맞는지 여부를 검사한다. 이 과정에서 <조건>에 맞으면, 그 차수를 정보플래그에 표시하고 압축을 실시한다.
둘째, <초과값 삭제법>이 사용될 수 있다. 이 방법은 <조건>에 맞지 않고 <차이값 표시법>으로도 압축이 되지 않는 경우에 사용될 수도 있으나, 1,572,864비트의 비트스트림을 표 2와 같이 최초 분류한 상태에서 다른 방법에 대한 대체방법으로서 독립적으로 사용될 수도 있다. 또한, <초과값 삭제법>을 사용하기 전에 <차원 변경법>을 적용할 수도 있으므로, 본 예에서는 <차원 변경법>을 먼저 실시하도록 한다.
먼저, <차원 변경법>에 의해, 본 예에서는 표 2에 각 값들을 6비트 단위로 나눈 것을 8비트 단위로 나누도록 한다. 그러면, 6비트 단위의 262,144개의 값들이 8비트 단위의 196,608개의 값들로 바뀌게 된다. 이와 같이 8비트 단위로 차원 변환된 비트스트림을 대상으로 <초과값 삭제법>을 적용한다.
[표 2.1]
그룹 분류
그룹 종류 그룹 2.1 그룹 1.1
가지수 127가지 129가지
선두비트 '0' '1'
먼저, 표 2.1에 기재된 바와 같이 8비트 단위의 256가지 값들 중에서 0 ~ 128의 값을 가지는 129가지 값들을 그룹 1.1로 하여 선두 비트 '1'로 설정하고, 그 이후의 129 ~ 255의 값을 가지는 127가지의 값들을 그룹 2.1로 하여 선두 비트 '0'으로 설정한다. 이와같이, <초과값 삭제법>을 사용하기 위해서는 편차를 가진 그룹 분류는 필요하지만, 표 2의 그룹분류와 같이 각 그룹에 속하는 값들의 빈도수를 구하는 것이 반드시 필요하지는 않으므로 이 과정을 생략하여 정보플래그의 비트수를 줄일 수 있다. 다만, 표 2.1의 경우 0 ~ 126의 값을 가지는 129가지 값들의 총빈도수가 127 ~ 255의 값을 가지는 127가지 값들의 총빈도수보다 현저히 많은 경우에는, 0 ~ 126의 값들을 그룹 2.1로 하고 127 ~ 255의 값들을 그룹 1.1로 바꾼 후, 그 변경상태를 정보플래그에 표시하는 방법을 적용할 수도 있다.
본 예에서는 그룹 1.1에 속한 값들의 총빈도수는 98,700개이고, 그룹 2.1에 속한 값들의 총빈도수는 97,908개라 가정한다. 표 2.1에서 그룹 2.1에 속한 값들은 7비트로 표시가능한 128가지보다 1가지가 적은 127가지 뿐이므로, 도 5와 유사한 방법으로 비트를 절감할 수 있다.
반면에, 그룹 1.1에 속한 98,700개의 값들은 3개씩 묶어서 나타내면, 3개가 묶인 값들은 각각 1293=2,146,689가지의 값들 중 하나의 값이며 그 개수는 98,700/3=32,900개가 된다. 그런데, 기준인 128가지의 값들을 3개씩 묶으면, 그 값들은 각각 1283=2,097,152가지의 값들 중 하나의 값이다. 따라서, 초과값은 1293-1283=49,537인데, 이 초과값 만큼을 1293에서 삭제할 수 있다면, 그 나머지는 1283가지이므로 기준 가지수의 그룹과 같이 비트 손실없이 21비트로 표시할 수 있게된다.
이제, 이 초과값을 줄이기 위해 <사이값 삭제법>을 다음과 같이 적용한다.
그룹 1.1에 속한 값들이 3개씩 묶인 값들은 각각 [0 ~ 2,146,688] 이내에 32,900개의 값들이 분포되어 있게 된다. 만약, 32,900개의 값들이 오름차순으로 정렬되었을 때 3 이상씩 차이가 있다면, 각 값들 사이의 값들을 2 만큼씩 줄여 2×32,899=65,798 만큼 줄일 수 있다. 이 경우, 상기 초과값 49,537보다 더 많은 값이 줄어들어 사이값이 삭제된 값들은 [0 ~ 2,097,151] 내에 분포하게 된다. 따라서, 이 값들은 모두 21비트로 구별하여 표시할 수 있게 된다.
한편, 32,900개의 값들이 오름차순으로 정렬되었을 때 2 이상씩 차이가 있다고 가정하면, 각 값들의 사이값들을 1씩 줄여 32,899의 값을 줄일 수 있다. 먼저, 가장 작은 값을 기준으로 두 번째 작은 값부터 모든 값을 1씩 감소시킨다. 다음, 세 번째 작은 값부터 모든 값을 1씩 감소시킨다. 그 다음, 네 번째 작은 값부터 모든 값을 1씩 감소시킨다. 이와 같이 계속하면, 마지막으로 가장 큰 값이 32,900번째 값은 32,899 만큼의 값이 줄어들게 된다. 이와 같은 방법에서는, 각 값들의 배열순서를 바꾸지 않고 정렬된 것을 가정한 상태에서의 사이값을 줄인 것이므로, 가장 큰 값에 32,899 만큼을 더하고, 두 번째 큰 값에 32,898을 더하는 등의 과정에 의해 신장 과정에서의 원상 복구가 가능하다.
이와 같이 <사이값 삭제법>을 1차로 적용하여도 상기의 초과값만큼을 삭제하지 못하는 경우에는 2차, 3차로 계속하여 <사이값 삭제법>을 적용할 수 있다. 본 예의 경우, 1차 <사이값 삭제법>을 실시하여 32,899 만큼 줄었으므로, 최대값 2,146,688에서 이 값을 뺀 2,113,789 값을 기준으로 하여 <차이값 표시법>을 실시하여 그 값들을 변환한다. 이와 같은 변환 후의 값들은 [0 ~ 2,113,789] 사이에 분포하므로, 2차 <사이값 삭제법>에서는 기준 가지수인 2,097,152와의 차이인 16,638 만큼을 삭제하면 된다. 따라서, 32,898개의 사이값들 모두가 2 이상의 간격을 가지지 않더라도, 일부만을 선택하는 <사이값 삭제법>을 활용할 수도 있다. 그래도 만족되지 않는 경우에는 2차 또는 3차의 <차이값 표시법>을 통하여 조건에 만족하는 상태를 찾도록 한다.
여기서도 <사이값 삭제법>을 실시한 횟수, 각 <사이값 삭제법>을 실시하기 위해 <차이값 표시법>을 실시한 횟수는 모두 정보플래그에 표시하여야 한다.
이상과 같은 본 발명의 실시예에서 사용되는 정보필드의 구성을 살펴보면 다음과 같다.
▼ 시작비트(1비트) : 최초 압축 사이클을 시작할 때는 '1'로, 그 다음 압축 사이클부터는 '0'으로 설정.
▼ 그룹구분플래그 : 2개 이상의 그룹으로 분류할 경우 각 그룹을 구분하기 위한 플래그. 본 예에서는 64가지의 값들을 2개의 그룹으로 분류하였으므로 64비트가 사용됨. 그러나, <초과값 삭제법>을 적용한 경우에는 이 플래그가 필요없다.▼ 적용방법선택플래그(1비트) : 압축을 위해 선택된 방법을 표시. 본 예에서 표 1에 따라 2개의 그룹으로 나눈 경우, 두 그룹에 속하는 값들을 하나씩 선택하여 쌍으로 결합하는 방법과 <초과값 삭제법> 중 선택된 방법을 표시.
▼ 차원변경유무플래그(1비트) : 최초 기준이 된 비트 단위의 구분에서 미리 약속된 다른 비트 단위로 변경되어 사용되었는지 여부를 표시(비트 단위가 여러 가지로 약속된 경우에는 2비트 이상도 사용가능).
▼ 결합후최다빈도플래그(10비트) : 표 2의 상태에서 한 쌍씩 결합해서 얻어진 새로운 결합값들 중 가장 많은 빈도수를 갖는 값을 표시(적용방법선택플래그에서 <초과값 삭제법>을 선택한 경우에는 본 플래그는 사용되지 않음).
▼ 적은그룹최다빈도플래그(5비트 또는 7비트) : 표 2에서 적용될 경우에는 그룹 2에 속하는 값들의 가지수가 기준 가지수보다 1가지 적으므로 도 5와 같은 구조에서 비트를 절감하기 위해 사용. 차원변경을 하고 <초과값 삭제법>을 사용할 경우에는 표 2.1과 같이 비트 단위가 바뀌므로 7비트가 사용되어야 함.
▼ 변환횟수플래그(5비트) : 표 2의 상태에서 그룹 2의 총빈도수가 그룹1의 총빈도수보다 적은 경우 <차이값 표시법> 등의 방법을 실시한 횟수. 본 예에서는 0 ~ 31회까지 가능하며, 0은 변환을 하지 않은 것을 표시. <초과값 삭제법>을 사용한 경우에는 <사이값 삭제법>의 적용이 1회로 만족되지 않은 경우, <초과값 삭제법>을 몇차례 실시했는지를 표시.
▼ 삭제법변환횟수플래그(8비트) : 표 2.1의 상태에서 <초과값 삭제법>을 사용하기 위해 매번 <차이값 표시법>을 조건에 맞도록 몇차례 실시했는가를 표시. 만일, <초과값 삭제법>이 2회 실시되었다면, 1차의 <초과값 삭제법> 적용시의 <차이값 표시법> 실시횟수 및 2차의 <초과값 삭제법> 적용시의 <차이값 표시법> 실시횟수를 각각 표시하기 위해 각 4비트, 총 8비트가 할당된다.
▼ 최소사이값표시플래그(2비트) : 본 예에서는 1회의 사이값 삭제법을 실시할 때마다 1비트의 플래그를 할당하여 최소사이값이 '3'이면 '1'로 설정하고, 최소사이값이 '2'이면 '0'으로 설정한다. 이와 같은 플래그를 2개 구비한다.
정보플래그를 사용함에 의해 소비되는 총 비트수보다 절감된 총 비트수가 1개 이상 크게 되면, 그 비트수 만큼 1개의 압축 사이클에서 표시되는 전체 비트수가 줄어들게 되므로 그 비트수 만큼의 새로운 압축 대상 비트를 받아들여 다시 압축 사이클을 반복한다. 즉, N비트의 비트스트림에 대한 1개의 압축 사이클을 마치면서, 각 압축 조건에 따라 정해진 정보플래그를 이상과 같이 설정하여 압축된 비트스트림 뒤에 두고, 새로운 비트스트림을 추가로 받아 들여 새로운 압축 사이클을 반복하게 된다. 만일 절감된 총 비트수가 소비된 총 비트수보다 적거나 같은 경우에는 직전 압축 사이클이 시작되기 전의 N비트의 비트스트림을 그대로 보관하고 새로이 N비트의 비트스트림을 받아들여 다시 최초의 압축 사이클을 시작한다.
도 6에 의하면, 본 발명에 의한 비손실 압축된 데이터의 신장과정은 다음과 같다.
기본적으로, 데이터의 신장과정은 압축 과정의 역순에 의해 압축 과정에서 생성된 정보 필드의 각종 플래그를 이용하여 원래의 비트스트림을 복구할 수 있다.
먼저, 압축된 비트스트림으로부터 M비트의 데이터를 취한다(600 단계).
다음, M비트의 데이터에 포함된 정보플래그를 이용하여 M비트의 정보에서 이미 복원된 Y비트를 추출하여 정보로 활용하고(610 단계), M비트의 데이터에서 남은 (M-Y)비트를 N비트(N>M-Y)로 신장한다(620 단계).
데이터 신장 후, 시작 비트가 '1'이면 남은 (M-Y)비트를 최종 추출하여 정보로 활용하고, 해당 사이클에 대한 신장을 끝내고(630, 640 단계), 새로운 사이클이 있는가를 확인한다(650 단계). 더 신장할 압축 데이터가 없으면 신장을 종료하고, 있으면 600 단계를 계속한다.
한편, 시작비트가 '0'이면, N을 M으로 간주하여 610 단계를 계속한다(660 단계).
본 발명에 의하면, 높은 압축률에 의해 데이터를 비손실 압축할 수 있으며, 비손실 압축된 데이터를 용이하게 신장할 수 있다.
본 발명에 의한 비손실 압축 알고리듬을 개인용 컴퓨터에서 동작하는 소프트웨어로서 구현하는 경우 1 사이클씩 직렬방식으로 처리되므로 속도면에서 다소 느리게 되어 그 활용범위가 넓지 않으나, 전용 IC에 의한 하드웨어로서 구현하는 경우 병렬처리가 가능하므로 IC 기술의 진보에 따라 오디오 신호처리는 물론 비디오의 동화상처리에도 충분히 활용될 수 있다. 또한, 본 발명은 현재의 대용량 기록매체의 주종인 자기 테이프 및 광 픽업 장치에 의한 저장방식에 비하여 기계적으로 간단하고 경량화된 IC 칩을 사용한 차세대 기록방식에 활용될 수 있는 기초발명이다.

Claims (12)

  1. 비트스트림을 비손실 압축하는 방법에 있어서,
    (a) 상기 비트스트림으로부터 N비트의 정보를 취하는 단계(여기에서 N은 1보다 큰 정수);
    (b) 상기 N비트의 정보를 N비트 미만의 X비트의 정보로 압축하는 단계(여기에서 X는 N>X>0인 정수);
    (c) 상기 비트스트림으로부터 새로운 Y비트의 정보를 취하는 단계(여기에서 Y는 0보다 큰 정수);
    (d) 압축된 X비트의 정보와 새로운 Y비트의 정보로 새로운 M(M=X+Y)비트의 정보를 구축하는 단계; 및
    (e) 상기 (c)단계에서 더 이상의 취할 새로운 정보가 없을 때까지 상기 (b)단계 내지 (d)단계를 반복하는 것을 특징으로 하는 데이터 압축방법.
  2. 비트스트림을 비손실 압축하는 방법에 있어서,
    (a) N비트의 정보를 받아들여 K비트 단위로 나누는 단계(여기에서, N과 K는 N>K>1인 정수들);
    (b) 상기 (a)단계에서 나뉘어진 K비트의 정보들이 갖는 2K가지의 값들을 2 이상의 그룹들로 분류하되, 각 그룹에 포함되는 값들의 가지수에 편차를 두는 단계;
    (c) 상기 2 이상의 그룹들 중 편차를 둔 2 이상의 그룹들을 포함하여 2 이상의 그룹들을 선택하고, 선택된 그룹들에 포함되는 값들을 각각 1개 이상씩 포함되도록 결합하여 새로운 결합값들을 생성함으로써 비트 절감을 이루는 단계; 및
    (d) (d.1) 상기 (c)단계를 통해 비트 절감이 이루어진 경우에는 압축 대상 비트스트림으로부터 추가로 정보를 받아들여 비트 절감이 이루어진 비트스트림과 결합하여 M비트의 정보를 형성하고, 상기 M비트의 정보를 상기 N비트의 정보로 간주하여 상기 (a)단계 이하의 단계들을 반복 수행하는 소단계(여기에서 M은 M>K>1인 정수); 및
    (d.2) 비트 절감이 이루어지지 않은 경우에는 상기 N비트의 정보를 그대로 보관하고 압축 대상 비트스트림으로부터 새로운 M비트의 정보를 받아들이고, 상기 새로운 M비트의 정보를 상기 N비트의 정보로 간주하여 상기 (a)단계 이하의 단계들을 반복 수행하는 소단계를 구비한 비트 절감단계를 포함함을 특징으로 하는 비손실 데이터 압축방법.
  3. 비트스트림을 비손실 압축하는 방법에 있어서,
    (a) N비트의 정보를 받아들여 K비트 단위로 나누는 단계(여기에서, N과 K는 N>K>1인 정수들);
    (b) 상기 (a)단계에서 나뉘어진 K비트의 정보들이 갖는 2K가지의 값들을 2 이상의 그룹들로 분류하되, 각 그룹에 포함되는 값들의 가지수에 편차를 두는 단계;
    (c) 상기 2 이상의 그룹들 중 2의 누승(2x, x는 자연수)으로 표현되는 기준가지수보다 적은 가지수를 갖는 그룹들을 선택하고, 각 선택된 그룹들에 대해 그 그룹에 속하는 값들 중 가장 빈도수가 많은 값들 순으로 상기 기준 가지수와 상기 선택된 그룹에 속하는 값들의 가지수의 차이 만큼의 값들을 선택하고, 선택된 값들에 대해서는 (x-1)비트를 할당함으로써 비트를 절감하는 단계;
    (d) 상기 2 이상의 그룹들 중 상기 기준가지수보다 많은 가지수를 갖는 그룹들을 선택하고, 각 선택된 그룹들에 대해 그 그룹에 속하는 값들의 분포가능한 값들 중에서 실제 분포하지 않은 값을 삭제함으로써 상기 그룹에 속하는 값들을 상기 2의 누승 가지의 값들에 의해 구분 표시하여 비트 손실이 발생하지 않도록 하는 단계; 및
    (e) (e.1) 상기 (c)단계 및 (d) 단계를 통해 비트 절감이 이루어진 경우에는 압축 대상 비트스트림으로부터 추가로 정보를 받아들여 비트 절감이 이루어진 비트스트림과 결합하여 M비트의 정보를 형성하고, 상기 M비트의 정보를 상기 N비트의 정보로 간주하여 상기 (a)단계 이하의 단계들을 반복 수행하는 소단계(여기에서 M은 M>K>1인 정수); 및
    (e.2) 비트 절감이 이루어지지 않은 경우에는 상기 N비트의 정보를 그대로 보관하고 압축 대상 비트스트림으로부터 새로운 M비트의 정보를 받아들이고, 상기 새로운 M비트의 정보를 상기 N비트의 정보로 간주하여 상기 (a)단계 이하의 단계들을 반복 수행하는 소단계를 구비한 비트 절감단계를 포함함을 특징으로 하는 비손실 데이터 압축방법.
  4. 제3항에서, 상기 (d) 단계는
    (d.1) 상기 2 이상의 그룹들 중 상기 기준가지수보다 많은 가지수를 갖는 그룹들을 선택하고, 각 선택된 그룹들에 대해 그 그룹에 포함되는 값들을 n개(n은 2이상의 자연수) 결합한 결합값들을 순차적으로 생성하는 소단계; 및
    (d.2) 상기 선택된 그룹별로 상기 결합값들의 분포가능한 값들 중 실제 분포하지 않은 값들을 삭제함으로써 상기 결합값들을 상기 기준가지수의 n승(2xn)가지의 값들에 의해 구분 표시하여 비트 손실이 발생하지 않도록 하는 소단계로 이루어짐을 특징으로 하는 비손실 데이터 압축방법.
  5. 제3항에서, 상기 (d) 단계는
    (d.1) 상기 2 이상의 그룹들 중, 상기 기준가지수보다 많은 가지수를 갖는 그룹들을 선택하여 각 선택된 그룹들에 대해 그 그룹에 포함되는 값들을 R개씩(R은 1이상의 자연수) 선택하고, 상기 기준가지수보다 많지 않은 가지수를 갖는 그룹들 중에서 y비트(y≥1)로 표시되는 그룹들을 1그룹 이상 선택하여 각 선택된 그룹들 중에서 S개씩(S는 1이상의 자연수) 선택한 후, 선택된 R개의 값들과 선택된 S개의 값들을 결합한 결합값들을 순차적으로 생성하는 소단계; 및
    (d.2) 상기 선택된 그룹별로 상기 결합값들의 분포가능한 값들 중 실제 분포하지 않은 값들을 삭제함으로써 상기 결합값들을 2(xR+yS)가지의 값들에 의해 구분 표시하여 비트 손실이 발생하지 않도록 하는 소단계로 이루어짐을 특징으로 하는 비손실 데이터 압축방법.
  6. 제3항, 제4항 및 제5항 중 어느 한 항에 있어서,
    (f) 상기 (e.2) 단계에서 그대로 보관하는 N비트의 정보에 대한 압출율이 소정의 압축율에 도달하지 않은 경우에는, 상기 K비트 단위를 J비트 단위로 변경하고 (N>J>1), 상기 (a) 단계 이하를 수행하는 것을 특징으로 하는 비손실 데이터 압축방법.
  7. 비트 스트림을 구성하는 각 원소들이 0 내지 소정의 값 사이에 분포되어 있는 경우, 상기 원소들을 비손실 압축하여 표시하는 방법에 있어서,
    (a) 상기 원소들이 그 값 크기의 오름차순으로 정렬하였을 때, 각 원소들간의 수치적 크기인 사이값들을 산출하는 단계;
    (b) 상기 사이값들 중 최소값인 최소사이값이 2 이상인 경우, 최소값을 갖는 원소를 기준으로 하고, 각 원소들간의 사이값에서 (최소사이값-1) 만큼을 삭제한 값으로 변환하여 상기 비트 스트림에서 상기 원소들이 갖는 순서대로 표시하는 단계;
    (c) 상기 변환된 원소들 중 그 최대값이 소정의 2의 누승값(2x, x는 자연수) 미만인 경우, 상기 원소들을 각각 x비트로 구별하여 표시하는 단계를 포함함을 특징으로 하는 비손실 데이터 압축방법.
  8. 제7항에 있어서, 상기 (a) 단계는
    (a.1) 상기 비트 스트림을 구성하는 각 원소들을 2개 이상의 그룹으로 분류하는 소단계; 및
    (a.2) 상기 분류된 각 그룹별로 그 그룹에 속하는 원소들을 그 값 크기의 오름차순으로 정렬하였을 때, 각 원소들간의 수치적 크기인 사이값들을 산출하는 소단계를 포함하여 이루어짐을 특징으로 하는 비손실 데이터 압축방법.
  9. 제7항 및 제8항 중 어느 한 항에 있어서, 상기 (c) 단계에서
    (d) 상기 변환된 원소들 중 그 최대값이 상기 소정의 2의 누승값 이상의 값인 경우, 상기 변환된 원소들을 그 이웃하는 원소들간의 차이값으로 변환 표시하고, 상기 (a) 단계 이하를 계속하는 단계를 더 포함함을 특징으로 하는 비손실 데이터 압축방법.
  10. 제7항, 제8항 및 제9항 중 어느 한 항에 있어서,
    (b.1) 상기 사이값들 중 최소값인 최소사이값이 1인 경우, 최소값을 갖는 원소를 기준으로 하고, 각 원소들간의 사이값에서 1 만큼을 삭제한 값으로 변환하여 상기 비트 스트림에서 상기 원소들이 갖는 순서대로 표시하고, 사이값이 1인 원소들에 한하여 각 원소의 순서정보를 별도의 플래그에 의해 표시하는 단계를 상기 (b) 단계 이후에 더 포함함을 특징으로 하는 비손실 데이터 압축방법.
  11. 제7항, 제8항 및 제9항 중 어느 한 항에 있어서,
    (b.1) 상기 사이값들 중 최소값인 최소사이값이 1이하인 경우, 사이값이 1이하인 원소들의 양쪽 원소들을 별도의 플래그에 의해 표시하고, 상기 원소들 중 사이값이 1이하인 원소들을 제외한 원소들을 대상으로 하여 최소값을 갖는 원소를 기준으로 하고 각 원소들간의 사이값에서 (최소사이값-1) 만큼을 삭제한 값으로 변환하여 상기 비트 스트림에서 상기 원소들이 갖는 순서대로 표시하는 단계를 상기 (b) 단계 이후에 더 포함함을 특징으로 하는 비손실 데이터 압축방법.
  12. 비손실 압축된 비트스트림을 원래의 비트스트림으로 신장하는 방법에 있어서,
    (a) 상기 압축된 비트스트림으로부터 M비트의 정보를 취하는 단계;
    (b) 상기 M비트의 정보에서 이미 복원된 Y비트를 추출하는 단계;
    (c) 상기 M비트의 정보에서 남은 (M-Y)비트를 N비트(N>M-Y)로 신장하는 단계; 및
    (d) 신장 후, 시작 비트가 소정의 값이면 남은 (M-Y) 비트를 최종 추출하여 신장과정을 종료하고, 시작 비트가 상기 소정의 값과 다른 값이면 N을 M으로 간주하여 상기 (a)단계 이하를 계속하는 단계를 포함함을 특징으로 하는 비손실 압축 데이터 신장방법.
KR1019990000156A 1999-01-07 1999-01-07 비손실 데이터 압축 및 신장방법 KR20000050342A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990000156A KR20000050342A (ko) 1999-01-07 1999-01-07 비손실 데이터 압축 및 신장방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990000156A KR20000050342A (ko) 1999-01-07 1999-01-07 비손실 데이터 압축 및 신장방법

Publications (1)

Publication Number Publication Date
KR20000050342A true KR20000050342A (ko) 2000-08-05

Family

ID=19570757

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990000156A KR20000050342A (ko) 1999-01-07 1999-01-07 비손실 데이터 압축 및 신장방법

Country Status (1)

Country Link
KR (1) KR20000050342A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020008101A (ko) * 2001-12-12 2002-01-29 주식회사 애니콤소프트웨어 데이터의 비트 인덱스 압축방법
KR100666089B1 (ko) * 2006-08-07 2007-01-11 주식회사 다주종합건축사사무소 건축물 단지 내 조경가로수 보호대

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020008101A (ko) * 2001-12-12 2002-01-29 주식회사 애니콤소프트웨어 데이터의 비트 인덱스 압축방법
KR100666089B1 (ko) * 2006-08-07 2007-01-11 주식회사 다주종합건축사사무소 건축물 단지 내 조경가로수 보호대

Similar Documents

Publication Publication Date Title
CN102687404B (zh) 用于数据压缩的数据值出现信息
KR100894002B1 (ko) 선택적 압축과 복원 및 압축 데이터에 대한 데이터 포맷을위한 장치 및 방법
KR101049699B1 (ko) 데이터의 압축방법
US8838551B2 (en) Multi-level database compression
JP3299760B2 (ja) 電子プログラムガイドの圧縮方法および機器
JP3305190B2 (ja) データ圧縮装置及びデータ復元装置
JP4261779B2 (ja) データ圧縮装置および方法
US5838823A (en) Video image compression and decompression
US6614939B1 (en) Image compression apparatus and decoding apparatus suited to lossless image compression
CN104040899B (zh) 生成符号的代码字母表以便为与程序一起使用的字生成代码字
JP3311241B2 (ja) データ圧縮及び伸長方法
JP5812188B2 (ja) プログラム、圧縮データ生成方法、伸張方法、情報処理装置、および記録媒体
US9236881B2 (en) Compression of bitmaps and values
JP4012065B2 (ja) ハフマン・コード長情報を生成する方法
US8515882B2 (en) Efficient storage of individuals for optimization simulation
JPH07226846A (ja) 入力データストリームの処理方法及び圧縮フォーマットの生成方法
JP5656593B2 (ja) 符号化データを復号する装置及び方法
JP4893956B2 (ja) 符号化装置、復号化装置、符号化方法及びプログラム
US7696906B2 (en) LZW data compression algorithm
KR20000050342A (ko) 비손실 데이터 압축 및 신장방법
US20090083267A1 (en) Method and System for Compressing Data
US10938411B1 (en) Compression and/or decompression of activation data
Belodedov et al. Development of an algorithm for optimal encoding of WAV files using genetic algorithms
JP5504885B2 (ja) 画像処理装置および画像処理方法
US7155062B1 (en) System and method for performing pattern matching image compression

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
NORF Unpaid initial registration fee