KR20160126505A - 에러에 강한 dna polymerase like binary compresser frame을 이용한 실시간 이진데이터 압축전송, 압축해제 방법 및 장치 - Google Patents

에러에 강한 dna polymerase like binary compresser frame을 이용한 실시간 이진데이터 압축전송, 압축해제 방법 및 장치 Download PDF

Info

Publication number
KR20160126505A
KR20160126505A KR1020150057618A KR20150057618A KR20160126505A KR 20160126505 A KR20160126505 A KR 20160126505A KR 1020150057618 A KR1020150057618 A KR 1020150057618A KR 20150057618 A KR20150057618 A KR 20150057618A KR 20160126505 A KR20160126505 A KR 20160126505A
Authority
KR
South Korea
Prior art keywords
universal code
cluster
major
universal
frame
Prior art date
Application number
KR1020150057618A
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 KR1020150057618A priority Critical patent/KR20160126505A/ko
Publication of KR20160126505A publication Critical patent/KR20160126505A/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

Landscapes

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

Abstract

본 발명은 임의의 이진데이터에 대하여 CH 및 CT를 부가하여 "11"으로 반드시 시작하고, "11"로 끝나도록 만든다음, MAJOR type 클러스터와 MINOR type클러스터들만으로 구성되도록 스트리밍 데이터를 구분한뒤에, FRAME을 이동하면서, 유니버설 코드의 형태로 압축을 하되, 동일한 길이를 encoding하는 2개의 유니버설 코드가운데, MAJOR type-MAJOR type사이에 MINOR type 클러스터가 삽입된 형태의 경우, 두번째 유니버설 코드를 선택하고 그렇지 않은 경우 첫번째 유니버설 코드를 선택하게 함으로써 복호화장치가 원본데이터의 데이터 구성형태를 자동적으로 인식할 수 있도록 하였고, MAJOR type사이에 MINOR type 클러스터가 존재할 경우, 다음 유니버설 코드를 한개 더 해당하는 길이에 대응하는 코드로 변환하여 출력한다음 복호화기가 MAJOR type사이에 MINOR type클러스터가 존재했다는것을 알경우, 추가로 유니버설 코드를 읽어들여서 정확하게 복호화할 수 있도록 하였다.
본 발명을 이용하여, 이진스트리밍 데이터에 있어서, 별도의 사전정보가 필요없이 간단한 연산을 통해 매우 효과적으로 실시간 압축 및 실시간 압축해제가 가능하여 다양한 멀티미디어 데이터의 전송을 획기적으로 효율화 시킬 수 있다.

Description

