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

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

Info

Publication number
KR20160125689A
KR20160125689A KR1020150056443A KR20150056443A KR20160125689A KR 20160125689 A KR20160125689 A KR 20160125689A KR 1020150056443 A KR1020150056443 A KR 1020150056443A KR 20150056443 A KR20150056443 A KR 20150056443A KR 20160125689 A KR20160125689 A KR 20160125689A
Authority
KR
South Korea
Prior art keywords
universal code
clusters
universal
type
code
Prior art date
Application number
KR1020150056443A
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 KR1020150056443A priority Critical patent/KR20160125689A/ko
Publication of KR20160125689A publication Critical patent/KR20160125689A/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를 부가하여 "10"으로 반드시 시작하도록 만든다음, 10type 클러스터와 11type클러스터들만으로 구성되도록 스트리밍 데이터를 구분한뒤에, FRAME을 이동하면서, 유니버설 코드의 형태로 압축을 하되, 동일한 길이를 encoding하는 2개의 유니버설 코드가운데, 10type-10type사이에 11type 클러스터가 삽입된 형태의 경우, 두번째 유니버설 코드를 선택하고 그렇지 않은 경우 첫번째 유니버설 코드를 선택하게 함으로써 복호화장치가 원본데이터의 데이터 구성형태를 자동적으로 인식할 수 있도록 하였고, 10type사이에 11type 클러스터가 존재할 경우, 다음 유니버설 코드를 한개 더 해당하는 길이에 대응하는 코드로 변환하여 출력한다음 복호화기가 10type사이에 11type클러스터가 존재했다는것을 알경우, 추가로 유니버설 코드를 읽어들여서 정확하게 복호화할 수 있도록 하였다.
본 발명을 이용하여, 이진스트리밍 데이터에 있어서, 별도의 사전정보가 필요없이 간단한 연산을 통해 매우 효과적으로 실시간 압축 및 실시간 압축해제가 가능하여 다양한 멀티미디어 데이터의 전송을 획기적으로 효율화 시킬 수 있다.

Description

