JP2001267930A - 符号伸長装置およびその方法 - Google Patents
符号伸長装置およびその方法Info
- Publication number
- JP2001267930A JP2001267930A JP2000074829A JP2000074829A JP2001267930A JP 2001267930 A JP2001267930 A JP 2001267930A JP 2000074829 A JP2000074829 A JP 2000074829A JP 2000074829 A JP2000074829 A JP 2000074829A JP 2001267930 A JP2001267930 A JP 2001267930A
- Authority
- JP
- Japan
- Prior art keywords
- character string
- character
- entry
- code
- entry number
- Prior art date
- Legal status (The legal status 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 status listed.)
- Withdrawn
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
(57)【要約】
【課題】 LZW符号伸長用の文字列テーブルは、そのエ
ントリ毎に、そのエントリに対応する文字列の長さ分の
記憶領域を必要とする。従って、伸長開始前に記憶領域
を確保する場合(文字列の最大長×最大エントリ数)の
記憶領域を用意しなければならず、テーブルエントリ数
を増やして圧縮率を向上させようとすると、必要な記憶
領域が指数的に増大する。 【解決手段】 一連の文字列を文字列テーブルへのエン
トリで表現する符号伸長方法であって、文字列を所定の
エントリ番号および所定の文字部分で表現し、そのエン
トリ番号および文字部分を文字列テーブルに格納し、エ
ントリに従って、格納されたエントリ番号および文字部
分より一連の文字列を求め、求めた一連の文字列を出力
する。
ントリ毎に、そのエントリに対応する文字列の長さ分の
記憶領域を必要とする。従って、伸長開始前に記憶領域
を確保する場合(文字列の最大長×最大エントリ数)の
記憶領域を用意しなければならず、テーブルエントリ数
を増やして圧縮率を向上させようとすると、必要な記憶
領域が指数的に増大する。 【解決手段】 一連の文字列を文字列テーブルへのエン
トリで表現する符号伸長方法であって、文字列を所定の
エントリ番号および所定の文字部分で表現し、そのエン
トリ番号および文字部分を文字列テーブルに格納し、エ
ントリに従って、格納されたエントリ番号および文字部
分より一連の文字列を求め、求めた一連の文字列を出力
する。
Description
【0001】
【発明の属する技術分野】本発明は符号伸長装置および
その方法に関し、例えば、LZW符号の伸長処理を行う符
号伸長装置およびその方法に関する。
その方法に関し、例えば、LZW符号の伸長処理を行う符
号伸長装置およびその方法に関する。
【0002】
【従来の技術】近年、画像情報、特に動画像情報を扱う
装置が市場に出回ってきており、情報処理の際、データ
圧縮を行うことが一般的である。例えば、LZW符号を用
いて、符号圧縮伸長する技術が知られている。このLZW
符号とは、一連の文字列を、文字列テーブルのエントリ
番号で表現する符号である。
装置が市場に出回ってきており、情報処理の際、データ
圧縮を行うことが一般的である。例えば、LZW符号を用
いて、符号圧縮伸長する技術が知られている。このLZW
符号とは、一連の文字列を、文字列テーブルのエントリ
番号で表現する符号である。
【0003】通常、同じ情報を文字列で表現するより
も、文字列テーブルのエントリ番号で表現する方が、よ
り短い符号列で表現することができる。この性質が故
に、LZW符号はデータ圧縮に利用されており、現在で
は、GIFやTIFF形式といった画像符号圧縮などに幅広く
活用されている。
も、文字列テーブルのエントリ番号で表現する方が、よ
り短い符号列で表現することができる。この性質が故
に、LZW符号はデータ圧縮に利用されており、現在で
は、GIFやTIFF形式といった画像符号圧縮などに幅広く
活用されている。
【0004】ここで、従来のLZW符号伸長処理について
詳細に説明する。LZW符号は、データ(すなわち、文字
列)をLZW符号圧縮処理で変換して、生成される。一般
にLZW符号は、元の文字列より少ない容量(データ量)
で同じ情報を表現するので、文字列をLZW符号に変換す
ることで、必要とする容量の圧縮を実現できる。また、
LZW符号伸長処理では、LZW符号圧縮処理によって圧縮さ
れたLZW符号を、変換前の文字列に戻す処理を行う。
詳細に説明する。LZW符号は、データ(すなわち、文字
列)をLZW符号圧縮処理で変換して、生成される。一般
にLZW符号は、元の文字列より少ない容量(データ量)
で同じ情報を表現するので、文字列をLZW符号に変換す
ることで、必要とする容量の圧縮を実現できる。また、
LZW符号伸長処理では、LZW符号圧縮処理によって圧縮さ
れたLZW符号を、変換前の文字列に戻す処理を行う。
【0005】図12は、LZW符号伸長処理の流れを示すフ
ローチャートである。なお、以下の説明では、圧縮され
たLZW符号列、および伸長される文字列は、記憶媒体あ
るいは記録媒体に格納されるものとする。また、これら
の媒体からの入力は、単に「入力」と略記し、これらの
媒体への出力も、単に「出力」と略記する。さらに、こ
こで伸長される文字列は、<0>から<255>までの文字
の列とする。
ローチャートである。なお、以下の説明では、圧縮され
たLZW符号列、および伸長される文字列は、記憶媒体あ
るいは記録媒体に格納されるものとする。また、これら
の媒体からの入力は、単に「入力」と略記し、これらの
媒体への出力も、単に「出力」と略記する。さらに、こ
こで伸長される文字列は、<0>から<255>までの文字
の列とする。
【0006】図12に示すLZW符号伸長処理では、ステッ
プS201において、LZW符号を一文字分、入力する。LZW符
号の入力は、LZW符号列の先頭から最後尾まで、順番に
行われる。次に、ステップS202において、入力したLZW
符号が終了コードであるかどうかを判定する。ここで、
終了コードとは、LZW符号の終端を表すコードで、入力
したLZW符号が終了コードであれば、本LZW符号伸長処理
を終了する。
プS201において、LZW符号を一文字分、入力する。LZW符
号の入力は、LZW符号列の先頭から最後尾まで、順番に
行われる。次に、ステップS202において、入力したLZW
符号が終了コードであるかどうかを判定する。ここで、
終了コードとは、LZW符号の終端を表すコードで、入力
したLZW符号が終了コードであれば、本LZW符号伸長処理
を終了する。
【0007】ステップS203では、入力したLZW符号がク
リアコードであるかを判定する。クリアコードとは、LZ
W符号の文字列テーブルの初期化要求を表す。慣例とし
て、LZW符号列は、クリアコードで始まる。入力したLZW
符号がクリアコードであれば、処理をステップS204の初
期化処理に進めるが、クリアコード以外の場合には、ス
テップS208に進む。
リアコードであるかを判定する。クリアコードとは、LZ
W符号の文字列テーブルの初期化要求を表す。慣例とし
て、LZW符号列は、クリアコードで始まる。入力したLZW
符号がクリアコードであれば、処理をステップS204の初
期化処理に進めるが、クリアコード以外の場合には、ス
テップS208に進む。
【0008】ステップS204〜S207は、入力したLZW符号
がクリアコードの場合の処理を示している。最初に、ス
テップS204において、文字列テーブルを初期化する。初
期化後の文字列テーブルの状態を、図13に示す。ここで
は、エントリ0〜255に、それぞれ、文字<0>〜<255>
が登録されている。なお、同図において、LZW符号256、
257は、それぞれ、クリアコード、終了コードに割り当
てられているので、文字列テーブルのエントリ256、257
が参照されることはない。
がクリアコードの場合の処理を示している。最初に、ス
テップS204において、文字列テーブルを初期化する。初
期化後の文字列テーブルの状態を、図13に示す。ここで
は、エントリ0〜255に、それぞれ、文字<0>〜<255>
が登録されている。なお、同図において、LZW符号256、
257は、それぞれ、クリアコード、終了コードに割り当
てられているので、文字列テーブルのエントリ256、257
が参照されることはない。
【0009】ステップS205では、LZW符号を一文字、入
力する。続くステップS206において、入力したLZW符号
が終了コードであるか否かを判定する。入力したLZW符
号が終了コードであれば、本LZW符号伸長処理を終了す
る。しかし、それが終了コードでなければ、ステップS2
07において、入力したLZW符号に対応する文字を出力す
る。そして、その後、ステップS213に進む。
力する。続くステップS206において、入力したLZW符号
が終了コードであるか否かを判定する。入力したLZW符
号が終了コードであれば、本LZW符号伸長処理を終了す
る。しかし、それが終了コードでなければ、ステップS2
07において、入力したLZW符号に対応する文字を出力す
る。そして、その後、ステップS213に進む。
【0010】一方、ステップS208〜S212は、入力したLZ
W符号がクリアコード以外の場合の処理を示している。
まず、ステップS208において、入力したLZW符号が、文
字列テーブルに登録されているかを判定する。なお、こ
の判定は、入力したLZW符号の数値が、文字列テーブル
の、文字列が登録されている最後のエントリ番号より大
きいかどうかを調べることで、実現できる。
W符号がクリアコード以外の場合の処理を示している。
まず、ステップS208において、入力したLZW符号が、文
字列テーブルに登録されているかを判定する。なお、こ
の判定は、入力したLZW符号の数値が、文字列テーブル
の、文字列が登録されている最後のエントリ番号より大
きいかどうかを調べることで、実現できる。
【0011】そこで、入力したLZW符号が、文字列テー
ブルに登録されている場合、ステップS209において、そ
の文字列テーブルに登録されている文字列を出力する。
次に、ステップS210において、前回出力した文字列と今
回出力した文字列の先頭一文字をつなげた文字列を、文
字列テーブルに追加し、その後、ステップS213に進む。
なお、ここでの「前回出力した文字列」は、後述するス
テップS213の処理を実行することで、保存されることに
なる。
ブルに登録されている場合、ステップS209において、そ
の文字列テーブルに登録されている文字列を出力する。
次に、ステップS210において、前回出力した文字列と今
回出力した文字列の先頭一文字をつなげた文字列を、文
字列テーブルに追加し、その後、ステップS213に進む。
なお、ここでの「前回出力した文字列」は、後述するス
テップS213の処理を実行することで、保存されることに
なる。
【0012】入力したLZW符号が、文字列テーブルに登
録されていない場合(ステップS208で“NO”)は、ステ
ップS211において、前回出力した文字列に前回出力した
文字列の先頭一文字をつなげた文字列を出力する。そし
て、続くステップS212で、このように、前回出力した文
字列にその先頭一文字をつなげた文字列を、文字列テー
ブルに追加した後、ステップS213に進む。
録されていない場合(ステップS208で“NO”)は、ステ
ップS211において、前回出力した文字列に前回出力した
文字列の先頭一文字をつなげた文字列を出力する。そし
て、続くステップS212で、このように、前回出力した文
字列にその先頭一文字をつなげた文字列を、文字列テー
ブルに追加した後、ステップS213に進む。
【0013】このステップS213では、次回の出力のため
に、今回出力した文字列を保存する。その後、処理をス
テップS201に戻し、当該LZW符号伸長処理を継続する。
以上の処理により、LZW符号列を、変換前の文字列に戻
すことができる。
に、今回出力した文字列を保存する。その後、処理をス
テップS201に戻し、当該LZW符号伸長処理を継続する。
以上の処理により、LZW符号列を、変換前の文字列に戻
すことができる。
【0014】このように、LZW符号伸長処理では、文字
列出力の度に、文字列テーブルに文字列を登録し、それ
を次回以降の文字列出力に利用する、という処理を行
う。
列出力の度に、文字列テーブルに文字列を登録し、それ
を次回以降の文字列出力に利用する、という処理を行
う。
【0015】図14は、新たに、いくつかの文字列が追加
された文字列テーブルの状態例を示している。まず始め
に、クリアコードが入力されて、文字列テーブルの初期
化が行われ、次に、0が入力されると、<0>が出力され
る。また、258が入力されると、それに対応する文字列
が文字列テーブルに登録されていないので、前回出力し
た文字列(=<0>)と、前回出力した文字列の先頭一文
字(=<0>)とをつなげた文字列(=<0><0>)が出
力され、文字列テーブルのエントリ258には、<0><0
>が登録される。
された文字列テーブルの状態例を示している。まず始め
に、クリアコードが入力されて、文字列テーブルの初期
化が行われ、次に、0が入力されると、<0>が出力され
る。また、258が入力されると、それに対応する文字列
が文字列テーブルに登録されていないので、前回出力し
た文字列(=<0>)と、前回出力した文字列の先頭一文
字(=<0>)とをつなげた文字列(=<0><0>)が出
力され、文字列テーブルのエントリ258には、<0><0
>が登録される。
【0016】次に1が入力されると、対応する文字列が
文字列テーブルに登録されているので、文字列テーブル
のエントリ1に登録されている文字列(=<1>)が出力
され、文字列テーブルのエントリ259に、前回出力した
文字列(=<0><0>)と、今回出力した文字列の先頭
一文字(=<1>)とをつなげた文字列(=<0><0><1
>)が登録される。
文字列テーブルに登録されているので、文字列テーブル
のエントリ1に登録されている文字列(=<1>)が出力
され、文字列テーブルのエントリ259に、前回出力した
文字列(=<0><0>)と、今回出力した文字列の先頭
一文字(=<1>)とをつなげた文字列(=<0><0><1
>)が登録される。
【0017】そして、次に2が入力されると、<2>が出
力され、文字列テーブルには、<1><2>が登録され
る。次に259が入力されると、対応する文字列が文字列
テーブルに登録されているので、文字列テーブルのエン
トリ259に登録されている文字列(=<0><0><1>)
が出力され、文字列テーブルに、<2><0>が登録され
る。
力され、文字列テーブルには、<1><2>が登録され
る。次に259が入力されると、対応する文字列が文字列
テーブルに登録されているので、文字列テーブルのエン
トリ259に登録されている文字列(=<0><0><1>)
が出力され、文字列テーブルに、<2><0>が登録され
る。
【0018】
【発明が解決しようとする課題】しかしながら、上記の
文字列テーブルの管理方法では、文字列テーブルのエン
トリ毎に、そのエントリに対応する文字列の長さ分の記
憶領域が必要になる。そして、LZW符号伸長処理の開始
前に、文字列テーブルに必要な記憶領域を確保する方法
をとる場合、(文字列の長さが取り得る最大値)×(文
字列テーブルの最大エントリ数)だけの記憶領域を用意
しなければならない。この「文字列の長さが取り得る最
大値」は、約「文字列テーブルの最大エントリ数」にな
るため、この最大テーブルエントリ数を増やして、圧縮
率を向上させようとすればする程、必要な記憶領域が指
数的に増大することになる。
文字列テーブルの管理方法では、文字列テーブルのエン
トリ毎に、そのエントリに対応する文字列の長さ分の記
憶領域が必要になる。そして、LZW符号伸長処理の開始
前に、文字列テーブルに必要な記憶領域を確保する方法
をとる場合、(文字列の長さが取り得る最大値)×(文
字列テーブルの最大エントリ数)だけの記憶領域を用意
しなければならない。この「文字列の長さが取り得る最
大値」は、約「文字列テーブルの最大エントリ数」にな
るため、この最大テーブルエントリ数を増やして、圧縮
率を向上させようとすればする程、必要な記憶領域が指
数的に増大することになる。
【0019】また、文字列テーブルに文字列が登録され
る度に、文字列の長さ分の記憶領域を用意するという方
法をとった場合、文字列テーブルに文字列が登録される
度に、その記憶領域を確保しなければならなくなる。そ
の結果、伸長処理過程で空き記憶領域が不足し、伸長処
理の中断を余儀なくされる可能性がある。さらには、文
字列テーブルに文字列が登録される度に記憶領域を用意
するので、この方法が、伸長処理速度の低下につなが
る、という問題がある。
る度に、文字列の長さ分の記憶領域を用意するという方
法をとった場合、文字列テーブルに文字列が登録される
度に、その記憶領域を確保しなければならなくなる。そ
の結果、伸長処理過程で空き記憶領域が不足し、伸長処
理の中断を余儀なくされる可能性がある。さらには、文
字列テーブルに文字列が登録される度に記憶領域を用意
するので、この方法が、伸長処理速度の低下につなが
る、という問題がある。
【0020】本発明は、上述の問題を個々にまたはまと
めて解決するためのものであり、僅かな記憶容量で、符
号伸長における文字列テーブルを管理することを目的と
する。
めて解決するためのものであり、僅かな記憶容量で、符
号伸長における文字列テーブルを管理することを目的と
する。
【0021】また、文字列テーブルの記憶容量を固定サ
イズにすることを他の目的とする。
イズにすることを他の目的とする。
【0022】
【課題を解決するための手段】本発明は、前記の目的を
達成する一手段として、以下の構成を備える。
達成する一手段として、以下の構成を備える。
【0023】本発明にかかる符号伸長方法は、一連の文
字列を文字列テーブルへのエントリで表現する符号伸長
方法であって、文字列を所定のエントリ番号および所定
の文字部分で表現し、前記エントリ番号および文字部分
を前記文字列テーブルに格納し、前記エントリに従っ
て、格納されたエントリ番号および文字部分より前記一
連の文字列を求め、求めた一連の文字列を出力すること
を特徴とする。
字列を文字列テーブルへのエントリで表現する符号伸長
方法であって、文字列を所定のエントリ番号および所定
の文字部分で表現し、前記エントリ番号および文字部分
を前記文字列テーブルに格納し、前記エントリに従っ
て、格納されたエントリ番号および文字部分より前記一
連の文字列を求め、求めた一連の文字列を出力すること
を特徴とする。
【0024】また、一連の文字列を文字列テーブルへの
エントリで表現する符号伸長方法であって、文字列を所
定のエントリ番号、所定の文字部分および前記文字列の
長さで表現し、前記エントリ番号、文字部分および文字
列の長さを前記文字列テーブルに格納し、前記エントリ
に従って、格納されたエントリ番号、文字部分および文
字列の長さより前記一連の文字列を求め、求めた一連の
文字列を出力することを特徴とする。
エントリで表現する符号伸長方法であって、文字列を所
定のエントリ番号、所定の文字部分および前記文字列の
長さで表現し、前記エントリ番号、文字部分および文字
列の長さを前記文字列テーブルに格納し、前記エントリ
に従って、格納されたエントリ番号、文字部分および文
字列の長さより前記一連の文字列を求め、求めた一連の
文字列を出力することを特徴とする。
【0025】本発明にかかる符号伸長装置は、一連の文
字列を文字列テーブルへのエントリで表現する符号伸長
装置であって、文字列を所定のエントリ番号および所定
の文字部分で表現する手段と、前記エントリ番号および
文字部分を前記文字列テーブルに格納する手段と、前記
エントリに従って、格納されたエントリ番号および文字
部分より前記一連の文字列を求める手段と、求めた一連
の文字列を出力する手段とを備えることを特徴とする。
字列を文字列テーブルへのエントリで表現する符号伸長
装置であって、文字列を所定のエントリ番号および所定
の文字部分で表現する手段と、前記エントリ番号および
文字部分を前記文字列テーブルに格納する手段と、前記
エントリに従って、格納されたエントリ番号および文字
部分より前記一連の文字列を求める手段と、求めた一連
の文字列を出力する手段とを備えることを特徴とする。
【0026】また、一連の文字列を文字列テーブルへの
エントリで表現する符号伸長装置であって、文字列を所
定のエントリ番号、所定の文字部分および前記文字列の
長さで表現する手段と、前記エントリ番号、文字部分お
よび文字列の長さを前記文字列テーブルに格納する手段
と、前記エントリに従って、格納されたエントリ番号、
文字部分および文字列の長さより前記一連の文字列を求
める手段と、前記求めた一連の文字列を出力する手段と
を備えることを特徴とする。
エントリで表現する符号伸長装置であって、文字列を所
定のエントリ番号、所定の文字部分および前記文字列の
長さで表現する手段と、前記エントリ番号、文字部分お
よび文字列の長さを前記文字列テーブルに格納する手段
と、前記エントリに従って、格納されたエントリ番号、
文字部分および文字列の長さより前記一連の文字列を求
める手段と、前記求めた一連の文字列を出力する手段と
を備えることを特徴とする。
【0027】
【発明の実施の形態】以下、添付図面を参照して、本発
明の実施の形態を詳細に説明する。
明の実施の形態を詳細に説明する。
【0028】
【第1実施形態】図1は、本発明の第1実施形態にかか
る、LZW伸長処理を搭載したコンピュータシステムのシ
ステム構成例を示すブロック図である。図1において、
プロセッサ101は、バス100を通じて、メモリ102、ディ
スク装置103、キーボード104、ポインティングデバイス
105、ビデオアダプタ106、および、ネットワークアダプ
タ107と接続されている。また、ビデオアダプタ106に
は、ディスプレイ装置108が接続されている。
る、LZW伸長処理を搭載したコンピュータシステムのシ
ステム構成例を示すブロック図である。図1において、
プロセッサ101は、バス100を通じて、メモリ102、ディ
スク装置103、キーボード104、ポインティングデバイス
105、ビデオアダプタ106、および、ネットワークアダプ
タ107と接続されている。また、ビデオアダプタ106に
は、ディスプレイ装置108が接続されている。
【0029】プロセッサ101は、メモリ102に記憶された
処理手順、すなわち、所定のプログラムに従って、上述
した各構成部を制御する。このように、メモリ102に
は、プロセッサ101が利用するプログラムやデータが記
憶されている。また、ディスク装置103には、本システ
ムが必要とするプログラムやデータが記録されている。
処理手順、すなわち、所定のプログラムに従って、上述
した各構成部を制御する。このように、メモリ102に
は、プロセッサ101が利用するプログラムやデータが記
憶されている。また、ディスク装置103には、本システ
ムが必要とするプログラムやデータが記録されている。
【0030】ユーザ、キーボード104やポインティング
デバイス105により、本システムに情報を入力すること
ができる。また、ビデオアダプタ106によって、種々の
情報をディスプレイ装置108に表示することが可能にな
り、ネットワークアダプタ107を介して、本システムを
ネツトワーク110に接続することができる。なお、LZW符
号伸長処理、および処理対象になるデータは、ディスク
装置103に格納され、必要に応じて、メモリ102に読み込
まれ、プロセッサ101により実行される。
デバイス105により、本システムに情報を入力すること
ができる。また、ビデオアダプタ106によって、種々の
情報をディスプレイ装置108に表示することが可能にな
り、ネットワークアダプタ107を介して、本システムを
ネツトワーク110に接続することができる。なお、LZW符
号伸長処理、および処理対象になるデータは、ディスク
装置103に格納され、必要に応じて、メモリ102に読み込
まれ、プロセッサ101により実行される。
【0031】第1実施形態のLZW符号伸長処理は、図12に
示す処理手順と同じであるため、ここでは、その説明を
省略する。しかし、第1実施形態にかかる伸長処理は、
図12に示す処理方法と比べて、文字列テーブルの管理方
法が異なるため、以下、この相違点に絞って伸長処理を
説明する。
示す処理手順と同じであるため、ここでは、その説明を
省略する。しかし、第1実施形態にかかる伸長処理は、
図12に示す処理方法と比べて、文字列テーブルの管理方
法が異なるため、以下、この相違点に絞って伸長処理を
説明する。
【0032】第1実施形態の文字列テーブルには、上記
の方法とは異なり、各エントリに対して、「前文字列エ
ントリ番号」(=一文字目から始まり、最後から一文字
前までで終わる文字列に対応する、文字列テーブルのエ
ントリ番号)と、「最終文字」(=最後の一文字)が格
納される。
の方法とは異なり、各エントリに対して、「前文字列エ
ントリ番号」(=一文字目から始まり、最後から一文字
前までで終わる文字列に対応する、文字列テーブルのエ
ントリ番号)と、「最終文字」(=最後の一文字)が格
納される。
【0033】図2は第1実施形態のおける文字列テーブル
の初期化処理手順の一例を示すフローチャートである。
図2のステップS501では、処理対象エントリに文字列テ
ーブルの最初のエントリを設定する。なお、以降の処理
の内、ステップS502〜S505では、すべての文字に対応す
るエントリについて処理する。そこで、ステップS502に
おいて、処理対象エントリの「前文字列エントリ番号」
に-1を格納する。ここで、-1は“前文字列なし”を表現
する値である。
の初期化処理手順の一例を示すフローチャートである。
図2のステップS501では、処理対象エントリに文字列テ
ーブルの最初のエントリを設定する。なお、以降の処理
の内、ステップS502〜S505では、すべての文字に対応す
るエントリについて処理する。そこで、ステップS502に
おいて、処理対象エントリの「前文字列エントリ番号」
に-1を格納する。ここで、-1は“前文字列なし”を表現
する値である。
【0034】ステップS503において、処理対象エントリ
の「最終文字」に、エントリ番号に対応する文字を格納
する。続くステップS504では、処理対象エントリを+1す
る。そして、ステップS505において、すべての文字に対
して処理がなされたかを判定する。なお、この判定は、
処理対象エントリの値を調べることで行う。
の「最終文字」に、エントリ番号に対応する文字を格納
する。続くステップS504では、処理対象エントリを+1す
る。そして、ステップS505において、すべての文字に対
して処理がなされたかを判定する。なお、この判定は、
処理対象エントリの値を調べることで行う。
【0035】ステップS505において、すべての文字に対
して処理が実行されていないと判定された場合、ステッ
プS502に処理を戻す。しかし、そうでない場合には、次
のステップS506に進む。このステップS506では、文字列
追加エントリに処理対象エントリ+2を設定する。この文
字列追加エントリは、次回、文字列が文字列テーブルに
登録される際に追加されるエントリを表している。
して処理が実行されていないと判定された場合、ステッ
プS502に処理を戻す。しかし、そうでない場合には、次
のステップS506に進む。このステップS506では、文字列
追加エントリに処理対象エントリ+2を設定する。この文
字列追加エントリは、次回、文字列が文字列テーブルに
登録される際に追加されるエントリを表している。
【0036】一般に、すべての文字が登録された後の、
次のエントリ番号は、終了コードに使用される。また、
さらにその次のエントリ番号は、クリアコードに使用さ
れる。従って、文字列追加エントリは、さらにその次の
エントリになる。以上の処理により、文字列テーブルが
初期化される。
次のエントリ番号は、終了コードに使用される。また、
さらにその次のエントリ番号は、クリアコードに使用さ
れる。従って、文字列追加エントリは、さらにその次の
エントリになる。以上の処理により、文字列テーブルが
初期化される。
【0037】図3は、文字列テーブル初期化処理を実行
した後の、文字列テーブルの状態を示している。図3に
示すように、エントリ0〜255の、「前文字列エントリ番
号」には、“前文字列なし”を示す-1が格納されてい
る。また、最後の文字には、それぞれ、文字<0>〜<2
55>が登録されている。なお、LZW符号256、257は、そ
れぞれ、クリアコード、終了コードに割り当てられてい
るので、文字列テーブルのエントリ256。257が参照され
ることはない。
した後の、文字列テーブルの状態を示している。図3に
示すように、エントリ0〜255の、「前文字列エントリ番
号」には、“前文字列なし”を示す-1が格納されてい
る。また、最後の文字には、それぞれ、文字<0>〜<2
55>が登録されている。なお、LZW符号256、257は、そ
れぞれ、クリアコード、終了コードに割り当てられてい
るので、文字列テーブルのエントリ256。257が参照され
ることはない。
【0038】次に、第1実施形態の文字列登録処理につ
いて説明する。図4は、第1実施形態の文字列テーブルへ
文字列を登録する処理手順の一例を示すフローチャート
である。まず、図4のステップS701では、文字列登録エ
ントリの「前文字列エントリ番号」に、前回出力した文
字列のエントリ番号を格納する。次に、ステップS702に
おいて、文字列追加エントリの「最終文字」に、今回出
力した文字列の最初の文字を格納する。
いて説明する。図4は、第1実施形態の文字列テーブルへ
文字列を登録する処理手順の一例を示すフローチャート
である。まず、図4のステップS701では、文字列登録エ
ントリの「前文字列エントリ番号」に、前回出力した文
字列のエントリ番号を格納する。次に、ステップS702に
おいて、文字列追加エントリの「最終文字」に、今回出
力した文字列の最初の文字を格納する。
【0039】最後に、ステップS703において、文字列追
加エントリを+1する。以上の処理により、文字列テーブ
ルに、新たに文字列が登録され、また、文字列追加エン
トリが更新される。
加エントリを+1する。以上の処理により、文字列テーブ
ルに、新たに文字列が登録され、また、文字列追加エン
トリが更新される。
【0040】図5は、第1実施形態におけるLZW符号に対
応する文字列取得の処理手順の一例を示すフローチャー
トである。図5のステップS801において、処理対象エン
トリ(すなわち、入力されたLZW符号)に対応する文字
列テーブルのエントリの「前文字列エントリ番号」が、
-1かどうかを判定する。このエントリ番号が-1の場合、
ステップS803において、処理対象エントリの最後の文字
を出力して、本処理を終了する。
応する文字列取得の処理手順の一例を示すフローチャー
トである。図5のステップS801において、処理対象エン
トリ(すなわち、入力されたLZW符号)に対応する文字
列テーブルのエントリの「前文字列エントリ番号」が、
-1かどうかを判定する。このエントリ番号が-1の場合、
ステップS803において、処理対象エントリの最後の文字
を出力して、本処理を終了する。
【0041】しかし、エントリ番号が-1以外の場合に
は、ステップS802において、前文字列エントリを処理対
象エントリとして、この文字列取得処理を再帰的に実行
し、その後、終了する。以上の処理により、入力された
LZW符号に対応する文字列が出力される。
は、ステップS802において、前文字列エントリを処理対
象エントリとして、この文字列取得処理を再帰的に実行
し、その後、終了する。以上の処理により、入力された
LZW符号に対応する文字列が出力される。
【0042】図6は、新たに、いくつかの文字列が追加
された文字列テーブルの状態例を示している。ここで
は、始めにクリアコードが入力されて、文字列テーブル
が初期化され、次に0が入力されると、<0>が出力され
る。そして、258が入力されると、対応する文字列が文
字列テーブルに登録されていないので、前回出力した文
字列(=<0>)と、前回出力した文字列の先頭一文字
(=<0>)とをつなげた文字列(=<0><0>)が出力
される。
された文字列テーブルの状態例を示している。ここで
は、始めにクリアコードが入力されて、文字列テーブル
が初期化され、次に0が入力されると、<0>が出力され
る。そして、258が入力されると、対応する文字列が文
字列テーブルに登録されていないので、前回出力した文
字列(=<0>)と、前回出力した文字列の先頭一文字
(=<0>)とをつなげた文字列(=<0><0>)が出力
される。
【0043】そして、文字列テーブルのエントリ258の
「前文字列エントリ番号」に、前回出力した文字列のエ
ントリ番号(=0)が、また、「最終文字」に、前回出力
した文字列の先頭一文字(=<0>)が登録される。
「前文字列エントリ番号」に、前回出力した文字列のエ
ントリ番号(=0)が、また、「最終文字」に、前回出力
した文字列の先頭一文字(=<0>)が登録される。
【0044】次に1が入力されると、対応する文字列が
文字列テーブルに登録されているので、文字列テーブル
のエントリ1に登録されている文字列(=<1>)が出力
される。そして、文字列テーブルのエントリ259の「前
文字列エントリ番号」に、前回出力した文字列のエント
リ番号(=258)が、「最終文字」に、今回出力した文字
列の先頭一文字(=<1>)が登録される。
文字列テーブルに登録されているので、文字列テーブル
のエントリ1に登録されている文字列(=<1>)が出力
される。そして、文字列テーブルのエントリ259の「前
文字列エントリ番号」に、前回出力した文字列のエント
リ番号(=258)が、「最終文字」に、今回出力した文字
列の先頭一文字(=<1>)が登録される。
【0045】その次に、2が入力されると、<2>が出力
され、文字列テーブルのエントリ260の文字列エントリ
番号には1が、そして、「最終文字」に<2>が登録され
る。
され、文字列テーブルのエントリ260の文字列エントリ
番号には1が、そして、「最終文字」に<2>が登録され
る。
【0046】次に259が入力されると、対応する文字列
が文字列テーブルに登録されているので、文字列テーブ
ルのエントリ259に登録されている文字列(=<0><0>
<1>)が出力される。そして、文字列テーブルのエン
トリ261の「前文字列エントリ番号」に、前回出力した
文字列のエントリ番号(=2)が、また、「最終文字」
に、今回出力した文字列の先頭一文字(=<0>)が登録
される。
が文字列テーブルに登録されているので、文字列テーブ
ルのエントリ259に登録されている文字列(=<0><0>
<1>)が出力される。そして、文字列テーブルのエン
トリ261の「前文字列エントリ番号」に、前回出力した
文字列のエントリ番号(=2)が、また、「最終文字」
に、今回出力した文字列の先頭一文字(=<0>)が登録
される。
【0047】文字列テーブルのエントリ259に登録され
ている文字列は、エントリ259の「前文字列エントリ番
号」が258になっているので、まず始めに、エントリ番
号258の表現する文字列(=<0><0>)を算出し、その
後、エントリ259の「最終文字」(=<0>)をつなげる
ことにより、導かれる。
ている文字列は、エントリ259の「前文字列エントリ番
号」が258になっているので、まず始めに、エントリ番
号258の表現する文字列(=<0><0>)を算出し、その
後、エントリ259の「最終文字」(=<0>)をつなげる
ことにより、導かれる。
【0048】以上説明したように、第1実施形態によれ
ば、エントリに対応する文字列が文字列テーブルに登録
されていない場合、前回出力した文字列と、前回出力し
た文字列の先頭一文字とをつなげた文字列を出力し、文
字列テーブルに登録がある場合には、文字列テーブルの
前文字列エントリ番号に、前回出力した文字列のエント
リ番号を、そして、最終文字に、今回出力した文字列の
先頭一文字を登録することで、LZW伸長処理における文
字列テーブルを、僅かな記憶容量で管理することができ
る。
ば、エントリに対応する文字列が文字列テーブルに登録
されていない場合、前回出力した文字列と、前回出力し
た文字列の先頭一文字とをつなげた文字列を出力し、文
字列テーブルに登録がある場合には、文字列テーブルの
前文字列エントリ番号に、前回出力した文字列のエント
リ番号を、そして、最終文字に、今回出力した文字列の
先頭一文字を登録することで、LZW伸長処理における文
字列テーブルを、僅かな記憶容量で管理することができ
る。
【0049】また、文字列テーブルの管理に必要な記憶
容量は、登録されている文字列のサイズに依らずに、固
定サイズで管理することができる。
容量は、登録されている文字列のサイズに依らずに、固
定サイズで管理することができる。
【0050】
【第2実施形態】以下、本発明にかかる第2実施形態を詳
細に説明する。なお、第2実施形態のLZW伸長処理を搭載
したコンピュータシステムの構成は、図1に示す、上記
第1実施形態のコンピュータシステムのシステム構成と
同じである。また、第2実施形態のLZW符号伸長処理につ
いても、図2に示す、上記第1実施形態のLZW符号伸長処
理と同じであるため、ここでは、それらの図示および説
明を省略する。
細に説明する。なお、第2実施形態のLZW伸長処理を搭載
したコンピュータシステムの構成は、図1に示す、上記
第1実施形態のコンピュータシステムのシステム構成と
同じである。また、第2実施形態のLZW符号伸長処理につ
いても、図2に示す、上記第1実施形態のLZW符号伸長処
理と同じであるため、ここでは、それらの図示および説
明を省略する。
【0051】第2実施形態にかかる文字列取得処理で
は、上記第1実施形態の方法に対して、LZW符号に対応す
る文字列取得処理において、再帰処理を行わずに実現で
きるように変更したものである。また、ここでの文字列
テーブルには、各エントリ番号に対応して、「前文字列
エントリ番号」(=一文字目から始まり、最後から一文
字前までで終わる文字列に対応する文字列テーブルのエ
ントリ番号)、「最終文字」(=最後の一文字)、およ
び、文字列の長さが格納される。
は、上記第1実施形態の方法に対して、LZW符号に対応す
る文字列取得処理において、再帰処理を行わずに実現で
きるように変更したものである。また、ここでの文字列
テーブルには、各エントリ番号に対応して、「前文字列
エントリ番号」(=一文字目から始まり、最後から一文
字前までで終わる文字列に対応する文字列テーブルのエ
ントリ番号)、「最終文字」(=最後の一文字)、およ
び、文字列の長さが格納される。
【0052】図7は、第2実施形態における文字列テーブ
ルの初期化処理の手順の一例を示すフローチャートであ
る。なお、図7に示す、第2実施形態の文字列テーブルの
初期化処理において、図2に示す、上記第1実施形態の文
字列テーブルの初期化処理と同一の処理には同一のステ
ップ番号を付し、ここでは、それらの説明を省略する。
ルの初期化処理の手順の一例を示すフローチャートであ
る。なお、図7に示す、第2実施形態の文字列テーブルの
初期化処理において、図2に示す、上記第1実施形態の文
字列テーブルの初期化処理と同一の処理には同一のステ
ップ番号を付し、ここでは、それらの説明を省略する。
【0053】第2実施形態の文字列テーブルの初期化処
理に特徴的なことは、処理対象エントリの「最終文字」
にエントリ番号に対応する文字を格納するステップS503
の処理の直後に、ステップS1004を追加したことであ
る。すなわち、図7のステップS1004では、処理対象エン
トリの文字列の長さに1を設定することにより、処理対
象エントリの「前文字列エントリ番号」と「最終文字」
とに加えて、文字列の長さが初期化される。
理に特徴的なことは、処理対象エントリの「最終文字」
にエントリ番号に対応する文字を格納するステップS503
の処理の直後に、ステップS1004を追加したことであ
る。すなわち、図7のステップS1004では、処理対象エン
トリの文字列の長さに1を設定することにより、処理対
象エントリの「前文字列エントリ番号」と「最終文字」
とに加えて、文字列の長さが初期化される。
【0054】図8は、第2実施形態の文字列テーブル初期
化処理を実行した後の文字列テーブルの状態を示してい
る。図8に示すように、エントリ0〜255の、「前文字列
エントリ番号」には、“前文字列なし”を示す-1が格納
され、最後の文字には、それぞれ、文字<0>〜<255>
が登録されている。また、このテーブルでは、文字列の
長さも1に初期化されている。なお、ここでも、上記第1
実施形態と同様、LZW符号256、257は、それぞれ、クリ
アコード、終了コードに割り当てられているので、文字
列テーブルのエントリ256、257が参照されることはな
い。
化処理を実行した後の文字列テーブルの状態を示してい
る。図8に示すように、エントリ0〜255の、「前文字列
エントリ番号」には、“前文字列なし”を示す-1が格納
され、最後の文字には、それぞれ、文字<0>〜<255>
が登録されている。また、このテーブルでは、文字列の
長さも1に初期化されている。なお、ここでも、上記第1
実施形態と同様、LZW符号256、257は、それぞれ、クリ
アコード、終了コードに割り当てられているので、文字
列テーブルのエントリ256、257が参照されることはな
い。
【0055】次に、第2実施形態の文字列テーブルへの
文字列登録処理について説明する。図9は、第2実施形態
の文字列テーブルへの文字列登録の処理手順の一例を示
すフローチャートである。なお、図9に示す、第2実施形
態の文字列テーブルへの文字列登録処理において、上記
第1実施形態の文字列テーブルへの文字列登録処理(図4
参照)と同一の処理には同一ステップ番号を付し、ここ
では、それらの説明を省略する。
文字列登録処理について説明する。図9は、第2実施形態
の文字列テーブルへの文字列登録の処理手順の一例を示
すフローチャートである。なお、図9に示す、第2実施形
態の文字列テーブルへの文字列登録処理において、上記
第1実施形態の文字列テーブルへの文字列登録処理(図4
参照)と同一の処理には同一ステップ番号を付し、ここ
では、それらの説明を省略する。
【0056】図9に示す、第2実施形態の文字列テーブル
への文字列登録処理では、文字列登録エントリの「前文
字列エントリ番号」に、前回出力した文字列のエントリ
番号を格納(ステップS701)した後、文字列追加エント
リの「最終文字」に、今回出力した文字列の最初の文字
を格納する処理(ステップS702)の直後に、ステップS1
203が追加されている。
への文字列登録処理では、文字列登録エントリの「前文
字列エントリ番号」に、前回出力した文字列のエントリ
番号を格納(ステップS701)した後、文字列追加エント
リの「最終文字」に、今回出力した文字列の最初の文字
を格納する処理(ステップS702)の直後に、ステップS1
203が追加されている。
【0057】このステップS1203では、文字列追加エン
トリの文字列の長さに、前回出力した文字列の長さ+1を
設定する。前回出力した文字列の長さは、前回出力した
文字列のエントリの文字列の長さを参照することによ
り、取得することができる。このような処理により、文
字列テーブルに、新たな文字列が登録され、また、文字
列追加エントリが更新される。
トリの文字列の長さに、前回出力した文字列の長さ+1を
設定する。前回出力した文字列の長さは、前回出力した
文字列のエントリの文字列の長さを参照することによ
り、取得することができる。このような処理により、文
字列テーブルに、新たな文字列が登録され、また、文字
列追加エントリが更新される。
【0058】次に、第2実施形態にかかる、LZW符号に対
応する文字列取得処理の手順を、図10に示すフローチャ
ートに従って説明する。図10のステップS1301では、残
り文字数(=文字列出力における、残りの処理文字数)
に、処理対象エントリの文字列の長さを設定する。続く
ステップS1302で、文字の格納先を処理対象エントリの
文字列の長さだけ進める。このようにするのは、以降に
述べるステップS1303〜S1307の文字取得の過程で、文字
が、文字列の最後から最初に遡って取得されるため、逆
順に出力する必要があるからである。
応する文字列取得処理の手順を、図10に示すフローチャ
ートに従って説明する。図10のステップS1301では、残
り文字数(=文字列出力における、残りの処理文字数)
に、処理対象エントリの文字列の長さを設定する。続く
ステップS1302で、文字の格納先を処理対象エントリの
文字列の長さだけ進める。このようにするのは、以降に
述べるステップS1303〜S1307の文字取得の過程で、文字
が、文字列の最後から最初に遡って取得されるため、逆
順に出力する必要があるからである。
【0059】ステップS1303〜S1307では、残り文字数が
0になるまで、処理を繰り返す。すなわち、ステップS13
03では、文字の格納先を一文字、戻し、続くステップS1
304において、処理対象エントリの最後の文字を格納す
る。次のステップS1305では、処理対象エントリに、現
在の処理対象エントリの前文字列エントリを設定する。
0になるまで、処理を繰り返す。すなわち、ステップS13
03では、文字の格納先を一文字、戻し、続くステップS1
304において、処理対象エントリの最後の文字を格納す
る。次のステップS1305では、処理対象エントリに、現
在の処理対象エントリの前文字列エントリを設定する。
【0060】ステップS1306では、残り文字数を−1し
て、ステップS1307で、その残り文字数が0であると判断
されたならば、本処理を終了する。しかし、残り文字数
が0でなければ、再度、ステップS1303の処理に戻る。以
上の処理によって、入力されたLZW符号に対応する文字
列が出力される。
て、ステップS1307で、その残り文字数が0であると判断
されたならば、本処理を終了する。しかし、残り文字数
が0でなければ、再度、ステップS1303の処理に戻る。以
上の処理によって、入力されたLZW符号に対応する文字
列が出力される。
【0061】図11は、新たに、いくつかの文字列が追加
されたときの、文字列テーブルの状態例を示している。
ここでは、始めにクリアコードが入力されて、文字列テ
ーブルが初期化され、次に0が入力されると、<0>が出
力される。
されたときの、文字列テーブルの状態例を示している。
ここでは、始めにクリアコードが入力されて、文字列テ
ーブルが初期化され、次に0が入力されると、<0>が出
力される。
【0062】次に、258が入力されると、文字列テーブ
ルに登録されていないので、前回出力した文字列(=<0
>)と、前回出力した文字列の先頭一文字(=<0>)と
をつなげた文字列(=<0><0>)が出力される。そし
て、文字列テーブルのエントリ258の「前文字列エント
リ番号」に、前回出力した文字列のエントリ番号(=
0)、「最終文字」に、前回出力した文字列の先頭一文
字(=<0>)、文字列の長さに、前回出力した文字列の
長さ+1(=2)が登録される。
ルに登録されていないので、前回出力した文字列(=<0
>)と、前回出力した文字列の先頭一文字(=<0>)と
をつなげた文字列(=<0><0>)が出力される。そし
て、文字列テーブルのエントリ258の「前文字列エント
リ番号」に、前回出力した文字列のエントリ番号(=
0)、「最終文字」に、前回出力した文字列の先頭一文
字(=<0>)、文字列の長さに、前回出力した文字列の
長さ+1(=2)が登録される。
【0063】次に、1が入力されると、文字列テーブル
に登録されているので、文字列テーブルのエントリ1に
登録されている文字列(=<1>)が出力される。そし
て、文字列テーブルのエントリ259の「前文字列エント
リ番号」に、前回出力した文字列のエントリ番号(=25
8)、「最終文字」に、今回出力した文字列の先頭一文
字(=<1>)、文字列の長さに、前回出力した文字列の
長さ+1(=3)が登録される。
に登録されているので、文字列テーブルのエントリ1に
登録されている文字列(=<1>)が出力される。そし
て、文字列テーブルのエントリ259の「前文字列エント
リ番号」に、前回出力した文字列のエントリ番号(=25
8)、「最終文字」に、今回出力した文字列の先頭一文
字(=<1>)、文字列の長さに、前回出力した文字列の
長さ+1(=3)が登録される。
【0064】さらに、2が入力されると、<2>が出力さ
れ、文字列テーブルのエントリ260の文字列エントリ番
号に1、「最終文字」に<2>、そして、文字列の長さに
2が登録される。また、その次に、259が入力されると、
文字列テーブルに登録されているので、文字列テーブル
のエントリ259に登録されている文字列(=<0><0><
1>)が出力される。そして、文字列テーブルのエント
リ261の文字列エントリ番号に、前回出力した文字列の
エントリ番号(=2)、「最終文字」に、今回出力した文
字列の先頭一文字(=<0>)、文字列の長さに、前回出
力した文字列の長さ+1(=2)が登録される。
れ、文字列テーブルのエントリ260の文字列エントリ番
号に1、「最終文字」に<2>、そして、文字列の長さに
2が登録される。また、その次に、259が入力されると、
文字列テーブルに登録されているので、文字列テーブル
のエントリ259に登録されている文字列(=<0><0><
1>)が出力される。そして、文字列テーブルのエント
リ261の文字列エントリ番号に、前回出力した文字列の
エントリ番号(=2)、「最終文字」に、今回出力した文
字列の先頭一文字(=<0>)、文字列の長さに、前回出
力した文字列の長さ+1(=2)が登録される。
【0065】文字列テーブルのエントリ259に登録され
ている文字列は、エントリ259の「最終文字」(=<1
>)、エントリ258の「最終文字」(=<0>)、エント
リ0の「最終文字」(=<0>)を、逆順にしたものであ
る。これは、エントリ259の「前文字列エントリ番号」
が258で、エントリ258の「前文字列エントリ番号」が0
になっているからである。
ている文字列は、エントリ259の「最終文字」(=<1
>)、エントリ258の「最終文字」(=<0>)、エント
リ0の「最終文字」(=<0>)を、逆順にしたものであ
る。これは、エントリ259の「前文字列エントリ番号」
が258で、エントリ258の「前文字列エントリ番号」が0
になっているからである。
【0066】以上説明したように、第2実施形態によれ
ば、文字列テーブルに、エントリに対応する文字列が登
録されていない場合、前回出力した文字列と、前回出力
した文字列の先頭一文字とをつなげた文字列を出力し、
文字列テーブルに登録がある場合には、文字列テーブル
の前文字列エントリ番号に、前回出力した文字列のエン
トリ番号を、最終文字に、今回出力した文字列の先頭一
文字を、そして、文字列の長さに、前回出力した文字列
の長さ+1を登録することで、LZW伸長処理における文字
列テーブルを、僅かな記憶容量で管理できるとともに、
その容量を、登録されている文字列のサイズに依らずに
固定サイズで管理することができる。
ば、文字列テーブルに、エントリに対応する文字列が登
録されていない場合、前回出力した文字列と、前回出力
した文字列の先頭一文字とをつなげた文字列を出力し、
文字列テーブルに登録がある場合には、文字列テーブル
の前文字列エントリ番号に、前回出力した文字列のエン
トリ番号を、最終文字に、今回出力した文字列の先頭一
文字を、そして、文字列の長さに、前回出力した文字列
の長さ+1を登録することで、LZW伸長処理における文字
列テーブルを、僅かな記憶容量で管理できるとともに、
その容量を、登録されている文字列のサイズに依らずに
固定サイズで管理することができる。
【0067】
【他の実施形態】なお、本発明は、複数の機器(例えば
ホストコンピュータ、インタフェイス機器、リーダ、プ
リンタなど)から構成されるシステムに適用しても、一
つの機器からなる装置(例えば、複写機、ファクシミリ
装置など)に適用してもよい。
ホストコンピュータ、インタフェイス機器、リーダ、プ
リンタなど)から構成されるシステムに適用しても、一
つの機器からなる装置(例えば、複写機、ファクシミリ
装置など)に適用してもよい。
【0068】また、本発明の目的は、前述した実施形態
の機能を実現するソフトウェアのプログラムコードを記
録した記憶媒体(または記録媒体)を、システムあるい
は装置に供給し、そのシステムあるいは装置のコンピュ
ータ(またはCPUやMPU)が記憶媒体に格納されたプログ
ラムコードを読み出し実行することによっても、達成さ
れることは言うまでもない。この場合、記憶媒体から読
み出されたプログラムコード自体が前述した実施形態の
機能を実現することになり、そのプログラムコードを記
憶した記憶媒体は本発明を構成することになる。また、
コンピュータが読み出したプログラムコードを実行する
ことにより、前述した実施形態の機能が実現されるだけ
でなく、そのプログラムコードの指示に基づき、コンピ
ュータ上で稼働しているオペレーティングシステム(OS)
などが実際の処理の一部または全部を行い、その処理に
よって前述した実施形態の機能が実現される場合も含ま
れることは言うまでもない。
の機能を実現するソフトウェアのプログラムコードを記
録した記憶媒体(または記録媒体)を、システムあるい
は装置に供給し、そのシステムあるいは装置のコンピュ
ータ(またはCPUやMPU)が記憶媒体に格納されたプログ
ラムコードを読み出し実行することによっても、達成さ
れることは言うまでもない。この場合、記憶媒体から読
み出されたプログラムコード自体が前述した実施形態の
機能を実現することになり、そのプログラムコードを記
憶した記憶媒体は本発明を構成することになる。また、
コンピュータが読み出したプログラムコードを実行する
ことにより、前述した実施形態の機能が実現されるだけ
でなく、そのプログラムコードの指示に基づき、コンピ
ュータ上で稼働しているオペレーティングシステム(OS)
などが実際の処理の一部または全部を行い、その処理に
よって前述した実施形態の機能が実現される場合も含ま
れることは言うまでもない。
【0069】さらに、記憶媒体から読み出されたプログ
ラムコードが、コンピュータに挿入された機能拡張カー
ドやコンピュータに接続された機能拡張ユニットに備わ
るメモリに書込まれた後、そのプログラムコードの指示
に基づき、その機能拡張カードや機能拡張ユニットに備
わるCPUなどが実際の処理の一部または全部を行い、そ
の処理によって前述した実施形態の機能が実現される場
合も含まれることは言うまでもない。
ラムコードが、コンピュータに挿入された機能拡張カー
ドやコンピュータに接続された機能拡張ユニットに備わ
るメモリに書込まれた後、そのプログラムコードの指示
に基づき、その機能拡張カードや機能拡張ユニットに備
わるCPUなどが実際の処理の一部または全部を行い、そ
の処理によって前述した実施形態の機能が実現される場
合も含まれることは言うまでもない。
【0070】本発明を上記記憶媒体に適用する場合、そ
の記憶媒体には、先に説明した、図2、図4、図7および/
または図10などのフローチャートに対応するプログラム
コードが格納されることになる。
の記憶媒体には、先に説明した、図2、図4、図7および/
または図10などのフローチャートに対応するプログラム
コードが格納されることになる。
【0071】以上説明した実施形態によれば、エントリ
に従って、文字列テーブルに格納されたエントリ番号と
文字部分より一連の文字列を求めるよう構成すること
で、僅かな記憶容量で、符号伸長処理にかかる文字列テ
ーブルを管理することができ、記憶容量を節約できる。
に従って、文字列テーブルに格納されたエントリ番号と
文字部分より一連の文字列を求めるよう構成すること
で、僅かな記憶容量で、符号伸長処理にかかる文字列テ
ーブルを管理することができ、記憶容量を節約できる。
【0072】また、その記憶容量は、固定サイズ分を用
意すればよいので、伸長処理の途中で記憶領域を追加し
て確保するために、処理速度が低下したり、あるいは、
それを確保できずに、処理を中断しなければならない、
という事態を回避できる。
意すればよいので、伸長処理の途中で記憶領域を追加し
て確保するために、処理速度が低下したり、あるいは、
それを確保できずに、処理を中断しなければならない、
という事態を回避できる。
【0073】また、エントリに従って、文字列テーブル
に格納されたエントリ番号と文字部分と文字列の長さよ
り一連の文字列を求めるよう構成することで、僅かな記
憶容量で、符号伸長処理にかかる文字列テーブルを管理
することができ、その記憶容量は、固定サイズ分を用意
すればよいので、処理の途中で記憶領域を追加して確保
するといった事態が発生せず、それに伴う処理速度の低
下や処理の中断を回避できる。
に格納されたエントリ番号と文字部分と文字列の長さよ
り一連の文字列を求めるよう構成することで、僅かな記
憶容量で、符号伸長処理にかかる文字列テーブルを管理
することができ、その記憶容量は、固定サイズ分を用意
すればよいので、処理の途中で記憶領域を追加して確保
するといった事態が発生せず、それに伴う処理速度の低
下や処理の中断を回避できる。
【0074】
【発明の効果】以上説明したように、本発明によれば、
僅かな記憶容量で、符号伸長における文字列テーブルを
管理することができる。
僅かな記憶容量で、符号伸長における文字列テーブルを
管理することができる。
【0075】また、文字列テーブルの記憶容量を固定サ
イズにすることができる。
イズにすることができる。
【図1】第1実施形態にかかるLZW伸長処理を搭載したコ
ンピュータシステムのシステム構成例を示すブロック
図、
ンピュータシステムのシステム構成例を示すブロック
図、
【図2】文字列テーブルの初期化処理手順の一例を示す
フローチャート、
フローチャート、
【図3】文字列テーブル初期化処理を実行した後の、文
字列テーブルの状態を示す図、
字列テーブルの状態を示す図、
【図4】文字列テーブルへ文字列を登録する処理手順の
一例を示すフローチャート、
一例を示すフローチャート、
【図5】LZW符号に対応する文字列取得の処理手順の一
例を示すフローチャート、
例を示すフローチャート、
【図6】新たに、いくつかの文字列が追加された文字列
テーブルの状態例を示す図、
テーブルの状態例を示す図、
【図7】第2実施形態にかかる文字列テーブルの初期化
処理の手順の一例を示すフローチャート、
処理の手順の一例を示すフローチャート、
【図8】文字列テーブル初期化処理を実行した後の文字
列テーブルの状態を示す図、
列テーブルの状態を示す図、
【図9】文字列テーブルへの文字列登録の処理手順の一
例を示すフローチャート、
例を示すフローチャート、
【図10】LZW符号に対応する文字列取得処理の手順の
一例を示すフローチャート、
一例を示すフローチャート、
【図11】新たに、いくつかの文字列が追加されたとき
の文字列テーブルの状態例を示す図、
の文字列テーブルの状態例を示す図、
【図12】LZW符号伸長処理の流れを示すフローチャー
ト、
ト、
【図13】初期化後の文字列テーブルの状態を示す図、
【図14】新たに、いくつかの文字列が追加された文字
列テーブルの状態例を示す図である。
列テーブルの状態例を示す図である。
Claims (12)
- 【請求項1】 一連の文字列を文字列テーブルへのエン
トリで表現する符号伸長方法であって、 文字列を所定のエントリ番号および所定の文字部分で表
現し、 前記エントリ番号および文字部分を前記文字列テーブル
に格納し、 前記エントリに従って、格納されたエントリ番号および
文字部分より前記一連の文字列を求め、 求めた一連の文字列を出力することを特徴とする符号伸
長方法。 - 【請求項2】 一連の文字列を文字列テーブルへのエン
トリで表現する符号伸長方法であって、 文字列を所定のエントリ番号、所定の文字部分および前
記文字列の長さで表現し、 前記エントリ番号、文字部分および文字列の長さを前記
文字列テーブルに格納し、 前記エントリに従って、格納されたエントリ番号、文字
部分および文字列の長さより前記一連の文字列を求め、 求めた一連の文字列を出力することを特徴とする符号伸
長方法。 - 【請求項3】 前記エントリ番号は、一文字目から始ま
り、最後から一文字前までで終わる文字列に対応する前
記文字列テーブルのエントリであり、また、前記文字部
分は、前記文字列の最後の一文字であることを特徴とす
る請求項1または請求項2に記載された符号伸長方法。 - 【請求項4】 前記エントリに対応する文字列が前記文
字列テーブルに登録されていない場合、前回出力した文
字列と、前回出力した文字列の先頭一文字とをつなげた
文字列とを出力し、 前記エントリ番号に、前回出力した文字列のエントリ番
号を登録し、前記文字部分に、前回出力した文字列の先
頭一文字を登録することを特徴とする請求項1に記載さ
れた符号伸長方法。 - 【請求項5】 前記エントリに対応する文字列が前記文
字列テーブルに登録されている場合、前記エントリに登
録されている文字列を出力し、 前記エントリ番号に、前回出力した文字列のエントリ番
号を登録し、前記文字部分に、今回出力した文字列の先
頭一文字を登録することを特徴とする請求項1に記載さ
れた符号伸長方法。 - 【請求項6】 前記エントリに対応する文字列が前記文
字列テーブルに登録されていない場合、前回出力した文
字列と、前回出力した文字列の先頭一文字とをつなげた
文字列とを出力し、 前記エントリ番号に、前回出力した文字列のエントリ番
号を登録し、前記文字部分に、前回出力した文字列の先
頭一文字を登録し、前記文字列の長さに、前回出力した
文字列の長さを1インクメントした文字列の長さを登録
することを特徴とする請求項2に記載された符号伸長方
法。 - 【請求項7】 前記エントリに対応する文字列が前記文
字列テーブルに登録されている場合、前記エントリに登
録されている文字列を出力し、 前記エントリ番号に、前回出力した文字列のエントリ番
号を登録し、前記文字部分に、今回出力した文字列の先
頭一文字を登録し、前記文字列の長さに、前回出力した
文字列の長さをインクリメントした文字列の長さを登録
することを特徴とする請求項2に記載された符号伸長方
法。 - 【請求項8】 さらに、前記文字列テーブルに所定のコ
ードを入力して、その文字列テーブルを初期化すること
を特徴とする請求項1または請求項2に記載された符号伸
長方法。 - 【請求項9】 一連の文字列を文字列テーブルへのエン
トリで表現する符号伸長装置であって、 文字列を所定のエントリ番号および所定の文字部分で表
現する手段と、 前記エントリ番号および文字部分を前記文字列テーブル
に格納する手段と、 前記エントリに従って、格納されたエントリ番号および
文字部分より前記一連の文字列を求める手段と、 求めた一連の文字列を出力する手段とを備えることを特
徴とする符号伸長装置。 - 【請求項10】 一連の文字列を文字列テーブルへの
エントリで表現する符号伸長装置であって、 文字列を所定のエントリ番号、所定の文字部分および前
記文字列の長さで表現する手段と、 前記エントリ番号、文字部分および文字列の長さを前記
文字列テーブルに格納する手段と、 前記エントリに従って、格納されたエントリ番号、文字
部分および文字列の長さより前記一連の文字列を求める
手段と、 前記求めた一連の文字列を出力する手段とを備えること
を特徴とする符号伸長装置。 - 【請求項11】 符号を伸長するためのプログラムコ
ードが格納された記憶媒体であって、前記プログラムコ
ードは少なくとも、 文字列を所定のエントリ番号および所定の文字部分で表
現するステップのコードと、 前記エントリ番号および文字部分を文字列テーブルに格
納するステップのコードと、 前記文字列テーブルへのエントリに従って、格納された
エントリ番号および文字部分より一連の文字列を求める
ステップのコードと、 前記一連の文字列を出力するステップのコードとを備え
ることを特徴とする記憶媒体。 - 【請求項12】 符号を伸長するためプログラムコー
ドが格納された記憶媒体であって、前記プログラムコー
ドは少なくとも、 文字列を所定のエントリ番号、所定の文字部分および文
字列の長さで表現するステップのコードと、 前記エントリ番号、文字部分および文字列の長さを文字
列テーブルに格納するステップのコードと、 前記文字列テーブルへのエントリに従って、格納された
エントリ番号、文字部分および文字列の長さより一連の
文字列を求めるステップのコードと、 前記一連の文字列を出力するステップのコードとを備え
ることを特徴とする記憶媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000074829A JP2001267930A (ja) | 2000-03-16 | 2000-03-16 | 符号伸長装置およびその方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000074829A JP2001267930A (ja) | 2000-03-16 | 2000-03-16 | 符号伸長装置およびその方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001267930A true JP2001267930A (ja) | 2001-09-28 |
Family
ID=18592804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000074829A Withdrawn JP2001267930A (ja) | 2000-03-16 | 2000-03-16 | 符号伸長装置およびその方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2001267930A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011176770A (ja) * | 2010-02-25 | 2011-09-08 | Canon Inc | 情報処理装置及びその制御方法及びプログラム及び記憶媒体 |
-
2000
- 2000-03-16 JP JP2000074829A patent/JP2001267930A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011176770A (ja) * | 2010-02-25 | 2011-09-08 | Canon Inc | 情報処理装置及びその制御方法及びプログラム及び記憶媒体 |
US8325070B2 (en) | 2010-02-25 | 2012-12-04 | Canon Kabushiki Kaisha | Information processing apparatus and control method thereof, and storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7197189B2 (en) | System and method having removable storage medium with data compression | |
JPH07205496A (ja) | ページプリンタ及びデータ圧縮方法 | |
US20090284400A1 (en) | Method and System for Reducing Required Storage During Decompression of a Compressed File | |
JP2000510616A (ja) | 画像データを記憶し選択的に検索する方法およびフォーマット | |
JPH0773080A (ja) | マルチメディア文書記憶管理装置 | |
US20030095596A1 (en) | Image processing apparatus, image processing method, and a computer-readable storage medium containing a computer program for image processing recorded thereon | |
JP2001267930A (ja) | 符号伸長装置およびその方法 | |
US6266446B1 (en) | Image conversion between raster and block formats for compression and decompression | |
JP2004258861A (ja) | 情報処理方法 | |
JPH0973408A (ja) | データ処理装置およびデータ入出力処理方法 | |
JP2004258865A (ja) | 情報処理方法 | |
JP2002152048A (ja) | データ圧縮装置及びその方法、データ伸長装置及びその方法、プリンタ装置、プリンタシステム、並びにコンピュータが読出し可能なプログラムを格納した記憶媒体 | |
JP3271539B2 (ja) | 画像データ処理装置 | |
JP2000050084A (ja) | 画像処理装置及び方法及び記憶媒体 | |
JP3190855B2 (ja) | 圧縮データの復元方式 | |
JPH11102268A (ja) | 印刷装置及び印刷制御方法 | |
JP3507387B2 (ja) | ホストコンピュータおよびプリンタドライバによる文字印字処理方法 | |
JP3188240B2 (ja) | データ伸張方法及び情報処理装置及びコンピュータ読取可能な記録媒体 | |
JP2001175454A (ja) | 多語連長圧縮装置、動的連長圧縮装置、多語連長解凍装置、動的連長解凍装置、アーカイブ装置、アーカイブ方法およびアーカイブプログラムを記録した媒体 | |
JP2943900B2 (ja) | データ・ファイルのデータ圧縮処理装置,データ伸長処理装置,データ圧縮処理方法およびデータ伸長処理方法 | |
JP3265744B2 (ja) | 画像情報ファイリング装置 | |
JP3345291B2 (ja) | 2値データ圧縮装置およびそれを用いた2値データ処理装置並びに2値データ圧縮方法 | |
JP2000270192A (ja) | 画像処理装置および方法 | |
JP2000163264A (ja) | Cpu用のプログラム記憶装置 | |
JP2003123380A (ja) | データ出力デバイス、データ入力デバイス、データ出力方法、データ入力方法、データ出力プログラムを記録した媒体、データ入力プログラムを記録した媒体およびデータ入出力システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20070605 |