에러에 강한 DNA POLYMERASE LIKE BINARY COMPRESSER FRAME을 이용한 실시간 이진데이터 압축전송, 압축해제 방법 및 장치{ERROR-PROOF REAL TIME BINARY DATA COMPRESS AND TRANSFER METHOD AND APPRATUS THEREOF LIKE DNA POLYMERASE}
데이터 압축전송
유니버설 코드, 이진데이터 압축전송, 실시간 데이터 전송
발명을 실시하기 위한 구체적인 내용에 상술
발명을 실시하기 위한 구체적인 내용에 상술
발명을 실시하기 위한 구체적인 내용에 상술
임의의 이진데이터 스트리밍에 있어서, 최상위 비트 앞에 "11"을 강제적으로 추가하고 이를 compulsory header(이하 CH) 라고 본 발명에서 부르기로 한다.
또한 최하위 비트 다음에 "11"을 강제적으로 추가하여 이를 compulsory tail(이하 CT)라고 본 발명에서 부르기로 한다.
임의의 이진스트리밍데이터에서 CH를 부가하면, 임의의이진스트리밍 데이터는 반드시 "11"로 시작하게 된다.
CH는 무수히 많은 종류가 존재할 수 있으나, "11"로 이진수를 시작하도록 만드는 것이라면 어떤것이든 무방하다. 본 발명의 실시례에서는 압축의 효율성을 위하여 가장 짧은 길이의 "11"을 CT 및 CH로 부가하는 실시례로 설명하고자 한다.
CH 및 CT를 부가한 임의의 이진스트리밍 데이터의 일 실시례로 아래와 같은 데이터가 있다고 하면, 이 데이터를 실시간 압축전송하는 방법에 대해 설명하고자 한다.
1100100000001111110100001110100001100000001011011
가장 먼저 전송되는 최상위 비트로부터 최하위 비트 방향으로 상기 이진데이터를 스캔하면서, 비트 값의 변화가 생길때마다 이진수 덩어리를 분리하면 아래와 같고, 각 이진수 덩어리들을 클러스터라고 명명하기로 하자.
11 / 00 / 1 / 0000000 /111111 /0/1/0000/111/0/1/0000/11/0000000/1/0/11/0/11
다른 몇가지 예를 참고로 더 들면, 아래와 같다.
10011110111011 이라면 1/00/1111/0/111/0/11
10000010001001 이면, 1/00000/1/000/1/00/1
10011000110 이면, 1/00/11/000/11/0
이렇게 전송 스트리밍을 순차적으로 클러스터로 변환한다음, 클러스터 길이가 2이상인 클러스터들에 대해서 압축변환방법은 본 발명 고유의 유니버설 코드로 변환하는 방법으로 압축되게 된다. 그리고 클러스터 길이가 1인 클러스터들에 대한 압축방법은 후술하기로 한다.
먼저 표1에 본 발명의 유니버설 코드를 순차적으로 생성한 결과를 보인다.
본 유니버설 코드는 일종의 군수열의 연속적인 형태인데,
"10"으로 시작하여, "100", "1000", "10000","100000", ... 등과 같이, "1" + N개의 "0"으로 구성된 이진수가 각 N군의 첫번째 유니버설 코드이며, 각 N군에 있어서, 각 N군내에는, "1" + N개의 "0"으로 구성된 이진수 외도 추가로 N-1개의 유니버설 코드의 집합으로 구성되는데, 생성방법은 각각 "1"+N개의 "0"으로 구성된 이진수에 있어서, 최하위 비트부터 차례대로 "1"을 채워가면서 1개씩 유니버설 코드를 각각 생성하여, N-1개가 생성될때까지 생성되는 유니버설 코드 각각이 순차적으로 N군의 유니버설 코드의 집합의 원소가 된다.
순번 유니버설코드
1 10 1
2 100 2
3 101 2
4 1000 3
5 1001 3
6 1011 3
7 10000 4
8 10001 4
9 10011 4
10 10111 4
11 100000 5
12 100001 5
13 100011 5
14 100111 5
15 101111 5
16 1000000 6
17 1000001 6
18 1000011 6
19 1000111 6
20 1001111 6
21 1011111 6
22 10000000 7
23 10000001 7
24 10000011 7
25 10000111 7
26 10001111 7
27 10011111 7
28 10111111 7
29 100000000 8
예를들어, 제 5군의 경우에 N=5이므로, 1개의 "1" 에 이어서, 5개의 "0"으로 이루어진 "100000" 이 제5군의 첫번째 유니버설 코드이며, 이어서, N-1개(=5-1=4개)의 유니버설 코드가 추가로 이 군에 속하는데, 차례대로 정리하면,
"100000" 에 있어서, 최하위 비트에서부터 차례대로 "1"을 채워나가면서 4개의 유니버설 코드를 생성하면 된다.
즉 "100001", "100011", "100111", "101111" 이다.
따라서 제 5군의 경우에는 상기 표1에서 보듯이,
"100000", "100001", "100011", "100111", "101111" 이렇게 5개의 유니버설 코드가 순차적으로 생성되게 된다.
한편, 제1군의 경우, N=1 이므로, 1개의 "1"에 이어서 1개의 "0"으로 이루어진 "10" 이 제1군의 첫번째 유니버설 코드이고, 이어서 N-1개의 유니버설 코드를 추가하는데, N-1은 1군의 경우 0 이므로, 1군의 경우에는, "10"만이 1군에 속하는 유니버설 코드가 된다.
상기 표1을 무한히 확장하면서, 유일복호성이 있는 유니버설 코드를 생성할 수 있다.
한편 특정한 순번 M 이 표1에서 어떤 유니버설 코드로 매핑될지에 대한 빠른 계산을 위해서 다음과 같은 연산을 수행할 수 있다.
첫번째로,특정 순번 M 이 제 몇군에 속할지를 계산해야 하는데,
K 군에 속한다고 한다면, 아래와 같은 부등식을 만족시키게 된다.
즉, 1 군부터 K-1군까지 각각 1,2,3,...K-1개의 원소들이 있는데, 특정순번이 K군에 속하기 위해서는 이 원소들의 갯수의 합보다는 크고, K군까지의 원소들의 갯수의 합이하여야만 하기 때문이다.
1+2+3+4+.....+(K-1) < M <= 1+2+3+4+....+(K-1)+K ---- (수식1)
상기 수식1 은 부등식으로서 특정 M 에대하여 2개의 부등식을 동시에 만족시키는 K의 범위를 계산하기 위해서, 아래와 같이 두개의 부등식으로 분리한뒤,
1+2+3+4+.....+(K-1) < M ----(수식2)
M <= 1+2+3+4+....+(K-1)+K ----(수식3)
(수식2)의 경우, 1+2+3+4+...(K-1) 의 경우 d=1 인, 등차수열이므로, 아래와 같이 표현가능하고,
Figure pat00001

(수식3)의 경우에는, 1+2+3+4+....+(K-1)+K 역시 d=1인 등차수열이므로, 아래와 같이 표현이 가능하다.
Figure pat00002

(수식2)와 (수식3)을 연립하면 2차 연립부등식이 되므로, 특정 M에 대한 두 수식의 범위를 만족하는 K 의 범위가 M이 변수인 형태로 계산된다.
(수식2)의 경우에 상기 부등식을 이어서 풀어보면,
K2-K < 2M <==> K2-K-2M < 0
이고 근의 공식에 따라, 인수분해하면, 아래와 같다.
Figure pat00003
이제, 상기 부등식을 풀면, 아래 수식4와 같다.
(수식4)
Figure pat00004

한편 (수식3)의 경우에
2M <= K2 + K 로 변형된뒤, K2+K-2M >=0 으로 변형된후,
역시 근의 공식을 이용하여 인수분해하면, 아래와 같고,
Figure pat00005
이 부등식을 풀면, 아래와 같고, 아래를 (수식5)라고 하자
Figure pat00006

