KR100260827B1 - 데이타 압축방법, 데이타 복원방법 및 정보처리 장치 - Google Patents

데이타 압축방법, 데이타 복원방법 및 정보처리 장치 Download PDF

Info

Publication number
KR100260827B1
KR100260827B1 KR1019940035931A KR19940035931A KR100260827B1 KR 100260827 B1 KR100260827 B1 KR 100260827B1 KR 1019940035931 A KR1019940035931 A KR 1019940035931A KR 19940035931 A KR19940035931 A KR 19940035931A KR 100260827 B1 KR100260827 B1 KR 100260827B1
Authority
KR
South Korea
Prior art keywords
data
dictionary
string
compressed
registration
Prior art date
Application number
KR1019940035931A
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
Priority claimed from JP15809994A external-priority patent/JP3132293B2/ja
Application filed by 야스카와 히데아키, 세이코 엡슨 가부시키가이샤 filed Critical 야스카와 히데아키
Application granted granted Critical
Publication of KR100260827B1 publication Critical patent/KR100260827B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • 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/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78

Landscapes

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

Abstract

압축율이 높고 동시에 복원처리가 빠르고, 필요한 문자만을 자유로이 복원할 수 있는 데이터 압축방법, 데이터 복원방법, 정보처리 장치를 제공하는 것을 목적으로 한다. 등록번호에 관련하여 등록데이터열이 등록되는 사전을 사용하여 데이터열의 2이상의 조합을 당해 등록번호로 치환함으로써 데이터 압축을 행한다. 스탭 A1, A2로 사전의 생성, 갱신이 행해지고, 스탭 A3로 최적인 사전에 있는가의 여부가 판단된다. 이 경우의 사전의 갱신은 증분분해법, 가증분해법 등에 의해 행해진다. 그리고, 스탭 A4, A5에 표시된 바와같이 최적인 사전(3)이 생성된 단계에서 당해 사전(3)을 최종적인 복원용 정적사전으로 하여 출력하고 동시에 당해 정적사전(14)에 의해 데이터 압축을 행하고, 압축된 데이터열을 최종적인 복원용 압축데이터(19)로 하여 출력한다.

Description

