(57)【特許請求の範囲】
【請求項１】
原稿に表れる画像を読み取る読取手段と、
前記読取手段が読み取った画像を表す画像データを一時的に記憶する一時記憶手段と、
前記画像データの全部又は一部を前記一時記憶手段において書き込むべきメモリ範囲を示すディスクリプタを少なくとも１つ以上設定する第１設定手段と、
前記読取手段が読み取った画像を表す画像データの全部又は一部を、前記第１設定手段が設定したディスクリプタによって示されるメモリ範囲に書き込む書込手段と、
前記第１設定手段が設定したディスクリプタに基づいて、前記画像データの全部又は一部の前記一時記憶手段への書き込みに対する割り込みを発生させるための発生基準を設定する第２設定手段と、
前記第２設定手段が設定した前記発生基準を満たした場合に、前記割り込みを発生させる割込発生手段と、
前記割込発生手段が前記割り込みを発生させた場合に、前記一時記憶手段に書き込まれた画像データを記憶手段に記憶させる記憶制御手段とを備え、
前記第２設定手段は、前記第１設定手段が設定したディスクリプタによって示されるメモリ範囲と、前記読取手段が画像を読み取る際の主走査方向における幅と、当該画像の主走査長とを用いて、前記割り込みを発生させるための前記一時記憶手段におけるアドレスを算出する算出手段と、
前記算出手段が算出した前記アドレスを前記割込発生手段に対して設定する第３設定手段と、を有し、
前記割込発生手段は、前記書込手段の前記画像データの前記一時記憶手段への書き込みが、前記第３設定手段が設定した前記アドレスに到達した場合に、前記割込みを発生させる、
ことを特徴とする画像処理装置。
【請求項２】
前記第１設定手段は、前記画像データの一部を前記一時記憶手段において書き込むべき第１メモリ範囲と、前記画像データのうち当該第１メモリ範囲に書き込まれていない画像データの全部又は一部を前記一時記憶手段において書き込むべき第２メモリ範囲を示すディスクリプタが格納されている格納場所を示すネクストディスクリプタとを示すディスクリプタを少なくとも１つ以上設定し、
前記書込手段は、前記画像データの一部を、前記第１設定手段が設定したディスクリプタによって示される第１メモリ範囲に書き込むと共に、当該ディスクリプタによって示されるネクストディスクリプタを参照して、当該ネクストディスクプリタによって示される格納場所に格納されているディスクリプタによって示される第２メモリ範囲に、前記画像データのうち前記第１メモリ範囲に書き込まれていない画像データの全部又は一部を書き込む
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記一時記憶手段において、前記画像データを記憶する画像メモリ領域が複数順序付けられて設定されており、
前記第１設定手段は、前記画像メモリ領域のうち各画像メモリ領域に相当する前記メモリ範囲を順に示すよう前記ディスクリプタを設定し、最後の画像メモリ領域に相当する前記メモリ範囲を示すディスクリプタを設定した後、最初の画像メモリ領域に相当する前記メモリ範囲を示すディスクリプタを設定する
ことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記第１設定手段は、前記一時記憶手段において前記書込手段が前記画像データの書き込みを開始する開始アドレスと、当該開始アドレスからのデータサイズとを前記メモリ範囲として示すディスクリプタを設定する
ことを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
前記算出手段は、前記ディスクリプタによって示されるメモリ範囲の最後に相当するアドレスを算出する
ことを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記第１設定手段は、前記書込手段が前記画像データを前記一時記憶手段に書き込むための前記メモリ範囲を示す第１ディスクリプタと、当該第１ディスクリプタによって示される前記メモリ範囲を示し且つ前記第２設定手段が前記アドレスを設定するための第２ディスクリプタとを各々少なくとも１つ以上設定し、
前記書込手段は、前記読取手段が読み取った画像を表す画像データの全部又は一部を、前記第１設定手段が設定した第１ディスクリプタによって示されるメモリ範囲に書き込み、
前記第２設定手段は、前記第１設定手段が設定した第２ディスクリプタに基づいて、前記アドレスを設定する
ことを特徴とする請求項４または５に記載の画像処理装置。
【請求項７】
前記記憶手段又は前記一時記憶手段のうち少なくとも一方に記憶された画像データに対して画像処理を行い、画像処理後の画像データによって表される画像を出力する画像出力手段を更に備える
ことを特徴とする請求項１乃至６のいずれか一項に記載の画像処理装置。
【請求項８】
読取手段と、前記読取手段が読み取った画像を表す画像データを一時的に記憶する一時記憶手段と、第１設定手段と、書込手段と、第２設定手段と、割込発生手段と、記憶制御手段と画像処理装置で実行される画像処理方法であって、
前記読取手段が、原稿に表れる画像を読み取る読取ステップと、
前記第１設定手段が、前記画像データの全部又は一部を前記一時記憶手段において書き込むべきメモリ範囲を示すディスクリプタを少なくとも１つ以上設定する第１設定ステップと、
前記書込手段が、前記読取ステップで読み取った画像を表す画像データの全部又は一部を、前記第１設定手段が設定したディスクリプタによって示されるメモリ範囲に書き込む書込ステップと、
前記第２設定手段が、前記第１設定ステップで設定したディスクリプタに基づいて、前記画像データの全部又は一部の前記一時記憶手段への書き込みに対する割り込みを発生させるための発生基準を設定する第２設定ステップと、
前記割込発生手段が、前記第２設定ステップで設定した前記発生基準を満たした場合に、前記割り込みを発生させる割込発生ステップと、
前記記憶制御手段が、前記割込発生ステップで前記割り込みを発生させた場合に、前記一時記憶手段に書き込まれた画像データを記憶手段に記憶させる記憶制御ステップとを含み、
前記第２設定ステップは、前記第１設定ステップで設定されたディスクリプタによって示されるメモリ範囲と、前記読取手段が画像を読み取る際の主走査方向における幅と、当該画像の主走査長とを用いて、前記割り込みを発生させるための前記一時記憶手段におけるアドレスを算出する算出ステップと、
前記算出ステップで算出された前記アドレスを前記割込発生手段に対して設定する第３設定ステップと、を有し、
前記割込発生ステップは、前記書込ステップの前記画像データの前記一時記憶手段への書き込みが、前記第３設定ステップが設定した前記アドレスに到達した場合に、前記割込みを発生させる、
ことを特徴とする画像処理方法。
【請求項９】
請求項８に記載の画像処理方法をコンピュータに実行させることを特徴とする画像処理プログラム。
【請求項１０】
請求項９に記載された画像処理プログラムを記憶したコンピュータの読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを不揮発性メモリに書き込んだ後これを揮発性メモリへ退避させる画像処理装置、画像処理方法、画像処理プログラム及び記憶媒体に関するものである。
【背景技術】
【０００２】
従来より、長尺印刷が可能なプリンタがある。このようなプリンタにおいては、例えば、印刷対象の画像データをＲＡＭ（Random Access Memory）などの揮発性メモリに書き込んだ後、ページ毎にＨＤＤ（Hard Disk Drive）などの不揮発性メモリに退避させることにより、メモリフルを回避させている。しかし、１ページの画像データのデータサイズが膨大な場合、ページの終わりに画像データをＨＤＤに退避させていたのでは、それ以前にページ確保用の揮発性メモリがメモリフルになってしまう可能性がある。そのため、揮発性メモリをある単位で確保し、揮発性メモリの使用状況によって、不揮発性メモリに画像データを退避することによって、メモリフルをより効果的に回避する技術が提案されている（例えば、特許文献１参照）。また、このような技術に加えて、不揮発メモリに画像データを退避すると同時に、揮発性メモリをトグル状に使用し、メモリフルを発生させずに、印刷を続ける技術も提案されている。
【０００３】
一方、長尺の画像をスキャナエンジンで読み取る処理においても同様の処理が行われる。この処理では、ＡＳＩＣ（Application Specific Integrated Circuit）に搭載された機能を使い、ビデオ入力器と呼ばれる入力器を用いて、スキャナエンジンで読み取った画像のデータを揮発性メモリに蓄積する。このとき画像データがある一定量蓄積されると、chain割込みと呼ばれる割り込みが発生し、ソフトウェアではそれをトリガとして、画像データを揮発性メモリに退避させている。
【０００４】
しかし、このような処理が可能であるのは、画像がモノクロの場合である。画像がカラーの場合は、Ｒ，Ｇ，Ｂの３色分もしくはＹ，Ｍ，Ｃ，Ｋの４色分のビデオ入力器が必要になる。ビデオ入力器は、モノクロであれば、必要十分な性能を持つが、複数のカラーが同時に入力される状況においては、読み取り速度の面で問題があり、十分な読み取り性能を期待することは困難である。そこで、ＰＣＩダイレクトアクセス、ＰＣＩダイレクトアクセスに対する割込み、エンジンディスクリプタ方式と呼ばれるハードウェアの機能を用いて、十分な読み取り性能を実現させる技術が提案されている。
【０００５】
尚、ＰＣＩダイレクトアクセス及びＰＣＩダイレクトアクセスに対する割込みにより、読み取った画像データをスキャナエンジンから揮発性メモリへ書込む際には、揮発性メモリへのアクセスを制御するコントローラからスキャナエンジンに対して、書込みの開始アドレスとデータサイズとを指定している。ただし、長尺な画像を読み取った場合の画像データについては、コントローラからスキャナエンジンに開始アドレス及びデータサイズを指定する際には、データサイズがまだ定まっていない。ここで、コントローラがデータサイズを仮に指定しても、それを超えるような画像データである場合には、コントローラからスキャナエンジンに対して開始アドレス及びデータサイズを再度指定する必要がある。一方で、スキャナエンジンは長尺の画像を読み取り続ける必要がある。このような状況において、コントローラからスキャナエンジンに対して開始アドレス及びデータサイズを再度指定することは、スキャナエンジンが行う読み取り動作を中断させることになりかねない。また、画像データのデータサイズが、揮発性メモリの物理的なメモリ容量を超える場合も、スキャナエンジンの読み取り動作を一旦停止する必要がある。そこで、エンジンディスクリプタ方式を用いて、揮発性メモリのメモリ領域をトグル状に使うことにより、揮発性メモリの物理的なメモリ容量が限られている場合であっても、長尺の画像についての画像データの書き込みを継続することが可能になる。
【０００６】
【特許文献１】特開２００６−４４１５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ただし、スキャナエンジンから揮発性メモリへの書込みは、スキャナエンジンがＤＭＡ（Direct Memory Access）転送のマスタとなる。このため、コントローラはその書込みの経過を知ることが困難である。従って、コントローラは、スキャナエンジンから書き込みの終了の通知を受け取るまで、揮発性メモリに書き込まれた画像データをＨＤＤに退避させることができない恐れがある。即ち、長尺の画像を読み取った場合の画像データについては、コントローラは、ＨＤＤに退避させるタイミングを正しく管理できない恐れがある。もし、コントローラが適当なタイミングで画像データをＨＤＤに退避させた場合には、古い画像データをＨＤＤに退避させてしまったり、上書きしてしまった画像データを退避させてしまったりするなどの問題が発生する恐れがある。
【０００８】
本発明は、上記に鑑みてなされたものであって、不揮発性メモリにおける画像データの書込みや揮発性メモリへの退避のタイミングを正しく管理可能な画像処理装置、画像処理方法、画像処理プログラム及び記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、画像処理装置であって、原稿に表れる画像を読み取る読取手段と、前記読取手段が読み取った画像を表す画像データを一時的に記憶する一時記憶手段と、前記画像データの全部又は一部を前記一時記憶手段において書き込むべきメモリ範囲を示すディスクリプタを少なくとも１つ以上設定する第１設定手段と、前記読取手段が読み取った画像を表す画像データの全部又は一部を、前記第１設定手段が設定したディスクリプタによって示されるメモリ範囲に書き込む書込手段と、前記第１設定手段が設定したディスクリプタに基づいて、前記画像データの全部又は一部の前記一時記憶手段への書き込みに対する割り込みを発生させるための発生基準を設定する第２設定手段と、前記第２設定手段が設定した前記発生基準を満たした場合に、前記割り込みを発生させる割込発生手段と、前記割込発生手段が前記割り込みを発生させた場合に、前記一時記憶手段に書き込まれた画像データを記憶手段に記憶させる記憶制御手段とを備え、前記第２設定手段は、前記第１設定手段が設定したディスクリプタによって示されるメモリ範囲と、前記読取手段が画像を読み取る際の主走査方向における幅と、当該画像の主走査長とを用いて、前記割り込みを発生させるための前記一時記憶手段におけるアドレスを算出する算出手段と、前記算出手段が算出した前記アドレスを前記割込発生手段に対して設定する第３設定手段と、を有し、前記割込発生手段は、前記書込手段の前記画像データの前記一時記憶手段への書き込みが、前記第３設定手段が設定した前記アドレスに到達した場合に、前記割込みを発生させることを特徴とする。
【００１０】
また、本発明は、読取手段と、前記読取手段が読み取った画像を表す画像データを一時的に記憶する一時記憶手段と、第１設定手段と、書込手段と、第２設定手段と、割込発生手段と、記憶制御手段と画像処理装置で実行される画像処理方法であって、前記読取手段が、原稿に表れる画像を読み取る読取ステップと、前記第１設定手段が、前記画像データの全部又は一部を前記一時記憶手段において書き込むべきメモリ範囲を示すディスクリプタを少なくとも１つ以上設定する第１設定ステップと、前記書込手段が、前記読取ステップで読み取った画像を表す画像データの全部又は一部を、前記第１設定手段が設定したディスクリプタによって示されるメモリ範囲に書き込む書込ステップと、前記第２設定手段が、前記第１設定ステップで設定したディスクリプタに基づいて、前記画像データの全部又は一部の前記一時記憶手段への書き込みに対する割り込みを発生させるための発生基準を設定する第２設定ステップと、前記割込発生手段が、前記第２設定ステップで設定した前記発生基準を満たした場合に、前記割り込みを発生させる割込発生ステップと、前記記憶制御手段が、前記割込発生ステップで前記割り込みを発生させた場合に、前記一時記憶手段に書き込まれた画像データを記憶手段に記憶させる記憶制御ステップとを含み、前記第２設定ステップは、前記第１設定ステップで設定されたディスクリプタによって示されるメモリ範囲と、前記読取手段が画像を読み取る際の主走査方向における幅と、当該画像の主走査長とを用いて、前記割り込みを発生させるための前記一時記憶手段におけるアドレスを算出する算出ステップと、前記算出ステップで算出された前記アドレスを前記割込発生手段に対して設定する第３設定ステップと、を有し、前記割込発生ステップは、前記書込ステップの前記画像データの前記一時記憶手段への書き込みが、前記第３設定ステップが設定した前記アドレスに到達した場合に、前記割込みを発生させることを特徴とする。
【００１１】
また、本発明は、画像処理プログラムであって、上記に記載の画像処理方法をコンピュータに実行させることを特徴とする。
【００１２】
また、本発明は、コンピュータの読み取り可能な記憶媒体であって、上記に記載された画像処理プログラムを記憶したことを特徴とする。
【発明の効果】
【００１３】
本発明によれば、不揮発性メモリにおける画像データの書込みや揮発性メモリへの退避のタイミングを正しく管理可能になる。
【発明を実施するための最良の形態】
【００１４】
以下に添付図面を参照して、この発明にかかる画像処理装置、画像処理方法、画像処理プログラム及び記憶媒体の最良な実施の形態を詳細に説明する。
【００１５】
[実施の形態]
（１）構成
図１は、本実施の形態に係る画像処理装置のハードウェア構成を例示する図である。画像処理装置１は、コントローラ２とエンジン部（Engine）３とをＰＣＩ（Peripheral Component Interconnect）バス４で接続した構成となる。コントローラ２は、画像処理装置１全体を制御する。エンジン部３は、スキャナと、たとえば白黒プロッタ、１ドラムカラープロッタ、４ドラムカラープロッタなどのプリンタエンジンと、ファックスユニットとを有する。なお、エンジン部３には更に、誤差拡散やガンマ変換等の画像処理部分が含まれる。
【００１６】
コントローラ２は、ＣＰＵ１０と、３つのＡＳＩＣ１１，１２，２２と、ＨＤＤ１４と、ローカルメモリ（ＭＥＭ）１５と、ＳＤ（Secure Digital Memory）１６と、ＲＯＭ（Read Only Memory）１７と、ＮＶＲＡＭ（Non Volatile Random Access Memory）１８と、操作部１９と、ＲＴＣ（Real Time Clock）２３と、スロット（slot）２０ｂ〜２０ｅとを有する。ＡＳＩＣ１１は、ＣＰＵ１０と、ＨＤＤ１４と、ＭＥＭ１５と接続される。ＡＳＩＣ１２には、操作部１９と、ＳＤ１６と、ＲＯＭ１７と、ＮＶＲＡＭ１８と、ＲＴＣ２３が接続される。更に、ＡＳＩＣ１２は、ＵＳＢ（Universal Serial Bus）３０とネットワーク３１とに接続される。ＡＳＩＣ２２は、エンジン部３とＭＥＭ１５とに接続される。ＡＳＩＣ１１，１２，２２は、バス２１を介して接続される。スロット２０ａ〜２０ｅは、各種サブシステムを接続するためのものである。
【００１７】
ＣＰＵ１０は、ＲＯＭ１７やＨＤＤ１４に記憶された各種ソフトウェア（プログラム）を実行することにより、画像処理装置１全体を制御する主制御装置である。操作部１９は、ユーザからの操作入力を受け付ける。例えば、操作部１９は、画像の読み取りを指示する操作入力を受け付ける。ＲＯＭ１７は、各種ソフトウェアや各種データを記憶する読み出し専用のメモリである。ＮＶＲＡＭ１８は、各種ソフトウェアや各種データを一時的に記憶したり、プリント処理時に描画された画像データを記憶したりする、書き込み及び読み出し可能なメモリである。ＳＤ１６は、各種ソフトウェアや各種データを記憶する。ＲＴＣ２３は、システムクロック用のチップである。
【００１８】
ＡＳＩＣ１１，１２，２２は、ビデオ出力器（ＶＯＵＴ）や圧縮伸張器（ＣＥＰ）やＦＩＦＯバッファなどの画像処理用のハードウェア要素を有する画像処理用途向けのＩＣ（Integrated Circuit）である。ＡＳＩＣ１１は、ＨＤＤ１４へのアクセスを制御する。ＨＤＤ１４は、画像データ、フォントデータ、フォームなどの各種データや各種ソフトウェアを記憶する。ＡＳＩＣ１２は、ｓｕｂＣＰＵ２４を有する。ｓｕｂＣＰＵ２４は、画像処理装置１が省エネルギーモードに設定された場合に画像処理装置１全体を制御する副制御装置である。ＡＳＩＣ２２は、ビデオ入力器（ＶＩＮ）やＰＣＩダイレクトアクセスに対する割り込みの機能を提供するものであり、エンジン部３がＭＥＭ１５へのアクセスを制御する。尚、ＰＣＩダイレクトアクセスの機能が実現される際には、ＡＳＩＣ２２を介さず、エンジン部３からＭＥＭ１５にアクセスされる。ＭＥＭ１５は、バッファとして機能し、コピー処理時における画像データや、符号処理時における符号データなどを記憶する。尚、ＭＥＭ１５には、画像データを記憶するための画像メモリ領域が複数順序付けられて設定されている。後述するように、当該画像メモリ領域が順にトグル状に使用されることにより、ＭＥＭ１５がリングバッファとして使用される。
【００１９】
次に、画像処理装置１のソフトウェア構成について図２を用いて説明する。画像処理装置１のソフトウェア構成においては、アプリケーション層５０と、サービス層６０と、オペレーティングシステム（以下、ＯＳという）層７０とを有する。これらの実体は、コントローラ２の有するＳＤ１６やＲＯＭ１７に記憶されている各種ソフトウェアである。これらがＳＤ１６やＲＯＭ１７からＮＶＲＡＭ１８に読み出されてＣＰＵ１０により実行されることにより、以下に示す各種機能が実現される。
【００２０】
アプリケーション層５０は、コピー用のソフトウェアであるコピーアプリ５１と、ページ記述言語（ＰＤＬ，ＰＣＬ）およびポストスクリプト（ＰＳ）を有するプリンタ用のソフトウェアであるプリンタアプリ５２と、ファクシミリ用ソフトウェアであるファックスアプリ５３と、スキャナ用ソフトウェアであるスキャナアプリ５４と、ネットワークファイル用ソフトウェアであるネットファイルアプリ５５とを有する。
【００２１】
サービス層６０は、アプリケーション層５０からの処理要求を解釈して、解釈結果に応じて、エンジン部３や、操作部１９や、ＨＤＤ１４,ＭＥＭ１５，ＳＤ１６，ＲＯＭ１７，ＮＶＲＡＭ１８などのメモリなどのハードウェア資源へのアクセスの要求を発生するコントロールサービスである。サービス層６０は、ＩＭＨ(Image Memory Handler)６１と、エンジンコントロールサービス（以下、ＥＣＳという）６２と、メモリコントロールサービス（以下、ＭＣＳという）６３と、オペレーションパネルコントロールサービス（以下、ＯＣＳという）６４と、ファックスコントロールサービス（以下、ＦＣＳという）６５と、ネットワークコントロールサービス（以下、ＮＣＳという）６６と、システムコントロールサービス（以下、ＳＣＳという）６７と、システムリソースマネージャ（以下、ＳＲＭという）６８のサービスモジュールを有する。
【００２２】
ＥＣＳ６２のプロセスは、エンジン部３の制御を行う。ＭＣＳ６３のプロセスは、画像データを記憶する際のメモリの取得および解放、ＨＤＤ１４の利用、画像データの圧縮および伸張などのメモリ制御を行う。ＯＣＳ６４のプロセスは、操作部１９の制御を行う。ＦＣＳ６５のプロセスは、ファクシミリ通信にかかるＡＰＩを提供する。ＮＣＳ６６のプロセスは、ネットワークＩ／Ｏを必要とするソフトウェアに対して共通に利用できるサービスを提供する。ＳＣＳ６７のプロセスは、ソフトウェアの管理、操作部１９の制御及び画面表示、ハードウェア資源の管理、割り込みソフトウェア制御などの処理を行う。また、ＳＣＳ６７は、オンデマンドアップデートサービス（以下、ＯＵＳという）６７ａを有する。ＯＵＳ６７ａは、オンデマンドによる各種ソフトウェアの更新を制御する。ＳＲＭ６８は、ＳＣＳ６７と共にハードウェア資源の管理を行ってサービス層６０から発生された要求を調停する。
【００２３】
ＩＭＨ６１は、エンジン部３や後述の仮想ビデオ入力ドライバ７１ａに対して後述するディスクリプタをＭＥＭ１５において各々設定したり、ＭＥＭ１５に書き込まれた画像データのＨＤＤ１４への記憶を制御したりする。
【００２４】
ＯＳ層７０は、デバイスドライバ７１と、エンジンＩ／Ｆ７２とを有する。エンジンＩ／Ｆ７２は、コントローラ２とエンジン部３とのデータ通信を仲介する。デバイスドライバ７１は、エンジン部３から画像データを受け取ったり、エンジン部３へ画像データを送ったりするなどエンジン部３とデータ通信を行う。また、デバイスドライバ７１は、仮想ビデオ入力ドライバ７１ａを有する。仮想ビデオ入力ドライバ７１ａは、ＰＣＩダイレクトアクセスに対する割り込みのハンドリングや、ＡＳＩＣ１１の有するレジスタ（図示せず）の制御を行う。尚、この割り込みのハンドリングの詳細については後述する。
【００２５】
次に、ＣＰＵ１０がＩＭＨ６１を実行することによりＭＥＭ１５において設定するディスクリプタについて説明する。尚、説明の便宜上、エンジン部３に対してディスクリプタを設定するディスクリプタをエンジンディスクリプタといい、仮想ビデオ入力ドライバ７１ａに対して設定するディスクリプタを仮想ディスクリプタという。ＣＰＵ１０はＩＭＨ６１の機能により、エンジン部３が画像データをＭＥＭ１５において書き込むメモリ範囲を示すエンジンディスクリプタをＭＥＭ１５において設定し、当該メモリ範囲を示す仮想ディスクリプタをＭＥＭ１５において設定する。従ってエンジンディスクリプタと仮想ディスクリプタとは一対のものとなる。尚、ＭＥＭ１５においてエンジンディスクリプタが設定されるメモリ領域と仮想ディスクリプタが設定されるメモリ領域と上述の画像メモリ領域とは各々異なる領域である。また、ＣＰＵ１０は、ＭＥＭ１５の画像メモリ領域をトグル状に使用するため、エンジンディスクリプタ及び仮想ディスクリプタにおけるメモリ範囲を、上述した複数の画像メモリ領域のうち１つに相当するように順に設定する。そして、ＣＰＵ１０は、複数の画像メモリ領域の全てについてメモリ範囲を各ディスクリプタにおいて設定した後、最初の画像メモリ領域に戻って、当該画像メモリ領域に相当するメモリ範囲を各ディスクリプタにおいて設定する。
【００２６】
図３は、エンジンディスクリプタのデータ構成を例示する図である。同図に示される‘rdna[31:0]’(Next Discriptor Pointer)は、次のディスクリプタが格納されているアドレスを示す。‘rdia[31:0]’(Image Start Address)は、画像データの書込みの開始アドレスを示す。なお、３２ビット転送時は４バイト単位のため下位２ビットは‘00'固定で、６４ビット転送時は８バイト単位のため下位３ビットは‘000'固定とする。‘nrdl[19:0]’(Lines)は、当該ディスクリプタによって書き込み可能なライン数を示す。ライン数はデータサイズに相当する。従って、エンジンディスクリプタでは、‘rdia[31:0]’によって示される開始アドレスから‘nrdl[19:0]’に示されるライン数を有するアドレスまでのメモリ範囲が、スキャナにより読み取った画像データのうち当該エンジンディスクリプタ（本ディスクリプタという）によってＭＥＭ１５に書き込むべき画像データの範囲として示されている。そして、‘rdna[31:0]’に示されるアドレスに格納されている次のディスクリプタによって示されるメモリ範囲が、本ディスクリプタによって示されるメモリ範囲に書き込まれていない画像データのうちＭＥＭ１５に書き込むべき画像データの範囲として示されることになる。‘risel[1:0]’(Mode)は、画像データの加工方法を指定するものである。例えば、‘risel[1:0]’の値が‘ 00’のとき「データ加工なし」を示し、‘01’のとき「リザーブ」を示し、‘10’のとき「全黒（PCI受信なし）」を示し、‘11’のとき全白（PCI受信なし）を示す。
【００２７】
図４は、仮想ディスクリプタのデータ構成を例示する図である。同図に示される‘Next Discriptor Pointer[31:0]’（Next Discriptor Pointer）は、次のディスクリプタアドレスを示す。‘Start Address [31:0]’(Image Start Address)は、画像データの書込みの開始アドレスを示す。なお、３２ビット転送時は４バイト単位のため下位２ビットは'00'固定で、６４ビット転送時は８バイト単位のため下位３ビットは'000'固定とする。‘LINE_up[22:15]’及び‘LINE[14:00]’(Lines)は、当該仮想ディスクリプタに対応するエンジンディスクリプタによってエンジン部３が書き込み可能なライン数を示すものであり、前者は上位ビットであり後者は下位ビットである。
【００２８】
ＣＰＵ１０は、このようなエンジンディスクリプタ及び仮想ディスクリプタを１つ以上ＭＥＭ１５の各メモリ領域に設定する。このとき、ＣＰＵ１０は、ＭＥＭ１５がトグル状に使用されるようにエンジンディスクリプタ及び仮想ディスクリプタを設定する。このようなエンジンディスクリプタを用いてエンジン部３がＭＥＭ１５に画像データを書き込む処理の概要について図５を用いて説明する。まず、ＣＰＵ１０は、画像の読み取りを指示する操作入力を操作部１９を介して受け付けると、エンジンディスクリプタをＭＥＭ１５において設定し、画像の読み取り開始をエンジン部３に指示する。エンジン部３は、当該指示に応じて、エンジンディスクリプタをＭＥＭ１５のメモリ領域から読み出し、その設定内容に従って、スキャナにより原稿から読み取った画像を表す画像データをＰＣＩダイレクトアクセスによりＭＥＭ１５に書き込む。そのエンジンディスクリプタの設定内容に従った書き込みが終了すると、エンジン部３は、‘rdna[31:0]’に示される次のディスクリプタアドレスにアクセスして、新たなエンジンディスクリプタを読み出して、上述の処理を繰り返す。但し、‘rdna[31:0]’の値が‘0’である場合は処理を終了するが、そうでない限り、処理を継続する。尚、ＭＥＭ１５における全ての画像メモリ領域がメモリフルになった場合、最初の画像メモリ領域まで戻るようにエンジンディスクリプタのメモリ範囲が設定されるため、エンジン部３は、ＭＥＭ１５をトグル状に使用しながら、画像データを書き込むことになる。
【００２９】
本実施の形態においては、このように、エンジン部３がエンジンディスクリプタの設定内容に従って画像データをＰＣＩダイレクトアクセスによりＭＥＭ１５に書き込む場合に、ＣＰＵ１０が、仮想ビデオ入力ドライバ７１ａの機能により、ＰＣＩダイレクトアクセスに対する割り込みの発生をハンドリングして、ＭＥＭ１５に書き込まれた画像データをＨＤＤ１４へ記憶させる。図６は、エンジン部３が画像データをＭＥＭ１５に書き込み、ＣＰＵ１０が画像データをＨＤＤ１４に記憶させる処理の概略を例示する図である。尚、ＩＭＨ６１及び仮想ビデオ入力ドライバ７１ａの動作の主体はＣＰＵ１０であるが、ここではこれらを区別するため、各々を主体として説明する。尚、ＭＥＭ１５には、Ｒ，Ｇ，Ｂの各色又はＣ，Ｍ，Ｙ，Ｋの各色について画像データが各々別の画像メモリ領域に書き込まれるが、ここでは説明の便宜上、１つの色の画像データについて説明する。まず、ＩＭＨ６１は、仮想ビデオ入力ドライバ７１ａに対して仮想ディスクリプタをＭＥＭ１５において設定する（Ｔ１）。また、ＩＭＨ６１は、エンジン部３に対してエンジンディスクリプタをＭＥＭ１５において設定する（Ｔ２）。エンジンディスクリプタが設定されると、エンジン部３は、当該エンジンディスクリプタにおいて設定されているネクストディスクリプタアドレスを参照して、当該アドレスに示される新たなエンジンディスクリプタを読み出す。そして、エンジン部３は、当該エンジンディスクリプタの設定内容に従って、ＰＣＩダイレクトアクセスによりＭＥＭ１５にアクセスして、スキャナにより読み取った画像を表す画像データを、開始アドレスから順にライン毎に書き込む（Ｔ３）。
【００３０】
一方、仮想ディスクリプタが設定されると、仮想ビデオ入力ドライバ７１ａは、これに基づいて、ＰＣＩダイレクトポイントＰ１〜Ｐ２を設定する。ＰＣＩダイレクトポイントとは、ＰＣＩダイレクトアクセスに対する割り込みを発生させるため発生基準となるものである。ここでは、具体的には、ＰＣＩダイレクトポイントは、ＭＥＭ１５の画像メモリ領域内のアドレスを示す。仮想ビデオ入力ドライバ７１ａは、図３に例示した仮想ディスクリプタにおいて設定されているImage Start Address及びLinesを参照して、以下の算式（１）により、ＰＣＩダイレクトポイントpを算出する。
【００３１】
p ＝ Image Start Address + mwidth×(Lines-1) +iwidth・・・（１）
【００３２】
但し、mwidthは、主走査方向における画像メモリ領域の幅（メモリ幅）を使用するワード数を示すものであり、この値を仮想ビデオ入力ドライバ７１ａはＡＳＩＣ１１の有するレジスタに設定する。また、iwidthは、読み取り対象の画像の主走査長を使用するバイト数を示すものであり、この値を仮想ビデオ入力ドライバ７１ａはＡＳＩＣ１１の有するレジスタに設定する。図７は、読み取り対象の画像が表れる原稿と、mwidth及びiwidthとの関係を例示する図である。このような関係において、算式（１）では、ＰＣＩダイレクトポイントが、エンジンディスクリプタ及び仮想ディスクリプタにおいて設定されているメモリ範囲の最後に相当するアドレスとなるように設定される。即ち、ＰＣＩダイレクトポイントアクセスに対する割り込みが、エンジンディスクリプタ及び仮想ディスクリプタにおいて設定されているメモリ範囲への書き込みの終了時に発生されるように設定される。仮想ビデオ入力ドライバ７１ａは、このようなＰＣＩダイレクトポイントを少なくとも１つ以上算出して、算出した各値をＡＳＩＣ１１の有するレジスタに設定する。尚、ＰＣＩダイレクトポイントは色毎に設定するものとする。
【００３３】
そして、エンジン部３によるＭＥＭ１５への画像データの書き込みが、このように設定されたＰＣＩダイレクトポイントまで到達すると、これをＡＳＩＣ１１が検出する。ＡＳＩＣ１１は、これを検出した時点で、ＰＣＩダイレクトアクセスに対する割り込みを発生させる（Ｔ４）。そして、当該割り込みが発生すると、仮想ビデオ入力ドライバ７１ａは、これをハンドリングし、ＩＭＨ６１に割り込みの発生を通知する（Ｔ５）。ＩＭＨ６１は、当該割り込みの通知をトリガとして、ＭＥＭ１５に書き込まれた該当の画像データをＨＤＤ１４に記憶させる（Ｔ６）。ここでＨＤＤ１４に記憶させる対象である該当の画像データとは、最初の画像メモリ領域における開始アドレス又は前回の割り込みの通知から今回の割り込みの通知までにＭＥＭ１５に書き込まれた画像データである。このようにして、ＡＳＩＣ１１が、エンジン部３によるＭＥＭ１５への画像データの書込みがＰＣＩダイレクトポイントに到達する度に割り込みを発生させ、この結果、この割り込みの度に、ＩＭＨ６１が、ＭＥＭ１５に書き込まれた該当の画像データをＨＤＤ１４に記憶させる（Ｔ７〜９）。そして、エンジン部３は、スキャナで読み取った画像データ全てについての書込みが終了すると、その旨を、仮想ビデオ入力ドライバ７１ａを介してＩＭＨ６１に通知する（コンプリート割り込み：Ｔ１０〜Ｔ１１）。ＩＭＨ６１は、画像データの書込みの終了が通知されると、ＭＥＭ１５に書き込まれた画像データをＨＤＤ１４に記憶させた後（Ｔ１２）、エンジン部３に対して処理の終了を通知して、処理を終了させる（Ｔ１３）。
【００３４】
（２）動作
次に、画像処理装置１が画像データをＭＥＭ１５に書き込み、ＨＤＤ１４に画像データを記憶させる処理の詳細な手順について図８を用いて説明する。ＣＰＵ１０は、ＩＭＨ６１の機能により、仮想ビデオ入力ドライバ７１ａに対して仮想ディスクリプタをＭＥＭ１５において設定する(ステップＳ１)と共に、エンジン部３に対してエンジンディスクリプタをＭＥＭ１５において設定する(ステップＳ２)。また、ＣＰＵ１０は、仮想ビデオ入力ドライバ７１ａの機能により、仮想ディスクリプタに基づいて、ＰＣＩダイレクトポイントを算出してＡＳＩＣ１１のレジスタに設定する（ステップＳ３）。エンジン部３は、ＭＥＭ１５に設定されたエンジンディスクリプタを読み出し、当該エンジンディスクリプタの設定内容に従って、ＰＣＩダイレクトアクセスによりＭＥＭ１５にアクセスして、スキャナにより読み取った画像のデータを、開始アドレスから順にライン毎に書き込む（ステップＳ４）。
【００３５】
そして、エンジン部３によるＭＥＭ１５への画像データの書込みがＰＣＩダイレクトポイントまで到達したことをＡＳＩＣ１１が検出すると（ステップＳ５：ＹＥＳ）、その時点で、ＰＣＩダイレクトアクセスに対する割り込みを発生させる（ステップＳ６）。そして、当該割り込みが発生すると、ＣＰＵ１０は、仮想ビデオ入力ドライバ７１ａの機能によりこれをハンドリングし、ＩＭＨ６１に対して割り込みの発生を通知する（ステップＳ７）。そして、ＣＰＵ１０は、ＩＭＨ６１の機能により、当該割り込みの通知をトリガーとして、ＭＥＭ１５に書き込まれた画像データをＨＤＤ１４に記憶させる（ステップＳ８）。ここでは、図示を省略しているが、エンジン部３によるＭＥＭ１５へ画像データの書込みがＰＣＩダイレクトポイントに到達する度に、ステップＳ６〜Ｓ８の処理が行われる。そして、スキャナで読み取った画像データ全てについての書込みが終了すると、エンジン部３は、その旨をＣＰＵ１０に通知する（ステップＳ９）。ＣＰＵ１０は、仮想ビデオ入力ドライバ７１ａの機能により、画像データの書込みの終了を示す通知を受け取ると、当該通知をトリガーとして、ＩＭＨ６１の機能により、ＭＥＭ１５に書き込まれた画像データをＨＤＤ１４に記憶させる。次いで、ＣＰＵ１０は、ＩＭＨ６１の機能により、エンジン部３に対して処理の終了を通知して（ステップＳ１０）、処理を終了させる。尚、ＨＤＤ１４又はＭＥＭ１５に記憶された画像データに対してエンジン部３により各種画像処理が行われて、画像が記録紙に出力され得る。
【００３６】
以上のようにして、ＰＣＩダイレクトアクセス、ＰＣＩダイレクトアクセスに対する割込み及びエンジンディスクリプタ方式に加え、仮想ビデオ入力ドライバ７１ａの機能により、ＰＣＩダイレクトアクセスに対する割り込みの発生をハンドリングして、ＭＥＭ１５に書き込まれた画像データをＨＤＤ１４へ記憶させる。これにより、ＨＤＤ１４に画像データを記憶させるタイミングをコントローラ２で管理することができる。従って、読み取り対象の画像が表れる原稿の終端が予め検出できないような長尺であり且つカラーの画像の読み取る場合においても、エンジン部３の有するスキャナの機構的な読み取り動作を止めることなく処理の継続が可能であると共に、メモリフルを回避することができる。
【００３７】
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
【００３８】
＜変形例１＞
上述した実施の形態において、画像処理装置１のＣＰＵ１０で実行される各種ソフトウェアを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また当該各種ソフトウェアを、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記憶媒体に記録して提供するように構成しても良い。
【００３９】
＜変形例２＞
上述した実施の形態において、画像処理装置１のエンジン部３はスキャナの他プリンタエンジンやファックスユニットを備えるように構成したが、これに限らず、スキャナのみ備えるようにしても良い。
【００４０】
上述した実施の形態において、画像データを一時的に記憶する一時記憶手段として、ＭＥＭ１５を用いたが、これに限らず、ＮＶＲＡＭ１８やＳＤ１６などの他の記憶手段であっても良い。
【００４１】
また、ＭＥＭ１５に記憶された画像データを退避させる記憶手段としてＨＤＤ１４を用いたが、これに限らず、ＳＤ１６や、ＵＳＢ３０を介して接続されるＵＳＢメモリなどの他の記憶手段を用いても良い。
【００４２】
更に、画像処理装置１のコントローラ２は、ＨＤＤ１４を有するように構成したが、これを有さず、ステップＳ８では、ＣＰＵ１０は、ＭＥＭ１５に書き込まれた画像データを他の情報処理装置が有するＨＤＤなどの記憶手段に転送するようにしても良い。
【００４３】
＜変形例３＞
上述した実施の形態において、エンジン部３が画像データをＭＥＭ１５に書き込む場合について説明した。しかし、画像データを符号化した符号データをエンジン部３がＭＥＭ１５に書き込む場合にも、上述の実施の形態における構成を適用可能である。但し、この場合、取り扱うLinesが、画像データの場合と異なるものになるため、仮想ビデオ入力ドライバ７１ａはＰＣＩダイレクトポイントpを算出する際、以下の算式（２）を用いれば良い。
【００４４】
p ＝ Image Start Address + (Lines×4)・・・（２）
【００４５】
このような構成によっても、ＨＤＤ１４へ符号データを記憶させるタイミングをコントローラ２で管理することができ、カラーの長尺な画像を読み取る場合であっても、メモリフルを回避することができる。
【００４６】
但し、ＰＣＩダイレクトポイントを算出する算式はこれらに限らず、メモリフルを回避可能にするような算式を用いれば良い。
【００４７】
また、ＰＣＩダイレクトポイントは、仮想ビデオ入力ドライバ７１ａが仮想ディスクリプタに基づいて算出するのではなく、ＡＳＩＣ１１において予め設定されているものであっても良い。
【００４８】
尚、ＰＣＩダイレクトポイントは色毎に設定するものとしたが、色毎に設定されるＰＣＩダイレクトポイントは同数であっても良いし、色毎に異なる数であっても良い。
【００４９】
また、ＰＣＩダイレクトポイントは、ＭＥＭ１５の画像メモリ領域内のアドレスを示すものとしたが、ＰＣＩダイレクトアクセスに対する割り込みを発生させるため発生基準となるものであればこれに限らない。
【図面の簡単な説明】
【００５０】
【図１】一実施の形態に係る画像処理装置のハードウェア構成を例示する図である。
【図２】同実施の形態に係る画像処理装置１のソフトウェア構成例示する図である。
【図３】同実施の形態に係るエンジンディスクリプタのデータ構成を例示する図である。
【図４】同実施の形態に係る仮想ディスクリプタのデータ構成を例示する図である。
【図５】同実施の形態に係るエンジンディスクリプタを用いてエンジン部３がＭＥＭ１５に画像データを書き込む処理の概要を例示する図である。
【図６】同実施の形態に係るエンジン部３が画像データをＭＥＭ１５に書き込み、ＣＰＵ１０が画像データをＨＤＤ１４に記憶させる処理の概略を例示する図である。
【図７】読み取り対象の画像が表れる原稿と、mwidth及びiwidthとの関係を例示する図である。
【図８】同実施の形態に係る画像処理装置１において画像データをＭＥＭ１５及びＨＤＤ１４に書き込む処理の詳細な手順を例示するフローチャートである。
【符号の説明】
【００５１】
１  画像処理装置
２  コントローラ
３  エンジン部（読取手段、書込手段）
４  ＰＣＩバス
１０  ＣＰＵ（第１設定手段、第２設定手段、記憶制御手段）
１１  ＡＳＩＣ
１２  ＡＳＩＣ
１３  ＨＤＣ
１４  ＨＤＤ（記憶手段）
１５  ＭＥＭ（一時記憶手段）
１６  ＳＤ
１７  ＲＯＭ
１８  ＮＶＲＡＭ
１９  操作部
２１  バス
２２  ＡＳＩＣ（割込発生手段）
２３  ＲＴＣ
２４  ｓｕｂＣＰＵ
３０  ＵＳＢ
３１  ネットワーク
５０  アプリケーション層
５１  コピーアプリ
５２  プリンタアプリ
５３  ファックスアプリ
５４  スキャナアプリ
５５  ネットファイルアプリ
６０  サービス層
６１  ＩＭＨ（第１設定手段）
６２  ＥＣＳ
６３  ＭＣＳ
６４  ＯＣＳ
６５  ＦＣＳ
６６  ＮＣＳ
６７  ＳＣＳ
６７ａ  ＯＵＳ
６８  ＳＲＭ
７０  ＯＳ層
７１  デバイスドライバ
７１ａ  仮想ビデオ入力ドライバ（第２設定手段）
７２  エンジンＩ／Ｆ
【図１】
0004928497.tif 000002
【図２】
0004928497.tif 000003
【図３】
0004928497.tif 000004
【図４】
0004928497.tif 000005
【図５】
0004928497.tif 000006
【図６】
0004928497.tif 000007
【図７】
0004928497.tif 000008
【図８】
0004928497.tif 000009