상기 특정 M에 대하여 상기 (수식 4) 및 (수식 5)를 동시에 만족시키는 자연수인 K를 특정할 수 있게 되면, 특정 M에 대해서 K군에 속함을 알수 있다.
특정 K군에 속하는 것을 알게되면, 몇번째 원소의 유니버설 코드임을 정해야 하는데, 바로 K-1군까지의 모든 원소의 합(=1+2+3+4+...K-1) 인
Figure pat00007
과 M 의 차이가 특정 M의 K군에서의 몇번째 원소가 M에 대응될지를 결정해주게 된다.
제 K 군 X번째 원소에 대응하는지를 알기 위한 X는 아래와 같이 계산되고,
Figure pat00008
구체적인 대응되는 유니버설코드를 생성하기 위해서,
"1"로 시작하고 M 개의 이진수를 생성한뒤, 최하위 비트로부터 X-1비트 를 "1"로 채운 이진수가 바로 M 순번에 대응하는 최종적인 유니버설 코드다.
한가지 예를들면, M=400이라고 할때, 제400순번에 대응되는 유니버설 코드를 찾아보도록 하자. M=400이 제 몇군에 속하는지를 우선 계산하려면, 상기 수식4, 수식5에 따른 K의 범위를 통해서 자연수 K를 특정해야한다.
M=400일때,
수식4에 따르면, K의 범위는 소수점 이하 넷째자리에서 버리면, 아래와 같다. -27.7887 < K < 28.7886, 이때 K가 자연수이므로, K는 1부터 28까지의 자연수이다.
한편, 수식5에 따르면, K<=-28.7887 or K >= 27.7886 이다
K가 자연수이므로, K는 28이상의 자연수이다.
수식4와 수식5를 동시에 만족시키는 K의 값은 28이다. 즉 M=400 순번은 28군에 속하게 됨을 알수있다.
이제 제 28군의 몇번째의 원소에 속하는 유니버설 코드를 매핑할지를 결정하면 되는데, K가 정해졌으므로, 1부터 K-1까지의 각 군의 원소의 갯수의 합과 M의 차이에 해당하는 값이 바로 몇번째 원소를 취할지를 알려준다.
1+2+3+....+(28-1) = 378 이고, M=400 이므로 그 차이는 22 이다.
즉 28군의 22번째 원소에 속하는 유니버설 코드를 매핑하면 되는데,
28군의 첫번째 원소는 "1" 로 시작해서, 28개의 "0" 이 이어진 이진수
"10000000000000000000000000000" 인데, 22번째 원소는 최하위 비트에서 부터 "1"을 21번 순차적으로 채워진 이진수인 아래의 유니버설 코드를 할당할 수 있음을 알 수 있다.
10000000111111111111111111111
이때, 28군의 첫번째 원소는 "1" 로 시작해서, 28개의 "0" 이 이어진 이진수
"10000000000000000000000000000" 가 있기 때문에, 21번째 "1"을 채워놓은 이진수가 바로 22번째 유니버설 코드가 됨을 주의하자.
또 다른 예로서 M=1000일 경우에는,
(수식4)에 따라, -44.22 < K < 45.22 이고, (수식5)에 따라 K >=44.22 또는 K <=-45.22 인데 K는 자연수이므로, 이를 만족하는 K=45로 특정된다.
따라서 M=1000은 제 45군에 속하고,
제45군의 몇번째 원소에 속하는지를 특정하기 위한
X = 1000 - (1+2+3+4+...+44) = 1000- 990 = 10 이다.
즉 10번째 원소이다.
제 45군은, 1개의 "1"에 이어 45개의 "0"으로 구성된 이진수를 첫번째 유니버설 코드로 하므로, 10번째 원소는, 이 이진수에서, 하위 9개비트를 "1"로 채운 유니버설 코드이다.
따라서, 아래와 같은 유니버설 코드가 제 1000번째 순번의 유니버설 코드임을 계산해 낼수 있다.
1000000000000000000000000000000000000111111111
아래 표2는 이와 같은 본 발명의 유니버설 코드 순번별 매핑되는 유니버설 코드 및 군번호, 군내의 원소번호를 계산한 결과값을 보인다.
순번 유니버설코드 길이 제K군 제X번째
1 10 2 1 1
2 100 3 2 1
3 101 3 2 2
4 1000 4 3 1
5 1001 4 3 2
6 1011 4 3 3
7 10000 5 4 1
8 10001 5 4 2
9 10011 5 4 3
10 10111 5 4 4
11 100000 6 5 1
12 100001 6 5 2
13 100011 6 5 3
14 100111 6 5 4
15 101111 6 5 5
16 1000000 7 6 1
17 1000001 7 6 2
18 1000011 7 6 3
19 1000111 7 6 4
20 1001111 7 6 5
21 1011111 7 6 6
22 10000000 8 7 1
23 10000001 8 7 2
24 10000011 8 7 3
25 10000111 8 7 4
26 10001111 8 7 5
27 10011111 8 7 6
28 10111111 8 7 7
29 100000000 9 8 1
30 100000001 9 8 2
31 100000011 9 8 3
32 100000111 9 8 4
33 100001111 9 8 5
34 100011111 9 8 6
35 100111111 9 8 7
36 101111111 9 8 8
한편 유니버설 코드로부터 순번을 복원하는 방법은 아래와 같다.
예를들어, 1000000000000000000000000000000000000111111111 와 같이, 46비트의 유니버설 코드라면, "1" + 45개의 연속된 "0" 이 속하는 군이므로, 제 45군에 속하는 것을 알수있고, 최하위 비트로부터 연속된 "1"이 9개가 존재하므로, 10번째 원소에 해당하는 유니버설 코드임을 알수있다. 따라서, 제45군의 10번째 원소이며 이에 대응하는 순번은, 제44군까지의 모든 원소의 갯수의 합인 1+2+3+...+44 = 990개에다가, 제45군에서의 10번째원소이므로 990+10=1000 번째 원소임을 알수있고, 따라서 순번은 1000 으로 복원이 된다.
상기의 예시를 토대로 유니버설 코드로부터 순번을 추출하는 공식을 일반화 하면 아래와 같다.
Figure pat00009

