JP5523144B2 - 情報処理装置及びその制御方法及びプログラム及び記憶媒体 - Google Patents

情報処理装置及びその制御方法及びプログラム及び記憶媒体 Download PDF

Info

Publication number
JP5523144B2
JP5523144B2 JP2010041002A JP2010041002A JP5523144B2 JP 5523144 B2 JP5523144 B2 JP 5523144B2 JP 2010041002 A JP2010041002 A JP 2010041002A JP 2010041002 A JP2010041002 A JP 2010041002A JP 5523144 B2 JP5523144 B2 JP 5523144B2
Authority
JP
Japan
Prior art keywords
character string
code
temporary buffer
lzw
code word
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.)
Expired - Fee Related
Application number
JP2010041002A
Other languages
English (en)
Other versions
JP2011176770A (ja
Inventor
英史 佐々木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2010041002A priority Critical patent/JP5523144B2/ja
Priority to US13/018,571 priority patent/US8325070B2/en
Publication of JP2011176770A publication Critical patent/JP2011176770A/ja
Application granted granted Critical
Publication of JP5523144B2 publication Critical patent/JP5523144B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/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)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は圧縮されたデータを伸張する伸張技術に関するものである。
近年、画像や文字を表すデータ量は大きくなってきており、保存、送信のためにデータ圧縮が行われる。例えば、特許文献1などにおいてLZWの圧縮技術が知られている。
特開2001−267930号公報
LZW符号は辞書式圧縮技術の1つである。一般に、この種の符号化データを伸張する時には、復元される可能性のある文字列を「辞書(テーブル)」に順次登録してゆく処理が発生する。しかし、辞書に登録するのは、あくまで復元される可能性がある文字列を登録するわけであるから、必ずしも辞書に登録した文字列が利用されるものではない。すなわち、辞書の使用の効率化、すなわち、消費メモリ容量の削減という点で、まだまだ改善の余地があった。
本発明は、上述したような辞書として用いる文字列テーブルへの非効率的な登録に係る処理の回数を抑制することにより、LZW符号を効率良く伸張する技術を提供しようとするものである。
この課題を解決するため、例えば本発明の情報処理装置は以下の構成を備える。すなわち、
LZW符号化された圧縮データを伸長する情報処理装置であって、
LZW符号化された圧縮データから1符号語ずつ入力し、入力した符号語がLZW符号におけるクリアコード又は終了コードであると判定されるまで、一時バッファに格納する入力手段と、
前記入力した符号語が前記クリアコード又は前記終了コードであると判定された場合、前記一時バッファに既に記憶された符号語群の中から、LZW符号の文字列テーブルを参照するテーブル参照符号語を特定し、前記一時バッファ内の符号語群のうち前記テーブル参照符号語で示される位置の符号語に対して前記文字列テーブルへの登録対象とすることを示す識別情報を生成する生成手段と、
前記一時バッファから読出した符号語が前記テーブル参照符号語である場合には、当該符号語で示される前記文字列テーブルのエントリアドレス位置にある文字列を復号結果として出力し、前記一時バッファから読出した符号語が前記文字列テーブルを参照しない符号語である場合には、当該符号で示される前記文字列を復号結果として出力する復号手段と、
前記復号手段による復号処理中に、前記一時バッファから読出した符号語が前記識別情報を有するか否かを判定する判定手段と、
該判定手段により、前記一時バッファから読出した符号語が前記識別情報を有すると判定された場合、前回復号して出力した文字列に、今回復号出力する文字列の先頭文字を追加することで得られる新文字列を、前記文字列テーブルの、前記一時バッファから読出した符号語で示されるエントリアドレス位置に登録する登録手段とを備える。
本発明によれば、辞書として用いる文字列テーブルへの非効率的な登録に係る処理の回数を抑制することにより、LZW符号を効率良く伸張することが可能になる。
ハードウェア構成図。 LZW符号の伸張処理の手順を示すフローチャート。 LZW符号の伸張処理の様子を表す図。 機能構成図。 並列に伸張処理を行う場合の一例を示す図。 カラー画像の伸張処理を行う場合の一例を示す図。
以下、添付図面に従って、本発明に係る実施形態を詳細に説明する。
図1は、本実施形態に適用される情報処理装置(画像復号装置)の構成例である。図1において、プロセッサ101は、バス100を通じて、メモリ102、ハードディスク103、キーボード104、ポインティングデバイス105、ビデオアダプタ106、および、ネットワークアダプタ107と接続されている。また、ビデオアダプタ106には、表示部108が接続されている。プロセッサ101は、メモリ102に記憶された処理手順、例えば後述する処理手順に相当するコンピュータプログラムに従って、上述した各構成部を制御する。メモリ102には、OS(オペレーティングシステム)や、実施形態における伸長処理用のアプリケーションプログラムがロードされ、プロセッサ101によって実行される。また、メモリ102は、各種データやテーブルを一時的に記憶するためにも利用される。ハードディスク103には、本システムが本実施形態で必要とするコンピュータプログラムや各種データが記録されている。ユーザは、キーボード104やポインティングデバイス105により、本システムに情報を入力することができる。ビデオアダプタ106は、種々の情報を表示部108に表示させる。またこのシステムは、ネットワークアダプタ107およびネットワーク110を介して外部装置と接続でき、外部機器との間で、後述する種々のデータを通信できる。なお、伸張対象のLZW符号データ(ファイル)や伸張に必要な各種データはハードディスク103に格納される。そして、ハードディスク103に格納されたデータは、必要に応じてメモリ102に読み込まれ、プロセッサ101により処理される。なお、上記101〜108の各処理部は、一体型の装置に含まれることとする。しかしながら、上記各部が別装置として存在し、それらが連携して動作するシステムにも本発明を適用できる。
以下、主に図2〜図4を用いて、本実施形態におけるLZW符号の伸張処理を詳しく説明する。図2は、本実施形態において、LZW符号を伸張する手順を示すフローチャートである。図3は、LZW符号が伸張される様子を視覚的に表す図である。図4は、図1のシステムが“TIFFファイルから画像を復元するTIFFインタプリタ”として機能する場合の各種機能を表示した図である。即ち、図4は、上述した図1を機能面から見た図に相当する。
まず図4について説明する。同図のTIFFインタプリタに入力されるTIFFファイルは、ハードディスク103に相当する所定の記憶媒体に記憶されたものである。一時バッファ503、「辞書」として機能する文字列テーブル506、イメージコンテキスト515は、上述のメモリ102にプロセッサ101により確保されるものである。タグ解析部511、イメージ解析部512、色変換部513、一時バッファ制御部502、文字列テーブル制御部504などは、上述のプログラムの一部としてメモリ102またはハードディスク103に保持される。また各種の入出力部は、メモリ102またはハードディスク103またはプロセッサ101におけるデータの入出力機能に相当する。出力画像は、最終的に利用されるカラーのビットマップデータに相当し、ハードディスク103もしくはメモリ102上に保持される。なお、メモリ102とハードディスク103の2つの記憶媒体の代わりに、単一の記憶媒体を用いて本実施形態を実行しても良い。図4で行われる一連の処理は、図1に示すキーボード104あるいはポインティングデバイス105からの指示入力、あるいはネットワーク110から受信する指示信号によってプロセッサ102が開始することになる。TIFFインタプリタは、上記指示を検知すると、指定されたTIFFファイルを入力する。タグ解析部511は、展開されるTIFFファイル510に含まれるタグ情報と呼ばれる情報を解析する。ここで解析されたタグ情報はイメージコンテキスト515として所定の記憶媒体に保持される。このタグ情報には、符号化対象画像の解像度を表す情報、画像データが表す色空間、圧縮符号化の方式、レイアウト情報等が含まれている。イメージ解析部512は、イメージコンテキスト515に格納されたタグ情報に基づいて、TIFFファイル510に含まれる画像データを処理し、色変換部513に出力する。もし、上記タグ情報における圧縮符号化の方式に基づいて、上記画像データがLZW方式で圧縮されていると判定された場合には、このイメージ解析部512は、後述するデータ伸張部に、圧縮された画像データを出力する。更に、イメージ解析部512は、そのデータ伸張部で伸張された画像データを入力し、後段の色変換部513に圧縮されていない画像データとして出力する。上記データ伸張部は、LZW符号入力部501、一時バッファ制御部502、一時バッファ503、文字列テーブル制御部504、伸張文字列出力部505、文字列テーブル506などから構成される。これらによる伸張処理については後で詳述する。なお、図4におけるデータ伸張部として、LZW方式で圧縮されたデータを伸張する機能だけを表示したが、公知のZIP、MH、MR、MMR、JPEGなどの圧縮画像データについても、不図示のデータ伸張機能により伸張できる。色変換部513は、イメージ解析部512で処理された画像データ(例えば、LZW方式で圧縮された画像データを伸張して得られた画像データ)を入力する。そして、入力された画像データを、上記タグ情報に基づいて、出力画像として適切な色空間の画像データに変換する。画像出力部514は、色変換部513から出力された画像データに、出力画像として必要な解像度の画像データへ変換する等の処理を施した後、出力画像として出力する。この出力画像は、図1の表示部108に表示されたり、ネットワーク110から外部装置へ出力されたりする。
次に、図2(a),(b)のフローチャートを用いて、上記データ伸張部がLZW符号を伸張する処理を説明する。この一連の処理は、図1のハードディスク103等に記憶されたプログラムをプロセッサ101がメモリ102にロードし、実行することにより実現される。図2(a)は全体の処理を示している。
まず、S201において、LZW符号入力部501は、イメージ解析部512よりLZW符号化データから1符号語分だけ取得する。S202において、一時バッファ制御部502は、LZW符号入力部501から上記1符号語分のLZW符号を取得し、「取得したLZW符号がクリアコード(10進数で「256」)または終了コード(10進数で「257」)であるか」を判定する。ここで、クリアコードとは、文字列テーブル(辞書)を初期化することを意味する符号である。また、終了コードとは、伸長処理が終了することを意味する符号である。もしS202において、「取得したLZW符号がクリアコードまたは終了コードである」と判定した場合には、以下のS203〜S209の処理を実行する。もしS202において、「取得したLZW符号がクリアコードまたは終了コードでない」と判定した場合には、S203〜S208をスキップし、S209の処理を実行する。
S203において、一時バッファ制御部502は、後述するS209で一時バッファ503に保持されたLZW符号を参照し、後述する「文字列テーブル内のそれぞれの文字列が実際に出現しているか否か」を判定する。前述したように、LZW符号の伸長では、実際にはLZW符号として符号化されない文字列も文字列テーブルに登録している場合が在り得る。S204において、文字列テーブル制御部504および伸張文字列出力部505によって、後述する伸張データの出力処理を行う。S205において、一時バッファ制御部502は、S201で取得したLZW符号が終了コードであるかを判定する。そして、終了コードである場合には伸張処理(文字列テーブル制御部504および伸張文字列出力部505への符号出力)を終了する。S206において、一時バッファ制御部502は一時バッファ503を初期化する。S207において、LZW符号入力部501はLZW符号を1符号分取得する。S208において、一時バッファ制御部502は、S207で取得したLZW符号が終了コードであるかを判定する。もし終了コードである場合には、伸張処理を終了する。もし終了コードでないと場合には、S209に処理を進める。S209において、一時バッファ制御部502は、1符号分のLZW符号を一時バッファ503に保持させる。具体的には、S202でNOの時は、S201で取得した1符号分のLZW符号を保存する。また、S208でNoの時は、S207で取得した1符号分のLZW符号を保存する。
次に、上記S204の伸張データの出力処理の詳細を図2(b)のフローチャートに従って説明する。S211において、文字列テーブル制御部504は、一時バッファ503に保持したLZW符号を1符号分取得する。S212において、文字列テーブル制御部504は、このLZW符号が一時バッファ503に格納された先頭の符号であるかを判定する。もしLZW符号が先頭の文字を表すと判定された場合にはS213に進む。S212においてLZW符号が先頭の文字ではないと判定された場合には、S217に進む。S213において、上記LZW符号に対応する文字列テーブル506内の文字列を伸張文字列出力部505が出力する。S214において、文字列テーブル制御部504は、文字列テーブル506を初期化する。S215において、文字列テーブル制御部504は、S213で今回復号し出力した文字列を、前回復号出力した文字列として保存する。S217において、伸張文字列出力部505は、文字列テーブル506を参照し、取得したLZW符号に対応する文字列を伸張文字列出力部505が出力する。
S218において、文字列テーブル制御部504は、S203の判定結果である「文字列テーブル内のそれぞれの文字列が実際に出現しているか否か」に基づいて、以下の制御を行う。
このS218において、使用すると判定された場合には、S219に進む。S219において、文字列テーブル制御部504は、前回復号出力した文字列に、今回復号出力した文字列の先頭文字を加えた新文字列を文字列テーブル506に追加登録する。S216において、文字列テーブル制御部504は、上述した各ステップ(S211〜S215、S217〜S219)の選択的な実施を、全LZW符号に対して行ったか判定する。もし、未実施のLZW符号が残っている場合にはS211に戻り、上述した処理を繰り返す。もし、未実施のLZW符号が残っていない場合には、処理を終了する。
図3(a)に具体的な処理対象のデータを表示しつつ、図2の手順に従ったデータ伸張部の伸張処理を説明してゆく。ここで、説明を簡単にするため、図4のデータ伸張部に入力されるLZW符号語は、「256,65,66,258,67,260,67,260,258,257」であるとする。
LZW符号入力部501および一時バッファ制御部502によって、クリアコードもしくは終了コードの出現を検出するまで、一時バッファ503にLZW符号を保持する。その具体的手段は以下のとおりである。まずS201において最初のLZW符号「256」を入力する。これはクリアコードであるため、S202での判定結果はYesとなり、S203を実行する。S203では一時バッファ503の内容で使用されているLZW符号を求めるものであるが、この段階では一時バッファ503に代入したものはないので特に処理はない。同様にS204についても一時バッファ503が空であるため特に処理はない。S201で受信したLZW符号が終了コードではないため、S205の判定結果はNoとなり、S206を実行する。S206では一時バッファ503の内容を初期化し空とする。S207では2番目のLZW符号「65」を入力する。これは終了コードではないため、S208の判定結果はNoとなり、S209を実行する。S209では、一時バッファ503に先ほどのLZW符号「65」を登録(格納)し、S201に戻る。
次に、S201において3番目のLZW符号「66」を入力する。これはクリアコードではないため、S202の判定結果、次にS209を実行する。S209では一時バッファ503にLZW符号「66」を登録し、S201に戻る。
同様にLZW符号「258」「67」「260」「67」「260」「258」までの各符号は先に述べたLZW符号「66」の例と同じシーケンスによって、一時バッファ503に順次登録されていく。この時点で一時バッファ503内には符号語群「65、66、258、67、260、67、260、258」が登録されていることになる。
こうして、S201において最後のLZW符号「257」を入力したとする。この符号は終了コードであるため、S202からS203に処理が進むことになる。
次に、S203ではそれぞれのエントリ番号(図中のNo.に相当)について、一時バッファ内のLZW符号が文字列テーブル506(辞書)を参照するものであるか否かを判定する。具体的には、格納順に符号語を読出し、その符号語の値が「258」以上となっているLZW符号が出現する場合に、使用すると見なせばよい。実施形態のLZW符号列の場合には、「258」および「260」が出現しているため、これらを登録するNo.2、4の符号に対して使用判定結果を「Yes」とすればよい。ここで一時バッファ内に登録されているLZW符号の種類は重複しているものを除外すると「65、66、67、258、260」である。
上記をより具体的に説明する。一時バッファ503に登録されているLZW符号の先頭であるNo.1に対しては、文字列テーブル506への追加は行われない。そして、No.2以降については、文字列テーブル506への登録される可能性はある。それ故、図3(a)に示す如く、一時バッファにおいて、No.2以降のLZW符号については、「258」から順番にindex番号を割り当てる。つまり、No.3のLZW符号語に対して「259」、No.4のLZW符号語には「260」が、No.5の符号語には「261」のindexが割り当てられる。以下同様である。なお、このindex番号が、実際にテーブルに格納されるものではない。図示は、あくまでも理解しやすくするためである。
一方、一時バッファに実際に出現する、文字列テーブル506を参照するLZW符号(符号語の値が「258」以上の符号)は、「258」と「260」がある。このLZWが示す値が上記のindexと見なすと、その値を持つLZW符号語は、No.2とNo.4であることがわかる。故に、図3(a)に示すように、一時バッファのNo.2と4のLZW符号が文字テーブルへの登録対象であることを示すため、の「使用判定結果」の項目に、「Yes」のフラグ(識別情報)を付加する。この「使用判定結果」の項目に、「Yes」となった符号語を別な表現で示すと「文字列テーブル参照符号語」と言うことができる。
なお、符号語の値が255以下のものについてはLZW符号と出力する文字列が同じであるため辞書登録する必要がない。また、符号「256」はクリアコード、「257」は終了コードであるため、これらを除いた「258」以降のLZW符号が一時バッファ内で出現しているかを判定すればよい。
S204の内容として、次に、この一時バッファ503を元に伸張データ出力処理を実施する。データの伸張処理は従来技術と同様であるが、文字列テーブル506への登録に関しては、先に行った使用判定結果のフラグの値に基づき、エントリ番号「258」および「260」のみを登録するとすればよい。
その具体的な流れは以下のとおりとなる。なお、一時バッファ503から符号を順番に読込むためのカウンタが用意されているものとする。そして、一時バッファ503から、このカウンタで示される順番の符号語を入力すると共に、次の符号を入力するためにカウントアップするものとして説明する。
先ず、S211において、一時バッファ503からNo.1のLZW符号「65」を入力する。これは一時バッファ内で先頭であるため、S212の判定結果、S213を実行する。S213では「65」に対応する文字列を復号結果として出力する。先にも述べたとおり、255以下のLZW符号に対応する文字列はLZW符号そのものであるため文字コードで「66」(16進数表記xxHで示すと「41H」)、文字としては“A”が出力される。そしてS214では文字列テーブル506が初期化され空となる。S215では、前回復号出力した文字列として“A”が保持される。一時バッファ503にはまだLZW符号があるため、S216の判定結果、S211が実行される。
次にS211においてNo.2のLZW符号「66」を入力する。これは一時バッファ内で先頭ではないため、S212の判定結果はNoとなり、S217が実行される。S217では先ほど同様255以下であるため、LZW符号そのものを出力する。つまり、文字コードで66、文字としては“B”が出力される。このNo.2は一時バッファ内で参照されるLZW符号を登録することが判定されている。このため、S218での判定結果はYesとなり、S219が実行される。この場合、着目符号は2番目の符号であり、カウンタの値は2である。従って、文字列テーブル506のエントリ番号は「256」+「2」=「258」となり、前回復号出力した文字列“A”と、今回復号出力した文字列“B”の先頭文字である“B”を結合した新文字列“AB”を、文字列テーブル506のエントリアドレス位置「258」に登録する。なお、エントリアドレス「258」は、図3(a)の一時バッファのindexでもあるので、それを活用しても構わない。S215では前回復号出力した文字列として”B“が登録される。一時バッファ503にはまだLZW符号があるため、S216の判定結果、S211が実行される。この時点では出力される文字列は「AB」となっている。
続き、S211においてNo.3のLZW符号「258」を入力する。これは一時バッファ内で先頭ではないため、S212の判定結果、S217が実行される。このLZW符号は258以上であるため、文字列テーブル506からエントリアドレス位置「258」に対応する文字列“AB”を参照し、それを復号結果として出力する。No.3に対しては文字列テーブル506への登録は不要である判定されているので、S218の判定結果、S215が実行される。S215では前回復号出力した文字列として”AB“が登録される。S216の判定結果、S211が実行される。この時点では出力される総文字列は「ABAB」となっている。
S211においてNo.4のLZW符号語「67」を入力する。これは一時バッファ内で先頭ではないため、S212の判定結果、S217が実行される。S217では先ほど同様255以下であるため、LZW符号そのものを出力する。つまり、文字コードで67、文字としては“C”が出力される。このNo.4は一時バッファ内で参照されるLZW符号を登録することが判定されているため(使用判定結果のフラグが「Yes」となっているため)、S219が実行される。この場合、着目符号は4番目の符号であり、カウンタの値は4である。従って、エントリアドレスは、256+4=260となる。それ故、S219では前回復号出力した文字列“AB”と、今回復号出力した文字列“C”の先頭文字である“C”を結合した“ABC”を、文字列テーブル506のエントリアドレス位置「260」に登録する。S215では前回復号出力した文字列として”C“が登録される。一時バッファ503にはまだLZW符号があるため、S216の判定結果、S211が実行される。この時点では出力される総文字列は「ABABC」となっている。
S211において、No.5のLZW符号「260」を入力する。これは一時バッファ内で先頭ではないため、S212の判定結果、S217が実行される。このLZW符号は258以上であるため、文字列テーブル506からエントリ番号260に対応する文字列“ABC”を参照し、出力する。No.5に対しては文字列テーブル506への登録は不要である判定されているので、S218の判定結果、S215が実行される。S215では前回復号出力した文字列として”ABC“が登録される。S216の判定結果、S211が実行される。この時点では出力される総文字列は「ABABCABC」となっている。
S211において、No.6のLZW符号「67」を入力する。これは一時バッファ内で先頭ではないため、S212の判定結果、S217が実行される。S217では先ほど同様255以下であるため、LZW符号そのものを出力する。つまり、文字コードで67、文字としては“C”が出力される。No.6に対しては文字列テーブル506への登録は不要である判定されているので、S218の判定結果、S215が実行される。S215では前回復号出力した文字列として”C“が登録される。S216の判定結果、S211が実行される。この時点では出力される総文字列は「ABABCABCC」となっている。
S211において、No.7のLZW符号「260」を入力する。これは一時バッファ内で先頭ではないため、S212の判定結果、S217が実行される。このLZW符号は258以上であるため、文字列テーブル506からエントリ番号260に対応する文字列“ABC”を参照し、出力する。No.7に対しては文字列テーブル506への登録は不要である判定されているので、S218の判定結果、S215が実行される。S215では前回復号出力した文字列として“ABC“が登録される。S216の判定結果、S211が実行される。この時点では出力される総文字列は「ABABCABCCABC」となっている。
S211において、No.8のLZW符号「258」を入力する。これは一時バッファ内で先頭ではないため、S212の判定結果、S217が実行される。このLZW符号は258以上であるため、文字列テーブル506からエントリアドレス「258」に対応する文字列“AB”を参照し、それを復号結果として出力する。No.8に対しては文字列テーブル506への登録は不要である判定されているので、S218の判定結果、S215が実行される。S215では前回復号出力した文字列として“AB“が登録される。
以上の処理で全バッファを処理したため、S216の判定結果、本処理は終了となる。この時点では出力される総文字列は「ABABCABCCABCAB」となっている。
ここまでで、S204の処理は終了する。引き続きS205の処理を継続する。S201で入力されたLZW符号が終了コードであったため、S205の判定結果、LZW展開処理が終了となる。
以上により、使用されるエントリ番号の文字列のみを文字列テーブルに登録することが可能となる。それ故、文字列テーブルに登録するための文字列の生成処理が省かれるので、処理が簡略化できる。また、その文字列テーブルに登録回数が減ることにより、文字列テーブルが肥大化することを抑制することもできる。それ故、実施形態がLZW符号のデータ伸張処理の効率化を図ることが可能となる。
ここで、圧縮データ入力処理中に、伸張データ出力処理が並列的に実行される構成を用いても良い(図5(a)を参照されたい)。例えば、一時バッファを2つ用意する(一時バッファ1、一時バッファ2)。一時バッファ1に対する圧縮データ入力工程が終了すると、一時バッファ1を参照した伸張データ出力工程を開始できる。これと同時に、もう一方の一時バッファ2に対する圧縮データ入力工程処理が開始可能となる。これにより2つの工程が並列動作できるLZWの2並列伸張処理が実現できる。なお、一時バッファの個数は特に限定するものではなく、3つ以上用いても良い。
また、圧縮データ入力処理中に、複数の伸張データ出力処理が並列的に実行される構成を用いても良い(図5(b)を参照されたい)。この実現には一時バッファ503に登録文字列長情報を追加する方法が望ましい。使用判定結果を記録した後に、一時バッファ内のLZW符号を走査し伸張文字列長の長さを逐次算出する(図3(b)を参照されたい)。LZW符号が255以下であれば1が、LZW符号が256以上であれば、前回の出力文字列の長さに1を加えたものが出力文字列長となる。この出力文字列長の総和を求めることで、ある一時バッファ内のLZW符号を伸張した場合の伸張データ長を算出できる。これにより、一時バッファ制御部において実伸張文字列出力部を用いずとも伸張データ長の総和を算出できる。この情報は、圧縮データ入力処理時に伸張データ出力長を求めると共に、それぞれの伸張データ出力部が上述の伸張データ出力長をもとに伸張データ出力を行う位置決定を可能とする。よって、任意位置からの伸張が可能となるだけではなく、複数の伸張データ出力工程を同時に実施することも可能となる。なお、一時バッファ及び文字列テーブルを3つ以上設け、複数の伸張データ出力処理が同時に実行されても良い。また、伸張文字列長を求めずに、それぞれの伸張データ出力処理を実施した後で結合する手段を取っても良い。
また、本発明の好適な利用形態として、TIFFファイルの面順次データ伸張処理への適用例を説明する。TIFFファイルフォーマットでは画素情報を点順次あるいは面順次のいずれかで保持することが可能である。例えば、RGBの三原色を用いて画素を表現する場合に、点順次ではRGBRGBRGB…という順序に、面順次ではRRR…GGG…BBBという順序に画素情報が並ぶ。しかしながらLZW伸張では文字列テーブルを、復号処理中(伸張処理中)に動的に生成するため、あるLZW符号がどれだけの伸張文字列に伸張されるのかを実際に伸張せずに(つまり文字列テーブルを生成せずに)認識することは出来なかった。従来技術ではそれぞれの面の圧縮データ開始位置を特定することが難しかった。そのため、面順次データを1面分伸張した後に点順次データに並び替えるという方法が用いられる。しかし、A4サイズ、600dpi、24bppのRGB画像の場合には1面を表すために必要な記憶領域は100MBとなる。これにより必要となるメモリ量が増加すると製品コスト増に繋がる場合がある。更に更なる高解像度(1200dpiもしくは2400dpi)あるいはCMYK色空間や特色を含み5色以上を取り扱う場合、A3などの大きな用紙サイズをサポートする場合には、必要となる記憶領域は更に増加する。
本発明は以上の課題に対しても有効に働くことができる。本発明を適用した場合での処理の流れについては図6(a)を、データに関する流れについては図6(b)を参照されたい。一時バッファを導入した本発明では上述した通り、一時バッファ制御部によって、ある一時バッファを伸張したときのデータ長を予め算出しておくことが可能となる。これを元に、面順次データを伸張する場合において一時バッファ制御部によってそれぞれの面を開始する圧縮データの位置を特定できる。これにより、複数の圧縮データ位置からデータ伸張が実施できるため、画素情報を全て伸張することなく、点順次データへ変換することが可能となる。その流れを以下に図6に合わせて説明する。まず最終的な伸張データを分割する任意の個数(あるいはサイズ)を決定する。この例では、α、β、γの3つにわけるものとする。次に、一時バッファ1〜4に対して圧縮データ入力工程を行う。その結果をそれぞれの一時バッファ1〜4を伸張したときの伸張データ長が求められる。これから、それぞれの面に対して伸張するべきデータの開始位置が求められる。この例では、スレッド2では一時バッファ1の先頭からR−αを、スレッド3では一時バッファ2の途中からG−αを、スレッド4では一時バッファ3の途中からB−αを、それぞれ伸張する。途中よりLZW符号を参照する場合にはそこまでの文字列テーブル登録処理は予め実施しておく。それぞれの面の部分データに対する伸張処理が終了したら、伸張データを並び替えることで、点順次データを生成する。これにより巨大な面順次データであっても比較的少ないメモリ量で伸張処理が可能となる。この処理は、並列的な伸張処理と組み合わせることでより効率的な処理が実現できるが、本質的には1スレッド上で逐次的に処理しても使用メモリ量削減効果は得られる。
以上に示したとおり、一時バッファを導入することにより、圧縮データ入力処理と、伸張データ出力処理との独立性を確立させることができる。これにより展開処理時に、参照されることのない文字列を文字列テーブルに登録することを回避することが出来、効率的な展開処理を実現できる。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (6)

  1. LZW符号化された圧縮データを伸長する情報処理装置であって、
    LZW符号化された圧縮データから1符号語ずつ入力し、入力した符号語がLZW符号におけるクリアコード又は終了コードであると判定されるまで、一時バッファに格納する入力手段と、
    前記入力した符号語が前記クリアコード又は前記終了コードであると判定された場合、前記一時バッファに既に記憶された符号語群の中から、LZW符号の文字列テーブルを参照するテーブル参照符号語を特定し、前記一時バッファ内の符号語群のうち前記テーブル参照符号語で示される位置の符号語に対して前記文字列テーブルへの登録対象とすることを示す識別情報を生成する生成手段と、
    前記一時バッファから読出した符号語が前記テーブル参照符号語である場合には、当該符号語で示される前記文字列テーブルのエントリアドレス位置にある文字列を復号結果として出力し、前記一時バッファから読出した符号語が前記文字列テーブルを参照しない符号語である場合には、当該符号で示される前記文字列を復号結果として出力する復号手段と、
    前記復号手段による復号処理中に、前記一時バッファから読出した符号語が前記識別情報を有するか否かを判定する判定手段と、
    該判定手段により、前記一時バッファから読出した符号語が前記識別情報を有すると判定された場合、前回復号して出力した文字列に、今回復号出力する文字列の先頭文字を追加することで得られる新文字列を、前記文字列テーブルの、前記一時バッファから読出した符号語で示されるエントリアドレス位置に登録する登録手段と
    を備えることを特徴とする情報処理装置。
  2. 前記一時バッファを少なくとも2つ有し、一方を前回の前記クリアコードを検出するまでに格納した符号化データの伸長処理のために利用し、もう一方を前記入力手段による、前記クリアコード又は前記終了コードに至るまでの新たなLZW符号化データを格納するために利用することを特徴とする請求項1に記載の情報処理装置。
  3. 更に、前記一時バッファに符号語を格納する際に、当該符号語に対する前記復号手段で得られる文字列のデータ長を算出し、当該データ長をもとに、前記符号語の出力する位置を制御することを特徴とする請求項1又は2に記載の情報処理装置。
  4. LZW符号化された圧縮データを伸長する情報処理装置の制御方法であって、
    入力手段が、LZW符号化された圧縮データから1符号語ずつ入力し、入力した符号語がLZW符号におけるクリアコード又は終了コードであると判定されるまで、一時バッファに格納する入力工程と、
    生成手段が、前記入力した符号語が前記クリアコード又は前記終了コードであると判定された場合、前記一時バッファに既に記憶された符号語群の中から、LZW符号の文字列テーブルを参照するテーブル参照符号語を特定し、前記一時バッファの符号語群のうち前記テーブル参照符号語で示される位置の符号語に対して前記文字列テーブルへの登録対象とすることを示す識別情報を生成する生成工程と、
    復号手段が、前記一時バッファから読出した符号語が前記テーブル参照符号語である場合には、当該符号語で示される前記文字列テーブルのエントリアドレス位置にある文字列を復号結果として出力し、前記一時バッファから読出した符号語が前記文字列テーブルを参照しない符号語である場合には、当該符号で示される前記文字列を復号結果として出力する復号工程と、
    判定手段が、前記復号工程による復号処理中に、前記一時バッファから読出した符号語が前記識別情報を有するか否かを判定する判定工程と、
    登録手段が、該判定工程により、前記一時バッファから読出した符号語が前記識別情報を有すると判定された場合、前回復号して出力した文字列に、今回復号出力する文字列の先頭文字を追加することで得られる新文字列を、前記文字列テーブルの、前記一時バッファから読出した符号語で示されるエントリアドレス位置に登録する登録工程と
    を有することを特徴とする情報処理装置の制御方法。
  5. コンピュータに読み込ませ実行させることで、前記コンピュータを、請求項1乃至3のいずれか1項に記載の情報処理装置の各手段として機能させることを特徴とするプログラム。
  6. 請求項5に記載のプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
