(57)【要約】【課題】  符号化時に使用した動的パラメータを復号化側でも用いる場合に、この動的パラメータの整合性を符号化側と復号化側とで確実にとれるようにするための技術を提供すること。【解決手段】  符号化しようとする第１のラスタ群の直前に符号化対象した第２のラスタ群が空白領域を示すデータ群ではない場合、動的に変化し得るパラメータを第１のラスタ群を符号化する前に保存し（Ｓ１３０３）、第２のラスタ群の符号化結果を出力する（Ｓ１３０５）。一方、第２のラスタ群が空白領域を示すデータ群である場合、パラメータを保存したパラメータに更新し（Ｓ１３０２）、第２のラスタ群が空白領域を示すデータ群であることを示す情報を出力する（Ｓ１３０４）。【選択図】  図１３
2005217954.tif 000002
【特許請求の範囲】
【請求項１】
画像を符号化する方法であって、
前記画像を符号化単位のラスタ数毎に符号化する符号化工程と、
前記符号化工程で符号化しようとする第１のラスタ群の直前に符号化対象した第２のラスタ群が空白領域を示すデータ群であるか否かを判断する判断工程と、
前記第２のラスタ群が空白領域を示すデータ群ではない場合には、前記符号化工程でまだ符号化されていないラスタ部分を符号化するために参照され得るデータに関し、前記符号化及び前記符号化に対する復号化で動的に変化し、同じ画素位置を処理する際には符号化および復号化側で一致していなければならないパラメータを、前記第１のラスタ群を符号化する前に保存する保存工程と、
前記第２のラスタ群が空白領域を示すデータ群ではない場合には、前記符号化工程による前記第２のラスタ群の符号化結果を出力する第１の出力工程と、
前記第２のラスタ群が空白領域を示すデータ群である場合には、前記第１のラスタ群を符号化する為に参照され得る前記パラメータを前記保存工程で保存したパラメータに更新する更新工程と、
前記第２のラスタ群が空白領域を示すデータ群である場合には、前記第２のラスタ群が空白領域を示すデータ群であることを示す情報を出力する第２の出力工程と
を備えることを特徴とする方法。
【請求項２】
更に、前記符号化工程での符号化時に、空白を示すラスタをカウントするカウント工程を備え、
前記判断工程では、前記カウント工程によるカウント数が、符号化単位のラスタ数と同じである場合には、空白領域であると判断することを特徴とする請求項１に記載の方法。
【請求項３】
前記パラメータは、前記符号化工程によりまだ符号化されていないラスタ部分を符号化するために参照され得る、符号化済みの画素のデータ群を含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記パラメータは、注目画素以降のデータ群と一致するか否かを検査するために参照する画素位置の参照順序を含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記パラメータは、符号化済みデータ群をフレーズとして登録しておくための辞書データベースを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記パラメータは、注目画素以降のデータ群と同じ系列となる符号化済みデータ群の位置を記憶しておくためのハッシュテーブルを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記第２の出力工程では、ラスタスキップコマンドを出力することを特徴とする請求項１に記載の方法。
【請求項８】
画像を符号化する装置であって、
前記画像を符号化単位のラスタ数毎に符号化する符号化手段と、
前記符号化手段が符号化しようとする第１のラスタ群の直前に符号化対象した第２のラスタ群が空白領域を示すデータ群であるか否かを判断する判断手段と、
前記第２のラスタ群が空白領域を示すデータ群ではない場合には、前記符号化手段がまだ符号化されていないラスタ部分を符号化するために参照され得るデータに関し、前記符号化及び前記符号化に対する復号化で動的に変化し、同じ画素位置を処理する際には符号化および復号化側で一致していなければならないパラメータを、前記第１のラスタ群を符号化する前に保存する保存手段と、
前記第２のラスタ群が空白領域を示すデータ群ではない場合には、前記符号化手段による前記第２のラスタ群の符号化結果を出力する第１の出力手段と、
前記第２のラスタ群が空白領域を示すデータ群である場合には、前記第１のラスタ群を符号化する為に参照され得る前記パラメータを前記保存手段が保存したパラメータに更新する更新手段と、
前記第２のラスタ群が空白領域を示すデータ群である場合には、前記第２のラスタ群が空白領域を示すデータ群であることを示す情報を出力する第２の出力手段と
を備えることを特徴とする装置。
【請求項９】
コンピュータに請求項１乃至７の何れか１項に記載の方法を実行させることを特徴とするプログラム。
【請求項１０】
請求項９に記載のプログラムを格納することを特徴とするコンピュータ読みとり可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを符号化する技術に関するものであり、例えば、コンピュータ等のホスト装置からプリンタへ転送する画像データを符号化する為の符号化技術に関するものである。
【背景技術】
【０００２】
従来より、ホスト装置であるコンピュータとプリンタとの間で通信されるプリント用データを圧縮するための方法が提案されている。
【特許文献１】特開２００３−１７４５６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、近年、プリンタの印字解像度は増加の一途をたどり、プリンタにプリントデータを送出するコンピュータが保持するこのプリンタのためのドライバ（ドライバ部）で生成されるプリントデータの解像度は６００dpiあるいはそれ以上となっている。例えば６００dpiの場合、A４サイズの用紙全面にCMYK４色でプリントすることを考えると、たとえ各色、疑似階調処理によって１画素あたり２bitに量子化されていたとしても、圧縮前のデータ量は１ページあたり約３２MBと膨大なものとなってしまう。
【０００４】
一方、プリンタの印字速度も近年飛躍的な向上を遂げており、プリンタのエンジン性能を１００%発揮するためには、上記のような膨大なプリントデータを可能な限り高速にプリンタへ転送する必要がある。
【０００５】
しかし近年では、有線インターフェースの転送速度が飛躍的に向上する反面、Bluetoothのような転送速度が１Mbps未満である低速無線インターフェースが、携帯型パーソナルコンピュータや携帯電話などに搭載され始めており、これらのデバイスから無線でドキュメントを印字したいというニーズも高まってきている。
【０００６】
すなわち、近年のプリンティング環境における傾向としては、印字解像度の増加に伴ってプリントデータは増加し、かつプリンタのエンジンスピードが向上したにもかかわらず、ホストデバイスとプリンタを接続するインターフェースの転送速度は低下するという相反する状況になっている。これらの状況を鑑みると、ドライバ部で生成したプリントデータを如何に効率よく圧縮し、できるだけ短時間のうちにプリンタに転送できるか、という課題は必ず解決しなければならない重要な要素となってきている。
【０００７】
この課題を解決する一つの手段としては、より高能率な圧縮方法を採用することが考えられる。従来のシステムで採用されている圧縮方式は、単純なランレングス符号化によるものが大部分を占めている。このランレングス符号化は、注目データと直前のデータを比較し、同じデータが複数個連続している場合にはその連続量を出力し、直前のデータと一致しない場合には生データとして出力するというものである。このような符号化法は高い圧縮率は望めないものの、処理が単純ありプリンタ内部でデコーダを容易にハードウェア化することができるため、従来より採用され続けていた。
【０００８】
しかし、近年ではプリンタ内部に搭載されるCPUの性能も向上し、搭載できるRAMの容量も増加したため、従来よりも複雑な処理を高速に行うことが可能となっている。このため、例えば、Lempel-Ziv７７（LZ７７）, Lempel-Ziv７８（LZ７８）系の符号化法、あるいは上記特許文献１に示すような方法をプリンティングシステムに適用することにより、従来よりもプリントデータの転送効率を向上させることができると考えられる。
【０００９】
ここで、LZ７７系符号化とは、圧縮対象データに任意の大きさの移動窓を設定し、同窓内に注目データと同じデータ系列が存在するか否かを探索して、一致すれば、そのオフセット位置を符号として出力するものである。またLZ７８系は、圧縮対象となるデータ系列と同じ系列が保持している辞書データの中に存在するか否かを検索し、存在すればそのインデックスを出力し、存在しなければ生データとして出力すると共に、データ系列を新たに辞書データに加えるというものである。
【００１０】
また、上記特許文献１による方法では、注目画素位置の上方と左方に対して、注目データ系列と一致する系列があるか否かを検査し、一致すればその位置（上方あるいは左方）情報と一致する長さを符号化する。その際に、最近符号化した値はキャッシュバッファと呼ばれるバッファに格納しておき、例え注目位置近傍に一致するデータ系列がなかったとしても、該キャッシュバッファを探索して同じデータあれば、生データではなく、キャッシュバッファ上のインデックスを符号化することにより、圧縮処理の効率化を図っている。
【００１１】
これらの符号化法は、いずれもデータ系列が符号化済みデータ系列と一致するか否かを検査し、一致すればその位置と長さを符号化するという点で類似している。また、いずれの方法も、一致するか否かを比較するための参照位置が、注目データの直前に限定されないため、従来のランレングス符号化と比較すると符号化効率は飛躍的に向上することになる。
【００１２】
しかし、これらの符号化法を現状のプリンティングシステムに適用しようとすると、以下のような問題が発生する。
【００１３】
現在のドライバ部における処理は、入力されたドキュメントデータに対して、OSから印字解像度に展開した後の画像データを受け取り、該画像データに対して以降の処理を行っている。このOSの印字解像度への展開は、ここでは例えば図３に示すようにラスタ単位で行われていると仮定する。ドライバ部は、それとは異なった ラスタ単位で色処理後の画像データを圧縮し、図４に示すようなコマンドを付加して転送データを生成している。もし、この ラスタが全てNULL、すなわち印字媒体上には何も印字されない領域であるとすると、図４の中のラスタスキップコマンド（０xFF ０x０５）を送信することで、転送効率を向上させる工夫がなされている。以後では、OSが印字解像度へ展開する単位であるラスタ領域をドライバ処理単位、また圧縮符号化を行う単位であるラスタ領域を符号化処理単位と呼ぶことにする。また、図５には生成されたプリントデータの例が示されている。
【００１４】
なぜこの両者（ドライバ処理単位と符号化処理単位）が異なるかというと、ドライバ処理単位を決定するラスタ数が、各OSによって異なり、かつ同じページ内部においても、ドキュメントの種類やドライバ部の処理中に利用可能なメモリ量等に応じて動的に変化するためである。しかしプリンタ側から見れば、印字時のホストコンピュータの動作環境がどのようなものであったとしても、一定の単位で処理された符号化データを受け取り、プリンタ内部のファームウェアあるいはハードウェアにおいて、あらかじめ定められた所定の単位で復号化することが効率的である。これらの理由により、上記ドライバ処理単位とは異なったラスタ単位で、圧縮符号化処理は施されている。
【００１５】
このような場合、先に触れたような符号化処理単位が全てNULLであった場合、どのような動作でラスタスキップコマンドを送信すべきか、以下に説明する。
【００１６】
通常、ドライバ処理単位内において、例えば今から処理しようとする ラスタが全てNULLラスタであることがわかったなら、それらの領域は以降の色変換処理や疑似階調処理などを行うことなく、ラスタスキップコマンドを送信することが最も効率的だと考えられる。しかし、ドライバ処理単位の境界付近においては、そのような処理を行うことができない。なぜなら、現状、次のドライバ処理単位を印字解像度に展開して最初の数ラスタを参照することが困難であるシステムが多いためである。通常、色変換処理や疑似階調処理はドライバ処理単位毎に行われ、該単位での処理が終了した後、処理後の画像データは破棄され、次のドライバ処理単位が印字解像度に展開される。
【００１７】
このような仕組みの上でラスタスキップコマンドを送信する場合、ドライバ内部では、あるラスタが例えNULLラスタであったとしても、以降の色変換処理、疑似階調処理、およびランレングス符号化による圧縮処理が施され、処理後のデータはメモリ領域に格納される。このとき、処理したラスタがNULLであったことを記憶しておくため、メモリ領域内部に確保されているNULLラスタカウンタをインクリメントさせる。
【００１８】
このような処理を継続し、 ラスタ処理後、もしNULLラスタカウンタが同じ になっていた場合には、これまで処理した符号化処理単位である ラスタは全てNULLラスタであったことになり、これまで符号化した結果を破棄してラスタスキップコマンドを送信している。
【００１９】
現状のドライバ処理ではこのような方法を用いることにより、ドライバ処理単位と符号化処理単位が異なっていたとしても、ドライバ処理単位の境界に依存することなくラスタスキップコマンドの送信を行うことが可能となっている。
【００２０】
しかし、このような現状のシステムに対して、上述したような高能率符号化を適用しようとした場合、ある問題が生じる。それは、LZ７７、LZ７８、あるいは上記特許文献１がいずれも、符号化処理の過程で動的なパラメータを保持するという点である。
【００２１】
動的パラメータとは、LZ７８系であれば辞書データベースであったり、上記特許文献１に開示された符号化法であればハッシュテーブルなどが挙げられる。
【００２２】
これらの動的なパラメータは、NULLラスタを符号化している最中にも変化する可能性がある。そのため、符号化後に結果的に所定のラスタがNULLだったからといって、動的パラメータを破棄してラスタスキップコマンドに変更してしまうと、動的パラメータの整合性が符号化側と復号化側で取れなくなり、そのためプリンタ内部で復号化できなくなる可能性がある。すなわち、現状のドライバ処理システムを大きく変更することなく、上述した高能率符号化法を適用することができないのである。
【００２３】
本発明は以上の問題に鑑みてなされたものであり、符号化時に使用した動的パラメータを復号化側でも用いる場合に、この動的パラメータの整合性を符号化側と復号化側とで確実にとれるようにするための技術を提供することを目的とする。
【課題を解決するための手段】
【００２４】
本発明の目的を達成するために、例えば本発明の符号化方法は以下の構成を備える。
【００２５】
即ち、画像を符号化する方法であって、
前記画像を符号化単位のラスタ数毎に符号化する符号化工程と、
前記符号化工程で符号化しようとする第１のラスタ群の直前に符号化対象した第２のラスタ群が空白領域を示すデータ群であるか否かを判断する判断工程と、
前記第２のラスタ群が空白領域を示すデータ群ではない場合には、前記符号化工程でまだ符号化されていないラスタ部分を符号化するために参照され得るデータに関し、前記符号化及び前記符号化に対する復号化で動的に変化し、同じ画素位置を処理する際には符号化および復号化側で一致していなければならないパラメータを、前記第１のラスタ群を符号化する前に保存する保存工程と、
前記第２のラスタ群が空白領域を示すデータ群ではない場合には、前記符号化工程による前記第２のラスタ群の符号化結果を出力する第１の出力工程と、
前記第２のラスタ群が空白領域を示すデータ群である場合には、前記第１のラスタ群を符号化する為に参照され得る前記パラメータを前記保存工程で保存したパラメータに更新する更新工程と、
前記第２のラスタ群が空白領域を示すデータ群である場合には、前記第２のラスタ群が空白領域を示すデータ群であることを示す情報を出力する第２の出力工程と
を備えることを特徴とする。
【００２６】
本発明の目的を達成するために、例えば本発明の符号化装置は以下の構成を備える。
【００２７】
即ち、画像を符号化する装置であって、
前記画像を符号化単位のラスタ数毎に符号化する符号化手段と、
前記符号化手段が符号化しようとする第１のラスタ群の直前に符号化対象した第２のラスタ群が空白領域を示すデータ群であるか否かを判断する判断手段と、
前記第２のラスタ群が空白領域を示すデータ群ではない場合には、前記符号化手段がまだ符号化されていないラスタ部分を符号化するために参照され得るデータに関し、前記符号化及び前記符号化に対する復号化で動的に変化し、同じ画素位置を処理する際には符号化および復号化側で一致していなければならないパラメータを、前記第１のラスタ群を符号化する前に保存する保存手段と、
前記第２のラスタ群が空白領域を示すデータ群ではない場合には、前記符号化手段による前記第２のラスタ群の符号化結果を出力する第１の出力手段と、
前記第２のラスタ群が空白領域を示すデータ群である場合には、前記第１のラスタ群を符号化する為に参照され得る前記パラメータを前記保存手段が保存したパラメータに更新する更新手段と、
前記第２のラスタ群が空白領域を示すデータ群である場合には、前記第２のラスタ群が空白領域を示すデータ群であることを示す情報を出力する第２の出力手段と
を備えることを特徴とする。
【発明の効果】
【００２８】
本発明の構成により、符号化時に使用した動的パラメータを復号化側でも用いる場合に、この動的パラメータの整合性を符号化側と復号化側とで確実にとれるようにすることができる。
【発明を実施するための最良の形態】
【００２９】
以下添付図面を参照して、本発明を公的な実施形態に従って詳細に説明する。
【００３０】
［第１の実施形態］
図１は、本実施形態にかかるプリントシステムを構成するコンピュータとプリンタの基本構成を示すブロック図である。
【００３１】
コンピュータ１００は後述するプリンタ１０７に対してプリントしようとするデータを送出するとともに、プリントの指示を送出する為のものである。以下、コンピュータ１００の基本構成について説明する。
【００３２】
ＣＰＵ１０１は、ＲＡＭ１０３やＲＯＭ１０２に格納されているプログラムやデータを用いてコンピュータ１００全体の制御を行うとともに、コンピュータ１００が行うべき後述の各処理を実行する。
【００３３】
ＲＯＭ１０２にはコンピュータ１００のブートプログラムや各種の設定データ等が格納されている。
【００３４】
ＲＡＭ１０３には２次記憶装置１０５に保存されており、ＣＰＵ１０１の制御によりロードされたプログラムやデータを保存するためのエリアを備えるとともに、ＣＰＵ１０１が各種の処理を行うために必要なワークエリアを備える。
【００３５】
ユーザＩ／Ｆ（Ｉ／Ｆ）１０４は、キーボードやマウスなどのポインティングデバイスにより構成されており、コンピュータ１００のユーザが各種の指示をＣＰＵ１０１に入力するためのものである。
【００３６】
２次記憶装置１０５は例えばハードディスクドライブ装置などの大容量情報記憶装置であって、ここにＯＳやプリンタ１０７のドライバプログラムなどを保存しており、これらは必要に応じてＣＰＵ１０１の制御によりＲＡＭ１０３に読み出されるものである。
【００３７】
Ｉ／Ｆ１０６は、コンピュータ１００にプリンタ１０７を接続するためのものである。
【００３８】
以上がコンピュータ１００の基本構成であるが、コンピュータ１００の基本構成はこれに限定するものではなく、適宜必要なデバイスを付加してもよい。
【００３９】
次にプリンタ１０７の基本構成について説明する。
【００４０】
ＣＰＵ１０８はＲＡＭ１１０やＲＯＭ１０９に格納されているプログラムやデータを用いてプリンタ１０７全体の制御を行うとともに、プリンタ１０７が行うべき後述の各処理を実行する。
【００４１】
ＲＯＭ１０９にはプリンタ１０７が行うべき後述の各処理をＣＰＵ１０８に実行させるためのプログラムやデータが格納されている。
【００４２】
ＲＡＭ１１０にはコンピュータ１００からＩ／Ｆ１０６、Ｉ／Ｆ１１１を介して送出されたデータを一時的に記憶するためのエリアが備わっているとともに、ＣＰＵ１０８が各種の処理を行うために必要とするワークエリアを備える。
【００４３】
Ｉ／Ｆ１１１はプリンタ１０７をコンピュータ１００に接続するためのもので、Ｉ／Ｆ１０６、Ｉ／Ｆ１１１を介してコンピュータ１００とプリンタ１０７とは互いにデータ通信を行うことができる。なお、Ｉ／Ｆ１０６、Ｉ／Ｆ１１１としては、USB（Universal Serial Bus）やIEEE１３９４による有線の接続や、Bluetooth、IEEE８０２.１１x系の無線による接続などが考えられる。
【００４４】
プリンタエンジン１１２は、ＣＰＵ１０８からの指示に基づいて与えられたデータに従ってプリント動作を行う。
【００４５】
図２は、コンピュータ１００のＲＡＭ１０３にロードされているドライバ（ドライバ部）とプリンタ１０７（プリンタ部）の機能構成を示すブロック図である。
【００４６】
ドライバ部２００の前処理部２０１は、入力されたドキュメントデータに対して前処理を行う。この前処理は、オリジナルのドキュメントデータに対して、例えば鮮鋭化処理を行ったり、人が好ましいと感じる色への変換を行ったりする処理などが含まれる。
【００４７】
次に印字解像度展開部２０２は、前処理部２０１によって前処理が施されたデータに対して印字解像度展開処理を行う。これは、ドライバ部２００に入力されたドキュメントデータを、プリンタ１０７が印字を行う際の解像度に変換する処理である。例えば、入力されたドキュメントデータの解像度が３００dpi、プリンタの出力解像度が６００dpiであった場合、印字解像度展開部２０２は、縦横方向の解像度をそれぞれ２倍に拡大した画像データを生成する。この印字解像度展開部２０２による処理は、通常ＯＳ（オペレーティングシステム）が行うことが多く、ドライバ部２００は印字解像度に展開した画像データを、ＯＳから所定のライン数毎受け取り、以後の処理を行う。この受け取る単位が、上述の「ドライバ処理単位」である。
【００４８】
次に、ＲＧＢ−ＣＭＹＫ色変換部２０３は、印字解像度に展開された画像データに対してRGB-CMYK色変換を行って、RGB値からインク色であるCMYKデータに変換し、更に疑似階調処理部２０４によって同データに対してディザ、あるいは誤差拡散（ED）などの疑似階調処理が施され、１画素あたりの階調数を例えば８bitから２bitに低下させる。全ての画像処理が施されたデータは、圧縮符号化部２０５に入力され、後述する圧縮処理により圧縮を行う。この圧縮処理は、各色データ毎に施される。
【００４９】
この圧縮対象となる疑似階調処理後の画像データは、各色毎に１画素あたり１バイトで構成されていてもよいし、上述したように各色２bitに量子化されている場合には、連続する４画素が１バイトにパッキングされていてもよい。さらに、CMYK４色が１バイトにパッキングされていてもよい。圧縮されたデータには、図４に示すような様々なコマンドデータが付加されて、図５に示すようなフォーマットのプリントデータが生成され、Ｉ／Ｆ１０６、Ｉ／Ｆ１１１を介してプリンタ１０７にプリントデータとして送出される。
【００５０】
プリンタ１０７（同図ではプリンタ部２０７）におけるコマンド解釈部２０８は、入力されたプリントデータに対して、図４に示す如くプリントデータに含まれるコマンドを解釈し、圧縮復号化部２０９は、圧縮符号化部２０５によって符号化（圧縮）された疑似階調処理後のデータを伸張、復元する。その結果得られたデータは印字部２１０により印字媒体上にプリントされる。
【００５１】
次に、ドライバ部２００により行われる符号化処理についてより詳細に説明する。図６，７は、後述の符号化処理について用いられるコマンド群を示す図である。
【００５２】
図８，９は、符号化対象となる注目画素位置を符号化する処理を説明する為の図である。また、図１１は本実施形態にかかる符号化処理のフローチャートである。以下、図６，７，８，９，１１を用いて、本実施形態にかかる符号化処理について説明する。なお、図１１のフローチャートに従ったプログラムは、プリンタ１０７のドライバプログラムとしてＲＡＭ１０３にロードされており、ＣＰＵ１０１がこれを実行することにより、コンピュータ１００は以下説明する符号化処理を行うことになる。
【００５３】
先ず入力された画像データに対して、現在位置を画像の先頭、すなわち画像の左上隅の位置に設定する（ステップＳ１１００）。
【００５４】
次に、まず注目画素位置のすぐ上方にこれから符号化しようとしているデータ系列と同じものが存在するか否かのチェックを行い、存在する場合にはその長さを算出する（ステップＳ１１０１）。ステップＳ１１０１における処理を図８を用いて説明すると、図８に示した各ますが画素を表し、ます内の数値は画素値であるとする。同図の例では、注目画素を含む右方３画素の各画素値は、注目画素の上方に位置する画素（上方参照位置における画素）を含む右方３画素分の各画素値と一致している。従って同図の場合、ステップＳ１１０１で求める長さは「３」である。
【００５５】
求めた長さが０ではない場合（ステップＳ１１０２）、処理をステップＳ１１０３に進め、図６に示したコマンド群のうち「COPY UP」コマンドを示す符号「１」を、ＲＡＭ１０３上に確保された「符号化済みデータを格納するためのバッファ」（以下、符号化済みデータバッファ）に出力する。
【００５６】
また、一致する長さについては、図７に示す如く、長さを示すためのコマンド（COUNT符号）を参照し、例えばステップＳ１１０１で求めた長さが「３」である場合には、「長さ２−３」の符号として２進数０１を、長さが２であるか３であるかを示すビットとして「０１０」もしくは「０１１」のいずれかを符号化済みデータバッファに出力する。
【００５７】
同図の場合、符号が０１０であれば長さは２、０１１であれば長さは３である。したがって、「注目画素から上方に３画素一致するデータが存在する」場合には先に符号化済みデータバッファに出力した「ＣＯＰＹ  ＵＰ」コマンドを示す符号「１」と長さを示すためのコマンド「０１１」とを連結した「１０１１」というビット系列を符号化済みデータバッファに出力することになる。
【００５８】
図１１に戻って、注目画素位置の上方には一致するデータ系列がなかった場合（ステップＳ１１０２）、処理をステップＳ１１０２からステップＳ１１０４に進め、注目画素の左方に対してデータが一致するか否かを検査し、一致する場合にはその長さを算出する（ステップＳ１１０４）。ステップＳ１１０４における処理を図９を用いて説明すると、図９に示した各ますが画素を表し、ます内の数値は画素値であるとする。同図の例では、注目画素を含む右方４画素の各画素値は、注目画素の左方に位置する画素（左方参照位置における画素）の各画素値と一致している。従って同図の場合、ステップＳ１１０４で求める長さは「４」である。
【００５９】
求めた長さが０ではない場合（ステップＳ１１０５）、処理をステップＳ１１０６に進め、図６に示したコマンド群のうち「ＣＯＰＹ  ＬＥＦＴ」コマンドを示す符号「０００１」を符号化済みデータバッファに出力する。
【００６０】
また、一致する長さについては、図７に示す如く、長さを示すためのコマンド（COUNT符号）を参照し、例えばステップＳ１１０４で求めた長さが「４」である場合には、「長さ４−７」の符号として２進数００１を、長さが４から７の何れであるかを示すビットとして「００１」＋「長さが４なら００，長さが５なら０１，長さが６なら１０，長さが７なら１１」を符号化済みデータバッファに出力する。
【００６１】
したがって、「注目画素から左方に４画素一致するデータが存在する」場合には先に符号化済みデータバッファに出力した「ＣＯＰＹ  ＬＥＦＴ」コマンドを示す符号「０００１」と長さを示すためのコマンド「００１  ００」とを連結した「０００１  ００１  ００」というビット系列を符号化済みデータバッファに出力することになる。
【００６２】
図１１に戻って、注目画素位置の左方には一致するデータ系列がなかった場合（ステップＳ１１０５）、処理をステップＳ１１０５からステップＳ１１０７に進め、注目画素データが図１０に示すキャッシュバッファ内に格納されているか否かを判定する。このキャッシュバッファはＲＡＭ１０３内に設けられたものである。
【００６３】
以下ではまず、キャッシュバッファの動作の説明を行う。
【００６４】
注目画素近傍に一致するデータ系列がなかった場合、図６に示す「RAW」コマンドを示す符号と共に生データ（注目画素の画素値を示すデータ）を出力する。その際に、圧縮効率を少しでも上げるために、出力した生データは図１０に示すようなキャッシュバッファに格納しておく。
【００６５】
図１０は、ある画像データ系列が入力された場合のキャッシュバッファの動作例を示す図である。
【００６６】
例えば、１画素あたり１バイトのデータで、７画素分の各画素値のデータ［００，０１，０２，０３，０１，０２，０３］という画像データが入力された場合、最初の４バイトはRAWコマンドと共に生データとして出力されるので、８バイト分用意されたキャッシュバッファに生データを格納する。次に５バイト目の[０１]というデータが入力された場合、生データとして出力する前にキャッシュバッファ内を検索すると、キャッシュバッファのインデックス２番目に、同じ値が格納されていることがわかる。この場合には、「CACHE」コマンド（符号「０１」）と３ビットのインデックス値（この場合、キャッシュバッファの先頭からの位置が「２」であるので「２」を示す３ビットの符号「０１０」）で出力することにより、RAWコマンドと共に１バイトの生データとして出力するよりも符号量を小さくすることが可能となる。以上が、キャッシュバッファの機能の説明である。
【００６７】
このようにキャッシュバッファの内容は、符号化処理が進むに従って適宜更新される。
【００６８】
従って、図１１に戻って、注目画素近傍に一致するデータ系列がなかった場合（ステップＳ１１０５）には、処理をステップＳ１１０５からステップＳ１１０７に進め、上記説明と同様にキャッシュバッファの中を検索し、注目画素の画素値と一致する画素値が格納されていた場合には（ステップＳ１１０７）、処理をステップＳ１１０７からステップＳ１１０８に進め、「CACHE」コマンドを示す符号とともに、注目画素の画素値と一致した画素値が格納されているキャッシュバッファ中の位置（インデックス）を出力し（ステップＳ１１０８）、出力したデータをキャッシュバッファに登録し、キャッシュバッファ内を更新する（ステップＳ１１１０）。本実施形態ではキャッシュバッファの容量は８バイトとしているため、インデックスは３ビットで表現することが可能である。また、各色データ毎に圧縮符号化を行う場合には、このキャッシュバッファは各色毎に保持されることになる。
【００６９】
また、キャッシュバッファ内にも、注目画素の画素値と一致する画素値が格納されていない場合には（ステップＳ１１０７）、処理をステップＳ１１０７からステップＳ１１０９に進め、「RAW」コマンドを示す符号と共に、１バイトの生データとして注目画素の画素値を出力し（ステップＳ１１０９）、出力したデータをキャッシュバッファに登録し、キャッシュバッファ内を更新する（ステップＳ１１１０）。
【００７０】
そしてステップＳ１１００で符号化対象画像の先頭に設定された現在位置をずらし（ステップＳ１１１１）、すらした位置における画素についてステップＳ１１０１以降の処理を行う。
【００７１】
以上の処理を符号化対象画像を構成する全ての画素について行うと、最後に「ＥＯＢ」コマンドを符号化済みデータバッファに出力し、以上の処理を完了する。
【００７２】
以上が、本実施形態にかかる符号化処理である。
【００７３】
次に、プリンタ１０７側で行われる復号処理について以下説明する。復号対象は以上の符号化処理によって符号化されたデータである。
【００７４】
図１２は、本実施形態にかかる復号処理のフローチャートである。なお、図１２のフローチャートに従ったプログラムはＲＯＭ１０９に記録されたプログラムであり、ＣＰＵ１０８がこれを実行することにより、プリンタ１０７は以下説明する符号化処理を行うことになる。なお、図１２に示したフローチャートに従った処理はこのようにファームウェア以外にも、プリンタ１０７内に設けられたハードウェアでもって行うようにしても良い。
【００７５】
コンピュータ１００からＩ／Ｆ１０６、Ｉ／Ｆ１１１を介してプリンタ１０７内のＲＡＭ１１０に符号化されたプリントデータが入力されると、先ず現在位置の初期化を行う（ステップＳ１２００）。次に、符号化されたプリントデータを１ビットずつ解析し、「COPY UP」コマンドであった場合には（ステップＳ１２０１）、処理をステップＳ１２０１からステップＳ１２０２に進め、現在位置（復号画素位置）の上方位置から「COPY UP」コマンドに続く「COUNT」符合で示された個数分データをＲＡＭ１１０中のテンポラリ領域に格納される。テンポラリ領域に出力された各データは復号済みの画素のデータである。
【００７６】
また、解析した結果が「COPY LEFT」コマンドであった場合には（ステップＳ１２０３）、処理をステップＳ１２０３からステップＳ１２０４に進め、復号画素位置の左方から「COPY LEFT」コマンドに続く「COUNT」符合で示された個数分データをテンポラリ領域にコピーする。
【００７７】
さらに、解析した結果が「CACHE」コマンドであった場合には（ステップＳ１２０５）、処理をステップＳ１２０５からステップＳ１２０６に進め、ＲＡＭ１１０中の現在のキャッシュバッファの中の「ＣＡＣＨＥ」コマンドに続くインデックスで示された領域に格納された値を、復号化画素としてテンポラリ領域に出力する（ステップＳ１２０６）。また、復号化画素の画素値のデータを符号化時と同様にしてキャッシュバッファに格納し、キャッシュバッファを更新する（ステップＳ１２０８）。
【００７８】
また、解析した結果が上記何れのコマンドでもない場合には（ステップＳ１２０５）、処理をステップＳ１２０５からステップＳ１２０７に進め、解析結果が「ＲＡＷ」コマンドであると解釈し、「ＲＡＷ」コマンドに続く１バイトのデータを復号化画素としてテンポラリ領域に出力し（ステップＳ１２０７）、復号化画素の画素値のデータを符号化時と同様にしてキャッシュバッファに格納し、キャッシュバッファを更新する（ステップＳ１２０８）。
【００７９】
そしてステップＳ１２００で設定された現在位置をずらし（ステップＳ１２０９）、すらした位置における画素についてステップＳ１２０１以降の処理を行う。
【００８０】
以上の処理を入力されたデータ全てについて行うと、以上の処理を完了する。
【００８１】
以上が、本実施形態にかかる復号化処理である。
【００８２】
次に、以上説明した符号化処理をドライバプログラムに適用した場合に、符号化側（ドライバプログラム）で復号した結果を復号化側（プリンタ１０７）で的確に復号可能なようにするために、本実施形態にかかるドライバプログラムでもって実現すべき処理について説明する。
【００８３】
図１３は、以上説明した符号化処理をドライバプログラムに適用した場合に、このドライバプログラムをＣＰＵ１０１が実行することでなされる符号化処理のフローチャートである。
【００８４】
図１４は、印字解像度展開、色変換処理、疑似階調処理が施された後の符号化対象画像データを示す図である。
【００８５】
図１４において、Unit:００〜０２はそれぞれ符号化処理単位を示しており、上述したように所定のラスタ単位Ｍで構成されている。また、同図中の網点部分は印字データが存在する領域を示しており、それ以外の領域は印字データが全く存在しない空白領域を示している。すなわち、空白領域はすべてNULLラスタで構成されている。
【００８６】
このような画像データに対してラスタ毎に順次、上記符号化法を適用することになるが、その際の動作の説明を、図１３のフローチャートに従って説明する。
【００８７】
先ず、これから符号化しようとする位置が各符号化処理単位の先頭であるか否かを判断し（ステップＳ１３００）、先頭であった場合には処理をステップＳ１３００からステップＳ１３０１に進め、直前に符号化した符号化処理単位（前符号化処理単位）が空白領域、すなわち全てNULLラスタで構成されていたか否かの判定を行う（ステップＳ１３０１）。
【００８８】
ステップＳ１３０１における判定は、後述するNullCounterを用いて行う。すなわち、NullCounterが符号化処理単位を構成するラスタ数（＝Ｍ）であった場合には、前符号化処理単位が空白領域であったと判断する。
【００８９】
一方、ステップＳ１３０１において前符号化処理単位が空白領域でなかったと判定された場合には、処理をステップＳ１３０１からステップＳ１３０３に進め、符号化処理の過程で動的に変化し、復号側でも同様に使用されるパラメータを、ＲＡＭ１０３上に確保されたテンポラリ領域に保存する（ステップＳ１３０３）。この動的に変化するパラメータとは、本実施形態では、上述したキャッシュバッファ（具体的にはキャッシュバッファ上のデータ（例えば図１０に示したキャッシュバッファ内のデータ））が該当する。
【００９０】
すなわち本実施形態では、ステップＳ１３０３ではキャッシュバッファをテンポラリ領域に一時的に保存することになる。そして、前符号化処理単位の符号化結果に対して図４に示したコマンドを付加し、ＲＡＭ１０３上のプリンタ転送用のバッファに出力する（ステップＳ１３０５）。そして、NULLラスタをカウントするカウンタであるNullCounterを０に初期化する（ステップＳ１３０６）。
【００９１】
そして処理をステップＳ１３０７に進め、符号化対象ラスタに対して全てのデータが０であるか否か（すなわちこれから符号化しようとする符号化処理単位がＮＵＬＬラスタであるか否か）のチェックを行い（ステップＳ１３０７）、データ全てが０であった場合には、同ラスタはNULLラスタであると判断し、処理をステップＳ１３０７からステップＳ１３０８に進め、NullCounterを１つインクリメントする（ステップＳ１３０８）。ここで、符号化対象ラスタ中に１つでも０ではない値のデータが存在した場合には、NullCounterはインクリメントせず、次の処理に移動する。
【００９２】
そして、符号化対象ラスタがNULLラスタであるか否かに関わらず、同ラスタの符号化処理を行う。この符号化処理は上述した符号化処理（図１１のフローチャートに従った処理）であるので、説明は省略する。この時、NULLラスタを符号化する場合においても、上述したキャッシュバッファが変化する可能性があることに注意されたい。
【００９３】
符号化対象ラスタを構成するラスタの符号化処理が終了すると、同ラスタが印刷ページを構成する最後のラスタであるか否かのチェックを行い（ステップＳ１３１０）、最後ではなかった場合には、処理をステップＳ１３００に戻し、以降の処理を行う。
【００９４】
次の符号化処理単位の先頭では、処理はステップＳ１３００からステップＳ１３０１に進み、前回符号化した符号化対象ラスタ（前符号化処理単位）が空白領域であったか否かの判定を、NullCounterがＭであるか否かを判定することにより判定する（ステップＳ１３０１）。
【００９５】
そしてNullCounterの値がＭと同値、すなわち、前符号化処理単位が空白領域である場合には処理をステップＳ１３０１からステップＳ１３０２に進め、上記テンポラリ領域に保存しておいたキャッシュバッファのデータを、これから使用するキャッシュバッファのデータとして以降使用する。すなわち、現在のキャッシュバッファのデータを、保存していたキャッシュバッファのデータに戻す処理を行う（ステップＳ１３０２）。
【００９６】
次に、前符号化処理単位を符号化した結果はＲＡＭ１０３上から破棄し、図４に示すラスタスキップコマンド（０ｘＦＦ，０ｘ０５）を、ＲＡＭ１０３上のプリンタ転送用バッファに出力する。
【００９７】
このように、各符号化対象ラスタを符号化する際に、第１の符号化対象ラスタとその後符号化する第２の符号化対象ラスタとの間にＮＵＬＬラスタが存在しても、第２の符号化対象ラスタの符号化を開始するときには、第１の符号化対象ラスタの符号化終了時のキャッシュバッファを使用できる。
【００９８】
以上説明した動作を図１４を参照しながら確認する。まず最初の符号化処理単位であるUnit:００の先頭では、Unit:００直前の符号化処理単位が空白領域でなかった場合、現在の動的パラメータを保存し、続いてUnit:００の各ラスタを符号化し、符号化出力用のバッファに出力する。
【００９９】
次にUnit:０１の先頭でUnit:００が空白領域であるか否かを判定すると、図１４の場合空白領域ではないため、同様に現在の動的パラメータの保存を行う。Unit:０１が全てNULLラスタであるか否かは、Unit:０１の途中にドライバ処理単位の境界が存在する可能性があるため、Unit:０１の先頭時点では不明である。
【０１００】
従って、Unit:０１の各ラスタに対しても符号化処理が施される。次にUnit:０２の先頭でUnit:０１が空白領域であるか否かを判断すると、この時点ではUnit:０１が空白領域であることがわかっているため、動的パラメータを保存してある状態に復元するとともに、ラスタスキップコマンドを出力する。
【０１０１】
以上説明したように、本実施形態によれば、一連の符号化データを受け取ったプリンタから見れば、符号化処理単位は存在しなかったことと同義になり、符号化側と復号化側で動的に変化するパラメータの整合性が失われることはない。よって、従来のシステムを大きく変更することなく、動的パラメータを保持するような高能率符号化法を適用することができる。
【０１０２】
［第２の実施形態］
第１の実施形態で用いた符号化方法は、上記特許文献１に記載の符号化方法であったが、ほかの符号化方法を用いても良い。
【０１０３】
第１の実施形態では、注目しているデータと一致するデータ系列が存在するか否かの判定を行う参照画素位置は、隣接する上方と左方の２箇所であるとして説明したが、図１５に示すように、これらの位置は複数であっても構わない。この場合、図１５に図示するように、注目画素に近い位置を第１参照位置、遠い位置を第２参照位置とする。符号化処理においては、第１上方参照位置、第１左方参照位置、第２上方参照位置、第２左方参照位置、という順序で探索を行い、一致するデータ系列が存在していた場合には、その参照位置を示す符号と一致する長さを示す符号を出力する。この場合のコマンド符号化は、例えば図１６に図示するようなものになる。図１６は、本実施形態にかかる符号化処理について用いられるコマンド群及び符号群を示す図である。
【０１０４】
これらの参照位置は、符号化の最中に動的に入れ替わることで、圧縮効率を向上させることができる。すなわち、上記順番に検索している仮定で、第１上方参照位置には一致するデータは存在しなかったが、第２上方参照位置には存在していた場合、第２上方参照位置近辺の方がデータの相関性は高いと判断し、第１上方参照位置と第２上方参照位置を入れ替えるようにする。すなわち、図１５であれば、次のデータからは、まず注目画素位置から３画素上方に一致するデータがあるか比較し、なければ、第１左方参照位置との比較を行うようにする。
【０１０５】
上記のような改善を加えた場合、現在どの位置が第１参照位置となっているかという情報は動的パラメータとなるため、第１の実施形態で説明したものと同様に、キャッシュバッファと共にテンポラリ領域に保存しておくことで、例え印字ページの途中に空白領域が存在していたとしても、符号化側と復号化側での参照位置の整合性が失われることはない。
【０１０６】
なお、これらの参照位置は２箇所に限ったものではなく、さらに多数の参照位置が存在していても良いことはいうまでもない。
【０１０７】
［第３の実施形態］
第２の実施形態でも説明したとおり、ほかの符号化方法を用いても良い。本実施形態では、ＬＺ７８系の符号化法を用いる。
【０１０８】
ＬＺ７８系符号化法に関しては、その詳細を説明する文献は数多く存在するため、ここでは処理の詳細は割愛する。その概要は、入力データ系列に対して、新しく出現した系列の組み合わせをフレーズとして辞書に登録し、同辞書を参照することで、圧縮効率の向上を図るものである。
【０１０９】
図１７は、入力データ系列に対してＬＺ７８で圧縮符号化した際に作成される辞書データとその出力結果の例を示す図である。図示したようなデータ系列が入力された場合、ＬＺ７８符号化では、最初の［０１，０２，０３］というデータは辞書にはあらかじめ存在しないため、それぞれ［Ｐ１，Ｐ２，Ｐ３］として辞書データに登録する。
【０１１０】
４バイト目に［０１］というデータが入力された時、辞書データを検索すると、Ｐ１として登録されていることがわかる。しかし続く［０１，０２］というフレーズは未だ辞書データには登録されていない。
【０１１１】
従って、符号化器は［Ｐ１，０２］という符号を出力し、［０１，０２］というフレーズをＰ４として辞書に登録する。次の、入力データは［０１，０２，０３］であるが、辞書データを検索すると［０１，０２］というフレーズは存在するものの、［０１，０２，０３］というフレーズは存在しないことがわかる。
【０１１２】
従って符号化器は、［Ｐ４，０３］という符号を出力し、［０１，０２，０３］というフレーズをＰ５として辞書に登録する。以上の動作を続けてゆくことにより、圧縮符号化処理を行う。以上が、ＬＺ７８系符号化の処理の概要である。
【０１１３】
上記符号化法は、辞書データサイズが大きくなればなるほど、高能率の符号化を行うことが可能であるが、通常は登録できるフレーズの数やフレーズの長さは有限なものとなっている。そのため、登録できるフレーズが一杯になると、古いフレーズから破棄してゆくようになっている。そのため、符号化の最中にこの辞書データは動的に変化してゆくことになる。
【０１１４】
従って、このような符号化法を第１，２の実施形態で説明したようにプリンティングシステムに適用しようとした場合、辞書データを動的パラメータとしてキャッシュバッファ、その他と同様に保存、復元することで、例え印字ページの途中に空白領域が存在していたとしても、符号化側と復号化側で辞書データの整合性が失われることはない。
【０１１５】
［その他の実施形態］
本発明は、以上説明した符号化のみに適用されるものではなく、符号化の過程でまだ符号化されていない部分を符号化するために参照され得るデータに関し、符号化処理の過程で動的に変化し得るパラメータを用いる符号化処理全般に適用可能であることは言うまでもない。
【０１１６】
例えば、ＬＺ７７系のハッシュテーブルが動的パラメータに相当するし、ＬＺ７８符号化の改良版であるＬＺＷ（Ｚｉｖ−Ｌｅｍｐｅｌ−Ｗｅｌｃｈ）符号化に対しても同様に適用することが可能である。
【０１１７】
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【０１１８】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１１９】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１２０】
以上説明したように、第１，２の実施形態等によれば、従来のランレングス符号化よりも高性能である符号化法をプリンティングシステムに適用した場合に、例え該符号化方式が内部に動的パラメータを保持していたとしても、従来のシステムを大きく変更することなく、適用することが可能となる。
【０１２１】
また、第３、及びその他の実施形態等によれば、第１、２の実施形態で用いた符号化法に限定することなく、種々の動的パラメータを保持するような圧縮符号化方法を、現在のプリンティングシステムに適用することも可能である。
【図面の簡単な説明】
【０１２２】
【図１】本発明の第１の実施形態にかかるプリントシステムを構成するコンピュータとプリンタの基本構成を示すブロック図である。
【図２】コンピュータ１００のＲＡＭ１０３にロードされているドライバ（ドライバ部）とプリンタ１０７（プリンタ部）の機能構成を示すブロック図である。
【図３】OSの印字解像度への展開を説明するための図である。
【図４】圧縮された色処理後の画像データに付加されるコマンドを示す図である。
【図５】プリントデータの一例を示す図である。
【図６】本発明の第１の実施形態にかかる符号化処理について用いられるコマンド群を示す図である。
【図７】本発明の第１の実施形態にかかる符号化処理について用いられるコマンド群を示す図である。
【図８】符号化対象となる注目画素位置を符号化する処理を説明する為の図である。
【図９】符号化対象となる注目画素位置を符号化する処理を説明する為の図である。
【図１０】ある画像データ系列が入力された場合のキャッシュバッファの動作例を示す図である。
【図１１】本発明の第１の実施形態にかかる符号化処理のフローチャートである。
【図１２】本発明の第１の実施形態にかかる復号処理のフローチャートである。
【図１３】本発明の第１の実施形態にかかる符号化処理をドライバプログラムに適用した場合に、このドライバプログラムをＣＰＵ１０１が実行することでなされる符号化処理のフローチャートである。
【図１４】印字解像度展開、色変換処理、疑似階調処理が施された後の符号化対象画像データを示す図である。
【図１５】本発明の第２の実施形態における符号化処理における、複数の参照画素位置を示す図である。
【図１６】本発明の第２の実施形態にかかる符号化処理について用いられるコマンド群及び符号群を示す図である。
【図１７】入力データ系列に対してＬＺ７８で圧縮符号化した際に作成される辞書データとその出力結果の例を示す図である。
【図１】
2005217954.tif 000003
【図２】
2005217954.tif 000004
【図３】
2005217954.tif 000005
【図４】
2005217954.tif 000006
【図５】
2005217954.tif 000007
【図６】
2005217954.tif 000008
【図７】
2005217954.tif 000009
【図８】
2005217954.tif 000010
【図９】
2005217954.tif 000011
【図１０】
2005217954.tif 000012
【図１１】
2005217954.tif 000013
【図１２】
2005217954.tif 000014
【図１３】
2005217954.tif 000015
【図１４】
2005217954.tif 000016
【図１５】
2005217954.tif 000017
【図１６】
2005217954.tif 000018
【図１７】
2005217954.tif 000019