특히 이와 같은 유니버설 코드 형태로 전송하면, 전송에러가 전파되지 않고, 특정 클러스터 단위에서만 영향을 미치기 때문에 에러에 강한 코드가 된다.
예를들어, 특정 순번 5개를 아래와 같은 유니버설 코드로 변환되어 보낸다면,
1001 10 10001111 100000 1001
만약에 전송 도중에 하위 6번째 비트가 "1"로 변경된 경우 아래와 같다면, 적어도 나머지 4개의 순번의 정보(1001, 10, 10001111, 1001)는 온전히 전송이 가능하다. 만약에 허프만 코드등으로 전송된경우라면, 1비트의 변경, 부가,치환삭제의 경우, 이후 코드들의 번역 FRAME이 모두 1비트씩 밀려버리기 때문에, 모든 정보가 잘못된 형태로 전송될 수 있는데, 본 유니버설 코드로 전송할 경우 그와 같은 우려는 최소화될 수 있다.
1001 10 10001111 100010 1001 의 경우 아래와 같이 전송받음으로써 전송시 reading frame이 밀려버림으로써 발생하는 최악의 오류는 피할 수 있다.
1001 10 10001111 1000 / 10 1001
한편, 만약 6번비트의 "0"이 아래와 같이 손실된 경우라 해도
1001 10 10001111 1000 0 1001 은 다음과 같이 수신될 것이다.
1001 10 10001111 10000 1001
따라서, 4개의 정보는 온전히 전송이 되며, "100000"을 "10000" 으로 전송받는다 할지라도 특정한 조건에서는, 그 손실의 영향이 크지 않을수 있다.
이제 유니버설 코드에 대한 설명은 마치고, 본 발명의 압축방법에 대해서 보다 상세하게 설명하고자 한다.
CH가 부가된 이진스트리밍 데이터에 있어서,
11/00/1/0000000/111111/0/1/0000/111/0/1/0000/11/0000000/1/0/11/0
길이가 2이상인 클러스터를 본발명에서는 MAJOR CLUSTER라고 명명하기로 한다면, 이 MAJOR CLUSTER에 대하여 먼저 유니버설 코드로 압축을 시행하는데,
이러한 클러스터는 길이가 2,3,4,5,6,7,... 과 같이 분포하고 있음을 알수있다. 한편, 길이가 1인 클러스터들을 본 발명에서는 MINOR CLUSTER라고 명명하기로 한다.
한편, MAJOR - MAJOR 클러스터 형태로 MAJOR 클러스터가 이어져서 연속하는 경우도 있고,
MAJOR-MINOR-MAJOR 클러스터와 같이 MAJOR 클러스터 사이에 MINOR 클러스터가 삽입(INSERTION)된 경우가 있다.
순차적으로 두개의 MAJOR 씩을 압축을 시행하는데, 표1의 유니버설코드의 순번정보는 MAJOR 클러스터의 길이(비트수) 정보로 매핑하여 아래 표3 같이 변형하여 활용하기로 한다. 아래 표3을 보면 알수 있듯이, MAJOR 클러스터 길이가 동일한데 각 길이마다 각각 2개의 유니버설 코드가 할당되어 있음을 알수있다.
즉, "10", "100" 에 2가 "101", "1000" 에 3이, "1001", "1011" 에 4,...이러한 형태이다. 표3으로부터 도출되는 이러한 규칙을 표4에 정리하였다.
MAJOR클러스터 길이 순번 유니버설코드 길이 제K군 제X번째
2 1 10 2 1 1
2 2 100 3 2 1
3 3 101 3 2 2
3 4 1000 4 3 1
4 5 1001 4 3 2
4 6 1011 4 3 3
5 7 10000 5 4 1
5 8 10001 5 4 2
6 9 10011 5 4 3
6 10 10111 5 4 4
7 11 100000 6 5 1
7 12 100001 6 5 2
8 13 100011 6 5 3
8 14 100111 6 5 4
9 15 101111 6 5 5
9 16 1000000 7 6 1
10 17 1000001 7 6 2
10 18 1000011 7 6 3
11 19 1000111 7 6 4
11 20 1001111 7 6 5
12 21 1011111 7 6 6
12 22 10000000 8 7 1
13 23 10000001 8 7 2
13 24 10000011 8 7 3
14 25 10000111 8 7 4
14 26 10001111 8 7 5
15 27 10011111 8 7 6
15 28 10111111 8 7 7
이부분은 본 발명의 가장 핵심적인 부분인데,
예를들어,
길이가 2 인 MAJOR TYPE 클러스터가 11 / 00 과 같이 존재할 경우와,
11 / (0/1/0/1) / 00 과 같이 MAJOR 클러스터 사이에 MINOR CLUSTER 가 4개 삽입되어 있는 경우를 구분하기 위해서,
첫번째 길이가 2인 MAJOR TYPE일 경우에는, 상기 표3의 유니버설 코드에서 동일한 길이에 대해서 두짝의 MAJOR 클러스터에 대해 매핑할 수 있는 유니버설 코드중에 순번이 앞(즉 두개의 짝중에 첫번째 순번)에 있는 유니버설 코드를 찾아서 매핑하고, 두번째 길이가 2인 MAJOR TYPE클러스터의 경우에 만약에 MINOR TYPE클러스터가 삽입되지 않는 경우라면, 역시 짝중에 첫번째 순번의 유니버설 코드를 매핑하고, 반대의 경우 즉 MINOR 클러스터가 존재하는 경우라면, 짝중에 두번째 순번의 유니버설 코드를 매핑하는 것이다.
11 / 00 의 경우에, 상기표3및 상술한 바대로,
"1010"으로만 압축되면 되고,
11 / 010 / 10 의 경우에는, "10100" 으로 매핑하고, "010"의 경우에는 MINOR 클러스터의 갯수가 3이어서, 길이는 3비트 이므로 표3에 따라 순번 3에 따라 "101"을 바로 다음에 붙여서,
"10100101" 과 같이 압축하게 된다.
물론 본 실시례에서는 MAJOR TYPE이 길이가 짧은 경우이고 MINOR TYPE도 뭉쳐진 갯수가 짧은 경우이나, 통상 일반적인 데이터의 경우, 수백~수천비트의 MAJOR TYPE 또는 수천개의 연속된 MINOR TYPE이 존재할 수 있기 때문에 데이터의 압축은 실제로 나타나게 된다. 즉 MAJOR type 클러스터들 사이에 MINOR type클러스터가 존재한다면, 두번째의 MAJOR type클러스터에 대해서는, 선택가능한 유니버설코드 pair중에 두번째 코드를 선택하는 것이고, MINOR type 클러스터가 존재하지 않는다면 pair중에 첫번째 코드를 선택하면 된다.
MAJOR type 클러스터길이 유니버설코드pair
2 {10,100}
3 {101,1000}
4 {1001,1011}
5 {10000,10001}
6 {10011,10111}
7 {100000,100001}
8 {100011,100111}
9 {101111,1000000}
10 {1000001,1000011}
11 {1000111,1001111}
12 {1011111,10000000}
13 {10000001,10000011}
14 {10000111,10001111}
15 {10011111,10111111}
16 {100000000,100000001}
17 {100000011,100000111}
18 {100001111,100011111}
19 {100111111,101111111}
20 {1000000000,1000000001}
이와 같은 과정을 보다 자세히 살펴보자. 아래와 같은 데이터가 있다고 한다면, MAJOR CLUSTER인 2비트의 "11" 과 3비트의 "000"사이에 길이가 1비트인 MINOR CLUSTER들이 끼어있지 않은 형태이다. FRAME은 순차적으로 MAJOR 클러스터를 2개씩 선택하는 너비이며, 압축한뒤에는 현재 FRAME의 두번째 MAJOR 클러스터가 다음 FRAME 의 첫번째 MAJOR 클러스터의 위치가 되도록 이동한다.
Figure pat00010
FRAME-1 에서의 압축방법을 살펴보면, 먼저 두개의 MAJOR 클러스터에 대해서 유니버설 코드로 압축하되, 표4에 따라 첫번째 "11"은 2비트에 대응하는 유니버설 코드 pair중에 비트수를 덜 차지하는 첫번째 원소를 선택하여, "10"으로 코딩하고, 다음 "000"에 대해서는, 중간에 1비트짜리의 MINOR 클러스터가 1개도 존재하지 않으므로, 3비트에 대응하는 유니버설 코드 pair중에 첫번째 원소를 선택하면, "101"을 선택하게 된다.
따라서, 먼저, 두개의 MAJOR 클러스터 압축결과인 "10" 과 "101"을 연속하여 압축데이터로 생성하여 하면 최종적으로 "11000" 은, "10101" 으로 저장된다. 물론 본 실시례에서는, 길이가 짧은 클러스터들에 대한 압축코드를 예시로 보이므로 압축효과가 보이지 않으나 길이가 긴 클러스터들이 존재하는 일반적인 문서나 멀티미디어 데이터들에 있어서는 압축효과가 크게 나타남은 물론이다.
본 발명의 방법을 적용하면 실시간 압축전송 및 수신뒤 실시간 압축해제가가능한데, 예를들어, 상기의 예시에서, MAJOR type - MAJOR type클러스터의 경우 하나의 묶음으로 읽어서, "11 / 000"을 "10 / 101" 으로 압축하여 전송하면, 수신부에서는 먼저 2개의 유니버설 코드를 통해 MAJOR type 클러스터 2개를 복구한다. 복호화부에서도 표3 및 표4를 동적으로 또는 연산으로 생성가능하고, 표4에 따라, 2개의 MAJOR type클러스터를 복호화하면, "10"은 길이 2를 나타내는 pair중에 첫번째이므로, 2비트의 MAJOR 클러스터로 복호화하는데, CH가 "11"이므로, 가장 처음 복호화되는 MAJOR 클러스터는 "1"로만 이루어진 MAJOR 클러스터로 복호화한다. 따라서 "11"으로 복호화하고,다음으로 "101"은 길이 3을 나타내는 pair인데 첫번째이므로, 3비트의 MAJOR TYPE 클러스터로 복호화하는데 이때, 직전 복호화된 MAJOR 또는 MINOR TYPE 클러스터가 "1"로만 이루어진 경우에는 "0"으로만 이루어진 이진수로 복호화하고, "0"으로만 이루어진 경우에는 "1"로만 이루어진 이진수로 복호화를 한다. 본 실시례에서는 직전에 "11"로 이루어진 MAJOR TYPE 클러스터가 복호화되었으므로, "0"으로만 이루어진 3비트인 "000"으로 복호화하되,
같은 3을 나타내기 위해서 첫번째 페어를 썼으므로, MAJOR type클러스터와 MAJOR type클러스터 사이에 MINOR type클러스터가 1개도 존재하지 않는다는 것을 복호화장치에서 알게되고, 따라서 복호화장치에서, 추가로 유니버설 코드 하나를 더 읽어들이지 않고, 곧바로 FRAME-1 에서의 압축데이터에 대한 복호화 과정을 종료하여, "11000을 완벽하게 실시간으로 복호화할 수 있다.
이제 다시 압축단계를 더 살펴보기 위해서, 상기 그림에서 다음 단계로 진행하면, 아래와 같다. 직전 프레임의 두번째 MAJOR type 클러스터가 다음 프레임의 첫번째 MAJOR type 클러스터가 되도록 프레임은 이동하고, 각 프레임은 두개의 MAJOR type 클러스터를 포함하면 아래 그림과 같다.
FRAME 2에서, 3비트의 "000"은 이미 FRAME 1에서 encoding되었으므로, 코딩은 필요치 않고, 4비트의 "1111"의 경우에, FRAME 2가 MAJOR type- MAJOR type의 클러스터에 머물고 있으므로, 표4에 따라 길이가 4일때 선택가능한 pair중에 첫번째 유니버설코드인 "1001"을 선택하여, 중간에 MINOR type클러스터가 끼어있지 않음을 복호화기에 알릴 수 있다.
Figure pat00011

