KR101632115B1 - 이진 데이터의 압축 및 복원 방법과 장치 - Google Patents

이진 데이터의 압축 및 복원 방법과 장치 Download PDF

Info

Publication number
KR101632115B1
KR101632115B1 KR1020140153197A KR20140153197A KR101632115B1 KR 101632115 B1 KR101632115 B1 KR 101632115B1 KR 1020140153197 A KR1020140153197 A KR 1020140153197A KR 20140153197 A KR20140153197 A KR 20140153197A KR 101632115 B1 KR101632115 B1 KR 101632115B1
Authority
KR
South Korea
Prior art keywords
binary data
general
mapping dictionary
dictionary
ascending order
Prior art date
Application number
KR1020140153197A
Other languages
English (en)
Other versions
KR20160021004A (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 KR20160021004A publication Critical patent/KR20160021004A/ko
Application granted granted Critical
Publication of KR101632115B1 publication Critical patent/KR101632115B1/ko

Links

Images

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/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • 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/3066Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
    • 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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • 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/6011Encoder aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 이진데이터 압축장치에 의해 수행되는 이진데이터의 압축방법으로서, 원본 이진데이터를 스캐닝하는 단계; 상기 스캐닝된 원본 이진데이터를 제너럴 클러스터 단위로 분할하여 복수의 제너럴 클러스터를 획득하는 단계; 상기 복수의 제너럴 클러스터의 각 값과, 유니버설 코드 간의 대응관계를 정의한 매핑사전을 생성하는 단계; 및 상기 매핑사전을 참조하여, 상기 원본 이진데이터로부터 복수의 유니버설 코드를 포함하는 압축데이터를 생성하는 단계를 포함하되, 상기 제너럴 클러스터는 상기 원본 이진데이터의 최하위비트로부터 상위비트 방향으로 이동하면서 만나는 "10", 및 상기 "10"과 그 직전에 만난 "10" 사이의 이진수를 포함하는 이진수를 나타내고, 상기 유니버설 코드는 최상위 비트의 "10", 0개 이상의 연속된 "1", 및 상기 최상위 비트의 "10"과 상기 0개 이상의 연속된 "1" 사이에 배치된 적어도 0개 이상의 "0"을 포함하여 구성되는, 것을 특징으로 하는 이진 데이터의 압축방법에 관한 것이다.

Description

이진 데이터의 압축 및 복원 방법과 장치{BINARY DATA COMPRESSION AND RESTORATION METHOD AND APPARATUS}
본 발명은 이진 데이터의 압축 및 복원 방법과 장치에 관한 것으로서, 보다 구체적으로는 간단한 연산과 하드웨어적 구성을 통해 이진 데이터를 효과적이고 효율적으로 압축하고 복원할 수 있을 뿐만 아니라 데이터 전송 속도와 효율도 향상시킬 수 있는 이진 데이터의 압축 및 복원 방법과 장치에 관한 것이다.
일반적으로, 통상의 전송 채널에서 이용 가능한 주파수 대역폭은 제한되어 있으므로, 많은 양의 데이터를 전송하기 위해서 모뎀과 같은 다양한 전송 시스템은 전송 데이터의 양을 압축하거나 줄일 수 있는 효과적인 데이터 압축 기법을 이용해 왔다.
다양한 압축기법 중의 하나로서, 국제 전기 통신 동맹(ITU : International Telecommunication Union)에 의해 표준화된 부호화 알고리즘으로, 모뎀과 같은 데이터 전송 시스템에서 채용하고 있는 CCITT V.42 bis 가 있다. 이 부호화 표준안에 적용된 기초는 Ziv-Lempel code(ZLC)이며, 이 방식은 입력 데이터로부터 적응적으로 사전을 형성해 가면서 앞의 입력 데이터와 동일한 구문(phrase)이 저장되어 있는 사전의 주소값을 부호어로 전송하는 방법이다. 사전화(dictionary) 작업은 입력 데이터와 계속적인 스트링 매칭(string matching)을 수행하여 최대 길이의 매칭 스트링에 매칭안된 문자를 결합하여 사전에 추가하는 과정으로 사전을 업데이트한다.
그러나, 이러한 종래의 압축 방식은 데이터의 압축 및 복원에 대한 처리 연산이 복잡하고 비교적 고사양의 하드웨어적 장치를 필요로 하며, 처리 속도의 향상에 제한이 따르고 압축 결과값에 대한 신뢰성을 높이기 힘든 문제점이 있었다.
본 발명의 배경기술은 대한민국 공개특허공보 제 1999-0022960호(1999. 3. 25 공개)에 개시되어 있다.
본 발명이 이루고자하는 기술적 과제는, 간단한 연산과 하드웨어적 구성을 통해 이진 데이터를 신속하고 효율적으로 압축하고 복원할 수 있고, 압축률도 뛰어나며 압축 데이터 및 복원 데이터의 신뢰성도 높일 수 있을 뿐만 아니라 데이터 전송시 전송효율과 속도도 향상시킬 수 있는 이진 데이터의 압축 및 복원 방법과 장치를 제공하는 데에 있다.
본 발명의 일 측면에 따르면, 본 발명은 이진데이터 압축장치에 의해 수행되는 이진데이터의 압축방법으로서, 원본 이진데이터를 스캐닝하는 단계; 상기 스캐닝된 원본 이진데이터를 제너럴 클러스터 단위로 분할하여 복수의 제너럴 클러스터를 획득하는 단계; 상기 복수의 제너럴 클러스터의 각 값과, 유니버설 코드 간의 대응관계를 정의한 매핑사전을 생성하는 단계; 및 상기 매핑사전을 참조하여, 상기 원본 이진데이터로부터 복수의 유니버설 코드를 포함하는 압축데이터를 생성하는 단계를 포함하되, 상기 제너럴 클러스터는 상기 원본 이진데이터의 최하위비트로부터 상위비트 방향으로 이동하면서 만나는 "10", 및 상기 "10"과 그 직전에 만난 "10" 사이의 이진수를 포함하는 이진수를 나타내고, 상기 유니버설 코드는 최상위비트의 "10", 0개 이상의 연속된 "1", 및 상기 "10"과 상기 0개 이상의 연속된 "1" 사이에 배치된 적어도 0개 이상의 "0"을 포함하여 구성되는, 것을 특징으로 하는 이진 데이터의 압축방법을 제공한다.
본 발명에서, 상기 매핑사전은 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값과, 오름차순으로 순차적으로 정렬된 유니버설 코드 간의 대응관계를 정의한 것임을 특징으로 한다.
본 발명에서, 상기 매핑사전을 생성하는 단계에서, 상기 이진데이터 압축장치는 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값과 오름차순으로 순차적으로 정렬된 유니버설 코드의 값이 달라질 때부터, 상기 복수의 제너럴 클러스터의 각 값과 상기 유니버설 코드 간의 대응관계를 정의하여 상기 매핑사전을 생성하는 것을 특징으로 한다.
본 발명에서, 상기 매핑사전을 생성하는 단계에서, 상기 복수의 제너럴 클러스터의 각 값의 표현시, 각 제너럴 클러스터의 최상위 비트의 "10"을 제외한 "0"의 갯수와 "1"의 갯수의 조합에 의해 표현하는 것을 특징으로 한다.
본 발명에서, 상기 매핑사전을 생성하는 단계에서, 상기 이진데이터 압축장치는 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값을 상위비트 방향 또는 하위비트방향으로 일렬로 배열하여 상기 매핑사전을 생성하는 것을 특징으로 한다.
본 발명에서, 상기 복수의 제너럴 클러스터를 획득하는 단계에서, 상기 원본 이진데이터의 최상위 비트 앞에 "10"을 추가하여 분할을 수행하는 것을 특징으로 한다.
본 발명에서, 상기 매핑사전을 생성하는 단계에서, 상기 원본 이진데이터에 포함된 복수의 제너럴 클러스터를 N개씩 조합하여 클러스터그룹을 생성하여 오름차순으로 정렬하고, 상기 유니버설 코드를 오름 차순으로 정렬하여 N개씩 조합한 코드그룹을 생성하며, 상기 정렬된 클러스터 그룹과 상기 코드그룹 간의 대응관계를 정의하여 상기 매핑사전을 생성하는 것을 특징으로 한다.
본 발명은 상기 압축데이터와 상기 매핑사전을 결합한 결합데이터를 목적 장치로 전송하는 단계를 더 포함할 수 있다.
본 발명에서, 상기 매핑사전은, 제너럴 클러스터의 출현빈도의 내림차순에 따라 정렬된 상기 복수의 제너럴 클러스터의 각 값과, 오름차순으로 순차적으로 정렬된 유니버설 코드 간의 대응관계를 정의한 것임을 특징한다.
본 발명의 다른 측면에 따르면, 본 발명은 이진데이터 압축방법에 의해 압축된 이진 데이터를 복원장치가 복원하는 방법으로서, 복원부가 상기 매핑사전을 참조하여 상기 압축데이터로부터 이진데이터를 복원하는 단계를 포함하는 것을 특징으로 하는, 복원장치의 이진데이터 복원방법을 제공한다.
본 발명의 또 다른 측면에 따르면, 본 발명은 원본 이진데이터를 스캐닝하고, 상기 스캐닝된 원본 이진데이터를 제너럴 클러스터 단위로 분할하여 복수의 제너럴 클러스터를 획득하는 데이터 스캐닝부; 상기 복수의 제너럴 클러스터의 각 값과, 유니버설 코드 간의 대응관계를 정의한 매핑사전을 생성하는 사전생성부; 및 상기 매핑사전을 참조하여, 상기 원본 이진데이터로부터 복수의 유니버설 코드를 포함하는 압축데이터를 생성하는 압축부를 포함하되, 상기 제너럴 클러스터는 상기 원본 이진데이터의 최하위비트로부터 상위비트 방향으로 이동하면서 만나는 "10", 및 상기 "10"과 그 직전에 만난 "10" 사이의 이진수를 포함하는 이진수를 나타내고, 상기 유니버설 코드는 최상위비트의 "10", 0개 이상의 연속된 "1", 및 상기 최상위 비트의 "0"과 상기 0개 이상의 연속된 "1" 사이에 배치된 적어도 0개 이상의 "0"을 포함하여 구성되는, 것을 특징으로 하는 이진 데이터 압축장치를 제공한다.
본 발명에서, 상기 매핑사전은 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값과, 오름차순으로 순차적으로 정렬된 유니버설 코드 간의 대응관계를 정의한 것임을 특징으로 한다.
본 발명에서, 상기 매핑사전의 생성시, 상기 사전생성부는 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값과 오름차순으로 순차적으로 정렬된 유니버설 코드의 값이 달라질 때부터, 상기 복수의 제너럴 클러스터의 각 값과 상기 유니버설 코드 간의 대응관계를 정의하여 상기 매핑사전을 생성하는 것을 특징으로 한다.
본 발명에서, 상기 매핑사전의 생성함에 있어, 상기 사전생성부는 상기 복수의 제너럴 클러스터의 각 값의 표현시 각 제너럴 클러스터의 최상위 비트의 "10"을 제외한 "0"의 갯수와 "1"의 갯수의 조합에 의해 표현하는 것을 특징으로 한다.
본 발명에서, 상기 매핑사전의 생성시, 상기 사전생성부는 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값을 상위비트 방향 또는 하위비트방향으로 일렬로 배열하여 상기 매핑사전을 생성하는 것을 특징으로 한다.
본 발명에서, 상기 복수의 제너럴 클러스터를 획득시, 상기 데이터 스캐닝부는 상기 원본 이진데이터의 최상위 비트 앞에 "10"을 추가하여 분할을 수행하는 것을 특징으로 한다.
본 발명에서, 상기 매핑사전의 생성시, 상기 사전생성부는 상기 원본 이진데이터에 포함된 복수의 제너럴 클러스터를 N개씩 조합하여 클러스터그룹을 생성하여 오름차순으로 정렬하고, 상기 유니버설 코드를 오름 차순으로 정렬하여 N개씩 조합한 코드그룹을 생성하며, 상기 정렬된 클러스터 그룹과 상기 코드그룹 간의 대응관계를 정의하여 상기 매핑사전을 생성하는 것을 특징으로 한다.
본 발명은 상기 압축데이터와 상기 매핑사전을 결합한 결합데이터를 목적 장치로 전송하는 송신부를 더 포함할 수 있다.
본 발명에서, 상기 매핑사전은, 제너럴 클러스터의 출현빈도의 내림차순에 따라 정렬된 상기 복수의 제너럴 클러스터의 각 값과, 오름차순으로 순차적으로 정렬된 유니버설 코드 간의 대응관계를 정의한 것임을 특징으로 한다.
본 발명의 또 다른 측면에 따르면, 본 발명은 이진데이터 압축장치에 의해 압축된 이진 데이터를 복원하는 장치로서, 상기 매핑사전을 참조하여 상기 압축데이터로부터 이진데이터를 복원하는 복원부를 포함하는 것을 특징으로 하는, 이진데이터 복원장치를 제공한다.
본 발명에 따른 이진 데이터의 압축 및 복원 방법과 장치는, 간단한 연산과 하드웨어적 구성을 통해 이진 데이터를 신속하고 효율적으로 압축하고 복원할 수 있고, 압축률도 뛰어나며 압축 데이터 및 복원 데이터의 신뢰성도 높일 수 있을 뿐만 아니라 데이터 전송시 전송효율과 속도도 향상시킬 수 있다.
도 1은 본 발명에 의한 일 실시예에 따른 이진 데이터의 압축장치 및 복원장치의 구성을 도시한 것이다.
도 2는 본 발명에 의한 일 실시예에 따른 이진 데이터의 압축방법을 설명하기 위한 흐름도이다.
도 3은 본 실시예의 매핑사전에서 제너럴 클러스터와 유니버설 코드 간의 대응관계를 나타낸 일 예이다.
도 4는 이진데이터에서 제너럴 클러스터 값의 순번이 증가함에 따라 제너럴 클러스터의 길이와 그에 대응하는 유니버설 코드의 길이 간의 관계를 예시적으로 나타낸 것이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고, 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성 요소를 "포함" 한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명에 의한 일 실시예에 따른 이진 데이터의 압축장치 및 복원장치의 구성을 도시한 것이고, 도 2는 본 발명에 의한 일 실시예에 따른 이진 데이터의 압축방법을 설명하기 위한 흐름도로서, 이를 참조하여 본 발명에 따른 실시예를 설명하면 다음과 같다.
도 1에 도시된 바와 같이, 본 실시예에 따른 이진데이터 압축장치(100)는 데이터 스캐닝부(110), 사전생성부(120), 압축부(130) 및 송신부(140)를 포함한다.
데이터 스캐닝부(110)는 원본 이진데이터를 스캐닝하고, 상기 스캐닝된 원본 이진데이터를 제너럴 클러스터 단위로 분할하여 복수의 제너럴 클러스터를 획득한다. 그리고, 사전생성부(120)는 상기 복수의 제너럴 클러스터의 각 값과, 유니버설 코드 간의 대응관계를 정의한 매핑사전을 생성한다.
압축부(130)는 상기 매핑사전을 참조하여, 상기 원본 이진데이터로부터 복수의 유니버설 코드를 포함하는 압축데이터를 생성한다.
송신부(140)는 상기 압축데이터와 상기 매핑사전을 결합한 결합데이터를 복원장치(200) 등의 목적 장치로 전송한다.
상기에서, 제너럴 클러스터는 상기 원본 이진데이터의 최하위비트로부터 상위비트 방향으로 이동하면서 만나는 "10", 및 상기 "10"과 그 직전에 만난 "10" 사이의 이진수를 포함하는 이진수를 나타내고; 상기 유니버설 코드는 최상위비트의 "10", 0개 이상의 연속된 "1", 및 상기 최상위비트의 "10"과 상기 0개 이상의 연속된 "1" 사이에 배치된 적어도 0개 이상의 "0"을 포함하여 구성된다.
상기 복수의 제너럴 클러스터의 획득시, 데이터 스캐닝부(110)는 상기 원본 이진데이터의 최상위 비트 앞에 "10"을 추가하여 분할을 수행한다.
상기 매핑사전은 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값과, 오름차순으로 순차적으로 정렬된 유니버설 코드 간의 대응관계를 정의한 것임을 특징으로 한다.
상기 매핑사전의 생성시, 사전생성부(120)는 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값과 오름차순으로 순차적으로 정렬된 유니버설 코드의 값이 달라질 때부터, 상기 복수의 제너럴 클러스터의 각 값과 상기 유니버설 코드 간의 대응관계를 정의하여 상기 매핑사전을 생성할 수 있다.
또한, 사전생성부(120), 상기 매핑사전의 생성함에 있어, 상기 복수의 제너럴 클러스터의 각 값의 표현시 각 제너럴 클러스터의 최상위 비트의 "10"을 제외한 "0"의 갯수와 "1"의 갯수의 조합에 의해 표현할 수 있다.
또한, 상기 매핑사전의 생성시, 사전생성부(120)는 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값을 상위비트 방향 또는 하위비트방향으로 일렬로 배열하여 상기 매핑사전을 생성할 수 있다.
아울러, 상기 매핑사전의 생성시, 사전생성부(120)는 상기 원본 이진데이터에 포함된 복수의 제너럴 클러스터의 값을 오름 차순으로 정렬하여 N개씩 클러스터그룹으로 조합하고, 상기 유니버설 코드를 오름 차순으로 정렬하여 N개씩 조합한 코드그룹을 생성하며, 상기 클러스터 그룹과 상기 코드그룹 간의 대응관계를 정의하여 상기 매핑사전을 생성할 수도 있다.
본 실시예에 따른 이진데이터 복원장치는 상기 매핑사전을 참조하여 상기 이진데이터 압축장치에 의해 압축된 압축데이터로부터 원본 이진데이터를 복원하는 복원부(210)를 포함한다.
이와 같이 구성된 본 실시예의 동작 및 작용을 도 1 내지 도 4를 참조하여 구체적으로 설명한다.
먼저, 데이터 스캐닝부(110)가 원본 이진데이터를 스캐닝하고, 그 스캐닝된 원본 이진데이터를 제너럴 클러스터 단위로 분할하여 복수의 제너럴 클러스터를 획득한다(S201,S202). 이 때, 복수의 제너럴 클러스터의 획득시, 데이터 스캐닝부(110)는 상기 원본 이진데이터의 최상위 비트 앞에 "10"을 추가하여 분할을 수행한다. 또한, 제너럴 클러스터는 이진 데이터의 최하위비트로부터 상위비트 방향으로 이동하면서 만나는 "10", 및 상기 "10"과 그 직전에 만난 "10" 사이의 이진수를 포함하는 이진수를 나타낸다.
모든 이진데이터는 제너럴 클러스터로 분리가 가능한데, 제너럴 클러스터의 분리는 이진데이터의 최상위 비트에서 최하위 비트로 이동하면 처음 만나는 “10”마다 분리하거나 최하위 비트에서 최상위 비트로 이동하면서 처음 만나서 “10”으로 분리할 수 있다.
예를들어, 10011011010101011010101011 이라는 이진수 데이터는
==> 1001 / 101 / 10 / 10 / 10 / 101 / 10 / 10 / 10 / 1011 과 같이 10개의 제너럴 클러스터로 구분이 될 수 있다.
만약, 원본 이진데이터의 최상위 비트가 "10"으로 시작하지 않는 경우에는, 상술한 바와 같이 원본 이진데이터를 분할하기 전에 무조건 원본 이진데이터 앞에 "10"을 추가한 뒤, 향후 압축해제(복원)시 최상위 비트의 "10"을 제거하는 방식으로 원본 이진데이터를 복원하면 된다. 이렇게 최상위를 “10”으로 만들어주는 방법은 매우 다양하다.
예를 들어, 1111000101010101 과 같은 이진수라면,
111 / 1000 / 10 / 10 / 10 / 101 로 구분이 되는데, 맨앞은 111 로서, "10"이 존재하지 않기 때문에 제너럴 클러스터를 생성하는 조건을 만족하지 못한다. 따라서, 이와 같은 경우 무조건 압축시작시에 최상위비트 위치에, "10"을 붙인뒤 제너럴 클러스터로 구분한다. 즉,
101111000101010101
===> 10111 / 1000 / 10 / 10 / 10 / 101 로 바이너리 클러스터가 나뉜다. 복원(압축해제) 시에는, 최상위 비트의 "10"은 최종 복원데이터에서 제거하는 방법으로 완벽하게 원본 이진데이터를 복원할 수 있다.
다음으로, 사전생성부(120)가 상기 복수의 제너럴 클러스터의 각 값과, 유니버설 코드 간의 대응관계를 정의한 매핑사전을 생성한다(S203). 이를 좀 더 구체적으로 설명하면 아래와 같다.
예를 들어, 아래와 같은 604842 bit의 실제의 어떤 파일의 이진데이터를 제너럴 클러스터 단위로 분리할 수 있다.
1001010000010010110000001100000100000101000000000000000110000000000000100000000000000000000000000000100001000000000011011011110111111010010111000011011101000000010000000000000000010001100000110000000000000000000001001100000000000010000000001001011011010000110110111101101110011101000110010101101110011101000101111101010100011110010111000001100101011100110101110100101110011110000110110101101100001000001010001000000100000000100010100010100000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000..........
상기 이진데이터를 제너럴 클러스터별로 분할하면 표 1과 같다. 아래 예는 최상위 비트로부터 최하위 비트로 이동하면서 제너럴 클러스터를 구분한 결과이다. 전체적으로 상기 예시의 경우, 138472개의 제너럴 클러스터로 분할되었고, 2비트 짜리에서부터 4099비트 짜리까지 전체 201종으로 구성되었다. 아래 표 1은 그 일부를 보인 것이다.
분리된 제너럴 클러스터
100
10
100000
100
101
10000001
100000
100000
10
10000000000000001
10000000000000
100000000000000000000000000000
10000
100000000001
101
10111
1011111
10
100
1011
100001
1011
10
10000000
100000000000000000
...............
이제 이렇게 구분된 제너럴 클러스터를 비트수 길이에 따른 오름차순으로 정렬하면 표 2와 같다. 한편, 제너럴 클러스터의 정렬 기준과 관련하여 본 실시예에서는 제너럴 클러스터의 비트수 길이의 오름차순 정렬기준을 이용하는 것을 중심으로 하여 기술하고 있으나, 실시예에 따라서는 제너럴 클러스터의 출현빈도수의 내림차순 정렬기준을 이용하여 정렬한 뒤 이하의 과정을 수행하도록 할 수도 있다.
제너럴 클러스터 출현빈도 제너럴 클러스터의 비트수
10 35172 2
100 13960 3
101 17220 3
1000 9168 4
1001 6857 4
1011 6890 4
10000 4693 5
10001 4806 5
10011 3784 5
10111 4929 5
100000 1985 6
100001 2483 6
100011 1909 6
100111 2327 6
101111 3144 6
1000000 712 7
1000001 828 7
1000011 1038 7
1000111 1113 7
1001111 1445 7
1011111 1672 7
10000000 579 8
10000001 433 8
10000011 671 8
10000111 815 8
10001111 829 8
10011111 896 8
10111111 932 8
100000000 258 9
100000001 143 9
100000011 153 9
100000111 292 9
100001111 497 9
100011111 499 9
100111111 437 9
101111111 490 9
1000000000 133 10
1000000001 155 10
1000000011 69 10
1000000111 115 10
1000001111 186 10
1000011111 250 10
1000111111 271 10
1001111111 240 10
1011111111 279 10
... ... ...
이렇게 정렬된 최소길이의 제너럴 클러스터로부터 최대길이의 바이너리 클러스터까지의 값에 1:1로 대응되는 유니버설 코드(universal code)를 자동으로 생성하여 대응시켜서 매핑사전을 생성한다. 여기서, 유니버설 코드는 최상위비트의 "10", 0개 이상의 연속된 "1", 및 상기 최상위비트의 "10"과 상기 0개 이상의 연속된 "1" 사이에 배치된 적어도 0개 이상의 "0"을 포함하여 구성된다. 상기 매핑사전은 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값과, 오름차순으로 순차적으로 정렬된 유니버설 코드 간의 대응관계를 정의한 것임을 특징으로 한다. 후술하는 바와 같이, 압축부(130)는 원본 이진데이터의 모든 제너럴 클러스터에 대하여 해당 유니버설 코드를 1:1 매핑 치환함으로써 압축이 되고, 반대과정을 거치면 복원(압축해제)이 된다.
이 때, 이러한 1:1 제너럴 클러스터 - 유니버설 코드 매핑 테이블(매핑사전)은 그대로 압축결과화일에 포함시킬 수도 있고, 공지된 다양한 압축방법을 이용하여 별도의 압축과정을 통해 보다 작은 형태로 압축결과화일에 담을 수도 있다. 특히 제너럴 클러스터의 길이가 긴 것의 경우, 대부분 RUN-LENGTH code형태로서, RLE방식으로 효과적으로 사전을 압축할 수 있다.
특히, 오름차순으로 정렬된 복수의 제너럴 클러스터의 각 값과, 이에 대응하여 오름차순으로 순차적으로 정렬된 유니버설 코드가 최초로 불일치하는 위치에서부터 매핑사전을 생성하여도 무방하다. 이것은 유니버설 코드와 제너럴 클러스터가 일치하는 부분은 유니버설 코드를 가장 작은 값부터 순차적으로 자동 생성함으로써 각 제너럴 클러스터와의 매핑관계까지 모두 알 수 있기 때문이다. 이런 방식을 쓰면 매핑사전의 크기를 보다 더 줄일 수 있다.
예를 들어, 아래 표 3에 표시된 바와 같이, 좌측의 제너럴 클러스터와 우측의 유니버설 코드가 일치하는 부분은 제너럴 클러스터의 길이가 짧을 경우 더 높은 확률로 나타나게 되는데, 아래와 같이, 적어도 제너럴 클러스터 10,100,101,1000,1001,1011,....와 유니버설 코드 10,100,101,1000,1001,1011,...는 일치하고, 이에 대해서는 유니버설 코드를 가장 작은 값부터 순차적으로 생성함으로써 자동으로 생성할 수 있기 때문에, 최초로 바이너리 클러스터와 유니버설 코드가 불일치하는 부분부터 매핑사전을 생성하면 매핑사전의 크기를 줄일 수 있다.
제너럴
클러스터
원본데이터 내
출현빈도
제너럴
클러스터 길이
유니버설 코드
(U code)
유니버설 코드길이 유니버설 코드와 제너럴 클러스터의 길이 차이(delta) delta * 출현빈도
10 35172 2 10 2 0 0
100 13960 3 100 3 0 0
101 17220 3 101 3 0 0
1000 9168 4 1000 4 0 0
1001 6857 4 1001 4 0 0
1011 6890 4 1011 4 0 0
10000 4693 5 10000 5 0 0
10001 4806 5 10001 5 0 0
10011 3784 5 10011 5 0 0
10111 4929 5 10111 5 0 0
100000 1985 6 100000 6 0 0
100001 2483 6 100001 6 0 0
100011 1909 6 100011 6 0 0
100111 2327 6 100111 6 0 0
101111 3144 6 101111 6 0 0
1000000 712 7 1000000 7 0 0
1000001 828 7 1000001 7 0 0
1000011 1038 7 1000011 7 0 0
1000111 1113 7 1000111 7 0 0
... ... ... ... ... ... ..
한편, 유니버설 코드는, 10으로부터 시작하여 차례대로 자동적으로 생성되는데, 각각은 "10", "1011(10/11)","1000111(10/00/111)" 등과 같이 각 유니버설 코드의 최하위 비트로부터 연속된 적어도 0개 이상의 "1", 최상위비트로부터 배치된 "10", 및 상기 연속된 적어도 0개 이상의 "1"과 상기 최상위비트로부터 배치된 "10" 사이에 배치되는 적어도 0개 이상의 연속된 "0"을 포함하여 구성된다. 이러한 조건을 만족하는 유니버설 코드 중 비트길이가 가장 작은 이진수는 "10"이 되며, 그 이후로 100, 101, 1000, 1001, 1011, 10000, 10001, 10011, 10111, 100000...와 같이 오름차순으로 순차적으로 나열할 수 있다.
여기서 알 수 있는 바와 같이, 유니버설 코드는 반드시 맨 앞에 "10"을 가지고 있어야 하며, 이후 비트자릿수를 늘려 가면서 최하위비트로부터 "1"의 갯수를 늘려가되 최상위비트 쪽에 "10"은 반드시 남아 있어야 하고 "101111"과 같이 "10" 다음에 더 이상 "0"이 존재하지 않게 되면 비트자릿수를 한자리 늘려서 "1000000"로 넘어가게 된다. 이러한 유니버설 코드를 비트 길이가 작은 것부터 순차적으로 나열하여 각각에 대해 원본 이진데이터의 제너럴 클러스터와 대응시키면 아래의 표4와 같이 대응시킬 수 있다. 여기서, 순번은 원본 이진데이터에 포함된 제너럴 클러스터의 값을 오름차순으로 나열했을 때 각 제너럴 클러스터에 대응되는 순번을 의미한다.
순번 유니버설 코드
1 10
2 100
3 101
4 1000
5 1001
6 1011
7 10000
8 10001
9 10011
10 10111
11 100000
12 100001
13 100011
14 100111
15 101111
16 1000000
17 1000001
18 1000011
19 1000111
20 1001111
21 1011111
….
이렇게 각 제너럴 클러스터의 값을 오름차순으로 정렬한 결과에 상기 생성된 유니버설 코드를 매핑한 결과는 표 5와 같다. 표 5에 표시된 바와 같이, 제너럴 클러스터의 비트수가 작을 때에는 유니버설 코드도 동일한 비트로 함께 성장하므로, 압축효과가 없다.
제너럴
클러스터
원본데이터내
출현빈도
제너럴 클러스터 길이 universal code(U code) universal 코드길이 Universal코드와 제너럴 클러스터 길이 차이(delta) delta * 출현빈도
10 35172 2 10 2 0 0
100 13960 3 100 3 0 0
101 17220 3 101 3 0 0
1000 9168 4 1000 4 0 0
1001 6857 4 1001 4 0 0
1011 6890 4 1011 4 0 0
10000 4693 5 10000 5 0 0
10001 4806 5 10001 5 0 0
10011 3784 5 10011 5 0 0
10111 4929 5 10111 5 0 0
100000 1985 6 100000 6 0 0
100001 2483 6 100001 6 0 0
100011 1909 6 100011 6 0 0
100111 2327 6 100111 6 0 0
101111 3144 6 101111 6 0 0
1000000 712 7 1000000 7 0 0
1000001 828 7 1000001 7 0 0
1000011 1038 7 1000011 7 0 0
1000111 1113 7 1000111 7 0 0
... ... ... ... ... ... ..
그러나, 상기 표 5에서 이어지는 표 6을 보면, 아직 압축되지 않은 원본 이진데이터에서 제너럴 클러스터의 길이는 통상적으로 유니버설 코드보다도 더 빠른속도로 증가하고 있음을 확인할 수 있고, 이에 따라 유니버설 코드 길이와 제너럴 클러스터의 코드길이가 차이가 나기 시작한다. 이와 같이 유니버설 코드와 제너럴 클러스터 간에 길이가 불일치하는 클러스터가 많고, 그러한 클러스터의 빈도가 높을수록 압축 효율은 높아지게 된다.
제너럴 클러스터 원본데이터내
출현빈도
제너럴 클러스터 길이 유니버설 코드(U code) 유니버설 코드길이 유니버설코드와 제너럴 클러스터 길이차이
(delta)
delta * 출현빈도
..... ... ... ... .. .. ..
10000000000000000000000000 1 26 1000000000000111111 19 -7 -7
100000000000000000000000000 2 27 1000000000001111111 19 -8 -16
100000000000000000000000001 1 27 1000000000011111111 19 -8 -8
1000000000000000000000000001 2 28 1000000000111111111 19 -9 -18
1000000000000000000000000011 16 28 1000000001111111111 19 -9 -144
10000000000000000000000000000 2 29 1000000011111111111 19 -10 -20
10000000000000000000000000001 22 29 1000000111111111111 19 -10 -220
10000000000000000000000000011 2 29 1000001111111111111 19 -10 -20
100000000000000000000000000000 72 30 1000011111111111111 19 -11 -792
100000000000000000000000000011 12 30 1000111111111111111 19 -11 -132
1000000000000000000000111111111 1 31 1001111111111111111 19 -12 -12
10000000000000000111111111111111 21 32 1011111111111111111 19 -13 -273
100000000000000000000000000000011 1 33 10000000000000000000 20 -13 -13
100000000000000000000000000001111 2 33 10000000000000000001 20 -13 -26
100000000000000000111111111111111 3 33 10000000000000000011 20 -13 -39
100000000000000000000000000000000000 1 36 10000000000000000111 20 -16 -16
1000000000000000000000000111111111111111 10 40 10000000000000001111 20 -20 -200
10000000000000000000000000111111111111111 1 41 10000000000000011111 20 -21 -21
100000000000000000000000000111111111111111 1 42 10000000000000111111 20 -22 -22
10000000000000000000000000000000000000000000000000000000 1 56 10000000000001111111 20 -36 -36
..... ... ... ... .. .. ..
도 3은 본 실시예의 매핑사전에서 제너럴 클러스터와 유니버설 코드 간의 대응관계를 나타낸 일 예이다. 도 3에 도시된 예에서, 아래에서 세 번째의 경우 2049 비트짜리 1개의 제너럴 클러스터에, 21비트짜리 201번째 유니버설 코드만으로도 심볼화가 가능하다. 이 때 2049 - 21 = 2028 비트의 압축효과가 있고, 이러한 제너럴 클러스터가 3개 나타났으므로 6084 비트의 압축효과가 상기 제너럴 클러스터에서 나타나게 된다.
상기의 사항을 그래프로 다시 표현하면 도 4와 같다. 도 4는 이진데이터에서 제너럴 클러스터 값의 순번이 증가함에 따라 제너럴 클러스터의 길이와 그에 대응하는 유니버설 코드의 길이 간의 관계를 예시적으로 나타낸 것이다. 제너럴 클러스터의 길이가 불규칙적으로 증가하는 시점부터는, 제너럴 클러스터의 길이는 유니버설 코드의 성장길이보다도 매우 급격하게 증가하여 그 비트수의 차이가 나타남을 알 수 있고, 이 차이가 있는 부분에서 압축의 효과가 발생하는 것이다.
이와 같은 원리에 따라 수리적으로 압축효과가 나타남을 알 수 있으며, 원본 이진데이터의 각 제너럴 클러스터를 1:1로 유니버설 코드로 치환하기 위한 매핑사전을 구현하는 방법을 구체적으로 설명하면 다음과 같다.
아래 표 7과 같이, 원본 이진데이터를 구성하는 제너럴 클러스터를 오름차순으로 정렬하면, 길이 17인, "10000000000000000" 에서 처음으로 유니버설 코드와 불일치가 발생하기 시작한다. 이 위치는 유니버설 코드의 순번으로는 120번 위치이다.
제너럴 클러스터
제너럴 클러스터 길이 유니버설 코드
(U code)
유니버설 코드길이 유니버설코드와 제너럴 클러스터 길이 차이
(delta)
10000000000000000 17 1011111111111111 16 -1
10000000000000001 17 10000000000000000 17 0
10000000000000011 17 10000000000000001 17 0
10000000000000111 17 10000000000000011 17 0
10000000001111111 17 10000000000000111 17 0
10000011111111111 17 10000000000001111 17 0
100000000000000000 18 10000000000011111 17 -1
100000000000000001 18 10000000000111111 17 -1
100000000000001111 18 10000000001111111 17 -1
100000000000011111 18 10000000011111111 17 -1
100000000001111111 18 10000000111111111 17 -1
100000001111111111 18 10000001111111111 17 -1
100000011111111111 18 10000011111111111 17 -1
100000111111111111 18 10000111111111111 17 -1
1000000000000000000 19 10001111111111111 17 -2
1000000000000000011 19 10011111111111111 17 -2
10000000000000000000 20 10111111111111111 17 -3
10000000000000000001 20 100000000000000000 18 -2
10000000000000000011 20 100000000000000001 18 -2
10000000000000000111 20 100000000000000011 18 -2
10000000000000001111 20 100000000000000111 18 -2
상술한 바와 같이, 사전생성부(120)는 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값과 오름차순으로 순차적으로 정렬된 유니버설 코드의 값이 달라질 때부터, 상기 복수의 제너럴 클러스터의 각 값과 상기 유니버설 코드 간의 대응관계를 정의하여 매핑사전을 생성할 수 있다.
또한, 상기 매핑사전의 생성시, 사전생성부(120)는 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값을 상위비트 방향 또는 하위비트방향으로 일렬로 배열하여 상기 매핑사전을 생성할 수 있다. 이 때, 매핑사전은 비트길이가 가장 짧은 제너럴 클러스터로부터 시작하여 오름차순으로 작성될 수도 있고; 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값과 오름차순으로 순차적으로 정렬된 유니버설 코드의 값이 달라질 때부터 작성될 수도 있다.
그 두번째 경우를 예로 들면, 매핑 사전은 표 8과 같이 제너럴 클러스터 길이 17인, "10000000000000000" 부터 일렬로 붙여서 가장 긴 제너럴 클러스터까지 순차적으로 이어 붙이고, 유니버설 코드의 순번 120을 저장하는 형태로 완성할 수 있다.
제너럴 클러스터
10000000000000000
10000000000000001
10000000000000011
10000000000000111
10000000001111111
10000011111111111
100000000000000000
100000000000000001
100000000000001111
100000000000011111
100000000001111111
100000001111111111
100000011111111111
100000111111111111
1000000000000000000
1000000000000000011
10000000000000000000
10000000000000000001
10000000000000000011
10000000000000000111
10000000000000001111
100000000000000000000
100000000000000000001
100000000000000000011
100000000000000011111
100000000000011111111
100000000111111111111
1000000000000000000000
1000000000000000000001
1000000000000000000011
1000000000000000000111
1000000000111111111111
10000000000000000000000
..........
매핑 사전의 실제적인 모습은 다음과 같다. 이때 "/" 는 가상적인 구분자이며 실제로는 존재하지 않아도 제너럴 클러스터의 유일복호성에 따라 상기 표 8과 같이 정확하게 복원된다. 그리고, 오름차순으로 순차적으로 나열할 때 120번째 순번의 유니버설 코드, 즉 10000000000000000부터 아래의 매핑사전의 제너럴 클러스터에 차례로 대응된다. 상기에서 유일복호성이란 아래와 같이 생성된 매핑사전에서 제너럴 클러스터가 복호화되는 방법이 하나밖에 없다는 것을 의미하는 것으로, 바이너리 형태의 매핑사전은 최하위 비트로부터 시작하여 "10"을 만날 때마다 바로 그 앞에서 분리하여 각각의 제너럴 클러스터가 분리된다.
10000000000000000 / 10000000000000001 /10000000000000011 / ........... / 10000000000000000000000 / .........
한편, 상기 매핑사전을 생성하는 단계(S203)에서, 복수의 제너럴 클러스터의 각 값의 표현시, 각 제너럴 클러스터의 최상위 비트의 "10"을 제외한 "0"의 갯수와 "1"의 갯수의 조합에 의해 표현하여 매핑사전을 생성할 수도 있다. 매핑사전 내 제너럴 클러스터는 연속된 0, 1 이 다수의 빈도로 연속된 형태로 나타나는 경우가 매우 많으므로, 아래 표 9와 같이 제너럴 클러스터의 최상위비트 위치의 "10"을 제외한 이후부터의 연속된 "0"의 갯수, 연속된 "0" 이후에 연속된 "1"의 갯수의 형태로 조합하여, 매핑사전을 숫자형태로 표현하는 방법도 매우 효과적일것이다.
즉, 매핑사전의 형태는 (15,0)(14,1)(13,2)(12,3)(8,7),....(4,12)...형태의 제너럴 클러스터와, 제너럴 클러스터와 유니버설 코드가 처음으로 불일치할 때의 유니버설 코드의 생성 순번 정보의 조합, 즉 (X.X)...(X.X) + 순번정보 형태가 될 수 있을 것이다.
제너럴 클러스터 최초 10을 제외한 연속된 0 의 갯수 연속된 0 이후의 연속된 1의 갯수
10000000000000000 15 0
10000000000000001 14 1
10000000000000011 13 2
10000000000000111 12 3
10000000001111111 8 7
10000011111111111 4 11
100000000000000000 16 0
100000000000000001 15 1
100000000000001111 12 4
100000000000011111 11 5
100000000001111111 9 7
100000001111111111 6 10
100000011111111111 5 11
100000111111111111 4 12
1000000000000000000 ... ...
1000000000000000011
10000000000000000000
10000000000000000001
10000000000000000011
10000000000000000111
10000000000000001111
100000000000000000000
100000000000000000001
100000000000000000011
100000000000000011111
100000000000011111111
100000000111111111111
1000000000000000000000
1000000000000000000001
1000000000000000000011
1000000000000000000111
1000000000111111111111
10000000000000000000000
..........
상기와 같은 매핑사전 정보를 저장하고, 메모리 상에서 매핑사전 정보를 팽창시키면, 아래 표 10과 같은 형태가 될 것이다. 즉, 첫번째 매핑사전 생성방법(표 8 이하의 방법)에 따라서 생성된 매핑사전
10000000000000000 / 10000000000000001 /10000000000000011 / ........... / 10000000000000000000000 / .........
에서, 오름차순으로 정렬된 제너럴 클러스터의 각 값과 오름차순으로 순차적으로 정렬된 유니버설 코드의 값이 달라질 때부터의 순번정보가 120 일 경우, 순번정보 1~ 119 번까지는 유니버설 코드와 제너럴 클러스터가 일치하므로 자동적으로 제너럴 클러스터의 값과 유니버설 코드 간의 대응관계를 생성할 수 있고, 순번 정보 120부터는 상기 바이너리 형태의 매핑사전을 각각 제너럴 클러스터의 유일복호성을 이용하여 분리한 뒤, 순번정보 120부터의 유니버설 코드를 오름차순으로 순차적으로 자동적으로 생성하여 매핑할 수 있다. 이렇게 하면, 아래 표 10과 같이 압축 및 복원을 위한 사전 생성된다.
제너럴 클러스터(상위 119개는 유니버설코드의 자동생성결과로부터 동일하게 생성됨) 유니버설 코드(바이너리 클러스터가 정렬된 상태에서 1:1로 자동적으로 생성됨)
10 10
100 100
101 101
1000 1000
1001 1001
1011 1011
10000 10000
10001 10001
10011 10011
10111 10111
100000 100000
100001 100001
100011 100011
100111 100111
101111 101111
1000000 1000000
1000001 1000001
1000011 1000011
1000111 1000111
1001111 1001111
1011111 1011111
10000000 10000000
10000001 10000001
10000011 10000011
….. ……..
100000000000000000011 100000000000111111
100000000000000011111 100000000001111111
100000000000011111111 100000000011111111
100000000111111111111 100000000111111111
1000000000000000000000 100000001111111111
1000000000000000000001 100000011111111111
1000000000000000000011 100000111111111111
1000000000000000000111 100001111111111111
1000000000111111111111 100011111111111111
10000000000000000000000 100111111111111111
10000000000000000000011 101111111111111111
10000000000000111111111 1000000000000000000
100000000000000000000000 1000000000000000001
100000000000000000000011 1000000000000000011
100000000000000000001111 1000000000000000111
100000000000000000111111 1000000000000001111
1000000000000000000111111 1000000000000011111
10000000000000000000000000 1000000000000111111
100000000000000000000000000 1000000000001111111
100000000000000000000000001 1000000000011111111
1000000000000000000000000001 1000000000111111111
1000000000000000000000000011 1000000001111111111
10000000000000000000000000000 1000000011111111111
…… ……
다음으로, 압축부(130)는 상기 매핑사전을 참조하여, 원본 이진데이터로부터 복수의 유니버설 코드를 포함하는 압축데이터를 생성한다(S204). 즉, 상기 생성된 매핑사전(상기 팽창된 매칭사전)을 참조하여, 단계(S202)에서 분할된 원본 이진데이터의 각각의 제너럴 클러스터를 이에 대응하는 유니버설 코드로 치환하여 합침으로써 압축데이터를 생성할 수 있다.
이어서, 송신부(140)는 상기 압축데이터와 상기 매핑사전을 결합한 결합데이터를 복원 장치(200) 등의 목적 장치로 전송한다(S205).
이와 같이 압축된 압축데이터를 전송함으로써 데이터 전송 속도 및 전송 효율을 향상시킬 수 있다.
한편, 매핑사전을 생성하는 또 다른 응용예에 대해서 살펴보면, 매핑사전을 생성하는 단계(S203)에서, 사전생성부(120)는 원본 이진데이터에 포함된 복수의 제너럴 클러스터를 N개씩 조합하여 클러스터그룹을 생성하여 오름차순으로 정렬하고, 상기 유니버설 코드를 오름 차순으로 정렬하여 N개씩 조합한 코드그룹을 생성하며, 상기 정렬된 클러스터 그룹과 상기 코드그룹 간의 대응관계를 정의하여 상기 매핑사전을 생성할 수도 있다. 이를 좀 더 자세히 살펴 보면 다음과 같다.
원본 이진데이터를 2개이상의 제너럴 클러스터 단위로 분리하고, 길이에 따라 오름차순으로 정렬한 뒤 예를 들어 2개씩 묶어서 클러스터그룹을 생성하고, 유니버설 코드도 오름차순으로 순차적으로 정렬한 뒤 예를 들어 2개씩 묶어서 코드그룹을 생성한다. 그리고, 이렇게 하여 생긴 각각의 클러스터그룹과 코드그룹을 1:1로 대응시켜 매핑사전을 생성한다. 이 때 묶는 제너럴 클러스터의 갯수와 유니버설 코드의 갯수는 상기와 같이 2개(2차)가 될 수 있을 뿐만 아니라, 설정에 따라서는 자연수 N개(N차)가 될 수도 있다.
원본 이진데이터를 N개씩의 제너럴 클러스터 단위(클러스터그룹)로 분리할 경우, 각각의 클러스터그룹은 매핑사전에 근거하여 N개씩의 유니버설코드(코드그룹)에 1;1로 매핑된다. 아래 표 11은 그 결과를 예시적으로 표현한 것이다.
제너럴
클러스터
빈도수 길이 U code Ucode길이 diff
1010 2829 4 1010 4 0
10010 1403 5 10100 5 0
10100 1376 5 10101 5 0
10101 1632 5 10010 5 0
10110 1437 5 10110 5 0
100010 703 6 101000 6 0
100100 642 6 101001 6 0
100101 770 6 101011 6 0
100110 767 6 100100 6 0
101000 723 6 100101 6 0
101001 882 6 101100 6 0
101011 785 6 101101 6 0
101100 742 6 100010 6 0
101101 701 6 100110 6 0
예를 들어 2차 코드그룹을 생성하는 방법에 대해 살펴 보면, 2 개의 유니버설 코드를 조합하여 유니버설 코드의 그룹(코드그룹)을 생성하면 표 12와 같다.
순번 부호화데이터 비트길이
1 1010 4
2 10010 5
3 10110 5
4 100010 6
5 100110 6
6 101110 6
7 1000010 7
8 1000110 7
9 1001110 7
10 1011110 7
11 10000010 8
12 10000110 8
13 10001110 8
14 10011110 8
15 10111110 8
16 100000010 9
17 100000110 9
18 100001110 9
19 100011110 9
20 100111110 9
21 101111110 9
22 1000000010 10
23 1000000110 10
24 1000001110 10
25 1000011110 10
26 1000111110 10
27 1001111110 10
28 1011111110 10
29 10000000010 11
30 10000000110 11
31 10000001110 11
32 10000011110 11
33 10000111110 11
34 10001111110 11
35 10011111110 11
36 10111111110 11
37 100000000010 12
38 100000000110 12
39 100000001110 12
40 100000011110 12
41 100000111110 12
42 100001111110 12
43 100011111110 12
표 12에 표시된 바와 같이 2개의 유니버설 코드그룹 각각에 대하여 비트길이가 작은 수부터 순차적으로 이진수를 만들어 가게 된다. 이렇게 여러 개의 코드를 조합하게 되면, 전체적으로 단일 코드만으로 특정 정수값을 부호화한 결과값보다는 부호화 결과가 짧은 비트길이를 형성하게 된다.
그런데, 표 12의 경우에는, 처음에 첫번째 코드를 "10"으로 고정하고, 다음 코드는 "10"에서 계속 다음 단계인 "100", "101", "1000", "1001", "1011",... 순으로 선택하였는바, 이보다 더 효과적으로 2개의 코드를 조합하여 부호화를 수행할 수 있는 방법도 있을 수 있다. 이러한 방법의 일 예로서, 각각의 조합에 사용되는 최대비트 길이의 코드를 부호화하고자 하는 원본 이진데이터의 갯수에 따라 선택하는 것을 생각해 볼 수 있다. 예를 들어, 100개의 원본 이진데이터에 대하여 부호화데이터를 만들려고 하는 경우, 100개의 순번에 대해 2개의 코드로 구성된 유니버설 코드그룹을 만든다면, 100의 제곱근값인 10 이상의 최소의 자연수 10개의 가장 작은 코드를 조합하여 유니버설 코드를 만들고, 최종 생성된 코드를 비트수 길이대로 오름차순 정렬하여 상위 100개를 취하여 최종 유니버설 코드로 하면 된다. 즉,아래 표 13에서 비트길이가 짧은 순서대로 "10"~"10111"까지의 코드가 필요하다.
유니버설 코드 생성을 위한 클러스터
10
100
101
1000
1001
1011
10000
10001
10011
10111
100000
100001
100011
100111
101111
1000000
1000001
1000011
1000111
1001111
1011111
...
그리고, 이러한 코드들을 중복을 허락하여 2개씩 조합하게 되면 10*10=100
개의 조합된 부호화 데이터(코드그룹)가 생성되고, 이 부호화 데이터를 비트길이에 따라 오름차순으로 정렬한 뒤, 비트길이(비트수)가 짧은 순으로 상위 100개만을 추출하면, 100개 순번까지 유니버설 코드를 자동적으로 생성할 수 있게 되는 것이다.
상기와 같은 과정을 통해 이진 데이터가 압축되어 전송되면, 이진 데이터 복원장치(200)는 수신부(210)를 통해 상기 압축데이터를 수신하여 복원부(220)에 전달한다. 복원부(220)는 상기 결합데이터(압축데이터+매핑사전)에 포함되어 있는 상기 매핑사전을 참조하여, 상기 압축데이터로부터 원본 이진 데이터를 복원한다. 이 때 복원부(220)는 상술한 압축과정과는 반대의 과정을 통해 이진 데이터를 복원한다. 이 때, 복원부(220)는 상기 매핑사전을 참조하여 복원된 이진데이터에서 최상위비트에 있는 "10"을 삭제하여 최종적인 원본 이진데이터를 복원한다. 이것은 상술한 압축과정에 최상위비트에 추가된 "10"을 삭제하기 위한 것이다.
이상 살펴 본 바와 같이, 본 실시예에 따른 이진 데이터의 압축 및 복원 방법과 장치는, 간단한 연산과 하드웨어적 구성을 통해 이진 데이터를 신속하고 효율적으로 압축하고 복원할 수 있고, 압축률도 뛰어나며 압축 데이터 및 복원 데이터의 신뢰성도 높일 수 있을 뿐만 아니라 데이터 전송시 전송효율과 속도도 향상시킬 수 있다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고, 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
100 : 이진데이터 압축장치
110 : 데이터 스캐닝부
120 : 사전생성부
130 : 압축부
140 : 송신부
200 : 이진데이터 복원장치
210 : 수신부
220 : 복원부

Claims (20)

  1. 이진데이터 압축장치에 의해 수행되는 이진데이터의 압축방법으로서,
    원본 이진데이터를 스캐닝하는 단계;
    상기 스캐닝된 원본 이진데이터를 제너럴 클러스터 단위로 분할하여 복수의 제너럴 클러스터를 획득하는 단계;
    상기 복수의 제너럴 클러스터의 각 값과, 유니버설 코드 간의 대응관계를 정의한 매핑사전을 생성하는 단계; 및
    상기 매핑사전을 참조하여, 상기 원본 이진데이터로부터 복수의 유니버설 코드를 포함하는 압축데이터를 생성하는 단계를 포함하되,
    상기 제너럴 클러스터는 상기 원본 이진데이터의 최하위비트로부터 상위비트 방향으로 이동하면서 만나는 "10", 및 상기 "10"과 그 직전에 만난 "10" 사이의 이진수를 포함하는 이진수를 나타내고,
    상기 유니버설 코드는 해당 유니버설 코드의 최상위비트의 "10", n개 이상(n≥0)의 연속된 "1", 및 상기 최상위비트의 "10"과 상기 n개 이상(n≥0)의 연속된 "1" 사이에 배치된 적어도 m개 이상(m≥0)의 "0"을 포함하여 구성되는, 것을 특징으로 하는 이진 데이터의 압축방법.
  2. 제 1항에 있어서,
    상기 매핑사전은 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값과, 오름차순으로 순차적으로 정렬된 유니버설 코드 간의 대응관계를 정의한 것임을 특징으로 하는 이진데이터 압축방법.
  3. 제 2항에 있어서,
    상기 매핑사전을 생성하는 단계에서,
    상기 이진데이터 압축장치는 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값이 오름차순으로 순차적으로 정렬된 유니버설 코드의 값과 동일하다가 달라질 때부터, 상기 복수의 제너럴 클러스터의 각 값과 상기 유니버설 코드 간의 대응관계를 정의하여 상기 매핑사전을 생성하는 것을 특징으로 하는, 이진데이터 압축방법.
  4. 제 2항에 있어서,
    상기 매핑사전을 생성하는 단계에서,
    상기 복수의 제너럴 클러스터의 각 값은 각 제너럴 클러스터 값에서 최상위 비트의 "10"을 제외한 "0"의 갯수와 "1"의 갯수로 나타내는 것을 특징으로 하는 이진데이터 압축방법.
  5. 제 2항에 있어서,
    상기 매핑사전을 생성하는 단계에서,
    상기 이진데이터 압축장치는 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값을 상위비트 방향 또는 하위비트방향으로 일렬로 배열하여 상기 매핑사전을 생성하는 것을 특징으로 하는 이진데이터 압축방법.
  6. 제 1항에 있어서,
    상기 복수의 제너럴 클러스터를 획득하는 단계에서, 상기 원본 이진데이터의 최상위 비트 앞에 "10"을 추가하여 분할을 수행하는 것을 특징으로 하는 이진데이터 압축방법.
  7. 제 1항에 있어서,
    상기 매핑사전을 생성하는 단계에서,
    상기 원본 이진데이터에 포함된 복수의 제너럴 클러스터를 N(N≥1)개씩 조합하여 클러스터그룹을 생성하여 오름차순으로 정렬하고, 상기 유니버설 코드를 오름 차순으로 정렬하여 N(N≥1)개씩 조합한 코드그룹을 생성하며, 상기 정렬된 클러스터 그룹과 상기 코드그룹 간의 대응관계를 정의하여 상기 매핑사전을 생성하는 것을 특징으로 하는 이진데이터 압축방법.
  8. 제 1항에 있어서,
    상기 압축데이터와 상기 매핑사전을 결합한 결합데이터를 목적 장치로 전송하는 단계를 더 포함하는 것을 특징으로 하는 이진데이터 압축방법.
  9. 제 1항에 있어서,
    상기 매핑사전은, 제너럴 클러스터의 출현빈도의 내림차순에 따라 정렬된 상기 복수의 제너럴 클러스터의 각 값과, 오름차순으로 순차적으로 정렬된 유니버설 코드 간의 대응관계를 정의한 것임을 특징으로 하는 이진데이터 압축방법.
  10. 제 1항 내지 제 9항 중 어느 한 항에 기재된 이진데이터 압축방법에 의해 압축된 이진 데이터를 복원장치가 복원하는 방법으로서,
    복원부가 상기 매핑사전을 참조하여 상기 압축데이터로부터 이진데이터를 복원하는 단계를 포함하는 것을 특징으로 하는, 복원장치의 이진데이터 복원방법.
  11. 이진데이터 압축장치로서,
    원본 이진데이터를 스캐닝하고, 상기 스캐닝된 원본 이진데이터를 제너럴 클러스터 단위로 분할하여 복수의 제너럴 클러스터를 획득하는 데이터 스캐닝부;
    상기 복수의 제너럴 클러스터의 각 값과, 유니버설 코드 간의 대응관계를 정의한 매핑사전을 생성하는 사전생성부; 및
    상기 매핑사전을 참조하여, 상기 원본 이진데이터로부터 복수의 유니버설 코드를 포함하는 압축데이터를 생성하는 압축부를 포함하되,
    상기 제너럴 클러스터는 상기 원본 이진데이터의 최하위비트로부터 상위비트 방향으로 이동하면서 만나는 "10", 및 상기 "10"과 그 직전에 만난 "10" 사이의 이진수를 포함하는 이진수를 나타내고,
    상기 유니버설 코드는 해당 유니버설 코드의 최상위비트의 "10", n개 이상(n≥0)의 연속된 "1", 및 상기 최상위비트의 "10"과 상기 n개 이상(n≥0)의 연속된 "1" 사이에 배치된 적어도 m개 이상(m≥0)의 "0"을 포함하여 구성되는, 것을 특징으로 하는 이진 데이터 압축장치.
  12. 제 11항에 있어서,
    상기 매핑사전은 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값과, 오름차순으로 순차적으로 정렬된 유니버설 코드 간의 대응관계를 정의한 것임을 특징으로 하는 이진데이터 압축장치.
  13. 제 12항에 있어서,
    상기 매핑사전의 생성시,
    상기 사전생성부는 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값이 오름차순으로 순차적으로 정렬된 유니버설 코드의 값과 동일하다가 달라질 때부터, 상기 복수의 제너럴 클러스터의 각 값과 상기 유니버설 코드 간의 대응관계를 정의하여 상기 매핑사전을 생성하는 것을 특징으로 하는, 이진데이터 압축장치.
  14. 제 12항에 있어서,
    상기 매핑사전의 생성함에 있어, 상기 사전생성부는 상기 복수의 제너럴 클러스터의 각 값을 각 제너럴 클러스터 값에서 최상위 비트의 "10"을 제외한 "0"의 갯수와 "1"의 갯수로 나타내는 것을 특징으로 하는 이진데이터 압축장치.
  15. 제 12항에 있어서,
    상기 매핑사전의 생성시,
    상기 사전생성부는 오름차순으로 정렬된 상기 복수의 제너럴 클러스터의 각 값을 상위비트 방향 또는 하위비트방향으로 일렬로 배열하여 상기 매핑사전을 생성하는 것을 특징으로 하는 이진데이터 압축장치.
  16. 제 11항에 있어서,
    상기 복수의 제너럴 클러스터의 획득시, 상기 데이터 스캐닝부는 상기 원본 이진데이터의 최상위 비트 앞에 "10"을 추가하여 분할을 수행하는 것을 특징으로 하는 이진데이터 압축장치.
  17. 제 11항에 있어서,
    상기 매핑사전의 생성시,
    상기 사전생성부는 상기 원본 이진데이터에 포함된 복수의 제너럴 클러스터를 N(N≥1)개씩 조합하여 클러스터그룹을 생성하여 오름차순으로 정렬하고, 상기 유니버설 코드를 오름 차순으로 정렬하여 N(N≥1)개씩 조합한 코드그룹을 생성하며, 상기 정렬된 클러스터 그룹과 상기 코드그룹 간의 대응관계를 정의하여 상기 매핑사전을 생성하는 것을 특징으로 하는 이진데이터 압축장치.
  18. 제 11항에 있어서,
    상기 압축데이터와 상기 매핑사전을 결합한 결합데이터를 목적 장치로 전송하는 송신부를 더 포함하는 것을 특징으로 하는 이진데이터 압축장치.
  19. 제 11항에 있어서,
    상기 매핑사전은, 제너럴 클러스터의 출현빈도의 내림차순에 따라 정렬된 상기 복수의 제너럴 클러스터의 각 값과, 오름차순으로 순차적으로 정렬된 유니버설 코드 간의 대응관계를 정의한 것임을 특징으로 하는 이진데이터 압축장치.
  20. 제 11항 내지 제 19항 중 어느 한 항에 기재된 이진데이터 압축장치에 의해 압축된 이진 데이터를 복원하는 장치로서,
    상기 매핑사전을 참조하여 상기 압축데이터로부터 이진데이터를 복원하는 복원부를 포함하는 것을 특징으로 하는, 이진데이터 복원장치.
KR1020140153197A 2014-08-15 2014-11-05 이진 데이터의 압축 및 복원 방법과 장치 KR101632115B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020140106466 2014-08-15
KR20140106466 2014-08-15

Publications (2)

Publication Number Publication Date
KR20160021004A KR20160021004A (ko) 2016-02-24
KR101632115B1 true KR101632115B1 (ko) 2016-06-20

Family

ID=55449748

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140153197A KR101632115B1 (ko) 2014-08-15 2014-11-05 이진 데이터의 압축 및 복원 방법과 장치

Country Status (1)

Country Link
KR (1) KR101632115B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6674908B1 (en) 2002-05-04 2004-01-06 Edward Lasar Aronov Method of compression of binary data with a random number generator

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101725223B1 (ko) * 2011-03-25 2017-04-11 삼성전자 주식회사 저장 장치에서의 데이터 압축 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6674908B1 (en) 2002-05-04 2004-01-06 Edward Lasar Aronov Method of compression of binary data with a random number generator

Also Published As

Publication number Publication date
KR20160021004A (ko) 2016-02-24

Similar Documents

Publication Publication Date Title
EP1057269B1 (en) Block-wise adaptive statistical data compressor
KR101575939B1 (ko) 이진 데이터의 압축 및 복원 방법과 장치
KR101632115B1 (ko) 이진 데이터의 압축 및 복원 방법과 장치
KR101587944B1 (ko) 이진 데이터의 압축 및 복원 방법과 장치
KR101590790B1 (ko) 이진 데이터의 압축 및 복원 방법과 장치
KR20160106229A (ko) 문맥기반 분포데이터의 블럭화를 이용한 허프만 부호화의 효율화 방법 및 그 장치
KR20160100496A (ko) 바이너리 클러스터를 이용한 허프만 부호화 효율화 방법 및 그 장치
KR101612281B1 (ko) 이진 데이터의 압축 및 복원 방법과 장치
KR101549740B1 (ko) 이진 데이터의 압축 및 압축해제 방법과 장치
KR101632116B1 (ko) 이진 데이터의 압축 및 복원 방법과 장치
KR101471833B1 (ko) 이진 데이터의 압축 및 압축해제 방법과 장치
KR101791877B1 (ko) 유티에프-8 코드 문자의 압축 방법 및 장치
KR101652735B1 (ko) 이진 데이터의 압축 및 복원 방법과 장치
KR101752281B1 (ko) 유티에프-8 코드 문자의 압축 방법 및 장치
KR101791880B1 (ko) 유티에프-8 코드 문자의 압축 방법 및 장치
KR102361730B1 (ko) 데이터 압축 방법 및 장치
KR101760070B1 (ko) 데이터 부호화 및 복호화 방법과 장치
KR20160049627A (ko) 바이너리 클러스터별 분할 및 출현빈도수 내림차순 정렬에 따라 1:1 유니버설 코드 대응을 통한 압축법의 효율화 방법
KR101573983B1 (ko) 데이터 압축 및 데이터 복원 방법과 장치
Rawat et al. Evaluation of Burrows Wheeler Transform based image compression algorithm for multimedia applications
KR101906036B1 (ko) Lz78 압축 데이터의 오류 검출 방법 및 이를 이용한 인코더
KR101603866B1 (ko) 데이터 압축 및 데이터 복원 방법과 장치
KR20170047484A (ko) 에러에 강한 유니버설 코드의 연산을 이용한 생성 및 복호화방법 및 그 장치
KR101578608B1 (ko) 일반 코드 생성을 위한 데이터 부호화 장치 및 데이터 복호화 장치
KR20160047686A (ko) 분할된 클러스터 종류수 기준 데이터 분할을 이용한 인위적 엔트로피 확대를 이용한 데이터 압축 및 그 해제방법

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