데이터 압축방법, 데이터 복원방법 및 정보처리 장치
제1도는 제1실시예의 데이터 압축방법을 설명하기 위한 플로차트.
제2도는 실시예의 압축방법이 사용되는 데이터 압축장치(12) 구성의 일예를 도시한 블록도.
제3(a)도 내지 제3(e)도는 슬라이드 사전방법을 설명하기 위한 개략설명도.
제4도는 사전방법을 이용하여 최적인 사전을 얻는 방법을 설명하기 위한 플로차트.
제5도는 증분분해 알고리즘을 이용하여 최적인 사전을 얻는 방법을 설명하기 위한 플로차트.
제6도는 정적사전 및 압축데이터를 작성하는 과정을 시각적으로 표시한 도면.
제7도는 제2실시예에서 사용되는 데이터 압축방법을 도식적으로 설명하기 위한 개략 설명도.
제8(a)도 및 제8(b)도는 증분분해법과 가증분해법의 처리차이를 모식적으로 도시한 도면.
제9도는 증분분해법의 작동을 설명하기 위한 플로차트.
제10(a)도 및 제10(b)도는 증분분해법과 가증분해법으로 처리차이를 모식적으로 도시한 도면.
제11도는 가증분해법에 의한 1회의 패스처리를 설명하기 위한 플로차트.
제12도는 사전의 최적화를 위해 다수회의 패스처리를 설명하기 위한 플로차트.
제13(a)도는 사용빈도 정보를 포함한 사전의 구조를 도시하는 도면.
제13(b)도는 사용빈도에 의거하여 등록삭제의 처리를 표시하는 플로차트.
제14(a)도는 복원전용사전의 구조를 도시하는 도면.
제14(b)도는 문자개시 어드레스 및 문자열 길이에 의한 문자열의 코어부분의 지정에 관한 설명도.
제15도는 복원전용사전을 사용한 경우의 복원처리의 플로차트.
제16(a)도 및 제16(b)도는 비트 맵(bit map)데이터의 압축에 관해 설명하기 위한 개략설명도.
제17도는 비트맵 이미지를 설명하기 위한 개략설명도.
제18도는 아우트라인 폰트(out line font)를 설명하기 위한 개략설명도.
제19(a)도 및 제19(b)도는 아우트라인 폰트 데이터의 압축에 관해 설명하기 위한 개략설명도.
제19(c)도는 이 압축데이터의 복원처리의 플로차트.
제20도는 데이터 압축방법의 이용태양을 도시한 도면이다.
* 도면의 주요부분에 대한 부호의 설명
1 : 압축대상인 문자열 데이터 2 : 작업버퍼(buffer)
3 : 사전 4 : 압축데이터
5 : 완성된사전 11 : 압축대상인 전체 데이터 열
12 : 데이터 압축장치 13 : 사전생성수단
14 : 정적사전 15 : 정적사전보지수단
16 : 정적사전출력수단 17 : 데이터압축수단
18 : 압축데이터출력수단 19 : 압축데이터
본 발명은 등록번호에 관련하여 등록데이터열이 등록되는 사전을 사용하여 행하는 데이터 압축방법, 압축데이터를 복원하기 위한 데이터 복원방법 및 정보처리장치에 관한 것이다.
프린터 등의 정보처리장치에서는 최근 각종 인쇄글자 사이즈의 비트맵 폰트나 아우트라인 폰트를 공급함으로써 부가가치를 높히고, 더욱이 어느 인쇄글자 사이즈에 대해서도 높은 인쇄글자 품질을 유지해야 한다는 요구가 높아가고 있다. 따라서, 프린터 등의 분야에서는 최근 이러한 폰트 데이터로 이루어진 대량의 정보를 좋은 효율로 기억시키기 위한 데이터 압축기술이 주목되고 있다.
대량의 정보를 가능한한 적은 용량으로 기억 또는 전송하기 위한 데이터 압축의 종래 기술로서는 하프만 부호 같은 고정길이 비트의 데이터를 가변 길이 비트의 코드로 변환하는 기술이나, 소위 Lempel-Ziv 특허(미합중국 특허 제4464650호 명세서) 또는 LZW 특허(미합중국 특허 제 4558302호 명세서)와 같이 과거에 나타난 데이터 열과 이것으로 압축하도록 되어있는 데이터열과의 일치를 이용하여 압축을 행하는 기술 등이 공지되어 있다.
그러나, 이러한 종래기술은 소위 정적사전을 사용하여 행하는 데이터 압축방법이다. 즉, 압축해야할 대상 데이터를 해석하고, 출현빈도 등을 조사하면서 데이터를 사전구조의 형태로 등록하며, 이 사전을 이용하여 동시에 데이터를 압축해가는 방법이다. 이 경우에, 사전은 리얼타임으로 계속하여 변해가는 것이 특징이다. 이러한 동적사전에 의한 데이터 압축에서는 압축처리가 행해진 대상 데이터만이 생성물로서 남지만, 데이터를 복원할때는 압축시의 이력 데이터의 특성을 조사하고, 다시 사전을 작성하고 고치면서 다음의 데이터를 복원하지 않으면 안된다. 따라서, 압축된 대상 데이터의 처음부터 순차적으로 처리를 행해가지 않으면 안된다는 문제가 있다.
그리고, 프린터등에 있어서 폰트 데이터의 압축에 있어서는 압축된 폰트 데이터는 프린터 또는 호스트 컴퓨터측의 기억장치에 저장된다. 그리고, 글자 인쇄시에는 기억장치중에서 필요한 압축된 폰트 데이터를 취출하고, 이 압축된 폰트 데이터를 통상의 데이터로 복원하여 인쇄글자 데이터를 형성한다. 따라서, 이와같은 조건에 있어서의 데이터 압축을 이용하는 경우에 필요한 것은 기억방치에 저장되어 있는 데이터를 여하히 빨리 복원하고 인쇄글자 데이터를 형성하는가 하는 것이다.
또, 프린터 등에 있어서 폰트 데이터를 압축할때에 중요한 또 한 개의 포인트는 어떠한 인쇄글자 데이터(문자)를 어떤 순서라도 출력할 수 있다는 자유성을 가지는 것이다. 결국, 프린터등에 있어서는 기억되어 있는 데이터에 대하여 랜덤에 액세스하고, 랜덤에 인쇄글자 데이터를 형성할 수 있어야 한다.
하프만 부호 등의 압축방법 보다도 일반적으로 압축률이 높은 Lempel-Ziv 나 LZW 등의 데이터 압축방법은 이후의 압축기술의 주류가 될 것이라고 생각된다. 그러나, 한편으로는 이러한 압축기술은 동적사전을 이용한 데이터 압축이기 때문에 데이터를 복원할때도 과거의 데이터 특성을 조사하고, 갱신해 가지 않으면 복원에 시간이 많이 소요된다는 문제가 있다.
또, Lempel-Ziv나 LZW등의 데이터 압축방법은 복원시에는 압축데이터의 처음부터 차례로 데이터를 복원하지 않으면 필요한 인쇄글자 데이터만을 필요한때에 자유롭게 취출할 수 없다는 문제가 있다.
또한, LZW 등으로 이용되고 있는 증분분해법이라고 불리우는 데이터 압축방법에서는 사전에 등록가능한 데이터열의 개수를 1개씩 밖에 증가시켜 갈 수 없기 때문에, 예를들면 동일한 데이터열이 연속하는 경우에는 데이터 압축율을 높힐 수 없다는 문제가 있다.
본 발명은 이상과 같은 문제를 해결하기 위한 것이고, 그 목적은 Lempel-Ziv나 LZW의 데이터 압축방법과 같은 높은 압축율을 유지하면서, 복원처리를 비교적 짧은 시간으로 끝내고, 또한 필요한 데이터열만을 자유롭게 복원가능하게 하는 데이터 압축방법, 압축된 데이터열을 복원할 수 있는 복원방법 및 정보처리장치를 제공하는 것이다.
또한, 본 발명의 다른 목적은 증분해석법보다 더욱 압축율이 높은 방법을 창출하는 것이며, 더욱이 압축된 데이터열과 그때 발생된 사전의 저장을 위해 필요한 기억용량을 적게할 수 있는 데이터 압축방법, 압축된 데이터열을 복원할 수 있는 복원방법 및 정보처리장치를 제공하는 것이다.
상기 목적을 달성하기 위해서, 특허청구범위 제1항의 발명은 등록번호에 관련하여 등록데이터열을 등록할 수 있는 사전을 사용하여 2개 이상의 데이터열의 조합을 당해 등록번호로 치환함으로써 데이터 압축을 행하는 데이터 압축방법에 있어서, 압축대상인 데이터열의 데이터 압축에 최적인 사전이 생성될때까지 사전을 갱신하고, 최적인 사전이 생성된 단계에서 당해 사전을 최종적인 복원용의 정적사전으로서 출력함과 동시에, 당해 정적사전으로부터 압축대상이 데이터열의 압축을 행하며, 압축된 데이터열을 최종적인 복원용 압축데이터로서 출력하는 것을 특징으로 한다.
특허청구범위 제1항의 발명에 의하면, 사전에는 등록번호에 관련된 등록데이터열이 등록된다. 그리고, 데이터열의 2이상의 조합을 당해 등록번호로 치환함으로써 데이터 압축이 행해진다. 이와같은 데이터 압축을 행하면, 복원시에 당해 등록번호로부터 상기 등록데이터열을 읽어냄으로써 원래의 데이터열을 복원할 수 있다. 이 경우에 사전은 압축대상인 데이터열의 데이터 압축에 최적인 사전이 생성될때까지 갱신된다. 즉, 예를 들면 압축데이터의 압축량, 사전의 데이터양 등이 최적이 될 때까지 사전이 갱신된다. 그리고, 최적인 사전이 생성된 단계에서 당해 사전이 최종적인 복원용 정적사전으로서 출력된다. 또한, 당해 정적사전으로부터 압축대상인 데이터열의 데이터 압축이 행해지고, 압축된 데이터열이 최종적인 복원용 압축데이터로서 출력된다. 그리고, 출력된 최종적인 정적사전, 압축데이터는 예를들면 기억장치, 기억매체등에 저장되며, 프린터 컴퓨터 등의 정보 처리장치에 의해 복원되고, 원래의 데이터열이 복원된다. 이와 같이 본 발명에 의하면 최적인 사전이 생성될때까지 사전의 갱신이 행해지고, 이 최적인 사전을 정적인 사전으로하고 이 정적사전에 의해 데이터 압축이 행해진다. 따라서, 출력된 정적사전과 압축데이터의 데이터양을 최적인 것으로 할 수 있다. 더욱이, 출력될 때까지의 사전은 정적사전일 필요가 없기 때문에, 예를들면 데이터 압축율이 특출하게 높은 정적사전을 이용한 데이터 압축 알고리즘 등으로부터 사전의 갱신, 데이터 압축을 행할 수 있다. 이것으로부터 최종적인 압축데이터의 데이터 압축율을 특출하게 높힐 수 있다. 한편, 출력된 사전은 정적사전으로 되기 때문에, 필요한 데이터열을 이 정적사전을 이용하여 자유로이 복원할 수 있다.
특허청구범위 제2항의 발명에 의하면, 조합갯수가 많은 데이터열의 조합을 최종적으로 등록함으로써 사전이 생성된다. 이러한 사전을 생성하기 위한 수단으로서는 예를들면 슬라이드 사전이라 불리우는 수법을 이용할 수 있다. 그리고, 이 사전수법을 이용하는 경우에는 슬라이드 사전수법으로부터 과거의 데이터열과 대상인 데이터열과의 사이에 가장 긴 일치 데이터열을 찾아내고, 이 가장 긴 일치 데이터열을 사전에 등록함으로써 사전을 생성한다. 이것으로부터 조합갯수가 많은 데이터열의 조합이 우선적으로 등록된 사전을 생성할 수 있다. 그리고, 이러한 사전을 사용함으로써 조합갯수가 많은 데이터열의 조합이 우선적으로 사전의 등록번호에 치환되기 때문에 데이터의 압축율을 최적인 것으로 할 수 있다. 한편, 이와같이 생성된 사전은 그 등록율이 매우 높은 경우가 있다. 그런데, 이 생성된 사전으로부터 사용빈도가 낮은 등록데이터열의 등록을 삭제함으로써 사전의 갱신을 행하며, 사전의 등록수가 소정수에 달한 단계에서 갱신을 종료하면 압축율이 좋고, 되풀이하여 말하면 데이터양이 적은 최적인 사전을 생성할 수 있다.
또한, 특허청구범위 제3항은 특허청구범위 제1항에 있어서 상기 최적인 사전이 생성될때까지의 사전의 갱신이 출현확률이 높은 데이터열의 조합을 우선적으로 등록함으로써 생성된 사전으로부터 사용빈도가 낮은 등록데이터열의 등록을 사전의 등록수가 소정수에 달할때까지 삭제함으로써 행해지는 것을 특징으로한다.
특허청구범위 제3항의 발명에 의하면, 출현확률이 높은 데이터열의 조합을 우선적으로 등록함으로써 사전이 생성된다. 이 데이터열 조합의 출현확률은 예를들면 압축대상인 전체 데이터 열의 출현확률을 조사하고, 이 출현확률로부터 구할 수 있다. 그리고, 이와같이 생성된 사전을 이용함으로써 출현확률이 높은 데이터열의 조합이 우선적으로 등록번호에 치환되기 때문에 데이터 압축율을 적정한 것으로 할 수 있다. 그리고, 생성된 사전으로부터 사용빈도가 낮은 등록데이터열의 등록을 삭제함으로써 사전의 갱신을 행하며, 사전의 등록수가 소정수에 달한 단계에서 갱신을 종료하면 데이터량이 적은 최적인 사전을 생성할 수 있다.
또한, 특허청구범위 제4항의 발명은 특허청구범위 제1항에 있어서 상기 최적인 사전이 생성될때까지의 상기 사전의 갱신이 데이터 압축시에 사전이 동적으로 변화하는 데이터 압축 알고리즘에 의해 사전을 갱신하면서 압축대상인 전체 데이터열에 대한 데이터압축처리를 행하며, 데이터 압축율이 최적이 될 때까지 상기 처리를 되풀이 함으로써 행해지는 것을 특징으로 한다.
특허청구범위 제4항의 발명에 의하면, 데이터 압축시에 사전이 동적으로 변화하는 데이터 압축 알고리즘, 예를들면 증분분해 알고리즘, 가증분해 알고리즘 등에 의해 사전을 갱신하면서 전체 압축대상 데이터열에 대한 데이터 압축처리가 행해진다. 그리고, 다음에 이 처리에 의해 갱신된 사전을 이용하여 다시 상기 데이터 압축 알고리즘에 의해 사전을 갱신하면서 전체 압축대상 데이터열에 대한 데이터 압축처리가 행해진다. 그리고 이 처리를 데이터 압축이 최적으로 될 때까지 반복함으로써 최적인 사전이 생성된다. 본 발명에 의하면 데이터 압축율이 높은 동적사전을 이용한 데이터 압축 알고리즘에 의해 데이터 압축이 행해지며, 그럼에도 불구하고 데이터 압축율이 최적인 단계에서 사전의 갱신이 종료하기 때문에 데이터 압축율을 매우 높힐 수 있다. 한편 출력된 사전은 정적사전으로 되기 때문에 필요한 데이터열을 이 정적사전을 이용해 자유로이 복원하는 것도 가능하다.
또한, 특허청구범위 제5항의 발명은 등록번호에 관련된 등록데이터열을 등록할 수 있는 사전을 사용하여 데이터열의 2이상의 조합을 당해 등록 번호에 치환함으로써 데이터압축을 행하는 데이터 압축방법으로서, (A) 압축대상인 데이터열로부터 소정수의 데이터열을 취출하여 소정수의 버퍼를 가진 작업영역에 저장하는 공정과, (B) 상기 작업영역내의 서로 인접한 버퍼에 저장되는 데이터열의 조합이 사전에 등록되어 있는가의 여부를 해석하고, 사전에 등록되어 있는 경우에는 당해 데이터열의 조합을 사전에 있어서의 상기 등록번호에 치환하고 동시에 치환으로부터 생긴 빈 버퍼를 메울 수 있도록 데이터열을 작업영역에서 시프트시켜, 그 결과 작업영역의 말단에 생긴 빈 버퍼에 연속된 데이터열을 취입하며, 다시 작업 영역내의 서로 인접한 버퍼에 저장되는 데이터열의 조합이 사전에 등록되어 있는가의 여부를 해석하는 공정 및, (C) 상기 공정(B)의 해석으로부터 작업영역내의 서로 인접한 버퍼에 저장된 데이터열 조합의 어느것인가가 사전에 등록되어 있지 않다고 판단되는 경우에는 작업영역내의 선두로부터 첫 번째, 두 번째의 버퍼에 저장되는 데이터열의 조합을 사전에 등록하고 동시에 첫 번째의 데이터열을 소거하고, 소거로부터 생긴 빈 버퍼를 메울 수 있도록 데이터열을 작업영역내에서 시프트시켜, 그 결과 작업영역의 말단에 생긴 빈 버퍼에 연속의 데이터열을 취입하는 공정을 포함하며, 압축대상인 전체의 데이터열이 상기 작업영역내의 저장될때까지 상기 공정(B),(C)를 반복하는 것을 특징으로 한다.
특허청구범위 제5항의 발명에 의하면 작업영역내의 서로 인접한 버퍼에 저장되는 데이터열의 조합이 사전에 등록되어 있는가를 해석하고, 등록되어 있는 경우에는 사전의 등록번호에 치환된다. 그리고 그결과 생긴 빈 버퍼에 연속데이터열을 취입하며, 다시 데이터열의 조합이 사전에 등록되어 있는가가 해석된다. 또한 데이터열의 조합이 사전에 등록되어 있지 않다고 판단되면 선두로부터 첫 번째, 두 번째의 데이터열의 조합이 등록되고, 그 결과 생긴 빈 버퍼에 연속 데이터열이 취입된다. 그리고 이러한 처리가 전체 데이터열이 작업영역내에 저장될때까지 반복됨으로써 데이터 압축이 행해진다. 이러한 본 발명에 의하면 소정용량의 작업용 영역을 구비하고, 주목하고 있는 데이터열과 동일한 데이터열이 작업용 영역에 존재하는 경우는 사전을 이용한 치환처리가 행해질 수 있도록 되어있다. 따라서, 특히 동일한 데이터열을 압축처리하는 경우에 사전의 등록수를 종래의 증분해석법과 비교하여 매우 적게할 수 있으며 동시에 당해 사전의 등록번호로부터 치환되어 압축이 시행된 압축데이터 자체도 종래의 증분해석법에 비해 매우 적은 데이터량으로 할 수 있다.
또한, 특허청구범위 제6항의 발명은 특허청구범위 제5항에 있어서 압축대상이되는 전체 데이터열에 대하여 처리가 행해질때까지의 상기 공정(B),(C)의 반복을 1회의 패스로 한 경우에 전회의 패스에서 갱신된 사전을 이용하여 현재의 패스에서 데이터 압축을 행하는 데이터 압축방법에 있어서, 현재의 패스에서 상기 공정(B),(C)의 반복횟수가 전회의 패스에서의 반복횟수 이하의 경우에는 다음의 패스로 이행하고, 현재 패스에서의 상기 공정(B),(C)의 반복횟수가 전회의 패스에서의 반복횟수보다 큰 경우에는 전회의 패스에서 갱신된 사전을 최종적인 복원용 정적사전으로서 출력하는 동시에 당해 정적사전으로부터 1회의 패스의 데이터 압축을 행하며, 압축된 데이터열을 최종적인 복원용 압축데이터로서 출력하는 것을 특징으로한다.
특허청구범위 제6항의 발명에 의하면, 현재 패스에서의 처리의 반복횟수와 전회 패스처리의 반복횟수를 비교함으로써 데이터 압축율이 최적으로 되는가의 여부가 판단된다. 그리고 최적인 데이터 압축율로 된 단계에서 당해 사전을 최종적인 정적사전으로하고, 당해 정적사전 및 당해 정적사전으로부터 압축된 데이터가 출력된다. 따라서 압축율이 매우 높은 가증분해 알고리즘에 의해 데이터 압축이 가능하게 되어 데이터 압축율이 매우 높게 되는 동시에 출력된 사전은 정적사전이 되기 때문에 필요한 데이터열을 이 정적사전을 이용하여 자유로이 복원하는 것도 가능하다.
또한, 특허청구범위 제7항의 발명은 특허청구범위 제1항 내지 제6항중 어느것에 있어서 상기 사전에는 등록번호, 등록데이터열과 함께 사용빈도 정보가 기억되며, 사용빈도가 낮은 등록데이터열을 순차적으로 삭제하는 공정을 포함하는 것을 특징으로 한다.
특허청구범위 제7항의 발명에 의하면 사용빈도가 낮은 등록데이터열의 등록을 순차적으로 삭제하는 공정이 포함된다. 따라서, 사전의 등록가능수에 한계가 있는 경우 등에 사전의 데이터양을 최적인 사이즈로 하는 것이 가능하다.
또한, 특허청구범위 제8항의 발명은 특허청구범위 제7항에 있어서, 상기 사용빈도가 낮은 등록데이터열의 삭제가 사전에 등록되어 있는 등록데이터열의 사용빈도를 순차적으로 감소시키고, 처음에 사용빈도수가 소정수 이하로 된 등록데이터열로부터 우선하여 삭제함으로써 행해지는 것을 특징으로한다.
특허청구범위 제8항의 발명에 의하면, 사전에 등록되어 있는 등록데이터열의 사용빈도를 순차적으로 감소시켜가고, 처음에 사용빈도수가 소정수 이하로 된 등록데이터열로부터 우선하여 삭제된다. 이것에 의해 사전의 등록가능수에 한계가 있는 등으로 사전의 데이터량을 최적인 사이즈로 하는 것이 가능하다. 그래도 처음에 사용빈도가 소정수 이하로 된 등록데이터열이 우선적으로 삭제되기 때문에 사전에 사용빈도가 높은 등록데이터열을 남길 수 있고, 최적인 사전을 생성할 수 있다.
또한, 특허청구범위 제9항의 발명은 특허청구범위 제1항 내지 제8항중 어느 한 항에 있어서 압축대상이 되는 데이터열이 문자의 인쇄시에 필요한 폰트 데이터인 것을 특징으로 한다.
특허청구범위 제9항의 발명에 의하면, 문자인쇄시에 필요한 폰트 데이터가 압축대상이 된다. 이러한 폰트 데이터로서는 비트맵 폰트 데이터, 아우트라인 폰트 데이터 등이 고려된다. 비트맵 폰트 데이터를 압축하는 경우에는 예를들면 종방향, 횡방향에 나란한 소정수 단위(예를들어 1바이트단위, 1워드 단위)의 도트 데이터를 압축대상으로 할 수 있다. 또한, 아우트라인 폰트 데이터를 압축하는 경우에는 예를들어 문자의 윤곽을 구성하는 각점의 특성정보, 각점의 벡터좌표를 제어하기 위한 정보등을 압축대상으로 할 수 있다.
또한, 특허청구범위 제10항의 발명은 특허청구범위 제9항에 있어서, 상기 폰트 데이터 중의 일부만이 상기 압축대상이 되는 데이터열로 되고 다른 일부가 다른 데이터 압축방법으로부터 압축되는 것을 특징으로한다.
특허청구범위 제1항의 발명에 의하면, 폰트 데이터를 구성하는 데이터의 특성에 따라 일부의 데이터가 정적사전, 증분분해 알고리즘, 가증분해 알고리즘 등을 이용한 데이터 압축방법으로 압축되고, 다른 일부가 다른 압축방법, 예를들면 하프만부호 방법에 의해 압축된다. 이와같이, 데이터의 특성에 따라 적용하는 압축방법을 바꿈으로써 데이터의 압축율을 더욱 높힐 수 있다.
또한, 특허청구범위 제1항의 발명은 특허청구범위 제9항 또는 제10항 중 어느 한항에 있어서, 공통의 글 자체를 가진 상기 문자에 대해서는 공통의 상기 사전을 이용하여 데이터 압축을 행하는 것을 특징으로한다.
특허청구범위 제11항의 발명에 의하면, 공통의 글 자체를 가진 문자에 대해서는 공통의 사전을 이용하여 데이터 압축이 행해진다. 예를들면 명조체의 문자에 대해서는 명조체 전용을 이용하여 사전의 갱신, 데이터 압축을 행하고, 최종적인 정적사전, 압축데이터를 얻는다. 또한, 고딕문자열에 대해서는 고딕전용 사전을 이용하여 사전의 갱신, 데이터 압축을 행하고, 최종적인 정적사전, 압축데이터를 얻는다. 이와같이 글 자체 각각에 대하여 사전을 공통화함으로써 데이터를 효율좋게 압축할 수 있게 된다.
또한, 특허청구범위 제12항의 발명은 특허청구범위 제1항 내지 제8항 중 어느 한항에 있어서 압축대상인 데이터열이 문자열인 것을 특징으로한다.
특허청구범위에 제12항의 발명에 의하면, 특허청구범위 제1항 내지 제12항중 어느 한항에 있어서, 최종적으로 생성된 사전에 포함되는 등록번호와 등록데이터열의 정보로부터 상기 등록데이터열을 복원전용 데이터형식으로 변환한 복원전용 등록데이터열과 당해 복원전용 등록데이터열의 데이터 길이와 당해 복원전용 등록데이터열의 개시 어드레스정보를 포함하는 복원전용의 사전이 생성되는 것을 특징으로 한다.
특허청구범위 제13항의 발명에 의하면, 복원전용 등록데이터열과 이 복원전용 등록데이터열의 데이터길이 및 이 복원전용 등록데이터열의 개시 어드레스의 정보를 포함하는 복원전용 사전이 생성된다. 그리고 복원시에는 이 복원전용 사전을 이용하여 데이터의 복원이 행해진다. 즉, 상기 개시 어드레스로 지정되는 위치에서 상기 데이터 길이로 지정되는 길이의 상기 복원전용 등록데이터열을 읽어냄으로써 사전에서 데이터를 읽어내며, 복원처리가 행해진다. 이 경우, 복원전용 등록데이터열은 복원전용의 데이터형식으로 변환되었다. 따라서, 통상의 사전을 이용하는 경우보다도 매우 빠르게 복원처리를 행할 수 있다.
또한 특허청구범위 제14항의 발명은 특허청구범위 제1항 내지 제13항 중 어느 한항의 데이터 압축방법에 의해 생성된 압축데이터와 최종적인 사전을 이용하여 당해 데이터 압축방법에 따른 복원처리에 의해 압축대상이 된 데이터열을 복원하는 것을 특징으로한다.
특허청구범위 제14항의 발명에 의하면, 상기 데이터 압축방법에 의해 생성된 압축데이터와 최종적인 사전을 이용하여 원래의 데이터열이 복원된다. 이것에 의해 이 복원된 데이터열을 이용하여 소정의 처리, 예를들면 문자의 인쇄등의 처리를 행할 수 있다.
또한, 특허청구범위 제15항의 발명은 특허청구범위 제1항 내지 제13항 중 어느 한항의 데이터 압축방법에 의해 생성된 압축데이티와 최종적인 사전을 이용하여 당해 데이터 압축방법에 따라 복원처리에 의해 압축대상이 된 데이터열을 복원하는 수단을 포함하는 것을 특징으로한다.
특허청구범위 제15항의 발명에 의하면, 상기 데이터 압축방법에 의해 생성된 압축데이터와 최종적인 사전을 이용하여 복원수단에 의해 원래의 데이터열이 복원된다. 그리고, 이 복원수단은 예를들면 컴퓨터, 프린터 등의 정보처리장치에 저장될 수 있다.
이하에서, 본 발명의 최적인 실시예에 관해서 설명한다. 또한, 이하의 제1, 제2실시예에는 설명을 간략하게 하기 위해 데이터열로서 주로 문자열을 압축하는 경우를 예에 의해 설명한다. 그러나, 본 발명에 있어서 데이터열에는 이와같은 문자열 뿐만 아니라 예를들면 폰트 데이터를 구성하기 위한 바이트열, 워드열의 모든 종류의 데이터열이 포함된다.
[실시예 1]
제1도에는 본 실시예의 데이터 압축방법을 설명하기 위한 플로차트가 도시되어 있다. 본 실시예의 데이터 압축방법에는 등록번호에 관련된 등록 데이터열을 등록할 수 있는 사전이 사용된다. 그리고, 데이터열의 2이상의 조합을 이 등록번호에 치환함으로써 압축이 행해지게 된다. 우선, 압축대상인 전체 데이터열(예를들면 문자열)에서 사전이 생성되고(스텝 A1), 데이터 압축에 최적인 사전이 생성될 때까지 사전의 갱신이 반복된다(스텝 A2, A3). 그리고 최적인 사전이 생성된 단계에서 이 사전을 최종적인 복원용 정적사전으로 하고, 이 정적사전에 의해 압축대상인 데이터열의 데이터 압축이 행해진다(스텝 A4). 그리고, 이에 의해 압축된 최종적인 복원을 압축데이터 및 최종적인 복원용 정적사전이 출력되고, 마스크 ROM, EEPROM 등의 기억장치, 기억매체에 저장된다. 그리고, 이 기억장치 등에 저장된 정적사전 및 압축데이터를 이용하여, 프린터 또는 호스트 컴퓨터 등의 정보처리장치 내에서 데이터의 복원처리가 행해지게 된다.
또, 사전을 생성, 갱신해갈 때 어느 단계에서 데이터압축에 최적인 사전으로 할까를 결정하는 수단으로서는 후술하는 바와 같이 각종의 수법이 고려된다.
제2도에는 본 실시예의 데이터 압축방법이 사용되는 데이터압축장치(12)의 구성의 일예가 도시되어있다. 압축대상인 전체 데이터 열(11)은 우선 사전생성, 갱신수단(13)에 입력되고, 이에의해 사전의 생성,갱신이 행해진다. 그리고 데이터압축에 최적인 사전이 생성된 단계에서 당해 사전은 정적사전(14)으로서 정적사전보지수단(15)에 보지 된다. 그리고, 이 보지 된 최적의 정적사전(14)은 정적사전출력수단(16)에 의해 외부의 기억수단(도시되지 않음)으로 출력되는 한편, 데이터압축수단(17)에 있어서 전체 데이터열(11)을 데이터 압축하는 것에 이용된다. 이 데이터압축은 데이터열의 2이상의 조합을 사전의 등록번호에 치환됨으로써 행해진다. 그리고 이 결과 얻어진 압축데이터(19)는 압축데이터출력수단(18)에 의해 외부의 기억수단으로 출력된다.
다음에 본 실시예에 있어서의 사전의 구성에 대하여 설명한다. 예를 들면, “static-string-dictionary”라는 데이터열(문자열)을 압축하는 경우를 생각한다. 이 경우에 사전에 “st”, “at”, “ic”, “-”, “st”, “ring-d”, “ic”, “tionary”의 형태로 8개의 데이터열의 조합이 등록되어 있다고 하자. 이 경우에는 이러한 데이터열의 조합은 예를들면 다음에 표시하는 바와같이 등록번호와 관련하여 등록되어 있다.
0 : st
1 : at
2 : ic
3 : -
4 : ring-d
5 : tionary
로 하면, “static - string - dictionary”라는 데이터열은 이러한 등록번호에 의해 0, 1, 2, 3, 0, 4, 2, 5와 같이 치환가능하게 되고, 이것에 의해 데이터가 압축된다.
다음에 최적인 사전을 생성하기 위한 각종의 수단에 관해 설명한다. 본 실시예에서는 최종적으로는 정적사전과 압축데이터의 2개가 출력되고, 이러한 것이 기억장치에 저장된다. 따라서 기억장치의 사용용량을 절약하기 위해서는 최종적인 정적사전, 압축데이터의 데이터양을 감할 필요가 있고, 이러한 데이터량을 적게할 수 있는 사전을 최적인 사전이라할 수 있다. 즉, 최적인 사전으로 하기 위해서는 사전장체의 데이터양을 적게할 수 있는 것이 바람직하고, 또는 압축데이터의 데이터양을 적게할 수 있는 것이 바람직하다. 이 때문에 본 실시예에서는 예를들면 이하의 제1-제4의 수법을 이용하고 있다. 이하에서는 데이터열로서 문자열을 예로 택하여 설명한다.
(A) 최적인 사전을 얻기 위한 제1수법
이 수법에서는 슬라이드사전이라 불리우는 수법을 이용하고, 조합갯수가 많은 데이터열의 조합을 우선적으로 등록함으로써 사전을 생성한다. 그리고, 생성된 사전의 등록수를 사용빈도 정보에 관해서 순차적으로 삭제해감으로써 최적인 사전을 얻는다.
우선 슬라이드 사전이라 불리우는 수법에 관해 제3(a)도 내지 제3(e)도를 이용하여 설명한다. 이 수법에서는 압축대상인 전체문자열(41)을 최초로부터 차례로 대상문자열(43)로서 작업영역인 메모리 공간위에 기억시켜간다. 그리고, 과거의 문자열(42)(최초로부터 대상문자열(43)의 전까지)에 당해 대상문자열(43)과 동일한 문자열이 되는가를 조사한다. 그리고 과거에 동일한 문자열이 되면, 당해 대상문자열(43)의 최초의 1문자를 대상문자열(43)로부터 과거의 문자열(42)로 이동(슬라이드)한다. 한편, 더 과거에 동일한 문자열이 있다면, 다음의 문자열도 일치하는가를 조사하고, 이것을 반복함으로써 과거의 문자열(42)과 대상문자(43)와의 사이에 가장 긴 일치문자열(문자열의 조합갯수가 가장 많은 것)을 찾아낸다.
예를들면, 압축대상인 문자열이 ABCABCDEF였던 경우를 생각한다. 이 경우는 우선 A가 대상문자열(43)이 되지만, 과거에 동일한 문자열이 없기 때문에 A는 과거의 문자열(42)인 슬라이드 사전으로 이동된다(제3(b)도 참조). 그리고 B,C에 대해서도 과거에 동일한 문자열이 없기 때문에 슬라이드 사전으로 이동된다(제3(c)도 참조). 그리고, 다음에 A가 대상문자열(43)이 되지만 이 경우에는 A는 슬라이드 사전내에 있기 때문에 다음의 B가 일치하는가의 여부가 조사된다(제3(d)도 참조) 그리고, 이 경우는 일치하기 때문에 다음에 C가 일치하는가의 여부가 조사된다(제3(e)도 참조). 그리고 다음에 D가 일치하는가의 여부가 조사되지만 D는 슬라이드 사전내에 없다. 따라서, 이 경우는 ABC가 가장 긴 일치문자열이 된다.
또한, 슬라이드 사전이라 불리우는 수법에서는 이와같이 가장 긴 일치 문자열 ABC를 찾아냄으로써, 예를들면 ABCABCDEF라는 문자열을 「A」, 「B」, 「C」, 「3개전과 3문자 동일」, 「D」, 「E」, 「F」로 압축한다. 구체적으로는, 일치가 없는 경우에는 그 문자열을 「일치없는 플래그(flag)=1 및 그 문자코드」에 의해 표시하고, 일치가 있는 경우에는 그 가장 긴 일치문자열을 「일치없는 플래그= 0 및 일치장소와 일치길이」로 표시함으로써 데이터 압축을 행한다.
그러나, 본 실시예에 있어서는 슬라이드 사전의 수법을 실제의 데이터 압축에 이용하는 것은 없고, 압축대상 문자열중 가장 긴 일치문자열을 찾아내기 위해서만 이용하고 있다. 그리고, 본 실시예에서는 가장 긴 일치문자열이 발견되면 이 가장 긴 일치문자열을 등록번호에 관련하여 사전에 등록한다. 상기 예에서는 ABC가 사전에 등록된다. 이와같이하여, 전체 압축대상 문자열중에서 2회 이상 나타나는 가장 긴 일치문자열을 찾아내고, 이것이 사전에 등록되는 것이다. 이것에 의해 조합갯수가 많은 문자열이 우선적으로 사전에 등록된다.
또, 슬라이드 사전수법을 이용하는 경우는 문자열을 메모리에 기억해 둘 필요가 있다. 그러나, 제3(a)도에 도시한 바와같이 메모리의 용량은 유한하므로 메모리에 기억될 수 있는 범위는 유한하다. 따라서, 이 경우에는 과거의 문자열(42)중에서 메모리에 기억될 수 있는 범위내의 것만이 슬라이드 사전으로 된다.
제4도에는 슬라이드 사전수법을 이용하여 최적인 사전을 얻는 수법을 설명하기 위한 플로차트가 도시되어 있다. 제4도에 도시되어 있는 바와같이 우선 슬라이드 사전수법을 이용하여 압축대상 문자열중에 2이상 나타나는 가장 긴 일치문자를 찾아내고, 이러한 것을 사전에 등록함으로써 사전이 생성된다(스텝 B1). 다음에 생성된 사전을 이용하여 전체 압축대상 문자열 중에서 사전등록문자열과 가장 길게 일치하는 문자열의 조합을 찾아내고, 찾아낸 시점에서 그 등록문자열의 사용빈도를 1개씩 증가시킨다(스텝 B2). 예를들면, 압축대상 문자열이 ABCDEF이고, 등록문자열이 AB와 ABC인 경우는 등록문자열 ABC의 사용빈도가 1개씩 증가된다.
이와 같이 하여 사용빈도를 계산한 후, 다음에 사용빈도가 작은 등록문자열에서 차례로 예를들면 100개 정도의 등록을 삭제한다(스텝 B3). 이 경우 예를들면 사전에의 등록가능수가 4096 - 256 = 3840개인 경우는 전체등록수가 3840개 미만으로 되지 않도록 등록의 삭제를 행한다. 구체적으로는 예를들면 삭제전의 사전에의 전체등록수가 3900개인 경우에는 60개만을 삭제한다.
다음에 전체등록수가 3840개(소정수)이하인가의 여부가 판단되고(스텝 B4), 3840개 보다 많은 경우에는 스텝 B2에 돌아가 다시한번 사용빈도가 계산되며, 스텝 B3에서 100개 정도의 등록이 삭제된다. 이와같이하여 스텝 B2-B4를 반복하고, 사전의 등록수를 순차적으로 조금씩 감소시켜 간다. 그리고, 등록수가 3840개가 된 시점에서 스텝 B5로 이행한다. 상기와 같이 사전에는 예를들면 3840개 등록할 수 있기 때문에 등록수가 3840개가 된때에 그 사전은 최적인 사전이 된다.
마지막으로 이 최적인 사전을 정적인 사전으로하고, 이 정적사전에 의해 전체 압축대상 문자열을 압축하며, 최종적인 정적사전과 압축데이터를 출력하게 된다(스텝 B5, B6)
(B) 최적인 사전을 얻기 위한 제2수법
이 수법에서는 출현확률이 높은 문자열의 조합을 우선적으로 등록함으로써 사전을 생성한다. 그리고 생성된 사전의 등록수를 사용빈도 정보에 의거하여 순차적으로 삭제해감으로써 최적인 사전을 얻는다.
우선, 압축대상인 전체 문자열을 예를들면 1회 해석함으로써 각 문자열의 출현확률을 계산한다. 그후에 이 출현확률에 의거하여 문자열의 조합의 출현확률을 구한다.
예를들면 상기 해석,계산에 의해 a,b,c,d의 출현 확률이
a : 50% b : 20% c : 10% d : 5%로 구해진다고 하자.
그러면 문자열의 조합 aa등의 출현확률은
aa : 25% aaa : 12.5% ab : 10% ba : 10% ac : 5% ca : 5% aab : 5% aba : 5% baa : 5% ad : 2.5%...
로 계산된다. 단, 이것은 문자열간의 출현확률에 상관관계가 없다고 가정한 경우의 예상치이다.
이와 같이 하여 문자열의 조합의 출현확률을 구한 후, 이 출현확률이 높은 문자열의 조합에서 우선적으로 등록함으로써 사전을 생성한다. 다음에 예를들면 제4도의 스텝 B2-B4와 동일한 수법에 의해 사용빈도가 적은 문자열의 등록을 사전의 등록이 소정수 예를들면 3840개가 될 때까지 삭제하고, 최적인 사전을 생성한다. 그리고, 스텝 B5, B6과 동일형태의 수법에 의해 최종적인 정적사전과 이것에 의해 압축된 압축데이터를 출력하게 된다. 이상의 수법에 의하면 최초의 해석이 1회의 주사에서 완료할 수 있다는 이점이 있다.
(C) 최적인 사전을 얻기위한 제3수법
이 수법에서는 증분분해 알고리즘을 이용하여 최적인 사전을 얻는다. 증분분해 알고리즘의 상세에 대해서는 후술하는 제2실시예에서의 증가분해 알고리즘과 대비해서 설명한다.
제5도에는 증분분해 알고리즘을 이용하여 최적인 사전을 얻는 수법을 설명하기 위한 플로차트가 도시되어 있다. 이 수법에서는 우선 사전의 초기화를 행한다(스텝 C1). 이것에 의해 사전의 등록번호 0-255에만 등록 문자열이 등록된 상태가 된다. 구체적으로는 0-255에는 아스키코드의 문자가 기억된다. 다음에 압축데이터의 출력횟수를 표시하는 NUM0가 NUM0=0으로 설정된다(스텝 C2). 그후 증분분해 알고리즘을 이용해 사전을 갱신하면서 전체 압축대산 문자열에 대한 데이터 압축을 행하고, 압축데이터를 출력할때에 상기의 NUM0의 값을 1씩 증가시킨다(스텝 C3). 그리고 이때에도 압축데이터 자체는 출력하지 않는다. 스텝C3의 처리는 사전의 갱신을 목적으로 하는 처리이다.
다음에, NUM1이 NUM1=D로 설정된다(스텝 C4). 그후 스텝C3에서 최종적으로 얻어진 사전을 이용하여 스텝C3와 같은 처리를 행한다. 즉, 증분분야 알고리즘을 이용하여 사전을 갱신하면서 전체 압축대상 문자열에 대한 데이터 압축을 출력할 시에 상기 NUM1의 값을 1씩 증가시킨다(스텝C5). 그리고 이 때에도 압축데이터 자체는 외부로 출력되지 않는다.
다음에 NUM1>NUM0인가의 여부가 판단된다(스텝 C6). 이것에 의해 스텝 C5의 처리에 의해 데이터 압축율이 최적이 되었는가 여부가, 즉 최적인 사전이 되었는가의 여부가 판단된다. 그리고 NUM1NUM0이 되면, 또 최적인 사전에는 없는 것으로 해서, NUM0=NUM1로 되고(스텝 C7), 스텝 C4, C5의 처리가 반복된다. NUM0, NUM1은 압축데이터의 출력횟수를 표시하고, 이것이 적다고 하는 것은 압축데이터의 데이터양도 작다는 것을 의미한다. 따라서 NUM1NUM0 이라고 하는 것은 스텝 C5의 처리로 데이터 압축율이 향상하는 것을 의미한다. 이 때문에 이 경우에는 다시 스텝 C4, C5의 처리가 반복되는 것으로 나누어져 있다. 그리고 스텝 C6에서 NUM1>NUM0인 경우에 데이터 압축에 최적인 사전이 되었다고 판단된다.
다음에 이 최적인 사전을 정적인 사전으로하고, 이 정적사전에 의해 전체 압축대상 문자열이 압축된다(스텝 C8). 단, 이 데이터 압축시에는 사전의 갱신은 행해지지 않는다. 그리고 최후에 최종적인 정적사전과 이것에 의해 압축된 압축데이터가 출력된다(스텝 C9).
제6도에는 이상의 처리를 시각적으로 표시한 것을 도시하고 있다. 전체 압축대상 문자열(21)은 우선 1회째 해석을 받고, 이것에 의해 잠정적인 사전(22)이 작성된다(이 사전은 동적인 사전이다). 다음에 다시 전체 압축대상문자열(21)은 2회째의 해석을 받고 갱신판1의 사전(23)이 작성된다. 더욱이 동일한 형태로하여 갱신판2의 사전(24)이 작성된다. 이와같이 해서 서전의 갱신을 반복하고 데이터의 압축율을 판정하여 최적의 사전이 얻어지는 단계에서 이것을 결정판의 정적사전(25)으로 한다. 그리고 이 정적사전(25)에 의해 전체압축대상 문자열(21)의 압축을 다시 행한다. 단, 이때에는 정적사전(25)은 정적인 채로 있고, 사전의 갱신은 행하지 않는다. 그리고, 이 정적사전(25)와 압축된 데이터가 외부에 출력되고, 기억장치에 저장된다.
또한 제5도 및 제6도에 도시한 수법과 LZW와의 주요한 상위는 이하와 같다. 즉, LZW에는 데이터압축후에 최종적으로 압축데이터만이 생성물로서 출력되고, 사전은 동적인 사전에 존재하여 출력되지 않는다. LZW는 전화회선을 통한 데이터 통신에 이용되는 데이터 압축수법이고, 송신측은 LZW에 의해 압축데이터를 출력하며, 수신측이 이것을 복원한다. 그리고, 이 복원시에는 압축데이터의 특성을 해석하고, 압축데이터에서 다시 동적사전을 작성하고 정정하면서 데이터를 복원해갈 필요가 있다. 따라서 압축데이터의 최초로부터 차례로 처리를 행해가야 하며, 복원속도가 늦고, 또 필요한 데이터열로 랜덤에 액세스하여 복원할 수는 없다. 따라서, LZW에 의해 압축된 데이터를 프린트등의 폰트 데이터에 이용하는 것은 곤란하다.
이에 대하여 제5도와 제6도에 도시한 수법에서는 LZW와 다르고 최종적으로는 압축데이터, 정적사전의 2개가 출력된다. 따라서, 데이터의 복원을 하는 경우도 다시 사전을 작성하고 정정할 필요가 없기 때문에 복원속도가 빠르다. 또, 정적사전을 이용하고 있기 때문에 압축데이터중의 소정의 데이터열로 렌덤에 액세스하는 것도 가능하다. 또한, 이와같이 복원속도가 빠르고, 데이터열로 랜덤에 액세스할 수 있다는 이점은 이 제3수법만 택하지 않고 전술한 제1수법, 제2수법 및 후술하는 제4수법에서도 얻을 수 있는 이점이 있다.
(D) 최적인 사전을 얻기 위한 제4수법
이 수법에서는 가증분해 알고리즘을 이용하여 최적인 사전을 얻는다.
가증분해 알고리즘에 관해서는 제2실시예에서 상술한다. 그러나, 처리의 흐름 자체는 스텝 C3, C5에서의 데이터 압축이 가증분해 알고리즘에 의해 행해지는 외에도 제5도와 거의 동일한 형태이다.
상기 제3수법에서는 증분분해 알고리즘을 이용해 데이터 압축이 행해지기 때문에 높은 압축율을 압축데이터를 얻을 수 있지만, 1문자씩 등록하는 공정이 존재하기 때문에, 처리속도는 반드시 빠르다고는 말할 수 없고, 또한 가증분해 알고리즘과 비교하면 압축율은 높지 않다. 따라서, 압축율을 높게하는 경우에는 이 가증분해 알고리즘을 이용하는 제4수법을 채용하는 것이 바람직하다.
또, 이상의 제1수법 - 제4수법에 있어서, 압축데이터는 고정비트길이의 코드로서 출력된다. 이 코드는 예를들면 12비트이고, 16비트의 1워드이기도 하다. 그리고 16비트의 1워드로한 경우에는 처리속도가 개선된다는 장점을 가진 반면에 압축율은 12비티의 경우보다도 떨어진다는 단점을 가진다.
이상과 같이, 본 실시예에 의하면, 최적인 정적사전을 작성하기 위해서 사용빈도에 의거하여 사전등록을 삭제하기도하고, 압축시에 다수회 데이터를 주사할 필요가 있기도 하며, 처리시간은 길게된다. 그러나 이것은 사용자에 따라서는 전혀 문제가 되지 않는다. 결국, 압축처리를 행하는 것은 데이터를 예를들면 서체교환이 불가능한 기억장치, 기억매체(ROM 등)에 기입할때에 필요한 것이고, 이것은 압출후 복원시의 처리시간에 여하한 영향도 없기 때문이다. 구체적으로 말하면 사용자가 당해 압축방법에 의해 압축된 데이터를 저장한 기억매체를 답재한 프린터를 사용해 인쇄를 행하는 경우 메이터측이 압축데이터를 작성하는 시간은 많이 걸리지만, 사용자가 인쇄시키고 싶은 경우에 행해지는 복원처리의 속도는 특히 느리게 되는 것은 아니기 때문이다.
[실시예 2]
(A) 가증분해법
제7도에는 본 제2실시예에서 사용되는 데이터 압축방법(이하, 가증분해법 또는 가증분해 알고리즘이라 부름)을 모식적으로 설명하는 도면이 도시되어 있다.
압축대상인 문자열 데이터(1)는 우선 작업용 기억수단인 작업용버퍼(2) 데이터최초의 부분으로부터 저장되어간다. 다음에 당해 작업용버퍼(2)중의 문자열(3)로 사전(3)에 등록되어 있는 문자열이 존재하지 않는가 어떤가를 비교하고, 존재하면 당해 사전(3)의 정보를 갱신하는 동시에 당해 작업용 버퍼(2)중의 문자열을 등록번호로 치환하고, 당해 작업용 버퍼(2)에 다음의 대상문자열을 추가한다. 한편, 등록되어 있는 문자열이 존재하지 않으면 당해 작업용 버퍼(2)중의 선두의 2문자를 당해 사전(3)에 등록하고 선두의 1문자를 압축데이터(4)로서 출력한다. 그리고, 당해작업용버퍼(2)에 다음의 대상문자열을 추가하고, 다시 당해 작업용 버퍼(2)중의 문자열로 사전(3)에 등록되어 있는 문자열이 존재하는가 어떤가를 비교한다. 이상의 처리를 반복함으로써 데이터의 압축을 행한다.
다음에 증가분해법을 이용하여 다음에 표시하는 문자열 데이터를 압축대상으로서 처리히고, 정적사전과 압축데이터를 얻는 경우에 관해서 상세히 설명한다. 여기에서 압축대상인 문자열 데이터는 「ABCEBCHA, BBCCDBCH, ABCABEHD, ABBCGABK ...」이다. 단, 여기에서는 서체교환 가능한 기억소자로 구성되는 사전의 0-255번까지에는 아스키코드의 문자 데이터가 등록되어 있다. 또한, 작업용 기억수단에는 16바이트 용량의 버퍼를 준비한다.
(1) 최초에 압축대상인 문자열 데이터의 선두로부터 작업용 버퍼(2)의 용량분(16바이트) 데이터를 취입한다. 그러면 작업용 버퍼(2)중의 문자열은 「ABCEBCHA, BBCCDBCH」로 된다. 여기에서 각 문자는 각각 1바이트로 표현되는 수치데이터이고, 이것은 후술하는 바와같이 아스키코드표에 따른다. 예를들면 “A”는 65, “B”는 66, “C”는 67이다.
(2) 다음에 이 작업용 버퍼중에 이미 사전에 등록되어 있는 2문자 이상의 문자열(문자열의 조합)이 존재하는가 어떤가를 조사한다. 그러나, 그와같은 문자열은 등록되어 있지 않기 때문에 사전의 예를들면 256번째에 선두의 2문자 “AB”를 길이는 2(문자분), 데이터란에는 65+66(“A”과 “B”의 아스키코드)로서 등록하고, 이 “256”번의 사용빈도를 1회로 한다. 더욱이, 작업용 버퍼중 선두의 1문자 “A”의 등록번호 “65”를 압축데이터로서 출력하고, 작업용버퍼상에는 소거한다. 그리고, 이것에 의해 생긴 작업용 버퍼상의 공란의 1바이트를 메울 수 있도록 그 이후의 문자열을 전부 선두 방향에 시프트시키고, 그 결과 생긴 작업용버퍼 말단의 공백 1바이트에는 대상의 문자열 데이터의 연속으로부터 1문자분 “A”를 취입한다. 그러면, 작업용버퍼의 문자열은 「BCEBCHAB, BCCDBCHA」로 된다.
(3) 다음에, 다시 이 작업용 버퍼중에 이미 사전에 등록되어있는 2문자 이상의 문자열이 존재하는가 어떤가를 조사한다. 그러면, 작업용 버퍼의 7,8문자째에 “AB”의 문자열이 존재하고 있기 때문에 2바이트분의 당해 문자열 “AB”를 256의 문자에 치환하고, 사전의 “256”번의 문자열의 사용빈도를 2회에 갱신한다. 이 치환에 의해 작업용 버퍼에는 1바이트의 공란이 생기기 때문에 이것을 메울 수 있도록 그 이후의 문자열을 전부 선두방향에 시프트시키고, 그 결과 생기는 작업용버퍼 말단의 공백의 1바이트에는 대상 문자열의 계속에서 1문자분“B”를 취입한다. 그러면 작업용 버퍼중의 문자열은 「BCEBCH 256 B, CCDBCHAB」로 된다.
(4) 다시 이 작업용버퍼중에 이미 사전에 등록되어 있는 2문자 이상의 문자열이 존재하는가 어떤가를 조사한다. 그러면, 작업용 버퍼의 15, 16문자째에 “AB”의 문자열이 존재하고 있기 때문에 2바이트분의 당해 문자열 “AB”를 256의 문자에 치환하고, 사전의 “256”번의 문자열의 사용빈도를 3회에 갱신한다. 이 치환에 의해 작업용버퍼에는 1바이트의 공란이 생기기 때문에 이것을 메울 수 있도록 그 이후의 문자열을 전부 선두방향으로 시프트시키고, 그 결과 생기는 작업용버퍼 종단의 공란에 1바이트에는 대상문자열의 계속에서 1문자분 “C”를 취입한다. 그러면, 작업용 버퍼중의 문자열은 「BCEBCH 256 B, CCDBCH 256 C」로 된다.
(5) 다시 이 작업용버퍼중에 이미 사전에 등록되어있는 2문자 이상의 문자열이 존재하는가의 여부를 조사한다. 그러나, 그와같은 문자열은 등록되어 있지 않기 때문에 사전의 예를들면 257번째에 선두의 2문자 “BC”를 길이는 2(문자분), 데이터란에는 66+67로서 등록하고, 이 “257”번의 사용빈도를 1회로 한다. 더욱이, 작업용 버퍼중의 선두의 1문자 “B”의 등록번호 “66”을 압축데이터로서 출력하고, 작업용 버퍼상에는 소거하며, 이것에 의해 생긴 작업용버퍼상 공란의 1바이트를 메울 수 있도록 그 이후의 문자열을 전부 선두방향으로 시프트시키고, 그 결과 생긴 작업용버퍼 종단의 공백의 1바이트에는 대상문자열 데이터의 계속에서 1문자분 “A”를 취입한다. 그러면, 작업용 버퍼의 문자열은 「CEBCH 256 BC, CDBCH 256 CA」로 된다.
(6) 다시 이 작업용버퍼중에 이미 사전에 등록되어 있는 2문자 이상의 문자열이 존재하는가의 여부를 조사한다. 그러면 작업용버퍼의 3,4문자째, 7,8문자째 및 11,12문자째에 “BC”의 문자열이 존재하고 있기 때문에 합계 6바이트분의 당해 문자열 “BC”를 각각 257의 문자로 치환하고, 사전의 “257”번 문자열의 사용빈도를 4회 갱신한다. 이 치환에 의해 작업용 버퍼에는 3바이트의 공란이 생기기 때문에 이것을 메울 수 있도록 그 이후의 문자열을 전부 선두방향으로 시프트시키고, 그 결과 생긴 작업용 버퍼 말단의 공백의 3바이트에는 대상문자열 데이터의 계속에서 3문자분 “BEH”를 취입한다. 그러면, 작업용 버퍼중의 문자열은 「CE 257 H 256 257 CD, 257 H 256 C ABEH」로 된다.
(7) 다시 이 작업용버퍼중에 이미 사전에 등록되어있는 2문자 이상의 문자열이 존재하는가의 여부를 조사한다. 그러면, 작업용 버퍼의 13, 14문자째에 “AB”의 문자열이 존재하고 있기 때문에 2바이트분의 당해 문자열 “AB”를 256의 문자에 치환하고, 사전의 “256”번의 문자열의 사용빈도를 4회 갱신한다. 이 치환에 의해 작업용버퍼에는 1바이트의 공란이 생기기 때문에 이것을 메울 수 있도록 그 이후의 문자열을 전부 선두방향으로 시프트시키고, 그 결과 생기는 작업용버퍼 말단의 공백의 1바이트에는 대상문자열의 계속에서 1문자분 “D”를 취입한다. 그러면 작업용버퍼중의 문자열은 「CE 257 H 256 257 CD, 257 H 256 C256 EHD」로 된다.
(8) 다시 이 작업용 버퍼중에 이미 사전에 등록되어 있는 2문자 이상의 문자열이 존재하는가를 조사한다. 그러나, 그와같은 문자열은 등록되어 있기 때문에 사전의 예를들면 258번째에 선두의 2문자 “CE”를 길이는 2(문자분), 데이터란에는 67+69로서 등록하고, 이 “258”번의 사용빈도를 1회로한다. 더욱이, 작업용버퍼중 선두의 1문자 “C”의 등록번호 “67”을 압축데이터로서 출력하고, 작업용 버퍼상에는 소거하고, 이것에 의해 생긴 작업용버퍼상의 공란의 1바이트를 메우도록 그 이후의 문자열을 전부 선두방향으로 시프트시키고, 그 결과 생긴 작업용버퍼 말단의 공백을 1바이트에는 대상문자열 데이터의 계속에서 1문자분 “A”를 취입한다. 그러면, 작업용버퍼의 문자열은 「E 257 H 256 257 CD 257, H 256 C 256 EHDA」로 된다.
(9) 다시 이 작업용 버퍼중에 이미 사전에 등록되어있는 2문자 이상의 문자열이 존재하는가를 조사한다. 그러나, 그와같은 문자열은 등록되어 있지 않기 때문에 사전의 예를들면 259번째에 선두의 2문자 “E257”을, 길이는 2(문자분), 데이터에는 69+257로서 등록하고, 이 “259”번의 사용빈도를 1회로한다. 더욱이, 작업용버퍼중 선두의 1문자 “E”의 등록번호 “69”를 압축데이터로서 출력하고, 작업용버퍼상에는 소거하며, 이것에 의해 생긴 작업용버퍼상의 공란의 1바이트를 메우도록 그 이후의 문자열을 전부 선두방향으로 시프트시키고, 그 결과 생긴 작업용버퍼 말단의 공백의 1바이트에는 대상문자열 데이터의 계속에서 1문자분 “B”를 취입한다. 그러면, 작업용버퍼의 문자열은 「257 H 256 257 CD 257, H 256 C256 EHDAB」로 된다.
(10) 다시 이 작업용 버퍼중에 이미 사전에 등록되어있는 2문자 이상의 문자열이 존재하는가를 조사한다. 그러면, 작업용버퍼의 15, 16 문자째에 “AB”의 문자열이 존재하고 있기 때문에 2바이트분의 당해문자열 “AB”를 256의 문자에 치환하고, 사전의 “256”번의 문자열의 사용빈도를 4회에 갱신한다. 이 치환에 의해 작업용버퍼에는 1바이트의 공란이 생기기 때문에 이것을 메우도록 그 이후의 말단의 공백의 1바이트에는 대상문자열 데이터의 계속에서 1문자분 “B”를 취입한다. 그러면, 작업용버퍼중의 문자열은 「257 H 256 257 CD 257, H 256 C 256 EHD 256 B」로 된다.
(11) 다시 이 작업용 버퍼중에 이미 사전에 등록되어 있는 2문자 이상의 문자열이 존재하는가를 조사한다. 그러나, 그와같은 문자열은 등록되어 있지 않기 때문에, 사전의 예를들면 256번째에 선두의 2문자 “257H”를. 길이는 2(문자분), 데이터란에는 257+72로서 등록하고, 이 “260”번의 사용빈도를 1회로 한다. 다우기, 작업용버퍼중 선두의 1문자 “257”을 압축데이터로서 출력하고, 작업용버퍼상에는 소거하며, 이것에 의해 생긴 작업용버퍼상의 공란 1바이트를 메우도록 그 이후의 문자열을 전부 선두방향에 시프트시키고, 그 결과 생긴 작업용버퍼 말단의 공백의 1바이트에는 대상문자열 데이터의 계속에서 1문자분 “C”를 취입한다. 그러면 작업용 버퍼상의 문자열은 「H 256 257 CD 257 H, 256 C 256 EHD 256 BC」로 된다.
(12) 다시 이 작업용 버퍼중에 이미 사전에 등록되어있는 2문자의 문자열이 존재하는가 어떤가를 조사한다. 그러면, 작업용 버퍼의 7,8문자째에 “257H”의 문자열이 15,16문자째에 “BC”의 문자열이 각각 존재하고 있기 때문에 합계 4바이트분의 당해 문자열 “257H”를 260에 당해 “BC”를 257로 치환되고, 사전의 “260” 사용빈도를 2회에 “257”의 사용빈도를 5회로 갱신한다. 이 치환에 의해 작업용 버퍼에는 2바이트의 공란이 생기기 때문에 이것을 메우도록 그 이후의 문자열을 전부 선두방향에 시프트시키고, 그 결과 생긴 작업용버퍼 말단의 공백의 2바이트에는 대상문자열 데이터의 계속에서 2문자분 “GA”를 취입한다. 그러면, 작업용 버퍼중의 문자열은 「H 256 257 CD 260 256 C, 256 EHD 256 257 GA」로 된다.
(13) 다시 이 작업용 버퍼중에 이미 사전에 등록되어 있는 2문자 이상의 문자열이 존재하는가 어떤가를 조사한다. 그러나, 그와같은 문자열은 등록되어 있지 않기 때문에 사전의 예를들면 261번째에 선두의 2문자 “H256”을, 길이는3(문자분), 데이터란에는 72+256로서 등록하고, 이 “261”번의 사용빈도를 1회로 한다. 또, 작업용버퍼중 선두의 1문자 “H”의 등록 번호 “72”를 압축데이터로서 출력하고, 작업용 버퍼상에서는 소거하며, 이것에 의해 생긴 작업용버퍼 상의 공란 1바이트를 메우도록 그 이후의 문자열을 전부 선두방향에 시프트하고, 그 결과 생긴 작업용 버퍼 말단의 공백의 1바이트에는 대상문자열 데이터의 계속에서 1문자분 “B”를 취입한다. 그러면, 작업용 버퍼의 문자열은 「256 257 CD 260 256 C 256, EHD 256 257 GAB」로 된다.
(14) 다시 이 작업용버퍼중에 이미 사전에 등록되어 있는 2문자 이상의 문자열이 존재하는가를 조사한다. 그러나, 그와같은 문자열은 등록되어 있지 않기 때문에 사전의 예를들면 262번째에 선두의 2문자 “256 257”을, 길이는 4(문자분), 데이터란에는 256+257로서 등록하고, 이 “262”번의 사용빈도를 1회로한다. 또, 작업용 버퍼중 선두의 1문자 “256”을 압축 데이터로서 출력하고, 작업용버퍼 상에서는 소거하며, 이것에 의해 생긴 작업용버퍼상의 공란의 1바이트를 메우도록 그 이후의 문자열을 전부 선두방향으로 시프트시키고, 그 결과 생긴 작업용버퍼 말단의 공백의 1바이트에는 대상문자열 데이터의 계속에서 1문자분 “K”를 취입한다. 그러면, 작업용버퍼의 문자열은 「256 CD 260 256 C 256 E, HD 256 257 GABK」로 된다.
(15) 다시 이 작업용버퍼중에 이미 사전에 등록되어 있는 2문자 이상의 문자열이 존재하는가를 조사한다. 그러면, 작업용버퍼의 11,12문자째에 “256 257”의 문자열이 존재하고 있기 때문에 당해 “256 257”을 262에 치환하고, 사전의 “262”의 사용빈도를 2회로 갱신한다. 이 치환에 의해 작업용버퍼에는 1바이트의 공란이 생기기 때문에 이것을 메우도록 그 이하의 문자열을 전부 선두방향으로 시프트하고, 그 결과 생긴 작업용버퍼 말단의 공백의 1바이트에는 대상문자열 데이터의 계속에서 1문자를 취입한다. 그러면, 작업용 버퍼중의 문자열은 「257 CD 260 256 C 256 E, HD 262 GABK」로 된다.
이와같이 본 실시예의 가증분해법에 의하면, 작업용버퍼 문자열의 길이를 항상 일정하게 유지하도록 압축대상의 문자열 데이터에서 순차 데이터를 취입하도록 되어있다. 그리고, 당해 작업용버퍼내의 선두에서의 서로 인접한 문자열의 조합이 사전에 등록되어 있으면 이것을 사전의 등록번호에 치환함으로써 압축을 실행한다. 또, 이 문자열의 조합이 작업용버퍼중에 포함되어 있으면 이것을 다시 사전의 등록번호에 치환함으로써 더욱 압축을 실행하고 있다. 따라서, 종래의 증분분해법의 경우보다도 압축데이터의 데이터량이 삭제 멸실되고, 결과적으로 압축데이터를 적은 기억용량으로 저장할 수 있다. 또, 압축데이타는 작업용 버퍼내의 선두에서의 서로 인접한 문자열의 조합이 사전에 등록되어 있지 않은 경우에는 당해 문자열의 조합을 사전등록한 후에 출력한다.
이상의 처리를 트리(tree)구조를 이용해 모식적으로 표시하면 제8(a)도와 같이 된다. 제8(a)도에는 상기의 설명에 이용한 (1) - (15)에 포함되어 번호를 부치고 있다. 단, (1), (10), (12), (15)에 대해서는 제8(a)도에는 표시되어 있지 않다.
예를들면, “AB”를 사전등록하고, “A”를 출력하는 상기(2)의 공정은 제8(a)도에 있어서 이하와 같이 표현된다. 즉, 제8(a)도에 있어서, 위화살표의 앞에 “AB”라 하는 것으로 사전등록하는 것을 표현한다. 또한, 아래화살표의 앞에 “A”라고 하는 것으로 당해 문자를 압축데이터로서 출력하는 것을 표현한다. 또, 이러한 위화살표, 아래화살표 근처에 공정의 번호 “2”를 부치는 것으로 당해 처리가 공정(2)의 처리인 것을 표현한다.
또한, 상기(3)의 공정과 같이 사전에 등록되어 있는 문자 “AB”를 작업용 버퍼중에 찾아내고, 이것을 등록번호로 치환하는 경우는 당해 치환해야 하는 문자열의 위를 묶고, 그곳에 당해 처리가 행해지는 공정의 번호 “3”을 부치고 있다.
이와 관련해 본 실시예의 경우, 압축끝의 출력데이터는 이하와 같이 된다.
「A, B, C, E, 257, H 256, 257, C, ...」 또한 사전에는 결국 다음과 같은 문자열이 등록된다.
0 - 255 아스키코드
256 AB
257 BC
258 CE
259 E 257
260 257 H
261 H 256
262 256 257 ....
(B) 증분분해법
다음에 상기 예와 동일한 이하의 문자열 데이터를 종래의 증분분해법을 이용한 방법에 의해 처리하고, 사전과 압축데이터를 얻는 경우에 대해 설명한다. 단, 여기에도 사전에는 최초로부터 아스키코드의 문자를 0 - 255번에 등록되어 있다고 한다.
「ABCEBCHA, BBCCDBCH, ABCABEHD, ABBCGABK, ...」
(1) 보내지고 있는 문자열은 상기에 표시한 가증분해법과 같이 일정의 바이트분씩 작업용버퍼에 일단 저장되는 것은 아니고, 선두부분의 필요최저한의 문자열만이 작업용버퍼에 취입된다. 그것에, 이 작업용버퍼중의 1문자째 “A”가 사전에 등록되어 있는가를 조사한다. 그러면 당해 “A”는 사전의 65번째로 등록되어 있기 때문에 그 사용빈도의 카운트수를 1로한다.
(2) 다음에 2문자째 “B”를 더하고, 이 작업용버퍼중의 문자 “AB”가 사전에 등록되어 있는가를 조사한다. 그러나, 2문자 이상의 문자열로 사전에 이미 등록되어있는 것은 발견되지 않는다. 그곳에, 선두의 2문자 “AB”를 번호의 256번째에, 길이는 2(문자분), 데이터란에는 65+66로서 등록하고 사전의 “256”의 사용빈도를 1회라고 기록한다. 다음에 작업용버퍼중 선두의 당해 “A”를 압축데이터로서 출력하고, 다음은 대상인 문자열데이터의 2문자째 “B”로부터 주목한다.
(3) 새로운 1문자째 “B”가 사전에 등록되어 있는가를 조사한다. 그러면 당해 “B”는 사전의 66번째에 등록되어 있기 때문에 그 사용빈도의 카운트수를 1로 한다.
(4) 다음에 새로운 2문자째 “C”를 가하고, 이 작업용버퍼중의 문자 “BC”가 사전에 등록되어 있는가를 조사한다. 그러나, 또 2문자 이상의 문자열로 사전에 이미 등록되어 있는 문자열은 발견되지 않는다. 그곳에, 선두의 2문자 “BC”를 번호의 257번째에, 길이는 2(문자분), 데이터란에는 66+67로서 등록하고, 사전의 “257”의 사용빈도를 1회라고 기록한다. 다음에 작업용버퍼중의 선두의 당해 “B”를 압축데이터로서 출력하고, 다음은 대상문자열 데이터의 3문자째 “C”로부터 주목한다.
(5) 이것과 동일 형태의 조작이 최초에서 4문자째의 E까지 계속되고, “EB”가 등록된 후, 작업용버퍼중의 새로운 1문자째 “B”가 사전에 등록되어 있는가를 조사한다. 그러나, 당해 “B”는 사전의 66번째에 등록되어 있기 때문에 그 사용빈도의 카운트수를 이번에는 2로 한다.
(6) 다음에, 새로운 2문자째 “C”를 가하고, 이 작업용 버퍼중의 문자열 “BC”가 사전에 등록되어 있는가를 조사한다. 그러면 이번에는 사전의 “257”번째에 “BC”의 문자가 등록되어 있기 때문에 그 사용빈도를 2회라고 기록하고, 더욱 새로운 3문자째를 가한 문자열 “BCH”가 사전에 등록되어 있는가를 조사한다.
(7) 그러면, 이것은 등록되어 있지 않기 때문에 이 2문자열 “BCH”를 번호의 260번째에, 길이는 3(문자분), 데이터란에는 257+72로서 등록하고, 사전의 “260”의 사용빈도를 1회라고 기록한다. 다음에 선두의 “BC”의 등록번호 “257”을 압축데이터로서 출력하고, 다음은 대상문자열 데이터의 7문자째 “H”로부터 주목한다.
제9도는 이상의 증분분해법의 동작을 설명하기 위한 플로차트를 참고로 도시한다.
이와 같이 하여 증분분해법은 행해져 가지만, 본 실시예의 가증분해법과의 큰 차이는 처리대상의 문자열 데이터를 선두로부터 1문자씩 취입하고, 사전과의 일치를 찾아가는 것이다.
이상의 처리를 제8(a)도의 예와 동일형태로 트리구조를 이용해 모식적으로 표시하면 제8(b)도와 같이 된다. 단, 도염중의 1-8의 번호는 상기 공정의 설명에서 이용된 번호에는 붙어있지 않다. 여기에서, 예를들면 “AB”를 사전등록하고, “A”를 출력하는 1의 공정에서는 위 화살표의 앞에 “AB”라 함으로써 사전등록을 표시하는 동시에 아래 화살표 앞에 “A”라 함으로써 당해 문자를 압축데이터로서 출력하는 것을 표현하는 것으로한다.
그래서 제8(b)도에서 알 수 있는 바와같이 종래의 증분분해법에서는 제8(a)도의 (3)공정과 같이 사전에 등록되어있는 문자 “AB”를 작업용버퍼중의 선두이외의 도중에 발견되고, 이것을 등록번호로 치환하는 공정은 있을 수 없다. 있을 수 있는 것은 제8(b)도의 5공정과 같이 오직 사전에 등록되어있는 문자열의 우측에 새로운 1문자를 가하고, 그 위를 묶음으로서 새로운 문자열을 만들어 낼 뿐이다.
이와관련해 이 증분분해법에 의한 압축끝의 출력데이터는 이하와 같이 된다.
「A, B, C, E, 257, H, 256, 257 , C, D, 257, H, 256, ...」
또, 사전에는 결국 다음과 같은 문자열이 등록되는 것으로 된다.
0 - 255 아스키코드
256 AB
257 BC
258 CE
259 EB
260 257H
261 HA
262 256B
263 257C
264 CD
265 DB
266 260A ....
제8(a)도와 제8(b)도를 비교한 경우, 예로 도시하는 범위에서는 출력되는 압축데이터는 동일한 것으로 되지만 사전에 등록되는 문자열은 확실히 다르게 되어있고, 주목하는 문자열이 압축대상의 문자열 데이터의 후에 행해질수록 상위가 크다.
이와같이 종래의 증분분해법에서는 1문자씩밖에 증가하지 않기 때문에 특히 제10(a)도 및 제10(b)도에 도시한 바와 동일한 문자열이 연속하는 문자열 데이터에 관해서는 본 실시예의 가증분해법과는 큰 차이가 생기고, 가증분해법측이 작은 기억용량으로 기억할 수 있다.
제10(a)도에는 본 실시예의 가증분해법에 의해 연속하는 문자열을 압축하는 경우가 도시되며, 제10(b)도에는 증분분해법에 의해 연속하는 문자열을 압축하는 경우가 도시된다. 제10(b)도의 증분분해법의 경우, 사전에는 A, AA, AAA, AAAA, AAAAA, AAAAAA, ...의 순서로 등록이 행해져 있기 때문에 A의 문자 16바이트분을 압축처리하는 것에 16회의 출력과 17회의 사전등록을 행하지 않으면 안된다. 한편, 제10(a)도의 본 실시예의 가증분해법의 경우, 사전에는 A, AA, AAAA, AAAAAAAA, AAAAAAAAAAAAAAAA ...의 순서로 등록이 행해지고 있기 때문에 A의 문자 16바이트분을 압축처리하는 것에 불과 5회의 출력과 6회의 사전등록을 행하는 것만으로 끝나게된다.
이와 같이 동일한 문자가 연속하는 문자열 데이터의 경우는 본 실시예의 가증분해법의 효과는 명확하고, 그 압축율은 종래의 증분분해법과 비교해 매우 높게 된다. 이것은 바꿔말하면 동일한 양의 문자열데이터를 처리하는 것에 적은 출력횟수로 끝내는 것을 의미한다. 그리고, 출력시에서의 문자열은 반드시 사전의 등록번호의 고정길이 바이트에 치환되어 출력되기 때문에, 적은 출력회수는 적은 바이트수를 표시하고, 압축데이터가 적다고 하는 것을 의미한다.
(C) 최적의 사전의 생성
이상, 설명한 가증분해법에 의한 처리는 전술한 제6도와 동일하게 전체압축대상문자열에 대하여 다수회 행해지고, 이것에 의해 문자열데이터를 가장 효율좋게 압축할 수 있는 최적인 사전이 생성된다. 이하, 이 사전의 최적화 처리에 관해서 제11도와 제12도를 이용하여 설명한다.
제11도의 플로차트는 사전을 최적화하기 위해서 가증분해법에 의해 행해지는 1회의 패스의 처리가 도시되어 있다. 여기에서 1회의 패스라함은 전체 문자열이 작업버퍼에 저장되어 전체 문자열에 대하여 처리가 행해질 때까지를 말한다. 제11도에는 우선 NUM =0로 된다(스텝 E1). 다음에 buf1, buf2(작업버퍼내의 1번째, 2번째)에 저장되는 문자열의 조합(즉 AB)가 사전에 등록되어 있는가의 여부가 조사된다(스텝 E2). 등록되어 있다고 판단된 경우에는 이 buf1, buf2에 저장되는 문자열의 조합을 사전의 등록번호로 치환하고, 이 치환에 의해 공백이 생긴 buf16에 다음의 문자열(즉, B)을 저장한다(스텝 E3). 그 후에 스텝 E2로 돌아가고, 다시 buf1, buf2의 문자열의 조합이 사전에 등록되어 있는가의 여부가 조사된다.
한편, 스텝 E2로 buf1, buf2의 문자열의 조합이 사전에 등록되어 있지 않다고 판단된 경우는 이번에는 buf2, buf3의 문자열의 조합이 사전에 등록되어 있는가의 여부가 조사된다(스텝 E4). 그리고 등록되어 있는 경우에는 스텝 E5로 이동하고, 그 후에 또 스텝 E2로 돌아간다. 등록되어 있지 않은 경우는 다음의 스텝으로 이동한다.
이와 같이 하여 buf15, buf16의 문자열의 조합까지 조사되어 가고(스텝 E8), 이 문자열의 조합이 등록되어 있지 않은 경우에는 이번의 패스가 최종패스인가의 여부가 최종 패스 플래그에 의해 조사된다(스텝 E10). 그리고 최종패스가 아닌 경우에는 스텝 E11로 이동하고, buf1, buf2의 문자열의 조합을 새롭게 사전에 등록한다. 그리고 buf1에 저장되는 문자열을 소거하는 동시에 작업버퍼내의 문자열을 좌측으로 시프트하고, 이것에 의해 생긴 공백을 메우도록 buf16에 다음의 문자열을 저장한다. 더욱이 NUM=NUM+1로 하고, NUM의 값을 1씩 증가하고, 그후 스텝 E2로 돌아간다. 한편 스텝 E10로 최종패스라고 판단된 경우에는 buf1의 문자열을 압축데이터로서 외부로 출력하고, buf1의 문자열을 소거하여 1문자 좌측에 비켜놓고, 빈 buf16에 다음의 문자열을 집어넣게 된다(스텝 E12).
또, 제11도에는 예를 들면 스텝 E8, E9 다음에 스텝 E2로 돌아가 있지만, 본 발명에서는 반드시 스텝 E2로까지 돌아갈 필요는 없다. 즉, 이 경우에는 치환되는 문자열은 buf15, buf16에 저장되는 문자열 뿐이기 때문에 이것에 의해 판단에 영향이 미치는 스텝 E6로 까지 돌아가면 충분하다. 이것은 스텝 E6 등의 다른 스텝에서도 동일하다.
이상의 처리를 반복하고, 전체압축대상 문자열이 작업버퍼에 저장되어 1회째의 패스가 끝나면, 제12도에 도시한 바와같이 NUM2=NUM으로 설정된다(스텝 F2). 여기에서 압축데이터의 출력횟수를 표시하는 것에 상당한다.(실제로는 스텝 E11, E12에 도시된 바와같이 최종 패스로 될 때까지 압축데이터는 외부로 출력되지 않는다).
다음에 스텝 F3에 도시한 바와같이, 2회째의 패스가 행해진다. 이 2회째의 패스에는 1회째의 패스로 갱신된 사전이 사용되고, 이것에 의해 사전이 성숙화 되어간다. 이 2회째의 패스는 1회째의 패스와 동일하게 제11도에 도시한 처리에 의해 저체 압축대상 문자열에 대하여 행해진다. 다음에 스텝 F4로 NUM>NUM2 인지가 판단된다. NUMNUM2의 경우는 스텝 F3에서의 압축데이터 출력횟수 NUM 쪽이 스텝 F1에서의 압축데이터 출력횟수 NUM2 보다도 작은 것을 의미하고, 데이터의 압축율이 향상된 것을 의미한다. 따라서 이 경우에는 스텝 F2로 돌아가고, 최적인 사전이 얻어질때까지 처리가 반복된다. 그리고 NUM>NUM2로 되면 최적인 사전이 생긴다고 판단되고, 최종 패스 플래그 = 1로 설정되며(스텝 F5), 최종 패스의 압축동작이 행해진다(스텝 F6).
최종 패스의 압축동작에는 최종 패스 플래그로 되어있기 때문에 제11도의 스텝 E10의 판단은 항상 YES의 방향으로 되고, 항상 스텝 E12로 이동하게 된다. 즉, 이 경우에는 스텝 E12를 통할때마다 buf1에 저장되어 있는 문자열이 압축데이터로서 외부에 출력된다. 또, 스텝 E12에는 스텝 E11 같이 사전에 새로워진 문자열이 등록되지 않고, 사전은 전회의 패스에서의 사전의 사이까지 갱신되지 않는다. 그리고 이 갱신되지 않은 사전이 정적인 사전으로서 압축데이터와 함께 외부로 출력되고, 기억장치 등에 저장된다.
(D) 사용빈도
그리고, 이상과 같이 해서 최적인 사전을 작성해 가는 과정에 있어서, 사전의 등록수가 한계에 달하고, 새롭게 사용빈도가 높은 문자열을 사전에 등록하도록 해도 등록되지 않는 경우가 생긴다. 이 경우에는 사용빈도가 낮은 등록문자열을 소거하고, 소거에 의해 생긴 공백부분에 등록하고 싶은 문자열을 기입하도록 한다.
제13(a)도에는 이와같이 사용빈도의 정보를 포함하는 사전의 구조가 도시되며, 제13(b)도에는 이 사용빈도에 의거하여 등록삭제 처리의 플로차트가 도시되어있다.
여기에서 P는 새롭게 등록하는 사전의 등록번호를 표시하는 것이고, P의 초기값은 256이다. 그리고 제13(a)도에 도시한 바와같이 사전의 등록장소에는 256-4095의 등록번호가 할당되어 있다. 각 등록번호의 장소에는 1문자째의 번호를 넣는 장소와, 2문자째의 번호를 넣는 장소 및 사용빈도를 넣는 장소가 있다. 사용빈도의 초기값은 전부 “0”이고, 사용빈도 = 0은 그 장소에는 등록문자열이 어느 것도 등록되어 있지 않다는 것을 표시한다.
새롭게 1문자째 + 2문자째의 조합으로 된 문자열을 등록하는 경우에는 제13(b)도의 스텝 G1에 표시한 바와같이 사전중 P의 장소(제13(a)도에는 258번의 장소)에 1문자째, 2문자째의 문자열을 기입한다. 다음에 P=P+1로 하고(스텝 G2), 다음의 장소(259번의 장소)를 본다. 이 경우, P=4096로 된 경우에는 P=256으로 설정된다(스텝 G3, G4). 다음에 P의 장소(259번의 장소)의 사용빈도가 조사되고(스텝 G5), 사용빈도>1이면 P의 장소의 사용빈도를 1뺀다(스텝 G7). 그리고 또 스텝 G2로 돌아가고, P=P+1로서 다음의 장소(260번의 장소)를 본다.
예를 들면 지금 사전의 256-4095의 장소에 공백이 1개도 없는 경우를 생각한다. 이 경우에는 사용빈도=0인 장소가 생길때까지 스텝 G2-G5의 처리가 반복된다. 그리고, 초기에 사용빈도=0이된 장소의 등록이 삭제된다(스텝G6). 그리고 새롭게 사전등록을 행하는 경우에는 이 삭제된 장소에 사전등록한다.
이상의 처리에 의해 등록번호 256-4095중에 가장 사용빈도가 낮은 등록문자열을 삭제할 수 있게 되고, 이 등록이 삭제된 장소에 새롭게 다른 문자열을 등록할 수 있게 된다. 이것에 의해 사용빈도가 높은 등록문자열이 우선적으로 등록된 사전을 생성할 수 있게 된다.
(E) 복원처리
본 실시예에 의해 생성된 사전은 이하와 같이 트리구조로 되어있다.
(사전)
256 : 30 + 56
257 : 80 + 16
258 : 256 + 257
259 : 256 + 257
260 : 259 + 257
따라서 이 사전에 의해 예를들면 등록번호 256-260에 등록되는 등록 문자열을 복원하면 이하와 같이 된다.
(문자열 복원)
256 = 30 + 56
257 = 80 + 16
258 = 256 + 40
= 30 + 56 + 40 (256 = 30 + 56에서)
259 = 256 + 257
= 30 + 56 + 257 (256 = 30 + 56에서)
= 30 + 26 + 80 + 16 (257 = 80 + 16에서)
260 = 259 + 257 (259 = 256 + 257에서)
= 256 + 257 + 257 (256 = 30 + 56에서)
= 30 + 56 + 257 + 257(257 = 80 + 16에서)
= 30 + 56 + 80 + 16 + 257
0 = 30 + 56 +80 +16 +80 + 16 (257 = 80 + 16에서)
이와 같은 실시예에 의해 압축된 문자열을 복원하는 것에는 등록문자열을 구성하는 전체의 문자열이 256보다 작게될 때가지 분해처리를 행할 필요가 있다. 그러나, 복원할 때, 상기와 같은 분해처리를 행하면 문자열의 복원속도가 매우 느리게 되는 문제가 있다. 그래서 이문제를 해결하기 위해서 생성된 사전에서 이하에서 설명하는 바와같이 복원전용의 사전을 생성하고, 이 복원전용의 사전을 ROM등의 기억매체에 저장하며 복원시에 사용하는 것이 바람직하다.
제14(a)도에는 이 복원전용사전의 구조가 도시되어 있다. 복원전용사전의 선두부분에는 문자열 길이(데이터길이)와 문자열 개시 어드레스의 정보가 등록번호 256-4095의 순서로 나란히 저장되어 있다. 그리고, 그 후에 문자열의 코어부분(문자열의 나열)이 저장되어 있다. 이 문자열 코어부분은 상기와 같이 등록문자열을 구성하는 전체 문자열이 256보다 작아질 때까지 분해처리를 행함으로써 생성된 것이고, 이러한 문자열은 복원전용의 등록문자열이 된다.
복원처리를 행할때에는 제14(b)도에 도시한 바와같이 등록번호 256-4095의 위치에 저장된 문자열 개시 어드레스에 의해 문자열 코어부분중 대응하는 개시 어드레스를 지정한다. 그리고 이 개시 어드레스에서 문자열 길이에 의해 지정되는 길이만 문자열(복원전용문자열)을 취출함으로써 데이터의 복원이 행해진다. 이 경우 문자열의 코어부분은 미리 상기와 같이 분해처리되어 있기 때문에 트리구조의 사전보다도 복원처리의 속도를 매우 빠르게 할 수 있다.
제15도에는 이 복원전용의 사전을 이용한 경우의 복원처리의 플로차트가 도시되어 있다. 우선 스텝 H2에서 12비트의 코어를 읽어내고, 코드가 종료기호인 경우에는 종료로 되고(스텝 H4), 종료기호가 없는 경우는 스텝 H5로 이동한다. 그리고, 코어의 번호에 따라서 사전에서 복원되는 문자열 개시 어드레스 문자열 길이의 정보를 얻는다. 그리고, 얻어진 문자열 개시 어드레스에서 문자열 길이분의 문자열을 복원버퍼에 기입한다(스텝 H6). 이상의 처리를 종료기호가 검출될 때까지 반복함에 의해 데이터의 복원이 가능하다.
[실시예 3]
제3실시예는 이상의 제1, 제2실시예에서 설명한 데이터 압축수법에 의해 소위 포인트 데이터를 압축하는 실시예이다.
(A) 비트 맵 폰트 데이터
우선 비트맵 폰트 데이터를 압축하는 경우에 대해 설명한다. 비트맵 폰트의 데이터는 통상 라스터(raster)방향으로 나란하다. 그러나, 본 실시예에 의해 비트맵 폰트 데이터를 압축하는 경우, 종방향으로 압축하는 편이 압축율이 상당히 좋게 된다. 그래서, 제16(a)도에 도시한 바와같이 종방향으로 데이터 압축을 하는 것으로 한다. 그러나 물론 횡방향으로 데이터 압축을 해도 관계없다.
제16(a)도에 도시한 바와같이, 비트맵 폰트 데이터(40도트×40도트)는 40바이트 고정길이의 데이터 블록을 5개 나란히 함으로써 구성된다. 본 실시예에는 각 데이터 블록마다에 제1, 제2실시예에서 표시한 압축수단에 의해 압축한다. 또, 통상은 이러한 형태로 데이터 압축을 행하지만 압축율보다도 복원속도를 우선하는 경우는 제16(a)도와 같이 바이트열 단위에는 없고, 제16(b)도에 도시한 바와같이 횡으로 나란한 2바이트를 1워드로하여 워드열 단위로 데이터 압축을 행하는 것도 가능하다. 이것에 의해 복원속도를 올리는 것이 가능하지만, 그 반면에 사전에 등록할 수 있는 문자열의 수를 32768 정도로 할 필요가 있다는 문제가 있다.
제17도에는 예를들면 「에」라고 하는 문자를 비트맵 이미지로 표시한 것이 도시되어 있다. 제17도에 있어서 “1”이 기입되어 있는 부분이 흑으로 된다. 그리고 다른 부부에는 “0”이 기입되어 있고, 이 부분은 백으로 된다. 제17도에서 명확해지듯이 0 -7, 12, 13, 20-39번의 바이트열(데이터열)은 00h(헥사표시)로 된다. 또, 10, 11, 14-16, 27-29번의 바이트열은 01h로 된다. 또, 8번의 바이트열은 02h로 되고, 9, 17-26번의 바이트열은 03h로 된다. 이와같이 비트맵 폰트 데이터를 종방향으로 압축해가면, 동일한 값의 바이트열이 연속한다. 따라서 제1, 제2실시예의 데이터 압축수단에 의해 고효율로 압축되는 것을 알 수 있다.
(B) 아우트라인 폰트 데이터
아우트라인 폰트는 문자의 윤곽을 몇 개의 점으로 그것을 맺은 직선, 곡선에 의해 표시되는 것이다. 통상 크기의 문자(예를들면 10포인트)에 대해서는 상기의 비트맵 폰트를 이용해 인쇄하지만 사용자에 따라서는 32포인트 등의 큰 사이즈로 인쇄하고 싶은 경우가 있다. 이와같은 경우에 각각의 사이즈의 비트맵 폰트 데이터를 미리 준비해두는 것은 데이터 용량과의 관계에서 곤란하다. 그래서, 이러한 경우에는 각각의 문자에 대해 기본인 아우트라인 폰트를 마련해두고, 이 아우트라인 폰트에 으해 문자의 윤곽을 표시하며, 이것을 스케일링에 의해 확대하고, 이것을 제17도에 표시한 바와 같이 비트맵 이미지의 데이터로 변환한다. 이것에 의해 소망의 사이즈의 문자를 인쇄할 수 있다.
예를 들면 아우트라인 폰트에 의해 「2 」라는 문자의 윤곽은 제18도에 도시한 바와같이 점 A, B, C, D, E, F, G, ...로 이것을 연결하는 직선, 곡선으로 표시할 수 있다. 그리고, 본 실시예에는 이 아우트라인 폰트의 데이터를 NSI 폰트라고 부르는 데이터 형식으로 기록한다.
그리고 본 실시예에는 이 NSI 폰트로 기록된 아우트라인 폰트 데이터를 제19(a)도에 표시한 바와같이 3개 부분, 즉 FLG 부분, DAT 부분 및 VCT 부분으로 분리하여 압축하고 있다.
여기에서, VCT 부분은 각점에서 때려내는 방향의 벡터좌표를 표시하는 정보이고, 각점의 X,Y벡터좌표 정보가 포함된다. 또, 이러한 X,Y 벡터좌표는 좌표의 절대값을 표시하는 것은 아니고, 1개 전의 점에서 상대값을 표시하는 것이다.
또, FLG 부분은 각점의 속성을 표시하는 정보이고, 예를 들면 「A점은 시적점이다」 「A점과 B점은 직선으로 연결된다」 「B점과 D점은 C점을 중간점으로하는 곡선(배제곡선)으로 연결된다」 「D점과 E점은 직선으로 연결된다」등을 표현하는 정보가 포함된다. 더욱이 DAT 부분은 문자의 특성을 표시하는 정보이고, 문자의 크기를 표시하는 정보, 혹은 문자의 선폭을 표시하는 정보등이 표시된다. 본 실시예에 있어서는 VCT 부분에 대해서는 하프만 부호법에 의해 압축한다. 이것에 대하여 FLG 부분, DAT 부분에 대해서는 동일한 데이터가 연속하는 등의 어느정도의 규칙성이 있기 때문에 상기 제1, 제2실시예에서 설명한 압축방법에 의해 압축한다. 이와같이 아우트라인 폰트 데이터를 구성하는 성분을 성분마다로 분리하여 압축하는 것에 의해 압축물을 대폭적으로 향상시킬 수 있다. 그리고, 압축후의 데이터의 구조는 제19(b)도에 도시한 바와같이 우선 FLG 부분의 압축데이터만이 나란하고, 그다음에 DAT부분의 압축데이터만이 나란하며, 그 다음에 VCT 부분의 압축데이터만이 나란하다는 구조로 된다. 또, FLG 부분, DAT 부분, VCT부분의 각각에 대응한 전용의 복원용 사전이 준비된다.
이 압축데이터를 복원할때에는 FLG 부분, DAT 부분을 복원하고, 그후에 이것에 의거하여 VCT 부분을 복원하게 된다. 제19(c)도에는 그 복원처리의 플로차트가 도시되어있다. 우선 스텝 12로 FLG 부분을 FLG용의 정적사전으로 복원하고, 이것을 FLG용에 구비된 버퍼에 일시적으로 기입한다. 다음에 스텝 13으로 DAT 부분을 DAT용의 정적사전으로 복원하고, 이것을 DAT용에 구비된 버퍼에 일시적으로 기입한다. 이 상태에는 데이터 독출용의 포인트는 제19(b)도에 도시한 바와같이 압축된 VCT 부분의 선두를 지시하게 된다.
다음에 스텝 14에 표시된 바와같이 DAT 부분과 FLG부분을 NSI 폰트의 규칙에 따라서 상기 폰트에서 읽어내고, 출력한 후에 읽어낸 FLG 부분의 비트 0-비트 3(이러한 비트의 상세는 후술한다)에 따라서, VCT 부분을 하프만 부호로 복원한다. 이것에 의해 NSI 폰트의 순번으로 되돌아간 아우트라인 폰트 데이터를 얻을 수 있다.
그리고, 본 실시예에서는 데이터의 압축율을 더욱 향상시키기 위해서 상기 FLG 부분, VCT 부분을 하기의 좌표점 제어부, 좌표점 정의부로 표시되는 폰트로 변경한 후 압축을 행하고 있다.
여기에서 좌표점 제어부의 비트4-비트7은 원래의 FLG 부분의 비트 4-7과 동일하게 되고, 이러한 비트4-비트7에 의해 각점의 속성의 지정, 즉 시작점.중간점.종점중 어느것인가, 이동보간, 직선보간, 곡선보간중의 어느것인가 등이 지정된다. 또, 좌표점 제어부의 비트0-비트3은 좌표점 정의부에 정의되는 벡터 좌표값이 이하의 의미가 되는 것을 표시한다. 즉, 비트 0은 X 벡터좌표가 0이 아닌 값이 존재하는 것을 표시하고, 비트1는 Y벡터좌표가 0이 아닌 값이 존재하는 것을 표시한다. 또, 비트2는 X벡터좌표가 음의 값인 것을 표시한다. 또, 비트3은 Y벡터좌표가 음의 값인 것을 표시한다.
좌표점 정의부에는 10 비트의 코드(0-1023)가 나란하다. 그리고, 이러한 코드와 좌표점 제어부의 비트0-비트3의 지정에 의해
-1024X 벡터좌표1024
-1024Y벡터좌표1024
의 범위의 벡터 좌표값을 표시할 수 있다.
예를들면, 비트 0=1인때는 좌표점 정의부에는 X-1의 데이터가 있는 것이 표시된다. 또, 비트1-1인 때는 좌표점 정의부에는 Y-1의 데이터가 있는 것이 표시된다. 문자에 있어서 종봉, 횡봉등이 있는 경우에는 X벡터좌표 = 0이기도 하고, Y벡터좌표 = 0이기도 한 경우가 있고, 이 경우에는 X벡터좌표, Y벡터좌표를 압축데이터로서 출력할 필요는 없다. 따라서, 이 경우에는 좌표점 제어부의 비트 0. 1의 제어에 의해 좌표점 정의부로의 X벡터좌표, Y벡터좌표의 유무를 지정할 수 있으면 데이터 압축율을 더욱 향상시킬 수 있다. 또 X벡터좌표, Y벡터좌표의 음.양의 지정도 상기와 같이 좌표점 제어부의 비트 2,3에 의해 지정하고, 이것에 의해 데이터 압축율을 더욱 향상시킬 수 있다.
이상에서 설명한 바와같이, 본 실시예에 의하면 비트맵 폰트 데이터, 아우트 라인 폰트 데이터를 효과적으로 압축할 수 있다. 그리고, 이 압축시에는 제1,제2실시예에서 설명한 정적사전이 이용된다. 이 경우 정적사전은 공통의 자체(폰트)의 문자에 대하여 공통의 정적사전으로 하는 것이 바람직하다. 예를들면, 명조체의 문자에 대해서는 전체 명조체 전용의 사전을 이용해 사전의 갱신, 데이터 압축을 행하고, 최종적인 정적사전, 압축데이터를 얻는다. 또한, 고딕문자에 대해서는 전체 고딕 전용의 사전을 이용하여 사전의 갱신, 데이터압축을 해야하고 최종적인 정적사전, 압축데이터를 얻는다. 이와같이 자체의 각각에 관해 사전을 공통화함으로써 데이터를 효율좋게 압축할 수 있다. 이것은 자체가 공통이면 예를들면 문자의 윤곽 변화의 사양(선의 튀는 방향등), 윤곽의 크기 등이 각문자의 사이에서 공통화되기 때문에 문자자체의 특성정보, 각 윤곽점의 속성정보 등이 동일하게 되고, 이 공통의 사전에 의해 데이터가 압축되기 쉽게 되기 때문이다. 이 경우에는 출력된 정적사전, 압축데이터는 글자체마다 분류되어 기억장치에 저장된다.
제20도에는 이상에서 설명한 본 실시예의 데이터 압축방법의 이용태양이 도시되어 있다. 압축대상 데이터열(폰트 데이터)은 데이터 압축장치(31)에 입력되고, 본 실시예의 데이터 압축방법에 의해 데이터 압축된다. 그리고, 이것에 의해 생성된 정적사전 및 압축데이터 복원수단(32)내의 기억장치(ROM등)에 저장된다. 그리고 이 데이터 복원수단(32)은 정보처리장치, 예를들면 프린터(33)나 컴퓨터(34)등에 내장된다(복원수단을 분할하여 2개의 장치로 나누어 내장하는 것이 좋다).
종래의 프린터등에는 폰트 데이터 등은 데이터 압축이 되지 않은채 기억장치에 저장되고, 개개의 압축데이터의 저장어드레스를 관리함으로써 수시로 필요한 폰트 데이터를 출력하며, 문자의 인쇄를 행하고 있다. 이것에 대하여 본 실시예에 의하면 정적사전 및 압축데이터를 기억장치에 저장하고, 개개의 압축데이터의 저장어드레스와 정적문자열 사전을 관리함으로써 수시로 필요한 문자를 출력할 수 있다. 이것에 의해 기억장치에 저장되는 데이터량을 적게할 수 있고, 장치의 낮은 코드화를 도모할 수 있다. 이러한 장소는 특히 많은 기억용량을 필요로하는 한자문학이나 한글문학등에 유효하지만 기타 언어의 문학에 대해서도 물론 유효성이 크다.
또 본 발명은 상기 실시예에 한정되는 것이 아니며, 본 발명의 요지의 범위 내에서 여러 가지 변형실시가 가능하다.
예를 들면, 본 실시예에는 문자열 데이터를 처리하는 것에 대하여 주로 설명했지만, 기타 기호 데이터등에 대해서도 응용가능하다.
또, 본 발명에 의해 압축되는 데이터열로서는 문자열, 바이트열, 워드열에 한하지 않고 각종의 데이터열이 포함되고, 예를 들면 2차원, 3차원 도형을 구성하기 위한 데이터열 등도 포함될 수 있다.
또한, 본 발명의 등록번호에는 이 등록번호와 실질적으로 동일한 기능을 가진 정보도 포함된다.
특허청구범위 제1항의 발명에 의하면 최적인 사전을 정적사전으로서 이 정적사전에 의해 데이터 압축이 행해지기 때문에 출력되는 정적사전과 압축데이터의 데이터양을 최적인 것으로 할 수 있다. 이것에 의해 이 정적사전, 압축데이터가 저장되는 기억장치, 기억매체의 용량을 적게할 수 있고, 코스트 삭감등을 도모할 수 있다. 더욱이, 예를들면 데이터 압축율이 높은 동적사전을 이용한 데이터 압축 알고리즘 등을 이용할 수 있고, 데이터 압축율을 매우 높힐 수 있다. 또, 필요한 데이터열을 이 정적사전을 이용해 자유로이 복원할 수도 있고, 예를들면 정보처리장치등에 의해 이 압축된 데이터열을 복원하는 경우에 소망의 데이터열을 임의로 취출할 수 있게 된다. 또, 본 발명에 의하면 사전을 최적으로 하고, 최종적인 사전, 압축 데이터를 얻을 때 까지의 시간이 길게될 가능성도 있지만, 복원처리속도 자체는 특히 늦어지지 않는다는 효과도 있다.
또한, 특허청구범위 제2항의 발명에 의하면, 조합갯수가 많은 데이터열의 조합이 우선적으로 사전의 등록번호에 치환되기 때문에 데이터의 압축율을 최적으로 할 수 있다. 한편, 사용빈도가 낮은 등록데이터열의 등록을 삭제하고, 등록수가 소정수에 달한 단계에서 갱신이 종료하기 때문에 데이터양이 적은 최적의 사전을 생성할 수 있다. 그리고, 슬라이드 사전이라 불리우는 수법에 의해 간편하게 사전을 생성할 수 있다는 이점도 있다. 또, 이 경우의 소정수는 출력 데이터의 비트수가 예를들면 12비트인 경우에는 사전의 등록수가 이 12비트의 범위에서 해결되는 수로 할 수 있다.
또한, 특허청구범위 제3항에 의하면 출현확률이 높은 데이터열의 조합이 우선적으로 등록번호로 치환되기 때문에, 데이터 압축율을 최적인 것으로 할 수 있다. 한편 사용빈도가 낮은 등록데이터열의 등록을 삭제하고, 등록수가 소정수에 달한 단계에서 갱신이 종료되기 때문에 데이터량이 적은 최적의 사전을 생성할 수 있다. 그리고 최초 사전의 생성은 1회의 해석으로 가능하기 때문에 처리를 매우 간단화할 수 있다는 이점이 있다.
또한, 특허청구범위 제4항의 발명에 의하면, 데이터 압축율이 높은 동적사전을 이용한 데이터 압축 알고리즘에 의해 압축되고, 더욱이 데이터 압축율이 최적인 단계에서 사전의 갱신이 종료하기 때문에 데이터 압축율을 상당히 높힐 수 있다. 한편, 출력된 사전은 정적사전으로 되기 때문에 필요한 데이터열을 이 정적사전을 이용해 자유로이 복원할 수도 있다.
또, 특허청구범위 제5항의 발명에 의하면, 특히 동일한 데이터열로 압축처리하는 경우에 사전의 등록수를 종래의 증분분해법과 비교하여 매우 작게할 수 있고 동시에 당해 사전의 등록번호에 의해 치환되어 압축이 행히진 압축데이터 자체도 종래의 증분분해법에 비해 매우 적은 데이터량으로 할 수 있다.
또한, 특허청구범위 제6항의 발명에 의하면 데이터 압축율이 매우 높아지고 동시에 필요한 데이터열을 이 정적사전을 이용해 자유로이 복원할 수도 있다. 또, 최적인 압축율에 달했는가를 처리의 반복횟수만으로 판단할 수 있는 이점이 있다.
또한, 특허청구범위 제7항의 발명에 의하면, 사전의 등록가능수에 한계가 있는 등의 경우에 사전의 데이터량을 매우 간단한 방법으로 최적인 사이즈로 할 수 있다.
또한 특허청구범위 제8항의 발명에 의하면, 사전의 데이터양을 최적인 사이즈로 할 수 있고 동시에, 사전에 사용빈도가 높은 등록데이터열을 남길 수 있고, 최적인 사전을 생성할 수 있다.
또한, 특허청구범위 제9항의 발명에 의하면 비트맵 폰트 데이터, 아우트라인 폰트 데이터의 압축이 가능하고, 이러한 폰트 데이터가 저장되는 기억장치, 기억매체의 용량을 적게할 수 있다. 이것에 의해 당해 기억장치, 기억매체를 내장한 프린터, 컴퓨터 등의 코스트를 삭감할 수 있다.
또한, 특허청구범위 제10항의 발명에 의하면 데이터의 특성에 따라, 적용하는 압축방법을 바꿀 수 있고, 데이터의 압축율을 더욱 높힐 수 있다.
또한, 특허청구범위 제11항의 발명에 의하면 명조체, 고딕체 등의 자체 각각에 대하여 사전을 공통화할 수 있다. 예를들면 문자의 윤곽변화의 사양, 윤곽의 크기 등은 동일한 자체이면 공통인 경우가 많기 때문에 본 발명에 의하면 데이터를 보다 효율좋게 압축할 수 있다.
또한, 특허청구범위 제12항의 발명에 의하면, 문자의 기억에 필요한 용량 등을 절약할 수 있다.
또한, 특허청구범위 제13항의 발명에 의하면, 복원전용 데이터열이 복원전용 데이터 형식으로 변환시켜두고, 예를들면 증분분해법, 가증분해법에서는 트리구조가 없어질 때까지 등록데이터열이 분해되어 있다. 따라서, 통상의 사전을 이용하는 경우 보다도 매우 빨리 복원처리를 행할 수 있다.
또한 특허청구범위 제14항의 발명에 의하면, 복원된 데이터열을 이용해 소정의 처리, 예를들면 문자의 인쇄등의 처리를 행할 수 있다.
또한, 특허청구범위 제15항의 발명에 의하면, 복원수단에 의해 원래의 데이터열이 복원될 수 있고, 이 복원수단을 예를들면 컴퓨터, 프린터등의 정보처리장치 내에 내장시킬 수 있다.