따라서 FRAME 2에서, 1개의 유니버설 코드인 "1001" 생성하여 frame 1의 결과의 뒤에 이어붙여서 전송된다. 물론 이때 "/" 는 실제데이터가 아니라 이해를 돕기위한 개념적 표시임은 물론이다.
따라서 프레임 1, 2 를 거치면서, 원본데이터 110001111 은,
"10 / 101 / 1001 " 으로 변환되어 전송되게 된다.
다음으로 프레임 3을 살펴보면, 아래와 같다.
FRAME은 MAJOR type 클러스터 두개를 포함하면 되고, 직전 프레임의 두번째MAJOR type 클러스터가 현재 프레임의 첫번째 MAJOR type 클러스터가 되도록 위치를 이동하면서 적용되게 되므로, frame 3처럼 MAJOR type 클러스터 중간에 MINOR type클러스터가 존재하는 경우가 존재하는 경우가 생길 수가 있다.
frame내의 첫번째 MAJOR type클러스터는 이미 직전 frame내에서 encoding되었으므로, 코딩은 필요치 않고 두번째 MAJOR type클러스터의 경우 MAJOR type-MINOR type-MAJOR type 일 경우에는, 두가지 선택가능한 유니버설코드의 pair중에 두번째 원소를 선택함으로서, 복호화기에 단순히 MAJOR type-MINOR type-MAJOR type 클러스터가 배치되어 있었음을 알릴수가 있다.
Figure pat00012
두번째 MAJOR type cluster에 대하여 encoding을 시행한뒤, 중간에 끼어있는 1개의 MINOR type cluster에 대해서 encoding은 아래 그림과 같다. MINOR type cluster가 1개가 존재하므로, 표3에서 순번1에 대응하는 "10"으로 encoding하되, 두번째 Major type cluster의 압축결과 뒤에 붙인다.
Figure pat00013

