(57)【特許請求の範囲】
【請求項１】
パイプライン形態に接続されて各々所定の処理を実行する複数の処理手段を有する画像処理装置であって、
前記複数の処理手段は、所定の処理を行うに当たって処理対象の画像情報の一部を読み飛ばす画像情報読み飛ばし手段を有し、
後段の処理手段からの画像情報読み飛ばし要求を受けて、前段の処理手段に画像情報読み飛ばしを指示する
ことを特徴とする画像処理装置。
【請求項２】
前記画像情報読み飛ばし手段は、副走査方向に対して順方向に読み飛ばす機能、副走査方向に対して逆方向に読み飛ばす機能、主走査方向に対して順方向に読み飛ばす機能、主走査方向に対して逆方向に読み飛ばす機能のうちの少なくとも1つを有する
ことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記画像情報読み飛ばし手段は、副走査方向に対して順方向に読み飛ばす機能、副走査方向に対して逆方向に読み飛ばす機能、主走査方向に対して順方向に読み飛ばす機能、主走査方向に対して逆方向に読み飛ばす機能のうちの少なくとも２つを有し、これらの機能の中からいずれかの機能を選択して実行する
ことを特徴とする請求項１記載の画像処理装置。
【請求項４】
前記複数の処理手段は、画像処理命令の種類によって前記画像情報読み飛ばし手段を制御する画像情報読み飛ばし制御手段をさらに有し、
前記画像情報読み飛ばし制御手段は、前段の処理手段が画像情報読み飛ばし可能であるか否かを判断して、可能である場合には前段の処理手段に画像情報読み飛ばし要求を送り、可能でない場合には何もしないかもしくは画像情報読み飛ばしが失敗した旨のエラー通知を後段の処理手段に送る
ことを特徴とする請求項１〜請求項３のいずれかに記載の画像処理装置。
【請求項５】
各々所定の処理を実行する複数の処理モジュールがパイプライン形態に接続されてなるパイプライン処理において、
前記複数の処理モジュールに、所定の処理を行うに当たって処理対象の画像情報の一部を読み飛ばす画像情報読み飛ばし機能を持たせ、
後段の処理モジュールからの画像情報読み飛ばし要求を受けて、前段の処理モジュールに画像情報読み飛ばしを指示する
ことを特徴とする画像処理方法。
【請求項６】
前記複数の処理モジュールに、前記画像情報読み飛ばし機能に加えて画像処理命令の種類によって当該画像情報読み飛ばす機能を制御する画像情報読み飛ばし制御機能を持たせ、
前記画像情報読み飛ばし制御機能では、前段の処理モジュールが画像情報読み飛ばし可能であるか否かを判断して、可能である場合には前段の処理モジュールに画像情報読み飛ばし要求を送り、可能でない場合には何もしないかもしくは画像情報読み飛ばしが失敗した旨のエラー通知を後段の処理モジュールに送る
ことを特徴とする請求項５記載の画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、デジタル化された画像データを処理する画像処理装置および画像処理方法に関し、特に複数の要素機能的な画像処理モジュールを用意して、その組み合わせにより多種多様な画像処理機能を実現するような画像処理装置および画像処理方法に関する。
【０００２】
【従来の技術】
複数の要素機能的な画像処理モジュールを用意して、その組み合わせにより多種多様な画像処理機能を提供する技術は、例えば文書エディタや描画ツール、あるいは画像伝送装置やプリンタ等、デジタル画像を取り扱う様々なシステムにおいて利用される。そして、このような画像処理機能は、しばしば画像処理ライブラリファイルとして提供され、その場合には画像処理機能を利用したいアプリケーションプログラムとリンクすることによりその機能が利用される。
【０００３】
画像を入力可能なＤＴＰ（デスクトップ・パブリッシング）システム、画像を出力可能なプリントシステムなどでは、処理対象となる画像に対して、例えば拡大・縮小、回転、アフィン変換、色変換、フィルタ、合成などの各種の画像処理が行われる。これらの処理を行う際には、入力画像の属性や処理内容、手順、パラメータなどが固定されている場合には専用のハードウェアを用いて処理を行う場合もあるが、例えば色空間や画素当たりのビット数が異なる様々な画像が入力されたり、処理内容や手順、パラメータなどが様々に変更される場合には、より柔軟性のある構成で対応することが必要となる。
【０００４】
このような要求を満たす手段としては、従来、プログラマブルなモジュールをパイプライン形態やＤＡＧ（Directed Acyclic Graph：有向非循環グラフ）形態に接続して、柔軟に所望の処理を行う技術が提案されている（例えば、特開平５−２６０３７３号公報や特開平７−１０５０２０号公報を参照）。
【０００５】
特開平５−２６０３７３号公報には、複数のプログラマブル演算処理部の各演算処理内容と、ネットワーク部による各プログラマブル演算処理部の接続形態とを、ホストコントロール手段を通じて外部から自在に設定できるように構成することにより、高速かつ高度な演算処理が可能で、機能変更、系統変更に対する自由度が高いデジタル映像信号処理装置が記載されている。
【０００６】
また、特開平７−１０５０２０号公報には、必要な機能モジュールを所望の順番でパイプライン状に接続／初期化し、処理を行うことで柔軟に画像処理を行うパイプライン化画像処理システムが記載されている。当該パイプライン化画像処理システムでの動作は次の通りである。
【０００７】
すなわち、接続が終了すると、最後尾のモジュールに対して必要に応じてヘッダの取得を要求し、この要求は接続されたモジュールを順次遡って先頭の画像入力モジュールに達して読み込まれる画像のヘッダ情報を返し、各モジュールは自身が変更する部分の情報を書き換えた後に後段のモジュールに渡す。例えば入力画像のサイズが１０００×１０００画素であり、処理パイプラインの中に５００×５００画素への縮小処理モジュールが含まれていた場合には、当該縮小モジュールは前段から渡されたヘッダ情報のうちのサイズ情報を１０００×１０００から５００×５００に変更して後段に渡す。
【０００８】
このような処理を順次繰り返して、最終的に最後尾のモジュールは外部に対して当該画像処理パイプラインが出力する画像のヘッダ情報を出力する。次に、得られたヘッダ情報などをもとにデータの処理を行う。データの処理もヘッダの処理と同様に、最後尾のモジュールに対して一定量のデータ出力を要求すると、最後尾のモジュールは前段のモジュールに対してそれに必要な画像データの入力を要求する。この要求は同様により前段に対して遡って伝えられて画像入力モジュールに伝えられ、必要な画像データが読み出されて後段に渡され、順次処理をされながら最終的に最後尾の処理モジュールから出力される。
【０００９】
上記の処理が画像の最後まで、または必要な部分に対して行われると、処理パイプラインは不要となるので、最後尾のモジュールに対して終了を要求する。この終了要求もヘッダ情報取得や上記処理と同様にモジュールの接続を遡って最前部の画像入力モジュールに達し、画像入力モジュールは処理に用いたリソースを解放するとともに自身を解放して後段に制御を返す。制御が戻された後段も同様にリソースや自身を解放する処理を行ってさらに後段に返し、最終的に最後尾のモジュールのリソース／自身の解放が終了した時点で全ての操作が終了する。
【００１０】
特開平７−１０５０２０号公報に記載の上記技術は、例えばＵＮＩＸ（登録商標）などのオペレーティングシステムで用いられている単一プロセッサによる多重処理パイプラインのシミュレーション方式を画像処理などの分野に応用したものである。そして、特に画像処理においては、１回の処理単位を例えば画像の１ラインのように画像の一部に限定することにより、各処理モジュールが処理用に保持するメモリ領域を極めて少なくすることが可能となる。
【００１１】
その結果、少ないメモリ容量で複雑な処理を実行できるコストの安い画像処理装置を提供することが可能となったり、あるいは仮想記憶をサポートするオペレーティングシステム上で動作させる場合には、メモリ不足によるスワップアウトが最小限に抑えられるため、高速に処理を実行することが可能となる。
【００１２】
さらに、他の従来技術として、例えば９０度回転処理のように出力の1ラインを得るために入力画像全体を必要とする処理や、入力画像を複数の処理モジュールに対して出力する分岐モジュールなどの場合には、画像全体のバッファリングが終了したらそれよりも前段のモジュールに対して終了処理を行うことで、必要なメモリ資源を最小に抑えて高速に処理することを目指した画像処理装置も提案されている（特開平８−２７２９８１号公報参照）。
【００１３】
【発明が解決しようとする課題】
しかしながら、特開平８−２７２９８１号公報に記載の従来技術では、例えば処理対象画像の特定範囲（クリップ範囲）の画像情報だけを取得するための処理を行うクリップ処理モジュールの出力は、クリップ範囲内の入力画像情報について実行されるが、出力情報に何ら影響を与えないクリップ範囲外の入力画像情報についても処理モジュールへの読み込み処理が実行されることになるため、計算機資源を無駄に消費してしまう。
【００１４】
また、例えば画像の上下を反転させるような反転処理モジュールの場合は、モジュール出力１ライン目は最後のモジュール入力ライン、モジュール出力２ライン目はモジュール入力の最後から２番目のラインであることから、上記従来技術にあっては、モジュール内にページバッファを保持する必要があるため、多くのメモリ資源を消費してしまう。
【００１５】
本発明は、上記課題に鑑みてなされたものであり、その目的とするところは、メモリの要求や開放を伴うシステム上で画像情報を処理する際に、画像情報の処理および取得を効率的に行うことが可能な画像処理装置および画像処理方法を提供することにある。
【００１６】
【課題を解決するための手段】
上記目的を達成するために、本発明では、各々所定の処理を実行する複数の処理手段（処理モジュール）がパイプライン形態に接続されてなるパイプライン処理において、複数の処理モジュールのうちの少なくとも１つに、所定の処理を行うに当たって処理対象の画像情報の一部を読み飛ばす画像情報読み飛ばし（いわゆるスキップ処理）機能を持たせるようにしている。そして、後段の処理手段からの画像情報読み飛ばし要求を受けて、前段の処理手段に画像情報読み飛ばしを指示するようにする。
【００１７】
パイプライン処理において、複数の処理手段（処理モジュール）のうちの少なくとも１つに画像情報読み飛ばし機能を持たせることにより、当該処理手段（処理モジュール）への画像情報の無駄な読み込み処理を抑えることができる。その結果、処理をより高速に行える。また、必要な画像情報位置まで読み飛ばすことで、不要な画像情報の読み込みをなくし、無駄なバッファリングをなくすることができる。その結果、メモリ消費量が抑えられる。
【００１８】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００１９】
図１は、本発明による画像処理装置の構成例を示すブロック図である。図１から明らかなように、本画像処理装置１０は、ホストアプリケーション２０から与えられた画像処理命令を記憶する処理記憶手段１１と、画像情報を記憶する画像記憶手段１２と、当該画像記憶手段１２に記憶された画像を処理記憶手段１１に記憶された画像処理命令にしたがって画像処理を行う画像処理手段１３と、画像処理の実行を制御する処理実行制御手段１４とを具備するシステム構成となっている。
【００２０】
［第１実施形態］
図２は、本発明の第１実施形態に係る画像処理手段１３の構成例を示すブロック図である。
【００２１】
図２から明らかなように、本実施形態に係る画像処理手段１３は、各種処理を行う少なくとも１つ、例えばＮ個の処理機能１３１−１〜１３１−Ｎを有する構成となっている。また、処理機能１３１−１〜１３１−Ｎのうちの少なくとも１つは画像情報読み飛ばし手段１３２を有し、当該画像情報読み飛ばし手段１３２を有する処理機能から生成される処理モジュールは画像情報読み飛ばし機能を有する。この画像情報読み飛ばし機能については後で詳細に説明する。
【００２２】
なお、画像処理手段１３の変形例として、図３に示すように、画像情報読み飛ばし手段１３２を処理機能１３１−１〜１３１−Ｎ以外に保持し、処理モジュール生成時に適宜画像情報読み飛ばし機能を処理モジュールに持たせるような構成の画像処理手段１３ａであっても構わない。
【００２３】
また、処理実行制御手段１４は、図４に示すように、処理記憶手段１１に記憶された画像処理命令に対応する処理機能１３１−１〜１３１−Ｎから処理モジュールの生成および処理モジュール間の接続を行うモジュール生成手段１４１と、各処理モジュールを展開するメモリや各処理モジュールが利用するバッファなどの確保および解放を行うメモリ確保手段１４２とを有する構成となっている。なお、処理モジュールがバッファとしてのメモリの確保および解放を行う手段を有していても構わないが、以降の説明では省略する。
【００２４】
図５は、モジュール生成手段１４１によって生成される処理モジュール２１に対して、その前段処理モジュール２２と後段処理モジュール２３とを接続してなるパイプラインの構成を説明するブロック図である。
【００２５】
処理モジュール２１は、前段処理モジュール２２から取得した画像情報を保持するための入力バッファ２１１と、処理モジュール２１の制御を行う制御部２１２と、処理モジュール２１内で処理後の画像情報を後段処理モジュール２３に出力するための出力バッファ２１３とを有する構成となっている。同様に、処理モジュール２２は、入力バッファ２２１、制御部２２２および出力バッファ２２３を有し、処理モジュール２３は、入力バッファ２３１、制御部２３２および出力バッファ２３３を有する構成となっている。
【００２６】
このパイプラインにおいて、処理モジュール２１が後段処理モジュール２３から画像情報出力要求を受けるとその要求が制御部２１２に伝えられる。すると、制御部２１２は前段処理モジュール２２に対して画像情報出力要求を送る。画像情報出力要求を受け取った前段処理モジュール２２は、処理した画像情報を出力バッファ２２３に書き込むので、処理モジュール２１の制御部２１２は前段処理モジュール２２の出力バッファ２２３に書き込まれた画像情報を入力バッファ２１１にコピーする。そして、制御部２１２は、入力バッファ２１１の画像情報の処理結果を出力バッファ２１３に書き込み、後段処理モジュール２３の制御部２３２によって入力バッファ２３１にコピーされる。
【００２７】
処理モジュール２１が後段処理モジュール２３から画像情報読み飛ばし要求を受けると、その要求が制御部２１２に伝えられる。制御部２１２は、次回の画像情報出力要求時の画像情報処理開始位置を変更し、読み飛ばす画像情報量が入力バッファ２１１に保持されている画像情報を読み飛ばすだけでは足りない場合には、前段処理モジュール２２に画像情報読み飛ばし要求を送る。このとき、画像情報読み飛ばし要求を受け取った前段処理モジュール２２は、画像情報読み飛ばし要求を受け取ったときの処理モジュール２１と同様に動作する。
【００２８】
図６は、画像情報読み飛ばし要求が、副走査方向に対して順方向にｍ行の画像情報読み飛ばしを行うことを指示する要求である場合の動作を説明するための図である。
【００２９】
前段処理モジュール２２の画像情報処理開始位置は、画像情報３０に対してｙ行目の先頭画素である位置３１に設定されているとする。前段処理モジュール２２は、処理モジュール２１から順方向ｍ行の画像情報読み飛ばしを指示する画像情報読み飛ばし要求を受けると、さらにその前段に処理モジュールが接続されている場合には、その処理モジュールに順方向ｍ行の画像情報読み飛ばしを指示する。これは、前段処理モジュール２２の画像情報処理開始位置を、ｙ行目の先頭画素位置３１からｙ＋ｍ行目の先頭画素位置３２に設定し直すことに等しい。
【００３０】
次に、前段処理モジュール２２が処理モジュール２１から画像情報出力要求を受けると、前段処理モジュール２２の制御部２２２はさらに前段の処理モジュールに画像情報出力要求を送り、返された画像情報を入力バッファ２２１にコピーする。入力バッファ２２１にコピーされた画像情報は、画像情報出力要求を受けたときには画像情報処理開始位置が位置３２に設定されているため、ｙ行目の画像情報３３ではなく、ｙ＋ｍ行目の画像情報３４である。前段処理モジュール２２は、入力バッファ２２１に保持された画像情報３４の処理結果を処理モジュール２１に返す。
【００３１】
図７は、画像情報読み飛ばし要求が副走査方向に対して逆方向にｎ行の画像情報読み飛ばしを行うことを指示する要求である場合の動作を説明するための図である。
【００３２】
前段処理モジュール２２の画像情報処理開始位置は、画像情報３０に対してｙ行目の先頭画素位置３１に設定されているとする。前段処理モジュール２２は、処理モジュール２１から逆方向n行の画像情報読み飛ばしを指示する画像情報読み飛ばし要求を受けると、さらにその前段に処理モジュールが接続されている場合には、その処理モジュールに逆方向n行の画像情報読み飛ばしを指示する。これは、前段処理モジュール２２の画像情報処理開始位置を、ｙ行目の先頭画素位置３１からｙ−ｎ行目の先頭画素位置３５に設定し直すことに等しい。
【００３３】
次に、前段処理モジュール２２が処理モジュール２１から画像情報出力要求を受けると、前段処理モジュール２２の制御部２２２はさらに前段の処理モジュールに画像情報出力要求を送り、返された画像情報を入力バッファ２２１にコピーする。入力バッファ２２１にコピーされた画像情報は、画像情報出力要求を受けた時には画像情報処理開始位置が位置３５に設定されているため、ｙ行目の画像情報３３ではなく、ｙ−ｎ行目の画像情報３６である。前段処理モジュール２２は、入力バッファ２２１に保持された画像情報３６を処理した結果を処理モジュール２１に返す。
【００３４】
図８は、画像情報読み飛ばし要求が主走査方向に対して順方向にｏ画素の画像情報読み飛ばしを行うことを指示する要求である場合の動作を説明するための図である。
【００３５】
前段処理モジュール２２の画像情報処理開始位置は、ｗ画素の幅を持つ画像情報４０に対して主走査方向ｘ画素目の位置４１に設定されているとする。前段処理モジュール２２は、処理モジュール２１から順方向ｏ画素の画像情報読み飛ばしを指示する画像情報読み飛ばし要求を受けると、さらにその前段に処理モジュールが接続されている場合には、さらに前段の処理モジュールに順方向ｏ画素の画像情報読み飛ばしを指示する。これは、前段処理モジュール２２の画像情報処理開始位置を、主走査方向ｘ画素目の位置４１から主走査方向ｘ＋ｏ画素目の位置４２に設定し直すことに等しい。
【００３６】
次に、前段処理モジュール２２が処理モジュール２１から画像情報出力要求を受けると、前段処理モジュール２２の制御部２２２はさらに前段の処理モジュールに画像情報出力要求を送り、返された画像情報を入力バッファ２２１にコピーする。入力バッファ２２１にコピーされた画像情報は、画像情報出力要求を受けたときには画像情報処理開始位置が位置４２に設定されているため、ｗ−ｘ−ｏ画素分の画像情報４３である。前段処理モジュール２２は、入力バッファ２２１に保持された画像情報４３の処理結果を処理モジュール２１に返す。
【００３７】
図９は、画像情報読み飛ばし要求が主走査方向に対して逆方向にｐ画素の画像情報読み飛ばしを行うことを指示する要求である場合の動作を説明するための図である。
【００３８】
前段処理モジュール２２の画像情報処理開始位置は、ｗ画素の幅を持つ画像情報４０に対して主走査方向ｘ画素目の位置４４に設定されているとする。前段処理モジュール２２は、処理モジュール２１から逆方向ｐ画素の画像情報読み飛ばしを指示する画像情報読み飛ばし要求を受けると、さらにその前段に処理モジュールが接続されている場合には、さらに前段の処理モジュールに逆方向ｐ画素の画像情報読み飛ばしを指示する。これは、前段処理モジュール２２の画像情報処理開始位置を、主走査方向ｘ画素目の位置４４から主走査方向ｘ−ｐ画素目の位置４５に設定し直すことに等しい。
【００３９】
次に、前段処理モジュール２２が処理モジュール２１から画像情報出力要求を受けると、前段処理モジュール２２の制御部２２２はさらに前段の処理モジュールに画像情報出力要求を送り、返された画像情報を入力バッファ２２１にコピーする。入力バッファ２２１にコピーされた画像情報は、画像情報出力要求を受けたときには画像情報処理開始位置が位置４１に設定されているため、ｗ−ｘ＋ｐ画素分の画像情報４６である。前段処理モジュール２２は、入力バッファ２２１に保持された画像情報４６を処理した結果を処理モジュール２１に返す。
【００４０】
上述したように、第１実施形態では、複数の処理モジュール２２，２１，２３がパイプライン形態に接続されてなるパイプライン処理において、例えば処理モジュール２１に、画像情報読み飛ばし（スキップ処理）機能を持たせたことにより、当該処理モジュール２１への画像情報の無駄な読み込み処理を抑えることができるため、処理をより高速に行うことができ、しかも必要な画像情報位置まで読み飛ばすことで、不要な画像情報の読み込みをなくし、無駄なバッファリングをなくすることができため、メモリ消費量を抑えることができる。これにより、メモリの要求や開放を伴うシステム上で画像情報を処理する際に、画像情報の処理および取得を効率的に行うことが可能となる。
【００４１】
［第２実施形態］
図１０は、本発明の第２実施形態に係る画像処理手段１３ｂの構成例を示すブロック図であり、図中、図２と同等部分には同一符号を付して示している。
【００４２】
図１０から明らかなように、本実施形態に係る画像処理手段１３ｂは、各種処理を行う少なくとも１つ、例えばＮ個の処理機能１３１−１〜１３１−Ｎを有するとともに、処理機能１３１−１〜１３１−Ｎによっては画像情報読み飛ばし手段１３２および画像情報読み飛ばし制御手段１３３を有し、画像情報読み飛ばし手段１３２および画像情報読み飛ばし制御手段１３３を有する処理機能から生成される処理モジュールが画像情報読み飛ばし機能および画像情報読み飛ばし制御機能を有する構成となっている。
【００４３】
なお、画像処理手段１３ｂの変形例として、図１１に示すように、画像情報読み飛ばし手段１３２が処理機能１３１−１〜１３１−Ｎに備えられ、画像情報読み飛ばし制御手段１３３を処理機能１３１−１〜１３１−Ｎと別に備えるような構成の画像処理手段１３ｃであっても構わない。画像情報読み飛ばし手段１３２を備えた処理機能１３１−１〜１３１−Ｎから生成される処理モジュールは、画像情報読み飛ばし機能および画像情報読み飛ばし制御機能を有する。
【００４４】
また、画像処理手段１３ｂの他の変形例として、図１２に示すように、画像情報読み飛ばし手段１３２および画像情報読み飛ばし制御手段１３３を共に処理機能１３１−１〜１３１−Ｎと別に備えるような構成の画像処理手段１３ｄであっても構わない。この場合、画像情報読み飛ばし機能が必要な処理機能から生成される処理モジュールには、モジュール生成手段１４１（図４を参照）がモジュール生成時に画像情報読み飛ばし機能および画像情報読み飛ばし制御機能を持たせる。
【００４５】
図１３は、処理モジュール２１が画像情報読み飛ばし制御機能を備えている場合の動作を説明するための図であり、図中、図５と同等部分には同一符号を付して示している。
【００４６】
処理モジュール２１が後段処理モジュール２３から画像情報読み飛ばし要求を受けると、その制御部２１２の画像情報読み飛ばし制御機能は、前段処理モジュール２２が画像情報読み飛ばし可能であるか否かを判断して、可能である場合には前段処理モジュール２２に画像情報読み飛ばし要求２４を送り、可能でない場合には何もしないかもしくは画像情報読み飛ばしが失敗した旨のエラー通知２５を後段処理モジュール２３に送る。
【００４７】
上述したように、第２実施形態では、処理モジュールに対して第１実施形態での画像情報読み飛びし機能に加えて、画像情報読み飛ばし制御機能をも持たせたことにより、例えば処理モジュールへの入力が入力画像情報を読み飛ばすことで画像情報が欠落してしまうような圧縮情報であるような場合には画像情報を読み飛ばさずに処理を行うような制御ができるため、処理モジュールへの入力が圧縮または非圧縮であるかを気にせずに処理モジュールへの接続を可能にできる。
【００４８】
これまでの説明では、説明の都合上、処理モジュール２１は入力バッファおよび出力バッファ２１３の両方を有しているものとしたが、図１４に示すように、入力バッファ２１１のみを有する構成の処理モジュール２１ａであっても構わない。処理モジュール２１ａは、後段処理モジュール２３から画像情報出力要求を受け取ると、制御部２１２が処理した結果を後段の処理モジュール２３の入力バッファ２３１に直接書き込む。このような構成では、出力バッファ２１３から後段処理モジュール２３の入力バッファ２３１への画像情報のコピーが不要であるため、処理速度の向上が期待できる。また、出力バッファ２１３が不要であるため、その分だけメモリの節約にもなる。
【００４９】
＜第１具体例＞
本具体例は、図１５に示すように、画像入力処理モジュール５１、クリップ処理モジュール５２および画像出力処理モジュール５３が接続されてなるパイプラインを構築した場合において、図１の画像記憶手段１２に保持されている図１６に示す画像６０を処理したときのクリップ処理モジュール５２の動作についての例である。
【００５０】
最初に、クリップ処理モジュール５２の一般的な動作について説明し、それをふまえて画像６０を処理するときの動作について説明する。先ず、図１の処理記憶手段１１に記憶された画像処理命令に基づき、図４のメモリ確保手段１４２は処理モジュール生成に必要なメモリを確保する。ここでの画像処理命令は、画像記憶手段１２から画像入力機能により画像情報６０を読み込み、この読み込んだ画像情報からクリップ処理機能により領域６１をクリップし、クリップ後の画像情報を画像出力機能により記憶装置５４に出力することである。
【００５１】
図４のモジュール生成手段１４１は、メモリ確保手段１４２が確保したメモリ上に、図１の画像処理手段１３が備える画像入力機能から画像入力処理モジュール５１を、クリップ処理機能からクリップ処理モジュール５２を、画像出力処理機能から画像出力処理モジュール５３をそれぞれ生成し、各モジュールを接続してパイプラインを構築する。このとき、クリップ処理モジュール５２は、必要な入力バッファのバイト数やクリップ領域に関する情報などが与えられ、それらの情報から出力バッファを計算して入力バッファおよび出力バッファを生成し、クリップ処理に必要な情報を保持する。
【００５２】
図１７は、クリップ処理モジュール５２の一般的な処理の流れを示すフローチャートである。このフローチャートに沿って、クリップ処理モジュール５２の一般的な処理について説明する。
【００５３】
クリップ処理モジュール５２は、後段処理モジュールである画像出力処理モジュール５３から画像情報出力要求があると、前段処理モジュールに画像情報出力要求を送ったときに得られるはずの画像情報が、副走査方向に読み飛ばすラインか否かを判定し（ステップＳ１１）、読み飛ばすラインである場合には、副走査方向の指定した行数の順方向への画像情報読み飛ばし要求を前段処理モジュールに送る（ステップＳ１２）。
【００５４】
ステップＳ１２の処理後、またはステップＳ１１で読み飛ばすラインでないと判定した場合には、前段処理モジュールに画像情報出力要求を送ったときに得られるはずの画像情報の先頭画素が主走査方向に読み飛ばす画素であるか否かを判定し（ステップＳ１３）、読み飛ばす画素である場合には、主走査方向の指定した画素数の順方向への画像情報読み飛ばし要求を前段処理モジュールに送る（ステップＳ１４）。
【００５５】
ステップＳ１４の処理後、またはステップＳ１３で読み飛ばす画素でないと判定した場合には、前段処理モジュールに画像情報出力要求を送り、画像情報を取得する（ステップＳ１５）。ここで、入力バッファのバイト数がクリップ領域の幅分の画素を保持するバイト数である場合には、取得した画像情報をクリップする幅分の画素のバイト数を先頭画素から順に入力バッファにコピーするだけで、クリップ処理モジュールでは画像情報に対する処理は他には不要である。
【００５６】
次いで、入力バッファの画像情報を出力バッファにコピーし、出力バッファにコピーされた画像情報を後段処理モジュールに送る（ステップＳ１６）。なお、先述したように、入力バッファの画像情報をそのまま後段処理モジュールに送っても良い。次いで、ステップＳ１５の処理で前段処理モジュールから取得した画像情報が画像の最終ラインであるか否かを判断し（ステップＳ１７）、最終ラインである場合には一連の処理を終了する。最終ラインでない場合には、後段処理モジュールから何らかの要求を待ち（ステップＳ１８）、次の画像出力要求があると、ステップＳ１１に戻って次のラインについて同様の処理を実行する。
【００５７】
図１８は、クリップ処理モジュール５２の画像６０を処理したときの流れを示すフローチャートである。
【００５８】
画像情報処理開始位置は、最初先頭ラインの先頭画素に設定されている。先頭ラインからｈ１ライン目まではクリップ領域が存在しないので、ｈ１ライン目までの画像情報は必要ない。そこで、クリップ処理モジュール５２は、前段処理モジュールである画像入力処理モジュール５１に副走査方向ｈ１行順方向の画像情報読み飛ばし要求を送り、画像情報処理開始位置をｈ１＋１ライン目の先頭画素に設定する（ステップＳ２１）。
【００５９】
画像情報処理開始位置はクリップ領域が存在するライン上だが、画像情報を利用しない先頭画素に設定されている。そこで、先頭画素からｗ１画素目までの画像情報は必要ないので、前段処理モジュールに主走査方向ｗ１画素順方向の画像情報読み飛ばし要求を送り、画像情報処理開始位置をｗ１＋１画素目に設定する（ステップＳ２２）。
【００６０】
次いで、前段処理モジュールに画像情報出力要求を送り、画像情報を取得する（ステップＳ２３）。ここで、処理モジュールが取得する画像情報は、画素数ｗ２＋ｗ３分のバイト数である。入力バッファのバイト数が画素数ｗ２分のバイト数である場合には、取得した画像情報を先頭画素から順に画素数ｗ２のバイト数分だけ入力バッファにコピーする。
【００６１】
次いで、入力バッファの画像情報を出力バッファにコピーし、出力バッファにコピーされた画像情報を後段処理モジュールに送る（ステップＳ２４）。なお、先述したように、入力バッファの画像情報をそのまま後段処理モジュールに送っても良い。
【００６２】
次いで、現在のラインがクリップ領域の最終ラインであるｈ１＋ｈ２ライン目であるかどうかを判定し（ステップＳ２５）、ｈ１＋ｈ２ライン目である場合には、それ以降のラインは必要ないので一連の処理を終了する。ｈ１＋ｈ２ライン目でない場合には、後段処理モジュールからの画像情報出力要求を待ち（ステップＳ２６）、画像情報出力要求を受けると、次のラインを処理するためにステップＳ２２に戻って上述した一連の処理を繰り返す。
【００６３】
このように、クリップ処理モジュール５２を含む複数の処理モジュールを接続してなるパイプラインの処理において、クリップ処理モジュール５２に画像情報読み飛ばし機能を持たせたことにより、クリップ処理モジュール５２への画像情報の無駄な読み込み処理を抑えることができるため、より高速に処理を行うことができるとともに、必要な画像情報位置まで読み飛ばすことで、不要な画像情報の読み込みをなくし、無駄なバッファリングをなくすることができるため、メモリ消費量を抑えることができる。
【００６４】
＜第２具体例＞
本具体例は、図１８に示すように、画像入力処理モジュール７１、上下反転処理モジュール６２および画像出力処理モジュール６３が接続されてなるパイプラインを構築した場合において、図１の画像記憶手段１２に保持されている画像を処理したときの上下反転処理モジュール７２の動作についての例である。
【００６５】
先ず、図１の処理記憶手段１１に記憶された画像処理命令に基づき、図４のメモリ確保手段１４２は処理モジュール生成に必要なメモリを確保する。ここでの画像処理命令は、画像記憶手段１２から画像入力機能により画像を読み込み、読み込んだ画像を上下反転処理機能により画像を反転させ、上下反転後の画像情報を画像出力機能により記憶装置７４に出力することである。
【００６６】
図４のモジュール生成手段１４１は、メモリ確保手段１４２が確保したメモリ上に、画像処理手段１１が備える画像入力機能から画像入力処理モジュール７１を、上下反転処理機能から上下反転処理モジュール７２を、画像出力処理機能から画像出力処理モジュール７３をそれぞれ生成し、各モジュールを接続してパイプラインを構築する。このとき、上下反転処理モジュール７２は、必要な入力バッファおよび出力バッファのバイト数などの情報が与えられ、それらの情報から入力バッファおよび出力バッファを生成し、上下反転処理に必要な情報を保持する。
【００６７】
図２０は、高さｈ、幅ｗの画像を上限反転処理する際の上下反転処理モジュール７２の処理の流れを示すフローチャートである。また、図２１は、上下反転処理を説明するための図であり、図中、画像８０は上下反転処理前の画像を、画像８１は上下反転処理後の画像をそれぞれ示している。
【００６８】
最初、画像情報処理開始位置は位置８２に設定されている。上下反転処理モジュール７２は、後段処理モジュールである画像出力処理モジュール７３から画像出力要求を受けると、前段処理モジュールである画像入力処理モジュール７１に副走査方向ｈ−１行の順方向への画像情報読み飛ばし要求を送り、画像情報処理開始位置を最終行の先頭画素（位置８３）に設定する（ステップＳ３１）。
【００６９】
次いで、前段処理モジュールに画像情報出力要求を送り、１ライン分の画像情報を取得する（ステップＳ３２）。そして、画像情報処理開始位置は取得したラインの次ラインの先頭画素に移動する。例えば画像情報８４を取得した場合について説明すると、画像情報８４の取得前に画像情報処理開始位置は位置８３であり、取得後の画像情報処理開始位置は位置８６に移動する。
【００７０】
続いて、取得した画像情報を後段処理モジュールに送る（ステップＳ３３）。次いで、取得した画像情報が画像８０の１ライン目の画像情報８５であるか否かを判定し（ステップＳ３４）、画像情報８５である場合には一連の処理を終了する。画像８５でない場合には、前段処理モジュールからの次の画像情報出力要求を待ち（ステップＳ３５）、画像情報出力要求を受けると、前段処理モジュールに副走査方向２行の逆方向への画像情報読み飛ばし要求を送り、画像情報処理開始位置を２ライン前の先頭画素に設定し（ステップＳ３６）、しかる後ステップＳ３２に戻って上述した一連の処理を繰り返す。
【００７１】
このように、上下反転処理モジュール７２を含む複数の処理モジュールを接続してなるパイプラインの処理において、上下反転処理モジュール７２に画像情報読み飛ばし機能を持たせたことにより、従来の処理方法ではページバッファが必要であった上下反転処理に対して、副走査方向の逆方向へ読み飛ばすことで１ラインの入力バッファしか必要とせず、無駄なメモリを消費せずに効率的な処理を行うことができる。
【００７２】
【発明の効果】
以上説明したように、本発明によれば、処理モジュールに画像の一部の不要な情報を読み飛ばす画像情報読み飛ばし機能を持たせたことにより、処理モジュールへの無駄な読み込み処理を抑えることができるためより高速に処理を行うことができ、しかも必要な画像情報位置まで読み飛ばすことで、無駄なバッファリングをなくすことができるため、メモリ消費量を抑えることができる。
【００７３】
さらに、画像情報読み飛ばし機能に加えて、その処理モジュールに画像情報を読み飛ばすか否かを判断する制御機能を持たせたことにより、例えば処理モジュールへの入力が入力画像情報を読み飛ばすことで画像情報が欠落してしまうような圧縮情報であるような場合には画像情報を読み飛ばさずに処理を行うような制御ができるため、処理モジュールへの入力が圧縮または非圧縮であるかを気にせずに処理モジュールへの接続を可能にできる。
【図面の簡単な説明】
【図１】  本発明による画像処理装置の構成例を示すブロック図である。
【図２】  本発明の第１実施形態に係る画像処理手段の構成例を示すブロック図である。
【図３】  第１実施形態に係る画像処理手段の変形例を示すブロック図である。
【図４】  処理実行制御手段の構成例を示すブロック図である。
【図５】  画像処理パイプラインの構成例を示すブロック図である。
【図６】  副走査方向の順方向への画像情報の読み飛ばしを行う場合の動作説明図である。
【図７】  副走査方向の逆方向への画像情報の読み飛ばしを行う場合の動作説明図である。
【図８】  主走査方向の順方向への画像情報の読み飛ばしを行う場合の動作説明図である。
【図９】  主走査方向の逆方向への画像情報の読み飛ばしの例を行う場合の動作説明図である。
【図１０】  本発明の第２実施形態に係る画像処理手段の構成例を示すブロック図である。
【図１１】  第２実施形態に係る画像処理手段の変形例を示すブロック図である。
【図１２】  第２実施形態に係る画像処理手段の他の変形例を示すブロック図である。
【図１３】  画像情報読み飛ばし制御機能を実現する場合の動作説明図である。
【図１４】  処理モジュールの他の構成例を示すブロック図である。
【図１５】  第１具体例に係るクリップ処理のパイプラインの構成例を示すブロック図である。
【図１６】  画像とそのクリップ領域を示す図である。
【図１７】  クリップ処理モジュールの処理例の流れを示すフローチャートである。
【図１８】  クリップ処理モジュールが画像を処理する際の流れを示すフローチャートである。
【図１９】  第２具体例に係る上下反転処理のパイプラインの構成例を示すブロック図である。
【図２０】  上下反転処理モジュールの処理例の流れを示すフローチャートである。
【図２１】  上下反転処理前および処理後の画像を示す図である。
【符号の説明】
１０…画像処理装置、１１…画像記憶手段、１２…画像記憶手段、１３，１３ａ〜１３ｄ…画像処理手段、１４…処理実行制御手段、２０…ホストアプリケーション、２１…処理モジュール、２２…前段処理モジュール、２３…後段処理モジュール、５１，７１…画像入力モジュール、５２…クリップ処理モジュール、５３，７３…画像出力処理モジュール、７２…上下反転処理モジュール、１３１−１〜１３１−Ｎ…処理機能、１３２…画像情報読み飛ばし手段、１３３…画像情報読み飛ばし制御手段
【図１】
0004045823.tif 000002
【図２】
0004045823.tif 000003
【図３】
0004045823.tif 000004
【図４】
0004045823.tif 000005
【図５】
0004045823.tif 000006
【図６】
0004045823.tif 000007
【図７】
0004045823.tif 000008
【図８】
0004045823.tif 000009
【図９】
0004045823.tif 000010
【図１０】
0004045823.tif 000011
【図１１】
0004045823.tif 000012
【図１２】
0004045823.tif 000013
【図１３】
0004045823.tif 000014
【図１４】
0004045823.tif 000015
【図１５】
0004045823.tif 000016
【図１６】
0004045823.tif 000017
【図１７】
0004045823.tif 000018
【図１８】
0004045823.tif 000019
【図１９】
0004045823.tif 000020
【図２０】
0004045823.tif 000021
【図２１】
0004045823.tif 000022