Claims (18)

  1. 등록번호에 관련하여 등록 데이터열을 등록할 수 있는 사전을 사용하여 데이터열의 2 이상의 조합을 당해 등록번호로 치환함으로써 데이터압축을 행하는 데이터 압축방법에 있어서, 소정의 조건을 만족하는 데이터열의 조합을 우선적으로 등록함으로써 데이터열의 데이터압축에 이용되는 최적인 사전이 생성될 때까지 이 사전을 갱신하고, 최적인 사전이 생성된 단계에서 압축대상인 데이터 열 중에 이 사전에 등록되어 있는 데이터 열을 그에 대응하는 부호로 치환하여 압축을 행하여 출력하는 동시에 이 사전도 복원용 정적사전으로서 출력하는 것을 특징으로 하는 데이터 압축방법.
  2. 제1항에 있어서, 상기 사전의 갱신은 조합개수가 많은 데이터열의 조합을 우선적으로 사전에 등록하고, 조합 개수가 적은 등록 데이터열의 등록을 사전으로부터 삭제함으로써 행해지는 것을 특징으로 하는 데이터 압축방법.
  3. 제1항에 있어서, 상기 사전의 갱신은 출현확률이 높은 데이터열의 조합을 우선적으로 사전에 등록하고, 출현확률이 낮은 데이터열의 등록을 사전으로부터 삭제함으로써 행해지는 것을 특징으로 하는 데이터 압축방법.
  4. 제1항에 있어서, 상기 최적인 사전이 생성될 때까지의 상기 사전의 갱신은 데이터 압축시에 사전이 동적으로 변화하는 데이터 압축 알고리즘에 의해 사전을 갱신하면서 압축대상이 되는 전체 데이터열에 대한 데이터 압축처리를 행하고, 당해 처리에 의해 갱신된 사전을 이용해 다시 상기 데이터 압축 알고리즘에 의해 사전을 갱신하면서 압축대상으로 되는 전체 데이터열에 대한 데이터압축처리를 행하며, 데이터 압축율이 최적이 될 때까지 상기 처리를 반복함으로써 행해지는 것을 특징으로 하는 데이터 압축방법.
  5. 등록번호에 관련하여 등록데이터열을 등록할 수 있는 사전을 사용하여 데이터열의 2이상의 조합을 당해 등록번호로 치환함으로써 데이터 압축을 행하는 데이터 압축방법에 있어서, (A) 압축대상인 데이터열에서 소정수의 데이터열을 취출하여 소정수의 버퍼를 가진 작업영역에 저장하는 공정과, (B) 상기 작업영역 내의 서로 접한 버퍼에 저장되는 데이터열의 조합이 사전에 등록되어 있는가의 여부를 해석하고, 사전에 등록되어 있는 경우에 당해 데이터열의 조합을 사전에서의 상기 등록번호로 치환하고 동시에 치환에 의해 생긴 빈 버퍼를 메우도록 데이터열을 작업영역 내로 시프트시키며, 그 결과 작업영역의 말단에 생긴 빈 버퍼에 연속된 데이터열을 취입하고, 다시 작업영역 내의 서로 접한 버퍼에 저장되는 데이터열의 조합이 사전에 등록되어 있는가의 여부를 해석하는 공정 및 (C)상기 공정(B)의 해석에 의해 작업영역 내의 서로 접한 버퍼에 저장되는 데이터열의 조합중 어느 것도 사전에 등록되어 있지 않다고 판단된 경우에는 작업영역 내의 선두로부터 1번째, 2번째의 버퍼에 저장되는 데이터열의 조합을 사전에 등록하고 동시에 1번째의 데이터열을 소거하고, 소거에 의해 생긴 빈 버퍼를 메우도록 데이터열을 작업영역 내로 시프트시키고 그 결과 작업영역의 말단에 생긴 빈 버퍼에 연속된 데이터열을 취입하는 공정을 포함하며, 압축대상으로 된 전체 데이터열이 상기 작업영역 내에 저장될 때까지 상기 공정(B),(C)를 반복하는 것을 특징으로 하는 데이터 압축방법.
  6. 제5항에 있어서, 압축대상으로 된 전체 데이터열에 대하여 처리가 행해질 때까지의 상기 공정(B),(C)의 반복을 1회의 패스로한 경우에 전회의 패스로 갱신된 사전을 이용해 현재의 패스에서의 데이터 압축을 행하는 데이터 압축방법에 있어서, 현재의 패스에서의 상기 공정(B),(C)의 반복횟수가 전회의 패스에서의 반복횟수 보다 작은 경우에는 다음 패스로 이행하고, 현재 패스에서의 상기 공정(B),(C)의 반복횟수가 전회의 패스에서의 반복횟수 보다 큰 경우에는 전회의 패스로 갱신된 사전을 최종적인 복원용 정적사전으로 하여 출력하고, 동시에 당해 정적사전에 의해 1회의 패스의 데이터압축을 행하며, 압축된 데이터열을 최종적인 복원용 압축데이터로 하여 출력하는 것을 특징으로 하는 데이터 압축방법.
  7. 제1항 내지 제4항중 어느 한 항에 있어서, 상기 사전에는 등록번호, 등록데이터열과 함께 사용빈도 정보가 기억되고, 사용빈도가 낮은 등록데이터열을 순차적으로 삭제하는 공정을 포함하는 것을 특징으로 하는 데이터 압축방법.
  8. 제1항 내지 제4항 중 어느 한 항에 있어서, 압축대상으로 된 데이터열이 문자의 인쇄시에 필요한 폰트 데이터인 것을 특징으로 하는 데이터 압축방법.
  9. 제1항 내지 제4항중 어느 한 항에 있어서, 압축대상으로 되는 데이터열이 문자열인 것을 특징으로 하는 데이터 압축방법.
  10. 제1항 내지 제4항 중 어느 한 항에 있어서, 최종적으로 생성된 사전에 포함되는 등록번호와 등록데이터열의 정보로부터 상기 등록데이터열을 복원전용 데이터형식으로 변환한 복원전용 등록데이터열과 당해 복원전용 등록데이터열의 데이터길이와 당해 복원전용 등록데이터열의 개시 어드레스의 정보를 포함하는 복원전용 사전이 생성되는 것을 특징으로 하는 데이터 압축방법.
  11. 제1항 내지 제4항 중 어느 하나의 데이터 압축방법에 의해 생성된 압축데이터(4)와 최종적인 사전을 이용하여 당해 데이터 압축방법에 따라 복원처리에 의해 압축대상으로 된 데이터열(11)을 복원하는 것을 특징으로 하는 데이터 복원방법.
  12. 제1항 내지 제4항 중 어느 하나의 상기 데이터 압축방법에 의해 생성된 압축데이터와 최종적인 사전(3)을 이용하여 당해 데이터 압축방법에 따라 복원처리에 의해 압축대상으로 된 데이터열을 복원하는 수단을 포함하는 것을 특징으로 하는 정보처리 장치.
  13. 제5항 또는 제6항에 있어서, 상기 사전에는 등록번호, 등록데이터열과 함께 사용빈도 정보가 기억되고, 사용빈도가 낮은 등록데이터열을 순차적으로 삭제하는 공정을 포함하는 것을 특징으로 하는 데이터 압축방법.
  14. 제5항 또는 제6항에 있어서, 압축대상으로 된 데이터열이 문자의 인쇄시에 필요한 폰트 데이터인 것을 특징으로 하는 데이터 압축방법.
  15. 제5항 또는 제6항에 있어서, 압축대상으로 된 데이터열이 문자열인 것을 특징으로 하는 데이터 압축방법.
  16. 제5항 또는 제6항에 있어서, 최종적으로 생성된 사전에 포함되는 등록번호와 등록데이터열의 정보로부터 상기 등록데이터열을 복원전용 데이터형식으로 변환한 복원전용 등록데이터열과 당해 복원전용 등록데이터열의 데이터길이와 당해 복원전용 등록데이터열의 개시 어드레스의 정보를 포함하는 복원전용 사전이 생성되는 것을 특징으로 하는 데이터 압축방법.
  17. 제5항 또는 제6항의 데이터 압축방법에 의해 생성된 압축데이터(4)와 최종적인 사전을 이용하여 당해 데이터 압축방법에 따라 복원처리에 의해 압축대상으로 된 데이터열(11)을 복원하는 것을 특징으로 하는 데이터 복원방법.
  18. 제5항 또는 제6항의 데이터 압축방법에 의해 생성된 압축데이터와 최종적인 사전(3)을 이용하여 당해 데이터 압축방법에 따라 복원처리에 의해 압축대상으로 된 데이터열을 복원하는 수단을 포함하는 것을 특징으로 하는 정보처리 장치.