따라서 FRAME 3에서의 압축결과는 "10010" 이 된다.
따라서 프레임 1, 2, 3 를 거치면서, 원본데이터 110001111 은,
"10 / 101 / 1001 / 100 / 10 " 으로 변환되어 전송되게 된다.
이로서, 전체적인 실시간 압축및 전송이 마쳐진다.
물론 본 실시례의 예시는 MAJOR 클러스터의 길이가 짧고, MINOR의 클러스터들의 갯수도 1개에 불과하기 때문에 압축효과가 나타나지 않았음을 감안해야 한다.
예를들어, 상기 FRAME-3에서,
1111010101010101010101011 이라면,
두개의 MAJOR type CLUSTER ("1111", "11") 사이에
19 개의 MINOR TYPE cluster "0101010101010101010" 가 끼어있는 아래의 형태이고,
1111 / (0101010101010101010) / 11 과 같고,
첫번째 MAJOR 클러스터의 경우 직전 frame에서 encoding되었으므로, 두번째 MAJOR 클러스터는 2비트이므로, { "10", "100" } 이 선택가능한데 중간에 MINOR type 클러스터가 포함되어 있으므로, 두번째 원소 "100"을 선택하여 encoding하고, 이어서, 19개의 MINOR type cluster에 대응하여, 표3의 순번 19에 대응하는, "1000111" 로 encoding함으로써, 19비트가 7비트로 압축됨을 알수 있다.
이 데이터를 복호화기가 받아서 압축해제하는 과정을 아래에 보인다.
본 발명에서 제시된 유니버설 코드를 읽어들이는 방법은,
최상위 비트로부터 최하위 비트방향으로 이동하면서, "10"을 처음만날때마다 이진데이터를 분리할 수 있고, 각 분리되는 코드들이 유니버설 코드 1개에 대응한다.
즉 예를들어,
"1001110101011" 과 같다면,
10011 / 10 / 10 / 1011 의 4개의 유니버설 코드로 분리가 된다.
한편, DECODING FRAME은 기본적으로 유니버설 코드형태로 표현되는 압축데이터에 있어서, 2개의 유니버설 코드단위로 읽어들이고, 1개씩 다음 유니버설 코드로 이동하게 된다.한편 2개의 유니버설 코드의 해석결과 MINOR type cluster가 중간에 끼어있는 경우로 판단될 경우에는, 복호화기에서 특별하게 다음 유니버설 코드를 추가로 읽어들이게 되고,그 경우 다음 DECODING FRAME은 추가로 읽어들인 유니버설 코드는 무시하고, 그 다음 유니버설 코드를 두번째 유니버설 코드로 인식한다. 이 내용은 후술하도록 하겠다.
먼저 DECODING FRAME 1에서 보면, 두개의 유니버설 코드를 읽어들이고, 각 유니버설 코드에 대응하는 원본 MAJOR type 클러스터 길이정보를 표4를 통해 확인한다.
Figure pat00014
DECODING FRAME-1 내의 "10" 의 경우 표4에 따르면 길이 2 에 대응하는 코드이므로, 원본 MAJOR type 클러스터는 "11" 임을 알 수 있다. 맨 처음 복호화되는 MAJOR type 클러스터는 CH가 데이터에 이미 부가된 상태이므로 반드시 "1"로만 이루어진 이진수로 복호화가 된다.
두번째 유니버설 코드 "101"은 길이가 3을 나타내므로 3비트로 복호화가 되는데, 직전 복호화된 MAJOR type cluster가 "11"이었으므로, "0"으로만 이루어진 "000"으로 복호화가 되는데, 길이 3을 표현하는 두가지 pair중에 첫번째 원소이므로, 원본 frame-1이 MAJOR type-MAJOR type이었음을 알게 되므로, DECODING FRAME-1 다음의 1개의 유니버설 코드는 추가로 읽어들일 필요없이 DECODING FRAME-1에서의 복호화는 끝난다. 압축해제 데이터는 "11 000" 이 산출된다.
다음으로 DECODING FRAME 2는 DECODING FRAME 1에서 두번째 유니버설 코드를 첫번째 유니버설 코드로 하고, 두번째 유니버설 코드를 선택해야하는데, 다음 유니버설 코드인 "1001" 이 바로 DECODING FRAME 2 의 두번째 유니버설 코드가 된다. 아래 그림에 상술한 내용을 보였다.
Figure pat00015
DECODING FRAME 2 의 첫번째 유니버설 코드의 경우, 이미 직전 FRAME에서 decoding에 사용되었으므로, 별도의 액션은 필요치 않고,
두번째 유니버설 코드 "1001"은 표4에 따라 길이 4에대응하고 직전 MAJOR 클type 클러스터 복호화 결과가 "000" 이었으므로, MAJOR type 클러스터 "1111"으로 복호화되고, 길이 4에 대응하는 유니버설코드 쌍중 첫번째 쌍에 대응하므로, MAJOR type- MAJOR type형태였음을 알수있고, 따라서, 추가로 DECODING-FRAME 2 의 다음 유니버설 코드를 읽어들일 필요가 없고, DECODING FRAME-2를 통해서 DECODING FRAME-1의 결과에 이어서 "1111"을 복호화하게 된다.
DECODING-FRAME 1, 2를 거치면,
"11 000 1111" 이 압축해제로 나오는데, 원본 데이터와 동일하다.
이제 DECODING-FRAME 3을 설명하면 다음과 같다. DECODING-FRAME 2에서의 두번째 유니버설 코드가 다음 DECODING-FRAME 3에서의 첫번째 유니버설 코드가 되며, DECODING FRAME 3도 두개의 유니버설 코드를 포함하면 되는데, DECODING-FRAME 3의 첫번째 유니버설 코드는 이미 직전 프레임에서 복호화하였고, 두번째 유니버설 코드의 경우, 표4에 따라 길이가 2 로서 "11" 이라는 2비트의 MAJOR type 클러스터로 복호화가 되는데 표4에 따라, 두가지 pair중에 두번째 원소이므로, 원본 frame-3은 MAJOR type-MINOR type-Major type 클러스터가 연속된 형태임을 알게되어, 추가로 이 사이에 있는 MINOR type 클러스터를 복호화하기 위한 유니버설 코드를 한개 추가로 읽는다(아래 그림의 녹색박스)
Figure pat00016

추가로 읽은 유니버설 코드는 "10"이고 이를 표3의 유니버설 코드로부터 순번을 계산하면 1 이므로, 1개의 MINOR cluster를 두개의 MAJOR cluster 사이에 끼워 넣는다. 이때 MINOR cluster는 가장 직전에 복호화된 cluster의 구성비트와 반대비트로 복호화되면 되며, MINOR cluster들이 1비트짜리가 여러개 연결되어도 동일하다. 그리고, 두번째 MAJOR cluster 역시 가장직전에 복호화된 클러스터의 구성비트와 반대비트로 복호화되면 된다.
따라서 DECODING_FRAME 3에서는 아래와 같이 복호화된다.
"0"은 MINOR cluster이며, 직전 복호화된 클러스터가 "1"로만 구성되었기 때문에, "0"으로만 이루어지도록 복호화되었고, DECODING FRAME 3의 두번째 유니버설 코드의 복호화 결과이 2비트의 MAJOR cluster는 직전 복호화된 클러스터가 "0"이었으므로, 이와 반대되는 2비트인 "11"으로 복호화 되었다.
"11 000 1111 0 11 "
결국 DECODING-FRAME 1,2,3을 거치면 아래와 같이 복호화 된다.
"11 000 1111 0 11 "
이때 마지막으로 최종 데이터를 복호화장치에서 수신받으면 최상위의 CH, 최하위의 CT를 제거해주면, 임의의 원본스트리밍이 정확하게 복구된다.
한편 만약에 이어서 계속 수신 데이터가 존재할 경우,
DECODING FRAME 4의 첫번째 유니버설 코드는 DECODING FRAME 3의 두번째 유니버설 코드가 되고, DECODING FRAME 4 의 두번째 유니버설 코드는, 상기 DECODING FRAME 3에서 추가로 읽은 유니버설 코드(="10") 는 무시하고, 무시한 유니버설 코드 다음 유니버설 코드( X 유니버설 코드) 가 바로 두번째 유니버설 코드가 됨을 주의하자.
Figure pat00017