JP2010041002A 2010-02-25 2010-02-25 情報処理装置及びその制御方法及びプログラム及び記憶媒体 Expired - Fee Related JP5523144B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010041002A JP5523144B2 (ja) 2010-02-25 2010-02-25 情報処理装置及びその制御方法及びプログラム及び記憶媒体
US13/018,571 US8325070B2 (en) 2010-02-25 2011-02-01 Information processing apparatus and control method thereof, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010041002A JP5523144B2 (ja) 2010-02-25 2010-02-25 情報処理装置及びその制御方法及びプログラム及び記憶媒体

Publications (2)

Publication Number Publication Date
JP2011176770A JP2011176770A (ja) 2011-09-08
JP5523144B2 true JP5523144B2 (ja) 2014-06-18

Family

ID=44476061

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010041002A Expired - Fee Related JP5523144B2 (ja) 2010-02-25 2010-02-25 情報処理装置及びその制御方法及びプログラム及び記憶媒体

Country Status (2)

Country Link
US (1) US8325070B2 (ja)
JP (1) JP5523144B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5966673B2 (ja) * 2012-06-28 2016-08-10 富士通株式会社 符号処理のためのプログラム及びデータ構造
CN103219999B (zh) * 2013-04-16 2016-03-02 大连理工大学 一种基于lzw压缩算法的可逆的信息隐藏方法
US9164837B2 (en) 2013-09-12 2015-10-20 Seagate Technology Llc Transfer unit management
CN108123721B (zh) * 2016-11-29 2022-01-11 展讯通信(上海)有限公司 编码方法及装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0476727A (ja) * 1990-07-18 1992-03-11 Fujitsu Ltd データ復元方式
JP3117760B2 (ja) * 1991-10-23 2000-12-18 富士通株式会社 データ復元方式
JP3132774B2 (ja) * 1991-12-27 2001-02-05 富士通株式会社 データ圧縮・復元装置
JP3236747B2 (ja) * 1994-11-30 2001-12-10 京セラ株式会社 データ伸長方式
JPH09232967A (ja) * 1996-02-22 1997-09-05 Fujitsu Ltd データ圧縮装置及び復元装置
JP2001168727A (ja) * 1999-12-08 2001-06-22 Sony Corp 情報処理装置および方法、並びに記録媒体
JP2001267930A (ja) * 2000-03-16 2001-09-28 Canon Inc 符号伸長装置およびその方法
US6606040B2 (en) * 2001-02-13 2003-08-12 Mosaid Technologies, Inc. Method and apparatus for adaptive data compression
TWI401910B (zh) * 2005-09-19 2013-07-11 St Ericsson Sa 在包含多層級與可適性消除資料的移動式無線應用中用來校正錯誤的裝置與方法
JP4841496B2 (ja) * 2007-04-26 2011-12-21 パナソニック株式会社 可変長符号復号化装置
FR2933793B1 (fr) * 2008-07-11 2013-07-05 Canon Kk Procedes de codage et de decodage, par referencement, de valeurs dans un document structure, et systemes associes.
US7880647B1 (en) * 2009-07-07 2011-02-01 Silicon Motion Inc. Huffman decoding method
US8077064B2 (en) * 2010-02-26 2011-12-13 Research In Motion Limited Method and device for buffer-based interleaved encoding of an input sequence

