(57)【要約】【課題】  メモリ資源を効率的に使用することができる画像処理装置、画像処理方法及びプログラムを提供する。【解決手段】  パイプライン状に接続された複数の画像処理手段を備えるパイプライン画像処理装置において、圧縮処理部２２は、該圧縮処理部２２への入力データに対して画像圧縮処理を施して、処理結果データを生成する処理結果データ生成手段と、処理結果データのデータサイズが出力バッファのサイズよりも大きい場合に、該処理結果データを複数に分割して前記出力バッファのサイズの出力データを複数生成する出力データ生成手段と、を備える。【選択図】        図２
2006260477.tif 000002
【特許請求の範囲】
【請求項１】
パイプライン状に接続された複数の画像処理手段を備えるパイプライン画像処理装置において、
前記画像処理手段のうち少なくとも１つは、
該画像処理手段への入力データに対して所定の画像処理を施して、処理結果データを生成する処理結果データ生成手段と、
前記処理結果データのデータサイズが所定のデータサイズよりも大きい場合に、前記処理結果データを複数に分割して前記所定のデータサイズの出力データを複数生成する出力データ生成手段と、
を備えることを特徴とするパイプライン画像処理装置。
【請求項２】
請求項１に記載のパイプライン画像処理装置において、
前記画像処理手段のうち少なくとも１つは、
前記入力データのうち前記所定の画像処理を未だ施していない部分を特定する入力位置ポインタを記憶する入力位置ポインタ記憶手段をさらに備える、
ことを特徴とするパイプライン画像処理装置。
【請求項３】
請求項１又は２に記載のパイプライン画像処理装置において、
前記画像処理手段のうち少なくとも１つは、
前記出力データ生成手段により既に生成された前記出力データの部分を特定する出力位置ポインタを記憶する出力位置ポインタ記憶手段をさらに備える、
ことを特徴とするパイプライン画像処理装置。
【請求項４】
請求項１乃至３のいずれかに記載のパイプライン画像処理装置において、
前記画像処理手段のうち少なくとも１つは、
前記出力データ生成手段による前記処理結果データの分割の有無を示す分割有無データを後段に出力する分割有無データ出力手段をさらに備える、
ことを特徴とするパイプライン画像処理装置。
【請求項５】
請求項１乃至４のいずれかに記載のパイプライン画像処理装置において、
前記画像処理手段のうち少なくとも１つに含まれる処理結果データ生成手段は、前記入力データを圧縮してなるデータを前記処理結果データとして生成する、
ことを特徴とするパイプライン画像処理装置。
【請求項６】
パイプライン状に接続された複数の画像処理手段を用いた画像処理方法において、
前記画像処理手段のうち少なくとも１つに、
該画像処理手段への入力データに対して所定の画像処理を施して、処理結果データを生成する処理結果データ生成ステップと、
前記処理結果データのデータサイズが所定のデータサイズよりも大きい場合に、前記処理結果データを複数に分割して前記所定のデータサイズの出力データを複数生成する出力データ生成ステップと、
を実行させることを特徴とするパイプライン画像処理装置の制御方法。
【請求項７】
パイプライン状に接続された複数の画像処理手段を備えるパイプライン画像処理装置としてコンピュータを機能させるためのプログラムであって、
前記画像処理手段のうち少なくとも１つは、
該画像処理手段への入力データに対して所定の画像処理を施して、処理結果データを生成する処理結果データ生成手段と、
前記処理結果データのデータサイズが所定のデータサイズよりも大きい場合に、前記処理結果データを複数に分割して前記所定のデータサイズの出力データを複数生成する出力データ生成手段と、
を備えることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はパイプライン画像処理装置、画像処理方法及びプログラムに関し、複数の画像処理モジュールの組み合わせにより所期の画像処理機能を提供する画像処理装置に関する。この画像処理機能は、例えば文書エディタ、描画ツール、画像伝送装置、プリンタ等、デジタル画像を取り扱う様々なシステムにおいて利用される。
【背景技術】
【０００２】
画像処理装置、画像入力が可能なＤＴＰ（デスクトップ・パブリッシング）システム、画像出力が可能なプリントシステム等では、処理対象となる画像に対して、例えば拡大・縮小、回転、アフィン変換、色変換、フィルタ、合成等の各種の画像処理が行われる。これらの画像処理を行う場合、入力画像の属性、処理内容、手順、パラメータ等が固定されていれば、専用のハードウェアを用いて処理することが可能である。しかし、例えば色空間や画素当たりのビット数が異なる様々な画像が入力される場合や、処理内容、手順、パラメータ等が様々に変更される場合には、より柔軟性のある構成が必要となる。
【０００３】
このような要求を満たすため、例えば特開平５−２６０３７３号公報や特開平７−１０５０２１号公報には、プログラマブルなモジュールをパイプライン形態やＤＡＧ（Directed Acyclic Graph：有向非循環グラフ）形態に接続して、柔軟に所望の処理を行う例が開示されている。
【０００４】
前者である特開平５−２６０３７３号公報に記載された発明では、複数のプログラマブル演算処理部の各演算処理内容と、ネットワーク部による各プログラマブル演算処理部の接続形態とを、ホストコントロール手段を通じて外部から自在に設定できるように構成するようにしている。これにより、高速かつ高度な演算処理が可能で、機能変更、系統変更に対する自由度が高いデジタル映像信号処理装置の提供を目指している。
【０００５】
一方、後者である特開平７−１０５０２１号公報では、必要な機能モジュールを所望の順番でパイプライン状に接続し、初期化し、処理を行うことで、柔軟に画像処理を行う発明が提案されている。この方式は、例えばＵＮＩＸ（登録商標）等のオペレーティングシステムで用いられている単一プロセッサによる多重処理パイプラインのシミュレーション方式を画像処理等の分野に応用したものであり、特に画像処理においては、１回の処理単位を例えば画像の１ラインのように画像の一部に限定することにより、各処理モジュールが処理用に保持するメモリ領域を極めて少なくすることを可能としている。その結果、少ないメモリ容量で複雑な処理を実行できる、コストの低い画像処理装置を提供することが可能となったり、仮想記憶をサポートするオペレーティングシステム上で動作させる場合において、メモリ不足によるスワップアウトを最小限に抑えて、高速に処理を実行することとなったりする。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、１回の処理単位を画像の１ラインの様に限定したとしても、扱う画像データの画素数が多く（例えば６００dpi、A０サイズのＲＧＢ画像等）、さらにその画像データを高倍率に拡大する場合等を想定すると、非常に膨大なメモリ領域を必要とすることになり、ハードウェアで実現する場合には何らかの制限が生じる。
【０００７】
また、ロウ（Raw）画像（画素毎に色情報を持つデータ形式により記述された画像）のままで処理を行う場合には、処理後の画像データのバイト数は容易に求められるので、処理結果を格納するために必要なメモリ領域を予め確保することは可能である。しかし、圧縮処理を行う場合には、処理後のデータ量は圧縮処理後でないと分からないので、処理結果を格納するために必要なメモリ領域のサイズは、一般に、各圧縮処理方式の最悪値に基づいて確保される。この場合、膨大なメモリを必要とする。しかし、実際には確保されたバッファの一部を使用する場合が殆どであり、リソースの無駄が発生していた。
【０００８】
本発明は上記課題に鑑みてなされたものであり、その目的は、メモリ資源を効率的に使用することができる画像処理装置、画像処理方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明に係るパイプライン画像処理装置は、パイプライン状に接続された複数の画像処理手段を備えるパイプライン画像処理装置において、前記画像処理手段のうち少なくとも１つは、該画像処理手段への入力データに対して所定の画像処理を施して、処理結果データを生成する処理結果データ生成手段と、前記処理結果データのデータサイズが所定のデータサイズよりも大きい場合に、前記処理結果データを複数に分割して前記所定のデータサイズの出力データを複数生成する出力データ生成手段と、を備えることを特徴とする。
【００１０】
また、本発明に係る画像処理方法は、パイプライン状に接続された複数の画像処理手段を用いる画像処理方法であって、前記画像処理手段のうち少なくとも１つに、該画像処理手段への入力データに対して所定の画像処理を施して、処理結果データを生成する処理結果データ生成ステップと、前記処理結果データのデータサイズが所定のデータサイズよりも大きい場合に、前記処理結果データを複数に分割して前記所定のデータサイズの出力データを複数生成する出力データ生成ステップと、を実行させることを特徴とする。
【００１１】
また、本発明に係るプログラムは、パイプライン状に接続された複数の画像処理手段を備えるパイプライン画像処理装置としてコンピュータを機能させるためのプログラムであって、前記画像処理手段のうち少なくとも１つは、該画像処理手段への入力データに対して所定の画像処理を施して、処理結果データを生成する処理結果データ生成手段と、前記処理結果データのデータサイズが所定のデータサイズよりも大きい場合に、前記処理結果データを複数に分割して前記所定のデータサイズの出力データを複数生成する出力データ生成手段と、を備えることを特徴とする。
【００１２】
本発明では、所定サイズのバッファが確保され、処理結果データのサイズが前記所定サイズを超えた場合には、該所定サイズに収まるようにデータを分割する。このため、メモリ資源を効率的に使用することができ、その結果、豊富なメモリ資源を必要としない画像処理を実現することができる。
【００１３】
本発明の一態様では、前記画像処理手段のうち少なくとも１つは、前記入力データのうち前記所定の画像処理を未だ施していない部分を特定する入力位置ポインタを記憶する入力位置ポインタ記憶手段をさらに備える。こうすれば、所定の画像処理を未だ施していない入力データの部分を確実に把握することができる。
【００１４】
また、本発明の一態様では、前記画像処理手段のうち少なくとも１つは、前記出力データ生成手段により既に生成された前記出力データの部分を特定する出力位置ポインタを記憶する出力位置ポインタ記憶手段をさらに備える。こうすれば、既に生成された出力データの部分を確実に把握することができる。特に、上記入力位置ポインタ記憶手段を備えるようにしている場合には、入力位置ポインタと出力位置ポインタとを用いて、処理結果データの分割の要否を容易に判断することができる。
【００１５】
また、本発明の一態様では、前記画像処理手段のうち少なくとも１つは、前記出力データ生成手段による前記処理結果データの分割の有無を示す分割有無データを後段に出力する分割有無データ出力手段をさらに備える。こうすれば、後段において処理結果データの分割の有無を確実に把握することができる。
【００１６】
また、本発明の一態様では、前記画像処理手段のうち少なくとも１つに含まれる処理結果データ生成手段は、前記入力データを圧縮してなるデータを前記処理結果データとして生成する。こうすれば、小さなサイズのバッファを用いて、様々なサイズの圧縮済みのデータを出力することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の一実施形態について図面に基づき詳細に説明する。
【００１８】
図１は、本発明の一実施形態に係るパイプライン画像処理装置のハードウェア構成例である。同図において、画像記憶部１４は、例えばハードディスク記憶装置やＲＯＭにより構成されるものであり、処理対象であるデジタル化された画像データを保持する。メモリ部１６は、例えばＲＡＭにより構成されるものであり、画像記憶部１４に保持された画像データを保持したり、本実施形態における各種画像処理を行うために必要となる各種変数、演算途中結果、処理パラメータ等を保持したりする。尚、画像記憶部１４はメモリ部１６と兼用されていてもよい。処理記憶部１２は、例えばハードディスク記憶装置やＲＯＭにより構成されるものであり、画像記憶部１４に保持された処理対象の画像データを処理するための処理手段である、各種の画像処理プログラム（ここでは画像入力プログラム１２ａ及び圧縮処理プログラム１２ｂ）が格納される。処理記憶部１２に格納されている各種の画像処理プログラムはメモリ部１６に展開され、制御部１０により実行される。なお、画像処理プログラムにより実現される機能の全部又は一部は、専用のハードウェアにより実現されてもよい。画像記憶部１４に保持された画像データは、処理記憶部１２に記憶された各種の画像処理プログラムにより処理され、その処理結果は画像出力部１８により外部出力される。画像出力部１８は、例えばＬＣＤやＣＲＴ等の表示装置、プリンタやファクシミリや複写機等の紙媒体出力装置、ファイル記憶装置等である。さらに、制御部１０は、ＣＰＵを中心に構成されるものであり、本パイプライン画像処理装置の各部を制御するものである。
【００１９】
尚、ここでは汎用の制御部１０と、処理記憶部１２に記憶される各種の画像処理プログラムと、を用いてパイプライン画像処理装置を実現するようにしたが、本パイプライン画像処理装置の機能の任意の一部又は全部をハードウェアにより実現してもよい。
【００２０】
ここで、処理記憶部１２に記憶される各種の画像処理プログラムについて、さらに具体的に説明する。図２は、図１に示される構成を備えるパイプライン画像処理装置において、制御部１０が各種の画像処理プログラムを実行することによって実現される複数の画像処理機能の関係を示す機能ブロック図である。同図に示すように、このパイプライン画像処理装置では、複数の画像処理手段、すなわち画像記憶部１４、画像入力部２０、圧縮処理部２２、画像出力部１８がパイプライン状に接続されている。そして、このうち圧縮処理部２２は、特に該圧縮処理部２２への入力データに対して画像圧縮処理（ランレングス法等）を施して、その処理結果データを生成する。そして、この処理結果データのデータサイズが出力バッファのサイズよりも大きい場合に、その処理結果データを複数に分割して出力バッファのサイズの出力データを複数生成するようになっている。圧縮処理部２２による処理結果データは、入力データの内容に応じてサイズが変化する。本圧縮処理部２２では、処理結果データのサイズが変化しても、出力データのサイズを不変とすることができるので、メモリ資源を効率的に使用することができる。
【００２１】
ここで、画像入力部２０及び圧縮処理部２２についてさらに詳細に説明する。
【００２２】
図３は、画像入力部２０の機能的構成を示したものである。画像入力部２０は、画像記憶部１４に記憶された画像データを読み込み、それを圧縮処理部２２に供給する機能を担うものである。このため、画像記憶部１４から画像データを読み込み、後段のモジュールである圧縮処理部２２に画像データを出力するための出力バッファ２０ｂと、この画像入力処理を制御する画像入力制御部２０ａと、ラインカウンタ２０ｃと、入力位置ポインタ２０ｄと、を含んで構成されている。これらの機能は、画像入力プログラム１２ａが制御部１０によって実行されることにより実現されている。
【００２３】
出力バッファ２０ｂは、後段のモジュールである圧縮処理部２２の入力バッファ２２ａ（図４参照）と同じものであって、ここではメモリ部１６の一部により実現されており、その先頭にはフラグ格納領域２０ｅが設けられている。このフラグ格納領域２０ｅは、出力バッファ２０ｂに対し、所定数のラインのデータを終端まで書き終えたか否かを示すフラグが格納される。すなわち、このフラグは、後段に出力すべきデータ（ここでは所定のライン数分の画素データ）の末尾が出力バッファ２０ｂに書き込まれた場合に「真（true）」となり、末尾が書き込まれていない場合（すなわち出力すべきデータが分割して後段に供給される場合）に「偽（false）」となる。但し、このフラグ格納領域２０ｅは必ずしも出力バッファ２０ｂの先頭にある必要はなく、任意の位置で構わない。また、出力バッファ２０ｂとは別にフラグ格納領域２０ｅをメモリ部１６に設けても構わない。さらに、フラグ格納領域２０ｅは、出力すべきデータの末尾が出力バッファ２０ｂに書き込まれているか否かを通知するものであれば、他の通知手段で実現しても構わない。
【００２４】
画像入力部２０のモジュール生成時（画像入力プログラム１２ａの起動時）には、制御部１０は、画像記憶部１４に保持された画像データを指定する。そして、必要な情報等を処理記憶部１２から読み出し、メモリ部１６上にプログラムモジュールとして画像入力部２０を生成する。生成時に、画像入力部２０は、画像データのサイズやビット数、色空間の種類等の各種の画像属性情報を例えば画像記憶部１４から取得し、メモリ部１６上に該画像属性情報を格納する。さらに、入力位置ポインタ２２ｄとして画像データの開始位置（開始アドレス）を設定するとともに、ラインカウンタ２０ｃを１に初期化する。
【００２５】
画像入力部２０は、後段のモジュールである圧縮処理部２２から出力要求を受けると、該モジュールに画像データを渡すようになっている。すなわち、圧縮処理部２２から出力バッファ２０ｂ（入力バッファ２２ａ）を渡されて出力要求を受けると、入力位置ポインタ２０ｄの示すアドレスから出力バッファ２０ｂのサイズ分の画素データをライン順に画像記憶部１４から読み出して、出力バッファ２０ｂへ格納する。そして、ラインカウンタ２０ｃを読み込んだライン数分だけ増加させるとともに、入力位置ポインタ２０ｄを読み込み済みの画素データに応じた値だけ進める。本実施形態では、画像入力部２０は後段のモジュールから出力要求を受けた場合、所定数のラインのデータを分割することなく全て読み込み、出力バッファに書き込むこととし、フラグ格納領域２０ｅは常に「真（true）」が格納されるものとする。なお、ここでは画像入力部２０に、ラインカウンタ２０ｃ及び入力位置ポインタ２０ｄを設けるようにしたが、これらは必要に応じて設ければよく、必須ではない。
【００２６】
次に図４は、圧縮処理部２２の機能的構成を示したものである。圧縮処理部２２は、画像入力部２０から入力される画像データに対して、ランレングス法等による可変長方式の画像圧縮処理を施し、後段の画像出力部１８に処理結果データ、すなわち圧縮済みのデータを供給するものである。このため、圧縮処理部２２は、前段のモジュールである画像入力部２０から出力される画像データを一時的に格納するための入力バッファ２２ａと、後段のモジュールである画像出力部１８に圧縮済みの画像データを出力するための出力バッファ２２ｃと、画像圧縮処理を制御する圧縮処理制御部２２ｂと、入力位置ポインタ２２ｄと、出力位置ポインタ２２ｅと、から構成される。画像入力部２０と同様に、出力バッファ２２ｃの先頭にはフラグ格納領域２２ｇが設けられている。このフラグ格納領域２２ｇは、出力バッファ２２ｃに対し、所定数のラインのデータを終端まで書き終えたか否かを示すフラグが格納される。すなわち、このフラグは、後段に出力すべきデータ（ここでは圧縮済みの画像データ）の末尾が出力バッファ２２ｃに書き込まれた場合に「真（true）」となり、末尾が書き込まれていない場合（すなわち出力すべき圧縮済みの画像データが分割して後段に供給される場合）に「偽（false）」となる。また、入力位置ポインタ２２ｄは、入力バッファ２２ａに格納されている入力データのうち、圧縮処理を未だ施していない部分を特定するデータである。また、出力位置ポインタ２２ｅは、出力バッファ２２ｃにおける、圧縮処理部２２により既に生成された処理結果データが格納された部分を特定するデータである。
【００２７】
圧縮処理部２２のモジュール生成時には、処理を行うために必要な情報等が処理記憶部１２から読み出され、メモリ部１６上にプログラムモジュールとして圧縮処理部２２が生成される。生成時に、圧縮処理制御部２２ｂは制御部１０から前段のモジュールである画像入力部２０への接続情報を与えられ、その情報に基づいて、画像入力部２０に対して入力される画像データの属性情報を取得するための要求を出す。これにより、処理対象となる画像データの画像サイズやビット数等の画像属性情報を取得し、メモリ部１６上にその処理に必要な入力バッファ２２ａを生成する。
【００２８】
後段のモジュールである画像出力部１８から出力バッファ２２ｃを渡されて出力要求を受けると、出力位置ポインタ２２ｅを出力バッファ２２ｃの先頭位置にセットする。そして、入力位置ポインタ２２ｄが入力バッファ２２ａの終了位置を指している場合には、入力位置ポインタ２２ｄを入力バッファ２２ａの先頭位置へセットするとともに、前段のモジュールである画像入力部２０に対して入力バッファ２２ａを渡して出力要求を行う。
【００２９】
圧縮処理部２２は、入力位置ポインタ２２ｄが入力バッファ２２ａの終了位置を指していない場合には、前段のモジュールに対する出力要求は行わず、後段への出力を継続する。また、圧縮処理部２２は、入力バッファ２２ａにおける入力位置ポインタ２２ｄが指示する位置から画素データ毎に符号化処理を行い、その結果を出力バッファ２２ｃにおける出力位置ポインタ２２ｅが指示する位置に格納する。
【００３０】
さらに、圧縮処理部２２は、入力バッファ２２ａのフラグ格納領域２２ｇが「真（true）」で、かつ入力位置ポインタ２２ｄが入力バッファ２２ａの終了位置を指した場合には出力バッファ２２ｃのフラグ格納領域２２ｇを「真(true)」とする。すなわち、前段のモジュールである画像入力部２０が所定ライン数分の画像データの入力を完了し、圧縮処理部２２自体も、その全てについて圧縮処理を終えている場合に、フラグ格納領域２２ｇを「真（true）」に設定する。また、入力位置ポインタ２２ｄが入力バッファ２２ａの終了位置を差していない場合に、出力位置ポインタ２２ｅが出力バッファ２２ｃの終了位置を指せば、出力バッファ２２ｃのフラグ格納領域２２ｇを「偽（false）」とし、出力バッファ２２ｃを後段のモジュールに返す。
【００３１】
ここで、本実施形態に係るパイプライン画像処理装置の動作について説明する。図５乃至図７は、本実施形態に係るパイプライン画像処理装置の動作を示すフロー図である。なお、これらの図で用いられている「第１圧縮結果格納バッファ」とは、圧縮処理部２２によって圧縮された画素データである、符号化データを保持するための１バイトのテンポラリバッファであり、「第２圧縮結果格納バッファ」とは、第１圧縮結果格納バッファに入りきらなかった符号化データの一部を暫定で保持するテンポラリバッファである。これらのバッファは、処理開始前に初期化されているものとする。また、圧縮処理は、ここでは１ライン毎に行われるものとする。
【００３２】
図５乃至図７に示すように、パイプライン画像処理装置の動作が開始される場合、まず画像出力部１８が、画像記憶部１４から処理対象となる画像データの画像属性情報を取得し、その情報に基づいてメモリ部１６に出力バッファ２２ｃを確保する（Ｓ１０１）。出力バッファ２２ｃのサイズは、例えばハードウェア等の制約から決めたり、圧縮前の画像データの画素数から実験的に決めたりする等、任意の方法で決定してよい。出力バッファ２２ｃの先頭には、処理結果データを終端まで書き込んだことを示すフラグを格納するフラグ格納領域２２ｇが設けられる。その後、画像出力部１８が前段のモジュールである圧縮処理部２２へ出力バッファ２２ｃのメモリ部１６における先頭位置（先頭アドレス）を渡し、出力要求を行う（Ｓ１０２）。
【００３３】
この要求に応じて、圧縮処理部２２は、出力位置ポインタ２２ｅに出力バッファ２２ｃの先頭位置をセットする（Ｓ１０３）。また圧縮処理部２２は、入力位置ポインタ２２ｄが入力バッファ２２ａの終了位置を指しているならば（Ｓ１０４）、次のラインを読む必要があるので、入力位置ポインタ２２ｄを入力バッファ２２ａの先頭位置にリセットするとともに（Ｓ１０５）、画像入力部２０へ入力バッファ２２ａのメモリ部１６における先頭位置を渡し、出力要求を行う（Ｓ１０６）。
【００３４】
この要求に応じて、画像入力部２０は、画像記憶部１４の入力位置ポインタ２０ｄが指示する位置から画素データを１ライン分読み込み、それを後段のモジュールである圧縮処理部２２からその先頭位置が渡された出力バッファ２０ｂ（すなわち入力バッファ２２ａ）に順に書き込む。そして、ラインカウンタ２０ｃを１だけ加算するとともに、入力位置ポインタ２０ｄを読み込んだライン分だけ進め、出力バッファ２０ｂを後段に返す（Ｓ１０７）。一方、入力位置ポインタ２２ｄが入力バッファ２２ａの終了位置を指していない場合には（Ｓ１０４）、Ｓ１０５乃至Ｓ１０７の処理をスキップし、Ｓ１０８の処理に進む。
【００３５】
次に、Ｓ１０８では、第２圧縮結果格納バッファにデータが存在するか否かを判断する（Ｓ１０８）。そして、データが存在すれば、第２圧縮結果格納バッファに格納されたデータを第１圧縮結果格納バッファにコピーし、第２圧縮結果格納バッファをクリアする（Ｓ１０９）。一方、データが存在しなければ、Ｓ１０９をスキップし、Ｓ１１０の処理に進む。
【００３６】
Ｓ１１０では、入力位置ポインタ２２ｄが入力バッファ２２ａの終了位置を指しているか否かを判断する。そして、入力位置ポインタ２２ｄが入力バッファ２２ａの終了位置を指していない場合、入力位置ポインタ２２ｄが指示する、入力バッファ２２ａの位置に格納された画素データを符号化し（符号化後のビット数をＳとする）、入力位置ポインタ２２ｄを次の画素データへと進める（Ｓ１１１）。第１圧縮結果格納バッファに既に格納されたデータのビット数＋Ｓがちょうど８ビットとなる場合（Ｓ１１２）、符号化データを第１圧縮結果格納バッファに追加する（Ｓ１１３）。
【００３７】
一方、Ｓ１１２において、第１圧縮結果格納バッファに既に格納されたデータのビット数＋Ｓがちょうど８ビットではないと判断した場合、第１圧縮結果格納バッファに既に格納されたデータのビット数＋Ｓが８ビットより大きいか否かを判断する（Ｓ１２３）。そして、大きければ、符号化データのうち必要なビット数分（第１圧縮結果格納バッファにまだ格納することができるビット数分）を第１圧縮結果格納バッファに追加し、これにより１バイトのデータを第１圧縮結果バッファに格納し、残りのデータを第２圧縮結果格納バッファへ格納する（Ｓ１２４）。
【００３８】
また、Ｓ１２３において、第１圧縮結果格納バッファに既に格納されたデータのビット数＋Ｓが８ビットより大きくないと判断すると（すなわち、第１圧縮結果格納バッファに既に格納されたデータのビット数＋Ｓが８ビット未満である場合）、符号化データを第１圧縮結果格納バッファに追加して（Ｓ１２２）、Ｓ１１０の処理に戻る。
【００３９】
Ｓ１１３又はＳ１２４の処理により、第１圧縮結果格納バッファ内のデータが１バイトになった場合、第１圧縮結果格納バッファ内のデータを出力バッファ２２ｃの出力位置ポインタ２２ｅが指す位置へ格納するとともに、第１圧縮結果格納バッファをクリアし、出力位置ポインタ２２ｅを１だけ進める（Ｓ１１４）。
【００４０】
その後、出力位置ポインタ２２ｅが出力バッファ２２ｃの終了位置を指すか否かを判断し（Ｓ１１５）、出力バッファ２２ｃの終了位置を指す場合、この時点で処理結果データの分割が行われるので、出力バッファ２２ｃのフラグ格納領域２２ｇを「偽(false)」として（Ｓ１１６）、出力バッファ２２ｃを後段である画像出力部１８に返す（Ｓ１１７）。一方、Ｓ１１５において、出力位置ポインタ２２ｅが出力バッファ２２ｃの終了位置を指していないと判断する場合には、Ｓ１０８に戻り、Ｓ１０８乃至Ｓ１１５の処理を繰り返す。
【００４１】
一方、Ｓ１１０で、入力位置ポインタ２２ｄが入力バッファ２２ａの終了位置を指示していると判断する場合には、第１圧縮結果格納バッファにデータが存在するならば（Ｓ１１８）、第１圧縮結果格納バッファ内のデータを出力バッファ２２ｃの出力位置ポインタ２２ｅが指す位置に格納するとともに、第１圧縮結果格納バッファをクリアする（Ｓ１１９）。そして、入力バッファ２２ａのフラグ格納領域２２ｇが「真（true）」であれば（Ｓ１２０）、１ライン分の画素データを全て処理したので、出力バッファ２２ｃのフラグ格納領域２２ｇに「真（true）」のフラグを格納し（Ｓ１２１）、Ｓ１１７の処理に進む。
【００４２】
一方、Ｓ１２０において、入力バッファ２２ａのフラグ格納領域２２ｇに格納されたフラグの値が「真(true)」でないと判断される場合、入力バッファ２２ａに格納されている全てのデータに対して圧縮処理を終えたが、入力バッファ２２ａに格納されたデータ自体が１ラインの途中までのデータであることを示す。このため、出力バッファ２２ｃのフラグ格納領域２２ｇを「偽(false)」とする（Ｓ１１６）。
【００４３】
その後、出力バッファ２２ｃを画像出力部１８へ返し（Ｓ１１７）、画像出力部１８では、前段のモジュールである圧縮処理部２２から返された出力バッファ２２ｃのフラグ格納領域２２ｇが「真(true)」であれば（Ｓ１２５）、出力バッファ２２ｃ内のデータを出力後に改行して（Ｓ１２６）、一方、出力バッファ２２ｃのフラグ格納領域２２ｇが「偽(false)」である場合には、出力バッファ２２ｃ内のデータの出力後に改行は行わない（Ｓ１２７）。ここで改行とは、例えばデータのライン単位の終端符号を付加すること等であり、データのライン毎の区切りが分かればよく、画像データの出力形態や画像処理システムに応じたものを適宜適用することを意味する。
【００４４】
最後に、ラインカウンタ２０ｃが画像データの高さに等しく、かつ出力バッファ２２ｃのフラグ格納領域２２ｇが「真(true)」である、との画像処理の終了条件を満足するか否かを判断する（Ｓ１２８）。そして、該終了条件を満足するまで、上記一連の処理を繰り返す。
【００４５】
以上説明したパイプライン画像処理装置によれば、圧縮処理部２２において入力データに対してランレングス法等を適用した画像圧縮処理を施す。この画像圧縮処理は、入力データの内容に応じて処理結果データのサイズが変わるものであるが、本実施形態によれば、その処理結果データを分割して、複数の所定サイズの出力データを生成している。このため、圧縮処理部２２の出力バッファのサイズを小さなものに固定することができ、パイプライン画像処理装置のハードウェア資源（特にメモリ資源）を有効活用することができる。
【００４６】
なお、本発明は上記実施形態に限定されるものではなく、種々の変形実施が可能である。例えば、以上の説明では、画像データを圧縮し、印刷や表示等の出力を行う画像処理システムに本発明を適用する例を取り上げたが、本発明は他のあらゆる画像処理システムに適用することができる。また、パイプラインの段数は上記実施形態に示すものに限らず、さらに多くの段数を備えたパイプライン画像処理システムにも、本発明を適用できるのはもちろんである。
【００４７】
また、複数の画像処理手段の少なくとも２つは、ネットワークを介して接続された処理装置によって構成されるものであってもよい。
【図面の簡単な説明】
【００４８】
【図１】本発明の実施形態に係るパイプライン画像処理装置のシステム構成を示す図である。
【図２】本発明の実施形態に係るパイプライン画像処理装置の機能的構成を示す図である。
【図３】本発明の実施形態に係る画像入力部の機能的構成を示す図である。
【図４】本発明の実施形態に係る圧縮処理部の機能的構成を示す図である。
【図５】本発明の実施形態に係るパイプライン画像処理装置の動作を示すフロー図である。
【図６】本発明の実施形態に係るパイプライン画像処理装置の動作を示すフロー図である。
【図７】本発明の実施形態に係るパイプライン画像処理装置の動作を示すフロー図である。
【符号の説明】
【００４９】
１０  制御部、１２  処理記憶部、１２ａ  画像入力プログラム、１２ｂ  圧縮処理プログラム、１４  画像記憶部、１６  メモリ部、１８  画像出力部、２０  画像入力部、２０ａ  画像入力制御部、２０ｂ，２２ｃ  出力バッファ、２０ｃ  ラインカウンタ、２０ｄ，２２ｄ  入力位置ポインタ、２２  圧縮処理部  ２２ａ  入力バッファ、２２ｂ  圧縮処理制御部、２２ｅ  出力位置ポインタ。
【図１】
2006260477.tif 000003
【図２】
2006260477.tif 000004
【図３】
2006260477.tif 000005
【図４】
2006260477.tif 000006
【図５】
2006260477.tif 000007
【図６】
2006260477.tif 000008
【図７】
2006260477.tif 000009