(57)【要約】【課題】  無用なバッファの割り当てを回避し、パイプライン方式の画像処理を行う際に要するメモリ容量を削減する。【解決手段】  記憶手段と、画像処理を行うモジュールを駆動する制御手段と、前記モジュールが前記制御手段によって駆動される前に、前記モジュールに前記記憶手段内の記憶領域をバッファとして割り当てる割り当て手段と、前記制御手段によって駆動された前記モジュールにより生成されたデータが前記バッファに納まる場合には、該データを前記バッファに書き込み、前記バッファに納まらない場合には、前記バッファを拡張した後に、該データを書き込む書き込み手段とを有する画像処理装置を提供する。【選択図】        図４
2005322049.tif 000002
【特許請求の範囲】
【請求項１】
記憶手段と、
画像処理を行うモジュールを駆動する制御手段と、
前記モジュールが前記制御手段によって駆動される前に、前記モジュールに前記記憶手段内の記憶領域をバッファとして割り当てる割り当て手段と、
前記制御手段によって駆動された前記モジュールにより生成されたデータが前記バッファに納まる場合には、該データを前記バッファに書き込み、前記バッファに納まらない場合には、前記バッファを拡張した後に、該データを書き込む書き込み手段と
を有する画像処理装置。
【請求項２】
互いに異なる画像処理を行う複数の前記モジュールを備え、
前記制御手段は、
複数の前記モジュールの各々を予め定められた順番で駆動し、
複数の前記モジュールのうち、２番目以降に駆動されるモジュールは、その直前に駆動されたモジュールにより生成されたデータを該直前に駆動されたモジュールに割り当てられた前記バッファから読み出し画像処理を行う
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記モジュールは、
入力されたデータの内容に応じて異なるデータサイズのデータを生成する画像処理を行う
ことを特徴とする請求項１に記載の画像処理装置。
【請求項４】
コンピュータ装置に、
画像処理を行うモジュールを駆動する制御機能と、
前記モジュールが前記制御機能によって駆動される前に、前記モジュールに当該コンピュータ装置のメモリ内の記憶領域をバッファとして割り当てる割り当て機能と、
前記制御機能によって駆動された前記モジュールにより生成されたデータが前記バッファに納まる場合には、該データを前記バッファに書き込み、前記バッファに納まらない場合には、前記バッファを拡張した後に、該データを書き込む書き込み機能と
を実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
パイプライン方式で画像処理を行う技術に関する。
【背景技術】
【０００２】
入力された画像データに各種画像処理を施して出力する画像処理装置が種々提案されており、その一例としては、特許文献１に開示されたパイプライン方式の画像処理装置が挙げられる。特許文献１には、画像の拡大や縮小、解像度変換や色変換などの基本的な処理を実行するモジュールを各処理毎に備え、これらモジュールを適宜組み合わせてパイプラインを形成し、そのパイプラインを形成するモジュールを順次駆動させることによって、多様な画像処理を柔軟に実現する画像処理装置が開示されている。
【０００３】
【特許文献１】特開平０７−１０５０２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、上記パイプライン方式の画像処理装置では、処理を完了したモジュールから次に処理を行うモジュールへ前者の処理結果であるデータを引渡す必要があり、このようなデータの引渡しは、例えば、以下のようにして行われる。すなわち、各モジュールの駆動に先立って、各モジュールにその処理結果であるデータを格納するための記憶領域（以下、バッファ）をメモリ内に割り当てておく。そして、各モジュールはその処理結果であるデータを自身に割り当てられているバッファへ書き込む一方、次に駆動されるモジュールはその直前に処理を完了したモジュールに割り当てられているバッファを参照しその処理結果を取得する。なお、モジュールにバッファを割り当てるとは、例えば図７に示すような管理テーブルに各バッファを一意に識別するバッファ識別子（例えば、上記記憶領域の先頭アドレス）と、そのバッファの大きさと、そのバッファにデータを書き込むモジュールを一意に識別するモジュール識別子（例えば、モジュールの名称を表す文字列など）と、を対応付けて書き込むことである。上記管理テーブルは、あるモジュールに割り当てられているバッファに対応する記憶領域を他のモジュールのバッファとして割り当てないようにするためのものであり、新たにバッファの割り当てを行う場合には、上記管理テーブルに格納されている先頭アドレスの記憶領域を避けてそのバッファを割り当てるようにするためのものである。
【０００５】
このように、パイプラインを形成する各モジュールに上記バッファを割り当てる際には、そのバッファに格納されるデータのデータサイズを特定しておく必要がある。しかしながら、パイプラインを形成する全てのモジュールについてその処理結果のデータサイズを一意に特定することができる訳ではない。例えば、入力データを所定の圧縮アルゴリズムにしたがって符号化し圧縮するモジュールでは、その入力データの内容に応じて異なるデータサイズのデータが生成される。このため、この種のモジュールについては、実際に圧縮処理が完了するまでその処理結果のデータサイズを特定することはできない。このように、処理結果のデータサイズを一意に特定できない場合には、その処理結果のデータサイズについての理論的に想定し得る最大値で上記バッファを割り当てておくことが一般に行われている。
【０００６】
しかしながら、入力データの内容に応じて異なるデータサイズのデータが生成される場合であっても、そのデータサイズが上記最大値に達することは極めて稀である。つまり、上記最大値でバッファを割り当てると、その大部分が利用されないことになってしまう。前述したように、あるモジュールに割り当てられているバッファに対応する記憶領域は、他のモジュールに割り当てられないようになっているため、このように利用されないバッファが割り当てられることは極めて無駄であり、好ましくない。また、パイプラインに処理結果のデータサイズを一意に特定できないモジュールが多数含まれている場合には、実際にはその大部分が利用されることがないにも拘わらず、それら各モジュールについて上記最大値でバッファを割り当てなければならないため、そのパイプラインの実行に大容量のメモリが必要になってしまう。このため、スキャナ装置やプリンタ装置などに組み込まれる画像処理装置のように、小容量のメモリしか有していない画像処理装置では、パイプライン方式の画像処理を実行することが困難な場合も少なくない。
【０００７】
本発明は、上記課題に鑑みてなされたものであり、無用なバッファの割り当てを回避し、パイプライン方式の画像処理を行う際に要するメモリ容量を削減する技術を提供することを目的としている。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明は、記憶手段と、画像処理を行うモジュールを駆動する制御手段と、前記モジュールが前記制御手段によって駆動される前に、前記モジュールに前記記憶手段内の記憶領域をバッファとして割り当てる割り当て手段と、前記制御手段によって駆動された前記モジュールにより生成されたデータが前記バッファに納まる場合には、該データを前記バッファに書き込み、前記バッファに納まらない場合には、前記バッファを拡張した後に、該データを書き込む書き込み手段とを有する画像処理装置を提供する。
【０００９】
また、上記課題を解決するために、本発明は、コンピュータ装置に、画像処理を行うモジュールを駆動する制御機能と、前記モジュールが前記制御機能によって駆動される前に、前記モジュールに当該コンピュータ装置のメモリ内の記憶領域をバッファとして割り当てる割り当て機能と、前記制御機能によって駆動された前記モジュールにより生成されたデータが前記バッファに納まる場合には、該データを前記バッファに書き込み、前記バッファに納まらない場合には、前記バッファを拡張した後に、該データを書き込む書き込み機能とを実現させるプログラムを提供する。
【００１０】
このような画像処理装置およびプログラムによれば、上記モジュールを駆動させる前に、所定の大きさのバッファがそのモジュールに割り当てられる一方、そのモジュールの処理結果であるデータが上記バッファに納まらない場合には、そのバッファを拡張した後にそのデータの書き込みが行われる。
【発明の効果】
【００１１】
本発明によれば、パイプラインを形成する各モジュールを駆動する前に、そのモジュールの処理結果であるデータを格納するためのバッファが割り当てられる一方、そのバッファに上記データが納まらない場合には、そのバッファを拡張した後にそのデータの書き込みが行われる。このため、入力データの内容に応じてデータサイズの異なるデータを生成するようなモジュールに対しても、その処理結果のデータサイズについての理論的に想定し得る最大値でバッファを割り当てておく必要はなく、パイプライン方式の画像処理を行う際に要するメモリ容量が削減されるといった効果を奏する。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照しつつ本発明を実施するための最良の形態について説明する。
［Ａ：構成］
図１は、本発明の１実施形態に係る画像読み取り装置１０の全体構成の一例を示す図である。この画像読み取り装置１０は、図１に示されているように、記憶部１１０と、画像読み取り部１２０と、画像処理部１３０とを有している。この画像読み取り装置１０は、画像読み取り部１２０によって読み取った画像に対応する画像データに所定の画像処理を画像処理部１３０によって施した後に記憶部１１０へ書き込むものである。なお、本実施形態では、画像処理部１３０によって上記画像データを所定の圧縮アルゴリズムにしたがって圧縮し符号化する場合について説明するが、画像処理部１３０が施す処理は係る圧縮処理に限定されるものではなく、入力データの内容に応じて異なるデータサイズのデータが生成されるような処理であれば、どのような処理であっても良い。また、本実施形態では、画像処理部１３０の処理結果を記憶部１１０に格納する場合について説明するが、通信網等を介して他の機器へその処理結果を送信するとしても勿論良く、また、その処理結果に応じた画像を印刷用紙やＯＨＰ（Over Head Projector）シートなどの記録材上に形成し出力するとしても勿論良い。
【００１３】
記憶部１１０は、例えばハードディスクであり、画像処理部１３０から引渡されたデータを格納するためのものである。画像読み取り部１２０は、上述したような記録材上に形成された画像をライン単位で走査して読み取り、読み取った画像に対応する画像データを所定のデータ単位（本実施形態では、１ライン分のデータ）づつ画像処理部１３０へ引渡すものである。以下では、上記１ライン分の画像データを「単位データ」と呼ぶ。なお、本実施形態では、１ライン分の画像データを上記単位データとする場合について説明するが、複数ライン分の画像データや１ページ分の画像データを上記単位データとしても良いことは勿論である。
【００１４】
画像処理部１３０は、画像読み取り部１２０から引渡された単位データを所定の圧縮アルゴリズムにしたがって符号化し圧縮した後に記憶部１１０へ書き込むものである。この画像処理部１３０は、上記単位データを画像読み取り部１２０から受け取る処理、圧縮処理および記憶部１１０への書き込み処理を前述したパイプライン方式で行うものである。以下、図２を参照しつつ画像処理部１３０について詳細に説明する。
【００１５】
図２は、画像処理部１３０のハードウェア構成の一例を示すブロック図である。図２に示されているように、画像処理部１３０は、メモリ２１０と、制御部２２０と、データ入力モジュール２３０と、データ圧縮モジュール２４０と、データ書き込みモジュール２５０と、を有している。
【００１６】
メモリ２１０は、例えばＲＡＭ（Random Access Memory）であり、上記パイプライン処理の実行に際してワークエリアとして利用されるものである。詳細については後述するが、このメモリ２１０内には、上記各モジュール間のデータ授受に利用されるバッファが確保される。
【００１７】
制御部２２０は、図２に示されているように、パイプライン制御手段２２０ａ、バッファ割り当て手段２２０ｂおよびバッファアクセス手段２２０ｃを含んでおり、上述したパイプライン処理を実現するためのものである。パイプライン制御手段２２０ａは、上記単位データが画像読み取り部１２０から引渡される度に、上記３つのモジュールの駆動制御を行い、図３に示すように、データ入力モジュール２３０、データ圧縮モジュール２４０、データ書き込みモジュール２５０の順に駆動させるものである。
【００１８】
バッファ割り当て手段２２０ｂは、パイプライン制御手段２２０ａによってモジュールが駆動される前に、そのモジュールに予め定められた大きさのバッファを割り当てるものである。より詳細に説明すると、バッファ割り当て手段２２０ｂは、例えば、前述した管理テーブル（図７参照）の格納内容を更新することなどにより、予め定められた大きさの記憶領域をメモリ２１０内に確保しその記憶領域をバッファとして割り当てるものである。本実施形態では、バッファ割り当て手段２２０ｂは、上述した単位データのデータサイズと等しい大きさのバッファＡをデータ入力モジュール２３０に割り当てる一方、データ圧縮モジュール２４０の平均の圧縮率に応じた大きさのバッファＢをデータ圧縮モジュールに割り当てるものとする。ここで、圧縮率とは、データ圧縮モジュール２４０に入力されたデータのデータサイズに対する圧縮結果のデータサイズの１００分率であり、内容の異なる複数のデータについて上記圧縮率を求め、その加算平均を求めることで上記平均の圧縮率を求めることができる。例えば、上記平均の圧縮率が５０％であった場合には、バッファ割り当て手段２２０ｂは、上記単位データのデータサイズの半分の大きさで上記バッファＢを割り当てる。なお、本実施形態では、各モジュールが駆動される前に、予め定められた大きさのバッファを各モジュールに割り当てる場合について説明したが、各モジュールに、割り当てるべきバッファの大きさをバッファ割り当て手段２２０ｂへ通知させ、その通知された大きさのバッファをバッファ割り当て手段２２０ｂに割り当てさせるとしても良いことは勿論である。
【００１９】
そして、バッファアクセス手段２２０ｃは、各モジュールからの要求に応じてそのモジュールの処理結果であるデータをそのモジュールに割り当てられているバッファへ書き込んだり、そのバッファからデータを読み出したりするものである。このバッファアクセス手段２２０ｃは、バッファへの書き込みを行う際に、本発明に特徴的な処理を行う。具体的には、図４に示されているように、バッファアクセス手段２２０ｃは、各モジュールから引渡されたデータがそのモジュールに割り当てられたバッファに納まらない場合には、例えば前述した管理テーブル（図７参照）の格納内容を更新するなどして、そのバッファを拡張した後に、そのデータを書き込む。
【００２０】
データ入力モジュール２３０は、画像読み取り部１２０から引渡された単位データを受け取り、その単位データを上記バッファアクセス手段２２０ｃによってバッファＡへ書き込むものである。データ圧縮モジュール２４０は、バッファＡに格納されている単位データを上記バッファアクセス手段２２０ｃを用いて読み出し、所定の圧縮アルゴリズムにしたがって圧縮した後、その圧縮結果を上記バッファアクセス手段２２０ｃによってバッファＢへ書き込むものである。そして、データ書き込みモジュール２５０は、バッファＢに格納されているデータ（すなわち、圧縮された単位データ）を上記バッファアクセス手段２２０ｃによって読み出し記憶部１１０へ書き込むものである。なお、本実施形態では、パイプラインを形成する各モジュールをハードウェアで実装する場合について説明したが、これら各モジュールをソフトウェアで実装するとしても良いことは勿論である。
【００２１】
ここで、注目すべき点は、データ圧縮モジュール２４０によって生成されるデータのデータサイズはそのデータ圧縮モジュール２４０に入力される単位データの内容に応じて変化する点である。本実施形態では、データ圧縮モジュール２４０による圧縮結果のデータサイズについての理論上想定し得る最大値とは無関係な大きさでバッファＢを割り当てているため、上記圧縮結果がバッファＢに納まりきらないことが起こり得る。このような場合であっても、上記バッファアクセス手段２２０ｃによれば、バッファＢが拡張された後に上記圧縮結果の書き込みが行われるため、特段の問題は発生しない。なお、本実施形態では、画像処理部１３０で実行されるパイプライン処理が３段階で構成されている場合について説明するが、２段階の処理で構成されていても良く、また、４段階以上の処理で構成されていても良いことは勿論である。
【００２２】
［Ｂ：動作］
次いで、本実施形態に係る画像読み取り装置１０が行う動作のうち、その特徴を顕著に示す動作について図面を参照しつつ説明する。
【００２３】
（Ｂ−１：パイプライン制御動作）
まず、図３を参照しつつ制御部２２０が行うパイプライン制御動作について説明する。図３は、制御部２２０が行う制御動作の流れを示すフローチャートである。図３に示されているように、制御部２２０は、まず、バッファ割り当て手段２２０ｂによって初期化処理を行う（ステップＳＡ１）。具体的には、バッファ割り当て手段２２０ｂは、上述したバッファＡをデータ入力モジュール２３０に割り当てる一方、上述したバッファＢをデータ圧縮モジュール２４０に割り当てる。
【００２４】
以降、制御部２２０は、データ入力モジュール２３０、データ圧縮モジュール２４０およびデータ書き込みモジュール２５０をパイプライン制御手段２２０ａによって順次駆動し（ステップＳＡ２〜ステップＳＡ４）、パイプライン処理を実行する。その結果、画像読み取り部１２０から画像処理部１３０へ引渡された単位データは、図５に示すデータフローにしたがってデータ入力モジュール２３０、データ圧縮モジュール２４０およびデータ書き込みモジュール２５０によって順次処理され、記憶部１１０へ書き込まれることになる。そして、データ入力モジュール２３０とデータ圧縮モジュール２４０は、各々の処理結果を各々に割り当てられているバッファへ書き込む際に、上述したバッファアクセス手段２２０ｃを用いてその書き込みを行う。以下、バッファアクセス手段２２０ｃが行う処理について図４を参照しつつ詳細に説明する。
【００２５】
（Ｂ−２：バッファ書き込み動作）
図４は、バッファアクセス手段２２０ｃが、各モジュールから引渡されたデータをそのモジュールに割り当てられているバッファへ書き込む際に行うバッファ書き込み動作の流れを示すフローチャートである。図４に示されているように、バッファアクセス手段２２０ｃは、まず、各モジュールから引渡されたデータのデータサイズとその書き込み先のバッファの空き容量とを比較し、そのデータがそのバッファに納まるか否かを判定する（ステップＳＢ１）。具体的には、バッファアクセス手段２２０ｃは、上記データのデータサイズが上記空き容量以下である場合には、納まると判定し、逆に、前者が後者よりも大きい場合には、納まらないと判定する。
【００２６】
ステップＳＢ１の判定結果が“Ｙｅｓ”である場合には、バッファアクセス手段２２０ｃは、上記データを上記バッファへ書き込み（ステップＳＢ２）、当該書き込み動作を終了する。逆に、ステップＳＢ１の判定結果が“Ｎｏ”である場合には、バッファアクセス手段２２０ｃは、まず、上記データの先頭から上記空き容量に対応する部分だけを上記バッファへ書き込み（ステップＳＢ３）、上記データのデータサイズを未書き込み部分のデータサイズに更新する（ステップＳＢ４）。
【００２７】
次いで、バッファアクセス手段２２０ｃは、メモリ２１０内で未使用の記憶領域を上記データサイズ分だけ確保して上記バッファを拡張し（ステップＳＢ５）、ステップＳＢ１以降の処理を繰り返し実行する。なお、本実施形態では、バッファの空き容量に不足が生じる場合には、その不足分だけ新たに記憶領域を割り当ててバッファを拡張する場合について説明したが、バッファの空き容量に不足が生じた場合には、所定のデータサイズ（例えば、バッファの初期サイズ）分だけ拡張するとしても良いことは勿論である。また、上記新たな記憶領域を割り当てる際には、図６（ａ）に示すように既存のバッファと隣接するように新たな記憶領域（図６にてハッチングで示した部分）を割り当てても良く、図６（ｂ）に示すように既存のバッファとは離間して新たな記憶領域を割り当てても良い。後者のように、既存のバッファとは離間して新たな記憶領域を割り当てる場合であっても、以下に述べる要領でバッファアクセス手段２２０ｃを動作させれば、何ら問題は発生しない。すなわち、データをバッファへ書き込む際には、そのデータを適宜分割して既存のバッファと上記新たな記憶領域に書き込み、複数の記憶領域に跨るバッファからデータを読み出す際には、各記憶領域から読み出したデータを適宜連結して各モジュールに引渡すようにすれば良い。
【００２８】
以上に説明したように、本実施形態によれば、予め定められた大きさでバッファを割り当て、その空き容量に不足が生じた場合に、その不足分だけ記憶領域を確保しバッファを拡張するようにしたため、理論上想定し得る最大値で常にバッファを確保する場合に比較して、不必要に大きなバッファが確保されることはなく、パイプライン処理を実行する際に要するメモリ容量を削減させることが可能になるといった効果を奏する。
【００２９】
［Ｃ：変形例］
以上、本発明を実施するための最良の形態について説明したが、係る実施形態を以下に述べるように変形しても良いことは勿論である。
【００３０】
（Ｃ−１：変形例１）
上述した実施形態では、スキャナ装置などの画像読み取り装置に本発明に係る画像処理部を組み込んでおく場合について説明したが、係る画像処理部が組み込まれる対象はスキャナ装置に限定されるものではなく、プリンタ装置や複写機などの画像形成装置であっても勿論良く、また、スキャナ機能とプリンタ機能や複写機機能とを兼ね備えた複合機であっても勿論良い。また、リップサーバなどのような単独の画像処理装置に本発明を適用しても良いことは勿論である。
【００３１】
（Ｃ−２：変形例２）
上述した実施形態では、本発明に特徴的なバッファアクセス手段２２０ｃを用いてバッファへデータを書き込んだり、バッファからデータを読み出したりする場合について説明したが、各モジュールに上記バッファアクセス手段２２０ｃと同一の機能を付与しておくとしても良いことは勿論である。同様に２、各モジュールに上記バッファ割り当て手段２２０ｂと同一の機能を付与しておくとしても勿論良い。さらに、各バッファを一意に識別するデータ（例えば、各バッファの先頭アドレス）やそのバッファの大きさを表すデータと、そのバッファに対するアクセス処理（データの読み出しや書き込み処理）やそのバッファを拡張する処理等の手順が記述されたプログラムとをカプセル化してオブジェクト（以下、バッファオブジェクト）を生成し、係るバッファオブジェクトを各モジュールとリンク可能に画像処理装置に実装しておくとしても勿論良い。
【００３２】
（Ｃ−３：変形例３）
上述した実施形態では、本発明に係る画像処理装置に特有な機能をハードウェアモジュール（パイプライン制御手段２２０ａ、バッファ割り当て手段２２０ｂおよびバッファアクセス手段２２０ｃ）で実現する場合について説明したが、ソフトウェアモジュールで実現するとしても勿論良い。具体的には、ＣＰＵ（Central Processing Unit）に上記各手段と同一の機能を実現させるソフトウェアをコンピュータ装置にインストールし、本実施形態に係る画像処理装置と同一の機能を付与するとしても勿論良い。また、係るソフトウェアをＣＤ−ＲＯＭ（Compact Disk -Read Only Memory）などのコンピュータ装置読み取り可能な記録媒体に記録して配布するとしても良く、また、インターネットなどの通信網を介して上記ソフトウェアを配信するとしても勿論良い。
【図面の簡単な説明】
【００３３】
【図１】本発明の一実施形態に係る画像読み取り装置１０の構成例を示す図である。
【図２】同画像読み取り装置１０の画像処理部１３０の機能構成の一例を示す図である。
【図３】同画像処理部１３０が行うパイプライン制御動作の流れを示すフローチャートである。
【図４】同画像処理部１３０が行うバッファ書き込み動作の流れを示すフローチャートである。
【図５】同画像処理部１３０内でのデータフローの一例を示す図である。
【図６】バッファの拡張態様を説明するための図である。
【図７】バッファの割り当て状況を管理する管理テーブルの一例を示す図である。
【符号の説明】
【００３４】
１０…画像読み取り装置、１１０…記憶部、１２０…画像読み取り部、１３０…画像処理部、２１０…メモリ、２２０…制御部、２２０ａ…パイプライン制御手段、２２０ｂ…バッファ割り当て手段、２２０ｃ…バッファアクセス手段、２３０…データ入力モジュール、２４０…データ圧縮モジュール、２５０…データ書き込みモジュール。
【図１】
2005322049.tif 000003
【図２】
2005322049.tif 000004
【図３】
2005322049.tif 000005
【図４】
2005322049.tif 000006
【図５】
2005322049.tif 000007
【図６】
2005322049.tif 000008
【図７】
2005322049.tif 000009