에러에 강한 DNA POLYMERASE LIKE BINARY COMPRESSER FRAME을 이용한 실시간 이진데이터 압축전송, 압축해제 방법 및 장치{ERROR-PROOF REAL TIME BINARY DATA COMPRESS AND TRANSFER METHOD AND APPRATUS THEREOF LIKE DNA POLYMERASE}
데이터 압축전송
유니버설 코드, 이진데이터 압축전송, 실시간 데이터 전송
발명을 실시하기 위한 구체적인 내용에 상술
발명을 실시하기 위한 구체적인 내용에 상술
발명을 실시하기 위한 구체적인 내용에 상술
임의의 이진데이터 스트리밍에 있어서, 최상위 비트 앞에 "10"을 강제적으로 추가하고 이를 compulsory header(이하 CH) 라고 본 발명에서 부르기로 한다.
임의의 이진스트리밍데이터에서 CH를 부가하면, 임의의이진스트리밍 데이터는 반드시 "10"으로 시작하게 된다.
CH는 무수히 많은 종류가 존재할 수 있으나, "10"으로 이진수를 시작하도록 만드는 것이라면 어떤것이든 무방하다. 본 발명의 실시례에서는 압축의 효율성을 위하여 가장 짧은 길이의 CH인 "10"을 부가하는 실시례로 설명하고자 한다.
CH를 부가한 임의의 이진스트리밍 데이터의 일 실시례로 아래와 같은 데이터가 있다고 하면, 이 데이터를 실시간 압축전송하는 방법에 대해 설명하고자 한다.
1001000000011111101000011101000011000000010110
가장 먼저 전송되는 최상위 비트로부터 최하위 비트 방향으로 상기 이진데이터를 스캔하면서, [1] "10"을 만날때마다 "1"의 위치 앞에서 또는 [2] "01"을 만날때 마다 "1"의 위치 앞에서 이진데이터를 분리하면 아래와 같다. 이때 분리되는 위치가 동일할 경우가 있는데, 이 경우는 [1]또는 [2] 중에 어느 하나를 적용하면 된다.
100 / 10000000 / 11111 / 10 / 10000 / 11 / 10 / 10000 / 1 / 10000000 / 10 / 1 / 10
즉 이진데이터를 "10", "100", "1000", "10000", .... 과 "1", "11", "111", "1111", .... 등의 2가지 패턴으로 크게 분류를 할 수가 있다.
다른 몇가지 예를 참고로 더 들면, 아래와 같다.
10011110111011 이라면 100 / 111 / 10 / 11 / 10 / 11
10000010001001 이면, 100000 / 1000 / 100 /1
10011000110 이면, 100 / 1 / 1000 / 1 / 10
이렇게 전송 스트리밍을 순차적으로 "10", "100", "1000", "10000", ... 등의 10type 클러스터와 , "1", "11", "111", "1111", ...등 11type 클러스터로 분리한다음,
10type클러스터를 압축클러스터로 변환하게 되는데, 10type 클러스터의 압축변환방법은 본 발명 고유의 유니버설 코드로 변환하는 방법으로 압축되게 된다.
먼저 표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
특히 이와 같은 유니버설 코드 형태로 전송하면, 전송에러가 전파되지 않고, 특정 클러스터 단위에서만 영향을 미치기 때문에 에러에 강한 코드가 된다.
예를들어, 특정 순번 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가 부가된 이진스트리밍 데이터에 있어서,
100 / 10000000 / 11111 / 10 / 10000 / 11 / 10 / 10000 / 1 / 10000000 / 10 / 1 / 10
10 TYPE 클러스터에 대하여 유니버설 코드로 압축을 시행하는데,
10 TYPE 클러스터를 살펴보면, 10, 100, 1000, 10000,...과 같이 길이가 2,3,4,5,6,7,... 과 같이 분포하고 있음을 알수있다.
그리고 10 TYPE-10TYPE 클러스터가 이어져서 연속하는 경우도 있고,
10 TYPE - 11 TYPE - 10 TYPE 클러스터와 같이 10 TYPE 클러스터 사이에 11 TYPE 클러스터가 삽입(INSERTION)된 경우가 있다.
순차적으로 두개의 10 TYPE 씩을 압축을 시행하는데, 표1의 유니버설코드의 순번정보는 10 TYPE 클러스터의 길이(비트수) 정보로 매핑하여 아래 표3 같이 변형하여 활용하기로 한다. 아래 표3을 보면 알수 있듯이, 10TYPE클러스터 길이가 동일한데 2개의 유니버설 코드가 할당되어 있음을 알수있다.
즉, "10", "100" 에 2가 "101", "1000" 에 3이, "1001", "1011" 에 4,...이러한 형태이다. 표3으로부터 도출되는 이러한 규칙을 표4에 정리하였다.
10TYPE클러스터 길이 순번 유니버설코드 길이 제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 인 10 TYPE 클러스터가 10 / 10 과 같이 존재할 경우와,
10 / 1111 / 10 과 같이 10TYPE 클러스터 사이에 11 TYPE이 삽입되어 있는 경우를 구분하기 위해서,
첫번째 길이가 2인 10 TYPE일 경우에는, 상기 표3의 유니버설 코드에서 동일한 2짝의 10TYPE 클러스터에 대해 매핑할 수 있는 유니버설 코드중에 순번이 앞(즉 두개의 짝중에 첫번째 순번)에 있는 유니버설 코드를 찾아서 매핑하고, 두번째 길이가 2인 10 TYPE클러스터의 경우에 만약에 11TYPE클러스터가 삽입되지 않는 경우라면, 역시 짝중에 첫번째 순번의 유니버설 코드를 매핑하고, 반대의 경우 즉 11 TYPE클러스터가 존재하는 경우라면, 짝중에 두번째 순번의 유니버설 코드를 매핑하는 것이다.
10 / 10 의 경우에, 상기표3및 상술한 바대로,
"1010"으로만 압축되면 되고,
10 / 111 / 10 의 경우에는, "10100" 으로 매핑하고, "111"의 경우에는 11TYPE 클러스터의 길이가 3이므로, 순번 3에 따라 "101"을 바로 다음에 붙여서,
"10100101" 과 같이 압축하게 된다.
물론 본 실시례에서는 10 TYPE이 길이가 짧은 경우이고 11TYPE도 길이가 짧은 경우이나, 통상 일반적인 데이터의 경우, 수백~수천비트의 10TYPE또는 11TYPE이 존재할 수 있기 때문에 데이터의 압축은 실제로 나타나게 된다. 즉 10 type 클러스터들 사이에 11 type클러스터가 존재한다면, 두번째의 10 type클러스터에 대해서는, 선택가능한 유니버설코드 pair중에 두번째 코드를 선택하는 것이고, 11type 클러스터가 존재하지 않는다면 pair중에 첫번째 코드를 선택하면 된다.
10type 클러스터길이 유니버설코드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}
이와 같은 과정을 보다 자세히 살펴보자. 아래와 같은 데이터가 있다고 한다면, 4비트의 "1000" 과 3비트의 "100"사이에 1111 이라는 4비트의 11type 클러스터가 끼어있는 형태이다. FRAME은 순차적으로 10 type 클러스터를 2개씩 선택하는 너비이며, 압축한뒤에는 1개씩 10type클러스터를 이동하게 된다.
Figure pat00009

먼저 두개의 10type 클러스터에 대해서 유니버설 코드로 압축하되, 표4에 따라 첫번째 "1000"은 4비트에 대응하는 유니버설 코드 pair중에 비트수를 덜 차지하는 첫번째 원소를 선택하여, "1001"로 코딩하고, 다음 "100"에 대해서는, 중간에 11 type 클러스터가 끼어있으므로, 3비트에 대응하는 유니버설 코드 pair중에 두번째 원소를 선택하면, "1000"을 선택하게 된다.
따라서, 먼저, 두개의 10type클러스터 압축결과인 "1001" 과 "1000"을 연속하여 압축데이터로 생성한뒤, 중간에 낀 11type클러스터의 경우 길이가 4이므로, 표3에 따라 순번 4에 대응하는 첫번째 원소를 선택하면, "1000"을 선태하여 이어 붙이면, 최종적으로 "10001111100" 은, "100110001000" 으로 저장된다. 물론 본 실시례에서는, 길이가 짧은 클러스터들에 대한 압축코드를 예시로 보이므로 압축효과가 보이지 않으나 길이가 긴 클러스터들이 존재하는 일반적인 문서나 멀티미디어 데이터들에 있어서는 압축효과가 크게 나타남은 물론이다.
본 발명의 방법을 적용하면 실시간 압축전송 및 수신뒤 실시간 압축해제가가능한데, 예를들어, 상기의 예시에서,10 type - 11type-10 type클러스터의 경우 하나의 묶음으로 읽어서, "1000 / 1111 / 100"을 "1001 / 1000 / 1000" 으로 압축하여 전송하면, 수신부에서는 먼저 2개의 클러스터를 통해 10 type 클러스터 2개를 복구한다. 복호화부에서도 표3 및 표4를 동적으로 또는 연산으로 생성가능하고, 표4에 따라, 2개의 10type클러스터를 복호화하면, "1001"은 길이 4를 나타내는 pair중에 첫번째이므로, "1000"으로 복호화하고, "1000"은 길이 3을 나타내는 pair인데 두번째이므로, "100"으로 복호화하되, 같은 3을 나타내기 위해서 첫번째 페어를 쓴것이 아니라 두번째 페어를 썼으므로, 10type클러스터와 10type클러스터 사이에 11type클러스터가 존재한다는 것을 복호화장치에서 알게되고, 따라서 복호화장치에서, 유니버설 코드 하나를 더 읽어들여서, 중간에 삽입된 11 type클러스터의 형태를 복호화하기 위하여 세번째 코드인 "1000"을 읽어들이고 표3에 따라 순번4에 대응하므로, "1111" 로 복호화하여,
두개의 복호화된 10type 클러스터 사이에 4비트의 복호화된 11type클러스터를 연결하여, "10001111100"을 완벽하게 실시간으로 복호화할 수 있다.
이제 다시 압축단계를 더 살펴보기 위해서, 상기 그림에서 다음 단계로 진행하면, 아래와 같다. 직전 프레임의 두번째 10type 클러스터가 다음 프레임의 첫번째 10type 클러스터가 되도록 프레임은 이동하고, 각 프레임은 두개의 10type유니버설 클러스터를 포함하면 아래 그림과 같다.
FRAME 2에서, 3비트의 "100"은 이미 FRAME 1에서 encoding되었으므로, 코딩은 필요치 않고, 4비트의 "1000"의 경우에, FRAME 2가 10type-11type-10type의 클러스터에 머물고 있으므로, 표4에 따라 길이가 4일때 선택가능한 pair중에 두번째 유니버설코드인 "1011"을 선택하여, 중간에 11type클러스터가 끼어있음을 복호화기에 알릴 수 있다.
Figure pat00010
다음으로, 11 type 클러스터는 1비트의 "1"이므로 표3에 따라 순번 1에 해당하는 "10"을 추가로 압축하여 2개의 유니버설 코드인 "1011 / 10" 생성하여 frame 1의 결과의 뒤에 이어붙여서 전송된다. 물론 이때 "/" 는 실제데이터가 아니라 이해를 돕기위한 개념적 표시임은 물론이다.
따라서 프레임 1, 2 를 거치면서, 원본데이터 1000111110011000 은,
"1001 / 1000 / 1000 / 1011 / 10 " 으로 변환되어 전송되게 된다.
다음으로 프레임 3을 살펴보면, 아래와 같다.
FRAME은 10type 클러스터 두개를 포함하면 되고, 10type 클러스터 1개씩 위치를 이동하면서 적용되게 되므로, frame 3처럼 10type 클러스터 중간에 11type클러스터가 존재하지 않는경우는 frame내에 단지 2개의 10type클러스터만 존재하는 경우가 생긴다. frame내의 첫번째 10type클러스터는 이미 직전 frame내에서 encoding되었으므로, 코딩은 필요치 않고 두번째 10 type클러스터의 경우 10type-10type일 경우에는, 두가지 선택가능한 유니버설코드의 pair중에 첫번째 원소를 선택함으로서, 복호화기에 단순히 10type-10type 클러스터였음을 알릴수가 있다.
Figure pat00011
따라서 프레임 3에서는, "10011" 만을 encoding하여 frame 1,2 의 결과에 이어서 붙이면 된다. 참고로 길이가 6비트인 10type의 경우 상기처럼 5비트로 encoding됨으로써 1비트 압축효과가 나타나기 시작했음을 알 수 있다. 다음으로 프레임 4를 아래와 같이 보이며, 프레임 3과 동일한 방식이다.
Figure pat00012

마지막으로 FRAME 5는 아래와 같다.
Figure pat00013
FRAME 5는 10type-11type-10type이 되므로, 두번째 10type 클러스터를 압축할때는, 표4에 따라 pair중에 두번째 유니버설 코드를 선택하여, "100"으로 엔코딩하고, 사이에 끼어있는 11type 클러스터 "11"의 길이가 2이므로, 표3에 따라 길이가 순번 2에 대응하는 유니버설 코드인 "100"을 이어서 엔코딩하여,
FRAME 5에서는 "100 / 100" 을 출력하여 FRAME 4에 이어서 붙인다.
이로서, 전체적인 실시간 압축및 전송이 마쳐진다.
FRAME 1~5를 거치면서 생성된 압축데이터는 다음과 같다.
"1001 / 1000 / 1000 / 1011 / 10 / 10011 / 1001 / 100 / 100"
이 데이터를 복호화기가 받아서 압축해제하는 과정을 아래에 보인다.
본 발명에서 제시된 유니버설 코드를 읽어들이는 방법은,
최상위 비트로부터 최하위 비트방향으로 이동하면서, "10"을 처음만날때마다 이진데이터를 분리할 수 있고, 각 분리되는 코드들이 유니버설 코드 1개에 대응한다.
즉 예를들어,
"1001110101011" 과 같다면,
10011 / 10 / 10 / 1011 의 4개의 유니버설 코드로 분리가 된다.
한편, DECODING FRAME은 기본적으로 유니버설 코드형태로 표현되는 압축데이터에 있어서, 2개의 유니버설 코드단위로 읽어들이고, 1개씩 다음 유니버설 코드로 이동하게 된다.한편 2개의 유니버설 코드의 해석결과 11type 이 중간에 끼어있는 경우로 판단될 경우에는, 복호화기에서 특별하게 다음 유니버설 코드를 추가로 읽어들이게 되고,그 경우 다음 DECODING FRAME은 추가로 읽어들인 유니버설 코드는 무시하고, 그 다음 유니버설 코드를 두번째 유니버설 코드로 인식한다. 이 내용은 후술하도록 하겠다.
먼저 DECODING FRAME 1에서 보면, 두개의 유니버설 코드를 읽어들이고, 각 유니버설 코드에 대응하는 원본 10type 클러스터 길이정보를 표4를 통해 확인한다.
Figure pat00014
DECODING FRAME-1 내의 "1001" 의 경우 표4에 따르면 길이 4 에 대응하는 코드이므로, 원본 10type 클러스터는 "1000" 임을 알 수 있다.
두번째 유니버설 코드 "1000"은 길이가 3을 나타내는 "100"으로 복호화가 되는데, 길이 3을 표현하는 두가지 pair중에 두번째 원소이므로, 원본 frame-1이 10type-11type-10 type이었음을 알게 되므로, DECODING FRAME-1 다음의 1개의 유니버설 코드 "1000"을 추가로 읽어들여서, 표3의 순번-유니버설 코드표를 참조하거나 연산을 통해 순번을 계산하여, 4 였음을 알게 되고, "1111" 이란 4비트의 11tpye 클러스터가 10type -10type 클러스터 사이에 배치하여, 최종 압축해제 데이터는 "1000 1111 100" 이 된다.
Figure pat00015