KR1019940035931A 1994-06-16 1994-12-22 데이타 압축방법, 데이타 복원방법 및 정보처리 장치 KR100260827B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP15809994A JP3132293B2 (ja) 1993-06-22 1994-06-16 データ圧縮方法、データ復元方法及び情報処理装置
JP94-158099 1994-06-16

Publications (1)

Publication Number Publication Date
KR100260827B1 true KR100260827B1 (ko) 2000-07-01

Family

ID=15664287

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019940035931A KR100260827B1 (ko) 1994-06-16 1994-12-22 데이타 압축방법, 데이타 복원방법 및 정보처리 장치

Country Status (6)

Country Link
US (1) US5646617A (ko)
EP (1) EP0687995B1 (ko)
KR (1) KR100260827B1 (ko)
CN (1) CN1099766C (ko)
DE (1) DE69433620T2 (ko)
SG (1) SG52323A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100448289B1 (ko) 1997-12-20 2004-11-16 주식회사 대우일렉트로닉스 스트링매칭모듈을갖는데이터압축시스템
KR19990076303A (ko) * 1998-03-31 1999-10-15 전주범 모뎀용 데이터 부호화 및 복호화 방법
JP3566111B2 (ja) * 1998-11-30 2004-09-15 松下電器産業株式会社 記号辞書作成方法及び記号辞書検索方法
US6320523B1 (en) * 1999-07-30 2001-11-20 Unisys Corporation Method and apparatus for reducing the time required for compressing data
EP1338128B1 (en) * 2000-10-11 2006-06-07 Broadcom Corporation Efficiently transmitting RTP packets in a network
US6649567B2 (en) * 2001-10-11 2003-11-18 Isp Investments Inc. Controlled release microbiocide for porous surfaces
US20020118885A1 (en) * 2001-02-27 2002-08-29 Bernard Smeets Font compression and retrieval
GB0210604D0 (en) * 2002-05-09 2002-06-19 Ibm Method and arrangement for data compression
JP5106768B2 (ja) * 2005-09-29 2012-12-26 富士通株式会社 アウトラインフォント圧縮方法
JP4909003B2 (ja) * 2006-10-03 2012-04-04 キヤノン株式会社 画像処理装置及び方法
US7724164B2 (en) * 2007-01-24 2010-05-25 Samsung Electronics Co., Ltd. Apparatus and method of dynamically caching symbols to manage a dictionary in a text image coding and decoding system
CN101847159A (zh) * 2010-05-11 2010-09-29 中兴通讯股份有限公司 终端设备及其词库更新的方法
US8228216B2 (en) * 2010-09-08 2012-07-24 Hewlett-Packard Development Company, L.P. Systems and methods for data compression
US8902087B1 (en) 2013-08-27 2014-12-02 International Business Machines Corporation Data decompression utilizing pre-expanded dictionaries during decompression
JP6256883B2 (ja) * 2015-03-25 2018-01-10 国立大学法人 筑波大学 データ圧縮・解凍システム、データ圧縮方法及びデータ解凍方法、並びにデータ圧縮器及びデータ解凍器
CN108494409B (zh) * 2018-03-14 2021-07-13 电子科技大学 基于小字典的随钻中子测井仪井下高速实时压缩方法
JP7406915B2 (ja) * 2018-11-02 2023-12-28 三菱重工業株式会社 単位空間更新装置、単位空間更新方法、及びプログラム
US11122095B2 (en) * 2019-09-23 2021-09-14 Netapp, Inc. Methods for dictionary-based compression and devices thereof
CN116610265B (zh) * 2023-07-14 2023-09-29 济南玖通志恒信息技术有限公司 一种商务信息咨询系统的数据存储方法
CN116915260B (zh) * 2023-09-13 2023-11-24 无锡市明通动力工业有限公司 一种风电电机冷却风机故障数据优化采集方法
CN116975312B (zh) * 2023-09-22 2023-12-19 山东五棵松电气科技有限公司 一种智慧校园教育数据管理系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4843389A (en) * 1986-12-04 1989-06-27 International Business Machines Corp. Text compression and expansion method and apparatus
US5087913A (en) * 1990-08-27 1992-02-11 Unisys Corporation Short-record data compression and decompression system
US5243341A (en) * 1992-06-01 1993-09-07 Hewlett Packard Company Lempel-Ziv compression scheme with enhanced adapation
US5442350A (en) * 1992-10-29 1995-08-15 International Business Machines Corporation Method and means providing static dictionary structures for compressing character data and expanding compressed data
US5323155A (en) * 1992-12-04 1994-06-21 International Business Machines Corporation Semi-static data compression/expansion method
JP2505980B2 (ja) * 1993-04-16 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション 静的辞書作成方法及びコンピュ―タ実行システム
US5488365A (en) * 1994-03-01 1996-01-30 Hewlett-Packard Company Method and apparatus for compressing and decompressing short blocks of data