Also Published As

Publication number Publication date
JP2011176770A (ja) 2011-09-08
US8325070B2 (en) 2012-12-04
US20110205091A1 (en) 2011-08-25

Similar Documents

Publication Publication Date Title
CN101653005B (zh) 用于处理图形数据的方法和设备
CN102577345A (zh) 图像处理设备及其处理方法
JP5523144B2 (ja) 情報処理装置及びその制御方法及びプログラム及び記憶媒体
JP2006014341A (ja) Mcuバッファを用いて画像データを格納するための方法及び装置
JP2000295113A (ja) ハフマン符号化データ圧縮装置
US11805278B2 (en) Image compression
US20040071351A1 (en) Method and system for graphics compression and display
KR20060120043A (ko) 분할 런렝스 인코딩 방법 및 장치
JP2006093958A (ja) プログレッシブjpeg復号化システム
JP4610450B2 (ja) 固定長圧縮画像と属性情報のパッキングデータを処理する画像処理装置
JP7003443B2 (ja) 符号化プログラム、符号化装置および符号化方法
US20010022664A1 (en) Image processing device
US9054730B2 (en) Method and system for LZW based decompression
JP2009239852A (ja) 画像処理装置及び画像処理方法
JP2001169120A (ja) 画像処理装置及びその方法、及び画像処理システム
JP2008124632A (ja) 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法、画像符号化プログラム、画像復号プログラム、画像符号化プログラムを記録した記録媒体、および画像復号プログラムを記録した記録媒体
US10002586B1 (en) Compression of display data stored locally on a GPU
JP2005277932A (ja) データ圧縮装置およびデータ圧縮プログラム
JP2011139165A (ja) 画像処理装置及びその処理方法
JP4822960B2 (ja) 画像処理装置および画像処理方法
JP3880578B2 (ja) 符号化装置、符号化方法
JP4181147B2 (ja) データ圧縮装置およびデータ圧縮プログラム
JP2011065413A (ja) 画像処理装置、画像処理方法及び画像処理プログラム
JPH09163154A (ja) 画像処理装置
JP4857149B2 (ja) 画像形成装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131224

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140207

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140217

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140310

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140408

LAPS Cancellation because of no payment of annual fees