다음으로 DECODING FRAME 2는 DECODING FRAME 1에서 다음 유니버설 코드를 첫번째 유니버설 코드로 하고, 두번째 유니버설 코드를 선택해야하는데, 상기 그림의 녹색으로 표기된 유니버설 코드의 경우에는 이미 DECODING-FRAME 1에서 사용한것이기 때문에, 다음 유니버설 코드인 "1011" 이 바로 DECODING FRAME 2 의 두번째 유니버설 코드가 된다. 아래 그림에 상술한 내용을 보였다.
Figure pat00016

DECODING FRAME 2 의 경우 두번째 유니버설 코드 "1011"은 표4에 따라 길이 4에대응하므로, 10 type 클러스터 "1000"으로 복호화되나, 길이 4에 대응하는 유니버설코드 쌍중 두번째 쌍에 대응하므로, 10type-11type-10type형태였음을 알수있고, 따라서, 추가로 DECODING-FRAME 2 의 다음 유니버설 코드인 "10"을 더 아래와 같이 읽어들인다. "10"은 표3에 따르면 순번 1에 해당하므로 11 type 클러스터는 "1"이었음을 알수 있다. 따라서, DECODING FRAME-2를 통해서 DECODING FRAME-1의 결과에 이어서 "1 / 1000"을 복호화하게 된다.
Figure pat00017

DECODING-FRAME 1, 2를 거치면,
"1000 1111 100 1 1000 " 이 압축해제로 나오는데, 원본 데이터와 동일하다.
이제 DECODING-FRAME 3을 설명하면 다음과 같다. DECODING-FRAME 2에서의 두번째 유니버설 코드가 다음 DECODING-FRAME 3에서의 첫번째 유니버설 코드가 되며, DECODING FRAME 3도 두개의 유니버설 코드를 포함하면 되는데, 아래 그림처럼 다섯번째 유니버설 코드 "10"의 경우 직전 frame에서 추가로 읽어들인 유니버설 코드로서 이미 사용되었으므로, 두번째 유니버설 코드를 다음 유니버설 코드로 하여 DECODING FRAME 3을 설정한다. DECODING-FRAME 3의 첫번째 유니버설 코드는 이미 직전 프레임에서 복호화하였고, 두번째 유니버설 코드의 경우, 길이가 6으로서 "100000" 이라는 6비트의 10type 클러스터로 복호화가 되는데 표4에 따라, 두가지 pair중에 첫번째 원소(="10011")이므로, 원본 frame-3은 10type-10type 클러스터가 연속된 형태임을 알게되어, 추가로 11type 클러스터를 복호화하기 위한 유니버설 코드 reading은 필요치 않다.
Figure pat00018
DECODING-FRAME 1,2,3을 거치면 아래와 같이 복호화 된다.
"1000 1111 100 1 1000 100000"
다음으로 DECODING-FRAME 4의 경우는 아래와 같다. DECODING_FRAME 3과 동일한 과정으로 압축해제된다.
Figure pat00019
DECODING-FRAME 1,2,3,4을 거치면 아래와 같이 복호화 된다.
"1000 1111 100 1 1000 100000 1000"
다음으로 DECODING-FRAME 5에 대해서 설명하면 다음과 같다. DECODING-FRAME 5의 경우에, 두번째 유니버설 코드의 경우 표4에 따르면 길이가 2에 대응하는 10type 클러스터인 "10"으로 복호화되나, 두가지 pair중에 두번째 원소로 압축되어 있었으므로, 원본 FRAME-5 의 경우에는, 10type-11type-10type으로 구성되어 있었음을 알수 있고,
Figure pat00020

따라서 다음과 같이 추가로 1개의 유니버설 코드인 "100"을 더 읽어와서, 11type 클러스터를 복원하게 된다.
"100"은 표3에 따라 순번 2이므로, 길이2인 11type 클러스터 "11"이 FRAME 5의 10type 클러스터 사이에 있었음을 알수 있다. 따라서 DECODING FRAME 5에 따라 "11 / 10" 을 복호화하여 기존 복호화 결과에 이어서 저장하게 된다.
Figure pat00021
따라서, DECODING FRAME 1,2,3,4,5를 거치면, 아래와 같이 복호화되고, FRAME-1,2,3,4,5 의 역과정이 완벽하게 복원되었다.
"1000 1111 100 1 1000 100000 1000 11 10"
마지막으로 최종 데이터를 복호화장치에서 수신받으면 최상위의 CH를 제거해주면, 임의의 원본스트리밍이 정확하게 복구된다.

Claims (1)

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

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (1)

Publication Number Publication Date
KR20160125689A true KR20160125689A (ko) 2016-11-01

Family

ID=57484723

Family Applications (1)

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

Country Status (1)

Country Link
KR (1) KR20160125689A (ko)

Similar Documents

Publication Publication Date Title
US5045852A (en) Dynamic model selection during data compression
RU2417518C2 (ru) Эффективное кодирование и декодирование блоков преобразования
CN100517979C (zh) 一种数据压缩及解压缩方法
CN101795407A (zh) 用于对比特序列进行编码的方法和设备
US5594435A (en) Permutation-based data compression
WO2014131517A1 (en) Encoder, decoder and method
CN105191145A (zh) 数据编码器、数据解码器及编解码方法
RU2611249C1 (ru) Модификатор энтропии и способ его использования
JP2003524983A (ja) 複数コーダを用いる最適化ロスレス圧縮のための方法及び装置
US10116328B2 (en) Encoders, decoders and methods utilizing mode symbols
KR101023536B1 (ko) 데이터 무손실 압축 방법
EP0635807B1 (en) Coding apparatus for image compression
Al-Hashemi et al. A new lossless image compression technique based on Bose, Chandhuri and Hocquengham (BCH) codes
CN100581253C (zh) 用于解码比特流的装置和方法
CN110518915B (zh) 一种比特位计数编码以及解码方法
US8175403B1 (en) Iterative backward reference selection with reduced entropy for image compression
KR20160125689A (ko) 에러에 강한 dna polymerase like binary compresser frame을 이용한 실시간 이진데이터 압축전송, 압축해제 방법 및 장치
KR20160126505A (ko) 에러에 강한 dna polymerase like binary compresser frame을 이용한 실시간 이진데이터 압축전송, 압축해제 방법 및 장치
CN113346913A (zh) 使用减量的出现次数的数据压缩
KR20170047484A (ko) 에러에 강한 유니버설 코드의 연산을 이용한 생성 및 복호화방법 및 그 장치
KR20170055627A (ko) 중첩적 에러에 강한 유니버설 코드의 연산을 이용한 생성 및 복호화방법 및 그 장치
CN100414996C (zh) 用于编码和解码关键字数据的装置和方法
KR101760070B1 (ko) 데이터 부호화 및 복호화 방법과 장치
KR101632116B1 (ko) 이진 데이터의 압축 및 복원 방법과 장치
JPH0629861A (ja) データ圧縮方法