Also Published As

Publication number Publication date
DE69433620D1 (de) 2004-04-22
CN1115524A (zh) 1996-01-24
EP0687995A2 (en) 1995-12-20
US5646617A (en) 1997-07-08
SG52323A1 (en) 1998-09-28
CN1099766C (zh) 2003-01-22
DE69433620T2 (de) 2004-08-12
EP0687995B1 (en) 2004-03-17
EP0687995A3 (en) 1996-05-01

Similar Documents

Publication Publication Date Title
KR100260827B1 (ko) 데이타 압축방법, 데이타 복원방법 및 정보처리 장치
EP0813167B1 (en) Method and apparatus for font compression and decompression
US5229768A (en) Adaptive data compression system
US8200646B2 (en) Efficient retrieval of variable-length character string data
KR20000068018A (ko) 스트링 검색이 포함되어 있는 즉각적인 사전 갱신을 갖춘 데이터
US7880648B2 (en) Information processing apparatus, information processing method, and computer product
US20140059075A1 (en) Extracting method, information processing method, computer product, extracting apparatus, and information processing apparatus
US7868793B2 (en) Methods and devices for coding and decoding of SML type documents by similarities
CA2153377A1 (en) Method and apparatus for identifying words described in a portable electronic document
KR100490240B1 (ko) 데이타압축장치,데이타복원장치,데이타압축방법,데이타복원방법및프로그램기록매체
US7184046B1 (en) Method and apparatus for font storage reduction
US7898686B2 (en) System and method for encoded raster document generation
KR20030006443A (ko) 폰트의 손실 압축 및 저장 방법
JP4582952B2 (ja) ハードコピー・ドキュメントのための画像データ生成方法及び同装置
JP3449338B2 (ja) データ圧縮方法、データ復元方法及び情報処理装置
KR100906041B1 (ko) 폰트 압축 및 검색 방법 및 장치
US20010012398A1 (en) Multi-color image encoding apparatus and method, multi-color image decoding apparatus and method
JP3132293B2 (ja) データ圧縮方法、データ復元方法及び情報処理装置
JP4582953B2 (ja) ハードコピー・ドキュメントのための画像データ復号化方法及び同装置
US20060238539A1 (en) Method and apparatus for glyph hinting by analysis of similar elements
EP0848350A1 (en) Method and apparatus for handwriting compression
US7259891B2 (en) Image compression method, decompression method thereof and program therefor
JP3266419B2 (ja) データ圧縮・伸長方式
JPH09171564A (ja) 描画装置
JP2001502485A (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
FPAY Annual fee payment

Payment date: 20080411

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee