KR20210012580A - 이진데이터의 압축 방법 및 장치 - Google Patents

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

Info

Publication number
KR20210012580A
KR20210012580A KR1020190090558A KR20190090558A KR20210012580A KR 20210012580 A KR20210012580 A KR 20210012580A KR 1020190090558 A KR1020190090558 A KR 1020190090558A KR 20190090558 A KR20190090558 A KR 20190090558A KR 20210012580 A KR20210012580 A KR 20210012580A
Authority
KR
South Korea
Prior art keywords
huffman
data
code
huffman code
bit
Prior art date
Application number
KR1020190090558A
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 KR1020190090558A priority Critical patent/KR20210012580A/ko
Publication of KR20210012580A publication Critical patent/KR20210012580A/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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • 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/6005Decoder aspects

Landscapes

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

Abstract

압축바이너리클러스터(1개)+ M개 허프만 부호 + tail data 가 결합된 N비트의 데이터각각에 있어서 table A 로 부호화하면, table A 로 복호화할지, table B로 복호화 할지 결정함에 있어서, 위와 같이 decoding 불가능 지점을 확인해보고 더 짧은 불가능 지점을 나타내는 복호화 table을 선택하여 허프만 부호를 선택하면 된다. 이것이 본 발명의 핵심적인 사안이다.
한편 상기와 같이 일단 몇개를 결합시켜야 하는지에 따라, 각 압축바이너리 클러스터에 결합하는 첫번째 허프만 부호코드가 비트반전된 형태로 결합되는 경우(즉 table B의 호프만 코드) 나머지 허프만 부호 코드들도 모두 비트반전한 형태로 결합시킨다.(즉 표3의 table B 형태의 결합) 반대로 첫번째 허프만 부호 코드가 그대로 결합되는 경우 나머지 허프만 부호코드들도 그형태 그대로 결합시킨다.(즉 표3의 table A 형태 결합)
이제 각 압축바이너리클러스터에 M개의 동일테이블의 허프만 부호를 결합시킨 데이터를 N비트 고정데이터로 만들기 위해 [N 비트 - 결합데이터비트의 길이] 크기 만큼을 별도의 데이터 소스에서 데이터를 가져와서 결합시킨다. 이를 tail data라고 하자. 이 tail data는 별도의 소스에서 압축된 형태또는 비압축된 형태 어떤것이라도 무방하다.
허프만 코드뒤에 0 또는 1로 시작하는 tail data를 붙여도 압축해제시 허프만 코드를 분리하루 있는데 이것이 가능한 이론적 배경은 허프만 코드는 prefix code 로서, 앞가지가 없는 부호다 따라서 기존 어떤 허프만 코드에 추가로 "0" 또는 "1" 이오더라도 다른 허프만 코드와 혼돈이 생기지 않는 특성이 있기 때문에 tail data를 그대로 붙여도 복호화에 지장이 없다. 실제로 표3의 허프만 부호중에 어떤 부호를 가져와서도 뒤에 "0" 또는 "1"을 추가한 데이터가 기존 허프만 부호와 중복되지 않음을 확인할수 있다. 예를들어, 표3의 "1000" 을 가져와서 "10001" 또는 "10000" 으로 만들어도 표3에서 동일한 부호가 존재하지 않음을 확인할 수 있다.

이제 압축해제 방법을 설명하겠다. 각 N 비트의 (압축바이너리클러스터)+(M개의 허프만 코드(table A or table B))+(tailing data) 를 해독해보면,
최상위로부터 최하위 방향으로 이동하며, "0"을 처음 만난뒤 비트값이 바뀌는 지점에서 압축바이너리 클러스터를 분리해내면,
00 이 된다. 이제 나머지 데이터에 있어서, M개의 허프만이 어떤 부호화 테이블을 썼는지를 확인해야하는데,
상기 설명한데로, table A 의 허프만 코드 및 table B의 허프만 코드로 각기 복호화를 해보고, 몇번째 까지 복호화가 잘 진행되는지를 확인해본다. 이 몇번째 값이 Ka, Kb 라고 하면, Ka < Kb 이면, table A 의 허프만 코드로 부호화한 것을 알수있고, Ka > Kb 이면 table B의 허프만 코드로 부호화했음을 알수있다.

Description

이진데이터의 압축 방법 및 장치{BINARY DATA COMPRESSION METHOD THEREOF}
정보이론
정보이론
발명을 실시하기 위한 구체적 내용에 상술
발명을 실시하기 위한 구체적 내용에 상술
발명을 실시하기 위한 구체적 내용에 상술
"10"으로 시작하는 또는 "10"으로 시작하는 것으로 압축 및 압축해제측에서 알수 있도록 논리적 또는 물리적 방법으로 약속한 경우의 이진데이터는
"10"을 만날때마다 분리가 가능하고 이를 바이너리 클러스터라고 한다.
예를들어, 아래와 같은 이진데이터에 있어서 바이너리 클러스터 단위로 구분하면
10010011011110001110111100010111100111
아래와 같다.
100/1001/10111/100011/10111/1000/10111/100111
이 바이너리 클러스터는 2개의 type으로 구분되는데
A type은 최상위 비트 "1" 및 이후 "0"으로만 이루어진 형태로서, 10, 100, 1000, 10000, ...과 같은 형태이며,
B type 은 그 외의 형태이다.
바이너리 클러스터는 1비트씩 압축이 가능한데
A type은 최상위 1비트를 없에서, 0, 00, 000, 0000, ...과 같이 압축하여 0 으로 끝나도록 하고
B type또한 최상위 1비트를 없엔뒤, 남은 비트를 비트 반전하여 0 으로 끝나도록 압축한다. 즉 10111 ==> 1000, 100111==> 11000, ...
물론 다른 형태로 존재하는데
A type은 최상위 1비트를 없엔뒤, 나머지를 비트반전하여, 1, 11, 111, 1111,.. 과 같이 1로 끝나도록 압축하고,
B type은 최상위 1비트만을 없에서, 역시 1로 끝나도록 압축하는 것이다.
한편, 상기 이진데이터와는 다른 데이터를 허프만 부호화로 압축한 데이터를 압축바이너리 클러스터에 결합시켜서 압축효과를 낼수 있는데 구체적으로는,
허프만 부호화할 심볼별 데이터를 일부 살펴보면 아래와 같다.
SYMBOL A 테이블
A 01
C 001
A 01
C 001
B 11
A 01
E 0001
A 01
A 01
E 0001
A 01
E 0001
F 1000
C 001
A 01
C 001
A 01
B 11
C 001
F 1000
I 10010
H 00001
D 101
A 01
E 0001
B 11
A 01
G 00000
... ...
아래와 같이 10개의 심볼 33180 개가 각기 오른쪽의 빈도수로 나타나는 데이터를 허프만 부호화로 압축하면,
원본데이터 빈도수
A 10100
B 5213
C 5026
D 2683
E 2575
F 2559
G 1318
H 1275
I 1256
J 1175
아래와 같이 각 심볼에 대하여 허프만 부호 테이블이 아래와 같이 생성되고 매칭된다.
심볼 허프만부호
A 01
B 11
C 001
D 101
E 0001
F 1000
G 00000
H 00001
I 10010
J 10011
이때 본 발명에서는 허프만 부호 테이블에서 허프만 부호를 모두 비트 반전한 형태로 구성된 추가 테이블을 한벌 더 고려하여 아래 표3과 같은 형태를 고려한다. 물론 표2와 같은 1개의 테이블만 있어도 허프만 A, B 두개를 상정할수 있으므로 물리적으로는 표3과 같은 테이블은 필요없고 개념적으로 생성할수 있으면 된다.
심볼 허프만부호A 테이블 허프만부호B 테이블(A테이블의 비트 반전형태)
A 01 10
B 11 00
C 001 110
D 101 010
E 0001 1110
F 1000 0111
G 00000 11111
H 00001 11110
I 10010 01101
J 10011 01100
이제 상기 압축바이너리 클러스터 각각에 하기 각 심볼별 허프만 부호화된 데이터를 결합시켜 보자
바이너리클러스터 압축바이너리클러스터
100 00
1001 110
10111 1000
100011 11100
10111 1000
1000 000
10111 1000
100111 11000
결합 방법은, 압축바이너리 클러스터는 항상 0으로 끝나는 방식으로 압축된 경우, 허프만 코드는 항시 1로 시작해야한다.
그런데 표3과 같은 경우에 보면 심볼 A에 대하여 table A 의 허프만 코드는 "01" 이므로, table A 의 허프만 코드를 결합시킬수 없고, 비트반전된 table B의 심볼A에 동일하게 대응하는 허프만 코드("10")를 결합시킨다. 즉 하기 표4의 첫번째 압축바이너리 클러스터와 결합시켜본다.
즉, 0010 으로 결합된다.
이제 이어서, M 개의 허프만 코드를 연속하여 결합시키기로 한다. 중요한점은 처음 허프만 코드가 table B의 코드이므로 나머지 M-1 개의 허프만 코드도 동일하게 심볼에 대응하는 table B의 허프만 코드를 결합시켜야 한다.
다만 이 약속은 어떠한 자연수이어도 관계없다. 예를들어, 인덱스 M 일경우 2*M, 3*M, 4*M,..개의 허프만 코드를 이어서 결합한다는 약속등 무한한 경우의 수로 약속할 수 있다. 단 인덱스 M 에 대응하여 허프만 코드의 몇개 결합할지는 그 수치가 클수록 확률적 검토를 통해 A table 또는 B table 의 어떠한 허프만 코드를 선택했는지를 명확하게 알수가 있다.
아래 예시를 보면,
table A 또는 B 테이블 각각의 허프만 코드 100 개(M=100) 를 연속하여 붙이고 2000 비트(N=2000) 로 만들기 위하여 별도의 소스로부터 tail data를 결합한뒤, 이 데이터를 table A 코드 table B 코드로 다시 decoding했을때 몇번째(Ka,Kb) 에서 제대로 decoding이 되지 않는지를 계산한 데이터결과이다. 아래 데이터를 보면 table B(HUFF_B로 코드화)로 부호화한 경우에 table A 로 디코딩을 했을때 Ka가 table B로 디코딩 했을때 Kb보다 통계적으로 유의하게(모두) 길어짐을 알수있다. 따라서 이러한 경우 table B(HUFF-B)로 디코딩해야함을 자동적으로 알수 있다. EH한 table A(HUFF_A로 코드화)한 경우에 반대로 HUFF-B로 디코딩했을 때 Kb 가 Ka 보다 커짐을 알수 있고 Ka < Kb 이면, Table A 로 복호화한다.
Figure pat00001
확장해보면, 압축바이너리클러스터(1개)+ M개 허프만 부호 + tail data 가 결합된 N비트의 데이터각각에 있어서 table A 로 부호화하면, table A 로 복호화할지, table B로 복호화 할지 결정함에 있어서, 위와 같이 decoding 불가능 지점을 확인해보고 더 짧은 불가능 지점을 나타내는 복호화 table을 선택하여 허프만 부호를 선택하면 된다. 이것이 본 발명의 핵심적인 사안이다.
한편 상기와 같이 일단 몇개를 결합시켜야 하는지에 따라, 각 압축바이너리 클러스터에 결합하는 첫번째 허프만 부호코드가 비트반전된 형태로 결합되는 경우(즉 table B의 호프만 코드) 나머지 허프만 부호 코드들도 모두 비트반전한 형태로 결합시킨다.(즉 표3의 table B 형태의 결합) 반대로 첫번째 허프만 부호 코드가 그대로 결합되는 경우 나머지 허프만 부호코드들도 그형태 그대로 결합시킨다.(즉 표3의 table A 형태 결합)
이제 각 압축바이너리클러스터에 M개의 동일테이블의 허프만 부호를 결합시킨 데이터를 N비트 고정데이터로 만들기 위해 [N 비트 - 결합데이터비트의 길이] 크기 만큼을 별도의 데이터 소스에서 데이터를 가져와서 결합시킨다. 이를 tail data라고 하자. 이 tail data는 별도의 소스에서 압축된 형태또는 비압축된 형태 어떤것이라도 무방하다.
허프만 코드뒤에 0 또는 1로 시작하는 tail data를 붙여도 압축해제시 허프만 코드를 분리하루 있는데 이것이 가능한 이론적 배경은 허프만 코드는 prefix code 로서, 앞가지가 없는 부호다 따라서 기존 어떤 허프만 코드에 추가로 "0" 또는 "1" 이오더라도 다른 허프만 코드와 혼돈이 생기지 않는 특성이 있기 때문에 tail data를 그대로 붙여도 복호화에 지장이 없다. 실제로 표3의 허프만 부호중에 어떤 부호를 가져와서도 뒤에 "0" 또는 "1"을 추가한 데이터가 기존 허프만 부호와 중복되지 않음을 확인할수 있다. 예를들어, 표3의 "1000" 을 가져와서 "10001" 또는 "10000" 으로 만들어도 표3에서 동일한 부호가 존재하지 않음을 확인할 수 있다.
이제 압축해제 방법을 설명하겠다. 각 N 비트의 (압축바이너리클러스터)+(M개의 허프만 코드(table A or table B))+(tailing data) 를 해독해보면,
최상위로부터 최하위 방향으로 이동하며, "0"을 처음 만난뒤 비트값이 바뀌는 지점에서 압축바이너리 클러스터를 분리해내면,
00 이 된다. 이제 나머지 데이터에 있어서, M개의 허프만이 어떤 부호화 테이블을 썼는지를 확인해야하는데,
상기 설명한데로, table A 의 허프만 코드 및 table B의 허프만 코드로 각기 복호화를 해보고, 몇번째 까지 복호화가 잘 진행되는지를 확인해본다. 이 몇번째 값이 Ka, Kb 라고 하면, Ka < Kb 이면, table A 의 허프만 코드로 부호화한 것을 알수있고, Ka > Kb 이면 table B의 허프만 코드로 부호화했음을 알수있다.

Claims (1)

  1. 국내우선권주장 및 국제우선권주장의 선출원으로서 별도의 청구범위를 기재하지 아니함.
KR1020190090558A 2019-07-25 2019-07-25 이진데이터의 압축 방법 및 장치 KR20210012580A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190090558A KR20210012580A (ko) 2019-07-25 2019-07-25 이진데이터의 압축 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190090558A KR20210012580A (ko) 2019-07-25 2019-07-25 이진데이터의 압축 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20210012580A true KR20210012580A (ko) 2021-02-03

Family

ID=74571996

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190090558A KR20210012580A (ko) 2019-07-25 2019-07-25 이진데이터의 압축 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20210012580A (ko)

Similar Documents

Publication Publication Date Title
WO2019153700A1 (zh) 编解码方法、装置及编解码设备
EP2214315A1 (en) Method and device for encoding a bit sequence
KR101610609B1 (ko) 데이터 인코더, 데이터 디코더 및 방법
JP2016512004A5 (ko)
US11115049B1 (en) Hardware friendly data decompression
CN114520659A (zh) 结合rANS和LZ4编码的数据无损压缩、解码方法
US10116328B2 (en) Encoders, decoders and methods utilizing mode symbols
KR101023536B1 (ko) 데이터 무손실 압축 방법
JP5472610B2 (ja) 数値データ列の符号化/復号化の方法および装置
Rathore et al. A brief study of data compression algorithms
KR20210012580A (ko) 이진데이터의 압축 방법 및 장치
CN113346913B (zh) 使用减量的出现次数的数据压缩
JP4309344B2 (ja) 送信ノイズに関連したデジタルデータ圧縮ロバスト
Tank Implementation of Lempel-ZIV algorithm for lossless compression using VHDL
US6762700B2 (en) NEO method and system for lossless compression and decompression
CN114614832A (zh) 基于前后游程长度编码的测试数据压缩及解压方法
JP5626440B2 (ja) 数値データ列の符号化/復号化の方法および装置
US20080001790A1 (en) Method and system for enhancing data compression
Wu et al. Error-resilient LZW data compression
Rani et al. A survey on lossless text data compression techniques
CN113315523B (zh) 硬件友好的数据解压缩
KR101760070B1 (ko) 데이터 부호화 및 복호화 방법과 장치
KR100686354B1 (ko) 가변 트리를 이용한 허프만 복호화 방법 및 장치
CN112738124B (zh) 硬件友好的数据压缩方法、压缩器
KR20210012842A (ko) 이진데이터의 압축방법 및 그 장치