KR102659349B1 - 데이터 압축 장치 및 방법 - Google Patents

데이터 압축 장치 및 방법 Download PDF

Info

Publication number
KR102659349B1
KR102659349B1 KR1020160169424A KR20160169424A KR102659349B1 KR 102659349 B1 KR102659349 B1 KR 102659349B1 KR 1020160169424 A KR1020160169424 A KR 1020160169424A KR 20160169424 A KR20160169424 A KR 20160169424A KR 102659349 B1 KR102659349 B1 KR 102659349B1
Authority
KR
South Korea
Prior art keywords
data
compression
compressed data
conversion method
compressed
Prior art date
Application number
KR1020160169424A
Other languages
English (en)
Other versions
KR20180067956A (ko
Inventor
김영일
송용호
양상준
정무경
Original Assignee
에스케이텔레콤 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이텔레콤 주식회사 filed Critical 에스케이텔레콤 주식회사
Priority to KR1020160169424A priority Critical patent/KR102659349B1/ko
Publication of KR20180067956A publication Critical patent/KR20180067956A/ko
Application granted granted Critical
Publication of KR102659349B1 publication Critical patent/KR102659349B1/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/6064Selection of Compressor
    • H03M7/6082Selection strategies
    • 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
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • 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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • 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/70Type of the data to be coded, other than image and sound

Landscapes

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

Abstract

본 발명의 일 실시예에 따른 데이터 압축 방법은, 압축의 대상이 되는 문자열 데이터를 획득하는 제 1 단계, 사전 방식(dictionary method) 기반의 제 1 압축 알고리즘을 이용하여 상기 문자열 데이터로부터 제 1 압축 데이터를 생성하는 제 2 단계 및 엔트로피 부호화(entropy encoding) 기반의 제 2 압축 알고리즘을 이용하여 상기 제 1 압축 데이터로부터 제 2 압축 데이터를 생성하되, 상기 제 1 압축 데이터가 포함하는 부호의 가짓수에 기초하여 동적 변환 방식과 정적 변환 방식 중 하나를 선택하고, 상기 선택된 변환 방식을 적용하여 상기 제 2 압축 데이터를 생성하는 제 3 단계를 포함할 수 있다.

Description

데이터 압축 장치 및 방법{APPARATUS AND METHOD FOR DATA COMPRESSION}
본 발명은 데이터를 압축함에 있어서 보다 효율적인 압축 방법을 빠르게 탐지함으로써 압축 효율과 속도를 함께 향상시킬 수 있는 장치 및 방법에 관한 것이다.
디플레이트(deflate) 알고리즘은 널리 알려진 무손실 압축 알고리즘 중 하나로, ZIP, gzip 등의 잘 알려진 압축 프로그램에 의해 사용되고 있다. 디플레이트 알고리즘에 의한 압축 과정은 크게 두 가지 과정으로 나눌 수 있다. 첫 번째 과정에서는 사전 방식(dictionary method) 기반의 압축 알고리즘인 LZ77 알고리즘을 이용해 원본 데이터를 압축하여 중간 압축 데이터를 생성한다. 두 번째 과정에서는 엔트로피 부호화(entropy encoding) 기반의 압축 알고리즘인 허프만 코딩(Huffman coding) 알고리즘을 이용해 상기 중간 압축 데이터를 재차 압축하여 최종 압축 데이터를 생성하게 된다.
상기 알고리즘 중 허프만 코딩 알고리즘에 의하면, 압축 대상이 되는 데이터(상기 디플레이트 알고리즘에 의하면 중간 압축 데이터)가 포함하는 문자 등의 부호를 부호 각각에 대응되는 이진(binary)화된 비트열(bit sequence)로 변환하여 압축 데이터를 생성한다. 즉, 압축 대상 데이터의 부호 각각이 특정 비트열에 일대일로 대응되어 있는 허프만 테이블(Huffman table)에 기초하여 압축을 수행하게 된다. 여기서 기 정해진 허프만 테이블을 사용할 수도 있고, 압축 대상 데이터의 특성을 고려하여 개별 압축 대상 데이터마다 각각 허프만 테이블을 생성하여 사용할 수도 있는데, 전자의 방법을 정적 변환 방식, 후자의 방법을 동적 변환 방식이라 칭할 수 있다. 두 번째 과정에서 사용되는 허프만 코딩 알고리즘은 동적 변환 방식과 정적 변환 방식으로 대별될 수 있다. 정적 변환 방식에 의하면 개별 압축 대상 데이터를 위한 허프만 테이블 생성 과정을 거치지 않아도 되므로 압축 속도가 빠르지만, 기 정해진 허프만 테이블이 모든 압축 대상 데이터에 대해 최적의 테이블일 수는 없으므로 압축률이 저하될 수 있다. 반면에 동적 변환 방식에 의하면 개별 압축 대상 데이터마다 최적의 허프만 테이블을 생성하여 적용하므로 압축률 측면에서 일반적으로 우수하지만, 허프만 테이블의 생성에 시간이 소요되므로 압축 속도 측면에서 불리하다.
한편, 동적 변환 방식은 전술한 바와 같이 데이터 자체의 압축률에 있어서는 정적 변환 방식보다 우수하나, 압축 데이터의 압축 해제를 위해서는 해당 압축 데이터의 압축에 이용된 허프만 테이블을 압축 데이터에 부가해야 한다. 이에 반해 정적 변환 방식은 항상 기 정해진 허프만 테이블을 사용하므로 이러한 부가 과정이 필요가 없다. 이로 인해 경우에 따라서는, 부가된 허프만 테이블 관련 데이터로 인해 결과적으로 동적 변환 방식의 압축률이 정적 변환 방식의 압축률에 비해 떨어질 수 있다. 이를 일반화시켜 말하자면, 동일한 압축 대상 데이터에 있어서 동적 변환 방식에 의한 압축 데이터와 정적 변환 방식에 의한 압축 데이터 간의 길이의 차이가 허프만 테이블 관련 데이터의 길이보다 작을 경우 동적 변환 방식의 압축률이 정적 변환 방식의 압축률에 비해 떨어지게 된다.
이에, 특정 압축 대상 데이터에 있어 정적 변환 방식과 동적 변환 방식을 수행해본 후, 압축률이 높은 쪽을 이용하여 압축을 수행하는 방법이 종래 기술에 의해 고안되었다. 이러한 종래 기술에 의하면 최적의 압축률을 달성하는 것이 가능하나, 모든 압축 대상 데이터에 있어 정적 변환 방식과 동적 변환 방식을 직접 수행하여 그 결과를 비교하는 과정을 거쳐야 하므로 압축 속도가 매우 저하된다는 단점을 갖는다. 특히, 동적 변환 방식에 의한 허프만 테이블을 생성하고, 생성된 허프만 테이블로 압축을 수행하여 압축률을 판단하는 과정은 속도 저하의 큰 부분을 차지한다.
따라서, 종래 기술에 비해 보다 빠른 속도를 가지면서도 높은 압축률을 확보할 수 있는 기술이 필요한 상황이다.
한국공개특허공보, 제 10-2014-0113604 호 (2014.09.24. 공개)
본 발명의 해결하고자 하는 과제는, 압축 대상 데이터에 대해 상기 정적 변환 방식과 동적 변환 방식을 직접 적용하지 않고서도, 두 알고리즘 중 압축률이 높은 알고리즘을 예측할 수 있는 장치 및 방법을 제공하는 것이다.
본 발명의 일 실시예에 따른 데이터 압축 방법은, 압축의 대상이 되는 문자열 데이터를 획득하는 제 1 단계, 사전 방식(dictionary method) 기반의 제 1 압축 알고리즘을 이용하여 상기 문자열 데이터로부터 제 1 압축 데이터를 생성하는 제 2 단계 및 엔트로피 부호화(entropy encoding) 기반의 제 2 압축 알고리즘을 이용하여 상기 제 1 압축 데이터로부터 제 2 압축 데이터를 생성하되, 상기 제 1 압축 데이터가 포함하는 부호의 가짓수에 기초하여 동적 변환 방식과 정적 변환 방식 중 하나를 선택하고, 상기 선택된 변환 방식을 적용하여 상기 제 2 압축 데이터를 생성하는 제 3 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 데이터 압축 장치는, 압축의 대상이 되는 문자열 데이터를 획득하는 입력부, 사전 방식 기반의 제 1 압축 알고리즘을 이용하여 상기 문자열 데이터로부터 제 1 압축 데이터를 생성하는 제 1 압축부, 엔트로피 부호화 기반의 제 2 압축 알고리즘을 이용하여 상기 제 1 압축 데이터로부터 제 2 압축 데이터를 생성하는 제 2 압축부 및 상기 제 1 압축 데이터가 포함하는 부호의 가짓수에 기초하여 동적 변환 방식과 정적 변환 방식 중 하나를 선택하는 제어부를 포함하되, 상기 제 2 압축부는, 상기 제어부에 의해 선택된 변환 방식을 적용하여 상기 제 2 압축 데이터를 생성할 수 있다.
본 발명의 일 실시예에 따르면, 압축 대상 데이터의 부호의 가짓수 및 각 부호가 압축 대상 내에서 등장하는 빈도수에 기초하여 보다 효율이 높은 알고리즘을 선택하는 것이 가능하다. 이를 통해 데이터 압축에 있어 효율과 속도를 함께 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 데이터 압축 장치의 구성을 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 데이터 압축 방법의 순서를 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 데이터 압축 방법의 수행 과정에서 생성되는 허프만 트리를 도시한 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명의 일 실시예에 따른 데이터 압축 장치의 구성을 도시한 도면이다. 도 1의 데이터 압축 장치(100)는 입력부(110), 제 1 압축부(120), 제 2 압축부(130), 제어부(140), 출력부(150) 및 저장부(160)를 포함할 수 있다. 다만, 도 1의 데이터 압축 장치(100)의 구성 요소는 본 발명의 일 실시예에 불과하므로, 도 1에 의해 본 발명의 기술적 사상이 한정 해석되는 것은 아니다.
입력부(110)는 데이터 압축 장치(100)에 의해 압축될 압축 대상 데이터를 획득할 수 있다. 이러한 압축 대상 데이터는 문자열(string)로 이루어진 데이터라면 어떤 것이든 될 수 있다. 문자열은 하나 이상의 종류의 부호로 구성될 수 있으며, 일정한 길이를 가질 수 있다. 예컨대, 입력부(110)에 의해 획득된 압축 대상 데이터가 "AABBCCDAABBAABB"라는 문자열로 이루어져 있다고 가정하자. 그러면 상기 문자열의 부호의 가짓수는 A, B, C, D의 4가지가 되고, 길이는 부호의 총 개수인 15가 된다고 할 수 있다. 이와 같은 압축 대상 데이터를 입력받는 입력부(110)는 마이크로프로세서(microprocessor)와 같은 연산 장치에 데이터를 입력하기 위한 데이터 버스 등의 인터페이스를 통해 구현될 수 있다.
제 1 압축부(120)는 기 정해진 제 1 압축 알고리즘을 이용하여 상기 압축 대상 데이터를 압축함으로써 제 1 압축 데이터를 생성할 수 있다. 여기서 제 1 압축 알고리즘은 사전 방식(dictionary method) 기반의 알고리즘이 될 수 있으며, 더 구체적으로는 LZ77 알고리즘이 될 수 있다. 따라서 제 1 압축부(120)는 LZ77 인코더 등 사전 방식 기반의 알고리즘을 수행할 수 있는 인코더(encoder)가 될 수 있다. 또한, 제 1 압축부(120)는 하드웨어(hardware)적인 구현에 있어서 후술할 제 2 압축부(130) 및 제어부(140)와 함께 마이크로프로세서를 포함하는 연산 장치를 이용하여 구현될 수 있다.
제 2 압축부(130)는 기 정해진 제 2 압축 알고리즘을 이용하여 상기 제 1 압축 데이터를 압축함으로써 제 2 압축 데이터를 생성할 수 있다. 여기서 제 2 압축 알고리즘은 엔트로피 부호화(entropy encoding) 기반의 알고리즘이 될 수 있으며, 더 구체적으로는 허프만 코딩(Huffman coding) 알고리즘이 될 수 있다. 따라서 제 2 압축부(130)는 허프만 인코더 등 엔트로피 부호화 기반의 알고리즘을 수행할 수 있는 인코더가 될 수 있다.
다만, 허프만 코딩 알고리즘과 같은 제 2 압축 알고리즘에 의한 압축을 수행하기 위해서는 허프만 테이블(Huffman table)과 같은 변환 테이블이 필요한데, 이러한 변환 테이블로서 기 정해져 있는 변환 테이블이 사용(정적 변환 방식)될 수도 있고, 제 2 압축 알고리즘에 의한 압축의 대상이 되는 제 1 압축 데이터의 특성을 고려하여 생성된 최적의 변환 테이블이 사용(동적 변환 방식)될 수도 있다. 이와 관련하여, 제 2 압축부(130)는 후술할 제어부(140)의 제어에 기초하여 전술한 정적 변환 방식과 동적 변환 방식 중 하나를 선택하여 제 2 압축 데이터를 생성할 수 있다. 구체적으로는, 제어부(140)가 동적 변환 방식이 적합할 것이라고 판단할 경우, 제 2 압축부(130)는 동적 변환 방식에 의해 상기 제 1 압축 데이터의 특성을 고려하여 최적의 변환 테이블을 생성하고, 생성된 최적의 변환 테이블을 이용하여 제 2 압축 데이터를 생성할 수 있다. 따라서, 제 2 압축부(130)는 허프만 테이블 등의 변환 테이블을 생성하기 위한 하드웨어적 혹은 소프트웨어(software)적 구성을 포함할 수 있다. 이와 달리 제어부(140)가 정적 변환 방식이 적합할 것이라고 판단할 경우, 제 2 압축부(130)는 정적 변환 방식에 의해 상기 기 정해진 변환 테이블을 이용하여 제 2 압축 데이터를 생성할 수 있다. 기 정해진 변환 테이블은 다양한 방식으로 정해질 수 있지만, 한 예로서 다양한 문서들에 대한 통계 분석을 통해 각 문자를 빈도에 따라 정렬한 결과(예컨대, 영문 알파벳 중에는 일반적으로 "e"가 가장 높은 빈도로 등장)에 기초하여 미리 정해둘 수 있다.
제어부(140)는 데이터 압축 장치(100)의 동작을 전반적으로 제어하는 역할을 수행할 수 있다. 특히 제어부(140)는 전술한 정적 변환 방식과 동적 변환 방식 중 적합한 하나를 선택하고, 제 2 압축부(130)가 선택된 방식에 따른 알고리즘을 통해 제 2 압축 데이터를 생성하도록 제어할 수 있다. 제어부(140)가 선택을 수행하는 구체적인 원리에 대해서는 후술하도록 한다.
출력부(150)는 제 2 압축부(130)에 의해 생성된 제 2 압축 데이터를 최종 압축 데이터로서 데이터 압축 장치(100)의 외부에 출력할 수 있다. 이러한 출력부(150)는 마이크로프로세서(microprocessor)와 같은 연산 장치로부터 생성된 데이터를 상기 연산 장치 외부로 전달하기 위한 데이터 버스 등의 인터페이스를 통해 구현될 수 있다.
저장부(160)는 데이터 압축 장치(100)의 각 구성 요소의 동작을 위해 필요한 정보를 저장할 수 있다. 가장 대표적인 예로서, 저장부(160)는 정적 변환 방식을 위해 기 정해진 변환 테이블을 저장함으로써 제 2 압축부(130)가 이를 이용하도록 할 수 있다. 또한, 저장부(160)는 동적 변환 방식에서 이용될 최적의 변환 테이블을 생성하는 과정에서 만들어지는 허프만 트리(Huffman tree)와 같은 이진 트리(binary tree) 등의 데이터를 임시로, 혹은 영구적으로 저장할 수 있다. 저장부(160)가 저장하는 정보는 반드시 위의 예시에 한정되는 것은 아니고, 데이터 압축 장치(100)의 동작에 필요한 것이라면 어떤 것이든 될 수 있다. 이러한 저장부(160)는 구체적으로 컴퓨터 판독 가능 기록 매체로서 구현될 수 있으며, 이러한 컴퓨터 판독 기록 매체의 예로는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 플래시 메모리(flash memory)와 같은 프로그램 명령어들을 저장하고 수행하도록 특별히 구성된 저장 매체를 들 수 있다.
도 2는 본 발명의 일 실시예에 따른 데이터 압축 방법의 순서를 도시한 도면이다. 단, 도 2에 도시된 방법은 본 발명의 일 실시예에 불과하므로 도 2에 의해 본 발명의 사상이 한정 해석되는 것은 아니며, 도 2에 도시된 방법의 각 단계는 경우에 따라 도면에 제시된 바와 그 순서를 달리하여 수행될 수도 있다. 한편, 전술한 바와 같이 본 발명의 일 실시예에 따른 제 1 압축 알고리즘은 사전 방식 기반 알고리즘, 제 2 알고리즘은 엔트로피 부호화 기반 알고리즘이 각각 될 수 있다. 다만 이하에서는 설명의 편의를 위해 제 1 압축 알고리즘을 LZ77 알고리즘으로, 제 2 알고리즘을 허프만 코딩 알고리즘으로 각각 가정하고 설명하도록 하겠으나, 본 발명의 사상이 이러한 가정에 의해 제한 해석되는 것이 아님은 물론이다.
우선, 입력부(110)는 문자열로 이루어진 압축 대상 데이터를 획득할 수 있다(S110). 입력부(110)에 의해 획득된 압축 대상 데이터는, 제 1 압축부(120)에 의해 제 1 압축 알고리즘인 LZ77으로 압축되어 제 1 압축 데이터로 변환될 수 있다(S120). LZ 알고리즘은 문자열 내에서 자주 반복되는 패턴이 있을 수 있다는 사실에 착안한 알고리즘으로, 이미 한 번 등장한 패턴이 뒤에서 다시 등장한 때에는 다시 등장한 해당 패턴을 위치 및 길이 정보로 대체하는 것이다.
예컨대, "ABCDEFGHABCDEF"라는 문자열이 있을 때 "ABCDEF"라는 패턴은 문자열 내에서 두 번에 걸쳐 반복되는 것을 알 수 있다. 그러면 뒤에 등장하는 패턴은 이를 그대로 쓰는 대신, "문자 8개만큼 앞으로 간 후, 그 위치로부터 6개의 문자"라는 의미로 (8,6)이라 간단히 나타낼 수 있다. 실제적인 예로서, 입력부(110)에 의해 획득된 압축 대상 데이터가 "AABBCAABBCD"라는 문자열로 이루어져 있다고 가정하도록 한다. 이를 LZ77 알고리즘으로 압축하면 "A(1,1)B(1,1)C(5,5)D"가 될 수 있다. LZ77 알고리즘에 의해 제 1 압축 데이터를 생성하는 상세한 과정은 통상의 기술자에게 자명한 것이므로 구체적인 설명은 생략하도록 한다. LZ77 알고리즘은"부호(문자)-위치-길이"의 반복적 패턴으로 정보가 구성되는 바, 상기 압축의 결과는 구분자를 생략하고 "A11B11C55D"로 나타낼 수 있으며, 이것이 제 1 압축 데이터가 된다. 결과적으로, "AABBCAABBCD"라는 처음의 압축 대상 데이터는 11개의 부호만큼의 길이를 갖지만, 제 1 압축 데이터인 "A11B11C55D"는 10개의 부호만큼의 길이를 갖게 되므로, 압축에 의해 데이터의 크기가 줄어들었음을 알 수 있다. 여기서 "압축률"은 원본 데이터의 길이에 대한 감소된 데이터 길이의 비율로 표현될 수 있으므로, 본 예에서 압축률은 (11-10)/11≒9.09%가 된다. 압축률이 높을수록 데이터의 길이가 많이 줄어들었다는 것이 되므로, 압축률은 높을수록 좋다.
다음으로, 제 2 압축부(130)가 제 2 압축 데이터 생성을 위해 상기 제 1 압축 데이터를 획득할 수 있는데, 제 2 압축부(130)가 정적 변환 방식과 동적 변환 방식 중 어떤 것을 적용하여 제 2 압축 데이터를 생성할지에 대한 판단을 제어부(140)가 수행할 수 있다. 즉, 제어부(140)는 정적 변환 방식과 동적 변환 방식 간의 비교 결과를 예상하여(S130), 압축률이 더 높을 것으로 예상되는 방식을 선택할 수 있다(S140). 본 발명의 일 실시예에 따르면, 제어부(140)는 제 1 압축부(120)로부터 제 1 압축 데이터를 획득한 후, 획득된 제 1 압축 데이터가 포함하는 부호의 가짓수에 기초하여 동적 변환 방식과 정적 변환 방식 중 하나를 선택할 수 있다. 구체적으로는, 제 1 압축 데이터가 포함하는 부호의 가짓수가 기 정해진 임계 가짓수 미만일 경우 동적 변환 방식을 선택하고, 임계 가짓수 이상일 경우 정적 변환 방식을 선택할 수 있다. 이러한 임계 가짓수는 고정되어 있을 수도 있지만, 입력된 압축 대상 데이터 혹은 제 1 압축 데이터의 길이에 비례하도록 정해질 수도 있다.
전술한 예와 같이, LZ77 알고리즘에 의해 "A11B11C55D"라는 제 1 압축 데이터가 생성되었다고 가정하면, 상기 제 1 압축 데이터의 부호는 A, B, C, D, 1, 5의 총 6개로, 따라서 부호의 가짓수는 6이 된다. 만일 임계 가짓수가 제 1 압축 데이터의 길이에 비례하여 결정되는 상황이고, 임계 가짓수는 제 1 압축 데이터의 길이의 70%라 한다면, 상기 제 1 압축 데이터에 대한 임계 가짓수는 10의 70%인 7이 되며, 제 1 압축 데이터의 부호의 가짓수인 6은 임계 가짓수인 7 미만이므로, 제어부(140)는 동적 변환 방식을 선택할 수 있다.
전술한 바와 같은 선택의 원리를 설명하면 다음과 같다. 전술한 바와 같이, 허프만 코딩 알고리즘과 같은 엔트로피 부호화 기반 알고리즘은, 동적 변환 방식을 선택할 경우 해당 특정 압축 대상 데이터를 위한 변환 테이블을 압축된 데이터에 첨부하여야 하므로, 결국 전체 압축률은 변환 테이블이 차지하는 길이(혹은 용량)만큼 감소하게 된다. 예컨대, 압축 대상 데이터의 용량이 10kbyte, 압축된 데이터의 용량이 6kbyte, 변환 테이블의 용량이 1kbyte라 가정하면, 압축된 데이터만으로 산정한 압축률은 40%가 되겠지만, 전체 압축률은 30%가 될 것이다. 만일 같은 압축 대상 데이터에 대해 기 정해진 변환 테이블을 이용하여 정적 변환 방식을 적용할 경우 압축률이 35%라 가정하자. 동적 변환 방식은 특정 압축 대상 데이터에 대한 최적의 변환 테이블을 생성하게 되므로, 데이터 자체의 압축률에 대해서는 항상 정적 변환 방식 이상의 압축률을 보이나, 정적 변환 방식은 테이블이 압축된 데이터에 포함될 필요가 없으므로, 변환 테이블의 용량까지 고려한 전체 압축률에 있어서는 정적 변환 방식에 비해 떨어질 수 있다. 이를 일반화시켜 말하면, 데이터 자체의 압축률에 있어서 동적 변환 방식과 정적 변환 방식 간의 차이가 일정 수준 이상이라면 동적 변환 방식을, 일정 수준 미만이라면 정적 변환 방식을 선택하는 것이 바람직하다.
한편, 압축 대상 데이터의 길이에 비해 부호의 가짓수가 적을수록 데이터 자체의 압축률은 높아지는 경향을 보인다. 이에 따라, 데이터 자체의 압축률에 있어서 동적 변환 방식과 정적 변환 방식 간의 차이 역시, 압축 대상 데이터의 길이가 같다고 가정할 경우 부호의 가짓수가 적을수록 커지게 된다. 이에 따라, 본 발명의 일 실시예에서는 임계 가짓수를 설정하고, 부호의 가짓수가 설정된 임계 가짓수 미만일 경우 동적 변환 방식을, 이상일 경우 정적 변환 방식을 각각 선택할 수 있다. 이와 같은 본 발명의 일 실시예에 따른 방법에 의하면, 동적 변환 방식과 정적 변환 방식을 각각 수행하여 양 방식의 전체 압축률을 비교하는 과정을 거치지 않고서도 최적의 변환 방식을 선택하는 것이 가능해진다. 특히, 동적 변환 방식에서 최적의 변환 테이블을 생성하는 과정에 소요되는 시간은, 결과적으로 정적 변환 방식을 선택했을 경우에는 소요하지 않아도 될 불필요한 시간이 된다. 본 발명의 일 실시예에서는 정적 변환 방식을 선택할 경우에는 동적 변환 방식에 의한 변환 테이블을 생성하는 과정을 아예 거치지 않으므로, 최적의 변환 방식을 선택하면서도 종래 기술에 비해 압축 속도를 개선할 수 있게 된다.
한편 본 발명의 또 다른 실시예에 의하면, 제어부(140)는 부호의 가짓수 외에도 부호 각각이 등장하는 빈도수의 편차까지 고려하여 정적 변환 방식과 동적 변환 방식 중 하나의 선택을 수행할 수 있다. 허프만 코딩 알고리즘을 비롯한 엔트로피 부호화 기반 알고리즘에서는, 부호 각각의 빈도수의 편차가 클수록 높은 압축률이 달성되는 경향이 있다. 예컨대, "AAAAAAAABC"와 "AAAABBBCCC"라는 두 문자열이 있다고 가정하자. 두 문자열의 길이는 모두 10으로 같고, 부호의 가짓수 역시 3으로 같지만, 부호 각각의 빈도수는 A, B, C 순으로 8, 1, 1과 4, 3, 3으로 각기 다르다. 즉, 앞의 문자열이 뒤의 문자열보다 부호 각각의 빈도수의 편차가 크고, 이에 따라 앞의 문자열이 엔트로피 부호화 기반 알고리즘으로 압축할 시에 더 큰 압축률을 가질 수 있다. 이와 같은 원리까지 고려하여, 제어부(140)는 부호의 가짓수와 빈도수의 편차를 이용하여 예상 압축률 지수를 산출하고, 이러한 예상 압축률 지수에 기초하여 정적 변환 방식과 동적 변환 방식 중 어느 하나를 선택할 수 있다. 예컨대, 예상 압축률 지수는 부호의 가짓수에 반비례하도록, 빈도수의 편차에 비례하도록 산출될 수 있다. 그러면 제어부(140)는 예상 압축률 지수가 일정 수준 이상이면 동적 변환 방식을 선택하고, 일정 수준 미만이면 정적 변환 방식을 선택할 수 있다. 이 경우, 부호의 가짓수가 적고 빈도수의 편차가 클수록 동적 변환 방식이 선택될 가능성이 높고, 부호의 가짓수가 많고 빈도수의 편차가 작을수록 정적 변환 방식이 선택될 가능성이 높을 것이다. 한편, 빈도수의 편차에만 기초하여 변환 방식을 선택할 수도 있음은 물론이다.
제어부(140)는 변환 방식 선택 결과를 제 2 압축부(130)로 전달할 수 있다. 제어부(140)가 정적 변환 방식을 선택하였다면, 제 2 압축부(130)는 저장부(160)에 저장된 변환 테이블을 이용하여 제 2 압축 알고리즘, 여기에서는 허프만 코딩 알고리즘을 수행함으로써 제 2 압축 데이터를 생성할 수 있다(S150). 이와 달리, 제어부(140)가 동적 변환 방식을 선택하였다면, 제 2 압축부(130)는 제 1 압축 데이터에 대한 최적의 변환 테이블을 생성하고(S160), 생성된 최적의 변환 테이블을 이용하여 제 1 압축 데이터로부터 제 2 압축 데이터를 생성할 수 있다(S170).
도 3은 본 발명의 일 실시예에 따른 데이터 압축 방법의 수행 과정에서 생성되는 허프만 트리를 도시한 도면이다. 제어부(140)가 위의 예에서 생성된 "A11B11C55D"라는 제 1 압축 데이터에 대해 동적 변환 방식을 적용할 것을 결정하였다고 가정하자. 그러면 제 2 압축부(130)는 제 1 압축 데이터에 대해 도 3과 같은 허프만 트리를 생성할 수 있고, 표 1과 같은 허프만 테이블을 생성할 수 있다. 이와 같은 허프만 트리 및 허프만 테이블을 생성하는 상세한 과정은 통상의 기술자에게 자명한 것이므로, 구체적인 설명은 생략한다.
변환 전 (제 1 압축 데이터) 변환 후 (제 2 압축 데이터)
1 1
5 01
A 0000
B 0001
C 0010
D 0011
상기 표 1에 의해, 제 1 압축 데이터 "A11B11C55D"는 0 혹은 1로 표현될 수 있는 이진 데이터인 제 2 압축 데이터 "000011000111001001010011"로 변환될 수 있다. 제 1 압축 데이터의 부호들 중 문자와 숫자를 편의상 모두 2byte라 놓는다면, 제 1 압축 데이터의 용량은 총 20byte, 즉 160bit가 된다. 이에 비해 제 2 압축 데이터는 24bit가 되므로, 압축에 의해 데이터 용량 감소가 이루어졌음을 알 수 있다.
출력부(150)는 제 2 압축부(130)가 생성한 제 2 압축 데이터를 출력 데이터로서 출력할 수 있다(S180). 한편, 동작의 편의를 위하여 압축 대상 데이터는 기 정해진 길이를 갖도록 조절될 수 있다. 즉, 데이터 압축 장치(100)로 입력될 원본 데이터의 길이가 100kbyte이고 기 정해진 길이가 10kbyte라면, 입력부(110)는 원본 데이터를 각각 10kbyte의 길이를 갖는 10개의 데이터 블록으로 분할할 수 있으며, 각각의 데이터 블록이 압축 대상 데이터가 된다. 그러면 10개의 데이터 블록 각각에 대해 상기 S110 내지 S180의 데이터가 반복해서 수행될 수 있으며, 출력부(150)는 각 데이터 블록에 대한 제 2 압축 데이터 각각을 결합하여 출력 데이터로서 출력할 수 있다. 이 때, 입력부(110)는 각 데이터 블록에 원본 데이터에서의 순서에 기초하여 일련 번호를 부여할 수 있으며, 출력부(150)는 이러한 일련 번호에 기초하여 제 2 압축 데이터를 순서대로 결합할 수 있다.
본 발명에 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 인코딩 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 인코딩 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방법으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 품질에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 균등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
본 발명의 일 실시예에 따르면, 데이터를 압축함에 있어서 보다 효율적인 압축 방법을 빠르게 탐지함으로써 압축 효율과 속도를 함께 향상시킬 수 있다.
100: 데이터 압축 장치
110: 입력부
120: 제 1 압축부
130: 제 2 압축부
140: 제어부
150: 출력부
160: 저장부

Claims (10)

  1. 압축의 대상이 되는 문자열 데이터를 획득하는 제 1 단계;
    사전 방식(dictionary method) 기반의 제 1 압축 알고리즘을 이용하여 상기 문자열 데이터로부터 제 1 압축 데이터를 생성하는 제 2 단계; 및
    엔트로피 부호화(entropy encoding) 기반의 제 2 압축 알고리즘을 이용하여 상기 제 1 압축 데이터로부터 제 2 압축 데이터를 생성하되, 상기 제 1 압축 데이터가 포함하는 부호의 가짓수에 기초하여 동적 변환 방식과 정적 변환 방식 중 하나를 선택하고, 상기 선택된 변환 방식을 적용하여 상기 제 2 압축 데이터를 생성하는 제 3 단계를 포함하는
    데이터 압축 방법.
  2. ◈청구항 2은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서,
    상기 제 3 단계는, 상기 제 1 압축 데이터가 포함하는 부호의 가짓수가 기 정해진 임계 가짓수 미만일 경우 동적 변환 방식을 선택하고, 상기 임계 가짓수 이상일 경우 정적 변환 방식을 선택하는 단계를 포함하는
    데이터 압축 방법.
  3. ◈청구항 3은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서,
    상기 제 3 단계는, 상기 동적 변환 방식이 선택될 경우, 상기 제 1 압축 데이터 내에서 상기 부호 각각이 등장하는 빈도수에 기초하여 변환 테이블을 생성하고, 상기 변환 테이블을 이용하여 상기 제 1 압축 데이터를 상기 제 2 압축 데이터로 변환하는 단계; 및
    상기 정적 변환 방식이 선택될 경우, 상기 변환 테이블을 생성함이 없이 기 정해진 표준 변환 테이블을 이용하여 상기 제 1 압축 데이터를 상기 제 2 압축 데이터로 변환하는 단계를 포함하고,
    상기 변환 테이블은, 상기 부호 중 상기 빈도수가 높은 부호가 긴 길이를 갖는 비트열(bit sequence)로 변환되도록 생성되는
    데이터 압축 방법.
  4. ◈청구항 4은(는) 설정등록료 납부시 포기되었습니다.◈
    제 2 항에 있어서,
    상기 임계 가짓수는, 상기 제 1 압축 데이터의 길이에 비례하도록 정해지는
    데이터 압축 방법.
  5. ◈청구항 5은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서,
    상기 제 3 단계는, 상기 제 1 압축 데이터가 포함하는 부호의 가짓수 및 상기 제 1 압축 데이터 내에서 상기 부호 각각이 등장하는 빈도수의 편차에 기초하여 상기 동적 변환 방식과 상기 정적 변환 방식 중 하나를 선택하는
    데이터 압축 방법.
  6. ◈청구항 6은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서,
    상기 제 1 알고리즘은 LZ77 알고리즘이고, 상기 제 2 알고리즘은 허프만 부호화(Huffman coding) 알고리즘인
    데이터 압축 방법.
  7. 삭제
  8. 압축의 대상이 되는 문자열 데이터를 획득하는 입력부;
    사전 방식 기반의 제 1 압축 알고리즘을 이용하여 상기 문자열 데이터로부터 제 1 압축 데이터를 생성하는 제 1 압축부;
    엔트로피 부호화 기반의 제 2 압축 알고리즘을 이용하여 상기 제 1 압축 데이터로부터 제 2 압축 데이터를 생성하는 제 2 압축부; 및
    상기 제 1 압축 데이터가 포함하는 부호의 가짓수에 기초하여 동적 변환 방식과 정적 변환 방식 중 하나를 선택하는 제어부를 포함하되,
    상기 제 2 압축부는, 상기 제어부에 의해 선택된 변환 방식을 적용하여 상기 제 2 압축 데이터를 생성하는
    데이터 압축 장치.
  9. ◈청구항 9은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항 내지 제 6 항 중 어느 한 항에 기재된 방법에 따른 각각의 단계를 수행하는, 컴퓨터 판독 가능 기록매체에 저장된 프로그램.
  10. ◈청구항 10은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항 내지 제 6 항 중 어느 한 항에 기재된 방법에 따른 각각의 단계를 수행하는 명령어를 포함하는 프로그램이 기록된 컴퓨터 판독 가능 기록매체.
KR1020160169424A 2016-12-13 2016-12-13 데이터 압축 장치 및 방법 KR102659349B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160169424A KR102659349B1 (ko) 2016-12-13 2016-12-13 데이터 압축 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160169424A KR102659349B1 (ko) 2016-12-13 2016-12-13 데이터 압축 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20180067956A KR20180067956A (ko) 2018-06-21
KR102659349B1 true KR102659349B1 (ko) 2024-04-19

Family

ID=62806736

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160169424A KR102659349B1 (ko) 2016-12-13 2016-12-13 데이터 압축 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102659349B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102208364B1 (ko) * 2018-10-19 2021-01-28 펌킨네트웍스(주) 트래픽 최적화 장치 및 그 방법
KR102325041B1 (ko) * 2019-11-18 2021-11-11 재단법인대구경북과학기술원 신경전극 배열체 및 이의 제조방법
CN114039698A (zh) * 2021-10-12 2022-02-11 深圳智慧林网络科技有限公司 基于多频率的数据发送和接收方法、装置和设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4479530B2 (ja) * 2004-12-28 2010-06-09 カシオ電子工業株式会社 データ圧縮装置、及びデータ復元装置
KR101725223B1 (ko) * 2011-03-25 2017-04-11 삼성전자 주식회사 저장 장치에서의 데이터 압축 방법
US8766827B1 (en) 2013-03-15 2014-07-01 Intel Corporation Parallel apparatus for high-speed, highly compressed LZ77 tokenization and Huffman encoding for deflate compression

Also Published As

Publication number Publication date
KR20180067956A (ko) 2018-06-21

Similar Documents

Publication Publication Date Title
JP4801776B2 (ja) データ圧縮
CN108768403B (zh) 基于lzw的无损数据压缩、解压方法及lzw编码器、解码器
JP5221047B2 (ja) 圧縮率の向上のために改善されたコンテキストモデル選択を使用するcabac符号化方法及び装置、並びにcabac復号化方法及び装置
US20190140657A1 (en) Data compression coding method, apparatus therefor, and program therefor
KR101049699B1 (ko) 데이터의 압축방법
US7786907B2 (en) Combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems
KR102659349B1 (ko) 데이터 압축 장치 및 방법
CA2452175A1 (en) Variable length coding method and variable length decoding method
JP6681313B2 (ja) データを符号化するための方法、コンピュータ・プログラムおよびシステム
US7548175B2 (en) Encoding apparatus, decoding apparatus, encoding method, computer readable medium storing program thereof, and computer data signal
US7786903B2 (en) Combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems
Tahghighi et al. Hardware implementation of a novel adaptive version of Deflate compression algorithm
JPH11340838A (ja) 符号化装置および復号装置
CN103746701B (zh) 一种用于Rice无损数据压缩的快速编码选项选择方法
US8018359B2 (en) Conversion of bit lengths into codes
JP2008067351A (ja) 符号化装置、復号化装置、符号化方法及びプログラム
JP6005273B2 (ja) データストリームの符号化方法、送信方法、伝送方法、データストリームを符号化するための符号化装置、送信装置、および、伝送装置
KR20160106229A (ko) 문맥기반 분포데이터의 블럭화를 이용한 허프만 부호화의 효율화 방법 및 그 장치
Hameed et al. A new lossless method of Huffman coding for text data compression and decompression process with FPGA implementation
CN105630529A (zh) Fpga配置文件的加载方法和解码器
US20180357014A1 (en) Storage infrastructure that employs a low complexity encoder
CN107133330B (zh) 一种数据二值化处理的方法与装置
US20240195980A1 (en) Image processing method and system, encoder, and computer readable storage medium
Philip et al. LiBek II: A novel compression architecture using adaptive dictionary
JP7548706B2 (ja) データを圧縮する方法および装置

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