Claims (1)

  1. 발명을 실시하기 위한 구체적인 내용에 상술하였으며, 추후 국내우선권 주장출원시 별도 청구예정임. 순번에 따른 유니버설 코드 생성계산법, 실시간 데이터 압축 및 압축해제법 추가예정
KR1020150057618A 2015-04-24 2015-04-24 에러에 강한 dna polymerase like binary compresser frame을 이용한 실시간 이진데이터 압축전송, 압축해제 방법 및 장치 KR20160126505A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150057618A KR20160126505A (ko) 2015-04-24 2015-04-24 에러에 강한 dna polymerase like binary compresser frame을 이용한 실시간 이진데이터 압축전송, 압축해제 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150057618A KR20160126505A (ko) 2015-04-24 2015-04-24 에러에 강한 dna polymerase like binary compresser frame을 이용한 실시간 이진데이터 압축전송, 압축해제 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20160126505A true KR20160126505A (ko) 2016-11-02

Family

ID=57518305

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150057618A KR20160126505A (ko) 2015-04-24 2015-04-24 에러에 강한 dna polymerase like binary compresser frame을 이용한 실시간 이진데이터 압축전송, 압축해제 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20160126505A (ko)

Similar Documents

Publication Publication Date Title
US5045852A (en) Dynamic model selection during data compression
RU2125765C1 (ru) Способ и устройство сжатия символов, стохастический кодер (варианты)
RU2417518C2 (ru) Эффективное кодирование и декодирование блоков преобразования
US5594435A (en) Permutation-based data compression
WO2014131517A1 (en) Encoder, decoder and method
RU2611249C1 (ru) Модификатор энтропии и способ его использования
US10116328B2 (en) Encoders, decoders and methods utilizing mode symbols
CN112398484A (zh) 一种编码方法及相关设备
Al-Hashemi et al. A new lossless image compression technique based on Bose, Chandhuri and Hocquengham (BCH) codes
KR101023536B1 (ko) 데이터 무손실 압축 방법
CN110518915B (zh) 一种比特位计数编码以及解码方法
CN100581253C (zh) 用于解码比特流的装置和方法
US8175403B1 (en) Iterative backward reference selection with reduced entropy for image compression
Kwon et al. Error detection algorithm for Lempel-Ziv-77 compressed data
KR20160126505A (ko) 에러에 강한 dna polymerase like binary compresser frame을 이용한 실시간 이진데이터 압축전송, 압축해제 방법 및 장치
US8754791B1 (en) Entropy modifier and method
KR20160125689A (ko) 에러에 강한 dna polymerase like binary compresser frame을 이용한 실시간 이진데이터 압축전송, 압축해제 방법 및 장치
CN113346913A (zh) 使用减量的出现次数的数据压缩
KR20170047484A (ko) 에러에 강한 유니버설 코드의 연산을 이용한 생성 및 복호화방법 및 그 장치
KR20170055627A (ko) 중첩적 에러에 강한 유니버설 코드의 연산을 이용한 생성 및 복호화방법 및 그 장치
CN100414996C (zh) 用于编码和解码关键字数据的装置和方法
Babu et al. Efficient approach of run length coding technique using lossless grayscale image compression (E-RLC)
KR101760070B1 (ko) 데이터 부호화 및 복호화 방법과 장치
JPH0670174A (ja) 符号化画像データのデータ量削減方法
KR101632116B1 (ko) 이진 데이터의 압축 및 복원 방법과 장치